<?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>132157</bug_id>
          
          <creation_ts>2014-04-24 17:29:04 -0700</creation_ts>
          <short_desc>[iOS] Implement WebQuickLookHandleClient for WebKit2</short_desc>
          <delta_ts>2014-04-28 16:24:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1003904</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-04-24 17:29:04 -0700</bug_when>
    <thetext>[iOS] Implement WebQuickLookHandleClient for WebKit2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003920</commentid>
    <comment_count>1</comment_count>
      <attachid>230123</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-04-24 17:58:55 -0700</bug_when>
    <thetext>Created attachment 230123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003930</commentid>
    <comment_count>2</comment_count>
      <attachid>230127</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-04-24 18:37:40 -0700</bug_when>
    <thetext>Created attachment 230127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004124</commentid>
    <comment_count>3</comment_count>
      <attachid>230127</attachid>
    <who name="">mitz</who>
    <bug_when>2014-04-25 10:03:50 -0700</bug_when>
    <thetext>Comment on attachment 230127
Patch

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

&gt; Source/WebKit2/Shared/ios/QuickLookDocumentData.cpp:85
&gt; +    if (!decoder.decodeFixedLengthData(buffer, documentData.m_size, 1))
&gt; +        return false;

Who releases the buffer if we return here?

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:50
&gt; +- (void)_webView:(WKWebView *)webView didStartLoadForQuickLookDocumentWithFileName:(NSString *)fileName uti:(NSString *)uti;
&gt; +- (void)_webView:(WKWebView *)webView didFinishLoadForQuickLookDocument:(NSData *)documentData;

Would it make sense to add a WKNavigation as the a second parameter to these methods?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/ios/WebFrameLoaderClientIOS.mm:67
&gt; +    handle.setClient(WebQuickLookHandleClient::create(handle, webPage-&gt;pageID()));

Is it OK that we don’t track which frame this is happening in? Can Quick Look happen in multiple frames in the same document? If so, how can the delegate in the UI process keep track of which callbacks go with which frame?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004166</commentid>
    <comment_count>4</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-04-25 12:44:01 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 230127 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=230127&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/ios/QuickLookDocumentData.cpp:85
&gt; &gt; +    if (!decoder.decodeFixedLengthData(buffer, documentData.m_size, 1))
&gt; &gt; +        return false;
&gt; 
&gt; Who releases the buffer if we return here?

NOBODY (OOPS!).

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:50
&gt; &gt; +- (void)_webView:(WKWebView *)webView didStartLoadForQuickLookDocumentWithFileName:(NSString *)fileName uti:(NSString *)uti;
&gt; &gt; +- (void)_webView:(WKWebView *)webView didFinishLoadForQuickLookDocument:(NSData *)documentData;
&gt; 
&gt; Would it make sense to add a WKNavigation as the a second parameter to these methods?

I originally did this, but then removed it once I found I wasn&apos;t using it in the API client.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/ios/WebFrameLoaderClientIOS.mm:67
&gt; &gt; +    handle.setClient(WebQuickLookHandleClient::create(handle, webPage-&gt;pageID()));
&gt; 
&gt; Is it OK that we don’t track which frame this is happening in? Can Quick Look happen in multiple frames in the same document? If so, how can the delegate in the UI process keep track of which callbacks go with which frame?

Oops, it&apos;s not okay. I&apos;ll post a new patch to track the frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004190</commentid>
    <comment_count>5</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-04-25 14:03:03 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 230127 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=230127&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/ios/WebFrameLoaderClientIOS.mm:67
&gt; &gt; &gt; +    handle.setClient(WebQuickLookHandleClient::create(handle, webPage-&gt;pageID()));
&gt; &gt; 
&gt; &gt; Is it OK that we don’t track which frame this is happening in? Can Quick Look happen in multiple frames in the same document? If so, how can the delegate in the UI process keep track of which callbacks go with which frame?
&gt; 
&gt; Oops, it&apos;s not okay. I&apos;ll post a new patch to track the frame.

Well, I guess it&apos;s actually somewhat okay. The client that will adopt this SPI only cares about documents loaded in the main frame. We could track the frame, but it&apos;s probably simpler just to not create a QuickLookHandleClient for non-main frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004211</commentid>
    <comment_count>6</comment_count>
      <attachid>230203</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-04-25 14:31:59 -0700</bug_when>
    <thetext>Created attachment 230203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004216</commentid>
    <comment_count>7</comment_count>
      <attachid>230203</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-04-25 14:39:29 -0700</bug_when>
    <thetext>Comment on attachment 230203
Patch

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

&gt; Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:580
&gt; +void WebPageProxy::didStartLoadForQuickLookDocumentInMainFrame(const String&amp; fileName, const String&amp; uti)
&gt; +{

I should probably sanitize fileName here to ensure it doesn&apos;t contain a relative path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004250</commentid>
    <comment_count>8</comment_count>
      <attachid>230215</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-04-25 15:39:09 -0700</bug_when>
    <thetext>Created attachment 230215
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004475</commentid>
    <comment_count>9</comment_count>
      <attachid>230215</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-27 20:32:47 -0700</bug_when>
    <thetext>Comment on attachment 230215
Patch

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

&gt; Source/WebKit2/Shared/ios/QuickLookDocumentData.cpp:41
&gt; +void QuickLookDocumentData::append(CFArrayRef dataArray)

I think this should just take one CFDataRef, and the iteration should be at the call site.

&gt; Source/WebKit2/Shared/ios/QuickLookDocumentData.cpp:45
&gt; +        ASSERT(CFGetTypeID(data) == CFDataGetTypeID());

Seems like this assertion should be on value instead of data. Casting after asserting makes more sense.

&gt; Source/WebKit2/Shared/ios/QuickLookDocumentData.cpp:46
&gt; +        QuickLookDocumentData* documentData = static_cast&lt;QuickLookDocumentData*&gt;(context);

Strange that we have to do this when a lambda is involved. You&apos;d think the lambda could just capture this, but maybe that wouldn&apos;t make a function.

&gt; Source/WebKit2/Shared/ios/QuickLookDocumentData.cpp:68
&gt; +    encoder &lt;&lt; m_size;

Seems a little strange that we keep m_size just so we don’t have to add up sizes here. I suggest we don’t store m_size, and just compute it here.

&gt; Source/WebKit2/Shared/ios/QuickLookDocumentData.cpp:82
&gt; +    uint8_t* const buffer = static_cast&lt;uint8_t*&gt;(CFAllocatorAllocate(kCFAllocatorDefault, documentData.m_size, 0));
&gt; +    ASSERT(buffer);

Why aren’t we using CFDataCreateMutable instead?

&gt; Source/WebKit2/Shared/ios/QuickLookDocumentData.h:40
&gt; +class QuickLookDocumentData {

Can’t we use SharedBuffer for this? This seems a lot like that class.

&gt; Source/WebKit2/Shared/ios/QuickLookDocumentData.h:41
&gt; +WTF_MAKE_NONCOPYABLE(QuickLookDocumentData);

Not sure this needs to be non copyable. Seems to me it would copy just fine.

&gt; Source/WebKit2/Shared/ios/QuickLookDocumentData.h:51
&gt; +    Vector&lt;RetainPtr&lt;CFDataRef&gt;&gt; m_data;

Since it’s normally 1, should we do Vector&lt;RetainPtr&lt;CFDataRef&gt;, 1&gt;?

&gt; Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:583
&gt; +    static_assert(notFound == static_cast&lt;size_t&gt;(-1), &quot;The following line assumes WTF::notFound equals -1&quot;);

Not sure we should assert this everywhere we depend on it. I think it’s part of the design of the find/substring functions. But I guess it’s neat to assert it explicitly.

Would be better to assert what we really assume which is &quot;notFound + 1 == 0&quot;.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/ios/WebQuickLookHandleClient.cpp:47
&gt; +    m_data.append(dataArray);

Seems like iterating the array could be at this level rather than inside the QuickLookDocumentData class.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/ios/WebQuickLookHandleClient.h:44
&gt; +class WebQuickLookHandleClient : public WebCore::QuickLookHandleClient {

Why not mark this class final?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004686</commentid>
    <comment_count>10</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-04-28 12:10:17 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 230215 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=230215&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/ios/QuickLookDocumentData.cpp:41
&gt; &gt; +void QuickLookDocumentData::append(CFArrayRef dataArray)
&gt; 
&gt; I think this should just take one CFDataRef, and the iteration should be at the call site.

Ok, I&apos;ll move the iteration up to WebQuickLookHandleClient.

&gt; 
&gt; &gt; Source/WebKit2/Shared/ios/QuickLookDocumentData.cpp:45
&gt; &gt; +        ASSERT(CFGetTypeID(data) == CFDataGetTypeID());
&gt; 
&gt; Seems like this assertion should be on value instead of data. Casting after asserting makes more sense.

Ok.

&gt; 
&gt; &gt; Source/WebKit2/Shared/ios/QuickLookDocumentData.cpp:46
&gt; &gt; +        QuickLookDocumentData* documentData = static_cast&lt;QuickLookDocumentData*&gt;(context);
&gt; 
&gt; Strange that we have to do this when a lambda is involved. You&apos;d think the lambda could just capture this, but maybe that wouldn&apos;t make a function.

Right, capturing this would make the lambda no longer be an plain function.

&gt; 
&gt; &gt; Source/WebKit2/Shared/ios/QuickLookDocumentData.cpp:68
&gt; &gt; +    encoder &lt;&lt; m_size;
&gt; 
&gt; Seems a little strange that we keep m_size just so we don’t have to add up sizes here. I suggest we don’t store m_size, and just compute it here.

Ok, will do.

&gt; 
&gt; &gt; Source/WebKit2/Shared/ios/QuickLookDocumentData.cpp:82
&gt; &gt; +    uint8_t* const buffer = static_cast&lt;uint8_t*&gt;(CFAllocatorAllocate(kCFAllocatorDefault, documentData.m_size, 0));
&gt; &gt; +    ASSERT(buffer);
&gt; 
&gt; Why aren’t we using CFDataCreateMutable instead?

Because the data shouldn&apos;t be mutable, and because I wished to avoid a zero-fill (although from reading code I don&apos;t believe CFDataCreateMutable() zero-fills).

&gt; 
&gt; &gt; Source/WebKit2/Shared/ios/QuickLookDocumentData.h:40
&gt; &gt; +class QuickLookDocumentData {
&gt; 
&gt; Can’t we use SharedBuffer for this? This seems a lot like that class.

I don&apos;t believe we&apos;ve taught WebKit2 to encode a SharedBuffer without first merging its data segments, and that&apos;s an extra cost I don&apos;t want to pay here. If we had already had this code I would&apos;ve just used SharedBuffer.

It&apos;d probably be good to do this at some point. I&apos;ve found a few places where we unnecessarily flatten a SharedBuffer in order to encode it via a IPC::DataReference. I can look at fixing this as a follow-up.

&gt; 
&gt; &gt; Source/WebKit2/Shared/ios/QuickLookDocumentData.h:41
&gt; &gt; +WTF_MAKE_NONCOPYABLE(QuickLookDocumentData);
&gt; 
&gt; Not sure this needs to be non copyable. Seems to me it would copy just fine.

Yeah, it would. I&apos;ll remove it.

&gt; 
&gt; &gt; Source/WebKit2/Shared/ios/QuickLookDocumentData.h:51
&gt; &gt; +    Vector&lt;RetainPtr&lt;CFDataRef&gt;&gt; m_data;
&gt; 
&gt; Since it’s normally 1, should we do Vector&lt;RetainPtr&lt;CFDataRef&gt;, 1&gt;?

Yes, I&apos;ll do this.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:583
&gt; &gt; +    static_assert(notFound == static_cast&lt;size_t&gt;(-1), &quot;The following line assumes WTF::notFound equals -1&quot;);
&gt; 
&gt; Not sure we should assert this everywhere we depend on it. I think it’s part of the design of the find/substring functions. But I guess it’s neat to assert it explicitly.
&gt; 
&gt; Would be better to assert what we really assume which is &quot;notFound + 1 == 0&quot;.

Ok.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/ios/WebQuickLookHandleClient.cpp:47
&gt; &gt; +    m_data.append(dataArray);
&gt; 
&gt; Seems like iterating the array could be at this level rather than inside the QuickLookDocumentData class.

Ok.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/ios/WebQuickLookHandleClient.h:44
&gt; &gt; +class WebQuickLookHandleClient : public WebCore::QuickLookHandleClient {
&gt; 
&gt; Why not mark this class final?

No reason. I&apos;ll mark it final.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004707</commentid>
    <comment_count>11</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-04-28 13:03:13 -0700</bug_when>
    <thetext>Committed r167901: &lt;http://trac.webkit.org/changeset/167901&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004770</commentid>
    <comment_count>12</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-04-28 16:24:03 -0700</bug_when>
    <thetext>Fix a transcription error from r167901: &lt;http://trac.webkit.org/changeset/167912&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230123</attachid>
            <date>2014-04-24 17:58:55 -0700</date>
            <delta_ts>2014-04-24 18:37:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132157-20140424175834.patch</filename>
            <type>text/plain</type>
            <size>44500</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3Nzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDVmYzI4ODdhZTIzMzc5
NjFhN2Y1NDgyZWM2YzEwNDNlNjkwNDM4Yi4uMzJkNWQwYjQ5NzVmMGY3ZWRmOTM4NTgwMzQwNDUx
MDVmYmQ4MmNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE0LTA0LTI0ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBJbXBsZW1lbnQgV2Vi
UXVpY2tMb29rSGFuZGxlQ2xpZW50IGZvciBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzIxNTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnRlZCBRdWlj
a0xvb2tIYW5kbGU6OnByZXZpZXdVVEkoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2su
bW06CisgICAgICAgIChXZWJDb3JlOjpRdWlja0xvb2tIYW5kbGU6OnByZXZpZXdGaWxlTmFtZSk6
IENoYW5nZWQgdG8gcmV0dXJuIGEgV1RGOjpTdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpRdWlj
a0xvb2tIYW5kbGU6OnByZXZpZXdVVEkpOiBBZGRlZC4KKwogMjAxNC0wNC0yNCAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBkb24ndCBhc2sg
Zm9yIEFWQXNzZXRUcmFjayBwcm9wZXJ0aWVzIGJlZm9yZSB0aGV5IGFyZSBhdmFpbGFibGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCA0MmZkMWI4NjI5OGY2N2E4ZWQxMWRiMTVjZGNhYzZkYTMwZTA0MGIwLi5iMTQx
NTdmNjU0OWI1Njg4MzAwYWMzZGY1NDM1ODNhNTc0YTJmOGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTIgQEAKKzIwMTQtMDQtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisg
ICAgICAgIFtpT1NdIEltcGxlbWVudCBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQgZm9yIFdlYktp
dDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjE1
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hh
cmVkL0FQSS9Db2NvYS9fV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmg6IEFkZGVkLgorICAgICAgICAq
IFNoYXJlZC9BUEkvQ29jb2EvX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5tbTogQWRkZWQuCisgICAg
ICAgICgrW05TRmlsZU1hbmFnZXIgX3dlYl9jcmVhdGVUZW1wb3JhcnlGaWxlRm9yUXVpY2tMb29r
Ol0pOiBDYWxsZWQgV2ViQ29yZTo6Y3JlYXRlVGVtcG9yYXJ5RmlsZUZvclF1aWNrTG9vaygpLgor
ICAgICAgICAqIFNoYXJlZC9pb3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlF1aWNrTG9va0RvY3VtZW50RGF0YTo6UXVpY2tMb29rRG9jdW1lbnRE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6UXVpY2tMb29rRG9jdW1lbnREYXRhOjphcHBlbmQpOiBB
cHBlbmVkIGVhY2ggQ0ZEYXRhUmVmIHRvIG1fZGF0YSBhbmQgYWRkZWQgdGhlaXIgc2l6ZXMgdG8g
bV9zaXplLgorICAgICAgICAoV2ViS2l0OjpRdWlja0xvb2tEb2N1bWVudERhdGE6OmRlY29kZWRE
YXRhKTogUmV0dXJuZWQgdGhlIGNvbWJpbmVkIENGRGF0YVJlZiBjcmVhdGVkIGJ5IGRlY29kZSgp
LgorICAgICAgICBOYW1lZCB0aGlzIG1ldGhvZCAnZGVjb2RlZERhdGEnIHRvIGluZGljYXRlIHRo
YXQgaXQgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIG9iamVjdHMgcG9wdWxhdGVkIGJ5IGRlY29k
ZSgpLgorICAgICAgICAoV2ViS2l0OjpRdWlja0xvb2tEb2N1bWVudERhdGE6OmNsZWFyKTogQ2xl
YXJlZCBtX2RhdGEgYW5kIHJlc2V0IG1fc2l6ZSB0byAwLgorICAgICAgICAoV2ViS2l0OjpRdWlj
a0xvb2tEb2N1bWVudERhdGE6OmVuY29kZSk6IEltcGxlbWVudGVkIGEgY3VzdG9tIGVuY29kaW5n
IGZ1bmN0aW9uIHRvIGF2b2lkIGhhdmluZyB0byBjb21iaW5lCisgICAgICAgIG1fZGF0YSBpbnRv
IGNvbnRpZ3VvdXMgbWVtb3J5IGF0IGVuY29kaW5nIHRpbWUuIEVuY29kZWQgbV9zaXplIHRoZW4g
c2VxdWVudGlhbGx5IGVuY29kZWQgZWFjaCBtZW1iZXIgb2YgbV9kYXRhLgorICAgICAgICAoV2Vi
S2l0OjpRdWlja0xvb2tEb2N1bWVudERhdGE6OmRlY29kZSk6IERlY29kZWQgdGhlIGJ5dGUgc3Ry
ZWFtIGludG8gYSBzaW5nbGUgQ0ZEYXRhUmVmLiBFYWdlcmx5IGNvcGllZCB0aGUKKyAgICAgICAg
ZGVjb2RlZCBkYXRhIHJhdGhlciB0aGFuIHVzaW5nIGEgRGF0YVJlZmVyZW5jZSBzaW5jZSB3ZSBr
bm93IHRoaXMgd2lsbCBvdXRsaXZlIHRoZSBkZWNvZGVyLgorICAgICAgICAqIFNoYXJlZC9pb3Mv
UXVpY2tMb29rRG9jdW1lbnREYXRhLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6ZGlkU3RhcnRM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnQpOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRp
ZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpzZXRO
YXZpZ2F0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Okxv
YWRlckNsaWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnQpOgorICAgICAgICAo
V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50KToKKyAg
ICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkZyYW1lTG9hZGVyQ2xpZW50SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ3JlYXRlUXVpY2tM
b29rSGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJR
dWlja0xvb2tIYW5kbGVDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUXVp
Y2tMb29rSGFuZGxlQ2xpZW50OjpXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQpOiBTZW50IERpZFN0
YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50IHRvCisgICAgICAgIFdlYlBhZ2VQcm94eS4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlRGF0YUFy
cmF5KTogQXBwZW5kZWQgZGF0YUFycmF5IHRvIG1fZGF0YS4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UXVpY2tMb29rSGFuZGxlQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKTogU2VudCBEaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnQgdG8gV2ViUGFnZVByb3h5CisgICAgICAgIGFuZCB0aGVu
IGNsZWFyZWQgbV9kYXRhLgorICAgICAgICAoV2ViS2l0OjpXZWJRdWlja0xvb2tIYW5kbGVDbGll
bnQ6OmRpZEZhaWwpOiBDbGVhcmVkIG1fZGF0YS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlF1aWNrTG9va0hhbmRsZUNsaWVudDo6Y3JlYXRlKToKKwogMjAxNC0wNC0y
NCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJL
aXQyIFZpZXcgR2VzdHVyZXM6IFVzZSBhIHNpbmdsZSBzdHJ1Y3QgZm9yIHRoZSBzbmFwc2hvdCwg
YW5kIHBhc3MgaXQgYXJvdW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGUwZThkNDU5ZmFlMzY5
NzhiZWZiZTEwOTk1NDlmNGM5YjQ4ZWZmYzEuLjQ1NmFlMGNhNzJkOTk5MjJmN2RjYzFkZWNkMGZi
YWYyMWI3MWUyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0zMjI5LDYgKzMyMjksNyBAQCBf
X1pON1dlYkNvcmUzMnFsUHJldmlld0NvbnZlcnRlckZpbGVOYW1lRm9yVVJMRVA1TlNVUkwKIF9f
Wk43V2ViQ29yZTMzUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0RXYKIF9fWk43V2Vi
Q29yZTM0cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZEVQNU5TVVJMUDhOU1N0cmlu
Z1A2TlNEYXRhCiBfX1pON1dlYkNvcmUzNWFkZFFMUHJldmlld0NvbnZlcnRlcldpdGhGaWxlRm9y
VVJMRVA1TlNVUkxQMTFvYmpjX29iamVjdFA4TlNTdHJpbmcKK19fWk5LN1dlYkNvcmUxNVF1aWNr
TG9va0hhbmRsZTEwcHJldmlld1VUSUV2CiBfX1pOSzdXZWJDb3JlMTVRdWlja0xvb2tIYW5kbGUx
NXByZXZpZXdGaWxlTmFtZUV2CiBfX1pOSzdXZWJDb3JlMTVRdWlja0xvb2tIYW5kbGUxN3ByZXZp
ZXdSZXF1ZXN0VVJMRXYKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9RdWlja0xvb2suaAppbmRleCA2YmJkMTQyMmQ5OGQwYjExMDEzMTc4ODk0NjMxMDlm
YmU4ZGE1MDczLi43OTA5OGRkY2M2Nzc5MjVlYWZlNjUyNDhmZmQ3NzBlM2U4MzA2ZjlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaApAQCAt
MTAxLDcgKzEwMSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q2xpZW50KFBhc3NSZWZQdHI8
UXVpY2tMb29rSGFuZGxlQ2xpZW50PiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIAot
ICAgIE5TU3RyaW5nICpwcmV2aWV3RmlsZU5hbWUoKSBjb25zdDsKKyAgICBTdHJpbmcgcHJldmll
d0ZpbGVOYW1lKCkgY29uc3Q7CisgICAgU3RyaW5nIHByZXZpZXdVVEkoKSBjb25zdDsKICAgICBO
U1VSTCAqZmlyc3RSZXF1ZXN0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFJlcXVlc3RVUkwu
Z2V0KCk7IH0KICAgICBOU1VSTCAqcHJldmlld1JlcXVlc3RVUkwoKSBjb25zdDsKICAgICBRTFBy
ZXZpZXdDb252ZXJ0ZXIgKmNvbnZlcnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udmVydGVyLmdl
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9R
dWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xv
b2subW0KaW5kZXggMjJhOTFiM2E3NjVlOTlmODQ1YWUzYWNmYmRkMmRjOTUxZGU4MTljYy4uZmQw
MmE0NzQ1YWI2MzlmZWEzMzRkNGYxOTIzZmQzZDI4M2U2M2UzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQpAQCAtNDUwLDExICs0NTAs
MTYgQEAgUXVpY2tMb29rSGFuZGxlOjp+UXVpY2tMb29rSGFuZGxlKCkKICAgICBbbV9kZWxlZ2F0
ZSBjbGVhckhhbmRsZV07CiB9CiAKLU5TU3RyaW5nICpRdWlja0xvb2tIYW5kbGU6OnByZXZpZXdG
aWxlTmFtZSgpIGNvbnN0CitTdHJpbmcgUXVpY2tMb29rSGFuZGxlOjpwcmV2aWV3RmlsZU5hbWUo
KSBjb25zdAogewogICAgIHJldHVybiBbbV9jb252ZXJ0ZXIgcHJldmlld0ZpbGVOYW1lXTsKIH0K
IAorU3RyaW5nIFF1aWNrTG9va0hhbmRsZTo6cHJldmlld1VUSSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFttX2NvbnZlcnRlciBwcmV2aWV3VVRJXTsKK30KKwogTlNVUkwgKlF1aWNrTG9va0hhbmRs
ZTo6cHJldmlld1JlcXVlc3RVUkwoKSBjb25zdAogewogICAgIHJldHVybiBbW21fY29udmVydGVy
IHByZXZpZXdSZXF1ZXN0XSBVUkxdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9Db2NvYS9fV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0NvY29hL19XS05TRmlsZU1hbmFnZXJFeHRyYXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzAyOGUw
ZThhZTMxZThiNTI1ODMzMmQyMmU0MzZmNjc3ZGMyNzNhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9fV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmgKQEAg
LTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdDIvV0tGb3VuZGF0aW9u
Lmg+CisKKyNpZiBUQVJHRVRfT1NfSVBIT05FCisKK0BpbnRlcmZhY2UgTlNGaWxlTWFuYWdlciAo
V0tFeHRyYXMpCisKKysgKE5TU3RyaW5nICopX3dlYl9jcmVhdGVUZW1wb3JhcnlGaWxlRm9yUXVp
Y2tMb29rOihOU1N0cmluZyAqKWZpbGVOYW1lOworCitAZW5kCisKKyNlbmRpZiAvLyBUQVJHRVRf
T1NfSVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL19X
S05TRmlsZU1hbmFnZXJFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29h
L19XS05TRmlsZU1hbmFnZXJFeHRyYXMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ2MDlmMDZjNzFlNGRjYWEw
MTAxMGJhOWEwODk5ZmExMjIyNjcxMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvQ29jb2EvX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5tbQpAQCAtMCwwICsxLDQy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJfV0tOU0ZpbGVN
YW5hZ2VyRXh0cmFzLmgiCisKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKworI2ltcG9ydCA8V2ViQ29y
ZS9RdWlja0xvb2suaD4KKworQGltcGxlbWVudGF0aW9uIE5TRmlsZU1hbmFnZXIgKFdLRXh0cmFz
KQorCisrIChOU1N0cmluZyAqKV93ZWJfY3JlYXRlVGVtcG9yYXJ5RmlsZUZvclF1aWNrTG9vazoo
TlNTdHJpbmcgKilmaWxlTmFtZQoreworICAgIHJldHVybiBXZWJDb3JlOjpjcmVhdGVUZW1wb3Jh
cnlGaWxlRm9yUXVpY2tMb29rKGZpbGVOYW1lKTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gVVNF
KFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL1F1aWNr
TG9va0RvY3VtZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL1F1aWNrTG9v
a0RvY3VtZW50RGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTlmODQ0NmZkYTMzMTY1YjVmMWIwZTJmNDE5
ZGUwMjc4ODFhM2ZhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9p
b3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlF1aWNrTG9va0RvY3VtZW50RGF0YS5o
IgorCisjaWYgVVNFKFFVSUNLX0xPT0spCisKKyNpbmNsdWRlICJBcmd1bWVudERlY29kZXIuaCIK
KyNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1F1
aWNrTG9va0RvY3VtZW50RGF0YTo6UXVpY2tMb29rRG9jdW1lbnREYXRhKCkKKyAgICA6IG1fc2l6
ZSgwKQoreworfQorCit2b2lkIFF1aWNrTG9va0RvY3VtZW50RGF0YTo6YXBwZW5kKENGQXJyYXlS
ZWYgZGF0YUFycmF5KQoreworICAgIENGQXJyYXlBcHBseUZ1bmN0aW9uKGRhdGFBcnJheSwgQ0ZS
YW5nZU1ha2UoMCwgQ0ZBcnJheUdldENvdW50KGRhdGFBcnJheSkpLCBbXShjb25zdCB2b2lkKiB2
YWx1ZSwgdm9pZCogY29udGV4dCkgeworICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFS
ZWYpdmFsdWU7CisgICAgICAgIEFTU0VSVChDRkdldFR5cGVJRChkYXRhKSA9PSBDRkRhdGFHZXRU
eXBlSUQoKSk7CisgICAgICAgIFF1aWNrTG9va0RvY3VtZW50RGF0YSogZG9jdW1lbnREYXRhID0g
c3RhdGljX2Nhc3Q8UXVpY2tMb29rRG9jdW1lbnREYXRhKj4oY29udGV4dCk7CisgICAgICAgIGRv
Y3VtZW50RGF0YS0+bV9kYXRhLmFwcGVuZChkYXRhKTsKKyAgICAgICAgZG9jdW1lbnREYXRhLT5t
X3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOworICAgIH0sIHRoaXMpOworfQorCitDRkRh
dGFSZWYgUXVpY2tMb29rRG9jdW1lbnREYXRhOjpkZWNvZGVkRGF0YSgpIGNvbnN0Cit7CisgICAg
QVNTRVJUKG1fZGF0YS5zaXplKCkgPD0gMSk7CisgICAgaWYgKG1fZGF0YS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2RhdGFbMF0uZ2V0KCk7Cit9CisK
K3ZvaWQgUXVpY2tMb29rRG9jdW1lbnREYXRhOjpjbGVhcigpCit7CisgICAgbV9kYXRhLmNsZWFy
KCk7CisgICAgbV9zaXplID0gMDsKK30KKwordm9pZCBRdWlja0xvb2tEb2N1bWVudERhdGE6OmVu
Y29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
IDw8IG1fc2l6ZTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRhdGEgOiBtX2RhdGEpCisgICAgICAg
IGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQo
KSksIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSwgMSk7Cit9CisKK2Jvb2wgUXVpY2tMb29r
RG9jdW1lbnREYXRhOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFF1aWNr
TG9va0RvY3VtZW50RGF0YSYgZG9jdW1lbnREYXRhKQoreworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoZG9jdW1lbnREYXRhLm1fc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
ICghZG9jdW1lbnREYXRhLm1fc2l6ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICB1aW50
OF90KiBjb25zdCBidWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oQ0ZBbGxvY2F0b3JBbGxv
Y2F0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkb2N1bWVudERhdGEubV9zaXplLCAwKSk7CisgICAg
QVNTRVJUKGJ1ZmZlcik7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRh
KGJ1ZmZlciwgZG9jdW1lbnREYXRhLm1fc2l6ZSwgMSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGRvY3VtZW50RGF0YS5tX2RhdGEuY2xlYXIoKTsKKyAgICBkb2N1bWVudERhdGEubV9k
YXRhLmFwcGVuZChhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBidWZmZXIsIGRvY3VtZW50RGF0YS5tX3NpemUsIGtDRkFsbG9jYXRvckRlZmF1
bHQpKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2lv
cy9RdWlja0xvb2tEb2N1bWVudERhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDIzYTE1YzA1N2I0OGM3MWM4
M2RmMzA4MTliYTQyMmU3ODFhZjNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL2lvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuaApAQCAtMCwwICsxLDU2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBRdWlja0xvb2tEb2N1bWVudERhdGFfaAorI2RlZmluZSBRdWlja0xv
b2tEb2N1bWVudERhdGFfaAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IElQQyB7CitjbGFzcyBBcmd1bWVudERlY29kZXI7CitjbGFzcyBBcmd1bWVudEVuY29kZXI7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBRdWlja0xvb2tEb2N1bWVudERhdGEgewor
V1RGX01BS0VfTk9OQ09QWUFCTEUoUXVpY2tMb29rRG9jdW1lbnREYXRhKTsKK3B1YmxpYzoKKyAg
ICBRdWlja0xvb2tEb2N1bWVudERhdGEoKTsKKyAgICB2b2lkIGFwcGVuZChDRkFycmF5UmVmKTsK
KyAgICBDRkRhdGFSZWYgZGVjb2RlZERhdGEoKSBjb25zdDsKKyAgICB2b2lkIGNsZWFyKCk7Cisg
ICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImLCBRdWlja0xvb2tEb2N1bWVudERhdGEm
KTsKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8UmV0YWluUHRyPENGRGF0YVJlZj4+IG1fZGF0YTsK
KyAgICB1aW50NjRfdCBtX3NpemU7Cit9OworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBRdWlja0xvb2tEb2N1bWVudERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKaW5kZXggNjllOWVlZTJiMDRiM2QzYTIyNjQxNjgyOTY3
MTAzYjY5OWU4MDMwNi4uMzg4ZDBmM2NhZGE1OTdmNjUyNTRmNzdkYzg2YzlmZDc3MmU4ODUyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCkBA
IC0zOSw2ICszOSw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CiBjbGFzcyBJbW11dGFibGVEaWN0
aW9uYXJ5OworY2xhc3MgUXVpY2tMb29rRG9jdW1lbnREYXRhOwogY2xhc3MgV2ViQmFja0Zvcndh
cmRMaXN0SXRlbTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CkBA
IC0xMDAsNiArMTAxLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYkNvcmU6OldlYkdMTG9h
ZFBvbGljeSB3ZWJHTExvYWRQb2xpY3koV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6
OlN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xB
bGxvd0NyZWF0aW9uOyB9CiAgICAgdmlydHVhbCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVz
b2x2ZVdlYkdMTG9hZFBvbGljeShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3Ry
aW5nJikgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93
Q3JlYXRpb247IH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCisKKyNpZiBVU0UoUVVJQ0tfTE9P
SykKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnQoY29u
c3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFdl
YktpdDo6UXVpY2tMb29rRG9jdW1lbnREYXRhJikgeyB9CisjZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggZmZiNDBmMjM3
YzJjNGJmM2Y4YTI1NGQxOGE3MGQ1YTYxNzZiOGQxNy4uYjdiMWYyNjdlODIzOTQwMjFjZmQ2NWFh
NGRlNmEzZGI0NTE0NTkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCkBAIC00
NSw2ICs0NSwxMSBAQCBzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kgX1dL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYQogCiAtICh2b2lkKV93ZWJWaWV3
V2ViUHJvY2Vzc0RpZENyYXNoOihXS1dlYlZpZXcgKil3ZWJWaWV3OwogCisjaWYgVEFSR0VUX09T
X0lQSE9ORQorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRTdGFydExv
YWRGb3JRdWlja0xvb2tEb2N1bWVudFdpdGhGaWxlTmFtZTooTlNTdHJpbmcgKilmaWxlTmFtZSB1
dGk6KE5TU3RyaW5nICopdXRpOworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnQ6KE5TRGF0YSAqKWRvY3VtZW50RGF0
YTsKKyNlbmRpZgorCiBAZW5kCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCmluZGV4IDA1NGNhMGU2ZTRjZDM0YWY5NTdiMTg3
NWUzMDJkYTgxYjY3Njg3YWIuLjgyZDk0YmEwZmM1ZDdkNjdjZTg2NTU4YjI0MmMzNWI3MDY4ZGZm
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLmgKQEAgLTEwMyw2ICsxMDMsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoV2ViS2l0OjpXZWJQYWdl
UHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkqKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRD
cmFzaChXZWJLaXQ6OldlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0
OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBhZGRlZEl0ZW0sIFZlY3RvcjxSZWZQdHI8V2ViS2l0
OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gcmVtb3ZlZEl0ZW1zKSBvdmVycmlkZTsKKyNpZiBV
U0UoUVVJQ0tfTE9PSykKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNr
TG9va0RvY3VtZW50KGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJp
bmcmIHV0aSkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnQoY29uc3QgV2ViS2l0OjpRdWlja0xvb2tEb2N1bWVudERhdGEmKSBv
dmVycmlkZTsKKyNlbmRpZgogCiAgICAgICAgIE5hdmlnYXRpb25TdGF0ZSYgbV9uYXZpZ2F0aW9u
U3RhdGU7CiAgICAgfTsKQEAgLTEzOCw2ICsxNDIsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgYm9v
bCB3ZWJWaWV3Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSA6IDE7CiAgICAg
ICAgIGJvb2wgd2ViVmlld0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IDE7CiAg
ICAgICAgIGJvb2wgd2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaCA6IDE7CisjaWYgVVNFKFFVSUNL
X0xPT0spCisgICAgICAgIGJvb2wgd2ViVmlld0RpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50IDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3RGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50IDogMTsKKyNlbmRpZgogICAgIH0gbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzOwog
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPFdLTmF2aWdhdGlvbj4+IG1fbmF2aWdh
dGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbQppbmRleCAwMDM2NjVlZjY2MjQ2YWNmMjcxYTEzODYwZmRkMDk2YTE2ODU2YmRkLi4w
MzA3NmQ1Yjc4M2UzMjU2ODY1ZDNkOGFmMjY0MzQzZjc5NTExMjQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTUzLDYgKzUz
LDEwIEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCisjaWYgVVNFKFFVSUNLX0xPT0spCisjaW1wb3J0ICJRdWlja0xvb2tEb2N1bWVu
dERhdGEuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIEhhc2hNYXA8
V2ViUGFnZVByb3h5KiwgTmF2aWdhdGlvblN0YXRlKj4mIG5hdmlnYXRpb25TdGF0ZXMoKQpAQCAt
MTIzLDYgKzEyNywxMCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6c2V0TmF2aWdhdGlvbkRlbGVn
YXRlKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgbV9uYXZpZ2F0aW9u
RGVsZWdhdGVNZXRob2RzLndlYlZpZXdDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6Y2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZTopXTsKICAgICBtX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2ViUHJvY2Vzc0RpZENyYXNoOildOworI2lmIFVTRShR
VUlDS19MT09LKQorICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3Rh
cnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudFdpdGhG
aWxlTmFtZTp1dGk6KV07CisgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdE
aWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnQ6KV07CisjZW5kaWYKIH0KIAogUmV0YWluUHRyPGlkIDxXS0hpc3RvcnlEZWxlZ2F0ZVByaXZh
dGU+ID4gTmF2aWdhdGlvblN0YXRlOjpoaXN0b3J5RGVsZWdhdGUoKQpAQCAtNTY3LDYgKzU3NSwz
MiBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VCYWNrRm9y
d2FyZExpc3QoV2ViS2l0OjpXZWJQYWdlUHJveAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIg
ZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6X1dLQmFja0ZvcndhcmRMaXN0RGlk
Q2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDp3cmFwcGVyKG1fbmF2aWdhdGlvblN0YXRlLm1fd2Vi
Vmlldy0+X3BhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpKV07CiB9CiAKKyNpZiBVU0UoUVVJQ0tfTE9P
SykKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFN0YXJ0TG9hZEZvclF1
aWNrTG9va0RvY3VtZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRp
KQoreworICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdEaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5t
X25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxl
Z2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdh
dGlvblN0YXRlLm1fd2ViVmlldyBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudFdpdGhG
aWxlTmFtZTpmaWxlTmFtZSB1dGk6dXRpXTsKK30KKwordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Okxv
YWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFdlYktp
dDo6UXVpY2tMb29rRG9jdW1lbnREYXRhJiBkYXRhKQoreworICAgIGlmICghbV9uYXZpZ2F0aW9u
U3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRGaW5pc2hMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbmF2aWdhdGlv
bkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7
CisgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtz
dGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRl
bGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50OihOU0RhdGEgKilkYXRhLmRlY29kZWREYXRhKCld
OworfQorI2VuZGlmCisKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjp3aWxsQ2hhbmdlSXNMb2FkaW5n
KCkKIHsKICAgICBbbV93ZWJWaWV3IHdpbGxDaGFuZ2VWYWx1ZUZvcktleTpAImxvYWRpbmciXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwYmIxMjA0NjExNmRi
NzQ5YTM3YzAxMzhhOGIyNzE3OWFiZTQwMDk3Li43ZTU2ZjAwNDcyZTljOGU5YmI2ODE1YmFjMDEx
NmE0ODM4YTU3NjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC0xNzQsNiArMTc0LDEwIEBAIHN0cnVjdCBXZWJQb3B1cEl0ZW07CiBjbGFzcyBXZWJWaWJyYXRp
b25Qcm94eTsKICNlbmRpZgogCisjaWYgVVNFKFFVSUNLX0xPT0spCitjbGFzcyBRdWlja0xvb2tE
b2N1bWVudERhdGE7CisjZW5kaWYKKwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8dWludDY0X3Q+
IFVuc2lnbmVkQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxFZGl0aW5nUmFuZ2U+
IEVkaXRpbmdSYW5nZUNhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8U3RyaW5nSW1w
bCo+IFN0cmluZ0NhbGxiYWNrOwpAQCAtMTM5NSw2ICsxMzk5LDExIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBmaW5kUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHVpbnQzMl90IHByb2Nlc3NU
eXBlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmlu
ZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nLCBib29sIGFsbG93T25seUFwcGxpY2F0aW9u
UGx1Z2lucywgdWludDY0X3QmIHBsdWdpblByb2Nlc3NUb2tlbiwgU3RyaW5nJiBuZXdNSU1FVHlw
ZSwgdWludDMyX3QmIHBsdWdpbkxvYWRQb2xpY3ksIFN0cmluZyYgdW5hdmFpbGFiaWxpdHlEZXNj
cmlwdGlvbik7CiAjZW5kaWYKIAorI2lmIFVTRShRVUlDS19MT09LKQorICAgIHZvaWQgZGlkU3Rh
cnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
U3RyaW5nJiB1dGkpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
KGNvbnN0IFF1aWNrTG9va0RvY3VtZW50RGF0YSYpOworI2VuZGlmCisKICAgICB1aW50NjRfdCBn
ZW5lcmF0ZU5hdmlnYXRpb25JRCgpOwogCiAgICAgUGFnZUNsaWVudCYgbV9wYWdlQ2xpZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggMzEyOWJlMjYwMGMzNjRmYzczMjIzMzczNTNlYWFlODFiOWI1MDViZC4uMDMyZDNkMzZm
ZGFlNjhkZmZiYTRkNWJmNWYwNDJiMjNhMzFiN2I2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zNjcsNCArMzY3LDkgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTaG93VGVsZXBob25lTnVtYmVyTWVudShT
dHJpbmcgdGVsZXBob25lTnVtYmVyLCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICNlbmRpZgog
I2VuZGlmCisKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKyAgICBEaWRTdGFydExvYWRGb3JRdWlja0xv
b2tEb2N1bWVudChTdHJpbmcgZmlsZU5hbWUsIFN0cmluZyB1dGkpCisgICAgRGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50KFdlYktpdDo6UXVpY2tMb29rRG9jdW1lbnREYXRhIGRhdGEp
CisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KaW5kZXggYWU3NWFlYzQyMTk3NThjNzBjOGZiOTQ5NmRhNjllZTU4YjcxODU4Yi4u
ZDkyYzU4MDU2MTRhNjMxNmY3OWUzYzNhNGEzMzBhNDMwNzQ4ZDJjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTQ0LDYgKzQ0LDEw
IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9V
c2VyQWdlbnQuaD4KIAorI2lmIFVTRShRVUlDS19MT09LKQorI2ltcG9ydCAiQVBJTG9hZGVyQ2xp
ZW50LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNTcwLDYgKzU3NCwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6em9vbVRvUmVj
dChGbG9hdFJlY3QgcmVjdCwgZG91YmxlIG1pbmltdW1TY2FsZSwgZG91YmxlIG1heGltdQogICAg
IG1fcGFnZUNsaWVudC56b29tVG9SZWN0KHJlY3QsIG1pbmltdW1TY2FsZSwgbWF4aW11bVNjYWxl
KTsKIH0KIAorI2lmIFVTRShRVUlDS19MT09LKQorICAgIAordm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNv
bnN0IFN0cmluZyYgdXRpKQoreworICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRTdGFydExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudChmaWxlTmFtZSwgdXRpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6
OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudChjb25zdCBRdWlja0xvb2tEb2N1bWVu
dERhdGEmIGRhdGEpCit7CisgICAgbV9sb2FkZXJDbGllbnQtPmRpZEZpbmlzaExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudChkYXRhKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjZjkzYTNmMGRjNzBjODEyZmU5YzI0ZjM1
ZjAxYzMxZWQzYTFlZmU4Li43NGI3OGQ0ZjJiNTI3NTE2NTU4ODc3NTc5ZGE1ZmMyZjIwZDQwOWY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDE5LDEwICsxMDE5LDE2IEBACiAJCTlGNTRGODk1MTY0OEFFMEYwMDdERjgxQSAv
KiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Qcm9j
ZXNzTWFuYWdlck1hYy5tbSAqLzsgfTsKIAkJOUZCNUYzOTQxNjlFNkE4MDAwMkMyNUJGIC8qIFdL
Q29udGV4dFByaXZhdGVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1h
Yy5tbSAqLzsgfTsKIAkJOUZCNUYzOTUxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZh
dGVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlG
QjVGMzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTExOEE5RUUxOTA3QUQ2
RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE4QTlFQzE5MDdBRDZGMDBGN0M5MkIgLyog
UXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcCAqLzsgfTsKKwkJQTExOEE5RUYxOTA3QUQ2RjAwRjdD
OTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9v
a0RvY3VtZW50RGF0YS5oICovOyB9OworCQlBMTE4QTlGMjE5MDhCOEVBMDBGN0M5MkIgLyogX1dL
TlNGaWxlTWFuYWdlckV4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExMThBOUYwMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2Vy
RXh0cmFzLm1tICovOyB9OworCQlBMTE4QTlGMzE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxl
TWFuYWdlckV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTExOEE5RjExOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUE0
RkU1QTE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQTRGRTU3MThEQ0U5RkEwMEI1RUE4QSAvKiBf
V0tEb3dubG9hZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUExQTRGRTVCMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQTRGRTU4MThEQ0U5RkEw
MEI1RUE4QSAvKiBfV0tEb3dubG9hZC5tbSAqLzsgfTsKIAkJQTFBNEZFNUMxOERDRTlGQTAwQjVF
QThBIC8qIF9XS0Rvd25sb2FkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExQTRGRTU5MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9h
ZEludGVybmFsLmggKi87IH07CiAJCUExQTRGRTYxMThERDU0QTQwMEI1RUE4QSAvKiBfV0tEb3du
bG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMUE0RkU2MDE4REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxvYWREZWxlZ2F0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUExQzUxMkM4
MTkwNjU2RTUwMDQ0ODkxNCAvKiBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDNTEyQzYxOTA2NTZFNTAw
NDQ4OTE0IC8qIFdlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5jcHAgKi87IH07CisJCUExQzUxMkM5
MTkwNjU2RTUwMDQ0ODkxNCAvKiBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzUxMkM3MTkwNjU2RTUwMDQ0
ODkxNCAvKiBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuaCAqLzsgfTsKIAkJQTFERjYzMTIxOEUw
QjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFERjYzMTAxOEUwQjdDODAwM0EzRTJBIC8qIERvd25s
b2FkQ2xpZW50Lm1tICovOyB9OwogCQlBMURGNjMxMzE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxv
YWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExREY2MzExMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5oICovOyB9OwogCQlB
NUVGRDM4QzE2QjBFODhDMDBCMkYwRTggLyogV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUVGRDM4QjE2QjBFODhD
MDBCMkYwRTggLyogV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI4ODIsMTAgKzI4ODgsMTYgQEAKIAkJOUY1
NEY4OTQxNjQ4QUUwRTAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGx1Z2luUHJvY2Vzc01hbmFnZXJN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGQjVGMzkyMTY5RTZBODAwMDJD
MjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0ZU1hYy5tbTsgcGF0aCA9IG1hYy9XS0NvbnRl
eHRQcml2YXRlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RkI1RjM5MzE2
OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXS0NvbnRleHRQcml2YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tDb250
ZXh0UHJpdmF0ZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTE4QTlFQzE5
MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHA7IHBhdGgg
PSBpb3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBRdWlja0xvb2tEb2N1bWVudERhdGEu
aDsgcGF0aCA9IGlvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTExOEE5RjAxOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJF
eHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tOU0Zp
bGVNYW5hZ2VyRXh0cmFzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTE4QTlG
MTE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQTRGRTU3MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3du
bG9hZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEb3dubG9hZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUE0RkU1ODE4RENFOUZBMDBCNUVBOEEgLyog
X1dLRG93bmxvYWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBf
V0tEb3dubG9hZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFBNEZFNTkxOERD
RTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gX1dLRG93bmxvYWRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMUE0RkU2MDE4REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxvYWREZWxlZ2F0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEb3dubG9hZERlbGVnYXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExQzUxMkM2MTkwNjU2RTUwMDQ0ODkx
NCAvKiBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmNwcDsgcGF0aCA9IGlvcy9X
ZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBMUM1MTJDNzE5MDY1NkU1MDA0NDg5MTQgLyogV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlF1aWNrTG9va0hhbmRsZUNsaWVu
dC5oOyBwYXRoID0gaW9zL1dlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMURGNjMxMDE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGll
bnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZENs
aWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFERjYzMTExOEUwQjdDODAw
M0EzRTJBIC8qIERvd25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERvd25sb2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRURE
MkQ5MTg4NEFDRTAwMEJCRkU5OCAvKiBBbGwueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQWxsLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQyNCw2ICs0NDM2LDggQEAK
IAkJCQkyRDI4RjNFMTE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViRGF0YWJhc2VNYW5hZ2VySU9TLm1t
ICovLAogCQkJCTJEMjhGM0UyMTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJFZGl0b3JDbGllbnRJT1Mu
bW0gKi8sCiAJCQkJMkQyOEYzRTMxODg1Q0NDMTAwNEI5RUFFIC8qIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50SU9TLm1tICovLAorCQkJCUExQzUxMkM2MTkwNjU2RTUwMDQ0ODkxNCAvKiBXZWJRdWlja0xv
b2tIYW5kbGVDbGllbnQuY3BwICovLAorCQkJCUExQzUxMkM3MTkwNjU2RTUwMDQ0ODkxNCAvKiBX
ZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gaW9zOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQ0NDIsNiArNDQ1Niw4IEBACiAJCQkJMkRBOTQ0
OUQxODg0RTRGMDAwRUQ4NkRCIC8qIEdlc3R1cmVUeXBlcy5oICovLAogCQkJCTJEQTk0NDk3MTg4
NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tICovLAogCQkJCTJE
QTk0NDk4MTg4NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJUb3VjaEV2ZW50SU9TLm1tICovLAor
CQkJCUExMThBOUVDMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuY3Bw
ICovLAorCQkJCUExMThBOUVEMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERh
dGEuaCAqLywKIAkJCQkyREE5NDQ5OTE4ODRFNEYwMDBFRDg2REIgLyogV2ViSU9TRXZlbnRGYWN0
b3J5LmggKi8sCiAJCQkJMkRBOTQ0OUExODg0RTRGMDAwRUQ4NkRCIC8qIFdlYklPU0V2ZW50RmFj
dG9yeS5tbSAqLywKIAkJCQkyREE5NDQ5QjE4ODRFNEYwMDBFRDg2REIgLyogV2ViUGxhdGZvcm1U
b3VjaFBvaW50SU9TLmNwcCAqLywKQEAgLTQ3NTQsNiArNDc3MCw4IEBACiAJCQkJMzczRDEyMjEx
OEE0NzMwMTAwNjZEOUNDIC8qIF9XS0ZyYW1lSGFuZGxlLmggKi8sCiAJCQkJMzczRDEyMjAxOEE0
NzMwMTAwNjZEOUNDIC8qIF9XS0ZyYW1lSGFuZGxlLm1tICovLAogCQkJCTM3M0QxMjI2MThBNDcz
RjYwMDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRsZUludGVybmFsLmggKi8sCisJCQkJQTExOEE5RjEx
OTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMuaCAqLywKKwkJCQlBMTE4
QTlGMDE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5tbSAqLywKIAkJ
CQkxQTlFMzI4QjE4MjE2NUE5MDBGNUQwNEMgLyogX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmgg
Ki8sCiAJCQkJMUE5RTMyOEMxODIxNjVBOTAwRjVEMDRDIC8qIF9XS1JlbW90ZU9iamVjdEludGVy
ZmFjZS5tbSAqLywKIAkJCQkxQUFCRkUzOTE4MjlDMUVEMDA1QjA3MEUgLyogX1dLUmVtb3RlT2Jq
ZWN0SW50ZXJmYWNlSW50ZXJuYWwuaCAqLywKQEAgLTY3ODEsNiArNjc5OSw3IEBACiAJCQkJQkNC
MEFFRTkxMjJGNTNFMzAwQjEzNDFFIC8qIE11dGFibGVEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTZGQkEyQTExRTY4NjI3MDBEQjEzNzEgLyogTmV0c2NhcGVCcm93c2VyRnVuY3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBNkZCRDI4MTFFNjlCQzIwMERCMTM3MSAvKiBOZXRzY2Fw
ZVBsdWdpbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFDNTEyQzkxOTA2NTZFNTAwNDQ4OTE0IC8q
IFdlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0QTlDNTYx
MkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUE1ODg5MjExRUU3MDQwMDA2MUI4ODIgLyogTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBp
biBIZWFkZXJzICovLAogCQkJCUUxNzk4QzdBMTZFNjgxODgwMDI0MDEzOSAvKiBOZXR3b3JrQmxv
YlJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTY4MjgsNiArNjg0Nyw3IEBACiAJCQkJNTEw
NkQ3QzQxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDOEFDQTE1MTY2NzBEODkwMDRDMTk0MSAvKiBPYmpDT2JqZWN0R3JhcGhD
b2RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0Y2NzJEMTJDN0VERjcwMDhGOUMzNSAvKiBP
cmlnaW5BbmREYXRhYmFzZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMThBOUVGMTkwN0FENkYw
MEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
NUIxQzUxMTg5ODYwNkYwMDRGQ0Y5QiAvKiBXS05hdmlnYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDRjQ3RkZCMTcyNzVDNTcwMDhBQ0I5MSAvKiBQYWdlQmFubmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzZFREFBNjExMTI3MUM2MDBFNzY3OEIgLyogUGFnZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC03MjYwLDYgKzcyODAsNyBAQAogCQkJCUJDQ0Y2QUMzMTJDOTFGMzQwMDhGOUMz
NSAvKiBXS0ltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NGNkFDQTEyQzkxRjU5MDA4RjlD
MzUgLyogV0tJbWFnZUNHLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzhFMjkzOTEyNzYxRTVCMDBC
QzdCRDAgLyogV0tJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMThBOUYzMTkwOEI4
RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2RUU4NDlDODEzNjhEOTM5MDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MUE5RTEwQjEzMTVDRDE4MDA5RTcwMzEgLyogV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzM0QzQTNCNjEzMzk2MDBCMDA3MDlC
RTQgLyogV0tNZWRpYUNhY2hlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC04MzI0LDYgKzgz
NDUsNyBAQAogCQkJCUJDODI4NDREMTZCNTA4MUMwMEEyNzhGRSAvKiBQbHVnaW5TZXJ2aWNlRW50
cnlQb2ludC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNkZCN0FFMTFFNjRCNjgwMERCMTM3MSAv
KiBQbHVnaW5WaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOEM5MkY0MTJEQjlFNzEwMENG
MkFFQiAvKiBQcmludEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFDNTEyQzgxOTA2NTZF
NTAwNDQ4OTE0IC8qIFdlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMUNDMUI5MTEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFDMTMzNkUxODU2NUQyQjAwRjNFQzA1IC8qIEFQSVBhZ2VIYW5kbGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMTE3RjYxMURCQjMwOTAwOTgxNjE1IC8qIFByb2Nlc3NM
YXVuY2hlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg0NTksNiArODQ4MSw3IEBACiAJCQkJQkMw
MzJEQkExMEY0MzgwRjAwNThDMTVBIC8qIFdlYkV2ZW50Q29udmVyc2lvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyRDE0MEVBRjE4RjM3QkUwMDA1RTc1QTAgLyogUGFnZU92ZXJsYXlDb250cm9s
bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTExQjVFMTEyRjYyOTgwMDMzN0JBQiAvKiBX
ZWJFdmVudEZhY3RvcnkubW0gaW4gU291cmNlcyAqLywKKwkJCQlBMTE4QTlFRTE5MDdBRDZGMDBG
N0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
M0REMUZEMTI1RTU5RjMwMDQ1MTVFNiAvKiBXZWJGaW5kQ2xpZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDRTQ2OTUzMTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtQ2xpZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDRTQ2OTU1MTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtU3VibWlz
c2lvbkxpc3RlbmVyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04NjE2LDYgKzg2MzksNyBA
QAogCQkJCTUxMkUzNEU0MTMwQjREMDUwMEFCRDE5QSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQzk2MTE4MTgzRDI5NDcwMEQyMDAyRSAvKiBX
ZWJJREJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDNDA3NUYzMTI0RkYwMjcwMDY4RjIwQSAvKiBXS0FycmF5LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUExMThBOUYyMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyRjU4RjUxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFMzUxQ0ExODBG
MkNDQzAwRTUzQkU5IC8qIElEQlV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTJG
NThGNzEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOTI0
MDRlOTI0YTQ0N2ZiMzc5NTY1MWY1YjVkNzA0ZTNmYzRiMzczYy4uZjcxNWMyNmJjN2MyNzZiZmQ1
ODc0ZGJlZjhkOWUxOWVjMDk0ZGQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApA
QCAtMjI5LDYgKzIyOSwxMCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUGFn
ZVRyYW5zaXRpb25JZk5lZWRlZCgpIG92ZXJyaWRlOwogCisjaWYgVVNFKFFVSUNLX0xPT0spCisg
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZShXZWJDb3JlOjpRdWlja0xv
b2tIYW5kbGUmKSBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgV2ViRnJhbWUqIG1fZnJhbWU7CiAg
ICAgUmVmUHRyPFBsdWdpblZpZXc+IG1fcGx1Z2luVmlldzsKICAgICBib29sIG1faGFzU2VudFJl
c3BvbnNlVG9QbHVnaW5WaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViRnJhbWVMb2FkZXJDbGllbnRJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJGcmFtZUxvYWRlckNsaWVu
dElPUy5tbQppbmRleCBhZGViYWZkYTNiYTg4NWU5YjZiNzMxYWFmY2I4MTQ2ZjlhMDI5ZTNjLi41
ZGIxZWQ1MWM5NDEyMDkzZjg0NmUwYzczMGE1NjljMjE5NTE5OGNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJGcmFtZUxvYWRlckNs
aWVudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJGcmFtZUxvYWRlckNsaWVudElPUy5tbQpAQCAtMzAsNiArMzAsMTMgQEAKIAogI2lt
cG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCisjaWYgVVNFKFFVSUNLX0xPT0spCisj
aW1wb3J0ICJXZWJGcmFtZS5oIgorI2ltcG9ydCAiV2ViUGFnZS5oIgorI2ltcG9ydCAiV2ViUXVp
Y2tMb29rSGFuZGxlQ2xpZW50LmgiCisjaW1wb3J0IDxXZWJDb3JlL1F1aWNrTG9vay5oPgorI2Vu
ZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTUwLDYgKzU3LDE3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IFdlYkZyYW1lTG9hZGVy
Q2xpZW50Ojpjb25uZWN0aW9uUHJvcGVydGllcyhEb2N1bWVudExvCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKKyNpZiBVU0UoUVVJQ0tfTE9PSykKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZShXZWJDb3JlOjpRdWlja0xvb2tIYW5kbGUmIGhhbmRs
ZSkKK3sKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICgh
d2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaGFuZGxlLnNldENsaWVudChXZWJRdWlj
a0xvb2tIYW5kbGVDbGllbnQ6OmNyZWF0ZShoYW5kbGUsIHdlYlBhZ2UtPnBhZ2VJRCgpKSk7Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJ
T1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43YjEzY2JlZjlkOWFlODQ4MTAxYjJhODE5ZjY1Y2E5MGU5MjIzZThhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlF1aWNrTG9va0hhbmRsZUNsaWVu
dC5oIgorCisjaWYgVVNFKFFVSUNLX0xPT0spCisKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1F1aWNr
TG9vay5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50
OjpXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQoY29uc3QgV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxl
JiBoYW5kbGUsIHVpbnQ2NF90IHBhZ2VJRCkKKyAgICA6IG1fZmlsZU5hbWUoaGFuZGxlLnByZXZp
ZXdGaWxlTmFtZSgpKQorICAgICwgbV91dGkoaGFuZGxlLnByZXZpZXdVVEkoKSkKKyAgICAsIG1f
cGFnZUlEKHBhZ2VJRCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50KG1fZmlsZU5h
bWUsIG1fdXRpKSwgbV9wYWdlSUQpOworfQorCit2b2lkIFdlYlF1aWNrTG9va0hhbmRsZUNsaWVu
dDo6ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkKK3sKKyAgICBtX2Rh
dGEuYXBwZW5kKGRhdGFBcnJheSk7Cit9CisKK3ZvaWQgV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50
OjpkaWRGaW5pc2hMb2FkaW5nKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudCht
X2RhdGEpLCBtX3BhZ2VJRCk7CisgICAgbV9kYXRhLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViUXVp
Y2tMb29rSGFuZGxlQ2xpZW50OjpkaWRGYWlsKCkKK3sKKyAgICBtX2RhdGEuY2xlYXIoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoUVVJQ0tfTE9PSykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlF1aWNrTG9va0hhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZi
OWE0M2I1ZDNkNzkxMTM2ZTYwYTdiNmE5MjNkZDIzZTFiMWUxZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlF1aWNrTG9v
a0hhbmRsZUNsaWVudC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YlF1aWNrTG9va0hhbmRsZUNsaWVudF9oCisjZGVmaW5lIFdlYlF1aWNrTG9va0hhbmRsZUNsaWVu
dF9oCisKKyNpbmNsdWRlICJRdWlja0xvb2tEb2N1bWVudERhdGEuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1F1aWNrTG9va0hhbmRsZUNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFF1aWNrTG9va0hhbmRsZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYkZyYW1lOworCitjbGFzcyBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQgOiBwdWJsaWMgV2Vi
Q29yZTo6UXVpY2tMb29rSGFuZGxlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpRdWlj
a0xvb2tIYW5kbGUmIGhhbmRsZSwgdWludDY0X3QgcGFnZUlEKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQoaGFuZGxlLCBwYWdlSUQp
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50KGNvbnN0
IFdlYkNvcmU6OlF1aWNrTG9va0hhbmRsZSYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbCgpIG92ZXJyaWRlOworCisgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CisgICAg
Y29uc3QgU3RyaW5nIG1fdXRpOworICAgIGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFF1
aWNrTG9va0RvY3VtZW50RGF0YSBtX2RhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFdlYlF1aWNrTG9va0hhbmRsZUNsaWVudF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230127</attachid>
            <date>2014-04-24 18:37:40 -0700</date>
            <delta_ts>2014-04-25 14:31:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132157-20140424183718.patch</filename>
            <type>text/plain</type>
            <size>44552</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3Nzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDVmYzI4ODdhZTIzMzc5
NjFhN2Y1NDgyZWM2YzEwNDNlNjkwNDM4Yi4uMzJkNWQwYjQ5NzVmMGY3ZWRmOTM4NTgwMzQwNDUx
MDVmYmQ4MmNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE0LTA0LTI0ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBJbXBsZW1lbnQgV2Vi
UXVpY2tMb29rSGFuZGxlQ2xpZW50IGZvciBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzIxNTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnRlZCBRdWlj
a0xvb2tIYW5kbGU6OnByZXZpZXdVVEkoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2su
bW06CisgICAgICAgIChXZWJDb3JlOjpRdWlja0xvb2tIYW5kbGU6OnByZXZpZXdGaWxlTmFtZSk6
IENoYW5nZWQgdG8gcmV0dXJuIGEgV1RGOjpTdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpRdWlj
a0xvb2tIYW5kbGU6OnByZXZpZXdVVEkpOiBBZGRlZC4KKwogMjAxNC0wNC0yNCAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBkb24ndCBhc2sg
Zm9yIEFWQXNzZXRUcmFjayBwcm9wZXJ0aWVzIGJlZm9yZSB0aGV5IGFyZSBhdmFpbGFibGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCA0MmZkMWI4NjI5OGY2N2E4ZWQxMWRiMTVjZGNhYzZkYTMwZTA0MGIwLi5iMTQx
NTdmNjU0OWI1Njg4MzAwYWMzZGY1NDM1ODNhNTc0YTJmOGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTIgQEAKKzIwMTQtMDQtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisg
ICAgICAgIFtpT1NdIEltcGxlbWVudCBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQgZm9yIFdlYktp
dDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjE1
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hh
cmVkL0FQSS9Db2NvYS9fV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmg6IEFkZGVkLgorICAgICAgICAq
IFNoYXJlZC9BUEkvQ29jb2EvX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5tbTogQWRkZWQuCisgICAg
ICAgICgrW05TRmlsZU1hbmFnZXIgX3dlYl9jcmVhdGVUZW1wb3JhcnlGaWxlRm9yUXVpY2tMb29r
Ol0pOiBDYWxsZWQgV2ViQ29yZTo6Y3JlYXRlVGVtcG9yYXJ5RmlsZUZvclF1aWNrTG9vaygpLgor
ICAgICAgICAqIFNoYXJlZC9pb3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlF1aWNrTG9va0RvY3VtZW50RGF0YTo6UXVpY2tMb29rRG9jdW1lbnRE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6UXVpY2tMb29rRG9jdW1lbnREYXRhOjphcHBlbmQpOiBB
cHBlbmVkIGVhY2ggQ0ZEYXRhUmVmIHRvIG1fZGF0YSBhbmQgYWRkZWQgdGhlaXIgc2l6ZXMgdG8g
bV9zaXplLgorICAgICAgICAoV2ViS2l0OjpRdWlja0xvb2tEb2N1bWVudERhdGE6OmRlY29kZWRE
YXRhKTogUmV0dXJuZWQgdGhlIGNvbWJpbmVkIENGRGF0YVJlZiBjcmVhdGVkIGJ5IGRlY29kZSgp
LgorICAgICAgICBOYW1lZCB0aGlzIG1ldGhvZCAnZGVjb2RlZERhdGEnIHRvIGluZGljYXRlIHRo
YXQgaXQgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIG9iamVjdHMgcG9wdWxhdGVkIGJ5IGRlY29k
ZSgpLgorICAgICAgICAoV2ViS2l0OjpRdWlja0xvb2tEb2N1bWVudERhdGE6OmNsZWFyKTogQ2xl
YXJlZCBtX2RhdGEgYW5kIHJlc2V0IG1fc2l6ZSB0byAwLgorICAgICAgICAoV2ViS2l0OjpRdWlj
a0xvb2tEb2N1bWVudERhdGE6OmVuY29kZSk6IEltcGxlbWVudGVkIGEgY3VzdG9tIGVuY29kaW5n
IGZ1bmN0aW9uIHRvIGF2b2lkIGhhdmluZyB0byBjb21iaW5lCisgICAgICAgIG1fZGF0YSBpbnRv
IGNvbnRpZ3VvdXMgbWVtb3J5IGF0IGVuY29kaW5nIHRpbWUuIEVuY29kZWQgbV9zaXplIHRoZW4g
c2VxdWVudGlhbGx5IGVuY29kZWQgZWFjaCBtZW1iZXIgb2YgbV9kYXRhLgorICAgICAgICAoV2Vi
S2l0OjpRdWlja0xvb2tEb2N1bWVudERhdGE6OmRlY29kZSk6IERlY29kZWQgdGhlIGJ5dGUgc3Ry
ZWFtIGludG8gYSBzaW5nbGUgQ0ZEYXRhUmVmLiBFYWdlcmx5IGNvcGllZCB0aGUKKyAgICAgICAg
ZGVjb2RlZCBkYXRhIHJhdGhlciB0aGFuIHVzaW5nIGEgRGF0YVJlZmVyZW5jZSBzaW5jZSB3ZSBr
bm93IHRoaXMgd2lsbCBvdXRsaXZlIHRoZSBkZWNvZGVyLgorICAgICAgICAqIFNoYXJlZC9pb3Mv
UXVpY2tMb29rRG9jdW1lbnREYXRhLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6ZGlkU3RhcnRM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnQpOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRp
ZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpzZXRO
YXZpZ2F0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Okxv
YWRlckNsaWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnQpOgorICAgICAgICAo
V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50KToKKyAg
ICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkZyYW1lTG9hZGVyQ2xpZW50SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ3JlYXRlUXVpY2tM
b29rSGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJR
dWlja0xvb2tIYW5kbGVDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUXVp
Y2tMb29rSGFuZGxlQ2xpZW50OjpXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQpOiBTZW50IERpZFN0
YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50IHRvCisgICAgICAgIFdlYlBhZ2VQcm94eS4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlRGF0YUFy
cmF5KTogQXBwZW5kZWQgZGF0YUFycmF5IHRvIG1fZGF0YS4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UXVpY2tMb29rSGFuZGxlQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKTogU2VudCBEaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnQgdG8gV2ViUGFnZVByb3h5CisgICAgICAgIGFuZCB0aGVu
IGNsZWFyZWQgbV9kYXRhLgorICAgICAgICAoV2ViS2l0OjpXZWJRdWlja0xvb2tIYW5kbGVDbGll
bnQ6OmRpZEZhaWwpOiBDbGVhcmVkIG1fZGF0YS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlF1aWNrTG9va0hhbmRsZUNsaWVudDo6Y3JlYXRlKToKKwogMjAxNC0wNC0y
NCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJL
aXQyIFZpZXcgR2VzdHVyZXM6IFVzZSBhIHNpbmdsZSBzdHJ1Y3QgZm9yIHRoZSBzbmFwc2hvdCwg
YW5kIHBhc3MgaXQgYXJvdW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGUwZThkNDU5ZmFlMzY5
NzhiZWZiZTEwOTk1NDlmNGM5YjQ4ZWZmYzEuLjQ1NmFlMGNhNzJkOTk5MjJmN2RjYzFkZWNkMGZi
YWYyMWI3MWUyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0zMjI5LDYgKzMyMjksNyBAQCBf
X1pON1dlYkNvcmUzMnFsUHJldmlld0NvbnZlcnRlckZpbGVOYW1lRm9yVVJMRVA1TlNVUkwKIF9f
Wk43V2ViQ29yZTMzUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0RXYKIF9fWk43V2Vi
Q29yZTM0cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZEVQNU5TVVJMUDhOU1N0cmlu
Z1A2TlNEYXRhCiBfX1pON1dlYkNvcmUzNWFkZFFMUHJldmlld0NvbnZlcnRlcldpdGhGaWxlRm9y
VVJMRVA1TlNVUkxQMTFvYmpjX29iamVjdFA4TlNTdHJpbmcKK19fWk5LN1dlYkNvcmUxNVF1aWNr
TG9va0hhbmRsZTEwcHJldmlld1VUSUV2CiBfX1pOSzdXZWJDb3JlMTVRdWlja0xvb2tIYW5kbGUx
NXByZXZpZXdGaWxlTmFtZUV2CiBfX1pOSzdXZWJDb3JlMTVRdWlja0xvb2tIYW5kbGUxN3ByZXZp
ZXdSZXF1ZXN0VVJMRXYKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9RdWlja0xvb2suaAppbmRleCA2YmJkMTQyMmQ5OGQwYjExMDEzMTc4ODk0NjMxMDlm
YmU4ZGE1MDczLi43OTA5OGRkY2M2Nzc5MjVlYWZlNjUyNDhmZmQ3NzBlM2U4MzA2ZjlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaApAQCAt
MTAxLDcgKzEwMSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q2xpZW50KFBhc3NSZWZQdHI8
UXVpY2tMb29rSGFuZGxlQ2xpZW50PiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIAot
ICAgIE5TU3RyaW5nICpwcmV2aWV3RmlsZU5hbWUoKSBjb25zdDsKKyAgICBTdHJpbmcgcHJldmll
d0ZpbGVOYW1lKCkgY29uc3Q7CisgICAgU3RyaW5nIHByZXZpZXdVVEkoKSBjb25zdDsKICAgICBO
U1VSTCAqZmlyc3RSZXF1ZXN0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFJlcXVlc3RVUkwu
Z2V0KCk7IH0KICAgICBOU1VSTCAqcHJldmlld1JlcXVlc3RVUkwoKSBjb25zdDsKICAgICBRTFBy
ZXZpZXdDb252ZXJ0ZXIgKmNvbnZlcnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udmVydGVyLmdl
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9R
dWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xv
b2subW0KaW5kZXggMjJhOTFiM2E3NjVlOTlmODQ1YWUzYWNmYmRkMmRjOTUxZGU4MTljYy4uZmQw
MmE0NzQ1YWI2MzlmZWEzMzRkNGYxOTIzZmQzZDI4M2U2M2UzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQpAQCAtNDUwLDExICs0NTAs
MTYgQEAgUXVpY2tMb29rSGFuZGxlOjp+UXVpY2tMb29rSGFuZGxlKCkKICAgICBbbV9kZWxlZ2F0
ZSBjbGVhckhhbmRsZV07CiB9CiAKLU5TU3RyaW5nICpRdWlja0xvb2tIYW5kbGU6OnByZXZpZXdG
aWxlTmFtZSgpIGNvbnN0CitTdHJpbmcgUXVpY2tMb29rSGFuZGxlOjpwcmV2aWV3RmlsZU5hbWUo
KSBjb25zdAogewogICAgIHJldHVybiBbbV9jb252ZXJ0ZXIgcHJldmlld0ZpbGVOYW1lXTsKIH0K
IAorU3RyaW5nIFF1aWNrTG9va0hhbmRsZTo6cHJldmlld1VUSSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFttX2NvbnZlcnRlciBwcmV2aWV3VVRJXTsKK30KKwogTlNVUkwgKlF1aWNrTG9va0hhbmRs
ZTo6cHJldmlld1JlcXVlc3RVUkwoKSBjb25zdAogewogICAgIHJldHVybiBbW21fY29udmVydGVy
IHByZXZpZXdSZXF1ZXN0XSBVUkxdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9Db2NvYS9fV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0NvY29hL19XS05TRmlsZU1hbmFnZXJFeHRyYXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzAyOGUw
ZThhZTMxZThiNTI1ODMzMmQyMmU0MzZmNjc3ZGMyNzNhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9fV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmgKQEAg
LTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdDIvV0tGb3VuZGF0aW9u
Lmg+CisKKyNpZiBUQVJHRVRfT1NfSVBIT05FCisKK0BpbnRlcmZhY2UgTlNGaWxlTWFuYWdlciAo
V0tFeHRyYXMpCisKKysgKE5TU3RyaW5nICopX3dlYl9jcmVhdGVUZW1wb3JhcnlGaWxlRm9yUXVp
Y2tMb29rOihOU1N0cmluZyAqKWZpbGVOYW1lOworCitAZW5kCisKKyNlbmRpZiAvLyBUQVJHRVRf
T1NfSVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL19X
S05TRmlsZU1hbmFnZXJFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29h
L19XS05TRmlsZU1hbmFnZXJFeHRyYXMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ2MDlmMDZjNzFlNGRjYWEw
MTAxMGJhOWEwODk5ZmExMjIyNjcxMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvQ29jb2EvX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5tbQpAQCAtMCwwICsxLDQy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJfV0tOU0ZpbGVN
YW5hZ2VyRXh0cmFzLmgiCisKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKworI2ltcG9ydCA8V2ViQ29y
ZS9RdWlja0xvb2suaD4KKworQGltcGxlbWVudGF0aW9uIE5TRmlsZU1hbmFnZXIgKFdLRXh0cmFz
KQorCisrIChOU1N0cmluZyAqKV93ZWJfY3JlYXRlVGVtcG9yYXJ5RmlsZUZvclF1aWNrTG9vazoo
TlNTdHJpbmcgKilmaWxlTmFtZQoreworICAgIHJldHVybiBXZWJDb3JlOjpjcmVhdGVUZW1wb3Jh
cnlGaWxlRm9yUXVpY2tMb29rKGZpbGVOYW1lKTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gVVNF
KFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL1F1aWNr
TG9va0RvY3VtZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL1F1aWNrTG9v
a0RvY3VtZW50RGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTlmODQ0NmZkYTMzMTY1YjVmMWIwZTJmNDE5
ZGUwMjc4ODFhM2ZhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9p
b3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlF1aWNrTG9va0RvY3VtZW50RGF0YS5o
IgorCisjaWYgVVNFKFFVSUNLX0xPT0spCisKKyNpbmNsdWRlICJBcmd1bWVudERlY29kZXIuaCIK
KyNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1F1
aWNrTG9va0RvY3VtZW50RGF0YTo6UXVpY2tMb29rRG9jdW1lbnREYXRhKCkKKyAgICA6IG1fc2l6
ZSgwKQoreworfQorCit2b2lkIFF1aWNrTG9va0RvY3VtZW50RGF0YTo6YXBwZW5kKENGQXJyYXlS
ZWYgZGF0YUFycmF5KQoreworICAgIENGQXJyYXlBcHBseUZ1bmN0aW9uKGRhdGFBcnJheSwgQ0ZS
YW5nZU1ha2UoMCwgQ0ZBcnJheUdldENvdW50KGRhdGFBcnJheSkpLCBbXShjb25zdCB2b2lkKiB2
YWx1ZSwgdm9pZCogY29udGV4dCkgeworICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFS
ZWYpdmFsdWU7CisgICAgICAgIEFTU0VSVChDRkdldFR5cGVJRChkYXRhKSA9PSBDRkRhdGFHZXRU
eXBlSUQoKSk7CisgICAgICAgIFF1aWNrTG9va0RvY3VtZW50RGF0YSogZG9jdW1lbnREYXRhID0g
c3RhdGljX2Nhc3Q8UXVpY2tMb29rRG9jdW1lbnREYXRhKj4oY29udGV4dCk7CisgICAgICAgIGRv
Y3VtZW50RGF0YS0+bV9kYXRhLmFwcGVuZChkYXRhKTsKKyAgICAgICAgZG9jdW1lbnREYXRhLT5t
X3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOworICAgIH0sIHRoaXMpOworfQorCitDRkRh
dGFSZWYgUXVpY2tMb29rRG9jdW1lbnREYXRhOjpkZWNvZGVkRGF0YSgpIGNvbnN0Cit7CisgICAg
QVNTRVJUKG1fZGF0YS5zaXplKCkgPD0gMSk7CisgICAgaWYgKG1fZGF0YS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2RhdGFbMF0uZ2V0KCk7Cit9CisK
K3ZvaWQgUXVpY2tMb29rRG9jdW1lbnREYXRhOjpjbGVhcigpCit7CisgICAgbV9kYXRhLmNsZWFy
KCk7CisgICAgbV9zaXplID0gMDsKK30KKwordm9pZCBRdWlja0xvb2tEb2N1bWVudERhdGE6OmVu
Y29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
IDw8IG1fc2l6ZTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRhdGEgOiBtX2RhdGEpCisgICAgICAg
IGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQo
KSksIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSwgMSk7Cit9CisKK2Jvb2wgUXVpY2tMb29r
RG9jdW1lbnREYXRhOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFF1aWNr
TG9va0RvY3VtZW50RGF0YSYgZG9jdW1lbnREYXRhKQoreworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoZG9jdW1lbnREYXRhLm1fc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
ICghZG9jdW1lbnREYXRhLm1fc2l6ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICB1aW50
OF90KiBjb25zdCBidWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oQ0ZBbGxvY2F0b3JBbGxv
Y2F0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkb2N1bWVudERhdGEubV9zaXplLCAwKSk7CisgICAg
QVNTRVJUKGJ1ZmZlcik7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRh
KGJ1ZmZlciwgZG9jdW1lbnREYXRhLm1fc2l6ZSwgMSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGRvY3VtZW50RGF0YS5tX2RhdGEuY2xlYXIoKTsKKyAgICBkb2N1bWVudERhdGEubV9k
YXRhLmFwcGVuZChhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBidWZmZXIsIGRvY3VtZW50RGF0YS5tX3NpemUsIGtDRkFsbG9jYXRvckRlZmF1
bHQpKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2lv
cy9RdWlja0xvb2tEb2N1bWVudERhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDIzYTE1YzA1N2I0OGM3MWM4
M2RmMzA4MTliYTQyMmU3ODFhZjNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL2lvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuaApAQCAtMCwwICsxLDU2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBRdWlja0xvb2tEb2N1bWVudERhdGFfaAorI2RlZmluZSBRdWlja0xv
b2tEb2N1bWVudERhdGFfaAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IElQQyB7CitjbGFzcyBBcmd1bWVudERlY29kZXI7CitjbGFzcyBBcmd1bWVudEVuY29kZXI7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBRdWlja0xvb2tEb2N1bWVudERhdGEgewor
V1RGX01BS0VfTk9OQ09QWUFCTEUoUXVpY2tMb29rRG9jdW1lbnREYXRhKTsKK3B1YmxpYzoKKyAg
ICBRdWlja0xvb2tEb2N1bWVudERhdGEoKTsKKyAgICB2b2lkIGFwcGVuZChDRkFycmF5UmVmKTsK
KyAgICBDRkRhdGFSZWYgZGVjb2RlZERhdGEoKSBjb25zdDsKKyAgICB2b2lkIGNsZWFyKCk7Cisg
ICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImLCBRdWlja0xvb2tEb2N1bWVudERhdGEm
KTsKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8UmV0YWluUHRyPENGRGF0YVJlZj4+IG1fZGF0YTsK
KyAgICB1aW50NjRfdCBtX3NpemU7Cit9OworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBRdWlja0xvb2tEb2N1bWVudERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKaW5kZXggNjllOWVlZTJiMDRiM2QzYTIyNjQxNjgyOTY3
MTAzYjY5OWU4MDMwNi4uMzg4ZDBmM2NhZGE1OTdmNjUyNTRmNzdkYzg2YzlmZDc3MmU4ODUyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCkBA
IC0zOSw2ICszOSw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CiBjbGFzcyBJbW11dGFibGVEaWN0
aW9uYXJ5OworY2xhc3MgUXVpY2tMb29rRG9jdW1lbnREYXRhOwogY2xhc3MgV2ViQmFja0Zvcndh
cmRMaXN0SXRlbTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CkBA
IC0xMDAsNiArMTAxLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYkNvcmU6OldlYkdMTG9h
ZFBvbGljeSB3ZWJHTExvYWRQb2xpY3koV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6
OlN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xB
bGxvd0NyZWF0aW9uOyB9CiAgICAgdmlydHVhbCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVz
b2x2ZVdlYkdMTG9hZFBvbGljeShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3Ry
aW5nJikgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93
Q3JlYXRpb247IH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCisKKyNpZiBVU0UoUVVJQ0tfTE9P
SykKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnQoY29u
c3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFdl
YktpdDo6UXVpY2tMb29rRG9jdW1lbnREYXRhJikgeyB9CisjZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggZmZiNDBmMjM3
YzJjNGJmM2Y4YTI1NGQxOGE3MGQ1YTYxNzZiOGQxNy4uYjdiMWYyNjdlODIzOTQwMjFjZmQ2NWFh
NGRlNmEzZGI0NTE0NTkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCkBAIC00
NSw2ICs0NSwxMSBAQCBzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kgX1dL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYQogCiAtICh2b2lkKV93ZWJWaWV3
V2ViUHJvY2Vzc0RpZENyYXNoOihXS1dlYlZpZXcgKil3ZWJWaWV3OwogCisjaWYgVEFSR0VUX09T
X0lQSE9ORQorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRTdGFydExv
YWRGb3JRdWlja0xvb2tEb2N1bWVudFdpdGhGaWxlTmFtZTooTlNTdHJpbmcgKilmaWxlTmFtZSB1
dGk6KE5TU3RyaW5nICopdXRpOworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnQ6KE5TRGF0YSAqKWRvY3VtZW50RGF0
YTsKKyNlbmRpZgorCiBAZW5kCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCmluZGV4IDA1NGNhMGU2ZTRjZDM0YWY5NTdiMTg3
NWUzMDJkYTgxYjY3Njg3YWIuLjgyZDk0YmEwZmM1ZDdkNjdjZTg2NTU4YjI0MmMzNWI3MDY4ZGZm
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLmgKQEAgLTEwMyw2ICsxMDMsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoV2ViS2l0OjpXZWJQYWdl
UHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkqKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRD
cmFzaChXZWJLaXQ6OldlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0
OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBhZGRlZEl0ZW0sIFZlY3RvcjxSZWZQdHI8V2ViS2l0
OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gcmVtb3ZlZEl0ZW1zKSBvdmVycmlkZTsKKyNpZiBV
U0UoUVVJQ0tfTE9PSykKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNr
TG9va0RvY3VtZW50KGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJp
bmcmIHV0aSkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnQoY29uc3QgV2ViS2l0OjpRdWlja0xvb2tEb2N1bWVudERhdGEmKSBv
dmVycmlkZTsKKyNlbmRpZgogCiAgICAgICAgIE5hdmlnYXRpb25TdGF0ZSYgbV9uYXZpZ2F0aW9u
U3RhdGU7CiAgICAgfTsKQEAgLTEzOCw2ICsxNDIsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgYm9v
bCB3ZWJWaWV3Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSA6IDE7CiAgICAg
ICAgIGJvb2wgd2ViVmlld0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IDE7CiAg
ICAgICAgIGJvb2wgd2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaCA6IDE7CisjaWYgVVNFKFFVSUNL
X0xPT0spCisgICAgICAgIGJvb2wgd2ViVmlld0RpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50IDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3RGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50IDogMTsKKyNlbmRpZgogICAgIH0gbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzOwog
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPFdLTmF2aWdhdGlvbj4+IG1fbmF2aWdh
dGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbQppbmRleCAwMDM2NjVlZjY2MjQ2YWNmMjcxYTEzODYwZmRkMDk2YTE2ODU2YmRkLi4w
MzA3NmQ1Yjc4M2UzMjU2ODY1ZDNkOGFmMjY0MzQzZjc5NTExMjQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTUzLDYgKzUz
LDEwIEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCisjaWYgVVNFKFFVSUNLX0xPT0spCisjaW1wb3J0ICJRdWlja0xvb2tEb2N1bWVu
dERhdGEuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIEhhc2hNYXA8
V2ViUGFnZVByb3h5KiwgTmF2aWdhdGlvblN0YXRlKj4mIG5hdmlnYXRpb25TdGF0ZXMoKQpAQCAt
MTIzLDYgKzEyNywxMCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6c2V0TmF2aWdhdGlvbkRlbGVn
YXRlKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgbV9uYXZpZ2F0aW9u
RGVsZWdhdGVNZXRob2RzLndlYlZpZXdDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6Y2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZTopXTsKICAgICBtX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2ViUHJvY2Vzc0RpZENyYXNoOildOworI2lmIFVTRShR
VUlDS19MT09LKQorICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3Rh
cnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudFdpdGhG
aWxlTmFtZTp1dGk6KV07CisgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdE
aWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnQ6KV07CisjZW5kaWYKIH0KIAogUmV0YWluUHRyPGlkIDxXS0hpc3RvcnlEZWxlZ2F0ZVByaXZh
dGU+ID4gTmF2aWdhdGlvblN0YXRlOjpoaXN0b3J5RGVsZWdhdGUoKQpAQCAtNTY3LDYgKzU3NSwz
MiBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VCYWNrRm9y
d2FyZExpc3QoV2ViS2l0OjpXZWJQYWdlUHJveAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIg
ZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6X1dLQmFja0ZvcndhcmRMaXN0RGlk
Q2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDp3cmFwcGVyKG1fbmF2aWdhdGlvblN0YXRlLm1fd2Vi
Vmlldy0+X3BhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpKV07CiB9CiAKKyNpZiBVU0UoUVVJQ0tfTE9P
SykKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFN0YXJ0TG9hZEZvclF1
aWNrTG9va0RvY3VtZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRp
KQoreworICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdEaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5t
X25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxl
Z2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdh
dGlvblN0YXRlLm1fd2ViVmlldyBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudFdpdGhG
aWxlTmFtZTpmaWxlTmFtZSB1dGk6dXRpXTsKK30KKwordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Okxv
YWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFdlYktp
dDo6UXVpY2tMb29rRG9jdW1lbnREYXRhJiBkYXRhKQoreworICAgIGlmICghbV9uYXZpZ2F0aW9u
U3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRGaW5pc2hMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbmF2aWdhdGlv
bkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7
CisgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtz
dGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRl
bGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50OihOU0RhdGEgKilkYXRhLmRlY29kZWREYXRhKCld
OworfQorI2VuZGlmCisKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjp3aWxsQ2hhbmdlSXNMb2FkaW5n
KCkKIHsKICAgICBbbV93ZWJWaWV3IHdpbGxDaGFuZ2VWYWx1ZUZvcktleTpAImxvYWRpbmciXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwYmIxMjA0NjExNmRi
NzQ5YTM3YzAxMzhhOGIyNzE3OWFiZTQwMDk3Li43ZTU2ZjAwNDcyZTljOGU5YmI2ODE1YmFjMDEx
NmE0ODM4YTU3NjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC0xNzQsNiArMTc0LDEwIEBAIHN0cnVjdCBXZWJQb3B1cEl0ZW07CiBjbGFzcyBXZWJWaWJyYXRp
b25Qcm94eTsKICNlbmRpZgogCisjaWYgVVNFKFFVSUNLX0xPT0spCitjbGFzcyBRdWlja0xvb2tE
b2N1bWVudERhdGE7CisjZW5kaWYKKwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8dWludDY0X3Q+
IFVuc2lnbmVkQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxFZGl0aW5nUmFuZ2U+
IEVkaXRpbmdSYW5nZUNhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8U3RyaW5nSW1w
bCo+IFN0cmluZ0NhbGxiYWNrOwpAQCAtMTM5NSw2ICsxMzk5LDExIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBmaW5kUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHVpbnQzMl90IHByb2Nlc3NU
eXBlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmlu
ZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nLCBib29sIGFsbG93T25seUFwcGxpY2F0aW9u
UGx1Z2lucywgdWludDY0X3QmIHBsdWdpblByb2Nlc3NUb2tlbiwgU3RyaW5nJiBuZXdNSU1FVHlw
ZSwgdWludDMyX3QmIHBsdWdpbkxvYWRQb2xpY3ksIFN0cmluZyYgdW5hdmFpbGFiaWxpdHlEZXNj
cmlwdGlvbik7CiAjZW5kaWYKIAorI2lmIFVTRShRVUlDS19MT09LKQorICAgIHZvaWQgZGlkU3Rh
cnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
U3RyaW5nJiB1dGkpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
KGNvbnN0IFF1aWNrTG9va0RvY3VtZW50RGF0YSYpOworI2VuZGlmCisKICAgICB1aW50NjRfdCBn
ZW5lcmF0ZU5hdmlnYXRpb25JRCgpOwogCiAgICAgUGFnZUNsaWVudCYgbV9wYWdlQ2xpZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggMzEyOWJlMjYwMGMzNjRmYzczMjIzMzczNTNlYWFlODFiOWI1MDViZC4uMDMyZDNkMzZm
ZGFlNjhkZmZiYTRkNWJmNWYwNDJiMjNhMzFiN2I2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zNjcsNCArMzY3LDkgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTaG93VGVsZXBob25lTnVtYmVyTWVudShT
dHJpbmcgdGVsZXBob25lTnVtYmVyLCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICNlbmRpZgog
I2VuZGlmCisKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKyAgICBEaWRTdGFydExvYWRGb3JRdWlja0xv
b2tEb2N1bWVudChTdHJpbmcgZmlsZU5hbWUsIFN0cmluZyB1dGkpCisgICAgRGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50KFdlYktpdDo6UXVpY2tMb29rRG9jdW1lbnREYXRhIGRhdGEp
CisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KaW5kZXggYWU3NWFlYzQyMTk3NThjNzBjOGZiOTQ5NmRhNjllZTU4YjcxODU4Yi4u
ZDkyYzU4MDU2MTRhNjMxNmY3OWUzYzNhNGEzMzBhNDMwNzQ4ZDJjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTQ0LDYgKzQ0LDEw
IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9V
c2VyQWdlbnQuaD4KIAorI2lmIFVTRShRVUlDS19MT09LKQorI2ltcG9ydCAiQVBJTG9hZGVyQ2xp
ZW50LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNTcwLDYgKzU3NCwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6em9vbVRvUmVj
dChGbG9hdFJlY3QgcmVjdCwgZG91YmxlIG1pbmltdW1TY2FsZSwgZG91YmxlIG1heGltdQogICAg
IG1fcGFnZUNsaWVudC56b29tVG9SZWN0KHJlY3QsIG1pbmltdW1TY2FsZSwgbWF4aW11bVNjYWxl
KTsKIH0KIAorI2lmIFVTRShRVUlDS19MT09LKQorICAgIAordm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNv
bnN0IFN0cmluZyYgdXRpKQoreworICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRTdGFydExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudChmaWxlTmFtZSwgdXRpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6
OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudChjb25zdCBRdWlja0xvb2tEb2N1bWVu
dERhdGEmIGRhdGEpCit7CisgICAgbV9sb2FkZXJDbGllbnQtPmRpZEZpbmlzaExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudChkYXRhKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjZjkzYTNmMGRjNzBjODEyZmU5YzI0ZjM1
ZjAxYzMxZWQzYTFlZmU4Li43NGI3OGQ0ZjJiNTI3NTE2NTU4ODc3NTc5ZGE1ZmMyZjIwZDQwOWY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDE5LDEwICsxMDE5LDE2IEBACiAJCTlGNTRGODk1MTY0OEFFMEYwMDdERjgxQSAv
KiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Qcm9j
ZXNzTWFuYWdlck1hYy5tbSAqLzsgfTsKIAkJOUZCNUYzOTQxNjlFNkE4MDAwMkMyNUJGIC8qIFdL
Q29udGV4dFByaXZhdGVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1h
Yy5tbSAqLzsgfTsKIAkJOUZCNUYzOTUxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZh
dGVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlG
QjVGMzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTExOEE5RUUxOTA3QUQ2
RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE4QTlFQzE5MDdBRDZGMDBGN0M5MkIgLyog
UXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcCAqLzsgfTsKKwkJQTExOEE5RUYxOTA3QUQ2RjAwRjdD
OTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9v
a0RvY3VtZW50RGF0YS5oICovOyB9OworCQlBMTE4QTlGMjE5MDhCOEVBMDBGN0M5MkIgLyogX1dL
TlNGaWxlTWFuYWdlckV4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExMThBOUYwMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2Vy
RXh0cmFzLm1tICovOyB9OworCQlBMTE4QTlGMzE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxl
TWFuYWdlckV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTExOEE5RjExOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUE0
RkU1QTE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQTRGRTU3MThEQ0U5RkEwMEI1RUE4QSAvKiBf
V0tEb3dubG9hZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUExQTRGRTVCMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQTRGRTU4MThEQ0U5RkEw
MEI1RUE4QSAvKiBfV0tEb3dubG9hZC5tbSAqLzsgfTsKIAkJQTFBNEZFNUMxOERDRTlGQTAwQjVF
QThBIC8qIF9XS0Rvd25sb2FkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExQTRGRTU5MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9h
ZEludGVybmFsLmggKi87IH07CiAJCUExQTRGRTYxMThERDU0QTQwMEI1RUE4QSAvKiBfV0tEb3du
bG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMUE0RkU2MDE4REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxvYWREZWxlZ2F0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUExQzUxMkM4
MTkwNjU2RTUwMDQ0ODkxNCAvKiBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDNTEyQzYxOTA2NTZFNTAw
NDQ4OTE0IC8qIFdlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5jcHAgKi87IH07CisJCUExQzUxMkM5
MTkwNjU2RTUwMDQ0ODkxNCAvKiBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzUxMkM3MTkwNjU2RTUwMDQ0
ODkxNCAvKiBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuaCAqLzsgfTsKIAkJQTFERjYzMTIxOEUw
QjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFERjYzMTAxOEUwQjdDODAwM0EzRTJBIC8qIERvd25s
b2FkQ2xpZW50Lm1tICovOyB9OwogCQlBMURGNjMxMzE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxv
YWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExREY2MzExMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5oICovOyB9OwogCQlB
NUVGRDM4QzE2QjBFODhDMDBCMkYwRTggLyogV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUVGRDM4QjE2QjBFODhD
MDBCMkYwRTggLyogV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI4ODIsMTAgKzI4ODgsMTYgQEAKIAkJOUY1
NEY4OTQxNjQ4QUUwRTAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGx1Z2luUHJvY2Vzc01hbmFnZXJN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGQjVGMzkyMTY5RTZBODAwMDJD
MjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0ZU1hYy5tbTsgcGF0aCA9IG1hYy9XS0NvbnRl
eHRQcml2YXRlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RkI1RjM5MzE2
OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXS0NvbnRleHRQcml2YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tDb250
ZXh0UHJpdmF0ZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTE4QTlFQzE5
MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHA7IHBhdGgg
PSBpb3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBRdWlja0xvb2tEb2N1bWVudERhdGEu
aDsgcGF0aCA9IGlvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTExOEE5RjAxOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJF
eHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tOU0Zp
bGVNYW5hZ2VyRXh0cmFzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTE4QTlG
MTE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQTRGRTU3MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3du
bG9hZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEb3dubG9hZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUE0RkU1ODE4RENFOUZBMDBCNUVBOEEgLyog
X1dLRG93bmxvYWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBf
V0tEb3dubG9hZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFBNEZFNTkxOERD
RTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gX1dLRG93bmxvYWRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMUE0RkU2MDE4REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxvYWREZWxlZ2F0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEb3dubG9hZERlbGVnYXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExQzUxMkM2MTkwNjU2RTUwMDQ0ODkx
NCAvKiBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmNwcDsgcGF0aCA9IGlvcy9X
ZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBMUM1MTJDNzE5MDY1NkU1MDA0NDg5MTQgLyogV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlF1aWNrTG9va0hhbmRsZUNsaWVu
dC5oOyBwYXRoID0gaW9zL1dlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMURGNjMxMDE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGll
bnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZENs
aWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFERjYzMTExOEUwQjdDODAw
M0EzRTJBIC8qIERvd25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERvd25sb2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRURE
MkQ5MTg4NEFDRTAwMEJCRkU5OCAvKiBBbGwueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQWxsLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQyNCw2ICs0NDM2LDggQEAK
IAkJCQkyRDI4RjNFMTE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViRGF0YWJhc2VNYW5hZ2VySU9TLm1t
ICovLAogCQkJCTJEMjhGM0UyMTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJFZGl0b3JDbGllbnRJT1Mu
bW0gKi8sCiAJCQkJMkQyOEYzRTMxODg1Q0NDMTAwNEI5RUFFIC8qIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50SU9TLm1tICovLAorCQkJCUExQzUxMkM2MTkwNjU2RTUwMDQ0ODkxNCAvKiBXZWJRdWlja0xv
b2tIYW5kbGVDbGllbnQuY3BwICovLAorCQkJCUExQzUxMkM3MTkwNjU2RTUwMDQ0ODkxNCAvKiBX
ZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gaW9zOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQ0NDIsNiArNDQ1Niw4IEBACiAJCQkJMkRBOTQ0
OUQxODg0RTRGMDAwRUQ4NkRCIC8qIEdlc3R1cmVUeXBlcy5oICovLAogCQkJCTJEQTk0NDk3MTg4
NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tICovLAogCQkJCTJE
QTk0NDk4MTg4NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJUb3VjaEV2ZW50SU9TLm1tICovLAor
CQkJCUExMThBOUVDMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuY3Bw
ICovLAorCQkJCUExMThBOUVEMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERh
dGEuaCAqLywKIAkJCQkyREE5NDQ5OTE4ODRFNEYwMDBFRDg2REIgLyogV2ViSU9TRXZlbnRGYWN0
b3J5LmggKi8sCiAJCQkJMkRBOTQ0OUExODg0RTRGMDAwRUQ4NkRCIC8qIFdlYklPU0V2ZW50RmFj
dG9yeS5tbSAqLywKIAkJCQkyREE5NDQ5QjE4ODRFNEYwMDBFRDg2REIgLyogV2ViUGxhdGZvcm1U
b3VjaFBvaW50SU9TLmNwcCAqLywKQEAgLTQ3NTQsNiArNDc3MCw4IEBACiAJCQkJMzczRDEyMjEx
OEE0NzMwMTAwNjZEOUNDIC8qIF9XS0ZyYW1lSGFuZGxlLmggKi8sCiAJCQkJMzczRDEyMjAxOEE0
NzMwMTAwNjZEOUNDIC8qIF9XS0ZyYW1lSGFuZGxlLm1tICovLAogCQkJCTM3M0QxMjI2MThBNDcz
RjYwMDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRsZUludGVybmFsLmggKi8sCisJCQkJQTExOEE5RjEx
OTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMuaCAqLywKKwkJCQlBMTE4
QTlGMDE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5tbSAqLywKIAkJ
CQkxQTlFMzI4QjE4MjE2NUE5MDBGNUQwNEMgLyogX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmgg
Ki8sCiAJCQkJMUE5RTMyOEMxODIxNjVBOTAwRjVEMDRDIC8qIF9XS1JlbW90ZU9iamVjdEludGVy
ZmFjZS5tbSAqLywKIAkJCQkxQUFCRkUzOTE4MjlDMUVEMDA1QjA3MEUgLyogX1dLUmVtb3RlT2Jq
ZWN0SW50ZXJmYWNlSW50ZXJuYWwuaCAqLywKQEAgLTY3ODEsNiArNjc5OSw3IEBACiAJCQkJQkNC
MEFFRTkxMjJGNTNFMzAwQjEzNDFFIC8qIE11dGFibGVEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTZGQkEyQTExRTY4NjI3MDBEQjEzNzEgLyogTmV0c2NhcGVCcm93c2VyRnVuY3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBNkZCRDI4MTFFNjlCQzIwMERCMTM3MSAvKiBOZXRzY2Fw
ZVBsdWdpbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFDNTEyQzkxOTA2NTZFNTAwNDQ4OTE0IC8q
IFdlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0QTlDNTYx
MkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUE1ODg5MjExRUU3MDQwMDA2MUI4ODIgLyogTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBp
biBIZWFkZXJzICovLAogCQkJCUUxNzk4QzdBMTZFNjgxODgwMDI0MDEzOSAvKiBOZXR3b3JrQmxv
YlJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTY4MjgsNiArNjg0Nyw3IEBACiAJCQkJNTEw
NkQ3QzQxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDOEFDQTE1MTY2NzBEODkwMDRDMTk0MSAvKiBPYmpDT2JqZWN0R3JhcGhD
b2RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0Y2NzJEMTJDN0VERjcwMDhGOUMzNSAvKiBP
cmlnaW5BbmREYXRhYmFzZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMThBOUVGMTkwN0FENkYw
MEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
NUIxQzUxMTg5ODYwNkYwMDRGQ0Y5QiAvKiBXS05hdmlnYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDRjQ3RkZCMTcyNzVDNTcwMDhBQ0I5MSAvKiBQYWdlQmFubmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzZFREFBNjExMTI3MUM2MDBFNzY3OEIgLyogUGFnZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC03MjYwLDYgKzcyODAsNyBAQAogCQkJCUJDQ0Y2QUMzMTJDOTFGMzQwMDhGOUMz
NSAvKiBXS0ltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NGNkFDQTEyQzkxRjU5MDA4RjlD
MzUgLyogV0tJbWFnZUNHLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzhFMjkzOTEyNzYxRTVCMDBC
QzdCRDAgLyogV0tJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMThBOUYzMTkwOEI4
RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2RUU4NDlDODEzNjhEOTM5MDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MUE5RTEwQjEzMTVDRDE4MDA5RTcwMzEgLyogV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzM0QzQTNCNjEzMzk2MDBCMDA3MDlC
RTQgLyogV0tNZWRpYUNhY2hlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC04MzI0LDYgKzgz
NDUsNyBAQAogCQkJCUJDODI4NDREMTZCNTA4MUMwMEEyNzhGRSAvKiBQbHVnaW5TZXJ2aWNlRW50
cnlQb2ludC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNkZCN0FFMTFFNjRCNjgwMERCMTM3MSAv
KiBQbHVnaW5WaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOEM5MkY0MTJEQjlFNzEwMENG
MkFFQiAvKiBQcmludEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFDNTEyQzgxOTA2NTZF
NTAwNDQ4OTE0IC8qIFdlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMUNDMUI5MTEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFDMTMzNkUxODU2NUQyQjAwRjNFQzA1IC8qIEFQSVBhZ2VIYW5kbGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMTE3RjYxMURCQjMwOTAwOTgxNjE1IC8qIFByb2Nlc3NM
YXVuY2hlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg0NTksNiArODQ4MSw3IEBACiAJCQkJQkMw
MzJEQkExMEY0MzgwRjAwNThDMTVBIC8qIFdlYkV2ZW50Q29udmVyc2lvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyRDE0MEVBRjE4RjM3QkUwMDA1RTc1QTAgLyogUGFnZU92ZXJsYXlDb250cm9s
bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTExQjVFMTEyRjYyOTgwMDMzN0JBQiAvKiBX
ZWJFdmVudEZhY3RvcnkubW0gaW4gU291cmNlcyAqLywKKwkJCQlBMTE4QTlFRTE5MDdBRDZGMDBG
N0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
M0REMUZEMTI1RTU5RjMwMDQ1MTVFNiAvKiBXZWJGaW5kQ2xpZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDRTQ2OTUzMTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtQ2xpZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDRTQ2OTU1MTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtU3VibWlz
c2lvbkxpc3RlbmVyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04NjE2LDYgKzg2MzksNyBA
QAogCQkJCTUxMkUzNEU0MTMwQjREMDUwMEFCRDE5QSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQzk2MTE4MTgzRDI5NDcwMEQyMDAyRSAvKiBX
ZWJJREJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDNDA3NUYzMTI0RkYwMjcwMDY4RjIwQSAvKiBXS0FycmF5LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUExMThBOUYyMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyRjU4RjUxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFMzUxQ0ExODBG
MkNDQzAwRTUzQkU5IC8qIElEQlV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTJG
NThGNzEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOTI0
MDRlOTI0YTQ0N2ZiMzc5NTY1MWY1YjVkNzA0ZTNmYzRiMzczYy4uZjcxNWMyNmJjN2MyNzZiZmQ1
ODc0ZGJlZjhkOWUxOWVjMDk0ZGQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApA
QCAtMjI5LDYgKzIyOSwxMCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUGFn
ZVRyYW5zaXRpb25JZk5lZWRlZCgpIG92ZXJyaWRlOwogCisjaWYgVVNFKFFVSUNLX0xPT0spCisg
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZShXZWJDb3JlOjpRdWlja0xv
b2tIYW5kbGUmKSBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgV2ViRnJhbWUqIG1fZnJhbWU7CiAg
ICAgUmVmUHRyPFBsdWdpblZpZXc+IG1fcGx1Z2luVmlldzsKICAgICBib29sIG1faGFzU2VudFJl
c3BvbnNlVG9QbHVnaW5WaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViRnJhbWVMb2FkZXJDbGllbnRJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJGcmFtZUxvYWRlckNsaWVu
dElPUy5tbQppbmRleCBhZGViYWZkYTNiYTg4NWU5YjZiNzMxYWFmY2I4MTQ2ZjlhMDI5ZTNjLi41
ZGIxZWQ1MWM5NDEyMDkzZjg0NmUwYzczMGE1NjljMjE5NTE5OGNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJGcmFtZUxvYWRlckNs
aWVudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJGcmFtZUxvYWRlckNsaWVudElPUy5tbQpAQCAtMzAsNiArMzAsMTMgQEAKIAogI2lt
cG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCisjaWYgVVNFKFFVSUNLX0xPT0spCisj
aW1wb3J0ICJXZWJGcmFtZS5oIgorI2ltcG9ydCAiV2ViUGFnZS5oIgorI2ltcG9ydCAiV2ViUXVp
Y2tMb29rSGFuZGxlQ2xpZW50LmgiCisjaW1wb3J0IDxXZWJDb3JlL1F1aWNrTG9vay5oPgorI2Vu
ZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTUwLDYgKzU3LDE3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IFdlYkZyYW1lTG9hZGVy
Q2xpZW50Ojpjb25uZWN0aW9uUHJvcGVydGllcyhEb2N1bWVudExvCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKKyNpZiBVU0UoUVVJQ0tfTE9PSykKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZShXZWJDb3JlOjpRdWlja0xvb2tIYW5kbGUmIGhhbmRs
ZSkKK3sKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICgh
d2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaGFuZGxlLnNldENsaWVudChXZWJRdWlj
a0xvb2tIYW5kbGVDbGllbnQ6OmNyZWF0ZShoYW5kbGUsIHdlYlBhZ2UtPnBhZ2VJRCgpKSk7Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJ
T1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43YjEzY2JlZjlkOWFlODQ4MTAxYjJhODE5ZjY1Y2E5MGU5MjIzZThhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlF1aWNrTG9va0hhbmRsZUNsaWVu
dC5oIgorCisjaWYgVVNFKFFVSUNLX0xPT0spCisKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1F1aWNr
TG9vay5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50
OjpXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQoY29uc3QgV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxl
JiBoYW5kbGUsIHVpbnQ2NF90IHBhZ2VJRCkKKyAgICA6IG1fZmlsZU5hbWUoaGFuZGxlLnByZXZp
ZXdGaWxlTmFtZSgpKQorICAgICwgbV91dGkoaGFuZGxlLnByZXZpZXdVVEkoKSkKKyAgICAsIG1f
cGFnZUlEKHBhZ2VJRCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50KG1fZmlsZU5h
bWUsIG1fdXRpKSwgbV9wYWdlSUQpOworfQorCit2b2lkIFdlYlF1aWNrTG9va0hhbmRsZUNsaWVu
dDo6ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkKK3sKKyAgICBtX2Rh
dGEuYXBwZW5kKGRhdGFBcnJheSk7Cit9CisKK3ZvaWQgV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50
OjpkaWRGaW5pc2hMb2FkaW5nKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudCht
X2RhdGEpLCBtX3BhZ2VJRCk7CisgICAgbV9kYXRhLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViUXVp
Y2tMb29rSGFuZGxlQ2xpZW50OjpkaWRGYWlsKCkKK3sKKyAgICBtX2RhdGEuY2xlYXIoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoUVVJQ0tfTE9PSykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlF1aWNrTG9va0hhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMz
NTZmZmNhZjBhOGNhMjU2NzJjZjQ5MTkyMjYxOTRhZDJiZjIyYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlF1aWNrTG9v
a0hhbmRsZUNsaWVudC5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YlF1aWNrTG9va0hhbmRsZUNsaWVudF9oCisjZGVmaW5lIFdlYlF1aWNrTG9va0hhbmRsZUNsaWVu
dF9oCisKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKworI2luY2x1ZGUgIlF1aWNrTG9va0RvY3VtZW50
RGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUXVpY2tMb29rSGFuZGxlQ2xpZW50Lmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUXVpY2tMb29rSGFuZGxlOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRnJhbWU7CisKK2NsYXNzIFdlYlF1aWNrTG9va0hh
bmRsZUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpRdWlja0xvb2tIYW5kbGVDbGllbnQgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlF1aWNrTG9va0hhbmRsZUNsaWVudD4gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OlF1aWNrTG9va0hhbmRsZSYgaGFuZGxlLCB1aW50NjRfdCBwYWdl
SUQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlF1aWNrTG9va0hhbmRs
ZUNsaWVudChoYW5kbGUsIHBhZ2VJRCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJRdWlj
a0xvb2tIYW5kbGVDbGllbnQoY29uc3QgV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlJiwgdWludDY0
X3QgcGFnZUlEKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5
UmVmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CisKKyAgICBjb25zdCBT
dHJpbmcgbV9maWxlTmFtZTsKKyAgICBjb25zdCBTdHJpbmcgbV91dGk7CisgICAgY29uc3QgdWlu
dDY0X3QgbV9wYWdlSUQ7CisgICAgUXVpY2tMb29rRG9jdW1lbnREYXRhIG1fZGF0YTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKFFVSUNLX0xPT0spCisKKyNl
bmRpZiAvLyBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230203</attachid>
            <date>2014-04-25 14:31:59 -0700</date>
            <delta_ts>2014-04-25 15:39:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132157-20140425143137.patch</filename>
            <type>text/plain</type>
            <size>45071</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3Nzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDVmYzI4ODdhZTIzMzc5
NjFhN2Y1NDgyZWM2YzEwNDNlNjkwNDM4Yi4uMzJkNWQwYjQ5NzVmMGY3ZWRmOTM4NTgwMzQwNDUx
MDVmYmQ4MmNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE0LTA0LTI0ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBJbXBsZW1lbnQgV2Vi
UXVpY2tMb29rSGFuZGxlQ2xpZW50IGZvciBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzIxNTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnRlZCBRdWlj
a0xvb2tIYW5kbGU6OnByZXZpZXdVVEkoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2su
bW06CisgICAgICAgIChXZWJDb3JlOjpRdWlja0xvb2tIYW5kbGU6OnByZXZpZXdGaWxlTmFtZSk6
IENoYW5nZWQgdG8gcmV0dXJuIGEgV1RGOjpTdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpRdWlj
a0xvb2tIYW5kbGU6OnByZXZpZXdVVEkpOiBBZGRlZC4KKwogMjAxNC0wNC0yNCAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBkb24ndCBhc2sg
Zm9yIEFWQXNzZXRUcmFjayBwcm9wZXJ0aWVzIGJlZm9yZSB0aGV5IGFyZSBhdmFpbGFibGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCA0MmZkMWI4NjI5OGY2N2E4ZWQxMWRiMTVjZGNhYzZkYTMwZTA0MGIwLi5kYWVh
Y2MwZjJiOWM3OTU1NDM1ODE5NGNlYjBkMmM4YTg4Zjg2NmFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTIgQEAKKzIwMTQtMDQtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisg
ICAgICAgIFtpT1NdIEltcGxlbWVudCBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQgZm9yIFdlYktp
dDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjE1
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hh
cmVkL0FQSS9Db2NvYS9fV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmg6IEFkZGVkLgorICAgICAgICAq
IFNoYXJlZC9BUEkvQ29jb2EvX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5tbTogQWRkZWQuCisgICAg
ICAgICgrW05TRmlsZU1hbmFnZXIgX3dlYl9jcmVhdGVUZW1wb3JhcnlGaWxlRm9yUXVpY2tMb29r
Ol0pOiBDYWxsZWQgV2ViQ29yZTo6Y3JlYXRlVGVtcG9yYXJ5RmlsZUZvclF1aWNrTG9vaygpLgor
ICAgICAgICAqIFNoYXJlZC9pb3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlF1aWNrTG9va0RvY3VtZW50RGF0YTo6UXVpY2tMb29rRG9jdW1lbnRE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6UXVpY2tMb29rRG9jdW1lbnREYXRhOjphcHBlbmQpOiBB
cHBlbmVkIGVhY2ggQ0ZEYXRhUmVmIHRvIG1fZGF0YSBhbmQgYWRkZWQgdGhlaXIgc2l6ZXMgdG8g
bV9zaXplLgorICAgICAgICAoV2ViS2l0OjpRdWlja0xvb2tEb2N1bWVudERhdGE6OmRlY29kZWRE
YXRhKTogUmV0dXJuZWQgdGhlIGNvbWJpbmVkIENGRGF0YVJlZiBjcmVhdGVkIGJ5IGRlY29kZSgp
LgorICAgICAgICBOYW1lZCB0aGlzIG1ldGhvZCAnZGVjb2RlZERhdGEnIHRvIGluZGljYXRlIHRo
YXQgaXQgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIG9iamVjdHMgcG9wdWxhdGVkIGJ5IGRlY29k
ZSgpLgorICAgICAgICAoV2ViS2l0OjpRdWlja0xvb2tEb2N1bWVudERhdGE6OmNsZWFyKTogQ2xl
YXJlZCBtX2RhdGEgYW5kIHJlc2V0IG1fc2l6ZSB0byAwLgorICAgICAgICAoV2ViS2l0OjpRdWlj
a0xvb2tEb2N1bWVudERhdGE6OmVuY29kZSk6IEltcGxlbWVudGVkIGEgY3VzdG9tIGVuY29kaW5n
IGZ1bmN0aW9uIHRvIGF2b2lkIGhhdmluZyB0byBjb21iaW5lCisgICAgICAgIG1fZGF0YSBpbnRv
IGNvbnRpZ3VvdXMgbWVtb3J5IGF0IGVuY29kaW5nIHRpbWUuIEVuY29kZWQgbV9zaXplIHRoZW4g
c2VxdWVudGlhbGx5IGVuY29kZWQgZWFjaCBtZW1iZXIgb2YgbV9kYXRhLgorICAgICAgICAoV2Vi
S2l0OjpRdWlja0xvb2tEb2N1bWVudERhdGE6OmRlY29kZSk6IERlY29kZWQgdGhlIGJ5dGUgc3Ry
ZWFtIGludG8gYSBzaW5nbGUgQ0ZEYXRhUmVmLiBFYWdlcmx5IGNvcGllZCB0aGUKKyAgICAgICAg
ZGVjb2RlZCBkYXRhIHJhdGhlciB0aGFuIHVzaW5nIGEgRGF0YVJlZmVyZW5jZSBzaW5jZSB3ZSBr
bm93IHRoaXMgd2lsbCBvdXRsaXZlIHRoZSBkZWNvZGVyLgorICAgICAgICAqIFNoYXJlZC9pb3Mv
UXVpY2tMb29rRG9jdW1lbnREYXRhLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6ZGlkU3RhcnRM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgIChBUEk6OkxvYWRl
ckNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6
Ok5hdmlnYXRpb25TdGF0ZTo6c2V0TmF2aWdhdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6
OkxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkZyYW1lTG9hZGVyQ2xp
ZW50SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ3Jl
YXRlUXVpY2tMb29rSGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50OjpXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQpOiBT
ZW50IERpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUKKyAgICAgICAg
dG8gV2ViUGFnZVByb3h5LgorICAgICAgICAoV2ViS2l0OjpXZWJRdWlja0xvb2tIYW5kbGVDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOiBBcHBlbmRlZCBkYXRhQXJyYXkgdG8gbV9kYXRhLgor
ICAgICAgICAoV2ViS2l0OjpXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQ6OmRpZEZpbmlzaExvYWRp
bmcpOiBTZW50IERpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lIHRv
CisgICAgICAgIFdlYlBhZ2VQcm94eSBhbmQgdGhlbiBjbGVhcmVkIG1fZGF0YS4KKyAgICAgICAg
KFdlYktpdDo6V2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50OjpkaWRGYWlsKTogQ2xlYXJlZCBtX2Rh
dGEuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUXVpY2tMb29r
SGFuZGxlQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJRdWlja0xvb2tIYW5k
bGVDbGllbnQ6OmNyZWF0ZSk6CisKIDIwMTQtMDQtMjQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzOiBVc2UgYSBz
aW5nbGUgc3RydWN0IGZvciB0aGUgc25hcHNob3QsIGFuZCBwYXNzIGl0IGFyb3VuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCBlMGU4ZDQ1OWZhZTM2OTc4YmVmYmUxMDk5NTQ5ZjRjOWI0OGVmZmMx
Li40NTZhZTBjYTcyZDk5OTIyZjdkY2MxZGVjZDBmYmFmMjFiNzFlMmRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtMzIyOSw2ICszMjI5LDcgQEAgX19aTjdXZWJDb3JlMzJxbFByZXZpZXdDb252
ZXJ0ZXJGaWxlTmFtZUZvclVSTEVQNU5TVVJMCiBfX1pON1dlYkNvcmUzM1FMUHJldmlld0dldFN1
cHBvcnRlZE1JTUVUeXBlc1NldEV2CiBfX1pON1dlYkNvcmUzNHJlZ2lzdGVyUUxQcmV2aWV3Q29u
dmVydGVySWZOZWVkZWRFUDVOU1VSTFA4TlNTdHJpbmdQNk5TRGF0YQogX19aTjdXZWJDb3JlMzVh
ZGRRTFByZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZvclVSTEVQNU5TVVJMUDExb2JqY19vYmplY3RQ
OE5TU3RyaW5nCitfX1pOSzdXZWJDb3JlMTVRdWlja0xvb2tIYW5kbGUxMHByZXZpZXdVVElFdgog
X19aTks3V2ViQ29yZTE1UXVpY2tMb29rSGFuZGxlMTVwcmV2aWV3RmlsZU5hbWVFdgogX19aTks3
V2ViQ29yZTE1UXVpY2tMb29rSGFuZGxlMTdwcmV2aWV3UmVxdWVzdFVSTEV2CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmgKaW5kZXgg
NmJiZDE0MjJkOThkMGIxMTAxMzE3ODg5NDYzMTA5ZmJlOGRhNTA3My4uNzkwOThkZGNjNjc3OTI1
ZWFmZTY1MjQ4ZmZkNzcwZTNlODMwNmY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmgKQEAgLTEwMSw3ICsxMDEsOCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldENsaWVudChQYXNzUmVmUHRyPFF1aWNrTG9va0hhbmRsZUNsaWVudD4gY2xp
ZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAKLSAgICBOU1N0cmluZyAqcHJldmlld0ZpbGVO
YW1lKCkgY29uc3Q7CisgICAgU3RyaW5nIHByZXZpZXdGaWxlTmFtZSgpIGNvbnN0OworICAgIFN0
cmluZyBwcmV2aWV3VVRJKCkgY29uc3Q7CiAgICAgTlNVUkwgKmZpcnN0UmVxdWVzdFVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fZmlyc3RSZXF1ZXN0VVJMLmdldCgpOyB9CiAgICAgTlNVUkwgKnByZXZp
ZXdSZXF1ZXN0VVJMKCkgY29uc3Q7CiAgICAgUUxQcmV2aWV3Q29udmVydGVyICpjb252ZXJ0ZXIo
KSBjb25zdCB7IHJldHVybiBtX2NvbnZlcnRlci5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCmluZGV4IDIyYTkxYjNhNzY1ZTk5
Zjg0NWFlM2FjZmJkZDJkYzk1MWRlODE5Y2MuLmZkMDJhNDc0NWFiNjM5ZmVhMzM0ZDRmMTkyM2Zk
M2QyODNlNjNlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2subW0KQEAgLTQ1MCwxMSArNDUwLDE2IEBAIFF1aWNrTG9va0hhbmRsZTo6flF1
aWNrTG9va0hhbmRsZSgpCiAgICAgW21fZGVsZWdhdGUgY2xlYXJIYW5kbGVdOwogfQogCi1OU1N0
cmluZyAqUXVpY2tMb29rSGFuZGxlOjpwcmV2aWV3RmlsZU5hbWUoKSBjb25zdAorU3RyaW5nIFF1
aWNrTG9va0hhbmRsZTo6cHJldmlld0ZpbGVOYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gW21f
Y29udmVydGVyIHByZXZpZXdGaWxlTmFtZV07CiB9CiAKK1N0cmluZyBRdWlja0xvb2tIYW5kbGU6
OnByZXZpZXdVVEkoKSBjb25zdAoreworICAgIHJldHVybiBbbV9jb252ZXJ0ZXIgcHJldmlld1VU
SV07Cit9CisKIE5TVVJMICpRdWlja0xvb2tIYW5kbGU6OnByZXZpZXdSZXF1ZXN0VVJMKCkgY29u
c3QKIHsKICAgICByZXR1cm4gW1ttX2NvbnZlcnRlciBwcmV2aWV3UmVxdWVzdF0gVVJMXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvX1dLTlNGaWxlTWFuYWdl
ckV4dHJhcy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9fV0tOU0ZpbGVNYW5h
Z2VyRXh0cmFzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWMwMjhlMGU4YWUzMWU4YjUyNTgzMzJkMjJlNDM2ZjY3
N2RjMjczYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29j
b2EvX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0IDxXZWJLaXQyL1dLRm91bmRhdGlvbi5oPgorCisjaWYgVEFSR0VUX09TX0lQSE9O
RQorCitAaW50ZXJmYWNlIE5TRmlsZU1hbmFnZXIgKFdLRXh0cmFzKQorCisrIChOU1N0cmluZyAq
KV93ZWJfY3JlYXRlVGVtcG9yYXJ5RmlsZUZvclF1aWNrTG9vazooTlNTdHJpbmcgKilmaWxlTmFt
ZTsKKworQGVuZAorCisjZW5kaWYgLy8gVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9fV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9fV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg0NjA5ZjA2YzcxZTRkY2FhMDEwMTBiYTlhMDg5OWZhMTIyMjY3MTEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL19XS05TRmls
ZU1hbmFnZXJFeHRyYXMubW0KQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oIgorCisjaWYgVVNF
KFFVSUNLX0xPT0spCisKKyNpbXBvcnQgPFdlYkNvcmUvUXVpY2tMb29rLmg+CisKK0BpbXBsZW1l
bnRhdGlvbiBOU0ZpbGVNYW5hZ2VyIChXS0V4dHJhcykKKworKyAoTlNTdHJpbmcgKilfd2ViX2Ny
ZWF0ZVRlbXBvcmFyeUZpbGVGb3JRdWlja0xvb2s6KE5TU3RyaW5nICopZmlsZU5hbWUKK3sKKyAg
ICByZXR1cm4gV2ViQ29yZTo6Y3JlYXRlVGVtcG9yYXJ5RmlsZUZvclF1aWNrTG9vayhmaWxlTmFt
ZSk7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUzOWI2M2FhMWVkN2QyYmQ3YmJjNTIyNzgzNTUzYjFlYjQxNmRkZWMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5j
cHAKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJRdWlja0xvb2tEb2N1bWVudERhdGEuaCIKKworI2lmIFVTRShRVUlDS19MT09LKQor
CisjaW5jbHVkZSAiQXJndW1lbnREZWNvZGVyLmgiCisjaW5jbHVkZSAiQXJndW1lbnRFbmNvZGVy
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitRdWlja0xvb2tEb2N1bWVudERhdGE6OlF1aWNr
TG9va0RvY3VtZW50RGF0YSgpCisgICAgOiBtX3NpemUoMCkKK3sKK30KKwordm9pZCBRdWlja0xv
b2tEb2N1bWVudERhdGE6OmFwcGVuZChDRkFycmF5UmVmIGRhdGFBcnJheSkKK3sKKyAgICBDRkFy
cmF5QXBwbHlGdW5jdGlvbihkYXRhQXJyYXksIENGUmFuZ2VNYWtlKDAsIENGQXJyYXlHZXRDb3Vu
dChkYXRhQXJyYXkpKSwgW10oY29uc3Qgdm9pZCogdmFsdWUsIHZvaWQqIGNvbnRleHQpIHsKKyAg
ICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAoQ0ZEYXRhUmVmKXZhbHVlOworICAgICAgICBBU1NFUlQo
Q0ZHZXRUeXBlSUQoZGF0YSkgPT0gQ0ZEYXRhR2V0VHlwZUlEKCkpOworICAgICAgICBRdWlja0xv
b2tEb2N1bWVudERhdGEqIGRvY3VtZW50RGF0YSA9IHN0YXRpY19jYXN0PFF1aWNrTG9va0RvY3Vt
ZW50RGF0YSo+KGNvbnRleHQpOworICAgICAgICBkb2N1bWVudERhdGEtPm1fZGF0YS5hcHBlbmQo
ZGF0YSk7CisgICAgICAgIGRvY3VtZW50RGF0YS0+bV9zaXplICs9IENGRGF0YUdldExlbmd0aChk
YXRhKTsKKyAgICB9LCB0aGlzKTsKK30KKworQ0ZEYXRhUmVmIFF1aWNrTG9va0RvY3VtZW50RGF0
YTo6ZGVjb2RlZERhdGEoKSBjb25zdAoreworICAgIEFTU0VSVChtX2RhdGEuc2l6ZSgpIDw9IDEp
OworICAgIGlmIChtX2RhdGEuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gbV9kYXRhWzBdLmdldCgpOworfQorCit2b2lkIFF1aWNrTG9va0RvY3VtZW50RGF0
YTo6Y2xlYXIoKQoreworICAgIG1fZGF0YS5jbGVhcigpOworICAgIG1fc2l6ZSA9IDA7Cit9CisK
K3ZvaWQgUXVpY2tMb29rRG9jdW1lbnREYXRhOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3NpemU7CisgICAgZm9yIChjb25z
dCBhdXRvJiBkYXRhIDogbV9kYXRhKQorICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5n
ZXQoKSksIDEpOworfQorCitib29sIFF1aWNrTG9va0RvY3VtZW50RGF0YTo6ZGVjb2RlKElQQzo6
QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBRdWlja0xvb2tEb2N1bWVudERhdGEmIGRvY3VtZW50
RGF0YSkKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRvY3VtZW50RGF0YS5tX3NpemUpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRvY3VtZW50RGF0YS5tX3NpemUpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgdWludDhfdCogY29uc3QgYnVmZmVyID0gc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KENGQWxsb2NhdG9yQWxsb2NhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
ZG9jdW1lbnREYXRhLm1fc2l6ZSwgMCkpOworICAgIEFTU0VSVChidWZmZXIpOworCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShidWZmZXIsIGRvY3VtZW50RGF0YS5tX3Np
emUsIDEpKSB7CisgICAgICAgIENGQWxsb2NhdG9yRGVhbGxvY2F0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBidWZmZXIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZG9jdW1l
bnREYXRhLm1fZGF0YS5jbGVhcigpOworICAgIGRvY3VtZW50RGF0YS5tX2RhdGEuYXBwZW5kKGFk
b3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1
ZmZlciwgZG9jdW1lbnREYXRhLm1fc2l6ZSwga0NGQWxsb2NhdG9yRGVmYXVsdCkpKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0Uo
UVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9pb3MvUXVpY2tM
b29rRG9jdW1lbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL1F1aWNrTG9va0Rv
Y3VtZW50RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwMjNhMTVjMDU3YjQ4YzcxYzgzZGYzMDgxOWJhNDIy
ZTc4MWFmM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL1F1
aWNrTG9va0RvY3VtZW50RGF0YS5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFF1aWNrTG9va0RvY3VtZW50RGF0YV9oCisjZGVmaW5lIFF1aWNrTG9va0RvY3VtZW50RGF0
YV9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNz
IEFyZ3VtZW50RGVjb2RlcjsKK2NsYXNzIEFyZ3VtZW50RW5jb2RlcjsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFF1aWNrTG9va0RvY3VtZW50RGF0YSB7CitXVEZfTUFLRV9OT05D
T1BZQUJMRShRdWlja0xvb2tEb2N1bWVudERhdGEpOworcHVibGljOgorICAgIFF1aWNrTG9va0Rv
Y3VtZW50RGF0YSgpOworICAgIHZvaWQgYXBwZW5kKENGQXJyYXlSZWYpOworICAgIENGRGF0YVJl
ZiBkZWNvZGVkRGF0YSgpIGNvbnN0OworICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2b2lkIGVuY29k
ZShJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBib29sIGRlY29kZShJ
UEM6OkFyZ3VtZW50RGVjb2RlciYsIFF1aWNrTG9va0RvY3VtZW50RGF0YSYpOworCitwcml2YXRl
OgorICAgIFZlY3RvcjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4gbV9kYXRhOworICAgIHVpbnQ2NF90
IG1fc2l6ZTsKK307Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFF1aWNrTG9v
a0RvY3VtZW50RGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2Fk
ZXJDbGllbnQuaAppbmRleCA2OWU5ZWVlMmIwNGIzZDNhMjI2NDE2ODI5NjcxMDNiNjk5ZTgwMzA2
Li4zYjk3YjM4NzdiMGE5Y2Y3MGFjMjk5Mzc2ZTk2NDI4NjBiY2ZiYjcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKQEAgLTM5LDYgKzM5LDcg
QEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eTsKIGNsYXNzIEltbXV0YWJsZURpY3Rpb25hcnk7CitjbGFz
cyBRdWlja0xvb2tEb2N1bWVudERhdGE7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwog
Y2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKQEAgLTEwMCw2ICsxMDEs
MTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHdlYkdM
TG9hZFBvbGljeShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJikgY29u
c3QgeyByZXR1cm4gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247
IH0KICAgICB2aXJ0dWFsIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSByZXNvbHZlV2ViR0xMb2Fk
UG9saWN5KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmKSBjb25zdCB7
IHJldHVybiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsgfQog
I2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKKworI2lmIFVTRShRVUlDS19MT09LKQorICAgIHZpcnR1
YWwgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KGNvbnN0IFdlYktpdDo6UXVpY2tMb29rRG9jdW1lbnREYXRhJikgeyB9CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKaW5kZXgg
ZmZiNDBmMjM3YzJjNGJmM2Y4YTI1NGQxOGE3MGQ1YTYxNzZiOGQxNy4uMjg1N2YzYzI4MWQ5ZThj
MGRjZWVmOTBmMjExMDgxNzg5OTZmNjdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0
ZS5oCkBAIC00NSw2ICs0NSwxMSBAQCBzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3kgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYQogCiAtICh2b2lk
KV93ZWJWaWV3V2ViUHJvY2Vzc0RpZENyYXNoOihXS1dlYlZpZXcgKil3ZWJWaWV3OwogCisjaWYg
VEFSR0VUX09TX0lQSE9ORQorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
aWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZpbGVOYW1lOihO
U1N0cmluZyAqKWZpbGVOYW1lIHV0aTooTlNTdHJpbmcgKil1dGk7CistICh2b2lkKV93ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lOihOU0RhdGEgKilkb2N1bWVudERhdGE7CisjZW5kaWYKKwogQGVuZAogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
aAppbmRleCAwNTRjYTBlNmU0Y2QzNGFmOTU3YjE4NzVlMzAyZGE4MWI2NzY4N2FiLi40ODI0Yzk0
ZmUxMjBhNWZhNjJjOTM5MmEwYzgxMjIwNTcxM2NiMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCkBAIC0xMDMsNiArMTAzLDEwIEBA
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VJbkZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVBy
b3h5KiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Kikgb3ZlcnJpZGU7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViS2l0OjpXZWJQYWdlUHJveHkq
KSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlz
dChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSog
YWRkZWRJdGVtLCBWZWN0b3I8UmVmUHRyPFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4+
IHJlbW92ZWRJdGVtcykgb3ZlcnJpZGU7CisjaWYgVVNFKFFVSUNLX0xPT0spCisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJp
ZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShjb25zdCBXZWJLaXQ6OlF1aWNrTG9va0RvY3VtZW50RGF0YSYpIG92ZXJy
aWRlOworI2VuZGlmCiAKICAgICAgICAgTmF2aWdhdGlvblN0YXRlJiBtX25hdmlnYXRpb25TdGF0
ZTsKICAgICB9OwpAQCAtMTM4LDYgKzE0MiwxMCBAQCBwcml2YXRlOgogICAgICAgICBib29sIHdl
YlZpZXdDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlIDogMTsKICAgICAgICAg
Ym9vbCB3ZWJWaWV3RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogMTsKICAgICAg
ICAgYm9vbCB3ZWJWaWV3V2ViUHJvY2Vzc0RpZENyYXNoIDogMTsKKyNpZiBVU0UoUVVJQ0tfTE9P
SykKKyAgICAgICAgYm9vbCB3ZWJWaWV3RGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZSA6IDE7CisgICAgICAgIGJvb2wgd2ViVmlld0RpZEZpbmlzaExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkZyYW1lIDogMTsKKyNlbmRpZgogICAgIH0gbV9uYXZpZ2F0aW9u
RGVsZWdhdGVNZXRob2RzOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPFdLTmF2
aWdhdGlvbj4+IG1fbmF2aWdhdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCAwMDM2NjVlZjY2MjQ2YWNmMjcxYTEzODYw
ZmRkMDk2YTE2ODU2YmRkLi40YjU1MTk3NWYzODVkMjk1MGUwMDA3Njk3MjlmNDE3NGM3MTdjMjIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0KQEAgLTUzLDYgKzUzLDEwIEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBv
cnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCisjaWYgVVNFKFFVSUNLX0xPT0spCisjaW1wb3J0
ICJRdWlja0xvb2tEb2N1bWVudERhdGEuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogc3RhdGljIEhhc2hNYXA8V2ViUGFnZVByb3h5KiwgTmF2aWdhdGlvblN0YXRlKj4mIG5hdmln
YXRpb25TdGF0ZXMoKQpAQCAtMTIzLDYgKzEyNywxMCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
c2V0TmF2aWdhdGlvbkRlbGVnYXRlKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUp
CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdDYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3dlYlZpZXc6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZTopXTsK
ICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJWaWV3OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTopXTsKICAgICBtX25h
dmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaCA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2ViUHJvY2Vzc0RpZENy
YXNoOildOworI2lmIFVTRShRVUlDS19MT09LKQorICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3RGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZFN0YXJ0
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6dXRpOildOwor
ICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZTopXTsKKyNlbmRpZgogfQogCiBSZXRhaW5QdHI8aWQgPFdLSGlzdG9yeURlbGVnYXRl
UHJpdmF0ZT4gPiBOYXZpZ2F0aW9uU3RhdGU6Omhpc3RvcnlEZWxlZ2F0ZSgpCkBAIC01NjcsNiAr
NTc1LDMyIEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZENoYW5nZUJh
Y2tGb3J3YXJkTGlzdChXZWJLaXQ6OldlYlBhZ2VQcm94CiAgICAgW1tOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpfV0tCYWNrRm9yd2FyZExp
c3REaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0OndyYXBwZXIobV9uYXZpZ2F0aW9uU3RhdGUu
bV93ZWJWaWV3LT5fcGFnZS0+YmFja0ZvcndhcmRMaXN0KCkpXTsKIH0KIAorI2lmIFVTRShRVUlD
S19MT09LKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkU3RhcnRMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBTdHJpbmcmIHV0aSkKK3sKKyAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdh
dGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBuYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKKyAg
ICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW3N0YXRp
Y19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdh
dGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRTdGFydExv
YWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZpbGVOYW1lOmZpbGVOYW1lIHV0
aTp1dGldOworfQorCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGaW5p
c2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJLaXQ6OlF1aWNr
TG9va0RvY3VtZW50RGF0YSYgZGF0YSkKK3sKKyAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1f
bmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbmF2aWdh
dGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0
KCk7CisgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAg
IFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlv
bkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6KE5TRGF0YSAqKWRhdGEu
ZGVjb2RlZERhdGEoKV07Cit9CisjZW5kaWYKKwogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OndpbGxD
aGFuZ2VJc0xvYWRpbmcoKQogewogICAgIFttX3dlYlZpZXcgd2lsbENoYW5nZVZhbHVlRm9yS2V5
OkAibG9hZGluZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IDBiYjEyMDQ2MTE2ZGI3NDlhMzdjMDEzOGE4YjI3MTc5YWJlNDAwOTcuLjhhNTRlNmNhNTEyNDQ2
M2RlYzQ2ZGNlYzY4NDM3ZmEwNDBiMWY2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTE3NCw2ICsxNzQsMTAgQEAgc3RydWN0IFdlYlBvcHVwSXRlbTsKIGNs
YXNzIFdlYlZpYnJhdGlvblByb3h5OwogI2VuZGlmCiAKKyNpZiBVU0UoUVVJQ0tfTE9PSykKK2Ns
YXNzIFF1aWNrTG9va0RvY3VtZW50RGF0YTsKKyNlbmRpZgorCiB0eXBlZGVmIEdlbmVyaWNDYWxs
YmFjazx1aW50NjRfdD4gVW5zaWduZWRDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PEVkaXRpbmdSYW5nZT4gRWRpdGluZ1JhbmdlQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxs
YmFjazxTdHJpbmdJbXBsKj4gU3RyaW5nQ2FsbGJhY2s7CkBAIC0xMzk1LDYgKzEzOTksMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGZpbmRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgdWlu
dDMyX3QgcHJvY2Vzc1R5cGUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGJvb2wgYWxsb3dP
bmx5QXBwbGljYXRpb25QbHVnaW5zLCB1aW50NjRfdCYgcGx1Z2luUHJvY2Vzc1Rva2VuLCBTdHJp
bmcmIG5ld01JTUVUeXBlLCB1aW50MzJfdCYgcGx1Z2luTG9hZFBvbGljeSwgU3RyaW5nJiB1bmF2
YWlsYWJpbGl0eURlc2NyaXB0aW9uKTsKICNlbmRpZgogCisjaWYgVVNFKFFVSUNLX0xPT0spCisg
ICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKTsKKyAgICB2b2lkIGRpZEZpbmlz
aExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFF1aWNrTG9va0RvY3Vt
ZW50RGF0YSYpOworI2VuZGlmCisKICAgICB1aW50NjRfdCBnZW5lcmF0ZU5hdmlnYXRpb25JRCgp
OwogCiAgICAgUGFnZUNsaWVudCYgbV9wYWdlQ2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMzEyOWJlMjYwMGMzNjRm
YzczMjIzMzczNTNlYWFlODFiOWI1MDViZC4uMTg4MzZhODExMjI0NDdiOWJjMjA0NWNjMTMzYWRj
NjE2YzYwM2NlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0zNjcsNCArMzY3LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVBy
b3h5IHsKICAgICBTaG93VGVsZXBob25lTnVtYmVyTWVudShTdHJpbmcgdGVsZXBob25lTnVtYmVy
LCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICNlbmRpZgogI2VuZGlmCisKKyNpZiBVU0UoUVVJ
Q0tfTE9PSykKKyAgICBEaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KFN0cmluZyBmaWxlTmFtZSwgU3RyaW5nIHV0aSkKKyAgICBEaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZShXZWJLaXQ6OlF1aWNrTG9va0RvY3VtZW50RGF0YSBkYXRh
KQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tCmluZGV4IGFlNzVhZWM0MjE5NzU4YzcwYzhmYjk0OTZkYTY5ZWU1OGI3MTg1OGIu
Ljg2ZjNjN2QzZjdmZGEyOWEyNmZhMTMwZDkxY2M0NmNiYjM5Y2NmODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC00NCw2ICs0NCwx
MCBAQAogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VXNlckFnZW50Lmg+CiAKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKyNpbXBvcnQgIkFQSUxvYWRlckNs
aWVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTU3MCw2ICs1NzQsMTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6Onpvb21Ub1Jl
Y3QoRmxvYXRSZWN0IHJlY3QsIGRvdWJsZSBtaW5pbXVtU2NhbGUsIGRvdWJsZSBtYXhpbXUKICAg
ICBtX3BhZ2VDbGllbnQuem9vbVRvUmVjdChyZWN0LCBtaW5pbXVtU2NhbGUsIG1heGltdW1TY2Fs
ZSk7CiB9CiAKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKyAgICAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKQoreworICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRT
dGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGZpbGVOYW1lLCB1dGkpOwor
fQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUoY29uc3QgUXVpY2tMb29rRG9jdW1lbnREYXRhJiBkYXRhKQoreworICAgIG1f
bG9hZGVyQ2xpZW50LT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZShkYXRhKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBjZjkzYTNmMGRjNzBjODEyZmU5YzI0ZjM1ZjAxYzMxZWQzYTFl
ZmU4Li43NGI3OGQ0ZjJiNTI3NTE2NTU4ODc3NTc5ZGE1ZmMyZjIwZDQwOWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDE5
LDEwICsxMDE5LDE2IEBACiAJCTlGNTRGODk1MTY0OEFFMEYwMDdERjgxQSAvKiBQbHVnaW5Qcm9j
ZXNzTWFuYWdlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1h
Yy5tbSAqLzsgfTsKIAkJOUZCNUYzOTQxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZh
dGVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5tbSAqLzsgfTsK
IAkJOUZCNUYzOTUxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGQjVGMzkzMTY5RTZB
ODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTExOEE5RUUxOTA3QUQ2RjAwRjdDOTJCIC8q
IFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTE4QTlFQzE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9j
dW1lbnREYXRhLmNwcCAqLzsgfTsKKwkJQTExOEE5RUYxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNr
TG9va0RvY3VtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0
YS5oICovOyB9OworCQlBMTE4QTlGMjE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdl
ckV4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMThBOUYwMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tICov
OyB9OworCQlBMTE4QTlGMzE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJh
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExOEE5
RjExOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUE0RkU1QTE4RENFOUZB
MDBCNUVBOEEgLyogX1dLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQTRGRTU3MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQTRG
RTVCMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQTRGRTU4MThEQ0U5RkEwMEI1RUE4QSAvKiBf
V0tEb3dubG9hZC5tbSAqLzsgfTsKIAkJQTFBNEZFNUMxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rv
d25sb2FkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExQTRGRTU5MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZEludGVybmFsLmgg
Ki87IH07CiAJCUExQTRGRTYxMThERDU0QTQwMEI1RUE4QSAvKiBfV0tEb3dubG9hZERlbGVnYXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUE0RkU2
MDE4REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxvYWREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUExQzUxMkM4MTkwNjU2RTUwMDQ0
ODkxNCAvKiBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDNTEyQzYxOTA2NTZFNTAwNDQ4OTE0IC8qIFdl
YlF1aWNrTG9va0hhbmRsZUNsaWVudC5jcHAgKi87IH07CisJCUExQzUxMkM5MTkwNjU2RTUwMDQ0
ODkxNCAvKiBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzUxMkM3MTkwNjU2RTUwMDQ0ODkxNCAvKiBXZWJR
dWlja0xvb2tIYW5kbGVDbGllbnQuaCAqLzsgfTsKIAkJQTFERjYzMTIxOEUwQjdDODAwM0EzRTJB
IC8qIERvd25sb2FkQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFERjYzMTAxOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50Lm1t
ICovOyB9OwogCQlBMURGNjMxMzE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExREY2MzExMThF
MEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5oICovOyB9OwogCQlBNUVGRDM4QzE2QjBF
ODhDMDBCMkYwRTggLyogV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUVGRDM4QjE2QjBFODhDMDBCMkYwRTggLyog
V0tQYWdlVmlzaWJpbGl0eVR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTI4ODIsMTAgKzI4ODgsMTYgQEAKIAkJOUY1NEY4OTQxNjQ4QUUw
RTAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGQjVGMzkyMTY5RTZBODAwMDJDMjVCRiAvKiBXS0Nv
bnRleHRQcml2YXRlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gV0tDb250ZXh0UHJpdmF0ZU1hYy5tbTsgcGF0aCA9IG1hYy9XS0NvbnRleHRQcml2YXRlTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RkI1RjM5MzE2OUU2QTgwMDAyQzI1
QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXS0NvbnRleHRQcml2YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1h
Yy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTE4QTlFQzE5MDdBRDZGMDBGN0M5
MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHA7IHBhdGggPSBpb3MvUXVpY2tM
b29rRG9jdW1lbnREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTExOEE5
RUQxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBRdWlja0xvb2tEb2N1bWVudERhdGEuaDsgcGF0aCA9IGlv
cy9RdWlja0xvb2tEb2N1bWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTExOEE5RjAxOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tOU0ZpbGVNYW5hZ2VyRXh0
cmFzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTE4QTlGMTE5MDhCOEVBMDBG
N0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExQTRGRTU3MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEb3dubG9hZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMUE0RkU1ODE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tEb3dubG9hZC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFBNEZFNTkxOERDRTlGQTAwQjVFQThB
IC8qIF9XS0Rvd25sb2FkSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLRG93bmxvYWRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MUE0RkU2MDE4REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxvYWREZWxlZ2F0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEb3dubG9hZERlbGVnYXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUExQzUxMkM2MTkwNjU2RTUwMDQ0ODkxNCAvKiBXZWJRdWlj
a0xvb2tIYW5kbGVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmNwcDsgcGF0aCA9IGlvcy9XZWJRdWlja0xvb2tI
YW5kbGVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUM1MTJDNzE5
MDY1NkU1MDA0NDg5MTQgLyogV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5oOyBwYXRoID0g
aW9zL1dlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMURGNjMxMDE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZENsaWVudC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFERjYzMTExOEUwQjdDODAwM0EzRTJBIC8qIERv
d25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvd25sb2Fk
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRUREMkQ5MTg4NEFDRTAw
MEJCRkU5OCAvKiBBbGwueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQWxsLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQyNCw2ICs0NDM2LDggQEAKIAkJCQkyRDI4RjNF
MTE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViRGF0YWJhc2VNYW5hZ2VySU9TLm1tICovLAogCQkJCTJE
MjhGM0UyMTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJFZGl0b3JDbGllbnRJT1MubW0gKi8sCiAJCQkJ
MkQyOEYzRTMxODg1Q0NDMTAwNEI5RUFFIC8qIFdlYkZyYW1lTG9hZGVyQ2xpZW50SU9TLm1tICov
LAorCQkJCUExQzUxMkM2MTkwNjU2RTUwMDQ0ODkxNCAvKiBXZWJRdWlja0xvb2tIYW5kbGVDbGll
bnQuY3BwICovLAorCQkJCUExQzUxMkM3MTkwNjU2RTUwMDQ0ODkxNCAvKiBXZWJRdWlja0xvb2tI
YW5kbGVDbGllbnQuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gaW9zOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKQEAgLTQ0NDIsNiArNDQ1Niw4IEBACiAJCQkJMkRBOTQ0OUQxODg0RTRGMDAw
RUQ4NkRCIC8qIEdlc3R1cmVUeXBlcy5oICovLAogCQkJCTJEQTk0NDk3MTg4NEU0RjAwMEVEODZE
QiAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tICovLAogCQkJCTJEQTk0NDk4MTg4NEU0
RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJUb3VjaEV2ZW50SU9TLm1tICovLAorCQkJCUExMThBOUVD
MTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuY3BwICovLAorCQkJCUEx
MThBOUVEMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuaCAqLywKIAkJ
CQkyREE5NDQ5OTE4ODRFNEYwMDBFRDg2REIgLyogV2ViSU9TRXZlbnRGYWN0b3J5LmggKi8sCiAJ
CQkJMkRBOTQ0OUExODg0RTRGMDAwRUQ4NkRCIC8qIFdlYklPU0V2ZW50RmFjdG9yeS5tbSAqLywK
IAkJCQkyREE5NDQ5QjE4ODRFNEYwMDBFRDg2REIgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9T
LmNwcCAqLywKQEAgLTQ3NTQsNiArNDc3MCw4IEBACiAJCQkJMzczRDEyMjExOEE0NzMwMTAwNjZE
OUNDIC8qIF9XS0ZyYW1lSGFuZGxlLmggKi8sCiAJCQkJMzczRDEyMjAxOEE0NzMwMTAwNjZEOUND
IC8qIF9XS0ZyYW1lSGFuZGxlLm1tICovLAogCQkJCTM3M0QxMjI2MThBNDczRjYwMDY2RDlDQyAv
KiBfV0tGcmFtZUhhbmRsZUludGVybmFsLmggKi8sCisJCQkJQTExOEE5RjExOTA4QjhFQTAwRjdD
OTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMuaCAqLywKKwkJCQlBMTE4QTlGMDE5MDhCOEVB
MDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5tbSAqLywKIAkJCQkxQTlFMzI4QjE4
MjE2NUE5MDBGNUQwNEMgLyogX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmggKi8sCiAJCQkJMUE5
RTMyOEMxODIxNjVBOTAwRjVEMDRDIC8qIF9XS1JlbW90ZU9iamVjdEludGVyZmFjZS5tbSAqLywK
IAkJCQkxQUFCRkUzOTE4MjlDMUVEMDA1QjA3MEUgLyogX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNl
SW50ZXJuYWwuaCAqLywKQEAgLTY3ODEsNiArNjc5OSw3IEBACiAJCQkJQkNCMEFFRTkxMjJGNTNF
MzAwQjEzNDFFIC8qIE11dGFibGVEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTZG
QkEyQTExRTY4NjI3MDBEQjEzNzEgLyogTmV0c2NhcGVCcm93c2VyRnVuY3MuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBNkZCRDI4MTFFNjlCQzIwMERCMTM3MSAvKiBOZXRzY2FwZVBsdWdpbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTFDNTEyQzkxOTA2NTZFNTAwNDQ4OTE0IC8qIFdlYlF1aWNrTG9v
a0hhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0QTlDNTYxMkI4MTZDRjAwOEZF
OTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE1ODg5
MjExRUU3MDQwMDA2MUI4ODIgLyogTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxNzk4QzdBMTZFNjgxODgwMDI0MDEzOSAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTY4MjgsNiArNjg0Nyw3IEBACiAJCQkJNTEwNkQ3QzQxOEJEQkU3
MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDOEFDQTE1MTY2NzBEODkwMDRDMTk0MSAvKiBPYmpDT2JqZWN0R3JhcGhDb2RlcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQ0Y2NzJEMTJDN0VERjcwMDhGOUMzNSAvKiBPcmlnaW5BbmREYXRh
YmFzZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMThBOUVGMTkwN0FENkYwMEY3QzkyQiAvKiBR
dWlja0xvb2tEb2N1bWVudERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNUIxQzUxMTg5ODYw
NkYwMDRGQ0Y5QiAvKiBXS05hdmlnYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRjQ3RkZC
MTcyNzVDNTcwMDhBQ0I5MSAvKiBQYWdlQmFubmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzZF
REFBNjExMTI3MUM2MDBFNzY3OEIgLyogUGFnZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC03
MjYwLDYgKzcyODAsNyBAQAogCQkJCUJDQ0Y2QUMzMTJDOTFGMzQwMDhGOUMzNSAvKiBXS0ltYWdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NGNkFDQTEyQzkxRjU5MDA4RjlDMzUgLyogV0tJbWFn
ZUNHLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzhFMjkzOTEyNzYxRTVCMDBCQzdCRDAgLyogV0tJ
bnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMThBOUYzMTkwOEI4RUEwMEY3QzkyQiAv
KiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RUU4NDlDODEz
NjhEOTM5MDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUE5RTEwQjEzMTVDRDE4MDA5RTcwMzEgLyogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzM0QzQTNCNjEzMzk2MDBCMDA3MDlCRTQgLyogV0tNZWRp
YUNhY2hlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC04MzI0LDYgKzgzNDUsNyBAQAogCQkJ
CUJDODI4NDREMTZCNTA4MUMwMEEyNzhGRSAvKiBQbHVnaW5TZXJ2aWNlRW50cnlQb2ludC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTFBNkZCN0FFMTFFNjRCNjgwMERCMTM3MSAvKiBQbHVnaW5WaWV3
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOEM5MkY0MTJEQjlFNzEwMENGMkFFQiAvKiBQcmlu
dEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFDNTEyQzgxOTA2NTZFNTAwNDQ4OTE0IC8q
IFdlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUNDMUI5
MTEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFDMTMzNkUxODU2NUQyQjAwRjNFQzA1IC8qIEFQSVBhZ2VIYW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFFMTE3RjYxMURCQjMwOTAwOTgxNjE1IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTg0NTksNiArODQ4MSw3IEBACiAJCQkJQkMwMzJEQkExMEY0Mzgw
RjAwNThDMTVBIC8qIFdlYkV2ZW50Q29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RDE0MEVBRjE4RjM3QkUwMDA1RTc1QTAgLyogUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDMTExQjVFMTEyRjYyOTgwMDMzN0JBQiAvKiBXZWJFdmVudEZhY3Rv
cnkubW0gaW4gU291cmNlcyAqLywKKwkJCQlBMTE4QTlFRTE5MDdBRDZGMDBGN0M5MkIgLyogUXVp
Y2tMb29rRG9jdW1lbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBM0REMUZEMTI1RTU5
RjMwMDQ1MTVFNiAvKiBXZWJGaW5kQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRTQ2
OTUzMTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDRTQ2OTU1MTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVy
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04NjE2LDYgKzg2MzksNyBAQAogCQkJCTUxMkUz
NEU0MTMwQjREMDUwMEFCRDE5QSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxQzk2MTE4MTgzRDI5NDcwMEQyMDAyRSAvKiBXZWJJREJTZXJ2ZXJD
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUYz
MTI0RkYwMjcwMDY4RjIwQSAvKiBXS0FycmF5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExMThB
OUYyMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTEyRjU4RjUxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFMzUxQ0ExODBGMkNDQzAwRTUzQkU5
IC8qIElEQlV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTJGNThGNzEyQTg4QTU0
MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOTI0MDRlOTI0YTQ0N2Zi
Mzc5NTY1MWY1YjVkNzA0ZTNmYzRiMzczYy4uZjcxNWMyNmJjN2MyNzZiZmQ1ODc0ZGJlZjhkOWUx
OWVjMDk0ZGQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjI5LDYgKzIy
OSwxMCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUGFnZVRyYW5zaXRpb25J
Zk5lZWRlZCgpIG92ZXJyaWRlOwogCisjaWYgVVNFKFFVSUNLX0xPT0spCisgICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZShXZWJDb3JlOjpRdWlja0xvb2tIYW5kbGUmKSBv
dmVycmlkZTsKKyNlbmRpZgorCiAgICAgV2ViRnJhbWUqIG1fZnJhbWU7CiAgICAgUmVmUHRyPFBs
dWdpblZpZXc+IG1fcGx1Z2luVmlldzsKICAgICBib29sIG1faGFzU2VudFJlc3BvbnNlVG9QbHVn
aW5WaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViRnJhbWVMb2FkZXJDbGllbnRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJGcmFtZUxvYWRlckNsaWVudElPUy5tbQppbmRl
eCBhZGViYWZkYTNiYTg4NWU5YjZiNzMxYWFmY2I4MTQ2ZjlhMDI5ZTNjLi5hMDNhMmNiZDFlYzE1
OTA1N2I3ODY3NzdiMjhhYzYyMzllYjRhMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJGcmFtZUxvYWRlckNsaWVudElPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJGcmFt
ZUxvYWRlckNsaWVudElPUy5tbQpAQCAtMzAsNiArMzAsMTMgQEAKIAogI2ltcG9ydCA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgogCisjaWYgVVNFKFFVSUNLX0xPT0spCisjaW1wb3J0ICJXZWJG
cmFtZS5oIgorI2ltcG9ydCAiV2ViUGFnZS5oIgorI2ltcG9ydCAiV2ViUXVpY2tMb29rSGFuZGxl
Q2xpZW50LmgiCisjaW1wb3J0IDxXZWJDb3JlL1F1aWNrTG9vay5oPgorI2VuZGlmCisKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTUwLDYgKzU3LDIw
IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb25u
ZWN0aW9uUHJvcGVydGllcyhEb2N1bWVudExvCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKKyNp
ZiBVU0UoUVVJQ0tfTE9PSykKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZENyZWF0ZVF1
aWNrTG9va0hhbmRsZShXZWJDb3JlOjpRdWlja0xvb2tIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICBp
ZiAoIW1fZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYlBh
Z2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBoYW5kbGUuc2V0Q2xpZW50KFdlYlF1aWNrTG9va0hhbmRsZUNsaWVu
dDo6Y3JlYXRlKGhhbmRsZSwgd2ViUGFnZS0+cGFnZUlEKCkpKTsKK30KKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlF1aWNrTG9v
a0hhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2lvcy9XZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmODA4NTVl
OGQxZjkwNWEyN2VkMjFiZjFmMjgzYjk0NWU0NDg1MTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJRdWlja0xvb2tIYW5k
bGVDbGllbnQuY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmgiCisKKyNpZiBVU0Uo
UVVJQ0tfTE9PSykKKworI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUXVpY2tMb29rLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQ6OldlYlF1aWNrTG9va0hh
bmRsZUNsaWVudChjb25zdCBXZWJDb3JlOjpRdWlja0xvb2tIYW5kbGUmIGhhbmRsZSwgdWludDY0
X3QgcGFnZUlEKQorICAgIDogbV9maWxlTmFtZShoYW5kbGUucHJldmlld0ZpbGVOYW1lKCkpCisg
ICAgLCBtX3V0aShoYW5kbGUucHJldmlld1VUSSgpKQorICAgICwgbV9wYWdlSUQocGFnZUlEKQor
eworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2ZpbGVOYW1lLCBt
X3V0aSksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZiBkYXRhQXJyYXkpCit7CisgICAgbV9kYXRhLmFw
cGVuZChkYXRhQXJyYXkpOworfQorCit2b2lkIFdlYlF1aWNrTG9va0hhbmRsZUNsaWVudDo6ZGlk
RmluaXNoTG9hZGluZygpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZShtX2RhdGEpLCBtX3BhZ2VJRCk7CisgICAgbV9kYXRhLmNsZWFyKCk7Cit9CisKK3ZvaWQg
V2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50OjpkaWRGYWlsKCkKK3sKKyAgICBtX2RhdGEuY2xlYXIo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoUVVJQ0tfTE9P
SykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGMzNTZmZmNhZjBhOGNhMjU2NzJjZjQ5MTkyMjYxOTRhZDJiZjIyYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlF1
aWNrTG9va0hhbmRsZUNsaWVudC5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlF1aWNrTG9va0hhbmRsZUNsaWVudF9oCisjZGVmaW5lIFdlYlF1aWNrTG9va0hhbmRs
ZUNsaWVudF9oCisKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKworI2luY2x1ZGUgIlF1aWNrTG9va0Rv
Y3VtZW50RGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUXVpY2tMb29rSGFuZGxlQ2xpZW50Lmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUXVpY2tMb29rSGFuZGxlOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRnJhbWU7CisKK2NsYXNzIFdlYlF1aWNr
TG9va0hhbmRsZUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpRdWlja0xvb2tIYW5kbGVDbGllbnQg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlF1aWNrTG9va0hhbmRsZUNsaWVu
dD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OlF1aWNrTG9va0hhbmRsZSYgaGFuZGxlLCB1aW50NjRf
dCBwYWdlSUQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlF1aWNrTG9v
a0hhbmRsZUNsaWVudChoYW5kbGUsIHBhZ2VJRCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBX
ZWJRdWlja0xvb2tIYW5kbGVDbGllbnQoY29uc3QgV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlJiwg
dWludDY0X3QgcGFnZUlEKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJheShD
RkFycmF5UmVmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZygp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CisKKyAgICBj
b25zdCBTdHJpbmcgbV9maWxlTmFtZTsKKyAgICBjb25zdCBTdHJpbmcgbV91dGk7CisgICAgY29u
c3QgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgUXVpY2tMb29rRG9jdW1lbnREYXRhIG1fZGF0YTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKFFVSUNLX0xPT0sp
CisKKyNlbmRpZiAvLyBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230215</attachid>
            <date>2014-04-25 15:39:09 -0700</date>
            <delta_ts>2014-04-27 20:32:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132157-20140425153847.patch</filename>
            <type>text/plain</type>
            <size>45309</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3Nzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDVmYzI4ODdhZTIzMzc5
NjFhN2Y1NDgyZWM2YzEwNDNlNjkwNDM4Yi4uMzJkNWQwYjQ5NzVmMGY3ZWRmOTM4NTgwMzQwNDUx
MDVmYmQ4MmNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE0LTA0LTI0ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBJbXBsZW1lbnQgV2Vi
UXVpY2tMb29rSGFuZGxlQ2xpZW50IGZvciBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzIxNTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnRlZCBRdWlj
a0xvb2tIYW5kbGU6OnByZXZpZXdVVEkoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2su
bW06CisgICAgICAgIChXZWJDb3JlOjpRdWlja0xvb2tIYW5kbGU6OnByZXZpZXdGaWxlTmFtZSk6
IENoYW5nZWQgdG8gcmV0dXJuIGEgV1RGOjpTdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpRdWlj
a0xvb2tIYW5kbGU6OnByZXZpZXdVVEkpOiBBZGRlZC4KKwogMjAxNC0wNC0yNCAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBkb24ndCBhc2sg
Zm9yIEFWQXNzZXRUcmFjayBwcm9wZXJ0aWVzIGJlZm9yZSB0aGV5IGFyZSBhdmFpbGFibGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCA0MmZkMWI4NjI5OGY2N2E4ZWQxMWRiMTVjZGNhYzZkYTMwZTA0MGIwLi5kYWVh
Y2MwZjJiOWM3OTU1NDM1ODE5NGNlYjBkMmM4YTg4Zjg2NmFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTIgQEAKKzIwMTQtMDQtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisg
ICAgICAgIFtpT1NdIEltcGxlbWVudCBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQgZm9yIFdlYktp
dDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjE1
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hh
cmVkL0FQSS9Db2NvYS9fV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmg6IEFkZGVkLgorICAgICAgICAq
IFNoYXJlZC9BUEkvQ29jb2EvX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5tbTogQWRkZWQuCisgICAg
ICAgICgrW05TRmlsZU1hbmFnZXIgX3dlYl9jcmVhdGVUZW1wb3JhcnlGaWxlRm9yUXVpY2tMb29r
Ol0pOiBDYWxsZWQgV2ViQ29yZTo6Y3JlYXRlVGVtcG9yYXJ5RmlsZUZvclF1aWNrTG9vaygpLgor
ICAgICAgICAqIFNoYXJlZC9pb3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlF1aWNrTG9va0RvY3VtZW50RGF0YTo6UXVpY2tMb29rRG9jdW1lbnRE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6UXVpY2tMb29rRG9jdW1lbnREYXRhOjphcHBlbmQpOiBB
cHBlbmVkIGVhY2ggQ0ZEYXRhUmVmIHRvIG1fZGF0YSBhbmQgYWRkZWQgdGhlaXIgc2l6ZXMgdG8g
bV9zaXplLgorICAgICAgICAoV2ViS2l0OjpRdWlja0xvb2tEb2N1bWVudERhdGE6OmRlY29kZWRE
YXRhKTogUmV0dXJuZWQgdGhlIGNvbWJpbmVkIENGRGF0YVJlZiBjcmVhdGVkIGJ5IGRlY29kZSgp
LgorICAgICAgICBOYW1lZCB0aGlzIG1ldGhvZCAnZGVjb2RlZERhdGEnIHRvIGluZGljYXRlIHRo
YXQgaXQgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIG9iamVjdHMgcG9wdWxhdGVkIGJ5IGRlY29k
ZSgpLgorICAgICAgICAoV2ViS2l0OjpRdWlja0xvb2tEb2N1bWVudERhdGE6OmNsZWFyKTogQ2xl
YXJlZCBtX2RhdGEgYW5kIHJlc2V0IG1fc2l6ZSB0byAwLgorICAgICAgICAoV2ViS2l0OjpRdWlj
a0xvb2tEb2N1bWVudERhdGE6OmVuY29kZSk6IEltcGxlbWVudGVkIGEgY3VzdG9tIGVuY29kaW5n
IGZ1bmN0aW9uIHRvIGF2b2lkIGhhdmluZyB0byBjb21iaW5lCisgICAgICAgIG1fZGF0YSBpbnRv
IGNvbnRpZ3VvdXMgbWVtb3J5IGF0IGVuY29kaW5nIHRpbWUuIEVuY29kZWQgbV9zaXplIHRoZW4g
c2VxdWVudGlhbGx5IGVuY29kZWQgZWFjaCBtZW1iZXIgb2YgbV9kYXRhLgorICAgICAgICAoV2Vi
S2l0OjpRdWlja0xvb2tEb2N1bWVudERhdGE6OmRlY29kZSk6IERlY29kZWQgdGhlIGJ5dGUgc3Ry
ZWFtIGludG8gYSBzaW5nbGUgQ0ZEYXRhUmVmLiBFYWdlcmx5IGNvcGllZCB0aGUKKyAgICAgICAg
ZGVjb2RlZCBkYXRhIHJhdGhlciB0aGFuIHVzaW5nIGEgRGF0YVJlZmVyZW5jZSBzaW5jZSB3ZSBr
bm93IHRoaXMgd2lsbCBvdXRsaXZlIHRoZSBkZWNvZGVyLgorICAgICAgICAqIFNoYXJlZC9pb3Mv
UXVpY2tMb29rRG9jdW1lbnREYXRhLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6ZGlkU3RhcnRM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgIChBUEk6OkxvYWRl
ckNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6
Ok5hdmlnYXRpb25TdGF0ZTo6c2V0TmF2aWdhdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6
OkxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkZyYW1lTG9hZGVyQ2xp
ZW50SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ3Jl
YXRlUXVpY2tMb29rSGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50OjpXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQpOiBT
ZW50IERpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUKKyAgICAgICAg
dG8gV2ViUGFnZVByb3h5LgorICAgICAgICAoV2ViS2l0OjpXZWJRdWlja0xvb2tIYW5kbGVDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOiBBcHBlbmRlZCBkYXRhQXJyYXkgdG8gbV9kYXRhLgor
ICAgICAgICAoV2ViS2l0OjpXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQ6OmRpZEZpbmlzaExvYWRp
bmcpOiBTZW50IERpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lIHRv
CisgICAgICAgIFdlYlBhZ2VQcm94eSBhbmQgdGhlbiBjbGVhcmVkIG1fZGF0YS4KKyAgICAgICAg
KFdlYktpdDo6V2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50OjpkaWRGYWlsKTogQ2xlYXJlZCBtX2Rh
dGEuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUXVpY2tMb29r
SGFuZGxlQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJRdWlja0xvb2tIYW5k
bGVDbGllbnQ6OmNyZWF0ZSk6CisKIDIwMTQtMDQtMjQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzOiBVc2UgYSBz
aW5nbGUgc3RydWN0IGZvciB0aGUgc25hcHNob3QsIGFuZCBwYXNzIGl0IGFyb3VuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCBlMGU4ZDQ1OWZhZTM2OTc4YmVmYmUxMDk5NTQ5ZjRjOWI0OGVmZmMx
Li40NTZhZTBjYTcyZDk5OTIyZjdkY2MxZGVjZDBmYmFmMjFiNzFlMmRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtMzIyOSw2ICszMjI5LDcgQEAgX19aTjdXZWJDb3JlMzJxbFByZXZpZXdDb252
ZXJ0ZXJGaWxlTmFtZUZvclVSTEVQNU5TVVJMCiBfX1pON1dlYkNvcmUzM1FMUHJldmlld0dldFN1
cHBvcnRlZE1JTUVUeXBlc1NldEV2CiBfX1pON1dlYkNvcmUzNHJlZ2lzdGVyUUxQcmV2aWV3Q29u
dmVydGVySWZOZWVkZWRFUDVOU1VSTFA4TlNTdHJpbmdQNk5TRGF0YQogX19aTjdXZWJDb3JlMzVh
ZGRRTFByZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZvclVSTEVQNU5TVVJMUDExb2JqY19vYmplY3RQ
OE5TU3RyaW5nCitfX1pOSzdXZWJDb3JlMTVRdWlja0xvb2tIYW5kbGUxMHByZXZpZXdVVElFdgog
X19aTks3V2ViQ29yZTE1UXVpY2tMb29rSGFuZGxlMTVwcmV2aWV3RmlsZU5hbWVFdgogX19aTks3
V2ViQ29yZTE1UXVpY2tMb29rSGFuZGxlMTdwcmV2aWV3UmVxdWVzdFVSTEV2CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmgKaW5kZXgg
NmJiZDE0MjJkOThkMGIxMTAxMzE3ODg5NDYzMTA5ZmJlOGRhNTA3My4uNzkwOThkZGNjNjc3OTI1
ZWFmZTY1MjQ4ZmZkNzcwZTNlODMwNmY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmgKQEAgLTEwMSw3ICsxMDEsOCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldENsaWVudChQYXNzUmVmUHRyPFF1aWNrTG9va0hhbmRsZUNsaWVudD4gY2xp
ZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAKLSAgICBOU1N0cmluZyAqcHJldmlld0ZpbGVO
YW1lKCkgY29uc3Q7CisgICAgU3RyaW5nIHByZXZpZXdGaWxlTmFtZSgpIGNvbnN0OworICAgIFN0
cmluZyBwcmV2aWV3VVRJKCkgY29uc3Q7CiAgICAgTlNVUkwgKmZpcnN0UmVxdWVzdFVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fZmlyc3RSZXF1ZXN0VVJMLmdldCgpOyB9CiAgICAgTlNVUkwgKnByZXZp
ZXdSZXF1ZXN0VVJMKCkgY29uc3Q7CiAgICAgUUxQcmV2aWV3Q29udmVydGVyICpjb252ZXJ0ZXIo
KSBjb25zdCB7IHJldHVybiBtX2NvbnZlcnRlci5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCmluZGV4IDIyYTkxYjNhNzY1ZTk5
Zjg0NWFlM2FjZmJkZDJkYzk1MWRlODE5Y2MuLmZkMDJhNDc0NWFiNjM5ZmVhMzM0ZDRmMTkyM2Zk
M2QyODNlNjNlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2subW0KQEAgLTQ1MCwxMSArNDUwLDE2IEBAIFF1aWNrTG9va0hhbmRsZTo6flF1
aWNrTG9va0hhbmRsZSgpCiAgICAgW21fZGVsZWdhdGUgY2xlYXJIYW5kbGVdOwogfQogCi1OU1N0
cmluZyAqUXVpY2tMb29rSGFuZGxlOjpwcmV2aWV3RmlsZU5hbWUoKSBjb25zdAorU3RyaW5nIFF1
aWNrTG9va0hhbmRsZTo6cHJldmlld0ZpbGVOYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gW21f
Y29udmVydGVyIHByZXZpZXdGaWxlTmFtZV07CiB9CiAKK1N0cmluZyBRdWlja0xvb2tIYW5kbGU6
OnByZXZpZXdVVEkoKSBjb25zdAoreworICAgIHJldHVybiBbbV9jb252ZXJ0ZXIgcHJldmlld1VU
SV07Cit9CisKIE5TVVJMICpRdWlja0xvb2tIYW5kbGU6OnByZXZpZXdSZXF1ZXN0VVJMKCkgY29u
c3QKIHsKICAgICByZXR1cm4gW1ttX2NvbnZlcnRlciBwcmV2aWV3UmVxdWVzdF0gVVJMXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvX1dLTlNGaWxlTWFuYWdl
ckV4dHJhcy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9fV0tOU0ZpbGVNYW5h
Z2VyRXh0cmFzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWMwMjhlMGU4YWUzMWU4YjUyNTgzMzJkMjJlNDM2ZjY3
N2RjMjczYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29j
b2EvX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0IDxXZWJLaXQyL1dLRm91bmRhdGlvbi5oPgorCisjaWYgVEFSR0VUX09TX0lQSE9O
RQorCitAaW50ZXJmYWNlIE5TRmlsZU1hbmFnZXIgKFdLRXh0cmFzKQorCisrIChOU1N0cmluZyAq
KV93ZWJfY3JlYXRlVGVtcG9yYXJ5RmlsZUZvclF1aWNrTG9vazooTlNTdHJpbmcgKilmaWxlTmFt
ZTsKKworQGVuZAorCisjZW5kaWYgLy8gVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9fV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9fV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg0NjA5ZjA2YzcxZTRkY2FhMDEwMTBiYTlhMDg5OWZhMTIyMjY3MTEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL19XS05TRmls
ZU1hbmFnZXJFeHRyYXMubW0KQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oIgorCisjaWYgVVNF
KFFVSUNLX0xPT0spCisKKyNpbXBvcnQgPFdlYkNvcmUvUXVpY2tMb29rLmg+CisKK0BpbXBsZW1l
bnRhdGlvbiBOU0ZpbGVNYW5hZ2VyIChXS0V4dHJhcykKKworKyAoTlNTdHJpbmcgKilfd2ViX2Ny
ZWF0ZVRlbXBvcmFyeUZpbGVGb3JRdWlja0xvb2s6KE5TU3RyaW5nICopZmlsZU5hbWUKK3sKKyAg
ICByZXR1cm4gV2ViQ29yZTo6Y3JlYXRlVGVtcG9yYXJ5RmlsZUZvclF1aWNrTG9vayhmaWxlTmFt
ZSk7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUzOWI2M2FhMWVkN2QyYmQ3YmJjNTIyNzgzNTUzYjFlYjQxNmRkZWMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5j
cHAKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJRdWlja0xvb2tEb2N1bWVudERhdGEuaCIKKworI2lmIFVTRShRVUlDS19MT09LKQor
CisjaW5jbHVkZSAiQXJndW1lbnREZWNvZGVyLmgiCisjaW5jbHVkZSAiQXJndW1lbnRFbmNvZGVy
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitRdWlja0xvb2tEb2N1bWVudERhdGE6OlF1aWNr
TG9va0RvY3VtZW50RGF0YSgpCisgICAgOiBtX3NpemUoMCkKK3sKK30KKwordm9pZCBRdWlja0xv
b2tEb2N1bWVudERhdGE6OmFwcGVuZChDRkFycmF5UmVmIGRhdGFBcnJheSkKK3sKKyAgICBDRkFy
cmF5QXBwbHlGdW5jdGlvbihkYXRhQXJyYXksIENGUmFuZ2VNYWtlKDAsIENGQXJyYXlHZXRDb3Vu
dChkYXRhQXJyYXkpKSwgW10oY29uc3Qgdm9pZCogdmFsdWUsIHZvaWQqIGNvbnRleHQpIHsKKyAg
ICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAoQ0ZEYXRhUmVmKXZhbHVlOworICAgICAgICBBU1NFUlQo
Q0ZHZXRUeXBlSUQoZGF0YSkgPT0gQ0ZEYXRhR2V0VHlwZUlEKCkpOworICAgICAgICBRdWlja0xv
b2tEb2N1bWVudERhdGEqIGRvY3VtZW50RGF0YSA9IHN0YXRpY19jYXN0PFF1aWNrTG9va0RvY3Vt
ZW50RGF0YSo+KGNvbnRleHQpOworICAgICAgICBkb2N1bWVudERhdGEtPm1fZGF0YS5hcHBlbmQo
ZGF0YSk7CisgICAgICAgIGRvY3VtZW50RGF0YS0+bV9zaXplICs9IENGRGF0YUdldExlbmd0aChk
YXRhKTsKKyAgICB9LCB0aGlzKTsKK30KKworQ0ZEYXRhUmVmIFF1aWNrTG9va0RvY3VtZW50RGF0
YTo6ZGVjb2RlZERhdGEoKSBjb25zdAoreworICAgIEFTU0VSVChtX2RhdGEuc2l6ZSgpIDw9IDEp
OworICAgIGlmIChtX2RhdGEuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gbV9kYXRhWzBdLmdldCgpOworfQorCit2b2lkIFF1aWNrTG9va0RvY3VtZW50RGF0
YTo6Y2xlYXIoKQoreworICAgIG1fZGF0YS5jbGVhcigpOworICAgIG1fc2l6ZSA9IDA7Cit9CisK
K3ZvaWQgUXVpY2tMb29rRG9jdW1lbnREYXRhOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3NpemU7CisgICAgZm9yIChjb25z
dCBhdXRvJiBkYXRhIDogbV9kYXRhKQorICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5n
ZXQoKSksIDEpOworfQorCitib29sIFF1aWNrTG9va0RvY3VtZW50RGF0YTo6ZGVjb2RlKElQQzo6
QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBRdWlja0xvb2tEb2N1bWVudERhdGEmIGRvY3VtZW50
RGF0YSkKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRvY3VtZW50RGF0YS5tX3NpemUpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRvY3VtZW50RGF0YS5tX3NpemUpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgdWludDhfdCogY29uc3QgYnVmZmVyID0gc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KENGQWxsb2NhdG9yQWxsb2NhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
ZG9jdW1lbnREYXRhLm1fc2l6ZSwgMCkpOworICAgIEFTU0VSVChidWZmZXIpOworCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShidWZmZXIsIGRvY3VtZW50RGF0YS5tX3Np
emUsIDEpKSB7CisgICAgICAgIENGQWxsb2NhdG9yRGVhbGxvY2F0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBidWZmZXIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZG9jdW1l
bnREYXRhLm1fZGF0YS5jbGVhcigpOworICAgIGRvY3VtZW50RGF0YS5tX2RhdGEuYXBwZW5kKGFk
b3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1
ZmZlciwgZG9jdW1lbnREYXRhLm1fc2l6ZSwga0NGQWxsb2NhdG9yRGVmYXVsdCkpKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0Uo
UVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9pb3MvUXVpY2tM
b29rRG9jdW1lbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL1F1aWNrTG9va0Rv
Y3VtZW50RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwMjNhMTVjMDU3YjQ4YzcxYzgzZGYzMDgxOWJhNDIy
ZTc4MWFmM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL1F1
aWNrTG9va0RvY3VtZW50RGF0YS5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFF1aWNrTG9va0RvY3VtZW50RGF0YV9oCisjZGVmaW5lIFF1aWNrTG9va0RvY3VtZW50RGF0
YV9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNz
IEFyZ3VtZW50RGVjb2RlcjsKK2NsYXNzIEFyZ3VtZW50RW5jb2RlcjsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFF1aWNrTG9va0RvY3VtZW50RGF0YSB7CitXVEZfTUFLRV9OT05D
T1BZQUJMRShRdWlja0xvb2tEb2N1bWVudERhdGEpOworcHVibGljOgorICAgIFF1aWNrTG9va0Rv
Y3VtZW50RGF0YSgpOworICAgIHZvaWQgYXBwZW5kKENGQXJyYXlSZWYpOworICAgIENGRGF0YVJl
ZiBkZWNvZGVkRGF0YSgpIGNvbnN0OworICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2b2lkIGVuY29k
ZShJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBib29sIGRlY29kZShJ
UEM6OkFyZ3VtZW50RGVjb2RlciYsIFF1aWNrTG9va0RvY3VtZW50RGF0YSYpOworCitwcml2YXRl
OgorICAgIFZlY3RvcjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4gbV9kYXRhOworICAgIHVpbnQ2NF90
IG1fc2l6ZTsKK307Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFF1aWNrTG9v
a0RvY3VtZW50RGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2Fk
ZXJDbGllbnQuaAppbmRleCA2OWU5ZWVlMmIwNGIzZDNhMjI2NDE2ODI5NjcxMDNiNjk5ZTgwMzA2
Li4zYjk3YjM4NzdiMGE5Y2Y3MGFjMjk5Mzc2ZTk2NDI4NjBiY2ZiYjcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKQEAgLTM5LDYgKzM5LDcg
QEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eTsKIGNsYXNzIEltbXV0YWJsZURpY3Rpb25hcnk7CitjbGFz
cyBRdWlja0xvb2tEb2N1bWVudERhdGE7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwog
Y2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKQEAgLTEwMCw2ICsxMDEs
MTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHdlYkdM
TG9hZFBvbGljeShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJikgY29u
c3QgeyByZXR1cm4gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247
IH0KICAgICB2aXJ0dWFsIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSByZXNvbHZlV2ViR0xMb2Fk
UG9saWN5KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmKSBjb25zdCB7
IHJldHVybiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsgfQog
I2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKKworI2lmIFVTRShRVUlDS19MT09LKQorICAgIHZpcnR1
YWwgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KGNvbnN0IFdlYktpdDo6UXVpY2tMb29rRG9jdW1lbnREYXRhJikgeyB9CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKaW5kZXgg
ZmZiNDBmMjM3YzJjNGJmM2Y4YTI1NGQxOGE3MGQ1YTYxNzZiOGQxNy4uMjg1N2YzYzI4MWQ5ZThj
MGRjZWVmOTBmMjExMDgxNzg5OTZmNjdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0
ZS5oCkBAIC00NSw2ICs0NSwxMSBAQCBzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3kgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYQogCiAtICh2b2lk
KV93ZWJWaWV3V2ViUHJvY2Vzc0RpZENyYXNoOihXS1dlYlZpZXcgKil3ZWJWaWV3OwogCisjaWYg
VEFSR0VUX09TX0lQSE9ORQorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
aWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZpbGVOYW1lOihO
U1N0cmluZyAqKWZpbGVOYW1lIHV0aTooTlNTdHJpbmcgKil1dGk7CistICh2b2lkKV93ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lOihOU0RhdGEgKilkb2N1bWVudERhdGE7CisjZW5kaWYKKwogQGVuZAogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
aAppbmRleCAwNTRjYTBlNmU0Y2QzNGFmOTU3YjE4NzVlMzAyZGE4MWI2NzY4N2FiLi40ODI0Yzk0
ZmUxMjBhNWZhNjJjOTM5MmEwYzgxMjIwNTcxM2NiMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCkBAIC0xMDMsNiArMTAzLDEwIEBA
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VJbkZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVBy
b3h5KiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Kikgb3ZlcnJpZGU7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViS2l0OjpXZWJQYWdlUHJveHkq
KSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlz
dChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSog
YWRkZWRJdGVtLCBWZWN0b3I8UmVmUHRyPFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4+
IHJlbW92ZWRJdGVtcykgb3ZlcnJpZGU7CisjaWYgVVNFKFFVSUNLX0xPT0spCisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJp
ZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShjb25zdCBXZWJLaXQ6OlF1aWNrTG9va0RvY3VtZW50RGF0YSYpIG92ZXJy
aWRlOworI2VuZGlmCiAKICAgICAgICAgTmF2aWdhdGlvblN0YXRlJiBtX25hdmlnYXRpb25TdGF0
ZTsKICAgICB9OwpAQCAtMTM4LDYgKzE0MiwxMCBAQCBwcml2YXRlOgogICAgICAgICBib29sIHdl
YlZpZXdDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlIDogMTsKICAgICAgICAg
Ym9vbCB3ZWJWaWV3RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogMTsKICAgICAg
ICAgYm9vbCB3ZWJWaWV3V2ViUHJvY2Vzc0RpZENyYXNoIDogMTsKKyNpZiBVU0UoUVVJQ0tfTE9P
SykKKyAgICAgICAgYm9vbCB3ZWJWaWV3RGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZSA6IDE7CisgICAgICAgIGJvb2wgd2ViVmlld0RpZEZpbmlzaExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkZyYW1lIDogMTsKKyNlbmRpZgogICAgIH0gbV9uYXZpZ2F0aW9u
RGVsZWdhdGVNZXRob2RzOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPFdLTmF2
aWdhdGlvbj4+IG1fbmF2aWdhdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCAwMDM2NjVlZjY2MjQ2YWNmMjcxYTEzODYw
ZmRkMDk2YTE2ODU2YmRkLi40YjU1MTk3NWYzODVkMjk1MGUwMDA3Njk3MjlmNDE3NGM3MTdjMjIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0KQEAgLTUzLDYgKzUzLDEwIEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBv
cnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCisjaWYgVVNFKFFVSUNLX0xPT0spCisjaW1wb3J0
ICJRdWlja0xvb2tEb2N1bWVudERhdGEuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogc3RhdGljIEhhc2hNYXA8V2ViUGFnZVByb3h5KiwgTmF2aWdhdGlvblN0YXRlKj4mIG5hdmln
YXRpb25TdGF0ZXMoKQpAQCAtMTIzLDYgKzEyNywxMCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
c2V0TmF2aWdhdGlvbkRlbGVnYXRlKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUp
CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdDYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3dlYlZpZXc6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZTopXTsK
ICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJWaWV3OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTopXTsKICAgICBtX25h
dmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaCA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2ViUHJvY2Vzc0RpZENy
YXNoOildOworI2lmIFVTRShRVUlDS19MT09LKQorICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3RGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZFN0YXJ0
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6dXRpOildOwor
ICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZTopXTsKKyNlbmRpZgogfQogCiBSZXRhaW5QdHI8aWQgPFdLSGlzdG9yeURlbGVnYXRl
UHJpdmF0ZT4gPiBOYXZpZ2F0aW9uU3RhdGU6Omhpc3RvcnlEZWxlZ2F0ZSgpCkBAIC01NjcsNiAr
NTc1LDMyIEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZENoYW5nZUJh
Y2tGb3J3YXJkTGlzdChXZWJLaXQ6OldlYlBhZ2VQcm94CiAgICAgW1tOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpfV0tCYWNrRm9yd2FyZExp
c3REaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0OndyYXBwZXIobV9uYXZpZ2F0aW9uU3RhdGUu
bV93ZWJWaWV3LT5fcGFnZS0+YmFja0ZvcndhcmRMaXN0KCkpXTsKIH0KIAorI2lmIFVTRShRVUlD
S19MT09LKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkU3RhcnRMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBTdHJpbmcmIHV0aSkKK3sKKyAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdh
dGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBuYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKKyAg
ICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW3N0YXRp
Y19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdh
dGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRTdGFydExv
YWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZpbGVOYW1lOmZpbGVOYW1lIHV0
aTp1dGldOworfQorCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGaW5p
c2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJLaXQ6OlF1aWNr
TG9va0RvY3VtZW50RGF0YSYgZGF0YSkKK3sKKyAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1f
bmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbmF2aWdh
dGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0
KCk7CisgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAg
IFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlv
bkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6KE5TRGF0YSAqKWRhdGEu
ZGVjb2RlZERhdGEoKV07Cit9CisjZW5kaWYKKwogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OndpbGxD
aGFuZ2VJc0xvYWRpbmcoKQogewogICAgIFttX3dlYlZpZXcgd2lsbENoYW5nZVZhbHVlRm9yS2V5
OkAibG9hZGluZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IDBiYjEyMDQ2MTE2ZGI3NDlhMzdjMDEzOGE4YjI3MTc5YWJlNDAwOTcuLjhhNTRlNmNhNTEyNDQ2
M2RlYzQ2ZGNlYzY4NDM3ZmEwNDBiMWY2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTE3NCw2ICsxNzQsMTAgQEAgc3RydWN0IFdlYlBvcHVwSXRlbTsKIGNs
YXNzIFdlYlZpYnJhdGlvblByb3h5OwogI2VuZGlmCiAKKyNpZiBVU0UoUVVJQ0tfTE9PSykKK2Ns
YXNzIFF1aWNrTG9va0RvY3VtZW50RGF0YTsKKyNlbmRpZgorCiB0eXBlZGVmIEdlbmVyaWNDYWxs
YmFjazx1aW50NjRfdD4gVW5zaWduZWRDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PEVkaXRpbmdSYW5nZT4gRWRpdGluZ1JhbmdlQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxs
YmFjazxTdHJpbmdJbXBsKj4gU3RyaW5nQ2FsbGJhY2s7CkBAIC0xMzk1LDYgKzEzOTksMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGZpbmRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgdWlu
dDMyX3QgcHJvY2Vzc1R5cGUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGJvb2wgYWxsb3dP
bmx5QXBwbGljYXRpb25QbHVnaW5zLCB1aW50NjRfdCYgcGx1Z2luUHJvY2Vzc1Rva2VuLCBTdHJp
bmcmIG5ld01JTUVUeXBlLCB1aW50MzJfdCYgcGx1Z2luTG9hZFBvbGljeSwgU3RyaW5nJiB1bmF2
YWlsYWJpbGl0eURlc2NyaXB0aW9uKTsKICNlbmRpZgogCisjaWYgVVNFKFFVSUNLX0xPT0spCisg
ICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKTsKKyAgICB2b2lkIGRpZEZpbmlz
aExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFF1aWNrTG9va0RvY3Vt
ZW50RGF0YSYpOworI2VuZGlmCisKICAgICB1aW50NjRfdCBnZW5lcmF0ZU5hdmlnYXRpb25JRCgp
OwogCiAgICAgUGFnZUNsaWVudCYgbV9wYWdlQ2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMzEyOWJlMjYwMGMzNjRm
YzczMjIzMzczNTNlYWFlODFiOWI1MDViZC4uMTg4MzZhODExMjI0NDdiOWJjMjA0NWNjMTMzYWRj
NjE2YzYwM2NlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0zNjcsNCArMzY3LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVBy
b3h5IHsKICAgICBTaG93VGVsZXBob25lTnVtYmVyTWVudShTdHJpbmcgdGVsZXBob25lTnVtYmVy
LCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICNlbmRpZgogI2VuZGlmCisKKyNpZiBVU0UoUVVJ
Q0tfTE9PSykKKyAgICBEaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KFN0cmluZyBmaWxlTmFtZSwgU3RyaW5nIHV0aSkKKyAgICBEaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZShXZWJLaXQ6OlF1aWNrTG9va0RvY3VtZW50RGF0YSBkYXRh
KQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tCmluZGV4IGFlNzVhZWM0MjE5NzU4YzcwYzhmYjk0OTZkYTY5ZWU1OGI3MTg1OGIu
LjRhZmU1N2VkMjU5OTY2ZDM2ZTQxODc1MDg5MzczNmZmOWNmZTk0NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC00NCw2ICs0NCwx
MSBAQAogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VXNlckFnZW50Lmg+CiAKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKyNpbXBvcnQgIkFQSUxvYWRlckNs
aWVudC5oIgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjZW5kaWYKKwogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTcwLDYgKzU3NSwy
MSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6em9vbVRvUmVjdChGbG9hdFJlY3QgcmVjdCwgZG91Ymxl
IG1pbmltdW1TY2FsZSwgZG91YmxlIG1heGltdQogICAgIG1fcGFnZUNsaWVudC56b29tVG9SZWN0
KHJlY3QsIG1pbmltdW1TY2FsZSwgbWF4aW11bVNjYWxlKTsKIH0KIAorI2lmIFVTRShRVUlDS19M
T09LKQorICAgIAordm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1
dGkpCit7CisgICAgLy8gRW5zdXJlIHRoYXQgZmlsZU5hbWUgaXNuJ3QgcmVhbGx5IGEgcGF0aCBu
YW1lCisgICAgc3RhdGljX2Fzc2VydChub3RGb3VuZCA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0x
KSwgIlRoZSBmb2xsb3dpbmcgbGluZSBhc3N1bWVzIFdURjo6bm90Rm91bmQgZXF1YWxzIC0xIik7
CisgICAgbV9sb2FkZXJDbGllbnQtPmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWUoZmlsZU5hbWUuc3Vic3RyaW5nKGZpbGVOYW1lLnJldmVyc2VGaW5kKCcvJykgKyAx
KSwgdXRpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFF1aWNrTG9va0RvY3VtZW50RGF0YSYgZGF0YSkK
K3sKKyAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUoZGF0YSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2Y5M2EzZjBkYzcwYzgxMmZlOWMyNGYzNWYw
MWMzMWVkM2ExZWZlOC4uNzRiNzhkNGYyYjUyNzUxNjU1ODg3NzU3OWRhNWZjMmYyMGQ0MDlmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTAxOSwxMCArMTAxOSwxNiBAQAogCQk5RjU0Rjg5NTE2NDhBRTBGMDA3REY4MUEgLyog
UGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5RjU0Rjg5NDE2NDhBRTBFMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vz
c01hbmFnZXJNYWMubW0gKi87IH07CiAJCTlGQjVGMzk0MTY5RTZBODAwMDJDMjVCRiAvKiBXS0Nv
bnRleHRQcml2YXRlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMu
bW0gKi87IH07CiAJCTlGQjVGMzk1MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRl
TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RkI1
RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUExMThBOUVFMTkwN0FENkYw
MEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RUMxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1
aWNrTG9va0RvY3VtZW50RGF0YS5jcHAgKi87IH07CisJCUExMThBOUVGMTkwN0FENkYwMEY3Qzky
QiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExMThBOUVEMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tE
b2N1bWVudERhdGEuaCAqLzsgfTsKKwkJQTExOEE5RjIxOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05T
RmlsZU1hbmFnZXJFeHRyYXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTE4QTlGMDE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4
dHJhcy5tbSAqLzsgfTsKKwkJQTExOEE5RjMxOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1h
bmFnZXJFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExMThBOUYxMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFBNEZF
NUExOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUE0RkU1NzE4RENFOUZBMDBCNUVBOEEgLyogX1dL
RG93bmxvYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBMUE0RkU1QjE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUE0RkU1ODE4RENFOUZBMDBC
NUVBOEEgLyogX1dLRG93bmxvYWQubW0gKi87IH07CiAJCUExQTRGRTVDMThEQ0U5RkEwMEI1RUE4
QSAvKiBfV0tEb3dubG9hZEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUE0RkU1OTE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWRJ
bnRlcm5hbC5oICovOyB9OwogCQlBMUE0RkU2MTE4REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxv
YWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTFBNEZFNjAxOERENTRBNDAwQjVFQThBIC8qIF9XS0Rvd25sb2FkRGVsZWdhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBMUM1MTJDODE5
MDY1NkU1MDA0NDg5MTQgLyogV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzUxMkM2MTkwNjU2RTUwMDQ0
ODkxNCAvKiBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuY3BwICovOyB9OworCQlBMUM1MTJDOTE5
MDY1NkU1MDA0NDg5MTQgLyogV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUM1MTJDNzE5MDY1NkU1MDA0NDg5
MTQgLyogV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmggKi87IH07CiAJCUExREY2MzEyMThFMEI3
QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExREY2MzEwMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9h
ZENsaWVudC5tbSAqLzsgfTsKIAkJQTFERjYzMTMxOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2Fk
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MURGNjMxMTE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQuaCAqLzsgfTsKIAkJQTVF
RkQzOEMxNkIwRTg4QzAwQjJGMEU4IC8qIFdLUGFnZVZpc2liaWxpdHlUeXBlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVFRkQzOEIxNkIwRTg4QzAw
QjJGMEU4IC8qIFdLUGFnZVZpc2liaWxpdHlUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yODgyLDEwICsyODg4LDE2IEBACiAJCTlGNTRG
ODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RkI1RjM5MjE2OUU2QTgwMDAyQzI1
QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFdLQ29udGV4dFByaXZhdGVNYWMubW07IHBhdGggPSBtYWMvV0tDb250ZXh0
UHJpdmF0ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUZCNUYzOTMxNjlF
NkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLQ29udGV4
dFByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTExOEE5RUMxOTA3
QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBRdWlja0xvb2tEb2N1bWVudERhdGEuY3BwOyBwYXRoID0g
aW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUExMThBOUVEMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUXVpY2tMb29rRG9jdW1lbnREYXRhLmg7
IHBhdGggPSBpb3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUExMThBOUYwMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0
cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLTlNGaWxl
TWFuYWdlckV4dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTExOEE5RjEx
OTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMUE0RkU1NzE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxv
YWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRG93bmxvYWQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFBNEZFNTgxOERDRTlGQTAwQjVFQThBIC8qIF9X
S0Rvd25sb2FkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dL
RG93bmxvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQTRGRTU5MThEQ0U5
RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IF9XS0Rvd25sb2FkSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTFBNEZFNjAxOERENTRBNDAwQjVFQThBIC8qIF9XS0Rvd25sb2FkRGVsZWdhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRG93bmxvYWREZWxlZ2F0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUM1MTJDNjE5MDY1NkU1MDA0NDg5MTQg
LyogV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFdlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5jcHA7IHBhdGggPSBpb3MvV2Vi
UXVpY2tMb29rSGFuZGxlQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTFDNTEyQzcxOTA2NTZFNTAwNDQ4OTE0IC8qIFdlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQu
aDsgcGF0aCA9IGlvcy9XZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTFERjYzMTAxOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRG93bmxvYWRDbGll
bnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExREY2MzExMThFMEI3QzgwMDNB
M0UyQSAvKiBEb3dubG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEb3dubG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUVERDJE
OTE4ODRBQ0UwMDBCQkZFOTggLyogQWxsLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEFsbC54Y2Nv
bmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0MjQsNiArNDQzNiw4IEBACiAJ
CQkJMkQyOEYzRTExODg1Q0NDMTAwNEI5RUFFIC8qIFdlYkRhdGFiYXNlTWFuYWdlcklPUy5tbSAq
LywKIAkJCQkyRDI4RjNFMjE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViRWRpdG9yQ2xpZW50SU9TLm1t
ICovLAogCQkJCTJEMjhGM0UzMTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJGcmFtZUxvYWRlckNsaWVu
dElPUy5tbSAqLywKKwkJCQlBMUM1MTJDNjE5MDY1NkU1MDA0NDg5MTQgLyogV2ViUXVpY2tMb29r
SGFuZGxlQ2xpZW50LmNwcCAqLywKKwkJCQlBMUM1MTJDNzE5MDY1NkU1MDA0NDg5MTQgLyogV2Vi
UXVpY2tMb29rSGFuZGxlQ2xpZW50LmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IGlvczsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00NDQyLDYgKzQ0NTYsOCBAQAogCQkJCTJEQTk0NDlE
MTg4NEU0RjAwMEVEODZEQiAvKiBHZXN0dXJlVHlwZXMuaCAqLywKIAkJCQkyREE5NDQ5NzE4ODRF
NEYwMDBFRDg2REIgLyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudElPUy5tbSAqLywKIAkJCQkyREE5
NDQ5ODE4ODRFNEYwMDBFRDg2REIgLyogTmF0aXZlV2ViVG91Y2hFdmVudElPUy5tbSAqLywKKwkJ
CQlBMTE4QTlFQzE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcCAq
LywKKwkJCQlBMTE4QTlFRDE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRh
LmggKi8sCiAJCQkJMkRBOTQ0OTkxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYklPU0V2ZW50RmFjdG9y
eS5oICovLAogCQkJCTJEQTk0NDlBMTg4NEU0RjAwMEVEODZEQiAvKiBXZWJJT1NFdmVudEZhY3Rv
cnkubW0gKi8sCiAJCQkJMkRBOTQ0OUIxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYlBsYXRmb3JtVG91
Y2hQb2ludElPUy5jcHAgKi8sCkBAIC00NzU0LDYgKzQ3NzAsOCBAQAogCQkJCTM3M0QxMjIxMThB
NDczMDEwMDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRsZS5oICovLAogCQkJCTM3M0QxMjIwMThBNDcz
MDEwMDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRsZS5tbSAqLywKIAkJCQkzNzNEMTIyNjE4QTQ3M0Y2
MDA2NkQ5Q0MgLyogX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oICovLAorCQkJCUExMThBOUYxMTkw
OEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmggKi8sCisJCQkJQTExOEE5
RjAxOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMubW0gKi8sCiAJCQkJ
MUE5RTMyOEIxODIxNjVBOTAwRjVEMDRDIC8qIF9XS1JlbW90ZU9iamVjdEludGVyZmFjZS5oICov
LAogCQkJCTFBOUUzMjhDMTgyMTY1QTkwMEY1RDA0QyAvKiBfV0tSZW1vdGVPYmplY3RJbnRlcmZh
Y2UubW0gKi8sCiAJCQkJMUFBQkZFMzkxODI5QzFFRDAwNUIwNzBFIC8qIF9XS1JlbW90ZU9iamVj
dEludGVyZmFjZUludGVybmFsLmggKi8sCkBAIC02NzgxLDYgKzY3OTksNyBAQAogCQkJCUJDQjBB
RUU5MTIyRjUzRTMwMEIxMzQxRSAvKiBNdXRhYmxlRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUE2RkJBMkExMUU2ODYyNzAwREIxMzcxIC8qIE5ldHNjYXBlQnJvd3NlckZ1bmNzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTZGQkQyODExRTY5QkMyMDBEQjEzNzEgLyogTmV0c2NhcGVQ
bHVnaW4uaCBpbiBIZWFkZXJzICovLAorCQkJCUExQzUxMkM5MTkwNjU2RTUwMDQ0ODkxNCAvKiBX
ZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNEE5QzU2MTJC
ODE2Q0YwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFBNTg4OTIxMUVFNzA0MDAwNjFCODgyIC8qIE5ldHNjYXBlUGx1Z2luU3RyZWFtLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMTc5OEM3QTE2RTY4MTg4MDAyNDAxMzkgLyogTmV0d29ya0Jsb2JS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCkBAIC02ODI4LDYgKzY4NDcsNyBAQAogCQkJCTUxMDZE
N0M0MThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzhBQ0ExNTE2NjcwRDg5MDA0QzE5NDEgLyogT2JqQ09iamVjdEdyYXBoQ29k
ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NGNjcyRDEyQzdFREY3MDA4RjlDMzUgLyogT3Jp
Z2luQW5kRGF0YWJhc2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTE4QTlFRjE5MDdBRDZGMDBG
N0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTVC
MUM1MTE4OTg2MDZGMDA0RkNGOUIgLyogV0tOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3Q0Y0N0ZGQjE3Mjc1QzU3MDA4QUNCOTEgLyogUGFnZUJhbm5lci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM2RURBQTYxMTEyNzFDNjAwRTc2NzhCIC8qIFBhZ2VDbGllbnQuaCBpbiBIZWFkZXJz
ICovLApAQCAtNzI2MCw2ICs3MjgwLDcgQEAKIAkJCQlCQ0NGNkFDMzEyQzkxRjM0MDA4RjlDMzUg
LyogV0tJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDRjZBQ0ExMkM5MUY1OTAwOEY5QzM1
IC8qIFdLSW1hZ2VDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4RTI5MzkxMjc2MUU1QjAwQkM3
QkQwIC8qIFdLSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTE4QTlGMzE5MDhCOEVB
MDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NkVFODQ5QzgxMzY4RDkzOTAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFBOUUxMEIxMzE1Q0QxODAwOUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9y
YWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzNEM0EzQjYxMzM5NjAwQjAwNzA5QkU0
IC8qIFdLTWVkaWFDYWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtODMyNCw2ICs4MzQ1
LDcgQEAKIAkJCQlCQzgyODQ0RDE2QjUwODFDMDBBMjc4RkUgLyogUGx1Z2luU2VydmljZUVudHJ5
UG9pbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTZGQjdBRTExRTY0QjY4MDBEQjEzNzEgLyog
UGx1Z2luVmlldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThDOTJGNDEyREI5RTcxMDBDRjJB
RUIgLyogUHJpbnRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExQzUxMkM4MTkwNjU2RTUw
MDQ0ODkxNCAvKiBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTFDQzFCOTExMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mb01hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBQzEzMzZFMTg1NjVEMkIwMEYzRUMwNSAvKiBBUElQYWdlSGFuZGxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBRTExN0Y2MTFEQkIzMDkwMDk4MTYxNSAvKiBQcm9jZXNzTGF1
bmNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04NDU5LDYgKzg0ODEsNyBAQAogCQkJCUJDMDMy
REJBMTBGNDM4MEYwMDU4QzE1QSAvKiBXZWJFdmVudENvbnZlcnNpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQxNDBFQUYxOEYzN0JFMDAwNUU3NUEwIC8qIFBhZ2VPdmVybGF5Q29udHJvbGxl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzExMUI1RTExMkY2Mjk4MDAzMzdCQUIgLyogV2Vi
RXZlbnRGYWN0b3J5Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTExOEE5RUUxOTA3QUQ2RjAwRjdD
OTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTNE
RDFGRDEyNUU1OUYzMDA0NTE1RTYgLyogV2ViRmluZENsaWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQ0U0Njk1MzEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybUNsaWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQ0U0Njk1NTEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybVN1Ym1pc3Np
b25MaXN0ZW5lclByb3h5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtODYxNiw2ICs4NjM5LDcgQEAK
IAkJCQk1MTJFMzRFNDEzMEI0RDA1MDBBQkQxOUEgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUM5NjExODE4M0QyOTQ3MDBEMjAwMkUgLyogV2Vi
SURCU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzQwNzVGMzEyNEZGMDI3MDA2OEYyMEEgLyogV0tBcnJheS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlBMTE4QTlGMjE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUxMkY1OEY1MTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTM1MUNBMTgwRjJD
Q0MwMEU1M0JFOSAvKiBJREJVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyRjU4
RjcxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDkyNDA0
ZTkyNGE0NDdmYjM3OTU2NTFmNWI1ZDcwNGUzZmM0YjM3M2MuLmY3MTVjMjZiYzdjMjc2YmZkNTg3
NGRiZWY4ZDllMTllYzA5NGRkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTIyOSw2ICsyMjksMTAgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVBhZ2VU
cmFuc2l0aW9uSWZOZWVkZWQoKSBvdmVycmlkZTsKIAorI2lmIFVTRShRVUlDS19MT09LKQorICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVRdWlja0xvb2tIYW5kbGUoV2ViQ29yZTo6UXVpY2tMb29r
SGFuZGxlJikgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIFdlYkZyYW1lKiBtX2ZyYW1lOwogICAg
IFJlZlB0cjxQbHVnaW5WaWV3PiBtX3BsdWdpblZpZXc7CiAgICAgYm9vbCBtX2hhc1NlbnRSZXNw
b25zZVRvUGx1Z2luVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYkZyYW1lTG9hZGVyQ2xpZW50SU9TLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViRnJhbWVMb2FkZXJDbGllbnRJ
T1MubW0KaW5kZXggYWRlYmFmZGEzYmE4ODVlOWI2YjczMWFhZmNiODE0NmY5YTAyOWUzYy4uYTAz
YTJjYmQxZWMxNTkwNTdiNzg2Nzc3YjI4YWM2MjM5ZWI0YTBhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViRnJhbWVMb2FkZXJDbGll
bnRJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViRnJhbWVMb2FkZXJDbGllbnRJT1MubW0KQEAgLTMwLDYgKzMwLDEzIEBACiAKICNpbXBv
cnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KIAorI2lmIFVTRShRVUlDS19MT09LKQorI2lt
cG9ydCAiV2ViRnJhbWUuaCIKKyNpbXBvcnQgIldlYlBhZ2UuaCIKKyNpbXBvcnQgIldlYlF1aWNr
TG9va0hhbmRsZUNsaWVudC5oIgorI2ltcG9ydCA8V2ViQ29yZS9RdWlja0xvb2suaD4KKyNlbmRp
ZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01
MCw2ICs1NywyMCBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y29ubmVjdGlvblByb3BlcnRpZXMoRG9jdW1lbnRMbwogICAgIHJldHVybiBudWxscHRy
OwogfQogCisjaWYgVVNFKFFVSUNLX0xPT0spCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aWRDcmVhdGVRdWlja0xvb2tIYW5kbGUoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlJiBoYW5kbGUp
Cit7CisgICAgaWYgKCFtX2ZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghd2ViUGFn
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaGFuZGxlLnNldENsaWVudChXZWJRdWlja0xvb2tI
YW5kbGVDbGllbnQ6OmNyZWF0ZShoYW5kbGUsIHdlYlBhZ2UtPnBhZ2VJRCgpKSk7Cit9CisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wZjgwODU1ZThkMWY5MDVhMjdlZDIxYmYxZjI4M2I5NDVlNDQ4NTE3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUXVp
Y2tMb29rSGFuZGxlQ2xpZW50LmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5oIgor
CisjaWYgVVNFKFFVSUNLX0xPT0spCisKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1F1aWNrTG9vay5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50OjpXZWJR
dWlja0xvb2tIYW5kbGVDbGllbnQoY29uc3QgV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlJiBoYW5k
bGUsIHVpbnQ2NF90IHBhZ2VJRCkKKyAgICA6IG1fZmlsZU5hbWUoaGFuZGxlLnByZXZpZXdGaWxl
TmFtZSgpKQorICAgICwgbV91dGkoaGFuZGxlLnByZXZpZXdVVEkoKSkKKyAgICAsIG1fcGFnZUlE
KHBhZ2VJRCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9m
aWxlTmFtZSwgbV91dGkpLCBtX3BhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUXVpY2tMb29rSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQoreworICAg
IG1fZGF0YS5hcHBlbmQoZGF0YUFycmF5KTsKK30KKwordm9pZCBXZWJRdWlja0xvb2tIYW5kbGVD
bGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUobV9kYXRhKSwgbV9wYWdlSUQpOworICAgIG1fZGF0YS5jbGVhcigpOwor
fQorCit2b2lkIFdlYlF1aWNrTG9va0hhbmRsZUNsaWVudDo6ZGlkRmFpbCgpCit7CisgICAgbV9k
YXRhLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNF
KFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhjMzU2ZmZjYWYwYThjYTI1NjcyY2Y0OTE5MjI2MTk0YWQyYmYyMmMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuaApAQCAtMCwwICsxLDY3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnRfaAorI2RlZmluZSBXZWJRdWlj
a0xvb2tIYW5kbGVDbGllbnRfaAorCisjaWYgVVNFKFFVSUNLX0xPT0spCisKKyNpbmNsdWRlICJR
dWlja0xvb2tEb2N1bWVudERhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1F1aWNrTG9va0hhbmRs
ZUNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFF1aWNrTG9va0hh
bmRsZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZyYW1lOworCitjbGFz
cyBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6UXVpY2tMb29rSGFu
ZGxlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJRdWlja0xvb2tI
YW5kbGVDbGllbnQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpRdWlja0xvb2tIYW5kbGUmIGhhbmRs
ZSwgdWludDY0X3QgcGFnZUlEKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJRdWlja0xvb2tIYW5kbGVDbGllbnQoaGFuZGxlLCBwYWdlSUQpKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50KGNvbnN0IFdlYkNvcmU6OlF1aWNrTG9v
a0hhbmRsZSYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhQXJyYXkoQ0ZBcnJheVJlZikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIG92ZXJyaWRl
OworCisgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CisgICAgY29uc3QgU3RyaW5nIG1fdXRp
OworICAgIGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFF1aWNrTG9va0RvY3VtZW50RGF0
YSBtX2RhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShR
VUlDS19MT09LKQorCisjZW5kaWYgLy8gV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50X2gK
</data>
<flag name="review"
          id="254608"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>