<?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>207221</bug_id>
          
          <creation_ts>2020-02-04 13:16:58 -0800</creation_ts>
          <short_desc>Implement the remote ImageBuffer</short_desc>
          <delta_ts>2020-03-02 17:21:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>207233</dependson>
          <blocked>204955</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>jsbell</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mkwst</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>noam</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1614691</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-04 13:16:58 -0800</bug_when>
    <thetext>Add the new interfaces RemoteImageBuffer and RemoteImageBufferProxy to WebKit. These classes will be responsible for handling the communications of the ImageBuffer parts between the WebProcess and the GPUProcess. No ImageBuffer backend operations will be handled by these objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614693</commentid>
    <comment_count>1</comment_count>
      <attachid>389695</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-04 13:22:26 -0800</bug_when>
    <thetext>Created attachment 389695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614712</commentid>
    <comment_count>2</comment_count>
      <attachid>389701</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-04 13:58:17 -0800</bug_when>
    <thetext>Created attachment 389701
Patch  for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622879</commentid>
    <comment_count>3</comment_count>
      <attachid>391709</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-25 18:13:07 -0800</bug_when>
    <thetext>Created attachment 391709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622923</commentid>
    <comment_count>4</comment_count>
      <attachid>391726</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-26 00:18:13 -0800</bug_when>
    <thetext>Created attachment 391726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623011</commentid>
    <comment_count>5</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-26 08:18:57 -0800</bug_when>
    <thetext>NOTE 1: The two parts of the remote ImageBuffer: RemoteImageBuffer and RemoteImageBufferProxy, are connected by the the RemoteImageBufferChannel and RemoteImageBufferChannelProxy.

NOTE 2: RemoteImageBufferChannel can be merged into RemoteImageBuffer and similarly RemoteImageBufferChannelProxy can be merged into RemoteImageBufferProxy. But in this case the IPC communications code will be in the header files of RemoteImageBuffer and RemoteImageBufferProxy because they are template classes.

NOTE 3: Two singletons can be created to handle the IPC communications of all the remote ImageBuffers. But this will be bring back RemoteRenderingBackend which Sam did not like in https://bugs.webkit.org/show_bug.cgi?id=207134. RemoteRenderingBackend will be the singleton for receiving the RemoteImageBuffer in the WebProcess side.

NOTE 4: I made GPUConnection and GPUConnectionToWebProcess be the singletons for receiving all remote ImageBuffer IPC communication. I added a MessageReceiverMap to each of them. Both RemoteImageBufferChannel and RemoteImageBufferChannelProxy register themselves as MessageReceivers in their constructors. And they both unregister themselves in their destructors. Both GPUConnection and GPUConnectionToWebProcess dispatch the messages to the appropriate remote ImageBuffer. So I think adding another dispatcher between the GPU connection and the remote ImageBuffer will not add any value. GPUConnection will dispatch messages to RemoteRenderingBackend and RemoteRenderingBackend will dispatch messages to RemoteImageBuffer.

NOTE 5: I was not sure if adding RemoteRenderingBackendProxy to GPUConnectionToWebProcess is the right thing to do or not since the WebProcess does not have RemoteRenderingBackend. I could have made GPUConnectionToWebProcess be responsible for creating and releasing the RemoteImageBufferProxy. But I followed what was done for media in GPUConnectionToWebProcess. But I think we should choose a different name for RemoteRenderingBackendProxy. Suggestions are: RemoteImageBufferProxyPool ImageBufferPool, RemoteImageBufferProxyFactory, ImageBufferFactory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623015</commentid>
    <comment_count>6</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-26 08:28:16 -0800</bug_when>
    <thetext>NOTE 6: RemoteImageBuffer and RemoteImageBufferProxy are backed by a dummy backend: ImageBufferIOSurfaceBackend, which is not the intended behavior. So in this patch RemoteImageBuffer and RemoteImageBufferProxy will create two separate backends and flushing the drawing context will happen in the WebProcess. This will be fixed after adding the shareable ImageBufferBackend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623067</commentid>
    <comment_count>7</comment_count>
      <attachid>391726</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-02-26 11:08:10 -0800</bug_when>
    <thetext>Comment on attachment 391726
Patch

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

Seems OK to me, let&apos;s see what smfr says.

The IPC changes are a bit surprising to be in this patch, but S_OK.

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferChannel.cpp:73
&gt; +    // FIXME: Delete this function when messages are addded to RemoteImageBufferChannel.messages.in.

Lots of &quot;addded&quot; (spelling!). But instead of fixing you can probably just elide this. The compiler will tell you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623089</commentid>
    <comment_count>8</comment_count>
      <attachid>391726</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-02-26 11:47:49 -0800</bug_when>
    <thetext>Comment on attachment 391726
Patch

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

&gt; Source/WebCore/page/ChromeClient.h:308
&gt; +    virtual std::unique_ptr&lt;ImageBuffer&gt; createImageBuffer(const FloatSize&amp;, RenderingMode, float, ColorSpace) const { ASSERT_NOT_REACHED(); return nullptr; }

Can this be pure virtual instead of asserting?

&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:213
&gt;      if (decoder.messageReceiverName() == Messages::RemoteMediaPlayerManagerProxy::messageReceiverName()) {
&gt;          remoteMediaPlayerManagerProxy().didReceiveMessageFromWebProcess(connection, decoder);
&gt; -        return;
&gt; +        return true;
&gt;      } else if (decoder.messageReceiverName() == Messages::RemoteMediaPlayerProxy::messageReceiverName()) {
&gt;          remoteMediaPlayerManagerProxy().didReceivePlayerMessage(connection, decoder);
&gt; -        return;
&gt; +        return true;
&gt;      } else if (decoder.messageReceiverName() == Messages::RemoteMediaResourceManager::messageReceiverName()) {
&gt;          remoteMediaResourceManager().didReceiveMessage(connection, decoder);
&gt; -        return;
&gt; +        return true;
&gt;      }

All these string comparisons are nuts.

&gt; Source/WebKit/GPUProcess/graphics/RemoteImageBufferProxy.h:36
&gt; +class RemoteImageBufferProxy : public WebCore::ConcreteImageBuffer&lt;BackendType&gt;, public RemoteImageBufferChannelProxy {

Does this mean a per-image-buffer thing is an IPC message receiver? I thought we were going to avoid this.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackendProxy.cpp:85
&gt; +    if (!m_imageBufferMap.contains(imageBufferIdentifier)) {
&gt; +        ASSERT_NOT_REACHED();
&gt; +        return;
&gt; +    }
&gt; +    m_imageBufferMap.remove(imageBufferIdentifier);

This is two hash lookups. You could reduce it to one using find().

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackendProxy.h:37
&gt; +class RemoteRenderingBackendProxy : private IPC::MessageReceiver {

The &quot;backend&quot; in the name makes me confused with ImageBufferBackend. This is more like a RemoteRenderingController, right? Or RemoteImageBufferRenderingController. It knows about ImageBuffers, not ImageBufferBackends.

It&apos;s also hard to tell from the name (and the file location) whether this is the GPU process side or the Web process side. I wonder if we should make that explicit in the name (GPURemote... WebRemote...).

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBuffer.h:36
&gt; +class RemoteImageBuffer : public WebCore::DisplayList::ImageBuffer&lt;BackendType&gt;, public RemoteImageBufferChannel {

Same comment about this being a channel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623943</commentid>
    <comment_count>9</comment_count>
      <attachid>391726</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-02-28 06:34:06 -0800</bug_when>
    <thetext>Comment on attachment 391726
Patch

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

&gt; Source/WebCore/html/HTMLCanvasElement.cpp:899
&gt; +    bool usesRemoteDrawing = false;

It seems really unfortunate that this leaks down to WebCore like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624346</commentid>
    <comment_count>10</comment_count>
      <attachid>392081</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-29 17:04:07 -0800</bug_when>
    <thetext>Created attachment 392081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624651</commentid>
    <comment_count>11</comment_count>
      <attachid>392168</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-03-02 11:52:10 -0800</bug_when>
    <thetext>Created attachment 392168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624699</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-02 13:11:58 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 392168:

editing/spelling/spellcheck-paste-continuous-disabled.html bug 208016 (authors: g.czajkowski@samsung.com and mark.lam@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624701</commentid>
    <comment_count>13</comment_count>
      <attachid>392168</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-02 13:12:45 -0800</bug_when>
    <thetext>Comment on attachment 392168
Patch

Clearing flags on attachment: 392168

Committed r257730: &lt;https://trac.webkit.org/changeset/257730&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624702</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-02 13:12:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624703</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-02 13:13:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/59964463&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624857</commentid>
    <comment_count>16</comment_count>
      <attachid>391726</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-03-02 17:21:51 -0800</bug_when>
    <thetext>Comment on attachment 391726
Patch

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

&gt;&gt; Source/WebCore/html/HTMLCanvasElement.cpp:899
&gt;&gt; +    bool usesRemoteDrawing = false;
&gt; 
&gt; It seems really unfortunate that this leaks down to WebCore like this.

This has been fixed in &lt;https://trac.webkit.org/changeset/257677&gt;. WebCore does not have to know whether rendering on canvas is remote or local.

&gt;&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:213
&gt;&gt;      }
&gt; 
&gt; All these string comparisons are nuts.

I think the problem is the media messages receivers are lazily created. So receiving the message for the first time will cause the appropriate receiver to be created.

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteImageBufferProxy.h:36
&gt;&gt; +class RemoteImageBufferProxy : public WebCore::ConcreteImageBuffer&lt;BackendType&gt;, public RemoteImageBufferChannelProxy {
&gt; 
&gt; Does this mean a per-image-buffer thing is an IPC message receiver? I thought we were going to avoid this.

This was fixed in &lt;https://trac.webkit.org/changeset/257730&gt;. RemoteRenderingBackend and RemoteRenderingBackendProxy became the entry points for all the RemoteImageBuffer/RemoteImageBufferProxy messages. But this adds a new level of message dispatching. The flow of messages now is:

GPUProcessConnection -&gt; RemoteRenderingBackend -&gt; RemoteImageBuffer
GPUConnectionToWebProcess -&gt; RemoteRenderingBackendProxy -&gt; RemoteImageBufferProxy

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackendProxy.cpp:85
&gt;&gt; +    m_imageBufferMap.remove(imageBufferIdentifier);
&gt; 
&gt; This is two hash lookups. You could reduce it to one using find().

This is fixed in &lt;https://trac.webkit.org/changeset/257542&gt;. We use the return of the remove method to know whether the element was in the hash map or not.

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackendProxy.h:37
&gt;&gt; +class RemoteRenderingBackendProxy : private IPC::MessageReceiver {
&gt; 
&gt; The &quot;backend&quot; in the name makes me confused with ImageBufferBackend. This is more like a RemoteRenderingController, right? Or RemoteImageBufferRenderingController. It knows about ImageBuffers, not ImageBufferBackends.
&gt; 
&gt; It&apos;s also hard to tell from the name (and the file location) whether this is the GPU process side or the Web process side. I wonder if we should make that explicit in the name (GPURemote... WebRemote...).

I think having a name not tide to the ImageBuffer is more appropriate. The plan is to cache the decoded image and the fonts on the GPUProcess side and later refer to them by IDs or handles. RemoteRenderingBackend will be the place to manage this caching mechanism.

Also after bringing back the RemoteRenderingBack in &lt;https://trac.webkit.org/changeset/257583&gt;, there should be no confusion about which owns this class. I think the notion is: RemoteClassName means it belongs to WebProcess and RemoteClassNameProxy means it belongs to the GPUProcess.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBuffer.h:36
&gt;&gt; +class RemoteImageBuffer : public WebCore::DisplayList::ImageBuffer&lt;BackendType&gt;, public RemoteImageBufferChannel {
&gt; 
&gt; Same comment about this being a channel.

Fixed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389695</attachid>
            <date>2020-02-04 13:22:26 -0800</date>
            <delta_ts>2020-02-25 18:13:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207221-20200204132224.patch</filename>
            <type>text/plain</type>
            <size>479303</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNmNGYxNTAyYjcxM2I5
ZWYyZTc0NjUyYmQ4MGFlOTI0Nzc3ODllNy4uMTA4OGY4OTMxZGI4NjhkNWM4NjE3NjQ4NzExM2M0
OGIzZGZiM2MzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4NSBAQAorMjAyMC0wMi0wNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCB0aGUgcmVtb3RlIFJlbmRlcmluZ0JhY2tlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzE5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4dGVuZCBSZW5kZXJpbmdNb2RlIHRvIGluY2x1ZGUg
bmV3IGVudW0gdmFsdWVzIGZvciBjcmVhdGluZyByZW1vdGUKKyAgICAgICAgSW1hZ2VCdWZmZXIg
dHlwZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdCYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdCYWNrZW5kLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oOgorCisyMDIwLTAyLTAzICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50
cm9kdWNlIFJlbmRlcmluZ0JhY2tlbmQgYW5kIG1ha2UgaXQgdGhlIGNyZWF0b3Igb2YgSW1hZ2VC
dWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzEzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bmRlcmluZ0JhY2tlbmQgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhlIEltYWdl
QnVmZmVyLiBJbiBhCisgICAgICAgIGZvbGxvd2luZyBwYXRjaCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kIHdpbGwgYmUgaW50cm9kdWNlZC4gSXQnbGwgaW5oZXJpdAorICAgICAgICBSZW5kZXJpbmdC
YWNrZW5kIGFuZCBsaXZlIGluIFdlYktpdC4gSXQgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgY3Jl
YXRpbmcKKyAgICAgICAgdGhlIFJlbW90ZUltYWdlQnVmZmVyLiBUaGUgZ29hbCBmb3IgUmVuZGVy
aW5nQmFja2VuZCBhbmQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZAorICAgICAgICBpcyB0byBpbnRl
cmFjdCB3aXRoIFJlbW90ZUltYWdlQnVmZmVyIHNlYW1sZXNzbHkgaW4gdGhlIGNhbGxlciBzaWRl
LgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFn
ZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzaGFyZWRSZW5kZXJpbmdC
YWNrZW5kIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2Uv
Q2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmNyZWF0ZVJl
bmRlcmluZ0JhY2tlbmQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0dWFsSW1hZ2VCdWZmZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9S
ZW5kZXJpbmdCYWNrZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJpbmdC
YWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyaW5nQmFja2VuZDo6c2hh
cmVkUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVy
aW5nQmFja2VuZC5oOiBBZGRlZC4KKworMjAyMC0wMi0wMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIENyZWF0ZSBhIG5ldyBJbWFnZUJ1ZmZl
ciB0eXBlIGZvciBkcmF3aW5nIG9uIGEgRGlzcGxheUxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzEwOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIgaW5oZXJp
dHMgSW1hZ2VCdWZmZXIgYW5kIERyYXdpbmdDb250ZXh0LiBUaGUgCisgICAgICAgIGRyYXdpbmcg
Y29udGV4dCB3aWxsIGJlIHRoZSBjb250ZXh0IG9mIHRoZSBkaXNwbGF5IGxpc3QuIFRoZSBJbWFn
ZUJ1ZmZlcgorICAgICAgICBvcGVyYXRpb25zIHdpbGwgZW5zdXJlIHRoZSByZWNvcmRlZCBkaXNw
bGF5LWxpc3QgaXMgcmVwbGF5ZWQgYmFjayBiZWZvcmUKKyAgICAgICAgZ2V0dGluZyB0aGUgcGl4
ZWxzIG9mIHRoZSBJbWFnZUJ1ZmZlckJhY2tlbmQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlQ29udGV4dDJk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpzZXRVc2VzRGlzcGxheUxp
c3REcmF3aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpzZXRUcmFj
a3NEaXNwbGF5TGlzdFJlcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVu
dDo6ZGlzcGxheUxpc3RBc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZh
c0VsZW1lbnQ6OnJlcGxheURpc3BsYXlMaXN0QXNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAg
ICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbnRleHR1YWxJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dHVhbElt
YWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dHVhbEltYWdlQnVm
ZmVyOjpmbHVzaENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dHVhbEltYWdlQnVm
ZmVyOjpjb3B5TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dHVhbEltYWdl
QnVmZmVyOjpjb3B5SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dHVhbEltYWdlQnVm
ZmVyOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHR1YWxJbWFnZUJ1ZmZlcjo6ZHJh
d1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dHVhbEltYWdlQnVmZmVyOjpzaW5r
SW50b05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHR1YWxJbWFnZUJ1ZmZl
cjo6c2lua0ludG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0dWFsSW1hZ2VCdWZm
ZXI6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dHVhbEltYWdlQnVm
ZmVyOjpjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHR1
YWxJbWFnZUJ1ZmZlcjo6dHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdEltYWdlQnVmZmVyOjpEaXNwbGF5TGlzdEltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6On5EaXNwbGF5TGlzdEltYWdlQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdp
bmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpmbHVzaERyYXdpbmdD
b250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250
ZXh0OjpEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d2luZ0NvbnRleHQ6OmNvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdpbmdDb250ZXh0OjpkaXNwbGF5TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd2luZ0NvbnRleHQ6OmRpc3BsYXlMaXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6cmVwbGF5RGlzcGxheUxpc3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpzZXRU
cmFja3NEaXNwbGF5TGlzdFJlcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd2luZ0NvbnRleHQ6OnJlcGxheURpc3BsYXlMaXN0KToKKworMjAyMC0wMS0zMSAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRp
ZmZlcmVudCBiYWNrLWVuZHMgZm9yIEltYWdlQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNDgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbWFnZUJ1ZmZlciB3aWxsIGJlIHJlLWZhY3RvcmVk
IHRvIGRlY291cGxlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpY3MgYW5kCisgICAgICAgIHRoZSBiYWNr
LWVuZCBkZXRhaWxzIGZyb20gdGhlIGludGVyZmFjZSAiSW1hZ2VCdWZmZXIiLgorCisgICAgICAg
IEEgY2xhc3MgaGllcmFyY2h5IGZvciB0aGUgSW1hZ2VCdWZmZXJCYWNrZW5kIHdpbGwgYWRkZWQg
dG8gYWxsb3cgY29kZQorICAgICAgICBzaGFyaW5nIGFuZCB0byBzcGxpdCB0aGUgY29kZSBhY2Nv
cmRpbmcgdG8gdGhlIHBsYXRmb3JtIGFuZCB0aGUgYmFjay1lbmQKKyAgICAgICAgZGV0YWlscy4K
KworICAgICAgICBJbWFnZUJ1ZmZlciB3aWxsIGJlIGtlcHQgaW50ZXJmYWNlIHdpdGggdGhlIHJl
c3Qgb2YgdGhlIGNvZGUgYnV0IGRpZmZlcmVudAorICAgICAgICBiYWNrLWVuZHMgd2lsbCBiZSBj
cmVhdGVkLiBDb250ZXh0dWFsSW1hZ2VCdWZmZXIgaXMgYSB0ZW1wbGF0ZSBjbGFzcyB3aGljaAor
ICAgICAgICBpbmhlcml0cyBJbWFnZUJ1ZmZlciBhbmQgd2lsbCAgYWN0IGFzIGEgYnJpZGdlIHRv
IHRoZSBjb25jcmV0ZQorICAgICAgICBJbWFnZUJ1ZmZlckJhY2tlbmQuCisKKyAgICAgICAgQmFz
ZWQgb24gdGhlIFJlbmRlcmluZ01vZGUsIGEgQ29udGV4dHVhbEltYWdlQnVmZmVyPEJhY2tlbmRU
eXBlPiB3aWxsCisgICAgICAgIGJlIGNyZWF0ZWQuIEluc3RlYWQgb2YgY2hlY2tpbmcgdGhlIHJl
bmRlcmluZ01vZGUgaW4gbWFueSBwbGFjZXMgb2YgdGhlCisgICAgICAgIGNvZGUgYW5kIGluc3Rl
YWQgb2YgYW5kIHVzaW5nIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzLCBhbGwgdGhlc2UgZGVjaXNp
b25zCisgICAgICAgIHdpbGwgYmUgbWFkZSBpbiB0aGUgY29uY3JldGUgSW1hZ2VCdWZmZXJCYWNr
ZW5kLgorCisgICAgICAgIFRoaXMgcmUtZmFjdG9yaW5nIHdpbGwgYWxsb3cgY3JlYXRpbmcgbmV3
IHR5cGVzIG9mIEltYWdlQnVmZmVycyBiYWNrZWQgYnkKKyAgICAgICAgbmV3IEltYWdlQnVmZmVy
QmFja2VuZHMuIFRoZXNlIG5ldyBJbWFnZUJ1ZmZlckJhY2tlbmRzIHdpbGwgaW1wbGVtZW50Cisg
ICAgICAgIERpc3BsYXlMaXN0IGRyYXdpbmcgYW5kIHN5bmNocm9uaXplIHJlbW90ZSByZW5kZXJp
bmcuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtQXBwbGVX
aW4uY21ha2U6CisgICAgICAgICogUGxhdGZvcm1GVFcuY21ha2U6CisgICAgICAgICogUGxhdGZv
cm1NYWMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9DYW52YXNCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0Jhc2U6OnNldEltYWdlQnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9DYWlyby5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9Tb3Vy
Y2VzQ2Fpcm8udHh0OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cDoKKworICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lUmVzcGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db250ZXh0dWFsSW1hZ2VCdWZmZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0dWFsSW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0dWFs
SW1hZ2VCdWZmZXI6OkNvbnRleHR1YWxJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZXh0dWFsSW1hZ2VCdWZmZXI6OmVuc3VyZUJhY2tlbmQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGV4dHVhbEltYWdlQnVmZmVyOjpwdXRJbWFnZURhdGEpOgorICAgICAgICBBIGJy
aWRnZSBjbGFzcyB0byBJbWFnZUJ1ZmZlckJhY2tlbmQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OnRvQkdSQURhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdlbmVyaWNDb252ZXJ0VG9MdW1pbmFuY2VNYXNrKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb252ZXJ0VG9MdW1pbmFuY2VN
YXNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwbGF0Zm9ybUxh
eWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5
VG9QbGF0Zm9ybVRleHR1cmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6Om1lbW9yeUNvc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXI6OmV4dGVybmFsTWVtb3J5Q29zdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3UGF0dGVybik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0SW1hZ2VEYXRhKToKKyAgICAgICAgKCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6aW50ZXJuYWxTaXplIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpsb2dpY2FsU2l6ZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cmVzb2x1dGlvblNj
YWxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpiYXNl
VHJhbnNmb3JtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIGFsbCB0aGUgYmFjay1l
bmQgYW5kIHBsYXRmb3JtcyBkZXRhaWxzLiBVbmlmeSB0aGUgaW50ZXJmYWNlIHN1Y2gKKyAgICAg
ICAgdGhhdCBJbWFnZUJ1ZmZlciBkb2VzIG5vdCBpbmNsdWRlIHByZXByb2Nlc3NvciBkaXJlY3Rp
dmVzLiBBbGwgdGhlIAorICAgICAgICBwbGF0Zm9ybSBzcGVjaWZpY3Mgd2lsbCBiZSBpbiBJbWFn
ZUJ1ZmZlckJhY2tlbmQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2Vu
ZDo6SW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFj
a2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6c2lua0ludG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlckJhY2tlbmQ6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJCYWNrZW5kOjpjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQmFja2VuZDo6dG9CR1JBRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpj
b3B5UHJlbXVsdGlwbGllZFRvUHJlbXVsdGlwbGllZCk6CisgICAgICAgIChXZWJDb3JlOjpjb3B5
UHJlbXVsdGlwbGllZFRvVW5wcmVtdWx0aXBsaWVkKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlV
bnByZW11bHRpcGxpZWRUb1ByZW11bHRpcGxpZWQpOgorICAgICAgICAoV2ViQ29yZTo6Y29weUZ1
bmN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb3B5SW1hZ2VQ
aXhlbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRJ
bWFnZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpw
dXRJbWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6Zmx1
c2hDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6bG9naWNh
bFNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpiYWNr
ZW5kU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnJl
c29sdXRpb25TY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tl
bmQ6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNr
ZW5kOjpiYXNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
QmFja2VuZDo6bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OmV4dGVybmFsTWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6Y29weVRvUGxhdGZvcm1UZXh0dXJlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6Ynl0ZXNQZXJSb3cgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpiYWNrZW5kQ29sb3JGb3Jt
YXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JhY2tl
bmRDb29yZGluYXRlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tl
bmQ6OmxvZ2ljYWxSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFj
a2VuZDo6YmFja2VuZFJlY3QgY29uc3QpOgorICAgICAgICBBIGJhc2UgY2xhc3Mgd2hpY2ggZGVm
aW5lcyBzb21lICBkZWZhdWx0IGJlaGF2aW9ycyBzbyBub3QgYWxsIHRoZSBwbGF0Zm9ybXMKKyAg
ICAgICAgaGF2ZSB0byBpbXBsZW1lbnQgdGhlbS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3
U2hhZG93QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdTaGFkb3dMYXllckJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd1NoYWRvd0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhaXJvOjpmaWxsU2hhZG93QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb0JhY2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kOjpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQ6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQ2Fpcm9CYWNrZW5kOjp0b0RhdGFVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6cGxhdGZvcm1UcmFuc2Zvcm1D
b2xvclNwYWNlKToKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpj
bGVhclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFj
ZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvR0xT
dXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ6On5JbWFnZUJ1ZmZl
ckNhaXJvR0xTdXJmYWNlQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJv
R0xTdXJmYWNlQmFja2VuZDo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kOjpjcmVhdGVDb21wb3NpdG9yQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5k
Ojpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fp
cm9HTFN1cmZhY2VCYWNrZW5kOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQuaDog
QWRkZWQuCisgICAgICAgIEFuIGFjY2VsZXJhdGVkIENhaXJvIGJhY2stZW5kLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJh
Y2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJD
YWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmg6IEFkZGVk
LgorICAgICAgICBBbiB1bmFjY2VsZXJhdGVkIENhaXJvIGJhY2stZW5kLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQ6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNvbnRleHQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpieXRlc1BlclJvdyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNv
cHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjp0b0JHUkFEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6
Z2V0SW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9T
dXJmYWNlQmFja2VuZDo6cHV0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgQSBDYWlybyBzdXJmYWNlIGJhc2UgY2xhc3MgYmFjay1lbmQuCisKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb250ZXh0Q29sb3JTcGFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0dXBDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2lua0ludG9JbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhdyk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmJhc2VUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0RhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvRGF0YVVSTCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjptYWtlVkltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlJbWFn
ZVBpeGVsc0FjY2VsZXJhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNr
ZW5kOjpjb3B5SW1hZ2VQaXhlbHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmg6IEFkZGVkLgorICAgICAgICBBIGJhc2UgY2xhc3Mg
Zm9yIGFsbCBDRyBiYWNrLWVuZHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvbnRleHQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvcHlO
YXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZDo6dG9CR1JBRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZDo6Z2V0SW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpwdXRJbWFnZURhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6IEFkZGVkLgor
ICAgICAgICBBbiB1bmFjY2VsZXJhdGVkIENHIGJhY2stZW5kLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwOiBSZW1vdmVkLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNh
bGN1bGF0ZUJhY2tlbmRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb250ZXh0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Zmx1c2hD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ6OmV4dGVybmFsTWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmJ5dGVzUGVyUm93IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6YmFja2VuZENvbG9yRm9ybWF0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjp0b0JHUkFEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Z2V0SW1hZ2VEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
cHV0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQuaDogQWRkZWQuCisgICAgICAgIEFuIElPU3VyZmFjZSBhY2NlbGVy
YXRlZCBDRyBiYWNrLWVuZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6dXBk
YXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
SW1hZ2VCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJE
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZm
ZXJEYXRhRGlyZWN0MkQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpJbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZDo6Y29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJE
QmFja2VuZDo6Zmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Qml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxlQml0bWFwKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpkcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpkcmF3UGF0dGVybik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6dG9EYXRhVVJM
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjp0
b0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tl
bmQ6OnRvQkdSQURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQ6OmdldEltYWdlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6cHV0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuaDogQWRkZWQuCisgICAg
ICAgIFJlbW92ZSBEaXJlY3QyRCBpbXBsZW1lbnRhdGlvbiBmb3IgSW1hZ2VCdWZmZXIuIEludHJv
ZHVjZSAKKyAgICAgICAgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQgaW5zdGVhZC4KKworICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrR1N0cmVhbWVyVmlkZW9D
YXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldyYXBwZWRNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZTo6dXBkYXRlU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5n
Q29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZCk6CisKKzIwMjAtMDEtMjggIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIEltYWdlQnVmZmVy
OjpnZXRJbWFnZURhdGEoKSBhbmQgcHV0SW1hZ2VEYXRhKCkgcmV0dXJuIGFuZCB0YWtlIEltYWdl
RGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2
NjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLS0g
Q29tYmluZSBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKCkgYW5kIGdldFBy
ZW11bHRpcGxpZWRJbWFnZURhdGEoKQorICAgICAgICAgICBpbiBvbmUgZnVuY3Rpb24gYW5kIG5h
bWUgaXQgZ2V0SW1hZ2VEYXRhKCk7CisKKyAgICAgICAgLS0gTWFrZSBnZXRJbWFnZURhdGEoKSBy
ZXR1cm5zIGFuIFJlZlB0cjxJbWFnZURhdGE+IHNpbmNlIHRoZSBjYW52YXMgY29kZQorICAgICAg
ICAgICB1c2VkIHRvIGVuY2Fwc3VsYXRlIHRoZSByZXR1cm5lZCBVaW50OENsYW1wZWRBcnJheSBp
bnRvIGFuIEltYWdlRGF0YQorICAgICAgICAgICBhbmQgc2VuZCBpdCB0byBKYXZhU2NyaXB0Q29y
ZS4KKworICAgICAgICAtLSBSZW5hbWUgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSgpIHRvIElt
YWdlQnVmZmVyOjpwdXRJbWFnZURhdGEoKSBhbmQKKyAgICAgICAgICAgbWFrZSBpdCB0YWtlIGFu
IEltYWdlRGF0YSBzaW5jZSB0aGUgYnl0ZSBhcnJheSBoYXMgdG8gYmUgYXNzb2NpYXRlZAorICAg
ICAgICAgICB3aXRoIGFuIEludFNpemUgYW5kIHNlcGFyYXRpbmcgdGhlbSBkb2VzIG5vdCBsb29r
IGEgZ29vZCBkZXNpZ24uCisKKyAgICAgICAgLS0gUmVtb3ZlIHRoZSBlbnVtIEltYWdlQnVmZmVy
OjpDb29yZGluYXRlU3lzdGVtLiBBbGwgdGhlIGNhbGxlcnMgbmVlZCB0bworICAgICAgICAgICBw
YXNzIHJlY3RhbmdsZXMgYW5kIHNpemVzIGluIGxvZ2ljYWwgY29vcmRpbmF0ZXMuIFRoZSBJbWFn
ZURhdGEgaGFzIHRvCisgICAgICAgICAgIGJlIHNjYWxlZCBhY2NvcmRpbmcgdG8gdGhlIEltZ2VC
dWZmZXI6OnJlc29sdXRpb25TY2FsZSgpLiAKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6
OmR1bXBJbWFnZUJpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6
cmVhZEltYWdlQml0bWFwKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmdldEltYWdlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwdXRJbWFnZURhdGEpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VD
b25zb2xlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50Ojpz
Y3JlZW5zaG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29udmVydFRvTHVtaW5hbmNlTWFzayk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dHJhbnNmb3JtQ29sb3JTcGFjZSk6IERl
bGV0ZWQuCisgICAgICAgIE1vdmUgdGhpcyBmdW5jdGlvbiB0byBJbWFnZUJ1ZmZlckNhaXJvLmNw
cC4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdlbmVyaWNDb252ZXJ0VG9MdW1p
bmFuY2VNYXNrKTogRGVsZXRlZC4KKyAgICAgICAgY29udmVydFRvTHVtaW5hbmNlTWFzaygpIGFu
ZCBnZW5lcmljQ29udmVydFRvTHVtaW5hbmNlTWFzaygpIGFyZSBub3QgCisgICAgICAgIG92ZXJy
aWRkZW4gYnkgYW55IHBsYXRmb3JtLiBTbyBkZWxldGUgZ2VuZXJpY0NvbnZlcnRUb0x1bWluYW5j
ZU1hc2soKSBhbmQKKyAgICAgICAgbW92ZSBpdHMgYm9keSB0byBjb252ZXJ0VG9MdW1pbmFuY2VN
YXNrKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpk
cmF3Q29uc3VtaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwdXRJbWFnZURh
dGEpOgorICAgICAgICBNYWtlIHRoZSBwcml2YXRlIGZ1bmN0aW9ucyBiZSBwdWJsaWMgYW5kIHJl
bW92ZSB0aGUgZnJpZW5kIGNsYXNzZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmJsdXJTaGFkb3dC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRyYW5zZm9ybUNvbG9yU3Bh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6Z2V0SW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpwdXRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SW1hZ2VEYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmxvZ2ljYWxVbml0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmJhY2tpbmdTdG9yZVVuaXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFy
cmF5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRJbWFnZURhdGEgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEltYWdlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9DRkRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdl
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0
Qnl0ZUFycmF5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6Omdl
dERhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oOgor
ICAgICAgICBBbGwgdGhlIHJlY3RhbmdsZXMgYW5kIHNpemVzIGhhdmUgdG8gYmUgcGFzc2VkIGlu
IGxvZ2ljYWwgY29vcmRpbmF0ZXMuIFRvCisgICAgICAgIGRlYWwgd2l0aCB0aGUgcGl4ZWxzJyBk
YXRhIHdlIG5lZWQgdG8gc2NhbGUgdGhlbSBieSB0aGUgcmVzb2x1dGlvblNjYWxlKCkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2Vt
ZW50TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVE
cm9wU2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKyAgICAgICAgVGhpcyB3YXMgdGhlIG9ubHkgcGxhY2Ugd2hpY2ggd2Fz
IHBhc3NpbmcgYSByZWN0YW5nbGUgaW4gYSB0aGUgYmFjay1lbmQKKyAgICAgICAgY29vcmRpbmF0
ZXMgYWxvbmcgd2l0aCBCYWNraW5nU3RvcmVDb29yZGluYXRlU3lzdGVtLiBJbnN0ZWFkIHdlIGNh
biBwYXNzCisgICAgICAgIHRoZSByZWN0YW5nbGUgaW4gbG9naWNhbCBjb29yZGluYXRlcyBhbmQg
dGhlbiB1c2UgSW1hZ2VEYXRhOjpzaXplKCkgc2luY2UKKyAgICAgICAgaXQgbXVzdCBiZSBzY2Fs
ZWQgd2l0aCByZXNvbHV0aW9uU2NhbGUoKSB3aGVuIHRoZSBJbWFnZURhdGEgaXMgY3JlYXRlZC4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmZvcmNlVmFsaWRQcmVNdWx0aXBsaWVkUGl4ZWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6aW1hZ2VCdWZmZXJSZXN1bHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWx0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRSZXN1bHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdl
UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlw
bGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZl
ckRhdGFEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6Omdl
dERhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0
MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0SW1hZ2VEYXRhIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwdXRJbWFnZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGll
ZEltYWdlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6cHV0Qnl0ZUFycmF5KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1No
YXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6CisK
IDIwMjAtMDItMDMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAg
Q3Jhc2ggaW4gV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGY4YzhjMzNhN2QzNGZhM2JmYmZkZTFmMzljZDg3YzE5YzViY2RjZWEuLjJkYmQxMzE2
YWUxNDI5NzVlNjM5MWYzYjg5OGRlODMxZGYxODI0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUx
IEBACisyMDIwLTAyLTA0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSByZW1vdGUgSW1hZ2VCdWZmZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzIyMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW90ZUltYWdlQnVmZmVy
IGFuZCBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yCisgICAg
ICAgIGhhbmRsaW5nIHRoZSBjb21tdW5pY2F0aW9ucyBvZiB0aGUgSW1hZ2VCdWZmZXIgcGFydHMg
YmV0d2VlbiBXZWJQcm9jZXNzCisgICAgICAgIGFuZCBHUFVQcm9jZXNzLgorCisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OlJl
bW90ZUltYWdlQnVmZmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlQnVmZmVyUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvUmVuZGVy
aW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OlJlbW90ZUltYWdlQnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6On5SZW1vdGVJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjptZXNzYWdlU2Vu
ZGVyRGVzdGluYXRpb25JRCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvUmVuZGVy
aW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZUltYWdlQnVmZmVyLm1lc3NhZ2VzLmluOiBB
ZGRlZC4KKworMjAyMC0wMi0wNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB0aGUgcmVtb3RlIFJlbmRlcmluZ0JhY2tlbmQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzE5OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0tIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQgd2lsbCBiZSBjcmVhdGVkIGJ5IFdlYkNocm9tZUNsaWVudCBhbmQg
b3duZWQgYnkKKyAgICAgICAgQ2hyb21lLiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlIHdpbGwgaGF2ZSBh
Y2Nlc3MgdG8gaXQgdGhyb3VnaCB0aGUgSG9zdFdpbmRvdworICAgICAgICBhcmd1bWVudC4gQWxs
IHR5cGVzIG9mIEltYWdlQnVmZmVyIHdpbGwgYmUgY3JlYXRlZCBieQorICAgICAgICBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcigpIG1ldGhvZC4gSW4tcHJvY2VzcyBJ
bWFnZUJ1ZmZlcgorICAgICAgICB0eXBlcyB3aWxsIGJlIGNyZWF0ZWQgYnkgUmVuZGVyaW5nQmFj
a2VuZDo6IGNyZWF0ZUltYWdlQnVmZmVyKCkuCisKKyAgICAgICAgLS0gUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5IHdpbGwgYmUgY3JlYXRlZCBhbmQgb3duZWQgYnkKKyAgICAgICAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAoV2ViS2l0
OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFja2VuZCk6Cisg
ICAgICAgIEFkZCBtZXRob2RzIGZvciBjcmVhdGluZyBhbmQgcmVsZWFzaW5nIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS4KKworICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01l
c3NhZ2UpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpt
ZXNzYWdlUmVjZWl2ZXJNYXApOgorICAgICAgICBBZGQgYSBNZXNzYWdlUmVjZWl2ZXJNYXAgdG8g
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBzbyBtZXNzYWdlcyBjYW4gYmUKKyAgICAgICAgZGlz
cGF0Y2hlZCB0byBpdHMgTWVzc2FnZVJlY2VpdmVycy4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgQWRkIHRoZSBh
dHRyaWJ1dGUgJ1dhbnRzRGlzcGF0Y2hNZXNzYWdlJy4KKyAgICAgICAgQWRkIG1lc3NhZ2VzIGZv
ciBjcmVhdGluZyBhbmQgcmVsZWFzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEIGNvbnN0KToKKworICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxl
YXNlSW1hZ2VCdWZmZXIpOgorICAgICAgICBBZGQgbWV0aG9kcyBmb3IgY3JlYXRpbmcgYW5kIHJl
bGVhc2luZyByZW1vdGUgSW1hZ2VCdWZmZXIgcHJveHkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNz
L1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL1JlbmRlcmluZ0Jh
Y2tlbmQvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAg
ICAgICAgQWRkIG1lc3NhZ2VzIGZvciBjcmVhdGluZyBhbmQgcmVsZWFzaW5nIHJlbW90ZSBJbWFn
ZUJ1ZmZlciBwcm94eS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaDoKKworICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICBJZiB0aGUgYXR0cmli
dXRlIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIGlzIGFkZGVkIHRvIHRoZSBtZXNzYWdlcy5pbiBmaWxl
LAorICAgICAgICBhIGNhbGwgdG8gJ2Rpc3BhdGNoTWVzc2FnZSgpJyB3aWxsIGJlIGFkZGVkIHRv
IGRpZFJlY2VpdmVNZXNzYWdlKCkgYW5kCisgICAgICAgIGEgY2FsbCB0byAnZGlzcGF0Y2hTeW5j
TWVzc2FnZSgpJyB3aWxsIGJlIGFkZGVkIHRvIGRpc3BhdGNoU3luY01lc3NhZ2UoKQorICAgICAg
ICBldmVuIGlmIG5vIG1lc3NhZ2VzIGFyZSBkZWZpbmVkIGluIG1lc3NhZ2VzLmluLgorCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICBBZGQgZW5jb2Rp
bmcgYW5kIGRlY29kaW5nIHN1cHBvcnQgZm9yIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYW5kIFJl
bmRlcmluZ01vZGUuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2Vz
Q29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJl
Y2VpdmVNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6
bWVzc2FnZVJlY2VpdmVyTWFwKToKKyAgICAgICAgQWRkIGEgTWVzc2FnZVJlY2VpdmVyTWFwIHRv
IEdQVVByb2Nlc3NDb25uZWN0aW9uIHNvIG1lc3NhZ2VzIGNhbiBiZQorICAgICAgICBkaXNwYXRj
aGVkIHRvIGl0cyBNZXNzYWdlUmVjZWl2ZXJzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgIEFkZCB0aGUgYXR0cmli
dXRlICdXYW50c0Rpc3BhdGNoTWVzc2FnZScuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9S
ZW5kZXJpbmdCYWNrZW5kL0ltYWdlQnVmZmVySWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAg
QWRkIGFuIE9iamVjdElkZW50aWZpZXIgZm9yIHJlbW90ZSBJbWFnZUJ1ZmZlci4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
IGNvbnN0KToKKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVh
dGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIENyZWF0ZXMgYWxsIHR5cGVzIG9mIEltYWdlQnVmZmVy
LiBGb3Igbm93IGl0IG9ubHkgY3JlYXRlcyB0aGUgaW4gcHJvY2VzcworICAgICAgICBSZW5kZXJp
bmdCYWNrZW5kLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L1JlbmRlcmluZ0JhY2tlbmQvUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaDogQWRkZWQuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlUmVuZGVyaW5nQmFja2Vu
ZCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaDoKKyAgICAgICAgQ3JlYXRlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgd2hpY2ggd2ls
bCBiZSBvd25lZCBieSB0aGUgQ2hyb21lLgorCisyMDIwLTAyLTAzICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgZGlmZmVyZW50IGJh
Y2stZW5kcyBmb3IgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNzA0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90IGNvbnN0KToKKwog
MjAyMC0wMi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtX
SzJdIFVzZSBwZXItVUlQcm9jZXNzIGRlZmF1bHQgY29va2llIHN0b3JhZ2UgZm9yIE1hYyBDYXRh
bHlzdCBhcHBzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA1MmIzNjQxMDk4OTY1OGQ0OWZjMjUwNjlk
MjA4MzA5NDVmMDY4ZDJiLi40ODYxZjI4ZmRiMDZmYmZiZjBjOTYxMjNkZTIwYzMxNDFkMWM5ZjUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEwNDMsNiArMTA0Myw3IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckhhc2gu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4
dHVhbEltYWdlQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EYXNoQXJyYXkuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0RlY29kaW5nT3B0aW9ucy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKQEAgLTEwOTQsNyArMTA5NSw3IEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckRhdGEuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VPYnNlcnZlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5o
CkBAIC0xMTI3LDEyICsxMTI4LDE0IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hF
QURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9QYXR0ZXJuLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3Bs
YXkuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1UZXh0VHJhY2suaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVWaWRlb1NhbXBsZS5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nQmFja2Vu
ZC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvUm91bmRlZFJlY3QuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5j
YXRvci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCBmNzEyOTI3Y2M5
MThmM2FiMGZlNzA4YThhYzAxN2JkMGYzY2Y5NDBkLi41ZDE3NzQzZWQzODQzMDExZmE4NmNlNTEx
YmU5MjkzMzA5OTI5MmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxl
V2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKQEAg
LTgzLDggKzgzLDcgQEAgaWYgKCR7VVNFX0RJUkVDVDJEfSkKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYWRpZW50RGlyZWN0MkQuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzTGF5ZXJEaXJlY3QyRC5jcHAKLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcAotICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAogICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURpcmVjdDJELmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKQEAgLTEzMiw4ICsxMzEsOSBAQCBlbHNlICgpCiAg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAogICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmNwcAotICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JhY2tlbmQuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZVNvdXJjZUNHV2luLmNwcApAQCAtMTc2LDcgKzE3Niw5IEBAIGVsc2UgKCkKIAogICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckRhdGFDRy5oCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCYWNrZW5kLmgKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQuaAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlclV0aWxpdGllc0NHLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9j
dW1lbnRJbWFnZS5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1GVFcuY21ha2UKaW5kZXggOWFiNDY4NzM5ZWYxMWZmNjA5Yjk2MjkyODhi
YjAxYjE2ZGE3MDJhYS4uZjRiOWI3Zjg4NjZiMTI0MWE4NTU3OWIyZTYxZjdiYWU1NDNkODc1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1GVFcuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1GVFcuY21ha2UKQEAgLTg0LDggKzg0LDcgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0V2luLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcAotICAgIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAKLSAgICBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZURpcmVjdDJELmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZVdpbi5jcHAKQEAgLTIwMSw3ICsyMDAsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNv
bnRyb2xsZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxl
ckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRC5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVj
dDJELmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Mb2NhbFdpbmRvd3NDb250ZXh0LmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGFlYzMyMDY3ZDNlNmYyZjQ5ZDE5M2UwYjFhNjZi
YjA5NTkxMTYwYzguLjEyMjE1YWIxZDEwZmJkZDhhZWNhMjY3ZjcwODQ2MzczNWJmNWZlZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0yOTEsOCArMjkxLDEwIEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dEdMQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAKLSAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyRGF0YUNHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0
aWxpdGllc0NHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcApAQCAtNTI3LDcgKzUyOSw5IEBAIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0lPU3VyZmFjZVBvb2wuaAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0
YUNHLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvVVRJUmVnaXN0cnkuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4u
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCA0ZjMwNzE1OWI3
ZWQ4MDZlYjgxOTUyYmJhNDVmNWMwN2E4ZGM5M2ViLi44YWY3MDFjNzc3ZmUxNTJlMjMxNmNhNTAw
MDQzYWQ5NzFhY2JmMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMTE5LDcgKzEx
OSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9ESUJQaXhlbERhdGEuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0Z1bGxTY3JlZW5Db250cm9sbGVyQ2xpZW50LmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Mb2Nh
bFdpbmRvd3NDb250ZXh0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJl
ZEdESU9iamVjdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDExNmIzODhkMmQ1ZmQ1Y2QyZmQ5YTRlNjI1
MGMzODZiNDVjNzEyNjUuLjNhMzVkNmMxMzE0ZTUwMDZlZTU3OTk2ZjRiODM1Zjk4MjBiZTIwNmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC0xODY0LDYgKzE4NjQsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9I
RVZDVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCitwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZURlY29kZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0xODgzLDYgKzE4ODQsNyBAQCBwbGF0Zm9y
bS9ncmFwaGljcy9QYXR0ZXJuLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFu
Z2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVtb3RlVmlkZW9TYW1wbGUuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdCYWNrZW5k
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9TaGFkb3dCbHVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNGRlNzVkZjhkZjBiOGY5MGU1YjI1ODE1N2VhZGE0
YTY5ZDNiNTkxNi4uNzY2MWUyYjlhZDJiMzkxOGE1M2IxNjdlNDdiYzE0NTNhZTZmYzkxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yOTEsOCArMjkxLDkgQEAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhZGllbnRDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dEdMQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKK3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAorcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VD
R01hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGFmMDQ0MTI0MThlNmRiYjBmMGIzYjE3YTZkOWE4Y2E2YmE4MTE2YjQuLjky
NzhjYTgyNWY0NDMxMzBmNjVlNDA5ZDlhOGRjY2YwZjQ5MzFkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY0NSw4ICs2NDUs
NiBAQAogCQkyMEQ2MjkyNzEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMEQ2
MjkyNTEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggKi87IH07
CiAJCTIyNUExNkI1MEQ1QzExRTkwMDA5MDI5NSAvKiBXZWJFdmVudFJlZ2lvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjI1QTE2QjMwRDVDMTFFOTAw
MDkwMjk1IC8qIFdlYkV2ZW50UmVnaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjI4QzI4NDUxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdy
YXBwYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjI4QzI4NDQxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTIyQkQ5RjdGMTM1MzYyNUMw
MDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDIyQkQ5RjdEMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZl
ckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQkyMkJEOUY4MTEzNTM2NEZFMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhQ0cuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyQkQ5RjgwMTM1MzY0RkUw
MDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGFDRy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTI0RDkxMjkyMTNDQTk1MUUwMEQyMTkxNSAvKiBKU1NW
R0FsdEdseXBoRGVmRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjREOTEyOTAxM0NBOTUxRTAwRDIxOTE1IC8qIEpTU1ZHQWx0R2x5cGhEZWZF
bGVtZW50LmggKi87IH07CiAJCTI0RDkxMjk2MTNDQTk1NjEwMEQyMTkxNSAvKiBKU1NWR0FsdEds
eXBoSXRlbUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI0RDkxMjk0MTNDQTk1NjEwMEQyMTkxNSAvKiBKU1NWR0FsdEdseXBoSXRlbUVsZW1l
bnQuaCAqLzsgfTsKIAkJMjREOTEyOUExM0NBOTcxNDAwRDIxOTE1IC8qIEpTU1ZHR2x5cGhSZWZF
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
NEQ5MTI5OTEzQ0E5NzE0MDBEMjE5MTUgLyogSlNTVkdHbHlwaFJlZkVsZW1lbnQuaCAqLzsgfTsK
QEAgLTgzMywxNyArODMxLDE3IEBACiAJCTJEQUNCOUU5MjM3NTVEMDAwMEI0QzE4NSAvKiBHcmFw
aGljc0NvbnRleHRJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjAwMTIzRjFGQUQ4N0Q2MDA1MzFENzYgLyogR3JhcGhpY3NDb250ZXh0SW1wbC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEQUYz
NDNEMUVBN0UwRjEwMDM4MkNEMyAvKiBDb25zdGFudFByb3BlcnR5TWFwLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFGMzQzQjFFQTdFMEYxMDAzODJD
RDMgLyogQ29uc3RhbnRQcm9wZXJ0eU1hcC5oICovOyB9OwogCQkyREQ1QTcyNzFFQkVFNDdEMDA5
QkE1OTcgLyogQ29tcG9zaXRpb25VbmRlcmxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDVBNzI2MUVCRUU0N0QwMDlCQTU5NyAvKiBDb21wb3Np
dGlvblVuZGVybGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTJEREUxQ0UzMUY1NzRBRTUwMEQxQTM2NSAvKiBKU1ZSRmllbGRPZlZpZXcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUxQ0UwMUY1
NzRBRDEwMEQxQTM2NSAvKiBKU1ZSRmllbGRPZlZpZXcuaCAqLzsgfTsKLQkJMkRERTFDRTQxRjU3
NEFFOTAwRDFBMzY1IC8qIEpTVlJEaXNwbGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNERTFGNTc0QUFCMDBEMUEzNjUgLyogSlNWUkRpc3Bs
YXkuaCAqLzsgfTsKLQkJMkRERTFDRjgxRjU3NEMzOTAwRDFBMzY1IC8qIEpTVlJEaXNwbGF5Q2Fw
YWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRERFMUNFNjFGNTc0QkZGMDBEMUEzNjUgLyogSlNWUkRpc3BsYXlDYXBhYmlsaXRpZXMuaCAq
LzsgfTsKLQkJMkRERTFDRkExRjU3NEMzRTAwRDFBMzY1IC8qIEpTVlJEaXNwbGF5RXZlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUxQ0U4MUY1
NzRCRkYwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheUV2ZW50LmggKi87IH07Ci0JCTJEREUxQ0ZDMUY1
NzRDRUUwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheUV2ZW50UmVhc29uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNFQTFGNTc0QkZGMDBEMUEzNjUg
LyogSlNWUkRpc3BsYXlFdmVudFJlYXNvbi5oICovOyB9OwotCQkyRERFMUNGRTFGNTc0Q0YzMDBE
MUEzNjUgLyogSlNWUkV5ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkRERTFDRUMxRjU3NEJGRjAwRDFBMzY1IC8qIEpTVlJFeWUuaCAqLzsgfTsKLQkJ
MkRERTFEMDAxRjU3NENGNzAwRDFBMzY1IC8qIEpTVlJFeWVQYXJhbWV0ZXJzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNFRTFGNTc0QkZGMDBE
MUEzNjUgLyogSlNWUkV5ZVBhcmFtZXRlcnMuaCAqLzsgfTsKLQkJMkRERTFEMDIxRjU3NEQwMDAw
RDFBMzY1IC8qIEpTVlJGcmFtZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEREUxQ0YwMUY1NzRCRkYwMEQxQTM2NSAvKiBKU1ZSRnJhbWVEYXRh
LmggKi87IH07Ci0JCTJEREUxRDA0MUY1NzREMDUwMEQxQTM2NSAvKiBKU1ZSTGF5ZXJJbml0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNGMjFG
NTc0QkZGMDBEMUEzNjUgLyogSlNWUkxheWVySW5pdC5oICovOyB9OwotCQkyRERFMUQwNjFGNTc0
RDBBMDBEMUEzNjUgLyogSlNWUlBvc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEREUxQ0Y0MUY1NzRCRkYwMEQxQTM2NSAvKiBKU1ZSUG9zZS5oICov
OyB9OwotCQkyRERFMUQwODFGNTc0RDBFMDBEMUEzNjUgLyogSlNWUlN0YWdlUGFyYW1ldGVycy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDRjYx
RjU3NEJGRjAwRDFBMzY1IC8qIEpTVlJTdGFnZVBhcmFtZXRlcnMuaCAqLzsgfTsKKwkJMkRERTFD
RTMxRjU3NEFFNTAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgfTsKKwkJMkRERTFDRTQxRjU3NEFFOTAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgfTsKKwkJMkRERTFDRjgxRjU3NEMzOTAwRDFB
MzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgfTsKKwkJ
MkRERTFDRkExRjU3NEMzRTAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgfTsKKwkJMkRERTFDRkMxRjU3NENFRTAwRDFBMzY1IC8qIChudWxsKSBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgfTsKKwkJMkRERTFDRkUxRjU3NENG
MzAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
fTsKKwkJMkRERTFEMDAxRjU3NENGNzAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgfTsKKwkJMkRERTFEMDIxRjU3NEQwMDAwRDFBMzY1IC8qIChu
dWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgfTsKKwkJMkRERTFEMDQx
RjU3NEQwNTAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgfTsKKwkJMkRERTFEMDYxRjU3NEQwQTAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgfTsKKwkJMkRERTFEMDgxRjU3NEQwRTAwRDFBMzY1
IC8qIChudWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgfTsKIAkJMkRF
NzAwMjMxOTJGRTgyQTAwQjA5NzVDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFNzAwMjIxOTJGRTgy
QTAwQjA5NzVDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oICovOyB9OwogCQkyREY1MTJD
RTFEODczRTQ3MDAxRDY3ODAgLyogUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREY1MTJDQzFEODczRTQ3
MDAxRDY3ODAgLyogUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmggKi87IH07CiAJCTJERkE0
ODhGMURCNTQxRDAwMDM2MkI5OSAvKiBCdWZmZXJTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERkE0ODhFMURCNTQxQzIwMDM2MkI5OSAvKiBC
dWZmZXJTb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMjE0NSwxMSArMjE0MywxMyBAQAogCQk3MjE0NDMzNDIyM0VDOTE2MDBGMTJGRjcg
LyogU1ZHUHJvcGVydHlPd25lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTVFRTUzNjAyMjNCMkEyMTAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5T3duZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjI4
M0YwRTIzMEIyNjhDMDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQzE4QTNGMjMwQjA0QjcwMDY4
NDdDNyAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyMkE4MTVEMjM4RkRBRjAwMEMwMDU4MyAvKiBBbmlt
YXRpb25GcmFtZVJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjM5NDA2
NTIzRTg4Mjg2MDBFM0I1NDUgLyogUmVuZGVyaW5nQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIzOTQwNjQyM0U4N0Q1NDAwRTNCNTQ1IC8q
IFJlbmRlcmluZ0JhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MjRFRDMzMjFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1h
eC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUQz
MzAxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLzsgfTsKIAkJNzI0RUU1
NTAxREM4MEQ3RjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRFMURDN0YyNUIwMEE5MUZGQiAvKiBB
Y3Rpdml0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzI0RUU1NTExREM4MEQ4NDAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzI0RUU1NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOTlC
QzY3MjNENkE1MzIwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Mjk5QkM2NDIzRDY4NkE2MDBD
QzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOTlCQzY4MjNENkE1M0UwMENDNjg4MyAvKiBS
ZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyQkFDM0FFMjNFMUYw
QjAwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0E1MjNFMTczMjgwMDhENzQxQyAvKiBJbWFn
ZUJ1ZmZlckJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3NTUzQ0ZFODEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0
b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTUz
Q0ZFNjEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggKi87IH07CiAJ
CTc1NzkzRTg0MEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRTgxMEQwQ0UwQjMwMDdGQzBB
QyAvKiBNZXNzYWdlRXZlbnQuaCAqLzsgfTsKIAkJNzU3OTNFQzkwRDBDRTcyRDAwN0ZDMEFDIC8q
IEpTTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3NTc5M0VDNzBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCAqLzsg
fTsKQEAgLTI1ODAsNyArMjU4MCw2IEBACiAJCThBRjRFNTVDMTFEQzVBNjMwMDBFRDNERSAvKiBQ
ZXJmb3JtYW5jZVRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOEFGNEU1NTkxMURDNUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlVGltaW5nLmgg
Ki87IH07CiAJCThCRDM3QTY4MjAxQkIzOUMwMDExNzM0QSAvKiBSZWFkYWJsZVN0cmVhbUNodW5r
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QkQzN0E2
NzIwMUJCMzlDMDAxMTczNEEgLyogUmVhZGFibGVTdHJlYW1DaHVuay5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCThFNEM5NkREMUFENDQ4MzUwMDM2
NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDhFNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9u
c2UuaCAqLzsgfTsKLQkJOEU2MjBFODEyMEVFNjAyNDAwN0JDNUVGIC8qIFZSUGxhdGZvcm1EaXNw
bGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4RTYyMEU4MDIwRUU1RkZDMDA3QkM1RUYgLyogVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4RUM2Qzk2
MzIwMUEyNTE2MDBGQkZBNTMgLyogR2FwTGVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RUM2Qzk2MTIwMUEyNTAxMDBGQkZBNTMgLyogR2FwTGVu
Z3RoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OEY2NzU2MUIxMjg4QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhGNjc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAv
KiBFdmVudFF1ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTAwMTc3NDExMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwMDE3
NzNFMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggKi87IH07CkBA
IC02NTU5LDkgKzY1NTgsNiBAQAogCQkyMjVBMTZCMzBENUMxMUU5MDAwOTAyOTUgLyogV2ViRXZl
bnRSZWdpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRXZlbnRSZWdp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjI1QTE2QjQwRDVDMTFFOTAwMDkw
Mjk1IC8qIFdlYkV2ZW50UmVnaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViRXZlbnRSZWdpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0V3JhcHBhYmxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTIyOTJCMjdCMTM1NjY2OTQwMENGMTFFRiAvKiBJbWFnZUJ1ZmZlckRh
dGFDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZl
ckRhdGFDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTIyQkQ5RjdEMTM1MzYy
NUMwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW1hZ2VCdWZmZXJEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTIyQkQ5RjgwMTM1MzY0RkUwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGFDRy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlckRhdGFDRy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyNDQyQkJGODExOTRDOUQzMDBENDk0NjkgLyogSGFzaENoYW5n
ZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhc2hDaGFuZ2VFdmVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNEQ5MTI4RjEzQ0E5NTFFMDBEMjE5
MTUgLyogSlNTVkdBbHRHbHlwaERlZkVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTVkdBbHRHbHlwaERlZkVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyNEQ5MTI5MDEzQ0E5NTFFMDBEMjE5MTUgLyogSlNTVkdBbHRHbHlw
aERlZkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBbHRH
bHlwaERlZkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk1ODAsNiAr
OTU3NiwxMCBAQAogCQk3MjE0NDM0NTIyNDBDOEJBMDBGMTJGRjcgLyogU1ZHQW5pbWF0ZWRWYWx1
ZVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjE0NDM0NjIyNDBDQUQyMDBGMTJGRjcgLyog
U1ZHVmFsdWVQcm9wZXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdWYWx1ZVByb3BlcnR5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBB
bmltYXRpb25GcmFtZVJhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQW5pbWF0aW9uRnJhbWVSYXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMzk0MDVFMjNFNUY1M0YwMEUzQjU0NSAv
KiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzIzOTQwNjAyM0U1RjU2NzAwRTNCNTQ1IC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3REcmF3aW5nQ29u
dGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjM5NDA2MjIzRTg3RDUzMDBF
M0I1NDUgLyogUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW5kZXJpbmdCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzIzOTQwNjQyM0U4N0Q1NDAwRTNCNTQ1IC8qIFJlbmRlcmluZ0JhY2tlbmQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyaW5nQmFja2VuZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjRFRDMyOTFBM0E3RTU0MDBGNUYxM0MgLyogRVhUQmxl
bmRNaW5NYXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUQmxl
bmRNaW5NYXguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjRFRDMyQTFBM0E3
RTU0MDBGNUYxM0MgLyogRVhUQmxlbmRNaW5NYXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRVhUQmxlbmRNaW5NYXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI0RUQzMkIxQTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBFWFRCbGVuZE1pbk1heC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC05NjAyLDYgKzk2MDIsMTYgQEAKIAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8q
IEVYVHNSR0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjk5QkM2NDIzRDY4NkE2MDBDQzY4ODMgLyogQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbHBoYVByZW11bHRpcGxpY2F0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOTlCQzY2MjNENjg2QzYwMENDNjg4
MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcmluZ01vZGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJCQUMzQTQyM0UxNzMyNzAwOEQ3NDFDIC8qIElt
YWdlQnVmZmVyQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1J
bWFnZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUlt
YWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyQkFDM0E3MjNFMTcz
MjgwMDhENzQxQyAvKiBDb250ZXh0dWFsSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29udGV4dHVhbEltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcyQkFDM0E4MjNFMUU1NDMwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTcyQkFDM0E5MjNFMUU1NDMwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJCQUMzQUEy
M0UxRTU0NDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAvKiBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcyQkFDM0FDMjNFMUU1NDUwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckNHQmFja2Vu
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlckNH
QmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyQkFDM0FEMjNFMUU1
NDUwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckNHQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlckNHQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGluZ09wdGlv
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VQYWludGluZ09wdGlvbnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjExQTJFOEQyRjAwNEM1NjJBIC8qIEpTRVhUc1JHQi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0VYVHNSR0IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkU0MTc2MjFBMkU4RDJGMDA0QzU2MkEgLyog
SlNFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhUc1JHQi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1NDQsOCArMTA1NTQsNiBAQAogCQk4
RTMzQ0Q5MzIwMUEyOUMxMDBFMzkwOTMgLyogR2FwTGVuZ3RoLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdhcExlbmd0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCThFNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGZXRjaFJlc3BvbnNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEU0Qzk2RDkxQUQ0NDgzNTAwMzY1QTUw
IC8qIEpTRmV0Y2hSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0ZldGNoUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOEU2MjBFN0Uy
MEVFNUZFMjAwN0JDNUVGIC8qIFZSUGxhdGZvcm1EaXNwbGF5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZSUGxhdGZvcm1EaXNwbGF5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJOEU2MjBFODAyMEVFNUZGQzAwN0JDNUVGIC8qIFZSUGxhdGZvcm1E
aXNwbGF5Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZSUGxhdGZv
cm1EaXNwbGF5Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThFQzZDOTYx
MjAxQTI1MDEwMEZCRkE1MyAvKiBHYXBMZW5ndGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR2FwTGVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThGNjc1
NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEV2ZW50UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OEY5MzREODMxMTg5RjFFRTAwNTA4RDVEIC8qIEpTRXhlY1N0YXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXhlY1N0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMjY3NSw3ICsxMjY4Myw2IEBACiAJCUIyQTAxNTk0MEFGNkNENTMwMDZCQ0UwRSAv
KiBHcmFwaGljc1R5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc1R5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJBMDE1
OTUwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJBMTBCOTEwQjM4MThCRDAwMDk5QUE0IC8qIEltYWdlQnVmZmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlCMkExMEI5MzBCMzgxOEQ3MDAwOTlBQTQgLyogSW1hZ2VCdWZmZXJDRy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJDRy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQTFGMkExMENFRjBBQkYwMDQ0MkY2
QSAvKiBTVkdGb250RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU1ZHRm9udEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
MkExRjJBMjBDRUYwQUJGMDA0NDJGNkEgLyogU1ZHRm9udEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ZvbnRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUIyQTFGMkEzMENFRjBBQkYwMDQ0MkY2QSAvKiBTVkdGb250RWxlbWVudC5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR0ZvbnRFbGVtZW50LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2Njg5LDYgKzE2Njk2LDcgQEAKIAkJCWNoaWxkcmVuID0g
KAogCQkJCTBGRTVGQkNBMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5jcHAgKi8sCiAJ
CQkJMEZFNUZCQ0IxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0LmggKi8sCisJCQkJNzIz
OTQwNjAyM0U1RjU2NzAwRTNCNTQ1IC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCAqLywK
IAkJCQkwRkU1RkJDQzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5jcHAgKi8s
CiAJCQkJMEZFNUZCQ0QxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuaCAqLywK
IAkJCQkwRkU1RkJDRTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5jcHAg
Ki8sCkBAIC0yNDg0MCw5ICsyNDg0OCwxMiBAQAogCQkJCTkzNDkwN0UzMTI1QkJCQzgwMDdGMjNB
MCAvKiBHcmFwaGljc0NvbnRleHRDRy5oICovLAogCQkJCTZFMjFDNkMxMTEyNjMzOTkwMEE3QkUw
MiAvKiBHcmFwaGljc0NvbnRleHRHTENHLmNwcCAqLywKIAkJCQlBODBENjcwNzBFOUU5REVCMDBF
NDIwRjAgLyogR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCAqLywKLQkJCQlCMkEx
MEI5MzBCMzgxOEQ3MDAwOTlBQTQgLyogSW1hZ2VCdWZmZXJDRy5jcHAgKi8sCi0JCQkJMjI5MkIy
N0IxMzU2NjY5NDAwQ0YxMUVGIC8qIEltYWdlQnVmZmVyRGF0YUNHLmNwcCAqLywKLQkJCQkyMkJE
OUY4MDEzNTM2NEZFMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhQ0cuaCAqLywKKwkJCQk3MkJB
QzNBQzIzRTFFNTQ1MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwICovLAorCQkJ
CTcyQkFDM0FEMjNFMUU1NDUwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckNHQmFja2VuZC5oICovLAor
CQkJCTcyQkFDM0E4MjNFMUU1NDMwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZC5jcHAgKi8sCisJCQkJNzJCQUMzQUEyM0UxRTU0NDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kLmggKi8sCisJCQkJNzJCQUMzQTkyM0UxRTU0MzAwOEQ3NDFDIC8qIEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgKi8sCisJCQkJNzJCQUMzQUIyM0UxRTU0NDAwOEQ3
NDFDIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oICovLAogCQkJCUNENTg5NDkzMjE4
NzQwNjQwMDRGNDI0QSAvKiBJbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcCAqLywKIAkJCQlDRDNF
MjFEQjIxODMzRjUxMDBFNjZGNTUgLyogSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oICovLAogCQkJ
CTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8sCkBAIC0y
NDkzNCwxMiArMjQ5NDUsMTQgQEAKIAkJCQkwRkU2Qzc2QzFGQkZCN0E2MDAyNUMwNTMgLyogQ29s
b3JVdGlsaXRpZXMuaCAqLywKIAkJCQlDMkY0RTc4ODFFNDVBRURGMDA2RDcxMDUgLyogQ29tcGxl
eFRleHRDb250cm9sbGVyLmNwcCAqLywKIAkJCQlDMkY0RTc4OTFFNDVBRURGMDA2RDcxMDUgLyog
Q29tcGxleFRleHRDb250cm9sbGVyLmggKi8sCisJCQkJNzJCQUMzQTcyM0UxNzMyODAwOEQ3NDFD
IC8qIENvbnRleHR1YWxJbWFnZUJ1ZmZlci5oICovLAogCQkJCTJEMkZDMDU0MTQ2MENENkYwMDI2
MzYzMyAvKiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgKi8sCiAJCQkJMkQyRkMwNTUxNDYw
Q0Q2RjAwMjYzNjMzIC8qIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmggKi8sCiAJCQkJNEI3QUU0
OTUyMTc3QjYzRTAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuY3BwICovLAogCQkJCTRCN0FF
NDkyMjE3N0I1NkYwMEM1OTk1OSAvKiBDdXN0b21QYWludEltYWdlLmggKi8sCiAJCQkJQThDQjQx
MDIwRTg1QjhBNTAwMzJDNEYwIC8qIERhc2hBcnJheS5oICovLAogCQkJCTU1NTEzMDAwMUU3Q0ND
Q0EwMEE2OUUzOCAvKiBEZWNvZGluZ09wdGlvbnMuaCAqLywKKwkJCQk3MjM5NDA1RTIzRTVGNTNG
MDBFM0I1NDUgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oICovLAogCQkJCTQ5RkM3QTRGMTQ0
NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwICovLAogCQkJCTQ5QUYy
RDY4MTQ0MzVEMDUwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCAqLywKIAkJCQky
RDI5RUNDMTE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNw
cCAqLywKQEAgLTI1MDMxLDcgKzI1MDQ0LDggQEAKIAkJCQk1NUEzMzZGODFEODIxRTNDMDAyMkM0
QzcgLyogSW1hZ2VCYWNraW5nU3RvcmUuaCAqLywKIAkJCQk0M0QyNTk3NjEzQzgxNkY0MDA2MDg1
NTkgLyogSW1hZ2VCdWZmZXIuY3BwICovLAogCQkJCUIyQTEwQjkxMEIzODE4QkQwMDA5OUFBNCAv
KiBJbWFnZUJ1ZmZlci5oICovLAotCQkJCTIyQkQ5RjdEMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFn
ZUJ1ZmZlckRhdGEuaCAqLywKKwkJCQk3MkJBQzNBNDIzRTE3MzI3MDA4RDc0MUMgLyogSW1hZ2VC
dWZmZXJCYWNrZW5kLmNwcCAqLywKKwkJCQk3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1h
Z2VCdWZmZXJCYWNrZW5kLmggKi8sCiAJCQkJQ0QxOUZFQTcxRjU3Mzk3MjAwMEM0MkZCIC8qIElt
YWdlRGVjb2Rlci5jcHAgKi8sCiAJCQkJQ0QxOUZFQTYxRjU3Mzk3MjAwMEM0MkZCIC8qIEltYWdl
RGVjb2Rlci5oICovLAogCQkJCTU1NzZBNTYyMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1l
LmNwcCAqLywKQEAgLTI1MDg4LDYgKzI1MTAyLDcgQEAKIAkJCQkyRDUwMDJGQTFCNTZENzk5MDAy
MEFBRjcgLyogUGF0aFV0aWxpdGllcy5oICovLAogCQkJCUE4RkE2RTVDMEU0Q0ZERUQwMEQ1Q0Y0
OSAvKiBQYXR0ZXJuLmNwcCAqLywKIAkJCQlBOEZBNkU1QjBFNENGREVEMDBENUNGNDkgLyogUGF0
dGVybi5oICovLAorCQkJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdl
QnVmZmVyLmggKi8sCiAJCQkJMDU2MkY5NjAxNTczRjg4RjAwMzFDQTE2IC8qIFBsYXRmb3JtTGF5
ZXIuaCAqLywKIAkJCQlDRUVGQ0Q3QjE5REIzM0RDMDAzODc2RDcgLyogUGxhdGZvcm1NZWRpYVJl
c291cmNlTG9hZGVyLmggKi8sCiAJCQkJMDcyODQ3RTIxNkVCQzVCMDAwNDNDRkE0IC8qIFBsYXRm
b3JtVGV4dFRyYWNrLmggKi8sCkBAIC0yNTA5Nyw2ICsyNTExMiw4IEBACiAJCQkJQkNBQjQxODAx
M0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAogCQkJCTA3M0ExNTUxMjE3N0EzOTgwMEVB
MDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5jcHAgKi8sCiAJCQkJMDczQTE1NTMyMTc3QTM5QTAw
RUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggKi8sCisJCQkJNzIzOTQwNjIyM0U4N0Q1MzAw
RTNCNTQ1IC8qIFJlbmRlcmluZ0JhY2tlbmQuY3BwICovLAorCQkJCTcyMzk0MDY0MjNFODdENTQw
MEUzQjU0NSAvKiBSZW5kZXJpbmdCYWNrZW5kLmggKi8sCiAJCQkJNzI5OUJDNjYyM0Q2ODZDNjAw
Q0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLywKIAkJCQlBNzNGOTVGQzEyQzk3QkZFMDAzMUFB
RjkgLyogUm91bmRlZFJlY3QuY3BwICovLAogCQkJCUE3M0Y5NUZEMTJDOTdCRkUwMDMxQUFGOSAv
KiBSb3VuZGVkUmVjdC5oICovLApAQCAtMjU4MjMsNyArMjU4NDAsNiBAQAogCQkJCTY1NkI4NEQ3
MEFFQTFDRTkwMEEwOTVCNCAvKiBuZXR3b3JrICovLAogCQkJCTFBMkU2RTU2MENDNTUxRTAwMDRB
MjA2MiAvKiBzcWwgKi8sCiAJCQkJQjJDM0Q5RUMwRDAwNkMxRDAwRUY2RjI2IC8qIHRleHQgKi8s
Ci0JCQkJRTE4ODIzNUYyMDMxRjUwRjAwQjQyREYzIC8qIHZyICovLAogCQkJCURGREI5MTJDRjhF
ODhBNkRBMUFEMjY0RiAvKiBBYm9ydGFibGVUYXNrUXVldWUuaCAqLywKIAkJCQk0OUFFMkQ5NDEz
NEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5jcHAgKi8sCiAJCQkJNDlBRTJEOTUx
MzRFRTVGOTAwNzI5MjBBIC8qIENhbGN1bGF0aW9uVmFsdWUuaCAqLywKQEAgLTI4OTA0LDYgKzI4
OTIwLDE3IEBACiAJCQlmaWxlcyA9ICgKIAkJCQk3MjE0NDMzMjIyM0VDODVGMDBGMTJGRjcgLyog
KG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJNzIxNDQzMzEyMjNFQzg1NDAwRjEyRkY3IC8qIChu
dWxsKSBpbiBIZWFkZXJzICovLAorCQkJCTJEREUxQ0U0MUY1NzRBRTkwMEQxQTM2NSAvKiAobnVs
bCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERFMUNGODFGNTc0QzM5MDBEMUEzNjUgLyogKG51bGwp
IGluIEhlYWRlcnMgKi8sCisJCQkJMkRERTFDRkExRjU3NEMzRTAwRDFBMzY1IC8qIChudWxsKSBp
biBIZWFkZXJzICovLAorCQkJCTJEREUxQ0ZDMUY1NzRDRUUwMEQxQTM2NSAvKiAobnVsbCkgaW4g
SGVhZGVycyAqLywKKwkJCQkyRERFMUNGRTFGNTc0Q0YzMDBEMUEzNjUgLyogKG51bGwpIGluIEhl
YWRlcnMgKi8sCisJCQkJMkRERTFEMDAxRjU3NENGNzAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFk
ZXJzICovLAorCQkJCTJEREUxQ0UzMUY1NzRBRTUwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVy
cyAqLywKKwkJCQkyRERFMUQwMjFGNTc0RDAwMDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMg
Ki8sCisJCQkJMkRERTFEMDQxRjU3NEQwNTAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICov
LAorCQkJCTJEREUxRDA2MUY1NzREMEEwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywK
KwkJCQkyRERFMUQwODFGNTc0RDBFMDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZBNENFIC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01X
aW5kb3cuaCBpbiBIZWFkZXJzICovLApAQCAtMzAyNTksOCArMzAyODYsNyBAQAogCQkJCTdDNzkw
M0IzMUY4NkY5NUMwMDQ2M0E3MCAvKiBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxOEVBRDREMUZBOTEzODAwMDhDRUY4NiAvKiBJbWFnZUJpdG1hcFJl
bmRlcmluZ0NvbnRleHRTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMTBCOTIwQjM4
MThCRDAwMDk5QUE0IC8qIEltYWdlQnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkyMkJEOUY3
RjEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkyMkJEOUY4MTEzNTM2NEZFMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhQ0cuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTcyQkFDM0FFMjNFMUYwQjAwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tl
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0UyMUREMjE4MzQ0NEEwMEU2NkY1NSAvKiBJbWFn
ZUJ1ZmZlclV0aWxpdGllc0NHLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDI1Mzk2MzE4Q0U3RjYy
MDAyNzAyMjIgLyogSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxMDE5MkQ2MThCNkI5QjcwMDdGQzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzExNjUsMTcgKzMxMTkxLDYgQEAKIAkJCQlCRThFRjA0
RDE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDZFNzkxNDkxRjk3RTAxQTAwMTk5NzM5IC8qIEpTVmlzaWJpbGl0eVN0YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Nzc5QkQ5NjFGMzIyNDZBMDBDMjE0MTcgLyogSlNWaXN1YWxWaWV3cG9y
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFDRTQxRjU3NEFFOTAwRDFBMzY1IC8qIEpTVlJE
aXNwbGF5LmggaW4gSGVhZGVycyAqLywKLQkJCQkyRERFMUNGODFGNTc0QzM5MDBEMUEzNjUgLyog
SlNWUkRpc3BsYXlDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTJEREUxQ0ZBMUY1
NzRDM0UwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheUV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQky
RERFMUNGQzFGNTc0Q0VFMDBEMUEzNjUgLyogSlNWUkRpc3BsYXlFdmVudFJlYXNvbi5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMkRERTFDRkUxRjU3NENGMzAwRDFBMzY1IC8qIEpTVlJFeWUuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTJEREUxRDAwMUY1NzRDRjcwMEQxQTM2NSAvKiBKU1ZSRXllUGFyYW1l
dGVycy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFDRTMxRjU3NEFFNTAwRDFBMzY1IC8qIEpT
VlJGaWVsZE9mVmlldy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFEMDIxRjU3NEQwMDAwRDFB
MzY1IC8qIEpTVlJGcmFtZURhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTJEREUxRDA0MUY1NzRE
MDUwMEQxQTM2NSAvKiBKU1ZSTGF5ZXJJbml0LmggaW4gSGVhZGVycyAqLywKLQkJCQkyRERFMUQw
NjFGNTc0RDBBMDBEMUEzNjUgLyogSlNWUlBvc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTJEREUx
RDA4MUY1NzREMEUwMEQxQTM2NSAvKiBKU1ZSU3RhZ2VQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCRTIwNTA4MjE4QTQ2MEMzMDA4MDY0N0UgLyogSlNWVFRDdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdBRjlCMjBEMThDRkI1RjQwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlz
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTkzMyw2ICszMTk0OCw3IEBACiAJCQkJQkNFQTQ4NzYw
OTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwOEYy
RjAwQTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDg2NDFENDgxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjM5NDA2NTIzRTg4Mjg2MDBFM0I1NDUg
LyogUmVuZGVyaW5nQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzI5OUJDNjgyM0Q2QTUz
RTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1NkM3QzRC
MjIxMjM5OTcwMDlCMDZDQSAvKiBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDRUE0ODc4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggYzRjN2UyODgyNzcyNjZkZGVjNzUyMDQxMjEyYjVlMmJj
NWZhYTM1OC4uMjVkNjlmOTRhNjdmYjkxYmNjNDhiYzdlODU5NmQ3NThmNmY1ZTI3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCkBAIC05NDMsMTMgKzk0MywxMyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAg
Y29uc3QgSW50U2l6ZSYgbG9naWNhbFNpemUgPSBidWZmZXItPmxvZ2ljYWxTaXplKCk7Ci0gICAg
ICAgIGF1dG8gaW1hZ2VEYXRhID0gYnVmZmVyLT5nZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKElu
dFJlY3QoMCwgMCwgbG9naWNhbFNpemUud2lkdGgoKSwgbG9naWNhbFNpemUuaGVpZ2h0KCkpKTsK
KyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBidWZmZXItPmdldEltYWdlRGF0YShBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCB7IEludFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxT
aXplIH0pOwogICAgICAgICBpZiAoIWltYWdlRGF0YSkgewogICAgICAgICAgICAgY29kZSA9IFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3I7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVy
ID0gaW1hZ2VEYXRhLT5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpOworICAgICAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGFycmF5QnVmZmVyID0gaW1hZ2VEYXRhLT5kYXRhKCktPnBvc3NpYmx5U2hhcmVk
QnVmZmVyKCk7CiAgICAgICAgIGlmICghYXJyYXlCdWZmZXIpIHsKICAgICAgICAgICAgIGNvZGUg
PSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9yOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMjg2NSwxOSArMjg2NSwyNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gVWlu
dDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgMCwgYXJyYXlC
dWZmZXItPmJ5dGVMZW5ndGgoKSk7Ci0gICAgICAgIGlmICghaW1hZ2VEYXRhKSB7CisgICAgICAg
IGF1dG8gYXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlC
dWZmZXIpLCAwLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgaWYgKCFhcnJh
eSkgewogICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
ICAgICAgICAgfQogCisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUo
SW50U2l6ZShsb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpLCBhcnJheS5yZWxlYXNlTm9uTnVs
bCgpKTsKKyAgICAgICAgaWYgKCFpbWFnZURhdGEpIHsKKyAgICAgICAgICAgIGZhaWwoKTsKKyAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAg
IGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUobG9naWNhbFdpZHRo
LCBsb2dpY2FsSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgcmVzb2x1dGlv
blNjYWxlKTsKICAgICAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgICAgIGZhaWwoKTsKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBidWZmZXIt
PnB1dEJ5dGVBcnJheSgqaW1hZ2VEYXRhLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0
aXBsaWVkLCBJbnRTaXplKGxvZ2ljYWxXaWR0aCwgbG9naWNhbEhlaWdodCksIEludFJlY3QoMCwg
MCwgbG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0KSwgSW50UG9pbnQoKSk7CisgICAgICAgIGJ1
ZmZlci0+cHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQs
ICppbWFnZURhdGEsIHsgSW50UG9pbnQ6Onplcm8oKSwgaW1hZ2VEYXRhLT5zaXplKCkgfSk7CiAK
ICAgICAgICAgYXV0byBiaXRtYXAgPSBJbWFnZUJpdG1hcDo6Y3JlYXRlKHsgV1RGTW92ZShidWZm
ZXIpLCBzdGF0aWNfY2FzdDxib29sPihvcmlnaW5DbGVhbikgfSk7CiAgICAgICAgIHJldHVybiBn
ZXRKU1ZhbHVlKGJpdG1hcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZh
c0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmNwcAppbmRleCBkMmFk
NDFlODcxYWM1YTBiY2I0ZDY5YzE1MjUzNDYzOWE3MzYxNDVkLi4xNjJiMjk0MmY2NjZhOTMyNDYw
YjA2ZTc2ZDA4MzZlNDNjMDE3MTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Nh
bnZhc0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAKQEAg
LTE5MSw4ICsxOTEsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IENhbnZhc0Jhc2U6
OnNldEltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZgogICAgICAgICByZXR1cm5C
dWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1faW1hZ2VCdWZmZXIsIFdURk1vdmUoYnVmZmVyKSk7CiAg
ICAgfQogCi0gICAgaWYgKG1faW1hZ2VCdWZmZXIgJiYgbV9zaXplICE9IG1faW1hZ2VCdWZmZXIt
PmludGVybmFsU2l6ZSgpKQotICAgICAgICBtX3NpemUgPSBtX2ltYWdlQnVmZmVyLT5pbnRlcm5h
bFNpemUoKTsKKyAgICBpZiAobV9pbWFnZUJ1ZmZlciAmJiBtX3NpemUgIT0gbV9pbWFnZUJ1ZmZl
ci0+YmFja2VuZFNpemUoKSkKKyAgICAgICAgbV9zaXplID0gbV9pbWFnZUJ1ZmZlci0+YmFja2Vu
ZFNpemUoKTsKIAogICAgIHNpemVfdCBwcmV2aW91c01lbW9yeUNvc3QgPSBtX2ltYWdlQnVmZmVy
Q29zdDsKICAgICBtX2ltYWdlQnVmZmVyQ29zdCA9IG1lbW9yeUNvc3QoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggZjVlNzY1MDA2OWE2ZDg2OTBkOTQz
ZGVlMjZiYjM2MWY5MTg5Y2UzMS4uNDJhNjVkM2E5ZTc1NDQ1NDQyZTY1OWY4YzlhNWE3NWQyZTgz
OTUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgogI2luY2x1ZGUgIkNhbnZh
c1BhdHRlcm4uaCIKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKKyNpbmNs
dWRlICJEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC0z
NDksOSArMzUwLDYgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBIVE1MQ2FudmFzRWxlbWVu
dDo6Y3JlYXRlQ29udGV4dDJkKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogICAgIG1fY29udGV4dCA9
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlKCp0aGlzLCBkb2N1bWVudCgpLmluUXVp
cmtzTW9kZSgpKTsKIAotICAgIGRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1f
Y29udGV4dCkuc2V0VXNlc0Rpc3BsYXlMaXN0RHJhd2luZyhtX3VzZXNEaXNwbGF5TGlzdERyYXdp
bmcpOwotICAgIGRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCku
c2V0VHJhY2tzRGlzcGxheUxpc3RSZXBsYXkobV90cmFja3NEaXNwbGF5TGlzdFJlcGxheSk7Ci0K
ICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKSB8fCBFTkFCTEUoQUNDRUxF
UkFURURfMkRfQ0FOVkFTKQogICAgIC8vIE5lZWQgdG8gbWFrZSBzdXJlIGEgUmVuZGVyTGF5ZXIg
YW5kIGNvbXBvc2l0aW5nIGxheWVyIGdldCBjcmVhdGVkIGZvciB0aGUgQ2FudmFzLgogICAgIGlu
dmFsaWRhdGVTdHlsZUFuZExheWVyQ29tcG9zaXRpb24oKTsKQEAgLTgyMiwzOSArODIwLDI3IEBA
IGJvb2wgSFRNTENhbnZhc0VsZW1lbnQ6OnNob3VsZEFjY2VsZXJhdGUoY29uc3QgSW50U2l6ZSYg
c2l6ZSkgY29uc3QKIAogdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6c2V0VXNlc0Rpc3BsYXlMaXN0
RHJhd2luZyhib29sIHVzZXNEaXNwbGF5TGlzdERyYXdpbmcpCiB7Ci0gICAgaWYgKHVzZXNEaXNw
bGF5TGlzdERyYXdpbmcgPT0gbV91c2VzRGlzcGxheUxpc3REcmF3aW5nKQotICAgICAgICByZXR1
cm47Ci0gICAgCiAgICAgbV91c2VzRGlzcGxheUxpc3REcmF3aW5nID0gdXNlc0Rpc3BsYXlMaXN0
RHJhd2luZzsKLQotICAgIGlmIChpczxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KG1fY29udGV4
dC5nZXQoKSkpCi0gICAgICAgIGRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1f
Y29udGV4dCkuc2V0VXNlc0Rpc3BsYXlMaXN0RHJhd2luZyhtX3VzZXNEaXNwbGF5TGlzdERyYXdp
bmcpOwogfQogCiB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpzZXRUcmFja3NEaXNwbGF5TGlzdFJl
cGxheShib29sIHRyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KQogewotICAgIGlmICh0cmFja3NEaXNw
bGF5TGlzdFJlcGxheSA9PSBtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KQotICAgICAgICByZXR1
cm47Ci0KICAgICBtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5ID0gdHJhY2tzRGlzcGxheUxpc3RS
ZXBsYXk7Ci0KLSAgICBpZiAoaXM8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihtX2NvbnRleHQu
Z2V0KCkpKQotICAgICAgICBkb3duY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KCptX2Nv
bnRleHQpLnNldFRyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KG1fdHJhY2tzRGlzcGxheUxpc3RSZXBs
YXkpOworICAgIGlmIChidWZmZXIoKSAmJiBidWZmZXIoKS0+ZHJhd2luZ0NvbnRleHQoKSkKKyAg
ICAgICAgYnVmZmVyKCktPmRyYXdpbmdDb250ZXh0KCktPnNldFRyYWNrc0Rpc3BsYXlMaXN0UmVw
bGF5KG1fdHJhY2tzRGlzcGxheUxpc3RSZXBsYXkpOwogfQogCiBTdHJpbmcgSFRNTENhbnZhc0Vs
ZW1lbnQ6OmRpc3BsYXlMaXN0QXNUZXh0KERpc3BsYXlMaXN0OjpBc1RleHRGbGFncyBmbGFncykg
Y29uc3QKIHsKLSAgICBpZiAoaXM8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihtX2NvbnRleHQu
Z2V0KCkpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
PigqbV9jb250ZXh0KS5kaXNwbGF5TGlzdEFzVGV4dChmbGFncyk7Ci0KKyAgICBpZiAoYnVmZmVy
KCkgJiYgYnVmZmVyKCktPmRyYXdpbmdDb250ZXh0KCkpCisgICAgICAgIHJldHVybiBidWZmZXIo
KS0+ZHJhd2luZ0NvbnRleHQoKS0+ZGlzcGxheUxpc3QoKS5hc1RleHQoZmxhZ3MpOwogICAgIHJl
dHVybiBTdHJpbmcoKTsKIH0KIAogU3RyaW5nIEhUTUxDYW52YXNFbGVtZW50OjpyZXBsYXlEaXNw
bGF5TGlzdEFzVGV4dChEaXNwbGF5TGlzdDo6QXNUZXh0RmxhZ3MgZmxhZ3MpIGNvbnN0CiB7Ci0g
ICAgaWYgKGlzPENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4obV9jb250ZXh0LmdldCgpKSkKLSAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4
dCkucmVwbGF5RGlzcGxheUxpc3RBc1RleHQoZmxhZ3MpOwotCisgICAgaWYgKGJ1ZmZlcigpICYm
IGJ1ZmZlcigpLT5kcmF3aW5nQ29udGV4dCgpICYmIGJ1ZmZlcigpLT5kcmF3aW5nQ29udGV4dCgp
LT5yZXBsYXlEaXNwbGF5TGlzdCgpKQorICAgICAgICByZXR1cm4gYnVmZmVyKCktPmRyYXdpbmdD
b250ZXh0KCktPnJlcGxheURpc3BsYXlMaXN0KCktPmFzVGV4dChmbGFncyk7CiAgICAgcmV0dXJu
IFN0cmluZygpOwogfQogCkBAIC04ODksMTEgKzg3NSwyMiBAQCB2b2lkIEhUTUxDYW52YXNFbGVt
ZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0CiAgICAgaWYgKCF3aWR0aCgpIHx8ICFoZWln
aHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
ID0gc2hvdWxkQWNjZWxlcmF0ZShzaXplKCkpID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQg
OiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwotCiAgICAgYXV0byBob3N0V2luZG93ID0g
KGRvY3VtZW50KCkudmlldygpICYmIGRvY3VtZW50KCkudmlldygpLT5yb290KCkpID8gZG9jdW1l
bnQoKS52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpIDogbnVsbHB0cjsKKworICAgIC8vIEZJ
WE1FOiBBZGQgYSBuZXcgc2V0dGluZyBmb3IgRGlzcGxheUxpc3QgZHJhd2luZyBvbiBjYW52YXMu
CisgICAgYm9vbCB1c2VzRGlzcGxheUxpc3REcmF3aW5nID0gbV91c2VzRGlzcGxheUxpc3REcmF3
aW5nLnZhbHVlT3IoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmRpc3BsYXlMaXN0RHJhd2luZ0VuYWJs
ZWQoKSk7CisKKyAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGU7CisgICAgaWYgKHVzZXNE
aXNwbGF5TGlzdERyYXdpbmcpCisgICAgICAgIHJlbmRlcmluZ01vZGUgPSBzaG91bGRBY2NlbGVy
YXRlKHNpemUoKSkgPyBSZW5kZXJpbmdNb2RlOjpEaXNwbGF5TGlzdEFjY2VsZXJhdGVkIDogUmVu
ZGVyaW5nTW9kZTo6RGlzcGxheUxpc3Q7CisgICAgZWxzZQorICAgICAgICByZW5kZXJpbmdNb2Rl
ID0gc2hvdWxkQWNjZWxlcmF0ZShzaXplKCkpID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQg
OiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOworCiAgICAgc2V0SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIHJlbmRlcmluZ01vZGUsIDEsIENvbG9yU3BhY2U6OlNS
R0IsIGhvc3RXaW5kb3cpKTsKIAorICAgIGlmIChidWZmZXIoKSAmJiBidWZmZXIoKS0+ZHJhd2lu
Z0NvbnRleHQoKSkKKyAgICAgICAgYnVmZmVyKCktPmRyYXdpbmdDb250ZXh0KCktPnNldFRyYWNr
c0Rpc3BsYXlMaXN0UmVwbGF5KG1fdHJhY2tzRGlzcGxheUxpc3RSZXBsYXkpOworCiAjaWYgVVNF
KElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkgfHwgRU5BQkxFKEFDQ0VMRVJBVEVEXzJE
X0NBTlZBUykKICAgICBpZiAobV9jb250ZXh0ICYmIG1fY29udGV4dC0+aXMyZCgpKSB7CiAgICAg
ICAgIC8vIFJlY2FsY3VsYXRlIGNvbXBvc2l0aW5nIHJlcXVpcmVtZW50cyBpZiBhY2NlbGVyYXRp
b24gc3RhdGUgY2hhbmdlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaApp
bmRleCBiNTI4NjQ1YzY1ODc0Y2QwY2EwOTM0NDQ2MWI0NTRkNTYwNTA2MzI2Li40MjEzNGExMjI5
NDE0OTZiZjMxYmNkZDc5YzZiYzVjMzkxYTc4YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5oCkBAIC0xNjEsNyArMTYxLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
bV9pZ25vcmVSZXNldCB7IGZhbHNlIH07CiAKLSAgICBib29sIG1fdXNlc0Rpc3BsYXlMaXN0RHJh
d2luZyB7IGZhbHNlIH07CisgICAgT3B0aW9uYWw8Ym9vbD4gbV91c2VzRGlzcGxheUxpc3REcmF3
aW5nOwogICAgIGJvb2wgbV90cmFja3NEaXNwbGF5TGlzdFJlcGxheSB7IGZhbHNlIH07CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dD4gbV9jb250ZXh0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmNwcAppbmRleCBkNDk0NzEyMDgzMjMxMGM3YzBkN2JlZjFjODc5ZGEzZmZi
MjkzZjBhLi5kMmI4ZGI4MTRkMzEzNDE4NjQxMmZhNWQ4YWVhZjdhMjM4MGIxMjg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmNwcApAQCAtMjE1OCwxMSArMjE1OCw2IEBAIEV4Y2VwdGlvbk9yPFJlZlB0
cjxJbWFnZURhdGE+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVJbWFnZURh
dGEoZmxvCiB9CiAKIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjpnZXRJbWFnZURhdGEoZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBz
dywgZmxvYXQgc2gpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGdldEltYWdlRGF0YShJbWFnZUJ1ZmZl
cjo6TG9naWNhbENvb3JkaW5hdGVTeXN0ZW0sIHN4LCBzeSwgc3csIHNoKTsKLX0KLQotRXhjZXB0
aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6Omdl
dEltYWdlRGF0YShJbWFnZUJ1ZmZlcjo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVt
LCBmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCkgY29uc3QKIHsKICAgICBp
ZiAoIWNhbnZhc0Jhc2UoKS5vcmlnaW5DbGVhbigpKSB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJV
bmFibGUgdG8gZ2V0IGltYWdlIGRhdGEgZnJvbSBjYW52YXMgYmVjYXVzZSB0aGUgY2FudmFzIGhh
cyBiZWVuIHRhaW50ZWQgYnkgY3Jvc3Mtb3JpZ2luIGRhdGEuIikpOwpAQCAtMjE5Niw4ICsyMTkx
LDggQEAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmdldEltYWdlRGF0YShJbWFnZUIKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIGNyZWF0ZUVtcHR5SW1hZ2VEYXRhKGltYWdlRGF0YVJlY3Quc2l6ZSgpKTsKIAotICAg
IGF1dG8gYnl0ZUFycmF5ID0gYnVmZmVyLT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoaW1hZ2VE
YXRhUmVjdCwgbnVsbHB0ciwgY29vcmRpbmF0ZVN5c3RlbSk7Ci0gICAgaWYgKCFieXRlQXJyYXkp
IHsKKyAgICBhdXRvIGltYWdlRGF0YSA9IGJ1ZmZlci0+Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgaW1hZ2VEYXRhUmVjdCk7CisgICAgaWYgKCFp
bWFnZURhdGEpIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBjb25zb2xlTWVzc2FnZTsKICAgICAg
ICAgY29uc29sZU1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiVW5hYmxlIHRvIGdldCBpbWFnZSBkYXRh
IGZyb20gY2FudmFzLiBSZXF1ZXN0ZWQgc2l6ZSB3YXMgIik7CiAgICAgICAgIGNvbnNvbGVNZXNz
YWdlLmFwcGVuZE51bWJlcihpbWFnZURhdGFSZWN0LndpZHRoKCkpOwpAQCAtMjIwOCw3ICsyMjAz
LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmdldEltYWdlRGF0YShJbWFnZUIKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH07CiAgICAgfQogCi0gICAgcmV0dXJuIEltYWdlRGF0YTo6Y3Jl
YXRlKGltYWdlRGF0YVJlY3Quc2l6ZSgpLCBieXRlQXJyYXkucmVsZWFzZU5vbk51bGwoKSk7Cisg
ICAgcmV0dXJuIGltYWdlRGF0YTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpwdXRJbWFnZURhdGEoSW1hZ2VEYXRhJiBkYXRhLCBmbG9hdCBkeCwgZmxvYXQgZHkpCkBA
IC0yMjE3LDExICsyMjEyLDYgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpw
dXRJbWFnZURhdGEoSW1hZ2VEYXRhJiBkYXRhLCBmbG9hdCBkeCwgZmxvYXQKIH0KIAogdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwdXRJbWFnZURhdGEoSW1hZ2VEYXRhJiBkYXRh
LCBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGRpcnR5WCwgZmxvYXQgZGlydHlZLCBmbG9hdCBk
aXJ0eVdpZHRoLCBmbG9hdCBkaXJ0eUhlaWdodCkKLXsKLSAgICBwdXRJbWFnZURhdGEoZGF0YSwg
SW1hZ2VCdWZmZXI6OkxvZ2ljYWxDb29yZGluYXRlU3lzdGVtLCBkeCwgZHksIGRpcnR5WCwgZGly
dHlZLCBkaXJ0eVdpZHRoLCBkaXJ0eUhlaWdodCk7Ci19Ci0KLXZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6cHV0SW1hZ2VEYXRhKEltYWdlRGF0YSYgZGF0YSwgSW1hZ2VCdWZmZXI6
OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSwgZmxvYXQgZHgsIGZsb2F0IGR5LCBm
bG9hdCBkaXJ0eVgsIGZsb2F0IGRpcnR5WSwgZmxvYXQgZGlydHlXaWR0aCwgZmxvYXQgZGlydHlI
ZWlnaHQpCiB7CiAgICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlciA9IGNhbnZhc0Jhc2UoKS5idWZmZXIo
KTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTIyNDUsNyArMjIzNSw3IEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6cHV0SW1hZ2VEYXRhKEltYWdlRGF0YSYgZGF0YSwgSW1hZ2VC
dWZmZXI6OkNvCiAgICAgSW50U2l6ZSBkZXN0T2Zmc2V0KHN0YXRpY19jYXN0PGludD4oZHgpLCBz
dGF0aWNfY2FzdDxpbnQ+KGR5KSk7CiAgICAgSW50UmVjdCBkZXN0UmVjdCA9IGVuY2xvc2luZ0lu
dFJlY3QoY2xpcFJlY3QpOwogICAgIGRlc3RSZWN0Lm1vdmUoZGVzdE9mZnNldCk7Ci0gICAgZGVz
dFJlY3QuaW50ZXJzZWN0KEludFJlY3QoSW50UG9pbnQoKSwgY29vcmRpbmF0ZVN5c3RlbSA9PSBJ
bWFnZUJ1ZmZlcjo6TG9naWNhbENvb3JkaW5hdGVTeXN0ZW0gPyBidWZmZXItPmxvZ2ljYWxTaXpl
KCkgOiBidWZmZXItPmludGVybmFsU2l6ZSgpKSk7CisgICAgZGVzdFJlY3QuaW50ZXJzZWN0KElu
dFJlY3QoSW50UG9pbnQoKSwgYnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSk7CiAgICAgaWYgKGRlc3RS
ZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEludFJlY3Qgc291cmNlUmVjdChk
ZXN0UmVjdCk7CkBAIC0yMjUzLDcgKzIyNDMsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OnB1dEltYWdlRGF0YShJbWFnZURhdGEmIGRhdGEsIEltYWdlQnVmZmVyOjpDbwog
ICAgIHNvdXJjZVJlY3QuaW50ZXJzZWN0KEludFJlY3QoMCwgMCwgZGF0YS53aWR0aCgpLCBkYXRh
LmhlaWdodCgpKSk7CiAKICAgICBpZiAoIXNvdXJjZVJlY3QuaXNFbXB0eSgpKQotICAgICAgICBi
dWZmZXItPnB1dEJ5dGVBcnJheSgqZGF0YS5kYXRhKCksIEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlVucHJlbXVsdGlwbGllZCwgSW50U2l6ZShkYXRhLndpZHRoKCksIGRhdGEuaGVpZ2h0KCkpLCBz
b3VyY2VSZWN0LCBJbnRQb2ludChkZXN0T2Zmc2V0KSwgY29vcmRpbmF0ZVN5c3RlbSk7CisgICAg
ICAgIGJ1ZmZlci0+cHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCwgZGF0YSwgc291cmNlUmVjdCwgSW50UG9pbnQoZGVzdE9mZnNldCkpOwogCiAgICAg
ZGlkRHJhdyhkZXN0UmVjdCwgQ2FudmFzRGlkRHJhd0FwcGx5Tm9uZSk7IC8vIGlnbm9yZSB0cmFu
c2Zvcm0sIHNoYWRvdyBhbmQgY2xpcAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCmluZGV4IDNkZmM5Yzlm
Y2U1MmJlODg5MmJmNDk4YWU2NzIyMTg3ZjFiZWU5MWQuLmRiM2ZhYzhiMDhiNzAzYmQ1NDFmYzcy
ZjRkMzFiZDUxNzczNTA0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKQEAgLTM3MSw5ICszNzEsNiBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIGZ1bGxDYW52YXNDb21w
b3NpdGVkRHJhd0ltYWdlKFQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBD
b21wb3NpdGVPcGVyYXRvcik7CiAKLSAgICBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4g
Z2V0SW1hZ2VEYXRhKEltYWdlQnVmZmVyOjpDb29yZGluYXRlU3lzdGVtLCBmbG9hdCBzeCwgZmxv
YXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCkgY29uc3Q7Ci0gICAgdm9pZCBwdXRJbWFnZURhdGEo
SW1hZ2VEYXRhJiwgSW1hZ2VCdWZmZXI6OkNvb3JkaW5hdGVTeXN0ZW0sIGZsb2F0IGR4LCBmbG9h
dCBkeSwgZmxvYXQgZGlydHlYLCBmbG9hdCBkaXJ0eVksIGZsb2F0IGRpcnR5V2lkdGgsIGZsb2F0
IGRpcnR5SGVpZ2h0KTsKLQogICAgIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgYm9vbCBoYXNJbnZlcnRpYmxlVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gc3RhdGUoKS5oYXNJbnZlcnRpYmxlVHJhbnNmb3JtOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAKaW5kZXggZjU4NmNjYjE3OGM3NmU1NzhjMjEzMDg0NmExZmJmYTdlZmZkN2FmNS4uNjM3ZTc3
YzVmZWRhYjMzYzViZGI4MGM2ZmQwZTExYWI3ZjRhODIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cApAQCAtNDk0LDYgKzQ5NCwxMyBAQCB2b2lkIENocm9tZTo6c2V0Q3Vyc29ySGlkZGVuVW50aWxN
b3VzZU1vdmVzKGJvb2wgaGlkZGVuVW50aWxNb3VzZU1vdmVzKQogICAgIG1fY2xpZW50LnNldEN1
cnNvckhpZGRlblVudGlsTW91c2VNb3ZlcyhoaWRkZW5VbnRpbE1vdXNlTW92ZXMpOwogfQogCitS
ZW5kZXJpbmdCYWNrZW5kKiBDaHJvbWU6OnNoYXJlZFJlbmRlcmluZ0JhY2tlbmQoKSBjb25zdAor
eworICAgIGlmICghbV9yZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICBtX3JlbmRlcmluZ0JhY2tl
bmQgPSBtX2NsaWVudC5jcmVhdGVSZW5kZXJpbmdCYWNrZW5kKCk7CisgICAgcmV0dXJuIG1fcmVu
ZGVyaW5nQmFja2VuZC5nZXQoKTsKK30KKwogUGxhdGZvcm1EaXNwbGF5SUQgQ2hyb21lOjpkaXNw
bGF5SUQoKSBjb25zdAogewogICAgIHJldHVybiBtX2Rpc3BsYXlJRDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5o
CmluZGV4IDY2MmJlMDBmYTBhYmFlOGI3YmE3ZDY2OGQ0NDcwZWM1MTM2MWFmNDkuLjZjZmNhZWNh
Mjg1YzRlYmM1ZTIyNDRlOGViZDY0YmFjOWE3NjJlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAt
ODMsNiArODMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkg
b3ZlcnJpZGU7CiAKKyAgICBSZW5kZXJpbmdCYWNrZW5kKiBzaGFyZWRSZW5kZXJpbmdCYWNrZW5k
KCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCkgb3ZlcnJp
ZGUgeyB9CiAKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCBvdmVycmlk
ZTsKQEAgLTE5NSw2ICsxOTcsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgYm9vbCBtX2lzRGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2VTdXBwcmVzc2VkIHsg
ZmFsc2UgfTsKICNlbmRpZgorICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFJlbmRlcmluZ0Jh
Y2tlbmQ+IG1fcmVuZGVyaW5nQmFja2VuZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDk4OWJhZjRhN2Q3ZjMzNTQ1OTMyYmQ5
MzA0M2VmNDNiYTdhYTUxMmEuLmI1OWNlMTNkOWVjMzMwMTkzZDgwMzQ3YzBjZjg3MWQ5MjU4Y2E1
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtNDMsNiArNDMsNyBAQAogI2lu
Y2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgi
CiAjaW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdC
YWNrZW5kLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdD
b29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudS5oIgpAQCAtMzA1LDYgKzMw
Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+
IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCkgY29uc3QgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQorCiAgICAgLy8gUGFzcyBudWxscHRyIGFzIHRoZSBHcmFwaGljc0xheWVyIHRv
IGRldGF0Y2ggdGhlIHJvb3QgbGF5ZXIuCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFw
aGljc0xheWVyKEZyYW1lJiwgR3JhcGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
YXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCmluZGV4IDRjMzUzMzA5MTYxOWRj
NjQzZjg3MjkwOWNiNzFmNzgyOGVmODViYmMuLmU2MGNkZTE0ZDFhN2M2YzMwNDI4OTA3NTA3YzYx
MGJlNTVkZTFhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3Bw
CkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBSZWYKICAgICAgICAgICAg
ICAgICBhdXRvIHNvdXJjZVNpemUgPSBpbWFnZURhdGEtPnNpemUoKTsKICAgICAgICAgICAgICAg
ICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc291cmNlU2l6ZSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCkpIHsKICAgICAgICAgICAgICAgICAgICAgSW50
UmVjdCBzb3VyY2VSZWN0KEludFBvaW50KCksIHNvdXJjZVNpemUpOwotICAgICAgICAgICAgICAg
ICAgICBpbWFnZUJ1ZmZlci0+cHV0Qnl0ZUFycmF5KCppbWFnZURhdGEtPmRhdGEoKSwgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0
LCBJbnRQb2ludCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2VCdWZmZXItPnB1dEltYWdl
RGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsICppbWFnZURhdGEs
IHNvdXJjZVJlY3QpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXIt
PnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zLCBXVEY6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlv
bjo6WWVzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWlyby5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0NhaXJvLmNtYWtlCmluZGV4IDlhM2E4YmY5NDNhZDY1ODZkYTQzY2VkMGRhN2U2M2YwNTVh
YjlhNWQuLjEyYTJkNzRmZmJlOGZjYzczZjA2OGJiZmNiYTAwNTQwNzc1NzE3NzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NhaXJvLmNtYWtlCkBAIC0xMyw3ICsxMywxMCBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9DYWlyb09wZXJhdGlvbnMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
VXRpbGl0aWVzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uaAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNh
aXJvLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2Vu
ZC5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFj
ZUJhY2tlbmQuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9J
bWFnZVN1cmZhY2VCYWNrZW5kLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Bs
YXRmb3JtQ29udGV4dENhaXJvLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9SZWZQdHJD
YWlyby5oCiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKaW5kZXggMmNmZWNhZGMy
NGQ5ODJhODYxNjM3NGI3NmEwZTRmYjBmZmY3YTlkNC4uODk4NjUzNDZjZjQ4MGY4MDZjNWMwY2U5
MzUyMWRlNjkyMDgxODA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9z
dFdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDE0ICsyMywxNCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBIb3N0V2luZG93
X2gKLSNkZWZpbmUgSG9zdFdpbmRvd19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldpZGdl
dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnNvcjsKK2NsYXNzIFJlbmRl
cmluZ0JhY2tlbmQ7CiAKIGNsYXNzIEhvc3RXaW5kb3cgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEhvc3RXaW5kb3cpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY0LDYgKzY0LDgg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VN
b3Zlcyhib29sKSA9IDA7CiAKKyAgICB2aXJ0dWFsIFJlbmRlcmluZ0JhY2tlbmQqIHNoYXJlZFJl
bmRlcmluZ0JhY2tlbmQoKSBjb25zdCA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVB
bmltYXRpb24oKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJ
RCgpIGNvbnN0ID0gMDsKQEAgLTc1LDUgKzc3LDMgQEAgcHVibGljOgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gSG9zdFdpbmRvd19oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0IGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU291cmNlc0NhaXJvLnR4dAppbmRleCBmOTBkMjQ2ZWM1OWI0ZjhhOGUxMzhiNzIyNDBj
ZjIwMjU4MzE5MmM0Li42ZmE0ZmZlMTQ2MGVhNzEzODIxYmNhMzYyMjZkMjZhOTdlNWQ5OTg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNDYWlyby50eHQKQEAgLTMwLDcgKzMwLDEw
IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRHTENhaXJvLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb0JhY2tlbmQuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
R0xTdXJmYWNlQmFja2VuZC5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lu
dFJlY3RDYWlyby5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8u
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAKaW5kZXggNDgyMjQ0YTRmMmJkY2VkZTdjODc0Y2QxYjUwZWE5MTRiMTQ5OWEyMi4uZGRkNWM2
YzczNDVhMmMwZDhiZDlhOGU0ZWZiNGUzY2I5OTU4N2M2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtMTY1LDEyICsxNjUsNyBA
QCBOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWVS
ZXNwZWN0aW5nT3JpZW50YXRpb24oY29ucwogICAgICAgICByZXR1cm4gaW1hZ2U7CiAKICAgICBi
dWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIHJlY3Quc2l6ZSgpLCByZWN0
LCByZWN0LCB7IG9yaWVudGF0aW9uIH0pOwotCi0jaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQp
CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoYnVm
ZmVyKSk7Ci0jZWxpZiBVU0UoQ0FJUk8pCi0gICAgcmV0dXJuIGJ1ZmZlci0+bmF0aXZlSW1hZ2Uo
KTsKLSNlbmRpZgogfQogCiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dHVhbEltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0dWFsSW1hZ2VCdWZmZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
OGYzMjc4MjEwNWE4NGU5MjU2MjA1MmI5ZDRjNzBhZDZmNjU4OTQyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dHVhbEltYWdlQnVmZmVy
LmgKQEAgLTAsMCArMSwxODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2lu
Y2x1ZGUgIkltYWdlRGF0YS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5
cGVuYW1lIEJhY2tlbmRUeXBlPgorY2xhc3MgQ29udGV4dHVhbEltYWdlQnVmZmVyIDogcHVibGlj
IEltYWdlQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZl
clR5cGUgPSBDb250ZXh0dWFsSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
Y29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQor
ICAgIHsKKyAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShzaXplLCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGhvc3RXaW5kb3cpOworICAgICAgICBpZiAoIWJh
Y2tlbmQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclR5cGU+KG5ldyBJbWFnZUJ1ZmZlclR5cGUoV1RGTW92ZShi
YWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOworICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbnRleHR1YWxJbWFn
ZUJ1ZmZlciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQorICAgIHsKKyAg
ICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShzaXplLCBjb250ZXh0KTsK
KyAgICAgICAgaWYgKCFiYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJUeXBlPihuZXcgSW1hZ2VCdWZm
ZXJUeXBlKFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50
cykuLi4pKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBDb250ZXh0dWFsSW1hZ2VCdWZmZXIo
c3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQpCisgICAgICAgIDogbV9iYWNr
ZW5kKFdURk1vdmUoYmFja2VuZCkpCisgICAgeworICAgIH0KKworICAgIENvbnRleHR1YWxJbWFn
ZUJ1ZmZlcigpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgQmFja2VuZFR5cGUqIGVuc3VyZUJh
Y2tlbmQoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0KKworICAgIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQo
bV9iYWNrZW5kKTsKKyAgICAgICAgcmV0dXJuIG1fYmFja2VuZC0+Y29udGV4dCgpOworICAgIH0K
KworICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGZsdXNo
RHJhd2luZ0NvbnRleHQoKTsKKyAgICAgICAgbV9iYWNrZW5kLT5mbHVzaENvbnRleHQoKTsKKyAg
ICB9CisKKyAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fYmFja2VuZC0+YmFzZVRyYW5zZm9ybSgpOyB9CisgICAgSW50U2l6ZSBsb2dp
Y2FsU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFja2VuZC0+bG9naWNhbFNpemUo
KTsgfQorICAgIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2JhY2tlbmQtPmJhY2tlbmRTaXplKCk7IH0KKyAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpOyB9CisK
KyAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFja2Vu
ZC0+bWVtb3J5Q29zdCgpOyB9CisgICAgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFja2VuZC0+ZXh0ZXJuYWxNZW1vcnlDb3N0KCk7IH0KKwor
ICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlC
ZWhhdmlvciA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAg
ICBjb25zdF9jYXN0PENvbnRleHR1YWxJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaERyYXdpbmdD
b250ZXh0KCk7CisgICAgICAgIHJldHVybiBtX2JhY2tlbmQtPmNvcHlOYXRpdmVJbWFnZShjb3B5
QmVoYXZpb3IpOworICAgIH0KKworICAgIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgY29weUJlaGF2aW9yID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0
aW9uIHByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0IG92
ZXJyaWRlCisgICAgeworICAgICAgICBjb25zdF9jYXN0PENvbnRleHR1YWxJbWFnZUJ1ZmZlciY+
KCp0aGlzKS5mbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgICAgIHJldHVybiBtX2JhY2tlbmQt
PmNvcHlJbWFnZShjb3B5QmVoYXZpb3IsIHByZXNlcnZlUmVzb2x1dGlvbik7CisgICAgfQorCisg
ICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpIG92ZXJyaWRlCisgICAgeworICAgICAgICBmbHVzaERyYXdpbmdD
b250ZXh0KCk7CisgICAgICAgIG1fYmFja2VuZC0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOworICAgIH0KKworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOworICAgICAgICBtX2JhY2tlbmQtPmRyYXdQYXR0ZXJu
KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IHNwYWNpbmcsIG9wdGlvbnMpOworICAgIH0KKworICAgIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRv
TmF0aXZlSW1hZ2UoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4
dCgpOworICAgICAgICByZXR1cm4gbV9iYWNrZW5kLT5zaW5rSW50b05hdGl2ZUltYWdlKCk7Cisg
ICAgfQorCisgICAgUmVmUHRyPEltYWdlPiBzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlv
biBwcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOworICAgICAgICByZXR1cm4gbV9i
YWNrZW5kLT5zaW5rSW50b0ltYWdlKHByZXNlcnZlUmVzb2x1dGlvbik7CisgICAgfQorCisgICAg
dm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpIG92ZXJyaWRlCisgICAgeworICAgICAgICBmbHVzaERy
YXdpbmdDb250ZXh0KCk7CisgICAgICAgIG1fYmFja2VuZC0+ZHJhd0NvbnN1bWluZyhkZXN0Q29u
dGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgIH0KKworICAgIHZvaWQgY29u
dmVydFRvTHVtaW5hbmNlTWFzaygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBmbHVzaERyYXdp
bmdDb250ZXh0KCk7CisgICAgICAgIG1fYmFja2VuZC0+Y29udmVydFRvTHVtaW5hbmNlTWFzaygp
OworICAgIH0KKworICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlIHNyY0Nv
bG9yU3BhY2UsIENvbG9yU3BhY2UgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgICAgIG1fYmFja2VuZC0+dHJhbnNmb3Jt
Q29sb3JTcGFjZShzcmNDb2xvclNwYWNlLCBkZXN0Q29sb3JTcGFjZSk7CisgICAgfQorCisgICAg
U3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+
IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IG92
ZXJyaWRlCisgICAgeworICAgICAgICBjb25zdF9jYXN0PENvbnRleHR1YWxJbWFnZUJ1ZmZlciY+
KCp0aGlzKS5mbHVzaENvbnRleHQoKTsKKyAgICAgICAgcmV0dXJuIG1fYmFja2VuZC0+dG9EYXRh
VVJMKG1pbWVUeXBlLCBxdWFsaXR5LCBwcmVzZXJ2ZVJlc29sdXRpb24pOworICAgIH0KKworICAg
IFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgY29uc3RfY2FzdDxDb250ZXh0dWFsSW1hZ2VCdWZmZXImPigqdGhpcykuZmx1c2hDb250
ZXh0KCk7CisgICAgICAgIHJldHVybiBtX2JhY2tlbmQtPnRvRGF0YShtaW1lVHlwZSwgcXVhbGl0
eSk7CisgICAgfQorCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25zdCBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgY29uc3RfY2FzdDxDb250ZXh0dWFsSW1hZ2VCdWZmZXImPigq
dGhpcykuZmx1c2hDb250ZXh0KCk7CisgICAgICAgIHJldHVybiBtX2JhY2tlbmQtPnRvQkdSQURh
dGEoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNv
bnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBjb25zdF9jYXN0PENvbnRleHR1YWxJbWFnZUJ1
ZmZlciY+KCp0aGlzKS5mbHVzaENvbnRleHQoKTsKKyAgICAgICAgcmV0dXJuIG1fYmFja2VuZC0+
Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7CisgICAgfQorCisgICAgdm9pZCBw
dXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1h
Z2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50
JiBkZXN0UG9pbnQgPSB7IH0pIG92ZXJyaWRlCisgICAgeworICAgICAgICBmbHVzaENvbnRleHQo
KTsKKyAgICAgICAgbV9iYWNrZW5kLT5wdXRJbWFnZURhdGEoaW5wdXRGb3JtYXQsIGltYWdlRGF0
YSwgc3JjUmVjdCwgZGVzdFBvaW50KTsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBtX2JhY2tl
bmQtPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICB9CisKKyAgICBib29sIGNvcHlUb1BsYXRmb3JtVGV4
dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgY29udGV4dCwgR0NHTGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybUdMT2JqZWN0IGRlc3RpbmF0aW9uVGV4dHVyZSwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgY29uc3Qgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2JhY2tlbmQtPmNvcHlUb1BsYXRmb3JtVGV4dHVyZShjb250
ZXh0LCB0YXJnZXQsIGRlc3RpbmF0aW9uVGV4dHVyZSwgaW50ZXJuYWxmb3JtYXQsIHByZW11bHRp
cGx5QWxwaGEsIGZsaXBZKTsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5
cGU+IG1fYmFja2VuZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45ZGIwZjBkZmJjNDdjYTEyZDczYzQzNzg2ZWExYTg5NzlmZDBiNTQ1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlci5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJD
b250ZXh0dWFsSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmFja2Vu
ZFR5cGU+CitjbGFzcyBEaXNwbGF5TGlzdEltYWdlQnVmZmVyIDogcHVibGljIENvbnRleHR1YWxJ
bWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4gLCBwdWJsaWMgRGlzcGxheUxpc3Q6OkRyYXdpbmdDb250
ZXh0IHsKKyAgICB1c2luZyBCYXNlQ29udGV4dHVhbEltYWdlQnVmZmVyID0gQ29udGV4dHVhbElt
YWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKKworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KiBo
b3N0V2luZG93KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2VDb250ZXh0dWFsSW1hZ2VCdWZm
ZXI6OnRlbXBsYXRlIGNyZWF0ZTxEaXNwbGF5TGlzdEltYWdlQnVmZmVyPihzaXplLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGhvc3RXaW5kb3csIHNpemUpOworICAgIH0KKworICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUm
IHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBCYXNlQ29udGV4dHVhbEltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8RGlzcGxheUxp
c3RJbWFnZUJ1ZmZlcj4oc2l6ZSwgY29udGV4dCwgc2l6ZSk7CisgICAgfQorCisgICAgRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgZGF0YUJhY2tl
bmQsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKKyAgICAgICAgOiBCYXNlQ29udGV4dHVhbEltYWdl
QnVmZmVyKFdURk1vdmUoZGF0YUJhY2tlbmQpKQorICAgICAgICAsIERpc3BsYXlMaXN0OjpEcmF3
aW5nQ29udGV4dChzaXplKQorICAgIHsKKyAgICB9CisKKyAgICB+RGlzcGxheUxpc3RJbWFnZUJ1
ZmZlcigpCisgICAgeworICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgfQorCisg
ICAgRGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIG92ZXJyaWRl
IHsgcmV0dXJuIHRoaXM7IH0KKworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0
IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gRGlzcGxheUxpc3Q6OkRyYXdpbmdDb250
ZXh0Ojpjb250ZXh0KCk7CisgICAgfQorCisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIERpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6cmVw
bGF5RGlzcGxheUxpc3QoQmFzZUNvbnRleHR1YWxJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpKTsKKyAg
ICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKaW5kZXggMjBiOTgxMGMyOTE0MWU0NzNl
NmE4ODhiYzgwYzE0MTdhZWFjMmZhZi4uYWZhOGI1YTVkMDhlNTZhODYzZDQwYTlkZGU4MTU5NTBk
MjgyZGM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRGly
ayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDQ0ICsyOCw2NyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAKLSNpbmNsdWRlICJDb2xvclV0aWxp
dGllcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIkludFJlY3Qu
aCIKLSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlJl
bmRlcmluZ0JhY2tlbmQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3Qg
ZmxvYXQgTWF4Q2xhbXBlZExlbmd0aCA9IDQwOTY7CiBzdGF0aWMgY29uc3QgZmxvYXQgTWF4Q2xh
bXBlZEFyZWEgPSBNYXhDbGFtcGVkTGVuZ3RoICogTWF4Q2xhbXBlZExlbmd0aDsKIAotV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyKTsKLQogc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKLSAgICBib29s
IHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZl
cihuZXcgSW1hZ2VCdWZmZXIoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW5k
ZXJpbmdNb2RlLCBob3N0V2luZG93LCBzdWNjZXNzKSk7Ci0gICAgaWYgKCFzdWNjZXNzKQorICAg
IHJldHVybiBSZW5kZXJpbmdCYWNrZW5kOjpzaGFyZWRSZW5kZXJpbmdCYWNrZW5kKGhvc3RXaW5k
b3cpLmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2Fs
ZSwgY29sb3JTcGFjZSwgaG9zdFdpbmRvdyk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICByZXR1cm4gUmVuZGVyaW5nQmFja2VuZDo6
c2hhcmVkUmVuZGVyaW5nQmFja2VuZCgpLmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIGNvbnRleHQp
OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQoreworICAgIGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIGJ1ZmZlcjsKKworICAgIEludFNpemUgc2NhbGVkU2l6ZSA9
IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShzaXplLCBjb250ZXh0KTsKKworICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNjYWxlZFNpemUsIGNvbnRl
eHQpOworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgLy8gU2V0IHVwIGEgY29ycmVzcG9uZGluZyBzY2FsZSBmYWN0b3Igb24gdGhlIGdyYXBoaWNz
IGNvbnRleHQuCisgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShzY2FsZWRTaXplIC8g
c2l6ZSk7CisgICAgcmV0dXJuIGltYWdlQnVmZmVyOworCiB9CiAKLSNpZiBVU0UoRElSRUNUMkQp
Ci1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIobmV3IEltYWdlQnVmZmVyKHNpemUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgaG9zdFdpbmRvdywgdGFy
Z2V0Q29udGV4dCwgc3VjY2VzcykpOwotICAgIGlmICghc3VjY2VzcykKKyAgICBpZiAoc2l6ZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBidWZmZXI7CisK
KyAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNp
emUoc2l6ZSwgY29udGV4dCk7CisKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2NhbGVkU2l6ZSwgMSwgY29sb3JTcGFjZSwgY29udGV4
dCk7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICAvLyBTZXQgdXAgYSBjb3JyZXNwb25kaW5nIHNjYWxlIGZhY3RvciBvbiB0aGUgZ3JhcGhpY3Mg
Y29udGV4dC4KKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKHNjYWxlZFNpemUgLyBz
aXplKTsKKyAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQoreworICAgIHJldHVybiBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHNpemUsIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UpOwogfQotI2VuZGlmCiAKIGJvb2wgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0Ns
YW1waW5nKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAoc2l6ZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIHJldHVybiBmbG9vcmYoc2l6ZS5oZWlnaHQo
KSkgKiBmbG9vcmYoc2l6ZS53aWR0aCgpKSA+IE1heENsYW1wZWRBcmVhOwogfQogCkBAIC0xMDUs
OTEgKzEyOCwxMiBAQCBGbG9hdFJlY3QgSW1hZ2VCdWZmZXI6OmNsYW1wZWRSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKICAgICByZXR1cm4gRmxvYXRSZWN0KHJlY3QubG9jYXRpb24oKSwgY2xh
bXBlZFNpemUocmVjdC5zaXplKCkpKTsKIH0KIAotI2lmICFVU0UoQ0cpICYmICFVU0UoQ0FJUk8p
Ci1WZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXI6OnRvQkdSQURhdGEoKSBjb25zdAotewotICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBmb3Igb3RoZXIgYmFja2VuZHMuCi0gICAgcmV0dXJu
IHsgfTsKLX0KLSNlbmRpZgotCi0jaWYgIShVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkpCi12b2lk
IEltYWdlQnVmZmVyOjp0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFj
ZSwgQ29sb3JTcGFjZSBkc3RDb2xvclNwYWNlKQotewotICAgIGlmIChzcmNDb2xvclNwYWNlID09
IGRzdENvbG9yU3BhY2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIG9ubHkgc1JHQiA8LT4g
bGluZWFyUkdCIGFyZSBzdXBwb3J0ZWQgYXQgdGhlIG1vbWVudAotICAgIGlmICgoc3JjQ29sb3JT
cGFjZSAhPSBDb2xvclNwYWNlOjpMaW5lYXJSR0IgJiYgc3JjQ29sb3JTcGFjZSAhPSBDb2xvclNw
YWNlOjpTUkdCKQotICAgICAgICB8fCAoZHN0Q29sb3JTcGFjZSAhPSBDb2xvclNwYWNlOjpMaW5l
YXJSR0IgJiYgZHN0Q29sb3JTcGFjZSAhPSBDb2xvclNwYWNlOjpTUkdCKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKGRzdENvbG9yU3BhY2UgPT0gQ29sb3JTcGFjZTo6TGluZWFyUkdCKSB7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gbGluZWFyUmdi
TFVUID0gW10gewotICAgICAgICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGFycmF5Owot
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7Ci0gICAgICAg
ICAgICAgICAgZmxvYXQgY29sb3IgPSBpIC8gMjU1LjBmOwotICAgICAgICAgICAgICAgIGNvbG9y
ID0gc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnQoY29sb3IpOwotICAgICAgICAgICAgICAgIGFy
cmF5W2ldID0gc3RhdGljX2Nhc3Q8dWludDhfdD4ocm91bmQoY29sb3IgKiAyNTUpKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBhcnJheTsKLSAgICAgICAgfSgpOwotICAgICAg
ICBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UobGluZWFyUmdiTFVUKTsKLSAgICB9IGVsc2Ug
aWYgKGRzdENvbG9yU3BhY2UgPT0gQ29sb3JTcGFjZTo6U1JHQikgewotICAgICAgICBzdGF0aWMg
Y29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGRldmljZVJnYkxVVD0gW10gewotICAgICAg
ICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGFycmF5OwotICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgY29s
b3IgPSBpIC8gMjU1LjBmOwotICAgICAgICAgICAgICAgIGNvbG9yID0gbGluZWFyVG9TUkdCQ29s
b3JDb21wb25lbnQoY29sb3IpOwotICAgICAgICAgICAgICAgIGFycmF5W2ldID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4ocm91bmQoY29sb3IgKiAyNTUpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHJldHVybiBhcnJheTsKLSAgICAgICAgfSgpOwotICAgICAgICBwbGF0Zm9ybVRyYW5zZm9y
bUNvbG9yU3BhY2UoZGV2aWNlUmdiTFVUKTsKLSAgICB9Ci19Ci0KLSNlbmRpZiAvLyBVU0UoQ0cp
Ci0KLWlubGluZSB2b2lkIEltYWdlQnVmZmVyOjpnZW5lcmljQ29udmVydFRvTHVtaW5hbmNlTWFz
aygpCi17Ci0gICAgSW50UmVjdCBsdW1pbmFuY2VSZWN0KEludFBvaW50KCksIGludGVybmFsU2l6
ZSgpKTsKLSAgICBhdXRvIHNyY1BpeGVsQXJyYXkgPSBnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEo
bHVtaW5hbmNlUmVjdCk7Ci0gICAgaWYgKCFzcmNQaXhlbEFycmF5KQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgdW5zaWduZWQgcGl4ZWxBcnJheUxlbmd0aCA9IHNyY1BpeGVsQXJyYXktPmxl
bmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgcGl4ZWxPZmZzZXQgPSAwOyBwaXhlbE9mZnNldCA8
IHBpeGVsQXJyYXlMZW5ndGg7IHBpeGVsT2Zmc2V0ICs9IDQpIHsKLSAgICAgICAgdWludDhfdCBh
ID0gc3JjUGl4ZWxBcnJheS0+aXRlbShwaXhlbE9mZnNldCArIDMpOwotICAgICAgICBpZiAoIWEp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgdWludDhfdCByID0gc3JjUGl4ZWxBcnJh
eS0+aXRlbShwaXhlbE9mZnNldCk7Ci0gICAgICAgIHVpbnQ4X3QgZyA9IHNyY1BpeGVsQXJyYXkt
Pml0ZW0ocGl4ZWxPZmZzZXQgKyAxKTsKLSAgICAgICAgdWludDhfdCBiID0gc3JjUGl4ZWxBcnJh
eS0+aXRlbShwaXhlbE9mZnNldCArIDIpOwotICAgICAgICAKLSAgICAgICAgZG91YmxlIGx1bWEg
PSAociAqIDAuMjEyNSArIGcgKiAwLjcxNTQgKyBiICogMC4wNzIxKSAqICgoZG91YmxlKWEgLyAy
NTUuMCk7Ci0gICAgICAgIHNyY1BpeGVsQXJyYXktPnNldChwaXhlbE9mZnNldCArIDMsIGx1bWEp
OwotICAgIH0KLSAgICBwdXRCeXRlQXJyYXkoKnNyY1BpeGVsQXJyYXksIEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgbHVtaW5hbmNlUmVjdC5zaXplKCksIGx1bWluYW5j
ZVJlY3QsIEludFBvaW50KCkpOwotfQotCi12b2lkIEltYWdlQnVmZmVyOjpjb252ZXJ0VG9MdW1p
bmFuY2VNYXNrKCkKLXsKLSAgICAvLyBBZGQgcGxhdGZvcm0gc3BlY2lmaWMgZnVuY3Rpb25zIHdp
dGggcGxhdGZvcm1Db252ZXJ0VG9MdW1pbmFuY2VNYXNrIGhlcmUgbGF0ZXIuCi0gICAgZ2VuZXJp
Y0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKLX0KLQotI2lmICFVU0UoQ0FJUk8pCi1QbGF0Zm9y
bUxheWVyKiBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KLWJvb2wgSW1hZ2VCdWZmZXI6OmNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCYsIEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwg
Ym9vbCwgYm9vbCkKK0ludFNpemUgSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewot
ICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBFbmxhcmdlIHRoZSBidWZmZXIgc2l6ZSBpZiB0aGUg
Y29udGV4dCdzIHRyYW5zZm9ybSBpcyBzY2FsaW5nIGl0IHNvIHdlIG5lZWQgYSBoaWdoZXIKKyAg
ICAvLyByZXNvbHV0aW9uIHRoYW4gb25lIHBpeGVsIHBlciB1bml0LgorICAgIHJldHVybiBleHBh
bmRlZEludFNpemUoc2l6ZSAqIGNvbnRleHQuc2NhbGVGYWN0b3IoKSk7CiB9Ci0jZW5kaWYKIAog
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZl
cihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogewpAQCAtMjA2LDUwICsxNTAsMTkgQEAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBG
bG9hdFJlY3QmIHJlY3QKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCitOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJ
bWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQogewotICAgIGlm
IChzaXplLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBJbnRTaXpl
IHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUoc2l6ZSwgY29u
dGV4dCk7Ci0KLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKHNjYWxlZFNpemUsIDEsIGNvbG9yU3BhY2UsIGNvbnRleHQpOwotICAgIGlmICghYnVm
ZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIC8vIFNldCB1cCBhIGNvcnJlc3Bv
bmRpbmcgc2NhbGUgZmFjdG9yIG9uIHRoZSBncmFwaGljcyBjb250ZXh0LgotICAgIGJ1ZmZlci0+
Y29udGV4dCgpLnNjYWxlKHNjYWxlZFNpemUgLyBzaXplKTsKLSAgICByZXR1cm4gYnVmZmVyOwot
fQotCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
LXsKLSNpZiBVU0UoRElSRUNUMkQpCi0gICAgcmV0dXJuIGNyZWF0ZShzaXplLCBjb250ZXh0LnJl
bmRlcmluZ01vZGUoKSwgJmNvbnRleHQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSk7Ci0j
ZWxzZQotICAgIHJldHVybiBjcmVhdGUoc2l6ZSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCksIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSk7Ci0jZW5kaWYKKyAgICByZXR1cm4gaW1hZ2VCdWZm
ZXItPnNpbmtJbnRvTmF0aXZlSW1hZ2UoKTsKIH0KIAotSW50U2l6ZSBJbWFnZUJ1ZmZlcjo6Y29t
cGF0aWJsZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCitSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdl
KHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIFByZXNlcnZlUmVzb2x1
dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCiB7Ci0gICAgLy8gRW5sYXJnZSB0aGUgYnVmZmVyIHNp
emUgaWYgdGhlIGNvbnRleHQncyB0cmFuc2Zvcm0gaXMgc2NhbGluZyBpdCBzbyB3ZSBuZWVkIGEg
aGlnaGVyCi0gICAgLy8gcmVzb2x1dGlvbiB0aGFuIG9uZSBwaXhlbCBwZXIgdW5pdC4KLSAgICBy
ZXR1cm4gZXhwYW5kZWRJbnRTaXplKHNpemUgKiBjb250ZXh0LnNjYWxlRmFjdG9yKCkpOworICAg
IHJldHVybiBpbWFnZUJ1ZmZlci0+c2lua0ludG9JbWFnZShwcmVzZXJ2ZVJlc29sdXRpb24pOwog
fQogCi0jaWYgIVVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCi1zaXplX3QgSW1h
Z2VCdWZmZXI6Om1lbW9yeUNvc3QoKSBjb25zdAordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1
bWluZyhzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAg
Ly8gbWVtb3J5Q29zdCgpIG1heSBiZSBpbnZva2VkIGNvbmN1cnJlbnRseSBmcm9tIGEgR0MgdGhy
ZWFkLCBhbmQgd2UgbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0IHdoYXQgZGF0YSB3ZSBhY2Nlc3Mg
aGVyZSBhbmQgaG93LgotICAgIC8vIEl0J3Mgc2FmZSB0byBhY2Nlc3MgaW50ZXJuYWxTaXplKCkg
YmVjYXVzZSBpdCBkb2Vzbid0IGRvIGFueSBwb2ludGVyIGNoYXNpbmcuCi0gICAgcmV0dXJuIDQg
KiBpbnRlcm5hbFNpemUoKS53aWR0aCgpICogaW50ZXJuYWxTaXplKCkuaGVpZ2h0KCk7CisgICAg
aW1hZ2VCdWZmZXItPmRyYXdDb25zdW1pbmcoY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
dGlvbnMpOwogfQogCi1zaXplX3QgSW1hZ2VCdWZmZXI6OmV4dGVybmFsTWVtb3J5Q29zdCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQotfQorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgK
aW5kZXggN2I3NzJhMmYyZDhmNmU3NTc3ZWFmYzZkYjIyOTMwNmI3Y2ZlZGY5Yi4uMzU1MWY0NWY4
MmJlYmEzN2YyOTcxYTA5NTA3ZDJiNWYyZjUyZDU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBM
dGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNywxNjAgKzI3
LDgzIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0j
aW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgotI2luY2x1ZGUgIkNvbG9yU3BhY2Uu
aCIKLSNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dM
LmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJEYXRhLmgiCi0jaW5jbHVkZSAiSW1hZ2VQYWludGlu
Z09wdGlvbnMuaCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXll
ci5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZC5oIgogI2luY2x1ZGUgIlJlbmRlcmlu
Z01vZGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgot
I2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZsb2F0UmVjdDsKLWNsYXNz
IEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwotY2xhc3Mg
SW1hZ2U7Ci1jbGFzcyBJbWFnZURhdGE7Ci1jbGFzcyBJbnRQb2ludDsKLWNsYXNzIEludFJlY3Q7
Ci1jbGFzcyBIb3N0V2luZG93OwotCi1lbnVtIEJhY2tpbmdTdG9yZUNvcHkgewotICAgIENvcHlC
YWNraW5nU3RvcmUsIC8vIEd1YXJhbnRlZSBzdWJzZXF1ZW50IGRyYXdzIGRvbid0IGFmZmVjdCB0
aGUgY29weS4KLSAgICBEb250Q29weUJhY2tpbmdTdG9yZSAvLyBTdWJzZXF1ZW50IGRyYXdzIG1h
eSBhZmZlY3QgdGhlIGNvcHkuCi19OwotCi1lbnVtIGNsYXNzIFByZXNlcnZlUmVzb2x1dGlvbiB7
Ci0gICAgTm8sCi0gICAgWWVzLAotfTsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CitjbGFzcyBE
cmF3aW5nQ29udGV4dDsKK30KIAogY2xhc3MgSW1hZ2VCdWZmZXIgewotICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURURfRVhQT1JUKEltYWdlQnVmZmVyLCBXRUJDT1JFX0VYUE9SVCk7Ci0gICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXIpOwotICAgIGZyaWVuZCBjbGFzcyBJT1N1cmZh
Y2U7CiBwdWJsaWM6Ci0gICAgLy8gV2lsbCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2Nh
dGlvbiBmYWlsdXJlLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6U1JHQiwgY29u
c3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKLSNpZiBVU0UoRElSRUNUMkQpCi0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCosIGZsb2F0
IHJlc29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpTUkdCLCBjb25z
dCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwotI2VuZGlmCi0KLSAgICAvLyBDcmVhdGUgYW4gaW1h
Z2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0aGUgY29udGV4dCBhbmQgY29weSByZWN0IGZyb20g
dGhpcyBidWZmZXIgaW50byB0aGlzIG5ldyBvbmUuCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsK
IAogICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250
ZXh0LCB3aXRoIHN1aXRhYmxlIHJlc29sdXRpb24gZm9yIGRyYXdpbmcgaW50byB0aGUgYnVmZmVy
IGFuZCB0aGVuIGludG8gdGhpcyBjb250ZXh0LgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29u
c3QgR3JhcGhpY3NDb250ZXh0Jik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBDb2xvclNwYWNl
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAK
LSAgICBzdGF0aWMgSW50U2l6ZSBjb21wYXRpYmxlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIHVz
ZWQgd2hlbiBjbGFtcGluZyB0aGUgSW1hZ2VCdWZmZXIgd2hpY2ggaXMgY3JlYXRlZCBmb3IgZmls
dGVyLCBtYXNrZXIgb3IgY2xpcHBlci4KKyAgICBzdGF0aWMgYm9vbCBzaXplTmVlZHNDbGFtcGlu
Zyhjb25zdCBGbG9hdFNpemUmKTsKKyAgICBzdGF0aWMgYm9vbCBzaXplTmVlZHNDbGFtcGluZyhj
b25zdCBGbG9hdFNpemUmLCBGbG9hdFNpemUmIHNjYWxlKTsKKyAgICBzdGF0aWMgRmxvYXRTaXpl
IGNsYW1wZWRTaXplKGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIHN0YXRpYyBGbG9hdFNpemUgY2xh
bXBlZFNpemUoY29uc3QgRmxvYXRTaXplJiwgRmxvYXRTaXplJiBzY2FsZSk7CisgICAgc3RhdGlj
IEZsb2F0UmVjdCBjbGFtcGVkUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIH5JbWFnZUJ1ZmZlcigpOworICAgIHN0YXRpYyBJbnRTaXplIGNvbXBhdGlibGVCdWZm
ZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOworICAgIAor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCi0g
ICAgLy8gVGhlIGFjdHVhbCByZXNvbHV0aW9uIG9mIHRoZSBiYWNraW5nIHN0b3JlCi0gICAgY29u
c3QgSW50U2l6ZSYgaW50ZXJuYWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAg
Y29uc3QgSW50U2l6ZSYgbG9naWNhbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxTaXpl
OyB9Ci0gICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHV0
aW9uU2NhbGU7IH0KKyAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb250ZXh0KCkgPSAwOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBE
aXNwbGF5TGlzdDo6RHJhd2luZ0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgeyB9CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5
ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0
aW9uOjpObykgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZT4g
c2lua0ludG9JbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBQcmVzZXJ2ZVJlc29s
dXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKTsKKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5z
Zm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50U2l6ZSBsb2dp
Y2FsU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFNpemUgYmFja2VuZFNpemUoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCA9IDA7
CisgICAgCisgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCA9IDA7CiAKLSAgICBlbnVt
IENvb3JkaW5hdGVTeXN0ZW0geyBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSwgQmFja2luZ1N0b3Jl
Q29vcmRpbmF0ZVN5c3RlbSB9OworICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2
ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29w
eUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpO
bykgY29uc3QgPSAwOwogCi0gICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRVbm11bHRp
cGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYsIEludFNpemUqIHBpeGVsQXJyYXlEaW1lbnNp
b25zID0gbnVsbHB0ciwgQ29vcmRpbmF0ZVN5c3RlbSA9IExvZ2ljYWxDb29yZGluYXRlU3lzdGVt
KSBjb25zdDsKLSAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldFByZW11bHRpcGxpZWRJ
bWFnZURhdGEoY29uc3QgSW50UmVjdCYsIEludFNpemUqIHBpeGVsQXJyYXlEaW1lbnNpb25zID0g
bnVsbHB0ciwgQ29vcmRpbmF0ZVN5c3RlbSA9IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKSBjb25z
dDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNvcHlSZWN0VG9CdWZmZXIoY29u
c3QgRmxvYXRSZWN0JiwgQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKLSAg
ICB2b2lkIHB1dEJ5dGVBcnJheShjb25zdCBVaW50OENsYW1wZWRBcnJheSYsIEFscGhhUHJlbXVs
dGlwbGljYXRpb24gYnVmZmVyRm9ybWF0LCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGlu
YXRlU3lzdGVtID0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pOwotICAgIAotICAgIHZvaWQgY29u
dmVydFRvTHVtaW5hbmNlTWFzaygpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSkgPSAwOwogCi0gICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBXVEY6Om51bGxvcHQsIFByZXNlcnZl
UmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0OwotICAgIFZlY3Rvcjx1
aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBx
dWFsaXR5ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKLSAgICBWZWN0b3I8dWludDhfdD4gdG9CR1JB
RGF0YSgpIGNvbnN0OworICAgIHN0YXRpYyBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUlt
YWdlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObyk7CisgICAg
c3RhdGljIHZvaWQgZHJhd0NvbnN1bWluZyhzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmID0geyB9KTsKIAotI2lmIFVTRShDQUlSTykKLSAgICBOYXRpdmVJbWFnZVB0ciBu
YXRpdmVJbWFnZSgpIGNvbnN0OwotI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRUb0x1
bWluYW5jZU1hc2soKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2Uo
Q29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRzdENvbG9yU3BhY2UpID0gMDsK
IAotI2lmICFVU0UoQ0cpCi0gICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsgfQotICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JT
cGFjZShDb2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIENvbG9yU3BhY2UgZHN0Q29sb3JTcGFjZSk7
Ci0gICAgdm9pZCBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3Qgc3RkOjphcnJheTx1
aW50OF90LCAyNTY+Jik7Ci0jZWxzZQotICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3Jt
KCkgY29uc3QgeyByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKDEsIDAsIDAsIC0xLCAwLCBtX2RhdGEu
YmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSk7IH0KLSNlbmRpZgotICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyB0b0RhdGFVUkwoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxs
b3B0LCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVsbG9wdCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25zdCA9IDA7CiAK
LSAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0OwotICAgIHNpemVfdCBleHRlcm5hbE1lbW9y
eUNvc3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0
YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3Jj
UmVjdCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCA9IHsgfSkgPSAwOwogCiAgICAg
Ly8gRklYTUU6IGN1cnJlbnQgaW1wbGVtZW50YXRpb25zIG9mIHRoaXMgbWV0aG9kIGhhdmUgdGhl
IHJlc3RyaWN0aW9uIHRoYXQgdGhleSBvbmx5IHdvcmsKICAgICAvLyB3aXRoIHRleHR1cmVzIHRo
YXQgYXJlIFJHQiBvciBSR0JBIGZvcm1hdCwgYW5kIFVOU0lHTkVEX0JZVEUgdHlwZS4KLSAgICBi
b29sIGNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYsIEdDR0xl
bnVtLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCk7CisgICAgdmlydHVh
bCBib29sIGNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYsIEdD
R0xlbnVtLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsK
IAotICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCB3aGVuIGNsYW1waW5nIHRoZSBJbWFn
ZUJ1ZmZlciB3aGljaCBpcyBjcmVhdGVkIGZvciBmaWx0ZXIsIG1hc2tlciBvciBjbGlwcGVyLgot
ICAgIHN0YXRpYyBib29sIHNpemVOZWVkc0NsYW1waW5nKGNvbnN0IEZsb2F0U2l6ZSYpOwotICAg
IHN0YXRpYyBib29sIHNpemVOZWVkc0NsYW1waW5nKGNvbnN0IEZsb2F0U2l6ZSYsIEZsb2F0U2l6
ZSYgc2NhbGUpOwotICAgIHN0YXRpYyBGbG9hdFNpemUgY2xhbXBlZFNpemUoY29uc3QgRmxvYXRT
aXplJik7Ci0gICAgc3RhdGljIEZsb2F0U2l6ZSBjbGFtcGVkU2l6ZShjb25zdCBGbG9hdFNpemUm
LCBGbG9hdFNpemUmIHNjYWxlKTsKLSAgICBzdGF0aWMgRmxvYXRSZWN0IGNsYW1wZWRSZWN0KGNv
bnN0IEZsb2F0UmVjdCYpOwotCi1wcml2YXRlOgotI2lmIFVTRShDRykKLSAgICAvLyBUaGUgcmV0
dXJuZWQgaW1hZ2UgbWlnaHQgYmUgbGFyZ2VyIHRoYW4gdGhlIGludGVybmFsU2l6ZSgpLiBJZiB5
b3Ugd2FudCB0aGUgc21hbGxlcgotICAgIC8vIGltYWdlLCBjcm9wIHRoZSByZXN1bHQuCi0gICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0g
Q29weUJhY2tpbmdTdG9yZSkgY29uc3Q7Ci0gICAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBzaW5rSW50b05hdGl2ZUltYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4pOwotICAg
IHZvaWQgZmx1c2hDb250ZXh0KCkgY29uc3Q7Ci0jZWxpZiBVU0UoRElSRUNUMkQpCi0gICAgQ09N
UHRyPElEMkQxQml0bWFwPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlC
YWNraW5nU3RvcmUpIGNvbnN0OwotICAgIHN0YXRpYyBDT01QdHI8SUQyRDFCaXRtYXA+IHNpbmtJ
bnRvTmF0aXZlSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPik7Ci0gICAgdm9pZCBm
bHVzaENvbnRleHQoKSBjb25zdDsKLSNlbmRpZgorcHJvdGVjdGVkOgorICAgIEltYWdlQnVmZmVy
KCkgPSBkZWZhdWx0OwogICAgIAotICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJl
Y3QoMCwgMCwgLTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKLSAg
ICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwotCi0gICAgc3Rh
dGljIHZvaWQgZHJhd0NvbnN1bWluZyhzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0geyB9KTsKLQotICAgIGlubGluZSB2b2lkIGdlbmVyaWNDb252ZXJ0VG9MdW1pbmFu
Y2VNYXNrKCk7Ci0KLSAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotICAgIGZyaWVu
ZCBjbGFzcyBHZW5lcmF0ZWRJbWFnZTsKLSAgICBmcmllbmQgY2xhc3MgQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2U7Ci0gICAgZnJpZW5kIGNsYXNzIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTsKLSAg
ICBmcmllbmQgY2xhc3MgR3JhZGllbnRJbWFnZTsKLSAgICBmcmllbmQgY2xhc3MgQ3VzdG9tUGFp
bnRJbWFnZTsKLSAgICBmcmllbmQgY2xhc3MgQml0bWFwSW1hZ2U7Ci0KLXByaXZhdGU6Ci0gICAg
SW1hZ2VCdWZmZXJEYXRhIG1fZGF0YTsKLSAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICBJbnRTaXpl
IG1fbG9naWNhbFNpemU7Ci0gICAgZmxvYXQgbV9yZXNvbHV0aW9uU2NhbGU7Ci0KLSAgICAvLyBU
aGlzIGNvbnN0cnVjdG9yIHdpbGwgcGxhY2UgaXRzIHN1Y2Nlc3MgaW50byB0aGUgZ2l2ZW4gb3V0
LXZhcmlhYmxlCi0gICAgLy8gc28gdGhhdCBjcmVhdGUoKSBrbm93cyB3aGVuIGl0IHNob3VsZCBy
ZXR1cm4gZmFpbHVyZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUs
IGNvbnN0IEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNzKTsKLSNpZiBVU0UoQ0cpCi0gICAgSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDR0NvbG9y
U3BhY2VSZWYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNz
KTsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiB0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Q7
Ci0jZWxpZiBVU0UoRElSRUNUMkQpCi0gICAgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBI
b3N0V2luZG93KiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiwgYm9vbCYgc3VjY2Vzcyk7Ci0jZW5k
aWYKKyAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNvbHV0
aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3
Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
NjNhYTVkYTYyNjI1M2I1MWQ5MmZlZDgxYWJjYWJkMjc0M2RlZTg2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cApAQCAtMCwwICsxLDI3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNr
ZW5kLmgiCisKKyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0ltYWdlQnVmZmVyQmFja2VuZDo6SW1hZ2VCdWZmZXJCYWNr
ZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRT
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKKyAgICA6
IG1fbG9naWNhbFNpemUobG9naWNhbFNpemUpCisgICAgLCBtX2JhY2tlbmRTaXplKGJhY2tlbmRT
aXplKQorICAgICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlvblNjYWxlKQorICAgICwgbV9j
b2xvclNwYWNlKGNvbG9yU3BhY2UpCit7Cit9CisKK0ludFNpemUgSW1hZ2VCdWZmZXJCYWNrZW5k
OjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSkKK3sKKyAgICBGbG9hdFNpemUgc2NhbGVkU2l6ZSA9IHsgY2VpbGYocmVzb2x1
dGlvblNjYWxlICogc2l6ZS53aWR0aCgpKSwgY2VpbGYocmVzb2x1dGlvblNjYWxlICogc2l6ZS5o
ZWlnaHQoKSkgfTsKKyAgICBpZiAoc2NhbGVkU2l6ZS5pc0VtcHR5KCkgfHwgIXNjYWxlZFNpemUu
aXNFeHByZXNzaWJsZUFzSW50U2l6ZSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgSW50
U2l6ZSBiYWNrZW5kU2l6ZSA9IEludFNpemUoc2NhbGVkU2l6ZSk7CisKKyAgICBDaGVja2VkPHVu
c2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gYnl0ZXNQZXJSb3cgPSA0ICogQ2hlY2tlZDx1bnNpZ25l
ZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXplLndpZHRoKCkpOworICAgIGlmIChieXRlc1Bl
clJvdy5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBDaGVja2Vk
PHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzID0gQ2hlY2tlZDx1bnNpZ25lZCwgUmVj
b3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXplLmhlaWdodCgpKSAqIGJ5dGVzUGVyUm93OworICAgIGlm
IChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBy
ZXR1cm4gYmFja2VuZFNpemU7Cit9CisKK05hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQmFja2Vu
ZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCit7CisgICAgcmV0dXJuIGNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSk7Cit9CisKK1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJCYWNr
ZW5kOjpzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24p
Cit7CisgICAgcmV0dXJuIGNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSwgcHJlc2VydmVS
ZXNvbHV0aW9uKTsKK30KKwordm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmRyYXdDb25zdW1pbmco
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKK3sKKyAgICBkcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9u
cyk7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpjb252ZXJ0VG9MdW1pbmFuY2VNYXNr
KCkKK3sKKyAgICBhdXRvIGltYWdlRGF0YSA9IGdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIGxvZ2ljYWxSZWN0KCkpOworICAgIGlmICghaW1hZ2VE
YXRhKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBzcmNQaXhlbEFycmF5ID0gaW1hZ2VE
YXRhLT5kYXRhKCk7CisgICAgdW5zaWduZWQgcGl4ZWxBcnJheUxlbmd0aCA9IHNyY1BpeGVsQXJy
YXktPmxlbmd0aCgpOworICAgIGZvciAodW5zaWduZWQgcGl4ZWxPZmZzZXQgPSAwOyBwaXhlbE9m
ZnNldCA8IHBpeGVsQXJyYXlMZW5ndGg7IHBpeGVsT2Zmc2V0ICs9IDQpIHsKKyAgICAgICAgdWlu
dDhfdCBhID0gc3JjUGl4ZWxBcnJheS0+aXRlbShwaXhlbE9mZnNldCArIDMpOworICAgICAgICBp
ZiAoIWEpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgdWludDhfdCByID0gc3JjUGl4
ZWxBcnJheS0+aXRlbShwaXhlbE9mZnNldCk7CisgICAgICAgIHVpbnQ4X3QgZyA9IHNyY1BpeGVs
QXJyYXktPml0ZW0ocGl4ZWxPZmZzZXQgKyAxKTsKKyAgICAgICAgdWludDhfdCBiID0gc3JjUGl4
ZWxBcnJheS0+aXRlbShwaXhlbE9mZnNldCArIDIpOworCisgICAgICAgIGRvdWJsZSBsdW1hID0g
KHIgKiAwLjIxMjUgKyBnICogMC43MTU0ICsgYiAqIDAuMDcyMSkgKiAoKGRvdWJsZSlhIC8gMjU1
LjApOworICAgICAgICBzcmNQaXhlbEFycmF5LT5zZXQocGl4ZWxPZmZzZXQgKyAzLCBsdW1hKTsK
KyAgICB9CisKKyAgICBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVt
dWx0aXBsaWVkLCAqaW1hZ2VEYXRhLCBsb2dpY2FsUmVjdCgpLCBJbnRQb2ludDo6emVybygpKTsK
K30KKworVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyQmFja2VuZDo6dG9CR1JBRGF0YSh2b2lk
KiBkYXRhKSBjb25zdAoreworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoNCAqIG1fbG9naWNh
bFNpemUuYXJlYSgpLnVuc2FmZUdldCgpKTsKKyAgICBzaXplX3QgZGVzdEJ5dGVzUGVyUm93ID0g
bV9sb2dpY2FsU2l6ZS53aWR0aCgpICogNDsKKyAgICBzaXplX3Qgc3JjQnl0ZXNQZXJSb3cgPSBi
eXRlc1BlclJvdygpOworCisgICAgdWludDhfdCogc3JjUm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KGRhdGEpOworCisgICAgY29weUltYWdlUGl4ZWxzKAorICAgICAgICBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBiYWNrZW5kQ29sb3JGb3JtYXQoKSwgc3Jj
Qnl0ZXNQZXJSb3csIHNyY1Jvd3MsCisgICAgICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZCwgQ29sb3JGb3JtYXQ6OkJHUkEsIGRlc3RCeXRlc1BlclJvdywgcmVzdWx0
LmRhdGEoKSwgbV9sb2dpY2FsU2l6ZSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0
aWMgaW5saW5lIHZvaWQgY29weVByZW11bHRpcGxpZWRUb1ByZW11bHRpcGxpZWQoQ29sb3JGb3Jt
YXQgc3JjQ29sb3JGb3JtYXQsIGNvbnN0IHVpbnQ4X3QqIHNyY1BpeGVsLCBDb2xvckZvcm1hdCBk
ZXN0Q29sb3JGb3JtYXQsIHVpbnQ4X3QqIGRlc3RQaXhlbCkKK3sKKyAgICB1aW50OF90IGFscGhh
ID0gc3JjUGl4ZWxbM107CisgICAgaWYgKCFhbHBoYSkgeworICAgICAgICByZWludGVycHJldF9j
YXN0PHVpbnQzMl90Kj4oZGVzdFBpeGVsKVswXSA9IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoc3JjQ29sb3JGb3JtYXQgPT0gZGVzdENvbG9yRm9ybWF0KSB7CisgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihkZXN0UGl4ZWwpWzBdID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50MzJfdCo+KHNyY1BpeGVsKVswXTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIFN3YXAgcGl4ZWwgY2hhbm5lbHMgQkdSQSA8LT4gUkdCQS4KKyAgICBkZXN0
UGl4ZWxbMF0gPSBzcmNQaXhlbFsyXTsKKyAgICBkZXN0UGl4ZWxbMV0gPSBzcmNQaXhlbFsxXTsK
KyAgICBkZXN0UGl4ZWxbMl0gPSBzcmNQaXhlbFswXTsKKyAgICBkZXN0UGl4ZWxbM10gPSBzcmNQ
aXhlbFszXTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGNvcHlQcmVtdWx0aXBsaWVkVG9VbnBy
ZW11bHRpcGxpZWQoQ29sb3JGb3JtYXQgc3JjQ29sb3JGb3JtYXQsIGNvbnN0IHVpbnQ4X3QqIHNy
Y1BpeGVsLCBDb2xvckZvcm1hdCBkZXN0Q29sb3JGb3JtYXQsIHVpbnQ4X3QqIGRlc3RQaXhlbCkK
K3sKKyAgICB1aW50OF90IGFscGhhID0gc3JjUGl4ZWxbM107CisgICAgaWYgKCFhbHBoYSB8fCBh
bHBoYSA9PSAyNTUpIHsKKyAgICAgICAgY29weVByZW11bHRpcGxpZWRUb1ByZW11bHRpcGxpZWQo
c3JjQ29sb3JGb3JtYXQsIHNyY1BpeGVsLCBkZXN0Q29sb3JGb3JtYXQsIGRlc3RQaXhlbCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc3JjQ29sb3JGb3JtYXQgPT0gZGVzdENv
bG9yRm9ybWF0KSB7CisgICAgICAgIGRlc3RQaXhlbFswXSA9IChzcmNQaXhlbFswXSAqIDI1NSkg
LyBhbHBoYTsKKyAgICAgICAgZGVzdFBpeGVsWzFdID0gKHNyY1BpeGVsWzFdICogMjU1KSAvIGFs
cGhhOworICAgICAgICBkZXN0UGl4ZWxbMl0gPSAoc3JjUGl4ZWxbMl0gKiAyNTUpIC8gYWxwaGE7
CisgICAgICAgIGRlc3RQaXhlbFszXSA9IGFscGhhOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgLy8gU3dhcCBwaXhlbCBjaGFubmVscyBCR1JBIDwtPiBSR0JBLgorICAgIGRlc3RQaXhl
bFswXSA9IChzcmNQaXhlbFsyXSAqIDI1NSkgLyBhbHBoYTsKKyAgICBkZXN0UGl4ZWxbMV0gPSAo
c3JjUGl4ZWxbMV0gKiAyNTUpIC8gYWxwaGE7CisgICAgZGVzdFBpeGVsWzJdID0gKHNyY1BpeGVs
WzBdICogMjU1KSAvIGFscGhhOworICAgIGRlc3RQaXhlbFszXSA9IGFscGhhOworfQorCitzdGF0
aWMgaW5saW5lIHZvaWQgY29weVVucHJlbXVsdGlwbGllZFRvUHJlbXVsdGlwbGllZChDb2xvckZv
cm1hdCBzcmNDb2xvckZvcm1hdCwgY29uc3QgdWludDhfdCogc3JjUGl4ZWwsIENvbG9yRm9ybWF0
IGRlc3RDb2xvckZvcm1hdCwgdWludDhfdCogZGVzdFBpeGVsKQoreworICAgIHVpbnQ4X3QgYWxw
aGEgPSBzcmNQaXhlbFszXTsKKyAgICBpZiAoIWFscGhhIHx8IGFscGhhID09IDI1NSkgeworICAg
ICAgICBjb3B5UHJlbXVsdGlwbGllZFRvUHJlbXVsdGlwbGllZChzcmNDb2xvckZvcm1hdCwgc3Jj
UGl4ZWwsIGRlc3RDb2xvckZvcm1hdCwgZGVzdFBpeGVsKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChzcmNDb2xvckZvcm1hdCA9PSBkZXN0Q29sb3JGb3JtYXQpIHsKKyAgICAg
ICAgZGVzdFBpeGVsWzBdID0gKHNyY1BpeGVsWzBdICogYWxwaGEgKyAyNTQpIC8gMjU1OworICAg
ICAgICBkZXN0UGl4ZWxbMV0gPSAoc3JjUGl4ZWxbMV0gKiBhbHBoYSArIDI1NCkgLyAyNTU7Cisg
ICAgICAgIGRlc3RQaXhlbFsyXSA9IChzcmNQaXhlbFsyXSAqIGFscGhhICsgMjU0KSAvIDI1NTsK
KyAgICAgICAgZGVzdFBpeGVsWzNdID0gYWxwaGE7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBTd2FwIHBpeGVsIGNoYW5uZWxzIEJHUkEgPC0+IFJHQkEuCisgICAgZGVzdFBpeGVs
WzBdID0gKHNyY1BpeGVsWzJdICogYWxwaGEgKyAyNTQpIC8gMjU1OworICAgIGRlc3RQaXhlbFsx
XSA9IChzcmNQaXhlbFsxXSAqIGFscGhhICsgMjU0KSAvIDI1NTsKKyAgICBkZXN0UGl4ZWxbMl0g
PSAoc3JjUGl4ZWxbMF0gKiBhbHBoYSArIDI1NCkgLyAyNTU7CisgICAgZGVzdFBpeGVsWzNdID0g
YWxwaGE7Cit9CisKK3RlbXBsYXRlPHZvaWQgKCpjb3B5RnVuY3RvcikoQ29sb3JGb3JtYXQsIGNv
bnN0IHVpbnQ4X3QqLCBDb2xvckZvcm1hdCwgdWludDhfdCopPgorc3RhdGljIGlubGluZSB2b2lk
IGNvcHlJbWFnZVBpeGVsc1VuYWNjZWxlcmF0ZWQoCisgICAgQ29sb3JGb3JtYXQgc3JjQ29sb3JG
b3JtYXQsIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93LCB1aW50OF90KiBzcmNSb3dzLAorICAgIENv
bG9yRm9ybWF0IGRlc3RDb2xvckZvcm1hdCwgdW5zaWduZWQgZGVzdEJ5dGVzUGVyUm93LCB1aW50
OF90KiBkZXN0Um93cywgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBzaXplX3QgYnl0ZXNQ
ZXJSb3cgPSBzaXplLndpZHRoKCkgKiA0OworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgc2l6ZS5o
ZWlnaHQoKTsgKyt5KSB7CisgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgYnl0ZXNQZXJS
b3c7IHggKz0gNCkKKyAgICAgICAgICAgIGNvcHlGdW5jdG9yKHNyY0NvbG9yRm9ybWF0LCAmc3Jj
Um93c1t4XSwgZGVzdENvbG9yRm9ybWF0LCAmZGVzdFJvd3NbeF0pOworICAgICAgICBzcmNSb3dz
ICs9IHNyY0J5dGVzUGVyUm93OworICAgICAgICBkZXN0Um93cyArPSBkZXN0Qnl0ZXNQZXJSb3c7
CisgICAgfQorfQorCit2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6Y29weUltYWdlUGl4ZWxzKAor
ICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gc3JjQWxwaGFGb3JtYXQsIENvbG9yRm9ybWF0IHNy
Y0NvbG9yRm9ybWF0LCB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdywgdWludDhfdCogc3JjUm93cywK
KyAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RBbHBoYUZvcm1hdCwgQ29sb3JGb3JtYXQg
ZGVzdENvbG9yRm9ybWF0LCB1bnNpZ25lZCBkZXN0Qnl0ZXNQZXJSb3csIHVpbnQ4X3QqIGRlc3RS
b3dzLCBjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdAoreworICAgIGlmIChzcmNBbHBoYUZvcm1h
dCA9PSBkZXN0QWxwaGFGb3JtYXQpIHsKKyAgICAgICAgQVNTRVJUKHNyY0FscGhhRm9ybWF0ID09
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQgJiYgZGVzdEFscGhhRm9ybWF0
ID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpOworICAgICAgICBjb3B5
SW1hZ2VQaXhlbHNVbmFjY2VsZXJhdGVkPGNvcHlQcmVtdWx0aXBsaWVkVG9QcmVtdWx0aXBsaWVk
PihzcmNDb2xvckZvcm1hdCwgc3JjQnl0ZXNQZXJSb3csIHNyY1Jvd3MsIGRlc3RDb2xvckZvcm1h
dCwgZGVzdEJ5dGVzUGVyUm93LCBkZXN0Um93cywgc2l6ZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoZGVzdEFscGhhRm9ybWF0ID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlVucHJlbXVsdGlwbGllZCkgeworICAgICAgICBjb3B5SW1hZ2VQaXhlbHNVbmFjY2VsZXJhdGVk
PGNvcHlQcmVtdWx0aXBsaWVkVG9VbnByZW11bHRpcGxpZWQ+KHNyY0NvbG9yRm9ybWF0LCBzcmNC
eXRlc1BlclJvdywgc3JjUm93cywgZGVzdENvbG9yRm9ybWF0LCBkZXN0Qnl0ZXNQZXJSb3csIGRl
c3RSb3dzLCBzaXplKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvcHlJbWFnZVBp
eGVsc1VuYWNjZWxlcmF0ZWQ8Y29weVVucHJlbXVsdGlwbGllZFRvUHJlbXVsdGlwbGllZD4oc3Jj
Q29sb3JGb3JtYXQsIHNyY0J5dGVzUGVyUm93LCBzcmNSb3dzLCBkZXN0Q29sb3JGb3JtYXQsIGRl
c3RCeXRlc1BlclJvdywgZGVzdFJvd3MsIHNpemUpOworfQorCitSZWZQdHI8SW1hZ2VEYXRhPiBJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91
dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgdm9pZCogZGF0YSkgY29uc3QKK3sK
KyAgICBJbnRSZWN0IHNyY1JlY3RTY2FsZWQgPSB0b0JhY2tlbmRDb29yZGluYXRlcyhzcmNSZWN0
KTsKKworICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoc3JjUmVjdFNjYWxl
ZC5zaXplKCkpOworICAgIGlmICghaW1hZ2VEYXRhIHx8ICFpbWFnZURhdGEtPmRhdGEoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBJbnRSZWN0IHNyY1JlY3RDbGlwcGVkID0gIGlu
dGVyc2VjdGlvbihiYWNrZW5kUmVjdCgpLCBzcmNSZWN0U2NhbGVkKTsKKyAgICBJbnRSZWN0IGRl
c3RSZWN0ID0geyBJbnRQb2ludDo6emVybygpLCBzcmNSZWN0Q2xpcHBlZC5zaXplKCkgfTsKKwor
ICAgIGlmIChzcmNSZWN0U2NhbGVkLngoKSA8IDApCisgICAgICAgIGRlc3RSZWN0LnNldFgoLXNy
Y1JlY3RTY2FsZWQueCgpKTsKKworICAgIGlmIChzcmNSZWN0U2NhbGVkLnkoKSA8IDApCisgICAg
ICAgIGRlc3RSZWN0LnNldFkoLXNyY1JlY3RTY2FsZWQueSgpKTsKKworICAgIGlmIChkZXN0UmVj
dC5zaXplKCkgIT0gc3JjUmVjdFNjYWxlZC5zaXplKCkpCisgICAgICAgIGltYWdlRGF0YS0+ZGF0
YSgpLT56ZXJvRmlsbCgpOworCisgICAgdW5zaWduZWQgZGVzdEJ5dGVzUGVyUm93ID0gNCAqIHNy
Y1JlY3RTY2FsZWQud2lkdGgoKTsKKyAgICB1aW50OF90KiBkZXN0Um93cyA9IGltYWdlRGF0YS0+
ZGF0YSgpLT5kYXRhKCkgKyBkZXN0UmVjdC55KCkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0UmVj
dC54KCkgKiA0OworCisgICAgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygp
OworICAgIHVpbnQ4X3QqIHNyY1Jvd3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRh
KSArIHNyY1JlY3RDbGlwcGVkLnkoKSAqIHNyY0J5dGVzUGVyUm93ICsgc3JjUmVjdENsaXBwZWQu
eCgpICogNDsKKworICAgIGNvcHlJbWFnZVBpeGVscygKKyAgICAgICAgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgYmFja2VuZENvbG9yRm9ybWF0KCksIHNyY0J5dGVzUGVy
Um93LCBzcmNSb3dzLAorICAgICAgICBvdXRwdXRGb3JtYXQsIENvbG9yRm9ybWF0OjpSR0JBLCBk
ZXN0Qnl0ZXNQZXJSb3csIGRlc3RSb3dzLCBkZXN0UmVjdC5zaXplKCkpOworCisgICAgcmV0dXJu
IGltYWdlRGF0YTsKK30KKwordm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dEltYWdlRGF0YShB
bHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmIGltYWdl
RGF0YSwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwg
dm9pZCogZGF0YSkKK3sKKyAgICBJbnRSZWN0IHNyY1JlY3RTY2FsZWQgPSB0b0JhY2tlbmRDb29y
ZGluYXRlcyhzcmNSZWN0KTsKKyAgICBJbnRQb2ludCBkZXN0UG9pbnRTY2FsZWQgPSB0b0JhY2tl
bmRDb29yZGluYXRlcyhkZXN0UG9pbnQpOworCisgICAgSW50UmVjdCBzcmNSZWN0Q2xpcHBlZCA9
IGludGVyc2VjdGlvbih7IEludFBvaW50Ojp6ZXJvKCksIGltYWdlRGF0YS5zaXplKCkgfSwgc3Jj
UmVjdFNjYWxlZCk7CisgICAgSW50UmVjdCBkZXN0UmVjdCA9IHNyY1JlY3RDbGlwcGVkOworICAg
IGRlc3RSZWN0Lm1vdmVCeShkZXN0UG9pbnRTY2FsZWQpOworCisgICAgaWYgKHNyY1JlY3RTY2Fs
ZWQueCgpIDwgMCkKKyAgICAgICAgZGVzdFJlY3Quc2V0WChkZXN0UmVjdC54KCkgLSBzcmNSZWN0
U2NhbGVkLngoKSk7CisKKyAgICBpZiAoc3JjUmVjdFNjYWxlZC55KCkgPCAwKQorICAgICAgICBk
ZXN0UmVjdC5zZXRZKGRlc3RSZWN0LnkoKSAtIHNyY1JlY3RTY2FsZWQueSgpKTsKKworICAgIGRl
c3RSZWN0LmludGVyc2VjdChiYWNrZW5kUmVjdCgpKTsKKyAgICBzcmNSZWN0Q2xpcHBlZC5zZXRT
aXplKGRlc3RSZWN0LnNpemUoKSk7CisKKyAgICB1bnNpZ25lZCBkZXN0Qnl0ZXNQZXJSb3cgPSBi
eXRlc1BlclJvdygpOworICAgIHVpbnQ4X3QqIGRlc3RSb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oZGF0YSkgKyBkZXN0UmVjdC55KCkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0UmVj
dC54KCkgKiA0OworCisgICAgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3cgPSA0ICogaW1hZ2VEYXRh
LnNpemUoKS53aWR0aCgpOworICAgIHVpbnQ4X3QqIHNyY1Jvd3MgPSBpbWFnZURhdGEuZGF0YSgp
LT5kYXRhKCkgKyBzcmNSZWN0Q2xpcHBlZC55KCkgKiBzcmNCeXRlc1BlclJvdyArIHNyY1JlY3RD
bGlwcGVkLngoKSAqIDQ7CisKKyAgICBjb3B5SW1hZ2VQaXhlbHMoCisgICAgICAgIGlucHV0Rm9y
bWF0LCBDb2xvckZvcm1hdDo6UkdCQSwgc3JjQnl0ZXNQZXJSb3csIHNyY1Jvd3MsCisgICAgICAg
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIGJhY2tlbmRDb2xvckZvcm1h
dCgpLCBkZXN0Qnl0ZXNQZXJSb3csIGRlc3RSb3dzLCBkZXN0UmVjdC5zaXplKCkpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhM2I2M2NkZjcxNzhh
YmIxYjVhMzg4MjljNTVlMTI4ZWRiN2EyNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMCwwICsxLDEz
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKKyNpbmNsdWRl
ICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhp
Y3NUeXBlc0dMLmgiCisjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKKyNpbmNsdWRl
ICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bUxheWVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDsKK2NsYXNzIEhvc3RXaW5kb3c7CitjbGFzcyBJbWFnZTsKK2NsYXNzIEltYWdlRGF0YTsKKwor
ZW51bSBCYWNraW5nU3RvcmVDb3B5IHsKKyAgICBDb3B5QmFja2luZ1N0b3JlLCAvLyBHdWFyYW50
ZWUgc3Vic2VxdWVudCBkcmF3cyBkb24ndCBhZmZlY3QgdGhlIGNvcHkuCisgICAgRG9udENvcHlC
YWNraW5nU3RvcmUgLy8gU3Vic2VxdWVudCBkcmF3cyBtYXkgYWZmZWN0IHRoZSBjb3B5LgorfTsK
KworZW51bSBjbGFzcyBQcmVzZXJ2ZVJlc29sdXRpb24gOiB1aW50OF90IHsKKyAgICBObywKKyAg
ICBZZXMsCit9OworCitlbnVtIGNsYXNzIENvbG9yRm9ybWF0IDogdWludDhfdCB7CisgICAgUkdC
QSwKKyAgICBCR1JBCit9OworCitjbGFzcyBJbWFnZUJ1ZmZlckJhY2tlbmQgeworcHVibGljOgor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyQmFja2VuZCgpID0gZGVmYXVs
dDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZUJhY2tlbmRT
aXplKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSk7CisKKyAgICB2aXJ0
dWFsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZmx1c2hDb250ZXh0KCkgeyB9CisKKyAgICBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9sb2dpY2FsU2l6ZTsgfQorICAgIEludFNpemUgYmFja2VuZFNpemUoKSBjb25z
dCB7IHJldHVybiBtX2JhY2tlbmRTaXplOyB9CisgICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNvbHV0aW9uU2NhbGU7IH0KKyAgICBDb2xvclNwYWNlIGNvbG9y
U3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0KKworICAgIHZpcnR1YWwgQWZm
aW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBBZmZpbmVUcmFuc2Zv
cm0oKTsgfQorICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiA0
ICogbV9iYWNrZW5kU2l6ZS5hcmVhKCkudW5zYWZlR2V0KCk7IH0KKyAgICB2aXJ0dWFsIHNpemVf
dCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiAwOyB9CisKKyAgICB2aXJ0dWFs
IE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5
LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0ID0gMDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KSA9IDA7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpID0gMDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgTmF0aXZl
SW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgUmVmUHRyPEltYWdlPiBzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0
JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworCisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CisgICAgdmlydHVhbCB2b2lkIHRy
YW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSwgQ29sb3JTcGFjZSkgeyB9CisKKyAgICB2aXJ0
dWFsIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4g
dG9CR1JBRGF0YSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlRGF0YT4g
Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJ
bnRSZWN0JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkgPSAwOworCisgICAgdmly
dHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQorICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wmLCBHQ0dMZW51bSwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2ws
IGJvb2wpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBXRUJDT1JF
X0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSk7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3QgeyByZXR1
cm4gNCAqIG1fYmFja2VuZFNpemUud2lkdGgoKTsgfQorICAgIHZpcnR1YWwgQ29sb3JGb3JtYXQg
YmFja2VuZENvbG9yRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gQ29sb3JGb3JtYXQ6OlJHQkE7IH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgVCB0b0JhY2tlbmRDb29yZGluYXRlcyhU
IHQpIGNvbnN0CisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxULCBJ
bnRQb2ludD46OnZhbHVlIHx8IHN0ZDo6aXNfc2FtZTxULCBJbnRTaXplPjo6dmFsdWUgfHwgc3Rk
Ojppc19zYW1lPFQsIEludFJlY3Q+Ojp2YWx1ZSk7CisgICAgICAgIGlmIChtX3Jlc29sdXRpb25T
Y2FsZSAhPSAxKQorICAgICAgICAgICAgdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CisgICAg
ICAgIHJldHVybiB0OworICAgIH0KKworICAgIEludFJlY3QgbG9naWNhbFJlY3QoKSBjb25zdCB7
IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIG1fbG9naWNhbFNpemUpOyB9OworICAg
IEludFJlY3QgYmFja2VuZFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6
ZXJvKCksIG1fYmFja2VuZFNpemUpOyB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGNvcHlJbWFnZVBpeGVscygKKyAgICAgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBzcmNB
bHBoYUZvcm1hdCwgQ29sb3JGb3JtYXQgc3JjQ29sb3JGb3JtYXQsIHVuc2lnbmVkIHNyY0J5dGVz
UGVyUm93LCB1aW50OF90KiBzcmNSb3dzLAorICAgICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9u
IGRlc3RBbHBoYUZvcm1hdCwgQ29sb3JGb3JtYXQgZGVzdENvbG9yRm9ybWF0LCB1bnNpZ25lZCBk
ZXN0Qnl0ZXNQZXJSb3csIHVpbnQ4X3QqIGRlc3RSb3dzLCBjb25zdCBJbnRTaXplJikgY29uc3Q7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdG9CR1JBRGF0YSh2b2lkKiBk
YXRhKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxJbWFnZURhdGE+IGdldElt
YWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVj
dCYgc3JjUmVjdCwgdm9pZCogZGF0YSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBw
dXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1h
Z2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2lu
dCwgdm9pZCogZGF0YSk7CisKKyAgICBJbnRTaXplIG1fbG9naWNhbFNpemU7CisgICAgSW50U2l6
ZSBtX2JhY2tlbmRTaXplOworICAgIGZsb2F0IG1fcmVzb2x1dGlvblNjYWxlOworICAgIENvbG9y
U3BhY2UgbV9jb2xvclNwYWNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckRhdGEuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQyYTVjODg1ZTVjMTAyNDQ3YzczYTEyZjFkNmZi
MzJiNWQzOTkwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckRhdGEuaAorKysg
L2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShDRykKLSNpbmNs
dWRlICJJbWFnZUJ1ZmZlckRhdGFDRy5oIgotI2VsaWYgVVNFKERJUkVDVDJEKQotI2luY2x1ZGUg
IkltYWdlQnVmZmVyRGF0YURpcmVjdDJELmgiCi0jZWxpZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSAi
SW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaCIKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0
M2E4NzE5Y2U0OWQxNzc2Yjk3NTNkNWQ3MjYwODc3ZjA1MTQzNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmgK
QEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbnRleHR1YWxJbWFnZUJ1ZmZlci5o
IgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCIKKworI2lmIFVTRShDRykKKyNp
bmNsdWRlICJJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oIgorI2VsaWYgVVNFKERJUkVDVDJE
KQorI2luY2x1ZGUgIkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgiCisjZWxpZiBVU0UoQ0FJ
Uk8pCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuaCIKKyNl
bmRpZgorCisjaWYgSEFWRShJT1NVUkZBQ0UpCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmgiCisjZWxpZiBVU0UoQ0FJUk8pICYmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQuaCIKKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCit1c2luZyBQbGF0Zm9y
bVVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlckJhY2tlbmQgPSBJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZDsKKyNlbGlmIFVTRShESVJFQ1QyRCkKK3VzaW5nIFBsYXRmb3JtVW5hY2NlbGVyYXRlZElt
YWdlQnVmZmVyQmFja2VuZCA9IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOworI2VsaWYgVVNF
KENBSVJPKQordXNpbmcgUGxhdGZvcm1VbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJCYWNrZW5kID0g
SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ7CisjZW5kaWYKKworI2lmIEhBVkUo
SU9TVVJGQUNFKQordXNpbmcgUGxhdGZvcm1BY2NlbGVyYXRlZEltYWdlQnVmZmVyQmFja2VuZCA9
IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDsKKyNlbGlmIFVTRShDQUlSTykgJiYgRU5BQkxF
KEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKK3VzaW5nIFBsYXRmb3JtQWNjZWxlcmF0ZWRJbWFnZUJ1
ZmZlckJhY2tlbmQgPSBJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZDsKKyNlbHNlCit1
c2luZyBQbGF0Zm9ybUFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJCYWNrZW5kID0gUGxhdGZvcm1VbmFj
Y2VsZXJhdGVkSW1hZ2VCdWZmZXJCYWNrZW5kOworI2VuZGlmCisKK3VzaW5nIFBsYXRmb3JtSW1h
Z2VCdWZmZXIgPSBDb250ZXh0dWFsSW1hZ2VCdWZmZXI8UGxhdGZvcm1VbmFjY2VsZXJhdGVkSW1h
Z2VCdWZmZXJCYWNrZW5kPjsKK3VzaW5nIFBsYXRmb3JtQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlciA9
IENvbnRleHR1YWxJbWFnZUJ1ZmZlcjxQbGF0Zm9ybUFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJCYWNr
ZW5kPjsKK3VzaW5nIFBsYXRmb3JtRGlzcGxheUxpc3RJbWFnZUJ1ZmZlciA9IERpc3BsYXlMaXN0
SW1hZ2VCdWZmZXI8UGxhdGZvcm1VbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJCYWNrZW5kPjsKK3Vz
aW5nIFBsYXRmb3JtQWNjZWxlcmF0ZWREaXNwbGF5TGlzdEltYWdlQnVmZmVyID0gRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlcjxQbGF0Zm9ybUFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJCYWNrZW5kPjsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW5kZXJpbmdCYWNrZW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wM2NiNmIyNDFhYTVk
MTA1ZjNjYWM4ZWRjMjM5ZDBmNTFmYmE5MzNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTAsMCArMSwx
MDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmQuaCIKKworI2luY2x1
ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUltYWdl
QnVmZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlxdWVfcHRyPFJlbmRl
cmluZ0JhY2tlbmQ+IFJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJpbmdCYWNrZW5kPihuZXcgUmVuZGVyaW5nQmFja2VuZCgpKTsK
K30KKworUmVuZGVyaW5nQmFja2VuZCYgUmVuZGVyaW5nQmFja2VuZDo6c2hhcmVkUmVuZGVyaW5n
QmFja2VuZChjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyaW5nQmFja2VuZD4+IHNoYXJlZFJlbmRl
cmluZ0JhY2tlbmQgeyBSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKSB9OworICAgIHJldHVybiBo
b3N0V2luZG93ICYmIGhvc3RXaW5kb3ctPnNoYXJlZFJlbmRlcmluZ0JhY2tlbmQoKSA/ICpob3N0
V2luZG93LT5zaGFyZWRSZW5kZXJpbmdCYWNrZW5kKCkgOiAqc2hhcmVkUmVuZGVyaW5nQmFja2Vu
ZC5nZXQoKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBSZW5kZXJpbmdCYWNr
ZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCit7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKKworICAgIHN3aXRjaCAocmVuZGVyaW5nTW9k
ZSkgeworICAgIGNhc2UgUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ6CisgICAgY2FzZSBSZW5k
ZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRlZDoKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBQbGF0
Zm9ybUFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIGhvc3RXaW5kb3cpOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNl
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ6CisgICAgY2FzZSBSZW5kZXJpbmdNb2RlOjpS
ZW1vdGU6CisgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgICAgICBpbWFnZUJ1ZmZl
ciA9IFBsYXRmb3JtSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIGhvc3RXaW5kb3cpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgUmVuZGVy
aW5nTW9kZTo6RGlzcGxheUxpc3RBY2NlbGVyYXRlZDoKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBQ
bGF0Zm9ybUFjY2VsZXJhdGVkRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgaG9zdFdpbmRvdyk7CisgICAgICAgIEZBTExUSFJP
VUdIOworICAgIGNhc2UgUmVuZGVyaW5nTW9kZTo6RGlzcGxheUxpc3Q6CisgICAgICAgIGlmICgh
aW1hZ2VCdWZmZXIpCisgICAgICAgICAgICBpbWFnZUJ1ZmZlciA9IFBsYXRmb3JtRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
aG9zdFdpbmRvdyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBpbWFnZUJ1
ZmZlcjsKK30KKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyOworCisgICAgc3dpdGNoIChjb250ZXh0LnJlbmRlcmluZ01vZGUoKSkgeworICAg
IGNhc2UgUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ6CisgICAgY2FzZSBSZW5kZXJpbmdNb2Rl
OjpSZW1vdGVBY2NlbGVyYXRlZDoKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBQbGF0Zm9ybUFjY2Vs
ZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBjb250ZXh0KTsKKyAgICAgICAgRkFMTFRI
Uk9VR0g7CisgICAgY2FzZSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOgorICAgIGNhc2Ug
UmVuZGVyaW5nTW9kZTo6UmVtb3RlOgorICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAg
ICAgICAgaW1hZ2VCdWZmZXIgPSBQbGF0Zm9ybUltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgY29u
dGV4dCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBSZW5kZXJpbmdNb2RlOjpEaXNwbGF5
TGlzdEFjY2VsZXJhdGVkOgorICAgICAgICBpbWFnZUJ1ZmZlciA9IFBsYXRmb3JtQWNjZWxlcmF0
ZWREaXNwbGF5TGlzdEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgY29udGV4dCk7CisgICAgICAg
IEZBTExUSFJPVUdIOworICAgIGNhc2UgUmVuZGVyaW5nTW9kZTo6RGlzcGxheUxpc3Q6CisgICAg
ICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgICAgICBpbWFnZUJ1ZmZlciA9IFBsYXRmb3Jt
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIGNvbnRleHQpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9SZW5kZXJpbmdCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmFjNzMwNjg1NzVkMjAxZTFjMDFmN2Mw
MGEzODBjZjYxYWU1MjgzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlbmRlcmluZ0JhY2tlbmQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAi
UmVuZGVyaW5nTW9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNz
Q29udGV4dDsKK2NsYXNzIEhvc3RXaW5kb3c7CitjbGFzcyBJbWFnZUJ1ZmZlcjsKK2NsYXNzIElu
dFNpemU7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFJlbmRlcmluZ0JhY2tlbmQgeworcHVibGlj
OgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKCk7
CisKKyAgICBzdGF0aWMgUmVuZGVyaW5nQmFja2VuZCYgc2hhcmVkUmVuZGVyaW5nQmFja2VuZChj
b25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOworCisgICAgdmlydHVhbCB+UmVuZGVyaW5nQmFj
a2VuZCgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAg
dmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOworCitwcm90ZWN0ZWQ6Cisg
ICAgUmVuZGVyaW5nQmFja2VuZCgpID0gZGVmYXVsdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRl
cmluZ01vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01v
ZGUuaAppbmRleCA2OWQ4YWU4MWM4NDhiMTBlNmYyZDA3YTc4OWIxNmMzMzNkYzIzY2I0Li5hYTQ4
MzVkYmZhYWFhOTc0MmYzNGFjYzM4ZjhhMWUwZTI3MGMyNGUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCkBAIC0zMCw2ICszMCwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiB1aW50OF90
IHsKICAgICBBY2NlbGVyYXRlZCwKICAgICBVbmFjY2VsZXJhdGVkLAorICAgIERpc3BsYXlMaXN0
QWNjZWxlcmF0ZWQsCisgICAgRGlzcGxheUxpc3QsCisgICAgUmVtb3RlQWNjZWxlcmF0ZWQsCisg
ICAgUmVtb3RlCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IDY4MWFiNTZlZWIzNDE5
NDYyYjIzNDQ1MGQwMGY0MWY5MzM2NzRkMTguLjNjZmNlNzI5NTQyMDlkMzAzYTlmNzI0MzJmYmI0
YjYzOWQ0YjQyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNp
bmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC00NDksNyAr
NDUwLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3U2hhZG93QnVmZmVyKEdyYXBoaWNzQ29udGV4
dCYgZ3JhcGhpY3NDb250ZXh0LCBJbWFnZUJ1ZmZlciYKIHsKICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKIAotICAgIEludFNpemUgYnVm
ZmVyU2l6ZSA9IGxheWVySW1hZ2UuaW50ZXJuYWxTaXplKCk7CisgICAgSW50U2l6ZSBidWZmZXJT
aXplID0gbGF5ZXJJbWFnZS5iYWNrZW5kU2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplICE9IGxh
eWVyU2l6ZSkgewogICAgICAgICAvLyBUaGUgcmVjdCBwYXNzZWQgdG8gY2xpcFRvSW1hZ2VCdWZm
ZXIoKSBoYXMgdG8gYmUgdGhlIHNpemUgb2YgdGhlIGVudGlyZSBidWZmZXIsCiAgICAgICAgIC8v
IGJ1dCB3ZSBtYXkgbm90IGhhdmUgY2xlYXJlZCBpdCBhbGwsIHNvIGNsaXAgdG8gdGhlIGZpbGxl
ZCBwYXJ0IGZpcnN0LgpAQCAtODg0LDEyICs4ODUsMTMgQEAgdm9pZCBTaGFkb3dCbHVyOjpibHVy
U2hhZG93QnVmZmVyKEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBjb25zdCBJbnRTaXplJiB0ZW1w
bGEKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UmVjdCBibHVyUmVjdChJbnRQb2ludCgpLCB0
ZW1wbGF0ZVNpemUpOwotICAgIGF1dG8gbGF5ZXJEYXRhID0gbGF5ZXJJbWFnZS5nZXRVbm11bHRp
cGxpZWRJbWFnZURhdGEoYmx1clJlY3QpOworICAgIGF1dG8gbGF5ZXJEYXRhID0gbGF5ZXJJbWFn
ZS5nZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBi
bHVyUmVjdCk7CiAgICAgaWYgKCFsYXllckRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJs
dXJMYXllckltYWdlKGxheWVyRGF0YS0+ZGF0YSgpLCBibHVyUmVjdC5zaXplKCksIGJsdXJSZWN0
LndpZHRoKCkgKiA0KTsKLSAgICBsYXllckltYWdlLnB1dEJ5dGVBcnJheSgqbGF5ZXJEYXRhLCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIGJsdXJSZWN0LnNpemUoKSwg
Ymx1clJlY3QsIHsgfSk7CisgICAgYXV0byogYmx1clBpeGVsQXJyYXkgPSBsYXllckRhdGEtPmRh
dGEoKTsKKyAgICBibHVyTGF5ZXJJbWFnZShibHVyUGl4ZWxBcnJheS0+ZGF0YSgpLCBibHVyUmVj
dC5zaXplKCksIGJsdXJSZWN0LndpZHRoKCkgKiA0KTsKKyAgICBsYXllckltYWdlLnB1dEltYWdl
RGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsICpsYXllckRhdGEs
IGJsdXJSZWN0KTsKIH0KIAogdm9pZCBTaGFkb3dCbHVyOjpibHVyQW5kQ29sb3JTaGFkb3dCdWZm
ZXIoSW1hZ2VCdWZmZXImIGxheWVySW1hZ2UsIGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
YWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDY4OTg0ZDU2NGE5MjkyN2Q0MjhmY2ViYjgwZTE0YWFj
ZjlhZmE0ZWYuLmNkOGYxZGIzNTllMjZhMDFhMmM4NWJiZDIyZWEzNjhlNmFjODg5NGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9PcGVyYXRpb25zLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIGVudW0gUGF0aERyYXdpbmdTdHls
ZSB7CiAKIHN0YXRpYyB2b2lkIGRyYXdTaGFkb3dMYXllckJ1ZmZlcihQbGF0Zm9ybUNvbnRleHRD
YWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxv
YXRQb2ludCYgbGF5ZXJPcmlnaW4sIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplLCBjb25zdCBT
aGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGxheWVy
SW1hZ2UubmF0aXZlSW1hZ2UoKSkgeworICAgIGlmIChhdXRvIHN1cmZhY2UgPSBsYXllckltYWdl
LmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpIHsKICAgICAgICAgZHJhd05h
dGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KHJvdW5k
ZWRJbnRQb2ludChsYXllck9yaWdpbiksIGxheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50
KCksIGxheWVyU2l6ZSksIHsgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IgfSwg
c2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOwogICAgIH0KIH0KQEAgLTE4
Myw3ICsxODMsNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93TGF5ZXJCdWZmZXIoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdQogLy8gRklYTUU6IFRoaXMgaXMg
bW9zdGx5IHNhbWUgYXMgZHJhd1NoYWRvd0xheWVyQnVmZmVyLCBzbyB3ZSBzaG91bGQgbWVyZ2Ug
dHdvLgogc3RhdGljIHZvaWQgZHJhd1NoYWRvd0ltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBw
bGF0Zm9ybUNvbnRleHQsIEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFNoYWRvd1N0YXRlJiBz
aGFkb3dTdGF0ZSkKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gbGF5ZXJJbWFnZS5uYXRpdmVJ
bWFnZSgpKSB7CisgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUlt
YWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkgewogICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxh
dGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dT
dGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwg
U2hhZG93U3RhdGUoKSk7CiAgICAgfQogfQpAQCAtMTkyLDcgKzE5Miw3IEBAIHN0YXRpYyB2b2lk
IGZpbGxTaGFkb3dCdWZmZXIoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwg
SW1hZ2VCdWZmZXImCiB7CiAgICAgc2F2ZShwbGF0Zm9ybUNvbnRleHQpOwogCi0gICAgaWYgKGF1
dG8gc3VyZmFjZSA9IGxheWVySW1hZ2UubmF0aXZlSW1hZ2UoKSkKKyAgICBpZiAoYXV0byBzdXJm
YWNlID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQog
ICAgICAgICBjbGlwVG9JbWFnZUJ1ZmZlcihwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCks
IEZsb2F0UmVjdChsYXllck9yaWdpbiwgZXhwYW5kZWRJbnRTaXplKGxheWVyU2l6ZSkpKTsKIAog
ICAgIEZpbGxTb3VyY2UgZmlsbFNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApp
bmRleCA5YjAyNWUxNDc2NzM1MmUxNGFkNDhmODY3YjA0NTg1ZWU4MDM0MTM0Li40ZTFiZjJiNDM2
N2YzNDM1OWQ4NTRlYjc4YzIyMDJkZjU3YjI3NDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGUKICAgICB9
CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotICAgIGlmIChhdXRvIHN1cmZh
Y2UgPSBidWZmZXIubmF0aXZlSW1hZ2UoKSkKKyAgICBpZiAoYXV0byBzdXJmYWNlID0gYnVmZmVy
LmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCiAgICAgICAgIENhaXJvOjpj
bGlwVG9JbWFnZUJ1ZmZlcigqcGxhdGZvcm1Db250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIGRlc3RS
ZWN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKaW5kZXggYmNh
MjlkZmI2OTQ5ODZlODc3NDY2YjhmMDc3ODZmYmQxYmYzOTQ1Ni4uY2Q4NjVhYWEyNjAxOWZmYzc1
YWVlZTkyNjIwMmNmMTEyNTk1YmM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8uY3BwCkBAIC00MTQsNyArNDE0LDcgQEAgSW50UmVjdCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmNsaXBCb3VuZHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRv
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCkKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gYnVmZmVyLm5hdGl2ZUltYWdlKCkpCisgICAg
aWYgKGF1dG8gc3VyZmFjZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5n
U3RvcmUpKQogICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIobV9wbGF0Zm9ybUNvbnRl
eHQsIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJiNWM2NDgyYjZlMWQzZjI4YWM0NzllYTdj
NWQzMWIxZDMzNzkwMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29w
eXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyIDx6ZWNrZUBzZWxmaXNo
Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Vi
a2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENv
LiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZl
ci5oIgotCi0jaWYgVVNFKENBSVJPKQotCi0jaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKLSNpbmNs
dWRlICJDYWlyb09wZXJhdGlvbnMuaCIKLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgotI2lu
Y2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJVdGlsaXRp
ZXNDYWlyby5oIgotI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBhdHRlcm4uaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNv
bnRleHRDYWlyby5oIgotI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCi0jaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJy
YXlJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8Y2Fpcm8uaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+Ci0KLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotI2luY2x1ZGUgIkdM
Q29udGV4dC5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgotCi0jaWYgVVNFKEVHTCkK
LSNpZiBVU0UoTElCRVBPWFkpCi0jaW5jbHVkZSAiRXBveHlFR0wuaCIKLSNlbHNlCi0jaW5jbHVk
ZSA8RUdML2VnbC5oPgotI2VuZGlmCi0jZW5kaWYKLSNpbmNsdWRlIDxjYWlyby1nbC5oPgotCi0j
aWYgVVNFKExJQkVQT1hZKQotI2luY2x1ZGUgPGVwb3h5L2dsLmg+Ci0jZWxpZiBVU0UoT1BFTkdM
X0VTKQotI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgotI2Vsc2UKLSNpbmNsdWRlICJPcGVuR0xTaGlt
cy5oIgotI2VuZGlmCi0KLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0jaW5jbHVkZSAi
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5LmgiCi0jZW5kaWYKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLUltYWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUm
IHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkKLSAgICA6IG1fcGxhdGZvcm1Db250
ZXh0KDApCi0gICAgLCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fcmVuZGVyaW5nTW9kZShyZW5kZXJp
bmdNb2RlKQotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0jaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQotICAgICwgbV9jb21wb3NpdG9yVGV4dHVyZSgwKQotI2VuZGlmCi0g
ICAgLCBtX3RleHR1cmUoMCkKLSNlbmRpZgotewotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpICYmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICBpZiAobV9yZW5kZXJpbmdN
b2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKSB7Ci0jaWYgVVNFKE5JQ09TSUEpCi0g
ICAgICAgIG1fbmljb3NpYUxheWVyID0gTmljb3NpYTo6Q29udGVudExheWVyOjpjcmVhdGUoTmlj
b3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkoKnRoaXMp
KTsKLSNlbHNlCi0gICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5ID0gYWRvcHRSZWYobmV3IFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkpOwotI2VuZGlmCi0gICAgfQotI2VuZGlmCi19
Ci0KLUltYWdlQnVmZmVyRGF0YTo6fkltYWdlQnVmZmVyRGF0YSgpCi17Ci0gICAgaWYgKG1fcmVu
ZGVyaW5nTW9kZSAhPSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKLSAgICAgICAgcmV0dXJu
OwotCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpICYmIFVTRShOSUNPU0lBKQotICAgIGRvd25jYXN0PE5pY29zaWE6OkNvbnRl
bnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihtX25pY29zaWFMYXllci0+aW1wbCgpKS5pbnZhbGlk
YXRlQ2xpZW50KCk7Ci0jZW5kaWYKLQotICAgIEdMQ29udGV4dCogcHJldmlvdXNBY3RpdmVDb250
ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50KCk7Ci0gICAgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWRE
aXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCktPm1ha2VDb250ZXh0Q3Vy
cmVudCgpOwotCi0gICAgaWYgKG1fdGV4dHVyZSkKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygx
LCAmbV90ZXh0dXJlKTsKLQotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICBpZiAo
bV9jb21wb3NpdG9yVGV4dHVyZSkKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbV9jb21w
b3NpdG9yVGV4dHVyZSk7Ci0jZW5kaWYKLQotICAgIGlmIChwcmV2aW91c0FjdGl2ZUNvbnRleHQp
Ci0gICAgICAgIHByZXZpb3VzQWN0aXZlQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0j
ZW5kaWYKLX0KLQotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0jaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQotdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OmNyZWF0ZUNvbXBvc2l0
b3JCdWZmZXIoKQotewotICAgIGF1dG8qIGNvbnRleHQgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJl
ZERpc3BsYXlGb3JDb21wb3NpdGluZygpLnNoYXJpbmdHTENvbnRleHQoKTsKLSAgICBjb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLQotICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fY29tcG9z
aXRvclRleHR1cmUpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9jb21wb3Np
dG9yVGV4dHVyZSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVB
Uik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJ
TFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19BTElHTk1FTlQs
IDEpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwICwgR0xfUkdCQSwgbV9zaXpl
LndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwg
MCk7Ci0KLSAgICBtX2NvbXBvc2l0b3JTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9fZ2xfc3VyZmFj
ZV9jcmVhdGVfZm9yX3RleHR1cmUoY29udGV4dC0+Y2Fpcm9EZXZpY2UoKSwgQ0FJUk9fQ09OVEVO
VF9DT0xPUl9BTFBIQSwgbV9jb21wb3NpdG9yVGV4dHVyZSwgbV9zaXplLndpZHRoKCksIG1fc2l6
ZS5oZWlnaHQoKSkpOwotICAgIG1fY29tcG9zaXRvckNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRl
KG1fY29tcG9zaXRvclN1cmZhY2UuZ2V0KCkpKTsKLSAgICBjYWlyb19zZXRfYW50aWFsaWFzKG1f
Y29tcG9zaXRvckNyLmdldCgpLCBDQUlST19BTlRJQUxJQVNfTk9ORSk7Ci19Ci0KLSNpZiAhVVNF
KE5JQ09TSUEpCi1SZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gSW1hZ2VC
dWZmZXJEYXRhOjpwcm94eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllclBy
b3h5LmNvcHlSZWYoKTsKLX0KLSNlbmRpZgotCi12b2lkIEltYWdlQnVmZmVyRGF0YTo6c3dhcEJ1
ZmZlcnNJZk5lZWRlZCgpCi17Ci0gICAgR0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQg
PSBHTENvbnRleHQ6OmN1cnJlbnQoKTsKLQotICAgIGlmICghbV9jb21wb3NpdG9yVGV4dHVyZSkg
ewotICAgICAgICBjcmVhdGVDb21wb3NpdG9yQnVmZmVyKCk7Ci0KLSAgICAgICAgYXV0byBwcm94
eU9wZXJhdGlvbiA9Ci0gICAgICAgICAgICBbdGhpc10oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eSYgcHJveHkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTG9ja0hvbGRl
ciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1
ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbXBv
c2l0b3JUZXh0dXJlLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQsIEdMX1JH
QkEpKTsKLSAgICAgICAgICAgIH07Ci0jaWYgVVNFKE5JQ09TSUEpCi0gICAgICAgIHByb3h5T3Bl
cmF0aW9uKGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPiht
X25pY29zaWFMYXllci0+aW1wbCgpKS5wcm94eSgpKTsKLSNlbHNlCi0gICAgICAgIHByb3h5T3Bl
cmF0aW9uKCptX3BsYXRmb3JtTGF5ZXJQcm94eSk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICAvLyBJ
dCB3b3VsZCBiZSBncmVhdCBpZiB3ZSBjb3VsZCBqdXN0IHN3YXAgdGhlIGJ1ZmZlcnMgaGVyZSBh
cyB3ZSBkbyB3aXRoIHdlYmdsLCBidXQgdGhhdCBicmVha3MgdGhlIGNhc2VzCi0gICAgLy8gd2hl
cmUgb25lIGZyYW1lIHVzZXMgdGhlIGNvbnRlbnQgYWxyZWFkeSByZW5kZXJlZCBpbiB0aGUgcHJl
dmlvdXMgZnJhbWUuIFNvIHdlIGp1c3QgY29weSB0aGUgY29udGVudAotICAgIC8vIGludG8gdGhl
IGNvbXBvc2l0b3IgYnVmZmVyLgotICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShtX2NvbXBv
c2l0b3JDci5nZXQoKSwgbV9zdXJmYWNlLmdldCgpLCAwLCAwKTsKLSAgICBjYWlyb19zZXRfb3Bl
cmF0b3IobV9jb21wb3NpdG9yQ3IuZ2V0KCksIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7Ci0gICAg
Y2Fpcm9fcGFpbnQobV9jb21wb3NpdG9yQ3IuZ2V0KCkpOwotCi0gICAgaWYgKHByZXZpb3VzQWN0
aXZlQ29udGV4dCkKLSAgICAgICAgcHJldmlvdXNBY3RpdmVDb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKTsKLX0KLSNlbmRpZgotCi12b2lkIGNsZWFyU3VyZmFjZShjYWlyb19zdXJmYWNlX3Qq
IHN1cmZhY2UpCi17Ci0gICAgaWYgKGNhaXJvX3N1cmZhY2Vfc3RhdHVzKHN1cmZhY2UpICE9IENB
SVJPX1NUQVRVU19TVUNDRVNTKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHI8Y2Fpcm9f
dD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoc3VyZmFjZSkpOwotICAgIGNhaXJvX3NldF9v
cGVyYXRvcihjci5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfQ0xFQVIpOwotICAgIGNhaXJvX3BhaW50
KGNyLmdldCgpKTsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OmNyZWF0ZUNhaXJvR0xTdXJm
YWNlKCkKLXsKLSAgICBhdXRvKiBjb250ZXh0ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNw
bGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCk7Ci0gICAgY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCk7Ci0KLSAgICAvLyBXZSBtdXN0IGdlbmVyYXRlIHRoZSB0ZXh0dXJl
IG91cnNlbHZlcywgYmVjYXVzZSB0aGVyZSBpcyBubyBDYWlybyBBUEkgZm9yIGV4dHJhY3Rpbmcg
aXQKLSAgICAvLyBmcm9tIGEgcHJlLWV4aXN0aW5nIHN1cmZhY2UuCi0gICAgZ2xHZW5UZXh0dXJl
cygxLCAmbV90ZXh0dXJlKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4
dHVyZSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JB
UF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7Ci0g
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwg
R0xfTElORUFSKTsKLQotICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX0FMSUdOTUVOVCwgMSk7
Ci0KLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCAvKiBsZXZlbCAqLywgR0xfUkdC
QSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgMCAvKiBib3JkZXIgKi8sIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotCi0gICAgY2Fpcm9fZGV2aWNlX3QqIGRldmljZSA9
IGNvbnRleHQtPmNhaXJvRGV2aWNlKCk7Ci0KLSAgICAvLyBUaHJlYWQtYXdhcmVuZXNzIGlzIGEg
aHVnZSBwZXJmb3JtYW5jZSBoaXQgb24gbm9uLUludGVsIGRyaXZlcnMuCi0gICAgY2Fpcm9fZ2xf
ZGV2aWNlX3NldF90aHJlYWRfYXdhcmUoZGV2aWNlLCBGQUxTRSk7Ci0KLSAgICBtX3N1cmZhY2Ug
PSBhZG9wdFJlZihjYWlyb19nbF9zdXJmYWNlX2NyZWF0ZV9mb3JfdGV4dHVyZShkZXZpY2UsIENB
SVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIG1fdGV4dHVyZSwgbV9zaXplLndpZHRoKCksIG1fc2l6
ZS5oZWlnaHQoKSkpOwotICAgIGNsZWFyU3VyZmFjZShtX3N1cmZhY2UuZ2V0KCkpOwotfQotI2Vu
ZGlmCi0KLXN0YXRpYyBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PgotY2Fpcm9TdXJmYWNlQ29weShj
YWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCi17Ci0gICAgYXV0byBjb3B5ID0gYWRvcHRSZWYoY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwKLSAgICAgICAgY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSksCi0gICAgICAgIGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSkpOwotCi0gICAgYXV0byBjciA9IGFkb3B0UmVm
KGNhaXJvX2NyZWF0ZShjb3B5LmdldCgpKSk7Ci0gICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLmdl
dCgpLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOwotICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFj
ZShjci5nZXQoKSwgc3VyZmFjZSwgMCwgMCk7Ci0gICAgY2Fpcm9fcGFpbnQoY3IuZ2V0KCkpOwot
Ci0gICAgcmV0dXJuIGNvcHk7Ci19Ci0KLXN0YXRpYyBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90Pgot
Y2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCi17Ci0g
ICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoc3VyZmFjZSkgPT0gQ0FJUk9fU1VSRkFDRV9U
WVBFX0lNQUdFCi0gICAgICAgICYmIGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQoc3VyZmFjZSkg
PT0gQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSkKLSAgICAgICAgcmV0dXJuIHN1cmZhY2U7Ci0K
LSAgICByZXR1cm4gY2Fpcm9TdXJmYWNlQ29weShzdXJmYWNlKTsKLX0KLQotVmVjdG9yPHVpbnQ4
X3Q+IEltYWdlQnVmZmVyOjp0b0JHUkFEYXRhKCkgY29uc3QKLXsKLSAgICBhdXRvIHN1cmZhY2Ug
PSBjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkpOwotICAg
IGNhaXJvX3N1cmZhY2VfZmx1c2goc3VyZmFjZS5nZXQoKSk7Ci0KLSAgICBWZWN0b3I8dWludDhf
dD4gaW1hZ2VEYXRhOwotICAgIGlmIChjYWlyb19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlLmdldCgp
KSkKLSAgICAgICAgcmV0dXJuIGltYWdlRGF0YTsKLQotICAgIGF1dG8gcGl4ZWxzID0gY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlLmdldCgpKTsKLSAgICBpbWFnZURhdGEuYXBw
ZW5kKHBpeGVscywgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UuZ2V0KCkp
ICoKLSAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UuZ2V0KCkp
KTsKLQotICAgIHJldHVybiBpbWFnZURhdGE7Ci19Ci0KLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVm
ZmVyOjpuYXRpdmVJbWFnZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGF0YS5tX3N1cmZhY2Uu
Z2V0KCk7Ci19Ci0KLUltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiwgYm9vbCYgc3VjY2VzcykKLSAgICA6IG1fZGF0
YShJbnRTaXplKHNpemUpLCByZW5kZXJpbmdNb2RlKQotICAgICwgbV9sb2dpY2FsU2l6ZShzaXpl
KQotICAgICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlvblNjYWxlKQotewotICAgIHN1Y2Nl
c3MgPSBmYWxzZTsgIC8vIE1ha2UgZWFybHkgcmV0dXJuIG1lYW4gZXJyb3IuCi0KLSAgICBmbG9h
dCBzY2FsZWRXaWR0aCA9IGNlaWxmKG1fcmVzb2x1dGlvblNjYWxlICogc2l6ZS53aWR0aCgpKTsK
LSAgICBmbG9hdCBzY2FsZWRIZWlnaHQgPSBjZWlsZihtX3Jlc29sdXRpb25TY2FsZSAqIHNpemUu
aGVpZ2h0KCkpOwotCi0gICAgLy8gRklYTUU6IFNob3VsZCB3ZSBhdXRvbWF0aWNhbGx5IHVzZSBh
IGxvd2VyIHJlc29sdXRpb24/Ci0gICAgaWYgKCFGbG9hdFNpemUoc2NhbGVkV2lkdGgsIHNjYWxl
ZEhlaWdodCkuaXNFeHByZXNzaWJsZUFzSW50U2l6ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX3NpemUgPSBJbnRTaXplKHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQpOwotICAgIG1fZGF0
YS5tX3NpemUgPSBtX3NpemU7Ci0KLSAgICBpZiAobV9zaXplLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBpZiAobV9k
YXRhLm1fcmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkgewotICAg
ICAgICBtX2RhdGEuY3JlYXRlQ2Fpcm9HTFN1cmZhY2UoKTsKLSAgICAgICAgaWYgKCFtX2RhdGEu
bV9zdXJmYWNlIHx8IGNhaXJvX3N1cmZhY2Vfc3RhdHVzKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkp
ICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKQotICAgICAgICAgICAgbV9kYXRhLm1fcmVuZGVyaW5n
TW9kZSA9IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7IC8vIElmIGFsbG9jYXRpb24gZmFp
bHMsIGZhbGwgYmFjayB0byBub24tYWNjZWxlcmF0ZWQgcGF0aC4KLSAgICB9Ci0gICAgaWYgKG1f
ZGF0YS5tX3JlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCkKLSNl
bHNlCi0gICAgQVNTRVJUKG1fZGF0YS5tX3JlbmRlcmluZ01vZGUgIT0gUmVuZGVyaW5nTW9kZTo6
QWNjZWxlcmF0ZWQpOwotI2VuZGlmCi0gICAgewotICAgICAgICBzdGF0aWMgY2Fpcm9fdXNlcl9k
YXRhX2tleV90IHNfc3VyZmFjZURhdGFLZXk7Ci0KLSAgICAgICAgaW50IHN0cmlkZSA9IGNhaXJv
X2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoKENBSVJPX0ZPUk1BVF9BUkdCMzIsIG1fc2l6ZS53aWR0
aCgpKTsKLSAgICAgICAgdm9pZCogc3VyZmFjZURhdGE7Ci0gICAgICAgIGlmICghdHJ5RmFzdFpl
cm9lZE1hbGxvYyhtX3NpemUuaGVpZ2h0KCkgKiBzdHJpZGUpLmdldFZhbHVlKHN1cmZhY2VEYXRh
KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX2RhdGEubV9zdXJmYWNlID0gYWRv
cHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcio+KHN1cmZhY2VEYXRhKSwgQ0FJUk9fRk9STUFUX0FSR0IzMiwgbV9zaXplLndp
ZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgc3RyaWRlKSk7Ci0gICAgICAgIGNhaXJvX3N1cmZhY2Vf
c2V0X3VzZXJfZGF0YShtX2RhdGEubV9zdXJmYWNlLmdldCgpLCAmc19zdXJmYWNlRGF0YUtleSwg
c3VyZmFjZURhdGEsIFtdKHZvaWQqIGRhdGEpIHsgZmFzdEZyZWUoZGF0YSk7IH0pOwotICAgIH0K
LQotICAgIGlmIChjYWlyb19zdXJmYWNlX3N0YXR1cyhtX2RhdGEubV9zdXJmYWNlLmdldCgpKSAh
PSBDQUlST19TVEFUVVNfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuOyAgLy8gY3JlYXRlIHdpbGwg
bm90aWNlIHdlIGRpZG4ndCBzZXQgbV9pbml0aWFsaXplZCBhbmQgZmFpbC4KLQotICAgIGNhaXJv
U3VyZmFjZVNldERldmljZVNjYWxlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIG1fcmVzb2x1dGlv
blNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7Ci0KLSAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBh
ZG9wdFJlZihjYWlyb19jcmVhdGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSkpOwotICAgIG1fZGF0
YS5tX3BsYXRmb3JtQ29udGV4dC5zZXRDcihjci5nZXQoKSk7Ci0gICAgbV9kYXRhLm1fY29udGV4
dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86
OmNyZWF0ZUZhY3RvcnkobV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0KSk7Ci0gICAgc3VjY2VzcyA9
IHRydWU7Ci19Ci0KLUltYWdlQnVmZmVyOjp+SW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0KLXN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2l6ZSwgQ29sb3JTcGFj
ZTo6U1JHQiwgY29udGV4dCk7Ci19Ci0KLUdyYXBoaWNzQ29udGV4dCYgSW1hZ2VCdWZmZXI6OmNv
bnRleHQoKSBjb25zdAotewotICAgIHJldHVybiAqbV9kYXRhLm1fY29udGV4dDsKLX0KLQotUmVm
UHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGltYWdlQnVmZmVyLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0
aW9uKQotewotICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+Y29weUltYWdlKERvbnRDb3B5QmFja2lu
Z1N0b3JlLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwotfQotCi1SZWZQdHI8SW1hZ2U+IEltYWdlQnVm
ZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFByZXNlcnZlUmVz
b2x1dGlvbikgY29uc3QKLXsKLSAgICAvLyBjb3B5Q2Fpcm9JbWFnZVN1cmZhY2UgaW5oZXJpdHMg
c3VyZmFjZSdzIGRldmljZSBzY2FsZSBmYWN0b3IuCi0gICAgaWYgKGNvcHlCZWhhdmlvciA9PSBD
b3B5QmFja2luZ1N0b3JlKQotICAgICAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShjb3B5
Q2Fpcm9JbWFnZVN1cmZhY2UobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSkpOwotCi0gICAgLy8gQml0
bWFwSW1hZ2Ugd2lsbCByZWxlYXNlIHRoZSBwYXNzZWQgaW4gc3VyZmFjZSBvbiBkZXN0cnVjdGlv
bgotICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
KG1fZGF0YS5tX3N1cmZhY2UpKTsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWlu
ZyhzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRl
eHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewotICAg
IGltYWdlQnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9u
cyk7Ci19Ci0KLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5h
dGlvbkNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewotICAgIGlm
IChkZXN0aW5hdGlvbkNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoYXV0byBzdXJmYWNlID0gbmF0aXZlSW1hZ2UoKSkgewotICAgICAgICBpZiAo
JmRlc3RpbmF0aW9uQ29udGV4dCA9PSAmY29udGV4dCgpKQotICAgICAgICAgICAgc3VyZmFjZSA9
IGNhaXJvU3VyZmFjZUNvcHkoc3VyZmFjZS5nZXQoKSk7Ci0KLSAgICAgICAgSW50ZXJwb2xhdGlv
blF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGRlc3Rp
bmF0aW9uQ29udGV4dCwgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICAgICAg
Y29uc3QgYXV0byYgZGVzdGluYXRpb25Db250ZXh0U3RhdGUgPSBkZXN0aW5hdGlvbkNvbnRleHQu
c3RhdGUoKTsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKCpkZXN0aW5hdGlvbkNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlv
bnMsIGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwg
ZGVzdGluYXRpb25Db250ZXh0U3RhdGUuYWxwaGEsIFdlYkNvcmU6OkNhaXJvOjpTaGFkb3dTdGF0
ZShkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZSkpOwotICAgIH0KLX0KLQotdm9pZCBJbWFnZUJ1ZmZl
cjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAg
aWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAoYXV0byBzdXJmYWNlID0gbmF0aXZlSW1hZ2UoKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0
ZXJuKCpjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBzdXJmYWNlLmdldCgpLCBtX3NpemUsIGRl
c3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7Ci19Ci0K
LXZvaWQgSW1hZ2VCdWZmZXI6OnBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBzdGQ6
OmFycmF5PHVpbnQ4X3QsIDI1Nj4mIGxvb2tVcFRhYmxlKQotewotICAgIC8vIEZJWE1FOiBFbmFi
bGUgY29sb3Igc3BhY2UgY29udmVyc2lvbnMgb24gYWNjZWxlcmF0ZWQgY2FudmFzZXMuCi0gICAg
aWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSkgIT0gQ0FJ
Uk9fU1VSRkFDRV9UWVBFX0lNQUdFKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25lZCBj
aGFyKiBkYXRhU3JjID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShtX2RhdGEubV9zdXJm
YWNlLmdldCgpKTsKLSAgICBpbnQgc3RyaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3Ry
aWRlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkpOwotICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbV9z
aXplLmhlaWdodCgpOyArK3kpIHsKLSAgICAgICAgdW5zaWduZWQqIHJvdyA9IHJlaW50ZXJwcmV0
X2Nhc3RfcHRyPHVuc2lnbmVkKj4oZGF0YVNyYyArIHN0cmlkZSAqIHkpOwotICAgICAgICBmb3Ig
KGludCB4ID0gMDsgeCA8IG1fc2l6ZS53aWR0aCgpOyB4KyspIHsKLSAgICAgICAgICAgIHVuc2ln
bmVkKiBwaXhlbCA9IHJvdyArIHg7Ci0gICAgICAgICAgICBDb2xvciBwaXhlbENvbG9yID0gY29s
b3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsKTsKLSAgICAgICAgICAgIHBpeGVsQ29sb3Ig
PSBDb2xvcihsb29rVXBUYWJsZVtwaXhlbENvbG9yLnJlZCgpXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsb29rVXBUYWJsZVtwaXhlbENvbG9yLmdyZWVuKCldLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxvb2tVcFRhYmxlW3BpeGVsQ29sb3IuYmx1ZSgpXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbENvbG9yLmFscGhhKCkpOwotICAgICAg
ICAgICAgKnBpeGVsID0gcHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IocGl4ZWxDb2xvcik7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZSht
X2RhdGEubV9zdXJmYWNlLmdldCgpLCAwLCAwLCBtX2xvZ2ljYWxTaXplLndpZHRoKCksIG1fbG9n
aWNhbFNpemUuaGVpZ2h0KCkpOwotfQotCi1SZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5U3Vy
ZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgSW50UmVj
dCYgcmVjdCkKLXsKLSAgICBjYWlyb19zdXJmYWNlX3R5cGVfdCBzdXJmYWNlVHlwZSA9IGNhaXJv
X3N1cmZhY2VfZ2V0X3R5cGUoc3VyZmFjZSk7Ci0KLSAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUg
YW4gaW1hZ2UsIHdlIHdyaXRlIGRpcmVjdGx5IHRvIHRoZSB1bmRlcmx5aW5nIGRhdGE7Ci0gICAg
Ly8gb3RoZXJ3aXNlIHdlIGNyZWF0ZSBhIHRlbXBvcmFyeSBzdXJmYWNlIGltYWdlCi0gICAgaWYg
KHN1cmZhY2VUeXBlID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKLSAgICAgICAgcmV0dXJu
IHN1cmZhY2U7Ci0gICAgCi0gICAgcmVjdC5zZXRYKDApOwotICAgIHJlY3Quc2V0WSgwKTsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFU
X0FSR0IzMiwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7Ci19Ci0KLXRlbXBsYXRlIDxB
bHBoYVByZW11bHRpcGxpY2F0aW9uIHByZW11bHRpcGxpZWQ+Ci1SZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRSZWN0JiBs
b2dpY2FsUmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBz
aXplLCBjb25zdCBJbnRTaXplJiBsb2dpY2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQot
ewotICAgIC8vIFRoZSBhcmVhIGNhbiBvdmVyZmxvdyBpZiB0aGUgcmVjdCBpcyB0b28gYmlnLgot
ICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBhcmVhID0gNDsKLSAgICBhcmVh
ICo9IHJlY3Qud2lkdGgoKTsKLSAgICBhcmVhICo9IHJlY3QuaGVpZ2h0KCk7Ci0gICAgaWYgKGFy
ZWEuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8g
cmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYS51
bnNhZmVHZXQoKSk7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgLy8gQ2FuIG92ZXJmbG93LCBhcyB3ZSBhcmUgYWRkaW5nIDIgaW50cy4KLSAgICBpbnQg
ZW5keCA9IDA7Ci0gICAgaWYgKCFXVEY6OnNhZmVBZGQocmVjdC54KCksIHJlY3Qud2lkdGgoKSwg
ZW5keCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgLy8gQ2FuIG92ZXJmbG93LCBh
cyB3ZSBhcmUgYWRkaW5nIDIgaW50cy4KLSAgICBpbnQgZW5keSA9IDA7Ci0gICAgaWYgKCFXVEY6
OnNhZmVBZGQocmVjdC55KCksIHJlY3QuaGVpZ2h0KCksIGVuZHkpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIGlmIChyZWN0LngoKSA8IDAgfHwgcmVjdC55KCkgPCAwIHx8IGVuZHgg
PiBzaXplLndpZHRoKCkgfHwgZW5keSA+IHNpemUuaGVpZ2h0KCkpCi0gICAgICAgIHJlc3VsdC0+
emVyb0ZpbGwoKTsKLQotICAgIGludCBvcmlnaW54ID0gcmVjdC54KCk7Ci0gICAgaW50IGRlc3R4
ID0gMDsKLSAgICBpZiAob3JpZ2lueCA8IDApIHsKLSAgICAgICAgZGVzdHggPSAtb3JpZ2lueDsK
LSAgICAgICAgb3JpZ2lueCA9IDA7Ci0gICAgfQotCi0gICAgaWYgKGVuZHggPiBzaXplLndpZHRo
KCkpCi0gICAgICAgIGVuZHggPSBzaXplLndpZHRoKCk7Ci0gICAgaW50IG51bUNvbHVtbnMgPSBl
bmR4IC0gb3JpZ2lueDsKLQotICAgIGludCBvcmlnaW55ID0gcmVjdC55KCk7Ci0gICAgaW50IGRl
c3R5ID0gMDsKLSAgICBpZiAob3JpZ2lueSA8IDApIHsKLSAgICAgICAgZGVzdHkgPSAtb3JpZ2lu
eTsKLSAgICAgICAgb3JpZ2lueSA9IDA7Ci0gICAgfQotCi0gICAgaWYgKGVuZHkgPiBzaXplLmhl
aWdodCgpKQotICAgICAgICBlbmR5ID0gc2l6ZS5oZWlnaHQoKTsKLSAgICBpbnQgbnVtUm93cyA9
IGVuZHkgLSBvcmlnaW55OwotCi0gICAgLy8gTm90aGluZyB3aWxsIGJlIGNvcGllZCwgc28ganVz
dCByZXR1cm4gdGhlIHJlc3VsdC4KLSAgICBpZiAobnVtQ29sdW1ucyA8PSAwIHx8IG51bVJvd3Mg
PD0gMCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgIC8vIFRoZSBzaXplIG9mIHRoZSBk
ZXJpdmVkIHN1cmZhY2UgaXMgaW4gQmFja2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbS4KLSAgICAv
LyBXZSBuZWVkIHRvIHNldCB0aGUgZGV2aWNlIHNjYWxlIGZvciB0aGUgZGVyaXZlZCBzdXJmYWNl
IGZyb20gdGhpcyBJbWFnZUJ1ZmZlci4KLSAgICBJbnRSZWN0IGltYWdlUmVjdChvcmlnaW54LCBv
cmlnaW55LCBudW1Db2x1bW5zLCBudW1Sb3dzKTsKLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBpbWFnZVN1cmZhY2UgPSBjb3B5U3VyZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KGRhdGEubV9z
dXJmYWNlLmdldCgpLCBpbWFnZVJlY3QpOwotICAgIGNhaXJvU3VyZmFjZVNldERldmljZVNjYWxl
KGltYWdlU3VyZmFjZS5nZXQoKSwgcmVzb2x1dGlvblNjYWxlLCByZXNvbHV0aW9uU2NhbGUpOwot
ICAgIG9yaWdpbnggPSBpbWFnZVJlY3QueCgpOwotICAgIG9yaWdpbnkgPSBpbWFnZVJlY3QueSgp
OwotICAgIGlmIChpbWFnZVN1cmZhY2UgIT0gZGF0YS5tX3N1cmZhY2UuZ2V0KCkpIHsKLSAgICAg
ICAgLy8gVGhpcyBjYWlybyBzdXJmYWNlIG9wZXJhdGlvbiBpcyBkb25lIGluIExvZ2ljYWxDb29y
ZGluYXRlU3lzdGVtLgotICAgICAgICBJbnRSZWN0IGxvZ2ljYWxBcmVhID0gaW50ZXJzZWN0aW9u
KGxvZ2ljYWxSZWN0LCBJbnRSZWN0KDAsIDAsIGxvZ2ljYWxTaXplLndpZHRoKCksIGxvZ2ljYWxT
aXplLmhlaWdodCgpKSk7Ci0gICAgICAgIGNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIo
ZGF0YS5tX3N1cmZhY2UuZ2V0KCksIGltYWdlU3VyZmFjZS5nZXQoKSwgSW50U2l6ZSgtbG9naWNh
bEFyZWEueCgpLCAtbG9naWNhbEFyZWEueSgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBsb2dpY2Fs
QXJlYS5zaXplKCkpLCBJbnRTaXplKCkpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGNoYXIqIGRh
dGFTcmMgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlU3VyZmFjZS5nZXQoKSk7
Ci0gICAgdW5zaWduZWQgY2hhciogZGF0YURzdCA9IHJlc3VsdC0+ZGF0YSgpOwotICAgIGludCBz
dHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoaW1hZ2VTdXJmYWNlLmdldCgp
KTsKLSAgICB1bnNpZ25lZCBkZXN0Qnl0ZXNQZXJSb3cgPSA0ICogcmVjdC53aWR0aCgpOwotCi0g
ICAgdW5zaWduZWQgY2hhciogZGVzdFJvd3MgPSBkYXRhRHN0ICsgZGVzdHkgKiBkZXN0Qnl0ZXNQ
ZXJSb3cgKyBkZXN0eCAqIDQ7Ci0gICAgZm9yIChpbnQgeSA9IDA7IHkgPCBudW1Sb3dzOyArK3kp
IHsKLSAgICAgICAgdW5zaWduZWQqIHJvdyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVk
Kj4oZGF0YVNyYyArIHN0cmlkZSAqICh5ICsgb3JpZ2lueSkpOwotICAgICAgICBmb3IgKGludCB4
ID0gMDsgeCA8IG51bUNvbHVtbnM7IHgrKykgewotICAgICAgICAgICAgaW50IGJhc2V4ID0geCAq
IDQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCogcGl4ZWwgPSByb3cgKyB4ICsgb3JpZ2lueDsKLQot
ICAgICAgICAgICAgLy8gQXZvaWQgY2FsbGluZyBDb2xvcjo6Y29sb3JGcm9tUHJlbXVsdGlwbGll
ZEFSR0IoKSBiZWNhdXNlIG9uZQotICAgICAgICAgICAgLy8gZnVuY3Rpb24gY2FsbCBwZXIgcGl4
ZWwgaXMgdG9vIGV4cGVuc2l2ZS4KLSAgICAgICAgICAgIHVuc2lnbmVkIGFscGhhID0gKCpwaXhl
bCAmIDB4RkYwMDAwMDApID4+IDI0OwotICAgICAgICAgICAgdW5zaWduZWQgcmVkID0gKCpwaXhl
bCAmIDB4MDBGRjAwMDApID4+IDE2OwotICAgICAgICAgICAgdW5zaWduZWQgZ3JlZW4gPSAoKnBp
eGVsICYgMHgwMDAwRkYwMCkgPj4gODsKLSAgICAgICAgICAgIHVuc2lnbmVkIGJsdWUgPSAoKnBp
eGVsICYgMHgwMDAwMDBGRik7Ci0KLSAgICAgICAgICAgIGlmIChwcmVtdWx0aXBsaWVkID09IEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCkgewotICAgICAgICAgICAgICAg
IGlmIChhbHBoYSAmJiBhbHBoYSAhPSAyNTUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVkID0g
cmVkICogMjU1IC8gYWxwaGE7Ci0gICAgICAgICAgICAgICAgICAgIGdyZWVuID0gZ3JlZW4gKiAy
NTUgLyBhbHBoYTsKLSAgICAgICAgICAgICAgICAgICAgYmx1ZSA9IGJsdWUgKiAyNTUgLyBhbHBo
YTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGRlc3RS
b3dzW2Jhc2V4XSAgICAgPSByZWQ7Ci0gICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDFdID0g
Z3JlZW47Ci0gICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDJdID0gYmx1ZTsKLSAgICAgICAg
ICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBhbHBoYTsKLSAgICAgICAgfQotICAgICAgICBkZXN0
Um93cyArPSBkZXN0Qnl0ZXNQZXJSb3c7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgVW5pdD4KLWlubGluZSBVbml0IGxvZ2ljYWxVbml0KGNvbnN0
IFVuaXQmIHZhbHVlLCBJbWFnZUJ1ZmZlcjo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lz
dGVtT2ZWYWx1ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQotewotICAgIGlmIChjb29yZGluYXRl
U3lzdGVtT2ZWYWx1ZSA9PSBJbWFnZUJ1ZmZlcjo6TG9naWNhbENvb3JkaW5hdGVTeXN0ZW0gfHwg
cmVzb2x1dGlvblNjYWxlID09IDEuMCkKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIFVuaXQg
cmVzdWx0KHZhbHVlKTsKLSAgICByZXN1bHQuc2NhbGUoMS4wIC8gcmVzb2x1dGlvblNjYWxlKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBVbml0PgotaW5saW5l
IFVuaXQgYmFja2luZ1N0b3JlVW5pdChjb25zdCBVbml0JiB2YWx1ZSwgSW1hZ2VCdWZmZXI6OkNv
b3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbU9mVmFsdWUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSkKLXsKLSAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbU9mVmFsdWUgPT0gSW1hZ2VCdWZmZXI6
OkJhY2tpbmdTdG9yZUNvb3JkaW5hdGVTeXN0ZW0gfHwgcmVzb2x1dGlvblNjYWxlID09IDEuMCkK
LSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIFVuaXQgcmVzdWx0KHZhbHVlKTsKLSAgICByZXN1
bHQuc2NhbGUocmVzb2x1dGlvblNjYWxlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1SZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURh
dGEoY29uc3QgSW50UmVjdCYgcmVjdCwgSW50U2l6ZSogcGl4ZWxBcnJheURpbWVuc2lvbnMsIENv
b3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKLXsKLSAgICBJbnRSZWN0IGxv
Z2ljYWxSZWN0ID0gbG9naWNhbFVuaXQocmVjdCwgY29vcmRpbmF0ZVN5c3RlbSwgbV9yZXNvbHV0
aW9uU2NhbGUpOwotICAgIEludFJlY3QgYmFja2luZ1N0b3JlUmVjdCA9IGJhY2tpbmdTdG9yZVVu
aXQocmVjdCwgY29vcmRpbmF0ZVN5c3RlbSwgbV9yZXNvbHV0aW9uU2NhbGUpOwotICAgIGlmIChw
aXhlbEFycmF5RGltZW5zaW9ucykKLSAgICAgICAgKnBpeGVsQXJyYXlEaW1lbnNpb25zID0gYmFj
a2luZ1N0b3JlUmVjdC5zaXplKCk7Ci0gICAgcmV0dXJuIGdldEltYWdlRGF0YTxBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQ+KGJhY2tpbmdTdG9yZVJlY3QsIGxvZ2ljYWxS
ZWN0LCBtX2RhdGEsIG1fc2l6ZSwgbV9sb2dpY2FsU2l6ZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwot
fQotCi1SZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBs
aWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIEludFNpemUqIHBpeGVsQXJyYXlEaW1l
bnNpb25zLCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0Ci17Ci0gICAg
SW50UmVjdCBsb2dpY2FsUmVjdCA9IGxvZ2ljYWxVbml0KHJlY3QsIGNvb3JkaW5hdGVTeXN0ZW0s
IG1fcmVzb2x1dGlvblNjYWxlKTsKLSAgICBJbnRSZWN0IGJhY2tpbmdTdG9yZVJlY3QgPSBiYWNr
aW5nU3RvcmVVbml0KHJlY3QsIGNvb3JkaW5hdGVTeXN0ZW0sIG1fcmVzb2x1dGlvblNjYWxlKTsK
LSAgICBpZiAocGl4ZWxBcnJheURpbWVuc2lvbnMpCi0gICAgICAgICpwaXhlbEFycmF5RGltZW5z
aW9ucyA9IGJhY2tpbmdTdG9yZVJlY3Quc2l6ZSgpOwotICAgIHJldHVybiBnZXRJbWFnZURhdGE8
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZD4oYmFja2luZ1N0b3JlUmVjdCwg
bG9naWNhbFJlY3QsIG1fZGF0YSwgbV9zaXplLCBtX2xvZ2ljYWxTaXplLCBtX3Jlc29sdXRpb25T
Y2FsZSk7Ci19Ci0KLXZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShjb25zdCBVaW50OENs
YW1wZWRBcnJheSYgc291cmNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIHNvdXJjZUZvcm1hdCwg
Y29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVt
KQotewotICAgIEludFJlY3Qgc2NhbGVkU291cmNlUmVjdCA9IGJhY2tpbmdTdG9yZVVuaXQoc291
cmNlUmVjdCwgY29vcmRpbmF0ZVN5c3RlbSwgbV9yZXNvbHV0aW9uU2NhbGUpOwotICAgIEludFNp
emUgc2NhbGVkU291cmNlU2l6ZSA9IGJhY2tpbmdTdG9yZVVuaXQoc291cmNlU2l6ZSwgY29vcmRp
bmF0ZVN5c3RlbSwgbV9yZXNvbHV0aW9uU2NhbGUpOwotICAgIEludFBvaW50IHNjYWxlZERlc3RQ
b2ludCA9IGJhY2tpbmdTdG9yZVVuaXQoZGVzdFBvaW50LCBjb29yZGluYXRlU3lzdGVtLCBtX3Jl
c29sdXRpb25TY2FsZSk7Ci0gICAgSW50UmVjdCBsb2dpY2FsU291cmNlUmVjdCA9IGxvZ2ljYWxV
bml0KHNvdXJjZVJlY3QsIGNvb3JkaW5hdGVTeXN0ZW0sIG1fcmVzb2x1dGlvblNjYWxlKTsKLSAg
ICBJbnRQb2ludCBsb2dpY2FsRGVzdFBvaW50ID0gbG9naWNhbFVuaXQoZGVzdFBvaW50LCBjb29y
ZGluYXRlU3lzdGVtLCBtX3Jlc29sdXRpb25TY2FsZSk7Ci0KLSAgICBBU1NFUlQoc2NhbGVkU291
cmNlUmVjdC53aWR0aCgpID4gMCk7Ci0gICAgQVNTRVJUKHNjYWxlZFNvdXJjZVJlY3QuaGVpZ2h0
KCkgPiAwKTsKLQotICAgIGludCBvcmlnaW54ID0gc2NhbGVkU291cmNlUmVjdC54KCk7Ci0gICAg
aW50IGRlc3R4ID0gc2NhbGVkRGVzdFBvaW50LngoKSArIHNjYWxlZFNvdXJjZVJlY3QueCgpOwot
ICAgIGludCBsb2dpY2FsRGVzdHggPSBsb2dpY2FsRGVzdFBvaW50LngoKSArIGxvZ2ljYWxTb3Vy
Y2VSZWN0LngoKTsKLSAgICBBU1NFUlQoZGVzdHggPj0gMCk7Ci0gICAgQVNTRVJUKGRlc3R4IDwg
bV9zaXplLndpZHRoKCkpOwotICAgIEFTU0VSVChvcmlnaW54ID49IDApOwotICAgIEFTU0VSVChv
cmlnaW54IDw9IHNjYWxlZFNvdXJjZVJlY3QubWF4WCgpKTsKLQotICAgIGludCBlbmR4ID0gc2Nh
bGVkRGVzdFBvaW50LngoKSArIHNjYWxlZFNvdXJjZVJlY3QubWF4WCgpOwotICAgIGludCBsb2dp
Y2FsRW5keCA9IGxvZ2ljYWxEZXN0UG9pbnQueCgpICsgbG9naWNhbFNvdXJjZVJlY3QubWF4WCgp
OwotICAgIEFTU0VSVChlbmR4IDw9IG1fc2l6ZS53aWR0aCgpKTsKLQotICAgIGludCBudW1Db2x1
bW5zID0gZW5keCAtIGRlc3R4OwotICAgIGludCBsb2dpY2FsTnVtQ29sdW1ucyA9IGxvZ2ljYWxF
bmR4IC0gbG9naWNhbERlc3R4OwotCi0gICAgaW50IG9yaWdpbnkgPSBzY2FsZWRTb3VyY2VSZWN0
LnkoKTsKLSAgICBpbnQgZGVzdHkgPSBzY2FsZWREZXN0UG9pbnQueSgpICsgc2NhbGVkU291cmNl
UmVjdC55KCk7Ci0gICAgaW50IGxvZ2ljYWxEZXN0eSA9IGxvZ2ljYWxEZXN0UG9pbnQueSgpICsg
bG9naWNhbFNvdXJjZVJlY3QueSgpOwotICAgIEFTU0VSVChkZXN0eSA+PSAwKTsKLSAgICBBU1NF
UlQoZGVzdHkgPCBtX3NpemUuaGVpZ2h0KCkpOwotICAgIEFTU0VSVChvcmlnaW55ID49IDApOwot
ICAgIEFTU0VSVChvcmlnaW55IDw9IHNjYWxlZFNvdXJjZVJlY3QubWF4WSgpKTsKLQotICAgIGlu
dCBlbmR5ID0gc2NhbGVkRGVzdFBvaW50LnkoKSArIHNjYWxlZFNvdXJjZVJlY3QubWF4WSgpOwot
ICAgIGludCBsb2dpY2FsRW5keSA9IGxvZ2ljYWxEZXN0UG9pbnQueSgpICsgbG9naWNhbFNvdXJj
ZVJlY3QubWF4WSgpOwotICAgIEFTU0VSVChlbmR5IDw9IG1fc2l6ZS5oZWlnaHQoKSk7Ci0gICAg
aW50IG51bVJvd3MgPSBlbmR5IC0gZGVzdHk7Ci0gICAgaW50IGxvZ2ljYWxOdW1Sb3dzID0gbG9n
aWNhbEVuZHkgLSBsb2dpY2FsRGVzdHk7Ci0KLSAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgZGVyaXZl
ZCBzdXJmYWNlIGlzIGluIEJhY2tpbmdTdG9yZUNvb3JkaW5hdGVTeXN0ZW0uCi0gICAgLy8gV2Ug
bmVlZCB0byBzZXQgdGhlIGRldmljZSBzY2FsZSBmb3IgdGhlIGRlcml2ZWQgc3VyZmFjZSBmcm9t
IHRoaXMgSW1hZ2VCdWZmZXIuCi0gICAgSW50UmVjdCBpbWFnZVJlY3QoZGVzdHgsIGRlc3R5LCBu
dW1Db2x1bW5zLCBudW1Sb3dzKTsKLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZVN1
cmZhY2UgPSBjb3B5U3VyZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KG1fZGF0YS5tX3N1cmZhY2Uu
Z2V0KCksIGltYWdlUmVjdCk7Ci0gICAgY2Fpcm9TdXJmYWNlU2V0RGV2aWNlU2NhbGUoaW1hZ2VT
dXJmYWNlLmdldCgpLCBtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwotICAg
IGRlc3R4ID0gaW1hZ2VSZWN0LngoKTsKLSAgICBkZXN0eSA9IGltYWdlUmVjdC55KCk7Ci0KLSAg
ICB1aW50OF90KiBwaXhlbERhdGEgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdl
U3VyZmFjZS5nZXQoKSk7Ci0KLSAgICB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdyA9IDQgKiBzY2Fs
ZWRTb3VyY2VTaXplLndpZHRoKCk7Ci0gICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X3N0cmlkZShpbWFnZVN1cmZhY2UuZ2V0KCkpOwotCi0gICAgY29uc3QgdWludDhfdCog
c3JjUm93cyA9IHNvdXJjZS5kYXRhKCkgKyBvcmlnaW55ICogc3JjQnl0ZXNQZXJSb3cgKyBvcmln
aW54ICogNDsKLSAgICBmb3IgKGludCB5ID0gMDsgeSA8IG51bVJvd3M7ICsreSkgewotICAgICAg
ICB1bnNpZ25lZCogcm93ID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihwaXhlbERh
dGEgKyBzdHJpZGUgKiAoeSArIGRlc3R5KSk7Ci0gICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwg
bnVtQ29sdW1uczsgeCsrKSB7Ci0gICAgICAgICAgICBpbnQgYmFzZXggPSB4ICogNDsKLSAgICAg
ICAgICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJvdyArIHggKyBkZXN0eDsKLQotICAgICAgICAgICAg
Ly8gQXZvaWQgY2FsbGluZyBDb2xvcjo6cHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IoKSBiZWNh
dXNlIG9uZQotICAgICAgICAgICAgLy8gZnVuY3Rpb24gY2FsbCBwZXIgcGl4ZWwgaXMgdG9vIGV4
cGVuc2l2ZS4KLSAgICAgICAgICAgIHVuc2lnbmVkIHJlZCA9IHNyY1Jvd3NbYmFzZXhdOwotICAg
ICAgICAgICAgdW5zaWduZWQgZ3JlZW4gPSBzcmNSb3dzW2Jhc2V4ICsgMV07Ci0gICAgICAgICAg
ICB1bnNpZ25lZCBibHVlID0gc3JjUm93c1tiYXNleCArIDJdOwotICAgICAgICAgICAgdW5zaWdu
ZWQgYWxwaGEgPSBzcmNSb3dzW2Jhc2V4ICsgM107Ci0KLSAgICAgICAgICAgIGlmIChzb3VyY2VG
b3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGFscGhhICE9IDI1NSkgewotICAgICAgICAgICAgICAgICAgICByZWQg
PSAocmVkICogYWxwaGEgKyAyNTQpIC8gMjU1OwotICAgICAgICAgICAgICAgICAgICBncmVlbiA9
IChncmVlbiAqIGFscGhhICsgMjU0KSAvIDI1NTsKLSAgICAgICAgICAgICAgICAgICAgYmx1ZSA9
IChibHVlICogYWxwaGEgKyAyNTQpIC8gMjU1OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgKnBpeGVsID0gKGFscGhhIDw8IDI0KSB8IHJlZCAgPDwgMTYg
fCBncmVlbiAgPDwgOCB8IGJsdWU7Ci0gICAgICAgIH0KLSAgICAgICAgc3JjUm93cyArPSBzcmNC
eXRlc1BlclJvdzsKLSAgICB9Ci0KLSAgICAvLyBUaGlzIGNhaXJvIHN1cmZhY2Ugb3BlcmF0aW9u
IGlzIGRvbmUgaW4gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0uCi0gICAgY2Fpcm9fc3VyZmFjZV9t
YXJrX2RpcnR5X3JlY3RhbmdsZShpbWFnZVN1cmZhY2UuZ2V0KCksIGxvZ2ljYWxEZXN0eCwgbG9n
aWNhbERlc3R5LCBsb2dpY2FsTnVtQ29sdW1ucywgbG9naWNhbE51bVJvd3MpOwotCi0gICAgaWYg
KGltYWdlU3VyZmFjZSAhPSBtX2RhdGEubV9zdXJmYWNlLmdldCgpKSB7Ci0gICAgICAgIC8vIFRo
aXMgY2Fpcm8gc3VyZmFjZSBvcGVyYXRpb24gaXMgZG9uZSBpbiBMb2dpY2FsQ29vcmRpbmF0ZVN5
c3RlbS4KLSAgICAgICAgY29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5vdGhlcihpbWFnZVN1cmZh
Y2UuZ2V0KCksIG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIEludFNpemUoKSwgSW50UmVjdCgwLCAw
LCBsb2dpY2FsTnVtQ29sdW1ucywgbG9naWNhbE51bVJvd3MpLCBJbnRTaXplKGxvZ2ljYWxEZXN0
UG9pbnQueCgpICsgbG9naWNhbFNvdXJjZVJlY3QueCgpLCBsb2dpY2FsRGVzdFBvaW50LnkoKSAr
IGxvZ2ljYWxTb3VyY2VSZWN0LnkoKSkpOwotICAgIH0KLX0KLQotU3RyaW5nIEltYWdlQnVmZmVy
Ojp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFs
aXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0Ci17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGVu
Y29kZWRJbWFnZSA9IHRvRGF0YShtaW1lVHlwZSwgcXVhbGl0eSk7Ci0gICAgaWYgKGVuY29kZWRJ
bWFnZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAiZGF0YTosIjsKLQotICAgIFZlY3Rvcjxj
aGFyPiBiYXNlNjREYXRhOwotICAgIGJhc2U2NEVuY29kZShlbmNvZGVkSW1hZ2UuZGF0YSgpLCBl
bmNvZGVkSW1hZ2Uuc2l6ZSgpLCBiYXNlNjREYXRhKTsKLQotICAgIHJldHVybiAiZGF0YToiICsg
bWltZVR5cGUgKyAiO2Jhc2U2NCwiICsgYmFzZTY0RGF0YTsKLX0KLQotVmVjdG9yPHVpbnQ4X3Q+
IEltYWdlQnVmZmVyOjp0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5KSBjb25zdAotewotICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1
cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpOwotICAgIGNhaXJvX3N1
cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRl
eHQoKS0+Y3IoKSk7Ci0gICAgcmV0dXJuIGRhdGEoaW1hZ2UsIG1pbWVUeXBlLCBxdWFsaXR5KTsK
LX0KLQotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYmICFVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpCi12b2lkIEltYWdlQnVmZmVyRGF0YTo6cGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5KQotewot
ICAgIEFTU0VSVChtX3RleHR1cmUpOwotCi0gICAgLy8gQ2Fpcm8gbWF5IGNoYW5nZSB0aGUgYWN0
aXZlIGNvbnRleHQsIHNvIHdlIG1ha2Ugc3VyZSB0byBjaGFuZ2UgaXQgYmFjayBhZnRlciBmbHVz
aGluZy4KLSAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6
Y3VycmVudCgpOwotICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsKLSAg
ICBwcmV2aW91c0FjdGl2ZUNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotCi0gICAgc3Rh
dGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMJj4odGV4dHVyZU1hcHBlcikuZHJhd1RleHR1cmUobV90
ZXh0dXJlLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kLCBtX3NpemUsIHRhcmdldFJlY3Qs
IG1hdHJpeCwgb3BhY2l0eSk7Ci19Ci0jZW5kaWYKLQotUGxhdGZvcm1MYXllciogSW1hZ2VCdWZm
ZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpCi0jaWYgVVNFKE5JQ09TSUEpCi0gICAgaWYgKG1fZGF0YS5tX3JlbmRlcmluZ01vZGUg
PT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCi0gICAgICAgIHJldHVybiBtX2RhdGEubV9u
aWNvc2lhTGF5ZXIuZ2V0KCk7Ci0jZWxzZQotICAgIGlmIChtX2RhdGEubV90ZXh0dXJlKQotICAg
ICAgICByZXR1cm4gY29uc3RfY2FzdDxJbWFnZUJ1ZmZlckRhdGEqPigmbV9kYXRhKTsKLSNlbmRp
ZgotI2VuZGlmCi0gICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wgSW1hZ2VCdWZmZXI6OmNvcHlUb1Bs
YXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYsIEdDR0xlbnVtIHRhcmdldCwg
UGxhdGZvcm1HTE9iamVjdCBkZXN0aW5hdGlvblRleHR1cmUsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCi17Ci0jaWYgRU5BQkxFKEFD
Q0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcmVzb2x1dGlv
blNjYWxlID09IDEuMCwgIlNpbmNlIHRoZSBIaURQSSBDYW52YXMgZmVhdHVyZSBpcyByZW1vdmVk
LCB0aGUgcmVzb2x1dGlvbiBmYWN0b3IgaGVyZSBpcyBhbHdheXMgMS4iKTsKLSAgICBpZiAocHJl
bXVsdGlwbHlBbHBoYSB8fCBmbGlwWSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYg
KCFtX2RhdGEubV90ZXh0dXJlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBHQ0dMZW51
bSBiaW5kVGV4dHVyZVRhcmdldDsKLSAgICBzd2l0Y2ggKHRhcmdldCkgewotICAgIGNhc2UgR0xf
VEVYVFVSRV8yRDoKLSAgICAgICAgYmluZFRleHR1cmVUYXJnZXQgPSBHTF9URVhUVVJFXzJEOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDoK
LSAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWDoKLSAgICBjYXNlIEdMX1RF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKLSAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWToKLSAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWjoKLSAg
ICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjoKLSAgICAgICAgYmluZFRleHR1
cmVUYXJnZXQgPSBHTF9URVhUVVJFX0NVQkVfTUFQOwotICAgICAgICBicmVhazsKLSAgICBkZWZh
dWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgY2Fpcm9fc3VyZmFjZV9m
bHVzaChtX2RhdGEubV9zdXJmYWNlLmdldCgpKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHQ+IGNvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoJlBsYXRm
b3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkpOwotICAgIGNvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHVpbnQzMl90IGZibzsKLSAgICBnbEdlbkZyYW1l
YnVmZmVycygxLCAmZmJvKTsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwg
ZmJvKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbV9kYXRhLm1fdGV4dHVyZSwgMCk7Ci0gICAg
Z2xCaW5kVGV4dHVyZShiaW5kVGV4dHVyZVRhcmdldCwgZGVzdGluYXRpb25UZXh0dXJlKTsKLSAg
ICBnbENvcHlUZXhJbWFnZTJEKHRhcmdldCwgMCwgaW50ZXJuYWxmb3JtYXQsIDAsIDAsIG1fc2l6
ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIDApOwotICAgIGdsQmluZFRleHR1cmUoYmluZFRl
eHR1cmVUYXJnZXQsIDApOwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAw
KTsKLSAgICBnbEZsdXNoKCk7Ci0gICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZibyk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVO
VVNFRF9QQVJBTShkZXN0aW5hdGlvblRleHR1cmUpOwotICAgIFVOVVNFRF9QQVJBTShpbnRlcm5h
bGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKHByZW11bHRpcGx5QWxwaGEpOwotICAgIFVOVVNF
RF9QQVJBTShmbGlwWSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzZhZjQwODk2YmFhY2Q4MGQ5ZjFjNWVmYWE3
OTBhMTQ5YjhkZDdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCkBAIC0wLDAgKzEsMTI2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZy
ZXl0aGVyIDx6ZWNrZUBzZWxmaXNoLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBE
aXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBUb3Jj
aCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgiCisKKyNpbmNsdWRlICJCaXRtYXBJ
bWFnZS5oIgorI2luY2x1ZGUgIkNhaXJvT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIkNvbG9yLmgi
CisjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCIKKyNpbmNsdWRlICJJbWFn
ZUJ1ZmZlclV0aWxpdGllc0NhaXJvLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KKworI2lmIFVTRShDQUlSTykKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpjb3B5
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFByZXNlcnZlUmVzb2x1dGlvbikg
Y29uc3QKK3sKKyAgICAvLyBCaXRtYXBJbWFnZSB3aWxsIHJlbGVhc2UgdGhlIHBhc3NlZCBpbiBz
dXJmYWNlIG9uIGRlc3RydWN0aW9uCisgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoY29w
eU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcikpOworfQorCit2b2lkIEltYWdlQnVmZmVyQ2Fpcm9C
YWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVy
IGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGRlc3RDb250ZXh0LCBvcHRpb25zLmlu
dGVycG9sYXRpb25RdWFsaXR5KCkpOworICAgIGNvbnN0IGF1dG8mIGRlc3RpbmF0aW9uQ29udGV4
dFN0YXRlID0gZGVzdENvbnRleHQuc3RhdGUoKTsKKworICAgIGlmIChhdXRvIGltYWdlID0gY29w
eU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9y
ZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKCpkZXN0
Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0
LCB7IG9wdGlvbnMsIGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkgfSwgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuYWxwaGEsIFdlYkNvcmU6OkNhaXJvOjpT
aGFkb3dTdGF0ZShkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZSkpOworfQorCit2b2lkIEltYWdlQnVm
ZmVyQ2Fpcm9CYWNrZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQoreworICAgIGlmIChhdXRvIGltYWdlID0gY29weU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4
dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3Jl
KSkKKyAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRl
eHQoKSwgaW1hZ2UuZ2V0KCksIG1fbG9naWNhbFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBD
b2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKQoreworICAgIGlmIChzcmNDb2xvclNwYWNlID09IGRl
c3RDb2xvclNwYWNlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBvbmx5IHNSR0IgPC0+IGxp
bmVhclJHQiBhcmUgc3VwcG9ydGVkIGF0IHRoZSBtb21lbnQKKyAgICBpZiAoKHNyY0NvbG9yU3Bh
Y2UgIT0gQ29sb3JTcGFjZTo6TGluZWFyUkdCICYmIHNyY0NvbG9yU3BhY2UgIT0gQ29sb3JTcGFj
ZTo6U1JHQikKKyAgICAgICAgfHwgKGRlc3RDb2xvclNwYWNlICE9IENvbG9yU3BhY2U6OkxpbmVh
clJHQiAmJiBkZXN0Q29sb3JTcGFjZSAhPSBDb2xvclNwYWNlOjpTUkdCKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKGRlc3RDb2xvclNwYWNlID09IENvbG9yU3BhY2U6OkxpbmVhclJHQikg
eworICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGxpbmVhclJn
YkxVVCA9IFtdIHsKKyAgICAgICAgICAgIHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiBhcnJheTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNTY7IGkrKykgeworICAgICAg
ICAgICAgICAgIGZsb2F0IGNvbG9yID0gaSAvIDI1NS4wZjsKKyAgICAgICAgICAgICAgICBjb2xv
ciA9IHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGNvbG9yKTsKKyAgICAgICAgICAgICAgICBh
cnJheVtpXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJvdW5kKGNvbG9yICogMjU1KSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gYXJyYXk7CisgICAgICAgIH0oKTsKKyAgICAg
ICAgcGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGxpbmVhclJnYkxVVCk7CisgICAgfSBlbHNl
IGlmIChkZXN0Q29sb3JTcGFjZSA9PSBDb2xvclNwYWNlOjpTUkdCKSB7CisgICAgICAgIHN0YXRp
YyBjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gZGV2aWNlUmdiTFVUPSBbXSB7CisgICAg
ICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKKyAgICAgICAgICAgICAgICBmbG9hdCBj
b2xvciA9IGkgLyAyNTUuMGY7CisgICAgICAgICAgICAgICAgY29sb3IgPSBsaW5lYXJUb1NSR0JD
b2xvckNvbXBvbmVudChjb2xvcik7CisgICAgICAgICAgICAgICAgYXJyYXlbaV0gPSBzdGF0aWNf
Y2FzdDx1aW50OF90Pihyb3VuZChjb2xvciAqIDI1NSkpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuIGFycmF5OworICAgICAgICB9KCk7CisgICAgICAgIHBsYXRmb3JtVHJhbnNm
b3JtQ29sb3JTcGFjZShkZXZpY2VSZ2JMVVQpOworICAgIH0KK30KKworU3RyaW5nIEltYWdlQnVm
ZmVyQ2Fpcm9CYWNrZW5kOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9u
YWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0Cit7CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGVuY29kZWRJbWFnZSA9IHRvRGF0YShtaW1lVHlwZSwgcXVhbGl0eSk7Cisg
ICAgaWYgKGVuY29kZWRJbWFnZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAiZGF0YTosIjsK
KworICAgIFZlY3RvcjxjaGFyPiBiYXNlNjREYXRhOworICAgIGJhc2U2NEVuY29kZShlbmNvZGVk
SW1hZ2UuZGF0YSgpLCBlbmNvZGVkSW1hZ2Uuc2l6ZSgpLCBiYXNlNjREYXRhKTsKKworICAgIHJl
dHVybiAiZGF0YToiICsgbWltZVR5cGUgKyAiO2Jhc2U2NCwiICsgYmFzZTY0RGF0YTsKK30KKwor
VmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0b0RhdGEoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdAoreworICAgIEFT
U0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGlu
ZyhtaW1lVHlwZSkpOworICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFy
Z2V0KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7CisgICAgcmV0dXJuIGRhdGEo
aW1hZ2UsIG1pbWVUeXBlLCBxdWFsaXR5KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjNiOTE5YWQ1MjJlYTE3OGIzMmMwMDlmNWQ4OGQ1ZDcxNmRlZjNhMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9CYWNrZW5kLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHly
aWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2VsZmlzaC5v
cmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtp
dC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4g
THRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKENBSVJPKQorCisjaW5jbHVkZSAi
SW1hZ2VCdWZmZXJCYWNrZW5kLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJCYWNrZW5kIHsKK3B1Ymxp
YzoKKyAgICBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJh
Y2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykg
Y29uc3Qgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2Uo
Q29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKSBvdmVy
cmlkZTsKKworICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0
aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJyaWRl
OworICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0
aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdCBvdmVycmlkZTsKKworcHJvdGVjdGVkOgorICAg
IHVzaW5nIEltYWdlQnVmZmVyQmFja2VuZDo6SW1hZ2VCdWZmZXJCYWNrZW5kOworCisgICAgQ29s
b3JGb3JtYXQgYmFja2VuZENvbG9yRm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ29s
b3JGb3JtYXQ6OkJHUkE7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1UcmFuc2Zvcm1Db2xv
clNwYWNlKGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiYpIHsgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0dMU3Vy
ZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzNjM3MmY5
MTllN2VjZThjYmM2YTI2M2M0ODljOTllMGU4NzYyNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvR0xTdXJm
YWNlQmFja2VuZC5jcHAKQEAgLTAsMCArMSwyNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgPHplY2tlQHNlbGZpc2gub3JnPgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3Jn
PgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJDYWlyb0dM
U3VyZmFjZUJhY2tlbmQuaCIKKworI2lmIFVTRShDQUlSTykgJiYgRU5BQkxFKEFDQ0VMRVJBVEVE
XzJEX0NBTlZBUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaW5jbHVkZSAiR0xDb250ZXh0
LmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KKworI2lmIFVTRShFR0wpCisjaWYgVVNFKExJQkVQT1hZKQorI2luY2x1ZGUg
IkVwb3h5RUdMLmgiCisjZWxzZQorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNlbmRpZgorI2VuZGlm
CisjaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KKworI2lmIFVTRShMSUJFUE9YWSkKKyNpbmNsdWRlIDxl
cG94eS9nbC5oPgorI2VsaWYgVVNFKE9QRU5HTF9FUykKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4K
KyNlbHNlCisjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKKyNlbmRpZgorCisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIgorI2Vu
ZGlmCisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlckNhaXJvR0xTdXJm
YWNlQmFja2VuZCk7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjbGVhclN1cmZhY2UoY2Fpcm9fc3Vy
ZmFjZV90KiBzdXJmYWNlKQoreworICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGNh
aXJvX2NyZWF0ZShzdXJmYWNlKSk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLmdldCgpLCBD
QUlST19PUEVSQVRPUl9DTEVBUik7CisgICAgY2Fpcm9fcGFpbnQoY3IuZ2V0KCkpOworfQorCitz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVm
ZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgSG9zdFdp
bmRvdyopCit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXpl
KHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiBjb250ZXh0ID0gUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCk7
CisgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICAvLyBXZSBtdXN0IGdl
bmVyYXRlIHRoZSB0ZXh0dXJlIG91cnNlbHZlcywgYmVjYXVzZSB0aGVyZSBpcyBubyBDYWlybyBB
UEkgZm9yIGV4dHJhY3RpbmcgaXQKKyAgICAvLyBmcm9tIGEgcHJlLWV4aXN0aW5nIHN1cmZhY2Uu
CisgICAgdWludDMyX3QgdGV4dHVyZQorICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUpOwor
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgZ2xUZXhQYXJh
bWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdF
KTsKKyAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1Qs
IEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKworICAgIGds
UGl4ZWxTdG9yZWkoR0xfVU5QQUNLX0FMSUdOTUVOVCwgMSk7CisKKyAgICBnbFRleEltYWdlMkQo
R0xfVEVYVFVSRV8yRCwgMCAvKiBsZXZlbCAqLywgR0xfUkdCQSwgYmFja2VuZFNpemUud2lkdGgo
KSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIDAgLyogYm9yZGVyICovLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLCAwKTsKKworICAgIGNhaXJvX2RldmljZV90KiBkZXZpY2UgPSBjb250ZXh0LT5j
YWlyb0RldmljZSgpOworCisgICAgLy8gVGhyZWFkLWF3YXJlbmVzcyBpcyBhIGh1Z2UgcGVyZm9y
bWFuY2UgaGl0IG9uIG5vbi1JbnRlbCBkcml2ZXJzLgorICAgIGNhaXJvX2dsX2RldmljZV9zZXRf
dGhyZWFkX2F3YXJlKGRldmljZSwgRkFMU0UpOworCisgICAgYXV0byBzdXJmYWNlID0gYWRvcHRS
ZWYoY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGVfZm9yX3RleHR1cmUoZGV2aWNlLCBDQUlST19DT05U
RU5UX0NPTE9SX0FMUEhBLCB0ZXh0dXJlLCBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6
ZS5oZWlnaHQoKSkpOworICAgIGlmIChjYWlyb19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlKSAhPSBD
QUlST19TVEFUVVNfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBjbGVh
clN1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJDYWlyb0dMU3Vy
ZmFjZUJhY2tlbmQoc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgV1RGTW92ZShzdXJmYWNlKSwgdGV4dHVyZSkpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VC
YWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQmKQoreworICAgIHJldHVybiBJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZDo6Y3Jl
YXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIG51bGxwdHIpOworfQorCitJbWFnZUJ1ZmZl
ckNhaXJvR0xTdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiYmIHN1cmZhY2UsIHVpbnQzMl90IHRleHR1cmUpCisgICAgOiBJbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoc3VyZmFjZSkpCisgICAgLCBtX3RleHR1cmUo
dGV4dHVyZSkKK3sKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjaWYgVVNFKE5JQ09T
SUEpCisgICAgbV9uaWNvc2lhTGF5ZXIgPSBOaWNvc2lhOjpDb250ZW50TGF5ZXI6OmNyZWF0ZShO
aWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgqdGhp
cykpOworI2Vsc2UKKyAgICBtX3BsYXRmb3JtTGF5ZXJQcm94eSA9IGFkb3B0UmVmKG5ldyBUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5KTsKKyNlbmRpZgorI2VuZGlmCit9CisKK0ltYWdl
QnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kOjp+SW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJh
Y2tlbmQoKQoreworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykgJiYgVVNFKE5JQ09TSUEp
CisgICAgZG93bmNhc3Q8Tmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KG1f
bmljb3NpYUxheWVyLT5pbXBsKCkpLmludmFsaWRhdGVDbGllbnQoKTsKKyNlbmRpZgorCisgICAg
R0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJlbnQoKTsK
KyAgICBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpLnNoYXJp
bmdHTENvbnRleHQoKS0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBpZiAobV90ZXh0dXJl
KQorICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtX3RleHR1cmUpOworCisjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQorICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJlKQorICAgICAg
ICBnbERlbGV0ZVRleHR1cmVzKDEsICZtX2NvbXBvc2l0b3JUZXh0dXJlKTsKKyNlbmRpZgorCisg
ICAgaWYgKHByZXZpb3VzQWN0aXZlQ29udGV4dCkKKyAgICAgICAgcHJldmlvdXNBY3RpdmVDb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKK30KKworUGxhdGZvcm1MYXllciogSW1hZ2VCdWZm
ZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworI2lmIFVTRShOSUNPU0lBKQorICAgIHJldHVy
biBtX25pY29zaWFMYXllci5nZXQoKTsKKyNlbHNlCisgICAgaWYgKG1fdGV4dHVyZSkKKyAgICAg
ICAgcmV0dXJuIHRoaXM7CisjZW5kaWYKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBJ
bWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZDo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKEdD
R0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBkZXN0aW5hdGlvblRleHR1cmUsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCit7
CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3Jlc29sdXRpb25TY2FsZSA9PSAxLjAsICJTaW5j
ZSB0aGUgSGlEUEkgQ2FudmFzIGZlYXR1cmUgaXMgcmVtb3ZlZCwgdGhlIHJlc29sdXRpb24gZmFj
dG9yIGhlcmUgaXMgYWx3YXlzIDEuIik7CisgICAgaWYgKHByZW11bHRpcGx5QWxwaGEgfHwgZmxp
cFkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV90ZXh0dXJlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBHQzNEZW51bSBiaW5kVGV4dHVyZVRhcmdldDsKKyAgICBz
d2l0Y2ggKHRhcmdldCkgeworICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgYmluZFRl
eHR1cmVUYXJnZXQgPSBHTF9URVhUVVJFXzJEOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdM
X1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDoKKyAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9N
QVBfTkVHQVRJVkVfWDoKKyAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToK
KyAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWToKKyAgICBjYXNlIEdMX1RF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWjoKKyAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWjoKKyAgICAgICAgYmluZFRleHR1cmVUYXJnZXQgPSBHTF9URVhUVVJFX0NVQkVf
TUFQOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgY2Fpcm9fc3VyZmFjZV9mbHVzaChtX3N1cmZhY2UuZ2V0KCkpOworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRl
T2Zmc2NyZWVuQ29udGV4dCgmUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9z
aXRpbmcoKSk7CisgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgdWludDMy
X3QgZmJvOworICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZmYm8pOworICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8pOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQo
R0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtX3Rl
eHR1cmUsIDApOworICAgIGdsQmluZFRleHR1cmUoYmluZFRleHR1cmVUYXJnZXQsIGRlc3RpbmF0
aW9uVGV4dHVyZSk7CisgICAgZ2xDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIDAsIGludGVybmFsZm9y
bWF0LCAwLCAwLCBtX2JhY2tlbmRTaXplLndpZHRoKCksIG1fYmFja2VuZFNpemUuaGVpZ2h0KCks
IDApOworICAgIGdsQmluZFRleHR1cmUoYmluZFRleHR1cmVUYXJnZXQsIDApOworICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKKyAgICBnbEZsdXNoKCk7CisgICAgZ2xE
ZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZibyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCit2b2lkIEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VC
YWNrZW5kOjpjcmVhdGVDb21wb3NpdG9yQnVmZmVyKCkKK3sKKyAgICBhdXRvKiBjb250ZXh0ID0g
UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xD
b250ZXh0KCk7CisgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBnbEdl
blRleHR1cmVzKDEsICZtX2NvbXBvc2l0b3JUZXh0dXJlKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1fY29tcG9zaXRvclRleHR1cmUpOworICAgIGdsVGV4UGFyYW1ldGVyZihH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAg
Z2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFN
UF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xQaXhlbFN0b3Jl
aShHTF9VTlBBQ0tfQUxJR05NRU5ULCAxKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCAsIEdMX1JHQkEsIG1fYmFja2VuZFNpemUud2lkdGgoKSwgbV9iYWNrZW5kU2l6ZS5oZWln
aHQoKSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7CisKKyAgICBtX2NvbXBvc2l0
b3JTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGVfZm9yX3RleHR1cmUo
Y29udGV4dC0+Y2Fpcm9EZXZpY2UoKSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgbV9jb21w
b3NpdG9yVGV4dHVyZSwgbV9iYWNrZW5kU2l6ZS53aWR0aCgpLCBtX2JhY2tlbmRTaXplLmhlaWdo
dCgpKSk7CisgICAgbV9jb21wb3NpdG9yQ3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9jb21w
b3NpdG9yU3VyZmFjZS5nZXQoKSkpOworICAgIGNhaXJvX3NldF9hbnRpYWxpYXMobV9jb21wb3Np
dG9yQ3IuZ2V0KCksIENBSVJPX0FOVElBTElBU19OT05FKTsKK30KKwordm9pZCBJbWFnZUJ1ZmZl
ckNhaXJvR0xTdXJmYWNlQmFja2VuZDo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCit7CisgICAgR0xD
b250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJlbnQoKTsKKwor
ICAgIGlmICghbV9jb21wb3NpdG9yVGV4dHVyZSkgeworICAgICAgICBjcmVhdGVDb21wb3NpdG9y
QnVmZmVyKCk7CisKKyAgICAgICAgYXV0byBwcm94eU9wZXJhdGlvbiA9CisgICAgICAgICAgICBb
dGhpc10oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKKyAg
ICAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbXBvc2l0b3JUZXh0dXJlLCBtX2JhY2tlbmRTaXpl
LCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kLCBHTF9SR0JBKSk7CisgICAgICAgICAgICB9
OworI2lmIFVTRShOSUNPU0lBKQorICAgICAgICBwcm94eU9wZXJhdGlvbihkb3duY2FzdDxOaWNv
c2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4obV9uaWNvc2lhTGF5ZXItPmltcGwo
KSkucHJveHkoKSk7CisjZWxzZQorICAgICAgICBwcm94eU9wZXJhdGlvbigqbV9wbGF0Zm9ybUxh
eWVyUHJveHkpOworI2VuZGlmCisgICAgfQorCisgICAgLy8gSXQgd291bGQgYmUgZ3JlYXQgaWYg
d2UgY291bGQganVzdCBzd2FwIHRoZSBidWZmZXJzIGhlcmUgYXMgd2UgZG8gd2l0aCB3ZWJnbCwg
YnV0IHRoYXQgYnJlYWtzIHRoZSBjYXNlcworICAgIC8vIHdoZXJlIG9uZSBmcmFtZSB1c2VzIHRo
ZSBjb250ZW50IGFscmVhZHkgcmVuZGVyZWQgaW4gdGhlIHByZXZpb3VzIGZyYW1lLiBTbyB3ZSBq
dXN0IGNvcHkgdGhlIGNvbnRlbnQKKyAgICAvLyBpbnRvIHRoZSBjb21wb3NpdG9yIGJ1ZmZlci4K
KyAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UobV9jb21wb3NpdG9yQ3IuZ2V0KCksIG1fc3Vy
ZmFjZS5nZXQoKSwgMCwgMCk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKG1fY29tcG9zaXRvckNy
LmdldCgpLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIGNhaXJvX3BhaW50KG1fY29tcG9z
aXRvckNyLmdldCgpKTsKKworICAgIGlmIChwcmV2aW91c0FjdGl2ZUNvbnRleHQpCisgICAgICAg
IHByZXZpb3VzQWN0aXZlQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Cit9CisjZWxzZQor
dm9pZCBJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZDo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5KQor
eworICAgIEFTU0VSVChtX3RleHR1cmUpOworCisgICAgLy8gQ2Fpcm8gbWF5IGNoYW5nZSB0aGUg
YWN0aXZlIGNvbnRleHQsIHNvIHdlIG1ha2Ugc3VyZSB0byBjaGFuZ2UgaXQgYmFjayBhZnRlciBm
bHVzaGluZy4KKyAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4
dDo6Y3VycmVudCgpOworICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsK
KyAgICBwcmV2aW91c0FjdGl2ZUNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAg
c3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMJj4odGV4dHVyZU1hcHBlcikuZHJhd1RleHR1cmUo
bV90ZXh0dXJlLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kLCBtX2JhY2tlbmRTaXplLCB0
YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykgJiYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJE
X0NBTlZBUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmNkZjBmYWU3ZTJjMzQ5ZTIxNjQxOTg0NTVkNDE4YzNjYWI2NzQ3YjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZC5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgPHpl
Y2tlQHNlbGZpc2gub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IERpcmsgU2NodWx6
ZSA8a3JpdEB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAo
QmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShDQUlSTykg
JiYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKworI2luY2x1ZGUgIkltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KKworI2lm
IFVTRShOSUNPU0lBKQorI2luY2x1ZGUgIk5pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVy
SW1wbC5oIgorI2Vsc2UKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2Vu
ZAorI2lmIFVTRShOSUNPU0lBKQorICAgIDogcHVibGljIE5pY29zaWE6OkNvbnRlbnRMYXllclRl
eHR1cmVNYXBwZXJJbXBsOjpDbGllbnQKKyNlbHNlCisgICAgOiBwdWJsaWMgUGxhdGZvcm1MYXll
cgorI2VuZGlmCisgICAgLCBwdWJsaWMgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kIHsK
KyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNr
ZW5kKTsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNl
QmFja2VuZCk7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
ckNhaXJvR0xTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyopOworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ+IGNyZWF0
ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKworICAgIH5JbWFn
ZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZCgpOworCisgICAgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0
dXJlKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBkZXN0aW5hdGlvblRleHR1cmUs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxp
cFkpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VC
YWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tl
bmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+JiYpOworCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIHZvaWQg
Y3JlYXRlQ29tcG9zaXRvckJ1ZmZlcigpOworICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgp
IG92ZXJyaWRlOworI2lmICFVU0UoTklDT1NJQSkKKyAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eT4gcHJveHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BsYXRm
b3JtTGF5ZXJQcm94eS5jb3B5UmVmKCk7IH0KKyNlbmRpZgorI2Vsc2UKKyAgICB2b2lkIHBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKKyNlbmRpZgorCisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2lmIFVTRShOSUNPU0lBKQorICAgIFJlZlB0
cjxOaWNvc2lhOjpDb250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOworI2Vsc2UKKyAgICBSZWZQ
dHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gbV9wbGF0Zm9ybUxheWVyUHJveHk7
CisjZW5kaWYKKyAgICB1aW50MzJfdCBtX3RleHR1cmU7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gbV9jb21wb3NpdG9yU3VyZmFjZTsKKyAgICBSZWZQdHI8Y2Fpcm9fdD4gbV9jb21wb3Np
dG9yQ3I7CisgICAgdWludDMyX3QgbV9jb21wb3NpdG9yVGV4dHVyZSB7IDAgfTsKKyNlbmRpZgor
ICAgIHVpbnQzMl90IG1fdGV4dHVyZSB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykgJiYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZB
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5k
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NWYyZGRlOThlYjc0ZTRlMjEwM2NhYzQ0MThmN2I1OGVhOWUxY2Zj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0wLDAgKzEsOTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJt
YW5uQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJl
eXRoZXIgPHplY2tlQHNlbGZpc2gub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IERp
cmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNo
IE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuaCIKKworI2lmIFVT
RShDQUlSTykKKworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFj
a2VuZCk7CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFj
a2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBG
bG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBjb25zdCBIb3N0V2luZG93KikKK3sKKyAgICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tl
eV90IHNfc3VyZmFjZURhdGFLZXk7CisKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3Vs
YXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBpZiAoYmFja2VuZFNp
emUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGludCBzdHJpZGUg
PSBjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aChDQUlST19GT1JNQVRfQVJHQjMyLCBiYWNr
ZW5kU2l6ZS53aWR0aCgpKTsKKyAgICB2b2lkKiBzdXJmYWNlRGF0YTsKKyAgICBpZiAoIXRyeUZh
c3RaZXJvZWRNYWxsb2MoYmFja2VuZFNpemUuaGVpZ2h0KCkgKiBzdHJpZGUpLmdldFZhbHVlKHN1
cmZhY2VEYXRhKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHN1cmZhY2Ug
PSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4oc3VyZmFjZURhdGEpLCBDQUlST19GT1JNQVRfQVJHQjMyLCBiYWNr
ZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSwgc3RyaWRlKSk7CisgICAgY2Fp
cm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCksICZzX3N1cmZhY2VEYXRhS2V5
LCBzdXJmYWNlRGF0YSwgW10odm9pZCogZGF0YSkgeworICAgICAgICBmYXN0RnJlZShkYXRhKTsK
KyAgICB9KTsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0lt
YWdlU3VyZmFjZUJhY2tlbmQ+KG5ldyBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2Vu
ZChzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3Zl
KHN1cmZhY2UpKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0
ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpCit7CisgICAg
cmV0dXJuIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUoc2l6ZSwg
MSwgQ29sb3JTcGFjZTo6U1JHQiwgbnVsbHB0cik7Cit9CisKK0ltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZChjb25z
dCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+JiYgc3VyZmFjZSkKKyAgICA6IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
V1RGTW92ZShzdXJmYWNlKSkKK3sKKyAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZSht
X3N1cmZhY2UuZ2V0KCkpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSk7Cit9CisKK3ZvaWQg
SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OnBsYXRmb3JtVHJhbnNmb3JtQ29s
b3JTcGFjZShjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4mIGxvb2tVcFRhYmxlKQorewor
ICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFTcmMgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRh
KG1fc3VyZmFjZS5nZXQoKSk7CisgICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X3N0cmlkZShtX3N1cmZhY2UuZ2V0KCkpOworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbV9s
b2dpY2FsU2l6ZS5oZWlnaHQoKTsgKyt5KSB7CisgICAgICAgIHVuc2lnbmVkKiByb3cgPSByZWlu
dGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGRhdGFTcmMgKyBzdHJpZGUgKiB5KTsKKyAgICAg
ICAgZm9yIChpbnQgeCA9IDA7IHggPCBtX2xvZ2ljYWxTaXplLndpZHRoKCk7IHgrKykgeworICAg
ICAgICAgICAgdW5zaWduZWQqIHBpeGVsID0gcm93ICsgeDsKKyAgICAgICAgICAgIENvbG9yIHBp
eGVsQ29sb3IgPSBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigqcGl4ZWwpOworICAgICAgICAg
ICAgcGl4ZWxDb2xvciA9IENvbG9yKGxvb2tVcFRhYmxlW3BpeGVsQ29sb3IucmVkKCldLCBsb29r
VXBUYWJsZVtwaXhlbENvbG9yLmdyZWVuKCldLCBsb29rVXBUYWJsZVtwaXhlbENvbG9yLmJsdWUo
KV0sIHBpeGVsQ29sb3IuYWxwaGEoKSk7CisgICAgICAgICAgICAqcGl4ZWwgPSBwcmVtdWx0aXBs
aWVkQVJHQkZyb21Db2xvcihwaXhlbENvbG9yKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYWly
b19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlKG1fc3VyZmFjZS5nZXQoKSwgMCwgMCwgbV9s
b2dpY2FsU2l6ZS53aWR0aCgpLCBtX2xvZ2ljYWxTaXplLmhlaWdodCgpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdl
U3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTYwMDM3
OTRmZGFhOTQ3MzJiNjE1NTdjNDFlODQ0MjMxYTk4YTcwMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2VsZmlzaC5vcmc+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5v
cmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKENBSVJPKQorCisjaW5jbHVkZSAiSW1h
Z2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZCB7Cisg
ICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFj
a2VuZCk7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3Vy
ZmFjZUJhY2tlbmQpOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisK
K3ByaXZhdGU6CisgICAgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQoY29uc3Qg
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7
CisKKyAgICB2b2lkIHBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBzdGQ6OmFycmF5
PHVpbnQ4X3QsIDI1Nj4mIGxvb2tVcFRhYmxlKSBvdmVycmlkZTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyZDE1ZjBiYTIyMjEwZjdh
MTc0YmE3MDdlZDI2MTgwYzE4ZmVhNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
Y3BwCkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA3IEhv
bGdlciBIYW5zIFBldGVyIEZyZXl0aGVyIDx6ZWNrZUBzZWxmaXNoLm9yZz4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZC5oIgorCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKKyNpbmNsdWRlICJDYWlyb09wZXJhdGlv
bnMuaCIKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkNvbG9yVXRpbGl0aWVzLmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5oIgorI2luY2x1
ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgPGNhaXJvLmg+CisKKyNpZiBVU0UoQ0FJUk8pCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpJ
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmIHN1cmZhY2UpCisg
ICAgOiBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSkKKyAgICAsIG1fc3VyZmFjZShXVEZNb3ZlKHN1cmZh
Y2UpKQoreworICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX3N0YXR1cyhtX3N1cmZhY2UuZ2V0KCkp
ID09IENBSVJPX1NUQVRVU19TVUNDRVNTKTsKKworICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFk
b3B0UmVmKGNhaXJvX2NyZWF0ZShtX3N1cmZhY2UuZ2V0KCkpKTsKKyAgICBtX3BsYXRmb3JtQ29u
dGV4dC5zZXRDcihjci5nZXQoKSk7CisgICAgbV9jb250ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGlj
c0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeShtX3BsYXRm
b3JtQ29udGV4dCkpOworfQorCitHcmFwaGljc0NvbnRleHQmIEltYWdlQnVmZmVyQ2Fpcm9TdXJm
YWNlQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICptX2NvbnRleHQ7Cit9
CisKK3Vuc2lnbmVkIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3co
KSBjb25zdAoreworICAgIHJldHVybiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9z
dXJmYWNlLmdldCgpKTsKK30KKworTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3Ip
IGNvbnN0Cit7CisgICAgc3dpdGNoIChjb3B5QmVoYXZpb3IpIHsKKyAgICBjYXNlIENvcHlCYWNr
aW5nU3RvcmU6IHsKKyAgICAgICAgYXV0byBjb3B5ID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwKKyAgICAgICAgY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfd2lkdGgobV9zdXJmYWNlLmdldCgpKSwKKyAgICAgICAgY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfaGVpZ2h0KG1fc3VyZmFjZS5nZXQoKSkpKTsKKworICAgICAgICBhdXRvIGNyID0g
YWRvcHRSZWYoY2Fpcm9fY3JlYXRlKGNvcHkuZ2V0KCkpKTsKKyAgICAgICAgY2Fpcm9fc2V0X29w
ZXJhdG9yKGNyLmdldCgpLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgICAgICBjYWlyb19z
ZXRfc291cmNlX3N1cmZhY2UoY3IuZ2V0KCksIG1fc3VyZmFjZS5nZXQoKSwgMCwgMCk7CisgICAg
ICAgIGNhaXJvX3BhaW50KGNyLmdldCgpKTsKKworICAgICAgICByZXR1cm4gY29weTsKKyAgICB9
CisKKyAgICBjYXNlIERvbnRDb3B5QmFja2luZ1N0b3JlOgorICAgICAgICByZXR1cm4gbV9zdXJm
YWNlOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCitOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6
OmNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdAoreworICAgIEJhY2tpbmdTdG9yZUNv
cHkgY29weUJlaGF2aW9yOworICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1fc3VyZmFj
ZS5nZXQoKSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFICYmIGNhaXJvX3N1cmZhY2VfZ2V0
X2NvbnRlbnQobV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19DT05URU5UX0NPTE9SX0FMUEhBKQor
ICAgICAgICBjb3B5QmVoYXZpb3IgPSBEb250Q29weUJhY2tpbmdTdG9yZTsKKyAgICBlbHNlCisg
ICAgICAgIGNvcHlCZWhhdmlvciA9IENvcHlCYWNraW5nU3RvcmU7CisgICAgcmV0dXJuIGNvcHlO
YXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpOworfQorCitWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjp0b0JHUkFEYXRhKCkgY29uc3QKK3sKKyAgICBhdXRvIHN1
cmZhY2UgPSBjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCk7CisgICAgY2Fpcm9fc3VyZmFjZV9m
bHVzaChzdXJmYWNlLmdldCgpKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiBpbWFnZURhdGE7Cisg
ICAgaWYgKGNhaXJvX3N1cmZhY2Vfc3RhdHVzKHN1cmZhY2UuZ2V0KCkpKQorICAgICAgICByZXR1
cm4gaW1hZ2VEYXRhOworCisgICAgYXV0byBwaXhlbHMgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9kYXRhKHN1cmZhY2UuZ2V0KCkpOworICAgIGltYWdlRGF0YS5hcHBlbmQocGl4ZWxzLCBjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZS5nZXQoKSkgKgorICAgICAgICBjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZS5nZXQoKSkpOworCisgICAgcmV0dXJu
IGltYWdlRGF0YTsKK30KKworUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3Jt
YXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIEltYWdlQnVm
ZmVyQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfZGF0YShtX3N1cmZhY2UuZ2V0KCkpKTsKK30KKwordm9pZCBJbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OnB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0
aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgSW50UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKK3sKKyAgICBJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OnB1dEltYWdlRGF0YShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBzcmNSZWN0LCBk
ZXN0UG9pbnQsIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9zdXJmYWNlLmdldCgpKSk7
CisKKyAgICBJbnRSZWN0IHNyY1JlY3RTY2FsZWQgPSB0b0JhY2tlbmRDb29yZGluYXRlcyhzcmNS
ZWN0KTsKKyAgICBJbnRQb2ludCBkZXN0UG9pbnRTY2FsZWQgPSB0b0JhY2tlbmRDb29yZGluYXRl
cyhkZXN0UG9pbnQpOworICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGUobV9z
dXJmYWNlLmdldCgpLCBkZXN0UG9pbnRTY2FsZWQueCgpLCBkZXN0UG9pbnRTY2FsZWQueSgpLCBz
cmNSZWN0U2NhbGVkLndpZHRoKCksIHNyY1JlY3RTY2FsZWQuaGVpZ2h0KCkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3Vy
ZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5NDlmZjM3Mzc0ODgy
NDU1MWUzZTRlZmU1YTJiNGQ2NjkzZjA1NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA3IEhv
bGdlciBIYW5zIFBldGVyIEZyZXl0aGVyIDx6ZWNrZUBzZWxmaXNoLm9yZz4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBVU0UoQ0FJUk8pCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kIDogcHVi
bGljIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kIHsKK3B1YmxpYzoKKyAgICBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKKworICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKKworICAgIFZlY3Rv
cjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEltYWdl
RGF0YT4gZ2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBj
b25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwdXRJbWFnZURhdGEoQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3Qg
SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkgb3ZlcnJpZGU7CisK
K3Byb3RlY3RlZDoKKyAgICBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CisK
KyAgICBOYXRpdmVJbWFnZVB0ciBjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3Q7Cisg
ICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZTsKKworICAgIG11dGFibGUg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9zdXJmYWNlOworICAgIFBsYXRmb3JtQ29udGV4dENh
aXJvIG1fcGxhdGZvcm1Db250ZXh0IHsgbnVsbHB0ciB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxH
cmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTYxZTM1OTk0NmVmNGJhZDY5MjNmZGJmNzU2NGEyZTM5
Zjc2OWM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJv
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEltYWdlQnVmZmVyRGF0YUNhaXJvX2gK
LSNkZWZpbmUgSW1hZ2VCdWZmZXJEYXRhQ2Fpcm9faAotCi0jaWYgVVNFKENBSVJPKQotCi0jaW5j
bHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKLSNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgot
Ci0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSNpbmNsdWRlICJQbGF0Zm9ybUxh
eWVyLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eVByb3ZpZGVyLmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5W
QVMpICYmIFVTRShOSUNPU0lBKQotI2luY2x1ZGUgIk5pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJl
TWFwcGVySW1wbC5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW50
U2l6ZTsKLWNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk7Ci0KLWNsYXNzIElt
YWdlQnVmZmVyRGF0YQotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0jaWYgVVNF
KE5JQ09TSUEpCi0gICAgOiBwdWJsaWMgTmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBl
ckltcGw6OkNsaWVudAotI2Vsc2UKLSAgICA6IHB1YmxpYyBQbGF0Zm9ybUxheWVyCi0jZW5kaWYK
LSNlbmRpZgotewotcHVibGljOgotICAgIEltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJiwg
UmVuZGVyaW5nTW9kZSk7Ci0gICAgdmlydHVhbCB+SW1hZ2VCdWZmZXJEYXRhKCk7Ci0KLSAgICBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7Ci0gICAgUGxhdGZvcm1Db250ZXh0Q2Fp
cm8gbV9wbGF0Zm9ybUNvbnRleHQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4
dD4gbV9jb250ZXh0OwotICAgIEludFNpemUgbV9zaXplOwotICAgIFJlbmRlcmluZ01vZGUgbV9y
ZW5kZXJpbmdNb2RlOwotCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICB2
b2lkIGNyZWF0ZUNhaXJvR0xTdXJmYWNlKCk7Ci0KLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCi0jaWYgVVNFKE5JQ09TSUEpCi0gICAgdm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVkKCkgb3Zl
cnJpZGU7Ci0jZWxzZQotICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
PiBwcm94eSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgp
IG92ZXJyaWRlOwotI2VuZGlmCi0gICAgdm9pZCBjcmVhdGVDb21wb3NpdG9yQnVmZmVyKCk7Ci0K
LSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX2NvbXBvc2l0b3JTdXJmYWNlOwotICAgIHVp
bnQzMl90IG1fY29tcG9zaXRvclRleHR1cmU7Ci0gICAgUmVmUHRyPGNhaXJvX3Q+IG1fY29tcG9z
aXRvckNyOwotCi0jaWYgVVNFKE5JQ09TSUEpCi0gICAgUmVmUHRyPE5pY29zaWE6OkNvbnRlbnRM
YXllcj4gbV9uaWNvc2lhTGF5ZXI7Ci0jZWxzZQotICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5PiBtX3BsYXRmb3JtTGF5ZXJQcm94eTsKLSNlbmRpZgotI2Vsc2UKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9w
YWNpdHkpOwotI2VuZGlmCi0gICAgdWludDMyX3QgbV90ZXh0dXJlOwotI2VuZGlmCi19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBVU0UoQ0FJUk8pCi0KLSNlbmRpZiAv
LyBJbWFnZUJ1ZmZlckRhdGFDYWlyb19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhZmQ1ZTRlYzcxOWVkYjQ5M2Y3OWRiYmZhYmU1YWY5M2NhMDY3MDliLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NDk5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5u
IDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9i
aWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiSW1hZ2VCdWZmZXIuaCIKLQotI2lmIFVTRShDRykKLQotI2luY2x1ZGUgIkJpdG1hcElt
YWdlLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0Q0cuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmgiCi0jaW5jbHVk
ZSAiSW1hZ2VEYXRhLmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIk1JTUVUeXBl
UmVnaXN0cnkuaCIKLSNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0Nv
cmVHcmFwaGljcy5oPgotI2luY2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgotI2luY2x1ZGUgPHBh
bC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
LSNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLSNpbmNsdWRlIDx3dGYvRGVidWdI
ZWFwLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJVVElVdGlsaXRp
ZXMuaCIKLSNlbmRpZgotCi0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkK
LSNpbmNsdWRlICJJT1N1cmZhY2UuaCIKLSNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0lPU3VyZmFj
ZVNQSS5oPgotI2VuZGlmCi0KLS8vIENBIHVzZXMgQVJHQjMyIGZvciB0ZXh0dXJlcyBhbmQgQVJH
QjMyIC0+IEFSR0IzMiByZXNhbXBsaW5nIGlzIG9wdGltaXplZC4KLSNkZWZpbmUgVVNFX0FSR0Iz
MiBQTEFURk9STShJT1NfRkFNSUxZKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURFQ0xBUkVf
QUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEltYWdlQnVmZmVyKTsKLURFRklORV9BTExP
Q0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSW1hZ2VCdWZmZXIpOwotCi1zdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQotewotICAg
IGlmIChzaXplLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBSZXRh
aW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlOwotI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwot
ICAgIHN3aXRjaCAoQ0dDb250ZXh0R2V0VHlwZShjZ0NvbnRleHQpKSB7Ci0gICAgY2FzZSBrQ0dD
b250ZXh0VHlwZUJpdG1hcDoKLSAgICAgICAgY29sb3JTcGFjZSA9IENHQml0bWFwQ29udGV4dEdl
dENvbG9yU3BhY2UoY2dDb250ZXh0KTsKLSAgICAgICAgYnJlYWs7Ci0jaWYgSEFWRShJT1NVUkZB
Q0UpCi0gICAgY2FzZSBrQ0dDb250ZXh0VHlwZUlPU3VyZmFjZToKLSAgICAgICAgY29sb3JTcGFj
ZSA9IENHSU9TdXJmYWNlQ29udGV4dEdldENvbG9yU3BhY2UoY2dDb250ZXh0KTsKLSAgICAgICAg
YnJlYWs7Ci0jZW5kaWYKLSAgICBkZWZhdWx0OgotICAgICAgICBjb2xvclNwYWNlID0gYWRvcHRD
RihDR0NvbnRleHRDb3B5RGV2aWNlQ29sb3JTcGFjZShjZ0NvbnRleHQpKTsKLSAgICB9Ci0KLSAg
ICBpZiAoIWNvbG9yU3BhY2UpCi0gICAgICAgIGNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJl
ZigpOwotI2Vsc2UKLSAgICBjb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbmRp
ZgotICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IGNvbnRleHQucmVuZGVyaW5nTW9k
ZSgpOwotICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVm
ZmVyU2l6ZShzaXplLCBjb250ZXh0KTsKLSAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihuZXcgSW1hZ2VCdWZmZXIoc2NhbGVk
U2l6ZSwgMSwgY29sb3JTcGFjZS5nZXQoKSwgcmVuZGVyaW5nTW9kZSwgbnVsbHB0ciwgc3VjY2Vz
cykpOwotCi0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IC8vIFNldCB1cCBhIGNvcnJlc3BvbmRpbmcgc2NhbGUgZmFjdG9yIG9uIHRoZSBncmFwaGljcyBj
b250ZXh0LgotICAgIGJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKHNjYWxlZFNpemUgLyBzaXplKTsK
LSAgICByZXR1cm4gYnVmZmVyOwotfQotCi1JbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cq
IGhvc3RXaW5kb3csIGJvb2wmIHN1Y2Nlc3MpCi0gICAgOiBtX2xvZ2ljYWxTaXplKHNpemUpCi0g
ICAgLCBtX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCi17Ci0gICAgc3VjY2VzcyA9
IGZhbHNlOyAvLyBNYWtlIGVhcmx5IHJldHVybiBtZWFuIGZhaWx1cmUuCi0gICAgZmxvYXQgc2Nh
bGVkV2lkdGggPSBjZWlsZihyZXNvbHV0aW9uU2NhbGUgKiBzaXplLndpZHRoKCkpOwotICAgIGZs
b2F0IHNjYWxlZEhlaWdodCA9IGNlaWxmKHJlc29sdXRpb25TY2FsZSAqIHNpemUuaGVpZ2h0KCkp
OwotCi0gICAgLy8gRklYTUU6IFNob3VsZCB3ZSBhdXRvbWF0aWNhbGx5IHVzZSBhIGxvd2VyIHJl
c29sdXRpb24/Ci0gICAgaWYgKCFGbG9hdFNpemUoc2NhbGVkV2lkdGgsIHNjYWxlZEhlaWdodCku
aXNFeHByZXNzaWJsZUFzSW50U2l6ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3NpemUg
PSBJbnRTaXplKHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQpOwotICAgIG1fZGF0YS5iYWNraW5n
U3RvcmVTaXplID0gbV9zaXplOwotCi0gICAgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nID0gcmVu
ZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZDsKLSAgICBpZiAobV9zaXpl
LndpZHRoKCkgPD0gMCB8fCBtX3NpemUuaGVpZ2h0KCkgPD0gMCkKLSAgICAgICAgcmV0dXJuOwot
Ci0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKLSAgICBDaGVja2VkPGlu
dCwgUmVjb3JkT3ZlcmZsb3c+IHdpZHRoID0gbV9zaXplLndpZHRoKCk7Ci0gICAgQ2hlY2tlZDxp
bnQsIFJlY29yZE92ZXJmbG93PiBoZWlnaHQgPSBtX3NpemUuaGVpZ2h0KCk7Ci0jZW5kaWYKLQot
ICAgIC8vIFByZXZlbnQgaW50ZWdlciBvdmVyZmxvd3MKLSAgICBtX2RhdGEuYnl0ZXNQZXJSb3cg
PSA0ICogQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KG1fZGF0YS5iYWNraW5nU3Rv
cmVTaXplLndpZHRoKCkpOwotICAgIENoZWNrZWQ8c2l6ZV90LCBSZWNvcmRPdmVyZmxvdz4gbnVt
Qnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4obV9kYXRhLmJhY2tpbmdT
dG9yZVNpemUuaGVpZ2h0KCkpICogbV9kYXRhLmJ5dGVzUGVyUm93OwotICAgIGlmIChudW1CeXRl
cy5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybjsKLQotI2lmIFVTRShJT1NVUkZBQ0Vf
Q0FOVkFTX0JBQ0tJTkdfU1RPUkUpCi0gICAgSW50U2l6ZSBtYXhTaXplID0gSU9TdXJmYWNlOjpt
YXhpbXVtU2l6ZSgpOwotICAgIGlmICh3aWR0aC51bnNhZmVHZXQoKSA+IG1heFNpemUud2lkdGgo
KSB8fCBoZWlnaHQudW5zYWZlR2V0KCkgPiBtYXhTaXplLmhlaWdodCgpKQotICAgICAgICBhY2Nl
bGVyYXRlUmVuZGVyaW5nID0gZmFsc2U7Ci0jZWxzZQotICAgIEFTU0VSVChyZW5kZXJpbmdNb2Rl
ID09IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwotI2VuZGlmCi0KLSAgICBtX2RhdGEu
Y29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7Ci0KLSAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBj
Z0NvbnRleHQ7Ci0gICAgaWYgKGFjY2VsZXJhdGVSZW5kZXJpbmcpIHsKLSNpZiBVU0UoSU9TVVJG
QUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQotICAgICAgICBGbG9hdFNpemUgdXNlckJvdW5kcyA9
IEZsb2F0U2l6ZSh3aWR0aC51bnNhZmVHZXQoKSwgaGVpZ2h0LnVuc2FmZUdldCgpKTsKLSAgICAg
ICAgbV9kYXRhLnN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShtX2RhdGEuYmFja2luZ1N0b3Jl
U2l6ZSwgSW50U2l6ZSh1c2VyQm91bmRzKSwgY29sb3JTcGFjZSk7Ci0gICAgICAgIGlmIChtX2Rh
dGEuc3VyZmFjZSkgewotICAgICAgICAgICAgY2dDb250ZXh0ID0gbV9kYXRhLnN1cmZhY2UtPmVu
c3VyZVBsYXRmb3JtQ29udGV4dChob3N0V2luZG93KTsKLSAgICAgICAgICAgIGlmIChjZ0NvbnRl
eHQpCi0gICAgICAgICAgICAgICAgQ0dDb250ZXh0Q2xlYXJSZWN0KGNnQ29udGV4dC5nZXQoKSwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgdXNlckJvdW5kcykpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIG1fZGF0YS5zdXJmYWNlID0gbnVsbHB0cjsKLSAgICAgICAgfQotI2Vs
c2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKGhvc3RXaW5kb3cpOwotI2VuZGlmCi0gICAgICAgIGlm
ICghY2dDb250ZXh0KQotICAgICAgICAgICAgYWNjZWxlcmF0ZVJlbmRlcmluZyA9IGZhbHNlOyAv
LyBJZiBhbGxvY2F0aW9uIGZhaWxzLCBmYWxsIGJhY2sgdG8gbm9uLWFjY2VsZXJhdGVkIHBhdGgu
Ci0gICAgfQotCi0gICAgaWYgKCFhY2NlbGVyYXRlUmVuZGVyaW5nKSB7Ci0gICAgICAgIG1fZGF0
YS5kYXRhID0gSW1hZ2VCdWZmZXJNYWxsb2M6OnRyeVplcm9lZE1hbGxvYyhtX2RhdGEuYmFja2lu
Z1N0b3JlU2l6ZS5oZWlnaHQoKSAqIG1fZGF0YS5ieXRlc1BlclJvdy51bnNhZmVHZXQoKSk7Ci0g
ICAgICAgIGlmICghbV9kYXRhLmRhdGEpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEFT
U0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fZGF0YS5kYXRhKSAmIDMpKTsKLQot
I2lmIFVTRV9BUkdCMzIKLSAgICAgICAgbV9kYXRhLmJpdG1hcEluZm8gPSBrQ0dJbWFnZUFscGhh
UHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0OwotI2Vsc2UKLSAg
ICAgICAgbV9kYXRhLmJpdG1hcEluZm8gPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Q7
Ci0jZW5kaWYKLSAgICAgICAgY2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGUobV9kYXRhLmRhdGEsIG1fZGF0YS5iYWNraW5nU3RvcmVTaXplLndpZHRoKCksIG1fZGF0YS5i
YWNraW5nU3RvcmVTaXplLmhlaWdodCgpLCA4LCBtX2RhdGEuYnl0ZXNQZXJSb3cudW5zYWZlR2V0
KCksIG1fZGF0YS5jb2xvclNwYWNlLCBtX2RhdGEuYml0bWFwSW5mbykpOwotICAgICAgICBjb25z
dCBhdXRvIHJlbGVhc2VJbWFnZURhdGEgPSBbXSAodm9pZCosIGNvbnN0IHZvaWQqIGRhdGEsIHNp
emVfdCkgewotICAgICAgICAgICAgSW1hZ2VCdWZmZXJNYWxsb2M6OmZyZWUoY29uc3RfY2FzdDx2
b2lkKj4oZGF0YSkpOwotICAgICAgICB9OwotICAgICAgICAvLyBDcmVhdGUgYSBsaXZlIGltYWdl
IHRoYXQgd3JhcHMgdGhlIGRhdGEuCi0gICAgICAgIHZlcmlmeUltYWdlQnVmZmVySXNCaWdFbm91
Z2gobV9kYXRhLmRhdGEsIG51bUJ5dGVzLnVuc2FmZUdldCgpKTsKLSAgICAgICAgbV9kYXRhLmRh
dGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBtX2Rh
dGEuZGF0YSwgbnVtQnl0ZXMudW5zYWZlR2V0KCksIHJlbGVhc2VJbWFnZURhdGEpKTsKLQotICAg
ICAgICBpZiAoIWNnQ29udGV4dCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX2Rh
dGEuY29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihjZ0NvbnRleHQuZ2V0KCkp
OwotICAgIH0KLQotICAgIGNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBj
b250ZXh0KCkudHJhbnNsYXRlKDAsIC1tX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSk7
Ci0gICAgY29udGV4dCgpLmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IobV9yZXNvbHV0aW9uU2NhbGUp
OwotCi0gICAgc3VjY2VzcyA9IHRydWU7Ci19Ci0KLUltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBp
bWFnZUNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgSG9zdFdp
bmRvdyogaG9zdFdpbmRvdywgYm9vbCYgc3VjY2VzcykKLSAgICA6IEltYWdlQnVmZmVyKHNpemUs
IHJlc29sdXRpb25TY2FsZSwgY2FjaGVkQ0dDb2xvclNwYWNlKGltYWdlQ29sb3JTcGFjZSksIHJl
bmRlcmluZ01vZGUsIGhvc3RXaW5kb3csIHN1Y2Nlc3MpCi17Ci19Ci0KLUltYWdlQnVmZmVyOjp+
SW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0KLSNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNL
SU5HX1NUT1JFKQotc2l6ZV90IEltYWdlQnVmZmVyOjptZW1vcnlDb3N0KCkgY29uc3QKLXsKLSAg
ICAvLyBtZW1vcnlDb3N0KCkgbWF5IGJlIGludm9rZWQgY29uY3VycmVudGx5IGZyb20gYSBHQyB0
aHJlYWQsIGFuZCB3ZSBuZWVkIHRvIGJlIGNhcmVmdWwgYWJvdXQgd2hhdCBkYXRhIHdlIGFjY2Vz
cyBoZXJlIGFuZCBob3cuCi0gICAgLy8gSXQncyBzYWZlIHRvIGFjY2VzcyBpbnRlcm5hbFNpemUo
KSBiZWNhdXNlIGl0IGRvZXNuJ3QgZG8gYW55IHBvaW50ZXIgY2hhc2luZy4KLSAgICAvLyBJdCdz
IHNhZmUgdG8gYWNjZXNzIG1fZGF0YS5zdXJmYWNlIGJlY2F1c2UgdGhlIHN1cmZhY2UgY2FuIG9u
bHkgYmUgYXNzaWduZWQgZHVyaW5nIGNvbnN0cnVjdGlvbiBvZiB0aGlzIEltYWdlQnVmZmVyLgot
ICAgIC8vIEl0J3Mgc2FmZSB0byBhY2Nlc3MgbV9kYXRhLnN1cmZhY2UtPnRvdGFsQnl0ZXMoKSBi
ZWNhdXNlIHRvdGFsQnl0ZXMoKSBkb2Vzbid0IGNoYXNlIHBvaW50ZXJzLgotICAgIGlmIChtX2Rh
dGEuc3VyZmFjZSkKLSAgICAgICAgcmV0dXJuIG1fZGF0YS5zdXJmYWNlLT50b3RhbEJ5dGVzKCk7
Ci0gICAgcmV0dXJuIDQgKiBpbnRlcm5hbFNpemUoKS53aWR0aCgpICogaW50ZXJuYWxTaXplKCku
aGVpZ2h0KCk7Ci19Ci0KLXNpemVfdCBJbWFnZUJ1ZmZlcjo6ZXh0ZXJuYWxNZW1vcnlDb3N0KCkg
Y29uc3QKLXsKLSAgICAvLyBleHRlcm5hbE1lbW9yeUNvc3QoKSBtYXkgYmUgaW52b2tlZCBjb25j
dXJyZW50bHkgZnJvbSBhIEdDIHRocmVhZCwgYW5kIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91
dCB3aGF0IGRhdGEgd2UgYWNjZXNzIGhlcmUgYW5kIGhvdy4KLSAgICAvLyBJdCdzIHNhZmUgdG8g
YWNjZXNzIG1fZGF0YS5zdXJmYWNlIGJlY2F1c2UgdGhlIHN1cmZhY2UgY2FuIG9ubHkgYmUgYXNz
aWduZWQgZHVyaW5nIGNvbnN0cnVjdGlvbiBvZiB0aGlzIEltYWdlQnVmZmVyLgotICAgIC8vIEl0
J3Mgc2FmZSB0byBhY2Nlc3MgbV9kYXRhLnN1cmZhY2UtPnRvdGFsQnl0ZXMoKSBiZWNhdXNlIHRv
dGFsQnl0ZXMoKSBkb2Vzbid0IGNoYXNlIHBvaW50ZXJzLgotICAgIGlmIChtX2RhdGEuc3VyZmFj
ZSkKLSAgICAgICAgcmV0dXJuIG1fZGF0YS5zdXJmYWNlLT50b3RhbEJ5dGVzKCk7Ci0gICAgcmV0
dXJuIDA7Ci19Ci0jZW5kaWYKLQotR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlcjo6Y29udGV4
dCgpIGNvbnN0Ci17Ci0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKLSAg
ICBpZiAobV9kYXRhLnN1cmZhY2UpCi0gICAgICAgIHJldHVybiBtX2RhdGEuc3VyZmFjZS0+ZW5z
dXJlR3JhcGhpY3NDb250ZXh0KCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gKm1fZGF0YS5jb250ZXh0
OwotfQotCi12b2lkIEltYWdlQnVmZmVyOjpmbHVzaENvbnRleHQoKSBjb25zdAotewotICAgIENH
Q29udGV4dEZsdXNoKGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSk7Ci19Ci0KLXN0YXRpYyBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoQ0dJbWFn
ZVJlZiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQotewotICAgIGlmIChpbWFnZSAmJiAo
Q0dJbWFnZUdldFdpZHRoKGltYWdlKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJvdW5kcy53aWR0
aCgpKSB8fCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJv
dW5kcy5oZWlnaHQoKSkpKQotICAgICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0
aEltYWdlSW5SZWN0KGltYWdlLCBDR1JlY3RNYWtlKDAsIDAsIGJvdW5kcy53aWR0aCgpLCBib3Vu
ZHMuaGVpZ2h0KCkpKSk7Ci0gICAgcmV0dXJuIGltYWdlOwotfQotCi1zdGF0aWMgUmVmUHRyPElt
YWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJldGFpblB0cjxDR0lt
YWdlUmVmPiYmIGltYWdlLCBJbnRTaXplIGxvZ2ljYWxTaXplLCBJbnRTaXplIGludGVybmFsU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNv
bHV0aW9uKQotewotICAgIGlmIChyZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29s
dXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCi0gICAgICAgIGltYWdlID0gY3JlYXRl
Q3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGludGVybmFsU2l6ZSk7Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlKDAsIGxvZ2ljYWxTaXplLndpZHRoKCksIGxvZ2ljYWxTaXplLmhlaWdodCgpLCA4LCA0ICog
bG9naWNhbFNpemUud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVBy
ZW11bHRpcGxpZWRMYXN0KSk7Ci0gICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0
LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKLSAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChj
b250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6ZSkp
OwotICAgICAgICBGbG9hdFNpemUgaW1hZ2VTaXplSW5Vc2VyU3BhY2UgPSBsb2dpY2FsU2l6ZTsK
LSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9h
dFBvaW50Ojp6ZXJvKCksIGltYWdlU2l6ZUluVXNlclNwYWNlKSwgaW1hZ2UuZ2V0KCkpOwotICAg
ICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5n
ZXQoKSkpOwotICAgIH0KLQotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShpbWFnZSkpOwotfQot
Ci1SZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBj
b3B5QmVoYXZpb3IsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0
Ci17Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOwotICAgIGlmIChtX3Jlc29sdXRp
b25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246
OlllcykKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKTsKLSAg
ICBlbHNlCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0
b3JlKTsKLQotICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVk
KFdURk1vdmUoaW1hZ2UpLCBsb2dpY2FsU2l6ZSgpLCBpbnRlcm5hbFNpemUoKSwgbV9yZXNvbHV0
aW9uU2NhbGUsIHByZXNlcnZlUmVzb2x1dGlvbik7Ci19Ci0KLVJlZlB0cjxJbWFnZT4gSW1hZ2VC
dWZmZXI6OnNpbmtJbnRvSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1
ZmZlciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikKLXsKLSAgICBJbnRT
aXplIGludGVybmFsU2l6ZSA9IGltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKTsKLSAgICBJbnRT
aXplIGxvZ2ljYWxTaXplID0gaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCk7Ci0gICAgZmxvYXQg
cmVzb2x1dGlvblNjYWxlID0gaW1hZ2VCdWZmZXItPm1fcmVzb2x1dGlvblNjYWxlOwotCi0gICAg
cmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoc2lua0ludG9OYXRp
dmVJbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSksIGxvZ2ljYWxTaXplLCBpbnRlcm5hbFNpemUs
IHJlc29sdXRpb25TY2FsZSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKLX0KLQotUmV0YWluUHRyPENH
SW1hZ2VSZWY+IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIpCi17Ci0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNf
QkFDS0lOR19TVE9SRSkKLSAgICBpZiAoIWltYWdlQnVmZmVyLT5tX2RhdGEuc3VyZmFjZSkKLSAg
ICAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5n
U3RvcmUpOwotCi0gICAgcmV0dXJuIElPU3VyZmFjZTo6c2lua0ludG9JbWFnZShJT1N1cmZhY2U6
OmNyZWF0ZUZyb21JbWFnZUJ1ZmZlcihXVEZNb3ZlKGltYWdlQnVmZmVyKSkpOwotI2Vsc2UKLSAg
ICByZXR1cm4gaW1hZ2VCdWZmZXItPmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9y
ZSk7Ci0jZW5kaWYKLX0KLQotUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVmZmVyOjpjb3B5
TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0Ci17Ci0gICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOwotICAgIGlmICghY29udGV4dCgpLmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkpIHsKLSAgICAgICAgc3dpdGNoIChjb3B5QmVoYXZpb3IpIHsKLSAgICAg
ICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9yZToKLSAgICAgICAgICAgIGltYWdlID0gYWRvcHRD
RihDR0ltYWdlQ3JlYXRlKG1fZGF0YS5iYWNraW5nU3RvcmVTaXplLndpZHRoKCksIG1fZGF0YS5i
YWNraW5nU3RvcmVTaXplLmhlaWdodCgpLCA4LCAzMiwgbV9kYXRhLmJ5dGVzUGVyUm93LnVuc2Fm
ZUdldCgpLCBtX2RhdGEuY29sb3JTcGFjZSwgbV9kYXRhLmJpdG1hcEluZm8sIG1fZGF0YS5kYXRh
UHJvdmlkZXIuZ2V0KCksIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAg
ICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICB9Ci0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9S
RSkKLSAgICBlbHNlCi0gICAgICAgIGltYWdlID0gbV9kYXRhLnN1cmZhY2UtPmNyZWF0ZUltYWdl
KCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBpbWFnZTsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6
ZHJhd0NvbnN1bWluZyhzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyLCBH
cmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQotewotI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCi0gICAgaWYg
KCFpbWFnZUJ1ZmZlci0+bV9kYXRhLnN1cmZhY2UpIHsKLSAgICAgICAgaW1hZ2VCdWZmZXItPmRy
YXcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICAKLSAgICBBU1NFUlQoZGVzdENvbnRleHQuaXNBY2NlbGVyYXRlZENv
bnRleHQoKSk7Ci0gICAgCi0gICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gaW1hZ2VCdWZmZXIt
Pm1fcmVzb2x1dGlvblNjYWxlOwotICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IGltYWdl
QnVmZmVyLT5tX2RhdGEuYmFja2luZ1N0b3JlU2l6ZTsKLQotICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBpbWFnZSA9IElPU3VyZmFjZTo6c2lua0ludG9JbWFnZShJT1N1cmZhY2U6OmNyZWF0ZUZy
b21JbWFnZUJ1ZmZlcihXVEZNb3ZlKGltYWdlQnVmZmVyKSkpOwotICAgIAotICAgIEZsb2F0UmVj
dCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShy
ZXNvbHV0aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5n
ZXQoKSwgYmFja2luZ1N0b3JlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9u
cyk7Ci0jZWxzZQotICAgIGltYWdlQnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3B0aW9ucyk7Ci0jZW5kaWYKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQotewotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKLSAgICBpZiAoJmRlc3RD
b250ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQo
KSkKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7IC8v
IERyYXdpbmcgaW50byBvdXIgb3duIGJ1ZmZlciwgbmVlZCB0byBkZWVwIGNvcHkuCi0gICAgZWxz
ZQotICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7
Ci0KLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBhZGp1c3Rl
ZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdO
YXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0
LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOwotfQotCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAg
RmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgYWRqdXN0ZWRTcmNSZWN0
LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKLQotICAgIGlmICghY29udGV4dCgpLmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkpIHsKLSAgICAgICAgaWYgKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgp
IHx8IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKLSAgICAgICAgICAgIGlm
IChSZWZQdHI8SW1hZ2U+IGNvcHkgPSBjb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSkpIC8vIERy
YXdpbmcgaW50byBvdXIgb3duIGJ1ZmZlciwgbmVlZCB0byBkZWVwIGNvcHkuCi0gICAgICAgICAg
ICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNy
Y1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChSZWZQdHI8SW1hZ2U+IGltYWdlRm9yUmVuZGVy
aW5nID0gY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgICAgICAgICBp
bWFnZUZvclJlbmRlcmluZy0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1
c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsK
LSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChSZWZQdHI8SW1hZ2U+IGNvcHkg
PSBjb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgICAgICBjb3B5LT5kcmF3UGF0
dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwotICAgIH0KLX0KLQotUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0
IEludFJlY3QmIHJlY3QsIEludFNpemUqIHBpeGVsQXJyYXlEaW1lbnNpb25zLCBDb29yZGluYXRl
U3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0Ci17Ci0gICAgaWYgKGNvbnRleHQoKS5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpKQotICAgICAgICBmbHVzaENvbnRleHQoKTsKLQotICAgIEludFJl
Y3Qgc3JjUmVjdCA9IHJlY3Q7Ci0gICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT0gTG9naWNhbENv
b3JkaW5hdGVTeXN0ZW0pCi0gICAgICAgIHNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUp
OwotCi0gICAgaWYgKHBpeGVsQXJyYXlEaW1lbnNpb25zKQotICAgICAgICAqcGl4ZWxBcnJheURp
bWVuc2lvbnMgPSBzcmNSZWN0LnNpemUoKTsKLQotICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0YShB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIHNyY1JlY3QsIGludGVybmFs
U2l6ZSgpLCBjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSk7Ci19Ci0KLVJlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEo
Y29uc3QgSW50UmVjdCYgcmVjdCwgSW50U2l6ZSogcGl4ZWxBcnJheURpbWVuc2lvbnMsIENvb3Jk
aW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKLXsKLSAgICBpZiAoY29udGV4dCgp
LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCi0gICAgICAgIGZsdXNoQ29udGV4dCgpOwotCi0gICAg
SW50UmVjdCBzcmNSZWN0ID0gcmVjdDsKLSAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PSBMb2dp
Y2FsQ29vcmRpbmF0ZVN5c3RlbSkKLSAgICAgICAgc3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25T
Y2FsZSk7Ci0KLSAgICBpZiAocGl4ZWxBcnJheURpbWVuc2lvbnMpCi0gICAgICAgICpwaXhlbEFy
cmF5RGltZW5zaW9ucyA9IHNyY1JlY3Quc2l6ZSgpOwotCi0gICAgcmV0dXJuIG1fZGF0YS5nZXRE
YXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHNyY1JlY3QsIGludGVy
bmFsU2l6ZSgpLCBjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSk7Ci19Ci0KLXZvaWQg
SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNl
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIHNvdXJjZUZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc291
cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKQotewotICAgIGlmIChjb250
ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKLSAgICAgICAgZmx1c2hDb250ZXh0KCk7Ci0K
LSAgICBJbnRSZWN0IHNjYWxlZFNvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OwotICAgIEludFNpemUg
c2NhbGVkU291cmNlU2l6ZSA9IHNvdXJjZVNpemU7Ci0gICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0g
PT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pIHsKLSAgICAgICAgc2NhbGVkU291cmNlUmVjdC5z
Y2FsZShtX3Jlc29sdXRpb25TY2FsZSk7Ci0gICAgICAgIHNjYWxlZFNvdXJjZVNpemUuc2NhbGUo
bV9yZXNvbHV0aW9uU2NhbGUpOwotICAgIH0KLQotICAgIG1fZGF0YS5wdXREYXRhKHNvdXJjZSwg
c291cmNlRm9ybWF0LCBzY2FsZWRTb3VyY2VTaXplLCBzY2FsZWRTb3VyY2VSZWN0LCBkZXN0UG9p
bnQsIGludGVybmFsU2l6ZSgpLCBjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSk7Ci0g
ICAgCi0gICAgLy8gRm9yY2UgcmVjcmVhdGluZyB0aGUgSU9TdXJmYWNlIGNhY2hlZCBpbWFnZSBp
ZiBpdCBpcyByZXF1ZXN0ZWQgdGhyb3VnaCBDR0lPU3VyZmFjZUNvbnRleHRDcmVhdGVJbWFnZSgp
LgotICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3
OTY2IGZvciBleHBsYWluaW5nIHdoeSB0aGlzIGlzIG5lY2Vzc2FyeS4KLSAgICBpZiAoY29udGV4
dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCi0gICAgICAgIGNvbnRleHQoKS5maWxsUmVjdChG
bG9hdFJlY3QoMSwgMSwgMCwgMCkpOwotfQotCi1TdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVS
TChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNl
cnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0Ci17Ci0gICAgaWYgKGF1dG8g
ZGF0YSA9IHRvQ0ZEYXRhKG1pbWVUeXBlLCBxdWFsaXR5LCBwcmVzZXJ2ZVJlc29sdXRpb24pKQot
ICAgICAgICByZXR1cm4gZGF0YVVSTChkYXRhLmdldCgpLCBtaW1lVHlwZSk7Ci0gICAgcmV0dXJu
ICJkYXRhOiwiX3M7Ci19Ci0KLVZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlcjo6dG9EYXRhKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3QKLXsK
LSAgICBpZiAoYXV0byBkYXRhID0gdG9DRkRhdGEobWltZVR5cGUsIHF1YWxpdHksIFByZXNlcnZl
UmVzb2x1dGlvbjo6Tm8pKQotICAgICAgICByZXR1cm4gZGF0YVZlY3RvcihkYXRhLmdldCgpKTsK
LSAgICByZXR1cm4geyB9OwotfQotCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlcjo6
dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAotewotICAgIEFT
U0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGlu
ZyhtaW1lVHlwZSkpOwotCi0gICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgp
KQotICAgICAgICBmbHVzaENvbnRleHQoKTsKLQotICAgIGF1dG8gdXRpID0gdXRpRnJvbUltYWdl
QnVmZmVyTUlNRVR5cGUobWltZVR5cGUpOwotICAgIEFTU0VSVCh1dGkpOwotCi0gICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IGltYWdlOwotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcHJl
bXVsdGlwbGllZERhdGE7Ci0KLSAgICBpZiAoQ0ZFcXVhbCh1dGkuZ2V0KCksIGpwZWdVVEkoKSkp
IHsKLSAgICAgICAgLy8gSlBFR3MgZG9uJ3QgaGF2ZSBhbiBhbHBoYSBjaGFubmVsLCBzbyB3ZSBo
YXZlIHRvIG1hbnVhbGx5IGNvbXBvc2l0ZSBvbiB0b3Agb2YgYmxhY2suCi0gICAgICAgIHByZW11
bHRpcGxpZWREYXRhID0gZ2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShJbnRSZWN0KEludFBvaW50
KCksIGxvZ2ljYWxTaXplKCkpKTsKLSAgICAgICAgaWYgKCFwcmVtdWx0aXBsaWVkRGF0YSkKLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIHNpemVfdCBkYXRhU2l6ZSA9IDQg
KiBsb2dpY2FsU2l6ZSgpLndpZHRoKCkgKiBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpOwotICAgICAg
ICB2ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKHByZW11bHRpcGxpZWREYXRhLT5kYXRhKCks
IGRhdGFTaXplKTsKLSAgICAgICAgYXV0byBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVBy
b3ZpZGVyQ3JlYXRlV2l0aERhdGEobnVsbHB0ciwgcHJlbXVsdGlwbGllZERhdGEtPmRhdGEoKSwg
ZGF0YVNpemUsIG51bGxwdHIpKTsKLSAgICAgICAgaWYgKCFkYXRhUHJvdmlkZXIpCi0gICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNy
ZWF0ZShsb2dpY2FsU2l6ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCksIDgsIDMy
LCA0ICogbG9naWNhbFNpemUoKS53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRt
YXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3Zp
ZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwotICAgIH0g
ZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0g
UHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpIHsKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1h
Z2UoQ29weUJhY2tpbmdTdG9yZSk7Ci0gICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdl
SWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGludGVybmFsU2l6ZSgpKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0g
ICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIGxv
Z2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2lj
YWxTaXplKCkud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11
bHRpcGxpZWRMYXN0KSk7Ci0gICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0Lmdl
dCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKLSAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250
ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNh
bFNpemUoKS5oZWlnaHQoKSkpOwotICAgICAgICBGbG9hdFNpemUgaW1hZ2VTaXplSW5Vc2VyU3Bh
Y2UgPSBsb2dpY2FsU2l6ZSgpOwotICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5n
ZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBpbWFnZVNpemVJblVzZXJTcGFjZS53aWR0aCgpLCBpbWFn
ZVNpemVJblVzZXJTcGFjZS5oZWlnaHQoKSksIGltYWdlLmdldCgpKTsKLSAgICAgICAgaW1hZ2Ug
PSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKLSAg
ICB9Ci0KLSAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAwKSk7Ci0gICAgaWYgKCFlbmNvZGVJbWFnZShpbWFnZS5nZXQoKSwg
dXRpLmdldCgpLCBxdWFsaXR5LCBjZkRhdGEuZ2V0KCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIHJldHVybiBXVEZNb3ZlKGNmRGF0YSk7Ci19Ci0KLVZlY3Rvcjx1aW50OF90PiBJ
bWFnZUJ1ZmZlcjo6dG9CR1JBRGF0YSgpIGNvbnN0Ci17Ci0gICAgaWYgKGNvbnRleHQoKS5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpKQotICAgICAgICBmbHVzaENvbnRleHQoKTsKLSAgICByZXR1cm4g
bV9kYXRhLnRvQkdSQURhdGEoY29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIG1fc2l6
ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxY2QyMzc1ODFm
OTVkMGNjYWNiODJjODRmYzI2NGY5MmE3OWIzZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKQEAg
LTAsMCArMSwyNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyQ0dCYWNrZW5k
LmgiCisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgorI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5o
IgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRl
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURSkKKyNpbmNsdWRlIDxB
Y2NlbGVyYXRlL0FjY2VsZXJhdGUuaD4KKyNlbmRpZgorI2luY2x1ZGUgPENvcmVHcmFwaGljcy9D
b3JlR3JhcGhpY3MuaD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IEltYWdl
QnVmZmVyQ0dCYWNrZW5kOjpjb250ZXh0Q29sb3JTcGFjZShjb25zdCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgQ0dDb250ZXh0UmVmIGNnQ29u
dGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CisKKyAgICBpZiAoQ0dDb250ZXh0R2V0
VHlwZShjZ0NvbnRleHQpID09IGtDR0NvbnRleHRUeXBlQml0bWFwKQorICAgICAgICByZXR1cm4g
Q0dCaXRtYXBDb250ZXh0R2V0Q29sb3JTcGFjZShjZ0NvbnRleHQpOworICAgIAorICAgIHJldHVy
biBhZG9wdENGKENHQ29udGV4dENvcHlEZXZpY2VDb2xvclNwYWNlKGNnQ29udGV4dCkpOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5k
aWYKK30KKyMKKwordm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0dXBDb250ZXh0KCkKK3sK
KyAgICBjb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgY29udGV4dCgpLnRy
YW5zbGF0ZSgwLCAtbV9iYWNrZW5kU2l6ZS5oZWlnaHQoKSk7CisgICAgY29udGV4dCgpLmFwcGx5
RGV2aWNlU2NhbGVGYWN0b3IobV9yZXNvbHV0aW9uU2NhbGUpOworfQorCitzdGF0aWMgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KENHSW1hZ2VSZWYg
aW1hZ2UsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplKQoreworICAgIGlmIChpbWFnZSAmJiAo
Q0dJbWFnZUdldFdpZHRoKGltYWdlKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJhY2tlbmRTaXpl
LndpZHRoKCkpIHx8IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpICE9IHN0YXRpY19jYXN0PHNpemVf
dD4oYmFja2VuZFNpemUuaGVpZ2h0KCkpKSkKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFn
ZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChpbWFnZSwgQ0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6
ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSkpKTsKKyAgICByZXR1cm4gaW1hZ2U7Cit9
CisKK3N0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZO
ZWVkZWQoUmV0YWluUHRyPENHSW1hZ2VSZWY+JiYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQoreworICAgIGlmIChyZXNv
bHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0
aW9uOjpZZXMpCisgICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3Nhcnko
aW1hZ2UuZ2V0KCksIGJhY2tlbmRTaXplKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0byBjb250
ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgbG9naWNhbFNpemUud2lkdGgo
KSwgbG9naWNhbFNpemUuaGVpZ2h0KCksIDgsIDQgKiBsb2dpY2FsU2l6ZS53aWR0aCgpLCBzUkdC
Q29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKKyAgICAg
ICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkp
OworICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChG
bG9hdFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplKSk7CisgICAgICAgIEZsb2F0U2l6ZSBpbWFn
ZVNpemVJblVzZXJTcGFjZSA9IGxvZ2ljYWxTaXplOworICAgICAgICBDR0NvbnRleHREcmF3SW1h
Z2UoY29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2VTaXpl
SW5Vc2VyU3BhY2UpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0Jp
dG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSk7CisgICAgfQorCisgICAgaWYg
KCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gQml0bWFwSW1h
Z2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSk7Cit9CisKK1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJl
c2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKK3sKKyAgICBOYXRpdmVJ
bWFnZVB0ciBpbWFnZTsKKyAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2
ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCisgICAgICAgIGltYWdlID0g
Y29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7CisgICAgZWxzZQorICAgICAgICBpbWFnZSA9
IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgcmV0dXJuIGNyZWF0
ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoV1RGTW92ZShpbWFnZSksIG1fbG9naWNh
bFNpemUsIG1fYmFja2VuZFNpemUsIG1fcmVzb2x1dGlvblNjYWxlLCBwcmVzZXJ2ZVJlc29sdXRp
b24pOworfQorCitSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpzaW5rSW50b0lt
YWdlKFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCit7CisgICAgcmV0dXJu
IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoc2lua0ludG9OYXRpdmVJbWFn
ZSgpLCBtX2xvZ2ljYWxTaXplLCBtX2JhY2tlbmRTaXplLCBtX3Jlc29sdXRpb25TY2FsZSwgcHJl
c2VydmVSZXNvbHV0aW9uKTsKK30KKwordm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQoreworICAgIEZsb2F0UmVjdCBzcmNSZWN0U2NhbGVkID0gc3JjUmVjdDsKKyAgICBzcmNS
ZWN0U2NhbGVkLnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKworICAgIGlmIChhdXRvIGltYWdl
ID0gY29weU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tp
bmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKKyAgICAgICAgZGVzdENvbnRleHQuZHJh
d05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dFNjYWxlZCwgb3B0aW9ucyk7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBG
bG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKKyAgICBhZGp1c3RlZFNyY1JlY3Qu
c2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOworCisgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5SW1h
Z2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENv
cHlCYWNraW5nU3RvcmUpKQorICAgICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQs
IGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFj
aW5nLCBvcHRpb25zKTsKK30KKworQWZmaW5lVHJhbnNmb3JtIEltYWdlQnVmZmVyQ0dCYWNrZW5k
OjpiYXNlVHJhbnNmb3JtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKDEs
IDAsIDAsIC0xLCAwLCBtX2xvZ2ljYWxTaXplLmhlaWdodCgpKTsKK30KKworUmV0YWluUHRyPENG
RGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNl
cnZlUmVzb2x1dGlvbikgY29uc3QKK3sKKyAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNT
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKKworICAgIGF1dG8g
dXRpID0gdXRpRnJvbUltYWdlQnVmZmVyTUlNRVR5cGUobWltZVR5cGUpOworICAgIEFTU0VSVCh1
dGkpOworCisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOworICAgIFJlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gcHJvdGVjdGVkUGl4ZWxBcnJheTsKKworICAgIGlmIChDRkVxdWFsKHV0
aS5nZXQoKSwganBlZ1VUSSgpKSkgeworICAgICAgICAvLyBKUEVHcyBkb24ndCBoYXZlIGFuIGFs
cGhhIGNoYW5uZWwsIHNvIHdlIGhhdmUgdG8gbWFudWFsbHkgY29tcG9zaXRlIG9uIHRvcCBvZiBi
bGFjay4KKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgbG9naWNhbFJlY3QoKSk7CisgICAgICAgIGlmICgh
aW1hZ2VEYXRhKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcHJvdGVj
dGVkUGl4ZWxBcnJheSA9IG1ha2VSZWZQdHIoaW1hZ2VEYXRhLT5kYXRhKCkpOworICAgICAgICBz
aXplX3QgZGF0YVNpemUgPSBwcm90ZWN0ZWRQaXhlbEFycmF5LT5ieXRlTGVuZ3RoKCk7CisgICAg
ICAgIEludFNpemUgcGl4ZWxBcnJheURpbWVuc2lvbnMgPSBpbWFnZURhdGEtPnNpemUoKTsKKwor
ICAgICAgICB2ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKHByb3RlY3RlZFBpeGVsQXJyYXkt
PmRhdGEoKSwgZGF0YVNpemUpOworICAgICAgICBhdXRvIGRhdGFQcm92aWRlciA9IGFkb3B0Q0Yo
Q0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YShudWxscHRyLCBwcm90ZWN0ZWRQaXhlbEFycmF5
LT5kYXRhKCksIGRhdGFTaXplLCBudWxscHRyKSk7CisgICAgICAgIGlmICghZGF0YVByb3ZpZGVy
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgaW1hZ2UgPSBhZG9wdENG
KENHSW1hZ2VDcmVhdGUocGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgcGl4ZWxBcnJheURp
bWVuc2lvbnMuaGVpZ2h0KCksIDgsIDMyLCA0ICogcGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgo
KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0lt
YWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1Jl
bmRlcmluZ0ludGVudERlZmF1bHQpKTsKKyAgICB9IGVsc2UgaWYgKG1fcmVzb2x1dGlvblNjYWxl
ID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKSB7
CisgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpOworICAg
ICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KGltYWdlLmdldCgpLCBi
YWNrZW5kU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJ
bWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2Vu
ZFNpemUoKS5oZWlnaHQoKSwgOCwgNCAqIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgc1JHQkNvbG9y
U3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CisgICAgICAgIENH
Q29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKKyAg
ICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAs
IGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSkpOworICAgICAg
ICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBiYWNr
ZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tlbmRTaXplKCkuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7
CisgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250
ZXh0LmdldCgpKSk7CisgICAgfQorCisgICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNy
ZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOworICAgIGlmICghZW5jb2RlSW1h
Z2UoaW1hZ2UuZ2V0KCksIHV0aS5nZXQoKSwgcXVhbGl0eSwgY2ZEYXRhLmdldCgpKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gV1RGTW92ZShjZkRhdGEpOworfQorCitW
ZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvRGF0YShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0Cit7CisgICAgaWYgKGF1
dG8gZGF0YSA9IHRvQ0ZEYXRhKG1pbWVUeXBlLCBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb246
Ok5vKSkKKyAgICAgICAgcmV0dXJuIGRhdGFWZWN0b3IoZGF0YS5nZXQoKSk7CisgICAgcmV0dXJu
IHsgfTsKK30KKworU3RyaW5nIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0RhdGFVUkwoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29s
dXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAoreworICAgIGlmIChhdXRvIGRhdGEgPSB0
b0NGRGF0YShtaW1lVHlwZSwgcXVhbGl0eSwgcHJlc2VydmVSZXNvbHV0aW9uKSkKKyAgICAgICAg
cmV0dXJuIGRhdGFVUkwoZGF0YS5nZXQoKSwgbWltZVR5cGUpOworICAgIHJldHVybiAiZGF0YTos
Il9zOworfQorCisjaWYgVVNFKEFDQ0VMRVJBVEUpCitzdGF0aWMgaW5saW5lIHZJbWFnZV9CdWZm
ZXIgbWFrZVZJbWFnZUJ1ZmZlcih1bnNpZ25lZCBieXRlc1BlclJvdywgdWludDhfdCogcm93cywg
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICB2SW1hZ2VfQnVmZmVyIHZJbWFnZUJ1ZmZlcjsK
KworICAgIHZJbWFnZUJ1ZmZlci5oZWlnaHQgPSBzdGF0aWNfY2FzdDx2SW1hZ2VQaXhlbENvdW50
PihzaXplLmhlaWdodCgpKTsKKyAgICB2SW1hZ2VCdWZmZXIud2lkdGggPSBzdGF0aWNfY2FzdDx2
SW1hZ2VQaXhlbENvdW50PihzaXplLndpZHRoKCkpOworICAgIHZJbWFnZUJ1ZmZlci5yb3dCeXRl
cyA9IGJ5dGVzUGVyUm93OworICAgIHZJbWFnZUJ1ZmZlci5kYXRhID0gcm93czsKKyAgICByZXR1
cm4gdkltYWdlQnVmZmVyOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY29weUltYWdlUGl4ZWxz
QWNjZWxlcmF0ZWQoCisgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBzcmNBbHBoYUZvcm1hdCwg
Q29sb3JGb3JtYXQgc3JjQ29sb3JGb3JtYXQsIHZJbWFnZV9CdWZmZXImIHNyYywKKyAgICBBbHBo
YVByZW11bHRpcGxpY2F0aW9uIGRlc3RBbHBoYUZvcm1hdCwgQ29sb3JGb3JtYXQgZGVzdENvbG9y
Rm9ybWF0LCB2SW1hZ2VfQnVmZmVyJiBkZXN0KQoreworICAgIGlmIChzcmNBbHBoYUZvcm1hdCA9
PSBkZXN0QWxwaGFGb3JtYXQpIHsKKyAgICAgICAgQVNTRVJUKHNyY0NvbG9yRm9ybWF0ICE9IGRl
c3RDb2xvckZvcm1hdCk7CisgICAgICAgIEFTU0VSVChkZXN0QWxwaGFGb3JtYXQgPT0gQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCk7CisKKyAgICAgICAgLy8gU3dhcCBwaXhl
bCBjaGFubmVscyBCR1JBIDwtPiBSR0JBLgorICAgICAgICBjb25zdCB1aW50OF90IG1hcFs0XSA9
IHsgMiwgMSwgMCwgMyB9OworICAgICAgICB2SW1hZ2VQZXJtdXRlQ2hhbm5lbHNfQVJHQjg4ODgo
JnNyYywgJmRlc3QsIG1hcCwga3ZJbWFnZU5vRmxhZ3MpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKGRlc3RBbHBoYUZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQpIHsKKyAgICAgICAgaWYgKHNyY0NvbG9yRm9ybWF0ID09IENvbG9yRm9y
bWF0OjpSR0JBKQorICAgICAgICAgICAgdkltYWdlVW5wcmVtdWx0aXBseURhdGFfUkdCQTg4ODgo
JnNyYywgJmRlc3QsIGt2SW1hZ2VOb0ZsYWdzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
dkltYWdlVW5wcmVtdWx0aXBseURhdGFfQkdSQTg4ODgoJnNyYywgJmRlc3QsIGt2SW1hZ2VOb0Zs
YWdzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoc3JjQ29sb3JGb3JtYXQgPT0gQ29sb3JG
b3JtYXQ6OlJHQkEpCisgICAgICAgICAgICB2SW1hZ2VQcmVtdWx0aXBseURhdGFfUkdCQTg4ODgo
JnNyYywgJmRlc3QsIGt2SW1hZ2VOb0ZsYWdzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
dkltYWdlUHJlbXVsdGlwbHlEYXRhX0JHUkE4ODg4KCZzcmMsICZkZXN0LCBrdkltYWdlTm9GbGFn
cyk7CisgICAgfQorCisgICAgaWYgKHNyY0NvbG9yRm9ybWF0ICE9IGRlc3RDb2xvckZvcm1hdCkg
eworICAgICAgICAvLyBTd2FwIHBpeGVsIGNoYW5uZWxzIEJHUkEgPC0+IFJHQkEuCisgICAgICAg
IGNvbnN0IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAxLCAwLCAzIH07CisgICAgICAgIHZJbWFnZVBl
cm11dGVDaGFubmVsc19BUkdCODg4OCgmZGVzdCwgJmRlc3QsIG1hcCwga3ZJbWFnZU5vRmxhZ3Mp
OworICAgIH0KK30KKwordm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUltYWdlUGl4ZWxz
KAorICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gc3JjQWxwaGFGb3JtYXQsIENvbG9yRm9ybWF0
IHNyY0NvbG9yRm9ybWF0LCB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdywgdWludDhfdCogc3JjUm93
cywKKyAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RBbHBoYUZvcm1hdCwgQ29sb3JGb3Jt
YXQgZGVzdENvbG9yRm9ybWF0LCB1bnNpZ25lZCBkZXN0Qnl0ZXNQZXJSb3csIHVpbnQ4X3QqIGRl
c3RSb3dzLCBjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdAoreworICAgIGlmIChzcmNBbHBoYUZv
cm1hdCA9PSBkZXN0QWxwaGFGb3JtYXQgJiYgc3JjQ29sb3JGb3JtYXQgPT0gZGVzdENvbG9yRm9y
bWF0KSB7CisgICAgICAgIEltYWdlQnVmZmVyQmFja2VuZDo6Y29weUltYWdlUGl4ZWxzKHNyY0Fs
cGhhRm9ybWF0LCBzcmNDb2xvckZvcm1hdCwgc3JjQnl0ZXNQZXJSb3csIHNyY1Jvd3MsIGRlc3RB
bHBoYUZvcm1hdCwgZGVzdENvbG9yRm9ybWF0LCBkZXN0Qnl0ZXNQZXJSb3csIGRlc3RSb3dzLCBz
aXplKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZJbWFnZV9CdWZmZXIgc3JjID0g
bWFrZVZJbWFnZUJ1ZmZlcihzcmNCeXRlc1BlclJvdywgc3JjUm93cywgc2l6ZSk7CisgICAgdklt
YWdlX0J1ZmZlciBkZXN0ID0gbWFrZVZJbWFnZUJ1ZmZlcihkZXN0Qnl0ZXNQZXJSb3csIGRlc3RS
b3dzLCBzaXplKTsKKworICAgIGNvcHlJbWFnZVBpeGVsc0FjY2VsZXJhdGVkKHNyY0FscGhhRm9y
bWF0LCBzcmNDb2xvckZvcm1hdCwgc3JjLCBkZXN0QWxwaGFGb3JtYXQsIGRlc3RDb2xvckZvcm1h
dCwgZGVzdCk7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdjYTM5ODAzNGYyNWEz
MzQ5MjQ3ZDQzNGY1ZjY1OWY5MmFmM2Q0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmgKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIFVTRShDRykKKworI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2Vu
ZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEltYWdl
QnVmZmVyQ0dCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVyQmFja2VuZCB7CitwdWJsaWM6Cisg
ICAgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5n
U3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0
IG92ZXJyaWRlOworICAgIFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29s
dXRpb24pIG92ZXJyaWRlOworCisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworCisgICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFu
c2Zvcm0oKSBjb25zdCBvdmVycmlkZTsKKworICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRp
b24pIGNvbnN0IG92ZXJyaWRlOworICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdCBvdmVycmlkZTsK
KworcHJvdGVjdGVkOgorICAgIHVzaW5nIEltYWdlQnVmZmVyQmFja2VuZDo6SW1hZ2VCdWZmZXJC
YWNrZW5kOworCisgICAgc3RhdGljIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbnRleHRD
b2xvclNwYWNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOworICAgIHZvaWQgc2V0dXBDb250ZXh0
KCk7CisgICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiB0b0NGRGF0YShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlv
bikgY29uc3Q7CisKKyNpZiBVU0UoQUNDRUxFUkFURSkKKyAgICB2b2lkIGNvcHlJbWFnZVBpeGVs
cygKKyAgICAgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBzcmNBbHBoYUZvcm1hdCwgQ29sb3JG
b3JtYXQgc3JjQ29sb3JGb3JtYXQsIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93LCB1aW50OF90KiBz
cmNSb3dzLAorICAgICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RBbHBoYUZvcm1hdCwg
Q29sb3JGb3JtYXQgZGVzdENvbG9yRm9ybWF0LCB1bnNpZ25lZCBkZXN0Qnl0ZXNQZXJSb3csIHVp
bnQ4X3QqIGRlc3RSb3dzLCBjb25zdCBJbnRTaXplJikgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDRykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzgzYzk5NmU1NGQwYjA0
NzEzZmRjNzQyYzIxNDM2ZDM4MDdlODQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCkBA
IC0wLDAgKzEsMTQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZC5oIgorCisjaWYgVVNFKENHKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlclV0
aWxpdGllc0NHLmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCisjaW5jbHVkZSAiSW50UmVjdC5o
IgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCitjb25zdGV4cHIgY29uc3QgQ0dCaXRtYXBJ
bmZvIERlZmF1bHRCaXRtYXBJbmZvID0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8
IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdDsKKyNlbHNlCitjb25zdGV4cHIgY29uc3QgQ0dCaXRt
YXBJbmZvIERlZmF1bHRCaXRtYXBJbmZvID0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0
OworI2VuZGlmCisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZCk7CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDR0NvbG9y
U3BhY2VSZWYgY2dDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KikKK3sKKyAgICBJbnRTaXpl
IGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxl
KTsKKyAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHZvaWQqIGRhdGE7CisgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3cgPSA0ICogYmFj
a2VuZFNpemUud2lkdGgoKTsKKworICAgIGlmICghdHJ5RmFzdENhbGxvYyhiYWNrZW5kU2l6ZS5o
ZWlnaHQoKSwgYnl0ZXNQZXJSb3cpLmdldFZhbHVlKGRhdGEpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGRhdGEpICYg
MykpOworCisgICAgc2l6ZV90IG51bUJ5dGVzID0gYmFja2VuZFNpemUuaGVpZ2h0KCkgKiBieXRl
c1BlclJvdzsKKyAgICB2ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGRhdGEsIG51bUJ5dGVz
KTsKKworICAgIGF1dG8gY2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUo
ZGF0YSwgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIGJ5dGVz
UGVyUm93LCBjZ0NvbG9yU3BhY2UsIERlZmF1bHRCaXRtYXBJbmZvKSk7CisgICAgaWYgKCFjZ0Nv
bnRleHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBjb250ZXh0ID0gbWFr
ZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGNnQ29udGV4dC5nZXQoKSk7CisKKyAgICBjb25zdCBh
dXRvIHJlbGVhc2VJbWFnZURhdGEgPSBbXSAodm9pZCosIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVf
dCkgeworICAgICAgICBmYXN0RnJlZShjb25zdF9jYXN0PHZvaWQqPihkYXRhKSk7CisgICAgfTsK
KworICAgIGF1dG8gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdp
dGhEYXRhKDAsIGRhdGEsIG51bUJ5dGVzLCByZWxlYXNlSW1hZ2VEYXRhKSk7CisKKyAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPihuZXcgSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQoc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgZGF0YSwgV1RGTW92ZShkYXRhUHJvdmlkZXIpLCBXVEZNb3ZlKGNvbnRleHQp
KSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAoYXV0byBjZ0NvbG9yU3Bh
Y2UgPSBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgY2dD
b2xvclNwYWNlLmdldCgpLCBudWxscHRyKTsKKyAgICAKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBudWxscHRy
KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3cpCit7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBjYWNoZWRDR0NvbG9y
U3BhY2UoY29sb3JTcGFjZSksIGhvc3RXaW5kb3cpOworfQorCitJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZDo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dp
Y2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRhUHJv
dmlkZXJSZWY+JiYgZGF0YVByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0
PiYmIGNvbnRleHQpCisgICAgOiBJbWFnZUJ1ZmZlckNHQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFj
a2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSkKKyAgICAsIG1fZGF0YShkYXRh
KQorICAgICwgbV9kYXRhUHJvdmlkZXIoV1RGTW92ZShkYXRhUHJvdmlkZXIpKQorICAgICwgbV9j
b250ZXh0KFdURk1vdmUoY29udGV4dCkpCit7CisgICAgQVNTRVJUKG1fZGF0YSk7CisgICAgQVNT
RVJUKG1fZGF0YVByb3ZpZGVyKTsKKyAgICBBU1NFUlQobV9jb250ZXh0KTsKKyAgICBzZXR1cENv
bnRleHQoKTsKK30KKworR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZDo6Y29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICptX2NvbnRleHQ7Cit9CisKK05hdGl2
ZUltYWdlUHRyIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0Cit7CisgICAgc3dpdGNoIChjb3B5QmVo
YXZpb3IpIHsKKyAgICBjYXNlIENvcHlCYWNraW5nU3RvcmU6CisgICAgICAgIHJldHVybiBhZG9w
dENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQo
KSkpOworCisgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9yZToKKyAgICAgICAgcmV0dXJuIGFk
b3B0Q0YoQ0dJbWFnZUNyZWF0ZSgKKyAgICAgICAgICAgIG1fYmFja2VuZFNpemUud2lkdGgoKSwg
bV9iYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIGJ5dGVzUGVyUm93KCksCisgICAgICAgICAg
ICBjYWNoZWRDR0NvbG9yU3BhY2UobV9jb2xvclNwYWNlKSwgRGVmYXVsdEJpdG1hcEluZm8sIG1f
ZGF0YVByb3ZpZGVyLmdldCgpLAorICAgICAgICAgICAgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50
ZW50RGVmYXVsdCkpOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ6OnRvQkdSQURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OnRvQkdSQURhdGEobV9kYXRhKTsKK30KKworUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQ6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91
dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29uc3QKK3sKKyAgICByZXR1cm4g
SW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBt
X2RhdGEpOworfQorCit2b2lkIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpwdXRJbWFnZURh
dGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiBp
bWFnZURhdGEsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9p
bnQpCit7CisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRJbWFnZURhdGEoaW5wdXRGb3JtYXQs
IGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBtX2RhdGEpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iNmFmNjYyYTFjNzZhOGI4OWI3NzZmMjM5NmNiODUzNDdkNmE0
OTFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaApAQCAtMCwwICsxLDY2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgVVNFKENHKQorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaCIKKyNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJDR0JhY2tlbmQgeworICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQpOworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKTsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
PiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlLCBDR0NvbG9yU3BhY2VSZWYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxv
YXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBjb25zdCBIb3N0V2lu
ZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwor
CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBO
YXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNr
aW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURh
dGEoKSBjb25zdCBvdmVycmlkZTsKKworICAgIFJlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0
YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZvaWQgcHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRp
b24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIElt
YWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IEludFNpemUmIHBoeXNpY2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlLCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+JiYsIHN0ZDo6dW5p
cXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYpOworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICBDb2xvckZvcm1hdCBiYWNrZW5kQ29sb3JGb3JtYXQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBDb2xvckZvcm1hdDo6QkdSQTsgfQorI2VuZGlmCisKKyAgICB2b2lkKiBtX2RhdGE7Cisg
ICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBtX2RhdGFQcm92aWRlcjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxZmMwMzFjYzA2NjRkZTdhNTc3ZDFiY2I1YjQ5NjJm
ZGQyZWFiYWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNDkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiSW1hZ2VCdWZmZXJEYXRhLmgiCi0KLSNpZiBVU0UoQ0cpCi0KLSNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSA8Q29yZUdyYXBoaWNz
L0NvcmVHcmFwaGljcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UeXBlZEFycmF5SW5saW5lcy5oPgotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KLQotI2lmIFVTRShBQ0NFTEVSQVRFKQotI2luY2x1ZGUgPEFjY2VsZXJhdGUvQWNj
ZWxlcmF0ZS5oPgotI2VuZGlmCi0KLSNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NU
T1JFKQotI2luY2x1ZGUgIklPU3VyZmFjZS5oIgotI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNo
Lmg+Ci0jaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaD4KLSNlbmRpZgotCi0v
LyBDQSB1c2VzIEFSR0IzMiBmb3IgdGV4dHVyZXMgYW5kIEFSR0IzMiAtPiBBUkdCMzIgcmVzYW1w
bGluZyBpcyBvcHRpbWl6ZWQuCi0jZGVmaW5lIFVTRV9BUkdCMzIgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgVVNFKEFDQ0VMRVJBVEUpICYmIChVU0Vf
QVJHQjMyIHx8IFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpKQotc3RhdGljIHZv
aWQgdW5wcmVtdWx0aXBseUJ1ZmZlckRhdGEoY29uc3QgdkltYWdlX0J1ZmZlciYgc3JjLCBjb25z
dCB2SW1hZ2VfQnVmZmVyJiBkZXN0KQotewotICAgIEFTU0VSVChzcmMuZGF0YSk7Ci0gICAgQVNT
RVJUKGRlc3QuZGF0YSk7Ci0KLSAgICBpZiAoa3ZJbWFnZU5vRXJyb3IgIT0gdkltYWdlVW5wcmVt
dWx0aXBseURhdGFfUkdCQTg4ODgoJnNyYywgJmRlc3QsIGt2SW1hZ2VOb0ZsYWdzKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgLy8gU3dhcCBjaGFubmVscyAxIGFuZCAzLCB0byBjb252ZXJ0IEJH
UkE8LT5SR0JBLiBJT1N1cmZhY2VzIGFyZSBCR1JBLCBJbWFnZURhdGEgZXhwZWN0cyBSR0JBLgot
ICAgIGNvbnN0IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAxLCAwLCAzIH07Ci0gICAgdkltYWdlUGVy
bXV0ZUNoYW5uZWxzX0FSR0I4ODg4KCZkZXN0LCAmZGVzdCwgbWFwLCBrdkltYWdlTm9GbGFncyk7
Ci19Ci0KLXN0YXRpYyB2b2lkIHByZW11bHRpcGx5QnVmZmVyRGF0YShjb25zdCB2SW1hZ2VfQnVm
ZmVyJiBzcmMsIGNvbnN0IHZJbWFnZV9CdWZmZXImIGRlc3QpCi17Ci0gICAgQVNTRVJUKHNyYy5k
YXRhKTsKLSAgICBBU1NFUlQoZGVzdC5kYXRhKTsKLQotICAgIGlmIChrdkltYWdlTm9FcnJvciAh
PSB2SW1hZ2VQcmVtdWx0aXBseURhdGFfUkdCQTg4ODgoJnNyYywgJmRlc3QsIGt2SW1hZ2VOb0Zs
YWdzKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gU3dhcCBjaGFubmVscyAxIGFuZCAzLCB0
byBjb252ZXJ0IEJHUkE8LT5SR0JBLiBJT1N1cmZhY2VzIGFyZSBCR1JBLCBJbWFnZURhdGEgZXhw
ZWN0cyBSR0JBLgotICAgIGNvbnN0IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAxLCAwLCAzIH07Ci0g
ICAgdkltYWdlUGVybXV0ZUNoYW5uZWxzX0FSR0I4ODg4KCZkZXN0LCAmZGVzdCwgbWFwLCBrdklt
YWdlTm9GbGFncyk7Ci19Ci0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEUpICYmIChVU0VfQVJHQjMy
IHx8IFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpKQotCi1zdGF0aWMgaW5saW5l
IHZvaWQgdHJhbnNmZXJEYXRhKHZvaWQqIG91dHB1dCwgdm9pZCogaW5wdXQsIGludCB3aWR0aCwg
aW50IGhlaWdodCwgc2l6ZV90IGlucHV0Qnl0ZXNQZXJSb3cpCi17Ci0jaWYgVVNFKEFDQ0VMRVJB
VEUpCi0gICAgQVNTRVJUKGlucHV0KTsKLSAgICBBU1NFUlQob3V0cHV0KTsKLQotICAgIHZJbWFn
ZV9CdWZmZXIgc3JjOwotICAgIHNyYy53aWR0aCA9IHdpZHRoOwotICAgIHNyYy5oZWlnaHQgPSBo
ZWlnaHQ7Ci0gICAgc3JjLnJvd0J5dGVzID0gaW5wdXRCeXRlc1BlclJvdzsKLSAgICBzcmMuZGF0
YSA9IGlucHV0OwotCi0gICAgdkltYWdlX0J1ZmZlciBkZXN0OwotICAgIGRlc3Qud2lkdGggPSB3
aWR0aDsKLSAgICBkZXN0LmhlaWdodCA9IGhlaWdodDsKLSAgICBkZXN0LnJvd0J5dGVzID0gd2lk
dGggKiA0OwotICAgIGRlc3QuZGF0YSA9IG91dHB1dDsKLQotICAgIHZJbWFnZVVucHJlbXVsdGlw
bHlEYXRhX0JHUkE4ODg4KCZzcmMsICZkZXN0LCBrdkltYWdlTm9GbGFncyk7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShvdXRwdXQpOwotICAgIFVOVVNFRF9QQVJBTShpbnB1dCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAgICAvLyBGSVhN
RTogQWRkIHN1cHBvcnQgZm9yIG5vdCBBQ0NFTEVSQVRFLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotI2VuZGlmCi19Ci0KLVZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlckRhdGE6OnRvQkdS
QURhdGEoYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNv
bnN0Ci17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdCg0ICogd2lkdGggKiBoZWlnaHQpOwot
Ci0gICAgaWYgKCFhY2NlbGVyYXRlUmVuZGVyaW5nKSB7Ci0gICAgICAgIHRyYW5zZmVyRGF0YShy
ZXN1bHQuZGF0YSgpLCBkYXRhLCB3aWR0aCwgaGVpZ2h0LCA0ICogYmFja2luZ1N0b3JlU2l6ZS53
aWR0aCgpKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0jaWYgVVNFKElPU1VSRkFD
RV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKLSAgICBJT1N1cmZhY2U6OkxvY2tlciBsb2NrKCpzdXJm
YWNlKTsKLSAgICB0cmFuc2ZlckRhdGEocmVzdWx0LmRhdGEoKSwgbG9jay5zdXJmYWNlQmFzZUFk
ZHJlc3MoKSwgd2lkdGgsIGhlaWdodCwgc3VyZmFjZS0+Ynl0ZXNQZXJSb3coKSk7Ci0jZWxzZQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2VuZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEoQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IEludFNpemUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZykgY29uc3QKLXsKLSAg
ICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gYXJlYSA9IDQ7Ci0gICAgYXJlYSAq
PSByZWN0LndpZHRoKCk7Ci0gICAgYXJlYSAqPSByZWN0LmhlaWdodCgpOwotICAgIGlmIChhcmVh
Lmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIHJl
c3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGFyZWEudW5z
YWZlR2V0KCkpOwotICAgIHVpbnQ4X3QqIHJlc3VsdERhdGEgPSByZXN1bHQgPyByZXN1bHQtPmRh
dGEoKSA6IG51bGxwdHI7Ci0gICAgaWYgKCFyZXN1bHREYXRhKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIENoZWNrZWQ8aW50PiBlbmR4ID0gcmVjdC5tYXhYKCk7Ci0gICAgQ2hlY2tl
ZDxpbnQ+IGVuZHkgPSByZWN0Lm1heFkoKTsKLSAgICBpZiAocmVjdC54KCkgPCAwIHx8IHJlY3Qu
eSgpIDwgMCB8fCBlbmR4LnVuc2FmZUdldCgpID4gc2l6ZS53aWR0aCgpIHx8IGVuZHkudW5zYWZl
R2V0KCkgPiBzaXplLmhlaWdodCgpKQotICAgICAgICByZXN1bHQtPnplcm9GaWxsKCk7Ci0gICAg
Ci0gICAgaW50IG9yaWdpbnggPSByZWN0LngoKTsKLSAgICBpbnQgZGVzdHggPSAwOwotICAgIENo
ZWNrZWQ8aW50PiBkZXN0dyA9IHJlY3Qud2lkdGgoKTsKLSAgICBpZiAob3JpZ2lueCA8IDApIHsK
LSAgICAgICAgZGVzdHcgKz0gb3JpZ2lueDsKLSAgICAgICAgZGVzdHggPSAtb3JpZ2lueDsKLSAg
ICAgICAgb3JpZ2lueCA9IDA7Ci0gICAgfQotICAgIGRlc3R3ID0gc3RkOjptaW48aW50PihkZXN0
dy51bnNhZmVHZXQoKSwgc2l6ZS53aWR0aCgpIC0gb3JpZ2lueCk7Ci0gICAgaWYgKGVuZHgudW5z
YWZlR2V0KCkgPiBzaXplLndpZHRoKCkpCi0gICAgICAgIGVuZHggPSBzaXplLndpZHRoKCk7Ci0g
ICAgQ2hlY2tlZDxpbnQ+IHdpZHRoID0gZW5keCAtIG9yaWdpbng7Ci0gICAgCi0gICAgaW50IG9y
aWdpbnkgPSByZWN0LnkoKTsKLSAgICBpbnQgZGVzdHkgPSAwOwotICAgIENoZWNrZWQ8aW50PiBk
ZXN0aCA9IHJlY3QuaGVpZ2h0KCk7Ci0gICAgaWYgKG9yaWdpbnkgPCAwKSB7Ci0gICAgICAgIGRl
c3RoICs9IG9yaWdpbnk7Ci0gICAgICAgIGRlc3R5ID0gLW9yaWdpbnk7Ci0gICAgICAgIG9yaWdp
bnkgPSAwOwotICAgIH0KLSAgICBkZXN0aCA9IHN0ZDo6bWluPGludD4oZGVzdGgudW5zYWZlR2V0
KCksIHNpemUuaGVpZ2h0KCkgLSBvcmlnaW55KTsKLSAgICBpZiAoZW5keS51bnNhZmVHZXQoKSA+
IHNpemUuaGVpZ2h0KCkpCi0gICAgICAgIGVuZHkgPSBzaXplLmhlaWdodCgpOwotICAgIENoZWNr
ZWQ8aW50PiBoZWlnaHQgPSBlbmR5IC0gb3JpZ2lueTsKLSAgICAKLSAgICBpZiAod2lkdGgudW5z
YWZlR2V0KCkgPD0gMCB8fCBoZWlnaHQudW5zYWZlR2V0KCkgPD0gMCkKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICAKLSAgICB1bnNpZ25lZCBkZXN0Qnl0ZXNQZXJSb3cgPSA0ICogcmVjdC53
aWR0aCgpOwotICAgIHVpbnQ4X3QqIGRlc3RSb3dzID0gcmVzdWx0RGF0YSArIGRlc3R5ICogZGVz
dEJ5dGVzUGVyUm93ICsgZGVzdHggKiA0OwotICAgIAotICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVy
Um93OwotICAgIHVpbnQ4X3QqIHNyY1Jvd3M7Ci0gICAgCi0gICAgaWYgKCFhY2NlbGVyYXRlUmVu
ZGVyaW5nKSB7Ci0gICAgICAgIGlmICghZGF0YSkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
Ci0KLSAgICAgICAgc3JjQnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdy51bnNhZmVHZXQoKTsKLSAg
ICAgICAgc3JjUm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgb3JpZ2lu
eSAqIHNyY0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7Ci0KLSNpZiBVU0UoQUNDRUxFUkFURSkK
LSAgICAgICAgaWYgKG91dHB1dEZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnBy
ZW11bHRpcGxpZWQpIHsKLQotICAgICAgICAgICAgdkltYWdlX0J1ZmZlciBzcmM7Ci0gICAgICAg
ICAgICBzcmMud2lkdGggPSB3aWR0aC51bnNhZmVHZXQoKTsKLSAgICAgICAgICAgIHNyYy5oZWln
aHQgPSBoZWlnaHQudW5zYWZlR2V0KCk7Ci0gICAgICAgICAgICBzcmMucm93Qnl0ZXMgPSBzcmNC
eXRlc1BlclJvdzsKLSAgICAgICAgICAgIHNyYy5kYXRhID0gc3JjUm93czsKLQotICAgICAgICAg
ICAgdkltYWdlX0J1ZmZlciBkZXN0OwotICAgICAgICAgICAgZGVzdC53aWR0aCA9IGRlc3R3LnVu
c2FmZUdldCgpOwotICAgICAgICAgICAgZGVzdC5oZWlnaHQgPSBkZXN0aC51bnNhZmVHZXQoKTsK
LSAgICAgICAgICAgIGRlc3Qucm93Qnl0ZXMgPSBkZXN0Qnl0ZXNQZXJSb3c7Ci0gICAgICAgICAg
ICBkZXN0LmRhdGEgPSBkZXN0Um93czsKLQotI2lmIFVTRV9BUkdCMzIKLSAgICAgICAgICAgIHVu
cHJlbXVsdGlwbHlCdWZmZXJEYXRhKHNyYywgZGVzdCk7Ci0jZWxzZQotICAgICAgICAgICAgdklt
YWdlVW5wcmVtdWx0aXBseURhdGFfUkdCQTg4ODgoJnNyYywgJmRlc3QsIGt2SW1hZ2VOb0ZsYWdz
KTsKLSNlbmRpZgotCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0jZW5k
aWYKLSAgICAgICAgaWYgKG91dHB1dEZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQpIHsKLSAgICAgICAgICAgIGlmICgod2lkdGggKiA0KS5oYXNPdmVyZmxv
d2VkKCkpCi0gICAgICAgICAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgICAgIGZvciAoaW50IHkg
PSAwOyB5IDwgaGVpZ2h0LnVuc2FmZUdldCgpOyArK3kpIHsKLSAgICAgICAgICAgICAgICBmb3Ig
KGludCB4ID0gMDsgeCA8IHdpZHRoLnVuc2FmZUdldCgpOyB4KyspIHsKLSAgICAgICAgICAgICAg
ICAgICAgaW50IGJhc2V4ID0geCAqIDQ7Ci0gICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgYWxw
aGEgPSBzcmNSb3dzW2Jhc2V4ICsgM107Ci0jaWYgVVNFX0FSR0IzMgotICAgICAgICAgICAgICAg
ICAgICAvLyBCeXRlIG9yZGVyIGlzIGRpZmZlcmVudCBhcyB3ZSB1c2UgaW1hZ2UgYnVmZmVycyBv
ZiBBUkdCMzIKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFscGhhKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBkZXN0Um93c1tiYXNleF0gPSAoc3JjUm93c1tiYXNleCArIDJdICogMjU1KSAv
IGFscGhhOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAxXSA9IChz
cmNSb3dzW2Jhc2V4ICsgMV0gKiAyNTUpIC8gYWxwaGE7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBkZXN0Um93c1tiYXNleCArIDJdID0gKHNyY1Jvd3NbYmFzZXhdICogMjU1KSAvIGFscGhhOwot
ICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAzXSA9IGFscGhhOwotICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFJv
d3NbYmFzZXhdID0gc3JjUm93c1tiYXNleCArIDJdOwotICAgICAgICAgICAgICAgICAgICAgICAg
ZGVzdFJvd3NbYmFzZXggKyAxXSA9IHNyY1Jvd3NbYmFzZXggKyAxXTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSBzcmNSb3dzW2Jhc2V4XTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBhbHBoYTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFscGhhKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleF0gPSAoc3JjUm93c1tiYXNleF0gKiAy
NTUpIC8gYWxwaGE7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDFd
ID0gKHNyY1Jvd3NbYmFzZXggKyAxXSAqIDI1NSkgLyBhbHBoYTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSAoc3JjUm93c1tiYXNleCArIDJdICogMjU1KSAv
IGFscGhhOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAzXSA9IGFs
cGhhOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihkZXN0Um93cyArIGJhc2V4KVswXSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihzcmNSb3dzICsgYmFzZXgpWzBdOwotI2VuZGlm
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHNyY1Jvd3MgKz0gc3JjQnl0ZXNQ
ZXJSb3c7Ci0gICAgICAgICAgICAgICAgZGVzdFJvd3MgKz0gZGVzdEJ5dGVzUGVyUm93OwotICAg
ICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7
IHkgPCBoZWlnaHQudW5zYWZlR2V0KCk7ICsreSkgewotI2lmIFVTRV9BUkdCMzIKLSAgICAgICAg
ICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoLnVuc2FmZUdldCgpOyB4KyspIHsKLSAg
ICAgICAgICAgICAgICAgICAgaW50IGJhc2V4ID0geCAqIDQ7Ci0gICAgICAgICAgICAgICAgICAg
IGRlc3RSb3dzW2Jhc2V4XSA9IHNyY1Jvd3NbYmFzZXggKyAyXTsKLSAgICAgICAgICAgICAgICAg
ICAgZGVzdFJvd3NbYmFzZXggKyAxXSA9IHNyY1Jvd3NbYmFzZXggKyAxXTsKLSAgICAgICAgICAg
ICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAyXSA9IHNyY1Jvd3NbYmFzZXhdOwotICAgICAgICAg
ICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gc3JjUm93c1tiYXNleCArIDNdOwotICAg
ICAgICAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHgg
PCAod2lkdGggKiA0KS51bnNhZmVHZXQoKTsgeCArPSA0KQotICAgICAgICAgICAgICAgICAgICBy
ZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oZGVzdFJvd3MgKyB4KVswXSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDMyX3QqPihzcmNSb3dzICsgeClbMF07Ci0jZW5kaWYKLSAgICAgICAgICAgICAg
ICBzcmNSb3dzICs9IHNyY0J5dGVzUGVyUm93OwotICAgICAgICAgICAgICAgIGRlc3RSb3dzICs9
IGRlc3RCeXRlc1BlclJvdzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0gZWxzZSB7
Ci0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKLSAgICAgICAgSU9TdXJm
YWNlOjpMb2NrZXIgbG9jaygqc3VyZmFjZSk7Ci0gICAgICAgIHNyY0J5dGVzUGVyUm93ID0gc3Vy
ZmFjZS0+Ynl0ZXNQZXJSb3coKTsKLSAgICAgICAgc3JjUm93cyA9IHN0YXRpY19jYXN0PHVpbnQ4
X3QqPihsb2NrLnN1cmZhY2VCYXNlQWRkcmVzcygpKSArIG9yaWdpbnkgKiBzcmNCeXRlc1BlclJv
dyArIG9yaWdpbnggKiA0OwotCi0jaWYgVVNFKEFDQ0VMRVJBVEUpCi0gICAgICAgIHZJbWFnZV9C
dWZmZXIgc3JjOwotICAgICAgICBzcmMud2lkdGggPSB3aWR0aC51bnNhZmVHZXQoKTsKLSAgICAg
ICAgc3JjLmhlaWdodCA9IGhlaWdodC51bnNhZmVHZXQoKTsKLSAgICAgICAgc3JjLnJvd0J5dGVz
ID0gc3JjQnl0ZXNQZXJSb3c7Ci0gICAgICAgIHNyYy5kYXRhID0gc3JjUm93czsKLQotICAgICAg
ICB2SW1hZ2VfQnVmZmVyIGRlc3Q7Ci0gICAgICAgIGRlc3Qud2lkdGggPSBkZXN0dy51bnNhZmVH
ZXQoKTsKLSAgICAgICAgZGVzdC5oZWlnaHQgPSBkZXN0aC51bnNhZmVHZXQoKTsKLSAgICAgICAg
ZGVzdC5yb3dCeXRlcyA9IGRlc3RCeXRlc1BlclJvdzsKLSAgICAgICAgZGVzdC5kYXRhID0gZGVz
dFJvd3M7Ci0KLSAgICAgICAgaWYgKG91dHB1dEZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpVbnByZW11bHRpcGxpZWQpCi0gICAgICAgICAgICB1bnByZW11bHRpcGx5QnVmZmVyRGF0
YShzcmMsIGRlc3QpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIFN3YXAgcGl4ZWwg
Y2hhbm5lbHMgZnJvbSBCR1JBIHRvIFJHQkEuCi0gICAgICAgICAgICBjb25zdCB1aW50OF90IG1h
cFs0XSA9IHsgMiwgMSwgMCwgMyB9OwotICAgICAgICAgICAgdkltYWdlUGVybXV0ZUNoYW5uZWxz
X0FSR0I4ODg4KCZzcmMsICZkZXN0LCBtYXAsIGt2SW1hZ2VOb0ZsYWdzKTsKLSAgICAgICAgfQot
I2Vsc2UKLSAgICAgICAgaWYgKCh3aWR0aCAqIDQpLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAg
ICAgIENSQVNIKCk7Ci0KLSAgICAgICAgaWYgKG91dHB1dEZvcm1hdCA9PSBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQpIHsKLSAgICAgICAgICAgIGZvciAoaW50IHkgPSAw
OyB5IDwgaGVpZ2h0LnVuc2FmZUdldCgpOyArK3kpIHsKLSAgICAgICAgICAgICAgICBmb3IgKGlu
dCB4ID0gMDsgeCA8IHdpZHRoLnVuc2FmZUdldCgpOyB4KyspIHsKLSAgICAgICAgICAgICAgICAg
ICAgaW50IGJhc2V4ID0geCAqIDQ7Ci0gICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgYiA9IHNy
Y1Jvd3NbYmFzZXhdOwotICAgICAgICAgICAgICAgICAgICB1aW50OF90IGFscGhhID0gc3JjUm93
c1tiYXNleCArIDNdOwotICAgICAgICAgICAgICAgICAgICBpZiAoYWxwaGEpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9IChzcmNSb3dzW2Jhc2V4ICsgMl0gKiAy
NTUpIC8gYWxwaGE7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDFd
ID0gKHNyY1Jvd3NbYmFzZXggKyAxXSAqIDI1NSkgLyBhbHBoYTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSAoYiAqIDI1NSkgLyBhbHBoYTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBhbHBoYTsKLSAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4
XSA9IHNyY1Jvd3NbYmFzZXggKyAyXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dz
W2Jhc2V4ICsgMV0gPSBzcmNSb3dzW2Jhc2V4ICsgMV07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBkZXN0Um93c1tiYXNleCArIDJdID0gYjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RS
b3dzW2Jhc2V4ICsgM10gPSBzcmNSb3dzW2Jhc2V4ICsgM107Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRl
c1BlclJvdzsKLSAgICAgICAgICAgICAgICBkZXN0Um93cyArPSBkZXN0Qnl0ZXNQZXJSb3c7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKGludCB5ID0g
MDsgeSA8IGhlaWdodC51bnNhZmVHZXQoKTsgKyt5KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChp
bnQgeCA9IDA7IHggPCB3aWR0aC51bnNhZmVHZXQoKTsgeCsrKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGludCBiYXNleCA9IHggKiA0OwotICAgICAgICAgICAgICAgICAgICB1aW50OF90IGIgPSBz
cmNSb3dzW2Jhc2V4XTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXhdID0gc3Jj
Um93c1tiYXNleCArIDJdOwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDFd
ID0gc3JjUm93c1tiYXNleCArIDFdOwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNl
eCArIDJdID0gYjsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAzXSA9IHNy
Y1Jvd3NbYmFzZXggKyAzXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3Jj
Um93cyArPSBzcmNCeXRlc1BlclJvdzsKLSAgICAgICAgICAgICAgICBkZXN0Um93cyArPSBkZXN0
Qnl0ZXNQZXJSb3c7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZiAvLyBVU0UoQUND
RUxFUkFURSkKLSNlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2VuZGlmIC8v
IFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCi0gICAgfQotICAgIAotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKGNvbnN0IFVp
bnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gc291cmNlRm9y
bWF0LCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGFj
Y2VsZXJhdGVSZW5kZXJpbmcpCi17Ci0gICAgQVNTRVJUKHNvdXJjZVJlY3Qud2lkdGgoKSA+IDAp
OwotICAgIEFTU0VSVChzb3VyY2VSZWN0LmhlaWdodCgpID4gMCk7Ci0gICAgCi0gICAgQ2hlY2tl
ZDxpbnQ+IG9yaWdpbnggPSBzb3VyY2VSZWN0LngoKTsKLSAgICBDaGVja2VkPGludD4gZGVzdHgg
PSAoQ2hlY2tlZDxpbnQ+KGRlc3RQb2ludC54KCkpICsgc291cmNlUmVjdC54KCkpOwotICAgIEFT
U0VSVChkZXN0eC51bnNhZmVHZXQoKSA+PSAwKTsKLSAgICBBU1NFUlRfVU5VU0VEKHNpemUsIGRl
c3R4LnVuc2FmZUdldCgpIDwgc2l6ZS53aWR0aCgpKTsKLSAgICBBU1NFUlQob3JpZ2lueC51bnNh
ZmVHZXQoKSA+PSAwKTsKLSAgICBBU1NFUlQob3JpZ2lueC51bnNhZmVHZXQoKSA8PSBzb3VyY2VS
ZWN0Lm1heFgoKSk7Ci0gICAgCi0gICAgQ2hlY2tlZDxpbnQ+IGVuZHggPSAoQ2hlY2tlZDxpbnQ+
KGRlc3RQb2ludC54KCkpICsgc291cmNlUmVjdC5tYXhYKCkpOwotICAgIEFTU0VSVChlbmR4LnVu
c2FmZUdldCgpIDw9IHNpemUud2lkdGgoKSk7Ci0gICAgCi0gICAgQ2hlY2tlZDxpbnQ+IHdpZHRo
ID0gc291cmNlUmVjdC53aWR0aCgpOwotICAgIENoZWNrZWQ8aW50PiBkZXN0dyA9IGVuZHggLSBk
ZXN0eDsKLQotICAgIENoZWNrZWQ8aW50PiBvcmlnaW55ID0gc291cmNlUmVjdC55KCk7Ci0gICAg
Q2hlY2tlZDxpbnQ+IGRlc3R5ID0gKENoZWNrZWQ8aW50PihkZXN0UG9pbnQueSgpKSArIHNvdXJj
ZVJlY3QueSgpKTsKLSAgICBBU1NFUlQoZGVzdHkudW5zYWZlR2V0KCkgPj0gMCk7Ci0gICAgQVNT
RVJUKGRlc3R5LnVuc2FmZUdldCgpIDwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgQVNTRVJUKG9yaWdp
bnkudW5zYWZlR2V0KCkgPj0gMCk7Ci0gICAgQVNTRVJUKG9yaWdpbnkudW5zYWZlR2V0KCkgPD0g
c291cmNlUmVjdC5tYXhZKCkpOwotICAgIAotICAgIENoZWNrZWQ8aW50PiBlbmR5ID0gKENoZWNr
ZWQ8aW50PihkZXN0UG9pbnQueSgpKSArIHNvdXJjZVJlY3QubWF4WSgpKTsKLSAgICBBU1NFUlQo
ZW5keS51bnNhZmVHZXQoKSA8PSBzaXplLmhlaWdodCgpKTsKLQotICAgIENoZWNrZWQ8aW50PiBo
ZWlnaHQgPSBzb3VyY2VSZWN0LmhlaWdodCgpOwotICAgIENoZWNrZWQ8aW50PiBkZXN0aCA9IGVu
ZHkgLSBkZXN0eTsKLSAgICAKLSAgICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCkKLSAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNv
dXJjZVNpemUud2lkdGgoKTsKLSAgICBjb25zdCB1aW50OF90KiBzcmNSb3dzID0gc291cmNlLmRh
dGEoKSArIChvcmlnaW55ICogc3JjQnl0ZXNQZXJSb3cgKyBvcmlnaW54ICogNCkudW5zYWZlR2V0
KCk7Ci0gICAgdW5zaWduZWQgZGVzdEJ5dGVzUGVyUm93OwotICAgIHVpbnQ4X3QqIGRlc3RSb3dz
OwotICAgIAotICAgIGlmICghYWNjZWxlcmF0ZVJlbmRlcmluZykgewotICAgICAgICBpZiAoIWRh
dGEpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZGVzdEJ5dGVzUGVyUm93ID0gYnl0
ZXNQZXJSb3cudW5zYWZlR2V0KCk7Ci0gICAgICAgIGRlc3RSb3dzID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4oZGF0YSkgKyAoZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAqIDQp
LnVuc2FmZUdldCgpOwotCi0jaWYgVVNFKEFDQ0VMRVJBVEUpCi0gICAgICAgIGlmIChzb3VyY2VG
b3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkKSB7Ci0KLSAg
ICAgICAgICAgIHZJbWFnZV9CdWZmZXIgc3JjOwotICAgICAgICAgICAgc3JjLndpZHRoID0gd2lk
dGgudW5zYWZlR2V0KCk7Ci0gICAgICAgICAgICBzcmMuaGVpZ2h0ID0gaGVpZ2h0LnVuc2FmZUdl
dCgpOwotICAgICAgICAgICAgc3JjLnJvd0J5dGVzID0gc3JjQnl0ZXNQZXJSb3c7Ci0gICAgICAg
ICAgICBzcmMuZGF0YSA9IGNvbnN0X2Nhc3Q8dWludDhfdCo+KHNyY1Jvd3MpOwotCi0gICAgICAg
ICAgICB2SW1hZ2VfQnVmZmVyIGRlc3Q7Ci0gICAgICAgICAgICBkZXN0LndpZHRoID0gZGVzdHcu
dW5zYWZlR2V0KCk7Ci0gICAgICAgICAgICBkZXN0LmhlaWdodCA9IGRlc3RoLnVuc2FmZUdldCgp
OwotICAgICAgICAgICAgZGVzdC5yb3dCeXRlcyA9IGRlc3RCeXRlc1BlclJvdzsKLSAgICAgICAg
ICAgIGRlc3QuZGF0YSA9IGRlc3RSb3dzOwotCi0jaWYgVVNFX0FSR0IzMgotICAgICAgICAgICAg
cHJlbXVsdGlwbHlCdWZmZXJEYXRhKHNyYywgZGVzdCk7Ci0jZWxzZQotICAgICAgICAgICAgdklt
YWdlUHJlbXVsdGlwbHlEYXRhX1JHQkE4ODg4KCZzcmMsICZkZXN0LCBrdkltYWdlTm9GbGFncyk7
Ci0jZW5kaWYKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAg
ICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQudW5zYWZlR2V0KCk7ICsreSkgewotICAgICAg
ICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aC51bnNhZmVHZXQoKTsgeCsrKSB7Ci0gICAg
ICAgICAgICAgICAgaW50IGJhc2V4ID0geCAqIDQ7Ci0gICAgICAgICAgICAgICAgdWludDhfdCBh
bHBoYSA9IHNyY1Jvd3NbYmFzZXggKyAzXTsKLSNpZiBVU0VfQVJHQjMyCi0gICAgICAgICAgICAg
ICAgLy8gQnl0ZSBvcmRlciBpcyBkaWZmZXJlbnQgYXMgd2UgdXNlIGltYWdlIGJ1ZmZlcnMgb2Yg
QVJHQjMyCi0gICAgICAgICAgICAgICAgaWYgKHNvdXJjZUZvcm1hdCA9PSBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgJiYgYWxwaGEgIT0gMjU1KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9IChzcmNSb3dzW2Jhc2V4ICsgMl0gKiBhbHBoYSAr
IDI1NCkgLyAyNTU7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMV0gPSAo
c3JjUm93c1tiYXNleCArIDFdICogYWxwaGEgKyAyNTQpIC8gMjU1OwotICAgICAgICAgICAgICAg
ICAgICBkZXN0Um93c1tiYXNleCArIDJdID0gKHNyY1Jvd3NbYmFzZXggKyAwXSAqIGFscGhhICsg
MjU0KSAvIDI1NTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAzXSA9IGFs
cGhhOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RS
b3dzW2Jhc2V4XSA9IHNyY1Jvd3NbYmFzZXggKyAyXTsKLSAgICAgICAgICAgICAgICAgICAgZGVz
dFJvd3NbYmFzZXggKyAxXSA9IHNyY1Jvd3NbYmFzZXggKyAxXTsKLSAgICAgICAgICAgICAgICAg
ICAgZGVzdFJvd3NbYmFzZXggKyAyXSA9IHNyY1Jvd3NbYmFzZXhdOwotICAgICAgICAgICAgICAg
ICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gYWxwaGE7Ci0gICAgICAgICAgICAgICAgfQotI2Vs
c2UKLSAgICAgICAgICAgICAgICBpZiAoc291cmNlRm9ybWF0ID09IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZCAmJiBhbHBoYSAhPSAyNTUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgZGVzdFJvd3NbYmFzZXhdID0gKHNyY1Jvd3NbYmFzZXhdICogYWxwaGEgKyAyNTQpIC8g
MjU1OwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDFdID0gKHNyY1Jvd3Nb
YmFzZXggKyAxXSAqIGFscGhhICsgMjU0KSAvIDI1NTsKLSAgICAgICAgICAgICAgICAgICAgZGVz
dFJvd3NbYmFzZXggKyAyXSA9IChzcmNSb3dzW2Jhc2V4ICsgMl0gKiBhbHBoYSArIDI1NCkgLyAy
NTU7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBhbHBoYTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDx1aW50MzJfdCo+KGRlc3RSb3dzICsgYmFzZXgpWzBdID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50MzJfdCo+KHNyY1Jvd3MgKyBiYXNleClbMF07Ci0jZW5kaWYKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGRlc3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsKLSAgICAgICAgICAgIHNy
Y1Jvd3MgKz0gc3JjQnl0ZXNQZXJSb3c7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotI2lmIFVT
RShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCi0gICAgICAgIElPU3VyZmFjZTo6TG9j
a2VyIGxvY2soKnN1cmZhY2UsIElPU3VyZmFjZTo6TG9ja2VyOjpBY2Nlc3NNb2RlOjpSZWFkV3Jp
dGUpOwotICAgICAgICBkZXN0Qnl0ZXNQZXJSb3cgPSBzdXJmYWNlLT5ieXRlc1BlclJvdygpOwot
ICAgICAgICBkZXN0Um93cyA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihsb2NrLnN1cmZhY2VCYXNl
QWRkcmVzcygpKSArIChkZXN0eSAqIGRlc3RCeXRlc1BlclJvdyArIGRlc3R4ICogNCkudW5zYWZl
R2V0KCk7Ci0KLSNpZiBVU0UoQUNDRUxFUkFURSkKLSAgICAgICAgdkltYWdlX0J1ZmZlciBzcmM7
Ci0gICAgICAgIHNyYy53aWR0aCA9IHdpZHRoLnVuc2FmZUdldCgpOwotICAgICAgICBzcmMuaGVp
Z2h0ID0gaGVpZ2h0LnVuc2FmZUdldCgpOwotICAgICAgICBzcmMucm93Qnl0ZXMgPSBzcmNCeXRl
c1BlclJvdzsKLSAgICAgICAgc3JjLmRhdGEgPSBjb25zdF9jYXN0PHVpbnQ4X3QqPihzcmNSb3dz
KTsKLQotICAgICAgICB2SW1hZ2VfQnVmZmVyIGRlc3Q7Ci0gICAgICAgIGRlc3Qud2lkdGggPSBk
ZXN0dy51bnNhZmVHZXQoKTsKLSAgICAgICAgZGVzdC5oZWlnaHQgPSBkZXN0aC51bnNhZmVHZXQo
KTsKLSAgICAgICAgZGVzdC5yb3dCeXRlcyA9IGRlc3RCeXRlc1BlclJvdzsKLSAgICAgICAgZGVz
dC5kYXRhID0gZGVzdFJvd3M7Ci0KLSAgICAgICAgaWYgKHNvdXJjZUZvcm1hdCA9PSBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQpCi0gICAgICAgICAgICBwcmVtdWx0aXBs
eUJ1ZmZlckRhdGEoc3JjLCBkZXN0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyBT
d2FwIHBpeGVsIGNoYW5uZWxzIGZyb20gUkdCQSB0byBCR1JBLgotICAgICAgICAgICAgY29uc3Qg
dWludDhfdCBtYXBbNF0gPSB7IDIsIDEsIDAsIDMgfTsKLSAgICAgICAgICAgIHZJbWFnZVBlcm11
dGVDaGFubmVsc19BUkdCODg4OCgmc3JjLCAmZGVzdCwgbWFwLCBrdkltYWdlTm9GbGFncyk7Ci0g
ICAgICAgIH0KLSNlbHNlCi0gICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0LnVuc2Fm
ZUdldCgpOyArK3kpIHsKLSAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGgudW5z
YWZlR2V0KCk7IHgrKykgewotICAgICAgICAgICAgICAgIGludCBiYXNleCA9IHggKiA0OwotICAg
ICAgICAgICAgICAgIHVpbnQ4X3QgYiA9IHNyY1Jvd3NbYmFzZXhdOwotICAgICAgICAgICAgICAg
IHVpbnQ4X3QgYWxwaGEgPSBzcmNSb3dzW2Jhc2V4ICsgM107Ci0gICAgICAgICAgICAgICAgaWYg
KHNvdXJjZUZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQg
JiYgYWxwaGEgIT0gMjU1KSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9
IChzcmNSb3dzW2Jhc2V4ICsgMl0gKiBhbHBoYSArIDI1NCkgLyAyNTU7Ci0gICAgICAgICAgICAg
ICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMV0gPSAoc3JjUm93c1tiYXNleCArIDFdICogYWxwaGEg
KyAyNTQpIC8gMjU1OwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDJdID0g
KGIgKiBhbHBoYSArIDI1NCkgLyAyNTU7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jh
c2V4ICsgM10gPSBhbHBoYTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICBkZXN0Um93c1tiYXNleF0gPSBzcmNSb3dzW2Jhc2V4ICsgMl07Ci0gICAgICAgICAg
ICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMV0gPSBzcmNSb3dzW2Jhc2V4ICsgMV07Ci0gICAg
ICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSBiOwotICAgICAgICAgICAgICAg
ICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gYWxwaGE7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZGVzdFJvd3MgKz0gZGVzdEJ5dGVzUGVyUm93OwotICAg
ICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsKLSAgICAgICAgfQotI2VuZGlmIC8v
IFVTRShBQ0NFTEVSQVRFKQotI2Vsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0j
ZW5kaWYgLy8gVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKLSAgICB9Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2UyMzc0YmFkMjRmMDc4N2ZlZjA1NDNjMWI1MWI5MTIwZjEy
MzBkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJBbHBoYVByZW11bHRpcGxp
Y2F0aW9uLmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9V
aW50OENsYW1wZWRBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgotCi10eXBlZGVmIHN0cnVjdCBDR0NvbG9yU3BhY2UgKkNHQ29s
b3JTcGFjZVJlZjsKLXR5cGVkZWYgc3RydWN0IENHRGF0YVByb3ZpZGVyICpDR0RhdGFQcm92aWRl
clJlZjsKLXR5cGVkZWYgdWludDMyX3QgQ0dCaXRtYXBJbmZvOwotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIElPU3VyZmFjZTsKLQotc3RydWN0IEltYWdlQnVmZmVyRGF0YSB7Ci0gICAg
SW50U2l6ZSBiYWNraW5nU3RvcmVTaXplOwotICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92
ZXJmbG93PiBieXRlc1BlclJvdzsKLSAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZTsKLQot
ICAgIC8vIE9ubHkgZm9yIHNvZnR3YXJlIEltYWdlQnVmZmVycy4KLSAgICB2b2lkKiBkYXRhIHsg
bnVsbHB0ciB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVy
OwotICAgIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFw
aGljc0NvbnRleHQ+IGNvbnRleHQ7Ci0KLSNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5H
X1NUT1JFKQotICAgIC8vIE9ubHkgZm9yIGFjY2VsZXJhdGVkIEltYWdlQnVmZmVycy4KLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBzdXJmYWNlOwotI2VuZGlmCi0KLSAgICBWZWN0b3I8
dWludDhfdD4gdG9CR1JBRGF0YShib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGludCB3aWR0aCwg
aW50IGhlaWdodCkgY29uc3Q7Ci0gICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXREYXRh
KEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiwg
Ym9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nKSBjb25zdDsKLSAgICB2b2lkIHB1dERhdGEoY29uc3Qg
VWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBzb3VyY2VG
b3JtYXQsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIGNvbnN0IEludFNpemUmLCBib29sIGFjY2Vs
ZXJhdGVSZW5kZXJpbmcpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ3Y2Y1Y2RlNjM5Mzk3ZTdi
MDE1NDdmZmRkYzhiNjhiZDY2MDQ4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKQEAg
LTAsMCArMSwxODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZC5oIgorCisjaWYgSEFWRShJT1NVUkZBQ0UpCisKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHRDRy5oIgorI2luY2x1ZGUgIklPU3VyZmFjZS5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5o
IgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBo
aWNzLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQpOworCitJ
bnRTaXplIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNpemUo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpCit7CisgICAgSW50
U2l6ZSBiYWNrZW5kU2l6ZSA9IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjYWxjdWxhdGVCYWNrZW5k
U2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpOworICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBJbnRTaXplIG1heFNpemUgPSBJT1N1cmZh
Y2U6Om1heGltdW1TaXplKCk7CisgICAgaWYgKGJhY2tlbmRTaXplLndpZHRoKCkgPiBtYXhTaXpl
LndpZHRoKCkgfHwgYmFja2VuZFNpemUuaGVpZ2h0KCkgPiBtYXhTaXplLmhlaWdodCgpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIGJhY2tlbmRTaXplOworfQorCitSZXRhaW5Q
dHI8Q0dDb2xvclNwYWNlUmVmPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvbnRleHRD
b2xvclNwYWNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDR0NvbnRl
eHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKKworICAgIGlmIChD
R0NvbnRleHRHZXRUeXBlKGNnQ29udGV4dCkgPT0ga0NHQ29udGV4dFR5cGVJT1N1cmZhY2UpCisg
ICAgICAgIHJldHVybiBDR0lPU3VyZmFjZUNvbnRleHRHZXRDb2xvclNwYWNlKGNnQ29udGV4dCk7
CisgICAgCisgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb250ZXh0Q29sb3JTcGFj
ZShjb250ZXh0KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ0dD
b2xvclNwYWNlUmVmIGNnQ29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykK
K3sKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwg
cmVzb2x1dGlvblNjYWxlKTsKKyAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRl
KGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgY2dDb2xvclNwYWNlKTsKKyAgICBpZiAoIXN1cmZh
Y2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmV0YWluUHRyPENHQ29udGV4dFJl
Zj4gY2dDb250ZXh0ID0gc3VyZmFjZS0+ZW5zdXJlUGxhdGZvcm1Db250ZXh0KGhvc3RXaW5kb3cp
OworICAgIGlmICghY2dDb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENH
Q29udGV4dENsZWFyUmVjdChjZ0NvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6
ZXJvKCksIGJhY2tlbmRTaXplKSk7CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZD4obmV3IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChz
aXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKHN1
cmZhY2UpKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQoreworICAgIGlmIChhdXRvIGNn
Q29sb3JTcGFjZSA9IGNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpKQorICAgICAgICByZXR1cm4g
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6
U1JHQiwgY2dDb2xvclNwYWNlLmdldCgpLCBudWxscHRyKTsKKyAgICAKKyAgICByZXR1cm4gSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JH
QiwgbnVsbHB0cik7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNv
bnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCit7CisgICAgcmV0dXJuIEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
Y2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpLCBob3N0V2luZG93KTsKK30KKworCitJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25z
dCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIHN0ZDo6dW5pcXVlX3B0
cjxJT1N1cmZhY2U+JiYgc3VyZmFjZSkKKyAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKGxvZ2lj
YWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKQorICAgICwg
bV9zdXJmYWNlKFdURk1vdmUoc3VyZmFjZSkpCit7CisgICAgQVNTRVJUKG1fc3VyZmFjZSk7Cisg
ICAgc2V0dXBDb250ZXh0KCk7Cit9CisKK0dyYXBoaWNzQ29udGV4dCYgSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdXJmYWNlLT5l
bnN1cmVHcmFwaGljc0NvbnRleHQoKTsKK30KKwordm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OmZsdXNoQ29udGV4dCgpCit7CisgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLnBs
YXRmb3JtQ29udGV4dCgpKTsKK30KKworc2l6ZV90IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6bWVtb3J5Q29zdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3VyZmFjZS0+dG90YWxCeXRl
cygpOworfQorCitzaXplX3QgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpleHRlcm5hbE1l
bW9yeUNvc3QoKSBjb25zdAoreworICAgIHJldHVybiBtZW1vcnlDb3N0KCk7Cit9CisKK3Vuc2ln
bmVkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3coKSBjb25zdAorewor
ICAgIHJldHVybiBtX3N1cmZhY2UtPmJ5dGVzUGVyUm93KCk7Cit9CisKK0NvbG9yRm9ybWF0IElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6YmFja2VuZENvbG9yRm9ybWF0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gQ29sb3JGb3JtYXQ6OkJHUkE7Cit9CisKK05hdGl2ZUltYWdlUHRyIEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKTsKK30KKworTmF0
aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUlt
YWdlKCkKK3sKKyAgICByZXR1cm4gSU9TdXJmYWNlOjpzaW5rSW50b0ltYWdlKFdURk1vdmUobV9z
dXJmYWNlKSk7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29u
c3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCit7CisgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7
CisgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKworICAgIGlm
IChhdXRvIGltYWdlID0gc2lua0ludG9OYXRpdmVJbWFnZSgpKQorICAgICAgICBkZXN0Q29udGV4
dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBh
ZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOworfQorCitWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kOjp0b0JHUkFEYXRhKCkgY29uc3QKK3sKKyAgICBJT1N1cmZhY2U6
OkxvY2tlciBsb2NrKCptX3N1cmZhY2UpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmQ6
OnRvQkdSQURhdGEobG9jay5zdXJmYWNlQmFzZUFkZHJlc3MoKSk7Cit9CisKK1JlZlB0cjxJbWFn
ZURhdGE+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJl
bXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25z
dAoreworICAgIElPU3VyZmFjZTo6TG9ja2VyIGxvY2soKm1fc3VyZmFjZSk7CisgICAgcmV0dXJu
IEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwg
bG9jay5zdXJmYWNlQmFzZUFkZHJlc3MoKSk7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kOjpwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1h
dCwgY29uc3QgSW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEludFBvaW50JiBkZXN0UG9pbnQpCit7CisgICAgSU9TdXJmYWNlOjpMb2NrZXIgbG9jaygq
bV9zdXJmYWNlLCBJT1N1cmZhY2U6OkxvY2tlcjo6QWNjZXNzTW9kZTo6UmVhZFdyaXRlKTsKKyAg
ICBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dEltYWdlRGF0YShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRh
LCBzcmNSZWN0LCBkZXN0UG9pbnQsIGxvY2suc3VyZmFjZUJhc2VBZGRyZXNzKCkpOworCisgICAg
Ly8gRm9yY2UgcmVjcmVhdGluZyB0aGUgSU9TdXJmYWNlIGNhY2hlZCBpbWFnZS4KKyAgICAvLyBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzk2NiBmb3IgZXhw
bGFpbmluZyB3aHkgdGhpcyBpcyBuZWNlc3NhcnkuCisgICAgY29udGV4dCgpLmZpbGxSZWN0KEZs
b2F0UmVjdCgxLCAxLCAwLCAwKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEhBVkUoSU9TVVJGQUNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kZmMwZjA0M2YwNTVhNzdkY2VmNjYzZWU0ZmM3YmY2NWI5NmY2ODVmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEhBVkUo
SU9TVVJGQUNFKQorCisjaW5jbHVkZSAiSU9TdXJmYWNlLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ0dCYWNrZW5kIHsKKyAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCk7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
SW50U2l6ZSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpOworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIENHQ29sb3JTcGFjZVJlZiwgY29uc3QgSG9z
dFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgb3ZlcnJpZGU7CisK
KyAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHNpemVfdCBleHRl
cm5hbE1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKKworICAgIE5hdGl2ZUltYWdlUHRyIGNv
cHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJy
aWRlOworCisgICAgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFE
YXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURh
dGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0
aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KSBvdmVycmlkZTsKKworcHJvdGVjdGVkOgorICAg
IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBjb25zdCBJbnRTaXplJiBwaHlzaWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSwgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJik7CisKKyAgICBzdGF0aWMgUmV0
YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29udGV4dENvbG9yU3BhY2UoY29uc3QgR3JhcGhpY3ND
b250ZXh0Jik7CisgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBDb2xvckZvcm1hdCBiYWNrZW5kQ29sb3JGb3JtYXQoKSBjb25zdCBvdmVycmlkZTsKKworICAg
IHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IG1fc3VyZmFjZTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEhBVkUoSU9TVVJGQUNFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApp
bmRleCAyODIxZWY4MWQ3NWRmYjBmZjA1YTg1YmU1YzlmYmMyNThiNTYyZWIzLi4yYWE4MjMzMmRl
MmQxMTFiZGNlMWUwODA2MzU5MGRjZTIxYjZjM2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMjU0
LDggKzI1NCw4IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5l
ZWRlZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAgICAgbV9jYWNoZWRTb3VyY2VS
ZWN0ID0gc3JjUmVjdDsKICAgICArK21fY2FjaGluZ0NvdW50Rm9yVGVzdGluZzsKIAotICAgIElu
dFNpemUgaW50ZXJuYWxTaXplID0gbV9jYWNoZWRJbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCk7
Ci0gICAgZGVjb2RlZFNpemVDaGFuZ2VkKGludGVybmFsU2l6ZS51bmNsYW1wZWRBcmVhKCkgKiA0
KTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gbV9jYWNoZWRJbWFnZUJ1ZmZlci0+YmFja2Vu
ZFNpemUoKTsKKyAgICBkZWNvZGVkU2l6ZUNoYW5nZWQoYmFja2VuZFNpemUudW5jbGFtcGVkQXJl
YSgpICogNCk7CiB9CiAKIEltYWdlRHJhd1Jlc3VsdCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJm
YWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNl
Lm1tCmluZGV4IGMyMTI1YzNlZjE2MGMwODEwMTA5ODIzYjRiOTAzNmRkZjZmYmNmNjcuLjM5MWZj
MjNjZDBhOGY4NjlhY2MxMDczMmQxNGZkZjQ1MGZjMjg1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KQEAgLTMzLDcgKzMz
LDYgQEAKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKICNpbXBvcnQgIklPU3VyZmFjZVBvb2wuaCIK
ICNpbXBvcnQgIkltYWdlQnVmZmVyLmgiCi0jaW1wb3J0ICJJbWFnZUJ1ZmZlckRhdGFDRy5oIgog
I2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbXBvcnQg
PHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CkBAIC0xMTAsMTMgKzEwOSw2IEBAIHZvaWQg
SU9TdXJmYWNlOjptb3ZlVG9Qb29sKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYgc3VyZmFj
ZSkKICAgICBJT1N1cmZhY2VQb29sOjpzaGFyZWRQb29sKCkuYWRkU3VyZmFjZShXVEZNb3ZlKHN1
cmZhY2UpKTsKIH0KIAotI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCi1z
dGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21JbWFnZUJ1ZmZl
cihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQotewotICAgIHJldHVy
biBXVEZNb3ZlKGltYWdlQnVmZmVyLT5tX2RhdGEuc3VyZmFjZSk7Ci19Ci0jZW5kaWYKLQogc3Rh
dGljIE5TRGljdGlvbmFyeSAqb3B0aW9uc0ZvckJpcGxhbmFyU3VyZmFjZShJbnRTaXplIHNpemUs
IHVuc2lnbmVkIHBpeGVsRm9ybWF0LCBzaXplX3QgZmlyc3RQbGFuZUJ5dGVzUGVyUGl4ZWwsIHNp
emVfdCBzZWNvbmRQbGFuZUJ5dGVzUGVyUGl4ZWwpCiB7CiAgICAgaW50IHdpZHRoID0gc2l6ZS53
aWR0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1
L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaAppbmRleCBmZDhlNWU4ZTJlOTRlNzA1
NDg5NmY5YWJiYmE3YTQ2ZjUwMjE0MWM5Li5jOTZlMzNjYTVmNjEzMWU1MmUxZTlkNDVkN2MwMjE2
M2RlNGFjYzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
cHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaApAQCAtMTExLDcgKzExMSw4
IEBAIHZvaWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBGaWx0ZXJFZmZl
Y3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAgICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVm
ZmVjdCgxKTsKIAotICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQaXhlbEFycmF5ID0gY3JlYXRl
UHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CisgICAgYXV0byogaW1hZ2VSZXN1bHQgPSBjcmVh
dGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAgICBhdXRvKiBkc3RQaXhlbEFycmF5ID0g
aW1hZ2VSZXN1bHQgPyBpbWFnZVJlc3VsdC0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWRz
dFBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdpbmdDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI5MmIxY2U0OGZjNDRjMTgxNWNl
Nzc0Y2UxYjk1YzczNjU1MmViZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgK
QEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5j
bHVkZSAiRGlzcGxheUxpc3QuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVyLmgiCisj
aW5jbHVkZSAiRGlzcGxheUxpc3RSZXBsYXllci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworCitj
bGFzcyBEcmF3aW5nQ29udGV4dCB7CitwdWJsaWM6CisgICAgRHJhd2luZ0NvbnRleHQoY29uc3Qg
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSkKKyAgICAgICAgOiBtX2NvbnRleHQoWyZdKEdyYXBoaWNz
Q29udGV4dCYgZGlzcGxheUxpc3RDb250ZXh0KSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBtX2Rpc3BsYXlMaXN0LCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBsb2dpY2FsU2l6ZSksIEFmZmluZVRyYW5z
Zm9ybSgpKTsKKyAgICAgICAgfSkKKyAgICB7CisgICAgfQorCisgICAgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxEcmF3aW5nQ29udGV4dCY+KCp0
aGlzKS5tX2NvbnRleHQ7ICB9CisgICAgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KCkgeyByZXR1
cm4gbV9kaXNwbGF5TGlzdDsgfQorICAgIGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUxpc3Q7IH0KKyAgICBjb25zdCBEaXNwbGF5TGlzdCog
cmVwbGF5RGlzcGxheUxpc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcGxheURpc3BsYXlMaXN0Lmdl
dCgpOyB9CisKKyAgICB2b2lkIHNldFRyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KGJvb2wgdHJhY2tz
RGlzcGxheUxpc3RSZXBsYXkpCisgICAgeworICAgICAgICBtX3RyYWNrc0Rpc3BsYXlMaXN0UmVw
bGF5ID0gdHJhY2tzRGlzcGxheUxpc3RSZXBsYXk7CisgICAgICAgIG1fcmVwbGF5RGlzcGxheUxp
c3QucmVzZXQoKTsKKyAgICB9CisKKyAgICB2b2lkIHJlcGxheURpc3BsYXlMaXN0KEdyYXBoaWNz
Q29udGV4dCYgZGVzdENvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIW1fZGlzcGxheUxpc3Qu
aXRlbUNvdW50KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUmVwbGF5ZXIgcmVw
bGF5ZXIoZGVzdENvbnRleHQsIG1fZGlzcGxheUxpc3QpOworICAgICAgICBpZiAobV90cmFja3NE
aXNwbGF5TGlzdFJlcGxheSkKKyAgICAgICAgICAgIG1fcmVwbGF5RGlzcGxheUxpc3QgPSByZXBs
YXllci5yZXBsYXkoeyB9LCBtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmVwbGF5ZXIucmVwbGF5KCk7CisgICAgICAgIG1fZGlzcGxheUxpc3Qu
Y2xlYXIoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0IG1fY29udGV4
dDsKKyAgICBEaXNwbGF5TGlzdCBtX2Rpc3BsYXlMaXN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxE
aXNwbGF5TGlzdD4gbV9yZXBsYXlEaXNwbGF5TGlzdDsKKyAgICBib29sIG1fdHJhY2tzRGlzcGxh
eUxpc3RSZXBsYXkgeyBmYWxzZSB9OworfTsKKworfSAvLyBEaXNwbGF5TGlzdAorfSAvLyBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4LmNwcAppbmRleCBlNjE0MWJkZTMyMDRjMTc3YWI2OWY1MWM1ZDAz
NDI1YTQ3ZmM1OTc1Li45NTE4MDBlZGE5MTc0MTFjODhiOWE0YmU1NTE0Y2YxZjY4Yzc4Nzk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29s
b3JNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb2xvck1hdHJpeC5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkZpbHRl
ci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAK
QEAgLTI4NiwxMyArMjg2LDE1IEBAIHZvaWQgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKICAgICAgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIo
KmluQnVmZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVj
dCgpKSk7CiAKICAgICBJbnRSZWN0IGltYWdlUmVjdChJbnRQb2ludCgpLCByZXN1bHRJbWFnZS0+
bG9naWNhbFNpemUoKSk7Ci0gICAgSW50U2l6ZSBwaXhlbEFycmF5RGltZW5zaW9uczsKLSAgICBh
dXRvIHBpeGVsQXJyYXkgPSByZXN1bHRJbWFnZS0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGlt
YWdlUmVjdCwgJnBpeGVsQXJyYXlEaW1lbnNpb25zKTsKLSAgICBpZiAoIXBpeGVsQXJyYXkpCisg
ICAgYXV0byBpbWFnZURhdGEgPSByZXN1bHRJbWFnZS0+Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgaW1hZ2VSZWN0KTsKKyAgICBpZiAoIWltYWdl
RGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPGZsb2F0PiB2YWx1ZXMgPSBub3Jt
YWxpemVkRmxvYXRzKG1fdmFsdWVzKTsKKyAgICBhdXRvKiBwaXhlbEFycmF5ID0gaW1hZ2VEYXRh
LT5kYXRhKCk7CisgICAgSW50U2l6ZSBwaXhlbEFycmF5RGltZW5zaW9ucyA9IGltYWdlRGF0YS0+
c2l6ZSgpOwogCisgICAgVmVjdG9yPGZsb2F0PiB2YWx1ZXMgPSBub3JtYWxpemVkRmxvYXRzKG1f
dmFsdWVzKTsKKyAgICAKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgRkVDT0xPUk1B
VFJJWF9UWVBFX1VOS05PV046CiAgICAgICAgIGJyZWFrOwpAQCAtMzExLDcgKzMxMyw3IEBAIHZv
aWQgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCi0gICAgcmVzdWx0SW1hZ2UtPnB1dEJ5dGVBcnJheSgqcGl4ZWxBcnJheSwgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBpbWFnZVJlY3Quc2l6ZSgpLCBp
bWFnZVJlY3QsIEludFBvaW50KCkpOworICAgIHJlc3VsdEltYWdlLT5wdXRJbWFnZURhdGEoQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCAqaW1hZ2VEYXRhLCBpbWFnZVJl
Y3QpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgQ29sb3JNYXRyaXhUeXBlJiB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5j
cHAKaW5kZXggZmEwNDEzYzAwZGE0M2FjNWRmNTVlNWUwMWY2OTQ0YWI5ZWRhNzQ4My4uOTc4YzU1
YTY3YjhkZTcyMGU5ZmE3OWJkOGNjMzRkNzQ1MjhhMDI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50
VHJhbnNmZXIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50
OENsYW1wZWRBcnJheS5oPgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTEwOCw3ICsxMDgsOCBAQCB2b2lkIEZFQ29tcG9uZW50
VHJhbnNmZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBp
biA9IGlucHV0RWZmZWN0KDApOwogCi0gICAgVWludDhDbGFtcGVkQXJyYXkqIHBpeGVsQXJyYXkg
PSBjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOworICAgIGF1dG8qIGltYWdlUmVzdWx0
ID0gY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAgICBhdXRvKiBwaXhlbEFycmF5
ID0gaW1hZ2VSZXN1bHQgPyBpbWFnZVJlc3VsdC0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICBpZiAo
IXBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAppbmRleCBhMTll
YTA1Mzc1ODE5Y2VjZGFjMjVkNWQ5NjNkNTQ0ZGQ0ZDFhOTY5Li4yNjU0NDBmNDM5NDJhZmE2YWEy
OThkYWY0ZWMwMmVlM2Q5NWNlYzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApAQCAtMjcsNyArMjcsNyBA
QAogI2luY2x1ZGUgIkZFQ29tcG9zaXRlQXJpdGhtZXRpY05FT04uaCIKICNpbmNsdWRlICJGaWx0
ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjI5
LDcgKzIyOSw4IEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAg
ICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsKIAogICAgIGlmIChtX3R5cGUg
PT0gRkVDT01QT1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJQykgewotICAgICAgICBVaW50OENsYW1w
ZWRBcnJheSogZHN0UGl4ZWxBcnJheSA9IGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgp
OworICAgICAgICBhdXRvKiByZXN1bHRJbWFnZSA9IGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJl
c3VsdCgpOworICAgICAgICBhdXRvKiBkc3RQaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UgPyByZXN1
bHRJbWFnZS0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICAgICAgaWYgKCFkc3RQaXhlbEFycmF5KQog
ICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcAppbmRleCA2MmMy
ZjgzMzY1MzU4Njg0NGQ5ZjM5MGVlYTVlZGMxMDhlMzBhMzg4Li5hNmUzZjRiYmFhMjQ0OTdmOTI2
MzQ2NTY5NzVmZmI4N2RjN2FiOWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKQEAgLTI1
LDcgKzI1LDcgQEAKICNpbmNsdWRlICJGRUNvbnZvbHZlTWF0cml4LmgiCiAKICNpbmNsdWRlICJG
aWx0ZXIuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgor
I2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9QYXJhbGxlbEpvYnMuaD4KICNp
bmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5o
PgpAQCAtMzcxLDEyICszNzEsMTMgQEAgdm9pZCBGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsK
IAotICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiByZXN1bHRJbWFnZTsKKyAgICBJbWFnZURhdGEqIHJl
c3VsdEltYWdlOwogICAgIGlmIChtX3ByZXNlcnZlQWxwaGEpCiAgICAgICAgIHJlc3VsdEltYWdl
ID0gY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAgICBlbHNlCiAgICAgICAgIHJl
c3VsdEltYWdlID0gY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7Ci0gICAgaWYgKCFy
ZXN1bHRJbWFnZSkKKyAgICBhdXRvKiBkc3RQaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UgPyByZXN1
bHRJbWFnZS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICBpZiAoIWRzdFBpeGVsQXJyYXkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEludFJlY3QgZWZmZWN0RHJhd2luZ1JlY3QgPSByZXF1ZXN0ZWRS
ZWdpb25PZklucHV0SW1hZ2VEYXRhKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKQEAgLTM5NSw3
ICszOTYsNyBAQCB2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
CiAKICAgICBQYWludGluZ0RhdGEgcGFpbnRpbmdEYXRhID0gewogICAgICAgICAqc3JjUGl4ZWxB
cnJheSwKLSAgICAgICAgKnJlc3VsdEltYWdlLAorICAgICAgICAqZHN0UGl4ZWxBcnJheSwKICAg
ICAgICAgcGFpbnRTaXplLndpZHRoKCksCiAgICAgICAgIHBhaW50U2l6ZS5oZWlnaHQoKSwKICAg
ICAgICAgbV9iaWFzICogMjU1LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAppbmRleCAwZTk0
NGRmMDBhOTVjYzA2ZDI2YWE0MmYxNjllZTZhNDZmNWEyNzgyLi41MzczNTUwNDUzZTQ5ODYyYzBl
NDE2ZjJkY2MyNTZiNDcwYzkxOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcApAQCAt
MjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkNvbG9yVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRmls
dGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvVWludDhDbGFtcGVkQXJyYXkuaD4KKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk0
LDcgKzk0LDggQEAgdm9pZCBGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkKICAgICBBU1NFUlQobV94Q2hhbm5lbFNlbGVjdG9yICE9IENIQU5ORUxfVU5LTk9XTik7CiAg
ICAgQVNTRVJUKG1feUNoYW5uZWxTZWxlY3RvciAhPSBDSEFOTkVMX1VOS05PV04pOwogCi0gICAg
VWludDhDbGFtcGVkQXJyYXkqIGRzdFBpeGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1h
Z2VSZXN1bHQoKTsKKyAgICBhdXRvKiByZXN1bHRJbWFnZSA9IGNyZWF0ZVByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdCgpOworICAgIGF1dG8qIGRzdFBpeGVsQXJyYXkgPSByZXN1bHRJbWFnZSA/IHJl
c3VsdEltYWdlLT5kYXRhKCkgOiBudWxscHRyOwogICAgIGlmICghZHN0UGl4ZWxBcnJheSkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKaW5kZXggMjM2NjZhMWFlZjUzNTMyMTQ5
M2M5ZWEyZDU2MThlOGZkZGQ4NGVjYi4uMTM5NWEyZGI4NTAzMmM5ZTJhZTg2NGM2Mzk2NjY4YjM3
NDFjYzMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURyb3BTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcApAQCAtMjMsOCArMjMsOCBAQAogI2luY2x1ZGUg
IkZFR2F1c3NpYW5CbHVyLmgiCiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiU2hhZG93Qmx1
ci5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+
CiAKQEAgLTk5LDE0ICs5OSwxNSBAQCB2b2lkIEZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coYmx1clJhZGl1cywgb2Zmc2V0
LCBtX3NoYWRvd0NvbG9yKTsKIAogICAgIC8vIFRPRE86IERpcmVjdCBwaXhlbCBhY2Nlc3MgdG8g
SW1hZ2VCdWZmZXIgd291bGQgYXZvaWQgY29weWluZyB0aGUgSW1hZ2VEYXRhLgotICAgIEludFJl
Y3Qgc2hhZG93QXJlYShJbnRQb2ludCgpLCByZXN1bHRJbWFnZS0+aW50ZXJuYWxTaXplKCkpOwot
ICAgIGF1dG8gc3JjUGl4ZWxBcnJheSA9IHJlc3VsdEltYWdlLT5nZXRQcmVtdWx0aXBsaWVkSW1h
Z2VEYXRhKHNoYWRvd0FyZWEsIG51bGxwdHIsIEltYWdlQnVmZmVyOjpCYWNraW5nU3RvcmVDb29y
ZGluYXRlU3lzdGVtKTsKLSAgICBpZiAoIXNyY1BpeGVsQXJyYXkpCisgICAgSW50UmVjdCBzaGFk
b3dBcmVhKEludFBvaW50KCksIHJlc3VsdEltYWdlLT5sb2dpY2FsU2l6ZSgpKTsKKyAgICBhdXRv
IGltYWdlRGF0YSA9IHJlc3VsdEltYWdlLT5nZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6UHJlbXVsdGlwbGllZCwgc2hhZG93QXJlYSk7CisgICAgaWYgKCFpbWFnZURhdGEpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGNvbnRleHRTaGFkb3cuYmx1ckxheWVySW1hZ2Uoc3JjUGl4
ZWxBcnJheS0+ZGF0YSgpLCBzaGFkb3dBcmVhLnNpemUoKSwgNCAqIHNoYWRvd0FyZWEuc2l6ZSgp
LndpZHRoKCkpOwotCi0gICAgcmVzdWx0SW1hZ2UtPnB1dEJ5dGVBcnJheSgqc3JjUGl4ZWxBcnJh
eSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgc2hhZG93QXJlYS5zaXpl
KCksIHNoYWRvd0FyZWEsIEludFBvaW50KCksIEltYWdlQnVmZmVyOjpCYWNraW5nU3RvcmVDb29y
ZGluYXRlU3lzdGVtKTsKKyAgICBhdXRvKiBzcmNQaXhlbEFycmF5ID0gaW1hZ2VEYXRhLT5kYXRh
KCk7CisgICAgY29udGV4dFNoYWRvdy5ibHVyTGF5ZXJJbWFnZShzcmNQaXhlbEFycmF5LT5kYXRh
KCksIGltYWdlRGF0YS0+c2l6ZSgpLCA0ICogaW1hZ2VEYXRhLT5zaXplKCkud2lkdGgoKSk7Cisg
ICAgCisgICAgcmVzdWx0SW1hZ2UtPnB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpQcmVtdWx0aXBsaWVkLCAqaW1hZ2VEYXRhLCBzaGFkb3dBcmVhKTsKIAogICAgIHJlc3VsdENv
bnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VJbik7
CiAgICAgcmVzdWx0Q29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBhYnNv
bHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIG1fc2hhZG93Q29sb3IpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVy
LmNwcAppbmRleCA0OWJhODQxNzNjMmQxYTk5NTRlNTYxMzkwY2UwM2MyNGJjOTBjODFiLi5kN2Vk
OWIyNDQ5MDE3OGZmYmZiZWIxY2Q0MmJlYTVlOGZmMTU5ZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVy
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkZFR2F1c3NpYW5CbHVyTkVPTi5oIgog
I2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1
ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lm
IFVTRShBQ0NFTEVSQVRFKQpAQCAtNTIyLDE0ICs1MjMsMTUgQEAgdm9pZCBGRUdhdXNzaWFuQmx1
cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5w
dXRFZmZlY3QoMCk7CiAKLSAgICBVaW50OENsYW1wZWRBcnJheSogcmVzdWx0UGl4ZWxBcnJheSA9
IGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOwotICAgIGlmICghcmVzdWx0UGl4ZWxB
cnJheSkKKyAgICBhdXRvKiByZXN1bHRJbWFnZSA9IGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJl
c3VsdCgpOworICAgIGF1dG8qIGRzdFBpeGVsQXJyYXkgPSByZXN1bHRJbWFnZSA/IHJlc3VsdElt
YWdlLT5kYXRhKCkgOiBudWxscHRyOworICAgIGlmICghZHN0UGl4ZWxBcnJheSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgc2V0SXNBbHBoYUltYWdlKGluLT5pc0FscGhhSW1hZ2UoKSk7CiAKICAg
ICBJbnRSZWN0IGVmZmVjdERyYXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dEltYWdl
RGF0YShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7Ci0gICAgaW4tPmNvcHlQcmVtdWx0aXBsaWVk
UmVzdWx0KCpyZXN1bHRQaXhlbEFycmF5LCBlZmZlY3REcmF3aW5nUmVjdCk7CisgICAgaW4tPmNv
cHlQcmVtdWx0aXBsaWVkUmVzdWx0KCpkc3RQaXhlbEFycmF5LCBlZmZlY3REcmF3aW5nUmVjdCk7
CiAKICAgICBpZiAoIW1fc3RkWCAmJiAhbV9zdGRZKQogICAgICAgICByZXR1cm47CkBAIC01NDMs
NyArNTQ1LDcgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkK
ICAgICBpZiAoIXRtcEltYWdlRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGxhdGZvcm1B
cHBseSgqcmVzdWx0UGl4ZWxBcnJheSwgKnRtcEltYWdlRGF0YSwga2VybmVsU2l6ZS53aWR0aCgp
LCBrZXJuZWxTaXplLmhlaWdodCgpLCBwYWludFNpemUpOworICAgIHBsYXRmb3JtQXBwbHkoKmRz
dFBpeGVsQXJyYXksICp0bXBJbWFnZURhdGEsIGtlcm5lbFNpemUud2lkdGgoKSwga2VybmVsU2l6
ZS5oZWlnaHQoKSwgcGFpbnRTaXplKTsKIH0KIAogSW50T3V0c2V0cyBGRUdhdXNzaWFuQmx1cjo6
b3V0c2V0cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAppbmRleCAwYmE1MWI3NjEyZjJjYjJmNjlmNGY2
MDIxY2VmY2JlM2MyZTc0MmQzLi42ZGI4N2ZkNTQ1YThmMWRkYTdkOWI1ODhhMjU0MDY1NWE1Nzhm
YjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVMaWdodGluZy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNvbG9y
VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRkVMaWdodGluZ05FT04uaCIKKyNpbmNsdWRlICJJbWFn
ZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ3Myw3ICs0NzQsOCBAQCB2b2lkIEZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCi0g
ICAgVWludDhDbGFtcGVkQXJyYXkqIHJlc3V0UGl4ZWxBcnJheSA9IGNyZWF0ZVByZW11bHRpcGxp
ZWRJbWFnZVJlc3VsdCgpOworICAgIGF1dG8qIHJlc3VsdEltYWdlID0gY3JlYXRlUHJlbXVsdGlw
bGllZEltYWdlUmVzdWx0KCk7CisgICAgYXV0byogcmVzdXRQaXhlbEFycmF5ID0gcmVzdWx0SW1h
Z2UgPyByZXN1bHRJbWFnZS0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICBpZiAoIXJlc3V0UGl4ZWxB
cnJheSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKaW5kZXggMjUxNzgxY2E1
YWE1MWY3ODAyN2FkNTA4ZGY5YWM2MTBjNjc5NGZhNS4uY2JkNDI0MTk3NjU3MGE4NzM5NDUyMDBh
OTEzZTBlOWU2NTlhYjQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcApAQCAtMjcsNyArMjcsNyBAQAog
CiAjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJGaWx0ZXIuaCIKLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgorI2luY2x1ZGUgIkltYWdl
RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9QYXJhbGxlbEpvYnMuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgpAQCAtMjM0LDcgKzIzNCw4
IEBAIHZvaWQgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogewogICAgIEZp
bHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIAotICAgIFVpbnQ4Q2xhbXBlZEFycmF5
KiBkc3RQaXhlbEFycmF5ID0gY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CisgICAg
YXV0byogcmVzdWx0SW1hZ2UgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAg
ICBhdXRvKiBkc3RQaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UgPyByZXN1bHRJbWFnZS0+ZGF0YSgp
IDogbnVsbHB0cjsKICAgICBpZiAoIWRzdFBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1
cmJ1bGVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVR1cmJ1bGVuY2UuY3BwCmluZGV4IDZkNjBjZGRlYmIxMDJmNTJkYzNjMjFhZWNjMmE1MGRiNGJm
NzgzNGIuLmYxNmI5YjMxYTU1OWQ3NDYyMWZmMjMyNDRkYTkzMmRmNDMxNjhkNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVy
YnVsZW5jZS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJGRVR1cmJ1bGVuY2UuaCIK
IAogI2luY2x1ZGUgIkZpbHRlci5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4Q2xh
bXBlZEFycmF5Lmg+CisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dFN0cmVhbS5oPgpAQCAtMzk1LDcgKzM5NSw4IEBAIHZvaWQgRkVUdXJidWxlbmNlOjpm
aWxsUmVnaW9uV29ya2VyKEZpbGxSZWdpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKQogCiB2b2lk
IEZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIHsKLSAgICBVaW50OENsYW1w
ZWRBcnJheSogcGl4ZWxBcnJheSA9IGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCk7Cisg
ICAgYXV0byogcmVzdWx0SW1hZ2UgPSBjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOwor
ICAgIGF1dG8qIHBpeGVsQXJyYXkgPSByZXN1bHRJbWFnZSA/IHJlc3VsdEltYWdlLT5kYXRhKCkg
OiBudWxscHRyOwogICAgIGlmICghcGl4ZWxBcnJheSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5jcHAKaW5kZXggNmU5ODZkNGVjMmE5NzkyOTY2Mzg0ZmM1NTA3NGEyZjk3MmI1OTBm
YS4uYTllOGZjYTJjNWQxZGNiYjY2N2E1YjdjYzBkNGY3NzAyNDg0ZjM0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmNwcApAQCAtMjcsMTAgKzI3LDEwIEBACiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVk
ZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1
ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJh
eUlubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIEhBVkUoQVJNX05FT05f
SU5UUklOU0lDUykKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Zm9yY2VW
YWxpZFByZU11bHRpcGxpZWRQaXhlbHMoKQogICAgIGlmICghbV9wcmVtdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBpbWFnZUFy
cmF5ID0gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCk7CisgICAgVWludDhDbGFtcGVk
QXJyYXkqIGltYWdlQXJyYXkgPSBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgpOwog
ICAgIHVpbnQ4X3QqIHBpeGVsRGF0YSA9IGltYWdlQXJyYXktPmRhdGEoKTsKICAgICBpbnQgcGl4
ZWxBcnJheUxlbmd0aCA9IGltYWdlQXJyYXktPmxlbmd0aCgpOwogCkBAIC0yNjUsNyArMjY1LDcg
QEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNsZWFyUmVzdWx0c1JlY3Vyc2l2ZSgpCiAKIEltYWdlQnVm
ZmVyKiBGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KCkKIHsKLSAgICBMT0dfV0lUSF9T
VFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBmaWx0ZXJOYW1lKCkg
PDwgIiAiIDw8IHRoaXMgPDwgIiBpbWFnZUJ1ZmZlclJlc3VsdCgpLiBFeGlzdGluZyBpbWFnZSBi
dWZmZXIgIiA8PCBtX2ltYWdlQnVmZmVyUmVzdWx0LmdldCgpIDw8ICAiIG1fcHJlbXVsdGlwbGll
ZEltYWdlUmVzdWx0ICIgPDwgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCkgPDwgIiBt
X3VubXVsdGlwbGllZEltYWdlUmVzdWx0ICIgPDwgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC5n
ZXQoKSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVhbSA8PCAiRmlsdGVyRWZm
ZWN0ICIgPDwgZmlsdGVyTmFtZSgpIDw8ICIgIiA8PCB0aGlzIDw8ICIgaW1hZ2VCdWZmZXJSZXN1
bHQoKS4gRXhpc3RpbmcgaW1hZ2UgYnVmZmVyICIgPDwgbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQo
KSA8PCAgIiBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCAiIDw8IG1fcHJlbXVsdGlwbGllZElt
YWdlUmVzdWx0LT5kYXRhKCkgPDwgIiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0ICIgPDwgbV91
bm11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgpKTsKIAogICAgIGlmICghaGFzUmVzdWx0KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjc5LDkgKzI3OSw5IEBAIEltYWdlQnVmZmVy
KiBGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KCkKIAogICAgIEludFJlY3QgZGVzdGlu
YXRpb25SZWN0KEludFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICBp
ZiAobV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCi0gICAgICAgIG1faW1hZ2VCdWZmZXJSZXN1
bHQtPnB1dEJ5dGVBcnJheSgqbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQsIEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIGRlc3RpbmF0aW9uUmVjdC5zaXplKCksIGRlc3Rp
bmF0aW9uUmVjdCwgSW50UG9pbnQoKSk7CisgICAgICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQtPnB1
dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCAqbV9wcmVt
dWx0aXBsaWVkSW1hZ2VSZXN1bHQsIGRlc3RpbmF0aW9uUmVjdCk7CiAgICAgZWxzZQotICAgICAg
ICBtX2ltYWdlQnVmZmVyUmVzdWx0LT5wdXRCeXRlQXJyYXkoKm1fdW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQsIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgZGVzdGluYXRp
b25SZWN0LnNpemUoKSwgZGVzdGluYXRpb25SZWN0LCBJbnRQb2ludCgpKTsKKyAgICAgICAgbV9p
bWFnZUJ1ZmZlclJlc3VsdC0+cHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZCwgKm1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQsIGRlc3RpbmF0aW9uUmVj
dCk7CiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiB9CiAKQEAgLTQzOCw1
MiArNDM4LDUyIEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWx0KFVp
bnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzUmVz
dWx0KCkpOwogICAgIAotICAgIExPR19XSVRIX1NUUkVBTShGaWx0ZXJzLCBzdHJlYW0gPDwgIkZp
bHRlckVmZmVjdCAiIDw8IGZpbHRlck5hbWUoKSA8PCAiICIgPDwgdGhpcyA8PCAiIGNvcHlVbm11
bHRpcGxpZWRSZXN1bHQoKS4gRXhpc3RpbmcgaW1hZ2UgYnVmZmVyICIgPDwgbV9pbWFnZUJ1ZmZl
clJlc3VsdC5nZXQoKSA8PCAgIiBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCAiIDw8IG1fcHJl
bXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgpIDw8ICIgbV91bm11bHRpcGxpZWRJbWFnZVJlc3Vs
dCAiIDw8IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCkpOworICAgIExPR19XSVRIX1NU
UkVBTShGaWx0ZXJzLCBzdHJlYW0gPDwgIkZpbHRlckVmZmVjdCAiIDw8IGZpbHRlck5hbWUoKSA8
PCAiICIgPDwgdGhpcyA8PCAiIGNvcHlVbm11bHRpcGxpZWRSZXN1bHQoKS4gRXhpc3RpbmcgaW1h
Z2UgYnVmZmVyICIgPDwgbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQoKSA8PCAgIiBtX3ByZW11bHRp
cGxpZWRJbWFnZVJlc3VsdCAiIDw8IG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LT5kYXRhKCkg
PDwgIiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0ICIgPDwgbV91bm11bHRpcGxpZWRJbWFnZVJl
c3VsdC0+ZGF0YSgpKTsKIAogICAgIGlmICghbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCkgewog
ICAgICAgICAvLyBXZSBwcmVmZXIgYSBjb252ZXJzaW9uIGZyb20gdGhlIGltYWdlIGJ1ZmZlci4K
ICAgICAgICAgaWYgKG1faW1hZ2VCdWZmZXJSZXN1bHQpIHsKLSAgICAgICAgICAgIG1fdW5tdWx0
aXBsaWVkSW1hZ2VSZXN1bHQgPSBtX2ltYWdlQnVmZmVyUmVzdWx0LT5nZXRVbm11bHRpcGxpZWRJ
bWFnZURhdGEoSW50UmVjdChJbnRQb2ludCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSkp
OworICAgICAgICAgICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IG1faW1hZ2VCdWZmZXJS
ZXN1bHQtPmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQsIHsgSW50UG9pbnQoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkgfSk7CiAgICAgICAg
ICAgICBpZiAoIW1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgSW50U2l6ZSBpbnB1dFNpemUobV9h
YnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZl
cjo6c2l6ZU5lZWRzQ2xhbXBpbmcoaW5wdXRTaXplKSk7CiAgICAgICAgICAgICBpbnB1dFNpemUu
c2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgICAgICAgICBtX3VubXVsdGlwbGll
ZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
KGlucHV0U2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CisgICAgICAgICAgICBtX3VubXVs
dGlwbGllZEltYWdlUmVzdWx0ID0gSW1hZ2VEYXRhOjpjcmVhdGUoaW5wdXRTaXplKTsKICAgICAg
ICAgICAgIGlmICghbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNvcHlVbnByZW11bHRpcGx5aW5nQWxw
aGEoKm1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LCAqbV91bm11bHRpcGxpZWRJbWFnZVJlc3Vs
dCwgaW5wdXRTaXplKTsKKyAgICAgICAgICAgIGNvcHlVbnByZW11bHRpcGx5aW5nQWxwaGEoKm1f
cHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LT5kYXRhKCksICptX3VubXVsdGlwbGllZEltYWdlUmVz
dWx0LT5kYXRhKCksIGlucHV0U2l6ZSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgY29weUltYWdl
Qnl0ZXMoKm1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQsIGRlc3RpbmF0aW9uLCByZWN0KTsKKyAg
ICBjb3B5SW1hZ2VCeXRlcygqbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgpLCBkZXN0
aW5hdGlvbiwgcmVjdCk7CiB9CiAKIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGll
ZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7CiAgICAgQVNTRVJUKGhhc1Jlc3VsdCgpKTsKIAotICAgIExPR19XSVRIX1NUUkVBTShG
aWx0ZXJzLCBzdHJlYW0gPDwgIkZpbHRlckVmZmVjdCAiIDw8IGZpbHRlck5hbWUoKSA8PCAiICIg
PDwgdGhpcyA8PCAiIGNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KCkuIEV4aXN0aW5nIGltYWdlIGJ1
ZmZlciAiIDw8IG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCkgPDwgICIgbV9wcmVtdWx0aXBsaWVk
SW1hZ2VSZXN1bHQgIiA8PCBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKSA8PCAiIG1f
dW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgIiA8PCBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0Lmdl
dCgpKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJGaWx0ZXJFZmZl
Y3QgIiA8PCBmaWx0ZXJOYW1lKCkgPDwgIiAiIDw8IHRoaXMgPDwgIiBjb3B5UHJlbXVsdGlwbGll
ZFJlc3VsdCgpLiBFeGlzdGluZyBpbWFnZSBidWZmZXIgIiA8PCBtX2ltYWdlQnVmZmVyUmVzdWx0
LmdldCgpIDw8ICAiIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ICIgPDwgbV9wcmVtdWx0aXBs
aWVkSW1hZ2VSZXN1bHQtPmRhdGEoKSA8PCAiIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgIiA8
PCBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0LT5kYXRhKCkpOwogCiAgICAgaWYgKCFtX3ByZW11
bHRpcGxpZWRJbWFnZVJlc3VsdCkgewogICAgICAgICAvLyBXZSBwcmVmZXIgYSBjb252ZXJzaW9u
IGZyb20gdGhlIGltYWdlIGJ1ZmZlci4KICAgICAgICAgaWYgKG1faW1hZ2VCdWZmZXJSZXN1bHQp
IHsKLSAgICAgICAgICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gbV9pbWFnZUJ1ZmZl
clJlc3VsdC0+Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShJbnRSZWN0KEludFBvaW50KCksIG1f
YWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKSk7CisgICAgICAgICAgICBtX3ByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdCA9IG1faW1hZ2VCdWZmZXJSZXN1bHQtPmdldEltYWdlRGF0YShBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCB7IEludFBvaW50KCksIG1fYWJzb2x1dGVQYWlu
dFJlY3Quc2l6ZSgpIH0pOwogICAgICAgICAgICAgaWYgKCFtX3ByZW11bHRpcGxpZWRJbWFnZVJl
c3VsdCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBJbnRTaXplIGlucHV0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAg
ICAgICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhpbnB1dFNpemUp
KTsKICAgICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsK
LSAgICAgICAgICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJy
YXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoKGlucHV0U2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVH
ZXQoKSk7CisgICAgICAgICAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IEltYWdlRGF0
YTo6Y3JlYXRlKGlucHV0U2l6ZSk7CiAgICAgICAgICAgICBpZiAoIW1fcHJlbXVsdGlwbGllZElt
YWdlUmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAotICAgICAg
ICAgICAgY29weVByZW11bHRpcGx5aW5nQWxwaGEoKm1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQs
ICptX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCwgaW5wdXRTaXplKTsKKyAgICAgICAgICAgIGNv
cHlQcmVtdWx0aXBseWluZ0FscGhhKCptX3VubXVsdGlwbGllZEltYWdlUmVzdWx0LT5kYXRhKCks
ICptX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgpLCBpbnB1dFNpemUpOwogICAgICAg
ICB9CiAgICAgfQotICAgIGNvcHlJbWFnZUJ5dGVzKCptX3ByZW11bHRpcGxpZWRJbWFnZVJlc3Vs
dCwgZGVzdGluYXRpb24sIHJlY3QpOworICAgIGNvcHlJbWFnZUJ5dGVzKCptX3ByZW11bHRpcGxp
ZWRJbWFnZVJlc3VsdC0+ZGF0YSgpLCBkZXN0aW5hdGlvbiwgcmVjdCk7CiB9CiAKIEltYWdlQnVm
ZmVyKiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCkKQEAgLTQ5NywxMyAr
NDk3LDEwIEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZUltYWdlQnVmZmVyUmVz
dWx0KCkKIAogICAgIEZsb2F0U2l6ZSBjbGFtcGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjbGFtcGVk
U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAgbV9pbWFnZUJ1ZmZlclJlc3Vs
dCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1fZmlsdGVyLnJlbmRlcmluZ01v
ZGUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgbV9yZXN1bHRDb2xvclNwYWNlKTsKLSAgICBp
ZiAoIW1faW1hZ2VCdWZmZXJSZXN1bHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAg
cmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiB9CiAKLVVpbnQ4Q2xhbXBlZEFycmF5
KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCkKK0ltYWdlRGF0
YSogRmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiB7CiAgICAg
TE9HKEZpbHRlcnMsICJGaWx0ZXJFZmZlY3QgJXMgJXAgY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQiLCBmaWx0ZXJOYW1lKCksIHRoaXMpOwogCkBAIC01MTUsMTEgKzUxMiwxMSBAQCBVaW50
OENsYW1wZWRBcnJheSogRmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3Vs
dCgpCiAgICAgSW50U2l6ZSByZXN1bHRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsK
ICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhyZXN1bHRTaXplKSk7
CiAgICAgcmVzdWx0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBtX3Vu
bXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQoKHJlc3VsdFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOworICAgIG1fdW5t
dWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShyZXN1bHRTaXplKTsKICAg
ICByZXR1cm4gbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKTsKIH0KIAotVWludDhDbGFt
cGVkQXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCkK
K0ltYWdlRGF0YSogRmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQo
KQogewogICAgIExPRyhGaWx0ZXJzLCAiRmlsdGVyRWZmZWN0ICVzICVwIGNyZWF0ZVByZW11bHRp
cGxpZWRJbWFnZVJlc3VsdCIsIGZpbHRlck5hbWUoKSwgdGhpcyk7CiAKQEAgLTUzMSw3ICs1Mjgs
NyBAQCBVaW50OENsYW1wZWRBcnJheSogRmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVtdWx0aXBsaWVk
SW1hZ2VSZXN1bHQoKQogICAgIEludFNpemUgcmVzdWx0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0
LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcocmVz
dWx0U2l6ZSkpOwogICAgIHJlc3VsdFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7
Ci0gICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCgocmVzdWx0U2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7
CisgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShyZXN1
bHRTaXplKTsKICAgICByZXR1cm4gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5oCmluZGV4IGM5NjZmY2MyMTYzOWRlNWE0MDRhN2M2MmYzZWEyYjZlOTMz
MmZlNDIuLmFmNDYzZWZlYjAxMzZhYzYxOGUyOTljZDA4ZDQ0ODM4ZDBlZjU2NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJF
ZmZlY3QuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGaWx0
ZXI7CiBjbGFzcyBGaWx0ZXJFZmZlY3Q7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKK2NsYXNzIEltYWdl
RGF0YTsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEZpbHRlckVmZmVjdD4+IEZpbHRlckVmZmVj
dFZlY3RvcjsKIApAQCAtMTUzLDggKzE1NCw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGNv
bnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCA9IDA7CiAKICAgICBJbWFnZUJ1ZmZlciogY3Jl
YXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBVaW50OENsYW1wZWRBcnJheSogY3JlYXRlVW5t
dWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKLSAgICBVaW50OENsYW1wZWRBcnJheSogY3JlYXRlUHJl
bXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CisgICAgSW1hZ2VEYXRhKiBjcmVhdGVVbm11bHRpcGxp
ZWRJbWFnZVJlc3VsdCgpOworICAgIEltYWdlRGF0YSogY3JlYXRlUHJlbXVsdGlwbGllZEltYWdl
UmVzdWx0KCk7CiAKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsdGVyIHdpbGwgb25seSBv
cGVyYXRlIGNvcnJlY3RseSBvbiB2YWxpZCBSR0JBIHZhbHVlcywgd2l0aAogICAgIC8vIGFscGhh
IGluIFswLDI1NV0gYW5kIGVhY2ggY29sb3IgY29tcG9uZW50IGluIFswLCBhbHBoYV0uCkBAIC0x
ODIsOCArMTgzLDggQEAgcHJpdmF0ZToKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3IgbV9pbnB1dEVm
ZmVjdHM7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXJS
ZXN1bHQ7Ci0gICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBtX3VubXVsdGlwbGllZEltYWdl
UmVzdWx0OwotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gbV9wcmVtdWx0aXBsaWVkSW1h
Z2VSZXN1bHQ7CisgICAgUmVmUHRyPEltYWdlRGF0YT4gbV91bm11bHRpcGxpZWRJbWFnZVJlc3Vs
dDsKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdDsKIAog
ICAgIEludFJlY3QgbV9hYnNvbHV0ZVBhaW50UmVjdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDFlMDM1YTdlZWYyODAzY2Y2NTk5
MmQwNDljOWY4YjU1NmJjZWNhZWMuLjkxOGUxOGFmNWUxMmZmOTA0OTQ4M2E3OGVmMWJhODJkNzM1
OGMyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNw
cApAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKiBpbWFnZUJ1CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBwYWludFRvQ2FudmFzKHBpeGVscy5nZXQoKSwgSW50U2l6ZShtX2N1cnJl
bnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KSwgaW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpLCBp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBwYWludFRvQ2FudmFzKHBpeGVscy5nZXQoKSwg
SW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KSwgaW1hZ2VCdWZmZXItPmJh
Y2tlbmRTaXplKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIFVTRShPUEVOR0xfRVMpCiAgICAgcHJlc2VudFJlbmRlcmJ1ZmZlcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0
YURpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZm
MWIzOTQxNWViYjIxYmU2Y2VmYWM1OTA2ZjdkNDI1MWI4MzU5M2YuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDU0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YS5o
IgotCi0jaWYgVVNFKERJUkVDVDJEKQotCi0jaW5jbHVkZSAiQml0bWFwSW5mby5oIgotI2luY2x1
ZGUgIkRpcmVjdDJEVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0j
aW5jbHVkZSAiSFduZERDLmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaCIKLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvVHlwZWRBcnJheUlubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENs
YW1wZWRBcnJheS5oPgotI2luY2x1ZGUgPGQyZDEuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLS8vIFN3aXp6bGUgdGhlIHJlZCBhbmQgYmx1ZSBieXRlcyBvZiB0aGUgcGl4ZWxzIGluIGEg
YnVmZmVyCi10ZW1wbGF0ZSA8QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXNpcmVkRm9ybWF0Pgot
dm9pZCBzd2l6emxlQW5kUHJlbXVsdGlwbHkoY29uc3QgdWludDhfdCogc3JjUm93cywgdW5zaWdu
ZWQgcm93Q291bnQsIHVuc2lnbmVkIGNvbENvdW50LCB1bnNpZ25lZCBzcmNTdHJpZGUsIHVuc2ln
bmVkIGRlc3RTdHJpZGUsIHVpbnQ4X3QqIGRlc3RSb3dzKQotewotICAgIGZvciAodW5zaWduZWQg
eSA9IDA7IHkgPCByb3dDb3VudDsgKyt5KSB7Ci0gICAgICAgIC8vIFNvdXJjZSBkYXRhIG1heSBi
ZSBwb3dlci1vZi10d28gc2l6ZWQsIHNvIHdlIG5lZWQgdG8gb25seSBjb3B5IHRoZSBiaXRzIHRo
YXQKLSAgICAgICAgLy8gY29ycmVzcG9uZCB0byB0aGUgcmVjdGFuZ2xlIHN1cHBsaWVkIGJ5IHRo
ZSBjYWxsZXIuCi0gICAgICAgIGNvbnN0IHVpbnQzMl90KiBzcmNSb3cgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQzMl90Kj4oc3JjUm93cyArIHNyY1N0cmlkZSAqIHkpOwotICAgICAgICB1
aW50OF90KiBkZXN0Um93ID0gZGVzdFJvd3MgKyBkZXN0U3RyaWRlICogeTsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCB4ID0gMDsgeCA8IGNvbENvdW50OyArK3gpIHsKLSAgICAgICAgICAgIHVuc2ln
bmVkIGJ5dGVQb3NpdGlvbiA9IHggKiA0OwotICAgICAgICAgICAgY29uc3QgdWludDMyX3QqIHNy
Y1BpeGVsID0gc3JjUm93ICsgeDsKLQotICAgICAgICAgICAgLy8gU29mdHdhcmUgZmlsdGVycyBl
eHBlY3QgKFApUkdCQSBieXRlcy4gV2UgbmVlZCB0byBzd2l6emxlIGZyb20gRGlyZWN0MkQncyBQ
QkdSQSB0byBiZSBjb21wYXRpYmxlLgotICAgICAgICAgICAgdWludDMyX3QgYWxwaGEgPSAoKnNy
Y1BpeGVsICYgMHhGRjAwMDAwMCkgPj4gMjQ7Ci0gICAgICAgICAgICB1aW50MzJfdCByZWQgPSAo
KnNyY1BpeGVsICYgMHgwMEZGMDAwMCkgPj4gMTY7Ci0gICAgICAgICAgICB1aW50MzJfdCBncmVl
biA9ICgqc3JjUGl4ZWwgJiAweDAwMDBGRjAwKSA+PiA4OwotICAgICAgICAgICAgdWludDMyX3Qg
Ymx1ZSA9ICgqc3JjUGl4ZWwgJiAweDAwMDAwMEZGKTsKLQotICAgICAgICAgICAgaWYgKGRlc2ly
ZWRGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGFscGhhICYmIGFscGhhICE9IDI1NSkgewotICAgICAgICAgICAg
ICAgICAgICByZWQgPSByZWQgKiAyNTUgLyBhbHBoYTsKLSAgICAgICAgICAgICAgICAgICAgZ3Jl
ZW4gPSBncmVlbiAqIDI1NSAvIGFscGhhOwotICAgICAgICAgICAgICAgICAgICBibHVlID0gYmx1
ZSAqIDI1NSAvIGFscGhhOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgZGVzdFJvd1tieXRlUG9zaXRpb25dICAgICA9IHJlZDsKLSAgICAgICAgICAgIGRl
c3RSb3dbYnl0ZVBvc2l0aW9uICsgMV0gPSBncmVlbjsKLSAgICAgICAgICAgIGRlc3RSb3dbYnl0
ZVBvc2l0aW9uICsgMl0gPSBibHVlOwotICAgICAgICAgICAgZGVzdFJvd1tieXRlUG9zaXRpb24g
KyAzXSA9IGFscGhhOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0aWMgYm9vbCBjb3B5UmVj
dEZyb21Tb3VyY2VUb0Rlc3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50U2l6
ZSYgc291cmNlQnVmZmVyU2l6ZSwgY29uc3QgdWludDhfdCogc291cmNlLCBjb25zdCBJbnRTaXpl
JiBkZXN0QnVmZmVyU2l6ZSwgdWludDhfdCogZGVzdCwgY29uc3QgSW50UG9pbnQmIGRlc3RCdWZm
ZXJQb3NpdGlvbikKLXsKLSAgICBpZiAoIUludFJlY3QoeyB9LCBkZXN0QnVmZmVyU2l6ZSkuY29u
dGFpbnMoSW50UmVjdChkZXN0QnVmZmVyUG9zaXRpb24sIHNvdXJjZVJlY3Quc2l6ZSgpKSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghSW50UmVjdCh7IH0sIHNvdXJjZUJ1ZmZl
clNpemUpLmNvbnRhaW5zKHNvdXJjZVJlY3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICB1bnNpZ25lZCBzcmNTdHJpZGUgPSBzb3VyY2VCdWZmZXJTaXplLndpZHRoKCkgKiA0OwotICAg
IHVuc2lnbmVkIGRlc3RTdHJpZGUgPSBkZXN0QnVmZmVyU2l6ZS53aWR0aCgpICogNDsKLQotICAg
IHVuc2lnbmVkIHNyY1Jvd09mZnNldCA9IHNvdXJjZVJlY3QubG9jYXRpb24oKS54KCkgKiA0Owot
ICAgIHVuc2lnbmVkIGRlc3RSb3dPZmZzZXQgPSBkZXN0QnVmZmVyUG9zaXRpb24ueCgpICogNDsK
LQotICAgIGNvbnN0IHVpbnQ4X3QqIHNyY1Jvd3MgPSBzb3VyY2UgKyBzcmNTdHJpZGUgKiBzb3Vy
Y2VSZWN0LmxvY2F0aW9uKCkueSgpOwotICAgIHVpbnQ4X3QqIGRlc3RSb3dzID0gZGVzdCArIGRl
c3RTdHJpZGUgKiBkZXN0QnVmZmVyUG9zaXRpb24ueSgpOwotCi0gICAgY29uc3QgdW5zaWduZWQg
Ynl0ZXNQZXJSb3cgPSBzb3VyY2VSZWN0LndpZHRoKCkgKiA0OwotICAgIGZvciAodW5zaWduZWQg
eSA9IDA7IHkgPCBzb3VyY2VSZWN0LmhlaWdodCgpOyArK3kpIHsKLSAgICAgICAgY29uc3QgdWlu
dDhfdCogc3JjUm93ID0gc3JjUm93cyArIHNyY1N0cmlkZSAqIHkgKyBzcmNSb3dPZmZzZXQ7Ci0g
ICAgICAgIHVpbnQ4X3QqIGRlc3RSb3cgPSBkZXN0Um93cyArIGRlc3RTdHJpZGUgKiB5ICsgZGVz
dFJvd09mZnNldDsKLSAgICAgICAgbWVtY3B5KGRlc3RSb3csIHNyY1JvdywgYnl0ZXNQZXJSb3cp
OwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBOb3RlOiBBc3N1bWVzIHRoYXQg
Ynl0ZXMgYXJlIGFscmVhZHkgaW4gUkdCQSBmb3JtYXQKLXRlbXBsYXRlIDxBbHBoYVByZW11bHRp
cGxpY2F0aW9uIGRlc2lyZWRGb3JtYXQ+Ci1ib29sIGNvcHlSZWN0RnJvbVNvdXJjZVRvRGVzdEFu
ZFNldFByZW11bHRpcGxpY2F0aW9uKGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFNpemUmIHNvdXJjZUJ1ZmZlclNpemUsIGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgY29uc3QgSW50
U2l6ZSYgZGVzdEJ1ZmZlclNpemUsIHVpbnQ4X3QqIGRlc3QsIGNvbnN0IEludFBvaW50JiBkZXN0
QnVmZmVyUG9zaXRpb24pCi17Ci0gICAgaWYgKCFJbnRSZWN0KHsgfSwgZGVzdEJ1ZmZlclNpemUp
LmNvbnRhaW5zKEludFJlY3QoZGVzdEJ1ZmZlclBvc2l0aW9uLCBzb3VyY2VSZWN0LnNpemUoKSkp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIUludFJlY3QoeyB9LCBzb3VyY2VC
dWZmZXJTaXplKS5jb250YWlucyhzb3VyY2VSZWN0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgdW5zaWduZWQgc3JjU3RyaWRlID0gc291cmNlQnVmZmVyU2l6ZS53aWR0aCgpICogNDsK
LSAgICB1bnNpZ25lZCBkZXN0U3RyaWRlID0gZGVzdEJ1ZmZlclNpemUud2lkdGgoKSAqIDQ7Ci0K
LSAgICB1bnNpZ25lZCBzcmNSb3dPZmZzZXQgPSBzb3VyY2VSZWN0LmxvY2F0aW9uKCkueCgpICog
NDsKLSAgICB1bnNpZ25lZCBkZXN0Um93T2Zmc2V0ID0gZGVzdEJ1ZmZlclBvc2l0aW9uLngoKSAq
IDQ7Ci0KLSAgICBjb25zdCB1aW50OF90KiBzcmNSb3dzID0gc291cmNlICsgc3JjU3RyaWRlICog
c291cmNlUmVjdC5sb2NhdGlvbigpLnkoKTsKLSAgICB1aW50OF90KiBkZXN0Um93cyA9IGRlc3Qg
KyBkZXN0U3RyaWRlICogZGVzdEJ1ZmZlclBvc2l0aW9uLnkoKTsKLQotICAgIGNvbnN0IHVuc2ln
bmVkIGJ5dGVzUGVyUm93ID0gc291cmNlUmVjdC53aWR0aCgpICogNDsKLSAgICBmb3IgKHVuc2ln
bmVkIHkgPSAwOyB5IDwgc291cmNlUmVjdC5oZWlnaHQoKTsgKyt5KSB7Ci0gICAgICAgIGNvbnN0
IHVpbnQ4X3QqIHNyY1JvdyA9IHNyY1Jvd3MgKyBzcmNTdHJpZGUgKiB5ICsgc3JjUm93T2Zmc2V0
OwotICAgICAgICB1aW50OF90KiBkZXN0Um93ID0gZGVzdFJvd3MgKyBkZXN0U3RyaWRlICogeSAr
IGRlc3RSb3dPZmZzZXQ7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCBzb3VyY2VS
ZWN0LndpZHRoKCk7ICsreCkgewotICAgICAgICAgICAgdW5zaWduZWQgcG9zID0geCAqIDQ7Ci0K
LSAgICAgICAgICAgIHVuc2lnbmVkIHJlZCA9IHNyY1Jvd1t4XTsKLSAgICAgICAgICAgIHVuc2ln
bmVkIGdyZWVuID0gc3JjUm93W3ggKyAxXTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGJsdWUgPSBz
cmNSb3dbeCArIDJdOwotICAgICAgICAgICAgdW5zaWduZWQgYWxwaGEgPSBzcmNSb3dbeCArIDNd
OwotCi0gICAgICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpQcmVtdWx0aXBsaWVkKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGFscGhhICE9IDI1NSkg
ewotICAgICAgICAgICAgICAgICAgICByZWQgPSAocmVkICogYWxwaGEgKyAyNTQpIC8gMjU1Owot
ICAgICAgICAgICAgICAgICAgICBncmVlbiA9IChncmVlbiAqIGFscGhhICsgMjU0KSAvIDI1NTsK
LSAgICAgICAgICAgICAgICAgICAgYmx1ZSA9IChibHVlICogYWxwaGEgKyAyNTQpIC8gMjU1Owot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGFscGhhICYmIGFscGhhICE9IDI1NSkgewotICAgICAgICAgICAgICAgICAgICByZWQgPSBy
ZWQgKiAyNTUgLyBhbHBoYTsKLSAgICAgICAgICAgICAgICAgICAgZ3JlZW4gPSBncmVlbiAqIDI1
NSAvIGFscGhhOwotICAgICAgICAgICAgICAgICAgICBibHVlID0gYmx1ZSAqIDI1NSAvIGFscGhh
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdWludDMy
X3QqIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGRlc3RSb3cpICsgeDsKLSAg
ICAgICAgICAgICpwaXhlbCA9IChhbHBoYSA8PCAyNCkgfCByZWQgIDw8IDE2IHwgZ3JlZW4gIDw8
IDggfCBibHVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgSW1hZ2VCdWZmZXJEYXRhOjpjb3B5UmVjdEZyb21EYXRhKGNvbnN0IEludFJlY3QmIHJlY3Qs
IFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4mIHJlc3VsdCkgY29uc3QKLXsKLSAgICBhdXRvIHJh
d0JpdG1hcFNpemUgPSBiaXRtYXAtPkdldFNpemUoKTsKLQotICAgIGZsb2F0IHNjYWxlRmFjdG9y
ID0gYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpIC8gcmF3Qml0bWFwU2l6ZS53aWR0aDsKLQotICAg
IEludFJlY3Qgc2NhbGVkUmVjdCA9IHJlY3Q7Ci0gICAgc2NhbGVkUmVjdC5zY2FsZShzY2FsZUZh
Y3Rvcik7Ci0KLSAgICBpZiAoIUludFJlY3QoSW50UG9pbnQoKSwgYmFja2luZ1N0b3JlU2l6ZSku
Y29udGFpbnMoc2NhbGVkUmVjdCkpIHsKLSAgICAgICAgLy8gUmVxdWVzdGVkIHJlY3QgaXMgb3V0
c2lkZSB0aGUgYnVmZmVyLiBSZXR1cm4gemVyby1maWxsZWQgYnVmZmVyLgotICAgICAgICByZXN1
bHQtPnplcm9GaWxsKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVy
biBjb3B5UmVjdEZyb21Tb3VyY2VUb0Rlc3Qoc2NhbGVkUmVjdCwgYmFja2luZ1N0b3JlU2l6ZSwg
ZGF0YS5kYXRhKCksIHJlY3Quc2l6ZSgpLCByZXN1bHQtPmRhdGEoKSwgSW50UG9pbnQoKSk7Ci19
Ci0KLWJvb2wgSW1hZ2VCdWZmZXJEYXRhOjplbnN1cmVCYWNraW5nU3RvcmUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkgY29uc3QKLXsKLSAgICBpZiAoc2l6ZSA9PSBiYWNraW5nU3RvcmVTaXplICYmICFk
YXRhLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBhdXRvIG51bUJ5dGVz
ID0gc2l6ZS5hcmVhPFJlY29yZE92ZXJmbG93PigpICogNDsKLSAgICBpZiAobnVtQnl0ZXMuaGFz
T3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBiYWNraW5nU3RvcmVT
aXplID0gc2l6ZTsKLSAgICBkYXRhLnJlc2l6ZVRvRml0KG51bUJ5dGVzLnVuc2FmZUdldCgpKTsK
LSAgICByZXR1cm4gZGF0YS5jYXBhY2l0eSgpID09IG51bUJ5dGVzLnVuc2FmZUdldCgpOwotfQot
Ci0vLyBTd2l6emxlIHRoZSByZWQgYW5kIGJsdWUgYnl0ZXMgb2YgdGhlIHBpeGVscyBpbiBhIGJ1
ZmZlcgotdGVtcGxhdGUgPEFscGhhUHJlbXVsdGlwbGljYXRpb24gc291cmNlRm9ybWF0Pgotdm9p
ZCBpblBsYWNlU3dpenpsZSh1aW50OF90KiBieXRlRGF0YSwgdW5zaWduZWQgYnl0ZUNvdW50KQot
ewotICAgIHNpemVfdCBwaXhlbENvdW50ID0gYnl0ZUNvdW50IC8gNDsKLSAgICBhdXRvKiBwaXhl
bERhdGEgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oYnl0ZURhdGEpOwotCi0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwaXhlbENvdW50OyArK2kpIHsKLSAgICAgICAgdWludDMyX3Qg
cGl4ZWwgPSAqcGl4ZWxEYXRhOwotICAgICAgICBzaXplX3QgYnl0ZVBvc2l0aW9uID0gaSAqIDQ7
Ci0KLSAgICAgICAgdWludDMyX3QgYWxwaGEgPSAocGl4ZWwgJiAweEZGMDAwMDAwKSA+PiAyNDsK
LSAgICAgICAgdWludDMyX3QgcmVkID0gKHBpeGVsICYgMHgwMEZGMDAwMCkgPj4gMTY7Ci0gICAg
ICAgIHVpbnQzMl90IGdyZWVuID0gKHBpeGVsICYgMHgwMDAwRkYwMCkgPj4gODsKLSAgICAgICAg
dWludDMyX3QgYmx1ZSA9IChwaXhlbCAmIDB4MDAwMDAwRkYpOwotCi0gICAgICAgIC8vIChQKVJH
QkEgLT4gUEJHUkEKLSAgICAgICAgaWYgKHNvdXJjZUZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQpIHsKLSAgICAgICAgICAgIGlmIChhbHBoYSAhPSAyNTUp
IHsKLSAgICAgICAgICAgICAgICByZWQgPSAocmVkICogYWxwaGEgKyAyNTQpIC8gMjU1OwotICAg
ICAgICAgICAgICAgIGdyZWVuID0gKGdyZWVuICogYWxwaGEgKyAyNTQpIC8gMjU1OwotICAgICAg
ICAgICAgICAgIGJsdWUgPSAoYmx1ZSAqIGFscGhhICsgMjU0KSAvIDI1NTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgICpwaXhlbERhdGEgPSAoYWxwaGEgPDwgMjQpIHwgcmVk
ICA8PCAxNiB8IGdyZWVuICA8PCA4IHwgYmx1ZTsKLSAgICAgICAgKytwaXhlbERhdGE7Ci0gICAg
fQotfQotCi0vLyBOb3RlOiBBc3N1bWVzIHRoYXQgYnl0ZXMgYXJlIGFscmVhZHkgaW4gUkdCQSBm
b3JtYXQKLXRlbXBsYXRlIDxBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc2lyZWRGb3JtYXQ+Ci12
b2lkIGluUGxhY2VDaGFuZ2VQcmVtdWx0aXBsaWNhdGlvbih1aW50OF90KiBieXRlRGF0YSwgdW5z
aWduZWQgYnl0ZUNvdW50KQotewotICAgIHNpemVfdCBwaXhlbENvdW50ID0gYnl0ZUNvdW50IC8g
NDsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGl4ZWxDb3VudDsgKytpKSB7Ci0gICAg
ICAgIHVuc2lnbmVkIHggPSBwaXhlbENvdW50ICogNDsKLQotICAgICAgICB1bnNpZ25lZCByZWQg
PSBieXRlRGF0YVt4XTsKLSAgICAgICAgdW5zaWduZWQgZ3JlZW4gPSBieXRlRGF0YVt4ICsgMV07
Ci0gICAgICAgIHVuc2lnbmVkIGJsdWUgPSBieXRlRGF0YVt4ICsgMl07Ci0gICAgICAgIHVuc2ln
bmVkIGFscGhhID0gYnl0ZURhdGFbeCArIDNdOwotCi0gICAgICAgIGlmIChkZXNpcmVkRm9ybWF0
ID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpIHsKLSAgICAgICAgICAg
IGlmIChhbHBoYSAhPSAyNTUpIHsKLSAgICAgICAgICAgICAgICByZWQgPSAocmVkICogYWxwaGEg
KyAyNTQpIC8gMjU1OwotICAgICAgICAgICAgICAgIGdyZWVuID0gKGdyZWVuICogYWxwaGEgKyAy
NTQpIC8gMjU1OwotICAgICAgICAgICAgICAgIGJsdWUgPSAoYmx1ZSAqIGFscGhhICsgMjU0KSAv
IDI1NTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChh
bHBoYSAmJiBhbHBoYSAhPSAyNTUpIHsKLSAgICAgICAgICAgICAgICByZWQgPSByZWQgKiAyNTUg
LyBhbHBoYTsKLSAgICAgICAgICAgICAgICBncmVlbiA9IGdyZWVuICogMjU1IC8gYWxwaGE7Ci0g
ICAgICAgICAgICAgICAgYmx1ZSA9IGJsdWUgKiAyNTUgLyBhbHBoYTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotCi0gICAgICAgIHVpbnQzMl90KiBwaXhlbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDMyX3QqPihieXRlRGF0YSkgKyBpOwotICAgICAgICAqcGl4ZWwgPSAoYWxwaGEgPDwgMjQp
IHwgcmVkICA8PCAxNiB8IGdyZWVuICA8PCA4IHwgYmx1ZTsKLSAgICB9Ci19Ci0KLVJlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKEFscGhhUHJlbXVsdGlw
bGljYXRpb24gZGVzaXJlZEZvcm1hdCwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6
ZSYgc2l6ZSwgYm9vbCAvKiBhY2NlbGVyYXRlUmVuZGVyaW5nICovLCBmbG9hdCAvKiByZXNvbHV0
aW9uU2NhbGUgKi8pIGNvbnN0Ci17Ci0gICAgYXV0byBudW1CeXRlcyA9IHJlY3QuYXJlYTxSZWNv
cmRPdmVyZmxvdz4oKSAqIDQ7Ci0gICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFy
cmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKG51bUJ5dGVzLnVuc2FmZUdldCgpKTsKLSAgICBp
ZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoIWJpdG1hcCkK
LSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgIGlmICghcmVhZERhdGFGcm9tQml0bWFwSWZO
ZWVkZWQoZGVzaXJlZEZvcm1hdCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0
byByYXdCaXRtYXBTaXplID0gYml0bWFwLT5HZXRTaXplKCk7Ci0gICAgSW50U2l6ZSBiaXRtYXBT
aXplKGNsYW1wVG88aW50PihyYXdCaXRtYXBTaXplLndpZHRoKSwgY2xhbXBUbzxpbnQ+KHJhd0Jp
dG1hcFNpemUuaGVpZ2h0KSk7Ci0KLSAgICBpZiAocmVjdC5sb2NhdGlvbigpID09IEludFBvaW50
KCkgJiYgcmVjdC5zaXplKCkgPT0gYml0bWFwU2l6ZSkgewotICAgICAgICBSRUxFQVNFX0FTU0VS
VChudW1CeXRlcy51bnNhZmVHZXQoKSA9PSBkYXRhLnNpemUoKSk7Ci0gICAgICAgIHJlc3VsdC0+
c2V0UmFuZ2UoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAwKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICAvLyBPbmx5IHdhbnQgcGFydCBvZiB0aGUgYml0bWFwLgotICAgICAgICBpZiAoIWNvcHlS
ZWN0RnJvbURhdGEocmVjdCwgcmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KLQotICAgIGlmIChieXRlRm9ybWF0ICE9IGRlc2lyZWRGb3JtYXQpIHsKLSAgICAgICAg
Ly8gSW4tbWVtb3J5IGRhdGEgZG9lcyBub3QgbWF0Y2ggZGVzaXJlZCBmb3JtYXQuIE5lZWQgdG8g
c3dpenpsZSB0aGUgcmVzdWx0cy4KLSAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkKQotICAgICAgICAgICAgaW5QbGFjZUNo
YW5nZVByZW11bHRpcGxpY2F0aW9uPEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlw
bGllZD4ocmVzdWx0LT5kYXRhKCksIHJlc3VsdC0+bGVuZ3RoKCkpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBpblBsYWNlQ2hhbmdlUHJlbXVsdGlwbGljYXRpb248QWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6UHJlbXVsdGlwbGllZD4ocmVzdWx0LT5kYXRhKCksIHJlc3VsdC0+bGVuZ3RoKCkp
OwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWJvb2wgSW1hZ2VCdWZmZXJEYXRh
OjpyZWFkRGF0YUZyb21CaXRtYXBJZk5lZWRlZChBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc2ly
ZWRGb3JtYXQpIGNvbnN0Ci17Ci0gICAgaWYgKGJpdG1hcEJ1ZmZlclN5bmMgIT0gQml0bWFwQnVm
ZmVyU3luYzo6QnVmZmVyT3V0T2ZTeW5jKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIElu
dFNpemUgcGl4ZWxTaXplID0gYml0bWFwLT5HZXRQaXhlbFNpemUoKTsKLQotICAgIGF1dG8gbnVt
Qnl0ZXMgPSBwaXhlbFNpemUuYXJlYTxSZWNvcmRPdmVyZmxvdz4oKSAqIDQ7Ci0gICAgaWYgKG51
bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgY29u
dGV4dC0+ZW5kRHJhdygpOwotCi0gICAgQ09NUHRyPElEMkQxRGV2aWNlQ29udGV4dD4gZDJkRGV2
aWNlQ29udGV4dCA9IHBsYXRmb3JtQ29udGV4dC0+ZGV2aWNlQ29udGV4dCgpOwotICAgIEFTU0VS
VCghIWQyZERldmljZUNvbnRleHQpOwotCi0gICAgYXV0byBieXRlc1BlclJvd0luRGF0YSA9IHBp
eGVsU2l6ZS53aWR0aCgpICogNDsKLQotICAgIC8vIENvcHkgR1BVIGRhdGEgZnJvbSB0aGUgSUQy
RDFCaXRtYXAgdG8gYSBDUFUtYmFja2VkIElEMkQxQml0bWFwMQotICAgIENPTVB0cjxJRDJEMUJp
dG1hcDE+IGNwdUJpdG1hcDsKLSAgICBEMkQxX0JJVE1BUF9QUk9QRVJUSUVTMSBiaXRtYXBQcm9w
ZXJ0aWVzMiA9IEQyRDE6OkJpdG1hcFByb3BlcnRpZXMxKEQyRDFfQklUTUFQX09QVElPTlNfQ1BV
X1JFQUQgfCBEMkQxX0JJVE1BUF9PUFRJT05TX0NBTk5PVF9EUkFXLCBEaXJlY3QyRDo6cGl4ZWxG
b3JtYXQoKSk7Ci0gICAgSFJFU1VMVCBociA9IGQyZERldmljZUNvbnRleHQtPkNyZWF0ZUJpdG1h
cChwaXhlbFNpemUsIG51bGxwdHIsIGJ5dGVzUGVyUm93SW5EYXRhLCBiaXRtYXBQcm9wZXJ0aWVz
MiwgJmNwdUJpdG1hcCk7Ci0gICAgaWYgKCFTVUNDRUVERUQoaHIpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBhdXRvIHRhcmdldFBvcyA9IEQyRDE6OlBvaW50MlUoKTsKLSAgICBEMkQx
X1JFQ1RfVSBkYXRhUmVjdCA9IEQyRDE6OlJlY3RVKDAsIDAsIHBpeGVsU2l6ZS53aWR0aCgpLCBw
aXhlbFNpemUuaGVpZ2h0KCkpOwotICAgIGhyID0gY3B1Qml0bWFwLT5Db3B5RnJvbUJpdG1hcCgm
dGFyZ2V0UG9zLCBiaXRtYXAuZ2V0KCksICZkYXRhUmVjdCk7Ci0gICAgaWYgKCFTVUNDRUVERUQo
aHIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBEMkQxX01BUFBFRF9SRUNUIG1hcHBl
ZERhdGE7Ci0gICAgaHIgPSBjcHVCaXRtYXAtPk1hcChEMkQxX01BUF9PUFRJT05TX1JFQUQsICZt
YXBwZWREYXRhKTsKLSAgICBpZiAoIVNVQ0NFRURFRChocikpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGlmICghbWFwcGVkRGF0YS5iaXRzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBpZiAoIWVuc3VyZUJhY2tpbmdTdG9yZShwaXhlbFNpemUpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAvLyBTb2Z0d2FyZSBmaWx0ZXJzIGV4cGVjdCBSR0JBIGJ5dGVzLiBXZSBu
ZWVkIHRvIHN3aXp6bGUgZnJvbSBEaXJlY3QyRCdzIEJHUkEgdG8gYmUgY29tcGF0aWJsZS4KLSAg
ICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBs
aWVkKQotICAgICAgICBzd2l6emxlQW5kUHJlbXVsdGlwbHk8QWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6UHJlbXVsdGlwbGllZD4obWFwcGVkRGF0YS5iaXRzLCBwaXhlbFNpemUuaGVpZ2h0KCksIHBp
eGVsU2l6ZS53aWR0aCgpLCBtYXBwZWREYXRhLnBpdGNoLCBieXRlc1BlclJvd0luRGF0YSwgZGF0
YS5kYXRhKCkpOwotICAgIGVsc2UKLSAgICAgICAgc3dpenpsZUFuZFByZW11bHRpcGx5PEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZD4obWFwcGVkRGF0YS5iaXRzLCBwaXhl
bFNpemUuaGVpZ2h0KCksIHBpeGVsU2l6ZS53aWR0aCgpLCBtYXBwZWREYXRhLnBpdGNoLCBieXRl
c1BlclJvd0luRGF0YSwgZGF0YS5kYXRhKCkpOwotCi0gICAgYnl0ZUZvcm1hdCA9IGRlc2lyZWRG
b3JtYXQ7Ci0KLSAgICBiaXRtYXBCdWZmZXJTeW5jID0gQml0bWFwQnVmZmVyU3luYzo6SW5TeW5j
OwotCi0gICAgaHIgPSBjcHVCaXRtYXAtPlVubWFwKCk7Ci0gICAgQVNTRVJUKFNVQ0NFRURFRCho
cikpOwotCi0gICAgY29udGV4dC0+YmVnaW5EcmF3KCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEoY29uc3QgVWludDhDbGFtcGVkQXJyYXkm
IHNvdXJjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBzb3VyY2VGb3JtYXQsIGNvbnN0IEludFNp
emUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50
JiBkZXN0UG9pbnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgLyogYWNjZWxlcmF0ZVJlbmRl
cmluZyAqLywgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQotewotICAgIEFTU0VSVChzb3VyY2VSZWN0
LndpZHRoKCkgPiAwKTsKLSAgICBBU1NFUlQoc291cmNlUmVjdC5oZWlnaHQoKSA+IDApOwotCi0g
ICAgQ2hlY2tlZDxpbnQ+IG9yaWdpbnggPSBzb3VyY2VSZWN0LngoKTsKLSAgICBDaGVja2VkPGlu
dD4gZGVzdHggPSAoQ2hlY2tlZDxpbnQ+KGRlc3RQb2ludC54KCkpICsgc291cmNlUmVjdC54KCkp
OwotICAgIGRlc3R4ICo9IHJlc29sdXRpb25TY2FsZTsKLSAgICBBU1NFUlQoZGVzdHgudW5zYWZl
R2V0KCkgPj0gMCk7Ci0gICAgQVNTRVJUKGRlc3R4LnVuc2FmZUdldCgpIDwgc2l6ZS53aWR0aCgp
KTsKLSAgICBBU1NFUlQob3JpZ2lueC51bnNhZmVHZXQoKSA+PSAwKTsKLSAgICBBU1NFUlQob3Jp
Z2lueC51bnNhZmVHZXQoKSA8PSBzb3VyY2VSZWN0Lm1heFgoKSk7Ci0KLSAgICBDaGVja2VkPGlu
dD4gZW5keCA9IChDaGVja2VkPGludD4oZGVzdFBvaW50LngoKSkgKyBzb3VyY2VSZWN0Lm1heFgo
KSk7Ci0gICAgZW5keCAqPSByZXNvbHV0aW9uU2NhbGU7Ci0gICAgQVNTRVJUKGVuZHgudW5zYWZl
R2V0KCkgPD0gc2l6ZS53aWR0aCgpKTsKLQotICAgIENoZWNrZWQ8aW50PiB3aWR0aCA9IHNvdXJj
ZVJlY3Qud2lkdGgoKTsKLSAgICBDaGVja2VkPGludD4gZGVzdHcgPSBlbmR4IC0gZGVzdHg7Ci0K
LSAgICBDaGVja2VkPGludD4gb3JpZ2lueSA9IHNvdXJjZVJlY3QueSgpOwotICAgIENoZWNrZWQ8
aW50PiBkZXN0eSA9IChDaGVja2VkPGludD4oZGVzdFBvaW50LnkoKSkgKyBzb3VyY2VSZWN0Lnko
KSk7Ci0gICAgZGVzdHkgKj0gcmVzb2x1dGlvblNjYWxlOwotICAgIEFTU0VSVChkZXN0eS51bnNh
ZmVHZXQoKSA+PSAwKTsKLSAgICBBU1NFUlQoZGVzdHkudW5zYWZlR2V0KCkgPCBzaXplLmhlaWdo
dCgpKTsKLSAgICBBU1NFUlQob3JpZ2lueS51bnNhZmVHZXQoKSA+PSAwKTsKLSAgICBBU1NFUlQo
b3JpZ2lueS51bnNhZmVHZXQoKSA8PSBzb3VyY2VSZWN0Lm1heFkoKSk7Ci0KLSAgICBDaGVja2Vk
PGludD4gZW5keSA9IChDaGVja2VkPGludD4oZGVzdFBvaW50LnkoKSkgKyBzb3VyY2VSZWN0Lm1h
eFkoKSk7Ci0gICAgZW5keSAqPSByZXNvbHV0aW9uU2NhbGU7Ci0gICAgQVNTRVJUKGVuZHkudW5z
YWZlR2V0KCkgPD0gc2l6ZS5oZWlnaHQoKSk7Ci0KLSAgICBDaGVja2VkPGludD4gaGVpZ2h0ID0g
c291cmNlUmVjdC5oZWlnaHQoKTsKLSAgICBDaGVja2VkPGludD4gZGVzdGggPSBlbmR5IC0gZGVz
dHk7Ci0KLSAgICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCkKLSAgICAgICAgcmV0dXJu
OwotCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBpZiAoYml0bWFwKSB7Ci0gICAgICAgIGF1dG8g
cGl4ZWxTaXplID0gYml0bWFwLT5HZXRQaXhlbFNpemUoKTsKLSAgICAgICAgQVNTRVJUKHBpeGVs
U2l6ZS53aWR0aCA+PSBzb3VyY2VTaXplLndpZHRoKCkpOwotICAgICAgICBBU1NFUlQocGl4ZWxT
aXplLndpZHRoID49IHNpemUud2lkdGgoKSk7Ci0gICAgICAgIEFTU0VSVChwaXhlbFNpemUuaGVp
Z2h0ID49IHNvdXJjZVNpemUuaGVpZ2h0KCkpOwotICAgICAgICBBU1NFUlQocGl4ZWxTaXplLmhl
aWdodCA+PSBzaXplLmhlaWdodCgpKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmICghZW5zdXJl
QmFja2luZ1N0b3JlKHNpemUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoc291cmNlU2l6
ZSA9PSBzaXplKSB7Ci0gICAgICAgIG1lbWNweShkYXRhLmRhdGEoKSwgc291cmNlLmRhdGEoKSwg
c291cmNlLmxlbmd0aCgpKTsKLSAgICAgICAgYnl0ZUZvcm1hdCA9IHNvdXJjZUZvcm1hdDsKLSAg
ICB9IGVsc2UgewotICAgICAgICByZWFkRGF0YUZyb21CaXRtYXBJZk5lZWRlZChieXRlRm9ybWF0
KTsKLSAgICAgICAgaWYgKCFjb3B5UmVjdEZyb21Tb3VyY2VUb0RhdGEoc291cmNlUmVjdCwgc291
cmNlLCBzb3VyY2VGb3JtYXQpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJp
dG1hcEJ1ZmZlclN5bmMgPSBCaXRtYXBCdWZmZXJTeW5jOjpCaXRtYXBPdXRPZlN5bmM7Ci19Ci0K
LWJvb2wgSW1hZ2VCdWZmZXJEYXRhOjpjb3B5UmVjdEZyb21Tb3VyY2VUb0RhdGEoY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBzb3VyY2VGb3JtYXQpCi17Ci0gICAgSW50U2l6ZSBwaXhlbFNpemUg
PSBiaXRtYXAtPkdldFBpeGVsU2l6ZSgpOwotCi0gICAgSW50UmVjdCBzb3VyY2VSZWN0VG9Db3B5
ID0gc291cmNlUmVjdDsKLSAgICBpZiAoIUludFJlY3QoSW50UG9pbnQoKSwgcGl4ZWxTaXplKS5j
b250YWlucyhzb3VyY2VSZWN0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBk
ZXN0QnVmZmVyUG9zaXRpb24gPSBzb3VyY2VSZWN0LmxvY2F0aW9uKCk7Ci0KLSAgICBpZiAoc291
cmNlRm9ybWF0ID09IGJ5dGVGb3JtYXQpCi0gICAgICAgIHJldHVybiBjb3B5UmVjdEZyb21Tb3Vy
Y2VUb0Rlc3Qoc291cmNlUmVjdCwgc291cmNlUmVjdC5zaXplKCksIHNvdXJjZS5kYXRhKCksIGJh
Y2tpbmdTdG9yZVNpemUsIGRhdGEuZGF0YSgpLCBkZXN0QnVmZmVyUG9zaXRpb24pOwotCi0gICAg
aWYgKGJ5dGVGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
KQotICAgICAgICByZXR1cm4gY29weVJlY3RGcm9tU291cmNlVG9EZXN0QW5kU2V0UHJlbXVsdGlw
bGljYXRpb248QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkPihzb3VyY2VS
ZWN0LCBzb3VyY2VSZWN0LnNpemUoKSwgc291cmNlLmRhdGEoKSwgYmFja2luZ1N0b3JlU2l6ZSwg
ZGF0YS5kYXRhKCksIGRlc3RCdWZmZXJQb3NpdGlvbik7Ci0KLSAgICByZXR1cm4gY29weVJlY3RG
cm9tU291cmNlVG9EZXN0QW5kU2V0UHJlbXVsdGlwbGljYXRpb248QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6UHJlbXVsdGlwbGllZD4oc291cmNlUmVjdCwgc291cmNlUmVjdC5zaXplKCksIHNvdXJj
ZS5kYXRhKCksIGJhY2tpbmdTdG9yZVNpemUsIGRhdGEuZGF0YSgpLCBkZXN0QnVmZmVyUG9zaXRp
b24pOwotfQotCi12b2lkIEltYWdlQnVmZmVyRGF0YTo6bG9hZERhdGFUb0JpdG1hcElmTmVlZGVk
KCkKLXsKLSAgICBpZiAoYml0bWFwQnVmZmVyU3luYyAhPSBCaXRtYXBCdWZmZXJTeW5jOjpCaXRt
YXBPdXRPZlN5bmMgfHwgZGF0YS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1
dG8gcGl4ZWxTaXplID0gYml0bWFwLT5HZXRQaXhlbFNpemUoKTsKLSAgICBBU1NFUlQocGl4ZWxT
aXplLndpZHRoID49IGJhY2tpbmdTdG9yZVNpemUud2lkdGgoKSk7Ci0gICAgQVNTRVJUKHBpeGVs
U2l6ZS5oZWlnaHQgPj0gYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSk7Ci0KLSAgICBDaGVja2Vk
PHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gbnVtQnl0ZXMgPSBwaXhlbFNpemUud2lkdGggKiBw
aXhlbFNpemUuaGVpZ2h0ICogNDsKLSAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBTb2Z0d2FyZSBnZW5lcmF0ZWQgYml0bWFwIGRhdGEg
aXMgaW4gUkdCQS4gV2UgbmVlZCB0byBzd2l6emxlIHRvIHByZW11bHRpcGxpZWQgQkdSQSB0byBi
ZSBjb21wYXRpYmxlCi0gICAgLy8gd2l0aCB0aGUgSFdORC9IREMgcmVuZGVyIGJhY2tpbmcgd2Ug
dXNlLgotICAgIGlmIChieXRlRm9ybWF0ID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJl
bXVsdGlwbGllZCkKLSAgICAgICAgaW5QbGFjZVN3aXp6bGU8QWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6VW5wcmVtdWx0aXBsaWVkPihkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOyAvLyBSR0JBIC0+
IFBCR1JBCi0gICAgZWxzZQotICAgICAgICBpblBsYWNlU3dpenpsZTxBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkPihkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOyAvLyBQUkdC
QSAtPiBQQkdSQQotCi0gICAgYXV0byBieXRlc1BlclJvd0luRGF0YSA9IGJhY2tpbmdTdG9yZVNp
emUud2lkdGgoKSAqIDQ7Ci0KLSAgICBIUkVTVUxUIGhyID0gYml0bWFwLT5Db3B5RnJvbU1lbW9y
eShudWxscHRyLCBkYXRhLmRhdGEoKSwgYnl0ZXNQZXJSb3dJbkRhdGEpOwotICAgIEFTU0VSVChT
VUNDRUVERUQoaHIpKTsKLQotICAgIGJpdG1hcEJ1ZmZlclN5bmMgPSBCaXRtYXBCdWZmZXJTeW5j
OjpJblN5bmM7Ci19Ci0KLUNPTVB0cjxJRDJEMUJpdG1hcD4gSW1hZ2VCdWZmZXJEYXRhOjpjb21w
YXRpYmxlQml0bWFwKElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCi17Ci0gICAgbG9h
ZERhdGFUb0JpdG1hcElmTmVlZGVkKCk7Ci0KLSAgICBpZiAoIXJlbmRlclRhcmdldCkKLSAgICAg
ICAgcmV0dXJuIGJpdG1hcDsKLQotICAgIGlmIChwbGF0Zm9ybUNvbnRleHQtPnJlbmRlclRhcmdl
dCgpID09IHJlbmRlclRhcmdldCkgewotICAgICAgICBDT01QdHI8SUQyRDFCaXRtYXBSZW5kZXJU
YXJnZXQ+IGJpdG1hcFRhcmdldChRdWVyeSwgcmVuZGVyVGFyZ2V0KTsKLSAgICAgICAgaWYgKGJp
dG1hcFRhcmdldCkgewotICAgICAgICAgICAgQ09NUHRyPElEMkQxQml0bWFwPiBiYWNraW5nQml0
bWFwOwotICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChiaXRtYXBUYXJnZXQtPkdldEJpdG1hcCgm
YmFja2luZ0JpdG1hcCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGJhY2tpbmdCaXRtYXAgIT0g
Yml0bWFwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gYml0bWFwOwotCi0gICAgICAgICAg
ICAgICAgLy8gV2UgY2FuJ3QgZHJhdyBhbiBJRDJEMUJpdG1hcCB0byBpdHNlbGYuIE11c3QgcmV0
dXJuIGEgY29weS4KLSAgICAgICAgICAgICAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGNvcGllZEJp
dG1hcDsKLSAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHJlbmRlclRhcmdldC0+Q3JlYXRl
Qml0bWFwKGJpdG1hcC0+R2V0UGl4ZWxTaXplKCksIERpcmVjdDJEOjpiaXRtYXBQcm9wZXJ0aWVz
KCksICZjb3BpZWRCaXRtYXApKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVE
KGNvcGllZEJpdG1hcC0+Q29weUZyb21CaXRtYXAobnVsbHB0ciwgYml0bWFwLmdldCgpLCBudWxs
cHRyKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29waWVkQml0bWFwOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGF1
dG8gc2l6ZSA9IGJpdG1hcC0+R2V0UGl4ZWxTaXplKCk7Ci0gICAgQVNTRVJUKHNpemUuaGVpZ2h0
ICYmIHNpemUud2lkdGgpOwotCi0gICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+
IG51bUJ5dGVzID0gc2l6ZS53aWR0aCAqIHNpemUuaGVpZ2h0ICogNDsKLSAgICBpZiAobnVtQnl0
ZXMuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIC8vIENv
cHkgdGhlIGJpdHMgZnJvbSBjdXJyZW50IHJlbmRlclRhcmdldCB0byB0aGUgb3V0cHV0IHRhcmdl
dC4KLSAgICAvLyBXZSBjYW5ub3QgYWNjZXNzIHRoZSBkYXRhIGJhY2tpbmcgYW4gSVdJQ0JpdG1h
cCB3aGlsZSBhbiBhY3RpdmUgZHJhdyBzZXNzaW9uIGlzIG9wZW4uCi0gICAgY29udGV4dC0+ZW5k
RHJhdygpOwotCi0gICAgQ09NUHRyPElEMkQxRGV2aWNlQ29udGV4dD4gc291cmNlRGV2aWNlQ29u
dGV4dCA9IHBsYXRmb3JtQ29udGV4dC0+ZGV2aWNlQ29udGV4dCgpOwotICAgIGlmICghc291cmNl
RGV2aWNlQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBDT01QdHI8SUQy
RDFCaXRtYXAxPiBzb3VyY2VDUFVCaXRtYXA7Ci0gICAgRDJEMV9CSVRNQVBfUFJPUEVSVElFUzEg
Yml0bWFwUHJvcGVydGllcyA9IEQyRDE6OkJpdG1hcFByb3BlcnRpZXMxKEQyRDFfQklUTUFQX09Q
VElPTlNfQ1BVX1JFQUQgfCBEMkQxX0JJVE1BUF9PUFRJT05TX0NBTk5PVF9EUkFXLCBEaXJlY3Qy
RDo6cGl4ZWxGb3JtYXQoKSk7Ci0gICAgSFJFU1VMVCBociA9IHNvdXJjZURldmljZUNvbnRleHQt
PkNyZWF0ZUJpdG1hcChiaXRtYXAtPkdldFBpeGVsU2l6ZSgpLCBudWxscHRyLCBieXRlc1BlclJv
dy51bnNhZmVHZXQoKSwgYml0bWFwUHJvcGVydGllcywgJnNvdXJjZUNQVUJpdG1hcCk7Ci0gICAg
aWYgKCFTVUNDRUVERUQoaHIpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmICgh
c291cmNlQ1BVQml0bWFwKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGhyID0gc291
cmNlQ1BVQml0bWFwLT5Db3B5RnJvbUJpdG1hcChudWxscHRyLCBiaXRtYXAuZ2V0KCksIG51bGxw
dHIpOwotICAgIGlmICghU1VDQ0VFREVEKGhyKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBEMkQxX01BUFBFRF9SRUNUIG1hcHBlZFNvdXJjZURhdGE7Ci0gICAgaHIgPSBzb3VyY2VD
UFVCaXRtYXAtPk1hcChEMkQxX01BUF9PUFRJT05TX1JFQUQsICZtYXBwZWRTb3VyY2VEYXRhKTsK
LSAgICBpZiAoIVNVQ0NFRURFRChocikpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
Q09NUHRyPElEMkQxRGV2aWNlQ29udGV4dD4gdGFyZ2V0RGV2aWNlQ29udGV4dDsKLSAgICBociA9
IHJlbmRlclRhcmdldC0+UXVlcnlJbnRlcmZhY2UoJnRhcmdldERldmljZUNvbnRleHQpOwotICAg
IEFTU0VSVChTVUNDRUVERUQoaHIpKTsKLQotICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gY29tcGF0
aWJsZUJpdG1hcDsKLSAgICBociA9IHRhcmdldERldmljZUNvbnRleHQtPkNyZWF0ZUJpdG1hcChi
aXRtYXAtPkdldFBpeGVsU2l6ZSgpLCBtYXBwZWRTb3VyY2VEYXRhLmJpdHMsIG1hcHBlZFNvdXJj
ZURhdGEucGl0Y2gsIERpcmVjdDJEOjpiaXRtYXBQcm9wZXJ0aWVzKCksICZjb21wYXRpYmxlQml0
bWFwKTsKLSAgICBpZiAoIVNVQ0NFRURFRChocikpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgaHIgPSBzb3VyY2VDUFVCaXRtYXAtPlVubWFwKCk7Ci0gICAgQVNTRVJUKFNVQ0NFRURF
RChocikpOwotCi0gICAgY29udGV4dC0+YmVnaW5EcmF3KCk7Ci0KLSAgICByZXR1cm4gY29tcGF0
aWJsZUJpdG1hcDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRh
dGFEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
QnVmZmVyRGF0YURpcmVjdDJELmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljOTRk
OGE0ODIyZjEyNWY0MDZmMzAwNzc0N2ZmOTM1OGMxNTZhMzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5o
IgotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dERpcmVjdDJELmgiCi0jaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvVWludDhDbGFtcGVkQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRo
bWV0aWMuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgotCi1pbnRlcmZhY2UgSUQyRDFSZW5kZXJUYXJnZXQ7Ci1pbnRlcmZhY2UgSUQyRDFCaXRt
YXA7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUGxhdGZvcm1Db250ZXh0RGlyZWN0
MkQ7Ci0KLXN0cnVjdCBJbWFnZUJ1ZmZlckRhdGEgewotICAgIG11dGFibGUgSW50U2l6ZSBiYWNr
aW5nU3RvcmVTaXplOwotICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBieXRl
c1BlclJvdzsKLQotICAgIC8vIE9ubHkgZm9yIHNvZnR3YXJlIEltYWdlQnVmZmVycy4KLSAgICBt
dXRhYmxlIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIG11dGFibGUgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBieXRlRm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBs
aWVkIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiBwbGF0
Zm9ybUNvbnRleHQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gY29udGV4
dDsKLSAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGJpdG1hcDsKLQotICAgIGVudW0gY2xhc3MgQml0
bWFwQnVmZmVyU3luYyB7IEluU3luYywgQml0bWFwT3V0T2ZTeW5jLCBCdWZmZXJPdXRPZlN5bmMg
fTsKLSAgICBtdXRhYmxlIEJpdG1hcEJ1ZmZlclN5bmMgYml0bWFwQnVmZmVyU3luYyB7IEJpdG1h
cEJ1ZmZlclN5bmM6OkJ1ZmZlck91dE9mU3luYyB9OwotCi0gICAgUmVmUHRyPFVpbnQ4Q2xhbXBl
ZEFycmF5PiBnZXREYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0IEludFJlY3QmLCBj
b25zdCBJbnRTaXplJiwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUpIGNvbnN0OwotICAgIHZvaWQgcHV0RGF0YShjb25zdCBVaW50OENsYW1wZWRBcnJheSYg
c291cmNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIHNvdXJjZUZvcm1hdCwgY29uc3QgSW50U2l6
ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQm
IGRlc3RQb2ludCwgY29uc3QgSW50U2l6ZSYsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgZmxv
YXQgcmVzb2x1dGlvblNjYWxlKTsKLQotICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gY29tcGF0aWJs
ZUJpdG1hcChJRDJEMVJlbmRlclRhcmdldCopOwotCi0gICAgYm9vbCBlbnN1cmVCYWNraW5nU3Rv
cmUoY29uc3QgSW50U2l6ZSYpIGNvbnN0OwotICAgIHZvaWQgbG9hZERhdGFUb0JpdG1hcElmTmVl
ZGVkKCk7Ci0gICAgYm9vbCByZWFkRGF0YUZyb21CaXRtYXBJZk5lZWRlZChBbHBoYVByZW11bHRp
cGxpY2F0aW9uIGRlc2lyZWRGb3JtYXQpIGNvbnN0OwotICAgIGJvb2wgY29weVJlY3RGcm9tRGF0
YShjb25zdCBJbnRSZWN0JiwgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiYpIGNvbnN0OwotICAg
IGJvb2wgY29weVJlY3RGcm9tU291cmNlVG9EYXRhKGNvbnN0IEludFJlY3QmLCBjb25zdCBVaW50
OENsYW1wZWRBcnJheSYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOwotICAgIHZvaWQgbWFya0J1
ZmZlck91dE9mU3luYygpIHsgYml0bWFwQnVmZmVyU3luYyA9IEJpdG1hcEJ1ZmZlclN5bmM6OkJ1
ZmZlck91dE9mU3luYzsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0
MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVy
RGlyZWN0MkQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDQyMThmMWVmNGY1
NzhjZTA3Zjk0YjdhOGVjYmI4MzBhNTI2N2Y5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUJ1ZmZlckRpcmVjdDJELmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM1MSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKLQotI2lmIFVTRShESVJFQ1Qy
RCkKLQotI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCi0jaW5jbHVkZSAiQ09NUHRyLmgiCi0jaW5j
bHVkZSAiRGlyZWN0MkRVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
LSNpbmNsdWRlICJJbWFnZURhdGEuaCIKLSNpbmNsdWRlICJJbWFnZURlY29kZXJEaXJlY3QyRC5o
IgotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCi0j
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRC5oIgotI2luY2x1ZGUgPGQyZDFfMS5oPgotI2luY2x1ZGUgPG1hdGguaD4KLSNpbmNsdWRl
IDx3aW5jb2RlYy5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3Rm
L0NoZWNrZWRBcml0aG1ldGljLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1z
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQotewotICAgIGlmIChzaXplLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSBjb250ZXh0LnJlbmRlcmluZ01v
ZGUoKTsKLSAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1
ZmZlclNpemUoc2l6ZSwgY29udGV4dCk7Ci0gICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIobmV3IEltYWdlQnVmZmVyKHNjYWxl
ZFNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIHJlbmRlcmluZ01vZGUsIG51bGxwdHIsICZjb250
ZXh0LCBzdWNjZXNzKSk7Ci0KLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgLy8gU2V0IHVwIGEgY29ycmVzcG9uZGluZyBzY2FsZSBmYWN0b3Igb24gdGhl
IGdyYXBoaWNzIGNvbnRleHQuCi0gICAgYnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoRmxvYXRTaXpl
KHNjYWxlZFNpemUud2lkdGgoKSAvIHNpemUud2lkdGgoKSwgc2NhbGVkU2l6ZS5oZWlnaHQoKSAv
IHNpemUuaGVpZ2h0KCkpKTsKLSAgICByZXR1cm4gYnVmZmVyOwotfQotCi1JbWFnZUJ1ZmZlcjo6
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UgLypjb2xvclNwYWNlKi8sIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
Y29uc3QgSG9zdFdpbmRvdyosIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCwg
Ym9vbCYgc3VjY2VzcykKLSAgICA6IG1fbG9naWNhbFNpemUoc2l6ZSkKLSAgICAsIG1fcmVzb2x1
dGlvblNjYWxlKHJlc29sdXRpb25TY2FsZSkKLXsKLSAgICBzdWNjZXNzID0gZmFsc2U7IC8vIE1h
a2UgZWFybHkgcmV0dXJuIG1lYW4gZmFpbHVyZS4KLSAgICBmbG9hdCBzY2FsZWRXaWR0aCA9IHN0
ZDo6Y2VpbChyZXNvbHV0aW9uU2NhbGUgKiBzaXplLndpZHRoKCkpOwotICAgIGZsb2F0IHNjYWxl
ZEhlaWdodCA9IHN0ZDo6Y2VpbChyZXNvbHV0aW9uU2NhbGUgKiBzaXplLmhlaWdodCgpKTsKLQot
ICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYXV0b21hdGljYWxseSB1c2UgYSBsb3dlciByZXNvbHV0
aW9uPwotICAgIGlmICghRmxvYXRTaXplKHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQpLmlzRXhw
cmVzc2libGVBc0ludFNpemUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zaXplID0gSW50
U2l6ZShzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0KTsKLSAgICBtX2RhdGEuYmFja2luZ1N0b3Jl
U2l6ZSA9IG1fc2l6ZTsKLQotICAgIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZyA9IHJlbmRlcmlu
Z01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7Ci0gICAgaWYgKG1fc2l6ZS53aWR0
aCgpIDw9IDAgfHwgbV9zaXplLmhlaWdodCgpIDw9IDApCi0gICAgICAgIHJldHVybjsKLQotICAg
IC8vIFByZXZlbnQgaW50ZWdlciBvdmVyZmxvd3MKLSAgICBtX2RhdGEuYnl0ZXNQZXJSb3cgPSA0
ICogQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KG1fZGF0YS5iYWNraW5nU3RvcmVT
aXplLndpZHRoKCkpOwotICAgIENoZWNrZWQ8c2l6ZV90LCBSZWNvcmRPdmVyZmxvdz4gbnVtQnl0
ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4obV9kYXRhLmJhY2tpbmdTdG9y
ZVNpemUuaGVpZ2h0KCkpICogbV9kYXRhLmJ5dGVzUGVyUm93OwotICAgIGlmIChudW1CeXRlcy5o
YXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8qIHBsYXRmb3JtQ29u
dGV4dCA9IHRhcmdldENvbnRleHQgPyB0YXJnZXRDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSA6
IG51bGxwdHI7Ci0gICAgYXV0byogcmVuZGVyVGFyZ2V0ID0gcGxhdGZvcm1Db250ZXh0ID8gcGxh
dGZvcm1Db250ZXh0LT5yZW5kZXJUYXJnZXQoKSA6IG51bGxwdHI7Ci0KLSAgICBpZiAoIXJlbmRl
clRhcmdldCkKLSAgICAgICAgcmVuZGVyVGFyZ2V0ID0gR3JhcGhpY3NDb250ZXh0OjpkZWZhdWx0
UmVuZGVyVGFyZ2V0KCk7Ci0KLSAgICBhdXRvIGJpdG1hcENvbnRleHQgPSBEaXJlY3QyRDo6Y3Jl
YXRlQml0bWFwUmVuZGVyVGFyZ2V0T2ZTaXplKG1fbG9naWNhbFNpemUsIHJlbmRlclRhcmdldCwg
bV9yZXNvbHV0aW9uU2NhbGUpOwotICAgIGlmICghYml0bWFwQ29udGV4dCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgSFJFU1VMVCBociA9IGJpdG1hcENvbnRleHQtPkdldEJpdG1hcCgmbV9kYXRh
LmJpdG1hcCk7Ci0gICAgaWYgKCFTVUNDRUVERUQoaHIpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX2RhdGEucGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRD4oYml0bWFwQ29udGV4dC5nZXQoKSwgW3RoaXNdKCkgewotICAgICAgICBtX2RhdGEubG9h
ZERhdGFUb0JpdG1hcElmTmVlZGVkKCk7Ci0gICAgfSwgW3RoaXNdKCkgewotICAgICAgICBtX2Rh
dGEubWFya0J1ZmZlck91dE9mU3luYygpOwotICAgIH0pOwotICAgIG1fZGF0YS5jb250ZXh0ID0g
bWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQuZ2V0KCks
IEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7
Ci0KLSAgICBzdWNjZXNzID0gdHJ1ZTsKLX0KLQotSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGlt
YWdlQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2lu
ZG93KiwgYm9vbCYgc3VjY2VzcykKLSAgICA6IEltYWdlQnVmZmVyKHNpemUsIHJlc29sdXRpb25T
Y2FsZSwgaW1hZ2VDb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLCBudWxscHRyLCBudWxscHRyLCBz
dWNjZXNzKQotewotfQotCi1JbWFnZUJ1ZmZlcjo6fkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0Owot
Ci1HcmFwaGljc0NvbnRleHQmIEltYWdlQnVmZmVyOjpjb250ZXh0KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gKm1fZGF0YS5jb250ZXh0OwotfQotCi12b2lkIEltYWdlQnVmZmVyOjpmbHVzaENvbnRl
eHQoKSBjb25zdAotewotICAgIGNvbnRleHQoKS5mbHVzaCgpOwotfQotCi1zdGF0aWMgQ09NUHRy
PElEMkQxQml0bWFwPiBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShJRDJEMUJpdG1hcFJl
bmRlclRhcmdldCogYml0bWFwVGFyZ2V0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEludFNp
emUmIGJvdW5kcykKLXsKLSAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2UgPyBuYXRpdmVJ
bWFnZVNpemUoaW1hZ2UpIDogRmxvYXRTaXplKCk7Ci0KLSAgICBpZiAoaW1hZ2UgJiYgKHN0YXRp
Y19jYXN0PHNpemVfdD4oaW1hZ2VTaXplLndpZHRoKCkpICE9IHN0YXRpY19jYXN0PHNpemVfdD4o
Ym91bmRzLndpZHRoKCkpIHx8IHN0YXRpY19jYXN0PHNpemVfdD4oaW1hZ2VTaXplLmhlaWdodCgp
KSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJvdW5kcy5oZWlnaHQoKSkpKSB7Ci0gICAgICAgIENP
TVB0cjxJRDJEMUJpdG1hcD4gY3JvcHBlZEJpdG1hcCA9IERpcmVjdDJEOjpjcmVhdGVCaXRtYXAo
Yml0bWFwVGFyZ2V0LCBib3VuZHMpOwotICAgICAgICBpZiAoY3JvcHBlZEJpdG1hcCkgewotICAg
ICAgICAgICAgYXV0byBzb3VyY2VSZWN0ID0gRDJEMTo6UmVjdFUoMCwgMCwgYm91bmRzLndpZHRo
KCksIGJvdW5kcy5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBIUkVTVUxUIGhyID0gY3JvcHBlZEJp
dG1hcC0+Q29weUZyb21CaXRtYXAobnVsbHB0ciwgaW1hZ2UsICZzb3VyY2VSZWN0KTsKLSAgICAg
ICAgICAgIGlmIChTVUNDRUVERUQoaHIpKQotICAgICAgICAgICAgICAgIHJldHVybiBjcm9wcGVk
Qml0bWFwOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGltYWdlOwotfQotCi1zdGF0
aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKElE
MkQxQml0bWFwUmVuZGVyVGFyZ2V0KiBiaXRtYXBUYXJnZXQsIENPTVB0cjxJRDJEMUJpdG1hcD4m
JiBpbWFnZSwgSW50U2l6ZSBpbnRlcm5hbFNpemUsIEludFNpemUgbG9naWNhbFNpemUsIEludFNp
emUgYmFja2luZ1N0b3JlU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBQcmVzZXJ2ZVJlc29s
dXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQotewotICAgIGlmIChyZXNvbHV0aW9uU2NhbGUgPT0g
MSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCi0gICAg
ICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoYml0bWFwVGFyZ2V0LCBp
bWFnZS5nZXQoKSwgaW50ZXJuYWxTaXplKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6
IE5lZWQgdG8gaW1wbGVtZW50IHNjYWxlZCB2ZXJzaW9uCi0gICAgICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgfQotCi0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSk7Ci19Ci0KLVJl
ZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlC
ZWhhdmlvciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKLXsK
LSAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGltYWdlOwotICAgIGlmIChtX3Jlc29sdXRpb25TY2Fs
ZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykK
LSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKTsKLSAgICBlbHNl
Ci0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsK
LQotICAgIGF1dG8gYml0bWFwVGFyZ2V0ID0gcmVpbnRlcnByZXRfY2FzdDxJRDJEMUJpdG1hcFJl
bmRlclRhcmdldCo+KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgcmV0dXJuIGNy
ZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoYml0bWFwVGFyZ2V0LCBXVEZNb3Zl
KGltYWdlKSwgaW50ZXJuYWxTaXplKCksIGxvZ2ljYWxTaXplKCksIG1fZGF0YS5iYWNraW5nU3Rv
cmVTaXplLCBtX3Jlc29sdXRpb25TY2FsZSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKLX0KLQotUmVm
UHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGltYWdlQnVmZmVyLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0
aW9uKQotewotICAgIEludFNpemUgaW50ZXJuYWxTaXplID0gaW1hZ2VCdWZmZXItPmludGVybmFs
U2l6ZSgpOwotICAgIEludFNpemUgbG9naWNhbFNpemUgPSBpbWFnZUJ1ZmZlci0+bG9naWNhbFNp
emUoKTsKLSAgICBJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUgPSBpbWFnZUJ1ZmZlci0+bV9kYXRh
LmJhY2tpbmdTdG9yZVNpemU7Ci0gICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gaW1hZ2VCdWZm
ZXItPm1fcmVzb2x1dGlvblNjYWxlOwotCi0gICAgQ09NUHRyPElEMkQxQml0bWFwUmVuZGVyVGFy
Z2V0PiBiaXRtYXBUYXJnZXQ7Ci0gICAgSFJFU1VMVCBociA9IGltYWdlQnVmZmVyLT5jb250ZXh0
KCkucGxhdGZvcm1Db250ZXh0KCktPnJlbmRlclRhcmdldCgpLT5RdWVyeUludGVyZmFjZSgmYml0
bWFwVGFyZ2V0KTsKLSAgICBpZiAoIVNVQ0NFRURFRChocikpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQo
Yml0bWFwVGFyZ2V0LmdldCgpLCBzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2VCdWZm
ZXIpKSwgaW50ZXJuYWxTaXplLCBsb2dpY2FsU2l6ZSwgYmFja2luZ1N0b3JlU2l6ZSwgcmVzb2x1
dGlvblNjYWxlLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwotfQotCi1DT01QdHI8SUQyRDFCaXRtYXA+
IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gaW1hZ2VCdWZmZXIpCi17Ci0gICAgLy8gRklYTUU6IFNlZSBpZiB3ZSBjYW4gcmV1c2Ug
dGhlIG9uLWhhcmR3YXJlIGltYWdlLgotICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+Y29weU5hdGl2
ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLX0KLQotQ09NUHRyPElEMkQxQml0bWFwPiBJ
bWFnZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9y
KSBjb25zdAotewotICAgIENPTVB0cjxJRDJEMUJpdG1hcFJlbmRlclRhcmdldD4gYml0bWFwVGFy
Z2V0OwotICAgIEhSRVNVTFQgaHIgPSBjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPnJlbmRl
clRhcmdldCgpLT5RdWVyeUludGVyZmFjZSgmYml0bWFwVGFyZ2V0KTsKLSAgICBpZiAoIVNVQ0NF
RURFRChocikpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgQ09NUHRyPElEMkQxQml0
bWFwPiBpbWFnZTsKLSAgICBociA9IGJpdG1hcFRhcmdldC0+R2V0Qml0bWFwKCZpbWFnZSk7Ci0g
ICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwotCi0gICAgLy8gRklYTUU6IG1fZGF0YS5kYXRhIGlz
IG51bGxwdHIgZXZlbiB3aGVuIGFza2luZyB0byBjb3B5IGJhY2tpbmcgc3RvcmUgbGVhZGluZyB0
byB0ZXN0IGZhaWx1cmVzLgotICAgIGlmIChjb3B5QmVoYXZpb3IgPT0gQ29weUJhY2tpbmdTdG9y
ZSAmJiBtX2RhdGEuZGF0YS5pc0VtcHR5KCkpCi0gICAgICAgIGNvcHlCZWhhdmlvciA9IERvbnRD
b3B5QmFja2luZ1N0b3JlOwotCi0gICAgQ2hlY2tlZDxzaXplX3QsIFJlY29yZE92ZXJmbG93PiBu
dW1CeXRlcyA9IENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PihtX2RhdGEuYmFja2lu
Z1N0b3JlU2l6ZS5oZWlnaHQoKSkgKiBtX2RhdGEuYnl0ZXNQZXJSb3c7Ci0gICAgaWYgKG51bUJ5
dGVzLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAo
IWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7Ci0gICAgICAgIHN3aXRjaCAoY29w
eUJlaGF2aW9yKSB7Ci0gICAgICAgIGNhc2UgRG9udENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICAgICAg
RDJEMV9SRUNUX1UgYmFja2luZ1N0b3JlRGltZW5zdGlvbnMgPSBJbnRSZWN0KEludFBvaW50KCks
IG1fZGF0YS5iYWNraW5nU3RvcmVTaXplKTsKLSAgICAgICAgICAgIGltYWdlLT5Db3B5RnJvbU1l
bW9yeSgmYmFja2luZ1N0b3JlRGltZW5zdGlvbnMsIG1fZGF0YS5kYXRhLmRhdGEoKSwgMzIpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotI2lm
IFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCi0gICAgZWxzZQotICAgICAgICBp
bWFnZSA9IG1fZGF0YS5zdXJmYWNlLT5jcmVhdGVJbWFnZSgpOwotI2VuZGlmCi0KLSAgICByZXR1
cm4gaW1hZ2U7Ci19Ci0KLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBpbWFnZUJ1ZmZl
ci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwotfQotCi12
b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgRmxvYXRSZWN0IGFkanVzdGVkU3Jj
UmVjdCA9IHNyY1JlY3Q7Ci0gICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNj
YWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7Ci0KLSAgICBhdXRvIGNvbXBhdGlibGVCaXRtYXAgPSBt
X2RhdGEuY29tcGF0aWJsZUJpdG1hcChkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+cmVu
ZGVyVGFyZ2V0KCkpOwotCi0gICAgRmxvYXRTaXplIGN1cnJlbnRJbWFnZVNpemUgPSBuYXRpdmVJ
bWFnZVNpemUoY29tcGF0aWJsZUJpdG1hcCk7Ci0gICAgaWYgKGN1cnJlbnRJbWFnZVNpemUuaXNa
ZXJvKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZShjb21wYXRpYmxlQml0bWFwLCBjdXJyZW50SW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRT
cmNSZWN0LCBvcHRpb25zKTsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewotICAgIEZsb2F0UmVjdCBh
ZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jl
c29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwotCi0gICAgaWYgKCFjb250ZXh0KCku
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewotICAgICAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZj
b250ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewotICAgICAg
ICAgICAgaWYgKFJlZlB0cjxJbWFnZT4gY29weSA9IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3Jl
KSkgLy8gRHJhd2luZyBpbnRvIG91ciBvd24gYnVmZmVyLCBuZWVkIHRvIGRlZXAgY29weS4KLSAg
ICAgICAgICAgICAgICBjb3B5LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFk
anVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4gaW1hZ2VG
b3JSZW5kZXJpbmcgPSBjb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICAg
ICAgICAgIGltYWdlRm9yUmVuZGVyaW5nLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJl
Y3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9w
dGlvbnMpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKFJlZlB0cjxJbWFn
ZT4gY29weSA9IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgICAgIGNvcHkt
PmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7Ci0gICAgfQotfQotCi1SZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURh
dGEoY29uc3QgSW50UmVjdCYgcmVjdCwgSW50U2l6ZSogcGl4ZWxBcnJheURpbWVuc2lvbnMsIENv
b3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKLXsKLSAgICBpZiAoY29udGV4
dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCi0gICAgICAgIGZsdXNoQ29udGV4dCgpOwotCi0g
ICAgSW50UmVjdCBzcmNSZWN0ID0gcmVjdDsKLSAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PSBM
b2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSkKLSAgICAgICAgc3JjUmVjdC5zY2FsZShtX3Jlc29sdXRp
b25TY2FsZSk7Ci0KLSAgICBpZiAocGl4ZWxBcnJheURpbWVuc2lvbnMpCi0gICAgICAgICpwaXhl
bEFycmF5RGltZW5zaW9ucyA9IHNyY1JlY3Quc2l6ZSgpOwotCi0gICAgcmV0dXJuIG1fZGF0YS5n
ZXREYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgc3JjUmVjdCwg
aW50ZXJuYWxTaXplKCksIGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCAxKTsKLX0K
LQotUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGll
ZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBJbnRTaXplKiBwaXhlbEFycmF5RGltZW5z
aW9ucywgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAotewotICAgIGlm
IChjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKLSAgICAgICAgZmx1c2hDb250ZXh0
KCk7Ci0KLSAgICBJbnRSZWN0IHNyY1JlY3QgPSByZWN0OwotICAgIGlmIChjb29yZGluYXRlU3lz
dGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKQotICAgICAgICBzcmNSZWN0LnNjYWxlKG1f
cmVzb2x1dGlvblNjYWxlKTsKLQotICAgIGlmIChwaXhlbEFycmF5RGltZW5zaW9ucykKLSAgICAg
ICAgKnBpeGVsQXJyYXlEaW1lbnNpb25zID0gc3JjUmVjdC5zaXplKCk7Ci0KLSAgICByZXR1cm4g
bV9kYXRhLmdldERhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgc3Jj
UmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCAx
KTsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KGNvbnN0IFVpbnQ4Q2xhbXBl
ZEFycmF5JiBzb3VyY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYnVmZmVyRm9ybWF0LCBjb25z
dCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pCi17
Ci0gICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQotICAgICAgICBmbHVz
aENvbnRleHQoKTsKLQotICAgIEludFJlY3Qgc2NhbGVkU291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7
Ci0gICAgSW50U2l6ZSBzY2FsZWRTb3VyY2VTaXplID0gc291cmNlU2l6ZTsKLSAgICBpZiAoY29v
cmRpbmF0ZVN5c3RlbSA9PSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSkgewotICAgICAgICBzY2Fs
ZWRTb3VyY2VSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKLSAgICAgICAgc2NhbGVkU291
cmNlU2l6ZS5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7Ci0gICAgfQotCi0gICAgbV9kYXRhLnB1
dERhdGEoc291cmNlLCBidWZmZXJGb3JtYXQsIHNjYWxlZFNvdXJjZVNpemUsIHNjYWxlZFNvdXJj
ZVJlY3QsIGRlc3RQb2ludCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQoKS5pc0FjY2VsZXJhdGVk
Q29udGV4dCgpLCAxKTsKLX0KLQotU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3Qg
U3RyaW5nJiwgT3B0aW9uYWw8ZG91YmxlPiwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJkYXRhOiwiX3M7Ci19Ci0KLVZlY3Rv
cjx1aW50OF90PiBJbWFnZUJ1ZmZlcjo6dG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9w
dGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiB7IH07Ci19Ci0KLVN0cmluZyBJbWFnZURhdGFUb0RhdGFVUkwoY29uc3QgSW1h
Z2VEYXRhJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVh
bGl0eSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiZGF0YTosIl9zOwot
fQotCi12b2lkIEltYWdlQnVmZmVyOjp0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2UsIENv
bG9yU3BhY2UpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI3MGFiZWRmMGE2MzUwZmQ1NTk0OGQ0ODFhYjc4OTVmNjIwYjQ4YzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCkBAIC0wLDAgKzEsMzI0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oIgorCisjaWYgVVNFKERJUkVDVDJE
KQorCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKKyNpbmNsdWRlICJDT01QdHIuaCIKKyNpbmNs
dWRlICJEaXJlY3QyRFV0aWxpdGllcy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgor
I2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2RlckRpcmVjdDJELmgi
CisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dERpcmVj
dDJELmgiCisjaW5jbHVkZSA8ZDJkMV8xLmg+CisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUg
PHdpbmNvZGVjLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZCk7CisKK3N0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZD4gSW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQor
eworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCBy
ZXNvbHV0aW9uU2NhbGUpOworICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgYXV0byogcGxhdGZvcm1Db250ZXh0ID0gdGFyZ2V0Q29u
dGV4dCA/IHRhcmdldENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpIDogbnVsbHB0cjsKKyAgICBh
dXRvKiByZW5kZXJUYXJnZXQgPSBwbGF0Zm9ybUNvbnRleHQgPyBwbGF0Zm9ybUNvbnRleHQtPnJl
bmRlclRhcmdldCgpIDogbnVsbHB0cjsKKworICAgIGlmICghcmVuZGVyVGFyZ2V0KQorICAgICAg
ICByZW5kZXJUYXJnZXQgPSBHcmFwaGljc0NvbnRleHQ6OmRlZmF1bHRSZW5kZXJUYXJnZXQoKTsK
KworICAgIGF1dG8gYml0bWFwQ29udGV4dCA9IERpcmVjdDJEOjpjcmVhdGVCaXRtYXBSZW5kZXJU
YXJnZXRPZlNpemUoc2l6ZSwgcmVuZGVyVGFyZ2V0LCByZXNvbHV0aW9uU2NhbGUpOworICAgIGlm
ICghYml0bWFwQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTmF0aXZlSW1hZ2VQdHIg
Yml0bWFwOworICAgIEhSRVNVTFQgaHIgPSBiaXRtYXBDb250ZXh0LT5HZXRCaXRtYXAoJmJpdG1h
cCk7CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IHBsYXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KGJp
dG1hcENvbnRleHQuZ2V0KCksIFt0aGlzXSgpIHsKKyAgICAgICAgbV9kYXRhLmxvYWREYXRhVG9C
aXRtYXBJZk5lZWRlZCgpOworICAgIH0sIFt0aGlzXSgpIHsKKyAgICAgICAgbV9kYXRhLm1hcmtC
dWZmZXJPdXRPZlN5bmMoKTsKKyAgICB9KTsKKworICAgIGlmICghcGxhdGZvcm1Db250ZXh0KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY29udGV4dCA9IG1ha2VVbmlxdWU8
R3JhcGhpY3NDb250ZXh0PihwbGF0Zm9ybUNvbnRleHQuZ2V0KCksIEdyYXBoaWNzQ29udGV4dDo6
Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CisgICAgaWYgKCFjb250ZXh0
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ+KG5ldyBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZChzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3Zl
KHBsYXRmb3JtQ29udGV4dCksIFdURk1vdmUoY29udGV4dCksIFdURk1vdmUoYml0bWFwKSkpOwor
fQorCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ+IEltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgbnVsbHB0cik7Cit9
CisKK0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIHN0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4mJiBwbGF0Zm9ybUNvbnRleHQsIHN0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCwgTmF0aXZlSW1hZ2VQdHImJiBi
aXRtYXApCisgICAgOiBJbWFnZUJ1ZmZlckNHQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNp
emUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSkKKyAgICAsIG1fcGxhdGZvcm1Db250ZXh0
KFdURk1vdmUocGxhdGZvcm1Db250ZXh0KSkKKyAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRl
eHQpKQorICAgICwgbV9iaXRtYXAoV1RGTW92ZShiaXRtYXApKQoreworfQorCitHcmFwaGljc0Nv
bnRleHQmIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gKm1fY29udGV4dDsKK30KKwordm9pZCBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZDo6Zmx1c2hDb250ZXh0KCkKK3sKKyAgICBjb250ZXh0KCkuZmx1c2goKTsKK30KKworTmF0aXZl
SW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNr
aW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK3sKKyAgICBDT01QdHI8SUQyRDFCaXRt
YXBSZW5kZXJUYXJnZXQ+IGJpdG1hcFRhcmdldDsKKyAgICBIUkVTVUxUIGhyID0gY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpLT5yZW5kZXJUYXJnZXQoKS0+UXVlcnlJbnRlcmZhY2UoJmJpdG1h
cFRhcmdldCk7CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gaW1hZ2U7CisgICAgaHIgPSBiaXRtYXBUYXJn
ZXQtPkdldEJpdG1hcCgmaW1hZ2UpOworICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKKworICAg
IC8vIEZJWE1FOiBtX2RhdGEuZGF0YSBpcyBudWxscHRyIGV2ZW4gd2hlbiBhc2tpbmcgdG8gY29w
eSBiYWNraW5nIHN0b3JlIGxlYWRpbmcgdG8gdGVzdCBmYWlsdXJlcy4KKyAgICBpZiAoY29weUJl
aGF2aW9yID09IENvcHlCYWNraW5nU3RvcmUgJiYgbV9kYXRhLmRhdGEuaXNFbXB0eSgpKQorICAg
ICAgICBjb3B5QmVoYXZpb3IgPSBEb250Q29weUJhY2tpbmdTdG9yZTsKKworICAgIENoZWNrZWQ8
c2l6ZV90LCBSZWNvcmRPdmVyZmxvdz4gbnVtQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBSZWNv
cmRPdmVyZmxvdz4obV9kYXRhLmJhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpICogbV9kYXRhLmJ5
dGVzUGVyUm93OworICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgaWYgKGNvcHlCZWhhdmlvciA9PSBDb3B5QmFja2luZ1N0b3Jl
KSB7CisgICAgICAgIEQyRDFfUkVDVF9VIGJhY2tpbmdTdG9yZURpbWVuc3Rpb25zID0gSW50UmVj
dChJbnRQb2ludCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSk7CisgICAgICAgIGltYWdlLT5D
b3B5RnJvbU1lbW9yeSgmYmFja2luZ1N0b3JlRGltZW5zdGlvbnMsIG1fZGF0YS5kYXRhLmRhdGEo
KSwgMzIpOworCisgICAgfQorCisgICAgcmV0dXJuIGltYWdlOworfQorCitzdGF0aWMgTmF0aXZl
SW1hZ2VQdHIgY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoSUQyRDFCaXRtYXBSZW5kZXJU
YXJnZXQqIGJpdG1hcFRhcmdldCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBJbnRTaXplJiBi
b3VuZHMpCit7CisgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlID8gbmF0aXZlSW1hZ2VT
aXplKGltYWdlKSA6IEZsb2F0U2l6ZSgpOworCisgICAgaWYgKGltYWdlICYmIChzdGF0aWNfY2Fz
dDxzaXplX3Q+KGltYWdlU2l6ZS53aWR0aCgpKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJvdW5k
cy53aWR0aCgpKSB8fCBzdGF0aWNfY2FzdDxzaXplX3Q+KGltYWdlU2l6ZS5oZWlnaHQoKSkgIT0g
c3RhdGljX2Nhc3Q8c2l6ZV90Pihib3VuZHMuaGVpZ2h0KCkpKSkgeworICAgICAgICBDT01QdHI8
SUQyRDFCaXRtYXA+IGNyb3BwZWRCaXRtYXAgPSBEaXJlY3QyRDo6Y3JlYXRlQml0bWFwKGJpdG1h
cFRhcmdldCwgYm91bmRzKTsKKyAgICAgICAgaWYgKGNyb3BwZWRCaXRtYXApIHsKKyAgICAgICAg
ICAgIGF1dG8gc291cmNlUmVjdCA9IEQyRDE6OlJlY3RVKDAsIDAsIGJvdW5kcy53aWR0aCgpLCBi
b3VuZHMuaGVpZ2h0KCkpOworICAgICAgICAgICAgSFJFU1VMVCBociA9IGNyb3BwZWRCaXRtYXAt
PkNvcHlGcm9tQml0bWFwKG51bGxwdHIsIGltYWdlLCAmc291cmNlUmVjdCk7CisgICAgICAgICAg
ICBpZiAoU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JvcHBlZEJpdG1h
cDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBpbWFnZTsKK30KKworc3RhdGljIFJl
ZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChJRDJEMUJp
dG1hcFJlbmRlclRhcmdldCogYml0bWFwVGFyZ2V0LCBDT01QdHI8SUQyRDFCaXRtYXA+JiYgaW1h
Z2UsIEludFNpemUgaW50ZXJuYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFByZXNlcnZl
UmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCit7CisgICAgaWYgKHJlc29sdXRpb25TY2Fs
ZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykK
KyAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShiaXRtYXBUYXJn
ZXQsIGltYWdlLmdldCgpLCBpbnRlcm5hbFNpemUpOworICAgIGVsc2UgeworICAgICAgICAvLyBG
SVhNRTogTmVlZCB0byBpbXBsZW1lbnQgc2NhbGVkIHZlcnNpb24KKyAgICAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICB9CisKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKTsKK30K
KworUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlKEJh
Y2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVS
ZXNvbHV0aW9uKSBjb25zdAoreworICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOworICAgIGlmICht
X3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJl
c29sdXRpb246OlllcykKKyAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2
aW9yKTsKKyAgICBlbHNlCisgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5
QmFja2luZ1N0b3JlKTsKKworICAgIGF1dG8gYml0bWFwVGFyZ2V0ID0gcmVpbnRlcnByZXRfY2Fz
dDxJRDJEMUJpdG1hcFJlbmRlclRhcmdldCo+KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSk7
CisgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoYml0bWFw
VGFyZ2V0LCBXVEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxTaXplKCksIHJlc29sdXRpb25TY2FsZSgp
LCBwcmVzZXJ2ZVJlc29sdXRpb24pOworfQorCitSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJl
c29sdXRpb24pCit7CisgICAgQ09NUHRyPElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0PiBiaXRtYXBU
YXJnZXQ7CisgICAgSFJFU1VMVCBociA9IGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+cmVu
ZGVyVGFyZ2V0KCktPlF1ZXJ5SW50ZXJmYWNlKCZiaXRtYXBUYXJnZXQpOworICAgIGlmICghU1VD
Q0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBOYXRpdmVJbWFnZVB0
ciBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgcmV0
dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoYml0bWFwVGFyZ2V0Lmdl
dCgpLCBXVEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxTaXplKCksIHJlc29sdXRpb25TY2FsZSgpLCBw
cmVzZXJ2ZVJlc29sdXRpb24pOworfQorCitOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZDo6Y29tcGF0aWJsZUJpdG1hcChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFy
Z2V0KQoreworICAgIGxvYWREYXRhVG9CaXRtYXBJZk5lZWRlZCgpOworCisgICAgaWYgKCFyZW5k
ZXJUYXJnZXQpCisgICAgICAgIHJldHVybiBiaXRtYXA7CisKKyAgICBpZiAobV9wbGF0Zm9ybUNv
bnRleHQtPnJlbmRlclRhcmdldCgpID09IHJlbmRlclRhcmdldCkgeworICAgICAgICBDT01QdHI8
SUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQ+IGJpdG1hcFRhcmdldChRdWVyeSwgcmVuZGVyVGFyZ2V0
KTsKKyAgICAgICAgaWYgKGJpdG1hcFRhcmdldCkgeworICAgICAgICAgICAgQ09NUHRyPElEMkQx
Qml0bWFwPiBiYWNraW5nQml0bWFwOworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChiaXRtYXBU
YXJnZXQtPkdldEJpdG1hcCgmYmFja2luZ0JpdG1hcCkpKSB7CisgICAgICAgICAgICAgICAgaWYg
KGJhY2tpbmdCaXRtYXAgIT0gbV9iaXRtYXApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBi
aXRtYXA7CisKKyAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBkcmF3IGFuIElEMkQxQml0bWFw
IHRvIGl0c2VsZi4gTXVzdCByZXR1cm4gYSBjb3B5LgorICAgICAgICAgICAgICAgIENPTVB0cjxJ
RDJEMUJpdG1hcD4gY29waWVkQml0bWFwOworICAgICAgICAgICAgICAgIGlmIChTVUNDRUVERUQo
cmVuZGVyVGFyZ2V0LT5DcmVhdGVCaXRtYXAoYml0bWFwLT5HZXRQaXhlbFNpemUoKSwgRGlyZWN0
MkQ6OmJpdG1hcFByb3BlcnRpZXMoKSwgJmNvcGllZEJpdG1hcCkpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChTVUNDRUVERUQoY29waWVkQml0bWFwLT5Db3B5RnJvbUJpdG1hcChudWxscHRy
LCBtX2JpdG1hcC5nZXQoKSwgbnVsbHB0cikpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGNvcGllZEJpdG1hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBhdXRvIHNpemUgPSBtX2JpdG1hcC0+R2V0UGl4ZWxTaXplKCk7
CisgICAgQVNTRVJUKHNpemUuaGVpZ2h0ICYmIHNpemUud2lkdGgpOworCisgICAgQ2hlY2tlZDx1
bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzID0gc2l6ZS53aWR0aCAqIHNpemUuaGVp
Z2h0ICogNDsKKyAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIC8vIENvcHkgdGhlIGJpdHMgZnJvbSBjdXJyZW50IHJlbmRlclRh
cmdldCB0byB0aGUgb3V0cHV0IHRhcmdldC4KKyAgICAvLyBXZSBjYW5ub3QgYWNjZXNzIHRoZSBk
YXRhIGJhY2tpbmcgYW4gSVdJQ0JpdG1hcCB3aGlsZSBhbiBhY3RpdmUgZHJhdyBzZXNzaW9uIGlz
IG9wZW4uCisgICAgY29udGV4dC0+ZW5kRHJhdygpOworCisgICAgQ09NUHRyPElEMkQxRGV2aWNl
Q29udGV4dD4gc291cmNlRGV2aWNlQ29udGV4dCA9IG1fcGxhdGZvcm1Db250ZXh0LT5kZXZpY2VD
b250ZXh0KCk7CisgICAgaWYgKCFzb3VyY2VEZXZpY2VDb250ZXh0KQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIENPTVB0cjxJRDJEMUJpdG1hcDE+IHNvdXJjZUNQVUJpdG1hcDsKKyAg
ICBEMkQxX0JJVE1BUF9QUk9QRVJUSUVTMSBiaXRtYXBQcm9wZXJ0aWVzID0gRDJEMTo6Qml0bWFw
UHJvcGVydGllczEoRDJEMV9CSVRNQVBfT1BUSU9OU19DUFVfUkVBRCB8IEQyRDFfQklUTUFQX09Q
VElPTlNfQ0FOTk9UX0RSQVcsIERpcmVjdDJEOjpwaXhlbEZvcm1hdCgpKTsKKyAgICBIUkVTVUxU
IGhyID0gc291cmNlRGV2aWNlQ29udGV4dC0+Q3JlYXRlQml0bWFwKG1fYml0bWFwLT5HZXRQaXhl
bFNpemUoKSwgbnVsbHB0ciwgYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCksIGJpdG1hcFByb3BlcnRp
ZXMsICZzb3VyY2VDUFVCaXRtYXApOworICAgIGlmICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIXNvdXJjZUNQVUJpdG1hcCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBociA9IHNvdXJjZUNQVUJpdG1hcC0+Q29weUZyb21CaXRtYXAo
bnVsbHB0ciwgbV9iaXRtYXAuZ2V0KCksIG51bGxwdHIpOworICAgIGlmICghU1VDQ0VFREVEKGhy
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBEMkQxX01BUFBFRF9SRUNUIG1hcHBl
ZFNvdXJjZURhdGE7CisgICAgaHIgPSBzb3VyY2VDUFVCaXRtYXAtPk1hcChEMkQxX01BUF9PUFRJ
T05TX1JFQUQsICZtYXBwZWRTb3VyY2VEYXRhKTsKKyAgICBpZiAoIVNVQ0NFRURFRChocikpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ09NUHRyPElEMkQxRGV2aWNlQ29udGV4dD4g
dGFyZ2V0RGV2aWNlQ29udGV4dDsKKyAgICBociA9IHJlbmRlclRhcmdldC0+UXVlcnlJbnRlcmZh
Y2UoJnRhcmdldERldmljZUNvbnRleHQpOworICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKKwor
ICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gY29tcGF0aWJsZUJpdG1hcDsKKyAgICBociA9IHRhcmdl
dERldmljZUNvbnRleHQtPkNyZWF0ZUJpdG1hcChiaXRtYXAtPkdldFBpeGVsU2l6ZSgpLCBtYXBw
ZWRTb3VyY2VEYXRhLmJpdHMsIG1hcHBlZFNvdXJjZURhdGEucGl0Y2gsIERpcmVjdDJEOjpiaXRt
YXBQcm9wZXJ0aWVzKCksICZjb21wYXRpYmxlQml0bWFwKTsKKyAgICBpZiAoIVNVQ0NFRURFRCho
cikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaHIgPSBzb3VyY2VDUFVCaXRtYXAt
PlVubWFwKCk7CisgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOworCisgICAgY29udGV4dC0+YmVn
aW5EcmF3KCk7CisKKyAgICByZXR1cm4gY29tcGF0aWJsZUJpdG1hcDsKK30KKwordm9pZCBJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIEZsb2F0UmVjdCBhZGp1
c3RlZFNyY1JlY3QgPSBzcmNSZWN0OworICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29s
dXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOworCisgICAgYXV0byBjb21wYXRpYmxlQml0
bWFwID0gY29tcGF0aWJsZUJpdG1hcChkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+cmVu
ZGVyVGFyZ2V0KCkpOworCisgICAgRmxvYXRTaXplIGN1cnJlbnRJbWFnZVNpemUgPSBuYXRpdmVJ
bWFnZVNpemUoY29tcGF0aWJsZUJpdG1hcCk7CisgICAgaWYgKGN1cnJlbnRJbWFnZVNpemUuaXNa
ZXJvKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZShjb21wYXRpYmxlQml0bWFwLCBjdXJyZW50SW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRT
cmNSZWN0LCBvcHRpb25zKTsKK30KKwordm9pZCBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorewor
ICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OworICAgIGFkanVzdGVkU3Jj
UmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CisKKyAgICBpZiAoYXV0byBpbWFnZSA9IGNv
cHlJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBE
b250Q29weUJhY2tpbmdTdG9yZSkpCisgICAgICAgIGltYWdlLT5kcmF3UGF0dGVybihkZXN0Q29u
dGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IHNwYWNpbmcsIG9wdGlvbnMpOworfQorCitTdHJpbmcgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tl
bmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxkb3VibGU+LCBQcmVzZXJ2ZVJl
c29sdXRpb24pIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gImRh
dGE6LCJfczsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
Ojp0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwor
VmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjp0b0JHUkFEYXRhKCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB7IH07Cit9CisKK1Jl
ZlB0cjxJbWFnZURhdGE+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpnZXRJbWFnZURhdGEo
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1Jl
Y3QpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gSW1hZ2VCdWZm
ZXJCYWNrZW5kOjpnZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBudWxscHRyKTsK
K30KKwordm9pZCBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6cHV0SW1hZ2VEYXRhKEFscGhh
UHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRh
LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRJbWFnZURh
dGEoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBudWxscHRyKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKERJUkVDVDJEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDE1NjA3ZjM2NDNk
YmE3ZWU1ZWVmZjJmNzFhYzM5Mzk2MDA3ZTEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgK
QEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShESVJFQ1QyRCkKKworI2luY2x1ZGUgIklt
YWdlQnVmZmVyQmFja2VuZC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZCA6IHB1Ymxp
YyBJbWFnZUJ1ZmZlckJhY2tlbmQgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQpOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZD4gY3JlYXRl
KGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOworCisgICAgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBmbHVzaENvbnRl
eHQoKSBvdmVycmlkZTsKKworICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNr
aW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9u
KSBjb25zdCBvdmVycmlkZTsKKworICAgIFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVz
ZXJ2ZVJlc29sdXRpb24pIG92ZXJyaWRlOworCisgICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1
dGlvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0IG92ZXJyaWRl
OworICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAg
ICBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBv
dXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHB1
dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFn
ZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50
KSBvdmVycmlkZTsKKworcHJvdGVjdGVkOgorICAgIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIHBoeXNpY2FsU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlKTsKKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4gbV9wbGF0Zm9ybUNvbnRleHQ7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0OworICAgIE5hdGl2ZUltYWdl
UHRyIG1fYml0bWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
VVNFKERJUkVDVDJEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL01vY2tHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tHU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IDQ5MzY3Y2IyOWQwZjIwZDE3MTIyMGIzMjAwYzk0
ZTVjY2QzNzAxYmQuLjMyYmY4NmJjNmZiNjhjMWU2ZDYzZGVkODc2Mjc1MzUzZDU0YWZiODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9N
b2NrR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiAgICAgICAgIGludCBmcHNOdW1l
cmF0b3IsIGZwc0Rlbm9taW5hdG9yOwogICAgICAgICBnc3RfdXRpbF9kb3VibGVfdG9fZnJhY3Rp
b24oZnJhbWVSYXRlKCksICZmcHNOdW1lcmF0b3IsICZmcHNEZW5vbWluYXRvcik7Ci0gICAgICAg
IGF1dG8gaW1hZ2VTaXplID0gaW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpOworICAgICAgICBh
dXRvIGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpOwogICAgICAgICBhdXRv
IGNhcHMgPSBhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X3NpbXBsZSgidmlkZW8veC1yYXciLAogICAg
ICAgICAgICAgImZvcm1hdCIsIEdfVFlQRV9TVFJJTkcsICJCR1JBIiwKICAgICAgICAgICAgICJ3
aWR0aCIsIEdfVFlQRV9JTlQsIGltYWdlU2l6ZS53aWR0aCgpLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAppbmRleCA4NTFhODY2Nzg5YjQ4MzU0MjJjNTdhNDFkZGE3
NWEwYmNhZDdkNjc1Li4wNDJkNWRkN2JiODM0ZjFlM2JlYTFhOWUxYTkwMmZlM2RiNmVmZmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIkJveFNoYXBlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNs
dWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJQb2x5Z29uU2hhcGUuaCIKICNpbmNs
dWRlICJSYXN0ZXJTaGFwZS5oIgpAQCAtMTg4LDggKzE4OSw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxT
aGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdlKiBpbWFnZSwgZmxvYXQgdGhyZXNo
b2xkLCBjCiAgICAgICAgIGlmIChpbWFnZSkKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5k
cmF3SW1hZ2UoKmltYWdlLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsK
IAotICAgICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVsQXJyYXkgPSBpbWFnZUJ1
ZmZlci0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VS
ZWN0LnNpemUoKSkpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChwaXhlbEFycmF5KTsKKyAgICAg
ICAgYXV0byBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgeyBJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6
ZSgpIH0pOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpbWFnZURhdGEgJiYgaW1hZ2VEYXRhLT5k
YXRhKCkpOworICAgICAgICBhdXRvKiBwaXhlbEFycmF5ID0gaW1hZ2VEYXRhLT5kYXRhKCk7CiAg
ICAgICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGggPSBwaXhlbEFycmF5LT5sZW5ndGgoKTsK
ICAgICAgICAgdW5zaWduZWQgcGl4ZWxBcnJheU9mZnNldCA9IDM7IC8vIEVhY2ggcGl4ZWwgaXMg
Zm91ciBieXRlczogUkdCQS4KICAgICAgICAgdWludDhfdCBhbHBoYVBpeGVsVGhyZXNob2xkID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4obHJvdW5kZihjbGFtcFRvPGZsb2F0Pih0aHJlc2hvbGQsIDAs
IDEpICogMjU1LjBmKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA2MDc1ZjYzZTFjMjgwMDdmNjc3ZTI5MzdjNWNh
N2JjNjc5MzMyMDI4Li5mNmE5NTQ1ODk4NThlMDBlNGU3YjZhM2MxOWYyMmJhZmE1NzYxZDM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29u
dGV4dC5jcHAKQEAgLTM0Niw3ICszNDYsNyBAQCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1
ZmZlckZvcmVncm91bmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdQogICAg
ICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gbV9wYWludEluZm8tPmNvbnRleHQoKS5n
ZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAg
ICAgICAgSW50U2l6ZSBleHBhbmRlZEJvdW5kaW5nQm94ID0gZXhwYW5kZWRJbnRTaXplKGJvdW5k
aW5nQm94LnNpemUoKSk7CiAgICAgICAgIEludFNpemUgYnVmZmVyU2l6ZShzdGF0aWNfY2FzdDxp
bnQ+KGNlaWwoZXhwYW5kZWRCb3VuZGluZ0JveC53aWR0aCgpICogdHJhbnNmb3JtLnhTY2FsZSgp
KSksIHN0YXRpY19jYXN0PGludD4oY2VpbChleHBhbmRlZEJvdW5kaW5nQm94LmhlaWdodCgpICog
dHJhbnNmb3JtLnlTY2FsZSgpKSkpOwotICAgICAgICBpZiAoYnVmZmVyU2l6ZSAhPSBpbWFnZUJ1
ZmZlci0+aW50ZXJuYWxTaXplKCkpCisgICAgICAgIGlmIChidWZmZXJTaXplICE9IGltYWdlQnVm
ZmVyLT5iYWNrZW5kU2l6ZSgpKQogICAgICAgICAgICAgaW1hZ2VCdWZmZXIucmVzZXQoKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApp
bmRleCA1MWQzMThiNzI0ZTc1MTlkNzI3N2FlNzUwNzczZDFiMjhlOGRkYWEzLi5iMDFiNTRjMTcw
OTAwOTczZWJiZWFjMTZkMzg4ZGIxZDBmODIyNWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNSw2ICsxNSw4IEBAICQoSkFWQVNDUklQ
VENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvbW9kZWxzLnB5CiAkKEpBVkFTQ1JJUFRDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVIpL3h4ZC5wbAogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9j
ZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvUmVu
ZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pF
Q1RfRElSKS9HUFVQcm9jZXNzL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21hYy9jb20uYXBw
bGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMTA3LDYgKzEwOSw3IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvUmVu
ZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDVjOTJiODEzMzUzZGY3MWZlNmQ2ODUwZjM3
YzRmNzNmY2NmNzFlNWUuLjBhNzc3ZjcyMzcxMDhkMTE0ZjZhNDhlZDFhYzRiN2IyNjI4YzMyOGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApA
QCAtMTI5LDYgKzEyOSwxMiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcgogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1l
c3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VzUmVwbGll
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eU1lc3NhZ2VzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUltYWdl
QnVmZmVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKQEAgLTE1NCw2ICsxNjAsOSBAQCAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
ck1lc3NhZ2VzUgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2Vz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU9i
amVjdFJlZ2lzdHJ5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3Nh
Z2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IDM0OWU1NGRjMzBjNDQ5ODJiY2Q4MmUwOWU5NGJiNjZkZTk5ZGNiMTEuLjYwYmUxOThlOGRmY2Nm
OWZhODYwOTkyYWM3YjY1ZjA5YzZhOWYyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
QEAgLTI1LDYgKzI1LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzIFwK
ICAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWFjIFwKICAgICAkKFdlYktpdDIpL0dQVVByb2Nl
c3MvbWVkaWEgXAorICAgICQoV2ViS2l0MikvR1BVUHJvY2Vzcy9SZW5kZXJpbmdCYWNrZW5kIFwK
ICAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3Mvd2VicnRjIFwKICAgICAkKFdlYktpdDIpL05ldHdv
cmtQcm9jZXNzIFwKICAgICAkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMgXApAQCAt
NTIsNiArNTMsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR2VvbG9j
YXRpb24gXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUgXAogICAgICQoV2ViS2l0Mikv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEgXAorICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUvUmVu
ZGVyaW5nQmFja2VuZCBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVS93ZWJydGMgXAog
ICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UgXAogICAgICQoV2ViS2l0Mikv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IgXApAQCAtMTQ1LDYgKzE0Nyw4IEBAIE1FU1NBR0VfUkVDRUlW
RVJTID0gXAogICAgIFBsdWdpblByb3h5IFwKICAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlck1hbmFnZXIgXAogICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyIFwKKwlSZW1vdGVJbWFnZUJ1ZmZlciBcCisJUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBcCiAg
ICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSBcCiAgICAgUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBcCkBAIC0xNTMs
NiArMTU3LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgUmVtb3RlTWVkaWFSZWNvcmRl
ck1hbmFnZXIgXAogICAgIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyIFwKICAgICBSZW1vdGVP
YmplY3RSZWdpc3RyeSBcCisgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IFwKICAgICBS
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAogICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXIgXAogICAgIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAppbmRleCBhNmNlZTU0Yzk3YzkyMTVhNjg3M2Y0ZGNiMTJiZGU0N2MxZGM0MGVjLi5h
NmE1NGZlMTE4ZDA3ZDhkNDQ5MmYxZDZjOTNlY2VhZWQwMzcxZDcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBA
IC0xODYsNzkgKzE4Niw5MiBAQCBMaWJXZWJSVENDb2RlY3NQcm94eSYgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6bGliV2ViUlRDQ29kZWNzUHJveHkoKQogfQogI2VuZGlmCiAKLXZvaWQgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit2b2lkIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKCFtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSk7CisgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkgPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZSgqdGhpcywgcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOworfQorCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSk7CisgICAgQVNTRVJUKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5y
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpID09IHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KTsKKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSA9IG51bGxwdHI7Cit9CisKK2Jv
b2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICByZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29u
bmVjdGlvbiwgZGVjb2Rlcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfSBlbHNlIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAg
ICAgIHJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkuZGlkUmVjZWl2ZVBsYXllck1lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfSBlbHNlIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBN
ZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkgewogICAgICAgICByZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcigpLmRpZFJlY2VpdmVNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIHVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9jZXNzKGNvbm5lY3Rp
b24sIGRlY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAg
ICAgbWVkaWFSZWNvcmRlck1hbmFnZXIoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNz
KGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAg
ICAgICBtZWRpYVJlY29yZGVyTWFuYWdlcigpLmRpZFJlY2VpdmVSZW1vdGVNZWRpYVJlY29yZGVy
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShWSURFT19U
UkFDSykKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6
OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CiAgICAgICAgIGF1ZGlvVHJhY2tSZW5kZXJlck1hbmFnZXIoKS5kaWRSZWNl
aXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgYXVkaW9UcmFja1Jl
bmRlcmVyTWFuYWdlcigpLmRpZFJlY2VpdmVSZW5kZXJlck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAg
ICAgICAgIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoKS5kaWRSZWNlaXZlTWVzc2Fn
ZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXIoKS5kaWRSZWNlaXZlTGF5ZXJNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRpZgogI2VuZGlm
CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIGxpYldlYlJUQ0NvZGVjc1Byb3h5KCku
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKKyAgICBy
ZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOwogfQogCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK2Jvb2wg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgcmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkoKS5kaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9u
LCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgdXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eSgpLmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21HUFVQcm9jZXNzKGNv
bm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3Nh
Z2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKICAgICAgICAgc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcigpLmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJl
cGx5RW5jb2Rlcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogI2VuZGlmCiAjZW5kaWYKLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9CiAKIGNvbnN0IFN0cmluZyYgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6bWVkaWFDYWNoZURpcmVjdG9yeSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAyYjli
ZDFmODg3YmFkYWZhNGVhNWM0YmEzNDE2OWQ4Yjk3OGZkNjJkLi40MGZhZWJkZjhlMTI5NjEyZWI3
M2NmNThiYWQ0N2NiMmU5MzJkODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTI4LDEzICsyOCwxNSBAQAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRl
ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXNSZXBsaWVzLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCisjaW5j
bHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgiCisjaW5jbHVkZSAiUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
KyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDks
MTggKzUxLDIwIEBAIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CiAKIGNsYXNz
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M+CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8R1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcz4KICAgICAsIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNyZWF0ZShH
UFVQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZpcnR1YWwgfkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0
dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQorICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBt
ZXNzYWdlUmVjZWl2ZXJNYXAoKSB7IHJldHVybiBtX21lc3NhZ2VSZWNlaXZlck1hcDsgfQogICAg
IEdQVVByb2Nlc3MmIGdwdVByb2Nlc3MoKSB7IHJldHVybiBtX2dwdVByb2Nlc3MuZ2V0KCk7IH0K
KyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7IH0KIAogICAgIHZvaWQgY2xlYW51
cEZvclN1c3BlbnNpb24oRnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICB2b2lkIGVuZFN1c3BlbnNp
b24oKTsKIAotICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsgfQogICAgIFJlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyJiByZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcigpOwogCiAg
ICAgTG9nZ2VyJiBsb2dnZXIoKTsKQEAgLTg1LDE3ICs4OSwyMyBAQCBwcml2YXRlOgogICAgIFJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIHNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXIoKTsKICNlbmRpZgogI2VuZGlmCi0KKyAgICB2b2lkIGNyZWF0ZVJlbmRlcmlu
Z0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZVJl
bmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgICAgICAKICAg
ICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25u
ZWN0aW9uJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgZmlu
YWw7CisKKyAgICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKTsKKyAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAogICAgIFJl
ZlB0cjxMb2dnZXI+IG1fbG9nZ2VyOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25u
ZWN0aW9uOwogICAgIFJlZjxHUFVQcm9jZXNzPiBtX2dwdVByb2Nlc3M7CisgICAgSVBDOjpNZXNz
YWdlUmVjZWl2ZXJNYXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7CiAgICAgY29uc3QgV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI+IG1fcmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
PiBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwpAQCAtMTExLDYgKzEyMSw3IEBAIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgc3RkOjp1
bmlxdWVfcHRyPExpYldlYlJUQ0NvZGVjc1Byb3h5PiBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5Owog
I2VuZGlmCisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eT4g
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggM2Q0MGE1NzEyZTAyZDE0OWQxNGY5
MmY1NmU0NDUzNDZjMDEyMjFkOC4uOTMyYzAxMjJkZTA4MWVkZTliYjllZmI1NmY5YmM1MjU5YmE0
ZDcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIyLDcgKzIyLDkgQEAKIAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyB7CittZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlz
cGF0Y2hNZXNzYWdlIHsKKyAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKKyAg
ICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiB9CiAKICNlbmRpZiAvLyBFTkFC
TEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvUmVu
ZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZiY2ZjNDVmNTViMjA1YmMwMDU2ZTIzN2Q0NDAzMDFkYTkxZDZhYjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCIK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlclByb3h5TWVzc2FnZXMuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eShHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBJbWFnZUJ1ZmZlcklkZW50aWZp
ZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQorICAgICwgbV9pbWFn
ZUJ1ZmZlcklkZW50aWZpZXIoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQoreworICAgIC8vIFJlZ2lz
dGVyIGl0c2VsZiBhcyBhIE1lc3NhZ2VSZWNlaXZlciBpbiB0aGUgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy4KKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW1hZ2VC
dWZmZXJJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKK30KKworUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eTo6flJlbW90ZUltYWdlQnVmZmVyUHJveHkoKQoreworICAgIC8vIFVuLXJlZ2lzdGVy
IGl0c2VsZiBhcyBhIE1lc3NhZ2VSZWNlaXZlci4KKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAg
ICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworfQor
CitJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZUltYWdlQnVmZmVyUHJveHk6Om1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgcmV0dXJu
ICZncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK3VpbnQ2NF90IFJlbW90ZUltYWdlQnVmZmVyUHJveHk6Om1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlcklkZW50
aWZpZXIudG9VSW50NjQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTgxMzA3NzdkNjg1MzVmYWM3NTE0OTAxMjkwMjMzYmE4MTI3MTRhNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9SZW5kZXJpbmdCYWNrZW5k
L1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJJbWFn
ZUJ1ZmZlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNs
dWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1z
Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisKK2NsYXNzIFJlbW90ZUltYWdlQnVmZmVy
UHJveHkKKyAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOworICAg
IH5SZW1vdGVJbWFnZUJ1ZmZlclByb3h5KCk7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBJUEM6Ok1l
c3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0IG92ZXJyaWRlOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
b3ZlcnJpZGU7CisKKyAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgbV9pbWFn
ZUJ1ZmZlcklkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShHUFVfUFJPQ0VTUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZUltYWdlQnVm
ZmVyUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGVkMTg5YzI5YTUzZjVmYzQ4ZTkzMGJk
NjRjOGVjYjllZDFiNTY0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZUltYWdlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4K
QEAgLTAsMCArMSwyOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCittZXNzYWdlcyAtPiBSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5IE5vdFJlZkNvdW50ZWQgeworfQorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNT
KQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2Vu
ZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jZDYyNTI3OWZjZDYxY2YxNDJiZDE0NWIxZTViZGVjZDQ0MDk1ZTRiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL1JlbmRlcmluZ0JhY2tlbmQvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlKEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQoreworICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5PihuZXcgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIHJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKSk7Cit9CisKK1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKQorICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQorICAgICwgbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcihyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKK3sKKyAgICBp
ZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2Fn
ZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworfQorCitSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6On5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKQoreworICAgIGlmIChhdXRvKiBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdl
dCgpKQorICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJN
YXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyLnRvVUludDY0KCkpOworfQorCitJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIGlmIChh
dXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmdldCgpKQorICAgICAgICByZXR1cm4gJmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNv
bm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordWludDY0X3QgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKTsKK30K
Kwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVy
SWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit7CisgICAgaWYgKG1faW1hZ2VCdWZm
ZXJNYXAuY29udGFpbnMoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8qIGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7
CisgICAgaWYgKCFncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1cm47CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOworCisgICAgc3dp
dGNoIChyZW5kZXJpbmdNb2RlKSB7CisgICAgY2FzZSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVBY2Nl
bGVyYXRlZDoKKyAgICBjYXNlIFJlbmRlcmluZ01vZGU6OlJlbW90ZToKKyAgICAgICAgLy8gRklY
TUU6IGNyZWF0ZSB0aGUgcmVtb3RlIEltYWdlQnVmZmVyIHByb3h5LgorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIGlmICghaW1hZ2VCdWZm
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1faW1hZ2VCdWZmZXJNYXAuYWRkKGltYWdlQnVm
ZmVySWRlbnRpZmllciwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOworfQorCit2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKEltYWdlQnVmZmVySWRlbnRp
ZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit7CisgICAgLy8gQ3JlYXRlSW1hZ2VCdWZmZXIg
bWVzc2FnZSBzaG91bGQgaGF2ZSBiZWVuIHJlY2VpdmVkIGJlZm9yZSB0aGlzIG9uZS4KKyAgICBp
ZiAoIW1faW1hZ2VCdWZmZXJNYXAuY29udGFpbnMoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBtX2ltYWdlQnVmZmVyTWFwLnJlbW92ZShpbWFnZUJ1ZmZlcklkZW50aWZpZXIpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9SZW5kZXJpbmdCYWNrZW5kL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL1JlbmRl
cmluZ0JhY2tlbmQvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk1
MjdiODc1YWExMzI1NTY5YWMyMjYzMDBmYTZhZDU5OGU5YWUwZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7
CisKK2NsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eQorICAgIDogcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VTZW5kZXIKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVi
bGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5PiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsK
KworICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsgfQorCitw
cml2YXRlOgorICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworCisgICAgLy8gSVBDOjpN
ZXNzYWdlU2VuZGVyLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBjb25zdCBvdmVycmlkZTsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IG92ZXJyaWRlOworCisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVySWRlbnRpZmllcik7
CisgICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKKwor
ICAgIHVzaW5nIEltYWdlQnVmZmVyTWFwID0gSGFzaE1hcDxJbWFnZUJ1ZmZlcklkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4+OworICAgIEltYWdlQnVmZmVy
TWFwIG1faW1hZ2VCdWZmZXJNYXA7CisgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgUmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL1JlbmRl
cmluZ0JhY2tlbmQvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU0ZGNmN2YzMmI0NTI2ZGRmYmViYjc4N2Y4MDJjMzZmZDk1N2JjNDkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMCBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQorCittZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgTm90UmVmQ291
bnRlZCB7CisgICAgdm9pZCBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpGbG9hdFNpemUgbG9n
aWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYktpdDo6SW1h
Z2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKKyAgICB2b2lkIFJlbGVh
c2VJbWFnZUJ1ZmZlcihXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklk
ZW50aWZpZXIpCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaAppbmRleCA2ODVhNjY5Nzg3MTc2YjEzNzE5Y2JiOGZlOTkzY2Rj
MWJjZTc5Y2U4Li42ZTZhMjE3YTVhMjA1ZWUzNzA4ZjM0MGJhZDc0NjM5MTZjMmQ2ZTg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRl
bnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg+
CisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlci5jcHAKaW5kZXggNGI5YmU0OWNhYzcyZjQ0ZTcxNzk3N2M0YTQ2NmUyZTI3
OWYxYjE0ZS4uZmIwZDI2NTJlN2RjNzE1ZjNjYmU5MGIwMWE3NDE3MzEyOGNkYjU3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgiCiAKIG5h
bWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQogICAgIDogbV9jb25u
ZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlci5oCmluZGV4IDlmOWIzMGM3NjE2MjNkZDk0OGQyOWJlMGYzN2YwYWQwZjQ3
ZTVhOWEuLmUzOGM1ZDZjMDVkMGRmYWY0MjY4MTk5NWI5ZTA0ZjRlNzY0N2YwYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIlNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludFNp
emUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDdjNWFjMGFjZjc0NWI3YTcw
M2NiZWMwNmJmN2IxYWM2MmVhODQyYjAuLjE4M2I1ZDU2MDFlZDAyYzQyNGY3MTgzMTRjN2M0MjY5
OGYxMTFiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAt
MjcsNiArMjcsNyBAQCBpbXBvcnQgc3lzCiBmcm9tIHdlYmtpdCBpbXBvcnQgcGFyc2VyCiAKIFdB
TlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFID0gJ1dhbnRzQ29ubmVjdGlvbicKK1dBTlRTX0RJU1BB
VENIX01FU1NBR0VfQVRUUklCVVRFID0gJ1dhbnRzRGlzcGF0Y2hNZXNzYWdlJwogTEVHQUNZX1JF
Q0VJVkVSX0FUVFJJQlVURSA9ICdMZWdhY3lSZWNlaXZlcicKIE5PVF9SRUZDT1VOVEVEX1JFQ0VJ
VkVSX0FUVFJJQlVURSA9ICdOb3RSZWZDb3VudGVkJwogU1lOQ0hST05PVVNfQVRUUklCVVRFID0g
J1N5bmNocm9ub3VzJwpAQCAtMjA0LDYgKzIwNSw4IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9i
ZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgcmV0dXJuIGZyb3plbnNldChbCiAgICAgICAgICdN
YWNoU2VuZFJpZ2h0JywKICAgICAgICAgJ1N0cmluZycsCisgICAgICAgICdXZWJDb3JlOjpBbHBo
YVByZW11bHRpcGxpY2F0aW9uJywKKyAgICAgICAgJ1dlYkNvcmU6OkNvbG9yU3BhY2UnLAogICAg
ICAgICAnV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZl
dGNoSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXInLApAQCAt
MjEyLDYgKzIxNSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVk
KCk6CiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLAogICAgICAgICAnV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlk
ZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6UmVuZGVyaW5nTW9kZScsCiAgICAgICAgICdX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySm9iSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
T3JDbGllbnREYXRhJywKQEAgLTIyMSwxMiArMjI1LDE0IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5v
dF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVD
aGFuZ2VJRCcsCiAgICAgICAgICdXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXInLAor
ICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0
OjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAogICAgICAgICAnV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6TWVkaWFSZWNvcmRlcklk
ZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIn
LAogICAgICAgICAnV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyJywKQEAgLTc2OSwx
MyArNzc1LDE2IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgYXN5bmNfbWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpCiAK
LSAgICBpZiBhc3luY19tZXNzYWdlczoKKyAgICBpZiBhc3luY19tZXNzYWdlcyBvciByZWNlaXZl
ci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKToKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZSVzTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcilcbicgJSAocmVjZWl2ZXIu
bmFtZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKExFR0FDWV9SRUNF
SVZFUl9BVFRSSUJVVEUpIGVsc2UgJycpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQog
ICAgICAgICBpZiBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9SRUNF
SVZFUl9BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGF1dG8gcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpO1xuJykKIAogICAgICAgICByZXN1bHQgKz0gW2Fz
eW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYWdlKSBmb3IgbWVzc2FnZSBpbiBh
c3luY19tZXNzYWdlc10KKyAgICAgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19E
SVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgaWYgKGRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKSlcbicpCisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybjtcbicpCiAgICAgICAgIGlmIChyZWNl
aXZlci5zdXBlcmNsYXNzKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAlczo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7XG4nICUgKHJlY2VpdmVyLnN1cGVy
Y2xhc3MpKQogICAgICAgICBlbHNlOgpAQCAtNzg0LDEzICs3OTMsMTYgQEAgZGVmIGdlbmVyYXRl
X21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd9XG4n
KQogCi0gICAgaWYgc3luY19tZXNzYWdlczoKKyAgICBpZiBzeW5jX21lc3NhZ2VzIG9yIHJlY2Vp
dmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgogICAg
ICAgICByZXN1bHQuYXBwZW5kKCdcbicpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6
OmRpZFJlY2VpdmVTeW5jJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlF
bmNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlci5uYW1lIGlmIHJlY2VpdmVyLmhh
c19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJykpCiAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJ3tcbicpCiAgICAgICAgIGlmIG5vdCByZWNlaXZlci5oYXNfYXR0cmli
dXRlKE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJQlVURSk6CiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7XG4nKQog
ICAgICAgICByZXN1bHQgKz0gW3N5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3Nh
Z2UpIGZvciBtZXNzYWdlIGluIHN5bmNfbWVzc2FnZXNdCisgICAgICAgIGlmIHJlY2VpdmVyLmhh
c19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChkaXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIsIHJlcGx5RW5jb2RlcikpXG4nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICAgICAgICByZXR1cm47XG4nKQogICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BB
UkFNKGNvbm5lY3Rpb24pO1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIFVOVVNFRF9Q
QVJBTShkZWNvZGVyKTtcbicpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVTRURfUEFS
QU0ocmVwbHlFbmNvZGVyKTtcbicpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCmluZGV4IDdiZjcxYzE3YWJkZDNkOGIxMzE5MDIyMDA1OGM5ZjljMjE5ZjYw
YjMuLmQ5OTNjMjczYTMzZGZhYjk5ZjQ2NGEwYjI3YzJjY2ZlNTkwMjEwYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0yNiw2ICsyNiw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9BbHBoYVByZW11bHRpcGxpY2F0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRv
cGxheUV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgpAQCAtMzYsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9O
b3RpZmljYXRpb25EaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFT
b3VyY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vydmlj
ZVdvcmtlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yZWRDcmVkZW50aWFsc1BvbGlj
eS5oPgpAQCAtODIzLDYgKzgyNSwxNCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gewogCiBuYW1lc3BhY2UgV1RGIHsK
IAordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxp
Y2F0aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3JlOjpB
bHBoYVByZW11bHRpcGxpY2F0aW9uLAorICAgIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b246OlByZW11bHRpcGxpZWQsCisgICAgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
VW5wcmVtdWx0aXBsaWVkCisgICAgPjsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6Q29sb3JTcGFjZT4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CiAgICAgV2ViQ29yZTo6Q29sb3JTcGFjZSwKQEAgLTgzMiw2ICs4NDIsMTggQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDb2xvclNwYWNlPiB7CiAgICAgPjsKIH07CiAK
K3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6UmVuZGVyaW5nTW9kZT4gewor
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZSwKKyAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwKKyAgICBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLAorICAgIFdlYkNvcmU6OlJlbmRlcmluZ01v
ZGU6OkRpc3BsYXlMaXN0QWNjZWxlcmF0ZWQsCisgICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6
RGlzcGxheUxpc3QsCisgICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0
ZWQsCisgICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6UmVtb3RlCisgICAgPjsKK307CisKIHRl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QXV0b3BsYXlFdmVudD4gewogICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkF1dG9wbGF5RXZl
bnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAppbmRleCA1MzEwOTIwM2NhMjJjYjVmNWRiOTM1MWY5YzIzNmUwNTNhYjFl
MDA5Li41NWFlZGU2YTk5MTUwNjhkZmM4ZjU0NzdmODFiZThjYjhlYWM0MTJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKQEAgLTM3LDYgKzM3LDggQEAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyLmNwcAogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcAorR1BVUHJvY2Vzcy9SZW5kZXJpbmdCYWNr
ZW5kL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuY3BwCitHUFVQcm9jZXNzL1JlbmRlcmluZ0JhY2tl
bmQvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9BZENs
aWNrQXR0cmlidXRpb25NYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5
VHJhY2tlci5jcHAKQEAgLTUzNyw2ICs1MzksOCBAQCBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVmlkZW9U
cmFja1ByaXZhdGVSZW1vdGUuY3BwCitXZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL1Jl
bW90ZUltYWdlQnVmZmVyLmNwcAorV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjcy5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAK
IFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggZWFhMGQ4NGZhNWNmYTc0MGQyN2I3OGI5MDdlYzk1Njk5MzFjYjBk
Yy4uMDY3MDE5Y2ZiNzhiZGViNTc2ZjA1ODM2MDBjNjcyNGQ4NTRjZTFjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dApAQCAtNjM4LDE0ICs2MzgsMTggQEAgV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQogLy8gRGVyaXZlZCBTb3Vy
Y2VzCiBFZGl0YWJsZUltYWdlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCitHUFVQcm9jZXNzQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVVByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAK
IEdQVVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBMaWJXZWJSVENDb2RlY3NQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKIExpYldlYlJUQ0NvZGVjc01lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAK
IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZVJlY2VpdmVyLmNwcAor
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2VSZWNlaXZl
ci5jcHAKIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VSZWNlaXZlci5jcHAKIFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJlNjQyMjA0Nzc1ZTI1NTVjY2JhNWZkZTlmOGU0
YWU4MzU1ZWRkZDUuLjZjMGEyMDA2NGUwYjJhYmFhYTc2MTA1NTc1ZGQ3YTI5ZjYyYzMyZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NDAzOCw2ICs0MDM4LDE5IEBACiAJCTcxQTY3NkE0MjJDNjIzMTgwMDdENjI5NSAvKiBXS1RvdWNo
QWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmg7IHBhdGggPSBpb3MvV0tUb3VjaEFj
dGlvbkdlc3R1cmVSZWNvZ25pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcx
QTY3NkE1MjJDNjIzMTgwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RvdWNoQWN0aW9u
R2VzdHVyZVJlY29nbml6ZXIubW07IHBhdGggPSBpb3MvV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNv
Z25pemVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUZCODEwQTIyNjA2MjdB
MDAzMjM2NzcgLyogV2Vic2l0ZVNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3kuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZVNpbXVsYXRlZE1vdXNlRXZl
bnRzRGlzcGF0Y2hQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI1MDZE
MzkyM0U5Rjg4QjAwMUU2RTBEIC8qIFJlbW90ZUltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcyNTA2RDNBMjNFOUY4OEMwMDFFNkUwRCAvKiBSZW1vdGVJbWFnZUJ1ZmZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVJbWFnZUJ1
ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTA2RDNCMjNFOUY4OEMw
MDFFNkUwRCAvKiBSZW1vdGVJbWFnZUJ1ZmZlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzI1MDZEM0MyM0U5RjhCOTAwMUU2RTBEIC8qIFJlbW90ZUltYWdlQnVmZmVy
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjUwNkQzRDIzRTlGOEI5
MDAxRTZFMEQgLyogUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MjUwNkQzRTIzRTlGOEI5MDAxRTZFMEQgLyogUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzI1NjQ1OUUyM0U4RkYwNzAwQTA2MzJEIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjU2NDU5
RjIzRThGRjA3MDBBMDYzMkQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjU2NDVBMDIzRThGRjA3MDBBMDYzMkQg
LyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI1NjQ1QTEyM0U4RkYxNTAwQTA2MzJEIC8qIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcyNTY0NUEyMjNFOEZGMTUwMEEwNjMyRCAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI1NjQ1QTMyM0U4RkYxNTAwQTA2MzJE
IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcyNTY0NUE0MjNFOTA3RDEwMEEwNjMyRCAvKiBJbWFnZUJ1ZmZlcklkZW50
aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkVGMTc5NTE4OEMw
MDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyQzQxODdDQ0Y5RjAwQzM5QzlFIC8q
IFdLV2Vic2l0ZURhdGFTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S1dlYnNpdGVEYXRhU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0ODIs
NiArNjQ5NSw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTA3
OTIzMTJGMjM5QjNCMEMwMDk1OThFMiAvKiBtZWRpYSAqLywKKwkJCQk3MjU2NDU5QzIzRThGRTVD
MDBBMDYzMkQgLyogUmVuZGVyaW5nQmFja2VuZCAqLywKIAkJCQk0MTcyMTk4ODIzQjYxMjYxMDBB
RTU2ODYgLyogd2VicnRjICovLAogCQkJCTJEN0U0M0MwMjM3NTJDRDkwMEVBNUNBMCAvKiBHUFVQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJMkQ3RTQzQzMyMzc1MkNEOTAwRUE1Q0EwIC8q
IEdQVVByb2Nlc3NDb25uZWN0aW9uLmggKi8sCkBAIC02NDk4LDYgKzY1MTIsNyBAQAogCQkJCTJE
OUZCMjA0MjM3NTIwOUQwMDQ5RjkzNiAvKiBpb3MgKi8sCiAJCQkJMkQ5RkIyMDYyMzc1MjA5RDAw
NDlGOTM2IC8qIG1hYyAqLywKIAkJCQkwN0M3NUMxNzIzOTlBM0RCMDA4OEU2NUIgLyogbWVkaWEg
Ki8sCisJCQkJNzI1NjQ1OUQyM0U4RkU4NzAwQTA2MzJEIC8qIFJlbmRlcmluZ0JhY2tlbmQgKi8s
CiAJCQkJNDE3MjE5OEUyM0I2MzNDQTAwQUU1Njg2IC8qIHdlYnJ0YyAqLywKIAkJCQkyRDlGQjIw
QzIzNzUyMDlEMDA0OUY5MzYgLyogR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgKi8sCiAJ
CQkJMkQ5RkIyMDAyMzc1MjA5RDAwNDlGOTM2IC8qIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCAqLywKQEAgLTc4OTksNiArNzkxNCwzMyBAQAogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTcyNTY0NTlDMjNFOEZFNUMwMEEwNjMyRCAvKiBSZW5k
ZXJpbmdCYWNrZW5kICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQk3MjU2NDVBNDIzRTkwN0QxMDBBMDYzMkQgLyogSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgg
Ki8sCisJCQkJNzI1MDZEM0EyM0U5Rjg4QzAwMUU2RTBEIC8qIFJlbW90ZUltYWdlQnVmZmVyLmNw
cCAqLywKKwkJCQk3MjUwNkQzOTIzRTlGODhCMDAxRTZFMEQgLyogUmVtb3RlSW1hZ2VCdWZmZXIu
aCAqLywKKwkJCQk3MjUwNkQzQjIzRTlGODhDMDAxRTZFMEQgLyogUmVtb3RlSW1hZ2VCdWZmZXIu
bWVzc2FnZXMuaW4gKi8sCisJCQkJNzI1NjQ1QTMyM0U4RkYxNTAwQTA2MzJEIC8qIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwICovLAorCQkJCTcyNTY0NUEyMjNFOEZGMTUwMEEwNjMyRCAvKiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggKi8sCisJCQkJNzI1NjQ1QTEyM0U4RkYxNTAwQTA2MzJE
IC8qIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmggKi8sCisJCQkpOworCQkJcGF0aCA9IFJl
bmRlcmluZ0JhY2tlbmQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk3MjU2
NDU5RDIzRThGRTg3MDBBMDYzMkQgLyogUmVuZGVyaW5nQmFja2VuZCAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNzI1MDZEM0UyM0U5RjhCOTAwMUU2RTBE
IC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuY3BwICovLAorCQkJCTcyNTA2RDNDMjNFOUY4Qjkw
MDFFNkUwRCAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCisJCQkJNzI1MDZEM0QyM0U5
RjhCOTAwMUU2RTBEIC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4gKi8sCisJ
CQkJNzI1NjQ1OUUyM0U4RkYwNzAwQTA2MzJEIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jcHAgKi8sCisJCQkJNzI1NjQ1OUYyM0U4RkYwNzAwQTA2MzJEIC8qIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oICovLAorCQkJCTcyNTY0NUEwMjNFOEZGMDcwMEEwNjMyRCAvKiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkpOworCQkJcGF0aCA9
IFJlbmRlcmluZ0JhY2tlbmQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk3
QTg0M0ExRDIxRTQxRkQ5MDBERUY2NjMgLyogQ2xhc3NpZmllciAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDhkZmY1MGYzMDg4ZWQ0NWM1
OTBlYzgxZTJjMDlhMTM4YmE3YTUzNWYuLjBmOWM3YWNlZjRlMGVkODczYzRiZTA4OTYxOGE2ZGYw
NDE3ODcwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC02MiwxMCArNjIsNiBAQCB2b2lkIEdQVVByb2Nlc3ND
b25uZWN0aW9uOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogewogfQogCi12b2lkIEdQVVBy
b2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKQotewotfQotCiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIEdQVVByb2Nlc3NDb25u
ZWN0aW9uOjpzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCkKIHsKQEAgLTc1LDM0ICs3
MSw0NCBAQCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBHUFVQcm9jZXNzQ29ubmVj
dGlvbjo6c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTQogfQogI2VuZGlmCiAKLXZvaWQgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorYm9vbCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQogewogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBN
ZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
IHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI+KCktPmRpZFJlY2VpdmVQbGF5ZXJNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLQog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpID09IE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBjYXB0dXJlTWFuYWdlciA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI+KCkpCiAg
ICAgICAgICAgICBjYXB0dXJlTWFuYWdlci0+ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tR1BVUHJvY2Vz
cyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShWSURFT19UUkFDSykK
ICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIHNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoKS5kaWRSZWNlaXZlTGF5ZXJNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKFZJREVPX1RSQUNL
KQogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCiAjaWYgVVNFKExJQldFQlJUQykgJiYg
UExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3MoKS5kaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKKyAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFw
KCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCitib29sIEdQVVBy
b2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYgcmVwbHlFbmNvZGVyKQoreworICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5k
aXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7Cit9
CisKK3ZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UpCit7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggNDYwMGU1M2JiMjg0ZDc0OGNmMzkxMWI5NGRiNTU5OWE5
Y2I0NWYyNy4uN2I2Zjg4MjIyYzMzNzM2YjhjNDI3ZGI0Y2JkZTFjMDQ1NDg4NmM4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRl
ICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ3LDYgKzQ4LDcg
QEAgcHVibGljOgogICAgIH5HUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIAogICAgIElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQor
ICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAoKSB7IHJldHVy
biBtX21lc3NhZ2VSZWNlaXZlck1hcDsgfQogCiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICB2
b2lkIHNldEF1ZGl0VG9rZW4oT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbikgeyBt
X2F1ZGl0VG9rZW4gPSBhdWRpdFRva2VuOyB9CkBAIC02MiwxMCArNjQsMTUgQEAgcHJpdmF0ZToK
ICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpD
b25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5j
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICAKKyAg
ICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsK
KyAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAogICAgIC8vIFRoZSBjb25u
ZWN0aW9uIGZyb20gdGhlIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgcHJvY2Vzcy4KICAgICBSZWY8
SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJN
YXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7CiAKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIE9w
dGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IG1fYXVkaXRUb2tlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCmluZGV4IGQzNmY4YTA5NWY2YTc3YmJiNmNhYzg4M2E2NTFlODRjZTlkNjRiMzAuLjU3ZmVj
ZGU5ZGYyN2M3MzlhNmNiZjAyNjk4MDY1OTJiNWUyMTc5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbgpAQCAtMjIsNyArMjIsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi1t
ZXNzYWdlcyAtPiBHUFVQcm9jZXNzQ29ubmVjdGlvbiB7CittZXNzYWdlcyAtPiBHUFVQcm9jZXNz
Q29ubmVjdGlvbiBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL0ltYWdlQnVmZmVySWRl
bnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5k
L0ltYWdlQnVmZmVySWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhMWJjOWFlODdkYzhkNzI0Mjhh
MGI4MDljYWQwZDgwYTRjZDFjYjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgKQEAg
LTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2VudW0gSW1hZ2VCdWZmZXJJZGVudGlmaWVyVHlwZSB7IH07Cit1c2lu
ZyBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEltYWdlQnVmZmVySWRl
bnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
UmVuZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjYxNGMyYTFjMmZmN2RmZWViNjE2YmM4NjdlM2Q4YmFlYTQ2ZDRlODcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQv
UmVtb3RlSW1hZ2VCdWZmZXIuY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlJlbW90ZUltYWdlQnVmZmVyLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNp
bmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJH
UFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZUltYWdlQnVmZmVy
OjpSZW1vdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KQorICAgIDogbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcihyZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcikKK3sKKyAgICAvLyBSZWdpc3RlciBpdHNlbGYgYXMgYSBNZXNzYWdlUmVjZWl2ZXIg
aW4gdGhlIEdQVVByb2Nlc3NDb25uZWN0aW9uLgorICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFw
JiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQ
cm9jZXNzQ29ubmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOworICAgIG1lc3NhZ2VSZWNl
aXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUltYWdlQnVmZmVyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyLnRvVUludDY0KCks
ICp0aGlzKTsKKworICAgIC8vIENyZWF0ZSB0aGUgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4KKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkNyZWF0ZUltYWdl
QnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
bV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsK
K30KKworUmVtb3RlSW1hZ2VCdWZmZXI6On5SZW1vdGVJbWFnZUJ1ZmZlcigpCit7CisgICAgLy8g
VW4tcmVnaXN0ZXIgaXRzZWxmIGFzIGEgTWVzc2FnZVJlY2VpdmVyLgorICAgIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOworICAg
IG1lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMpOworCisgICAg
Ly8gUmVsZWFzZSB0aGUgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4KKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OlJlbGVhc2VJbWFnZUJ1ZmZlcihtX2ltYWdl
QnVmZmVySWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworfQorCitJ
UEM6OkNvbm5lY3Rpb24qIFJlbW90ZUltYWdlQnVmZmVyOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKK30KKwordWludDY0X3QgUmVtb3Rl
SW1hZ2VCdWZmZXI6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIudG9VSW50NjQoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1h
Z2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2Vu
ZC9SZW1vdGVJbWFnZUJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmN2IwMjczZDNjNmNiOTg4MGIyZjMw
YTc4Y2QwZjA3NGY2ZDIyYTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXIuaApAQCAtMCwwICsx
LDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiSW1hZ2VC
dWZmZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlcgorICAgIDogcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VTZW5kZXIKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGlj
OgorICAgIH5SZW1vdGVJbWFnZUJ1ZmZlcigpOworCitwcm90ZWN0ZWQ6CisgICAgUmVtb3RlSW1h
Z2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBD
OjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7
CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisKKyAgICBJbWFn
ZUJ1ZmZlcklkZW50aWZpZXIgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIgeyBJbWFnZUJ1ZmZlcklk
ZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXIubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQv
UmVtb3RlSW1hZ2VCdWZmZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBhNjFmYzRkNGJkZjJi
MjBmNGVmOWQ4YmNmNmQ4ZjAzZTg0OTIyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlci5tZXNz
YWdlcy5pbgpAQCAtMCwwICsxLDI4IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
IyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUlt
YWdlQnVmZmVyIE5vdFJlZkNvdW50ZWQgeworfQorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdC
YWNrZW5kL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjgwMzU3YjBhNGIxODEzOTg1NTFmZTkwYWUyOWU0Yjk2OWQ2YTE4NzgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgi
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyaW5nQmFja2Vu
ZD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+KG5ldyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKCkpOworfQorCitSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKCkKK3sKKyAgICAvLyBDcmVhdGUgdGhlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS4K
KyAgICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5k
ZXJpbmdCYWNrZW5kKG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpLCAwKTsKK30KKworUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKQoreworICAgIC8v
IFJlbGVhc2UgdGhlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS4KKyAgICBzZW5kKE1lc3Nh
Z2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWxlYXNlUmVuZGVyaW5nQmFja2VuZCht
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKSwgMCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiog
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAor
eworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpOworfQorCitzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgSG9zdFdp
bmRvdyogaG9zdFdpbmRvdykKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyOworCisgICAgc3dpdGNoIChyZW5kZXJpbmdNb2RlKSB7CisgICAgY2FzZSBSZW5k
ZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRlZDoKKyAgICBjYXNlIFJlbmRlcmluZ01vZGU6OlJl
bW90ZToKKyAgICAgICAgLy8gRklYTUU6IGNyZWF0ZSB0aGUgcmVtb3RlIEltYWdlQnVmZmVyLgor
ICAgIGRlZmF1bHQ6CisgICAgICAgIGltYWdlQnVmZmVyID0gUmVuZGVyaW5nQmFja2VuZDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBob3N0V2luZG93KTsKKyAgICB9CisKKyAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNr
ZW5kL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODZiZTlkY2JkNjBmMzk1ODc3ZjQ4ZTUxNzE4NTA5ZDlkMWY0NGMwNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZVNlbmRlci5oIgorI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdCYWNrZW5kLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kCisgICAgOiBwdWJsaWMgV2ViQ29yZTo6UmVu
ZGVyaW5nQmFja2VuZAorICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICAsIHBy
aXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKCk7CisKKyAgICB+UmVtb3RlUmVuZGVy
aW5nQmFja2VuZCgpOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgorICAgIElQQzo6Q29u
bmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICB1
aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlOworCisg
ICAgLy8gUmVuZGVyaW5nQmFja2VuZAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2Vi
Q29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xv
clNwYWNlLCBjb25zdCBXZWJDb3JlOjpIb3N0V2luZG93Kikgb3ZlcnJpZGU7CisKK3ByaXZhdGU6
CisgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpOworICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgeyBSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9SZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyMzU0NzBjY2ZlN2I3OWJiOTI0NTc4
YWZiNDE3MDM1YzkxM2RkMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaApA
QCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllclR5cGUgeyB9
OwordXNpbmcgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRl
eCA4ZTRjOTM3NWQ3YjhjYzEwZmZhMDA4MDNkNDgyMTczYmU1YTM1NThhLi43ZDdiODg2ZDY4NjQz
NWQyYmQxYTExNDRjNjU0NjA2YTc0MzgwM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAt
OTAsNiArOTAsMTAgQEAKICNpbmNsdWRlICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgiCiAjZW5k
aWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAjaW5jbHVk
ZSAiUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNlbmRpZgpAQCAtODkxLDYgKzg5NSwx
NSBAQCBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0
ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0ZgogCiAjZW5kaWYKIAorc3RkOjp1bmlxdWVfcHRy
PFJlbmRlcmluZ0JhY2tlbmQ+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlUmVuZGVyaW5nQmFja2Vu
ZCgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIHJldHVybiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKTsKKyNlbHNlCisgICAgcmV0dXJuIFJlbmRlcmluZ0Jh
Y2tlbmQ6OmNyZWF0ZSgpOworI2VuZGlmCit9CisKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjphdHRh
Y2hSb290R3JhcGhpY3NMYXllcihGcmFtZSYsIEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogewogICAg
IGlmIChsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBhOGE0Y2NhYzU3ZDgwOGFhYTU1ZDhk
Nzk1MWJjNWM1NDFjNjBmMmFkLi41Njc4N2UwMTcwMGViYmVlOWRjMzdlM2FiODQ1ODY2NDg1ZjZk
NmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yMzMsNiArMjMzLDggQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVm
cmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IGZpbmFsOwogI2Vu
ZGlmCiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVuZGVyaW5nQmFja2VuZD4gY3Jl
YXRlUmVuZGVyaW5nQmFja2VuZCgpIGNvbnN0IGZpbmFsOworCiAgICAgQ29tcG9zaXRpbmdUcmln
Z2VyRmxhZ3MgYWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMoKSBjb25zdCBmaW5hbAogICAgIHsK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbXBvc2l0aW5nVHJpZ2dlckZsYWdzPigKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA5ZmJi
MWZkZjBkODI3ODg0NjY1Y2VjNzczN2IzMTBiNTAzMWQ0MGM1Li4wZjg4NDI5MDBmODUxYTdkOTJm
ODg2Y2E2NmY5MWE5MTBlOWZlZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC04NDAsNyArODQwLDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gV2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3QKICAgICBpZiAo
IXNuYXBzaG90KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc2hhcmVkU25h
cHNob3QgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzbmFwc2hvdC0+aW50ZXJu
YWxTaXplKCksIHsgfSk7CisgICAgYXV0byBzaGFyZWRTbmFwc2hvdCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKHNuYXBzaG90LT5iYWNrZW5kU2l6ZSgpLCB7IH0pOwogICAgIGlm
ICghc2hhcmVkU25hcHNob3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGEx
YTBlYzllMzUwNmNmYzU0M2Q4OWY0YzE5YmYxZmRhNGI5ODI5MS4uZThhZjA2MjAxNjNmOGJiMGE4
NGJhMTNlMGZmODJkMGMyOTYwMDAwZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTAz
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAg
Q3JlYXRlIGEgbmV3IEltYWdlQnVmZmVyIHR5cGUgZm9yIGRyYXdpbmcgb24gYSBEaXNwbGF5TGlz
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MTA5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGV4
dHJhIHJlY29yZGluZyBoYXBwZW5zIGJlY2F1c2UgQ2FudmFzQmFzZTo6c2V0SW1hZ2VCdWZmZXIo
KSB1c2VkIHRvCisgICAgICAgIGlzc3VlIGl0cyBHcmFwaGljc0NvbnRleHQgY29tbWFuZHMgZGly
ZWN0bHkgdG8gdGhlIGJhY2tlbmQuIFdpdGggdGhpcyAKKyAgICAgICAgcGF0Y2gsIERpc3BsYXlM
aXN0SW1hZ2VCdWZmZXIgZG9lcyBub3QgYWxsb3cgYWNjZXNzIHRvIHRoZSBiYWNrZW5kIGNvbnRl
eHQuCisgICAgICAgIFNvIGFsbCB0aGUgR3JhcGhpY3NDb250ZXh0IGNvbW1hbmRzIGhhcyB0byBi
ZSByZWNvcmRlZC4KKworICAgICAgICAqIGRpc3BsYXlsaXN0cy9jYW52YXMtZGlzcGxheS1saXN0
LWV4cGVjdGVkLnR4dDoKKwogMjAyMC0wMi0wMyAgSmFzb24gTGF3cmVuY2UgIDxsYXdyZW5jZS5q
QGFwcGxlLmNvbT4KIAogICAgICAgICBbIE1hYyB3azIgXSBodHRwL3dwdC9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS1ncHVwcm9jZXNzLmh0
bWwgaXMgZmxha3kgZmFpbGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0
cy9jYW52YXMtZGlzcGxheS1saXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Rpc3BsYXls
aXN0cy9jYW52YXMtZGlzcGxheS1saXN0LWV4cGVjdGVkLnR4dAppbmRleCAxYjU3ZTc5MWI3MmFj
Y2E4Nzc2MTQ0NzliNGRjN2ZlNWM5NTk0ZDc3Li4zNGM4N2I5YjA0Mjk0NTVhOWJmMTE0MWM2YmZi
Mzk3MWM3NTIwYjhmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvY2FudmFz
LWRpc3BsYXktbGlzdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3Rz
L2NhbnZhcy1kaXNwbGF5LWxpc3QtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsMTEgQEAKICAKKyhz
YXZlCisgIChyZXN0b3JlLWluZGV4IDApKQogKHNldC1zdGF0ZQotICAoY2hhbmdlLWZsYWdzIDI1
NikKLSAgKGZpbGwtY29sb3IgI0M4MDAwMCkpCisgIChjaGFuZ2UtZmxhZ3MgMTA1MDkxMikKKyAg
KHN0cm9rZS10aGlja25lc3MgMS4wMCkKKyAgKGZpbGwtY29sb3IgI0M4MDAwMCkKKyAgKHNoYWRv
d3MtaWdub3JlLXRyYW5zZm9ybXMgMSkpCiAoZmlsbC1yZWN0CiAgIChleHRlbnQgYXQgKDEwLDEw
KSBzaXplIDU1eDUwKQogICAocmVjdCBhdCAoMTAsMTApIHNpemUgNTV4NTApKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389701</attachid>
            <date>2020-02-04 13:58:17 -0800</date>
            <delta_ts>2020-02-25 18:13:05 -0800</delta_ts>
            <desc>Patch  for review</desc>
            <filename>ImageBuffer-Pacthes-10.patch</filename>
            <type>text/plain</type>
            <size>26821</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNGEwYWUyOGMzY2UuLjJkYmQxMzE2YWUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM1IEBACisyMDIwLTAyLTA0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSByZW1vdGUgSW1hZ2VCdWZmZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzIyMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW90ZUltYWdlQnVm
ZmVyIGFuZCBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yCisg
ICAgICAgIGhhbmRsaW5nIHRoZSBjb21tdW5pY2F0aW9ucyBvZiB0aGUgSW1hZ2VCdWZmZXIgcGFy
dHMgYmV0d2VlbiBXZWJQcm9jZXNzCisgICAgICAgIGFuZCBHUFVQcm9jZXNzLgorCisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6
OlJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUltYWdlQnVmZmVyUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6bWVzc2FnZVNlbmRlckRlc3Rp
bmF0aW9uSUQgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvUmVu
ZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4K
KyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OlJlbW90ZUltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6On5SZW1vdGVJbWFnZUJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjptZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjptZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvUmVu
ZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZUltYWdlQnVmZmVyLm1lc3NhZ2VzLmlu
OiBBZGRlZC4KKwogMjAyMC0wMi0wNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FA
YXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCB0aGUgcmVtb3RlIFJlbmRlcmluZ0JhY2tl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRl
eCA4YTMwZjYzYjk4OC4uYjAxYjU0YzE3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTE1LDYgKzE1LDcgQEAgJChKQVZBU0NSSVBUQ09S
RV9QUklWQVRFX0hFQURFUlNfRElSKS9tb2RlbHMucHkKICQoSkFWQVNDUklQVENPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUikveHhkLnBsCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mv
R1BVUHJvY2Vzcy5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9SZW5kZXJp
bmdCYWNrZW5kL1JlbW90ZUltYWdlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5X
ZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTA4LDYgKzEwOSw3
IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5k
ZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9S
ZW1vdGVJbWFnZUJ1ZmZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3MubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0CmluZGV4IGYyOTM5ZjYwNTJlLi4wYTc3N2Y3MjM3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xMjksNiArMTI5LDEy
IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3Nh
Z2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZXMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUltYWdlQnVmZmVyUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eU1lc3Nh
Z2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlc1Jl
cGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDE1OGFjNWMwMjViLi42MGJl
MTk4ZThkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTQ3LDYgKzE0Nyw4IEBA
IE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFBsdWdpblByb3h5IFwKICAgICBSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIgXAogICAgIFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyIFwKKwlSZW1vdGVJbWFnZUJ1ZmZlciBcCisJUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eSBcCiAgICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSBcCiAgICAg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvUmVuZGVyaW5nQmFj
a2VuZC9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuY3BwCmluZGV4IGU2OWRl
MjliYjJkLi5mYmNmYzQ1ZjU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisKKyNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiUmVtb3RlSW1hZ2VCdWZmZXJQcm94eU1lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQg
ewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZUltYWdlQnVmZmVyUHJveHk6OlJl
bW90ZUltYWdlQnVmZmVyUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcywgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRp
ZmllcikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKKyAgICAsIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKGlt
YWdlQnVmZmVySWRlbnRpZmllcikKK3sKKyAgICAvLyBSZWdpc3RlciBpdHNlbGYgYXMgYSBNZXNz
YWdlUmVjZWl2ZXIgaW4gdGhlIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuCisgICAgaWYgKGF1
dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuZ2V0KCkpCisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNl
aXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2ltYWdlQnVmZmVySWRlbnRpZmllci50b1VJ
bnQ2NCgpLCAqdGhpcyk7Cit9CisKK1JlbW90ZUltYWdlQnVmZmVyUHJveHk6On5SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5KCkKK3sKKyAgICAvLyBVbi1yZWdpc3RlciBpdHNlbGYgYXMgYSBNZXNzYWdl
UmVjZWl2ZXIuCisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lt
YWdlQnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7
CisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIHJldHVybiAmZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+Y29ubmVjdGlvbigpOworICAgIHJldHVybiBudWxscHRyOworfQorCit1aW50NjRf
dCBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL1JlbmRlcmluZ0JhY2tlbmQv
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL1JlbmRl
cmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IGU2OWRlMjliYjJkLi45
ODEzMDc3N2Q2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL1JlbmRlcmlu
Z0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMCww
ICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisK
K2NsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkKKyAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdl
U2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAg
ICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBJbWFn
ZUJ1ZmZlcklkZW50aWZpZXIpOworICAgIH5SZW1vdGVJbWFnZUJ1ZmZlclByb3h5KCk7CisKK3By
b3RlY3RlZDoKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0aW9u
KiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisKKyAgICBXZWFrUHRyPEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBJbWFn
ZUJ1ZmZlcklkZW50aWZpZXIgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXI7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9SZW5kZXJp
bmdCYWNrZW5kL1JlbW90ZUltYWdlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTY5ZGUy
OWJiMmQuLmRlZDE4OWMyOWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
UmVuZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZUltYWdlQnVm
ZmVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCittZXNzYWdl
cyAtPiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IE5vdFJlZkNvdW50ZWQgeworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKEdQVV9QUk9DRVNTKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAzOTE2ZTc4YzUzZC4uNTVh
ZWRlNmE5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzcsNiArMzcsNyBAQCBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2VMb2FkZXIuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHkuY3BwCitHUFVQ
cm9jZXNzL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5jcHAKIEdQVVBy
b2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCiAK
IE5ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuY3BwCkBAIC01MzgsNiAr
NTM5LDcgQEAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNw
cAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNw
cCBAbm8tdW5pZnkKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94
eS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1ZpZGVvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAor
V2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlci5jcHAKIFdl
YlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAK
IFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCiBXZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggZmEzNDVkMTdlZTIuLjA2NzAxOWNmYjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC02
NDUsNiArNjQ1LDggQEAgTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBM
aWJXZWJSVENDb2RlY3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZVJlY2VpdmVyLmNwcAorUmVtb3RlSW1hZ2VCdWZmZXJQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAKIFJlbW90ZU1lZGlhUmVjb3JkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVNZWRp
YVJlY29yZGVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRlYWUxOTU4NGQ2Li42YzBhMjAwNjRlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00
MDM4LDYgKzQwMzgsMTIgQEAKIAkJNzFBNjc2QTQyMkM2MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hB
Y3Rpb25HZXN0dXJlUmVjb2duaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaDsgcGF0aCA9IGlvcy9XS1RvdWNoQWN0
aW9uR2VzdHVyZVJlY29nbml6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFB
Njc2QTUyMkM2MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVG91Y2hBY3Rpb25H
ZXN0dXJlUmVjb2duaXplci5tbTsgcGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29n
bml6ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRkI4MTBBMjI2MDYyN0Ew
MDMyMzY3NyAvKiBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVu
dHNEaXNwYXRjaFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjUwNkQz
OTIzRTlGODhCMDAxRTZFMEQgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzI1MDZEM0EyM0U5Rjg4QzAwMUU2RTBEIC8qIFJlbW90ZUltYWdlQnVmZmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUltYWdlQnVm
ZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI1MDZEM0IyM0U5Rjg4QzAw
MUU2RTBEIC8qIFJlbW90ZUltYWdlQnVmZmVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3MjUwNkQzQzIzRTlGOEI5MDAxRTZFMEQgLyogUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTA2RDNEMjNFOUY4Qjkw
MDFFNkUwRCAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTA2RDNFMjNFOUY4QjkwMDFFNkUwRCAvKiBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjU2NDU5RTIzRThGRjA3MDBBMDYzMkQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNTY0NTlG
MjNFOEZGMDcwMEEwNjMyRCAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNTY0NUEwMjNFOEZGMDcwMEEwNjMyRCAv
KiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzkxMiw2ICs3OTE4LDkgQEAKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNzI1NjQ1QTQyM0U5MDdEMTAwQTA2MzJEIC8qIElt
YWdlQnVmZmVySWRlbnRpZmllci5oICovLAorCQkJCTcyNTA2RDNBMjNFOUY4OEMwMDFFNkUwRCAv
KiBSZW1vdGVJbWFnZUJ1ZmZlci5jcHAgKi8sCisJCQkJNzI1MDZEMzkyM0U5Rjg4QjAwMUU2RTBE
IC8qIFJlbW90ZUltYWdlQnVmZmVyLmggKi8sCisJCQkJNzI1MDZEM0IyM0U5Rjg4QzAwMUU2RTBE
IC8qIFJlbW90ZUltYWdlQnVmZmVyLm1lc3NhZ2VzLmluICovLAogCQkJCTcyNTY0NUEzMjNFOEZG
MTUwMEEwNjMyRCAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCAqLywKIAkJCQk3MjU2NDVB
MjIzRThGRjE1MDBBMDYzMkQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oICovLAogCQkJCTcy
NTY0NUExMjNFOEZGMTUwMEEwNjMyRCAvKiBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oICov
LApAQCAtNzkyMiw2ICs3OTMxLDkgQEAKIAkJNzI1NjQ1OUQyM0U4RkU4NzAwQTA2MzJEIC8qIFJl
bmRlcmluZ0JhY2tlbmQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCTcyNTA2RDNFMjNFOUY4QjkwMDFFNkUwRCAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmNwcCAqLywKKwkJCQk3MjUwNkQzQzIzRTlGOEI5MDAxRTZFMEQgLyogUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oICovLAorCQkJCTcyNTA2RDNEMjNFOUY4QjkwMDFFNkUwRCAvKiBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCTcyNTY0NTlFMjNFOEZGMDcwMEEwNjMy
RCAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwICovLAogCQkJCTcyNTY0NTlGMjNF
OEZGMDcwMEEwNjMyRCAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAqLywKIAkJCQk3
MjU2NDVBMDIzRThGRjA3MDBBMDYzMkQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1l
c3NhZ2VzLmluICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9S
ZW5kZXJpbmdCYWNrZW5kL1JlbW90ZUltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlci5jcHAKaW5kZXgg
ZTY5ZGUyOWJiMmQuLjYxNGMyYTFjMmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1
ZmZlci5jcHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlSW1h
Z2VCdWZmZXIuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIlJlbW90ZUltYWdlQnVmZmVyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlSW1hZ2VCdWZmZXI6OlJlbW90ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCisgICAgOiBtX3Jl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQorewor
ICAgIC8vIFJlZ2lzdGVyIGl0c2VsZiBhcyBhIE1lc3NhZ2VSZWNlaXZlciBpbiB0aGUgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uCisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNl
aXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CisgICAgbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlSW1hZ2VCdWZmZXI6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworCisg
ICAgLy8gQ3JlYXRlIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LgorICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Q3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwg
cmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBtX2ltYWdlQnVmZmVy
SWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworfQorCitSZW1vdGVJ
bWFnZUJ1ZmZlcjo6flJlbW90ZUltYWdlQnVmZmVyKCkKK3sKKyAgICAvLyBVbi1yZWdpc3RlciBp
dHNlbGYgYXMgYSBNZXNzYWdlUmVjZWl2ZXIuCisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAm
IG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVBy
b2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CisgICAgbWVzc2FnZVJlY2Vp
dmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcyk7CisKKyAgICAvLyBSZWxlYXNlIHRo
ZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LgorICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6UmVsZWFzZUltYWdlQnVmZmVyKG1faW1hZ2VCdWZmZXJJZGVudGlm
aWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9CisKK0lQQzo6Q29ubmVjdGlv
biogUmVtb3RlSW1hZ2VCdWZmZXI6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBSZW1vdGVJbWFnZUJ1ZmZlcjo6
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX2ltYWdl
QnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZUltYWdl
QnVmZmVyLmgKaW5kZXggZTY5ZGUyOWJiMmQuLjhmN2IwMjczZDNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQv
UmVtb3RlSW1hZ2VCdWZmZXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1
ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EaXNw
bGF5TGlzdEl0ZW1zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVJbWFn
ZUJ1ZmZlcgorICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICAsIHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIH5SZW1vdGVJbWFnZUJ1ZmZlcigp
OworCitwcm90ZWN0ZWQ6CisgICAgUmVtb3RlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisKKyAgICAv
LyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CisKKyAgICBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgbV9pbWFnZUJ1
ZmZlcklkZW50aWZpZXIgeyBJbWFnZUJ1ZmZlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAg
ICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BS
T0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL1JlbmRlcmlu
Z0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXIubWVzc2FnZXMu
aW4KaW5kZXggZTY5ZGUyOWJiMmQuLjEwYTYxZmM0ZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXIubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNr
ZW5kL1JlbW90ZUltYWdlQnVmZmVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjggQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKKworbWVzc2FnZXMgLT4gUmVtb3RlSW1hZ2VCdWZmZXIgTm90UmVmQ291bnRlZCB7Cit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391709</attachid>
            <date>2020-02-25 18:13:07 -0800</date>
            <delta_ts>2020-02-26 00:18:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207221-20200225181306.patch</filename>
            <type>text/plain</type>
            <size>97137</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTAyLTI1ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IHRoZSByZW1vdGUgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNzIyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICBNYWtlIEltYWdlQnVmZmVyIGhlYWRlciBmaWxlciBhY2Nlc3NpYmxlIGJ5IFdlYktpdC4K
KworICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
TWFrZSBIVE1MQ2FudmFzRWxlbWVudCBiZSBhYmxlIHRvIGNyZWF0ZSBhIHJlbW90ZSBJbWFnZUJ1
ZmZlci4KKworICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgV2Ugc2hv
dWxkIG5ldmVyIGNhbGwgdGhpcyBmdW5jdGlvbi4gV2ViQ2hyb21lQ2xpZW50IG92ZXJyaWRlcyB0
aGlzCisgICAgICAgIGZ1bmN0aW9uIGJ1dCBvbmx5IGlmIEVOQUJMRShHUFVfUFJPQ0VTUykuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dC5oOgorCiAyMDIwLTAyLTI1ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRA
c29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBGaXggYnVpbGQgYWZ0ZXIgcmV2aXNpb25z
IDI1NzM1NyBhbmQgMjU3MzU0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTE3MzUsNiArMTczNSwxMSBAQAogCQk1M0UyOUU1RjE2N0E4QTE5MDA1ODZEM0QgLyogSW50ZXJu
YWxTZXR0aW5nc0dlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTNFMjlFNUQxNjdBOEExOTAwNTg2RDNEIC8qIEludGVybmFsU2V0dGluZ3NH
ZW5lcmF0ZWQuaCAqLzsgfTsKIAkJNTNFRDNGREUxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJu
YWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1M0VEM0ZEQzE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRp
bmdzR2VuZXJhdGVkLmNwcCAqLzsgfTsKIAkJNTNFRDNGREYxNjdBODhFNzAwNjc2MkU2IC8qIEpT
SW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTNFRDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxT
ZXR0aW5nc0dlbmVyYXRlZC5oICovOyB9OworCQk1NTA2NDA5MzI0MDVERjJEMDBBQUUwNDUgLyog
Q29uY3JldGVJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzJCQUMzQTcyM0UxNzMyODAwOEQ3NDFDIC8qIENvbmNyZXRlSW1hZ2VCdWZm
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1
NTA2NDA5NTI0MDVFMTM4MDBBQUUwNDUgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBQjIz
RTFFNTQ0MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTUwNjQwOTYyNDA1RUE4
MjAwQUFFMDQ1IC8qIEltYWdlQnVmZmVyQ0dCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBRDIzRTFFNTQ1MDA4RDc0MUMgLyogSW1h
Z2VCdWZmZXJDR0JhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk1NTA2NDA5NzI0MDVGMkZEMDBBQUUwNDUgLyogRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzJFQTA5RjcyM0ZDQ0IzRDAwODUwNEE1IC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NTA2NDA5ODI0
MDVGMzUxMDBBQUUwNDUgLyogRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJFQTA5RjkyM0ZDQ0M2QTAwODUw
NEE1IC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyog
UXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTQ2NzU3QjFGRDIx
MkE5MDAzQjEwQjAgLyogSW1hZ2VTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1NDY3NTc4MUZEMUZDMUEwMDNCMTBCMCAvKiBJbWFnZVNvdXJj
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1
NTBDQjQyMUU5NTVFM0MwMDExMUFBMCAvKiBJbWFnZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTUwQ0I0MTFFOTU1RTNDMDAxMTFBQTAgLyog
SW1hZ2VUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0zMTg4LDcgKzMxOTMsNyBAQAogCQlBNzVFOEI4RDBFMURFMkQ2MDA3RjI0ODEgLyog
RkVDb21wb25lbnRUcmFuc2Zlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTc1RThCODUwRTFERTJENjAwN0YyNDgxIC8qIEZFQ29tcG9uZW50VHJhbnNm
ZXIuaCAqLzsgfTsKIAkJQTc1RThCOEYwRTFERTJENjAwN0YyNDgxIC8qIEZFQ29tcG9zaXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVFOEI4NzBF
MURFMkQ2MDA3RjI0ODEgLyogRkVDb21wb3NpdGUuaCAqLzsgfTsKIAkJQTc2RTVGN0YxMzVFMERD
RjAwQTY5ODM3IC8qIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NkU1RjdFMTM1RTBEQ0YwMEE2OTgzNyAvKiBS
ZW5kZXJlZERvY3VtZW50TWFya2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJQTc3OTc5MUEwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3OTc5MTQw
RDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oICovOyB9OworCQlBNzc5NzkxQTBENkI5RDBD
MDAzODUxQjkgLyogSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzc5NzkxNDBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc3OTc5Mjkw
RDZCOUU2NDAwMzg1MUI5IC8qIEpTSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkyNTBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFn
ZURhdGEuaCAqLzsgfTsKIAkJQTc3QjQxQTAxMkU2NzVBOTAwNTQzNDNEIC8qIFRleHRFdmVudElu
cHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTc3QjQxOUYxMkU2NzVBOTAwNTQzNDNEIC8qIFRleHRFdmVudElucHV0VHlwZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3N0QwMDEyMTMzQjBB
RUIwMEQ2NjU4QyAvKiBUZXh0Q2hlY2tpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3N0QwMDExMTMzQjBBRUIwMEQ2NjU4QyAvKiBUZXh0Q2hlY2tp
bmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MjkzMjksNiArMjkzMzQsNyBAQAogCQkJCUY0NDJDMzU5MjNFM0FERDIwMDQ5OTU4MiAvKiBDb21w
b3NpdGlvbkhpZ2hsaWdodC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRENUE3MjcxRUJFRTQ3RDAw
OUJBNTk3IC8qIENvbXBvc2l0aW9uVW5kZXJsaW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTE2
RTJDQzFGRUQ3NURDMDBDMDZGREUgLyogQ29tcHV0ZWRFZmZlY3RUaW1pbmcuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTU1MDY0MDkzMjQwNURGMkQwMEFBRTA0NSAvKiBDb25jcmV0ZUltYWdlQnVmZmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4RjEyQjAyNkY3MDBDMUEzNTkgLyogQ29uZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDOTdBRjMwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBRjM0M0QxRUE3RTBGMTAwMzgyQ0QzIC8qIENvbnN0YW50
UHJvcGVydHlNYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMjk2NzQsNiArMjk2ODAsOCBAQAogCQkJ
CTExMkZCMzUyMjM5QzIzQzQwMDg3MDU0QSAvKiBEaXNwbGF5SW5saW5lUmVjdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNkZCNDdFNjMyMjc3NDI1QTAwQzdCQ0IwIC8qIERpc3BsYXlMaW5lQm94Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEMzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxp
c3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1MDY0MDk4MjQwNUYzNTEwMEFBRTA0NSAvKiBEaXNw
bGF5TGlzdERyYXdpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTA2NDA5NzI0MDVG
MkZEMDBBQUUwNDUgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFNUZCRDUxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRTVGQkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29y
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEOTFDM0RENTFFMDAwN0EyQ0EgLyogRGlz
cGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDI4Nyw2ICszMDI5NSw4IEBA
CiAJCQkJMzE4RUFENEQxRkE5MTM4MDAwOENFRjg2IC8qIEltYWdlQml0bWFwUmVuZGVyaW5nQ29u
dGV4dFNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkExMEI5MjBCMzgxOEJEMDAwOTlB
QTQgLyogSW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyQkFDM0FFMjNFMUYwQjAw
MDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1MDY0
MDk2MjQwNUVBODIwMEFBRTA0NSAvKiBJbWFnZUJ1ZmZlckNHQmFja2VuZC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTUwNjQwOTUyNDA1RTEzODAwQUFFMDQ1IC8qIEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzRTIxREQyMTgzNDQ0QTAwRTY2RjU1IC8q
IEltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMjUzOTYzMThD
RTdGNjIwMDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTEwMTkyRDYxOEI2QjlCNzAwN0ZDN0ExIC8qIEltYWdlQ29udHJvbHNSb290
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5NSw4ICs4OTUsMTMg
QEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZQogICAgIC8vIEZJWE1F
OiBBZGQgYSBuZXcgc2V0dGluZyBmb3IgRGlzcGxheUxpc3QgZHJhd2luZyBvbiBjYW52YXMuCiAg
ICAgYm9vbCB1c2VzRGlzcGxheUxpc3REcmF3aW5nID0gbV91c2VzRGlzcGxheUxpc3REcmF3aW5n
LnZhbHVlT3IoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQo
KSk7CiAKKyAgICAvLyBGSVhNRTogQWRkIGEgbmV3IHNldHRpbmcgZm9yIHJlbW90ZSBkcmF3aW5n
IG9uIGNhbnZhcy4KKyAgICBib29sIHVzZXNSZW1vdGVEcmF3aW5nID0gZmFsc2U7CisKICAgICBS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGU7Ci0gICAgaWYgKHVzZXNEaXNwbGF5TGlzdERyYXdp
bmcpCisgICAgaWYgKHVzZXNSZW1vdGVEcmF3aW5nKQorICAgICAgICByZW5kZXJpbmdNb2RlID0g
c2hvdWxkQWNjZWxlcmF0ZShzaXplKCkpID8gUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0
ZWQgOiBSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFjY2VsZXJhdGVkOworICAgIGVsc2UgaWYgKHVz
ZXNEaXNwbGF5TGlzdERyYXdpbmcpCiAgICAgICAgIHJlbmRlcmluZ01vZGUgPSBzaG91bGRBY2Nl
bGVyYXRlKHNpemUoKSkgPyBSZW5kZXJpbmdNb2RlOjpEaXNwbGF5TGlzdEFjY2VsZXJhdGVkIDog
UmVuZGVyaW5nTW9kZTo6RGlzcGxheUxpc3RVbmFjY2VsZXJhdGVkOwogICAgIGVsc2UKICAgICAg
ICAgcmVuZGVyaW5nTW9kZSA9IHNob3VsZEFjY2VsZXJhdGUoc2l6ZSgpKSA/IFJlbmRlcmluZ01v
ZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzA2LDcgKzMwNiw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNy
ZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCkgY29uc3QgeyByZXR1
cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9k
ZSwgZmxvYXQsIENvbG9yU3BhY2UpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0
dWFsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQsIENvbG9yU3BhY2UpIGNvbnN0IHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBQYXNzIG51bGxw
dHIgYXMgdGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVy
KikgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29u
dGV4dC5oCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMywxNSArMzMsMTUgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAogY2xhc3Mg
RHJhd2luZ0NvbnRleHQgewogcHVibGljOgotICAgIERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0
U2l6ZSYgbG9naWNhbFNpemUpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNv
bnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxEcmF3aW5nQ29udGV4dCY+KCp0aGlzKS5t
X2NvbnRleHQ7IH0KICAgICBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QoKSB7IHJldHVybiBtX2Rp
c3BsYXlMaXN0OyB9CiAgICAgY29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwbGF5TGlzdDsgfQogICAgIGNvbnN0IERpc3BsYXlMaXN0KiByZXBsYXll
ZERpc3BsYXlMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXBsYXllZERpc3BsYXlMaXN0LmdldCgp
OyB9CiAKLSAgICB2b2lkIHNldFRyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KGJvb2wpOwotICAgIHZv
aWQgcmVwbGF5RGlzcGxheUxpc3QoR3JhcGhpY3NDb250ZXh0Jik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRUcmFja3NEaXNwbGF5TGlzdFJlcGxheShib29sKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlcGxheURpc3BsYXlMaXN0KEdyYXBoaWNzQ29udGV4dCYpOwogCiBwcm90ZWN0
ZWQ6CiAgICAgR3JhcGhpY3NDb250ZXh0IG1fY29udGV4dDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNTc0MDEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEyMiBAQAorMjAyMC0wMi0yNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxh
d2FAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB0aGUgcmVtb3RlIEltYWdlQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcyMjEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdGVJ
bWFnZUJ1ZmZlckNoYW5uZWwgYW5kIFJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5IGFyZSBy
ZXNwb25zaWJsZQorICAgICAgICBmb3IgaGFuZGxpbmcgdGhlIGNvbW11bmljYXRpb25zIG9mIHRo
ZSBJbWFnZUJ1ZmZlciBwYXJ0cyBiZXR3ZWVuIFdlYlByb2Nlc3MKKyAgICAgICAgYW5kIEdQVVBy
b2Nlc3MuIAorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoU3luY01lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6Om1lc3NhZ2VSZWNlaXZlck1hcCk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OndlYlByb2Nlc3NJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBkaXNwYXRjaGVzIG1lc3NhZ2VzIHRvIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eQorICAgICAgICBhbmQgUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVs
UHJveHkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgIEZvcmNlIHRoZSBjb2RlIGdlbmVyYXRvciB0byBjYWxsIGRp
c3BhdGNoTWVzc2FnZSgpIGFuZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoKQorICAgICAgICB3aGVu
IG1lc3NhZ2VzIGFyZSByZWNlaXZlZC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3M6
IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJD
aGFubmVsUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZm
ZXJDaGFubmVsUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHk6On5SZW1vdGVJbWFnZUJ1ZmZl
ckNoYW5uZWxQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyQ2hhbm5l
bFByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5
OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5Lm1lc3NhZ2VzLmluOiBBZGRl
ZC4KKyAgICAgICAgSGFuZGxlcyB0aGUgY29tbXVuaWNhdGlvbiBwYXJ0IG9mIHRoZSByZW1vdGUg
SW1hZ2VCdWZmZXIgaW4gdGhlIEdQVSBzaWRlLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVBsYXRmb3JtSW1hZ2VCdWZmZXJQcm94eS5oOiBBZGRlZC4K
KyAgICAgICAgVGhpcyBzaG91bGQgYmUgZXZlbnR1YWxseSB0aGUgcmVtb3RlIEltYWdlQnVmZmVy
IGluIHRoZSBHUFUgc2lkZSB3aGljaAorICAgICAgICBpcyByZXNwb25zaWJsZSBmb3IgY3JlYXRp
bmcgYSBzaGFyZWQgYmFjayBlbmQgYW5kIHJlcGxheWluZyBiYWNrIGRyYXdpbmcKKyAgICAgICAg
Y29tbWFuZHMuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZUltYWdl
QnVmZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBpcyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhlIHJl
bW90ZQorICAgICAgICBJbWFnZUJ1ZmZlciBpbiB0aGUgR1BVIHNpZGUuIEl0IGhvbGRzIGl0IGlu
IGEgSGFzaE1hcCBpbmRleGVkIGJ5IHRoZQorICAgICAgICBJbWFnZUJ1ZmZlcklkZW50aWZpZXIu
CisKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlci5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlck1hbmFnZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAgICAgIFVuaWZpZWQgc291cmNlcyBnYXJkZW5p
bmcuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgSGFu
ZGxlIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIGF0dHJpYnV0ZQorCisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3Nh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5j
TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlTWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246Om1l
c3NhZ2VSZWNlaXZlck1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgIEdQVUNvbm5lY3Rpb24gZGlzcGF0Y2hlcyBt
ZXNzYWdlcyB0byBSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9JbWFnZUJ1ZmZlcklkZW50aWZpZXIuaDogQWRkZWQuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUltYWdlQnVmZmVyOjpSZW1vdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIFRoaXMgc2hvdWxk
IGJlIGV2ZW50dWFsbHkgdGhlIHJlbW90ZSBJbWFnZUJ1ZmZlciBpbiB0aGUgV2ViQ29udGV4dCBz
aWRlCisgICAgICAgIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciByZWNlaXZpbmcgdGhlIHNoYXJl
ZCBiYWNrIGVuZCBmcm9tIHRoZSBHUFUgc2lkZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWw6OlJlbW90ZUltYWdlQnVmZmVyQ2hhbm5l
bCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbDo6flJlbW90ZUlt
YWdlQnVmZmVyQ2hhbm5lbCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyQ2hh
bm5lbDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWw6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsOjpkaWRSZWNlaXZl
TWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJDaGFubmVsLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbC5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgIEhh
bmRsZXMgdGhlIGNvbW11bmljYXRpb24gcGFydCBvZiB0aGUgcmVtb3RlIEltYWdlQnVmZmVyIGlu
IHRoZSBXZWJDb250ZWN0CisgICAgICAgIHNpZGUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVQbGF0Zm9ybUltYWdlQnVmZmVyLmg6IEFkZGVkLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXIuY3BwOgorICAgICAgICBVbmlmaWVkIHNvdXJjZXMgZ2FyZGVuaW5nLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURpc3BsYXlSZWZyZXNo
TW9uaXRvciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRl
SW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIENyZWF0ZSB0aGUgcmVtb3RlIEltYWdlQnVmZmVy
LgorCiAyMDIwLTAyLTI1ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbApJbmRleDogU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjU3
MzY5KQorKysgU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3
b3JraW5nIGNvcHkpCkBAIC0xNSw2ICsxNSw4IEBAICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9I
RUFERVJTX0RJUikvbW8KICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikveHhk
LnBsCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdl
cy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ckNoYW5uZWxQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgogJChQ
Uk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xMDcsNiArMTA5LDcgQEAgJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZQogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2Vy
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgpJbmRleDogU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNTczNjkpCisrKyBT
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNv
cHkpCkBAIC0xMjksNiArMTI5LDEyIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWIKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1l
c3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVJbWFnZUJ1ZmZlckNo
YW5uZWxNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlSW1hZ2VCdWZmZXJDaGFu
bmVsUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eU1lc3NhZ2VzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUltYWdl
QnVmZmVyQ2hhbm5lbFByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eU1lc3NhZ2VzUmVwbGllcy5oCkBAIC0xNTQsNiArMTYwLDkgQEAgJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYgogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlUmVjZWl2
ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXNSZXBsaWVzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2Vz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3Nh
Z2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaApJbmRleDog
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBA
CiBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIpIFwKICAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3Mg
XAorICAgICQoV2ViS2l0MikvR1BVUHJvY2Vzcy9ncmFwaGljcyBcCiAgICAgJChXZWJLaXQyKS9H
UFVQcm9jZXNzL21hYyBcCiAgICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzL21lZGlhIFwKICAgICAk
KFdlYktpdDIpL0dQVVByb2Nlc3Mvd2VicnRjIFwKQEAgLTUxLDYgKzUyLDcgQEAgVlBBVEggPSBc
CiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4gXAogICAgICQoV2ViS2l0Mikv
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbiBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVSBc
CisgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcyBcCiAgICAgJChXZWJLaXQy
KS9XZWJQcm9jZXNzL0dQVS9tZWRpYSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVS93
ZWJydGMgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UgXApAQCAtMTQ2
LDYgKzE0OCw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciBcCiAgICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXIgXAogICAgIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkgXAorICAg
IFJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbCBcCisgICAgUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVs
UHJveHkgXAogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBcCiAgICAgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkgXAogICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkgXApAQCAtMTUz
LDYgKzE1Nyw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciBcCiAgICAgUmVtb3Rl
T2JqZWN0UmVnaXN0cnkgXAorICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCiAgICAg
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIFwKICAgICBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvciBcCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI0LDEyICsyNCw4IEBACiBHUFVQcm9jZXNzL0dQVVBy
b2Nlc3MuY3BwCiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCiBHUFVQ
cm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCi1HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKLUdQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5jcHAKLUdQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCi1HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKLUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKLUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCitHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5LmNwcAorR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJh
Y2tQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC0z
OCw2ICszNCwxMiBAQCBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkCiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VmlkZW9UcmFja1Byb3h5LmNwcAorR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXIuY3BwCitHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuY3BwCitHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyLmNwcAorR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXIuY3BwCitHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuY3BwCitHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyLmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmNw
cAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5VHJhY2tlci5jcHAKQEAgLTUzMiw2ICs1
MzQsNyBAQCBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJvCiBXZWJQcm9j
ZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKIAog
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCitXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWwuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI1
NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNjQzLDE0ICs2NDMsMTggQEAgV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdAogLy8gRGVyaXZlZCBTb3VyY2VzCiBFZGl0YWJsZUltYWdlQ29udHJvbGxlck1lc3NhZ2VS
ZWNlaXZlci5jcHAKIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3Bw
CitHUFVQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVVByb2Nlc3NQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBMaWJX
ZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIExpYldlYlJUQ0NvZGVjc01lc3Nh
Z2VSZWNlaXZlci5jcHAKIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdl
ck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
TWVzc2FnZVJlY2VpdmVyLmNwcAorUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsTWVzc2FnZVJlY2Vp
dmVyLmNwcAorUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiBSZW1vdGVNZWRpYVJlY29yZGVyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlTWVkaWFSZWNv
cmRlck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVz
c2FnZVJlY2VpdmVyLmNwcAogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2VpdmVy
LmNwcApJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdQ
VVByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRD
Q29kZWNzUHJveHkuaCIKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNDksNiArNTAsOCBAQAogI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUmVjb3JkZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIgorI2luY2x1ZGUgIlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCkBAIC0xNzksNiArMTgyLDEzIEBAIFJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIEcKICNlbmRpZgogI2VuZGlmCiAKK1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkKK3sKKyAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5KQorICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSA9IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4gKm1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OworfQorCiAjaWYgUExBVEZPUk0oQ09DT0EpICYm
IFVTRShMSUJXRUJSVEMpCiBMaWJXZWJSVENDb2RlY3NQcm94eSYgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6bGliV2ViUlRDQ29kZWNzUHJveHkoKQogewpAQCAtMTg5LDc5ICsxOTksODMgQEAg
TGliV2ViUlRDQ29kZWNzUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYgogfQogI2VuZGlmCiAKLXZv
aWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCitib29sIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgcmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gZWxz
ZSBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICByZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLmRpZFJlY2VpdmVQbGF5ZXJNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0gZWxzZSBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAg
ICAgcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICB1c2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5KCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tR1BVUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVy
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJl
Y29yZGVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIG1lZGlhUmVj
b3JkZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9u
LCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVJlY29yZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgbWVkaWFS
ZWNvcmRlck1hbmFnZXIoKS5kaWRSZWNlaXZlUmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAg
aWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
ewogICAgICAgICBhdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIGF1ZGlvVHJhY2tSZW5kZXJlck1hbmFn
ZXIoKS5kaWRSZWNlaXZlUmVuZGVyZXJNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBzYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJv
Y2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgewogICAgICAgICBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCkuZGlk
UmVjZWl2ZUxheWVyTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKICNlbmRpZgogI2lmIFBMQVRG
T1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSkgewogICAgICAgICBsaWJXZWJSVENDb2RlY3NQcm94eSgpLmRpZFJlY2VpdmVN
ZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2Rlcik7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICByZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAo
KS5kaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKLXZvaWQgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQorYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNv
ZGVyKQogewogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
ewogICAgICAgICByZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLmRpZFJlY2VpdmVTeW5j
TWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgewogICAgICAgICB1c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCkuZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlRnJvbUdQVVByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlF
bmNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBzYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdl
YlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKICNlbmRpZgotCi0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRp
c3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0K
IAogY29uc3QgU3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjptZWRpYUNhY2hlRGly
ZWN0b3J5KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsMTMgKzI4LDEyIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NN
ZXNzYWdlc1JlcGxpZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4K
KyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nl
c3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2dnZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI7CkBAIC00OCwyMyArNDcsMjYg
QEAgY2xhc3MgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZQogY2xhc3MgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiBjbGFzcyBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
cjsKIGNsYXNzIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOworY2xhc3MgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OwogY2xhc3MgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFu
YWdlcjsKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CiAKIGNsYXNzIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M+CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8R1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcz4KICAgICAsIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNyZWF0ZShHUFVQcm9j
ZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllciwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZpcnR1YWwgfkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1f
Y29ubmVjdGlvbi5nZXQoKTsgfQorICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdl
UmVjZWl2ZXJNYXAoKSB7IHJldHVybiBtX21lc3NhZ2VSZWNlaXZlck1hcDsgfQogICAgIEdQVVBy
b2Nlc3MmIGdwdVByb2Nlc3MoKSB7IHJldHVybiBtX2dwdVByb2Nlc3MuZ2V0KCk7IH0KLQorICAg
IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsgfQorICAgICAgICAKICAgICB2b2lkIGNs
ZWFudXBGb3JTdXNwZW5zaW9uKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAgICAgdm9pZCBlbmRTdXNw
ZW5zaW9uKCk7CiAKLSAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7IH0KICAgICBS
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciYgcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIoKTsK
IAogICAgIExvZ2dlciYgbG9nZ2VyKCk7CkBAIC05MSw2ICs5Myw3IEBAIHByaXZhdGU6CiAgICAg
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlcigpOwogI2VuZGlmCiAjZW5kaWYKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOwogCiAgICAgLy8gSVBDOjpD
b25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIGZp
bmFsOwpAQCAtOTgsMTAgKzEwMSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAorICAgIGJvb2wgZGlzcGF0Y2hN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIGJvb2wgZGlzcGF0
Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworCiAgICAgUmVmUHRyPExvZ2dlcj4gbV9sb2dnZXI7CiAK
ICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgUmVmPEdQVVByb2Nl
c3M+IG1fZ3B1UHJvY2VzczsKKyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCBtX21lc3NhZ2VS
ZWNlaXZlck1hcDsKICAgICBjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dlYlBy
b2Nlc3NJZGVudGlmaWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVJlc291cmNl
TWFuYWdlcj4gbV9yZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk+IG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk7CkBAIC0xMTgsNiArMTI1LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGliV2ViUlRDQ29kZWNzUHJveHk+IG1fbGliV2ViUlRDQ29kZWNzUHJveHk7CiAjZW5kaWYK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
PiBtX3Nlc3Npb25NYW5hZ2VyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk+IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNp
b24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKIAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyB7CittZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlz
cGF0Y2hNZXNzYWdlIHsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlckNoYW5u
ZWxQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5LmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVs
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJv
eHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJlbW90ZUltYWdl
QnVmZmVyQ2hhbm5lbE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJDaGFu
bmVsUHJveHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK1JlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5OjpSZW1vdGVJbWFn
ZUJ1ZmZlckNoYW5uZWxQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlm
aWVyKQorICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKG1ha2VXZWFrUHRyKGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQorICAgICwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIoaW1h
Z2VCdWZmZXJJZGVudGlmaWVyKQoreworICAgIC8vIFJlZ2lzdGVyIGl0c2VsZiBhcyBhIE1lc3Nh
Z2VSZWNlaXZlciBpbiB0aGUgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy4KKyAgICBpZiAoYXV0
byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5nZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2Vp
dmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVJbWFnZUJ1ZmZlckNo
YW5uZWxQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2ltYWdlQnVmZmVySWRlbnRpZmll
ci50b1VJbnQ2NCgpLCAqdGhpcyk7Cit9CisKK1JlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5
Ojp+UmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHkoKQoreworICAgIC8vIFVuLXJlZ2lzdGVy
IGl0c2VsZiBhcyBhIE1lc3NhZ2VSZWNlaXZlci4KKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAg
ICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2ltYWdlQnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eTo6
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIGlmIChhdXRvKiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQor
ICAgICAgICByZXR1cm4gJmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordWludDY0X3QgUmVtb3RlSW1hZ2VCdWZmZXJDaGFu
bmVsUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIudG9VSW50NjQoKTsKK30KKwordm9pZCBSZW1vdGVJ
bWFnZUJ1ZmZlckNoYW5uZWxQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikKK3sKKyAgICAvLyBGSVhNRTogRGVsZXRlIHRoaXMgZnVuY3Rpb24g
d2hlbiBtZXNzYWdlcyBhcmUgYWRkZGVkIHRvIFJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbC5tZXNz
YWdlcy5pbi4KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHkuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJDaGFubmVsUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNp
bmNsdWRlICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M7CisKK2NsYXNzIFJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5CisgICAgOiBwcml2YXRl
IElQQzo6TWVzc2FnZVNlbmRlcgorICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7
CitwdWJsaWM6CisgICAgUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHkoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIEltYWdlQnVmZmVySWRlbnRpZmllcik7CisgICAgflJlbW90ZUltYWdl
QnVmZmVyQ2hhbm5lbFByb3h5KCk7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBJUEM6Ok1lc3NhZ2VT
ZW5kZXIuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0IG92ZXJyaWRlOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkg
Y29uc3Qgb3ZlcnJpZGU7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJp
ZGU7CisKKyAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzczsKKyAgICBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgbV9pbWFnZUJ1ZmZl
cklkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShHUFVfUFJPQ0VTUwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlckNoYW5u
ZWxQcm94eS5tZXNzYWdlcy5pbgkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHkubWVzc2FnZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCittZXNzYWdlcyAtPiBS
ZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eSBOb3RSZWZDb3VudGVkIHsKKworfQorCisjZW5k
aWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAi
UmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbmNy
ZXRlSW1hZ2VCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIEJhY2tlbmRUeXBlPgorY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1YmxpYyBX
ZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFJlbW90ZUlt
YWdlQnVmZmVyQ2hhbm5lbFByb3h5IHsKKyAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+OworICAgIHVzaW5n
IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CisKK3B1YmxpYzoKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcywgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRp
ZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVt
cGxhdGUgY3JlYXRlPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KHNpemUsIHJlc29sdXRpb25TY2Fs
ZSwgY29sb3JTcGFjZSwgbnVsbHB0ciwgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgaW1hZ2VC
dWZmZXJJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHN0
ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIg
aW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVy
KFdURk1vdmUoYmFja2VuZCkpCisgICAgICAgICwgUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJv
eHkoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAg
IHsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShHUFVfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVQbGF0Zm9ybUltYWdlQnVmZmVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUGxhdGZvcm1JbWFnZUJ1ZmZlclByb3h5LmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVBsYXRmb3JtSW1hZ2VCdWZmZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIEZJWE1FOiBUaGlzIGRvZXMgbm90
IGltcGxlbWVudCByZW1vdGUgcmVuZGVyaW5nLiBVc2Ugc2hhcmVhYmxlIEltYWdlQnVmZmVyIGJh
Y2tlbmRzLgordXNpbmcgUmVtb3RlVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyUHJveHkgPSBSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5PFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD47
Cit1c2luZyBSZW1vdGVBY2NlbGVyYXRlZEltYWdlQnVmZmVyUHJveHkgPSBSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5PFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD47CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpJbmRleDog
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCIKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJlbW90ZVBsYXRmb3JtSW1hZ2VC
dWZmZXJQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5PiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5PihuZXcgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5KGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKTsKK30KKworUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICA6IG1fZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkK
K3sKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdl
QnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit7CisgICAgaWYgKG1faW1h
Z2VCdWZmZXJNYXAuY29udGFpbnMoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8q
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Z2V0KCk7CisgICAgaWYgKCFncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1
cm47CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOworCisg
ICAgc3dpdGNoIChyZW5kZXJpbmdNb2RlKSB7CisgICAgY2FzZSBSZW5kZXJpbmdNb2RlOjpSZW1v
dGVBY2NlbGVyYXRlZDoKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBSZW1vdGVBY2NlbGVyYXRlZElt
YWdlQnVmZmVyUHJveHk6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCAqZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgaW1hZ2VCdWZmZXJJZGVudGlmaWVy
KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJlbmRlcmluZ01vZGU6OlJlbW90ZVVuYWNj
ZWxlcmF0ZWQ6CisgICAgICAgIGltYWdlQnVmZmVyID0gUmVtb3RlVW5hY2NlbGVyYXRlZEltYWdl
QnVmZmVyUHJveHk6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCAqZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsK
KyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9CisKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2ltYWdlQnVmZmVyTWFwLmFkZChpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIFdURk1vdmUo
aW1hZ2VCdWZmZXIpKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJl
bGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlm
aWVyKQoreworICAgIC8vIENyZWF0ZUltYWdlQnVmZmVyIG1lc3NhZ2Ugc2hvdWxkIGhhdmUgYmVl
biByZWNlaXZlZCBiZWZvcmUgdGhpcyBvbmUuCisgICAgaWYgKCFtX2ltYWdlQnVmZmVyTWFwLmNv
bnRhaW5zKGltYWdlQnVmZmVySWRlbnRpZmllcikpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9pbWFnZUJ1ZmZlck1hcC5yZW1v
dmUoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0NvbG9yU3BhY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+Cisj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
eworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5PiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworICAgIHZpcnR1
YWwgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpID0gZGVmYXVsdDsKKworICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworCisgICAg
dm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNv
cmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVySWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNl
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKKworICAgIHVzaW5nIEltYWdlQnVm
ZmVyTWFwID0gSGFzaE1hcDxJbWFnZUJ1ZmZlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4+OworICAgIEltYWdlQnVmZmVyTWFwIG1faW1hZ2VCdWZmZXJN
YXA7CisgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5tZXNzYWdlcy5pbgkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworbWVzc2FnZXMgLT4gUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIHZvaWQgQ3JlYXRl
SW1hZ2VCdWZmZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFn
ZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgdm9pZCBSZWxlYXNlSW1hZ2VCdWZmZXIoV2ViS2l0OjpJ
bWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorfQorCisjZW5kaWYg
Ly8gRU5BQkxFKEdQVV9QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlci5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdC
dWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgogCi11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogc3RhdGljIGNvbnN0IHZv
aWQqIG5leHRMb2dJZGVudGlmaWVyKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAkocmV2aXNpb24gMjU3
MzY5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsOCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvV2ViQXVkaW9CdWZmZXJMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgV2ViS2l0IHsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZWNv
cmRlcj4gUmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIE1lZGlhUmVjb3JkZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIGJvb2wgcmVjb3JkQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRXhj
ZXB0aW9uRGF0YS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6UmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cykKICAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKQpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAkocmV2aXNp
b24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCw4IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlbW90ZVZpZGVvU2FtcGxlLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBu
YW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmNyZWF0ZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgYm9vbCBoaWRlUm9v
dExheWVyLCBJbnRTaXplIHNpemUpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAgaW1w
b3J0IHN5cwogZnJvbSB3ZWJraXQgaW1wb3J0IHBhcnNlcgogCiBXQU5UU19DT05ORUNUSU9OX0FU
VFJJQlVURSA9ICdXYW50c0Nvbm5lY3Rpb24nCitXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJ
QlVURSA9ICdXYW50c0Rpc3BhdGNoTWVzc2FnZScKIExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUg
PSAnTGVnYWN5UmVjZWl2ZXInCiBOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUgPSAn
Tm90UmVmQ291bnRlZCcKIFNZTkNIUk9OT1VTX0FUVFJJQlVURSA9ICdTeW5jaHJvbm91cycKQEAg
LTIwNCw2ICsyMDUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJl
CiAgICAgcmV0dXJuIGZyb3plbnNldChbCiAgICAgICAgICdNYWNoU2VuZFJpZ2h0JywKICAgICAg
ICAgJ1N0cmluZycsCisgICAgICAgICdXZWJDb3JlOjpDb2xvclNwYWNlJywKICAgICAgICAgJ1dl
YkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9y
V29ya2VySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGZXRjaElkZW50aWZpZXInLApA
QCAtMjEzLDYgKzIxNSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xh
cmUKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCiAgICAgICAgICdXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRl
bnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpSZW5kZXJpbmdNb2RlJywKICAgICAgICAgJ1dl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2JJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJP
ckNsaWVudERhdGEnLApAQCAtMjIyLDYgKzIyNSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9i
ZV9mb3J3YXJkX2RlY2xhcmUKICAgICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlE
JywKICAgICAgICAgJ1dlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcicsCisgICAgICAg
ICdXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkxheWVy
SG9zdGluZ0NvbnRleHRJRCcsCiAgICAgICAgICdXZWJLaXQ6OkxpYldlYlJUQ1Jlc29sdmVySWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6Ok1ETlNSZWdpc3RlcklkZW50aWZpZXInLApAQCAt
Nzc5LDEzICs3ODMsMTYgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6
CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhc3luY19tZXNzYWdlcy5hcHBlbmQobWVzc2Fn
ZSkKIAotICAgIGlmIGFzeW5jX21lc3NhZ2VzOgorICAgIGlmIGFzeW5jX21lc3NhZ2VzIG9yIHJl
Y2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgog
ICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlJXNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNl
aXZlci5uYW1lLCByZWNlaXZlci5uYW1lIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZ
X1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tc
bicpCiAgICAgICAgIGlmIG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVE
X1JFQ0VJVkVSX0FUVFJJQlVURSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgYXV0
byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7XG4nKQogCiAgICAgICAgIHJlc3VsdCAr
PSBbYXN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdl
IGluIGFzeW5jX21lc3NhZ2VzXQorICAgICAgICBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdB
TlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAgICBpZiAoZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpKVxuJykKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuO1xuJykKICAgICAgICAgaWYg
KHJlY2VpdmVyLnN1cGVyY2xhc3MpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICVz
OjpkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTtcbicgJSAocmVjZWl2ZXIu
c3VwZXJjbGFzcykpCiAgICAgICAgIGVsc2U6CkBAIC03OTQsMTMgKzgwMSwxNiBAQCBkZWYgZ2Vu
ZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbicpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
J31cbicpCiAKLSAgICBpZiBzeW5jX21lc3NhZ2VzOgorICAgIGlmIHN5bmNfbWVzc2FnZXMgb3Ig
cmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6
CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9p
ZCAlczo6ZGlkUmVjZWl2ZVN5bmMlc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBy
ZXBseUVuY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVyLm5hbWUgaWYgcmVjZWl2
ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFKSBlbHNlICcnKSkKICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKICAgICAgICAgaWYgbm90IHJlY2VpdmVyLmhhc19h
dHRyaWJ1dGUoTk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFKToKICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTtc
bicpCiAgICAgICAgIHJlc3VsdCArPSBbc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwg
bWVzc2FnZSkgZm9yIG1lc3NhZ2UgaW4gc3luY19tZXNzYWdlc10KKyAgICAgICAgaWYgcmVjZWl2
ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6CisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKSlcbicpCisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgICAgIHJldHVybjtcbicpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVT
RURfUEFSQU0oY29ubmVjdGlvbik7XG4nKQogICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5V
U0VEX1BBUkFNKGRlY29kZXIpO1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIFVOVVNF
RF9QQVJBTShyZXBseUVuY29kZXIpO1xuJykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NiArMzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25EaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KQEAgLTg0Miw2ICs4NDMsMTggQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDbwogICAgID47CiB9OwogCit0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlJlbmRlcmluZ01vZGU+IHsKKyAgICB1c2luZyB2
YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsCisgICAgV2Vi
Q29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQsCisgICAgV2ViQ29yZTo6UmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwKKyAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpEaXNwbGF5
TGlzdEFjY2VsZXJhdGVkLAorICAgIFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OkRpc3BsYXlMaXN0
VW5hY2NlbGVyYXRlZCwKKyAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVy
YXRlZCwKKyAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFjY2VsZXJhdGVkCisg
ICAgPjsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QXV0b3Bs
YXlFdmVudD4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYkNv
cmU6OkF1dG9wbGF5RXZlbnQsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM3OTgs
NiArMzc5OCwyMCBAQAogCQk1M0NGQkJDNjIyMjREMUIwMDAyNjY1NDYgLyogVGV4dENoZWNrZXJD
b21wbGV0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRD
aGVja2VyQ29tcGxldGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzQ0ZC
QkM3MjIyNEQxQjAwMDI2NjU0NiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dENoZWNrZXJDb21wbGV0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRjNDQUE1MjA2QzQ0M0UwMDg2NDkwRSAvKiBOZXR3b3Jr
QWN0aXZpdHlUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1NTA2NDA5MDI0MDVEMDgxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1MDY0MDkxMjQwNUQwODEwMEFBRTA0NSAv
KiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1MDY0
MDkyMjQwNUQyMDEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NUMwQTJBQjI0MDU5
NEJEMDBGMkNCOTMgLyogUmVtb3RlUGxhdGZvcm1JbWFnZUJ1ZmZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVQbGF0Zm9ybUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTU1QzBBMkFDMjQwNTk1MjIwMEYyQ0I5MyAvKiBSZW1vdGVJbWFnZUJ1ZmZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1NUMwQTJBRDI0MDU5NjIyMDBGMkNCOTMgLyogUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVs
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1QzBBMkFFMjQwNTk2MjIwMEYyQ0I5MyAvKiBS
ZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZm
ZXJDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1QzBBMkIwMjQwNTk4
QjAwMEYyQ0I5MyAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUltYWdlQnVmZmVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVD
MEEyQjEyNDA1OUExMTAwRjJDQjkzIC8qIFJlbW90ZVBsYXRmb3JtSW1hZ2VCdWZmZXJQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVQbGF0Zm9ybUltYWdlQnVmZmVyUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVDMEEyQjIyNDA1OUE4NjAwRjJDQjkzIC8qIFJlbW90
ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUlt
YWdlQnVmZmVyQ2hhbm5lbFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTVDMEEyQjMyNDA1OUE4NjAwRjJDQjkzIC8qIFJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1QzBBMkI0MjQwNTlCNkUwMEYyQ0I5MyAvKiBSZW1v
dGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVDMEEyQjUyNDA1OUJFNTAwRjJDQjkzIC8qIEltYWdlQnVm
ZmVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVDMEEyQjYyNDA1OUM5NzAwRjJDQjkzIC8q
IFJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbC5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWwubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3MEFCOEYyMjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVN0
b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY0tleVByb3h5U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTcwQUI5MDAyMEIyNTE3NDAwQjhCRTg3IC8qIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTcwQUI5MDMyMEIyNTQxQzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3RvcmUubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZWNLZXlQcm94eVN0b3JlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjU0MCw2ICs2NTU0LDcgQEAKIAkJMkQ3RTQzQkYy
Mzc1MkNEOTAwRUE1Q0EwIC8qIEdQVSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJNTVDMEEyQUEyNDA1OTQ3ODAwRjJDQjkzIC8qIGdyYXBoaWNzICovLAog
CQkJCTA3OTIzMTJGMjM5QjNCMEMwMDk1OThFMiAvKiBtZWRpYSAqLywKIAkJCQk0MTcyMTk4ODIz
QjYxMjYxMDBBRTU2ODYgLyogd2VicnRjICovLAogCQkJCTJEN0U0M0MwMjM3NTJDRDkwMEVBNUNB
MCAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi8sCkBAIC02NTU0LDYgKzY1NjksNyBAQAog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyRDlGQjIwRDIzNzUyMDlE
MDA0OUY5MzYgLyogRW50cnlQb2ludCAqLywKKwkJCQk1NUMwQTJBRjI0MDU5ODc1MDBGMkNCOTMg
LyogZ3JhcGhpY3MgKi8sCiAJCQkJMkQ5RkIyMDQyMzc1MjA5RDAwNDlGOTM2IC8qIGlvcyAqLywK
IAkJCQkyRDlGQjIwNjIzNzUyMDlEMDA0OUY5MzYgLyogbWFjICovLAogCQkJCTA3Qzc1QzE3MjM5
OUEzREIwMDg4RTY1QiAvKiBtZWRpYSAqLywKQEAgLTc2ODUsNiArNzcwMSwzNCBAQAogCQkJcGF0
aCA9IGlvczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTU1QzBBMkFBMjQw
NTk0NzgwMEYyQ0I5MyAvKiBncmFwaGljcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJNTVDMEEyQjUyNDA1OUJFNTAwRjJDQjkzIC8qIEltYWdlQnVmZmVy
SWRlbnRpZmllci5oICovLAorCQkJCTU1QzBBMkFDMjQwNTk1MjIwMEYyQ0I5MyAvKiBSZW1vdGVJ
bWFnZUJ1ZmZlci5oICovLAorCQkJCTU1QzBBMkFEMjQwNTk2MjIwMEYyQ0I5MyAvKiBSZW1vdGVJ
bWFnZUJ1ZmZlckNoYW5uZWwuY3BwICovLAorCQkJCTU1QzBBMkFFMjQwNTk2MjIwMEYyQ0I5MyAv
KiBSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWwuaCAqLywKKwkJCQk1NUMwQTJCNjI0MDU5Qzk3MDBG
MkNCOTMgLyogUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsLm1lc3NhZ2VzLmluICovLAorCQkJCTU1
QzBBMkFCMjQwNTk0QkQwMEYyQ0I5MyAvKiBSZW1vdGVQbGF0Zm9ybUltYWdlQnVmZmVyLmggKi8s
CisJCQkpOworCQkJcGF0aCA9IGdyYXBoaWNzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKKwkJNTVDMEEyQUYyNDA1OTg3NTAwRjJDQjkzIC8qIGdyYXBoaWNzICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1NUMwQTJCMjI0MDU5QTg2MDBG
MkNCOTMgLyogUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHkuY3BwICovLAorCQkJCTU1QzBB
MkIzMjQwNTlBODYwMEYyQ0I5MyAvKiBSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eS5oICov
LAorCQkJCTU1QzBBMkI0MjQwNTlCNkUwMEYyQ0I5MyAvKiBSZW1vdGVJbWFnZUJ1ZmZlckNoYW5u
ZWxQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQk1NUMwQTJCMDI0MDU5OEIwMDBGMkNCOTMgLyog
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAorCQkJCTU1QzBBMkIxMjQwNTlBMTEwMEYyQ0I5
MyAvKiBSZW1vdGVQbGF0Zm9ybUltYWdlQnVmZmVyUHJveHkuaCAqLywKKwkJCQk1NTA2NDA5MDI0
MDVEMDgxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCAqLywKKwkJ
CQk1NTA2NDA5MTI0MDVEMDgxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmggKi8sCisJCQkJNTUwNjQwOTIyNDA1RDIwMTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCSk7CisJCQlwYXRoID0gZ3JhcGhpY3M7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk1NzBBQjhGNjIwQUU4MUFCMDBCOEJF
ODcgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSwz
MiArNzUsMzggQEAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgR1BVUHJvYwogfQog
I2VuZGlmCiAKLXZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorYm9vbCBH
UFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
c3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCktPmRpZFJlY2VpdmVQbGF5ZXJN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgaWYgKGRl
Y29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBjYXB0
dXJlTWFuYWdlciA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8VXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXI+KCkpCiAgICAgICAgICAgICBjYXB0dXJlTWFuYWdlci0+ZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tR1BVUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjaWYgUExBVEZPUk0oQ09DT0EpICYm
IEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gTWVzc2FnZXM6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7CiAgICAgICAgIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoKS5kaWRS
ZWNlaXZlTGF5ZXJNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkg
JiYgRU5BQkxFKFZJREVPX1RSQUNLKQogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCiAj
aWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJS
VENDb2RlY3MoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKKyAgICByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOworfQorCitib29sIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQoreworICAgIHJldHVybiBt
ZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtNDcsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgfkdQVVByb2Nl
c3NDb25uZWN0aW9uKCk7CiAgICAgCiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkg
eyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9CisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJN
YXAmIG1lc3NhZ2VSZWNlaXZlck1hcCgpIHsgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTWFwOyB9
CiAKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIHZvaWQgc2V0QXVkaXRUb2tlbihPcHRpb25h
bDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuKSB7IG1fYXVkaXRUb2tlbiA9IGF1ZGl0VG9rZW47
IH0KQEAgLTYyLDEwICs2NCwxNSBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6
Q2xpZW50CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCisgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+Jik7CisKICAgICAvLyBUaGUgY29ubmVjdGlvbiBmcm9tIHRoZSB3ZWIgcHJvY2VzcyB0
byB0aGUgR1BVIHByb2Nlc3MuCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9u
OworICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwIG1fbWVzc2FnZVJlY2VpdmVyTWFwOwogCiAj
aWYgSEFWRShBVURJVF9UT0tFTikKICAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX2F1ZGl0
VG9rZW47CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1NzM2OSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVz
c2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKIAotbWVzc2FnZXMgLT4gR1BVUHJvY2Vzc0Nvbm5lY3Rpb24geworbWVzc2Fn
ZXMgLT4gR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9JbWFnZUJ1ZmZlcklkZW50aWZpZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVySWRlbnRpZmllci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlm
aWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIEltYWdlQnVmZmVySWRlbnRpZmll
clR5cGUgeyB9OwordXNpbmcgSW1hZ2VCdWZmZXJJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmll
cjxJbWFnZUJ1ZmZlcklkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJDaGFu
bmVsLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KK2NsYXNz
IFJlbW90ZUltYWdlQnVmZmVyIDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1
ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWwgeworICAg
IHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKKyAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1
ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+OworCitwdWJsaWM6CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JT
cGFjZSkKKyAgICB7CisgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6IHRl
bXBsYXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBudWxscHRyLCBzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UpOworICAgIH0KKworICAgIFJlbW90ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVl
X3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNp
emUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UpCisgICAgICAgIDogQmFzZURp
c3BsYXlMaXN0SW1hZ2VCdWZmZXIoV1RGTW92ZShiYWNrZW5kKSwgc2l6ZSkKKyAgICAgICAgLCBS
ZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWwoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlKQorICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyQ2hhbm5lbC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUltYWdl
QnVmZmVyQ2hhbm5lbC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAi
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5TWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZUltYWdl
QnVmZmVyQ2hhbm5lbDo6UmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICAvLyBSZWdpc3RlciBpdHNlbGYgYXMgYSBN
ZXNzYWdlUmVjZWl2ZXIgaW4gdGhlIEdQVVByb2Nlc3NDb25uZWN0aW9uLgorICAgIElQQzo6TWVz
c2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOwor
ICAgIG1lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZUltYWdlQnVmZmVyQ2hhbm5lbDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2ltYWdlQnVmZmVy
SWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisKKyAgICAvLyBDcmVhdGUgdGhlIFJlbW90
ZUltYWdlQnVmZmVyUHJveHkuCisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSk7Cit9CisKK1Jl
bW90ZUltYWdlQnVmZmVyQ2hhbm5lbDo6flJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbCgpCit7Cisg
ICAgLy8gVW4tcmVnaXN0ZXIgaXRzZWxmIGFzIGEgTWVzc2FnZVJlY2VpdmVyLgorICAgIElQQzo6
TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZlck1hcCgp
OworICAgIG1lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMpOwor
CisgICAgLy8gUmVsZWFzZSB0aGUgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4KKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OlJlbGVhc2VJbWFnZUJ1ZmZlciht
X2ltYWdlQnVmZmVySWRlbnRpZmllciksIDApOworfQorCitJUEM6OkNvbm5lY3Rpb24qIFJlbW90
ZUltYWdlQnVmZmVyQ2hhbm5lbDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAorewor
ICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFJlbW90ZUltYWdlQnVmZmVyQ2hh
bm5lbDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiBt
X2ltYWdlQnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgpOworfQorCit2b2lkIFJlbW90ZUltYWdl
QnVmZmVyQ2hhbm5lbDo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikKK3sKKyAgICAvLyBGSVhNRTogRGVsZXRlIHRoaXMgZnVuY3Rpb24gd2hlbiBtZXNz
YWdlcyBhcmUgYWRkZGVkIHRvIFJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbC5tZXNzYWdlcy5pbi4K
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NF
U1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyQ2hhbm5lbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ckNoYW5uZWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbAorICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VTZW5kZXIKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgor
ICAgIH5SZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWwoKTsKKworcHJvdGVjdGVkOgorICAgIFJlbW90
ZUltYWdlQnVmZmVyQ2hhbm5lbChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2Up
OworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICB1aW50NjRfdCBtZXNz
YWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOworCisgICAgSW1hZ2VCdWZmZXJJZGVudGlmaWVy
IG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyIHsgSW1hZ2VCdWZmZXJJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShH
UFVfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVs
Lm1lc3NhZ2VzLmluCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsLm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisj
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworbWVzc2FnZXMgLT4gUmVtb3RlSW1h
Z2VCdWZmZXJDaGFubmVsIE5vdFJlZkNvdW50ZWQgeworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVBsYXRmb3JtSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVBsYXRmb3JtSW1hZ2VCdWZmZXIuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVBsYXRmb3JtSW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZm
ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gRklYTUU6IFRoaXMgZG9lcyBub3QgaW1wbGVtZW50
IHJlbW90ZSByZW5kZXJpbmcuIFVzZSBzaGFyZWFibGUgSW1hZ2VCdWZmZXIgYmFja2VuZHMuCit1
c2luZyBSZW1vdGVVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXIgPSBSZW1vdGVJbWFnZUJ1ZmZlcjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+OwordXNpbmcgUmVtb3RlQWNjZWxl
cmF0ZWRJbWFnZUJ1ZmZlciA9IFJlbW90ZUltYWdlQnVmZmVyPFdlYkNvcmU6OkltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZD47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKEdQVV9QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCShyZXZp
c2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRU
cmFja1ByaXZhdGVSZW1vdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMTMgQEAK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCIKICNpbmNsdWRlICJSZW1vdGVN
ZWRpYVBsYXllclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OlRleHRUcmFja1ByaXZhdGVSZW1vdGUoTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlJiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWRl
bmRpZmllciwgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0
aW9uKQogICAgIDogV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZShjb25maWd1cmF0aW9u
LmN1ZUZvcm1hdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCShyZXZpc2lvbiAyNTczNjkp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVS
ZW1vdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlICJUcmFj
a1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlLmg+CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGF0YVJlZmVyZW5jZTsK
K30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR2VuZXJpY0N1ZURhdGE7CiBjbGFzcyBJ
U09XZWJWVFRDdWU7CkBAIC01Miw5ICs1Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZERhdGFD
dWUoTWVkaWFUaW1lJiYgc3RhcnQsIE1lZGlhVGltZSYmIGVuZCwgSVBDOjpEYXRhUmVmZXJlbmNl
JiYpOwogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCi0gICAgdm9pZCBhZGREYXRhQ3VlV2l0
aFR5cGUoTWVkaWFUaW1lJiYgc3RhcnQsIE1lZGlhVGltZSYmIGVuZCwgU2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZVZhbHVlJiYsIFN0cmluZyYmKTsKLSAgICB2b2lkIHVwZGF0ZURhdGFDdWUoTWVk
aWFUaW1lJiYgc3RhcnQsIE1lZGlhVGltZSYmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZVZhbHVlJiYpOwotICAgIHZvaWQgcmVtb3ZlRGF0YUN1ZShNZWRpYVRpbWUmJiBzdGFydCwgTWVk
aWFUaW1lJiYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUmJik7CisgICAgdm9p
ZCBhZGREYXRhQ3VlV2l0aFR5cGUoTWVkaWFUaW1lJiYgc3RhcnQsIE1lZGlhVGltZSYmIGVuZCwg
V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlJiYsIFN0cmluZyYmKTsKKyAg
ICB2b2lkIHVwZGF0ZURhdGFDdWUoTWVkaWFUaW1lJiYgc3RhcnQsIE1lZGlhVGltZSYmIGVuZCwg
V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlJiYpOworICAgIHZvaWQgcmVt
b3ZlRGF0YUN1ZShNZWRpYVRpbWUmJiBzdGFydCwgTWVkaWFUaW1lJiYgZW5kLCBXZWJDb3JlOjpT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUmJik7CiAjZW5kaWYKIAogICAgIHZvaWQgYWRk
R2VuZXJpY0N1ZShXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YSYpOwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw5ICszOSw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQogbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogTWVk
aWFSZWNvcmRlclByaXZhdGU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlKGNvbnN0IE1lZGlhU3RyZWFt
UHJpdmF0ZSYgc3RyZWFtKQogICAgIDogbV9pZGVudGlmaWVyKE1lZGlhUmVjb3JkZXJJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCShyZXZpc2lv
biAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw4IEBACiAjaW5j
bHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUmVj
b3JkZXJQcml2YXRlLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGU+IE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRl
TWVkaWFSZWNvcmRlclByaXZhdGUoY29uc3QgTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0pCiB7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAJKHJldmlzaW9uIDI1NzM2OSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDggQEAKICNpbmNsdWRlICJT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6OnVuaXF1ZV9wdHI8U2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyPiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyLCBDbGllbnQmIGNsaWVudCwgYm9v
bCBoaWRlUm9vdExheWVyLCBJbnRTaXplIHNpemUpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFu
YWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDggQEAKIAogI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIG5hbWVz
cGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6ZGlkUmVjZWl2ZUxheWVyTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJQYWdlQmFubmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUGxhdGZvcm1JbWFnZUJ1ZmZlci5o
IgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCkBAIC04ODAsMzAgKzg4MSwzNSBAQCBH
cmFwaGljc0xheWVyRmFjdG9yeSogV2ViQ2hyb21lQ2xpZW50OjpnCiB9CiAKICNpZiBVU0UoUkVR
VUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQotCiBSZWZQdHI8RGlzcGxheVJl
ZnJlc2hNb25pdG9yPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRv
cihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIGRy
YXdpbmdBcmVhID0gbV9wYWdlLmRyYXdpbmdBcmVhKCkpCiAgICAgICAgIHJldHVybiBkcmF3aW5n
QXJlYS0+Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3BsYXlJRCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9Ci0KICNlbmRpZgogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFdl
YkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCwgQ29sb3JTcGFjZSkgY29uc3QKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNs
aWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlKSBjb25zdAogeworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VC
dWZmZXI7CisKICAgICBzd2l0Y2ggKHJlbmRlcmluZ01vZGUpIHsKICAgICBjYXNlIFJlbmRlcmlu
Z01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkOgorICAgICAgICBpbWFnZUJ1ZmZlciA9IFJlbW90ZUFj
Y2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UpOworICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIFJl
bmRlcmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQ6Ci0gICAgICAgIC8vIEZJWE1FOiBDcmVh
dGUgdGhlIHJlbW90ZSBJbWFnZUJ1ZmZlcgotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQorICAg
ICAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICAgICAgaW1hZ2VCdWZmZXIgPSBSZW1vdGVV
bmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOworICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KKyNlbmRpZgogCiB2
b2lkIFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFw
aGljc0xheWVyKiBsYXllcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI1
NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDggKzEyMyw2IEBAIHByaXZhdGU6CiAg
ICAgV2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJv
b3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25z
dCBmaW5hbDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKSBjb25z
dCBmaW5hbDsKLQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChXZWJD
b3JlOjpIVE1MSW1hZ2VFbGVtZW50JikgZmluYWw7CiAKICAgICBQbGF0Zm9ybVBhZ2VDbGllbnQg
cGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgZmluYWw7CkBAIC0yMzUsNiArMjMzLDEwIEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRl
RGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKSBjb25zdCBm
aW5hbDsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCiAgICAgQ29t
cG9zaXRpbmdUcmlnZ2VyRmxhZ3MgYWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMoKSBjb25zdCBm
aW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbXBvc2l0aW5nVHJpZ2dl
ckZsYWdzPigK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391726</attachid>
            <date>2020-02-26 00:18:13 -0800</date>
            <delta_ts>2020-02-29 17:04:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207221-20200226001812.patch</filename>
            <type>text/plain</type>
            <size>101025</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRlYWYxZjdlZGIxMjU3
MTQ1MzQ4NDliY2Y4ODgyY2EzN2QzNWY5Zi4uMzI1MmYzMDYyZjVhMjNjYjY2NThiZTBiZDBhZTI3
MzQwNWE2NDM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAyLTI1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IHRoZSByZW1vdGUgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNzIyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICBNYWtlIEltYWdlQnVmZmVyIGFuZCBJbWFnZUJ1ZmZlckJhY2tlbmQgaGVhZGVyIGZp
bGVzIGFjY2Vzc2libGUgYnkgV2ViS2l0LgorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICBNYWtlIEhUTUxDYW52YXNFbGVtZW50IGJlIGFibGUg
dG8gY3JlYXRlIGEgcmVtb3RlIEltYWdlQnVmZmVyLgorCisgICAgICAgICogcGFnZS9DaHJvbWVD
bGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIgY29uc3QpOgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBuZXZlciBiZSBjYWxsZWQu
IFdlYkNocm9tZUNsaWVudCBvdmVycmlkZXMgdGhpcworICAgICAgICBmdW5jdGlvbiBpZiBFTkFC
TEUoR1BVX1BST0NFU1MpLiBBIHJlbW90ZSBSZW5kZXJpbmdNb2RlIHNob3VsZCBub3QgYmUKKyAg
ICAgICAgc2VsZWN0ZWQgdW5sZXNzIGlmIEVOQUJMRShHUFVfUFJPQ0VTUykgaXMgdHJ1ZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdp
bmdDb250ZXh0Lmg6CisKIDIwMjAtMDItMjUgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hh
dWRAYXBwbGUuY29tPgogCiAgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGFkNGU2YzBhYmU2ZWZjOThjZDY2NWQ0MWQwZWZjOTAzNDEwZGQ1ZWQuLmEwZDA0
YmQxYjhlNzdjNmYxZDY3Zjc0MjEwZWNmNWY0NDM5MGVkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTI5IEBACisyMDIwLTAyLTI1ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSByZW1vdGUgSW1hZ2VCdWZmZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzIyMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW90ZUltYWdlQnVm
ZmVyQ2hhbm5lbCBhbmQgUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHkgYXJlIHJlc3BvbnNp
YmxlCisgICAgICAgIGZvciBoYW5kbGluZyB0aGUgY29tbXVuaWNhdGlvbnMgb2YgdGhlIEltYWdl
QnVmZmVyIG9wZXJhdGlvbnMgYmV0d2VlbgorICAgICAgICBXZWJQcm9jZXNzIGFuZCBHUFVQcm9j
ZXNzLgorCisgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyIGFuZCBSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5IHJlcHJlc2VudCBhIHNpbmdsZSByZW1vdGUKKyAgICAgICAgSW1hZ2VCdWZmZXIuIFRoZSBi
YWNrIGVuZCBzaG91bGQgYmUgY3JlYXRlZCBieSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IGluCisg
ICAgICAgIEdQVVByb2Nlc3MgYW5kIHNoYXJlZCB3aXRoIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlciBp
biB0aGUgV2ViUHJvY2Vzcy4KKyAgICAgICAgRmx1c2hpbmcgdGhlIERyYXdpbmdDb250ZXh0IHdp
bGwgYmUgZG9uZSBpbiBHUFVQcm9jZXNzLiBCdXQgY3JlYXRpbmcgdGhlCisgICAgICAgIG5hdGl2
ZSBpbWFnZSBvdXQgb2YgdGhlIGJhY2sgZW5kIHdpbGwgYmUgaW4gR1BVUHJvY2Vzcy4KKworICAg
ICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgbWFuYWdlcyBjcmVhdGluZyBhbmQgcmVs
ZWFzaW5nIHRoZSAKKyAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjptZXNzYWdlUmVjZWl2ZXJNYXApOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQcm9jZXNzSWRlbnRpZmllciBjb25zdCk6Cisg
ICAgICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgZGlzcGF0Y2hlcyBtZXNzYWdlcyB0byBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkKKyAgICAgICAgYW5kIFJlbW90ZUltYWdlQnVmZmVy
Q2hhbm5lbFByb3h5LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICBGb3JjZSB0aGUgbWVzc2FnZXMucHkgdG8gZ2Vu
ZXJhdGUgY29kZSB3aGljaCBjYWxscyBkaXNwYXRjaE1lc3NhZ2UoKSBhbmQKKyAgICAgICAgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKCkgd2hlbiBtZXNzYWdlcyBhcmUgcmVjZWl2ZWQuCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5
OjpSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eTo6bWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1
ZmZlckNoYW5uZWxQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eTo6ZGlkUmVjZWl2ZU1l
c3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJD
aGFubmVsUHJveHkuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgIEhh
bmRsZXMgdGhlIGNvbW11bmljYXRpb24gcGFydCBvZiB0aGUgcmVtb3RlIEltYWdlQnVmZmVyIGlu
IHRoZSBHUFUgc2lkZS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVQbGF0Zm9ybUltYWdlQnVmZmVyUHJveHkuaDogQWRkZWQuCisgICAgICAgIEV2ZW50
dWFsbHkgdGhpcyBzaG91bGQgYmUgdGhlIHJlbW90ZSBJbWFnZUJ1ZmZlciBpbiB0aGUgR1BVIHNp
ZGUgd2hpY2gKKyAgICAgICAgaXMgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIGEgc2hhcmVkIGJh
Y2sgZW5kIGFuZCByZXBsYXlpbmcgYmFjayBkcmF3aW5nCisgICAgICAgIGNvbW1hbmRzLgorCisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VJbWFnZUJ1ZmZlcik6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDog
QWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkgaXMgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoZSByZW1vdGUKKyAgICAgICAg
SW1hZ2VCdWZmZXIgaW4gdGhlIEdQVSBzaWRlLiBJdCBob2xkcyBpdCBpbiBhIEhhc2hNYXAgaW5k
ZXhlZCBieSB0aGUKKyAgICAgICAgSW1hZ2VCdWZmZXJJZGVudGlmaWVyLgorCisgICAgICAgICog
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3Bw
OgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgor
ICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuY3BwOgorICAgICAgICBVbmlmaWVkIHNvdXJjZXMgZ2FyZGVuaW5nLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIEhhbmRsZSAnV2FudHNEaXNw
YXRjaE1lc3NhZ2UnIGF0dHJpYnV0ZS4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAg
IChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5o
OgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVy
TWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbjoKKyAgICAgICAgR1BVQ29ubmVjdGlvbiBkaXNwYXRjaGVzIG1lc3NhZ2VzIHRvIFJl
bW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlSW1hZ2VCdWZmZXI6OlJlbW90ZUltYWdlQnVmZmVyKToKKyAgICAgICAgRXZlbnR1YWxseSB0
aGlzIHdpbGwgYmUgdGhlIHJlbW90ZSBJbWFnZUJ1ZmZlciBpbiB0aGUgV2ViUHJvY2VzcyBzaWRl
LgorICAgICAgICBJdCB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIHRoZSB0aGUg
c2hhcmVkIGJhY2sgZW5kIGFmdGVyIGl0IAorICAgICAgICBpcyBjcmVhdGVkIGluIHRoZSBHUFVQ
cm9jZXNzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJDaGFubmVsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVm
ZmVyQ2hhbm5lbDo6UmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsOjp+UmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsOjptZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyQ2hhbm5l
bDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWw6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWwuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJDaGFu
bmVsLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgSGFuZGxlcyB0aGUgY29tbXVuaWNhdGlv
biBwYXJ0IG9mIHRoZSByZW1vdGUgSW1hZ2VCdWZmZXIgaW4gdGhlIFdlYlByb2Nlc3MKKyAgICAg
ICAgc2lkZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVBsYXRm
b3JtSW1hZ2VCdWZmZXIuaDogQWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHA6Cisg
ICAgICAgIFVuaWZpZWQgc291cmNlcyBnYXJkZW5pbmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNocm9tZUNsaWVudDo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgQ3JlYXRlIHRoZSByZW1vdGUgSW1hZ2VCdWZmZXIuCisKIDIwMjAtMDItMjUgIEp1c3Rp
biBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAgICAgICAgIElubGluZSBD
YWNoZSBkZWxldGUgYnkgaWQvdmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmE1MzNiNjk3N2Y5ZDU4MThhZDhiNDdiMGZlNGEw
ODM1M2E0ODYzNC4uYTRhMGEwYzczNDM3ZjAzOGQxODFiMGNlNTk2NmRhYzgzY2JiZGVhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTczNSw2ICsxNzM1LDExIEBACiAJCTUzRTI5RTVGMTY3QThBMTkwMDU4NkQzRCAvKiBJbnRl
cm5hbFNldHRpbmdzR2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1M0UyOUU1RDE2N0E4QTE5MDA1ODZEM0QgLyogSW50ZXJuYWxTZXR0aW5n
c0dlbmVyYXRlZC5oICovOyB9OwogCQk1M0VEM0ZERTE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRl
cm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzRUQzRkRDMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0
dGluZ3NHZW5lcmF0ZWQuY3BwICovOyB9OwogCQk1M0VEM0ZERjE2N0E4OEU3MDA2NzYyRTYgLyog
SlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1M0VEM0ZERDE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5h
bFNldHRpbmdzR2VuZXJhdGVkLmggKi87IH07CisJCTU1MDY0MDkzMjQwNURGMkQwMEFBRTA0NSAv
KiBDb25jcmV0ZUltYWdlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MkJBQzNBNzIzRTE3MzI4MDA4RDc0MUMgLyogQ29uY3JldGVJbWFnZUJ1
ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTU1MDY0MDk1MjQwNUUxMzgwMEFBRTA0NSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FC
MjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NTA2NDA5NjI0MDVF
QTgyMDBBQUUwNDUgLyogSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FEMjNFMUU1NDUwMDhENzQxQyAvKiBJ
bWFnZUJ1ZmZlckNHQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTU1MDY0MDk3MjQwNUYyRkQwMEFBRTA0NSAvKiBEaXNwbGF5TGlzdElt
YWdlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MkVBMDlGNzIzRkNDQjNEMDA4NTA0QTUgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU1MDY0MDk4
MjQwNUYzNTEwMEFBRTA0NSAvKiBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkVBMDlGOTIzRkNDQzZBMDA4
NTA0QTUgLyogRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAv
KiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1NDY3NTdCMUZE
MjEyQTkwMDNCMTBCMCAvKiBJbWFnZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTU0Njc1NzgxRkQxRkMxQTAwM0IxMEIwIC8qIEltYWdlU291
cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTU1MENCNDIxRTk1NUUzQzAwMTExQUEwIC8qIEltYWdlVHlwZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NTBDQjQxMUU5NTVFM0MwMDExMUFBMCAv
KiBJbWFnZVR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTMxODgsNyArMzE5Myw3IEBACiAJCUE3NUU4QjhEMEUxREUyRDYwMDdGMjQ4MSAv
KiBGRUNvbXBvbmVudFRyYW5zZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzVFOEI4NTBFMURFMkQ2MDA3RjI0ODEgLyogRkVDb21wb25lbnRUcmFu
c2Zlci5oICovOyB9OwogCQlBNzVFOEI4RjBFMURFMkQ2MDA3RjI0ODEgLyogRkVDb21wb3NpdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NUU4Qjg3
MEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNvbXBvc2l0ZS5oICovOyB9OwogCQlBNzZFNUY3RjEzNUUw
RENGMDBBNjk4MzcgLyogUmVuZGVyZWREb2N1bWVudE1hcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2RTVGN0UxMzVFMERDRjAwQTY5ODM3IC8q
IFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQlBNzc5NzkxQTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5Nzkx
NDBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmggKi87IH07CisJCUE3Nzk3OTFBMEQ2QjlE
MEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3Nzk3OTE0MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzc5Nzky
OTBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Nzk3OTI1MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0lt
YWdlRGF0YS5oICovOyB9OwogCQlBNzdCNDFBMDEyRTY3NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50
SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNzdCNDE5RjEyRTY3NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5wdXRUeXBlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc3RDAwMTIxMzNC
MEFFQjAwRDY2NThDIC8qIFRleHRDaGVja2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3RDAwMTExMzNCMEFFQjAwRDY2NThDIC8qIFRleHRDaGVj
a2luZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0yOTMyNiw2ICsyOTMzMSw3IEBACiAJCQkJRjQ0MkMzNTkyM0UzQUREMjAwNDk5NTgyIC8qIENv
bXBvc2l0aW9uSGlnaGxpZ2h0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREQ1QTcyNzFFQkVFNDdE
MDA5QkE1OTcgLyogQ29tcG9zaXRpb25VbmRlcmxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcx
MTZFMkNDMUZFRDc1REMwMEMwNkZERSAvKiBDb21wdXRlZEVmZmVjdFRpbWluZy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTUwNjQwOTMyNDA1REYyRDAwQUFFMDQ1IC8qIENvbmNyZXRlSW1hZ2VCdWZm
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDhGMTJCMDI2RjcwMEMxQTM1OSAvKiBDb25l
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUM5N0FGMzA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmln
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREFGMzQzRDFFQTdFMEYxMDAzODJDRDMgLyogQ29uc3Rh
bnRQcm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTY3MSw2ICsyOTY3Nyw4IEBACiAJ
CQkJMTEyRkIzNTIyMzlDMjNDNDAwODcwNTRBIC8qIERpc3BsYXlJbmxpbmVSZWN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2RkI0N0U2MzIyNzc0MjVBMDBDN0JDQjAgLyogRGlzcGxheUxpbmVCb3gu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQzMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5
TGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTUwNjQwOTgyNDA1RjM1MTAwQUFFMDQ1IC8qIERp
c3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1MDY0MDk3MjQw
NUYyRkQwMEFBRTA0NSAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkU1RkJENTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVj
b3JkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ5MUMzREQ1MUUwMDA3QTJDQSAvKiBE
aXNwbGF5TGlzdFJlcGxheWVyLmggaW4gSGVhZGVycyAqLywKQEAgLTMwMjg0LDYgKzMwMjkyLDgg
QEAKIAkJCQkzMThFQUQ0RDFGQTkxMzgwMDA4Q0VGODYgLyogSW1hZ2VCaXRtYXBSZW5kZXJpbmdD
b250ZXh0U2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQTEwQjkyMEIzODE4QkQwMDA5
OUFBNCAvKiBJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzJCQUMzQUUyM0UxRjBC
MDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTUw
NjQwOTYyNDA1RUE4MjAwQUFFMDQ1IC8qIEltYWdlQnVmZmVyQ0dCYWNrZW5kLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1NTA2NDA5NTI0MDVFMTM4MDBBQUUwNDUgLyogSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNFMjFERDIxODM0NDRBMDBFNjZGNTUg
LyogSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQyNTM5NjMx
OENFN0Y2MjAwMjcwMjIyIC8qIEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTAxOTJENjE4QjZCOUI3MDA3RkM3QTEgLyogSW1hZ2VDb250cm9sc1Jv
b3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHAKaW5kZXggZTZjYjc1YTcxMWIxYjY2Nzk3OTY3ODI3MmM4ODM1NmRkMzE2MjAz
ZS4uYzgwYWYxOTllN2U5NjExNGUyNzYyNDg1NTA4NjI4YjYzMDlkYTliYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTg5NSw4ICs4OTUsMTMgQEAgdm9p
ZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogICAgIC8vIEZJ
WE1FOiBBZGQgYSBuZXcgc2V0dGluZyBmb3IgRGlzcGxheUxpc3QgZHJhd2luZyBvbiBjYW52YXMu
CiAgICAgYm9vbCB1c2VzRGlzcGxheUxpc3REcmF3aW5nID0gbV91c2VzRGlzcGxheUxpc3REcmF3
aW5nLnZhbHVlT3IoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmRpc3BsYXlMaXN0RHJhd2luZ0VuYWJs
ZWQoKSk7CiAKKyAgICAvLyBGSVhNRTogQWRkIGEgbmV3IHNldHRpbmcgZm9yIHJlbW90ZSBkcmF3
aW5nIG9uIGNhbnZhcy4KKyAgICBib29sIHVzZXNSZW1vdGVEcmF3aW5nID0gZmFsc2U7CisKICAg
ICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGU7Ci0gICAgaWYgKHVzZXNEaXNwbGF5TGlzdERy
YXdpbmcpCisgICAgaWYgKHVzZXNSZW1vdGVEcmF3aW5nKQorICAgICAgICByZW5kZXJpbmdNb2Rl
ID0gc2hvdWxkQWNjZWxlcmF0ZShzaXplKCkpID8gUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxl
cmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFjY2VsZXJhdGVkOworICAgIGVsc2UgaWYg
KHVzZXNEaXNwbGF5TGlzdERyYXdpbmcpCiAgICAgICAgIHJlbmRlcmluZ01vZGUgPSBzaG91bGRB
Y2NlbGVyYXRlKHNpemUoKSkgPyBSZW5kZXJpbmdNb2RlOjpEaXNwbGF5TGlzdEFjY2VsZXJhdGVk
IDogUmVuZGVyaW5nTW9kZTo6RGlzcGxheUxpc3RVbmFjY2VsZXJhdGVkOwogICAgIGVsc2UKICAg
ICAgICAgcmVuZGVyaW5nTW9kZSA9IHNob3VsZEFjY2VsZXJhdGUoc2l6ZSgpKSA/IFJlbmRlcmlu
Z01vZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGRhNjZkNjJlZTE1ZTlhYzI1MTE0YzUzMmMwNTU0
NDVmYzE2ZDNiMjQuLjJiYzRlY2ZkZGJkOWUzYjA1M2U4OGQ2ZTNmYjMwNjQxMDZkOGQwMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzA1LDcgKzMwNSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlS
ZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsg
fQogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQsIENv
bG9yU3BhY2UpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwg
UmVuZGVyaW5nTW9kZSwgZmxvYXQsIENvbG9yU3BhY2UpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBQYXNzIG51bGxwdHIgYXMgdGhlIEdy
YXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQg
YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKikgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKaW5kZXggODZlYmJj
NjMxNDFiYzhhYzE0ZTI3ODQwM2ZiMWQ2Y2JjZDIzODBlYy4uNWQzODVhYWJkMDRhOTRlY2Y4MTAx
NTE2OTI0MDU3YzY5MzM3MzM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RE
cmF3aW5nQ29udGV4dC5oCkBAIC0zMywxNSArMzMsMTUgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0
IHsKIAogY2xhc3MgRHJhd2luZ0NvbnRleHQgewogcHVibGljOgotICAgIERyYXdpbmdDb250ZXh0
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYXdp
bmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUpOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxEcmF3aW5nQ29udGV4
dCY+KCp0aGlzKS5tX2NvbnRleHQ7IH0KICAgICBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QoKSB7
IHJldHVybiBtX2Rpc3BsYXlMaXN0OyB9CiAgICAgY29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlM
aXN0KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdDsgfQogICAgIGNvbnN0IERpc3BsYXlM
aXN0KiByZXBsYXllZERpc3BsYXlMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXBsYXllZERpc3Bs
YXlMaXN0LmdldCgpOyB9CiAKLSAgICB2b2lkIHNldFRyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KGJv
b2wpOwotICAgIHZvaWQgcmVwbGF5RGlzcGxheUxpc3QoR3JhcGhpY3NDb250ZXh0Jik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUcmFja3NEaXNwbGF5TGlzdFJlcGxheShib29sKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxheURpc3BsYXlMaXN0KEdyYXBoaWNzQ29udGV4dCYp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgR3JhcGhpY3NDb250ZXh0IG1fY29udGV4dDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlz
dHMudHh0CmluZGV4IDExNWI1ZGYyNGVlOTk4NmNkNWFiYzZhMGQ5ZGUwZTg4ZTExNjc5NGQuLjEy
NjEwODY0OWM5YmQ4MGNjMWRlMDZmNzVmODdiNDkwYzc5Y2IyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dApAQCAtNzksNiArNzksNyBAQCBzZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAi
JHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL0dhbWVwYWQiCiAgICAgIiR7V0VCS0lUX0RJUn0vV2Vi
UHJvY2Vzcy9HZW9sb2NhdGlvbiIKICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL0dQVSIK
KyAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcyIKICAgICAiJHtXRUJL
SVRfRElSfS9XZWJQcm9jZXNzL0dQVS9tZWRpYSIKICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMiCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9JY29uRGF0YWJh
c2UiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5k
ZXggZTY4NmM2M2MxOGYzNTg2ZmZjYTc0ZTE3MzFjMGZmMjc3NDFiMGQzYi4uMDBmYTJjZTI1ODlm
M2FiZDU0OTJjZWMzZDA3NWMyNmExODc0MGFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTUsNiArMTUsOCBAQCAkKEpBVkFTQ1JJUFRD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL21vZGVscy5weQogJChKQVZBU0NSSVBUQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSKS94eGQucGwKICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5H
UFVQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTEwNyw2ICsx
MDksNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRGF0YWJhc2Vz
L0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyQ2hhbm5lbC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1By
aXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDFmY2Y3ZTQxMTA3ZmIzZjdiZTJiYzY5OTkzNjZhMDVm
OGU2NTA4MjguLmY1NTRkNjBmNDUyOGYxYTMxZmY0Y2UxYzEyMWEyNDA4YTE0MzU3YTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysr
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTI5
LDYgKzEyOSwxMiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcgogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2Vz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUltYWdlQnVmZmVyQ2hhbm5l
bE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbE1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUltYWdlQnVmZmVyQ2hhbm5l
bE1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUltYWdl
QnVmZmVyQ2hhbm5lbFByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHlNZXNzYWdlc1Jl
cGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVz
LmgKQEAgLTE1NCw2ICsxNjAsOSBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlck1lc3NhZ2VzUgogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlT2JqZWN0UmVnaXN0cnlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXNS
ZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlc1JlcGxp
ZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDEwZDE3MjU1ODc1YTE2ZWM2ZDNl
NmFmZDI1MDZiNTE1NTc2MzU0MDQuLjQ2YjJiOTllZDE5ODQ5NWU2MDAxM2Y3ODU3YzZiZmRmMzk1
MWZkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIzLDYgKzIzLDcgQEAKIFZQ
QVRIID0gXAogICAgICQoV2ViS2l0MikgXAogICAgICQoV2ViS2l0MikvR1BVUHJvY2VzcyBcCisg
ICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzL2dyYXBoaWNzIFwKICAgICAkKFdlYktpdDIpL0dQVVBy
b2Nlc3MvbWFjIFwKICAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEgXAogICAgICQoV2Vi
S2l0MikvR1BVUHJvY2Vzcy93ZWJydGMgXApAQCAtNTEsNiArNTIsNyBAQCBWUEFUSCA9IFwKICAg
ICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbiBcCiAgICAgJChXZWJLaXQyKS9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVIFwKKyAg
ICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzIFwKICAgICAkKFdlYktpdDIpL1dl
YlByb2Nlc3MvR1BVL21lZGlhIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0
YyBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZSBcCkBAIC0xNDYsNiAr
MTQ4LDggQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlciBcCiAgICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSBcCisgICAgUmVt
b3RlSW1hZ2VCdWZmZXJDaGFubmVsIFwKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94
eSBcCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eSBcCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCkBAIC0xNTMsNiAr
MTU3LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXIgXAogICAgIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyIFwKICAgICBSZW1vdGVPYmpl
Y3RSZWdpc3RyeSBcCisgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IFwKICAgICBSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAogICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXIgXAogICAgIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAppbmRleCBhMzk0ZTA5NDMxZTAyNzY4ZmExMDc0N2NlY2YyYjkzZTlkZjkxNjI1Li44NzVm
OTQzZWE1NTZjM2Q2NjRiZGFlMmU4ZGEyN2U0YzM0ODdlYTczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdQVVByb2Nl
c3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNz
UHJveHkuaCIKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgpAQCAtNDksNiArNTAsOCBAQAogI2luY2x1ZGUgIlJlbW90ZU1lZGlh
UmVjb3JkZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCkBAIC0xNzksNiArMTgyLDEzIEBAIFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNh
bXBsZUJ1ZmZlckRpCiAjZW5kaWYKICNlbmRpZgogCitSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSgpCit7CisgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmV0dXJuICptX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTsKK30KKwogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQogTGliV2Vi
UlRDQ29kZWNzUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxpYldlYlJUQ0NvZGVj
c1Byb3h5KCkKIHsKQEAgLTE4OSw3OSArMTk5LDgzIEBAIExpYldlYlJUQ0NvZGVjc1Byb3h5JiBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsaWJXZWJSVENDb2RlY3NQcm94eSgpCiB9CiAjZW5k
aWYKIAotdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK2Jvb2wg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICByZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29ubmVj
dGlvbiwgZGVjb2Rlcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfSBlbHNlIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAg
IHJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkuZGlkUmVjZWl2ZVBsYXllck1lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfSBlbHNlIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
ewogICAgICAgICByZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcigpLmRpZFJlY2VpdmVNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIHVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9jZXNzKGNvbm5lY3Rpb24s
IGRlY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAg
bWVkaWFSZWNvcmRlck1hbmFnZXIoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNv
bm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAg
ICBtZWRpYVJlY29yZGVyTWFuYWdlcigpLmRpZFJlY2VpdmVSZW1vdGVNZWRpYVJlY29yZGVyTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShWSURFT19UUkFD
SykKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7CiAgICAgICAgIGF1ZGlvVHJhY2tSZW5kZXJlck1hbmFnZXIoKS5kaWRSZWNlaXZl
TWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgYXVkaW9UcmFja1JlbmRl
cmVyTWFuYWdlcigpLmRpZFJlY2VpdmVSZW5kZXJlck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAg
ICAgIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoKS5kaWRSZWNlaXZlTWVzc2FnZUZy
b21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXIoKS5kaWRSZWNlaXZlTGF5ZXJNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRpZgogI2VuZGlmCiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIGxpYldlYlJUQ0NvZGVjc1Byb3h5KCkuZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIHJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIG1lc3NhZ2VSZWNl
aXZlck1hcCgpLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9p
ZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCitib29sIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBy
ZXBseUVuY29kZXIpCiB7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7CiAgICAgICAgIHJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkuZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlF
bmNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSBNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIHVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHko
KS5kaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tR1BVUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVy
LCByZXBseUVuY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAg
ICAgIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoKS5kaWRSZWNlaXZlU3luY01lc3Nh
Z2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRpZgogI2VuZGlm
Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVy
TWFwKCkuZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29k
ZXIpOwogfQogCiBjb25zdCBTdHJpbmcmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1lZGlh
Q2FjaGVEaXJlY3RvcnkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMGVjMjM4Y2QwNjI1MzgzNDc1OWJm
ZTk2YmJhZTBhZGViYjM1MWE3ZS4uNDdmNzdiMWM1Yzk2MWVkNjAwMzlhMjlmNjVkMjhlNWJlNTVh
NTVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCkBAIC0yOCwxMyArMjgsMTIgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzc01lc3NhZ2VzUmVwbGllcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxp
c3RJdGVtcy5oPgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAj
aW5jbHVkZSA8d3RmL0xvZ2dlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjsKQEAgLTQ4
LDIzICs0NywyNiBAQCBjbGFzcyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1h
bmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKIGNsYXNzIFJlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7
CitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiBjbGFzcyBSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eTsKIAogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgIDogcHVibGljIFJl
ZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4KKyAgICAsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPgogICAgICwgSVBDOjpDb25uZWN0aW9u
OjpDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcz4gY3JlYXRlKEdQVVByb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgdmlydHVhbCB+
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpOwogCiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uKCkgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9CisgICAgSVBDOjpNZXNzYWdl
UmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCgpIHsgcmV0dXJuIG1fbWVzc2FnZVJlY2Vp
dmVyTWFwOyB9CiAgICAgR1BVUHJvY2VzcyYgZ3B1UHJvY2VzcygpIHsgcmV0dXJuIG1fZ3B1UHJv
Y2Vzcy5nZXQoKTsgfQotCisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vz
c0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOyB9Cisg
ICAgICAgIAogICAgIHZvaWQgY2xlYW51cEZvclN1c3BlbnNpb24oRnVuY3Rpb248dm9pZCgpPiYm
KTsKICAgICB2b2lkIGVuZFN1c3BlbnNpb24oKTsKIAotICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV93ZWJQcm9jZXNz
SWRlbnRpZmllcjsgfQogICAgIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyJiByZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlcigpOwogCiAgICAgTG9nZ2VyJiBsb2dnZXIoKTsKQEAgLTkxLDYgKzkz
LDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
JiBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CiAjZW5kaWYKICNlbmRpZgorICAg
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KCk7CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkQ2xvc2Uo
SVBDOjpDb25uZWN0aW9uJikgZmluYWw7CkBAIC05OCwxMCArMTAxLDE0IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwog
CisgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jik7CisgICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisKICAgICBSZWZQdHI8
TG9nZ2VyPiBtX2xvZ2dlcjsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKICAgICBSZWY8R1BVUHJvY2Vzcz4gbV9ncHVQcm9jZXNzOworICAgIElQQzo6TWVzc2FnZVJl
Y2VpdmVyTWFwIG1fbWVzc2FnZVJlY2VpdmVyTWFwOwogICAgIGNvbnN0IFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyPiBtX3JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eT4gbV9y
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKQEAgLTExOCw2ICsxMjUsNyBAQCBwcml2YXRl
OgogICAgIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENDb2RlY3NQcm94eT4gbV9saWJXZWJSVEND
b2RlY3NQcm94eTsKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI+IG1fc2Vzc2lvbk1hbmFnZXI7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eT4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggM2Q0MGE1NzEyZTAyZDE0OWQxNGY5MmY1NmU0NDUzNDZjMDEyMjFkOC4uNTMw
NWQ5MjVjNTBlMmM0N2IzYTMyNzc1MDNjZmU4NThlYzkxZGY5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAotbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7CittZXNzYWdlcyAtPiBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJv
eHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJiOWMzZGM1MjIwNjY4ODc1ZWU3MjE2YWNkNjNhZWI1ZTIwNzAy
MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHkuY3BwCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJD
aGFubmVsUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJl
bW90ZUltYWdlQnVmZmVyQ2hhbm5lbE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlSW1hZ2VC
dWZmZXJDaGFubmVsUHJveHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5OjpS
ZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZm
ZXJJZGVudGlmaWVyKQorICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKG1ha2VXZWFr
UHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQorICAgICwgbV9pbWFnZUJ1ZmZlcklkZW50
aWZpZXIoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQoreworICAgIC8vIFJlZ2lzdGVyIGl0c2VsZiBh
cyBhIE1lc3NhZ2VSZWNlaXZlciBpbiB0aGUgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy4KKyAg
ICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVz
c2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVJbWFn
ZUJ1ZmZlckNoYW5uZWxQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2ltYWdlQnVmZmVy
SWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Cit9CisKK1JlbW90ZUltYWdlQnVmZmVyQ2hh
bm5lbFByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHkoKQoreworICAgIC8vIFVu
LXJlZ2lzdGVyIGl0c2VsZiBhcyBhIE1lc3NhZ2VSZWNlaXZlci4KKyAgICBpZiAoYXV0byogZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQo
KSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFw
KCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVJbWFnZUJ1ZmZlckNoYW5u
ZWxQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2ltYWdlQnVmZmVySWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVJbWFnZUJ1ZmZlckNoYW5u
ZWxQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIGlmIChhdXRv
KiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmdldCgpKQorICAgICAgICByZXR1cm4gJmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5l
Y3Rpb24oKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordWludDY0X3QgUmVtb3RlSW1hZ2VC
dWZmZXJDaGFubmVsUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIudG9VSW50NjQoKTsKK30KKwordm9p
ZCBSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikKK3sKKyAgICAvLyBGSVhNRTogRGVsZXRlIHRoaXMg
ZnVuY3Rpb24gd2hlbiBtZXNzYWdlcyBhcmUgYWRkZGVkIHRvIFJlbW90ZUltYWdlQnVmZmVyQ2hh
bm5lbC5tZXNzYWdlcy5pbi4KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhlMWI1Yjk2ODk4OTJmOGY2ZDE1ZjY5MTAxODI1M2JmNTkyZjY4YmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJDaGFubmVsUHJveHkuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJJbWFnZUJ1
ZmZlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRl
ICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisKK2NsYXNzIFJl
bW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5CisgICAgOiBwcml2YXRlIElQQzo6TWVzc2FnZVNl
bmRlcgorICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAg
UmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IEltYWdlQnVmZmVySWRlbnRpZmllcik7CisgICAgflJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFBy
b3h5KCk7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBD
OjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7
CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisKKyAgICBXZWFr
UHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
czsKKyAgICBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXI7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VT
UwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyQ2hhbm5lbFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbFByb3h5Lm1lc3NhZ2VzLmluCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgwZTc5MjVmMzFjMjk2NzIzMDI0MmNjMGVlNDFmMjY1NzY0ZjA2OWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJDaGFubmVsUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyOSBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQorCittZXNzYWdlcyAtPiBSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eSBOb3RSZWZDb3Vu
dGVkIHsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2ZkNmM3NGVjZDg2MzY4MzJlMmQxYzc1ZjUxYTA0NDc0NjBkYzRm
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiUmVtb3Rl
SW1hZ2VCdWZmZXJDaGFubmVsUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbmNyZXRlSW1h
Z2VCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJh
Y2tlbmRUeXBlPgorY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1YmxpYyBXZWJDb3Jl
OjpDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFJlbW90ZUltYWdlQnVm
ZmVyQ2hhbm5lbFByb3h5IHsKKyAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlciA9IFdl
YkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+OworICAgIHVzaW5nIEJhc2VD
b25jcmV0ZUltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcywgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikK
KyAgICB7CisgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUg
Y3JlYXRlPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgbnVsbHB0ciwgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgaW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHN0ZDo6dW5p
cXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VC
dWZmZXJJZGVudGlmaWVyKQorICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1v
dmUoYmFja2VuZCkpCisgICAgICAgICwgUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHkoZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgIHsKKyAg
ICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVf
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVQbGF0Zm9ybUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVQbGF0Zm9ybUltYWdlQnVmZmVyUHJveHkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
ZjZkYTA2YWJhNjJiNDY0ZDhjYjZmODc2YmU2OGE3YjI0NGU2YjlmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVBsYXRmb3JtSW1hZ2VC
dWZmZXJQcm94eS5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCisKKyNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKKy8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IGltcGxlbWVudCByZW1vdGUgcmVuZGVyaW5nLiBV
c2Ugc2hhcmVhYmxlIEltYWdlQnVmZmVyIGJhY2tlbmRzLgordXNpbmcgUmVtb3RlVW5hY2NlbGVy
YXRlZEltYWdlQnVmZmVyUHJveHkgPSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PFdlYkNvcmU6Oklt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD47Cit1c2luZyBSZW1vdGVBY2NlbGVyYXRlZEltYWdl
QnVmZmVyUHJveHkgPSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PFdlYkNvcmU6OkltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZD47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNTUxZGFmYWU4MmZjYzJmZjU2YjE2NGM2NjY3MjM3NDg5NThlM2Y2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCIK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJlbW90ZVBsYXRmb3JtSW1h
Z2VCdWZmZXJQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5PiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5PihuZXcgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKTsKK30KKworUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICA6IG1fZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KSkKK3sKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVy
aW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIElt
YWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit7CisgICAgaWYgKG1f
aW1hZ2VCdWZmZXJNYXAuY29udGFpbnMoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1
dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuZ2V0KCk7CisgICAgaWYgKCFncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwor
CisgICAgc3dpdGNoIChyZW5kZXJpbmdNb2RlKSB7CisgICAgY2FzZSBSZW5kZXJpbmdNb2RlOjpS
ZW1vdGVBY2NlbGVyYXRlZDoKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBSZW1vdGVBY2NlbGVyYXRl
ZEltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCAqZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgaW1hZ2VCdWZmZXJJZGVudGlm
aWVyKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJlbmRlcmluZ01vZGU6OlJlbW90ZVVu
YWNjZWxlcmF0ZWQ6CisgICAgICAgIGltYWdlQnVmZmVyID0gUmVtb3RlVW5hY2NlbGVyYXRlZElt
YWdlQnVmZmVyUHJveHk6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCAqZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgaW1hZ2VCdWZmZXJJZGVudGlmaWVy
KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9CisKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2ltYWdlQnVmZmVyTWFwLmFkZChpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIFdURk1v
dmUoaW1hZ2VCdWZmZXIpKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OnJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVu
dGlmaWVyKQoreworICAgIC8vIENyZWF0ZUltYWdlQnVmZmVyIG1lc3NhZ2Ugc2hvdWxkIGhhdmUg
YmVlbiByZWNlaXZlZCBiZWZvcmUgdGhpcyBvbmUuCisgICAgaWYgKCFtX2ltYWdlQnVmZmVyTWFw
LmNvbnRhaW5zKGltYWdlQnVmZmVySWRlbnRpZmllcikpIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9pbWFnZUJ1ZmZlck1hcC5y
ZW1vdmUoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmJjOGVjNGM2OTVmOTA4NGY0NzBhYTY5NGNhMzRhNDQ5MzliZGI3
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJJ
bWFnZUJ1ZmZlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5PiBjcmVhdGUoR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSgpID0gZGVmYXVsdDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHko
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworCisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdl
QnVmZmVySWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXJJZGVudGlmaWVyKTsKKworICAgIHVzaW5nIEltYWdlQnVmZmVyTWFwID0gSGFzaE1hcDxJbWFn
ZUJ1ZmZlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4+
OworICAgIEltYWdlQnVmZmVyTWFwIG1faW1hZ2VCdWZmZXJNYXA7CisgICAgV2Vha1B0cjxHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU0ZGNmN2YzMmI0NTI2ZGRmYmViYjc4N2Y4MDJjMzZmZDk1N2JjNDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMg
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworbWVz
c2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IE5vdFJlZkNvdW50ZWQgeworICAg
IHZvaWQgQ3JlYXRlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBX
ZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJLaXQ6OkltYWdlQnVmZmVySWRl
bnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgdm9pZCBSZWxlYXNlSW1hZ2VCdWZm
ZXIoV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQor
fQorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyLmNwcAppbmRleCBlZDFmYWM0ZGE4YzFkNGNjNjcyYzNjOGU3Y2Fi
NjQ3ZTY5ZmI1ZjlmLi41OTQxNTllZTBiMDdiMThjNzU0YTliNjRlNWZjMjQwM2Y3MDM1MjE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcApAQCAtMzMsOSAr
MzMsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0K
IG5hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKIHN0YXRpYyBjb25zdCB2b2lkKiBuZXh0TG9nSWRlbnRpZmllcigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLmNwcAppbmRleCBjYjI0ZGRiZjI3OWZiMjY1OTQ2YWExMjFjYjA3MjJiNjJiOGM2
YWY3Li5jYjA0ZjUyYzI0NTc5OGVkYmQyYzIwZWZjZTk5ZGZlNWNjZmIwMDA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ci5jcHAKQEAgLTM1LDkgKzM1LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVy
TGlzdC5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVjb3JkZXI+IFJlbW90ZU1lZGlh
UmVjb3JkZXI6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLCBNZWRpYVJlY29yZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHJl
Y29yZEF1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFn
ZXIuY3BwCmluZGV4IDM3MGNkOWIzODc1NjlhOThlODRlMTc4MDlmMDg1ZDYyYjNiNmU5ZDYuLjBi
ODRiODUxOWJhNmY1MDZlMTg3NjVmZjZkMmU0ZDBjYzI2YjYzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ck1hbmFnZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRp
b25EYXRhLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOjpSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
cihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQog
ICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggNDQ1NmQ2ZmVjYTky
MmM4NDBkODdmMGFmOWNlZjg4YTIxZmY0MjQ1Yy4uYjZhYTBiNTE3YWJjMGUyZTM5Mzk1NzIxMjc5
NTI1NzA5NGViNTllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAt
MzQsOSArMzQsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBsZS5oPgogCi11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKLQogbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24s
IGJvb2wgaGlkZVJvb3RMYXllciwgSW50U2l6ZSBzaXplKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMjYwNDkwZmI3YjU2YTg4Y2ZmMGQ5Yjg5YzFhNzE2
OGFlZDBkMTg1Yy4uYzI5Yzc4ZDQ0N2RhMjdjYzhlOTQzMDI1NDRkMWE5NjhlZjMxNTQ5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yNyw2ICsyNyw3IEBA
IGltcG9ydCBzeXMKIGZyb20gd2Via2l0IGltcG9ydCBwYXJzZXIKIAogV0FOVFNfQ09OTkVDVElP
Tl9BVFRSSUJVVEUgPSAnV2FudHNDb25uZWN0aW9uJworV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9B
VFRSSUJVVEUgPSAnV2FudHNEaXNwYXRjaE1lc3NhZ2UnCiBMRUdBQ1lfUkVDRUlWRVJfQVRUUklC
VVRFID0gJ0xlZ2FjeVJlY2VpdmVyJwogTk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRF
ID0gJ05vdFJlZkNvdW50ZWQnCiBTWU5DSFJPTk9VU19BVFRSSUJVVEUgPSAnU3luY2hyb25vdXMn
CkBAIC0yMDQsNiArMjA1LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVj
bGFyZWQoKToKICAgICByZXR1cm4gZnJvemVuc2V0KFsKICAgICAgICAgJ01hY2hTZW5kUmlnaHQn
LAogICAgICAgICAnU3RyaW5nJywKKyAgICAgICAgJ1dlYkNvcmU6OkNvbG9yU3BhY2UnLAogICAg
ICAgICAnV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkRv
Y3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRp
ZmllcicsCkBAIC0yMTMsNiArMjE1LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2Zvcndh
cmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCiAgICAgICAgICdX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpSZW5kZXJpbmdNb2RlJywK
ICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNl
cnZpY2VXb3JrZXJPckNsaWVudERhdGEnLApAQCAtMjIyLDYgKzIyNSw3IEBAIGRlZiB0eXBlc190
aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OkFjdGl2
aXR5U3RhdGVDaGFuZ2VJRCcsCiAgICAgICAgICdXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50
aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXInLAogICAgICAg
ICAnV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAogICAgICAgICAnV2ViS2l0OjpMaWJX
ZWJSVENSZXNvbHZlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpNRE5TUmVnaXN0ZXJJ
ZGVudGlmaWVyJywKQEAgLTc3OSwxMyArNzgzLDE2IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hh
bmRsZXIocmVjZWl2ZXIpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYXN5bmNfbWVzc2Fn
ZXMuYXBwZW5kKG1lc3NhZ2UpCiAKLSAgICBpZiBhc3luY19tZXNzYWdlczoKKyAgICBpZiBhc3lu
Y19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NB
R0VfQVRUUklCVVRFKToKICAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2
ZSVzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2RlcilcbicgJSAocmVjZWl2ZXIubmFtZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZlci5oYXNf
YXR0cmlidXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycpKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCd7XG4nKQogICAgICAgICBpZiBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0
ZShOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpO1xuJykKIAog
ICAgICAgICByZXN1bHQgKz0gW2FzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNz
YWdlKSBmb3IgbWVzc2FnZSBpbiBhc3luY19tZXNzYWdlc10KKyAgICAgICAgaWYgcmVjZWl2ZXIu
aGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6CisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKSlcbicpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybjtc
bicpCiAgICAgICAgIGlmIChyZWNlaXZlci5zdXBlcmNsYXNzKToKICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICAlczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
XG4nICUgKHJlY2VpdmVyLnN1cGVyY2xhc3MpKQogICAgICAgICBlbHNlOgpAQCAtNzk0LDEzICs4
MDEsMTYgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQogICAgICAg
ICByZXN1bHQuYXBwZW5kKCd9XG4nKQogCi0gICAgaWYgc3luY19tZXNzYWdlczoKKyAgICBpZiBz
eW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVT
U0FHRV9BVFRSSUJVVEUpOgogICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpCiAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmVTeW5jJXNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZl
ci5uYW1lIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVU
RSkgZWxzZSAnJykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCiAgICAgICAgIGlmIG5v
dCByZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJQlVU
RSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyk7XG4nKQogICAgICAgICByZXN1bHQgKz0gW3N5bmNfbWVzc2FnZV9zdGF0
ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdlIGluIHN5bmNfbWVzc2FnZXNdCisg
ICAgICAgIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9B
VFRSSUJVVEUpOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChkaXNwYXRjaFN5
bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlcikpXG4nKQorICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm47XG4nKQogICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pO1xuJykKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTtcbicpCiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTtcbicpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGUzODE0ZTIxZjgzMzZhYWYy
ZjQ0NDMyMzJlMzQ0ZTAwNzRkYWUyYTEuLjNkMmViOTQ1MDc3NzVkNzk4ZGU3MWRhMDRiNDRlY2Ew
NTIzZWZmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJp
Y3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVu
ZGVyaW5nTW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgpAQCAtODQyLDYgKzg0MywxOCBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNvbG9yU3BhY2U+IHsKICAg
ICA+OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZW5kZXJp
bmdNb2RlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlLAorICAgIFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkLAor
ICAgIFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsCisgICAgV2ViQ29yZTo6
UmVuZGVyaW5nTW9kZTo6RGlzcGxheUxpc3RBY2NlbGVyYXRlZCwKKyAgICBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlOjpEaXNwbGF5TGlzdFVuYWNjZWxlcmF0ZWQsCisgICAgV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQsCisgICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6
UmVtb3RlVW5hY2NlbGVyYXRlZAorICAgID47Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQ+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAogICAgICAgICBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXgg
YTVkMGJlMTQyNzFmNjMwNmY4MzZiOGZkYmQ3ZDQyMGYyOTUyNDZlYS4uNGU0MzljMjU2ODEyMmFi
OTE1OGFlNjhkNGZmMWYyMjNmYjdlODExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNCwxMiArMjQsOCBA
QAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAotR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIu
Y3BwCi1HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ck1hbmFnZXIuY3BwCi1HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAot
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCi1HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCi1HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAorR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eS5jcHAKK0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmNwcApAQCAtMzgsNiArMzQsMTIgQEAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlTG9hZGVyLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlci5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3Bw
CiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHAKK0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAorR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcAor
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKK0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAorR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAorR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKIAogTmV0d29ya1Byb2Nlc3MvQWRD
bGlja0F0dHJpYnV0aW9uTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rpdml0
eVRyYWNrZXIuY3BwCkBAIC01MzIsNiArNTM0LDcgQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9N
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcAogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJDaGFubmVsLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZh
dGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZGEyM2IwZTVkMzBjYzU0NjllZTRkNzA5ZTFmYThh
ZDEzZGM4MDYwMS4uYzJiYWNkZWY4MGI4NTI5MTlkM2UzZjA2N2YzNjBhYTkyOGUyN2UzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dApAQCAtNjQzLDE0ICs2NDMsMTggQEAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQogLy8gRGVy
aXZlZCBTb3VyY2VzCiBFZGl0YWJsZUltYWdlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAK
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCitHUFVQcm9jZXNz
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVVByb2Nlc3NQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKIEdQVVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBMaWJXZWJSVENDb2RlY3NQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIExpYldlYlJUQ0NvZGVjc01lc3NhZ2VSZWNlaXZlci5j
cHAKIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAKIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZVJlY2Vp
dmVyLmNwcAorUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsTWVzc2FnZVJlY2VpdmVyLmNwcAorUmVt
b3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVNZWRp
YVJlY29yZGVyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcAogUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2VpdmVy
LmNwcAogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDVlY2Nj
NTY3NzEwZDcxYmQ2NDdjMTdjMDcwNjBmYzZjNGFiYTQ4NS4uMjg0ZDFmMDA2YTgzNmU4MjVkZjA4
OTRiYjRiOWQzMzk3ZTZlODc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzk4LDYgKzM3OTgsMjAgQEAKIAkJNTNDRkJCQzYyMjI0
RDFCMDAwMjY2NTQ2IC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0Q2hlY2tlckNvbXBsZXRpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1M0NGQkJDNzIyMjREMUIwMDAyNjY1NDYgLyogVGV4dENo
ZWNrZXJDb21wbGV0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRD
aGVja2VyQ29tcGxldGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0YzQ0FB
NTIwNkM0NDNFMDA4NjQ5MEUgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTUwNjQwOTAyNDA1RDA4MTAwQUFFMDQ1IC8q
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1NTA2NDA5MTI0MDVEMDgxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1NTA2NDA5MjI0MDVEMjAxMDBBQUUwNDUgLyogUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTVDMEEyQUIyNDA1OTRCRDAwRjJDQjkzIC8qIFJlbW90ZVBsYXRmb3Jt
SW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUGxhdGZvcm1JbWFnZUJ1ZmZlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NUMwQTJBQzI0MDU5NTIyMDBGMkNCOTMg
LyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVDMEEyQUQyNDA1OTYyMjAwRjJDQjkz
IC8qIFJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1v
dGVJbWFnZUJ1ZmZlckNoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
NUMwQTJBRTI0MDU5NjIyMDBGMkNCOTMgLyogUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1NUMwQTJCMDI0MDU5OEIwMDBGMkNCOTMgLyogUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1QzBBMkIxMjQwNTlBMTEwMEYyQ0I5MyAvKiBSZW1v
dGVQbGF0Zm9ybUltYWdlQnVmZmVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUGxhdGZv
cm1JbWFnZUJ1ZmZlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1QzBB
MkIyMjQwNTlBODYwMEYyQ0I5MyAvKiBSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1QzBBMkIzMjQwNTlBODYwMEYyQ0I5MyAvKiBS
ZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWxQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFn
ZUJ1ZmZlckNoYW5uZWxQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NUMw
QTJCNDI0MDU5QjZFMDBGMkNCOTMgLyogUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHkubWVz
c2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVs
UHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1QzBBMkI1
MjQwNTlCRTUwMEYyQ0I5MyAvKiBJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTU1QzBBMkI2MjQwNTlDOTcwMEYyQ0I5MyAvKiBSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWwubWVz
c2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVs
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzBBQjhGMjIwQUUz
QkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWNLZXlQ
cm94eVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MEFCOTAwMjBCMjUx
NzQwMEI4QkU4NyAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Q29jb2EubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Q29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MEFCOTAzMjBCMjU0MUMwMEI4QkU4NyAvKiBT
ZWNLZXlQcm94eVN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU2VjS2V5UHJveHlTdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1
NDAsNiArNjU1NCw3IEBACiAJCTJEN0U0M0JGMjM3NTJDRDkwMEVBNUNBMCAvKiBHUFUgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTU1QzBBMkFBMjQwNTk0
NzgwMEYyQ0I5MyAvKiBncmFwaGljcyAqLywKIAkJCQkwNzkyMzEyRjIzOUIzQjBDMDA5NTk4RTIg
LyogbWVkaWEgKi8sCiAJCQkJNDE3MjE5ODgyM0I2MTI2MTAwQUU1Njg2IC8qIHdlYnJ0YyAqLywK
IAkJCQkyRDdFNDNDMDIzNzUyQ0Q5MDBFQTVDQTAgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
ICovLApAQCAtNjU1NCw2ICs2NTY5LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJMkQ5RkIyMEQyMzc1MjA5RDAwNDlGOTM2IC8qIEVudHJ5UG9pbnQgKi8sCisJ
CQkJNTVDMEEyQUYyNDA1OTg3NTAwRjJDQjkzIC8qIGdyYXBoaWNzICovLAogCQkJCTJEOUZCMjA0
MjM3NTIwOUQwMDQ5RjkzNiAvKiBpb3MgKi8sCiAJCQkJMkQ5RkIyMDYyMzc1MjA5RDAwNDlGOTM2
IC8qIG1hYyAqLywKIAkJCQkwN0M3NUMxNzIzOTlBM0RCMDA4OEU2NUIgLyogbWVkaWEgKi8sCkBA
IC03Njg1LDYgKzc3MDEsMzQgQEAKIAkJCXBhdGggPSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQk1NUMwQTJBQTI0MDU5NDc4MDBGMkNCOTMgLyogZ3JhcGhpY3MgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTU1QzBBMkI1MjQw
NTlCRTUwMEYyQ0I5MyAvKiBJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCAqLywKKwkJCQk1NUMwQTJB
QzI0MDU5NTIyMDBGMkNCOTMgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKKwkJCQk1NUMwQTJB
RDI0MDU5NjIyMDBGMkNCOTMgLyogUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsLmNwcCAqLywKKwkJ
CQk1NUMwQTJBRTI0MDU5NjIyMDBGMkNCOTMgLyogUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsLmgg
Ki8sCisJCQkJNTVDMEEyQjYyNDA1OUM5NzAwRjJDQjkzIC8qIFJlbW90ZUltYWdlQnVmZmVyQ2hh
bm5lbC5tZXNzYWdlcy5pbiAqLywKKwkJCQk1NUMwQTJBQjI0MDU5NEJEMDBGMkNCOTMgLyogUmVt
b3RlUGxhdGZvcm1JbWFnZUJ1ZmZlci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBncmFwaGljczsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTU1QzBBMkFGMjQwNTk4NzUwMEYy
Q0I5MyAvKiBncmFwaGljcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJNTVDMEEyQjIyNDA1OUE4NjAwRjJDQjkzIC8qIFJlbW90ZUltYWdlQnVmZmVyQ2hh
bm5lbFByb3h5LmNwcCAqLywKKwkJCQk1NUMwQTJCMzI0MDU5QTg2MDBGMkNCOTMgLyogUmVtb3Rl
SW1hZ2VCdWZmZXJDaGFubmVsUHJveHkuaCAqLywKKwkJCQk1NUMwQTJCNDI0MDU5QjZFMDBGMkNC
OTMgLyogUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJ
NTVDMEEyQjAyNDA1OThCMDAwRjJDQjkzIC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywK
KwkJCQk1NUMwQTJCMTI0MDU5QTExMDBGMkNCOTMgLyogUmVtb3RlUGxhdGZvcm1JbWFnZUJ1ZmZl
clByb3h5LmggKi8sCisJCQkJNTUwNjQwOTAyNDA1RDA4MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5jcHAgKi8sCisJCQkJNTUwNjQwOTEyNDA1RDA4MTAwQUFFMDQ1IC8q
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovLAorCQkJCTU1MDY0MDkyMjQwNUQyMDEw
MEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4gKi8sCisJ
CQkpOworCQkJcGF0aCA9IGdyYXBoaWNzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIAkJNTcwQUI4RjYyMEFFODFBQjAwQjhCRTg3IC8qIGNvY29hICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOGRmZjUwZjMwODhlZDQ1
YzU5MGVjODFlMmMwOWExMzhiYTdhNTM1Zi4uZGZiOWI5YTkzOGI5ODVkMjgwYWNkZWRhMDQ4YmM1
YTY2Zjc3ZTYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTc1LDMyICs3NSwzOCBAQCBTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyJiBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6c2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTQogfQogI2VuZGlmCiAKLXZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKQorYm9vbCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCktPmRp
ZFJlY2VpdmVQbGF5ZXJNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAg
IGlmIChhdXRvKiBjYXB0dXJlTWFuYWdlciA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBs
ZW1lbnQ8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI+KCkpCiAgICAgICAgICAgICBjYXB0dXJlTWFu
YWdlci0+ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tR1BVUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVy
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXIoKS5kaWRSZWNlaXZlTGF5ZXJNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRpZiAvLyBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAjaWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAg
aWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpMaWJXZWJSVEND
b2RlY3M6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5saWJXZWJSVENDb2RlY3MoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAj
ZW5kaWYKKyAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOworfQorCitib29sIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNw
YXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQor
eworICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaFN5bmNNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5oCmluZGV4IDQ2MDBlNTNiYjI4NGQ3NDhjZjM5MTFiOTRkYjU1OTlhOWNiNDVmMjcu
LjZhY2RjYmYzOTU0NTFiNmI0Yzk1OGVjYzkyYjUyMDE2YjY3NzcyODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTI4
LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00Nyw2ICs0OCw3IEBAIHB1Ymxp
YzoKICAgICB+R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICAKICAgICBJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KKyAgICBJUEM6
Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwKCkgeyByZXR1cm4gbV9tZXNz
YWdlUmVjZWl2ZXJNYXA7IH0KIAogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgdm9pZCBzZXRB
dWRpdFRva2VuKE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4pIHsgbV9hdWRpdFRv
a2VuID0gYXVkaXRUb2tlbjsgfQpAQCAtNjIsMTAgKzY0LDE1IEBAIHByaXZhdGU6CiAgICAgLy8g
SVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlv
biYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKKyAgICBib29sIGRpc3Bh
dGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKyAgICBib29sIGRp
c3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKwogICAgIC8vIFRoZSBjb25uZWN0aW9uIGZyb20g
dGhlIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgcHJvY2Vzcy4KICAgICBSZWY8SVBDOjpDb25uZWN0
aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAgbV9tZXNzYWdl
UmVjZWl2ZXJNYXA7CiAKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIE9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+IG1fYXVkaXRUb2tlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGQz
NmY4YTA5NWY2YTc3YmJiNmNhYzg4M2E2NTFlODRjZTlkNjRiMzAuLjU3ZmVjZGU5ZGYyN2M3Mzlh
NmNiZjAyNjk4MDY1OTJiNWUyMTc5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAt
MjIsNyArMjIsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi1tZXNzYWdlcyAtPiBH
UFVQcm9jZXNzQ29ubmVjdGlvbiB7CittZXNzYWdlcyAtPiBHUFVQcm9jZXNzQ29ubmVjdGlvbiBX
YW50c0Rpc3BhdGNoTWVzc2FnZSB7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWExYmM5YWU4N2RjOGQ3MjQyOGEwYjgwOWNhZDBkODBhNGNkMWNiOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElk
ZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyVHlwZSB7IH07Cit1c2luZyBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgPSBPYmplY3RJZGVu
dGlmaWVyPEltYWdlQnVmZmVySWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mYjJkMjk4YjEwODE1MjlhOTBmNTAyZjA0ZWZiMTg4MmY1ODVmODA1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCisKKyNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWwuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgorY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXIg
OiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwg
cHVibGljIFJlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbCB7CisgICAgdXNpbmcgQmFzZURpc3BsYXlM
aXN0SW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2Vu
ZFR5cGU+OworICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyID0gQ29uY3JldGVJbWFn
ZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBzaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjogdGVtcGxhdGUgY3JlYXRlPFJlbW90
ZUltYWdlQnVmZmVyPihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG51bGxwdHIs
IHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSk7CisgICAg
fQorCisgICAgUmVtb3RlSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYm
IGJhY2tlbmQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UgY29sb3JTcGFjZSkKKyAgICAgICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
cihXVEZNb3ZlKGJhY2tlbmQpLCBzaXplKQorICAgICAgICAsIFJlbW90ZUltYWdlQnVmZmVyQ2hh
bm5lbChzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpCisg
ICAgeworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWwuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE0ZmRmMTA2MGUxZTlhZWFiODkyZDRjYTJmNjY3YjQwZjhmOWQwNGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyQ2hhbm5lbC5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVy
Q2hhbm5lbE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsUHJv
eHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3Nh
Z2VzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsOjpSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWwoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIC8vIFJlZ2lzdGVy
IGl0c2VsZiBhcyBhIE1lc3NhZ2VSZWNlaXZlciBpbiB0aGUgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
CisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJl
Y2VpdmVyTWFwKCk7CisgICAgbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKworICAgIC8vIENy
ZWF0ZSB0aGUgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4KKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmlu
Z01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9pbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpKTsKK30KKworUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsOjp+UmVtb3RlSW1hZ2VCdWZmZXJD
aGFubmVsKCkKK3sKKyAgICAvLyBVbi1yZWdpc3RlciBpdHNlbGYgYXMgYSBNZXNzYWdlUmVjZWl2
ZXIuCisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2Fn
ZVJlY2VpdmVyTWFwKCk7CisgICAgbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcigqdGhpcyk7CisKKyAgICAvLyBSZWxlYXNlIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LgorICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6UmVsZWFz
ZUltYWdlQnVmZmVyKG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgMCk7Cit9CisKK0lQQzo6Q29u
bmVjdGlvbiogUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKK30KKwordWludDY0X3QgUmVtb3Rl
SW1hZ2VCdWZmZXJDaGFubmVsOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK3Zv
aWQgUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKQoreworICAgIC8vIEZJWE1FOiBEZWxldGUgdGhpcyBmdW5j
dGlvbiB3aGVuIG1lc3NhZ2VzIGFyZSBhZGRkZWQgdG8gUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVs
Lm1lc3NhZ2VzLmluLgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAxYzI3MTAzMmM1NmZlZWRkOGFlMzYzYmZjMDdlMzNlZTFjY2E3ZmEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyQ2hhbm5lbC5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVt
b3RlSW1hZ2VCdWZmZXJDaGFubmVsCisgICAgOiBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlcgor
ICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgflJlbW90
ZUltYWdlQnVmZmVyQ2hhbm5lbCgpOworCitwcm90ZWN0ZWQ6CisgICAgUmVtb3RlSW1hZ2VCdWZm
ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01v
ZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CisKKyAgICAv
LyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CisKKyAgICBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgbV9pbWFnZUJ1
ZmZlcklkZW50aWZpZXIgeyBJbWFnZUJ1ZmZlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlckNoYW5uZWwubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyQ2hhbm5lbC5tZXNzYWdlcy5pbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zMDBkOTQ1ODM4OTM0ZjU4ODc1NzFkODIzOGJiMDMyMjhlMjE5MjZlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlckNoYW5uZWwubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyOSBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQor
CittZXNzYWdlcyAtPiBSZW1vdGVJbWFnZUJ1ZmZlckNoYW5uZWwgTm90UmVmQ291bnRlZCB7CisK
K30KKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUGxhdGZvcm1JbWFnZUJ1ZmZlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVQbGF0Zm9ybUlt
YWdlQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGU3NTY5ZTg1NjBkMGM3Y2VmZDUzYWU3NzhmYWQwODE0
OGViZDRhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCkBAIC0wLDAgKzEsNDEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZl
ci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBpbXBsZW1lbnQg
cmVtb3RlIHJlbmRlcmluZy4gVXNlIHNoYXJlYWJsZSBJbWFnZUJ1ZmZlciBiYWNrZW5kcy4KK3Vz
aW5nIFJlbW90ZVVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlciA9IFJlbW90ZUltYWdlQnVmZmVyPFdl
YkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD47Cit1c2luZyBSZW1vdGVBY2NlbGVy
YXRlZEltYWdlQnVmZmVyID0gUmVtb3RlSW1hZ2VCdWZmZXI8V2ViQ29yZTo6SW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcAppbmRleCA2YTY2MjJh
Mzk1NDk5MDA3MTA2YmQ0OTA5NzExMDVkNThiODNhOTZlLi45ZmFiZWY4NGEwM2ZhODdlMDYzYmFl
Mzg1MjYzNDAyN2E3NGVhNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTI5LDEx
ICsyOSwxMyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIgogI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6VGV4dFRyYWNrUHJpdmF0ZVJlbW90
ZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGUmIHBsYXllciwgVHJhY2tQcml2YXRlUmVtb3RlSWRl
bnRpZmllciBpZGVuZGlmaWVyLCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYm
IGNvbmZpZ3VyYXRpb24pCiAgICAgOiBXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlKGNv
bmZpZ3VyYXRpb24uY3VlRm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaAppbmRleCA3YjdmNzAz
Y2I0OTdkZWRlYTM5MWRiNTljYzkyYmVjZTE1YTU5MmUzLi40ZTFiOTk3MzM0Y2Y3M2Y1YjhiODY4
OGI5MDdlMmE3NmI1M2ZmMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaApAQCAtMzIsNiArMzIs
MTAgQEAKICNpbmNsdWRlICJUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmg+CiAKK25hbWVzcGFjZSBJUEMgewor
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR2Vu
ZXJpY0N1ZURhdGE7CiBjbGFzcyBJU09XZWJWVFRDdWU7CkBAIC01Miw5ICs1Niw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZERhdGFDdWUoTWVkaWFUaW1lJiYgc3RhcnQsIE1lZGlhVGltZSYmIGVu
ZCwgSVBDOjpEYXRhUmVmZXJlbmNlJiYpOwogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCi0g
ICAgdm9pZCBhZGREYXRhQ3VlV2l0aFR5cGUoTWVkaWFUaW1lJiYgc3RhcnQsIE1lZGlhVGltZSYm
IGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlJiYsIFN0cmluZyYmKTsKLSAgICB2
b2lkIHVwZGF0ZURhdGFDdWUoTWVkaWFUaW1lJiYgc3RhcnQsIE1lZGlhVGltZSYmIGVuZCwgU2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlJiYpOwotICAgIHZvaWQgcmVtb3ZlRGF0YUN1ZShN
ZWRpYVRpbWUmJiBzdGFydCwgTWVkaWFUaW1lJiYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlVmFsdWUmJik7CisgICAgdm9pZCBhZGREYXRhQ3VlV2l0aFR5cGUoTWVkaWFUaW1lJiYgc3Rh
cnQsIE1lZGlhVGltZSYmIGVuZCwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZh
bHVlJiYsIFN0cmluZyYmKTsKKyAgICB2b2lkIHVwZGF0ZURhdGFDdWUoTWVkaWFUaW1lJiYgc3Rh
cnQsIE1lZGlhVGltZSYmIGVuZCwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZh
bHVlJiYpOworICAgIHZvaWQgcmVtb3ZlRGF0YUN1ZShNZWRpYVRpbWUmJiBzdGFydCwgTWVkaWFU
aW1lJiYgZW5kLCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUmJik7CiAj
ZW5kaWYKIAogICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFS
ZWNvcmRlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCmluZGV4IGZlNDNhYThmYjNmZWQyOTgxZGIyNDMzNWRm
OWQ0NjY0NTY1ZmE2MzQuLmQ4YWZmOTBiZTJhMDIzMWU4NzI2ZGNlMzFkZDE2ZGVkNTNkZWI4YzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVj
b3JkZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKQEAgLTM5LDkgKzM5LDggQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXVkaW9CdWZmZXJM
aXN0Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgV2ViS2l0IHsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGUoY29uc3QgTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0pCiAgICAgOiBt
X2lkZW50aWZpZXIoTWVkaWFSZWNvcmRlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNv
cmRlclByb3ZpZGVyLmNwcAppbmRleCBiY2U3NzRhODgxZGNlYzc5NDI2Mzc5Njg1NTJlM2NjYzdi
YjM3NDBiLi5iZDFkZTQxMWJmMzM0MWU5ZDJiZTJiNDJhMjlkMTQ4YzJiZDhkNGE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJv
dmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlh
UmVjb3JkZXJQcm92aWRlci5jcHAKQEAgLTMxLDkgKzMxLDggQEAKICNpbmNsdWRlICJNZWRpYVJl
Y29yZGVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFSZWNvcmRlclByaXZhdGUu
aD4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZT4gTWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVy
UHJpdmF0ZShjb25zdCBNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuY3BwCmluZGV4IGFlMDE2MWFhZDk0NzRkNmIwZjFmOTAwYjA1NDRmNTk4
MGQzNjk4ZmYuLjYyOWNmMzdhZDBlMGIxZmNlOGY2NGQ5NGNlNjk0MjI4NjFkY2Q3NGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAtMzUsOSArMzUsOCBAQAogI2luY2x1ZGUg
IlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIG5hbWVzcGFjZSBX
ZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI+IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIG1hbmFnZXIsIENsaWVudCYgY2xpZW50LCBi
b29sIGhpZGVSb290TGF5ZXIsIEludFNpemUgc2l6ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlci5jcHAKaW5kZXggNDgyMmY3NzNkODVkODJiZTFmMmYzNzE1MDNl
ZThkY2ZjZWFmY2U5NS4uMDcyOTc1YWMyYzk0ZjhkMDAyMjFlNDU5NDRhNjk2MTc3YjFlNGIxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKQEAgLTI4LDkg
KzI4LDggQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAotdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6ZGlkUmVjZWl2
ZUxheWVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggZjk4MjU3ODRmZWRlNzZmOWQ5
MGM3M2I4ODQ4MzY0ZjhmZTg2M2U1ZS4uYzEwNTBiMDVkYzYxN2NmOTNmMTBmOTE1ODZkZDU2MmI3
ZWRkYzg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNs
dWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZUJhbm5lci5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVBsYXRmb3JtSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5o
IgogI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3Nlci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgpAQCAtODgwLDMwICs4ODEsMzUgQEAgR3JhcGhpY3NMYXllckZhY3RvcnkqIFdl
YkNocm9tZUNsaWVudDo6Z3JhcGhpY3NMYXllckZhY3RvcnkoKSBjb25zdAogfQogCiAjaWYgVVNF
KFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKLQogUmVmUHRyPERpc3Bs
YXlSZWZyZXNoTW9uaXRvcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1v
bml0b3IoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKSBjb25zdAogewogICAgIGlmIChhdXRv
KiBkcmF3aW5nQXJlYSA9IG1fcGFnZS5kcmF3aW5nQXJlYSgpKQogICAgICAgICByZXR1cm4gZHJh
d2luZ0FyZWEtPmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihkaXNwbGF5SUQpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQotCiAjZW5kaWYKIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQsIENvbG9yU3BhY2UpIGNvbnN0CisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBXZWJDaHJv
bWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSkgY29uc3QKIHsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyOworCiAgICAgc3dpdGNoIChyZW5kZXJpbmdNb2RlKSB7CiAgICAgY2FzZSBSZW5k
ZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRlZDoKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBSZW1v
dGVBY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKTsKKyAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2Fz
ZSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFjY2VsZXJhdGVkOgotICAgICAgICAvLyBGSVhNRTog
Q3JlYXRlIHRoZSByZW1vdGUgSW1hZ2VCdWZmZXIKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
KyAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIGltYWdlQnVmZmVyID0gUmVt
b3RlVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAK
LSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CisjZW5kaWYK
IAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lJiwg
R3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggN2RjNmFkZmJm
MDkxZGYxOWEzOTM5OTUyY2RhZmM0ZTcyZWE0NjhiZi4uNjlhN2JmNjhlY2QwNjVjNTg5NGY2M2I4
NTQxNGE2Nzk5MjRmZDJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTIzLDggKzEyMyw2IEBA
IHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9v
dFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3Jl
OjpJbnRSZWN0IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKSBjb25zdCBmaW5hbDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2Vi
Q29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xv
clNwYWNlKSBjb25zdCBmaW5hbDsKLQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9y
RWxlbWVudChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50JikgZmluYWw7CiAKICAgICBQbGF0Zm9y
bVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgZmluYWw7CkBAIC0yMzQsNiAr
MjMyLDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9u
aXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxh
eUlEKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKSBjb25zdCBmaW5hbDsKKyNlbmRp
ZgorCiAgICAgQ29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3MgYWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dl
cnMoKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbXBv
c2l0aW5nVHJpZ2dlckZsYWdzPigK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392081</attachid>
            <date>2020-02-29 17:04:07 -0800</date>
            <delta_ts>2020-03-02 11:52:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207221-20200229170406.patch</filename>
            <type>text/plain</type>
            <size>68237</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWFjMmVjMzFjOGE5NDFm
NzY1ZjMzY2I2MjU4MmQ5YjNkN2M5NzI0Zi4uNmMyZDdmZDVmMzBlYmRkNDM3MGYxZDhiMzg0OTU3
MDM1ZTU0YjU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTAyLTI5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IHRoZSByZW1vdGUgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNzIyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIENvbmNy
ZXRlSW1hZ2VCdWZmZXI6OmNyZWF0ZSByZXR1cm5zIHRoZSBkZXJpdmVkIGNsYXNzIHdoaWNoIGl0
IGNyZWF0ZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuaDoKKyAgICAgICAgVGhpcyB1c2luZyBzdGF0ZW1lbnQgZ2l2ZXMgY29tcGlsYXRp
b24gZXJyb3Igd2hlbiByZWZlcmVuY2luZyBEaXNwbGF5TGlzdAorICAgICAgICBmcm9tIFdlYktp
dC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0Lmg6CisgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyIGluaGVyaXRzIERp
c3BsYXlMaXN0OjpJbWFnZUJ1ZmZlciBzbyB0aGVzZSBtZXRob2RzIAorICAgICAgICBuZWVkIHRv
IGJlIGV4cG9ydGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIGZv
ciBSZW1vdGVJbWFnZUJ1ZmZlciB0byBiZSBjcmVhdGVkIHdpdGggbm8gYmFja2VuZC4gSXQKKyAg
ICAgICAgd2lsbCBiZSBjcmVhdGVkIGxhdGVyIHdoZW4gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBz
aGFyZXMgaXRzIGJhY2tlbmQgd2l0aAorICAgICAgICBSZW1vdGVJbWFnZUJ1ZmZlci4KKwogMjAy
MC0wMi0yOCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRp
YSBpbiBHUFUgcHJvY2Vzc10gSW1wbGVtZW50IHRoZSB2aWRlbyBmdWxsc2NyZWVuIGFuZCBQaWN0
dXJlLWluLVBpY3R1cmUgc3VwcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzNzRjNGMyNzdhNmI5NDg4ZTJhNTA0
ZTYzNjMxMzZiYjUzOTE2NTE3Li40YTc5MGRjZWJhYTFjODIxYjM4NWVmYTNhNmNiZWNlNDI0N2Jm
NDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDIwLTAyLTI5ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBy
ZW1vdGUgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNzIyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyIGFuZCBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IHJl
cHJlc2VudCBhIHNpbmdsZSByZW1vdGUKKyAgICAgICAgSW1hZ2VCdWZmZXIuIFRoZSBiYWNrIGVu
ZCBzaG91bGQgYmUgY3JlYXRlZCBieSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IGluCisgICAgICAg
IEdQVVByb2Nlc3MgYW5kIHNoYXJlZCB3aXRoIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlciBpbiB0aGUg
V2ViUHJvY2Vzcy4KKyAgICAgICAgRmx1c2hpbmcgdGhlIERyYXdpbmdDb250ZXh0IHdpbGwgYmUg
ZG9uZSBpbiBHUFVQcm9jZXNzLiBCdXQgY3JlYXRpbmcgdGhlCisgICAgICAgIG5hdGl2ZSBpbWFn
ZSBvdXQgb2YgdGhlIGJhY2sgZW5kIHdpbGwgYmUgaW4gR1BVUHJvY2Vzcy4KKworICAgICAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kIGFuZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgYXJl
IGNlbnRyYWwgcG9pbnRzCisgICAgICAgIGZvciByZWNlaXZpbmcgYW5kIHNlbmRpbmcgYWxsIHRo
ZSBtZXNzYWdlcyBvZiB0aGUgUmVtb3RlSW1hZ2VCdWZmZXIgYW5kCisgICAgICAgIFJlbW90ZUlt
YWdlQnVmZmVyUHJveHkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1BsYXRmb3Jt
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgRGVmaW5lcyB0aGUgcGxh
dGZvcm0gdHlwZXMgb2YgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4KKworICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpjcmVhdGVCYWNrZW5k
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
Ojpjb21taXRGbHVzaENvbnRleHQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg6IEFkZGVkLgorICAgICAgICBNYW5h
Z2VzIHNlbmRpbmcgYW5kIHJlY2VpdmluZyB0aGUgbWVzc2FnZXMgb2YgUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eQorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5KToKKyAgICAgICAgSXQgaXMgcmVzcG9uc2libGUgZm9yIGNyZWF0
aW5nIGEgc2hhcmVkIGJhY2sgZW5kIGFuZCByZXBsYXlpbmcgYmFjayBkcmF3aW5nCisgICAgICAg
IGNvbW1hbmRzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29u
dGV4dCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW46CisgICAg
ICAgIEhhbmRsZSBvciBkaXNwYXRjaCBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckZs
dXNoSWRlbnRpZmllci5oOiBBZGRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuaDoKKyAgICAgICAgQWx0aG91Z2ggaG9zdFdpbmRvdyBpc24ndCB1c2VkLCB0aGlzIGlzIHdo
YXQgQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlCisgICAgICAgIGV4cGVjdHMgZnJvbSB0aGUg
Y3JlYXRvciBvZiB0aGUgYmFja2VuZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaDogQWRkZWQuCisgICAgICAgIERlZmluZXMg
dGhlIHBsYXRmb3JtIHR5cGVzIG9mIFJlbW90ZUltYWdlQnVmZmVyLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbWFnZUJ1ZmZlcjo6UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICBJdCBpcyByZXNw
b25zaWJsZSBmb3IgY3JlYXRpbmcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBhbmQgcGVyZm9ybWlu
ZyB0aGUKKyAgICAgICAgZHJhd2luZyBjb21tYW5kcyBpbiB0aGUgR1BVUHJvY2Vzcy4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlcjo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6On5SZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmNvbW1pdEZsdXNoQ29udGV4dCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlcjo6aW1hZ2VCdWZmZXJJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgTWFuYWdlcyBzZW5k
aW5nIGFuZCByZWNlaXZpbmcgdGhlIG1lc3NhZ2VzIG9mIFJlbW90ZUltYWdlQnVmZmVyLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFz
ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Y29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQubWVzc2FnZXMuaW46CisgICAgICAgIEhhbmRsZSBvciBkaXNwYXRjaCBtZXNz
YWdlcyByZWNlaXZlZCBmcm9tIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxl
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAg
ICAgQWx0aG91Z2ggaG9zdFdpbmRvdyBpc24ndCB1c2VkLCB0aGlzIGlzIHdoYXQgQ29uY3JldGVJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlCisgICAgICAgIGV4cGVjdHMgZnJvbSB0aGUgY3JlYXRvciBvZiB0
aGUgYmFja2VuZC4KKwogMjAyMC0wMi0yOCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29t
PgogCiAgICAgICAgIFtNZWRpYSBpbiBHUFUgcHJvY2Vzc10gSW1wbGVtZW50IHRoZSB2aWRlbyBm
dWxsc2NyZWVuIGFuZCBQaWN0dXJlLWluLVBpY3R1cmUgc3VwcG9ydApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY0YWUxNTVmZDk5
YTRmYTE0ZmM5ZmVhZWNmZjBlYzY2MTY4NzZlNDQuLjBjNzFkYjczZTFkY2FiYWM3NGRlMDc1MDNi
ZjI5YmYyMmE3NzI1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NDcsNiArMTc0Nyw5IEBACiAJCTU1NkM3QzRCMjIxMjM5
OTcwMDlCMDZDQSAvKiBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NkM3QzQ3MjIxMjM5NDIwMDlCMDZDQSAv
KiBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTc2QTU2NTFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VG
cmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU3
NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NUEzMzZGOTFEODIxRTNDMDAyMkM0Qzcg
LyogSW1hZ2VCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU1QTMzNkY4MUQ4MjFFM0MwMDIyQzRDNyAvKiBJbWFnZUJhY2tpbmdTdG9y
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU1
QUQwOTNFMjQwODk2MzUwMERFNEQyRiAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkVBMDlGNzIzRkNDQjNE
MDA4NTA0QTUgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU1QUQwOTQwMjQwODk2NDAwMERFNEQyRiAv
KiBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MkVBMDlGOTIzRkNDQzZBMDA4NTA0QTUgLyogRGlzcGxheUxp
c3REcmF3aW5nQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTU1QUQwOTQxMjQwODk2NEEwMERFNEQyRiAvKiBDb25jcmV0ZUltYWdlQnVm
ZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJB
QzNBNzIzRTE3MzI4MDA4RDc0MUMgLyogQ29uY3JldGVJbWFnZUJ1ZmZlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1QUYxNEU2MUVBQUM1OUIw
MDI2RUVBQSAvKiBVVElSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTVBRjE0RTQxRUFBQzU5QjAwMjZFRUFBIC8qIFVUSVJlZ2lzdHJ5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTVEQ0M1
MjgyMjQwN0IyMDAwQzI2RTMyIC8qIFNWR1ByaW1pdGl2ZUxpc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RENDNTI1MjI0MDc0OUUwMEMyNkUzMiAv
KiBTVkdQcmltaXRpdmVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTVEQ0M1MjkyMjQwN0IyQTAwQzI2RTMyIC8qIFNWR0xpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RENDNTIzMjI0MDcz
RkUwMEMyNkUzMiAvKiBTVkdMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTI5Mzc0LDYgKzI5Mzc3LDcgQEAKIAkJCQlGNDQyQzM1OTIzRTNB
REQyMDA0OTk1ODIgLyogQ29tcG9zaXRpb25IaWdobGlnaHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJERDVBNzI3MUVCRUU0N0QwMDlCQTU5NyAvKiBDb21wb3NpdGlvblVuZGVybGluZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzExNkUyQ0MxRkVENzVEQzAwQzA2RkRFIC8qIENvbXB1dGVkRWZmZWN0
VGltaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NUFEMDk0MTI0MDg5NjRBMDBERTREMkYgLyog
Q29uY3JldGVJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwOEYxMkIwMjZG
NzAwQzFBMzU5IC8qIENvbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1Qzk3QUYzMDhFQTkwODgw
MEFDRDI3MyAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQUYzNDNEMUVBN0UwRjEw
MDM4MkNEMyAvKiBDb25zdGFudFByb3BlcnR5TWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTI5NzE5
LDYgKzI5NzIzLDggQEAKIAkJCQkxMTJGQjM1MjIzOUMyM0M0MDA4NzA1NEEgLyogRGlzcGxheUlu
bGluZVJlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGQjQ3RTYzMjI3NzQyNUEwMEM3QkNCMCAv
KiBEaXNwbGF5TGluZUJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDMxQzNERDUxRTAw
MDdBMkNBIC8qIERpc3BsYXlMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NUFEMDk0MDI0MDg5
NjQwMDBERTREMkYgLyogRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTVBRDA5M0UyNDA4OTYzNTAwREU0RDJGIC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5
TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJENzFDM0RENTFFMDAwN0EyQ0Eg
LyogRGlzcGxheUxpc3RSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDkxQzNE
RDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1
ZmZlci5oCmluZGV4IDUwOWRkYzcxYWMxNGRkMmY0MDg0NGU5ZTk1YzE3MTI1YzE0NmJjOGIuLmJi
NzFkYzI1Njc1YWI5ZjcxN2Q1Mjc0ODc1YTAzMGQzNTI1NThkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKQEAg
LTM0LDcgKzM0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+CiBjbGFzcyBDb25j
cmV0ZUltYWdlQnVmZmVyIDogcHVibGljIEltYWdlQnVmZmVyIHsKIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBDb25jcmV0ZUltYWdlQnVmZmVyLCB0eXBl
bmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEFyZ3Vt
ZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cs
IEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIGF1dG8gYmFja2VuZCA9
IEJhY2tlbmRUeXBlOjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBo
b3N0V2luZG93KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQpAQCAtNDMsNyArNDMsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29u
Y3JldGVJbWFnZUJ1ZmZlciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJUeXBlPiBjcmVhdGUoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEFyZ3VtZW50
cyYmLi4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRU
eXBlOjpjcmVhdGUoc2l6ZSwgY29udGV4dCk7CiAgICAgICAgIGlmICghYmFja2VuZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmgKaW5kZXggMjhlMjY0NGUyNmVkYjUwZDAyNWRlYWU1NDNhMTE0OWUzZjJh
ZTQ5Mi4uMmM2NzdmNmI3MzZlNzUyZTQxZjhiM2YyNDM0NzZkNDUwODQyNDM3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmgKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBtX2xpc3RbaW5kZXhdLmdldCgpOwogICAgIH0KIAotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CiAgICAgdm9pZCByZW1vdmVJdGVtc0Zyb21JbmRl
eChzaXplX3QpOwogCiAgICAgc2l6ZV90IGl0ZW1Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbGlz
dC5zaXplKCk7IH0KQEAgLTI1MSw2ICsyNTEsMyBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdD4gRGlz
cGxheUxpc3Q6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogV1RGOjpUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYp
OwogCiB9IC8vIFdlYkNvcmUKLQotdXNpbmcgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaApp
bmRleCA4NmViYmM2MzE0MWJjOGFjMTRlMjc4NDAzZmIxZDZjYmNkMjM4MGVjLi41ZDM4NWFhYmQw
NGE5NGVjZjgxMDE1MTY5MjQwNTdjNjkzMzczMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKQEAgLTMzLDE1ICszMywxNSBAQCBuYW1lc3BhY2Ug
RGlzcGxheUxpc3QgewogCiBjbGFzcyBEcmF3aW5nQ29udGV4dCB7CiBwdWJsaWM6Ci0gICAgRHJh
d2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgRHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSk7CiAKICAg
ICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PERy
YXdpbmdDb250ZXh0Jj4oKnRoaXMpLm1fY29udGV4dDsgfQogICAgIERpc3BsYXlMaXN0JiBkaXNw
bGF5TGlzdCgpIHsgcmV0dXJuIG1fZGlzcGxheUxpc3Q7IH0KICAgICBjb25zdCBEaXNwbGF5TGlz
dCYgZGlzcGxheUxpc3QoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlMaXN0OyB9CiAgICAgY29u
c3QgRGlzcGxheUxpc3QqIHJlcGxheWVkRGlzcGxheUxpc3QoKSBjb25zdCB7IHJldHVybiBtX3Jl
cGxheWVkRGlzcGxheUxpc3QuZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0VHJhY2tzRGlzcGxheUxp
c3RSZXBsYXkoYm9vbCk7Ci0gICAgdm9pZCByZXBsYXlEaXNwbGF5TGlzdChHcmFwaGljc0NvbnRl
eHQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5
KGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGF5RGlzcGxheUxpc3QoR3JhcGhp
Y3NDb250ZXh0Jik7CiAKIHByb3RlY3RlZDoKICAgICBHcmFwaGljc0NvbnRleHQgbV9jb250ZXh0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKaW5kZXggNzE3YjJi
ODBhZWEyZjEyNWNkNzUyZTA0YThhODc4YmU5ZjU3OWY1Mi4uYTAyODdmODVkZGI2MGQ3YmRjMDAx
ZmJiYWU0NzY0YWFhZTNkNGYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlci5oCkBAIC01Miw2ICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAg
IEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKKyAgICAgICAgOiBtX2RyYXdpbmdD
b250ZXh0KHNpemUpCisgICAgeworICAgIH0KKwogICAgIH5JbWFnZUJ1ZmZlcigpCiAgICAgewog
ICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWFmZjA4OGUzN2NhNzZhN2Y4NjRhZTdlNDJiYmI3MDA0ZjFm
MTUyMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMCwwICsxLDQwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJhY2tlbmQuaCIKKyNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eSA9IFJlbW90ZUltYWdlQnVmZmVyUHJveHk8VW5hY2NlbGVyYXRlZEltYWdlQnVm
ZmVyU2hhcmVhYmxlQmFja2VuZD47Cit1c2luZyBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVy
UHJveHkgPSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCYWNrZW5kPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlMjQ3YTdhZDRjZDI5NTM4ZTRlYWY0MGJkODAzNjk2ODYw
MDhiODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcApAQCAtMCwwICsxLDU1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQorCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBJbWFnZUJ1ZmZl
cklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgIDogbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICwgbV9pbWFn
ZUJ1ZmZlcklkZW50aWZpZXIoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQoreworfQorCit2b2lkIFJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Y3JlYXRlQmFja2VuZChjb25zdCBG
bG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBoYW5kbGUpCit7CisgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
LCBXVEZNb3ZlKGhhbmRsZSksIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkucmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Cit9CisKK3Zv
aWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojpjb21taXRGbHVzaENvbnRl
eHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKQoreworICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OkNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KGZsdXNoSWRlbnRpZmllciwg
bV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5y
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ViMWZiYzYyMTMyZWU1ZjZmNTNi
ZjQxNzg1NzlkM2E1MTVjNTNkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaApA
QCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9EaXNwbGF5TGlzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CisK
K2NsYXNzIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KCkgPSBkZWZh
dWx0OworCisgICAgLy8gTWVzc2FnZXMgcmVjZWl2ZWQuIFNlZSBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkubWVzc2FnZXMuaW4uCisgICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRl
eHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgSW1hZ2VCdWZmZXJG
bHVzaElkZW50aWZpZXIpID0gMDsKKworcHJvdGVjdGVkOgorICAgIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmLCBJbWFnZUJ1
ZmZlcklkZW50aWZpZXIpOworCisgICAgLy8gTWVzc2FnZXMgc2VudC4gU2VlIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQubWVzc2FnZXMuaW4uCisgICAgdm9pZCBjcmVhdGVCYWNrZW5kKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJh
Y2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CisgICAgdm9pZCBjb21taXRGbHVzaENvbnRleHQoSW1h
Z2VCdWZmZXJGbHVzaElkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CisgICAgSW1hZ2VC
dWZmZXJJZGVudGlmaWVyIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMDYxZDc3ZTljZjQ0Y2FiZDQyYzkzYTk0OTZmNGJhN2Q1YTg4
YTE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nv
bmNyZXRlSW1hZ2VCdWZmZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRU
eXBlPgorY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpDb25j
cmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJQcm94eSB7CisgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIgPSBX
ZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKKyAgICB1c2luZyBCYXNl
Q29uY3JldGVJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOworCitwdWJsaWM6CisgICAgc3RhdGljIGF1
dG8gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1h
Z2VCdWZmZXJJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUlt
YWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oc2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBudWxscHRyLCByZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHksIGltYWdlQnVmZmVySWRlbnRpZmllcik7CisgICAgfQorCisgICAgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eShzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCwgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIElt
YWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgICAgIDogQmFz
ZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShiYWNrZW5kKSkKKyAgICAgICAgLCBSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgeworICAgICAgICBjcmVhdGVCYWNrZW5kKG1f
YmFja2VuZC0+bG9naWNhbFNpemUoKSwgbV9iYWNrZW5kLT5iYWNrZW5kU2l6ZSgpLCBtX2JhY2tl
bmQtPnJlc29sdXRpb25TY2FsZSgpLCBtX2JhY2tlbmQtPmNvbG9yU3BhY2UoKSwgbV9iYWNrZW5k
LT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpmbHVzaERyYXdpbmdDb250ZXh0Owor
CisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZs
dXNoSWRlbnRpZmllcikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChkaXNwbGF5TGlzdC5p
dGVtQ291bnQoKSkgeworICAgICAgICAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVy
IHJlcGxheWVyKEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0KCksIGRpc3BsYXlMaXN0
KTsKKyAgICAgICAgICAgIHJlcGxheWVyLnJlcGxheSgpOworICAgICAgICB9CisgICAgICAgIG1f
YmFja2VuZC0+Zmx1c2hDb250ZXh0KCk7CisgICAgICAgIGNvbW1pdEZsdXNoQ29udGV4dChmbHVz
aElkZW50aWZpZXIpOworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cAppbmRleCA1YTI5ZWVmYjcyZThiODg5ZGE3ODE1OWU5OTE5MmRjZjViZjAyZjQ2Li5lNDMxNzA2
YjBlOGZmMDkyZmY4NmYyNjNlZGU1NjNlMmRiMTQ2YTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogCisjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgiCiAjaW5jbHVk
ZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC03MCwzNCArNzEsNDEgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUKICAgICBp
ZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChtX2ltYWdlQnVmZmVyTWFwLmNvbnRhaW5zKGltYWdlQnVmZmVySWRlbnRpZmllcikpIHsKKyAg
ICBpZiAobV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmNvbnRhaW5zKGltYWdlQnVmZmVy
SWRlbnRpZmllcikpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyOwotCi0gICAgc3dpdGNoIChyZW5kZXJpbmdNb2RlKSB7Ci0gICAgY2FzZSBSZW5kZXJpbmdN
b2RlOjpSZW1vdGVBY2NlbGVyYXRlZDoKLSAgICBjYXNlIFJlbmRlcmluZ01vZGU6OlJlbW90ZVVu
YWNjZWxlcmF0ZWQ6Ci0gICAgICAgIC8vIEZJWE1FOiBjcmVhdGUgdGhlIHJlbW90ZSBJbWFnZUJ1
ZmZlciBwcm94eS4KLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRl
ZCkgeworICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsICp0aGlzLCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKSB7CisgICAgICAgICAgICBtX2lt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuYWRkKGltYWdlQnVmZmVySWRlbnRpZmllciwgV1RG
TW92ZShpbWFnZUJ1ZmZlcikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAg
fQogCi0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChyZW5k
ZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkIHx8IHJlbmRlcmlu
Z01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2NlbGVyYXRlZCkgeworICAgICAgICBp
ZiAoYXV0byBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
OjpjcmVhdGUobG9naWNhbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgKnRoaXMs
IGltYWdlQnVmZmVySWRlbnRpZmllcikpIHsKKyAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlQnVm
ZmVyKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBtX2lt
YWdlQnVmZmVyTWFwLmFkZChpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2VCdWZm
ZXIpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OnJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklkZW50aWZpZXIg
aW1hZ2VCdWZmZXJJZGVudGlmaWVyKQogewogICAgIC8vIENyZWF0ZUltYWdlQnVmZmVyIG1lc3Nh
Z2Ugc2hvdWxkIGhhdmUgYmVlbiByZWNlaXZlZCBiZWZvcmUgdGhpcyBvbmUuCi0gICAgYm9vbCBm
b3VuZCA9IG1faW1hZ2VCdWZmZXJNYXAucmVtb3ZlKGltYWdlQnVmZmVySWRlbnRpZmllcik7Cisg
ICAgYm9vbCBmb3VuZCA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5yZW1vdmUoaW1h
Z2VCdWZmZXJJZGVudGlmaWVyKTsKICAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CiB9
CiAKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJh
d2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNw
bGF5TGlzdCwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBJbWFn
ZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRv
IGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1
ZmZlcklkZW50aWZpZXIpKQorICAgICAgICBpbWFnZUJ1ZmZlci0+Zmx1c2hEcmF3aW5nQ29udGV4
dChkaXNwbGF5TGlzdCwgZmx1c2hJZGVudGlmaWVyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmgKaW5kZXggOGZjZTU3NmZkMjk5ZTI3YWU4NTY1YzZkZmUzMDAwNjlmZDc0Y2E3Yi4u
ZTNkMzU2M2VkYjM1Yzg3MGI1OGExNjVjNTBmMDZmNTkyMGQxNDFjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuaApAQCAtMjgsMTMgKzI4LDE1IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyRmx1
c2hJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgogI2luY2x1ZGUg
IlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNw
YWNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GbG9hdFNpemUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDQsMTIgKzQ2LDE0IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIAogY2xhc3MgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ci0gICAgOiBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRl
cgorICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSgpOwogCisgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyOyB9CisKIHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cik7CiAKQEAgLTYwLDExICs2NCwxMyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBvdmVycmlkZTsKIAorICAgIC8vIFJlY2VpdmVkIG1lc3NhZ2VzLgogICAgIHZv
aWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZUlt
YWdlQnVmZmVyKEltYWdlQnVmZmVySWRlbnRpZmllcik7CisgICAgdm9pZCBmbHVzaEltYWdlQnVm
ZmVyRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
JiwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIEltYWdlQnVmZmVySWRlbnRpZmllcik7CiAK
LSAgICB1c2luZyBJbWFnZUJ1ZmZlck1hcCA9IEhhc2hNYXA8SW1hZ2VCdWZmZXJJZGVudGlmaWVy
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+PjsKLSAgICBJbWFnZUJ1ZmZl
ck1hcCBtX2ltYWdlQnVmZmVyTWFwOworICAgIHVzaW5nIEltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJNYXAgPSBIYXNoTWFwPEltYWdlQnVmZmVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eT4+OworICAgIEltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJNYXAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwOwogICAgIFdlYWtQ
dHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OwogICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggZTRkY2Y3ZjMyYjQ1MjZkZGZiZWJiNzg3ZjgwMmMzNmZkOTU3YmM0OS4uNjVhOGQ5
MGE2NmY4NWU4Zjg4M2MxNWU0YjBlM2JmODBjNjk0Y2MxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSw3IEBACiBtZXNzYWdl
cyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgdm9p
ZCBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlm
aWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKICAgICB2b2lkIFJlbGVhc2VJbWFnZUJ1ZmZlcihX
ZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAg
dm9pZCBGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0IGRpc3BsYXlMaXN0LCBXZWJLaXQ6OkltYWdlQnVmZmVyRmx1c2hJZGVudGlm
aWVyIGZsdXNoSWRlbnRpZmllciwgV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VC
dWZmZXJJZGVudGlmaWVyKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNDdiNTg3ODI3ZjMxODgx
ZTYzMDRlOTRmZDc5YWU5NjM3MDEyNTBmMC4uMGU3NzQ3YzIyZThmNTk4OTI1NGM5NGZlYjE4N2I5
MGIzYjM0Y2NhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBA
IC0yMjUsNiArMjI1LDggQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFy
ZWQoKToKICAgICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJywKICAgICAgICAg
J1dlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJZGVudGlmaWVyJywKICAgICAg
ICAgJ1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6Oklt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZScsCisgICAgICAgICdXZWJLaXQ6OkltYWdlQnVmZmVyRmx1
c2hJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJywKICAgICAgICAgJ1dlYktp
dDo6TGliV2ViUlRDUmVzb2x2ZXJJZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDMwZDU1YjQ1
ZDgzM2RlYzIzZjdhNjAwZjI4M2ZjOTM1OThhZDliMDcuLmVlZGI3ZTZkZDlhOWU5ZmEyMDdjZThh
OGQzYjYyMmNkMmYwYzkzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjQsNiArMjQsNyBAQAogR1BVUHJv
Y2Vzcy9HUFVQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwCiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKQEAgLTUzNSw2ICs1MzYsNyBAQCBXZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAK
IAogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCitXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcAogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKIFdlYlByb2Nl
c3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTViNjI0YjZhM2RlODM1ZjkzNzI0
N2M2NjZmMjVlMzg4MGMyNzJjNi4uMTVjNTI0ZjM2MjE3N2RkYzcxMjcyNzYyNTU3ODg3MDRjZWIz
OWRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0zODE4LDYgKzM4MTgsOSBAQAogCQk1NTA2NDBBMzI0MDcxQTYxMDBBQUUwNDUgLyog
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTA2NDBB
NDI0MDcxQzIxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwNjQwQTUyNDA3MUND
MDAwQUFFMDQ1IC8qIEltYWdlQnVmZmVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFn
ZUJ1ZmZlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVBRDA5
NDIyNDA4QTAyRTAwREU0RDJGIC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NUFEMDk0NDI0MDhBQkIzMDBERTREMkYg
LyogSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZm
ZXJGbHVzaElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcwQUI4
RjIyMEFFM0JENzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2VjS2V5UHJveHlTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzBBQjkw
MDIwQjI1MTc0MDBCOEJFODcgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eUNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eUNvY29h
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzBBQjkwMzIwQjI1NDFDMDBCOEJF
ODcgLyogU2VjS2V5UHJveHlTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFNlY0tleVByb3h5U3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00MDgxLDEyICs0MDg0LDE4IEBACiAJCTcxQTY3NkE0MjJDNjIzMTgwMDdENjI5NSAvKiBX
S1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmg7IHBhdGggPSBpb3MvV0tU
b3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcxQTY3NkE1MjJDNjIzMTgwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29n
bml6ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RvdWNo
QWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW07IHBhdGggPSBpb3MvV0tUb3VjaEFjdGlvbkdlc3R1
cmVSZWNvZ25pemVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUZCODEwQTIy
NjA2MjdBMDAzMjM2NzcgLyogV2Vic2l0ZVNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xp
Y3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZVNpbXVsYXRlZE1v
dXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzIyNzgwMEIyNDA4QkQ3RDAwN0QzNzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MjI3ODAwQzI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIy
NzgwMEQyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjI3ODAxMTI0MDk5MDZFMDA3RDM3NkIgLyogUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcyMjc4MDEyMjQwOTkwNkUwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
N0E3RjM0MjQwNzg1N0QwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzI3QTdGMzUyNDA3ODU3RjAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI3QTdGMzcyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI3QTdGMzkyNDA3ODhGMTAwNEQyOTMxIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMx
IC8qIFJlbW90ZUltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5
RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDb2xvclBpY2tlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhF
ODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyQzQxODdDQ0Y5RjAwQzM5QzlFIC8qIFdLV2Vi
c2l0ZURhdGFTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnNp
dGVEYXRhU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc3NDUsMTAgKzc3
NTQsMTUgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTcyN0E3RjMzMjQwNzg1MjcwMDREMjkzMSAv
KiBjb2NvYSAqLywKIAkJCQk3MjdBN0YzOTI0MDc4OEYxMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlLmggKi8sCisJCQkJNTVBRDA5NDQyNDA4QUJCMzAwREU0RDJGIC8qIEltYWdl
QnVmZmVyRmx1c2hJZGVudGlmaWVyLmggKi8sCiAJCQkJNTUwNjQwQTUyNDA3MUNDMDAwQUFFMDQ1
IC8qIEltYWdlQnVmZmVySWRlbnRpZmllci5oICovLAogCQkJCTcyN0E3RjM3MjQwNzg4RjAwMDRE
MjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwICovLAogCQkJCTcy
N0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1JbWFnZUJ1
ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywKKwkJCQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3NkIg
LyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oICovLAorCQkJCTcyN0E3RjQ5MjQwOEFFRTYw
MDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZlci5oICovLAorCQkJCTcyMjc4MDBDMjQwOTdBMDIw
MDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLywKKwkJCQk3
MjI3ODAwRDI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
ci5oICovLAogCQkJCTU1MDY0MDlEMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcCAqLywKIAkJCQk1NTA2NDA5RTI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oICovLAogCQkJCTU1MDY0MEEwMjQwNzE5RTEwMEFBRTA0NSAvKiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluICovLApAQCAtNzc2MCw2ICs3Nzc0LDEwIEBA
CiAJCTU1MDY0MEExMjQwNzFBMjkwMEFBRTA0NSAvKiBncmFwaGljcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTVBRDA5NDMyNDA4QTBFNjAwREU0RDJG
IC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAorCQkJCTcyMjc4MDExMjQw
OTkwNkUwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3Bw
ICovLAorCQkJCTcyMjc4MDEyMjQwOTkwNkUwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyUHJveHkuaCAqLywKKwkJCQk1NUFEMDk0MjI0MDhBMDJFMDBERTREMkYgLyog
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAogCQkJCTU1MDY0MEEyMjQwNzFBNjEwMEFBRTA0
NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwICovLAogCQkJCTU1MDY0MEEzMjQw
NzFBNjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAqLywKIAkJCQk1
NTA2NDBBNDI0MDcxQzIxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1l
c3NhZ2VzLmluICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM0MmNmMjQ1ZTM0NWUxZGZlYzYyZGMxZDdhM2VjYWVmY2Q5YWI1ZDAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
Rmx1c2hJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElk
ZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gSW1hZ2VCdWZmZXJGbHVz
aElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyID0g
T2JqZWN0SWRlbnRpZmllcjxJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllclR5cGU+OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCA5NTIy
YzFkMDcxZWE2ZjYyNzBiMTY2NDQxOWRhZGFiNzkzYzc5NDgzLi5kZTI4ZTI3ZjEzMmU1ZWI4ZTZm
MGRmYzU4ZTFmYTUxNWE5ZTMxMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kKTsKIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSkKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIGNvbnN0IEhvc3RXaW5kb3cqKQogewogICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxj
dWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpOwogICAgIGlmIChiYWNrZW5k
U2l6ZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQuaAppbmRleCA3NDM0NmMyNDI3YTE5YTQyZDgyNzI3ZTc0YzBiZGQ1ODI2MDIxZjM3Li4w
NWM3MzdmY2ZiOGJlOGE3MGZhYTYwZjU0NmJhZjlhOTVkNWUxZGJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xh
c3MgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kIDogcHVibGljIFdlYkNvcmU6OlBs
YXRmb3JtSW1hZ2VCdWZmZXJCYWMKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gY3JlYXRlKGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UsIGNvbnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cqKTsKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIGludGVybmFsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpD
b2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOwogCiAgICAgSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNp
emUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBoeXNpY2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmLCBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFn
ZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9y
bVJlbW90ZUltYWdlQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmEyNzI4ZmU3MTQxZWQzM2YyMWEwYzRl
YzRjZTQ0NDY0M2Q1YWJiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC0wLDAgKzEs
NDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJQbGF0Zm9y
bUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oIgorI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVm
ZmVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBVbmFjY2VsZXJhdGVkUmVtb3Rl
SW1hZ2VCdWZmZXIgPSBSZW1vdGVJbWFnZUJ1ZmZlcjxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJT
aGFyZWFibGVCYWNrZW5kPjsKK3VzaW5nIEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXIgPSBS
ZW1vdGVJbWFnZUJ1ZmZlcjxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZD47
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwMTI0YzQ4OThmOWNmZjE4OGI2MWY3OGJm
ZTUyYjYyYWFlZWQyODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTAsMCArMSw4NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CisKK3RlbXBsYXRlPHR5
cGVuYW1lIEJhY2tlbmRUeXBlPgorY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXIgOiBwdWJsaWMgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFJlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIgeworICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdElt
YWdlQnVmZmVyID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBl
PjsKKyAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOworICAg
IHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2RyYXdpbmdDb250ZXh0OworCitw
dWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbWFnZUJ1ZmZlcj4gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCkKKyAgICB7CisgICAgICAgIGlmIChCYWNrZW5kVHlwZTo6Y2FsY3VsYXRlQmFja2VuZFNp
emUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUltYWdlQnVm
ZmVyPihuZXcgUmVtb3RlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSk7CisgICAgfQorCitw
cm90ZWN0ZWQ6CisgICAgUmVtb3RlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBzaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICA6IEJhc2VEaXNwbGF5
TGlzdEltYWdlQnVmZmVyKHNpemUpCisgICAgICAgICwgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
IHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgeworICAgIH0KKworICAgIHZvaWQgY3JlYXRl
QmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQoIW1fYmFja2VuZCk7CisgICAgICAgIG1f
YmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGZsdXNo
RHJhd2luZ0NvbnRleHQoKTsKKyAgICAgICAgbV9iYWNrZW5kLT5mbHVzaENvbnRleHQoKTsKKyAg
ICB9CisKKyAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7
CisgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSkgeworICAgICAgICAgICAgUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5
TGlzdCk7CisgICAgICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOworICAgICAgICB9CisgICAg
fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BS
T0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41NmUyODQ1MmQyZjk2MmQ2ZmRjYjIxMzQxOTQ1ZjVmZmU0OGJkYmFhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXIuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCitSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICA6
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChtYWtlV2Vha1B0cihyZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKSkKK3sKKyAgICAvLyBDcmVhdGUgdGhlIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuCisgICAg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OkNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOworfQorCitS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjp+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlcigpCit7CisgICAgLy8gUmVsZWFzZSB0aGUgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4K
KyAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpSZWxlYXNlSW1hZ2VCdWZmZXIobV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIp
LCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkp
OworfQorCit2b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNoRHJhd2lu
Z0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5
TGlzdCkKK3sKKyAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IEltYWdlQnVmZmVyRmx1c2hJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpOworICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNz
YWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpGbHVzaEltYWdlQnVmZmVyRHJhd2lu
Z0NvbnRleHQoZGlzcGxheUxpc3QsIG1fc2VudEZsdXNoSWRlbnRpZmllciwgbV9pbWFnZUJ1ZmZl
cklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKCkpOworfQorCit2b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6
OmNvbW1pdEZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50
aWZpZXIpCit7CisgICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllciA9IGZsdXNoSWRlbnRpZmll
cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BS
T0NFU1MpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2E1ZjdkZTc4OWYxMTdmMTkyNmIwYjAyYzNlZmVmOTY3YzY0ZjU5MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQ29sb3JTcGFjZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9k
ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDsKKworY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlciB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcigpOworCisgICAgSW1h
Z2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyOyB9CisKKyAgICAvLyBNZXNzYWdlcyByZWNlaXZlZC4g
U2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4uCisgICAgdmlydHVhbCB2b2lk
IGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
V2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKSA9IDA7CisKKyAg
ICB2b2lkIGNvbW1pdEZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllcik7CisK
K3Byb3RlY3RlZDoKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYpOwor
CisgICAgLy8gTWVzc2FnZXMgc2VudC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5t
ZXNzYWdlcy5pbi4KKyAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7CisKK3ByaXZhdGU6CisgICAgV2Vha1B0cjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CisgICAgSW1hZ2VC
dWZmZXJJZGVudGlmaWVyIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyIHsgSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpIH07CisKKyAgICBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBt
X3NlbnRGbHVzaElkZW50aWZpZXI7CisgICAgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgbV9y
ZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHAKaW5kZXggMjI3NTcyYzM3NWVkYmJhMmEwZWU2OTQzNmMzOGY4NGI5MjBkMDkwYy4uMWEzN2Vm
OGJkMDg4ZmQwYTFlMGM0ZmZiOGRmZTMwMTVlMzM2YTMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
CiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVJl
bW90ZUltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIK
IApAQCAtNzEsMTYgKzcyLDIwIEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKICAgICByZXR1cm4gbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQsIENvbG9yU3BhY2Up
CitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkK
IHsKLSAgICBzd2l0Y2ggKHJlbmRlcmluZ01vZGUpIHsKLSAgICBjYXNlIFJlbmRlcmluZ01vZGU6
OlJlbW90ZUFjY2VsZXJhdGVkOgotICAgIGNhc2UgUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2Nl
bGVyYXRlZDoKLSAgICAgICAgLy8gRklYTUU6IENyZWF0ZSB0aGUgcmVtb3RlIEltYWdlQnVmZmVy
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6
UmVtb3RlQWNjZWxlcmF0ZWQpIHsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBBY2Nl
bGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcykpIHsKKyAgICAgICAgICAgIG1faW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZmZXItPmltYWdlQnVmZmVySWRlbnRp
ZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2VCdWZm
ZXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJp
bmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRlZCB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01v
ZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQpIHsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIg
PSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdN
b2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsICp0aGlzKSkgeworICAgICAgICAgICAg
bV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlci0+aW1hZ2VCdWZm
ZXJJZGVudGlmaWVyKCksIGltYWdlQnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBp
bWFnZUJ1ZmZlcjsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAt
ODksMTAgKzk0LDIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvCiB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OnJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1h
Z2VCdWZmZXJJZGVudGlmaWVyKQogewogICAgIC8vIENyZWF0ZUltYWdlQnVmZmVyIG1lc3NhZ2Ug
c2hvdWxkIGhhdmUgYmVlbiByZWNlaXZlZCBiZWZvcmUgdGhpcyBvbmUuCi0gICAgYm9vbCBmb3Vu
ZCA9IG1faW1hZ2VCdWZmZXJNYXAucmVtb3ZlKGltYWdlQnVmZmVySWRlbnRpZmllcik7CisgICAg
Ym9vbCBmb3VuZCA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5yZW1vdmUoaW1hZ2VC
dWZmZXJJZGVudGlmaWVyKTsKICAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7Cit9CiAK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OlJlbGVhc2VJ
bWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyKTsKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tl
bmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdl
QnVmZmVySWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkKKyAgICAg
ICAgaW1hZ2VCdWZmZXItPmNyZWF0ZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSk7Cit9CisKK3ZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoSW1h
Z2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBJbWFnZUJ1ZmZlcklkZW50
aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIGltYWdlQnVmZmVy
ID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpKQorICAgICAgICBpbWFnZUJ1ZmZlci0+Y29tbWl0Rmx1c2hDb250ZXh0KGZsdXNoSWRlbnRp
Zmllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaAppbmRleCBhOGQyOWU4MjZkNWFmZGYyNWVhZjYyODVhNWE1N2EzNjUyNzllYWQ2Li5jNjcy
MDNmYmQyYWFiZjFkZDZhN2FmZDZhM2M5ODViZTI5OGNiMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaApAQCAtMjcsMzggKzI3LDUyIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKKyNpbmNsdWRlICJJbWFn
ZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVySWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5k
ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgiCiAjaW5j
bHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nv
bG9yU3BhY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GbG9hdFNpemUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZAotICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5k
ZXIKLSAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIDogcHVibGljIElQ
Qzo6TWVzc2FnZVNlbmRlcgorICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAg
ICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IGNy
ZWF0ZSgpOwogCiAgICAgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKTsKIAorICAgIFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsgfQorCiAgICAgLy8gSVBDOjpNZXNz
YWdlU2VuZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBjb25zdCBvdmVycmlkZTsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92
ZXJyaWRlOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UpOwogICAg
IHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKEltYWdlQnVmZmVySWRlbnRpZmllcik7CiAKIHByaXZh
dGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpOwotICAgICAgICAKLSAgICB1c2luZyBJ
bWFnZUJ1ZmZlck1hcCA9IEhhc2hNYXA8SW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcio+OwotICAgIEltYWdlQnVmZmVyTWFwIG1faW1hZ2VCdWZmZXJNYXA7CisKKyAg
ICAvLyBSZWNlaXZlZCBtZXNzYWdlcy4KKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xv
clNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIEltYWdlQnVmZmVySWRlbnRpZmllcik7
CisgICAgdm9pZCBjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNo
SWRlbnRpZmllciwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKKworICAgIHVzaW5nIEltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJNYXAgPSBIYXNoTWFwPEltYWdlQnVmZmVySWRlbnRpZmllciwgUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcio+OworICAgIEltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJNYXAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwOwogICAgIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgeyBSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IDUyNmUxZjljOWRjZjAyZjc3Y2NjMjgx
YjM1NWExNWI3NDI3ODI4YTAuLjEyYTdiZjhkYTRjODI1NzBiY2EzNmExMzVmZDcxYWYyNTg4YjY0
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KQEAg
LTIzLDcgKzIzLDggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7Ci0KKyAgICB2b2lkIENyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZChXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6
OkludFNpemUgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29s
b3JTcGFjZSBjb2xvclNwYWNlLCBXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5k
bGUsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikK
KyAgICB2b2lkIENvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KFdlYktpdDo6SW1hZ2VCdWZm
ZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJLaXQ6OkltYWdlQnVmZmVySWRl
bnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BV
X1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVh
YmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNTc1YjRiYzQ5ZjJjODUyODA2NzBhNWRkNDE5
NWY0NDRjZTBkMTE5Ny4uZjYzZDU3MzNlMzAxZTU5NDA0NzkyYzA0YjI0YjYwNmQzNzdmMjVmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1
cmZhY2VCYWNrZW5kLmNwcApAQCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZCk7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlP
U3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3Jl
YXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1
cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0
ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KikKIHsKICAgICBJbnRTaXplIGJhY2tlbmRT
aXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsKICAgICBp
ZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1h
Z2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggMTA4MWU5ODViNmMwNjAx
MWIzMmQxNzhhM2E3YzBiNjkyZjQ3MmVmNi4uY2YyODk3OWM2ZjE0ZDc2MmU2OTYwNTZhMDc1YTli
ZTIyODVhNDhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZUJ1ZmZl
cklPU3VyZmFjCiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUlPU3VyZmFjZUJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlLCBjb25zdCBXZWJDb3JlOjpIb3N0V2luZG93Kik7CiAgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+
IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBpbnRlcm5hbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKIAogICAgIHVzaW5nIFdl
YkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392168</attachid>
            <date>2020-03-02 11:52:10 -0800</date>
            <delta_ts>2020-03-02 13:12:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207221-20200302115209.patch</filename>
            <type>text/plain</type>
            <size>71147</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWJiZDJkYWI5M2U2Y2My
YTExM2FmNDcxZjI3YjQ1MDQ4ZTJjZTg4NC4uMGQ1ZjlkZjRkMzQ5N2QxNWNkMTJmMDcyM2QxMDgy
NzFkMzdlMTM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTAzLTAyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IHRoZSByZW1vdGUgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNzIyMQorCisgICAgICAgIFJldmlld2VkIGJ5IEpvbiBMZWUu
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgQ29uY3JldGVJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlIHJldHVybnMgdGhlIGRlcml2ZWQgY2xhc3Mgd2hpY2ggaXQgY3JlYXRl
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5oOgorICAgICAgICBUaGlzIHVzaW5nIHN0YXRlbWVudCBnaXZlcyBjb21waWxhdGlvbiBlcnJv
ciB3aGVuIHJlZmVyZW5jaW5nIERpc3BsYXlMaXN0CisgICAgICAgIGZyb20gV2ViS2l0LgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2lu
Z0NvbnRleHQuaDoKKyAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXIgaW5oZXJpdHMgRGlzcGxheUxp
c3Q6OkltYWdlQnVmZmVyIHNvIHRoZXNlIG1ldGhvZHMgCisgICAgICAgIG5lZWQgdG8gYmUgZXhw
b3J0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdl
QnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgZm9yIFJlbW90
ZUltYWdlQnVmZmVyIHRvIGJlIGNyZWF0ZWQgd2l0aCBubyBiYWNrZW5kLiBJdAorICAgICAgICB3
aWxsIGJlIGNyZWF0ZWQgbGF0ZXIgd2hlbiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IHNoYXJlcyBp
dHMgYmFja2VuZCB3aXRoCisgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyLgorCiAyMDIwLTAzLTAy
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0JGQ11bTWFyZ2lu
Q29sbGFwc2luZ10gU29tZXRpbWVzIHByZWNvbXB1dGVkIG1hcmdpbiB2YWx1ZXMgYXJlIGp1c3Qg
cGxhaW4gd3JvbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ5NGVjNDAzMGI1YjJkMjA2MjQ4ZGVkODI2ZTI0MzEz
MjNkMzM1MTIuLjhiZGMxMWY1ZTc3MGIxZGMwMzRkNmQzYzliN2YyYWUxYTY0YmE0YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsOTAgQEAKKzIwMjAtMDMtMDIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fi
b3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIHJlbW90ZSBJbWFn
ZUJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3MjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9uIExlZS4KKworICAgICAgICBSZW1vdGVJ
bWFnZUJ1ZmZlciBhbmQgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSByZXByZXNlbnQgYSBzaW5nbGUg
cmVtb3RlCisgICAgICAgIEltYWdlQnVmZmVyLiBUaGUgYmFjayBlbmQgc2hvdWxkIGJlIGNyZWF0
ZWQgYnkgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBpbgorICAgICAgICBHUFVQcm9jZXNzIGFuZCBz
aGFyZWQgd2l0aCB0aGUgUmVtb3RlSW1hZ2VCdWZmZXIgaW4gdGhlIFdlYlByb2Nlc3MuCisgICAg
ICAgIEZsdXNoaW5nIHRoZSBEcmF3aW5nQ29udGV4dCB3aWxsIGJlIGRvbmUgaW4gR1BVUHJvY2Vz
cy4gQnV0IGNyZWF0aW5nIHRoZQorICAgICAgICBuYXRpdmUgaW1hZ2Ugb3V0IG9mIHRoZSBiYWNr
IGVuZCB3aWxsIGJlIGluIEdQVVByb2Nlc3MuCisKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCBhbmQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IGFyZSBjZW50cmFsIHBvaW50cwor
ICAgICAgICBmb3IgcmVjZWl2aW5nIGFuZCBzZW5kaW5nIGFsbCB0aGUgbWVzc2FnZXMgb2YgdGhl
IFJlbW90ZUltYWdlQnVmZmVyIGFuZAorICAgICAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVy
UHJveHkuaDogQWRkZWQuCisgICAgICAgIERlZmluZXMgdGhlIHBsYXRmb3JtIHR5cGVzIG9mIFJl
bW90ZUltYWdlQnVmZmVyUHJveHkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OlJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Y3JlYXRlQmFja2VuZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Y29tbWl0Rmx1c2hDb250
ZXh0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgTWFuYWdlcyBzZW5kaW5nIGFuZCBy
ZWNlaXZpbmcgdGhlIG1lc3NhZ2VzIG9mIFJlbW90ZUltYWdlQnVmZmVyUHJveHkKKworICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eSk6CisgICAgICAgIEl0IGlzIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBhIHNoYXJlZCBiYWNr
IGVuZCBhbmQgcmVwbGF5aW5nIGJhY2sgZHJhd2luZworICAgICAgICBjb21tYW5kcy4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJ
bWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICBIYW5kbGUgb3IgZGlz
cGF0Y2ggbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaDog
QWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgIEFs
dGhvdWdoIGhvc3RXaW5kb3cgaXNuJ3QgdXNlZCwgdGhpcyBpcyB3aGF0IENvbmNyZXRlSW1hZ2VC
dWZmZXI6OmNyZWF0ZQorICAgICAgICBleHBlY3RzIGZyb20gdGhlIGNyZWF0b3Igb2YgdGhlIGJh
Y2tlbmQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90
ZUltYWdlQnVmZmVyLmg6IEFkZGVkLgorICAgICAgICBEZWZpbmVzIHRoZSBwbGF0Zm9ybSB0eXBl
cyBvZiBSZW1vdGVJbWFnZUJ1ZmZlci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6
OlJlbW90ZUltYWdlQnVmZmVyKToKKyAgICAgICAgSXQgaXMgcmVzcG9uc2libGUgZm9yIGNyZWF0
aW5nIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgYW5kIHBlcmZvcm1pbmcgdGhlCisgICAgICAgIGRy
YXdpbmcgY29tbWFuZHMgaW4gdGhlIEdQVVByb2Nlc3MuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OlJlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjp+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNo
RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyOjpjb21taXRGbHVzaENvbnRleHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmltYWdlQnVmZmVy
SWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIE1hbmFnZXMgc2VuZGluZyBhbmQgcmVjZWl2aW5n
IHRoZSBtZXNzYWdlcyBvZiBSZW1vdGVJbWFnZUJ1ZmZlci4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNvbW1p
dEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3Nh
Z2VzLmluOgorICAgICAgICBIYW5kbGUgb3IgZGlzcGF0Y2ggbWVzc2FnZXMgcmVjZWl2ZWQgZnJv
bSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6
OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgIEFsdGhvdWdoIGhvc3RX
aW5kb3cgaXNuJ3QgdXNlZCwgdGhpcyBpcyB3aGF0IENvbmNyZXRlSW1hZ2VCdWZmZXI6OmNyZWF0
ZQorICAgICAgICBleHBlY3RzIGZyb20gdGhlIGNyZWF0b3Igb2YgdGhlIGJhY2tlbmQuCisKIDIw
MjAtMDMtMDIgIEphY29iIFVwaG9mZiAgPGphY29iX3VwaG9mZkBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NzY4Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1OGJkZTQ2YzQ5OWY3NGU1
MWU0MjU0MTBjMGFjMzE5YjBmNzNjN2NkLi5kZjAyM2ViZDRlZGRiZjY5MzQwNTcyMzY5N2FkZTli
ZjUzOTY4NTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNzQ3LDYgKzE3NDcsOSBAQAogCQk1NTZDN0M0QjIyMTIzOTk3MDA5
QjA2Q0EgLyogUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTZDN0M0NzIyMTIzOTQyMDA5QjA2Q0EgLyogUmVu
ZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTU3NkE1NjUxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzZBNTYz
MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTVBMzM2RjkxRDgyMUUzQzAwMjJDNEM3IC8qIElt
YWdlQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NUEzMzZGODFEODIxRTNDMDAyMkM0QzcgLyogSW1hZ2VCYWNraW5nU3RvcmUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NUFEMDkz
RTI0MDg5NjM1MDBERTREMkYgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJFQTA5RjcyM0ZDQ0IzRDAwODUw
NEE1IC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NUFEMDk0MDI0MDg5NjQwMDBERTREMkYgLyogRGlz
cGxheUxpc3REcmF3aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzJFQTA5RjkyM0ZDQ0M2QTAwODUwNEE1IC8qIERpc3BsYXlMaXN0RHJh
d2luZ0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk1NUFEMDk0MTI0MDg5NjRBMDBERTREMkYgLyogQ29uY3JldGVJbWFnZUJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQTcy
M0UxNzMyODAwOEQ3NDFDIC8qIENvbmNyZXRlSW1hZ2VCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NUFGMTRFNjFFQUFDNTlCMDAyNkVF
QUEgLyogVVRJUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU1QUYxNEU0MUVBQUM1OUIwMDI2RUVBQSAvKiBVVElSZWdpc3RyeS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1RENDNTI4MjI0
MDdCMjAwMEMyNkUzMiAvKiBTVkdQcmltaXRpdmVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NURDQzUyNTIyNDA3NDlFMDBDMjZFMzIgLyogU1ZH
UHJpbWl0aXZlTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTU1RENDNTI5MjI0MDdCMkEwMEMyNkUzMiAvKiBTVkdMaXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NURDQzUyMzIyNDA3M0ZFMDBD
MjZFMzIgLyogU1ZHTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0yOTM3Miw2ICsyOTM3NSw3IEBACiAJCQkJRjQ0MkMzNTkyM0UzQUREMjAw
NDk5NTgyIC8qIENvbXBvc2l0aW9uSGlnaGxpZ2h0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREQ1
QTcyNzFFQkVFNDdEMDA5QkE1OTcgLyogQ29tcG9zaXRpb25VbmRlcmxpbmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTcxMTZFMkNDMUZFRDc1REMwMEMwNkZERSAvKiBDb21wdXRlZEVmZmVjdFRpbWlu
Zy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTVBRDA5NDEyNDA4OTY0QTAwREU0RDJGIC8qIENvbmNy
ZXRlSW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDhGMTJCMDI2RjcwMEMx
QTM1OSAvKiBDb25lLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUM5N0FGMzA4RUE5MDg4MDBBQ0Qy
NzMgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREFGMzQzRDFFQTdFMEYxMDAzODJD
RDMgLyogQ29uc3RhbnRQcm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTcxNyw2ICsy
OTcyMSw4IEBACiAJCQkJMTEyRkIzNTIyMzlDMjNDNDAwODcwNTRBIC8qIERpc3BsYXlJbmxpbmVS
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkI0N0U2MzIyNzc0MjVBMDBDN0JDQjAgLyogRGlz
cGxheUxpbmVCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQzMUMzREQ1MUUwMDA3QTJD
QSAvKiBEaXNwbGF5TGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTVBRDA5NDAyNDA4OTY0MDAw
REU0RDJGIC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTU1QUQwOTNFMjQwODk2MzUwMERFNEQyRiAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkU1RkJENTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJ
dGVtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERp
c3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ5MUMzREQ1MUUw
MDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIu
aAppbmRleCA1MDlkZGM3MWFjMTRkZDJmNDA4NDRlOWU5NWMxNzEyNWMxNDZiYzhiLi5iYjcxZGMy
NTY3NWFiOWY3MTdkNTI3NDg3NWEwMzBkMzUyNTU4ZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC0zNCw3
ICszNCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgogY2xhc3MgQ29uY3JldGVJ
bWFnZUJ1ZmZlciA6IHB1YmxpYyBJbWFnZUJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJbWFnZUJ1ZmZlciwgdHlwZW5hbWUu
Li4gQXJndW1lbnRzPgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBBcmd1bWVudHMm
Ji4uLiBhcmd1bWVudHMpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclR5
cGU+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBBcmd1
bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBhdXRvIGJhY2tlbmQgPSBCYWNr
ZW5kVHlwZTo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgaG9zdFdp
bmRvdyk7CiAgICAgICAgIGlmICghYmFja2VuZCkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRl
SW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBcmd1bWVudHMmJi4u
LiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBhdXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6
Y3JlYXRlKHNpemUsIGNvbnRleHQpOwogICAgICAgICBpZiAoIWJhY2tlbmQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oCmluZGV4IDI4ZTI2NDRlMjZlZGI1MGQwMjVkZWFlNTQzYTExNDllM2YyYWU0OTIu
LjJjNjc3ZjZiNzM2ZTc1MmU0MWY4YjNmMjQzNDc2ZDQ1MDg0MjQzNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oCkBAIC0xNzcsNyArMTc3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9s
aXN0W2luZGV4XS5nZXQoKTsKICAgICB9CiAKLSAgICB2b2lkIGNsZWFyKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjbGVhcigpOwogICAgIHZvaWQgcmVtb3ZlSXRlbXNGcm9tSW5kZXgoc2l6
ZV90KTsKIAogICAgIHNpemVfdCBpdGVtQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2xpc3Quc2l6
ZSgpOyB9CkBAIC0yNTEsNiArMjUxLDMgQEAgT3B0aW9uYWw8RGlzcGxheUxpc3Q+IERpc3BsYXlM
aXN0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKTsKIAog
fSAvLyBXZWJDb3JlCi0KLXVzaW5nIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDsK
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKaW5kZXgg
ODZlYmJjNjMxNDFiYzhhYzE0ZTI3ODQwM2ZiMWQ2Y2JjZDIzODBlYy4uNWQzODVhYWJkMDRhOTRl
Y2Y4MTAxNTE2OTI0MDU3YzY5MzM3MzM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3REcmF3aW5nQ29udGV4dC5oCkBAIC0zMywxNSArMzMsMTUgQEAgbmFtZXNwYWNlIERpc3Bs
YXlMaXN0IHsKIAogY2xhc3MgRHJhd2luZ0NvbnRleHQgewogcHVibGljOgotICAgIERyYXdpbmdD
b250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUpOworICAgIFdFQkNPUkVfRVhQT1JU
IERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUpOwogCiAgICAgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxEcmF3aW5n
Q29udGV4dCY+KCp0aGlzKS5tX2NvbnRleHQ7IH0KICAgICBEaXNwbGF5TGlzdCYgZGlzcGxheUxp
c3QoKSB7IHJldHVybiBtX2Rpc3BsYXlMaXN0OyB9CiAgICAgY29uc3QgRGlzcGxheUxpc3QmIGRp
c3BsYXlMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdDsgfQogICAgIGNvbnN0IERp
c3BsYXlMaXN0KiByZXBsYXllZERpc3BsYXlMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXBsYXll
ZERpc3BsYXlMaXN0LmdldCgpOyB9CiAKLSAgICB2b2lkIHNldFRyYWNrc0Rpc3BsYXlMaXN0UmVw
bGF5KGJvb2wpOwotICAgIHZvaWQgcmVwbGF5RGlzcGxheUxpc3QoR3JhcGhpY3NDb250ZXh0Jik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUcmFja3NEaXNwbGF5TGlzdFJlcGxheShib29s
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxheURpc3BsYXlMaXN0KEdyYXBoaWNzQ29u
dGV4dCYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgR3JhcGhpY3NDb250ZXh0IG1fY29udGV4dDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCmluZGV4IDcxN2IyYjgwYWVh
MmYxMjVjZDc1MmUwNGE4YTg3OGJlOWY1NzlmNTIuLmEwMjg3Zjg1ZGRiNjBkN2JkYzAwMWZiYmFl
NDc2NGFhYWUzZDRmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXIuaApAQCAtNTIsNiArNTIsMTEgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUpCisgICAgICAgIDogbV9kcmF3aW5nQ29udGV4
dChzaXplKQorICAgIHsKKyAgICB9CisKICAgICB+SW1hZ2VCdWZmZXIoKQogICAgIHsKICAgICAg
ICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjlhZmYwODhlMzdjYTc2YTdmODY0YWU3ZTQyYmJiNzAwNGYxZjE1MjMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUGxh
dGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCYWNrZW5kLmgiCisjaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVy
UHJveHkgPSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJhY2tlbmQ+OwordXNpbmcgQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
ID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxl
QmFja2VuZD47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQ
VV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZTI0N2E3YWQ0Y2QyOTUzOGU0ZWFmNDBiZDgwMzY5Njg2MDA4Yjg2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAKQEAgLTAsMCArMSw1NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKwor
I2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHk6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eShSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKKyAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAsIG1faW1hZ2VCdWZm
ZXJJZGVudGlmaWVyKGltYWdlQnVmZmVySWRlbnRpZmllcikKK3sKK30KKwordm9pZCBSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmNyZWF0ZUJhY2tlbmQoY29uc3QgRmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgaGFuZGxlKQoreworICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnNlbmQoTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChs
b2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RG
TW92ZShoYW5kbGUpLCBtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOworfQorCit2b2lkIFJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Y29tbWl0Rmx1c2hDb250ZXh0KElt
YWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikKK3sKKyAgICBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIsIG1faW1h
Z2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkucmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4ZmNkYmJmMGFkYWNkZDNmOTVhMTFkMGNj
MDU0YzZiNDVlYjI0YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgKQEAgLTAs
MCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIklt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVySWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
RGlzcGxheUxpc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OworCitjbGFz
cyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkgeworcHVibGljOgorICAgIHZp
cnR1YWwgflJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSgpID0gZGVmYXVsdDsK
KworICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLiBTZWUgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5Lm1lc3NhZ2VzLmluLgorICAgIHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250
ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIEltYWdlQnVmZmVy
Rmx1c2hJZGVudGlmaWVyKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiwgSW1hZ2VC
dWZmZXJJZGVudGlmaWVyKTsKKworICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuIFNlZSBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluLgorICAgIHZvaWQgY3JlYXRlQmFja2VuZChj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNw
YWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOworICAgIHZvaWQgY29tbWl0Rmx1c2hDb250
ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OworICAg
IEltYWdlQnVmZmVySWRlbnRpZmllciBtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA2MWQ3N2U5Y2Y0NGNhYmQ0MmM5M2E5NDk2ZjRi
YTdkNWE4OGExOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVk
ZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Db25jcmV0ZUltYWdlQnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlz
dFJlcGxheWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBC
YWNrZW5kVHlwZT4KK2NsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29y
ZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkgeworICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVm
ZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CisgICAgdXNp
bmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6Om1fYmFja2VuZDsKKworcHVibGljOgorICAgIHN0
YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgSW1hZ2VCdWZmZXJJZGVudGlm
aWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBCYXNlQ29u
Y3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+
KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbnVsbHB0ciwgcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpOworICAgIH0KKworICAgIFJl
bW90ZUltYWdlQnVmZmVyUHJveHkoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tl
bmQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgICAg
ICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1vdmUoYmFja2VuZCkpCisgICAgICAgICwg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSwgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgY3JlYXRlQmFj
a2VuZChtX2JhY2tlbmQtPmxvZ2ljYWxTaXplKCksIG1fYmFja2VuZC0+YmFja2VuZFNpemUoKSwg
bV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSwgbV9iYWNrZW5kLT5jb2xvclNwYWNlKCksIG1f
YmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Zmx1c2hEcmF3aW5nQ29u
dGV4dDsKKworICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRp
ZmllciBmbHVzaElkZW50aWZpZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoZGlzcGxh
eUxpc3QuaXRlbUNvdW50KCkpIHsKKyAgICAgICAgICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZXBsYXllciByZXBsYXllcihCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpLCBkaXNw
bGF5TGlzdCk7CisgICAgICAgICAgICByZXBsYXllci5yZXBsYXkoKTsKKyAgICAgICAgfQorICAg
ICAgICBtX2JhY2tlbmQtPmZsdXNoQ29udGV4dCgpOworICAgICAgICBjb21taXRGbHVzaENvbnRl
eHQoZmx1c2hJZGVudGlmaWVyKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHAKaW5kZXggNWEyOWVlZmI3MmU4Yjg4OWRhNzgxNTllOTkxOTJkY2Y1YmYwMmY0Ni4u
ZTQzMTcwNmIwZThmZjA5MmZmODZmMjYzZWRlNTYzZTJkYjE0NmEyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAorI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgog
I2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtNzAsMzQgKzcxLDQxIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
CiAgICAgaWYgKCFncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAobV9pbWFnZUJ1ZmZlck1hcC5jb250YWlucyhpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
KSB7CisgICAgaWYgKG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5jb250YWlucyhpbWFn
ZUJ1ZmZlcklkZW50aWZpZXIpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBp
bWFnZUJ1ZmZlcjsKLQotICAgIHN3aXRjaCAocmVuZGVyaW5nTW9kZSkgewotICAgIGNhc2UgUmVu
ZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQ6Ci0gICAgY2FzZSBSZW5kZXJpbmdNb2RlOjpS
ZW1vdGVVbmFjY2VsZXJhdGVkOgotICAgICAgICAvLyBGSVhNRTogY3JlYXRlIHRoZSByZW1vdGUg
SW1hZ2VCdWZmZXIgcHJveHkuCi0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNj
ZWxlcmF0ZWQpIHsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJl
bW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCAqdGhpcywgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkgeworICAgICAgICAg
ICAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlcklkZW50aWZp
ZXIsIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogICAgIH0KIAotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybjsKKyAgICBp
ZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRlZCB8fCBy
ZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQpIHsKKyAg
ICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
ICp0aGlzLCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKSB7CisgICAgICAgICAgICBtX2ltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJNYXAuYWRkKGltYWdlQnVmZmVySWRlbnRpZmllciwgV1RGTW92ZShp
bWFnZUJ1ZmZlcikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQogCi0g
ICAgbV9pbWFnZUJ1ZmZlck1hcC5hZGQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGlt
YWdlQnVmZmVyKSk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKIHsKICAgICAvLyBDcmVhdGVJbWFnZUJ1ZmZl
ciBtZXNzYWdlIHNob3VsZCBoYXZlIGJlZW4gcmVjZWl2ZWQgYmVmb3JlIHRoaXMgb25lLgotICAg
IGJvb2wgZm91bmQgPSBtX2ltYWdlQnVmZmVyTWFwLnJlbW92ZShpbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpOworICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAucmVt
b3ZlKGltYWdlQnVmZmVySWRlbnRpZmllcik7CiAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91
bmQpOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1
ZmZlckRyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmll
ciwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK3sKKyAgICBp
ZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQo
aW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkKKyAgICAgICAgaW1hZ2VCdWZmZXItPmZsdXNoRHJhd2lu
Z0NvbnRleHQoZGlzcGxheUxpc3QsIGZsdXNoSWRlbnRpZmllcik7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oCmluZGV4IDhmY2U1NzZmZDI5OWUyN2FlODU2NWM2ZGZlMzAwMDY5ZmQ3
NGNhN2IuLjRmOGE4OWFmYzcyYzE4ZDg0ZjRkYTNhYTRjZjllZTg4OTI2N2JmZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTI4LDEzICsyOCwxNSBAQAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJJbWFnZUJ1
ZmZlckZsdXNoSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVySWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKKyNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCIKICNp
bmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Q29sb3JTcGFjZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9kZS5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQ0LDEyICs0NiwxNCBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAKIGNs
YXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eQotICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VTZW5kZXIKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5PiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKIAorICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcjsgfQorCiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIpOwogCkBAIC02MCwxMSArNjQsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKKyAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNl
aXZlZC4KICAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKICAgICB2
b2lkIHJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOworICAgIHZvaWQg
Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCYsIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLCBJbWFnZUJ1ZmZlcklk
ZW50aWZpZXIpOwogCi0gICAgdXNpbmcgSW1hZ2VCdWZmZXJNYXAgPSBIYXNoTWFwPEltYWdlQnVm
ZmVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPj47Ci0g
ICAgSW1hZ2VCdWZmZXJNYXAgbV9pbWFnZUJ1ZmZlck1hcDsKKyAgICB1c2luZyBJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyTWFwID0gSGFzaE1hcDxJbWFnZUJ1ZmZlcklkZW50aWZpZXIsIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk+PjsKKyAgICBJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1h
cDsKICAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzczsKICAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU0ZGNmN2YzMmI0NTI2ZGRmYmViYjc4N2Y4MDJjMzZmZDk1
N2JjNDkuLjY1YThkOTBhNjZmODVlOGY4ODNjMTVlNGIwZTNiZjgwYzY5NGNjMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUs
NyBAQAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IE5vdFJlZkNvdW50
ZWQgewogICAgIHZvaWQgQ3JlYXRlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2lj
YWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJLaXQ6OkltYWdl
QnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCiAgICAgdm9pZCBSZWxlYXNl
SW1hZ2VCdWZmZXIoV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVu
dGlmaWVyKQorICAgIHZvaWQgRmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0KFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwgV2ViS2l0OjpJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVu
dGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShHUFVf
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDQ3
YjU4NzgyN2YzMTg4MWU2MzA0ZTk0ZmQ3OWFlOTYzNzAxMjUwZjAuLjBlNzc0N2MyMmU4ZjU5ODky
NTRjOTRmZWIxODdiOTBiM2IzNGNjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtMjI1LDYgKzIyNSw4IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9m
b3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJ
RCcsCiAgICAgICAgICdXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXInLAorICAgICAg
ICAnV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUnLAorICAgICAgICAnV2ViS2l0OjpJ
bWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkltYWdlQnVmZmVy
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCcsCiAg
ICAgICAgICdXZWJLaXQ6OkxpYldlYlJUQ1Jlc29sdmVySWRlbnRpZmllcicsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApp
bmRleCAzMGQ1NWI0NWQ4MzNkZWMyM2Y3YTYwMGYyODNmYzkzNTk4YWQ5YjA3Li5lZWRiN2U2ZGQ5
YTllOWZhMjA3Y2U4YThkM2I2MjJjZDJmMGM5M2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI0LDYgKzI0
LDcgQEAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
clByb3h5LmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCkBAIC01MzUsNiAr
NTM2LDcgQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlci5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKIFdl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE1YjYyNGI2
YTNkZTgzNWY5MzcyNDdjNjY2ZjI1ZTM4ODBjMjcyYzYuLjE1YzUyNGYzNjIxNzdkZGM3MTI3Mjc2
MjU1Nzg4NzA0Y2ViMzlkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMzgxOCw2ICszODE4LDkgQEAKIAkJNTUwNjQwQTMyNDA3MUE2
MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTUwNjQwQTQyNDA3MUMyMTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1
MDY0MEE1MjQwNzFDQzAwMEFBRTA0NSAvKiBJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTU1QUQwOTQyMjQwOEEwMkUwMERFNEQyRiAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTVBRDA5NDMyNDA4QTBFNjAwREU0RDJGIC8qIFBsYXRmb3JtUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVJlbW90ZUltYWdl
QnVmZmVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVBRDA5NDQyNDA4
QUJCMzAwREU0RDJGIC8qIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3MEFCOEYyMjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVN0b3JlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNlY0tleVByb3h5U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTcwQUI5MDAyMEIyNTE3NDAwQjhCRTg3IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcwQUI5MDMy
MEIyNTQxQzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZWNLZXlQcm94eVN0b3JlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDA4MSwxMiArNDA4NCwxOCBAQAogCQk3MUE2NzZBNDIyQzYyMzE4
MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5oOyBw
YXRoID0gaW9zL1dLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MUE2NzZBNTIyQzYyMzE4MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlv
bkdlc3R1cmVSZWNvZ25pemVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tOyBwYXRoID0gaW9zL1dLVG91
Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzFGQjgxMEEyMjYwNjI3QTAwMzIzNjc3IC8qIFdlYnNpdGVTaW11bGF0ZWRNb3VzZUV2ZW50
c0Rpc3BhdGNoUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNp
dGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90ZUlt
YWdlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIyNzgwMEMyNDA5N0EwMjAwN0QzNzZCIC8q
IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcyMjc4MDBEMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIyNzgwMTEyNDA5OTA2RTAw
N0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjI3ODAxMjI0MDk5MDZFMDA3RDM3NkIgLyog
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjdBN0YzNDI0MDc4NTdEMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyN0E3RjM1MjQwNzg1N0YwMDREMjkzMSAvKiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyN0E3RjM3MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzI3QTdGMzgyNDA3ODhGMDAwNEQyOTMxIC8qIFBsYXRmb3JtSW1hZ2VC
dWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyN0E3RjM5MjQwNzg4RjEwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyN0E3RjQ5MjQw
OEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVJbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhFODZFRjE3
OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1QThEMkM0MTg3Q0NGOUYwMEMz
OUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03NzQ1LDEwICs3NzU0LDE1IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3MjdBN0YzMzI0MDc4
NTI3MDA0RDI5MzEgLyogY29jb2EgKi8sCiAJCQkJNzI3QTdGMzkyNDA3ODhGMTAwNEQyOTMxIC8q
IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICovLAorCQkJCTU1QUQwOTQ0MjQwOEFCQjMwMERF
NEQyRiAvKiBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oICovLAogCQkJCTU1MDY0MEE1MjQw
NzFDQzAwMEFBRTA0NSAvKiBJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCAqLywKIAkJCQk3MjdBN0Yz
NzI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNw
cCAqLywKIAkJCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmggKi8sCiAJCQkJNzI3QTdGMzgyNDA3ODhGMDAwNEQyOTMxIC8qIFBs
YXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8sCisJCQkJNzIyNzgwMEIyNDA4
QkQ3RDAwN0QzNzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKKwkJCQk3MjdB
N0Y0OTI0MDhBRUU2MDA0RDI5MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKKwkJCQk3MjI3
ODAwQzI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5j
cHAgKi8sCisJCQkJNzIyNzgwMEQyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXIuaCAqLywKIAkJCQk1NTA2NDA5RDI0MDcxNjA5MDBBQUUwNDUgLyogUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFFMDQ1
IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywKIAkJCQk1NTA2NDBBMDI0MDcxOUUxMDBB
QUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiAqLywKQEAgLTc3NjAs
NiArNzc3NCwxMCBAQAogCQk1NTA2NDBBMTI0MDcxQTI5MDBBQUUwNDUgLyogZ3JhcGhpY3MgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTU1QUQwOTQzMjQw
OEEwRTYwMERFNEQyRiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKKwkJ
CQk3MjI3ODAxMTI0MDk5MDZFMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5LmNwcCAqLywKKwkJCQk3MjI3ODAxMjI0MDk5MDZFMDA3RDM3NkIgLyogUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmggKi8sCisJCQkJNTVBRDA5NDIyNDA4QTAy
RTAwREU0RDJGIC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKIAkJCQk1NTA2NDBBMjI0
MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCAqLywKIAkJ
CQk1NTA2NDBBMzI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmggKi8sCiAJCQkJNTUwNjQwQTQyNDA3MUMyMTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5tZXNzYWdlcy5pbiAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZp
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNDJjZjI0NWUzNDVlMWRmZWM2MmRjMWQ3YTNlY2FlZmNkOWFiNWQw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUg
PHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIElt
YWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBJbWFnZUJ1ZmZlckZsdXNo
SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXJU
eXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BS
T0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5j
cHAKaW5kZXggOTUyMmMxZDA3MWVhNmY2MjcwYjE2NjQ0MTlkYWRhYjc5M2M3OTQ4My4uZGUyOGUy
N2YxMzJlNWViOGU2ZjBkZmM1OGUxZmE1MTVhOWUzMTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApAQCAtNDIsNyArNDIsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KikKIHsKICAgICBJbnRTaXplIGJhY2tl
bmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsKICAg
ICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmgKaW5kZXggNzQzNDZjMjQyN2ExOWE0MmQ4MjcyN2U3NGMwYmRk
NTgyNjAyMWYzNy4uMDVjNzM3ZmNmYjhiZThhNzBmYWE2MGY1NDZiYWY5YTk1ZDVlMWRiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCkBAIC0zOSw3
ICszOSw3IEBAIGNsYXNzIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCA6IHB1Ymxp
YyBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlQnVmZmVyQmFjCiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UpOworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBjb25zdCBXZWJDb3JlOjpIb3N0V2luZG93
Kik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbnRlcm5hbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKIAogICAg
IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwaHlzaWNhbFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRm
b3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhMjcyOGZlNzE0
MWVkMzNmMjFhMGM0ZWM0Y2U0NDQ2NDNkNWFiYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIu
aApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5j
bHVkZSAiUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCIKKyNpbmNsdWRlICJS
ZW1vdGVJbWFnZUJ1ZmZlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgVW5hY2Nl
bGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyID0gUmVtb3RlSW1hZ2VCdWZmZXI8VW5hY2NlbGVyYXRl
ZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZD47Cit1c2luZyBBY2NlbGVyYXRlZFJlbW90ZUlt
YWdlQnVmZmVyID0gUmVtb3RlSW1hZ2VCdWZmZXI8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJhY2tlbmQ+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDEyNGM0ODk4Zjlj
ZmYxODhiNjFmNzhiZmU1MmI2MmFhZWVkMjg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC0wLDAg
KzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5
TGlzdEltYWdlQnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KK2NsYXNzIFJlbW90ZUltYWdlQnVmZmVy
IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4s
IHB1YmxpYyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyIHsKKyAgICB1c2luZyBCYXNl
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZl
cjxCYWNrZW5kVHlwZT47CisgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1f
YmFja2VuZDsKKyAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9kcmF3aW5n
Q29udGV4dDsKKworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW1h
Z2VCdWZmZXI+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6
OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgeworICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmNhbGN1
bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSkuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVJbWFnZUJ1ZmZlcj4obmV3IFJlbW90ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01v
ZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkp
OworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFJlbW90ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAg
OiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplKQorICAgICAgICAsIFJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgIHsKKyAgICB9CisKKyAg
ICB2b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgaGFuZGxlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2JhY2tlbmQp
OworICAgICAgICBtX2JhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBi
YWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSkp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRlCisgICAgewor
ICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgICAgIG1fYmFja2VuZC0+Zmx1c2hD
b250ZXh0KCk7CisgICAgfQorCisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5k
aXNwbGF5TGlzdCgpOworICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNvdW50KCkpIHsKKyAg
ICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0Nv
bnRleHQoZGlzcGxheUxpc3QpOworICAgICAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKKyAg
ICAgICAgfQorICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZlMjg0NTJkMmY5NjJkNmZkY2IyMTM0MTk0NWY1ZmZl
NDhiZGJhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHAKQEAgLTAsMCArMSw2
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisK
KyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQpCisgICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQobWFrZVdlYWtQdHIocmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCkpCit7CisgICAgLy8gQ3JlYXRlIHRoZSBSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LgorICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJp
bmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1faW1hZ2VCdWZmZXJJZGVudGlm
aWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cigpKTsKK30KKworUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6flJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXIoKQoreworICAgIC8vIFJlbGVhc2UgdGhlIFJlbW90ZUltYWdl
QnVmZmVyUHJveHkuCisgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAg
IHJldHVybjsKKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnNlbmQoTWVzc2FnZXM6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6UmVsZWFzZUltYWdlQnVmZmVyKG1faW1hZ2VCdWZm
ZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcigpKTsKK30KKwordm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
OjpmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYgZGlzcGxheUxpc3QpCit7CisgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQp
CisgICAgICAgIHJldHVybjsKKyAgICBtX3NlbnRGbHVzaElkZW50aWZpZXIgPSBJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFn
ZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0LCBtX3NlbnRGbHVzaElkZW50aWZpZXIs
IG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKK30KKwordm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyOjpjb21taXRGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZp
ZXIgZmx1c2hJZGVudGlmaWVyKQoreworICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBm
bHVzaElkZW50aWZpZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKEdQVV9QUk9DRVNTKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2MjFmZjQ5MDY3NzFhNThiNmQxYTUzOWRkZWI0ZWU3NTdk
ZTg0MmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaApAQCAtMCwwICsxLDY4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJG
bHVzaElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlM
aXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1JlbmRlcmluZ01vZGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ7CisKK2NsYXNzIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIg
eworcHVibGljOgorICAgIHZpcnR1YWwgflJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIo
KTsKKworICAgIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsgfQorCisgICAgLy8gTWVzc2Fn
ZXMgdG8gYmUgcmVjZWl2ZWQuIFNlZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmlu
LgorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSkgPSAwOworCisgICAgdm9pZCBjb21taXRGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJG
bHVzaElkZW50aWZpZXIpOworCitwcm90ZWN0ZWQ6CisgICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdN
b2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQmKTsKKworICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuIFNlZSBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4uCisgICAgdm9pZCBmbHVzaERyYXdp
bmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpOworCitw
cml2YXRlOgorICAgIFdlYWtQdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOworICAgIEltYWdlQnVmZmVySWRlbnRpZmllciBtX2ltYWdlQnVmZmVySWRl
bnRpZmllciB7IEltYWdlQnVmZmVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworCisgICAgSW1h
Z2VCdWZmZXJGbHVzaElkZW50aWZpZXIgbV9zZW50Rmx1c2hJZGVudGlmaWVyOworICAgIEltYWdl
QnVmZmVyRmx1c2hJZGVudGlmaWVyIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDIyNzU3MmMzNzVlZGJiYTJhMGVlNjk0
MzZjMzhmODRiOTIwZDA5MGMuLjFhMzdlZjhiZDA4OGZkMGExZTBjNGZmYjhkZmUzMDE1ZTMzNmEz
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMjksNiArMjksNyBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCiAKQEAgLTcxLDE2ICs3MiwyMCBAQCB1aW50NjRfdCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIGZsb2F0LCBDb2xvclNwYWNlKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
IHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7Ci0gICAgc3dpdGNoIChyZW5kZXJpbmdNb2RlKSB7
Ci0gICAgY2FzZSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRlZDoKLSAgICBjYXNlIFJl
bmRlcmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQ6Ci0gICAgICAgIC8vIEZJWE1FOiBDcmVh
dGUgdGhlIHJlbW90ZSBJbWFnZUJ1ZmZlcgotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmIChyZW5kZXJp
bmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkKSB7CisgICAgICAgIGlm
IChhdXRvIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgKnRoaXMp
KSB7CisgICAgICAgICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuYWRkKGltYWdl
QnVmZmVyLT5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0KCkpOworICAg
ICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyOworICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQgfHwgcmVu
ZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFjY2VsZXJhdGVkKSB7CisgICAg
ICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVy
OjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
LCAqdGhpcykpIHsKKyAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5h
ZGQoaW1hZ2VCdWZmZXItPmltYWdlQnVmZmVySWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQo
KSk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTg5LDEwICs5NCwyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsbwogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlSW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKIHsKICAgICAvLyBD
cmVhdGVJbWFnZUJ1ZmZlciBtZXNzYWdlIHNob3VsZCBoYXZlIGJlZW4gcmVjZWl2ZWQgYmVmb3Jl
IHRoaXMgb25lLgotICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVmZmVyTWFwLnJlbW92ZShpbWFn
ZUJ1ZmZlcklkZW50aWZpZXIpOworICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJNYXAucmVtb3ZlKGltYWdlQnVmZmVySWRlbnRpZmllcik7CiAgICAgQVNTRVJUX1VO
VVNFRChmb3VuZCwgZm91bmQpOworfQogCi0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpSZWxlYXNlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXJJZGVudGlmaWVy
KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIElt
YWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1
dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdl
QnVmZmVySWRlbnRpZmllcikpCisgICAgICAgIGltYWdlQnVmZmVyLT5jcmVhdGVCYWNrZW5kKGxv
Z2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZN
b3ZlKGhhbmRsZSkpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNvbW1pdElt
YWdlQnVmZmVyRmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRl
bnRpZmllciwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK3sK
KyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1h
cC5nZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkKKyAgICAgICAgaW1hZ2VCdWZmZXItPmNvbW1p
dEZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggYThkMjllODI2ZDVhZmRmMjVlYWY2
Mjg1YTVhNTdhMzY1Mjc5ZWFkNi4uZmViODFlODc1MzI0MTRlODZhMTkwNDRkMmI0YjU3N2UxZWQ4
OGY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTI3LDM4ICsyNyw1MiBAQAog
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9E
aXNwbGF5TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9kZS5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQKLSAgICA6
IHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICAsIHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoKTsKIAogICAgIH5SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKCk7CiAKKyAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXI7IH0KKwogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KICAgICBJUEM6OkNvbm5lY3Rpb24q
IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdWludDY0X3Qg
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBvdmVycmlkZTsKIAorICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlKTsKICAgICB2b2lkIHJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlcklkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQo
KTsKLSAgICAgICAgCi0gICAgdXNpbmcgSW1hZ2VCdWZmZXJNYXAgPSBIYXNoTWFwPEltYWdlQnVm
ZmVySWRlbnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqPjsKLSAgICBJbWFnZUJ1ZmZlck1h
cCBtX2ltYWdlQnVmZmVyTWFwOworCisgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCisg
ICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOworICAgIHZvaWQgY29tbWl0SW1hZ2VCdWZm
ZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIEltYWdlQnVmZmVySWRl
bnRpZmllcik7CisKKyAgICB1c2luZyBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwID0gSGFz
aE1hcDxJbWFnZUJ1ZmZlcklkZW50aWZpZXIsIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXIqPjsKKyAgICBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwIG1faW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlck1hcDsKICAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyIHsgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI6OmdlbmVyYXRl
KCkgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5p
bgppbmRleCA1MjZlMWY5YzlkY2YwMmY3N2NjYzI4MWIzNTVhMTViNzQyNzgyOGEwLi4xMmE3YmY4
ZGE0YzgyNTcwYmNhMzZhMTM1ZmQ3MWFmMjU4OGI2NGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw4IEBACiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIE5vdFJl
ZkNvdW50ZWQgewotCisgICAgdm9pZCBDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoV2ViQ29yZTo6
RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViS2l0
OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBXZWJLaXQ6OkltYWdlQnVmZmVySWRl
bnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgdm9pZCBDb21taXRJbWFnZUJ1ZmZl
ckZsdXNoQ29udGV4dChXZWJLaXQ6OkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRl
bnRpZmllciwgV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlm
aWVyKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCmlu
ZGV4IDU3NWI0YmM0OWYyYzg1MjgwNjcwYTVkZDQxOTVmNDQ0Y2UwZDExOTcuLmY2M2Q1NzMzZTMw
MWU1OTQwNDc5MmMwNGIyNGI2MDZkMzc3ZjI1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQpOwogCi1zdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJT
aGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgSG9zdFdp
bmRvdyopCiB7CiAgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXpl
KHNpemUsIHJlc29sdXRpb25TY2FsZSk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZC5oCmluZGV4IDEwODFlOTg1YjZjMDYwMTFiMzJkMTc4YTNhN2MwYjY5MmY0NzJlZjYu
LmNmMjg5NzljNmYxNGQ3NjJlNjk2MDU2YTA3NWE5YmUyMjg1YTQ4ZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaApA
QCAtNDAsNyArNDAsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhYwogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQp
OwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dp
Y2FsU2l6ZSwgY29uc3QgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNl
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJm
YWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgY29uc3Qg
V2ViQ29yZTo6SG9zdFdpbmRvdyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW50ZXJuYWxTaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSk7CiAKICAgICB1c2luZyBXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKaW5kZXggNjMzOWU0ZGNlYjY3OTY5ZmMyZThkOWYwYjg0YjMyMjU2YmE1NTlmNS4uNDVlYzcw
OWRiN2VlOWEyZGJjOTFjNGRkYmM0Zjk0ODQ0MzAyZTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKQEAgLTg5MSwxNCArODkxLDExIEBAIFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IFdl
YkNocm9tZUNsaWVudDo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmCiAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hy
b21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UpIGNvbnN0CitSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBXZWJDaHJvbWVDbGll
bnQ6OmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKSBjb25zdAogewotICAgIGlmIChyZW5k
ZXJpbmdNb2RlICE9IFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkICYmIHJlbmRlcmlu
Z01vZGUgIT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2NlbGVyYXRlZCkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKICAgICAg
ICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3Jl
YXRlKCk7Ci0gICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+Y3JlYXRlSW1hZ2VC
dWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKTsK
KyAgICByZXR1cm4gKm1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKIH0KIAogc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgU2hvdWxkQWNjZWxlcmF0ZSBzaG91bGRBY2NlbGVyYXRlLCBTaG91
bGRVc2VEaXNwbGF5TGlzdCBzaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSBw
dXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkgY29u
c3QKQEAgLTkxMCw3ICs5MDcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJgogICAgICAgICBt
b2RlID0gc2hvdWxkQWNjZWxlcmF0ZSA9PSBTaG91bGRBY2NlbGVyYXRlOjpZZXMgPyBSZW5kZXJp
bmdNb2RlOjpEaXNwbGF5TGlzdEFjY2VsZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6RGlzcGxheUxp
c3RVbmFjY2VsZXJhdGVkOwogICAgIGVsc2UKICAgICAgICAgbW9kZSA9IHNob3VsZEFjY2VsZXJh
dGUgPT0gU2hvdWxkQWNjZWxlcmF0ZTo6WWVzID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQg
OiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwotICAgIHJldHVybiBjcmVhdGVJbWFnZUJ1
ZmZlcihzaXplLCBtb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOworICAgIHJldHVy
biBlbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCkuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwg
bW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA3YzZmMjRjYjk5NGRjZGQ4MzAz
NmZlODI0ZDIzMjZlZDU4OTllOTRjLi5hMWU5Mzg5YTI5MDIzZWM0YWVjZjk5NTNjMzZiZmU3YTY5
MzYzMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yMzQsOCArMjM0LDggQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQmIGVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKSBjb25zdDsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUsIFdlYkNvcmU6OlNo
b3VsZFVzZURpc3BsYXlMaXN0LCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAg
ICAgQ29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3MgYWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMoKSBj
b25zdCBmaW5hbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>