<?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>129749</bug_id>
          
          <creation_ts>2014-03-05 11:23:05 -0800</creation_ts>
          <short_desc>Revise Out-of-band VTT support for better integration with AVFoundation engine</short_desc>
          <delta_ts>2014-03-14 10:39:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>129900</blocked>
    
    <blocked>130247</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>987321</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-05 11:23:05 -0800</bug_when>
    <thetext>AVFoundation can do a better job if it knows about the Out-of-band tracks we have selected, even though WebKit is doing the actual rendering.

Revise the implementation so that we tell the AVFoundation backend when we select out-of-band tracks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987322</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-05 11:23:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/16215701&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987330</commentid>
    <comment_count>2</comment_count>
      <attachid>225896</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-05 11:44:07 -0800</bug_when>
    <thetext>Created attachment 225896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987350</commentid>
    <comment_count>3</comment_count>
      <attachid>225896</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-03-05 12:16:12 -0800</bug_when>
    <thetext>Comment on attachment 225896
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:1603
&gt; +    if (track-&gt;trackType() == TextTrack::TrackElement) {
&gt; +        if (m_player)

Nit: this would be slightly simpler with only one &quot;if&quot;: if (track-&gt;trackType() == TextTrack::TrackElement &amp;&amp; m_player)

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5574
&gt; +        int uniqueId = track ? track-&gt;uniqueId() : 0;

HTMLTrackElement::track will never return NULL (yes, it should return a reference instead of a pointer), so both the local comparison and variable are unnecessary.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5577
&gt; +        if (trackElement.track()) {

Not needed.

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:1265
&gt; +void MediaPlayer::outOfBandTrackModeChanged(TextTrack* track)

Nit: I don&apos;t think this method should have &quot;out of band&quot; in its name.  

A much bigger problem is that this is a layering violation - TextTrack is in /html. Luckily I don&apos;t think you need to pass the track, the media engine can just call outOfBandTrackSources to get current track configurations.

&gt; Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h:66
&gt;      virtual bool isLegacyClosedCaptionsTrack() const = 0;
&gt; -
&gt; +    virtual bool isOutOfBandTextTrack() const = 0;

Nit: these are mutually exclusive, so you could use a type enum instead.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:566
&gt; +    RetainPtr&lt;CFStringRef&gt; uniqueID = String::number(track-&gt;uniqueId()).createCFString();
&gt; +    const AtomicString&amp; mode = track-&gt;mode();
&gt; +    
&gt; +    for (auto&amp; textTrack : m_textTracks) {
&gt; +        if (!textTrack-&gt;isOutOfBandTextTrack())
&gt; +            continue;
&gt; +        
&gt; +        RefPtr&lt;OutOfBandTextTrackPrivateAVF&gt; track = static_cast&lt;OutOfBandTextTrackPrivateAVF*&gt;(textTrack.get());
&gt; +        RetainPtr&lt;AVMediaSelectionOptionType&gt; currentOption = track-&gt;mediaSelectionOption();
&gt; +        
&gt; +        if ([[currentOption.get() outOfBandIdentifier] isEqual: reinterpret_cast&lt;const NSString*&gt;(uniqueID.get())]) {
&gt; +            if (mode == TextTrack::disabledKeyword())
&gt; +                textTrack-&gt;setMode(InbandTextTrackPrivate::Disabled);
&gt; +            else if (mode == TextTrack::hiddenKeyword())
&gt; +                textTrack-&gt;setMode(InbandTextTrackPrivate::Hidden);
&gt; +            else if (mode == TextTrack::showingKeyword())
&gt; +                textTrack-&gt;setMode(InbandTextTrackPrivate::Showing);
&gt; +            else
&gt; +                ASSERT_NOT_REACHED();
&gt; +            
&gt; +            break;
&gt; +        }
&gt; +    }

This logic needs to be reworked because you don&apos;t have access to the TextTrack at this level.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/OutOfBandTextTrackPrivateAVF.h:45
&gt; +    void processCue(CFArrayRef, double) { }
&gt; +    void resetCueValues() { }

Shouldn&apos;t you make these virtual in the base class and &quot;override&quot; them here?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/OutOfBandTextTrackPrivateAVF.h:59
&gt; +    void processCueAttributes(CFAttributedStringRef, GenericCueData*) { }

Why is this necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987405</commentid>
    <comment_count>4</comment_count>
      <attachid>225918</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-05 14:52:06 -0800</bug_when>
    <thetext>Created attachment 225918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987423</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-05 15:45:41 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 225896 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225896&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:1603
&gt; &gt; +    if (track-&gt;trackType() == TextTrack::TrackElement) {
&gt; &gt; +        if (m_player)
&gt; 
&gt; Nit: this would be slightly simpler with only one &quot;if&quot;: if (track-&gt;trackType() == TextTrack::TrackElement &amp;&amp; m_player)

Done.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:5574
&gt; &gt; +        int uniqueId = track ? track-&gt;uniqueId() : 0;
&gt; 
&gt; HTMLTrackElement::track will never return NULL (yes, it should return a reference instead of a pointer), so both the local comparison and variable are unnecessary.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:5577
&gt; &gt; +        if (trackElement.track()) {
&gt; 
&gt; Not needed.

Done.
 
&gt; &gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:1265
&gt; &gt; +void MediaPlayer::outOfBandTrackModeChanged(TextTrack* track)
&gt; 
&gt; Nit: I don&apos;t think this method should have &quot;out of band&quot; in its name.  

I changed this to &quot;notifyTrackModeChanged&quot;

&gt; A much bigger problem is that this is a layering violation - TextTrack is in /html. Luckily I don&apos;t think you need to pass the track, the media engine can just call outOfBandTrackSources to get current track configurations.

Revised as discussed on IRC.
 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h:66
&gt; &gt;      virtual bool isLegacyClosedCaptionsTrack() const = 0;
&gt; &gt; -
&gt; &gt; +    virtual bool isOutOfBandTextTrack() const = 0;
&gt; 
&gt; Nit: these are mutually exclusive, so you could use a type enum instead.

Done.
 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:566
&gt; &gt; +    RetainPtr&lt;CFStringRef&gt; uniqueID = String::number(track-&gt;uniqueId()).createCFString();
[...]
&gt; This logic needs to be reworked because you don&apos;t have access to the TextTrack at this level.

Done.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/OutOfBandTextTrackPrivateAVF.h:45
&gt; &gt; +    void processCue(CFArrayRef, double) { }
&gt; &gt; +    void resetCueValues() { }
&gt; 
&gt; Shouldn&apos;t you make these virtual in the base class and &quot;override&quot; them here?

You are right!  Changed.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/OutOfBandTextTrackPrivateAVF.h:59
&gt; &gt; +    void processCueAttributes(CFAttributedStringRef, GenericCueData*) { }
&gt; 
&gt; Why is this necessary?

You are right -- it&apos;s not needed. I blindly overloaded everything, but of course this is only called by the already-overridden &quot;processCue&quot; method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987460</commentid>
    <comment_count>6</comment_count>
      <attachid>225931</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-05 17:44:31 -0800</bug_when>
    <thetext>Created attachment 225931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987488</commentid>
    <comment_count>7</comment_count>
      <attachid>225931</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-03-05 19:03:59 -0800</bug_when>
    <thetext>Comment on attachment 225931
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5560
&gt; -        PlatformTextTrack::TrackKind platformKind = PlatformTextTrack::Caption;
&gt; +        InbandTextTrackPrivate::Kind platformKind = InbandTextTrackPrivate::Captions;
&gt;          if (trackElement.kind() == TextTrack::captionsKeyword())

What prompted the change from PlatformTextTrack::TrackKind to InbandTextTrackPrivate::Kind? A &quot;platform&quot; text track can be either in-band or out-of-band, so why does it have an InbandTextTrackPrivate::Kind and an InbandTextTrackPrivate::Mode?

This isn&apos;t a huge deal, but I don&apos;t think it is a useful change.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:558
&gt; +            RetainPtr&lt;CFStringRef&gt; uniqueID = String::number(track-&gt;uniqueId()).createCFString();
&gt; +            
&gt; +            if (![[currentOption.get() outOfBandIdentifier] isEqual: reinterpret_cast&lt;const NSString*&gt;(uniqueID.get())])
&gt; +                continue;

Why not use createNSString() and avoid the cast?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987745</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-06 10:26:47 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 225931 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225931&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:5560
&gt; &gt; -        PlatformTextTrack::TrackKind platformKind = PlatformTextTrack::Caption;
&gt; &gt; +        InbandTextTrackPrivate::Kind platformKind = InbandTextTrackPrivate::Captions;
&gt; &gt;          if (trackElement.kind() == TextTrack::captionsKeyword())
&gt; 
&gt; What prompted the change from PlatformTextTrack::TrackKind to InbandTextTrackPrivate::Kind? A &quot;platform&quot; text track can be either in-band or out-of-band, so why does it have an InbandTextTrackPrivate::Kind and an InbandTextTrackPrivate::Mode?
&gt; 
&gt; This isn&apos;t a huge deal, but I don&apos;t think it is a useful change.

I&apos;ll revert it. I was hoping to avoid having to create adaptor functions to convert from InbandTextTrackPrivate::Hidden to PlatformTextTrack::Hidden and so forth.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:558
&gt; &gt; +            RetainPtr&lt;CFStringRef&gt; uniqueID = String::number(track-&gt;uniqueId()).createCFString();
&gt; &gt; +            
&gt; &gt; +            if (![[currentOption.get() outOfBandIdentifier] isEqual: reinterpret_cast&lt;const NSString*&gt;(uniqueID.get())])
&gt; &gt; +                continue;
&gt; 
&gt; Why not use createNSString() and avoid the cast?

I&apos;d have to go String-&gt;StringView-&gt;NSString. It would look prettier, but I&apos;m not sure if it&apos;s worth changing for this simple use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987799</commentid>
    <comment_count>9</comment_count>
      <attachid>226023</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-06 12:01:34 -0800</bug_when>
    <thetext>Created attachment 226023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987870</commentid>
    <comment_count>10</comment_count>
      <attachid>226023</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-03-06 14:32:20 -0800</bug_when>
    <thetext>Comment on attachment 226023
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/InbandTextTrackPrivateAVFObjC.h:60
&gt; +    

Spaces :-O

&gt; Source/WebCore/platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.h:60
&gt; +    

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987873</commentid>
    <comment_count>11</comment_count>
      <attachid>226042</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-06 14:41:36 -0800</bug_when>
    <thetext>Created attachment 226042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987874</commentid>
    <comment_count>12</comment_count>
      <attachid>226043</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-06 14:45:52 -0800</bug_when>
    <thetext>Created attachment 226043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987921</commentid>
    <comment_count>13</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-06 15:45:00 -0800</bug_when>
    <thetext>Committed r165227: &lt;http://trac.webkit.org/changeset/165227&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225896</attachid>
            <date>2014-03-05 11:44:07 -0800</date>
            <delta_ts>2014-03-05 14:52:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129749-20140305114406.patch</filename>
            <type>text/plain</type>
            <size>31929</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTExNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE0LTAzLTA1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlzZSBPdXQtb2YtYmFu
ZCBWVFQgc3VwcG9ydCBmb3IgYmV0dGVyIGludGVncmF0aW9uIHdpdGggQVZGb3VuZGF0aW9uIGVu
Z2luZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5
NzQ5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjIxNTcwMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXZpc2UgdGhlIHBsYXRmb3JtIGhhbmRs
aW5nIG9mIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzIHNvIHRoYXQgd2UgY2FuIGtlZXAgQVZGb3Vu
ZGF0aW9uCisgICAgICAgIGluZm9ybWVkIG9mIHRyYWNrIHNlbGVjdGlvbnMgd2UgbWFrZS4gVXNl
IGEgZHVtbXkgb3V0LW9mLWJhbmQgY2hpbGQgb2YgdGhlIGV4aXN0aW5nIHRleHQKKyAgICAgICAg
dHJhY2sgY2xhc3NlcyB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3IE91dE9mQmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYuaCBmaWxlLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IE5v
dGlmeSBwbGF5ZXIgd2hlbiBPT0IgdHJhY2tzIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om91dE9mQmFuZFRyYWNrU291cmNlcyk6IEFsc28gcGFzcyB0cmFjayBt
b2RlIHRvIHBsYXRmb3JtIGJhY2tlbmQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpwbGF0Zm9ybVRleHRUcmFjayk6IEFs
c28gcGFzcyB0cmFjayBtb2RlIHRvIGNvbnN0cnVjdG9yLgorICAgICAgICAqIGh0bWwvdHJhY2sv
VHJhY2tCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6VHJhY2tCYXNlKTog
TW92ZSBvd25lcnNoaXAgb2YgdHJhY2sgdW5pcXVlIGlkZW50aWZpZXIgdG8gdGhpcyBiYXNlIGNs
YXNzLgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tCYXNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFja0Jhc2U6OnVuaXF1ZUlkKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om91dE9m
QmFuZFRyYWNrTW9kZUNoYW5nZWQpOiBBZGRlZCBzdHViIHRvIHBhc3MgbWVzc2FnZSB0byBwbGF0
Zm9ybSBwbGF5ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6b3V0T2ZCYW5kVHJhY2tN
b2RlQ2hhbmdlZCk6IFN0dWIgZm9yIG1vc3QgcGxhdGZvcm1zLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVRleHRUcmFjazo6Y3JlYXRlKTogVXBkYXRlIGZvciByZXZpc2VkIGNvbnN0cnVjdG9yICh3aXRo
ICdtb2RlJyBhcmd1bWVudCkuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFjazo6
Y3JlYXRlT3V0T2ZCYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRU
cmFjazo6bW9kZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UZXh0VHJhY2s6
OmNhcHRpb25NZW51T2ZmSXRlbSk6IFVzZSByZXZpc2VkIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy4K
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1dG9tYXRp
Y0l0ZW0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrOjpQbGF0
Zm9ybVRleHRUcmFjayk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmg6IEFkZCBuZXcgcHJlZGljYXRlIHRv
IGluZGljYXRlIGlmIHRoZSB0cmFjaworICAgICAgICBpcyBhY3R1YWxseSBhbiBvdXQtb2YtYmFu
ZCB0cmFjay4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246Om91dE9mQmFuZFRyYWNrTW9kZUNoYW5nZWQpOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGT2JqQy5oOiBPdmVycmlkZSBwcmVkaWNhdGUgdG8gaW5kaWNhdGUKKyAg
ICAgICAgdGhhdCB0aGlzIGlzIE5PVCBhbiBvdXQtb2YtYmFuZCB0cmFjay4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
TGVnYWN5QVZGT2JqQy5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6Om91dE9mQmFuZFRyYWNrTW9kZUNoYW5nZWQpOiBBZGRlZCBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnByb2Nlc3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMpOiBSZXZpc2UgdG8gaGFu
ZGxlIG91dC1vZi1iYW5kCisgICAgICAgIHRyYWNrIHBsYWNlaG9sZGVycy4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEN1cnJlbnRUcmFj
ayk6IE1vZGlmeSB0byBpbmZvcm0gQVZGb3VuZGF0aW9uIGFib3V0IGFueQorICAgICAgICBvdXQt
b2YtYmFuZCB0cmFja3Mgd2UndmUgc2VsZWN0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9j
ZXNzQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6Ok91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkY6
OnJlc2V0Q3VlVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok91dE9mQmFuZFRleHRUcmFja1By
aXZhdGVBVkY6Om1lZGlhU2VsZWN0aW9uT3B0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok91dE9m
QmFuZFRleHRUcmFja1ByaXZhdGVBVkY6Ok91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYpOgor
ICAgICAgICAoV2ViQ29yZTo6T3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1
ZUF0dHJpYnV0ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGSU9TLmg6IE92ZXJyaWRlIHByZWRpY2F0ZSB0byBpbmRpY2F0ZQorICAg
ICAgICB0aGF0IHRoaXMgaXMgTk9UIGFuIG91dC1vZi1iYW5kIHRyYWNrLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2lvcy9NZWRpYVBsYXllclByaXZhdGVJT1MubW06CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJT1M6OnNldFNlbGVjdGVkVGV4dFRyYWNrKTogQ29y
cmVjdCB0eXBvIGluIGxvZ2dpbmcgdGV4dC4KKwogMjAxNC0wMy0wMyAgTWFydGluIFJvYmluc29u
ICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bQ01ha2VdIEdlbmVyYXRl
IGRvY3VtZW50YXRpb24gZm9yIHRoZSBET00gYmluZGluZ3MKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2NTA3
NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjI3Myw2ICsyMjczLDcgQEAKIAkJN0EyNDU4N0IxMDIxRUFGNDAw
MEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMjQ1ODc5MTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0
b3JET01BZ2VudC5jcHAgKi87IH07CiAJCTdBMjQ1ODdDMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNw
ZWN0b3JET01BZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0EyNDU4N0ExMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0EyOUJBNkEx
ODdCN0MxRDAwRjI5Q0VCIC8qIFRlbXBvcmFyeU9wZW5HTFNldHRpbmcuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EyOUJBNjkxODdCNzgxQzAwRjI5
Q0VCIC8qIFRlbXBvcmFyeU9wZW5HTFNldHRpbmcuY3BwICovOyB9OworCQk3QTI5RjU3MjE4QzY5
NTE0MDA0RDBGODEgLyogT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EyOUY1NzExOEM2OTUxNDAwNEQw
RjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCAqLzsgfTsKIAkJN0E1NDg1N0Yx
NEUwMkQ1MTAwNkFFMDVBIC8qIEluc3BlY3Rvckhpc3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E1NDg1N0QxNEUwMkQ1MTAwNkFFMDVBIC8q
IEluc3BlY3Rvckhpc3RvcnkuY3BwICovOyB9OwogCQk3QTU0ODU4MDE0RTAyRDUxMDA2QUUwNUEg
LyogSW5zcGVjdG9ySGlzdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0E1NDg1N0UxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3BlY3Rvckhpc3Rvcnku
aCAqLzsgfTsKIAkJN0E1NDg4MTcxNEU0MzJBMTAwNkFFMDVBIC8qIERPTVBhdGNoU3VwcG9ydC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E1NDg4MTUx
NEU0MzJBMTAwNkFFMDVBIC8qIERPTVBhdGNoU3VwcG9ydC5oICovOyB9OwpAQCAtOTI0Niw2ICs5
MjQ3LDcgQEAKIAkJN0EyNDU4N0ExMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckRPTUFnZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBMjlCQTY3MTg3QjczMjIwMEYyOUNFQiAv
KiBUZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRlbXBvcmFyeU9wZW5HTFNldHRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0EyOUJBNjkxODdCNzgxQzAwRjI5Q0VCIC8qIFRlbXBvcmFyeU9wZW5HTFNldHRpbmcuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYXJ5T3BlbkdMU2V0
dGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBMjlGNTcxMThDNjk1MTQw
MDREMEY4MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaDsgcGF0aCA9
IG9iamMvT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QTU0ODU3RDE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JIaXN0b3J5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E1NDg1N0UxNEUwMkQ1MTAwNkFF
MDVBIC8qIEluc3BlY3Rvckhpc3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9ySGlzdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTU0
ODgxNTE0RTQzMkExMDA2QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTVBhdGNoU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjEwODcsNiArMjEwODksNyBAQAogCQlERjlBRkQ2RjEzRkMzMUIwMDAxNUZF
QjcgLyogb2JqYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJN0EyOUY1NzExOEM2OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCAqLywKIAkJCQlDREUzQTg1NjE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZh
dGVBVkZPYmpDLmggKi8sCiAJCQkJQ0RFM0E4NTUxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJh
Y2tQcml2YXRlQVZGT2JqQy5tbSAqLywKIAkJCQlDRDU0QTc2MDE4MEY5RjcwMDBCMDc2QzkgLyog
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwICovLApAQCAtMjQ2OTQsNiAr
MjQ2OTcsNyBAQAogCQkJCTQxNTdBRjgwMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xz
QXBwbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQUI2RDI5MTdDN0RFNkMwMEM2MEIzNCAvKiBN
ZWRpYUNvbnRyb2xzSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGMkIwMDQxODFGMDU5QzAw
RjJCNDI0IC8qIE1lZGlhRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTdBMjlGNTcy
MThDNjk1MTQwMDREMEY4MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzIwNUFCODEyMzkyOTEwMDBCMTczODAgLyogTWVkaWFEb2N1bWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ2RjI1MkQxM0Y1RUYwRTAwNjUxNjVGIC8qIE1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjEzQUQwQ0Q2MzMx
MDAwRkFEQTc1IC8qIE1lZGlhRXJyb3IuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjUwNzYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTk3LDYgKzE1OTcsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hh
bgogCiAgICAgaWYgKG1fdGV4dFRyYWNrcyAmJiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNr
KSkKICAgICAgICAgbV90ZXh0VHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CisKKyNpZiBF
TkFCTEUoQVZGX0NBUFRJT05TKQorICAgIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRy
YWNrOjpUcmFja0VsZW1lbnQpIHsKKyAgICAgICAgaWYgKG1fcGxheWVyKQorICAgICAgICAgICAg
bV9wbGF5ZXItPm91dE9mQmFuZFRyYWNrTW9kZUNoYW5nZWQodHJhY2spOworICAgIH0KKyNlbmRp
ZgogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQo
VmlkZW9UcmFjayogdHJhY2spCkBAIC01NTM4LDggKzU1NDUsNiBAQCBTdHJpbmcgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJVc2VyCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKIFZlY3Rv
cjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiBIVE1MTWVkaWFFbGVtZW50OjpvdXRPZkJhbmRU
cmFja1NvdXJjZXMoKQogewotICAgIHN0YXRpYyBpbnQgdW5pcXVlSWQgPSAwOwotCiAgICAgVmVj
dG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4+IG91dE9mQmFuZFRyYWNrU291cmNlczsKICAg
ICBmb3IgKGF1dG8mIHRyYWNrRWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBlPEhUTUxUcmFja0VsZW1l
bnQ+KCp0aGlzKSkgewogICAgICAgICAKQEAgLTU1NjUsNyArNTU3MCwyMCBAQCBWZWN0b3I8UmVm
UHRyPFBsYXRmb3JtVGV4dFRyYWNrPj4gSFRNTE1lCiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIG91dE9mQmFuZFRyYWNrU291cmNlcy5hcHBlbmQoUGxhdGZv
cm1UZXh0VHJhY2s6OmNyZWF0ZU91dE9mQmFuZCh0cmFja0VsZW1lbnQubGFiZWwoKSwgdHJhY2tF
bGVtZW50LnNyY2xhbmcoKSwgdXJsLnN0cmluZygpLCBwbGF0Zm9ybUtpbmQsICsrdW5pcXVlSWQs
IHRyYWNrRWxlbWVudC5pc0RlZmF1bHQoKSkpOworICAgICAgICBjb25zdCBUZXh0VHJhY2sqIHRy
YWNrID0gdHJhY2tFbGVtZW50LnRyYWNrKCk7CisgICAgICAgIGludCB1bmlxdWVJZCA9IHRyYWNr
ID8gdHJhY2stPnVuaXF1ZUlkKCkgOiAwOworCisgICAgICAgIFBsYXRmb3JtVGV4dFRyYWNrOjpU
cmFja01vZGUgcGxhdGZvcm1Nb2RlID0gUGxhdGZvcm1UZXh0VHJhY2s6OkRpc2FibGVkOworICAg
ICAgICBpZiAodHJhY2tFbGVtZW50LnRyYWNrKCkpIHsKKyAgICAgICAgICAgIGlmIChUZXh0VHJh
Y2s6OmhpZGRlbktleXdvcmQoKSA9PSB0cmFjay0+bW9kZSgpKQorICAgICAgICAgICAgICAgIHBs
YXRmb3JtTW9kZSA9IFBsYXRmb3JtVGV4dFRyYWNrOjpIaWRkZW47CisgICAgICAgICAgICBlbHNl
IGlmIChUZXh0VHJhY2s6OmRpc2FibGVkS2V5d29yZCgpID09IHRyYWNrLT5tb2RlKCkpCisgICAg
ICAgICAgICAgICAgcGxhdGZvcm1Nb2RlID0gUGxhdGZvcm1UZXh0VHJhY2s6OkRpc2FibGVkOwor
ICAgICAgICAgICAgZWxzZSBpZiAoVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpID09IHRyYWNr
LT5tb2RlKCkpCisgICAgICAgICAgICAgICAgcGxhdGZvcm1Nb2RlID0gUGxhdGZvcm1UZXh0VHJh
Y2s6OlNob3dpbmc7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG91dE9mQmFuZFRyYWNr
U291cmNlcy5hcHBlbmQoUGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0ZU91dE9mQmFuZCh0cmFja0Vs
ZW1lbnQubGFiZWwoKSwgdHJhY2tFbGVtZW50LnNyY2xhbmcoKSwgdXJsLnN0cmluZygpLCBwbGF0
Zm9ybU1vZGUsIHBsYXRmb3JtS2luZCwgdW5pcXVlSWQsIHRyYWNrRWxlbWVudC5pc0RlZmF1bHQo
KSkpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gb3V0T2ZCYW5kVHJhY2tTb3VyY2VzOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAkocmV2aXNpb24gMTY1MDc2
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NTAsOCArNTUwLDYgQEAgYm9vbCBUZXh0VHJhY2s6Omhhc0N1ZShWVFRDdWUqIGN1
ZSwgVlRUQwogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCiBQYXNzUmVmUHRyPFBs
YXRmb3JtVGV4dFRyYWNrPiBUZXh0VHJhY2s6OnBsYXRmb3JtVGV4dFRyYWNrKCkKIHsKLSAgICBz
dGF0aWMgaW50IHVuaXF1ZUlkID0gMDsKLQogICAgIGlmIChtX3BsYXRmb3JtVGV4dFRyYWNrKQog
ICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybVRleHRUcmFjazsKIApAQCAtNTc3LDcgKzU3NSwxNSBA
QCBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBUZXh0VHJhY2s6CiAgICAgZWxzZSBpZiAo
bV90cmFja1R5cGUgPT0gSW5CYW5kKQogICAgICAgICB0eXBlID0gUGxhdGZvcm1UZXh0VHJhY2s6
OkluQmFuZDsKIAotICAgIG1fcGxhdGZvcm1UZXh0VHJhY2sgPSBQbGF0Zm9ybVRleHRUcmFjazo6
Y3JlYXRlKHRoaXMsIGxhYmVsKCksIGxhbmd1YWdlKCksIHBsYXRmb3JtS2luZCwgdHlwZSwgKyt1
bmlxdWVJZCk7CisgICAgUGxhdGZvcm1UZXh0VHJhY2s6OlRyYWNrTW9kZSBwbGF0Zm9ybU1vZGUg
PSBQbGF0Zm9ybVRleHRUcmFjazo6RGlzYWJsZWQ7CisgICAgaWYgKFRleHRUcmFjazo6aGlkZGVu
S2V5d29yZCgpID09IG1vZGUoKSkKKyAgICAgICAgcGxhdGZvcm1Nb2RlID0gUGxhdGZvcm1UZXh0
VHJhY2s6OkhpZGRlbjsKKyAgICBlbHNlIGlmIChUZXh0VHJhY2s6OmRpc2FibGVkS2V5d29yZCgp
ID09IG1vZGUoKSkKKyAgICAgICAgcGxhdGZvcm1Nb2RlID0gUGxhdGZvcm1UZXh0VHJhY2s6OkRp
c2FibGVkOworICAgIGVsc2UgaWYgKFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSA9PSBtb2Rl
KCkpCisgICAgICAgIHBsYXRmb3JtTW9kZSA9IFBsYXRmb3JtVGV4dFRyYWNrOjpTaG93aW5nOwor
CisgICAgbV9wbGF0Zm9ybVRleHRUcmFjayA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUodGhp
cywgbGFiZWwoKSwgbGFuZ3VhZ2UoKSwgcGxhdGZvcm1Nb2RlLCBwbGF0Zm9ybUtpbmQsIHR5cGUs
IHVuaXF1ZUlkKCkpOwogCiAgICAgcmV0dXJuIG1fcGxhdGZvcm1UZXh0VHJhY2s7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCShyZXZpc2lvbiAxNjUwNzYp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDExICszMiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBp
bnQgc191bmlxdWVJZCA9IDA7CisKIFRyYWNrQmFzZTo6VHJhY2tCYXNlKFR5cGUgdHlwZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRv
bWljU3RyaW5nJiBsYW5ndWFnZSkKICAgICA6IG1fbWVkaWFFbGVtZW50KDApCiAjaWYgRU5BQkxF
KE1FRElBX1NPVVJDRSkKICAgICAsIG1fc291cmNlQnVmZmVyKDApCiAjZW5kaWYKKyAgICAsIG1f
dW5pcXVlSWQoKytzX3VuaXF1ZUlkKQogICAgICwgbV9pZChpZCkKICAgICAsIG1fbGFiZWwobGFi
ZWwpCiAgICAgLCBtX2xhbmd1YWdlKGxhbmd1YWdlKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RyYWNrQmFzZS5oCShyZXZpc2lvbiAxNjUwNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RyYWNrQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgpID0gMDsKIAorICAgIHZpcnR1YWwg
aW50IHVuaXF1ZUlkKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWVJZDsgfQorCiAjaWYgRU5BQkxF
KE1FRElBX1NPVVJDRSkKICAgICBTb3VyY2VCdWZmZXIqIHNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fc291cmNlQnVmZmVyOyB9CiAgICAgdm9pZCBzZXRTb3VyY2VCdWZmZXIoU291cmNl
QnVmZmVyKiBidWZmZXIpIHsgbV9zb3VyY2VCdWZmZXIgPSBidWZmZXI7IH0KQEAgLTg1LDYgKzg3
LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIFR5cGUgbV90eXBlOworICAgIGludCBt
X3VuaXF1ZUlkOwogICAgIEF0b21pY1N0cmluZyBtX2lkOwogICAgIEF0b21pY1N0cmluZyBtX2tp
bmQ7CiAgICAgQXRvbWljU3RyaW5nIG1fbGFiZWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCShyZXZpc2lvbiAxNjUwNzYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyNjIsNiArMTI2MiwxMiBAQCB2b2lkIE1lZGlhUGxheWVyOjpzZXRUZXh0
VHJhY2tSZXByZXNlbnRhCiB9CiAKICNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQordm9pZCBNZWRp
YVBsYXllcjo6b3V0T2ZCYW5kVHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQorewor
ICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+b3V0T2ZCYW5kVHJhY2tNb2Rl
Q2hhbmdlZCh0cmFjayk7Cit9CisKIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiBN
ZWRpYVBsYXllcjo6b3V0T2ZCYW5kVHJhY2tTb3VyY2VzKCkKIHsKICAgICBpZiAoIW1fbWVkaWFQ
bGF5ZXJDbGllbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgJKHJldmlzaW9uIDE2NTA3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzMSw2ICs1MzEs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbiopOwogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCisgICAgdm9pZCBvdXRPZkJh
bmRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayopOwogICAgIFZlY3RvcjxSZWZQdHI8UGxhdGZv
cm1UZXh0VHJhY2s+PiBvdXRPZkJhbmRUcmFja1NvdXJjZXMoKTsKICNlbmRpZgogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaAkocmV2aXNpb24gMTY1MDc2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Myw2
ICsyNDMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBjb3JydXB0ZWRW
aWRlb0ZyYW1lcygpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGRvdWJsZSB0b3RhbEZyYW1l
RGVsYXkoKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKKworI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMp
CisgICAgdmlydHVhbCB2b2lkIG91dE9mQmFuZFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKikg
eyB9CisjZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaAkocmV2aXNpb24gMTY1MDc2KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaAkod29y
a2luZyBjb3B5KQpAQCAtNTksMjEgKzU5LDI3IEBAIHB1YmxpYzoKICAgICAgICAgT3V0T2ZCYW5k
ID0gMSwKICAgICAgICAgU2NyaXB0ID0gMgogICAgIH07CisgICAgZW51bSBUcmFja01vZGUgewor
ICAgICAgICBEaXNhYmxlZCwKKyAgICAgICAgSGlkZGVuLAorICAgICAgICBTaG93aW5nCisgICAg
fTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBjcmVhdGUoUGxh
dGZvcm1UZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qg
U3RyaW5nJiBsYW5ndWFnZSwgVHJhY2tLaW5kIGtpbmQsIFRyYWNrVHlwZSB0eXBlLCBpbnQgdW5p
cXVlSWQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+IGNyZWF0ZShQ
bGF0Zm9ybVRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCBTdHJpbmcmIGxhbmd1YWdlLCBUcmFja01vZGUgbW9kZSwgVHJhY2tLaW5kIGtpbmQsIFRyYWNr
VHlwZSB0eXBlLCBpbnQgdW5pcXVlSWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFBsYXRmb3JtVGV4dFRyYWNrKGNsaWVudCwgbGFiZWwsIGxhbmd1YWdlLCBTdHJpbmcoKSwg
a2luZCwgdHlwZSwgdW5pcXVlSWQsIGZhbHNlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgUGxhdGZvcm1UZXh0VHJhY2soY2xpZW50LCBsYWJlbCwgbGFuZ3VhZ2UsIFN0cmluZygpLCBt
b2RlLCBraW5kLCB0eXBlLCB1bmlxdWVJZCwgZmFsc2UpKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gY3JlYXRlT3V0T2ZCYW5kKGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFN0cmluZyYgdXJsLCBUcmFj
a0tpbmQga2luZCwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gY3JlYXRlT3V0T2ZCYW5kKGNvbnN0IFN0cmluZyYg
bGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFN0cmluZyYgdXJsLCBUcmFja01v
ZGUgbW9kZSwgVHJhY2tLaW5kIGtpbmQsIGludCB1bmlxdWVJZCwgYm9vbCBpc0RlZmF1bHQpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtVGV4dFRyYWNrKG51bGxw
dHIsIGxhYmVsLCBsYW5ndWFnZSwgdXJsLCBraW5kLCBPdXRPZkJhbmQsIHVuaXF1ZUlkLCBpc0Rl
ZmF1bHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVRleHRUcmFjayhu
dWxscHRyLCBsYWJlbCwgbGFuZ3VhZ2UsIHVybCwgbW9kZSwga2luZCwgT3V0T2ZCYW5kLCB1bmlx
dWVJZCwgaXNEZWZhdWx0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UGxhdGZvcm1UZXh0VHJh
Y2soKSB7IH0KICAgICAKICAgICBUcmFja1R5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQogICAgIFRyYWNrS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisgICAg
VHJhY2tNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KICAgICBjb25zdCBTdHJp
bmcmIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQogICAgIGNvbnN0IFN0cmluZyYg
bGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xhbmd1YWdlOyB9CiAgICAgY29uc3QgU3RyaW5n
JiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQpAQCAtODMsMjEgKzg5LDIyIEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogY2FwdGlvbk1lbnVPZmZJdGVtKCkK
ICAgICB7Ci0gICAgICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogb2ZmID0gUGxhdGZvcm1U
ZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAib2ZmIG1lbnUgaXRlbSIsICIiLCBTdWJ0aXRsZSwg
SW5CYW5kLCAwKS5sZWFrUmVmKCk7CisgICAgICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayog
b2ZmID0gUGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAib2ZmIG1lbnUgaXRlbSIs
ICIiLCBTaG93aW5nLCBTdWJ0aXRsZSwgSW5CYW5kLCAwKS5sZWFrUmVmKCk7CiAgICAgICAgIHJl
dHVybiBvZmY7CiAgICAgfQogCiAgICAgc3RhdGljIFBsYXRmb3JtVGV4dFRyYWNrKiBjYXB0aW9u
TWVudUF1dG9tYXRpY0l0ZW0oKQogICAgIHsKLSAgICAgICAgc3RhdGljIFBsYXRmb3JtVGV4dFRy
YWNrKiBhdXRvbWF0aWMgPSBQbGF0Zm9ybVRleHRUcmFjazo6Y3JlYXRlKG51bGxwdHIsICJhdXRv
bWF0aWMgbWVudSBpdGVtIiwgIiIsIFN1YnRpdGxlLCBJbkJhbmQsIDApLmxlYWtSZWYoKTsKKyAg
ICAgICAgc3RhdGljIFBsYXRmb3JtVGV4dFRyYWNrKiBhdXRvbWF0aWMgPSBQbGF0Zm9ybVRleHRU
cmFjazo6Y3JlYXRlKG51bGxwdHIsICJhdXRvbWF0aWMgbWVudSBpdGVtIiwgIiIsIFNob3dpbmcs
IFN1YnRpdGxlLCBJbkJhbmQsIDApLmxlYWtSZWYoKTsKICAgICAgICAgcmV0dXJuIGF1dG9tYXRp
YzsKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBQbGF0Zm9ybVRleHRUcmFjayhQbGF0Zm9ybVRl
eHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcm
IGxhbmd1YWdlLCBjb25zdCBTdHJpbmcmIHVybCwgVHJhY2tLaW5kIGtpbmQsIFRyYWNrVHlwZSB0
eXBlLCBpbnQgdW5pcXVlSWQsIGJvb2wgaXNEZWZhdWx0KQorICAgIFBsYXRmb3JtVGV4dFRyYWNr
KFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNv
bnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFN0cmluZyYgdXJsLCBUcmFja01vZGUgbW9kZSwg
VHJhY2tLaW5kIGtpbmQsIFRyYWNrVHlwZSB0eXBlLCBpbnQgdW5pcXVlSWQsIGJvb2wgaXNEZWZh
dWx0KQogICAgICAgICA6IG1fbGFiZWwobGFiZWwpCiAgICAgICAgICwgbV9sYW5ndWFnZShsYW5n
dWFnZSkKICAgICAgICAgLCBtX3VybCh1cmwpCisgICAgICAgICwgbV9tb2RlKG1vZGUpCiAgICAg
ICAgICwgbV9raW5kKGtpbmQpCiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9j
bGllbnQoY2xpZW50KQpAQCAtMTA5LDYgKzExNiw3IEBAIHByb3RlY3RlZDoKICAgICBTdHJpbmcg
bV9sYWJlbDsKICAgICBTdHJpbmcgbV9sYW5ndWFnZTsKICAgICBTdHJpbmcgbV91cmw7CisgICAg
VHJhY2tNb2RlIG1fbW9kZTsKICAgICBUcmFja0tpbmQgbV9raW5kOwogICAgIFRyYWNrVHlwZSBt
X3R5cGU7CiAgICAgUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIG1fY2xpZW50OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCShyZXZpc2lvbiAx
NjUwNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw4
IEBAIHB1YmxpYzoKICAgICBib29sIHNlZWtpbmcoKSBjb25zdCB7IHJldHVybiBtX3NlZWtpbmc7
IH0KICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkg
Y29uc3QgPSAwOwotCisgICAgdmlydHVhbCBib29sIGlzT3V0T2ZCYW5kVGV4dFRyYWNrKCkgY29u
c3QgPSAwOworICAgIAogcHJvdGVjdGVkOgogICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYo
QVZGSW5iYW5kVHJhY2tQYXJlbnQqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAkocmV2aXNpb24gMTY1MDc2KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5NCw2ICsy
OTQsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBzaXplX3QgZXh0cmFNZW1vcnlDb3N0KCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgdHJhY2tNb2RlQ2hhbmdlZCgpIG92
ZXJyaWRlOworI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCisgICAgdmlydHVhbCB2b2lkIG91dE9m
QmFuZFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKikgeyB9CisjZW5kaWYKICAgICB2b2lkIHBy
b2Nlc3NOZXdBbmRSZW1vdmVkVGV4dFRyYWNrcyhjb25zdCBWZWN0b3I8UmVmUHRyPEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY+PiYpOwogICAgIHZvaWQgY2xlYXJUZXh0VHJhY2tzKCk7CiAgICAg
VmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPj4gbV90ZXh0VHJhY2tzOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGT2JqQy5oCShyZXZpc2lvbiAxNjUwNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
T2JqQy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIGlzTGVn
YWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0KKyAgICB2aXJ0dWFsIGJvb2wgaXNPdXRPZkJhbmRUZXh0VHJhY2soKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIAogICAgIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKm1l
ZGlhU2VsZWN0aW9uT3B0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVNlbGVjdGlvbk9wdGlv
bi5nZXQoKTsgfQogCiBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZG
T2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmgJKHJl
dmlzaW9uIDE2NTA3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNj
b25uZWN0KCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNMZWdhY3lDbG9zZWRDYXB0
aW9uc1RyYWNrKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc091dE9mQmFuZFRleHRUcmFjaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAKICAgICBBVlBsYXllckl0ZW1UcmFjayAqYXZQbGF5ZXJJdGVtVHJhY2soKSBjb25zdCB7
IHJldHVybiBtX3BsYXllckl0ZW1UcmFjay5nZXQoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCShyZXZpc2lvbiAxNjUwNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsMTEgQEAgcHVibGljOgogI2lmIEVOQUJM
RShJT1NfQUlSUExBWSkKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0RpZENoYW5n
ZSgpOwogI2VuZGlmCi0KKyAgICAKKyNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQorICAgIHZvaWQg
b3V0T2ZCYW5kVHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqKTsKKyNlbmRpZgorICAgIAogICAg
IFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4gY3JlYXRlV2Vha1B0
cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9CiAKIHByaXZh
dGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHJldmlzaW9uIDE2NTA3NikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQy
LDcgQEAKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGT2JqQy5oIgogI2ltcG9ydCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWRk9iakMuaCIKKyNpbXBvcnQgIk91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCIK
ICNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1U
aW1lUmFuZ2VzLmgiCkBAIC04Myw3ICs4NCw4IEBACiAvLyBOb3RlOiBUaGlzIG11c3QgYmUgZGVm
aW5lZCBiZWZvcmUgb3VyIFNPRlRfTElOSyBtYWNyb3M6CiBAY2xhc3MgQVZNZWRpYVNlbGVjdGlv
bk9wdGlvbjsKIEBpbnRlcmZhY2UgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAoT3V0T2ZCYW5kRXh0
ZW5zaW9ucykKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKm91dE9m
QmFuZFNvdXJjZSAvKk5TX0FWQUlMQUJMRShUQkQsIFRCRCkqLzsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgTlNTdHJpbmcqIG91dE9mQmFuZFNvdXJjZTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcqIG91dE9mQmFuZElkZW50aWZpZXI7CiBAZW5kCiAj
ZW5kaWYKIApAQCAtNTMzLDYgKzUzNSwzOSBAQCBzdGF0aWMgY29uc3QgTlNBcnJheSogbWVkaWFE
ZXNjcmlwdGlvbkZvCiAKICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogQVZN
ZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5
LCBuaWxdOwogfQorICAgIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpvdXRPZkJhbmRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayogdHJhY2spCit7CisgICAgaWYg
KCF0cmFjaykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gdW5pcXVlSUQgPSBTdHJpbmc6Om51bWJlcih0cmFjay0+dW5pcXVlSWQoKSkuY3JlYXRlQ0ZT
dHJpbmcoKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIG1vZGUgPSB0cmFjay0+bW9kZSgpOwor
ICAgIAorICAgIGZvciAoYXV0byYgdGV4dFRyYWNrIDogbV90ZXh0VHJhY2tzKSB7CisgICAgICAg
IGlmICghdGV4dFRyYWNrLT5pc091dE9mQmFuZFRleHRUcmFjaygpKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIAorICAgICAgICBSZWZQdHI8T3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRj4gdHJhY2sgPSBzdGF0aWNfY2FzdDxPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKj4o
dGV4dFRyYWNrLmdldCgpKTsKKyAgICAgICAgUmV0YWluUHRyPEFWTWVkaWFTZWxlY3Rpb25PcHRp
b25UeXBlPiBjdXJyZW50T3B0aW9uID0gdHJhY2stPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCk7Cisg
ICAgICAgIAorICAgICAgICBpZiAoW1tjdXJyZW50T3B0aW9uLmdldCgpIG91dE9mQmFuZElkZW50
aWZpZXJdIGlzRXF1YWw6IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTlNTdHJpbmcqPih1bmlxdWVJ
RC5nZXQoKSldKSB7CisgICAgICAgICAgICBpZiAobW9kZSA9PSBUZXh0VHJhY2s6OmRpc2FibGVk
S2V5d29yZCgpKQorICAgICAgICAgICAgICAgIHRleHRUcmFjay0+c2V0TW9kZShJbmJhbmRUZXh0
VHJhY2tQcml2YXRlOjpEaXNhYmxlZCk7CisgICAgICAgICAgICBlbHNlIGlmIChtb2RlID09IFRl
eHRUcmFjazo6aGlkZGVuS2V5d29yZCgpKQorICAgICAgICAgICAgICAgIHRleHRUcmFjay0+c2V0
TW9kZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpIaWRkZW4pOworICAgICAgICAgICAgZWxzZSBp
ZiAobW9kZSA9PSBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkpCisgICAgICAgICAgICAgICAg
dGV4dFRyYWNrLT5zZXRNb2RlKEluYmFuZFRleHRUcmFja1ByaXZhdGU6OlNob3dpbmcpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAg
ICB0cmFja01vZGVDaGFuZ2VkKCk7Cit9CisgICAgCiAjZW5kaWYKIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFN0cmlu
ZyYgdXJsKQpAQCAtMTc5NSwxMSArMTgzMCwyMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6CiAgICAgZm9yIChBVk1lZGlhU2VsZWN0aW9uT3B0aW9uVHlwZSAqb3B0
aW9uIGluIGxlZ2libGVPcHRpb25zKSB7CiAgICAgICAgIGJvb2wgbmV3VHJhY2sgPSB0cnVlOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZW1vdmVkVGV4dFRyYWNrcy5zaXplKCk7IGkgPiAw
OyAtLWkpIHsKLSAgICAgICAgICAgICBpZiAocmVtb3ZlZFRleHRUcmFja3NbaSAtIDFdLT5pc0xl
Z2FjeUNsb3NlZENhcHRpb25zVHJhY2soKSkKLSAgICAgICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gdHJhY2sg
PSBzdGF0aWNfY2FzdDxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQyo+KHJlbW92ZWRUZXh0
VHJhY2tzW2kgLSAxXS5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoW3RyYWNrLT5tZWRpYVNlbGVj
dGlvbk9wdGlvbigpIGlzRXF1YWw6b3B0aW9uXSkgeworICAgICAgICAgICAgaWYgKHJlbW92ZWRU
ZXh0VHJhY2tzW2kgLSAxXS0+aXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFJldGFpblB0cjxB
Vk1lZGlhU2VsZWN0aW9uT3B0aW9uVHlwZT4gY3VycmVudE9wdGlvbjsKKyNpZiBFTkFCTEUoQVZG
X0NBUFRJT05TKQorICAgICAgICAgICAgaWYgKHJlbW92ZWRUZXh0VHJhY2tzW2kgLSAxXS0+aXNP
dXRPZkJhbmRUZXh0VHJhY2soKSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxPdXRPZkJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGPiB0cmFjayA9IHN0YXRpY19jYXN0PE91dE9mQmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYqPihyZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0uZ2V0KCkpOworICAgICAgICAg
ICAgICAgIGN1cnJlbnRPcHRpb24gPSB0cmFjay0+bWVkaWFTZWxlY3Rpb25PcHRpb24oKTsKKyAg
ICAgICAgICAgIH0gZWxzZQorI2VuZGlmCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDPiB0cmFjayA9IHN0YXRpY19jYXN0
PEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDKj4ocmVtb3ZlZFRleHRUcmFja3NbaSAtIDFd
LmdldCgpKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50T3B0aW9uID0gdHJhY2stPm1lZGlhU2Vs
ZWN0aW9uT3B0aW9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGlmIChbY3VycmVudE9wdGlvbi5nZXQoKSBpc0VxdWFsOm9wdGlvbl0pIHsKICAgICAgICAgICAg
ICAgICByZW1vdmVkVGV4dFRyYWNrcy5yZW1vdmUoaSAtIDEpOwogICAgICAgICAgICAgICAgIG5l
d1RyYWNrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xODA5LDkgKzE4NTUs
MTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAgICAgICAg
ICAgY29udGludWU7CiAKICNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQotICAgICAgICAvLyBJZ25v
cmUgb3V0LW9mLWJhbmQgdHJhY2tzIHRoYXQgd2UgcGFzc2VkIHRvIEFWRm91bmRhdGlvbiBzbyB3
ZSBkbyBub3QgZG91YmxlLWNvdW50IHRoZW0KLSAgICAgICAgaWYgKFtvcHRpb24gb3V0T2ZCYW5k
U291cmNlXSkKKyAgICAgICAgaWYgKFtvcHRpb24gb3V0T2ZCYW5kU291cmNlXSkgeworICAgICAg
ICAgICAgbV90ZXh0VHJhY2tzLmFwcGVuZChPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpj
cmVhdGUodGhpcywgb3B0aW9uKSk7CisgICAgICAgICAgICBtX3RleHRUcmFja3MubGFzdCgpLT5z
ZXRIYXNCZWVuUmVwb3J0ZWQodHJ1ZSk7IC8vIElnbm9yZSBvdXQtb2YtYmFuZCB0cmFja3MgdGhh
dCB3ZSBwYXNzZWQgdG8gQVZGb3VuZGF0aW9uIHNvIHdlIGRvIG5vdCBkb3VibGUtY291bnQgdGhl
bQogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIG1f
dGV4dFRyYWNrcy5hcHBlbmQoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0
aGlzLCBvcHRpb24pKTsKQEAgLTE4NTIsNiArMTkwMCwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgICAgIGlmICh0cmFjay0+aXNMZWdhY3lDbG9zZWRD
YXB0aW9uc1RyYWNrKCkpCiAgICAgICAgICAgICBbbV9hdlBsYXllci5nZXQoKSBzZXRDbG9zZWRD
YXB0aW9uRGlzcGxheUVuYWJsZWQ6WUVTXTsKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9T
RUxFQ1RJT05fR1JPVVApCisjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKKyAgICAgICAgZWxzZSBp
ZiAodHJhY2stPmlzT3V0T2ZCYW5kVGV4dFRyYWNrKCkpCisgICAgICAgICAgICBbbV9hdlBsYXll
ckl0ZW0uZ2V0KCkgc2VsZWN0TWVkaWFPcHRpb246c3RhdGljX2Nhc3Q8T3V0T2ZCYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRio+KHRyYWNrKS0+bWVkaWFTZWxlY3Rpb25PcHRpb24oKSBpbk1lZGlhU2Vs
ZWN0aW9uR3JvdXA6c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKV07Cisj
ZW5kaWYKICAgICAgICAgZWxzZQogICAgICAgICAgICAgW21fYXZQbGF5ZXJJdGVtLmdldCgpIHNl
bGVjdE1lZGlhT3B0aW9uOnN0YXRpY19jYXN0PEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpD
Kj4odHJhY2spLT5tZWRpYVNlbGVjdGlvbk9wdGlvbigpIGluTWVkaWFTZWxlY3Rpb25Hcm91cDpz
YWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgpXTsKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvT3V0T2ZC
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZh
dGVBVkYuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBPdXRPZkJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGX2gKKyNkZWZpbmUgT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rl9oCisKKyNpZiBFTkFCTEUoVklERU8pICYmIChVU0UoQVZGT1VOREFUSU9OKSB8fCBQTEFURk9S
TShJT1MpKSAmJiBFTkFCTEUoQVZGX0NBUFRJT05TKQorCisjaW5jbHVkZSAiSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRi5oIgorCitPQkpDX0NMQVNTIEFWTWVkaWFTZWxlY3Rpb25PcHRpb247CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIE91dE9mQmFuZFRleHRUcmFja1ByaXZh
dGVBVkYgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8T3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gY3JlYXRlKEFW
RkluYmFuZFRyYWNrUGFyZW50KiBwbGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBzZWxl
Y3Rpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE91dE9mQmFuZFRleHRU
cmFja1ByaXZhdGVBVkYocGxheWVyLCBzZWxlY3Rpb24pKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBwcm9jZXNzQ3VlKENGQXJyYXlSZWYsIGRvdWJsZSkgeyB9CisgICAgdm9pZCByZXNldEN1ZVZh
bHVlcygpIHsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0xlZ2FjeUNsb3NlZENhcHRpb25z
VHJhY2soKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc091dE9mQmFuZFRleHRUcmFjaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICAKKyAgICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBtZWRpYVNlbGVjdGlvbk9wdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTZWxlY3Rpb25PcHRpb24uZ2V0KCk7IH0KKyAgICAKK3By
b3RlY3RlZDoKKyAgICBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKEFWRkluYmFuZFRyYWNr
UGFyZW50KiBwbGF5ZXIsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24qIHNlbGVjdGlvbikKKyAgICAg
ICAgOiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKHBsYXllcikKKyAgICAgICAgLCBtX21lZGlh
U2VsZWN0aW9uT3B0aW9uKHNlbGVjdGlvbikKKyAgICB7CisgICAgfQorICAgIAorICAgIHZvaWQg
cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmLCBHZW5lcmljQ3VlRGF0
YSopIHsgfQorICAgIAorICAgIFJldGFpblB0cjxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uPiBtX21l
ZGlhU2VsZWN0aW9uT3B0aW9uOworfTsKKyAgICAKK30KKworI2VuZGlmCisKKyNlbmRpZiAvLyBP
dXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lvcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGSU9TLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkZJT1MuaAkocmV2aXNpb24gMTY1MDc2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaW9zL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZJT1MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBBdG9taWNTdHJp
bmcgbGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX25hbWU7IH0KICAgICB2aXJ0dWFs
IEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFuZ3Vh
Z2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNPdXRPZkJh
bmRUZXh0VHJhY2soKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGludCBp
bnRlcm5hbElEKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbElEOyB9CiAKIHByb3RlY3RlZDoK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9NZWRpYVBsYXllclBy
aXZhdGVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaW9zL01lZGlhUGxheWVyUHJpdmF0ZUlPUy5tbQkocmV2aXNpb24gMTY1MDc2KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL01lZGlhUGxheWVyUHJpdmF0ZUlPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtOTg0LDcgKzk4NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlSU9TOjpzZXRTZWxlY3RlZFQKIAogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwogICAg
IHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlSU9TOjpzZXRDdXJyZW50
VHJhY2soJXApIC0gc2VsZWN0aW5nIHRyYWNrIGlkICVpIiwgdGhpcywgW3RyYWNrSUQgaW50VmFs
dWVdKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlSU9TOjpzZXRTZWxl
Y3RlZFRleHRUcmFjayglcCkgLSBzZWxlY3RpbmcgdHJhY2sgaWQgJWkiLCB0aGlzLCBbdHJhY2tJ
RCBpbnRWYWx1ZV0pOwogICAgICAgICBbbV9kZWZlcnJlZFByb3BlcnRpZXMuZ2V0KCkgcmVtb3Zl
T2JqZWN0Rm9yS2V5OkRlZmVycmVkUHJvcGVydHlTZWxlY3RlZFRyYWNrS2V5XTsKICAgICAgICAg
W21fbWVkaWFQbGF5ZXJIZWxwZXIuZ2V0KCkgX3NldFNlbGVjdGVkVGV4dFRyYWNrOnRyYWNrSURd
OwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225918</attachid>
            <date>2014-03-05 14:52:06 -0800</date>
            <delta_ts>2014-03-05 17:44:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129749-20140305145205.patch</filename>
            <type>text/plain</type>
            <size>40530</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTEzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDE0LTAzLTA1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlzZSBPdXQtb2YtYmFu
ZCBWVFQgc3VwcG9ydCBmb3IgYmV0dGVyIGludGVncmF0aW9uIHdpdGggQVZGb3VuZGF0aW9uIGVu
Z2luZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5
NzQ5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjIxNTcwMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXZpc2UgdGhlIHBsYXRmb3JtIGhhbmRs
aW5nIG9mIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzIHNvIHRoYXQgd2UgY2FuIGtlZXAgQVZGb3Vu
ZGF0aW9uCisgICAgICAgIGluZm9ybWVkIG9mIHRyYWNrIHNlbGVjdGlvbnMgd2UgbWFrZS4gVXNl
IGEgZHVtbXkgb3V0LW9mLWJhbmQgY2hpbGQgb2YgdGhlIGV4aXN0aW5nIHRleHQKKyAgICAgICAg
dHJhY2sgY2xhc3NlcyB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3IE91dE9mQmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYuaCBmaWxlLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IE5v
dGlmeSBwbGF5ZXIgd2hlbiBPT0IgdHJhY2tzIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om91dE9mQmFuZFRyYWNrU291cmNlcyk6IEFsc28gcGFzcyB0cmFjayBt
b2RlIHRvIHBsYXRmb3JtIGJhY2tlbmQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpwbGF0Zm9ybVRleHRUcmFjayk6IEFs
c28gcGFzcyB0cmFjayBtb2RlIHRvIGNvbnN0cnVjdG9yLgorICAgICAgICAqIGh0bWwvdHJhY2sv
VHJhY2tCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6VHJhY2tCYXNlKTog
TW92ZSBvd25lcnNoaXAgb2YgdHJhY2sgdW5pcXVlIGlkZW50aWZpZXIgdG8gdGhpcyBiYXNlIGNs
YXNzLgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tCYXNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFja0Jhc2U6OnVuaXF1ZUlkKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5vdGlm
eVRyYWNrTW9kZUNoYW5nZWQpOiBBZGRlZCBzdHViIHRvIHBhc3MgbWVzc2FnZSB0byBwbGF0Zm9y
bSBwbGF5ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6bm90aWZ5VHJhY2tNb2RlQ2hh
bmdlZCk6IFN0dWIgZm9yIG1vc3QgcGxhdGZvcm1zLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtVGV4dFRyYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRU
cmFjazo6Y3JlYXRlKTogVXBkYXRlIGZvciByZXZpc2VkIGNvbnN0cnVjdG9yICh3aXRoICdtb2Rl
JyBhcmd1bWVudCkuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFjazo6Y3JlYXRl
T3V0T2ZCYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFjazo6
bW9kZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UZXh0VHJhY2s6OmNhcHRp
b25NZW51T2ZmSXRlbSk6IFVzZSByZXZpc2VkIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy4KKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0p
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrOjpQbGF0Zm9ybVRl
eHRUcmFjayk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmg6IENoYW5nZSBwcmVkaWNhdGUgdG8gcmV0dXJu
IGVudW0gaW5kaWNhdGluZyB0aGUgY2F0ZWdvcnkKKyAgICAgICAgb2YgdHJhY2sgKG91dC1vZi1i
YW5kLCBsZWdhY3kgY2xvc2VkIGNhcHRpb24sIG9yIGluIGJhbmQpLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bm90
aWZ5VHJhY2tNb2RlQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oOiBPdmVycmlkZSBw
cmVkaWNhdGUgdG8gcmV0dXJuIGNhdGVnb3J5IGVudW0uCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaDog
T3ZlcnJpZGUgcHJlZGljYXRlIHRvIHJldHVybiBjYXRlZ29yeSBlbnVtLgorICAgICAgICB0aGF0
IHRoaXMgaXMgTk9UIGFuIG91dC1vZi1iYW5kIHRyYWNrLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZP
YmpDLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCk6IEFkZGVkIGltcGxlbWVudGF0aW9u
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
cHJvY2Vzc01lZGlhU2VsZWN0aW9uT3B0aW9ucyk6IFJldmlzZSB0byBoYW5kbGUgb3V0LW9mLWJh
bmQKKyAgICAgICAgdHJhY2sgcGxhY2Vob2xkZXJzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Q3VycmVudFRyYWNrKTogTW9kaWZ5IHRv
IGluZm9ybSBBVkZvdW5kYXRpb24gYWJvdXQgYW55CisgICAgICAgIG91dC1vZi1iYW5kIHRyYWNr
cyB3ZSd2ZSBzZWxlY3RlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnN5bmNocm9uaXplVGV4dFRyYWNrU3RhdGUpOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6T3V0T2ZCYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok91dE9mQmFuZFRleHRU
cmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUpOgorICAgICAgICAoV2ViQ29yZTo6T3V0T2ZCYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRjo6cmVzZXRDdWVWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
T3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6bWVkaWFTZWxlY3Rpb25PcHRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6T3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6T3V0T2ZCYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRik6CisgICAgICAgIChXZWJDb3JlOjpPdXRPZkJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvaW9zL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZJT1MuaDogT3ZlcnJpZGUgcHJlZGlj
YXRlIHRvIGluZGljYXRlCisgICAgICAgIHRoYXQgdGhpcyBpcyBOT1QgYW4gb3V0LW9mLWJhbmQg
dHJhY2suCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL01lZGlhUGxheWVyUHJpdmF0
ZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUlPUzo6c2V0U2Vs
ZWN0ZWRUZXh0VHJhY2spOiBDb3JyZWN0IHR5cG8gaW4gbG9nZ2luZyB0ZXh0LgorCiAyMDE0LTAz
LTA1ICBSYWR1IFN0YXZpbGEgIDxzdGF2aWxhQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIFJl
Z2lvbnNdIFNjcm9sbGFibGUgcmVnaW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY1MTMwKQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjczLDYgKzIyNzMsNyBAQAogCQk3QTI0NTg3QjEwMjFFQUY0MDAwQTAwQUEgLyog
SW5zcGVjdG9yRE9NQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0EyNDU4NzkxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50
LmNwcCAqLzsgfTsKIAkJN0EyNDU4N0MxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFn
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTI0
NTg3QTEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QTI5QkE2QTE4N0I3QzFEMDBG
MjlDRUIgLyogVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTI5QkE2OTE4N0I3ODFDMDBGMjlDRUIgLyogVGVt
cG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAgKi87IH07CisJCTdBMjlGNTcyMThDNjk1MTQwMDREMEY4
MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTI5RjU3MTE4QzY5NTE0MDA0RDBGODEgLyogT3V0
T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovOyB9OwogCQk3QTU0ODU3RjE0RTAyRDUxMDA2
QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QTU0ODU3RDE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9y
SGlzdG9yeS5jcHAgKi87IH07CiAJCTdBNTQ4NTgwMTRFMDJENTEwMDZBRTA1QSAvKiBJbnNwZWN0
b3JIaXN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QTU0ODU3RTE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5oICovOyB9Owog
CQk3QTU0ODgxNzE0RTQzMkExMDA2QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTU0ODgxNTE0RTQzMkExMDA2
QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0LmggKi87IH07CkBAIC05MjQ2LDYgKzkyNDcsNyBAQAog
CQk3QTI0NTg3QTEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRE9NQWdlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EyOUJBNjcxODdCNzMyMjAwRjI5Q0VCIC8qIFRlbXBvcmFy
eU9wZW5HTFNldHRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9y
YXJ5T3BlbkdMU2V0dGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTI5QkE2
OTE4N0I3ODFDMDBGMjlDRUIgLyogVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0EyOUY1NzExOEM2OTUxNDAwNEQwRjgxIC8q
IE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOyBwYXRoID0gb2JqYy9PdXRP
ZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdBNTQ4NTdEMTRFMDJENTEwMDZBRTA1QSAvKiBJbnNwZWN0b3JIaXN0b3J5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckhpc3RvcnkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTU0ODU3RTE0RTAyRDUxMDA2QUUwNUEgLyogSW5z
cGVjdG9ySGlzdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JIaXN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNTQ4ODE1MTRFNDMy
QTEwMDZBRTA1QSAvKiBET01QYXRjaFN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NUGF0Y2hTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMTA4Nyw2ICsyMTA4OSw3IEBACiAJCURGOUFGRDZGMTNGQzMxQjAwMDE1RkVCNyAvKiBvYmpj
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3QTI5RjU3
MTE4QzY5NTE0MDA0RDBGODEgLyogT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovLAog
CQkJCUNERTNBODU2MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMu
aCAqLywKIAkJCQlDREUzQTg1NTE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDLm1tICovLAogCQkJCUNENTRBNzYwMTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAgKi8sCkBAIC0yNDY5NCw2ICsyNDY5Nyw3IEBA
CiAJCQkJNDE1N0FGODAxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RBQjZEMjkxN0M3REU2QzAwQzYwQjM0IC8qIE1lZGlhQ29udHJv
bHNIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAwNDE4MUYwNTlDMDBGMkI0MjQgLyog
TWVkaWFEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0EyOUY1NzIxOEM2OTUxNDAw
NEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3MjA1QUI4MTIzOTI5MTAwMEIxNzM4MCAvKiBNZWRpYURvY3VtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDZGMjUyRDEzRjVFRjBFMDA2NTE2NUYgLyogTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNBRDBDRDYzMzEwMDBGQURBNzUg
LyogTWVkaWFFcnJvci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2NTEzMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OTcsNiArMTU5
NywxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuCiAKICAgICBp
ZiAobV90ZXh0VHJhY2tzICYmIG1fdGV4dFRyYWNrcy0+Y29udGFpbnModHJhY2spKQogICAgICAg
ICBtX3RleHRUcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKKworI2lmIEVOQUJMRShBVkZf
Q0FQVElPTlMpCisgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OlRyYWNr
RWxlbWVudCAmJiBtX3BsYXllcikKKyAgICAgICAgbV9wbGF5ZXItPm5vdGlmeVRyYWNrTW9kZUNo
YW5nZWQoKTsKKyNlbmRpZgogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tT
ZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayogdHJhY2spCkBAIC01NTM4LDggKzU1NDMsNiBAQCBT
dHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJVc2VyCiAjaWYgRU5BQkxFKEFWRl9D
QVBUSU9OUykKIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiBIVE1MTWVkaWFFbGVt
ZW50OjpvdXRPZkJhbmRUcmFja1NvdXJjZXMoKQogewotICAgIHN0YXRpYyBpbnQgdW5pcXVlSWQg
PSAwOwotCiAgICAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4+IG91dE9mQmFuZFRy
YWNrU291cmNlczsKICAgICBmb3IgKGF1dG8mIHRyYWNrRWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBl
PEhUTUxUcmFja0VsZW1lbnQ+KCp0aGlzKSkgewogICAgICAgICAKQEAgLTU1NTMsMTkgKzU1NTYs
MjkgQEAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4+IEhUTUxNZQogICAgICAgICBp
ZiAoIWRvY3VtZW50KCkuY29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93TWVkaWFGcm9tU291
cmNlKHVybCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBQbGF0Zm9ybVRleHRU
cmFjazo6VHJhY2tLaW5kIHBsYXRmb3JtS2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpDYXB0aW9u
OworICAgICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIHBsYXRmb3JtS2luZCA9IElu
YmFuZFRleHRUcmFja1ByaXZhdGU6OkNhcHRpb25zOwogICAgICAgICBpZiAodHJhY2tFbGVtZW50
LmtpbmQoKSA9PSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpKQotICAgICAgICAgICAgcGxh
dGZvcm1LaW5kID0gUGxhdGZvcm1UZXh0VHJhY2s6OkNhcHRpb247CisgICAgICAgICAgICBwbGF0
Zm9ybUtpbmQgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDYXB0aW9uczsKICAgICAgICAgZWxz
ZSBpZiAodHJhY2tFbGVtZW50LmtpbmQoKSA9PSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQo
KSkKLSAgICAgICAgICAgIHBsYXRmb3JtS2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpTdWJ0aXRs
ZTsKKyAgICAgICAgICAgIHBsYXRmb3JtS2luZCA9IEluYmFuZFRleHRUcmFja1ByaXZhdGU6OlN1
YnRpdGxlczsKICAgICAgICAgZWxzZSBpZiAodHJhY2tFbGVtZW50LmtpbmQoKSA9PSBUZXh0VHJh
Y2s6OmRlc2NyaXB0aW9uc0tleXdvcmQoKSkKLSAgICAgICAgICAgIHBsYXRmb3JtS2luZCA9IFBs
YXRmb3JtVGV4dFRyYWNrOjpEZXNjcmlwdGlvbjsKKyAgICAgICAgICAgIHBsYXRmb3JtS2luZCA9
IEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkRlc2NyaXB0aW9uczsKICAgICAgICAgZWxzZSBpZiAo
dHJhY2tFbGVtZW50LmtpbmQoKSA9PSBUZXh0VHJhY2s6OmZvcmNlZEtleXdvcmQoKSkKLSAgICAg
ICAgICAgIHBsYXRmb3JtS2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpGb3JjZWQ7CisgICAgICAg
ICAgICBwbGF0Zm9ybUtpbmQgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpGb3JjZWQ7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIG91dE9mQmFuZFRyYWNr
U291cmNlcy5hcHBlbmQoUGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0ZU91dE9mQmFuZCh0cmFja0Vs
ZW1lbnQubGFiZWwoKSwgdHJhY2tFbGVtZW50LnNyY2xhbmcoKSwgdXJsLnN0cmluZygpLCBwbGF0
Zm9ybUtpbmQsICsrdW5pcXVlSWQsIHRyYWNrRWxlbWVudC5pc0RlZmF1bHQoKSkpOworICAgICAg
ICAKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlID0gdHJhY2tFbGVtZW50LnRyYWNr
KCktPm1vZGUoKTsKKyAgICAgICAgCisgICAgICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGU6Ok1v
ZGUgcGxhdGZvcm1Nb2RlID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6RGlzYWJsZWQ7CisgICAg
ICAgIGlmIChUZXh0VHJhY2s6OmhpZGRlbktleXdvcmQoKSA9PSBtb2RlKQorICAgICAgICAgICAg
cGxhdGZvcm1Nb2RlID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6SGlkZGVuOworICAgICAgICBl
bHNlIGlmIChUZXh0VHJhY2s6OmRpc2FibGVkS2V5d29yZCgpID09IG1vZGUpCisgICAgICAgICAg
ICBwbGF0Zm9ybU1vZGUgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpEaXNhYmxlZDsKKyAgICAg
ICAgZWxzZSBpZiAoVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpID09IG1vZGUpCisgICAgICAg
ICAgICBwbGF0Zm9ybU1vZGUgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpTaG93aW5nOworICAg
ICAgICAKKyAgICAgICAgb3V0T2ZCYW5kVHJhY2tTb3VyY2VzLmFwcGVuZChQbGF0Zm9ybVRleHRU
cmFjazo6Y3JlYXRlT3V0T2ZCYW5kKHRyYWNrRWxlbWVudC5sYWJlbCgpLCB0cmFja0VsZW1lbnQu
c3JjbGFuZygpLCB1cmwuc3RyaW5nKCksIHBsYXRmb3JtTW9kZSwgcGxhdGZvcm1LaW5kLCB0cmFj
a0VsZW1lbnQudHJhY2soKS0+dW5pcXVlSWQoKSwgdHJhY2tFbGVtZW50LmlzRGVmYXVsdCgpKSk7
CiAgICAgfQogICAgIAogICAgIHJldHVybiBvdXRPZkJhbmRUcmFja1NvdXJjZXM7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCShyZXZpc2lvbiAxNjUxMzApCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
NCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQpAQCAtNTUwLDggKzU1MCw2IEBAIGJvb2wgVGV4dFRyYWNrOjpoYXNDdWUo
VlRUQ3VlKiBjdWUsIFZUVEMKICNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQogUGFz
c1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gVGV4dFRyYWNrOjpwbGF0Zm9ybVRleHRUcmFjaygp
CiB7Ci0gICAgc3RhdGljIGludCB1bmlxdWVJZCA9IDA7Ci0KICAgICBpZiAobV9wbGF0Zm9ybVRl
eHRUcmFjaykKICAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1UZXh0VHJhY2s7CiAKQEAgLTU3Nyw3
ICs1NzUsMTUgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gVGV4dFRyYWNrOgogICAg
IGVsc2UgaWYgKG1fdHJhY2tUeXBlID09IEluQmFuZCkKICAgICAgICAgdHlwZSA9IFBsYXRmb3Jt
VGV4dFRyYWNrOjpJbkJhbmQ7CiAKLSAgICBtX3BsYXRmb3JtVGV4dFRyYWNrID0gUGxhdGZvcm1U
ZXh0VHJhY2s6OmNyZWF0ZSh0aGlzLCBsYWJlbCgpLCBsYW5ndWFnZSgpLCBwbGF0Zm9ybUtpbmQs
IHR5cGUsICsrdW5pcXVlSWQpOworICAgIFBsYXRmb3JtVGV4dFRyYWNrOjpUcmFja01vZGUgcGxh
dGZvcm1Nb2RlID0gUGxhdGZvcm1UZXh0VHJhY2s6OkRpc2FibGVkOworICAgIGlmIChUZXh0VHJh
Y2s6OmhpZGRlbktleXdvcmQoKSA9PSBtb2RlKCkpCisgICAgICAgIHBsYXRmb3JtTW9kZSA9IFBs
YXRmb3JtVGV4dFRyYWNrOjpIaWRkZW47CisgICAgZWxzZSBpZiAoVGV4dFRyYWNrOjpkaXNhYmxl
ZEtleXdvcmQoKSA9PSBtb2RlKCkpCisgICAgICAgIHBsYXRmb3JtTW9kZSA9IFBsYXRmb3JtVGV4
dFRyYWNrOjpEaXNhYmxlZDsKKyAgICBlbHNlIGlmIChUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3Jk
KCkgPT0gbW9kZSgpKQorICAgICAgICBwbGF0Zm9ybU1vZGUgPSBQbGF0Zm9ybVRleHRUcmFjazo6
U2hvd2luZzsKKworICAgIG1fcGxhdGZvcm1UZXh0VHJhY2sgPSBQbGF0Zm9ybVRleHRUcmFjazo6
Y3JlYXRlKHRoaXMsIGxhYmVsKCksIGxhbmd1YWdlKCksIHBsYXRmb3JtTW9kZSwgcGxhdGZvcm1L
aW5kLCB0eXBlLCB1bmlxdWVJZCgpKTsKIAogICAgIHJldHVybiBtX3BsYXRmb3JtVGV4dFRyYWNr
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAkocmV2aXNp
b24gMTY1MTMwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitzdGF0aWMgaW50IHNfdW5pcXVlSWQgPSAwOworCiBUcmFja0Jhc2U6OlRyYWNrQmFzZShUeXBl
IHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWws
IGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpCiAgICAgOiBtX21lZGlhRWxlbWVudCgwKQog
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgLCBtX3NvdXJjZUJ1ZmZlcigwKQogI2VuZGlm
CisgICAgLCBtX3VuaXF1ZUlkKCsrc191bmlxdWVJZCkKICAgICAsIG1faWQoaWQpCiAgICAgLCBt
X2xhYmVsKGxhYmVsKQogICAgICwgbV9sYW5ndWFnZShsYW5ndWFnZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAkocmV2aXNpb24gMTY1MTMwKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQoKSA9IDA7CiAKKyAg
ICB2aXJ0dWFsIGludCB1bmlxdWVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5pcXVlSWQ7IH0KKwog
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgU291cmNlQnVmZmVyKiBzb3VyY2VCdWZmZXIo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUJ1ZmZlcjsgfQogICAgIHZvaWQgc2V0U291cmNlQnVm
ZmVyKFNvdXJjZUJ1ZmZlciogYnVmZmVyKSB7IG1fc291cmNlQnVmZmVyID0gYnVmZmVyOyB9CkBA
IC04NSw2ICs4Nyw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsK
KyAgICBpbnQgbV91bmlxdWVJZDsKICAgICBBdG9taWNTdHJpbmcgbV9pZDsKICAgICBBdG9taWNT
dHJpbmcgbV9raW5kOwogICAgIEF0b21pY1N0cmluZyBtX2xhYmVsOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2aXNpb24g
MTY1MTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcyLDYgKzEyNzIsMTIgQEAgdm9pZCBNZWRpYVBsYXll
cjo6c2V0VGV4dFRyYWNrUmVwcmVzZW50YQogfQogCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykK
K3ZvaWQgTWVkaWFQbGF5ZXI6Om5vdGlmeVRyYWNrTW9kZUNoYW5nZWQoKQoreworICAgIGlmICht
X3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpOwor
fQorCiBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPj4gTWVkaWFQbGF5ZXI6Om91dE9m
QmFuZFRyYWNrU291cmNlcygpCiB7CiAgICAgaWYgKCFtX21lZGlhUGxheWVyQ2xpZW50KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCShy
ZXZpc2lvbiAxNjUxMzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MzcsNiArNTM3LDcgQEAgcHVibGljOgogICAg
IGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0OwogICAgIHZvaWQg
c2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKTsKICNp
ZiBFTkFCTEUoQVZGX0NBUFRJT05TKQorICAgIHZvaWQgbm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgp
OwogICAgIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiBvdXRPZkJhbmRUcmFja1Nv
dXJjZXMoKTsKICNlbmRpZgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAkocmV2aXNpb24gMTY1MTMw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQ3LDYgKzI0NywxMCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGNvcnJ1cHRlZFZpZGVvRnJhbWVz
KCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgZG91YmxlIHRvdGFsRnJhbWVEZWxheSgpIHsg
cmV0dXJuIDA7IH0KICNlbmRpZgorCisjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKKyAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpIHsgfQorI2VuZGlmCiB9OwogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
VGV4dFRyYWNrLmgJKHJldmlzaW9uIDE2NTEzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsy
OCwxMyBAQAogCiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkgfHwgRU5BQkxFKEFW
Rl9DQVBUSU9OUykKIAorI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRleHRUcmFjazsKLWNsYXNzIEluYmFuZFRl
eHRUcmFja1ByaXZhdGU7CiAKIGNsYXNzIFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50IHsKIHB1Ymxp
YzoKQEAgLTQ2LDM0ICs0NiwyNyBAQCBwdWJsaWM6CiAKIGNsYXNzIFBsYXRmb3JtVGV4dFRyYWNr
IDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1UZXh0VHJhY2s+IHsKIHB1YmxpYzoKLSAgICBl
bnVtIFRyYWNrS2luZCB7Ci0gICAgICAgIFN1YnRpdGxlID0gMCwKLSAgICAgICAgQ2FwdGlvbiA9
IDEsCi0gICAgICAgIERlc2NyaXB0aW9uID0gMiwKLSAgICAgICAgQ2hhcHRlciA9IDMsCi0gICAg
ICAgIE1ldGFEYXRhID0gNCwKLSAgICAgICAgRm9yY2VkID0gNSwKLSAgICB9OwogICAgIGVudW0g
VHJhY2tUeXBlIHsKICAgICAgICAgSW5CYW5kID0gMCwKICAgICAgICAgT3V0T2ZCYW5kID0gMSwK
ICAgICAgICAgU2NyaXB0ID0gMgogICAgIH07Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0
Zm9ybVRleHRUcmFjaz4gY3JlYXRlKFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNv
bnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIFRyYWNrS2luZCBraW5k
LCBUcmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkKQorICAgIAorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBjcmVhdGUoUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIGNs
aWVudCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZTo6TW9kZSBtb2RlLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5k
IGtpbmQsIFRyYWNrVHlwZSB0eXBlLCBpbnQgdW5pcXVlSWQpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtVGV4dFRyYWNrKGNsaWVudCwgbGFiZWwsIGxhbmd1YWdl
LCBTdHJpbmcoKSwga2luZCwgdHlwZSwgdW5pcXVlSWQsIGZhbHNlKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUGxhdGZvcm1UZXh0VHJhY2soY2xpZW50LCBsYWJlbCwgbGFuZ3VhZ2Us
IFN0cmluZygpLCBtb2RlLCBraW5kLCB0eXBlLCB1bmlxdWVJZCwgZmFsc2UpKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gY3JlYXRlT3V0T2ZCYW5k
KGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBUcmFja0tpbmQga2luZCwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gY3JlYXRlT3V0T2ZCYW5kKGNv
bnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFN0cmluZyYg
dXJsLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpNb2RlIG1vZGUsIEluYmFuZFRleHRUcmFja1By
aXZhdGU6OktpbmQga2luZCwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1UZXh0VHJhY2sobnVsbHB0ciwgbGFi
ZWwsIGxhbmd1YWdlLCB1cmwsIGtpbmQsIE91dE9mQmFuZCwgdW5pcXVlSWQsIGlzRGVmYXVsdCkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtVGV4dFRyYWNrKG51bGxwdHIs
IGxhYmVsLCBsYW5ndWFnZSwgdXJsLCBtb2RlLCBraW5kLCBPdXRPZkJhbmQsIHVuaXF1ZUlkLCBp
c0RlZmF1bHQpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybVRleHRUcmFjaygpIHsg
fQogICAgIAogICAgIFRyYWNrVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0g
ICAgVHJhY2tLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlOjpLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAg
ICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21v
ZGU7IH0KICAgICBjb25zdCBTdHJpbmcmIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsg
fQogICAgIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xhbmd1YWdl
OyB9CiAgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQpAQCAt
ODMsMjEgKzc2LDIyIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayog
Y2FwdGlvbk1lbnVPZmZJdGVtKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRU
cmFjayogb2ZmID0gUGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAib2ZmIG1lbnUg
aXRlbSIsICIiLCBTdWJ0aXRsZSwgSW5CYW5kLCAwKS5sZWFrUmVmKCk7CisgICAgICAgIHN0YXRp
YyBQbGF0Zm9ybVRleHRUcmFjayogb2ZmID0gUGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0ZShudWxs
cHRyLCAib2ZmIG1lbnUgaXRlbSIsICIiLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpTaG93aW5n
LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpTdWJ0aXRsZXMsIEluQmFuZCwgMCkubGVha1JlZigp
OwogICAgICAgICByZXR1cm4gb2ZmOwogICAgIH0KIAogICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRU
cmFjayogY2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBQ
bGF0Zm9ybVRleHRUcmFjayogYXV0b21hdGljID0gUGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0ZShu
dWxscHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSIsICIiLCBTdWJ0aXRsZSwgSW5CYW5kLCAwKS5s
ZWFrUmVmKCk7CisgICAgICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogYXV0b21hdGljID0g
UGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSIs
ICIiLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpTaG93aW5nLCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlOjpTdWJ0aXRsZXMsIEluQmFuZCwgMCkubGVha1JlZigpOwogICAgICAgICByZXR1cm4gYXV0
b21hdGljOwogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIFBsYXRmb3JtVGV4dFRyYWNrKFBsYXRm
b3JtVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0
cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFN0cmluZyYgdXJsLCBUcmFja0tpbmQga2luZCwgVHJhY2tU
eXBlIHR5cGUsIGludCB1bmlxdWVJZCwgYm9vbCBpc0RlZmF1bHQpCisgICAgUGxhdGZvcm1UZXh0
VHJhY2soUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBsYWJl
bCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5nJiB1cmwsIEluYmFuZFRleHRU
cmFja1ByaXZhdGU6Ok1vZGUgbW9kZSwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBraW5k
LCBUcmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKICAgICAgICAg
OiBtX2xhYmVsKGxhYmVsKQogICAgICAgICAsIG1fbGFuZ3VhZ2UobGFuZ3VhZ2UpCiAgICAgICAg
ICwgbV91cmwodXJsKQorICAgICAgICAsIG1fbW9kZShtb2RlKQogICAgICAgICAsIG1fa2luZChr
aW5kKQogICAgICAgICAsIG1fdHlwZSh0eXBlKQogICAgICAgICAsIG1fY2xpZW50KGNsaWVudCkK
QEAgLTEwOSw3ICsxMDMsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgU3RyaW5nIG1fbGFiZWw7CiAgICAg
U3RyaW5nIG1fbGFuZ3VhZ2U7CiAgICAgU3RyaW5nIG1fdXJsOwotICAgIFRyYWNrS2luZCBtX2tp
bmQ7CisgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6TW9kZSBtX21vZGU7CisgICAgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBtX2tpbmQ7CiAgICAgVHJhY2tUeXBlIG1fdHlwZTsKICAg
ICBQbGF0Zm9ybVRleHRUcmFja0NsaWVudCogbV9jbGllbnQ7CiAgICAgaW50IG1fdW5pcXVlSWQ7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgJ
KHJldmlzaW9uIDE2NTEzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNTUsMTUgKzU1LDIwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc0JlZW5SZXBvcnRlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faGFzQmVlblJlcG9ydGVkOyB9CiAgICAgdm9pZCBzZXRIYXNCZWVuUmVw
b3J0ZWQoYm9vbCByZXBvcnRlZCkgeyBtX2hhc0JlZW5SZXBvcnRlZCA9IHJlcG9ydGVkOyB9CiAK
LSAgICB2b2lkIHByb2Nlc3NDdWUoQ0ZBcnJheVJlZiwgZG91YmxlKTsKLSAgICB2b2lkIHJlc2V0
Q3VlVmFsdWVzKCk7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NDdWUoQ0ZBcnJheVJlZiwgZG91
YmxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRDdWVWYWx1ZXMoKTsKIAogICAgIHZvaWQgYmVn
aW5TZWVraW5nKCk7CiAgICAgdm9pZCBlbmRTZWVraW5nKCkgeyBtX3NlZWtpbmcgPSBmYWxzZTsg
fQogICAgIGJvb2wgc2Vla2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc2Vla2luZzsgfQogICAgIAot
ICAgIHZpcnR1YWwgYm9vbCBpc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2soKSBjb25zdCA9IDA7
Ci0KKyAgICBlbnVtIENhdGVnb3J5IHsKKyAgICAgICAgTGVnYWN5Q2xvc2VkQ2FwdGlvbiwKKyAg
ICAgICAgT3V0T2ZCYW5kLAorICAgICAgICBJbkJhbmQKKyAgICB9OworICAgIHZpcnR1YWwgQ2F0
ZWdvcnkgdGV4dFRyYWNrQ2F0ZWdvcnkoKSBjb25zdCA9IDA7CisgICAgCiBwcm90ZWN0ZWQ6CiAg
ICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRihBVkZJbmJhbmRUcmFja1BhcmVudCopOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmNwcAkocmV2aXNpb24gMTY1MTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtOTA3LDYgKzkwNywxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbjo6ZGlzCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bjo6Y29uZmlndXJlSW5iYW5kVHJhY2tzKCkKIHsKICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRj4gdHJhY2tUb0VuYWJsZTsKKyAgICAKKyNpZiBFTkFCTEUoQVZGX0NBUFRJT05T
KQorICAgIHN5bmNocm9uaXplVGV4dFRyYWNrU3RhdGUoKTsKKyNlbmRpZgogCiAgICAgLy8gQVZG
b3VuZGF0aW9uIGNhbiBvbmx5IGVtaXQgY3VlcyBmb3Igb25lIHRyYWNrIGF0IGEgdGltZSwgc28g
ZW5hYmxlIHRoZSBmaXJzdCB0cmFjayB0aGF0IGlzIHNob3dpbmcsIG9yIHRoZSBmaXJzdCB0aGF0
CiAgICAgLy8gaXMgaGlkZGVuIGlmIG5vbmUgYXJlIHNob3dpbmcuIE90aGVyd2lzZSBkaXNhYmxl
IGFsbCB0cmFja3MuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5oCShyZXZpc2lvbiAxNjUxMzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjk0LDYgKzI5NCwxMCBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCBzaXplX3QgZXh0cmFNZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgdHJhY2tNb2RlQ2hhbmdlZCgpIG92ZXJyaWRlOworI2lm
IEVOQUJMRShBVkZfQ0FQVElPTlMpCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVRyYWNrTW9kZUNo
YW5nZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVUZXh0VHJhY2tTdGF0ZSgp
IHsgfQorI2VuZGlmCiAgICAgdm9pZCBwcm9jZXNzTmV3QW5kUmVtb3ZlZFRleHRUcmFja3MoY29u
c3QgVmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPj4mKTsKICAgICB2b2lk
IGNsZWFyVGV4dFRyYWNrcygpOwogICAgIFZlY3RvcjxSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRj4+IG1fdGV4dFRyYWNrczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oCShyZXZpc2lvbiAxNjUxMzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWQ0YuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgaXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIENhdGVnb3J5IHRleHRUcmFja0NhdGVnb3J5KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gSW5CYW5kOyB9CiAKICAgICBBVkNGTWVkaWFTZWxlY3Rpb25PcHRp
b25SZWYgbWVkaWFTZWxlY3Rpb25PcHRpb24oKSBjb25zdCB7IHJldHVybiBtX21lZGlhU2VsZWN0
aW9uT3B0aW9uLmdldCgpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAkocmV2aXNpb24gMTY1MTMwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Niw4ICs1
Niw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQorICAgIHZpcnR1YWwgQ2F0ZWdvcnkgdGV4dFRy
YWNrQ2F0ZWdvcnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbkJhbmQ7IH0KKyAgICAKICAg
ICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICptZWRpYVNlbGVjdGlvbk9wdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fbWVkaWFTZWxlY3Rpb25PcHRpb24uZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oCShyZXZpc2lvbiAxNjUxMzApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlTGVnYWN5QVZGT2JqQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU2LDggKzU2LDggQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgYm9vbCBpc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2soKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0KKyAgICB2aXJ0dWFsIENhdGVnb3J5IHRleHRUcmFja0NhdGVnb3J5KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTGVnYWN5Q2xvc2VkQ2FwdGlvbjsgfQorICAgIAogICAg
IEFWUGxheWVySXRlbVRyYWNrICphdlBsYXllckl0ZW1UcmFjaygpIGNvbnN0IHsgcmV0dXJuIG1f
cGxheWVySXRlbVRyYWNrLmdldCgpOyB9CiAKIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmgJKHJldmlzaW9uIDE2NTEzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTYsNyArMTE2LDEyIEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCiAgICAgdm9pZCBwbGF5YmFja1RhcmdldElzV2lyZWxl
c3NEaWRDaGFuZ2UoKTsKICNlbmRpZgotCisgICAgCisjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykK
KyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVRleHRUcmFja1N0YXRlKCkgb3ZlcnJpZGU7CisjZW5k
aWYKKyAgICAKICAgICBXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+
IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIo
KTsgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCShyZXZpc2lvbiAx
NjUxMzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9y
dCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaCIKICNpbXBvcnQgIkluYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmgiCisjaW1wb3J0ICJPdXRPZkJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGLmgiCiAjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBv
cnQgIlBsYXRmb3JtVGltZVJhbmdlcy5oIgpAQCAtODMsNyArODQsOCBAQAogLy8gTm90ZTogVGhp
cyBtdXN0IGJlIGRlZmluZWQgYmVmb3JlIG91ciBTT0ZUX0xJTksgbWFjcm9zOgogQGNsYXNzIEFW
TWVkaWFTZWxlY3Rpb25PcHRpb247CiBAaW50ZXJmYWNlIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24g
KE91dE9mQmFuZEV4dGVuc2lvbnMpCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5T
U3RyaW5nICpvdXRPZkJhbmRTb3VyY2UgLypOU19BVkFJTEFCTEUoVEJELCBUQkQpKi87CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nKiBvdXRPZkJhbmRTb3VyY2U7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nKiBvdXRPZkJhbmRJZGVudGlm
aWVyOwogQGVuZAogI2VuZGlmCiAKQEAgLTUxNSwzMCArNTE3LDU4IEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKIH0KIAogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMp
Ci1zdGF0aWMgY29uc3QgTlNBcnJheSogbWVkaWFEZXNjcmlwdGlvbkZvcktpbmQoUGxhdGZvcm1U
ZXh0VHJhY2s6OlRyYWNrS2luZCBraW5kKQorc3RhdGljIGNvbnN0IE5TQXJyYXkqIG1lZGlhRGVz
Y3JpcHRpb25Gb3JLaW5kKEluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQga2luZCkKIHsKICAg
ICAvLyBGSVhNRTogTWF0Y2ggdGhlc2UgdG8gY29ycmVjdCB0eXBlczoKLSAgICBpZiAoa2luZCA9
PSBQbGF0Zm9ybVRleHRUcmFjazo6Q2FwdGlvbikKKyAgICBpZiAoa2luZCA9PSBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlOjpDYXB0aW9ucykKICAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0
aE9iamVjdHM6IEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9y
QWNjZXNzaWJpbGl0eSwgbmlsXTsKIAotICAgIGlmIChraW5kID09IFBsYXRmb3JtVGV4dFRyYWNr
OjpTdWJ0aXRsZSkKKyAgICBpZiAoa2luZCA9PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpTdWJ0
aXRsZXMpCiAgICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOiBBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHksIG5p
bF07CiAKLSAgICBpZiAoa2luZCA9PSBQbGF0Zm9ybVRleHRUcmFjazo6RGVzY3JpcHRpb24pCisg
ICAgaWYgKGtpbmQgPT0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6RGVzY3JpcHRpb25zKQogICAg
ICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogQVZNZWRpYUNoYXJhY3Rlcmlz
dGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSwgbmlsXTsKIAot
ICAgIGlmIChraW5kID09IFBsYXRmb3JtVGV4dFRyYWNrOjpGb3JjZWQpCisgICAgaWYgKGtpbmQg
PT0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Rm9yY2VkKQogICAgICAgICByZXR1cm4gW05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0czogQVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9y
Y2VkU3VidGl0bGVzLCBuaWxdOwogCiAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVj
dHM6IEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNz
aWJpbGl0eSwgbmlsXTsKIH0KKyAgICAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpCit7CisgICAgdHJhY2tNb2RlQ2hhbmdl
ZCgpOworfQorICAgIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpz
eW5jaHJvbml6ZVRleHRUcmFja1N0YXRlKCkKK3sKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFBs
YXRmb3JtVGV4dFRyYWNrPj4mIG91dE9mQmFuZFRyYWNrU291cmNlcyA9IHBsYXllcigpLT5vdXRP
ZkJhbmRUcmFja1NvdXJjZXMoKTsKKyAgICAKKyAgICBmb3IgKGF1dG8mIHRleHRUcmFjayA6IG1f
dGV4dFRyYWNrcykgeworICAgICAgICBpZiAodGV4dFRyYWNrLT50ZXh0VHJhY2tDYXRlZ29yeSgp
ID09IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6Ok91dE9mQmFuZCkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAKKyAgICAgICAgUmVmUHRyPE91dE9mQmFuZFRleHRUcmFja1ByaXZh
dGVBVkY+IHRyYWNrUHJpdmF0ZSA9IHN0YXRpY19jYXN0PE91dE9mQmFuZFRleHRUcmFja1ByaXZh
dGVBVkYqPih0ZXh0VHJhY2suZ2V0KCkpOworICAgICAgICBSZXRhaW5QdHI8QVZNZWRpYVNlbGVj
dGlvbk9wdGlvblR5cGU+IGN1cnJlbnRPcHRpb24gPSB0cmFja1ByaXZhdGUtPm1lZGlhU2VsZWN0
aW9uT3B0aW9uKCk7CisgICAgICAgIAorICAgICAgICBmb3IgKGF1dG8mIHRyYWNrIDogb3V0T2ZC
YW5kVHJhY2tTb3VyY2VzKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVu
aXF1ZUlEID0gU3RyaW5nOjpudW1iZXIodHJhY2stPnVuaXF1ZUlkKCkpLmNyZWF0ZUNGU3RyaW5n
KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghW1tjdXJyZW50T3B0aW9uLmdldCgp
IG91dE9mQmFuZElkZW50aWZpZXJdIGlzRXF1YWw6IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTlNT
dHJpbmcqPih1bmlxdWVJRC5nZXQoKSldKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgCisgICAgICAgICAgICB0ZXh0VHJhY2stPnNldE1vZGUodHJhY2stPm1vZGUoKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KICNlbmRpZgotCisgICAg
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRG
b3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgaWYgKG1fYXZBc3NldCkKICAgICAgICAg
cmV0dXJuOwotCisgICAgCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTCglcCkiLCB0aGlzKTsKIAogICAgIHNldERl
bGF5Q2FsbGJhY2tzKHRydWUpOwpAQCAtMTc0Myw3ICsxNzczLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogCiAgICAgICAgIGJvb2wgbmV3Q0NUcmFjayA9IHRy
dWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJlbW92ZWRUZXh0VHJhY2tzLnNpemUoKTsg
aSA+IDA7IC0taSkgewotICAgICAgICAgICAgaWYgKCFyZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0t
PmlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpKQorICAgICAgICAgICAgaWYgKCFyZW1vdmVk
VGV4dFRyYWNrc1tpIC0gMV0tPnRleHRUcmFja0NhdGVnb3J5KCkgPT0gSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRjo6TGVnYWN5Q2xvc2VkQ2FwdGlvbikKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZP
YmpDPiB0cmFjayA9IHN0YXRpY19jYXN0PEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZP
YmpDKj4obV90ZXh0VHJhY2tzW2kgLSAxXS5nZXQoKSk7CkBAIC0xNzk0LDExICsxODI0LDIyIEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICBmb3IgKEFWTWVk
aWFTZWxlY3Rpb25PcHRpb25UeXBlICpvcHRpb24gaW4gbGVnaWJsZU9wdGlvbnMpIHsKICAgICAg
ICAgYm9vbCBuZXdUcmFjayA9IHRydWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJlbW92
ZWRUZXh0VHJhY2tzLnNpemUoKTsgaSA+IDA7IC0taSkgewotICAgICAgICAgICAgIGlmIChyZW1v
dmVkVGV4dFRyYWNrc1tpIC0gMV0tPmlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpKQotICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgUmVmUHRyPEluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkZPYmpDPiB0cmFjayA9IHN0YXRpY19jYXN0PEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkZPYmpDKj4ocmVtb3ZlZFRleHRUcmFja3NbaSAtIDFdLmdldCgpKTsKLSAgICAgICAg
ICAgIGlmIChbdHJhY2stPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCkgaXNFcXVhbDpvcHRpb25dKSB7
CisgICAgICAgICAgICBpZiAocmVtb3ZlZFRleHRUcmFja3NbaSAtIDFdLT50ZXh0VHJhY2tDYXRl
Z29yeSgpID09IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OkxlZ2FjeUNsb3NlZENhcHRpb24p
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFJl
dGFpblB0cjxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uVHlwZT4gY3VycmVudE9wdGlvbjsKKyNpZiBF
TkFCTEUoQVZGX0NBUFRJT05TKQorICAgICAgICAgICAgaWYgKHJlbW92ZWRUZXh0VHJhY2tzW2kg
LSAxXS0+dGV4dFRyYWNrQ2F0ZWdvcnkoKSA9PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpP
dXRPZkJhbmQpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8T3V0T2ZCYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRj4gdHJhY2sgPSBzdGF0aWNfY2FzdDxPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
Kj4ocmVtb3ZlZFRleHRUcmFja3NbaSAtIDFdLmdldCgpKTsKKyAgICAgICAgICAgICAgICBjdXJy
ZW50T3B0aW9uID0gdHJhY2stPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCk7CisgICAgICAgICAgICB9
IGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFJlZlB0cjxJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gdHJhY2sgPSBzdGF0aWNfY2FzdDxJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGT2JqQyo+KHJlbW92ZWRUZXh0VHJhY2tzW2kgLSAxXS5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgY3VycmVudE9wdGlvbiA9IHRyYWNrLT5tZWRpYVNlbGVjdGlvbk9wdGlv
bigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoW2N1cnJl
bnRPcHRpb24uZ2V0KCkgaXNFcXVhbDpvcHRpb25dKSB7CiAgICAgICAgICAgICAgICAgcmVtb3Zl
ZFRleHRUcmFja3MucmVtb3ZlKGkgLSAxKTsKICAgICAgICAgICAgICAgICBuZXdUcmFjayA9IGZh
bHNlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTgwOCw5ICsxODQ5LDExIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKLSAgICAgICAgLy8gSWdub3JlIG91dC1vZi1i
YW5kIHRyYWNrcyB0aGF0IHdlIHBhc3NlZCB0byBBVkZvdW5kYXRpb24gc28gd2UgZG8gbm90IGRv
dWJsZS1jb3VudCB0aGVtCi0gICAgICAgIGlmIChbb3B0aW9uIG91dE9mQmFuZFNvdXJjZV0pCisg
ICAgICAgIGlmIChbb3B0aW9uIG91dE9mQmFuZFNvdXJjZV0pIHsKKyAgICAgICAgICAgIG1fdGV4
dFRyYWNrcy5hcHBlbmQoT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6Y3JlYXRlKHRoaXMs
IG9wdGlvbikpOworICAgICAgICAgICAgbV90ZXh0VHJhY2tzLmxhc3QoKS0+c2V0SGFzQmVlblJl
cG9ydGVkKHRydWUpOyAvLyBJZ25vcmUgb3V0LW9mLWJhbmQgdHJhY2tzIHRoYXQgd2UgcGFzc2Vk
IHRvIEFWRm91bmRhdGlvbiBzbyB3ZSBkbyBub3QgZG91YmxlLWNvdW50IHRoZW0KICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CiAjZW5kaWYKIAogICAgICAgICBtX3RleHRUcmFja3Mu
YXBwZW5kKEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpjcmVhdGUodGhpcywgb3B0aW9u
KSk7CkBAIC0xODQ4LDkgKzE4OTEsMTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOgogICAgIG1fY3VycmVudFRyYWNrID0gdHJhY2s7CiAKICAgICBpZiAodHJhY2sp
IHsKLSAgICAgICAgaWYgKHRyYWNrLT5pc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2soKSkKKyAg
ICAgICAgaWYgKHRyYWNrLT50ZXh0VHJhY2tDYXRlZ29yeSgpID09IEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkY6OkxlZ2FjeUNsb3NlZENhcHRpb24pCiAgICAgICAgICAgICBbbV9hdlBsYXllci5n
ZXQoKSBzZXRDbG9zZWRDYXB0aW9uRGlzcGxheUVuYWJsZWQ6WUVTXTsKICNpZiBIQVZFKEFWRk9V
TkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCisjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykK
KyAgICAgICAgZWxzZSBpZiAodHJhY2stPnRleHRUcmFja0NhdGVnb3J5KCkgPT0gSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRjo6T3V0T2ZCYW5kKQorICAgICAgICAgICAgW21fYXZQbGF5ZXJJdGVt
LmdldCgpIHNlbGVjdE1lZGlhT3B0aW9uOnN0YXRpY19jYXN0PE91dE9mQmFuZFRleHRUcmFja1By
aXZhdGVBVkYqPih0cmFjayktPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCkgaW5NZWRpYVNlbGVjdGlv
bkdyb3VwOnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKCldOworI2VuZGlm
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFttX2F2UGxheWVySXRlbS5nZXQoKSBzZWxlY3RN
ZWRpYU9wdGlvbjpzdGF0aWNfY2FzdDxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQyo+KHRy
YWNrKS0+bWVkaWFTZWxlY3Rpb25PcHRpb24oKSBpbk1lZGlhU2VsZWN0aW9uR3JvdXA6c2FmZU1l
ZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKV07CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRl
eHRUcmFja1ByaXZhdGVBVkYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgT3V0T2ZCYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRl9oCisjZGVmaW5lIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkZfaAor
CisjaWYgRU5BQkxFKFZJREVPKSAmJiAoVVNFKEFWRk9VTkRBVElPTikgfHwgUExBVEZPUk0oSU9T
KSkgJiYgRU5BQkxFKEFWRl9DQVBUSU9OUykKKworI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1By
aXZhdGVBVkYuaCIKKworT0JKQ19DTEFTUyBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
IDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkY+IGNyZWF0ZShBVkZJbmJh
bmRUcmFja1BhcmVudCogcGxheWVyLCAgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiogc2VsZWN0aW9u
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPdXRPZkJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGKHBsYXllciwgc2VsZWN0aW9uKSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwg
dm9pZCBwcm9jZXNzQ3VlKENGQXJyYXlSZWYsIGRvdWJsZSkgb3ZlcnJpZGUgeyB9CisgICAgdmly
dHVhbCB2b2lkIHJlc2V0Q3VlVmFsdWVzKCkgb3ZlcnJpZGUgeyB9CisgICAgCisgICAgdmlydHVh
bCBDYXRlZ29yeSB0ZXh0VHJhY2tDYXRlZ29yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE91
dE9mQmFuZDsgfQorICAgIAorICAgIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24qIG1lZGlhU2VsZWN0
aW9uT3B0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVNlbGVjdGlvbk9wdGlvbi5nZXQoKTsg
fQorICAgIAorcHJvdGVjdGVkOgorICAgIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYoQVZG
SW5iYW5kVHJhY2tQYXJlbnQqIHBsYXllciwgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiogc2VsZWN0
aW9uKQorICAgICAgICA6IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYocGxheWVyKQorICAgICAg
ICAsIG1fbWVkaWFTZWxlY3Rpb25PcHRpb24oc2VsZWN0aW9uKQorICAgIHsKKyAgICB9CisgICAg
CisgICAgUmV0YWluUHRyPEFWTWVkaWFTZWxlY3Rpb25PcHRpb24+IG1fbWVkaWFTZWxlY3Rpb25P
cHRpb247Cit9OworICAgIAorfQorCisjZW5kaWYKKworI2VuZGlmIC8vIE91dE9mQmFuZFRleHRU
cmFja1ByaXZhdGVBVkZfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aW9zL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRklP
Uy5oCShyZXZpc2lvbiAxNjUxMzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pb3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRklPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSw3
ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6Oktp
bmQga2luZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVs
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVhbCBBdG9taWNT
dHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xhbmd1YWdlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBDYXRlZ29yeSB0ZXh0VHJhY2tDYXRl
Z29yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEluQmFuZDsgfQogICAgIGludCBpbnRlcm5h
bElEKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbElEOyB9CiAKIHByb3RlY3RlZDoKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9NZWRpYVBsYXllclByaXZhdGVJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9z
L01lZGlhUGxheWVyUHJpdmF0ZUlPUy5tbQkocmV2aXNpb24gMTY1MTMwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL01lZGlhUGxheWVyUHJpdmF0ZUlPUy5tbQkod29y
a2luZyBjb3B5KQpAQCAtOTg0LDcgKzk4NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlSU9T
OjpzZXRTZWxlY3RlZFQKIAogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwogICAgIHsKLSAg
ICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlSU9TOjpzZXRDdXJyZW50VHJhY2so
JXApIC0gc2VsZWN0aW5nIHRyYWNrIGlkICVpIiwgdGhpcywgW3RyYWNrSUQgaW50VmFsdWVdKTsK
KyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlSU9TOjpzZXRTZWxlY3RlZFRl
eHRUcmFjayglcCkgLSBzZWxlY3RpbmcgdHJhY2sgaWQgJWkiLCB0aGlzLCBbdHJhY2tJRCBpbnRW
YWx1ZV0pOwogICAgICAgICBbbV9kZWZlcnJlZFByb3BlcnRpZXMuZ2V0KCkgcmVtb3ZlT2JqZWN0
Rm9yS2V5OkRlZmVycmVkUHJvcGVydHlTZWxlY3RlZFRyYWNrS2V5XTsKICAgICAgICAgW21fbWVk
aWFQbGF5ZXJIZWxwZXIuZ2V0KCkgX3NldFNlbGVjdGVkVGV4dFRyYWNrOnRyYWNrSURdOwogICAg
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225931</attachid>
            <date>2014-03-05 17:44:31 -0800</date>
            <delta_ts>2014-03-06 12:01:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129749-20140305174430.patch</filename>
            <type>text/plain</type>
            <size>42942</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTEzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDE0LTAzLTA1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlzZSBPdXQtb2YtYmFu
ZCBWVFQgc3VwcG9ydCBmb3IgYmV0dGVyIGludGVncmF0aW9uIHdpdGggQVZGb3VuZGF0aW9uIGVu
Z2luZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5
NzQ5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjIxNTcwMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXZpc2UgdGhlIHBsYXRmb3JtIGhhbmRs
aW5nIG9mIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzIHNvIHRoYXQgd2UgY2FuIGtlZXAgQVZGb3Vu
ZGF0aW9uCisgICAgICAgIGluZm9ybWVkIG9mIHRyYWNrIHNlbGVjdGlvbnMgd2UgbWFrZS4gVXNl
IGEgZHVtbXkgb3V0LW9mLWJhbmQgY2hpbGQgb2YgdGhlIGV4aXN0aW5nIHRleHQKKyAgICAgICAg
dHJhY2sgY2xhc3NlcyB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3IE91dE9mQmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYuaCBmaWxlLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IE5v
dGlmeSBwbGF5ZXIgd2hlbiBPT0IgdHJhY2tzIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om91dE9mQmFuZFRyYWNrU291cmNlcyk6IEFsc28gcGFzcyB0cmFjayBt
b2RlIHRvIHBsYXRmb3JtIGJhY2tlbmQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpwbGF0Zm9ybVRleHRUcmFjayk6IEFs
c28gcGFzcyB0cmFjayBtb2RlIHRvIGNvbnN0cnVjdG9yLgorICAgICAgICAqIGh0bWwvdHJhY2sv
VHJhY2tCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6VHJhY2tCYXNlKTog
TW92ZSBvd25lcnNoaXAgb2YgdHJhY2sgdW5pcXVlIGlkZW50aWZpZXIgdG8gdGhpcyBiYXNlIGNs
YXNzLgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tCYXNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFja0Jhc2U6OnVuaXF1ZUlkKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5vdGlm
eVRyYWNrTW9kZUNoYW5nZWQpOiBBZGRlZCBzdHViIHRvIHBhc3MgbWVzc2FnZSB0byBwbGF0Zm9y
bSBwbGF5ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6bm90aWZ5VHJhY2tNb2RlQ2hh
bmdlZCk6IFN0dWIgZm9yIG1vc3QgcGxhdGZvcm1zLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtVGV4dFRyYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRU
cmFjazo6Y3JlYXRlKTogVXBkYXRlIGZvciByZXZpc2VkIGNvbnN0cnVjdG9yICh3aXRoICdtb2Rl
JyBhcmd1bWVudCkuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFjazo6Y3JlYXRl
T3V0T2ZCYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFjazo6
bW9kZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UZXh0VHJhY2s6OmNhcHRp
b25NZW51T2ZmSXRlbSk6IFVzZSByZXZpc2VkIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy4KKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0p
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrOjpQbGF0Zm9ybVRl
eHRUcmFjayk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmg6IENoYW5nZSBwcmVkaWNhdGUgdG8gcmV0dXJu
IGVudW0gaW5kaWNhdGluZyB0aGUgY2F0ZWdvcnkKKyAgICAgICAgb2YgdHJhY2sgKG91dC1vZi1i
YW5kLCBsZWdhY3kgY2xvc2VkIGNhcHRpb24sIG9yIGluIGJhbmQpLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bm90
aWZ5VHJhY2tNb2RlQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oOiBPdmVycmlkZSBw
cmVkaWNhdGUgdG8gcmV0dXJuIGNhdGVnb3J5IGVudW0uCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaDog
T3ZlcnJpZGUgcHJlZGljYXRlIHRvIHJldHVybiBjYXRlZ29yeSBlbnVtLgorICAgICAgICB0aGF0
IHRoaXMgaXMgTk9UIGFuIG91dC1vZi1iYW5kIHRyYWNrLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZP
YmpDLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCk6IEFkZGVkIGltcGxlbWVudGF0aW9u
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
cHJvY2Vzc01lZGlhU2VsZWN0aW9uT3B0aW9ucyk6IFJldmlzZSB0byBoYW5kbGUgb3V0LW9mLWJh
bmQKKyAgICAgICAgdHJhY2sgcGxhY2Vob2xkZXJzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Q3VycmVudFRyYWNrKTogTW9kaWZ5IHRv
IGluZm9ybSBBVkZvdW5kYXRpb24gYWJvdXQgYW55CisgICAgICAgIG91dC1vZi1iYW5kIHRyYWNr
cyB3ZSd2ZSBzZWxlY3RlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnN5bmNocm9uaXplVGV4dFRyYWNrU3RhdGUpOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6T3V0T2ZCYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok91dE9mQmFuZFRleHRU
cmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUpOgorICAgICAgICAoV2ViQ29yZTo6T3V0T2ZCYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRjo6cmVzZXRDdWVWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
T3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6bWVkaWFTZWxlY3Rpb25PcHRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6T3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6T3V0T2ZCYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRik6CisgICAgICAgIChXZWJDb3JlOjpPdXRPZkJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvaW9zL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZJT1MuaDogT3ZlcnJpZGUgcHJlZGlj
YXRlIHRvIGluZGljYXRlCisgICAgICAgIHRoYXQgdGhpcyBpcyBOT1QgYW4gb3V0LW9mLWJhbmQg
dHJhY2suCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL01lZGlhUGxheWVyUHJpdmF0
ZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUlPUzo6c2V0U2Vs
ZWN0ZWRUZXh0VHJhY2spOiBDb3JyZWN0IHR5cG8gaW4gbG9nZ2luZyB0ZXh0LgorCiAyMDE0LTAz
LTA1ICBSYWR1IFN0YXZpbGEgIDxzdGF2aWxhQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIFJl
Z2lvbnNdIFNjcm9sbGFibGUgcmVnaW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY1MTMwKQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjczLDYgKzIyNzMsNyBAQAogCQk3QTI0NTg3QjEwMjFFQUY0MDAwQTAwQUEgLyog
SW5zcGVjdG9yRE9NQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0EyNDU4NzkxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50
LmNwcCAqLzsgfTsKIAkJN0EyNDU4N0MxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFn
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTI0
NTg3QTEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QTI5QkE2QTE4N0I3QzFEMDBG
MjlDRUIgLyogVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTI5QkE2OTE4N0I3ODFDMDBGMjlDRUIgLyogVGVt
cG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAgKi87IH07CisJCTdBMjlGNTcyMThDNjk1MTQwMDREMEY4
MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTI5RjU3MTE4QzY5NTE0MDA0RDBGODEgLyogT3V0
T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovOyB9OwogCQk3QTU0ODU3RjE0RTAyRDUxMDA2
QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QTU0ODU3RDE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9y
SGlzdG9yeS5jcHAgKi87IH07CiAJCTdBNTQ4NTgwMTRFMDJENTEwMDZBRTA1QSAvKiBJbnNwZWN0
b3JIaXN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QTU0ODU3RTE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5oICovOyB9Owog
CQk3QTU0ODgxNzE0RTQzMkExMDA2QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTU0ODgxNTE0RTQzMkExMDA2
QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0LmggKi87IH07CkBAIC05MjQ2LDYgKzkyNDcsNyBAQAog
CQk3QTI0NTg3QTEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRE9NQWdlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EyOUJBNjcxODdCNzMyMjAwRjI5Q0VCIC8qIFRlbXBvcmFy
eU9wZW5HTFNldHRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9y
YXJ5T3BlbkdMU2V0dGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTI5QkE2
OTE4N0I3ODFDMDBGMjlDRUIgLyogVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0EyOUY1NzExOEM2OTUxNDAwNEQwRjgxIC8q
IE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOyBwYXRoID0gb2JqYy9PdXRP
ZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdBNTQ4NTdEMTRFMDJENTEwMDZBRTA1QSAvKiBJbnNwZWN0b3JIaXN0b3J5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckhpc3RvcnkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTU0ODU3RTE0RTAyRDUxMDA2QUUwNUEgLyogSW5z
cGVjdG9ySGlzdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JIaXN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNTQ4ODE1MTRFNDMy
QTEwMDZBRTA1QSAvKiBET01QYXRjaFN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NUGF0Y2hTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMTA4Nyw2ICsyMTA4OSw3IEBACiAJCURGOUFGRDZGMTNGQzMxQjAwMDE1RkVCNyAvKiBvYmpj
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3QTI5RjU3
MTE4QzY5NTE0MDA0RDBGODEgLyogT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovLAog
CQkJCUNERTNBODU2MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMu
aCAqLywKIAkJCQlDREUzQTg1NTE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDLm1tICovLAogCQkJCUNENTRBNzYwMTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAgKi8sCkBAIC0yNDY5NCw2ICsyNDY5Nyw3IEBA
CiAJCQkJNDE1N0FGODAxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RBQjZEMjkxN0M3REU2QzAwQzYwQjM0IC8qIE1lZGlhQ29udHJv
bHNIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAwNDE4MUYwNTlDMDBGMkI0MjQgLyog
TWVkaWFEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0EyOUY1NzIxOEM2OTUxNDAw
NEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3MjA1QUI4MTIzOTI5MTAwMEIxNzM4MCAvKiBNZWRpYURvY3VtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDZGMjUyRDEzRjVFRjBFMDA2NTE2NUYgLyogTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNBRDBDRDYzMzEwMDBGQURBNzUg
LyogTWVkaWFFcnJvci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2NTEzMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OTcsNiArMTU5
NywxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuCiAKICAgICBp
ZiAobV90ZXh0VHJhY2tzICYmIG1fdGV4dFRyYWNrcy0+Y29udGFpbnModHJhY2spKQogICAgICAg
ICBtX3RleHRUcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKKworI2lmIEVOQUJMRShBVkZf
Q0FQVElPTlMpCisgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OlRyYWNr
RWxlbWVudCAmJiBtX3BsYXllcikKKyAgICAgICAgbV9wbGF5ZXItPm5vdGlmeVRyYWNrTW9kZUNo
YW5nZWQoKTsKKyNlbmRpZgogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tT
ZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayogdHJhY2spCkBAIC01NTM4LDggKzU1NDMsNiBAQCBT
dHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJVc2VyCiAjaWYgRU5BQkxFKEFWRl9D
QVBUSU9OUykKIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiBIVE1MTWVkaWFFbGVt
ZW50OjpvdXRPZkJhbmRUcmFja1NvdXJjZXMoKQogewotICAgIHN0YXRpYyBpbnQgdW5pcXVlSWQg
PSAwOwotCiAgICAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4+IG91dE9mQmFuZFRy
YWNrU291cmNlczsKICAgICBmb3IgKGF1dG8mIHRyYWNrRWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBl
PEhUTUxUcmFja0VsZW1lbnQ+KCp0aGlzKSkgewogICAgICAgICAKQEAgLTU1NTMsMTkgKzU1NTYs
MjkgQEAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4+IEhUTUxNZQogICAgICAgICBp
ZiAoIWRvY3VtZW50KCkuY29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93TWVkaWFGcm9tU291
cmNlKHVybCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBQbGF0Zm9ybVRleHRU
cmFjazo6VHJhY2tLaW5kIHBsYXRmb3JtS2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpDYXB0aW9u
OworICAgICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIHBsYXRmb3JtS2luZCA9IElu
YmFuZFRleHRUcmFja1ByaXZhdGU6OkNhcHRpb25zOwogICAgICAgICBpZiAodHJhY2tFbGVtZW50
LmtpbmQoKSA9PSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpKQotICAgICAgICAgICAgcGxh
dGZvcm1LaW5kID0gUGxhdGZvcm1UZXh0VHJhY2s6OkNhcHRpb247CisgICAgICAgICAgICBwbGF0
Zm9ybUtpbmQgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDYXB0aW9uczsKICAgICAgICAgZWxz
ZSBpZiAodHJhY2tFbGVtZW50LmtpbmQoKSA9PSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQo
KSkKLSAgICAgICAgICAgIHBsYXRmb3JtS2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpTdWJ0aXRs
ZTsKKyAgICAgICAgICAgIHBsYXRmb3JtS2luZCA9IEluYmFuZFRleHRUcmFja1ByaXZhdGU6OlN1
YnRpdGxlczsKICAgICAgICAgZWxzZSBpZiAodHJhY2tFbGVtZW50LmtpbmQoKSA9PSBUZXh0VHJh
Y2s6OmRlc2NyaXB0aW9uc0tleXdvcmQoKSkKLSAgICAgICAgICAgIHBsYXRmb3JtS2luZCA9IFBs
YXRmb3JtVGV4dFRyYWNrOjpEZXNjcmlwdGlvbjsKKyAgICAgICAgICAgIHBsYXRmb3JtS2luZCA9
IEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkRlc2NyaXB0aW9uczsKICAgICAgICAgZWxzZSBpZiAo
dHJhY2tFbGVtZW50LmtpbmQoKSA9PSBUZXh0VHJhY2s6OmZvcmNlZEtleXdvcmQoKSkKLSAgICAg
ICAgICAgIHBsYXRmb3JtS2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpGb3JjZWQ7CisgICAgICAg
ICAgICBwbGF0Zm9ybUtpbmQgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpGb3JjZWQ7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIG91dE9mQmFuZFRyYWNr
U291cmNlcy5hcHBlbmQoUGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0ZU91dE9mQmFuZCh0cmFja0Vs
ZW1lbnQubGFiZWwoKSwgdHJhY2tFbGVtZW50LnNyY2xhbmcoKSwgdXJsLnN0cmluZygpLCBwbGF0
Zm9ybUtpbmQsICsrdW5pcXVlSWQsIHRyYWNrRWxlbWVudC5pc0RlZmF1bHQoKSkpOworICAgICAg
ICAKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlID0gdHJhY2tFbGVtZW50LnRyYWNr
KCktPm1vZGUoKTsKKyAgICAgICAgCisgICAgICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGU6Ok1v
ZGUgcGxhdGZvcm1Nb2RlID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6RGlzYWJsZWQ7CisgICAg
ICAgIGlmIChUZXh0VHJhY2s6OmhpZGRlbktleXdvcmQoKSA9PSBtb2RlKQorICAgICAgICAgICAg
cGxhdGZvcm1Nb2RlID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6SGlkZGVuOworICAgICAgICBl
bHNlIGlmIChUZXh0VHJhY2s6OmRpc2FibGVkS2V5d29yZCgpID09IG1vZGUpCisgICAgICAgICAg
ICBwbGF0Zm9ybU1vZGUgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpEaXNhYmxlZDsKKyAgICAg
ICAgZWxzZSBpZiAoVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpID09IG1vZGUpCisgICAgICAg
ICAgICBwbGF0Zm9ybU1vZGUgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpTaG93aW5nOworICAg
ICAgICAKKyAgICAgICAgb3V0T2ZCYW5kVHJhY2tTb3VyY2VzLmFwcGVuZChQbGF0Zm9ybVRleHRU
cmFjazo6Y3JlYXRlT3V0T2ZCYW5kKHRyYWNrRWxlbWVudC5sYWJlbCgpLCB0cmFja0VsZW1lbnQu
c3JjbGFuZygpLCB1cmwuc3RyaW5nKCksIHBsYXRmb3JtTW9kZSwgcGxhdGZvcm1LaW5kLCB0cmFj
a0VsZW1lbnQudHJhY2soKS0+dW5pcXVlSWQoKSwgdHJhY2tFbGVtZW50LmlzRGVmYXVsdCgpKSk7
CiAgICAgfQogICAgIAogICAgIHJldHVybiBvdXRPZkJhbmRUcmFja1NvdXJjZXM7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCShyZXZpc2lvbiAxNjUxMzApCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
NCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQpAQCAtNTUwLDI0ICs1NTAsMjIgQEAgYm9vbCBUZXh0VHJhY2s6Omhhc0N1
ZShWVFRDdWUqIGN1ZSwgVlRUQwogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCiBQ
YXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBUZXh0VHJhY2s6OnBsYXRmb3JtVGV4dFRyYWNr
KCkKIHsKLSAgICBzdGF0aWMgaW50IHVuaXF1ZUlkID0gMDsKLQogICAgIGlmIChtX3BsYXRmb3Jt
VGV4dFRyYWNrKQogICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybVRleHRUcmFjazsKIAotICAgIFBs
YXRmb3JtVGV4dFRyYWNrOjpUcmFja0tpbmQgcGxhdGZvcm1LaW5kID0gUGxhdGZvcm1UZXh0VHJh
Y2s6OkNhcHRpb247CisgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBwbGF0Zm9ybUtp
bmQgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDYXB0aW9uczsKICAgICBpZiAoa2luZCgpID09
IHN1YnRpdGxlc0tleXdvcmQoKSkKLSAgICAgICAgcGxhdGZvcm1LaW5kID0gUGxhdGZvcm1UZXh0
VHJhY2s6OlN1YnRpdGxlOworICAgICAgICBwbGF0Zm9ybUtpbmQgPSBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlOjpTdWJ0aXRsZXM7CiAgICAgZWxzZSBpZiAoa2luZCgpID09IGNhcHRpb25zS2V5d29y
ZCgpKQotICAgICAgICBwbGF0Zm9ybUtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6Q2FwdGlvbjsK
KyAgICAgICAgcGxhdGZvcm1LaW5kID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q2FwdGlvbnM7
CiAgICAgZWxzZSBpZiAoa2luZCgpID09IGRlc2NyaXB0aW9uc0tleXdvcmQoKSkKLSAgICAgICAg
cGxhdGZvcm1LaW5kID0gUGxhdGZvcm1UZXh0VHJhY2s6OkRlc2NyaXB0aW9uOworICAgICAgICBw
bGF0Zm9ybUtpbmQgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpEZXNjcmlwdGlvbnM7CiAgICAg
ZWxzZSBpZiAoa2luZCgpID09IGNoYXB0ZXJzS2V5d29yZCgpKQotICAgICAgICBwbGF0Zm9ybUtp
bmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6Q2hhcHRlcjsKKyAgICAgICAgcGxhdGZvcm1LaW5kID0g
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q2hhcHRlcnM7CiAgICAgZWxzZSBpZiAoa2luZCgpID09
IG1ldGFkYXRhS2V5d29yZCgpKQotICAgICAgICBwbGF0Zm9ybUtpbmQgPSBQbGF0Zm9ybVRleHRU
cmFjazo6TWV0YURhdGE7CisgICAgICAgIHBsYXRmb3JtS2luZCA9IEluYmFuZFRleHRUcmFja1By
aXZhdGU6Ok1ldGFkYXRhOwogICAgIGVsc2UgaWYgKGtpbmQoKSA9PSBmb3JjZWRLZXl3b3JkKCkp
Ci0gICAgICAgIHBsYXRmb3JtS2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpGb3JjZWQ7CisgICAg
ICAgIHBsYXRmb3JtS2luZCA9IEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkZvcmNlZDsKIAogICAg
IFBsYXRmb3JtVGV4dFRyYWNrOjpUcmFja1R5cGUgdHlwZSA9IFBsYXRmb3JtVGV4dFRyYWNrOjpP
dXRPZkJhbmQ7CiAgICAgaWYgKG1fdHJhY2tUeXBlID09IFRyYWNrRWxlbWVudCkKQEAgLTU3Nyw3
ICs1NzUsMTUgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gVGV4dFRyYWNrOgogICAg
IGVsc2UgaWYgKG1fdHJhY2tUeXBlID09IEluQmFuZCkKICAgICAgICAgdHlwZSA9IFBsYXRmb3Jt
VGV4dFRyYWNrOjpJbkJhbmQ7CiAKLSAgICBtX3BsYXRmb3JtVGV4dFRyYWNrID0gUGxhdGZvcm1U
ZXh0VHJhY2s6OmNyZWF0ZSh0aGlzLCBsYWJlbCgpLCBsYW5ndWFnZSgpLCBwbGF0Zm9ybUtpbmQs
IHR5cGUsICsrdW5pcXVlSWQpOworICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGU6Ok1vZGUgcGxh
dGZvcm1Nb2RlID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6RGlzYWJsZWQ7CisgICAgaWYgKFRl
eHRUcmFjazo6aGlkZGVuS2V5d29yZCgpID09IG1vZGUoKSkKKyAgICAgICAgcGxhdGZvcm1Nb2Rl
ID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6SGlkZGVuOworICAgIGVsc2UgaWYgKFRleHRUcmFj
azo6ZGlzYWJsZWRLZXl3b3JkKCkgPT0gbW9kZSgpKQorICAgICAgICBwbGF0Zm9ybU1vZGUgPSBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlOjpEaXNhYmxlZDsKKyAgICBlbHNlIGlmIChUZXh0VHJhY2s6
OnNob3dpbmdLZXl3b3JkKCkgPT0gbW9kZSgpKQorICAgICAgICBwbGF0Zm9ybU1vZGUgPSBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlOjpTaG93aW5nOworCisgICAgbV9wbGF0Zm9ybVRleHRUcmFjayA9
IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUodGhpcywgbGFiZWwoKSwgbGFuZ3VhZ2UoKSwgcGxh
dGZvcm1Nb2RlLCBwbGF0Zm9ybUtpbmQsIHR5cGUsIHVuaXF1ZUlkKCkpOwogCiAgICAgcmV0dXJu
IG1fcGxhdGZvcm1UZXh0VHJhY2s7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RyYWNrQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
cmFja0Jhc2UuY3BwCShyZXZpc2lvbiAxNjUxMzApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RyYWNrQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDExICszMiwxNCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBpbnQgc191bmlxdWVJZCA9IDA7CisKIFRyYWNr
QmFzZTo6VHJhY2tCYXNlKFR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSkKICAgICA6
IG1fbWVkaWFFbGVtZW50KDApCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICAsIG1fc291
cmNlQnVmZmVyKDApCiAjZW5kaWYKKyAgICAsIG1fdW5pcXVlSWQoKytzX3VuaXF1ZUlkKQogICAg
ICwgbV9pZChpZCkKICAgICAsIG1fbGFiZWwobGFiZWwpCiAgICAgLCBtX2xhbmd1YWdlKGxhbmd1
YWdlKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCShyZXZpc2lvbiAx
NjUxMzApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02Miw2ICs2Miw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckNsaWVudCgpID0gMDsKIAorICAgIHZpcnR1YWwgaW50IHVuaXF1ZUlkKCkgY29uc3QgeyByZXR1
cm4gbV91bmlxdWVJZDsgfQorCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBTb3VyY2VC
dWZmZXIqIHNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQnVmZmVyOyB9CiAg
ICAgdm9pZCBzZXRTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyKiBidWZmZXIpIHsgbV9zb3VyY2VC
dWZmZXIgPSBidWZmZXI7IH0KQEAgLTg1LDYgKzg3LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRl
OgogICAgIFR5cGUgbV90eXBlOworICAgIGludCBtX3VuaXF1ZUlkOwogICAgIEF0b21pY1N0cmlu
ZyBtX2lkOwogICAgIEF0b21pY1N0cmluZyBtX2tpbmQ7CiAgICAgQXRvbWljU3RyaW5nIG1fbGFi
ZWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCShyZXZpc2lvbiAxNjUxMzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNzIsNiArMTI3Miwx
MiBAQCB2b2lkIE1lZGlhUGxheWVyOjpzZXRUZXh0VHJhY2tSZXByZXNlbnRhCiB9CiAKICNpZiBF
TkFCTEUoQVZGX0NBUFRJT05TKQordm9pZCBNZWRpYVBsYXllcjo6bm90aWZ5VHJhY2tNb2RlQ2hh
bmdlZCgpCit7CisgICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAgbV9wcml2YXRlLT5ub3RpZnlU
cmFja01vZGVDaGFuZ2VkKCk7Cit9CisKIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+
PiBNZWRpYVBsYXllcjo6b3V0T2ZCYW5kVHJhY2tTb3VyY2VzKCkKIHsKICAgICBpZiAoIW1fbWVk
aWFQbGF5ZXJDbGllbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgJKHJldmlzaW9uIDE2NTEzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzNyw2ICs1
MzcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9u
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbiopOwogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCisgICAgdm9pZCBub3Rp
ZnlUcmFja01vZGVDaGFuZ2VkKCk7CiAgICAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFj
az4+IG91dE9mQmFuZFRyYWNrU291cmNlcygpOwogI2VuZGlmCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oCShyZXZpc2lvbiAxNjUxMzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllclByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNDcsNiArMjQ3LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcg
Y29ycnVwdGVkVmlkZW9GcmFtZXMoKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBkb3VibGUg
dG90YWxGcmFtZURlbGF5KCkgeyByZXR1cm4gMDsgfQogI2VuZGlmCisKKyNpZiBFTkFCTEUoQVZG
X0NBUFRJT05TKQorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlUcmFja01vZGVDaGFuZ2VkKCkgeyB9
CisjZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaAkocmV2aXNpb24gMTY1MTMwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDEzIEBACiAKICNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFD
S19NRU5VKSB8fCBFTkFCTEUoQVZGX0NBUFRJT05TKQogCisjaW5jbHVkZSAiSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dFRy
YWNrOwotY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKIAogY2xhc3MgUGxhdGZvcm1UZXh0
VHJhY2tDbGllbnQgewogcHVibGljOgpAQCAtNDYsMzQgKzQ2LDI3IEBAIHB1YmxpYzoKIAogY2xh
c3MgUGxhdGZvcm1UZXh0VHJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVRleHRUcmFj
az4gewogcHVibGljOgotICAgIGVudW0gVHJhY2tLaW5kIHsKLSAgICAgICAgU3VidGl0bGUgPSAw
LAotICAgICAgICBDYXB0aW9uID0gMSwKLSAgICAgICAgRGVzY3JpcHRpb24gPSAyLAotICAgICAg
ICBDaGFwdGVyID0gMywKLSAgICAgICAgTWV0YURhdGEgPSA0LAotICAgICAgICBGb3JjZWQgPSA1
LAotICAgIH07CiAgICAgZW51bSBUcmFja1R5cGUgewogICAgICAgICBJbkJhbmQgPSAwLAogICAg
ICAgICBPdXRPZkJhbmQgPSAxLAogICAgICAgICBTY3JpcHQgPSAyCiAgICAgfTsKLQotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBjcmVhdGUoUGxhdGZvcm1UZXh0VHJh
Y2tDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5n
dWFnZSwgVHJhY2tLaW5kIGtpbmQsIFRyYWNrVHlwZSB0eXBlLCBpbnQgdW5pcXVlSWQpCisgICAg
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+IGNyZWF0ZShQbGF0Zm9y
bVRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJp
bmcmIGxhbmd1YWdlLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpNb2RlIG1vZGUsIEluYmFuZFRl
eHRUcmFja1ByaXZhdGU6OktpbmQga2luZCwgVHJhY2tUeXBlIHR5cGUsIGludCB1bmlxdWVJZCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1UZXh0VHJhY2soY2xp
ZW50LCBsYWJlbCwgbGFuZ3VhZ2UsIFN0cmluZygpLCBraW5kLCB0eXBlLCB1bmlxdWVJZCwgZmFs
c2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGll
bnQsIGxhYmVsLCBsYW5ndWFnZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlk
LCBmYWxzZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRy
YWNrPiBjcmVhdGVPdXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBs
YW5ndWFnZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrS2luZCBraW5kLCBpbnQgdW5pcXVlSWQs
IGJvb2wgaXNEZWZhdWx0KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNr
PiBjcmVhdGVPdXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5n
dWFnZSwgY29uc3QgU3RyaW5nJiB1cmwsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6Ok1vZGUgbW9k
ZSwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBraW5kLCBpbnQgdW5pcXVlSWQsIGJvb2wg
aXNEZWZhdWx0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVRl
eHRUcmFjayhudWxscHRyLCBsYWJlbCwgbGFuZ3VhZ2UsIHVybCwga2luZCwgT3V0T2ZCYW5kLCB1
bmlxdWVJZCwgaXNEZWZhdWx0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZv
cm1UZXh0VHJhY2sobnVsbHB0ciwgbGFiZWwsIGxhbmd1YWdlLCB1cmwsIG1vZGUsIGtpbmQsIE91
dE9mQmFuZCwgdW5pcXVlSWQsIGlzRGVmYXVsdCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflBs
YXRmb3JtVGV4dFRyYWNrKCkgeyB9CiAgICAgCiAgICAgVHJhY2tUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KLSAgICBUcmFja0tpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1f
a2luZDsgfQorICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQga2luZCgpIGNvbnN0IHsg
cmV0dXJuIG1fa2luZDsgfQorICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGU6Ok1vZGUgbW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgIGNvbnN0IFN0cmluZyYgbGFiZWwoKSBjb25z
dCB7IHJldHVybiBtX2xhYmVsOyB9CiAgICAgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbGFuZ3VhZ2U7IH0KICAgICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsOyB9CkBAIC04MywyMSArNzYsMjIgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IFBsYXRmb3JtVGV4dFRyYWNrKiBjYXB0aW9uTWVudU9mZkl0ZW0oKQogICAgIHsKLSAgICAgICAg
c3RhdGljIFBsYXRmb3JtVGV4dFRyYWNrKiBvZmYgPSBQbGF0Zm9ybVRleHRUcmFjazo6Y3JlYXRl
KG51bGxwdHIsICJvZmYgbWVudSBpdGVtIiwgIiIsIFN1YnRpdGxlLCBJbkJhbmQsIDApLmxlYWtS
ZWYoKTsKKyAgICAgICAgc3RhdGljIFBsYXRmb3JtVGV4dFRyYWNrKiBvZmYgPSBQbGF0Zm9ybVRl
eHRUcmFjazo6Y3JlYXRlKG51bGxwdHIsICJvZmYgbWVudSBpdGVtIiwgIiIsIEluYmFuZFRleHRU
cmFja1ByaXZhdGU6OlNob3dpbmcsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OlN1YnRpdGxlcywg
SW5CYW5kLCAwKS5sZWFrUmVmKCk7CiAgICAgICAgIHJldHVybiBvZmY7CiAgICAgfQogCiAgICAg
c3RhdGljIFBsYXRmb3JtVGV4dFRyYWNrKiBjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKQogICAg
IHsKLSAgICAgICAgc3RhdGljIFBsYXRmb3JtVGV4dFRyYWNrKiBhdXRvbWF0aWMgPSBQbGF0Zm9y
bVRleHRUcmFjazo6Y3JlYXRlKG51bGxwdHIsICJhdXRvbWF0aWMgbWVudSBpdGVtIiwgIiIsIFN1
YnRpdGxlLCBJbkJhbmQsIDApLmxlYWtSZWYoKTsKKyAgICAgICAgc3RhdGljIFBsYXRmb3JtVGV4
dFRyYWNrKiBhdXRvbWF0aWMgPSBQbGF0Zm9ybVRleHRUcmFjazo6Y3JlYXRlKG51bGxwdHIsICJh
dXRvbWF0aWMgbWVudSBpdGVtIiwgIiIsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OlNob3dpbmcs
IEluYmFuZFRleHRUcmFja1ByaXZhdGU6OlN1YnRpdGxlcywgSW5CYW5kLCAwKS5sZWFrUmVmKCk7
CiAgICAgICAgIHJldHVybiBhdXRvbWF0aWM7CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUGxh
dGZvcm1UZXh0VHJhY2soUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRy
YWNrS2luZCBraW5kLCBUcmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVs
dCkKKyAgICBQbGF0Zm9ybVRleHRUcmFjayhQbGF0Zm9ybVRleHRUcmFja0NsaWVudCogY2xpZW50
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBTdHJp
bmcmIHVybCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6TW9kZSBtb2RlLCBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlOjpLaW5kIGtpbmQsIFRyYWNrVHlwZSB0eXBlLCBpbnQgdW5pcXVlSWQsIGJvb2wg
aXNEZWZhdWx0KQogICAgICAgICA6IG1fbGFiZWwobGFiZWwpCiAgICAgICAgICwgbV9sYW5ndWFn
ZShsYW5ndWFnZSkKICAgICAgICAgLCBtX3VybCh1cmwpCisgICAgICAgICwgbV9tb2RlKG1vZGUp
CiAgICAgICAgICwgbV9raW5kKGtpbmQpCiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgICAg
ICwgbV9jbGllbnQoY2xpZW50KQpAQCAtMTA5LDcgKzEwMyw4IEBAIHByb3RlY3RlZDoKICAgICBT
dHJpbmcgbV9sYWJlbDsKICAgICBTdHJpbmcgbV9sYW5ndWFnZTsKICAgICBTdHJpbmcgbV91cmw7
Ci0gICAgVHJhY2tLaW5kIG1fa2luZDsKKyAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpNb2Rl
IG1fbW9kZTsKKyAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIG1fa2luZDsKICAgICBU
cmFja1R5cGUgbV90eXBlOwogICAgIFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50KiBtX2NsaWVudDsK
ICAgICBpbnQgbV91bmlxdWVJZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkYuaAkocmV2aXNpb24gMTY1MTMwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01NSwxNSArNTUsMjAgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzQmVlblJlcG9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9oYXNCZWVuUmVwb3J0ZWQ7IH0KICAg
ICB2b2lkIHNldEhhc0JlZW5SZXBvcnRlZChib29sIHJlcG9ydGVkKSB7IG1faGFzQmVlblJlcG9y
dGVkID0gcmVwb3J0ZWQ7IH0KIAotICAgIHZvaWQgcHJvY2Vzc0N1ZShDRkFycmF5UmVmLCBkb3Vi
bGUpOwotICAgIHZvaWQgcmVzZXRDdWVWYWx1ZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vz
c0N1ZShDRkFycmF5UmVmLCBkb3VibGUpOworICAgIHZpcnR1YWwgdm9pZCByZXNldEN1ZVZhbHVl
cygpOwogCiAgICAgdm9pZCBiZWdpblNlZWtpbmcoKTsKICAgICB2b2lkIGVuZFNlZWtpbmcoKSB7
IG1fc2Vla2luZyA9IGZhbHNlOyB9CiAgICAgYm9vbCBzZWVraW5nKCkgY29uc3QgeyByZXR1cm4g
bV9zZWVraW5nOyB9CiAgICAgCi0gICAgdmlydHVhbCBib29sIGlzTGVnYWN5Q2xvc2VkQ2FwdGlv
bnNUcmFjaygpIGNvbnN0ID0gMDsKLQorICAgIGVudW0gQ2F0ZWdvcnkgeworICAgICAgICBMZWdh
Y3lDbG9zZWRDYXB0aW9uLAorICAgICAgICBPdXRPZkJhbmQsCisgICAgICAgIEluQmFuZAorICAg
IH07CisgICAgdmlydHVhbCBDYXRlZ29yeSB0ZXh0VHJhY2tDYXRlZ29yeSgpIGNvbnN0ID0gMDsK
KyAgICAKIHByb3RlY3RlZDoKICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKEFWRkluYmFu
ZFRyYWNrUGFyZW50Kik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCShyZXZpc2lvbiAxNjUxMzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05MDcsNiArOTA3LDEwIEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpkaXMKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpjb25maWd1cmVJbmJhbmRUcmFja3MoKQogewogICAgIFJl
ZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiB0cmFja1RvRW5hYmxlOworICAgIAorI2lm
IEVOQUJMRShBVkZfQ0FQVElPTlMpCisgICAgc3luY2hyb25pemVUZXh0VHJhY2tTdGF0ZSgpOwor
I2VuZGlmCiAKICAgICAvLyBBVkZvdW5kYXRpb24gY2FuIG9ubHkgZW1pdCBjdWVzIGZvciBvbmUg
dHJhY2sgYXQgYSB0aW1lLCBzbyBlbmFibGUgdGhlIGZpcnN0IHRyYWNrIHRoYXQgaXMgc2hvd2lu
Zywgb3IgdGhlIGZpcnN0IHRoYXQKICAgICAvLyBpcyBoaWRkZW4gaWYgbm9uZSBhcmUgc2hvd2lu
Zy4gT3RoZXJ3aXNlIGRpc2FibGUgYWxsIHRyYWNrcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgJKHJldmlzaW9uIDE2NTEz
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OTQsNiArMjk0LDEwIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHNpemVfdCBleHRyYU1lbW9y
eUNvc3QoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCB0cmFja01vZGVDaGFu
Z2VkKCkgb3ZlcnJpZGU7CisjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKKyAgICB2aXJ0dWFsIHZv
aWQgbm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVRleHRUcmFja1N0YXRlKCkgeyB9CisjZW5kaWYKICAgICB2b2lkIHByb2Nlc3NOZXdBbmRS
ZW1vdmVkVGV4dFRyYWNrcyhjb25zdCBWZWN0b3I8UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkY+PiYpOwogICAgIHZvaWQgY2xlYXJUZXh0VHJhY2tzKCk7CiAgICAgVmVjdG9yPFJlZlB0
cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPj4gbV90ZXh0VHJhY2tzOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkNGLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgJKHJldmlz
aW9uIDE2NTEzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDcg
KzU1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2soKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgQ2F0ZWdvcnkgdGV4dFRy
YWNrQ2F0ZWdvcnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbkJhbmQ7IH0KIAogICAgIEFW
Q0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZiBtZWRpYVNlbGVjdGlvbk9wdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fbWVkaWFTZWxlY3Rpb25PcHRpb24uZ2V0KCk7IH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRk9iakMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5o
CShyZXZpc2lvbiAxNjUxMzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRp
c2Nvbm5lY3QoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0xlZ2FjeUNsb3NlZENh
cHRpb25zVHJhY2soKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCisgICAgdmly
dHVhbCBDYXRlZ29yeSB0ZXh0VHJhY2tDYXRlZ29yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IEluQmFuZDsgfQorICAgIAogICAgIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKm1lZGlhU2VsZWN0
aW9uT3B0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVNlbGVjdGlvbk9wdGlvbi5nZXQoKTsg
fQogCiBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmgJKHJldmlzaW9uIDE2
NTEzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NTYsOCArNTYsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQorICAgIHZpcnR1YWwgQ2F0ZWdvcnkg
dGV4dFRyYWNrQ2F0ZWdvcnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBMZWdhY3lDbG9zZWRD
YXB0aW9uOyB9CisgICAgCiAgICAgQVZQbGF5ZXJJdGVtVHJhY2sgKmF2UGxheWVySXRlbVRyYWNr
KCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXJJdGVtVHJhY2suZ2V0KCk7IH0KIAogcHJvdGVjdGVk
OgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAkocmV2aXNpb24gMTY1MTMwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNiw3
ICsxMTYsMTIgQEAgcHVibGljOgogI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKICAgICB2b2lkIHBs
YXliYWNrVGFyZ2V0SXNXaXJlbGVzc0RpZENoYW5nZSgpOwogI2VuZGlmCi0KKyAgICAKKyNpZiBF
TkFCTEUoQVZGX0NBUFRJT05TKQorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlUcmFja01vZGVDaGFu
Z2VkKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplVGV4dFRyYWNrU3Rh
dGUoKSBvdmVycmlkZTsKKyNlbmRpZgorICAgIAogICAgIFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQz4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZh
Y3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0JKHJldmlzaW9uIDE2NTEzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dENHLmgiCiAjaW1wb3J0ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oIgog
I2ltcG9ydCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCIKKyNpbXBvcnQg
Ik91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCIKICNpbXBvcnQgIlVSTC5oIgogI2ltcG9y
dCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCkBAIC04Myw3ICs4
NCw4IEBACiAvLyBOb3RlOiBUaGlzIG11c3QgYmUgZGVmaW5lZCBiZWZvcmUgb3VyIFNPRlRfTElO
SyBtYWNyb3M6CiBAY2xhc3MgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbjsKIEBpbnRlcmZhY2UgQVZN
ZWRpYVNlbGVjdGlvbk9wdGlvbiAoT3V0T2ZCYW5kRXh0ZW5zaW9ucykKLUBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKm91dE9mQmFuZFNvdXJjZSAvKk5TX0FWQUlMQUJM
RShUQkQsIFRCRCkqLzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcq
IG91dE9mQmFuZFNvdXJjZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJp
bmcqIG91dE9mQmFuZElkZW50aWZpZXI7CiBAZW5kCiAjZW5kaWYKIApAQCAtNTE1LDMwICs1MTcs
NTggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogfQogCiAjaWYg
RU5BQkxFKEFWRl9DQVBUSU9OUykKLXN0YXRpYyBjb25zdCBOU0FycmF5KiBtZWRpYURlc2NyaXB0
aW9uRm9yS2luZChQbGF0Zm9ybVRleHRUcmFjazo6VHJhY2tLaW5kIGtpbmQpCitzdGF0aWMgY29u
c3QgTlNBcnJheSogbWVkaWFEZXNjcmlwdGlvbkZvcktpbmQoSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZTo6S2luZCBraW5kKQogewogICAgIC8vIEZJWE1FOiBNYXRjaCB0aGVzZSB0byBjb3JyZWN0IHR5
cGVzOgotICAgIGlmIChraW5kID09IFBsYXRmb3JtVGV4dFRyYWNrOjpDYXB0aW9uKQorICAgIGlm
IChraW5kID09IEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkNhcHRpb25zKQogICAgICAgICByZXR1
cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNj
cmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBuaWxdOwogCi0gICAgaWYgKGtpbmQg
PT0gUGxhdGZvcm1UZXh0VHJhY2s6OlN1YnRpdGxlKQorICAgIGlmIChraW5kID09IEluYmFuZFRl
eHRUcmFja1ByaXZhdGU6OlN1YnRpdGxlcykKICAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5
V2l0aE9iamVjdHM6IEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9n
Rm9yQWNjZXNzaWJpbGl0eSwgbmlsXTsKIAotICAgIGlmIChraW5kID09IFBsYXRmb3JtVGV4dFRy
YWNrOjpEZXNjcmlwdGlvbikKKyAgICBpZiAoa2luZCA9PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
OjpEZXNjcmlwdGlvbnMpCiAgICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OiBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2li
aWxpdHksIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc011c2ljQW5kU291bmRGb3JBY2Nl
c3NpYmlsaXR5LCBuaWxdOwogCi0gICAgaWYgKGtpbmQgPT0gUGxhdGZvcm1UZXh0VHJhY2s6OkZv
cmNlZCkKKyAgICBpZiAoa2luZCA9PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpGb3JjZWQpCiAg
ICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOiBBVk1lZGlhQ2hhcmFjdGVy
aXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMsIG5pbF07CiAKICAgICByZXR1cm4gW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0czogQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNT
cG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBuaWxdOwogfQorICAgIAordm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpub3RpZnlUcmFja01vZGVDaGFuZ2VkKCkKK3sK
KyAgICB0cmFja01vZGVDaGFuZ2VkKCk7Cit9CisgICAgCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnN5bmNocm9uaXplVGV4dFRyYWNrU3RhdGUoKQoreworICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiYgb3V0T2ZCYW5kVHJhY2tTb3Vy
Y2VzID0gcGxheWVyKCktPm91dE9mQmFuZFRyYWNrU291cmNlcygpOworICAgIAorICAgIGZvciAo
YXV0byYgdGV4dFRyYWNrIDogbV90ZXh0VHJhY2tzKSB7CisgICAgICAgIGlmICh0ZXh0VHJhY2st
PnRleHRUcmFja0NhdGVnb3J5KCkgPT0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6T3V0T2ZC
YW5kKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBSZWZQdHI8T3V0
T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gdHJhY2tQcml2YXRlID0gc3RhdGljX2Nhc3Q8T3V0
T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRio+KHRleHRUcmFjay5nZXQoKSk7CisgICAgICAgIFJl
dGFpblB0cjxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uVHlwZT4gY3VycmVudE9wdGlvbiA9IHRyYWNr
UHJpdmF0ZS0+bWVkaWFTZWxlY3Rpb25PcHRpb24oKTsKKyAgICAgICAgCisgICAgICAgIGZvciAo
YXV0byYgdHJhY2sgOiBvdXRPZkJhbmRUcmFja1NvdXJjZXMpIHsKKyAgICAgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gdW5pcXVlSUQgPSBTdHJpbmc6Om51bWJlcih0cmFjay0+dW5pcXVl
SWQoKSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFb
W2N1cnJlbnRPcHRpb24uZ2V0KCkgb3V0T2ZCYW5kSWRlbnRpZmllcl0gaXNFcXVhbDogcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBOU1N0cmluZyo+KHVuaXF1ZUlELmdldCgpKV0pCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRleHRUcmFjay0+c2V0
TW9kZSh0cmFjay0+bW9kZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorfQogI2VuZGlmCi0KKyAgICAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBpZiAo
bV9hdkFzc2V0KQogICAgICAgICByZXR1cm47Ci0KKyAgICAKICAgICBMT0coTWVkaWEsICJNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKCVwKSIs
IHRoaXMpOwogCiAgICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CkBAIC0xNzQzLDcgKzE3NzMs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKICAgICAgICAg
Ym9vbCBuZXdDQ1RyYWNrID0gdHJ1ZTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVtb3Zl
ZFRleHRUcmFja3Muc2l6ZSgpOyBpID4gMDsgLS1pKSB7Ci0gICAgICAgICAgICBpZiAoIXJlbW92
ZWRUZXh0VHJhY2tzW2kgLSAxXS0+aXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkpCisgICAg
ICAgICAgICBpZiAoIXJlbW92ZWRUZXh0VHJhY2tzW2kgLSAxXS0+dGV4dFRyYWNrQ2F0ZWdvcnko
KSA9PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpMZWdhY3lDbG9zZWRDYXB0aW9uKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakM+IHRyYWNrID0gc3RhdGljX2Nhc3Q8SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMqPihtX3RleHRUcmFja3NbaSAtIDFdLmdldCgpKTsKQEAg
LTE3OTQsMTEgKzE4MjQsMjIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOgogICAgIGZvciAoQVZNZWRpYVNlbGVjdGlvbk9wdGlvblR5cGUgKm9wdGlvbiBpbiBsZWdp
YmxlT3B0aW9ucykgewogICAgICAgICBib29sIG5ld1RyYWNrID0gdHJ1ZTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gcmVtb3ZlZFRleHRUcmFja3Muc2l6ZSgpOyBpID4gMDsgLS1pKSB7Ci0g
ICAgICAgICAgICAgaWYgKHJlbW92ZWRUZXh0VHJhY2tzW2kgLSAxXS0+aXNMZWdhY3lDbG9zZWRD
YXB0aW9uc1RyYWNrKCkpCi0gICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAg
ICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM+IHRyYWNrID0gc3RhdGljX2Nh
c3Q8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMqPihyZW1vdmVkVGV4dFRyYWNrc1tpIC0g
MV0uZ2V0KCkpOwotICAgICAgICAgICAgaWYgKFt0cmFjay0+bWVkaWFTZWxlY3Rpb25PcHRpb24o
KSBpc0VxdWFsOm9wdGlvbl0pIHsKKyAgICAgICAgICAgIGlmIChyZW1vdmVkVGV4dFRyYWNrc1tp
IC0gMV0tPnRleHRUcmFja0NhdGVnb3J5KCkgPT0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6
TGVnYWN5Q2xvc2VkQ2FwdGlvbikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgUmV0YWluUHRyPEFWTWVkaWFTZWxlY3Rpb25PcHRpb25UeXBlPiBj
dXJyZW50T3B0aW9uOworI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCisgICAgICAgICAgICBpZiAo
cmVtb3ZlZFRleHRUcmFja3NbaSAtIDFdLT50ZXh0VHJhY2tDYXRlZ29yeSgpID09IEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY6Ok91dE9mQmFuZCkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxP
dXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiB0cmFjayA9IHN0YXRpY19jYXN0PE91dE9mQmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYqPihyZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0uZ2V0KCkpOwor
ICAgICAgICAgICAgICAgIGN1cnJlbnRPcHRpb24gPSB0cmFjay0+bWVkaWFTZWxlY3Rpb25PcHRp
b24oKTsKKyAgICAgICAgICAgIH0gZWxzZQorI2VuZGlmCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDPiB0cmFjayA9IHN0
YXRpY19jYXN0PEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDKj4ocmVtb3ZlZFRleHRUcmFj
a3NbaSAtIDFdLmdldCgpKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50T3B0aW9uID0gdHJhY2st
Pm1lZGlhU2VsZWN0aW9uT3B0aW9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChbY3VycmVudE9wdGlvbi5nZXQoKSBpc0VxdWFsOm9wdGlvbl0pIHsKICAg
ICAgICAgICAgICAgICByZW1vdmVkVGV4dFRyYWNrcy5yZW1vdmUoaSAtIDEpOwogICAgICAgICAg
ICAgICAgIG5ld1RyYWNrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xODA4
LDkgKzE4NDksMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgog
ICAgICAgICAgICAgY29udGludWU7CiAKICNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQotICAgICAg
ICAvLyBJZ25vcmUgb3V0LW9mLWJhbmQgdHJhY2tzIHRoYXQgd2UgcGFzc2VkIHRvIEFWRm91bmRh
dGlvbiBzbyB3ZSBkbyBub3QgZG91YmxlLWNvdW50IHRoZW0KLSAgICAgICAgaWYgKFtvcHRpb24g
b3V0T2ZCYW5kU291cmNlXSkKKyAgICAgICAgaWYgKFtvcHRpb24gb3V0T2ZCYW5kU291cmNlXSkg
eworICAgICAgICAgICAgbV90ZXh0VHJhY2tzLmFwcGVuZChPdXRPZkJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGOjpjcmVhdGUodGhpcywgb3B0aW9uKSk7CisgICAgICAgICAgICBtX3RleHRUcmFja3Mu
bGFzdCgpLT5zZXRIYXNCZWVuUmVwb3J0ZWQodHJ1ZSk7IC8vIElnbm9yZSBvdXQtb2YtYmFuZCB0
cmFja3MgdGhhdCB3ZSBwYXNzZWQgdG8gQVZGb3VuZGF0aW9uIHNvIHdlIGRvIG5vdCBkb3VibGUt
Y291bnQgdGhlbQogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICNlbmRpZgogCiAg
ICAgICAgIG1fdGV4dFRyYWNrcy5hcHBlbmQoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6
OmNyZWF0ZSh0aGlzLCBvcHRpb24pKTsKQEAgLTE4NDgsOSArMTg5MSwxMyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgbV9jdXJyZW50VHJhY2sgPSB0cmFj
azsKIAogICAgIGlmICh0cmFjaykgewotICAgICAgICBpZiAodHJhY2stPmlzTGVnYWN5Q2xvc2Vk
Q2FwdGlvbnNUcmFjaygpKQorICAgICAgICBpZiAodHJhY2stPnRleHRUcmFja0NhdGVnb3J5KCkg
PT0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6TGVnYWN5Q2xvc2VkQ2FwdGlvbikKICAgICAg
ICAgICAgIFttX2F2UGxheWVyLmdldCgpIHNldENsb3NlZENhcHRpb25EaXNwbGF5RW5hYmxlZDpZ
RVNdOwogI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKKyNpZiBF
TkFCTEUoQVZGX0NBUFRJT05TKQorICAgICAgICBlbHNlIGlmICh0cmFjay0+dGV4dFRyYWNrQ2F0
ZWdvcnkoKSA9PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpPdXRPZkJhbmQpCisgICAgICAg
ICAgICBbbV9hdlBsYXllckl0ZW0uZ2V0KCkgc2VsZWN0TWVkaWFPcHRpb246c3RhdGljX2Nhc3Q8
T3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRio+KHRyYWNrKS0+bWVkaWFTZWxlY3Rpb25PcHRp
b24oKSBpbk1lZGlhU2VsZWN0aW9uR3JvdXA6c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdp
YmxlTWVkaWEoKV07CisjZW5kaWYKICAgICAgICAgZWxzZQogICAgICAgICAgICAgW21fYXZQbGF5
ZXJJdGVtLmdldCgpIHNlbGVjdE1lZGlhT3B0aW9uOnN0YXRpY19jYXN0PEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkZPYmpDKj4odHJhY2spLT5tZWRpYVNlbGVjdGlvbk9wdGlvbigpIGluTWVkaWFT
ZWxlY3Rpb25Hcm91cDpzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgpXTsK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZh
dGVBVkYuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGX2gKKyNkZWZpbmUgT3V0T2ZCYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRl9oCisKKyNpZiBFTkFCTEUoVklERU8pICYmIChVU0UoQVZGT1VOREFU
SU9OKSB8fCBQTEFURk9STShJT1MpKSAmJiBFTkFCTEUoQVZGX0NBUFRJT05TKQorCisjaW5jbHVk
ZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgorCitPQkpDX0NMQVNTIEFWTWVkaWFTZWxl
Y3Rpb25PcHRpb247CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIE91dE9mQmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8T3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRj4gY3JlYXRlKEFWRkluYmFuZFRyYWNrUGFyZW50KiBwbGF5ZXIsICBBVk1lZGlhU2VsZWN0
aW9uT3B0aW9uKiBzZWxlY3Rpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYocGxheWVyLCBzZWxlY3Rpb24pKTsKKyAgICB9
CisgICAgCisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NDdWUoQ0ZBcnJheVJlZiwgZG91YmxlKSBv
dmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRDdWVWYWx1ZXMoKSBvdmVycmlkZSB7
IH0KKyAgICAKKyAgICB2aXJ0dWFsIENhdGVnb3J5IHRleHRUcmFja0NhdGVnb3J5KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gT3V0T2ZCYW5kOyB9CisgICAgCisgICAgQVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiogbWVkaWFTZWxlY3Rpb25PcHRpb24oKSBjb25zdCB7IHJldHVybiBtX21lZGlhU2Vs
ZWN0aW9uT3B0aW9uLmdldCgpOyB9CisgICAgCitwcm90ZWN0ZWQ6CisgICAgT3V0T2ZCYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRihBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVyLCBBVk1lZGlhU2Vs
ZWN0aW9uT3B0aW9uKiBzZWxlY3Rpb24pCisgICAgICAgIDogSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRihwbGF5ZXIpCisgICAgICAgICwgbV9tZWRpYVNlbGVjdGlvbk9wdGlvbihzZWxlY3Rpb24p
CisgICAgeworICAgIH0KKyAgICAKKyAgICBSZXRhaW5QdHI8QVZNZWRpYVNlbGVjdGlvbk9wdGlv
bj4gbV9tZWRpYVNlbGVjdGlvbk9wdGlvbjsKK307CisgICAgCit9CisKKyNlbmRpZgorCisjZW5k
aWYgLy8gT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRl9oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRklPUy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGSU9TLmgJKHJldmlzaW9uIDE2NTEzMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGSU9TLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBraW5kKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX25hbWU7IH0K
ICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fbGFuZ3VhZ2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNMZWdhY3lDbG9zZWRDYXB0aW9u
c1RyYWNrKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIENh
dGVnb3J5IHRleHRUcmFja0NhdGVnb3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW5CYW5k
OyB9CiAgICAgaW50IGludGVybmFsSUQoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsSUQ7IH0K
IAogcHJvdGVjdGVkOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9z
L01lZGlhUGxheWVyUHJpdmF0ZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pb3MvTWVkaWFQbGF5ZXJQcml2YXRlSU9TLm1tCShyZXZpc2lvbiAx
NjUxMzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvTWVkaWFQbGF5
ZXJQcml2YXRlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05ODQsNyArOTg0LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVJT1M6OnNldFNlbGVjdGVkVAogCiAgICAgc2V0RGVsYXlDYWxsYmFj
a3ModHJ1ZSk7CiAgICAgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVJ
T1M6OnNldEN1cnJlbnRUcmFjayglcCkgLSBzZWxlY3RpbmcgdHJhY2sgaWQgJWkiLCB0aGlzLCBb
dHJhY2tJRCBpbnRWYWx1ZV0pOworICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZh
dGVJT1M6OnNldFNlbGVjdGVkVGV4dFRyYWNrKCVwKSAtIHNlbGVjdGluZyB0cmFjayBpZCAlaSIs
IHRoaXMsIFt0cmFja0lEIGludFZhbHVlXSk7CiAgICAgICAgIFttX2RlZmVycmVkUHJvcGVydGll
cy5nZXQoKSByZW1vdmVPYmplY3RGb3JLZXk6RGVmZXJyZWRQcm9wZXJ0eVNlbGVjdGVkVHJhY2tL
ZXldOwogICAgICAgICBbbV9tZWRpYVBsYXllckhlbHBlci5nZXQoKSBfc2V0U2VsZWN0ZWRUZXh0
VHJhY2s6dHJhY2tJRF07CiAgICAgfQpAQCAtMTA3NSw3ICsxMDc1LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVJT1M6Om91dE9mQmFuZFRleAogCiAgICAgICAgIGlmIChwbGF0Zm9ybVRyYWNr
LT50eXBlKCkgPT0gUGxhdGZvcm1UZXh0VHJhY2s6OkluQmFuZCkKICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBpZiAocGxhdGZvcm1UcmFjay0+a2luZCgpICE9IFBsYXRmb3JtVGV4dFRy
YWNrOjpTdWJ0aXRsZSAmJiBwbGF0Zm9ybVRyYWNrLT5raW5kKCkgIT0gUGxhdGZvcm1UZXh0VHJh
Y2s6OkNhcHRpb24pCisgICAgICAgIGlmIChwbGF0Zm9ybVRyYWNrLT5raW5kKCkgIT0gSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRjo6U3VidGl0bGVzICYmIHBsYXRmb3JtVHJhY2stPmtpbmQoKSAh
PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpDYXB0aW9ucykKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiB0cmFjayA9IGFk
b3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CkBAIC0xMDg1LDcgKzEw
ODUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUlPUzo6b3V0T2ZCYW5kVGV4CiAgICAgICAg
IGlmICghcGxhdGZvcm1UcmFjay0+bGFuZ3VhZ2UoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBb
dHJhY2suZ2V0KCkgc2V0T2JqZWN0OnBsYXRmb3JtVHJhY2stPmxhbmd1YWdlKCkgZm9yS2V5OlRl
eHRUcmFja0xvY2FsZUlkZW50aWZpZXJLZXldOwogCi0gICAgICAgIE5TU3RyaW5nICp0eXBlID0g
cGxhdGZvcm1UcmFjay0+a2luZCgpID09IFBsYXRmb3JtVGV4dFRyYWNrOjpTdWJ0aXRsZSA/IFRl
eHRUcmFja1N1YnRpdGxlc0tleSA6IFRleHRUcmFja0NhcHRpb25zS2V5OworICAgICAgICBOU1N0
cmluZyAqdHlwZSA9IHBsYXRmb3JtVHJhY2stPmtpbmQoKSA9PSBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGOjpTdWJ0aXRsZXMgPyBUZXh0VHJhY2tTdWJ0aXRsZXNLZXkgOiBUZXh0VHJhY2tDYXB0
aW9uc0tleTsKICAgICAgICAgW3RyYWNrLmdldCgpIHNldE9iamVjdDp0eXBlIGZvcktleTpUZXh0
VHJhY2tUeXBlS2V5XTsKIAogICAgICAgICBbdHJhY2suZ2V0KCkgc2V0T2JqZWN0OltOU051bWJl
ciBudW1iZXJXaXRoSW50OnBsYXRmb3JtVHJhY2tJRChwbGF0Zm9ybVRyYWNrLmdldCgpKV0gZm9y
S2V5OlRleHRUcmFja0lES2V5XTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226023</attachid>
            <date>2014-03-06 12:01:34 -0800</date>
            <delta_ts>2014-03-06 14:41:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129749-20140306120133.patch</filename>
            <type>text/plain</type>
            <size>37854</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTIwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDE0LTAzLTA1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlzZSBPdXQtb2YtYmFu
ZCBWVFQgc3VwcG9ydCBmb3IgYmV0dGVyIGludGVncmF0aW9uIHdpdGggQVZGb3VuZGF0aW9uIGVu
Z2luZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5
NzQ5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjIxNTcwMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXZpc2UgdGhlIHBsYXRmb3JtIGhhbmRs
aW5nIG9mIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzIHNvIHRoYXQgd2UgY2FuIGtlZXAgQVZGb3Vu
ZGF0aW9uCisgICAgICAgIGluZm9ybWVkIG9mIHRyYWNrIHNlbGVjdGlvbnMgd2UgbWFrZS4gVXNl
IGEgZHVtbXkgb3V0LW9mLWJhbmQgY2hpbGQgb2YgdGhlIGV4aXN0aW5nIHRleHQKKyAgICAgICAg
dHJhY2sgY2xhc3NlcyB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3IE91dE9mQmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYuaCBmaWxlLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IE5v
dGlmeSBwbGF5ZXIgd2hlbiBPT0IgdHJhY2tzIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om91dE9mQmFuZFRyYWNrU291cmNlcyk6IEFsc28gcGFzcyB0cmFjayBt
b2RlIHRvIHBsYXRmb3JtIGJhY2tlbmQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpwbGF0Zm9ybVRleHRUcmFjayk6IEFs
c28gcGFzcyB0cmFjayBtb2RlIHRvIGNvbnN0cnVjdG9yLgorICAgICAgICAqIGh0bWwvdHJhY2sv
VHJhY2tCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6VHJhY2tCYXNlKTog
TW92ZSBvd25lcnNoaXAgb2YgdHJhY2sgdW5pcXVlIGlkZW50aWZpZXIgdG8gdGhpcyBiYXNlIGNs
YXNzLgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tCYXNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFja0Jhc2U6OnVuaXF1ZUlkKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5vdGlm
eVRyYWNrTW9kZUNoYW5nZWQpOiBBZGRlZCBzdHViIHRvIHBhc3MgbWVzc2FnZSB0byBwbGF0Zm9y
bSBwbGF5ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6bm90aWZ5VHJhY2tNb2RlQ2hh
bmdlZCk6IFN0dWIgZm9yIG1vc3QgcGxhdGZvcm1zLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtVGV4dFRyYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRU
cmFjazo6Y3JlYXRlKTogVXBkYXRlIGZvciByZXZpc2VkIGNvbnN0cnVjdG9yICh3aXRoICdtb2Rl
JyBhcmd1bWVudCkuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFjazo6Y3JlYXRl
T3V0T2ZCYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFjazo6
bW9kZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UZXh0VHJhY2s6OmNhcHRp
b25NZW51T2ZmSXRlbSk6IFVzZSByZXZpc2VkIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy4KKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0p
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrOjpQbGF0Zm9ybVRl
eHRUcmFjayk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmg6IENoYW5nZSBwcmVkaWNhdGUgdG8gcmV0dXJu
IGVudW0gaW5kaWNhdGluZyB0aGUgY2F0ZWdvcnkKKyAgICAgICAgb2YgdHJhY2sgKG91dC1vZi1i
YW5kLCBsZWdhY3kgY2xvc2VkIGNhcHRpb24sIG9yIGluIGJhbmQpLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bm90
aWZ5VHJhY2tNb2RlQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oOiBPdmVycmlkZSBw
cmVkaWNhdGUgdG8gcmV0dXJuIGNhdGVnb3J5IGVudW0uCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaDog
T3ZlcnJpZGUgcHJlZGljYXRlIHRvIHJldHVybiBjYXRlZ29yeSBlbnVtLgorICAgICAgICB0aGF0
IHRoaXMgaXMgTk9UIGFuIG91dC1vZi1iYW5kIHRyYWNrLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZP
YmpDLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCk6IEFkZGVkIGltcGxlbWVudGF0aW9u
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
cHJvY2Vzc01lZGlhU2VsZWN0aW9uT3B0aW9ucyk6IFJldmlzZSB0byBoYW5kbGUgb3V0LW9mLWJh
bmQKKyAgICAgICAgdHJhY2sgcGxhY2Vob2xkZXJzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Q3VycmVudFRyYWNrKTogTW9kaWZ5IHRv
IGluZm9ybSBBVkZvdW5kYXRpb24gYWJvdXQgYW55CisgICAgICAgIG91dC1vZi1iYW5kIHRyYWNr
cyB3ZSd2ZSBzZWxlY3RlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnN5bmNocm9uaXplVGV4dFRyYWNrU3RhdGUpOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6T3V0T2ZCYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok91dE9mQmFuZFRleHRU
cmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUpOgorICAgICAgICAoV2ViQ29yZTo6T3V0T2ZCYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRjo6cmVzZXRDdWVWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
T3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6bWVkaWFTZWxlY3Rpb25PcHRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6T3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6T3V0T2ZCYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRik6CisgICAgICAgIChXZWJDb3JlOjpPdXRPZkJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvaW9zL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZJT1MuaDogT3ZlcnJpZGUgcHJlZGlj
YXRlIHRvIGluZGljYXRlCisgICAgICAgIHRoYXQgdGhpcyBpcyBOT1QgYW4gb3V0LW9mLWJhbmQg
dHJhY2suCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL01lZGlhUGxheWVyUHJpdmF0
ZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUlPUzo6c2V0U2Vs
ZWN0ZWRUZXh0VHJhY2spOiBDb3JyZWN0IHR5cG8gaW4gbG9nZ2luZyB0ZXh0LgorCiAyMDE0LTAz
LTA2ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogRXhwb3NlIHRoZSBjb25zb2xlIG9iamVjdCBpbiBKU0NvbnRleHRzIHRvIGlu
dGVyYWN0IHdpdGggV2ViIEluc3BlY3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY1MjAxKQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjczLDYgKzIyNzMsNyBAQAogCQk3QTI0NTg3QjEwMjFFQUY0MDAwQTAwQUEgLyog
SW5zcGVjdG9yRE9NQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0EyNDU4NzkxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50
LmNwcCAqLzsgfTsKIAkJN0EyNDU4N0MxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFn
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTI0
NTg3QTEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QTI5QkE2QTE4N0I3QzFEMDBG
MjlDRUIgLyogVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTI5QkE2OTE4N0I3ODFDMDBGMjlDRUIgLyogVGVt
cG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAgKi87IH07CisJCTdBMjlGNTcyMThDNjk1MTQwMDREMEY4
MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTI5RjU3MTE4QzY5NTE0MDA0RDBGODEgLyogT3V0
T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovOyB9OwogCQk3QTU0ODU3RjE0RTAyRDUxMDA2
QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QTU0ODU3RDE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9y
SGlzdG9yeS5jcHAgKi87IH07CiAJCTdBNTQ4NTgwMTRFMDJENTEwMDZBRTA1QSAvKiBJbnNwZWN0
b3JIaXN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QTU0ODU3RTE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5oICovOyB9Owog
CQk3QTU0ODgxNzE0RTQzMkExMDA2QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTU0ODgxNTE0RTQzMkExMDA2
QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0LmggKi87IH07CkBAIC05MjQyLDYgKzkyNDMsNyBAQAog
CQk3QTI0NTg3QTEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRE9NQWdlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EyOUJBNjcxODdCNzMyMjAwRjI5Q0VCIC8qIFRlbXBvcmFy
eU9wZW5HTFNldHRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9y
YXJ5T3BlbkdMU2V0dGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTI5QkE2
OTE4N0I3ODFDMDBGMjlDRUIgLyogVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0EyOUY1NzExOEM2OTUxNDAwNEQwRjgxIC8q
IE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOyBwYXRoID0gb2JqYy9PdXRP
ZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdBNTQ4NTdEMTRFMDJENTEwMDZBRTA1QSAvKiBJbnNwZWN0b3JIaXN0b3J5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckhpc3RvcnkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTU0ODU3RTE0RTAyRDUxMDA2QUUwNUEgLyogSW5z
cGVjdG9ySGlzdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JIaXN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNTQ4ODE1MTRFNDMy
QTEwMDZBRTA1QSAvKiBET01QYXRjaFN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NUGF0Y2hTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMTA3Myw2ICsyMTA3NSw3IEBACiAJCURGOUFGRDZGMTNGQzMxQjAwMDE1RkVCNyAvKiBvYmpj
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3QTI5RjU3
MTE4QzY5NTE0MDA0RDBGODEgLyogT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovLAog
CQkJCUNERTNBODU2MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMu
aCAqLywKIAkJCQlDREUzQTg1NTE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDLm1tICovLAogCQkJCUNENTRBNzYwMTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAgKi8sCkBAIC0yNDY3OCw2ICsyNDY4MSw3IEBA
CiAJCQkJNDE1N0FGODAxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RBQjZEMjkxN0M3REU2QzAwQzYwQjM0IC8qIE1lZGlhQ29udHJv
bHNIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAwNDE4MUYwNTlDMDBGMkI0MjQgLyog
TWVkaWFEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0EyOUY1NzIxOEM2OTUxNDAw
NEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3MjA1QUI4MTIzOTI5MTAwMEIxNzM4MCAvKiBNZWRpYURvY3VtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDZGMjUyRDEzRjVFRjBFMDA2NTE2NUYgLyogTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNBRDBDRDYzMzEwMDBGQURBNzUg
LyogTWVkaWFFcnJvci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2NTIwMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OTcsNiArMTU5
NywxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuCiAKICAgICBp
ZiAobV90ZXh0VHJhY2tzICYmIG1fdGV4dFRyYWNrcy0+Y29udGFpbnModHJhY2spKQogICAgICAg
ICBtX3RleHRUcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKKworI2lmIEVOQUJMRShBVkZf
Q0FQVElPTlMpCisgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OlRyYWNr
RWxlbWVudCAmJiBtX3BsYXllcikKKyAgICAgICAgbV9wbGF5ZXItPm5vdGlmeVRyYWNrTW9kZUNo
YW5nZWQoKTsKKyNlbmRpZgogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tT
ZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayogdHJhY2spCkBAIC01NTM4LDggKzU1NDMsNiBAQCBT
dHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJVc2VyCiAjaWYgRU5BQkxFKEFWRl9D
QVBUSU9OUykKIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiBIVE1MTWVkaWFFbGVt
ZW50OjpvdXRPZkJhbmRUcmFja1NvdXJjZXMoKQogewotICAgIHN0YXRpYyBpbnQgdW5pcXVlSWQg
PSAwOwotCiAgICAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4+IG91dE9mQmFuZFRy
YWNrU291cmNlczsKICAgICBmb3IgKGF1dG8mIHRyYWNrRWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBl
PEhUTUxUcmFja0VsZW1lbnQ+KCp0aGlzKSkgewogICAgICAgICAKQEAgLTU1NjQsOCArNTU2Nywx
OCBAQCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPj4gSFRNTE1lCiAgICAgICAgICAg
ICBwbGF0Zm9ybUtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6Rm9yY2VkOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBvdXRPZkJhbmRUcmFja1NvdXJjZXMu
YXBwZW5kKFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGVPdXRPZkJhbmQodHJhY2tFbGVtZW50Lmxh
YmVsKCksIHRyYWNrRWxlbWVudC5zcmNsYW5nKCksIHVybC5zdHJpbmcoKSwgcGxhdGZvcm1LaW5k
LCArK3VuaXF1ZUlkLCB0cmFja0VsZW1lbnQuaXNEZWZhdWx0KCkpKTsKKyAgICAgICAgCisgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZSA9IHRyYWNrRWxlbWVudC50cmFjaygpLT5tb2Rl
KCk7CisgICAgICAgIAorICAgICAgICBQbGF0Zm9ybVRleHRUcmFjazo6VHJhY2tNb2RlIHBsYXRm
b3JtTW9kZSA9IFBsYXRmb3JtVGV4dFRyYWNrOjpEaXNhYmxlZDsKKyAgICAgICAgaWYgKFRleHRU
cmFjazo6aGlkZGVuS2V5d29yZCgpID09IG1vZGUpCisgICAgICAgICAgICBwbGF0Zm9ybU1vZGUg
PSBQbGF0Zm9ybVRleHRUcmFjazo6SGlkZGVuOworICAgICAgICBlbHNlIGlmIChUZXh0VHJhY2s6
OmRpc2FibGVkS2V5d29yZCgpID09IG1vZGUpCisgICAgICAgICAgICBwbGF0Zm9ybU1vZGUgPSBQ
bGF0Zm9ybVRleHRUcmFjazo6RGlzYWJsZWQ7CisgICAgICAgIGVsc2UgaWYgKFRleHRUcmFjazo6
c2hvd2luZ0tleXdvcmQoKSA9PSBtb2RlKQorICAgICAgICAgICAgcGxhdGZvcm1Nb2RlID0gUGxh
dGZvcm1UZXh0VHJhY2s6OlNob3dpbmc7CisgICAgICAgIAorICAgICAgICBvdXRPZkJhbmRUcmFj
a1NvdXJjZXMuYXBwZW5kKFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGVPdXRPZkJhbmQodHJhY2tF
bGVtZW50LmxhYmVsKCksIHRyYWNrRWxlbWVudC5zcmNsYW5nKCksIHVybC5zdHJpbmcoKSwgcGxh
dGZvcm1Nb2RlLCBwbGF0Zm9ybUtpbmQsIHRyYWNrRWxlbWVudC50cmFjaygpLT51bmlxdWVJZCgp
LCB0cmFja0VsZW1lbnQuaXNEZWZhdWx0KCkpKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIG91
dE9mQmFuZFRyYWNrU291cmNlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5jcHAJKHJldmlzaW9uIDE2NTIwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE0IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC01NTAsOCArNTUw
LDYgQEAgYm9vbCBUZXh0VHJhY2s6Omhhc0N1ZShWVFRDdWUqIGN1ZSwgVlRUQwogI2lmIFVTRShQ
TEFURk9STV9URVhUX1RSQUNLX01FTlUpCiBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBU
ZXh0VHJhY2s6OnBsYXRmb3JtVGV4dFRyYWNrKCkKIHsKLSAgICBzdGF0aWMgaW50IHVuaXF1ZUlk
ID0gMDsKLQogICAgIGlmIChtX3BsYXRmb3JtVGV4dFRyYWNrKQogICAgICAgICByZXR1cm4gbV9w
bGF0Zm9ybVRleHRUcmFjazsKIApAQCAtNTc3LDcgKzU3NSwxNSBAQCBQYXNzUmVmUHRyPFBsYXRm
b3JtVGV4dFRyYWNrPiBUZXh0VHJhY2s6CiAgICAgZWxzZSBpZiAobV90cmFja1R5cGUgPT0gSW5C
YW5kKQogICAgICAgICB0eXBlID0gUGxhdGZvcm1UZXh0VHJhY2s6OkluQmFuZDsKIAotICAgIG1f
cGxhdGZvcm1UZXh0VHJhY2sgPSBQbGF0Zm9ybVRleHRUcmFjazo6Y3JlYXRlKHRoaXMsIGxhYmVs
KCksIGxhbmd1YWdlKCksIHBsYXRmb3JtS2luZCwgdHlwZSwgKyt1bmlxdWVJZCk7CisgICAgUGxh
dGZvcm1UZXh0VHJhY2s6OlRyYWNrTW9kZSBwbGF0Zm9ybU1vZGUgPSBQbGF0Zm9ybVRleHRUcmFj
azo6RGlzYWJsZWQ7CisgICAgaWYgKFRleHRUcmFjazo6aGlkZGVuS2V5d29yZCgpID09IG1vZGUo
KSkKKyAgICAgICAgcGxhdGZvcm1Nb2RlID0gUGxhdGZvcm1UZXh0VHJhY2s6OkhpZGRlbjsKKyAg
ICBlbHNlIGlmIChUZXh0VHJhY2s6OmRpc2FibGVkS2V5d29yZCgpID09IG1vZGUoKSkKKyAgICAg
ICAgcGxhdGZvcm1Nb2RlID0gUGxhdGZvcm1UZXh0VHJhY2s6OkRpc2FibGVkOworICAgIGVsc2Ug
aWYgKFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSA9PSBtb2RlKCkpCisgICAgICAgIHBsYXRm
b3JtTW9kZSA9IFBsYXRmb3JtVGV4dFRyYWNrOjpTaG93aW5nOworCisgICAgbV9wbGF0Zm9ybVRl
eHRUcmFjayA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUodGhpcywgbGFiZWwoKSwgbGFuZ3Vh
Z2UoKSwgcGxhdGZvcm1Nb2RlLCBwbGF0Zm9ybUtpbmQsIHR5cGUsIHVuaXF1ZUlkKCkpOwogCiAg
ICAgcmV0dXJuIG1fcGxhdGZvcm1UZXh0VHJhY2s7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0Jhc2UuY3BwCShyZXZpc2lvbiAxNjUyMDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDExICszMiwx
NCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBpbnQgc191bmlxdWVJZCA9IDA7
CisKIFRyYWNrQmFzZTo6VHJhY2tCYXNlKFR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBp
ZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFn
ZSkKICAgICA6IG1fbWVkaWFFbGVtZW50KDApCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAg
ICAsIG1fc291cmNlQnVmZmVyKDApCiAjZW5kaWYKKyAgICAsIG1fdW5pcXVlSWQoKytzX3VuaXF1
ZUlkKQogICAgICwgbV9pZChpZCkKICAgICAsIG1fbGFiZWwobGFiZWwpCiAgICAgLCBtX2xhbmd1
YWdlKGxhbmd1YWdlKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCShy
ZXZpc2lvbiAxNjUyMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBjbGVhckNsaWVudCgpID0gMDsKIAorICAgIHZpcnR1YWwgaW50IHVuaXF1ZUlkKCkgY29u
c3QgeyByZXR1cm4gbV91bmlxdWVJZDsgfQorCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAg
ICBTb3VyY2VCdWZmZXIqIHNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQnVm
ZmVyOyB9CiAgICAgdm9pZCBzZXRTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyKiBidWZmZXIpIHsg
bV9zb3VyY2VCdWZmZXIgPSBidWZmZXI7IH0KQEAgLTg1LDYgKzg3LDcgQEAgcHJvdGVjdGVkOgog
CiBwcml2YXRlOgogICAgIFR5cGUgbV90eXBlOworICAgIGludCBtX3VuaXF1ZUlkOwogICAgIEF0
b21pY1N0cmluZyBtX2lkOwogICAgIEF0b21pY1N0cmluZyBtX2tpbmQ7CiAgICAgQXRvbWljU3Ry
aW5nIG1fbGFiZWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCShyZXZpc2lvbiAxNjUyMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNzIs
NiArMTI3MiwxMiBAQCB2b2lkIE1lZGlhUGxheWVyOjpzZXRUZXh0VHJhY2tSZXByZXNlbnRhCiB9
CiAKICNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQordm9pZCBNZWRpYVBsYXllcjo6bm90aWZ5VHJh
Y2tNb2RlQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAgbV9wcml2YXRl
LT5ub3RpZnlUcmFja01vZGVDaGFuZ2VkKCk7Cit9CisKIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1U
ZXh0VHJhY2s+PiBNZWRpYVBsYXllcjo6b3V0T2ZCYW5kVHJhY2tTb3VyY2VzKCkKIHsKICAgICBp
ZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgJKHJldmlzaW9uIDE2NTIwMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUzNyw2ICs1MzcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJl
c2VudGF0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbiopOwogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCisgICAg
dm9pZCBub3RpZnlUcmFja01vZGVDaGFuZ2VkKCk7CiAgICAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9y
bVRleHRUcmFjaz4+IG91dE9mQmFuZFRyYWNrU291cmNlcygpOwogI2VuZGlmCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oCShyZXZpc2lvbiAxNjUyMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNDcsNiArMjQ3LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHVuc2ln
bmVkIGxvbmcgY29ycnVwdGVkVmlkZW9GcmFtZXMoKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVh
bCBkb3VibGUgdG90YWxGcmFtZURlbGF5KCkgeyByZXR1cm4gMDsgfQogI2VuZGlmCisKKyNpZiBF
TkFCTEUoQVZGX0NBUFRJT05TKQorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlUcmFja01vZGVDaGFu
Z2VkKCkgeyB9CisjZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaAkocmV2aXNpb24gMTY1MjAx
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNTksMjEgKzU5LDI3IEBAIHB1YmxpYzoKICAgICAgICAgT3V0
T2ZCYW5kID0gMSwKICAgICAgICAgU2NyaXB0ID0gMgogICAgIH07Ci0KLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gY3JlYXRlKFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50
KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIFRy
YWNrS2luZCBraW5kLCBUcmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkKQorICAgIGVudW0gVHJh
Y2tNb2RlIHsKKyAgICAgICAgRGlzYWJsZWQsCisgICAgICAgIEhpZGRlbiwKKyAgICAgICAgU2hv
d2luZworICAgIH07CisgICAgCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJh
Y2s+IGNyZWF0ZShQbGF0Zm9ybVRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBUcmFja01vZGUgbW9kZSwgVHJhY2tLaW5k
IGtpbmQsIFRyYWNrVHlwZSB0eXBlLCBpbnQgdW5pcXVlSWQpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtVGV4dFRyYWNrKGNsaWVudCwgbGFiZWwsIGxhbmd1YWdl
LCBTdHJpbmcoKSwga2luZCwgdHlwZSwgdW5pcXVlSWQsIGZhbHNlKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUGxhdGZvcm1UZXh0VHJhY2soY2xpZW50LCBsYWJlbCwgbGFuZ3VhZ2Us
IFN0cmluZygpLCBtb2RlLCBraW5kLCB0eXBlLCB1bmlxdWVJZCwgZmFsc2UpKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gY3JlYXRlT3V0T2ZCYW5k
KGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBUcmFja0tpbmQga2luZCwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gY3JlYXRlT3V0T2ZCYW5kKGNv
bnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFN0cmluZyYg
dXJsLCBUcmFja01vZGUgbW9kZSwgVHJhY2tLaW5kIGtpbmQsIGludCB1bmlxdWVJZCwgYm9vbCBp
c0RlZmF1bHQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtVGV4
dFRyYWNrKG51bGxwdHIsIGxhYmVsLCBsYW5ndWFnZSwgdXJsLCBraW5kLCBPdXRPZkJhbmQsIHVu
aXF1ZUlkLCBpc0RlZmF1bHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9y
bVRleHRUcmFjayhudWxscHRyLCBsYWJlbCwgbGFuZ3VhZ2UsIHVybCwgbW9kZSwga2luZCwgT3V0
T2ZCYW5kLCB1bmlxdWVJZCwgaXNEZWZhdWx0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UGxh
dGZvcm1UZXh0VHJhY2soKSB7IH0KICAgICAKICAgICBUcmFja1R5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQogICAgIFRyYWNrS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9r
aW5kOyB9CisgICAgVHJhY2tNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KICAg
ICBjb25zdCBTdHJpbmcmIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQogICAgIGNv
bnN0IFN0cmluZyYgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xhbmd1YWdlOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQpAQCAtODMsMjEgKzg5
LDIyIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogY2FwdGlvbk1l
bnVPZmZJdGVtKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogb2Zm
ID0gUGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAib2ZmIG1lbnUgaXRlbSIsICIi
LCBTdWJ0aXRsZSwgSW5CYW5kLCAwKS5sZWFrUmVmKCk7CisgICAgICAgIHN0YXRpYyBQbGF0Zm9y
bVRleHRUcmFjayogb2ZmID0gUGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAib2Zm
IG1lbnUgaXRlbSIsICIiLCBTaG93aW5nLCBTdWJ0aXRsZSwgSW5CYW5kLCAwKS5sZWFrUmVmKCk7
CiAgICAgICAgIHJldHVybiBvZmY7CiAgICAgfQogCiAgICAgc3RhdGljIFBsYXRmb3JtVGV4dFRy
YWNrKiBjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKQogICAgIHsKLSAgICAgICAgc3RhdGljIFBs
YXRmb3JtVGV4dFRyYWNrKiBhdXRvbWF0aWMgPSBQbGF0Zm9ybVRleHRUcmFjazo6Y3JlYXRlKG51
bGxwdHIsICJhdXRvbWF0aWMgbWVudSBpdGVtIiwgIiIsIFN1YnRpdGxlLCBJbkJhbmQsIDApLmxl
YWtSZWYoKTsKKyAgICAgICAgc3RhdGljIFBsYXRmb3JtVGV4dFRyYWNrKiBhdXRvbWF0aWMgPSBQ
bGF0Zm9ybVRleHRUcmFjazo6Y3JlYXRlKG51bGxwdHIsICJhdXRvbWF0aWMgbWVudSBpdGVtIiwg
IiIsIFNob3dpbmcsIFN1YnRpdGxlLCBJbkJhbmQsIDApLmxlYWtSZWYoKTsKICAgICAgICAgcmV0
dXJuIGF1dG9tYXRpYzsKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBQbGF0Zm9ybVRleHRUcmFj
ayhQbGF0Zm9ybVRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBj
b25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBTdHJpbmcmIHVybCwgVHJhY2tLaW5kIGtpbmQs
IFRyYWNrVHlwZSB0eXBlLCBpbnQgdW5pcXVlSWQsIGJvb2wgaXNEZWZhdWx0KQorICAgIFBsYXRm
b3JtVGV4dFRyYWNrKFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFN0cmluZyYgdXJsLCBUcmFj
a01vZGUgbW9kZSwgVHJhY2tLaW5kIGtpbmQsIFRyYWNrVHlwZSB0eXBlLCBpbnQgdW5pcXVlSWQs
IGJvb2wgaXNEZWZhdWx0KQogICAgICAgICA6IG1fbGFiZWwobGFiZWwpCiAgICAgICAgICwgbV9s
YW5ndWFnZShsYW5ndWFnZSkKICAgICAgICAgLCBtX3VybCh1cmwpCisgICAgICAgICwgbV9tb2Rl
KG1vZGUpCiAgICAgICAgICwgbV9raW5kKGtpbmQpCiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAg
ICAgICAgICwgbV9jbGllbnQoY2xpZW50KQpAQCAtMTA5LDYgKzExNiw3IEBAIHByb3RlY3RlZDoK
ICAgICBTdHJpbmcgbV9sYWJlbDsKICAgICBTdHJpbmcgbV9sYW5ndWFnZTsKICAgICBTdHJpbmcg
bV91cmw7CisgICAgVHJhY2tNb2RlIG1fbW9kZTsKICAgICBUcmFja0tpbmQgbV9raW5kOwogICAg
IFRyYWNrVHlwZSBtX3R5cGU7CiAgICAgUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIG1fY2xpZW50
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5o
CShyZXZpc2lvbiAxNjUyMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTU1LDE1ICs1NSwyMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNCZWVuUmVwb3J0ZWQoKSBj
b25zdCB7IHJldHVybiBtX2hhc0JlZW5SZXBvcnRlZDsgfQogICAgIHZvaWQgc2V0SGFzQmVlblJl
cG9ydGVkKGJvb2wgcmVwb3J0ZWQpIHsgbV9oYXNCZWVuUmVwb3J0ZWQgPSByZXBvcnRlZDsgfQog
Ci0gICAgdm9pZCBwcm9jZXNzQ3VlKENGQXJyYXlSZWYsIGRvdWJsZSk7Ci0gICAgdm9pZCByZXNl
dEN1ZVZhbHVlcygpOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzQ3VlKENGQXJyYXlSZWYsIGRv
dWJsZSk7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0Q3VlVmFsdWVzKCk7CiAKICAgICB2b2lkIGJl
Z2luU2Vla2luZygpOwogICAgIHZvaWQgZW5kU2Vla2luZygpIHsgbV9zZWVraW5nID0gZmFsc2U7
IH0KICAgICBib29sIHNlZWtpbmcoKSBjb25zdCB7IHJldHVybiBtX3NlZWtpbmc7IH0KICAgICAK
LSAgICB2aXJ0dWFsIGJvb2wgaXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkgY29uc3QgPSAw
OwotCisgICAgZW51bSBDYXRlZ29yeSB7CisgICAgICAgIExlZ2FjeUNsb3NlZENhcHRpb24sCisg
ICAgICAgIE91dE9mQmFuZCwKKyAgICAgICAgSW5CYW5kCisgICAgfTsKKyAgICB2aXJ0dWFsIENh
dGVnb3J5IHRleHRUcmFja0NhdGVnb3J5KCkgY29uc3QgPSAwOworICAgIAogcHJvdGVjdGVkOgog
ICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYoQVZGSW5iYW5kVHJhY2tQYXJlbnQqKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAJKHJldmlzaW9uIDE2NTIwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTkwNyw2ICs5MDcsMTAgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb246OmRpcwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b246OmNvbmZpZ3VyZUluYmFuZFRyYWNrcygpCiB7CiAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkY+IHRyYWNrVG9FbmFibGU7CisgICAgCisjaWYgRU5BQkxFKEFWRl9DQVBUSU9O
UykKKyAgICBzeW5jaHJvbml6ZVRleHRUcmFja1N0YXRlKCk7CisjZW5kaWYKIAogICAgIC8vIEFW
Rm91bmRhdGlvbiBjYW4gb25seSBlbWl0IGN1ZXMgZm9yIG9uZSB0cmFjayBhdCBhIHRpbWUsIHNv
IGVuYWJsZSB0aGUgZmlyc3QgdHJhY2sgdGhhdCBpcyBzaG93aW5nLCBvciB0aGUgZmlyc3QgdGhh
dAogICAgIC8vIGlzIGhpZGRlbiBpZiBub25lIGFyZSBzaG93aW5nLiBPdGhlcndpc2UgZGlzYWJs
ZSBhbGwgdHJhY2tzLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb24uaAkocmV2aXNpb24gMTY1MjAxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5NCw2ICsyOTQsMTAgQEAgcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgc2l6ZV90IGV4dHJhTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHRyYWNrTW9kZUNoYW5nZWQoKSBvdmVycmlkZTsKKyNp
ZiBFTkFCTEUoQVZGX0NBUFRJT05TKQorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlUcmFja01vZGVD
aGFuZ2VkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplVGV4dFRyYWNrU3RhdGUo
KSB7IH0KKyNlbmRpZgogICAgIHZvaWQgcHJvY2Vzc05ld0FuZFJlbW92ZWRUZXh0VHJhY2tzKGNv
bnN0IFZlY3RvcjxSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4+Jik7CiAgICAgdm9p
ZCBjbGVhclRleHRUcmFja3MoKTsKICAgICBWZWN0b3I8UmVmUHRyPEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkY+PiBtX3RleHRUcmFja3M7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaAkocmV2aXNpb24gMTY1MjAxKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRU
cmFja1ByaXZhdGVBVkNGLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBi
b29sIGlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBDYXRlZ29yeSB0ZXh0VHJhY2tDYXRlZ29yeSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIEluQmFuZDsgfQogCiAgICAgQVZDRk1lZGlhU2VsZWN0aW9uT3B0
aW9uUmVmIG1lZGlhU2VsZWN0aW9uT3B0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVNlbGVj
dGlvbk9wdGlvbi5nZXQoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgJKHJldmlzaW9uIDE2NTIwMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsOCAr
NTYsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCBib29sIGlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KKyAgICB2aXJ0dWFsIENhdGVnb3J5IHRleHRU
cmFja0NhdGVnb3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW5CYW5kOyB9CisgICAgCiAg
ICAgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqbWVkaWFTZWxlY3Rpb25PcHRpb24oKSBjb25zdCB7
IHJldHVybiBtX21lZGlhU2VsZWN0aW9uT3B0aW9uLmdldCgpOyB9CiAKIHByb3RlY3RlZDoKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaAkocmV2aXNpb24gMTY1MjAxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWRk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Niw4ICs1Niw4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgaXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQotCisgICAgdmlydHVhbCBDYXRlZ29yeSB0ZXh0VHJhY2tDYXRlZ29yeSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIExlZ2FjeUNsb3NlZENhcHRpb247IH0KKyAgICAKICAg
ICBBVlBsYXllckl0ZW1UcmFjayAqYXZQbGF5ZXJJdGVtVHJhY2soKSBjb25zdCB7IHJldHVybiBt
X3BsYXllckl0ZW1UcmFjay5nZXQoKTsgfQogCiBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oCShyZXZpc2lvbiAxNjUyMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMS0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE2LDcgKzExNiwxMiBAQCBwdWJsaWM6
CiAjaWYgRU5BQkxFKElPU19BSVJQTEFZKQogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRJc1dpcmVs
ZXNzRGlkQ2hhbmdlKCk7CiAjZW5kaWYKLQorICAgIAorI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMp
CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVRyYWNrTW9kZUNoYW5nZWQoKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVUZXh0VHJhY2tTdGF0ZSgpIG92ZXJyaWRlOworI2Vu
ZGlmCisgICAgCiAgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
PiBjcmVhdGVXZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRy
KCk7IH0KIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2aXNpb24g
MTY1MjAxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNDIsNiArNDIsNyBAQAogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBv
cnQgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJJbmJhbmRUZXh0
VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oIgorI2ltcG9ydCAiT3V0T2ZCYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRi5oIgogI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1w
b3J0ICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKQEAgLTgzLDcgKzg0LDggQEAKIC8vIE5vdGU6IFRo
aXMgbXVzdCBiZSBkZWZpbmVkIGJlZm9yZSBvdXIgU09GVF9MSU5LIG1hY3JvczoKIEBjbGFzcyBB
Vk1lZGlhU2VsZWN0aW9uT3B0aW9uOwogQGludGVyZmFjZSBBVk1lZGlhU2VsZWN0aW9uT3B0aW9u
IChPdXRPZkJhbmRFeHRlbnNpb25zKQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBO
U1N0cmluZyAqb3V0T2ZCYW5kU291cmNlIC8qTlNfQVZBSUxBQkxFKFRCRCwgVEJEKSovOworQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyogb3V0T2ZCYW5kU291cmNlOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyogb3V0T2ZCYW5kSWRlbnRp
ZmllcjsKIEBlbmQKICNlbmRpZgogCkBAIC01MzQsNiArNTM2LDQyIEBAIHN0YXRpYyBjb25zdCBO
U0FycmF5KiBtZWRpYURlc2NyaXB0aW9uRm8KIAogICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdp
dGhPYmplY3RzOiBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0Zv
ckFjY2Vzc2liaWxpdHksIG5pbF07CiB9CisgICAgCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6Om5vdGlmeVRyYWNrTW9kZUNoYW5nZWQoKQoreworICAgIHRyYWNrTW9k
ZUNoYW5nZWQoKTsKK30KKyAgICAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c3luY2hyb25pemVUZXh0VHJhY2tTdGF0ZSgpCit7CisgICAgY29uc3QgVmVjdG9yPFJl
ZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4+JiBvdXRPZkJhbmRUcmFja1NvdXJjZXMgPSBwbGF5ZXIo
KS0+b3V0T2ZCYW5kVHJhY2tTb3VyY2VzKCk7CisgICAgCisgICAgZm9yIChhdXRvJiB0ZXh0VHJh
Y2sgOiBtX3RleHRUcmFja3MpIHsKKyAgICAgICAgaWYgKHRleHRUcmFjay0+dGV4dFRyYWNrQ2F0
ZWdvcnkoKSA9PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpPdXRPZkJhbmQpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIFJlZlB0cjxPdXRPZkJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGPiB0cmFja1ByaXZhdGUgPSBzdGF0aWNfY2FzdDxPdXRPZkJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGKj4odGV4dFRyYWNrLmdldCgpKTsKKyAgICAgICAgUmV0YWluUHRyPEFWTWVk
aWFTZWxlY3Rpb25PcHRpb25UeXBlPiBjdXJyZW50T3B0aW9uID0gdHJhY2tQcml2YXRlLT5tZWRp
YVNlbGVjdGlvbk9wdGlvbigpOworICAgICAgICAKKyAgICAgICAgZm9yIChhdXRvJiB0cmFjayA6
IG91dE9mQmFuZFRyYWNrU291cmNlcykgeworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiB1bmlxdWVJRCA9IFN0cmluZzo6bnVtYmVyKHRyYWNrLT51bmlxdWVJZCgpKS5jcmVhdGVD
RlN0cmluZygpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIVtbY3VycmVudE9wdGlv
bi5nZXQoKSBvdXRPZkJhbmRJZGVudGlmaWVyXSBpc0VxdWFsOiByZWludGVycHJldF9jYXN0PGNv
bnN0IE5TU3RyaW5nKj4odW5pcXVlSUQuZ2V0KCkpXSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6TW9k
ZSBtb2RlID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6SGlkZGVuOworICAgICAgICAgICAgaWYg
KHRyYWNrLT5tb2RlKCkgPT0gUGxhdGZvcm1UZXh0VHJhY2s6OkhpZGRlbikKKyAgICAgICAgICAg
ICAgICBtb2RlID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6SGlkZGVuOworICAgICAgICAgICAg
ZWxzZSBpZiAodHJhY2stPm1vZGUoKSA9PSBQbGF0Zm9ybVRleHRUcmFjazo6RGlzYWJsZWQpCisg
ICAgICAgICAgICAgICAgbW9kZSA9IEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkRpc2FibGVkOwor
ICAgICAgICAgICAgZWxzZSBpZiAodHJhY2stPm1vZGUoKSA9PSBQbGF0Zm9ybVRleHRUcmFjazo6
U2hvd2luZykKKyAgICAgICAgICAgICAgICBtb2RlID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6
U2hvd2luZzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGV4dFRyYWNrLT5zZXRNb2RlKG1v
ZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CiAjZW5kaWYKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9y
VVJMKGNvbnN0IFN0cmluZyYgdXJsKQpAQCAtMTc0NSw3ICsxNzgzLDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogCiAgICAgICAgIGJvb2wgbmV3Q0NUcmFjayA9
IHRydWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJlbW92ZWRUZXh0VHJhY2tzLnNpemUo
KTsgaSA+IDA7IC0taSkgewotICAgICAgICAgICAgaWYgKCFyZW1vdmVkVGV4dFRyYWNrc1tpIC0g
MV0tPmlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpKQorICAgICAgICAgICAgaWYgKCFyZW1v
dmVkVGV4dFRyYWNrc1tpIC0gMV0tPnRleHRUcmFja0NhdGVnb3J5KCkgPT0gSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRjo6TGVnYWN5Q2xvc2VkQ2FwdGlvbikKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lB
VkZPYmpDPiB0cmFjayA9IHN0YXRpY19jYXN0PEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lB
VkZPYmpDKj4obV90ZXh0VHJhY2tzW2kgLSAxXS5nZXQoKSk7CkBAIC0xNzk2LDExICsxODM0LDIy
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICBmb3IgKEFW
TWVkaWFTZWxlY3Rpb25PcHRpb25UeXBlICpvcHRpb24gaW4gbGVnaWJsZU9wdGlvbnMpIHsKICAg
ICAgICAgYm9vbCBuZXdUcmFjayA9IHRydWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJl
bW92ZWRUZXh0VHJhY2tzLnNpemUoKTsgaSA+IDA7IC0taSkgewotICAgICAgICAgICAgIGlmIChy
ZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0tPmlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpKQot
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgUmVmUHRyPEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkZPYmpDPiB0cmFjayA9IHN0YXRpY19jYXN0PEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkZPYmpDKj4ocmVtb3ZlZFRleHRUcmFja3NbaSAtIDFdLmdldCgpKTsKLSAgICAg
ICAgICAgIGlmIChbdHJhY2stPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCkgaXNFcXVhbDpvcHRpb25d
KSB7CisgICAgICAgICAgICBpZiAocmVtb3ZlZFRleHRUcmFja3NbaSAtIDFdLT50ZXh0VHJhY2tD
YXRlZ29yeSgpID09IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OkxlZ2FjeUNsb3NlZENhcHRp
b24pCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IFJldGFpblB0cjxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uVHlwZT4gY3VycmVudE9wdGlvbjsKKyNp
ZiBFTkFCTEUoQVZGX0NBUFRJT05TKQorICAgICAgICAgICAgaWYgKHJlbW92ZWRUZXh0VHJhY2tz
W2kgLSAxXS0+dGV4dFRyYWNrQ2F0ZWdvcnkoKSA9PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
OjpPdXRPZkJhbmQpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8T3V0T2ZCYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRj4gdHJhY2sgPSBzdGF0aWNfY2FzdDxPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGKj4ocmVtb3ZlZFRleHRUcmFja3NbaSAtIDFdLmdldCgpKTsKKyAgICAgICAgICAgICAgICBj
dXJyZW50T3B0aW9uID0gdHJhY2stPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCk7CisgICAgICAgICAg
ICB9IGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFJlZlB0cjxJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gdHJhY2sgPSBzdGF0aWNfY2FzdDxJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGT2JqQyo+KHJlbW92ZWRUZXh0VHJhY2tzW2kgLSAxXS5nZXQoKSk7
CisgICAgICAgICAgICAgICAgY3VycmVudE9wdGlvbiA9IHRyYWNrLT5tZWRpYVNlbGVjdGlvbk9w
dGlvbigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoW2N1
cnJlbnRPcHRpb24uZ2V0KCkgaXNFcXVhbDpvcHRpb25dKSB7CiAgICAgICAgICAgICAgICAgcmVt
b3ZlZFRleHRUcmFja3MucmVtb3ZlKGkgLSAxKTsKICAgICAgICAgICAgICAgICBuZXdUcmFjayA9
IGZhbHNlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTgxMCw5ICsxODU5LDExIEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKLSAgICAgICAgLy8gSWdub3JlIG91dC1v
Zi1iYW5kIHRyYWNrcyB0aGF0IHdlIHBhc3NlZCB0byBBVkZvdW5kYXRpb24gc28gd2UgZG8gbm90
IGRvdWJsZS1jb3VudCB0aGVtCi0gICAgICAgIGlmIChbb3B0aW9uIG91dE9mQmFuZFNvdXJjZV0p
CisgICAgICAgIGlmIChbb3B0aW9uIG91dE9mQmFuZFNvdXJjZV0pIHsKKyAgICAgICAgICAgIG1f
dGV4dFRyYWNrcy5hcHBlbmQoT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6Y3JlYXRlKHRo
aXMsIG9wdGlvbikpOworICAgICAgICAgICAgbV90ZXh0VHJhY2tzLmxhc3QoKS0+c2V0SGFzQmVl
blJlcG9ydGVkKHRydWUpOyAvLyBJZ25vcmUgb3V0LW9mLWJhbmQgdHJhY2tzIHRoYXQgd2UgcGFz
c2VkIHRvIEFWRm91bmRhdGlvbiBzbyB3ZSBkbyBub3QgZG91YmxlLWNvdW50IHRoZW0KICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAjZW5kaWYKIAogICAgICAgICBtX3RleHRUcmFj
a3MuYXBwZW5kKEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpjcmVhdGUodGhpcywgb3B0
aW9uKSk7CkBAIC0xODUwLDkgKzE5MDEsMTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOgogICAgIG1fY3VycmVudFRyYWNrID0gdHJhY2s7CiAKICAgICBpZiAodHJh
Y2spIHsKLSAgICAgICAgaWYgKHRyYWNrLT5pc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2soKSkK
KyAgICAgICAgaWYgKHRyYWNrLT50ZXh0VHJhY2tDYXRlZ29yeSgpID09IEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkY6OkxlZ2FjeUNsb3NlZENhcHRpb24pCiAgICAgICAgICAgICBbbV9hdlBsYXll
ci5nZXQoKSBzZXRDbG9zZWRDYXB0aW9uRGlzcGxheUVuYWJsZWQ6WUVTXTsKICNpZiBIQVZFKEFW
Rk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCisjaWYgRU5BQkxFKEFWRl9DQVBUSU9O
UykKKyAgICAgICAgZWxzZSBpZiAodHJhY2stPnRleHRUcmFja0NhdGVnb3J5KCkgPT0gSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRjo6T3V0T2ZCYW5kKQorICAgICAgICAgICAgW21fYXZQbGF5ZXJJ
dGVtLmdldCgpIHNlbGVjdE1lZGlhT3B0aW9uOnN0YXRpY19jYXN0PE91dE9mQmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYqPih0cmFjayktPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCkgaW5NZWRpYVNlbGVj
dGlvbkdyb3VwOnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKCldOworI2Vu
ZGlmCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFttX2F2UGxheWVySXRlbS5nZXQoKSBzZWxl
Y3RNZWRpYU9wdGlvbjpzdGF0aWNfY2FzdDxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQyo+
KHRyYWNrKS0+bWVkaWFTZWxlY3Rpb25PcHRpb24oKSBpbk1lZGlhU2VsZWN0aW9uR3JvdXA6c2Fm
ZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKV07CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgT3V0T2ZCYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRl9oCisjZGVmaW5lIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkZf
aAorCisjaWYgRU5BQkxFKFZJREVPKSAmJiAoVVNFKEFWRk9VTkRBVElPTikgfHwgUExBVEZPUk0o
SU9TKSkgJiYgRU5BQkxFKEFWRl9DQVBUSU9OUykKKworI2luY2x1ZGUgIkluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYuaCIKKworT0JKQ19DTEFTUyBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkY+IGNyZWF0ZShBVkZJ
bmJhbmRUcmFja1BhcmVudCogcGxheWVyLCAgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiogc2VsZWN0
aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPdXRPZkJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGKHBsYXllciwgc2VsZWN0aW9uKSk7CisgICAgfQorICAgIAorICAgIHZpcnR1
YWwgdm9pZCBwcm9jZXNzQ3VlKENGQXJyYXlSZWYsIGRvdWJsZSkgb3ZlcnJpZGUgeyB9CisgICAg
dmlydHVhbCB2b2lkIHJlc2V0Q3VlVmFsdWVzKCkgb3ZlcnJpZGUgeyB9CisgICAgCisgICAgdmly
dHVhbCBDYXRlZ29yeSB0ZXh0VHJhY2tDYXRlZ29yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IE91dE9mQmFuZDsgfQorICAgIAorICAgIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24qIG1lZGlhU2Vs
ZWN0aW9uT3B0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVNlbGVjdGlvbk9wdGlvbi5nZXQo
KTsgfQorICAgIAorcHJvdGVjdGVkOgorICAgIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYo
QVZGSW5iYW5kVHJhY2tQYXJlbnQqIHBsYXllciwgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiogc2Vs
ZWN0aW9uKQorICAgICAgICA6IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYocGxheWVyKQorICAg
ICAgICAsIG1fbWVkaWFTZWxlY3Rpb25PcHRpb24oc2VsZWN0aW9uKQorICAgIHsKKyAgICB9Cisg
ICAgCisgICAgUmV0YWluUHRyPEFWTWVkaWFTZWxlY3Rpb25PcHRpb24+IG1fbWVkaWFTZWxlY3Rp
b25PcHRpb247Cit9OworICAgIAorfQorCisjZW5kaWYKKworI2VuZGlmIC8vIE91dE9mQmFuZFRl
eHRUcmFja1ByaXZhdGVBVkZfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaW9zL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZJT1MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
RklPUy5oCShyZXZpc2lvbiAxNjUyMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pb3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRklPUy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6
OktpbmQga2luZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxh
YmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVhbCBBdG9t
aWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xhbmd1YWdlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBDYXRlZ29yeSB0ZXh0VHJhY2tD
YXRlZ29yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEluQmFuZDsgfQogICAgIGludCBpbnRl
cm5hbElEKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbElEOyB9CiAKIHByb3RlY3RlZDoKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9NZWRpYVBsYXllclByaXZh
dGVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aW9zL01lZGlhUGxheWVyUHJpdmF0ZUlPUy5tbQkocmV2aXNpb24gMTY1MjAxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL01lZGlhUGxheWVyUHJpdmF0ZUlPUy5tbQko
d29ya2luZyBjb3B5KQpAQCAtOTg0LDcgKzk4NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
SU9TOjpzZXRTZWxlY3RlZFQKIAogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwogICAgIHsK
LSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlSU9TOjpzZXRDdXJyZW50VHJh
Y2soJXApIC0gc2VsZWN0aW5nIHRyYWNrIGlkICVpIiwgdGhpcywgW3RyYWNrSUQgaW50VmFsdWVd
KTsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlSU9TOjpzZXRTZWxlY3Rl
ZFRleHRUcmFjayglcCkgLSBzZWxlY3RpbmcgdHJhY2sgaWQgJWkiLCB0aGlzLCBbdHJhY2tJRCBp
bnRWYWx1ZV0pOwogICAgICAgICBbbV9kZWZlcnJlZFByb3BlcnRpZXMuZ2V0KCkgcmVtb3ZlT2Jq
ZWN0Rm9yS2V5OkRlZmVycmVkUHJvcGVydHlTZWxlY3RlZFRyYWNrS2V5XTsKICAgICAgICAgW21f
bWVkaWFQbGF5ZXJIZWxwZXIuZ2V0KCkgX3NldFNlbGVjdGVkVGV4dFRyYWNrOnRyYWNrSURdOwog
ICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226042</attachid>
            <date>2014-03-06 14:41:36 -0800</date>
            <delta_ts>2014-03-06 14:45:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129749-20140306144135.patch</filename>
            <type>text/plain</type>
            <size>40595</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTIxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDE0LTAzLTA2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlzZSBPdXQtb2YtYmFu
ZCBWVFQgc3VwcG9ydCBmb3IgYmV0dGVyIGludGVncmF0aW9uIHdpdGggQVZGb3VuZGF0aW9uIGVu
Z2luZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5
NzQ5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjIxNTcwMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXZpc2UgdGhlIHBsYXRmb3JtIGhhbmRs
aW5nIG9mIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzIHNvIHRoYXQgd2UgY2FuIGtlZXAgQVZGb3Vu
ZGF0aW9uCisgICAgICAgIGluZm9ybWVkIG9mIHRyYWNrIHNlbGVjdGlvbnMgd2UgbWFrZS4gVXNl
IGEgZHVtbXkgb3V0LW9mLWJhbmQgY2hpbGQgb2YgdGhlIGV4aXN0aW5nIHRleHQKKyAgICAgICAg
dHJhY2sgY2xhc3NlcyB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3IE91dE9mQmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYuaCBmaWxlLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IE5v
dGlmeSBwbGF5ZXIgd2hlbiBPT0IgdHJhY2tzIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om91dE9mQmFuZFRyYWNrU291cmNlcyk6IEFsc28gcGFzcyB0cmFjayBt
b2RlIHRvIHBsYXRmb3JtIGJhY2tlbmQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpwbGF0Zm9ybVRleHRUcmFjayk6IEFs
c28gcGFzcyB0cmFjayBtb2RlIHRvIGNvbnN0cnVjdG9yLgorICAgICAgICAqIGh0bWwvdHJhY2sv
VHJhY2tCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6VHJhY2tCYXNlKTog
TW92ZSBvd25lcnNoaXAgb2YgdHJhY2sgdW5pcXVlIGlkZW50aWZpZXIgdG8gdGhpcyBiYXNlIGNs
YXNzLgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tCYXNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFja0Jhc2U6OnVuaXF1ZUlkKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5vdGlm
eVRyYWNrTW9kZUNoYW5nZWQpOiBBZGRlZCBzdHViIHRvIHBhc3MgbWVzc2FnZSB0byBwbGF0Zm9y
bSBwbGF5ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6bm90aWZ5VHJhY2tNb2RlQ2hh
bmdlZCk6IFN0dWIgZm9yIG1vc3QgcGxhdGZvcm1zLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtVGV4dFRyYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRU
cmFjazo6Y3JlYXRlKTogVXBkYXRlIGZvciByZXZpc2VkIGNvbnN0cnVjdG9yICh3aXRoICdtb2Rl
JyBhcmd1bWVudCkuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFjazo6Y3JlYXRl
T3V0T2ZCYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFjazo6
bW9kZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UZXh0VHJhY2s6OmNhcHRp
b25NZW51T2ZmSXRlbSk6IFVzZSByZXZpc2VkIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy4KKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0p
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrOjpQbGF0Zm9ybVRl
eHRUcmFjayk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmg6IENoYW5nZSBwcmVkaWNhdGUgdG8gcmV0dXJu
IGVudW0gaW5kaWNhdGluZyB0aGUgY2F0ZWdvcnkKKyAgICAgICAgb2YgdHJhY2sgKG91dC1vZi1i
YW5kLCBsZWdhY3kgY2xvc2VkIGNhcHRpb24sIG9yIGluIGJhbmQpLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bm90
aWZ5VHJhY2tNb2RlQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oOiBPdmVycmlkZSBw
cmVkaWNhdGUgdG8gcmV0dXJuIGNhdGVnb3J5IGVudW0uCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNw
cDogUmV2aXNlIHRvIHVzZSBuZXcgY2F0ZWdvcnkgZW51bS4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5o
OiBPdmVycmlkZSBwcmVkaWNhdGUgdG8gcmV0dXJuIGNhdGVnb3J5IGVudW0uCisgICAgICAgIHRo
YXQgdGhpcyBpcyBOT1QgYW4gb3V0LW9mLWJhbmQgdHJhY2suCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFW
Rk9iakMuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpub3RpZnlUcmFja01vZGVDaGFuZ2VkKTogQWRkZWQgaW1wbGVtZW50YXRp
b24uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojpwcm9jZXNzTWVkaWFTZWxlY3Rpb25PcHRpb25zKTogUmV2aXNlIHRvIGhhbmRsZSBvdXQtb2Yt
YmFuZAorICAgICAgICB0cmFjayBwbGFjZWhvbGRlcnMuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRDdXJyZW50VHJhY2spOiBNb2RpZnkg
dG8gaW5mb3JtIEFWRm91bmRhdGlvbiBhYm91dCBhbnkKKyAgICAgICAgb3V0LW9mLWJhbmQgdHJh
Y2tzIHdlJ3ZlIHNlbGVjdGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6c3luY2hyb25pemVUZXh0VHJhY2tTdGF0ZSk6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRU
cmFja1ByaXZhdGVBVkYuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpPdXRPZkJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6T3V0T2ZCYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpPdXRPZkJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGOjpyZXNldEN1ZVZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjptZWRpYVNlbGVjdGlvbk9wdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpPdXRPZkJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGKToKKyAgICAgICAgKFdlYkNvcmU6Ok91dE9mQmFuZFRleHRUcmFj
a1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9pb3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRklPUy5oOiBPdmVycmlkZSBwcmVk
aWNhdGUgdG8gaW5kaWNhdGUKKyAgICAgICAgdGhhdCB0aGlzIGlzIE5PVCBhbiBvdXQtb2YtYmFu
ZCB0cmFjay4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvTWVkaWFQbGF5ZXJQcml2
YXRlSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSU9TOjpzZXRT
ZWxlY3RlZFRleHRUcmFjayk6IENvcnJlY3QgdHlwbyBpbiBsb2dnaW5nIHRleHQuCisKIDIwMTQt
MDMtMDYgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W2lPU10gRG8gbm90IGNvbXBpbGUgZmFrZSBtb3VzZSBldmVudCBoYW5kbGluZyB3aGVuIGlPUyBU
b3VjaCBFdmVudHMgYXJlIGVuYWJsZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2NTIxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjI3Myw2ICsyMjczLDcgQEAKIAkJN0EyNDU4N0IxMDIxRUFGNDAwMEEwMEFBIC8qIElu
c3BlY3RvckRPTUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBMjQ1ODc5MTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5j
cHAgKi87IH07CiAJCTdBMjQ1ODdDMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2Vu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EyNDU4
N0ExMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0EyOUJBNkExODdCN0MxRDAwRjI5
Q0VCIC8qIFRlbXBvcmFyeU9wZW5HTFNldHRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EyOUJBNjkxODdCNzgxQzAwRjI5Q0VCIC8qIFRlbXBv
cmFyeU9wZW5HTFNldHRpbmcuY3BwICovOyB9OworCQk3QTI5RjU3MjE4QzY5NTE0MDA0RDBGODEg
LyogT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EyOUY1NzExOEM2OTUxNDAwNEQwRjgxIC8qIE91dE9m
QmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCAqLzsgfTsKIAkJN0E1NDg1N0YxNEUwMkQ1MTAwNkFF
MDVBIC8qIEluc3BlY3Rvckhpc3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0E1NDg1N0QxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3BlY3Rvckhp
c3RvcnkuY3BwICovOyB9OwogCQk3QTU0ODU4MDE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9y
SGlzdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0E1NDg1N0UxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3BlY3Rvckhpc3RvcnkuaCAqLzsgfTsKIAkJ
N0E1NDg4MTcxNEU0MzJBMTAwNkFFMDVBIC8qIERPTVBhdGNoU3VwcG9ydC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E1NDg4MTUxNEU0MzJBMTAwNkFF
MDVBIC8qIERPTVBhdGNoU3VwcG9ydC5oICovOyB9OwpAQCAtOTI0Miw2ICs5MjQzLDcgQEAKIAkJ
N0EyNDU4N0ExMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckRPTUFnZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdBMjlCQTY3MTg3QjczMjIwMEYyOUNFQiAvKiBUZW1wb3JhcnlP
cGVuR0xTZXR0aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFy
eU9wZW5HTFNldHRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EyOUJBNjkx
ODdCNzgxQzAwRjI5Q0VCIC8qIFRlbXBvcmFyeU9wZW5HTFNldHRpbmcuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBMjlGNTcxMThDNjk1MTQwMDREMEY4MSAvKiBP
dXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaDsgcGF0aCA9IG9iamMvT3V0T2ZC
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QTU0ODU3RDE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JIaXN0b3J5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E1NDg1N0UxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3Bl
Y3Rvckhpc3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9y
SGlzdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTU0ODgxNTE0RTQzMkEx
MDA2QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTVBhdGNoU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjEwNzMsNiArMjEwNzUsNyBAQAogCQlERjlBRkQ2RjEzRkMzMUIwMDAxNUZFQjcgLyogb2JqYyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0EyOUY1NzEx
OEM2OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCAqLywKIAkJ
CQlDREUzQTg1NjE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmgg
Ki8sCiAJCQkJQ0RFM0E4NTUxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZG
T2JqQy5tbSAqLywKIAkJCQlDRDU0QTc2MDE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwICovLApAQCAtMjQ2NzgsNiArMjQ2ODEsNyBAQAog
CQkJCTQxNTdBRjgwMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xzQXBwbGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQUI2RDI5MTdDN0RFNkMwMEM2MEIzNCAvKiBNZWRpYUNvbnRyb2xz
SG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGMkIwMDQxODFGMDU5QzAwRjJCNDI0IC8qIE1l
ZGlhRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTdBMjlGNTcyMThDNjk1MTQwMDRE
MEY4MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5NzIwNUFCODEyMzkyOTEwMDBCMTczODAgLyogTWVkaWFEb2N1bWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQ2RjI1MkQxM0Y1RUYwRTAwNjUxNjVGIC8qIE1lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjEzQUQwQ0Q2MzMxMDAwRkFEQTc1IC8q
IE1lZGlhRXJyb3IuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjUyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTk3LDYgKzE1OTcs
MTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbgogCiAgICAgaWYg
KG1fdGV4dFRyYWNrcyAmJiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKICAgICAgICAg
bV90ZXh0VHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CisKKyNpZiBFTkFCTEUoQVZGX0NB
UFRJT05TKQorICAgIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0Vs
ZW1lbnQgJiYgbV9wbGF5ZXIpCisgICAgICAgIG1fcGxheWVyLT5ub3RpZnlUcmFja01vZGVDaGFu
Z2VkKCk7CisjZW5kaWYKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2Vs
ZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sqIHRyYWNrKQpAQCAtNTUzOCw4ICs1NTQzLDYgQEAgU3Ry
aW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVXNlcgogI2lmIEVOQUJMRShBVkZfQ0FQ
VElPTlMpCiBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPj4gSFRNTE1lZGlhRWxlbWVu
dDo6b3V0T2ZCYW5kVHJhY2tTb3VyY2VzKCkKIHsKLSAgICBzdGF0aWMgaW50IHVuaXF1ZUlkID0g
MDsKLQogICAgIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiBvdXRPZkJhbmRUcmFj
a1NvdXJjZXM7CiAgICAgZm9yIChhdXRvJiB0cmFja0VsZW1lbnQgOiBjaGlsZHJlbk9mVHlwZTxI
VE1MVHJhY2tFbGVtZW50PigqdGhpcykpIHsKICAgICAgICAgCkBAIC01NTY0LDggKzU1NjcsMTgg
QEAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4+IEhUTUxNZQogICAgICAgICAgICAg
cGxhdGZvcm1LaW5kID0gUGxhdGZvcm1UZXh0VHJhY2s6OkZvcmNlZDsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgb3V0T2ZCYW5kVHJhY2tTb3VyY2VzLmFw
cGVuZChQbGF0Zm9ybVRleHRUcmFjazo6Y3JlYXRlT3V0T2ZCYW5kKHRyYWNrRWxlbWVudC5sYWJl
bCgpLCB0cmFja0VsZW1lbnQuc3JjbGFuZygpLCB1cmwuc3RyaW5nKCksIHBsYXRmb3JtS2luZCwg
Kyt1bmlxdWVJZCwgdHJhY2tFbGVtZW50LmlzRGVmYXVsdCgpKSk7CisgICAgICAgIAorICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIG1vZGUgPSB0cmFja0VsZW1lbnQudHJhY2soKS0+bW9kZSgp
OworICAgICAgICAKKyAgICAgICAgUGxhdGZvcm1UZXh0VHJhY2s6OlRyYWNrTW9kZSBwbGF0Zm9y
bU1vZGUgPSBQbGF0Zm9ybVRleHRUcmFjazo6RGlzYWJsZWQ7CisgICAgICAgIGlmIChUZXh0VHJh
Y2s6OmhpZGRlbktleXdvcmQoKSA9PSBtb2RlKQorICAgICAgICAgICAgcGxhdGZvcm1Nb2RlID0g
UGxhdGZvcm1UZXh0VHJhY2s6OkhpZGRlbjsKKyAgICAgICAgZWxzZSBpZiAoVGV4dFRyYWNrOjpk
aXNhYmxlZEtleXdvcmQoKSA9PSBtb2RlKQorICAgICAgICAgICAgcGxhdGZvcm1Nb2RlID0gUGxh
dGZvcm1UZXh0VHJhY2s6OkRpc2FibGVkOworICAgICAgICBlbHNlIGlmIChUZXh0VHJhY2s6OnNo
b3dpbmdLZXl3b3JkKCkgPT0gbW9kZSkKKyAgICAgICAgICAgIHBsYXRmb3JtTW9kZSA9IFBsYXRm
b3JtVGV4dFRyYWNrOjpTaG93aW5nOworICAgICAgICAKKyAgICAgICAgb3V0T2ZCYW5kVHJhY2tT
b3VyY2VzLmFwcGVuZChQbGF0Zm9ybVRleHRUcmFjazo6Y3JlYXRlT3V0T2ZCYW5kKHRyYWNrRWxl
bWVudC5sYWJlbCgpLCB0cmFja0VsZW1lbnQuc3JjbGFuZygpLCB1cmwuc3RyaW5nKCksIHBsYXRm
b3JtTW9kZSwgcGxhdGZvcm1LaW5kLCB0cmFja0VsZW1lbnQudHJhY2soKS0+dW5pcXVlSWQoKSwg
dHJhY2tFbGVtZW50LmlzRGVmYXVsdCgpKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBvdXRP
ZkJhbmRUcmFja1NvdXJjZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2suY3BwCShyZXZpc2lvbiAxNjUyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNTUwLDggKzU1MCw2
IEBAIGJvb2wgVGV4dFRyYWNrOjpoYXNDdWUoVlRUQ3VlKiBjdWUsIFZUVEMKICNpZiBVU0UoUExB
VEZPUk1fVEVYVF9UUkFDS19NRU5VKQogUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gVGV4
dFRyYWNrOjpwbGF0Zm9ybVRleHRUcmFjaygpCiB7Ci0gICAgc3RhdGljIGludCB1bmlxdWVJZCA9
IDA7Ci0KICAgICBpZiAobV9wbGF0Zm9ybVRleHRUcmFjaykKICAgICAgICAgcmV0dXJuIG1fcGxh
dGZvcm1UZXh0VHJhY2s7CiAKQEAgLTU3Nyw3ICs1NzUsMTUgQEAgUGFzc1JlZlB0cjxQbGF0Zm9y
bVRleHRUcmFjaz4gVGV4dFRyYWNrOgogICAgIGVsc2UgaWYgKG1fdHJhY2tUeXBlID09IEluQmFu
ZCkKICAgICAgICAgdHlwZSA9IFBsYXRmb3JtVGV4dFRyYWNrOjpJbkJhbmQ7CiAKLSAgICBtX3Bs
YXRmb3JtVGV4dFRyYWNrID0gUGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0ZSh0aGlzLCBsYWJlbCgp
LCBsYW5ndWFnZSgpLCBwbGF0Zm9ybUtpbmQsIHR5cGUsICsrdW5pcXVlSWQpOworICAgIFBsYXRm
b3JtVGV4dFRyYWNrOjpUcmFja01vZGUgcGxhdGZvcm1Nb2RlID0gUGxhdGZvcm1UZXh0VHJhY2s6
OkRpc2FibGVkOworICAgIGlmIChUZXh0VHJhY2s6OmhpZGRlbktleXdvcmQoKSA9PSBtb2RlKCkp
CisgICAgICAgIHBsYXRmb3JtTW9kZSA9IFBsYXRmb3JtVGV4dFRyYWNrOjpIaWRkZW47CisgICAg
ZWxzZSBpZiAoVGV4dFRyYWNrOjpkaXNhYmxlZEtleXdvcmQoKSA9PSBtb2RlKCkpCisgICAgICAg
IHBsYXRmb3JtTW9kZSA9IFBsYXRmb3JtVGV4dFRyYWNrOjpEaXNhYmxlZDsKKyAgICBlbHNlIGlm
IChUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkgPT0gbW9kZSgpKQorICAgICAgICBwbGF0Zm9y
bU1vZGUgPSBQbGF0Zm9ybVRleHRUcmFjazo6U2hvd2luZzsKKworICAgIG1fcGxhdGZvcm1UZXh0
VHJhY2sgPSBQbGF0Zm9ybVRleHRUcmFjazo6Y3JlYXRlKHRoaXMsIGxhYmVsKCksIGxhbmd1YWdl
KCksIHBsYXRmb3JtTW9kZSwgcGxhdGZvcm1LaW5kLCB0eXBlLCB1bmlxdWVJZCgpKTsKIAogICAg
IHJldHVybiBtX3BsYXRmb3JtVGV4dFRyYWNrOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVHJhY2tCYXNlLmNwcAkocmV2aXNpb24gMTY1MjE2KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsMTQg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgaW50IHNfdW5pcXVlSWQgPSAwOwor
CiBUcmFja0Jhc2U6OlRyYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQs
IGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2Up
CiAgICAgOiBtX21lZGlhRWxlbWVudCgwKQogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAg
LCBtX3NvdXJjZUJ1ZmZlcigwKQogI2VuZGlmCisgICAgLCBtX3VuaXF1ZUlkKCsrc191bmlxdWVJ
ZCkKICAgICAsIG1faWQoaWQpCiAgICAgLCBtX2xhYmVsKGxhYmVsKQogICAgICwgbV9sYW5ndWFn
ZShsYW5ndWFnZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAkocmV2
aXNpb24gMTY1MjE2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJDbGllbnQoKSA9IDA7CiAKKyAgICB2aXJ0dWFsIGludCB1bmlxdWVJZCgpIGNvbnN0
IHsgcmV0dXJuIG1fdW5pcXVlSWQ7IH0KKwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAg
U291cmNlQnVmZmVyKiBzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUJ1ZmZl
cjsgfQogICAgIHZvaWQgc2V0U291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlciogYnVmZmVyKSB7IG1f
c291cmNlQnVmZmVyID0gYnVmZmVyOyB9CkBAIC04NSw2ICs4Nyw3IEBAIHByb3RlY3RlZDoKIAog
cHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKKyAgICBpbnQgbV91bmlxdWVJZDsKICAgICBBdG9t
aWNTdHJpbmcgbV9pZDsKICAgICBBdG9taWNTdHJpbmcgbV9raW5kOwogICAgIEF0b21pY1N0cmlu
ZyBtX2xhYmVsOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAkocmV2aXNpb24gMTY1MjE2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcyLDYg
KzEyNzIsMTIgQEAgdm9pZCBNZWRpYVBsYXllcjo6c2V0VGV4dFRyYWNrUmVwcmVzZW50YQogfQog
CiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKK3ZvaWQgTWVkaWFQbGF5ZXI6Om5vdGlmeVRyYWNr
TW9kZUNoYW5nZWQoKQoreworICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+
bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpOworfQorCiBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4
dFRyYWNrPj4gTWVkaWFQbGF5ZXI6Om91dE9mQmFuZFRyYWNrU291cmNlcygpCiB7CiAgICAgaWYg
KCFtX21lZGlhUGxheWVyQ2xpZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCShyZXZpc2lvbiAxNjUyMTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MzcsNiArNTM3LDcgQEAgcHVibGljOgogICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4
dFRyYWNrUmVwcmVzZW50YXRpb24qKTsKICNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQorICAgIHZv
aWQgbm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpOwogICAgIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1U
ZXh0VHJhY2s+PiBvdXRPZkJhbmRUcmFja1NvdXJjZXMoKTsKICNlbmRpZgogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaAkocmV2aXNpb24gMTY1MjE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjQ3LDYgKzI0NywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBsb25nIGNvcnJ1cHRlZFZpZGVvRnJhbWVzKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwg
ZG91YmxlIHRvdGFsRnJhbWVEZWxheSgpIHsgcmV0dXJuIDA7IH0KICNlbmRpZgorCisjaWYgRU5B
QkxFKEFWRl9DQVBUSU9OUykKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5VHJhY2tNb2RlQ2hhbmdl
ZCgpIHsgfQorI2VuZGlmCiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgJKHJldmlzaW9uIDE2NTIxNikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDIxICs1OSwyNyBAQCBwdWJsaWM6CiAgICAgICAgIE91dE9m
QmFuZCA9IDEsCiAgICAgICAgIFNjcmlwdCA9IDIKICAgICB9OwotCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+IGNyZWF0ZShQbGF0Zm9ybVRleHRUcmFja0NsaWVudCog
Y2xpZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBUcmFj
a0tpbmQga2luZCwgVHJhY2tUeXBlIHR5cGUsIGludCB1bmlxdWVJZCkKKyAgICBlbnVtIFRyYWNr
TW9kZSB7CisgICAgICAgIERpc2FibGVkLAorICAgICAgICBIaWRkZW4sCisgICAgICAgIFNob3dp
bmcKKyAgICB9OworICAgIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNr
PiBjcmVhdGUoUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgVHJhY2tNb2RlIG1vZGUsIFRyYWNrS2luZCBr
aW5kLCBUcmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGllbnQsIGxhYmVsLCBsYW5ndWFnZSwg
U3RyaW5nKCksIGtpbmQsIHR5cGUsIHVuaXF1ZUlkLCBmYWxzZSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFBsYXRmb3JtVGV4dFRyYWNrKGNsaWVudCwgbGFiZWwsIGxhbmd1YWdlLCBT
dHJpbmcoKSwgbW9kZSwga2luZCwgdHlwZSwgdW5pcXVlSWQsIGZhbHNlKSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+IGNyZWF0ZU91dE9mQmFuZChj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBTdHJpbmcm
IHVybCwgVHJhY2tLaW5kIGtpbmQsIGludCB1bmlxdWVJZCwgYm9vbCBpc0RlZmF1bHQpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+IGNyZWF0ZU91dE9mQmFuZChjb25z
dCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBTdHJpbmcmIHVy
bCwgVHJhY2tNb2RlIG1vZGUsIFRyYWNrS2luZCBraW5kLCBpbnQgdW5pcXVlSWQsIGJvb2wgaXNE
ZWZhdWx0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVRleHRU
cmFjayhudWxscHRyLCBsYWJlbCwgbGFuZ3VhZ2UsIHVybCwga2luZCwgT3V0T2ZCYW5kLCB1bmlx
dWVJZCwgaXNEZWZhdWx0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1U
ZXh0VHJhY2sobnVsbHB0ciwgbGFiZWwsIGxhbmd1YWdlLCB1cmwsIG1vZGUsIGtpbmQsIE91dE9m
QmFuZCwgdW5pcXVlSWQsIGlzRGVmYXVsdCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflBsYXRm
b3JtVGV4dFRyYWNrKCkgeyB9CiAgICAgCiAgICAgVHJhY2tUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KICAgICBUcmFja0tpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2lu
ZDsgfQorICAgIFRyYWNrTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KICAgICBjb25z
dCBTdHJpbmcmIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQogICAgIGNv
bnN0IFN0cmluZyYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KQEAgLTgzLDIxICs4OSwy
MiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sqIGNhcHRpb25NZW51
T2ZmSXRlbSgpCiAgICAgewotICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sqIG9mZiA9
IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iLCAiIiwg
U3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxhdGZvcm1U
ZXh0VHJhY2sqIG9mZiA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBt
ZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigpOwog
ICAgICAgICByZXR1cm4gb2ZmOwogICAgIH0KIAogICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFj
ayogY2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBQbGF0
Zm9ybVRleHRUcmFjayogYXV0b21hdGljID0gUGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0ZShudWxs
cHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSIsICIiLCBTdWJ0aXRsZSwgSW5CYW5kLCAwKS5sZWFr
UmVmKCk7CisgICAgICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogYXV0b21hdGljID0gUGxh
dGZvcm1UZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSIsICIi
LCBTaG93aW5nLCBTdWJ0aXRsZSwgSW5CYW5kLCAwKS5sZWFrUmVmKCk7CiAgICAgICAgIHJldHVy
biBhdXRvbWF0aWM7CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUGxhdGZvcm1UZXh0VHJhY2so
UGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29u
c3QgU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrS2luZCBraW5kLCBU
cmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKKyAgICBQbGF0Zm9y
bVRleHRUcmFjayhQbGF0Zm9ybVRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBTdHJpbmcmIHVybCwgVHJhY2tN
b2RlIG1vZGUsIFRyYWNrS2luZCBraW5kLCBUcmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkLCBi
b29sIGlzRGVmYXVsdCkKICAgICAgICAgOiBtX2xhYmVsKGxhYmVsKQogICAgICAgICAsIG1fbGFu
Z3VhZ2UobGFuZ3VhZ2UpCiAgICAgICAgICwgbV91cmwodXJsKQorICAgICAgICAsIG1fbW9kZSht
b2RlKQogICAgICAgICAsIG1fa2luZChraW5kKQogICAgICAgICAsIG1fdHlwZSh0eXBlKQogICAg
ICAgICAsIG1fY2xpZW50KGNsaWVudCkKQEAgLTEwOSw2ICsxMTYsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgU3RyaW5nIG1fbGFiZWw7CiAgICAgU3RyaW5nIG1fbGFuZ3VhZ2U7CiAgICAgU3RyaW5nIG1f
dXJsOworICAgIFRyYWNrTW9kZSBtX21vZGU7CiAgICAgVHJhY2tLaW5kIG1fa2luZDsKICAgICBU
cmFja1R5cGUgbV90eXBlOwogICAgIFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50KiBtX2NsaWVudDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAko
cmV2aXNpb24gMTY1MjE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC01NSwxNSArNTUsMjAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQmVlblJlcG9ydGVkKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNCZWVuUmVwb3J0ZWQ7IH0KICAgICB2b2lkIHNldEhhc0JlZW5SZXBv
cnRlZChib29sIHJlcG9ydGVkKSB7IG1faGFzQmVlblJlcG9ydGVkID0gcmVwb3J0ZWQ7IH0KIAot
ICAgIHZvaWQgcHJvY2Vzc0N1ZShDRkFycmF5UmVmLCBkb3VibGUpOwotICAgIHZvaWQgcmVzZXRD
dWVWYWx1ZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0N1ZShDRkFycmF5UmVmLCBkb3Vi
bGUpOworICAgIHZpcnR1YWwgdm9pZCByZXNldEN1ZVZhbHVlcygpOwogCiAgICAgdm9pZCBiZWdp
blNlZWtpbmcoKTsKICAgICB2b2lkIGVuZFNlZWtpbmcoKSB7IG1fc2Vla2luZyA9IGZhbHNlOyB9
CiAgICAgYm9vbCBzZWVraW5nKCkgY29uc3QgeyByZXR1cm4gbV9zZWVraW5nOyB9CiAgICAgCi0g
ICAgdmlydHVhbCBib29sIGlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpIGNvbnN0ID0gMDsK
LQorICAgIGVudW0gQ2F0ZWdvcnkgeworICAgICAgICBMZWdhY3lDbG9zZWRDYXB0aW9uLAorICAg
ICAgICBPdXRPZkJhbmQsCisgICAgICAgIEluQmFuZAorICAgIH07CisgICAgdmlydHVhbCBDYXRl
Z29yeSB0ZXh0VHJhY2tDYXRlZ29yeSgpIGNvbnN0ID0gMDsKKyAgICAKIHByb3RlY3RlZDoKICAg
ICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKEFWRkluYmFuZFRyYWNrUGFyZW50Kik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uY3BwCShyZXZpc2lvbiAxNjUyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC05MDcsNiArOTA3LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uOjpkaXMKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Ojpjb25maWd1cmVJbmJhbmRUcmFja3MoKQogewogICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGPiB0cmFja1RvRW5hYmxlOworICAgIAorI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMp
CisgICAgc3luY2hyb25pemVUZXh0VHJhY2tTdGF0ZSgpOworI2VuZGlmCiAKICAgICAvLyBBVkZv
dW5kYXRpb24gY2FuIG9ubHkgZW1pdCBjdWVzIGZvciBvbmUgdHJhY2sgYXQgYSB0aW1lLCBzbyBl
bmFibGUgdGhlIGZpcnN0IHRyYWNrIHRoYXQgaXMgc2hvd2luZywgb3IgdGhlIGZpcnN0IHRoYXQK
ICAgICAvLyBpcyBoaWRkZW4gaWYgbm9uZSBhcmUgc2hvd2luZy4gT3RoZXJ3aXNlIGRpc2FibGUg
YWxsIHRyYWNrcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmgJKHJldmlzaW9uIDE2NTIxNikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOTQsNiArMjk0LDEwIEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHNpemVfdCBleHRyYU1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIHZpcnR1YWwgdm9pZCB0cmFja01vZGVDaGFuZ2VkKCkgb3ZlcnJpZGU7CisjaWYg
RU5BQkxFKEFWRl9DQVBUSU9OUykKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5VHJhY2tNb2RlQ2hh
bmdlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVRleHRUcmFja1N0YXRlKCkg
eyB9CisjZW5kaWYKICAgICB2b2lkIHByb2Nlc3NOZXdBbmRSZW1vdmVkVGV4dFRyYWNrcyhjb25z
dCBWZWN0b3I8UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY+PiYpOwogICAgIHZvaWQg
Y2xlYXJUZXh0VHJhY2tzKCk7CiAgICAgVmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGPj4gbV90ZXh0VHJhY2tzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgJKHJldmlzaW9uIDE2NTIxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZDRi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9v
bCBpc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2soKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgQ2F0ZWdvcnkgdGV4dFRyYWNrQ2F0ZWdvcnkoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBJbkJhbmQ7IH0KIAogICAgIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlv
blJlZiBtZWRpYVNlbGVjdGlvbk9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTZWxlY3Rp
b25PcHRpb24uZ2V0KCk7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmgJKHJldmlzaW9uIDE2NTIxNikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1
NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgQ2F0ZWdvcnkgdGV4dFRyYWNr
Q2F0ZWdvcnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBMZWdhY3lDbG9zZWRDYXB0aW9uOyB9
CiAKICAgICBBVkNGUGxheWVySXRlbVRyYWNrUmVmIGF2UGxheWVySXRlbVRyYWNrKCkgY29uc3Qg
eyByZXR1cm4gbV9wbGF5ZXJJdGVtVHJhY2suZ2V0KCk7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yu
Y3BwCShyZXZpc2lvbiAxNjUyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpwCiAKICAgICAgICAgYm9vbCBuZXdDQ1RyYWNrID0gdHJ1ZTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVtb3ZlZFRleHRUcmFja3Muc2l6ZSgpOyBpID4gMDsg
LS1pKSB7Ci0gICAgICAgICAgICBpZiAoIXJlbW92ZWRUZXh0VHJhY2tzW2kgLSAxXS0+aXNMZWdh
Y3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkpCisgICAgICAgICAgICBpZiAoIXJlbW92ZWRUZXh0VHJh
Y2tzW2kgLSAxXS0+dGV4dFRyYWNrQ2F0ZWdvcnkoKSA9PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGOjpMZWdhY3lDbG9zZWRDYXB0aW9uKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y+IHRyYWNr
ID0gc3RhdGljX2Nhc3Q8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YqPihtX3RleHRU
cmFja3NbaSAtIDFdLmdldCgpKTsKQEAgLTEwNzksNyArMTA3OSw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnAKICAgICAgICAgQVZDRk1lZGlhU2VsZWN0aW9uT3B0
aW9uUmVmIG9wdGlvbiA9IHN0YXRpY19jYXN0PEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZj4o
Q0ZBcnJheUdldFZhbHVlQXRJbmRleChsZWdpYmxlT3B0aW9ucy5nZXQoKSwgaSkpOwogICAgICAg
ICBib29sIG5ld1RyYWNrID0gdHJ1ZTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVtb3Zl
ZFRleHRUcmFja3Muc2l6ZSgpOyBpID4gMDsgLS1pKSB7Ci0gICAgICAgICAgICBpZiAocmVtb3Zl
ZFRleHRUcmFja3NbaSAtIDFdLT5pc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2soKSkKKyAgICAg
ICAgICAgIGlmIChyZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0tPnRleHRUcmFja0NhdGVnb3J5KCkg
PT0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6TGVnYWN5Q2xvc2VkQ2FwdGlvbikKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkNGPiB0cmFjayA9IHN0YXRpY19jYXN0PEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkNGKj4ocmVtb3ZlZFRleHRUcmFja3NbaSAtIDFdLmdldCgpKTsKQEAgLTExMTAsNyArMTExMCw3
IEBAIHZvaWQgQVZGV3JhcHBlcjo6c2V0Q3VycmVudFRyYWNrKEluYmFuZFQKICAgICBtX2N1cnJl
bnRUcmFjayA9IHRyYWNrOwogCiAgICAgaWYgKHRyYWNrKSB7Ci0gICAgICAgIGlmICh0cmFjay0+
aXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkpCisgICAgICAgIGlmICh0cmFjay0+dGV4dFRy
YWNrQ2F0ZWdvcnkoKSA9PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpMZWdhY3lDbG9zZWRD
YXB0aW9uKQogICAgICAgICAgICAgQVZDRlBsYXllclNldENsb3NlZENhcHRpb25EaXNwbGF5RW5h
YmxlZChhdlBsYXllcigpLCBUUlVFKTsKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxF
Q1RJT05fR1JPVVApCiAgICAgICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpD
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAkocmV2aXNpb24gMTY1
MjE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01
Niw4ICs1Niw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQorICAgIHZpcnR1YWwgQ2F0ZWdvcnkg
dGV4dFRyYWNrQ2F0ZWdvcnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbkJhbmQ7IH0KKyAg
ICAKICAgICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICptZWRpYVNlbGVjdGlvbk9wdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fbWVkaWFTZWxlY3Rpb25PcHRpb24uZ2V0KCk7IH0KIAogcHJvdGVjdGVk
OgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oCShyZXZpc2lvbiAxNjUyMTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU2LDggKzU2LDggQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgYm9vbCBpc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2soKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0KKyAgICB2aXJ0dWFsIENhdGVnb3J5IHRleHRUcmFja0NhdGVn
b3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTGVnYWN5Q2xvc2VkQ2FwdGlvbjsgfQorICAg
IAogICAgIEFWUGxheWVySXRlbVRyYWNrICphdlBsYXllckl0ZW1UcmFjaygpIGNvbnN0IHsgcmV0
dXJuIG1fcGxheWVySXRlbVRyYWNrLmdldCgpOyB9CiAKIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgJKHJldmlzaW9uIDE2NTIxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTYsNyArMTE2LDEyIEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCiAgICAgdm9pZCBwbGF5YmFja1RhcmdldElz
V2lyZWxlc3NEaWRDaGFuZ2UoKTsKICNlbmRpZgotCisgICAgCisjaWYgRU5BQkxFKEFWRl9DQVBU
SU9OUykKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVRleHRUcmFja1N0YXRlKCkgb3ZlcnJpZGU7
CisjZW5kaWYKKyAgICAKICAgICBXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdl
YWtQdHIoKTsgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCShyZXZp
c2lvbiAxNjUyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgog
I2ltcG9ydCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaCIKICNpbXBvcnQgIkluYmFu
ZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmgiCisjaW1wb3J0ICJPdXRPZkJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGLmgiCiAjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIK
ICNpbXBvcnQgIlBsYXRmb3JtVGltZVJhbmdlcy5oIgpAQCAtODMsNyArODQsOCBAQAogLy8gTm90
ZTogVGhpcyBtdXN0IGJlIGRlZmluZWQgYmVmb3JlIG91ciBTT0ZUX0xJTksgbWFjcm9zOgogQGNs
YXNzIEFWTWVkaWFTZWxlY3Rpb25PcHRpb247CiBAaW50ZXJmYWNlIEFWTWVkaWFTZWxlY3Rpb25P
cHRpb24gKE91dE9mQmFuZEV4dGVuc2lvbnMpCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIE5TU3RyaW5nICpvdXRPZkJhbmRTb3VyY2UgLypOU19BVkFJTEFCTEUoVEJELCBUQkQpKi87
CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nKiBvdXRPZkJhbmRTb3Vy
Y2U7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nKiBvdXRPZkJhbmRJ
ZGVudGlmaWVyOwogQGVuZAogI2VuZGlmCiAKQEAgLTUzNCw2ICs1MzYsNDIgQEAgc3RhdGljIGNv
bnN0IE5TQXJyYXkqIG1lZGlhRGVzY3JpcHRpb25GbwogCiAgICAgcmV0dXJuIFtOU0FycmF5IGFy
cmF5V2l0aE9iamVjdHM6IEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlh
bG9nRm9yQWNjZXNzaWJpbGl0eSwgbmlsXTsKIH0KKyAgICAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpCit7CisgICAgdHJh
Y2tNb2RlQ2hhbmdlZCgpOworfQorICAgIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzeW5jaHJvbml6ZVRleHRUcmFja1N0YXRlKCkKK3sKKyAgICBjb25zdCBWZWN0
b3I8UmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPj4mIG91dE9mQmFuZFRyYWNrU291cmNlcyA9IHBs
YXllcigpLT5vdXRPZkJhbmRUcmFja1NvdXJjZXMoKTsKKyAgICAKKyAgICBmb3IgKGF1dG8mIHRl
eHRUcmFjayA6IG1fdGV4dFRyYWNrcykgeworICAgICAgICBpZiAodGV4dFRyYWNrLT50ZXh0VHJh
Y2tDYXRlZ29yeSgpID09IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6Ok91dE9mQmFuZCkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgUmVmUHRyPE91dE9mQmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY+IHRyYWNrUHJpdmF0ZSA9IHN0YXRpY19jYXN0PE91dE9mQmFuZFRl
eHRUcmFja1ByaXZhdGVBVkYqPih0ZXh0VHJhY2suZ2V0KCkpOworICAgICAgICBSZXRhaW5QdHI8
QVZNZWRpYVNlbGVjdGlvbk9wdGlvblR5cGU+IGN1cnJlbnRPcHRpb24gPSB0cmFja1ByaXZhdGUt
Pm1lZGlhU2VsZWN0aW9uT3B0aW9uKCk7CisgICAgICAgIAorICAgICAgICBmb3IgKGF1dG8mIHRy
YWNrIDogb3V0T2ZCYW5kVHJhY2tTb3VyY2VzKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHVuaXF1ZUlEID0gU3RyaW5nOjpudW1iZXIodHJhY2stPnVuaXF1ZUlkKCkpLmNy
ZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghW1tjdXJyZW50
T3B0aW9uLmdldCgpIG91dE9mQmFuZElkZW50aWZpZXJdIGlzRXF1YWw6IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTlNTdHJpbmcqPih1bmlxdWVJRC5nZXQoKSldKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
OjpNb2RlIG1vZGUgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpIaWRkZW47CisgICAgICAgICAg
ICBpZiAodHJhY2stPm1vZGUoKSA9PSBQbGF0Zm9ybVRleHRUcmFjazo6SGlkZGVuKQorICAgICAg
ICAgICAgICAgIG1vZGUgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpIaWRkZW47CisgICAgICAg
ICAgICBlbHNlIGlmICh0cmFjay0+bW9kZSgpID09IFBsYXRmb3JtVGV4dFRyYWNrOjpEaXNhYmxl
ZCkKKyAgICAgICAgICAgICAgICBtb2RlID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6RGlzYWJs
ZWQ7CisgICAgICAgICAgICBlbHNlIGlmICh0cmFjay0+bW9kZSgpID09IFBsYXRmb3JtVGV4dFRy
YWNrOjpTaG93aW5nKQorICAgICAgICAgICAgICAgIG1vZGUgPSBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlOjpTaG93aW5nOworICAgICAgICAgICAgCisgICAgICAgICAgICB0ZXh0VHJhY2stPnNldE1v
ZGUobW9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KICNlbmRp
ZgogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNz
ZXRGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCkBAIC0xNzQ1LDcgKzE3ODMsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKICAgICAgICAgYm9vbCBuZXdDQ1Ry
YWNrID0gdHJ1ZTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVtb3ZlZFRleHRUcmFja3Mu
c2l6ZSgpOyBpID4gMDsgLS1pKSB7Ci0gICAgICAgICAgICBpZiAoIXJlbW92ZWRUZXh0VHJhY2tz
W2kgLSAxXS0+aXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkpCisgICAgICAgICAgICBpZiAo
IXJlbW92ZWRUZXh0VHJhY2tzW2kgLSAxXS0+dGV4dFRyYWNrQ2F0ZWdvcnkoKSA9PSBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGOjpMZWdhY3lDbG9zZWRDYXB0aW9uKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWRk9iakM+IHRyYWNrID0gc3RhdGljX2Nhc3Q8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWRk9iakMqPihtX3RleHRUcmFja3NbaSAtIDFdLmdldCgpKTsKQEAgLTE3OTYsMTEgKzE4
MzQsMjIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAgIGZv
ciAoQVZNZWRpYVNlbGVjdGlvbk9wdGlvblR5cGUgKm9wdGlvbiBpbiBsZWdpYmxlT3B0aW9ucykg
ewogICAgICAgICBib29sIG5ld1RyYWNrID0gdHJ1ZTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gcmVtb3ZlZFRleHRUcmFja3Muc2l6ZSgpOyBpID4gMDsgLS1pKSB7Ci0gICAgICAgICAgICAg
aWYgKHJlbW92ZWRUZXh0VHJhY2tzW2kgLSAxXS0+aXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNr
KCkpCi0gICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBSZWZQdHI8SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM+IHRyYWNrID0gc3RhdGljX2Nhc3Q8SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRk9iakMqPihyZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0uZ2V0KCkpOwot
ICAgICAgICAgICAgaWYgKFt0cmFjay0+bWVkaWFTZWxlY3Rpb25PcHRpb24oKSBpc0VxdWFsOm9w
dGlvbl0pIHsKKyAgICAgICAgICAgIGlmIChyZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0tPnRleHRU
cmFja0NhdGVnb3J5KCkgPT0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6TGVnYWN5Q2xvc2Vk
Q2FwdGlvbikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgUmV0YWluUHRyPEFWTWVkaWFTZWxlY3Rpb25PcHRpb25UeXBlPiBjdXJyZW50T3B0aW9u
OworI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCisgICAgICAgICAgICBpZiAocmVtb3ZlZFRleHRU
cmFja3NbaSAtIDFdLT50ZXh0VHJhY2tDYXRlZ29yeSgpID09IEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkY6Ok91dE9mQmFuZCkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxPdXRPZkJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGPiB0cmFjayA9IHN0YXRpY19jYXN0PE91dE9mQmFuZFRleHRUcmFja1By
aXZhdGVBVkYqPihyZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0uZ2V0KCkpOworICAgICAgICAgICAg
ICAgIGN1cnJlbnRPcHRpb24gPSB0cmFjay0+bWVkaWFTZWxlY3Rpb25PcHRpb24oKTsKKyAgICAg
ICAgICAgIH0gZWxzZQorI2VuZGlmCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUmVm
UHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDPiB0cmFjayA9IHN0YXRpY19jYXN0PElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDKj4ocmVtb3ZlZFRleHRUcmFja3NbaSAtIDFdLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50T3B0aW9uID0gdHJhY2stPm1lZGlhU2VsZWN0
aW9uT3B0aW9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlm
IChbY3VycmVudE9wdGlvbi5nZXQoKSBpc0VxdWFsOm9wdGlvbl0pIHsKICAgICAgICAgICAgICAg
ICByZW1vdmVkVGV4dFRyYWNrcy5yZW1vdmUoaSAtIDEpOwogICAgICAgICAgICAgICAgIG5ld1Ry
YWNrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xODEwLDkgKzE4NTksMTEg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAgICAgICAgICAg
Y29udGludWU7CiAKICNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQotICAgICAgICAvLyBJZ25vcmUg
b3V0LW9mLWJhbmQgdHJhY2tzIHRoYXQgd2UgcGFzc2VkIHRvIEFWRm91bmRhdGlvbiBzbyB3ZSBk
byBub3QgZG91YmxlLWNvdW50IHRoZW0KLSAgICAgICAgaWYgKFtvcHRpb24gb3V0T2ZCYW5kU291
cmNlXSkKKyAgICAgICAgaWYgKFtvcHRpb24gb3V0T2ZCYW5kU291cmNlXSkgeworICAgICAgICAg
ICAgbV90ZXh0VHJhY2tzLmFwcGVuZChPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpjcmVh
dGUodGhpcywgb3B0aW9uKSk7CisgICAgICAgICAgICBtX3RleHRUcmFja3MubGFzdCgpLT5zZXRI
YXNCZWVuUmVwb3J0ZWQodHJ1ZSk7IC8vIElnbm9yZSBvdXQtb2YtYmFuZCB0cmFja3MgdGhhdCB3
ZSBwYXNzZWQgdG8gQVZGb3VuZGF0aW9uIHNvIHdlIGRvIG5vdCBkb3VibGUtY291bnQgdGhlbQog
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIG1fdGV4
dFRyYWNrcy5hcHBlbmQoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlz
LCBvcHRpb24pKTsKQEAgLTE4NTAsOSArMTkwMSwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgbV9jdXJyZW50VHJhY2sgPSB0cmFjazsKIAogICAgIGlm
ICh0cmFjaykgewotICAgICAgICBpZiAodHJhY2stPmlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFj
aygpKQorICAgICAgICBpZiAodHJhY2stPnRleHRUcmFja0NhdGVnb3J5KCkgPT0gSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRjo6TGVnYWN5Q2xvc2VkQ2FwdGlvbikKICAgICAgICAgICAgIFttX2F2
UGxheWVyLmdldCgpIHNldENsb3NlZENhcHRpb25EaXNwbGF5RW5hYmxlZDpZRVNdOwogI2lmIEhB
VkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKKyNpZiBFTkFCTEUoQVZGX0NB
UFRJT05TKQorICAgICAgICBlbHNlIGlmICh0cmFjay0+dGV4dFRyYWNrQ2F0ZWdvcnkoKSA9PSBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpPdXRPZkJhbmQpCisgICAgICAgICAgICBbbV9hdlBs
YXllckl0ZW0uZ2V0KCkgc2VsZWN0TWVkaWFPcHRpb246c3RhdGljX2Nhc3Q8T3V0T2ZCYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRio+KHRyYWNrKS0+bWVkaWFTZWxlY3Rpb25PcHRpb24oKSBpbk1lZGlh
U2VsZWN0aW9uR3JvdXA6c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKV07
CisjZW5kaWYKICAgICAgICAgZWxzZQogICAgICAgICAgICAgW21fYXZQbGF5ZXJJdGVtLmdldCgp
IHNlbGVjdE1lZGlhT3B0aW9uOnN0YXRpY19jYXN0PEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZP
YmpDKj4odHJhY2spLT5tZWRpYVNlbGVjdGlvbk9wdGlvbigpIGluTWVkaWFTZWxlY3Rpb25Hcm91
cDpzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgpXTsKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvT3V0
T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1By
aXZhdGVBVkYuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBPdXRPZkJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGX2gKKyNkZWZpbmUgT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRl9oCisKKyNpZiBFTkFCTEUoVklERU8pICYmIChVU0UoQVZGT1VOREFUSU9OKSB8fCBQTEFU
Rk9STShJT1MpKSAmJiBFTkFCTEUoQVZGX0NBUFRJT05TKQorCisjaW5jbHVkZSAiSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5oIgorCitPQkpDX0NMQVNTIEFWTWVkaWFTZWxlY3Rpb25PcHRpb247
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIE91dE9mQmFuZFRleHRUcmFja1By
aXZhdGVBVkYgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8T3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gY3JlYXRl
KEFWRkluYmFuZFRyYWNrUGFyZW50KiBwbGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBz
ZWxlY3Rpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE91dE9mQmFuZFRl
eHRUcmFja1ByaXZhdGVBVkYocGxheWVyLCBzZWxlY3Rpb24pKTsKKyAgICB9CisgICAgCisgICAg
dmlydHVhbCB2b2lkIHByb2Nlc3NDdWUoQ0ZBcnJheVJlZiwgZG91YmxlKSBvdmVycmlkZSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRDdWVWYWx1ZXMoKSBvdmVycmlkZSB7IH0KKyAgICAKKyAg
ICB2aXJ0dWFsIENhdGVnb3J5IHRleHRUcmFja0NhdGVnb3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gT3V0T2ZCYW5kOyB9CisgICAgCisgICAgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiogbWVk
aWFTZWxlY3Rpb25PcHRpb24oKSBjb25zdCB7IHJldHVybiBtX21lZGlhU2VsZWN0aW9uT3B0aW9u
LmdldCgpOyB9CisgICAgCitwcm90ZWN0ZWQ6CisgICAgT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRihBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVyLCBBVk1lZGlhU2VsZWN0aW9uT3B0aW9u
KiBzZWxlY3Rpb24pCisgICAgICAgIDogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRihwbGF5ZXIp
CisgICAgICAgICwgbV9tZWRpYVNlbGVjdGlvbk9wdGlvbihzZWxlY3Rpb24pCisgICAgeworICAg
IH0KKyAgICAKKyAgICBSZXRhaW5QdHI8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbj4gbV9tZWRpYVNl
bGVjdGlvbk9wdGlvbjsKK307CisgICAgCit9CisKKyNlbmRpZgorCisjZW5kaWYgLy8gT3V0T2ZC
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pb3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRklPUy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGSU9TLmgJKHJldmlzaW9uIDE2NTIxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lvcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGSU9TLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZTo6S2luZCBraW5kKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBBdG9taWNTdHJp
bmcgbGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX25hbWU7IH0KICAgICB2aXJ0dWFs
IEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFuZ3Vh
Z2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIENhdGVnb3J5IHRleHRU
cmFja0NhdGVnb3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW5CYW5kOyB9CiAgICAgaW50
IGludGVybmFsSUQoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsSUQ7IH0KIAogcHJvdGVjdGVk
OgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL01lZGlhUGxheWVy
UHJpdmF0ZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pb3MvTWVkaWFQbGF5ZXJQcml2YXRlSU9TLm1tCShyZXZpc2lvbiAxNjUyMTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvTWVkaWFQbGF5ZXJQcml2YXRlSU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05ODQsNyArOTg0LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVJT1M6OnNldFNlbGVjdGVkVAogCiAgICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CiAg
ICAgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVJT1M6OnNldEN1cnJl
bnRUcmFjayglcCkgLSBzZWxlY3RpbmcgdHJhY2sgaWQgJWkiLCB0aGlzLCBbdHJhY2tJRCBpbnRW
YWx1ZV0pOworICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVJT1M6OnNldFNl
bGVjdGVkVGV4dFRyYWNrKCVwKSAtIHNlbGVjdGluZyB0cmFjayBpZCAlaSIsIHRoaXMsIFt0cmFj
a0lEIGludFZhbHVlXSk7CiAgICAgICAgIFttX2RlZmVycmVkUHJvcGVydGllcy5nZXQoKSByZW1v
dmVPYmplY3RGb3JLZXk6RGVmZXJyZWRQcm9wZXJ0eVNlbGVjdGVkVHJhY2tLZXldOwogICAgICAg
ICBbbV9tZWRpYVBsYXllckhlbHBlci5nZXQoKSBfc2V0U2VsZWN0ZWRUZXh0VHJhY2s6dHJhY2tJ
RF07CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226043</attachid>
            <date>2014-03-06 14:45:52 -0800</date>
            <delta_ts>2014-03-06 14:47:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129749-20140306144550.patch</filename>
            <type>text/plain</type>
            <size>40593</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTIxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDE0LTAzLTA2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlzZSBPdXQtb2YtYmFu
ZCBWVFQgc3VwcG9ydCBmb3IgYmV0dGVyIGludGVncmF0aW9uIHdpdGggQVZGb3VuZGF0aW9uIGVu
Z2luZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5
NzQ5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjIxNTcwMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXZpc2UgdGhlIHBsYXRmb3JtIGhhbmRs
aW5nIG9mIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzIHNvIHRoYXQgd2UgY2FuIGtlZXAgQVZGb3Vu
ZGF0aW9uCisgICAgICAgIGluZm9ybWVkIG9mIHRyYWNrIHNlbGVjdGlvbnMgd2UgbWFrZS4gVXNl
IGEgZHVtbXkgb3V0LW9mLWJhbmQgY2hpbGQgb2YgdGhlIGV4aXN0aW5nIHRleHQKKyAgICAgICAg
dHJhY2sgY2xhc3NlcyB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3IE91dE9mQmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYuaCBmaWxlLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IE5v
dGlmeSBwbGF5ZXIgd2hlbiBPT0IgdHJhY2tzIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om91dE9mQmFuZFRyYWNrU291cmNlcyk6IEFsc28gcGFzcyB0cmFjayBt
b2RlIHRvIHBsYXRmb3JtIGJhY2tlbmQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpwbGF0Zm9ybVRleHRUcmFjayk6IEFs
c28gcGFzcyB0cmFjayBtb2RlIHRvIGNvbnN0cnVjdG9yLgorICAgICAgICAqIGh0bWwvdHJhY2sv
VHJhY2tCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6VHJhY2tCYXNlKTog
TW92ZSBvd25lcnNoaXAgb2YgdHJhY2sgdW5pcXVlIGlkZW50aWZpZXIgdG8gdGhpcyBiYXNlIGNs
YXNzLgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tCYXNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFja0Jhc2U6OnVuaXF1ZUlkKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5vdGlm
eVRyYWNrTW9kZUNoYW5nZWQpOiBBZGRlZCBzdHViIHRvIHBhc3MgbWVzc2FnZSB0byBwbGF0Zm9y
bSBwbGF5ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6bm90aWZ5VHJhY2tNb2RlQ2hh
bmdlZCk6IFN0dWIgZm9yIG1vc3QgcGxhdGZvcm1zLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtVGV4dFRyYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRU
cmFjazo6Y3JlYXRlKTogVXBkYXRlIGZvciByZXZpc2VkIGNvbnN0cnVjdG9yICh3aXRoICdtb2Rl
JyBhcmd1bWVudCkuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFjazo6Y3JlYXRl
T3V0T2ZCYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFjazo6
bW9kZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UZXh0VHJhY2s6OmNhcHRp
b25NZW51T2ZmSXRlbSk6IFVzZSByZXZpc2VkIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy4KKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0p
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrOjpQbGF0Zm9ybVRl
eHRUcmFjayk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmg6IENoYW5nZSBwcmVkaWNhdGUgdG8gcmV0dXJu
IGVudW0gaW5kaWNhdGluZyB0aGUgY2F0ZWdvcnkKKyAgICAgICAgb2YgdHJhY2sgKG91dC1vZi1i
YW5kLCBsZWdhY3kgY2xvc2VkIGNhcHRpb24sIG9yIGluIGJhbmQpLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bm90
aWZ5VHJhY2tNb2RlQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oOiBPdmVycmlkZSBw
cmVkaWNhdGUgdG8gcmV0dXJuIGNhdGVnb3J5IGVudW0uCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNw
cDogUmV2aXNlIHRvIHVzZSBuZXcgY2F0ZWdvcnkgZW51bS4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5o
OiBPdmVycmlkZSBwcmVkaWNhdGUgdG8gcmV0dXJuIGNhdGVnb3J5IGVudW0uCisgICAgICAgIHRo
YXQgdGhpcyBpcyBOT1QgYW4gb3V0LW9mLWJhbmQgdHJhY2suCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFW
Rk9iakMuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpub3RpZnlUcmFja01vZGVDaGFuZ2VkKTogQWRkZWQgaW1wbGVtZW50YXRp
b24uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojpwcm9jZXNzTWVkaWFTZWxlY3Rpb25PcHRpb25zKTogUmV2aXNlIHRvIGhhbmRsZSBvdXQtb2Yt
YmFuZAorICAgICAgICB0cmFjayBwbGFjZWhvbGRlcnMuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRDdXJyZW50VHJhY2spOiBNb2RpZnkg
dG8gaW5mb3JtIEFWRm91bmRhdGlvbiBhYm91dCBhbnkKKyAgICAgICAgb3V0LW9mLWJhbmQgdHJh
Y2tzIHdlJ3ZlIHNlbGVjdGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6c3luY2hyb25pemVUZXh0VHJhY2tTdGF0ZSk6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRU
cmFja1ByaXZhdGVBVkYuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpPdXRPZkJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6T3V0T2ZCYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpPdXRPZkJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGOjpyZXNldEN1ZVZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjptZWRpYVNlbGVjdGlvbk9wdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpPdXRPZkJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGKToKKyAgICAgICAgKFdlYkNvcmU6Ok91dE9mQmFuZFRleHRUcmFj
a1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9pb3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRklPUy5oOiBPdmVycmlkZSBwcmVk
aWNhdGUgdG8gaW5kaWNhdGUKKyAgICAgICAgdGhhdCB0aGlzIGlzIE5PVCBhbiBvdXQtb2YtYmFu
ZCB0cmFjay4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvTWVkaWFQbGF5ZXJQcml2
YXRlSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSU9TOjpzZXRT
ZWxlY3RlZFRleHRUcmFjayk6IENvcnJlY3QgdHlwbyBpbiBsb2dnaW5nIHRleHQuCisKIDIwMTQt
MDMtMDYgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W2lPU10gRG8gbm90IGNvbXBpbGUgZmFrZSBtb3VzZSBldmVudCBoYW5kbGluZyB3aGVuIGlPUyBU
b3VjaCBFdmVudHMgYXJlIGVuYWJsZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2NTIxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjI3Myw2ICsyMjczLDcgQEAKIAkJN0EyNDU4N0IxMDIxRUFGNDAwMEEwMEFBIC8qIElu
c3BlY3RvckRPTUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBMjQ1ODc5MTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5j
cHAgKi87IH07CiAJCTdBMjQ1ODdDMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2Vu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EyNDU4
N0ExMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0EyOUJBNkExODdCN0MxRDAwRjI5
Q0VCIC8qIFRlbXBvcmFyeU9wZW5HTFNldHRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EyOUJBNjkxODdCNzgxQzAwRjI5Q0VCIC8qIFRlbXBv
cmFyeU9wZW5HTFNldHRpbmcuY3BwICovOyB9OworCQk3QTI5RjU3MjE4QzY5NTE0MDA0RDBGODEg
LyogT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EyOUY1NzExOEM2OTUxNDAwNEQwRjgxIC8qIE91dE9m
QmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCAqLzsgfTsKIAkJN0E1NDg1N0YxNEUwMkQ1MTAwNkFF
MDVBIC8qIEluc3BlY3Rvckhpc3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0E1NDg1N0QxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3BlY3Rvckhp
c3RvcnkuY3BwICovOyB9OwogCQk3QTU0ODU4MDE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9y
SGlzdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0E1NDg1N0UxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3BlY3Rvckhpc3RvcnkuaCAqLzsgfTsKIAkJ
N0E1NDg4MTcxNEU0MzJBMTAwNkFFMDVBIC8qIERPTVBhdGNoU3VwcG9ydC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E1NDg4MTUxNEU0MzJBMTAwNkFF
MDVBIC8qIERPTVBhdGNoU3VwcG9ydC5oICovOyB9OwpAQCAtOTI0Miw2ICs5MjQzLDcgQEAKIAkJ
N0EyNDU4N0ExMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckRPTUFnZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdBMjlCQTY3MTg3QjczMjIwMEYyOUNFQiAvKiBUZW1wb3JhcnlP
cGVuR0xTZXR0aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFy
eU9wZW5HTFNldHRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EyOUJBNjkx
ODdCNzgxQzAwRjI5Q0VCIC8qIFRlbXBvcmFyeU9wZW5HTFNldHRpbmcuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBMjlGNTcxMThDNjk1MTQwMDREMEY4MSAvKiBP
dXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaDsgcGF0aCA9IG9iamMvT3V0T2ZC
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QTU0ODU3RDE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JIaXN0b3J5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E1NDg1N0UxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3Bl
Y3Rvckhpc3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9y
SGlzdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTU0ODgxNTE0RTQzMkEx
MDA2QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTVBhdGNoU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjEwNzMsNiArMjEwNzUsNyBAQAogCQlERjlBRkQ2RjEzRkMzMUIwMDAxNUZFQjcgLyogb2JqYyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0EyOUY1NzEx
OEM2OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCAqLywKIAkJ
CQlDREUzQTg1NjE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmgg
Ki8sCiAJCQkJQ0RFM0E4NTUxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZG
T2JqQy5tbSAqLywKIAkJCQlDRDU0QTc2MDE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwICovLApAQCAtMjQ2NzgsNiArMjQ2ODEsNyBAQAog
CQkJCTQxNTdBRjgwMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xzQXBwbGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQUI2RDI5MTdDN0RFNkMwMEM2MEIzNCAvKiBNZWRpYUNvbnRyb2xz
SG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGMkIwMDQxODFGMDU5QzAwRjJCNDI0IC8qIE1l
ZGlhRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTdBMjlGNTcyMThDNjk1MTQwMDRE
MEY4MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5NzIwNUFCODEyMzkyOTEwMDBCMTczODAgLyogTWVkaWFEb2N1bWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQ2RjI1MkQxM0Y1RUYwRTAwNjUxNjVGIC8qIE1lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjEzQUQwQ0Q2MzMxMDAwRkFEQTc1IC8q
IE1lZGlhRXJyb3IuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjUyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTk3LDYgKzE1OTcs
MTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbgogCiAgICAgaWYg
KG1fdGV4dFRyYWNrcyAmJiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKICAgICAgICAg
bV90ZXh0VHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CisKKyNpZiBFTkFCTEUoQVZGX0NB
UFRJT05TKQorICAgIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0Vs
ZW1lbnQgJiYgbV9wbGF5ZXIpCisgICAgICAgIG1fcGxheWVyLT5ub3RpZnlUcmFja01vZGVDaGFu
Z2VkKCk7CisjZW5kaWYKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2Vs
ZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sqIHRyYWNrKQpAQCAtNTUzOCw4ICs1NTQzLDYgQEAgU3Ry
aW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVXNlcgogI2lmIEVOQUJMRShBVkZfQ0FQ
VElPTlMpCiBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPj4gSFRNTE1lZGlhRWxlbWVu
dDo6b3V0T2ZCYW5kVHJhY2tTb3VyY2VzKCkKIHsKLSAgICBzdGF0aWMgaW50IHVuaXF1ZUlkID0g
MDsKLQogICAgIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiBvdXRPZkJhbmRUcmFj
a1NvdXJjZXM7CiAgICAgZm9yIChhdXRvJiB0cmFja0VsZW1lbnQgOiBjaGlsZHJlbk9mVHlwZTxI
VE1MVHJhY2tFbGVtZW50PigqdGhpcykpIHsKICAgICAgICAgCkBAIC01NTY0LDggKzU1NjcsMTgg
QEAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4+IEhUTUxNZQogICAgICAgICAgICAg
cGxhdGZvcm1LaW5kID0gUGxhdGZvcm1UZXh0VHJhY2s6OkZvcmNlZDsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgb3V0T2ZCYW5kVHJhY2tTb3VyY2VzLmFw
cGVuZChQbGF0Zm9ybVRleHRUcmFjazo6Y3JlYXRlT3V0T2ZCYW5kKHRyYWNrRWxlbWVudC5sYWJl
bCgpLCB0cmFja0VsZW1lbnQuc3JjbGFuZygpLCB1cmwuc3RyaW5nKCksIHBsYXRmb3JtS2luZCwg
Kyt1bmlxdWVJZCwgdHJhY2tFbGVtZW50LmlzRGVmYXVsdCgpKSk7CisgICAgICAgIAorICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIG1vZGUgPSB0cmFja0VsZW1lbnQudHJhY2soKS0+bW9kZSgp
OworICAgICAgICAKKyAgICAgICAgUGxhdGZvcm1UZXh0VHJhY2s6OlRyYWNrTW9kZSBwbGF0Zm9y
bU1vZGUgPSBQbGF0Zm9ybVRleHRUcmFjazo6RGlzYWJsZWQ7CisgICAgICAgIGlmIChUZXh0VHJh
Y2s6OmhpZGRlbktleXdvcmQoKSA9PSBtb2RlKQorICAgICAgICAgICAgcGxhdGZvcm1Nb2RlID0g
UGxhdGZvcm1UZXh0VHJhY2s6OkhpZGRlbjsKKyAgICAgICAgZWxzZSBpZiAoVGV4dFRyYWNrOjpk
aXNhYmxlZEtleXdvcmQoKSA9PSBtb2RlKQorICAgICAgICAgICAgcGxhdGZvcm1Nb2RlID0gUGxh
dGZvcm1UZXh0VHJhY2s6OkRpc2FibGVkOworICAgICAgICBlbHNlIGlmIChUZXh0VHJhY2s6OnNo
b3dpbmdLZXl3b3JkKCkgPT0gbW9kZSkKKyAgICAgICAgICAgIHBsYXRmb3JtTW9kZSA9IFBsYXRm
b3JtVGV4dFRyYWNrOjpTaG93aW5nOworICAgICAgICAKKyAgICAgICAgb3V0T2ZCYW5kVHJhY2tT
b3VyY2VzLmFwcGVuZChQbGF0Zm9ybVRleHRUcmFjazo6Y3JlYXRlT3V0T2ZCYW5kKHRyYWNrRWxl
bWVudC5sYWJlbCgpLCB0cmFja0VsZW1lbnQuc3JjbGFuZygpLCB1cmwuc3RyaW5nKCksIHBsYXRm
b3JtTW9kZSwgcGxhdGZvcm1LaW5kLCB0cmFja0VsZW1lbnQudHJhY2soKS0+dW5pcXVlSWQoKSwg
dHJhY2tFbGVtZW50LmlzRGVmYXVsdCgpKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBvdXRP
ZkJhbmRUcmFja1NvdXJjZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2suY3BwCShyZXZpc2lvbiAxNjUyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNTUwLDggKzU1MCw2
IEBAIGJvb2wgVGV4dFRyYWNrOjpoYXNDdWUoVlRUQ3VlKiBjdWUsIFZUVEMKICNpZiBVU0UoUExB
VEZPUk1fVEVYVF9UUkFDS19NRU5VKQogUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gVGV4
dFRyYWNrOjpwbGF0Zm9ybVRleHRUcmFjaygpCiB7Ci0gICAgc3RhdGljIGludCB1bmlxdWVJZCA9
IDA7Ci0KICAgICBpZiAobV9wbGF0Zm9ybVRleHRUcmFjaykKICAgICAgICAgcmV0dXJuIG1fcGxh
dGZvcm1UZXh0VHJhY2s7CiAKQEAgLTU3Nyw3ICs1NzUsMTUgQEAgUGFzc1JlZlB0cjxQbGF0Zm9y
bVRleHRUcmFjaz4gVGV4dFRyYWNrOgogICAgIGVsc2UgaWYgKG1fdHJhY2tUeXBlID09IEluQmFu
ZCkKICAgICAgICAgdHlwZSA9IFBsYXRmb3JtVGV4dFRyYWNrOjpJbkJhbmQ7CiAKLSAgICBtX3Bs
YXRmb3JtVGV4dFRyYWNrID0gUGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0ZSh0aGlzLCBsYWJlbCgp
LCBsYW5ndWFnZSgpLCBwbGF0Zm9ybUtpbmQsIHR5cGUsICsrdW5pcXVlSWQpOworICAgIFBsYXRm
b3JtVGV4dFRyYWNrOjpUcmFja01vZGUgcGxhdGZvcm1Nb2RlID0gUGxhdGZvcm1UZXh0VHJhY2s6
OkRpc2FibGVkOworICAgIGlmIChUZXh0VHJhY2s6OmhpZGRlbktleXdvcmQoKSA9PSBtb2RlKCkp
CisgICAgICAgIHBsYXRmb3JtTW9kZSA9IFBsYXRmb3JtVGV4dFRyYWNrOjpIaWRkZW47CisgICAg
ZWxzZSBpZiAoVGV4dFRyYWNrOjpkaXNhYmxlZEtleXdvcmQoKSA9PSBtb2RlKCkpCisgICAgICAg
IHBsYXRmb3JtTW9kZSA9IFBsYXRmb3JtVGV4dFRyYWNrOjpEaXNhYmxlZDsKKyAgICBlbHNlIGlm
IChUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkgPT0gbW9kZSgpKQorICAgICAgICBwbGF0Zm9y
bU1vZGUgPSBQbGF0Zm9ybVRleHRUcmFjazo6U2hvd2luZzsKKworICAgIG1fcGxhdGZvcm1UZXh0
VHJhY2sgPSBQbGF0Zm9ybVRleHRUcmFjazo6Y3JlYXRlKHRoaXMsIGxhYmVsKCksIGxhbmd1YWdl
KCksIHBsYXRmb3JtTW9kZSwgcGxhdGZvcm1LaW5kLCB0eXBlLCB1bmlxdWVJZCgpKTsKIAogICAg
IHJldHVybiBtX3BsYXRmb3JtVGV4dFRyYWNrOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVHJhY2tCYXNlLmNwcAkocmV2aXNpb24gMTY1MjE2KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsMTQg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgaW50IHNfdW5pcXVlSWQgPSAwOwor
CiBUcmFja0Jhc2U6OlRyYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQs
IGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2Up
CiAgICAgOiBtX21lZGlhRWxlbWVudCgwKQogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAg
LCBtX3NvdXJjZUJ1ZmZlcigwKQogI2VuZGlmCisgICAgLCBtX3VuaXF1ZUlkKCsrc191bmlxdWVJ
ZCkKICAgICAsIG1faWQoaWQpCiAgICAgLCBtX2xhYmVsKGxhYmVsKQogICAgICwgbV9sYW5ndWFn
ZShsYW5ndWFnZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAkocmV2
aXNpb24gMTY1MjE2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJDbGllbnQoKSA9IDA7CiAKKyAgICB2aXJ0dWFsIGludCB1bmlxdWVJZCgpIGNvbnN0
IHsgcmV0dXJuIG1fdW5pcXVlSWQ7IH0KKwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAg
U291cmNlQnVmZmVyKiBzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUJ1ZmZl
cjsgfQogICAgIHZvaWQgc2V0U291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlciogYnVmZmVyKSB7IG1f
c291cmNlQnVmZmVyID0gYnVmZmVyOyB9CkBAIC04NSw2ICs4Nyw3IEBAIHByb3RlY3RlZDoKIAog
cHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKKyAgICBpbnQgbV91bmlxdWVJZDsKICAgICBBdG9t
aWNTdHJpbmcgbV9pZDsKICAgICBBdG9taWNTdHJpbmcgbV9raW5kOwogICAgIEF0b21pY1N0cmlu
ZyBtX2xhYmVsOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAkocmV2aXNpb24gMTY1MjE2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcyLDYg
KzEyNzIsMTIgQEAgdm9pZCBNZWRpYVBsYXllcjo6c2V0VGV4dFRyYWNrUmVwcmVzZW50YQogfQog
CiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKK3ZvaWQgTWVkaWFQbGF5ZXI6Om5vdGlmeVRyYWNr
TW9kZUNoYW5nZWQoKQoreworICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+
bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpOworfQorCiBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4
dFRyYWNrPj4gTWVkaWFQbGF5ZXI6Om91dE9mQmFuZFRyYWNrU291cmNlcygpCiB7CiAgICAgaWYg
KCFtX21lZGlhUGxheWVyQ2xpZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCShyZXZpc2lvbiAxNjUyMTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MzcsNiArNTM3LDcgQEAgcHVibGljOgogICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4
dFRyYWNrUmVwcmVzZW50YXRpb24qKTsKICNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQorICAgIHZv
aWQgbm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpOwogICAgIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1U
ZXh0VHJhY2s+PiBvdXRPZkJhbmRUcmFja1NvdXJjZXMoKTsKICNlbmRpZgogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaAkocmV2aXNpb24gMTY1MjE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjQ3LDYgKzI0NywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBsb25nIGNvcnJ1cHRlZFZpZGVvRnJhbWVzKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwg
ZG91YmxlIHRvdGFsRnJhbWVEZWxheSgpIHsgcmV0dXJuIDA7IH0KICNlbmRpZgorCisjaWYgRU5B
QkxFKEFWRl9DQVBUSU9OUykKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5VHJhY2tNb2RlQ2hhbmdl
ZCgpIHsgfQorI2VuZGlmCiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgJKHJldmlzaW9uIDE2NTIxNikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDIxICs1OSwyNyBAQCBwdWJsaWM6CiAgICAgICAgIE91dE9m
QmFuZCA9IDEsCiAgICAgICAgIFNjcmlwdCA9IDIKICAgICB9OwotCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+IGNyZWF0ZShQbGF0Zm9ybVRleHRUcmFja0NsaWVudCog
Y2xpZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBUcmFj
a0tpbmQga2luZCwgVHJhY2tUeXBlIHR5cGUsIGludCB1bmlxdWVJZCkKKyAgICBlbnVtIFRyYWNr
TW9kZSB7CisgICAgICAgIERpc2FibGVkLAorICAgICAgICBIaWRkZW4sCisgICAgICAgIFNob3dp
bmcKKyAgICB9OworICAgIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNr
PiBjcmVhdGUoUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgVHJhY2tNb2RlIG1vZGUsIFRyYWNrS2luZCBr
aW5kLCBUcmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGllbnQsIGxhYmVsLCBsYW5ndWFnZSwg
U3RyaW5nKCksIGtpbmQsIHR5cGUsIHVuaXF1ZUlkLCBmYWxzZSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFBsYXRmb3JtVGV4dFRyYWNrKGNsaWVudCwgbGFiZWwsIGxhbmd1YWdlLCBT
dHJpbmcoKSwgbW9kZSwga2luZCwgdHlwZSwgdW5pcXVlSWQsIGZhbHNlKSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+IGNyZWF0ZU91dE9mQmFuZChj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBTdHJpbmcm
IHVybCwgVHJhY2tLaW5kIGtpbmQsIGludCB1bmlxdWVJZCwgYm9vbCBpc0RlZmF1bHQpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+IGNyZWF0ZU91dE9mQmFuZChjb25z
dCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBTdHJpbmcmIHVy
bCwgVHJhY2tNb2RlIG1vZGUsIFRyYWNrS2luZCBraW5kLCBpbnQgdW5pcXVlSWQsIGJvb2wgaXNE
ZWZhdWx0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVRleHRU
cmFjayhudWxscHRyLCBsYWJlbCwgbGFuZ3VhZ2UsIHVybCwga2luZCwgT3V0T2ZCYW5kLCB1bmlx
dWVJZCwgaXNEZWZhdWx0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1U
ZXh0VHJhY2sobnVsbHB0ciwgbGFiZWwsIGxhbmd1YWdlLCB1cmwsIG1vZGUsIGtpbmQsIE91dE9m
QmFuZCwgdW5pcXVlSWQsIGlzRGVmYXVsdCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflBsYXRm
b3JtVGV4dFRyYWNrKCkgeyB9CiAgICAgCiAgICAgVHJhY2tUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KICAgICBUcmFja0tpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2lu
ZDsgfQorICAgIFRyYWNrTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KICAgICBjb25z
dCBTdHJpbmcmIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQogICAgIGNv
bnN0IFN0cmluZyYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KQEAgLTgzLDIxICs4OSwy
MiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sqIGNhcHRpb25NZW51
T2ZmSXRlbSgpCiAgICAgewotICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sqIG9mZiA9
IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iLCAiIiwg
U3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxhdGZvcm1U
ZXh0VHJhY2sqIG9mZiA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBt
ZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigpOwog
ICAgICAgICByZXR1cm4gb2ZmOwogICAgIH0KIAogICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFj
ayogY2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBQbGF0
Zm9ybVRleHRUcmFjayogYXV0b21hdGljID0gUGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0ZShudWxs
cHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSIsICIiLCBTdWJ0aXRsZSwgSW5CYW5kLCAwKS5sZWFr
UmVmKCk7CisgICAgICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogYXV0b21hdGljID0gUGxh
dGZvcm1UZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSIsICIi
LCBTaG93aW5nLCBTdWJ0aXRsZSwgSW5CYW5kLCAwKS5sZWFrUmVmKCk7CiAgICAgICAgIHJldHVy
biBhdXRvbWF0aWM7CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUGxhdGZvcm1UZXh0VHJhY2so
UGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29u
c3QgU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrS2luZCBraW5kLCBU
cmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKKyAgICBQbGF0Zm9y
bVRleHRUcmFjayhQbGF0Zm9ybVRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBTdHJpbmcmIHVybCwgVHJhY2tN
b2RlIG1vZGUsIFRyYWNrS2luZCBraW5kLCBUcmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkLCBi
b29sIGlzRGVmYXVsdCkKICAgICAgICAgOiBtX2xhYmVsKGxhYmVsKQogICAgICAgICAsIG1fbGFu
Z3VhZ2UobGFuZ3VhZ2UpCiAgICAgICAgICwgbV91cmwodXJsKQorICAgICAgICAsIG1fbW9kZSht
b2RlKQogICAgICAgICAsIG1fa2luZChraW5kKQogICAgICAgICAsIG1fdHlwZSh0eXBlKQogICAg
ICAgICAsIG1fY2xpZW50KGNsaWVudCkKQEAgLTEwOSw2ICsxMTYsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgU3RyaW5nIG1fbGFiZWw7CiAgICAgU3RyaW5nIG1fbGFuZ3VhZ2U7CiAgICAgU3RyaW5nIG1f
dXJsOworICAgIFRyYWNrTW9kZSBtX21vZGU7CiAgICAgVHJhY2tLaW5kIG1fa2luZDsKICAgICBU
cmFja1R5cGUgbV90eXBlOwogICAgIFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50KiBtX2NsaWVudDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAko
cmV2aXNpb24gMTY1MjE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC01NSwxNSArNTUsMjAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQmVlblJlcG9ydGVkKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNCZWVuUmVwb3J0ZWQ7IH0KICAgICB2b2lkIHNldEhhc0JlZW5SZXBv
cnRlZChib29sIHJlcG9ydGVkKSB7IG1faGFzQmVlblJlcG9ydGVkID0gcmVwb3J0ZWQ7IH0KIAot
ICAgIHZvaWQgcHJvY2Vzc0N1ZShDRkFycmF5UmVmLCBkb3VibGUpOwotICAgIHZvaWQgcmVzZXRD
dWVWYWx1ZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0N1ZShDRkFycmF5UmVmLCBkb3Vi
bGUpOworICAgIHZpcnR1YWwgdm9pZCByZXNldEN1ZVZhbHVlcygpOwogCiAgICAgdm9pZCBiZWdp
blNlZWtpbmcoKTsKICAgICB2b2lkIGVuZFNlZWtpbmcoKSB7IG1fc2Vla2luZyA9IGZhbHNlOyB9
CiAgICAgYm9vbCBzZWVraW5nKCkgY29uc3QgeyByZXR1cm4gbV9zZWVraW5nOyB9CiAgICAgCi0g
ICAgdmlydHVhbCBib29sIGlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpIGNvbnN0ID0gMDsK
LQorICAgIGVudW0gQ2F0ZWdvcnkgeworICAgICAgICBMZWdhY3lDbG9zZWRDYXB0aW9uLAorICAg
ICAgICBPdXRPZkJhbmQsCisgICAgICAgIEluQmFuZAorICAgIH07CisgICAgdmlydHVhbCBDYXRl
Z29yeSB0ZXh0VHJhY2tDYXRlZ29yeSgpIGNvbnN0ID0gMDsKKyAgICAKIHByb3RlY3RlZDoKICAg
ICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKEFWRkluYmFuZFRyYWNrUGFyZW50Kik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uY3BwCShyZXZpc2lvbiAxNjUyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC05MDcsNiArOTA3LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uOjpkaXMKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Ojpjb25maWd1cmVJbmJhbmRUcmFja3MoKQogewogICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGPiB0cmFja1RvRW5hYmxlOworICAgIAorI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMp
CisgICAgc3luY2hyb25pemVUZXh0VHJhY2tTdGF0ZSgpOworI2VuZGlmCiAKICAgICAvLyBBVkZv
dW5kYXRpb24gY2FuIG9ubHkgZW1pdCBjdWVzIGZvciBvbmUgdHJhY2sgYXQgYSB0aW1lLCBzbyBl
bmFibGUgdGhlIGZpcnN0IHRyYWNrIHRoYXQgaXMgc2hvd2luZywgb3IgdGhlIGZpcnN0IHRoYXQK
ICAgICAvLyBpcyBoaWRkZW4gaWYgbm9uZSBhcmUgc2hvd2luZy4gT3RoZXJ3aXNlIGRpc2FibGUg
YWxsIHRyYWNrcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmgJKHJldmlzaW9uIDE2NTIxNikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOTQsNiArMjk0LDEwIEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHNpemVfdCBleHRyYU1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIHZpcnR1YWwgdm9pZCB0cmFja01vZGVDaGFuZ2VkKCkgb3ZlcnJpZGU7CisjaWYg
RU5BQkxFKEFWRl9DQVBUSU9OUykKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5VHJhY2tNb2RlQ2hh
bmdlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVRleHRUcmFja1N0YXRlKCkg
eyB9CisjZW5kaWYKICAgICB2b2lkIHByb2Nlc3NOZXdBbmRSZW1vdmVkVGV4dFRyYWNrcyhjb25z
dCBWZWN0b3I8UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY+PiYpOwogICAgIHZvaWQg
Y2xlYXJUZXh0VHJhY2tzKCk7CiAgICAgVmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGPj4gbV90ZXh0VHJhY2tzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgJKHJldmlzaW9uIDE2NTIxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZDRi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9v
bCBpc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2soKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgQ2F0ZWdvcnkgdGV4dFRyYWNrQ2F0ZWdvcnkoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBJbkJhbmQ7IH0KIAogICAgIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlv
blJlZiBtZWRpYVNlbGVjdGlvbk9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTZWxlY3Rp
b25PcHRpb24uZ2V0KCk7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmgJKHJldmlzaW9uIDE2NTIxNikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1
NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNMZWdhY3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgQ2F0ZWdvcnkgdGV4dFRyYWNr
Q2F0ZWdvcnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBMZWdhY3lDbG9zZWRDYXB0aW9uOyB9
CiAKICAgICBBVkNGUGxheWVySXRlbVRyYWNrUmVmIGF2UGxheWVySXRlbVRyYWNrKCkgY29uc3Qg
eyByZXR1cm4gbV9wbGF5ZXJJdGVtVHJhY2suZ2V0KCk7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yu
Y3BwCShyZXZpc2lvbiAxNjUyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpwCiAKICAgICAgICAgYm9vbCBuZXdDQ1RyYWNrID0gdHJ1ZTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVtb3ZlZFRleHRUcmFja3Muc2l6ZSgpOyBpID4gMDsg
LS1pKSB7Ci0gICAgICAgICAgICBpZiAoIXJlbW92ZWRUZXh0VHJhY2tzW2kgLSAxXS0+aXNMZWdh
Y3lDbG9zZWRDYXB0aW9uc1RyYWNrKCkpCisgICAgICAgICAgICBpZiAocmVtb3ZlZFRleHRUcmFj
a3NbaSAtIDFdLT50ZXh0VHJhY2tDYXRlZ29yeSgpICE9IEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkY6OkxlZ2FjeUNsb3NlZENhcHRpb24pCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRj4gdHJhY2sg
PSBzdGF0aWNfY2FzdDxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRio+KG1fdGV4dFRy
YWNrc1tpIC0gMV0uZ2V0KCkpOwpAQCAtMTA3OSw3ICsxMDc5LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRjo6cAogICAgICAgICBBVkNGTWVkaWFTZWxlY3Rpb25PcHRp
b25SZWYgb3B0aW9uID0gc3RhdGljX2Nhc3Q8QVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmPihD
RkFycmF5R2V0VmFsdWVBdEluZGV4KGxlZ2libGVPcHRpb25zLmdldCgpLCBpKSk7CiAgICAgICAg
IGJvb2wgbmV3VHJhY2sgPSB0cnVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZW1vdmVk
VGV4dFRyYWNrcy5zaXplKCk7IGkgPiAwOyAtLWkpIHsKLSAgICAgICAgICAgIGlmIChyZW1vdmVk
VGV4dFRyYWNrc1tpIC0gMV0tPmlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpKQorICAgICAg
ICAgICAgaWYgKHJlbW92ZWRUZXh0VHJhY2tzW2kgLSAxXS0+dGV4dFRyYWNrQ2F0ZWdvcnkoKSA9
PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpMZWdhY3lDbG9zZWRDYXB0aW9uKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWQ0Y+IHRyYWNrID0gc3RhdGljX2Nhc3Q8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Q0YqPihyZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0uZ2V0KCkpOwpAQCAtMTExMCw3ICsxMTEwLDcg
QEAgdm9pZCBBVkZXcmFwcGVyOjpzZXRDdXJyZW50VHJhY2soSW5iYW5kVAogICAgIG1fY3VycmVu
dFRyYWNrID0gdHJhY2s7CiAKICAgICBpZiAodHJhY2spIHsKLSAgICAgICAgaWYgKHRyYWNrLT5p
c0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2soKSkKKyAgICAgICAgaWYgKHRyYWNrLT50ZXh0VHJh
Y2tDYXRlZ29yeSgpID09IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OkxlZ2FjeUNsb3NlZENh
cHRpb24pCiAgICAgICAgICAgICBBVkNGUGxheWVyU2V0Q2xvc2VkQ2FwdGlvbkRpc3BsYXlFbmFi
bGVkKGF2UGxheWVyKCksIFRSVUUpOwogI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVD
VElPTl9HUk9VUCkKICAgICAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oCShyZXZpc2lvbiAxNjUy
MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU2
LDggKzU2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2soKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCisgICAgdmlydHVhbCBDYXRlZ29yeSB0
ZXh0VHJhY2tDYXRlZ29yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEluQmFuZDsgfQorICAg
IAogICAgIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKm1lZGlhU2VsZWN0aW9uT3B0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9tZWRpYVNlbGVjdGlvbk9wdGlvbi5nZXQoKTsgfQogCiBwcm90ZWN0ZWQ6
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmgJKHJldmlzaW9uIDE2NTIxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsOCArNTYsOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBib29sIGlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLQorICAgIHZpcnR1YWwgQ2F0ZWdvcnkgdGV4dFRyYWNrQ2F0ZWdv
cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBMZWdhY3lDbG9zZWRDYXB0aW9uOyB9CisgICAg
CiAgICAgQVZQbGF5ZXJJdGVtVHJhY2sgKmF2UGxheWVySXRlbVRyYWNrKCkgY29uc3QgeyByZXR1
cm4gbV9wbGF5ZXJJdGVtVHJhY2suZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMuaAkocmV2aXNpb24gMTY1MjE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNiw3ICsxMTYsMTIgQEAgcHVi
bGljOgogI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0SXNX
aXJlbGVzc0RpZENoYW5nZSgpOwogI2VuZGlmCi0KKyAgICAKKyNpZiBFTkFCTEUoQVZGX0NBUFRJ
T05TKQorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlUcmFja01vZGVDaGFuZ2VkKCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplVGV4dFRyYWNrU3RhdGUoKSBvdmVycmlkZTsK
KyNlbmRpZgorICAgIAogICAgIFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQz4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vh
a1B0cigpOyB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHJldmlz
aW9uIDE2NTIxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAj
aW1wb3J0ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oIgogI2ltcG9ydCAiSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCIKKyNpbXBvcnQgIk91dE9mQmFuZFRleHRU
cmFja1ByaXZhdGVBVkYuaCIKICNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgog
I2ltcG9ydCAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCkBAIC04Myw3ICs4NCw4IEBACiAvLyBOb3Rl
OiBUaGlzIG11c3QgYmUgZGVmaW5lZCBiZWZvcmUgb3VyIFNPRlRfTElOSyBtYWNyb3M6CiBAY2xh
c3MgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbjsKIEBpbnRlcmZhY2UgQVZNZWRpYVNlbGVjdGlvbk9w
dGlvbiAoT3V0T2ZCYW5kRXh0ZW5zaW9ucykKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNTdHJpbmcgKm91dE9mQmFuZFNvdXJjZSAvKk5TX0FWQUlMQUJMRShUQkQsIFRCRCkqLzsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcqIG91dE9mQmFuZFNvdXJj
ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcqIG91dE9mQmFuZElk
ZW50aWZpZXI7CiBAZW5kCiAjZW5kaWYKIApAQCAtNTM0LDYgKzUzNiw0MiBAQCBzdGF0aWMgY29u
c3QgTlNBcnJheSogbWVkaWFEZXNjcmlwdGlvbkZvCiAKICAgICByZXR1cm4gW05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0czogQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFs
b2dGb3JBY2Nlc3NpYmlsaXR5LCBuaWxdOwogfQorICAgIAordm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpub3RpZnlUcmFja01vZGVDaGFuZ2VkKCkKK3sKKyAgICB0cmFj
a01vZGVDaGFuZ2VkKCk7Cit9CisgICAgCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnN5bmNocm9uaXplVGV4dFRyYWNrU3RhdGUoKQoreworICAgIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiYgb3V0T2ZCYW5kVHJhY2tTb3VyY2VzID0gcGxh
eWVyKCktPm91dE9mQmFuZFRyYWNrU291cmNlcygpOworICAgIAorICAgIGZvciAoYXV0byYgdGV4
dFRyYWNrIDogbV90ZXh0VHJhY2tzKSB7CisgICAgICAgIGlmICh0ZXh0VHJhY2stPnRleHRUcmFj
a0NhdGVnb3J5KCkgPT0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6T3V0T2ZCYW5kKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBSZWZQdHI8T3V0T2ZCYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRj4gdHJhY2tQcml2YXRlID0gc3RhdGljX2Nhc3Q8T3V0T2ZCYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRio+KHRleHRUcmFjay5nZXQoKSk7CisgICAgICAgIFJldGFpblB0cjxB
Vk1lZGlhU2VsZWN0aW9uT3B0aW9uVHlwZT4gY3VycmVudE9wdGlvbiA9IHRyYWNrUHJpdmF0ZS0+
bWVkaWFTZWxlY3Rpb25PcHRpb24oKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoYXV0byYgdHJh
Y2sgOiBvdXRPZkJhbmRUcmFja1NvdXJjZXMpIHsKKyAgICAgICAgICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gdW5pcXVlSUQgPSBTdHJpbmc6Om51bWJlcih0cmFjay0+dW5pcXVlSWQoKSkuY3Jl
YXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFbW2N1cnJlbnRP
cHRpb24uZ2V0KCkgb3V0T2ZCYW5kSWRlbnRpZmllcl0gaXNFcXVhbDogcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBOU1N0cmluZyo+KHVuaXF1ZUlELmdldCgpKV0pCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGU6
Ok1vZGUgbW9kZSA9IEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkhpZGRlbjsKKyAgICAgICAgICAg
IGlmICh0cmFjay0+bW9kZSgpID09IFBsYXRmb3JtVGV4dFRyYWNrOjpIaWRkZW4pCisgICAgICAg
ICAgICAgICAgbW9kZSA9IEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkhpZGRlbjsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKHRyYWNrLT5tb2RlKCkgPT0gUGxhdGZvcm1UZXh0VHJhY2s6OkRpc2FibGVk
KQorICAgICAgICAgICAgICAgIG1vZGUgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpEaXNhYmxl
ZDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHRyYWNrLT5tb2RlKCkgPT0gUGxhdGZvcm1UZXh0VHJh
Y2s6OlNob3dpbmcpCisgICAgICAgICAgICAgICAgbW9kZSA9IEluYmFuZFRleHRUcmFja1ByaXZh
dGU6OlNob3dpbmc7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRleHRUcmFjay0+c2V0TW9k
ZShtb2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQogI2VuZGlm
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3Nl
dEZvclVSTChjb25zdCBTdHJpbmcmIHVybCkKQEAgLTE3NDUsNyArMTc4Myw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKIAogICAgICAgICBib29sIG5ld0NDVHJh
Y2sgPSB0cnVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZW1vdmVkVGV4dFRyYWNrcy5z
aXplKCk7IGkgPiAwOyAtLWkpIHsKLSAgICAgICAgICAgIGlmICghcmVtb3ZlZFRleHRUcmFja3Nb
aSAtIDFdLT5pc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2soKSkKKyAgICAgICAgICAgIGlmIChy
ZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0tPnRleHRUcmFja0NhdGVnb3J5KCkgIT0gSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRjo6TGVnYWN5Q2xvc2VkQ2FwdGlvbikKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdh
Y3lBVkZPYmpDPiB0cmFjayA9IHN0YXRpY19jYXN0PEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdh
Y3lBVkZPYmpDKj4obV90ZXh0VHJhY2tzW2kgLSAxXS5nZXQoKSk7CkBAIC0xNzk2LDExICsxODM0
LDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICBmb3Ig
KEFWTWVkaWFTZWxlY3Rpb25PcHRpb25UeXBlICpvcHRpb24gaW4gbGVnaWJsZU9wdGlvbnMpIHsK
ICAgICAgICAgYm9vbCBuZXdUcmFjayA9IHRydWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IHJlbW92ZWRUZXh0VHJhY2tzLnNpemUoKTsgaSA+IDA7IC0taSkgewotICAgICAgICAgICAgIGlm
IChyZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0tPmlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygp
KQotICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgUmVmUHRyPEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDPiB0cmFjayA9IHN0YXRpY19jYXN0PEluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkZPYmpDKj4ocmVtb3ZlZFRleHRUcmFja3NbaSAtIDFdLmdldCgpKTsKLSAg
ICAgICAgICAgIGlmIChbdHJhY2stPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCkgaXNFcXVhbDpvcHRp
b25dKSB7CisgICAgICAgICAgICBpZiAocmVtb3ZlZFRleHRUcmFja3NbaSAtIDFdLT50ZXh0VHJh
Y2tDYXRlZ29yeSgpID09IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OkxlZ2FjeUNsb3NlZENh
cHRpb24pCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIFJldGFpblB0cjxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uVHlwZT4gY3VycmVudE9wdGlvbjsK
KyNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQorICAgICAgICAgICAgaWYgKHJlbW92ZWRUZXh0VHJh
Y2tzW2kgLSAxXS0+dGV4dFRyYWNrQ2F0ZWdvcnkoKSA9PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGOjpPdXRPZkJhbmQpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8T3V0T2ZCYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRj4gdHJhY2sgPSBzdGF0aWNfY2FzdDxPdXRPZkJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGKj4ocmVtb3ZlZFRleHRUcmFja3NbaSAtIDFdLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBjdXJyZW50T3B0aW9uID0gdHJhY2stPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCk7CisgICAgICAg
ICAgICB9IGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFJlZlB0
cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gdHJhY2sgPSBzdGF0aWNfY2FzdDxJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQyo+KHJlbW92ZWRUZXh0VHJhY2tzW2kgLSAxXS5nZXQo
KSk7CisgICAgICAgICAgICAgICAgY3VycmVudE9wdGlvbiA9IHRyYWNrLT5tZWRpYVNlbGVjdGlv
bk9wdGlvbigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAo
W2N1cnJlbnRPcHRpb24uZ2V0KCkgaXNFcXVhbDpvcHRpb25dKSB7CiAgICAgICAgICAgICAgICAg
cmVtb3ZlZFRleHRUcmFja3MucmVtb3ZlKGkgLSAxKTsKICAgICAgICAgICAgICAgICBuZXdUcmFj
ayA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTgxMCw5ICsxODU5LDExIEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKLSAgICAgICAgLy8gSWdub3JlIG91
dC1vZi1iYW5kIHRyYWNrcyB0aGF0IHdlIHBhc3NlZCB0byBBVkZvdW5kYXRpb24gc28gd2UgZG8g
bm90IGRvdWJsZS1jb3VudCB0aGVtCi0gICAgICAgIGlmIChbb3B0aW9uIG91dE9mQmFuZFNvdXJj
ZV0pCisgICAgICAgIGlmIChbb3B0aW9uIG91dE9mQmFuZFNvdXJjZV0pIHsKKyAgICAgICAgICAg
IG1fdGV4dFRyYWNrcy5hcHBlbmQoT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6Y3JlYXRl
KHRoaXMsIG9wdGlvbikpOworICAgICAgICAgICAgbV90ZXh0VHJhY2tzLmxhc3QoKS0+c2V0SGFz
QmVlblJlcG9ydGVkKHRydWUpOyAvLyBJZ25vcmUgb3V0LW9mLWJhbmQgdHJhY2tzIHRoYXQgd2Ug
cGFzc2VkIHRvIEFWRm91bmRhdGlvbiBzbyB3ZSBkbyBub3QgZG91YmxlLWNvdW50IHRoZW0KICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAjZW5kaWYKIAogICAgICAgICBtX3RleHRU
cmFja3MuYXBwZW5kKEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpjcmVhdGUodGhpcywg
b3B0aW9uKSk7CkBAIC0xODUwLDkgKzE5MDEsMTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOgogICAgIG1fY3VycmVudFRyYWNrID0gdHJhY2s7CiAKICAgICBpZiAo
dHJhY2spIHsKLSAgICAgICAgaWYgKHRyYWNrLT5pc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2so
KSkKKyAgICAgICAgaWYgKHRyYWNrLT50ZXh0VHJhY2tDYXRlZ29yeSgpID09IEluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkY6OkxlZ2FjeUNsb3NlZENhcHRpb24pCiAgICAgICAgICAgICBbbV9hdlBs
YXllci5nZXQoKSBzZXRDbG9zZWRDYXB0aW9uRGlzcGxheUVuYWJsZWQ6WUVTXTsKICNpZiBIQVZF
KEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCisjaWYgRU5BQkxFKEFWRl9DQVBU
SU9OUykKKyAgICAgICAgZWxzZSBpZiAodHJhY2stPnRleHRUcmFja0NhdGVnb3J5KCkgPT0gSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6T3V0T2ZCYW5kKQorICAgICAgICAgICAgW21fYXZQbGF5
ZXJJdGVtLmdldCgpIHNlbGVjdE1lZGlhT3B0aW9uOnN0YXRpY19jYXN0PE91dE9mQmFuZFRleHRU
cmFja1ByaXZhdGVBVkYqPih0cmFjayktPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCkgaW5NZWRpYVNl
bGVjdGlvbkdyb3VwOnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKCldOwor
I2VuZGlmCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFttX2F2UGxheWVySXRlbS5nZXQoKSBz
ZWxlY3RNZWRpYU9wdGlvbjpzdGF0aWNfY2FzdDxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2Jq
Qyo+KHRyYWNrKS0+bWVkaWFTZWxlY3Rpb25PcHRpb24oKSBpbk1lZGlhU2VsZWN0aW9uR3JvdXA6
c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKV07CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9m
QmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgT3V0T2ZCYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRl9oCisjZGVmaW5lIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkZfaAorCisjaWYgRU5BQkxFKFZJREVPKSAmJiAoVVNFKEFWRk9VTkRBVElPTikgfHwgUExBVEZP
Uk0oSU9TKSkgJiYgRU5BQkxFKEFWRl9DQVBUSU9OUykKKworI2luY2x1ZGUgIkluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkYuaCIKKworT0JKQ19DTEFTUyBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBPdXRPZkJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkY+IGNyZWF0ZShB
VkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVyLCAgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiogc2Vs
ZWN0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPdXRPZkJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGKHBsYXllciwgc2VsZWN0aW9uKSk7CisgICAgfQorICAgIAorICAgIHZp
cnR1YWwgdm9pZCBwcm9jZXNzQ3VlKENGQXJyYXlSZWYsIGRvdWJsZSkgb3ZlcnJpZGUgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHJlc2V0Q3VlVmFsdWVzKCkgb3ZlcnJpZGUgeyB9CisgICAgCisgICAg
dmlydHVhbCBDYXRlZ29yeSB0ZXh0VHJhY2tDYXRlZ29yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIE91dE9mQmFuZDsgfQorICAgIAorICAgIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24qIG1lZGlh
U2VsZWN0aW9uT3B0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVNlbGVjdGlvbk9wdGlvbi5n
ZXQoKTsgfQorICAgIAorcHJvdGVjdGVkOgorICAgIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYoQVZGSW5iYW5kVHJhY2tQYXJlbnQqIHBsYXllciwgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiog
c2VsZWN0aW9uKQorICAgICAgICA6IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYocGxheWVyKQor
ICAgICAgICAsIG1fbWVkaWFTZWxlY3Rpb25PcHRpb24oc2VsZWN0aW9uKQorICAgIHsKKyAgICB9
CisgICAgCisgICAgUmV0YWluUHRyPEFWTWVkaWFTZWxlY3Rpb25PcHRpb24+IG1fbWVkaWFTZWxl
Y3Rpb25PcHRpb247Cit9OworICAgIAorfQorCisjZW5kaWYKKworI2VuZGlmIC8vIE91dE9mQmFu
ZFRleHRUcmFja1ByaXZhdGVBVkZfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaW9zL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZJT1MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRklPUy5oCShyZXZpc2lvbiAxNjUyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pb3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRklPUy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEluYmFuZFRleHRUcmFja1ByaXZh
dGU6OktpbmQga2luZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgQXRvbWljU3RyaW5n
IGxhYmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVhbCBB
dG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xhbmd1YWdl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFjaygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBDYXRlZ29yeSB0ZXh0VHJh
Y2tDYXRlZ29yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEluQmFuZDsgfQogICAgIGludCBp
bnRlcm5hbElEKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbElEOyB9CiAKIHByb3RlY3RlZDoK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9NZWRpYVBsYXllclBy
aXZhdGVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaW9zL01lZGlhUGxheWVyUHJpdmF0ZUlPUy5tbQkocmV2aXNpb24gMTY1MjE2KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL01lZGlhUGxheWVyUHJpdmF0ZUlPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtOTg0LDcgKzk4NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlSU9TOjpzZXRTZWxlY3RlZFQKIAogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwogICAg
IHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlSU9TOjpzZXRDdXJyZW50
VHJhY2soJXApIC0gc2VsZWN0aW5nIHRyYWNrIGlkICVpIiwgdGhpcywgW3RyYWNrSUQgaW50VmFs
dWVdKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlSU9TOjpzZXRTZWxl
Y3RlZFRleHRUcmFjayglcCkgLSBzZWxlY3RpbmcgdHJhY2sgaWQgJWkiLCB0aGlzLCBbdHJhY2tJ
RCBpbnRWYWx1ZV0pOwogICAgICAgICBbbV9kZWZlcnJlZFByb3BlcnRpZXMuZ2V0KCkgcmVtb3Zl
T2JqZWN0Rm9yS2V5OkRlZmVycmVkUHJvcGVydHlTZWxlY3RlZFRyYWNrS2V5XTsKICAgICAgICAg
W21fbWVkaWFQbGF5ZXJIZWxwZXIuZ2V0KCkgX3NldFNlbGVjdGVkVGV4dFRyYWNrOnRyYWNrSURd
OwogICAgIH0K
</data>
<flag name="review"
          id="250224"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>