<?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>205823</bug_id>
          
          <creation_ts>2020-01-06 11:58:38 -0800</creation_ts>
          <short_desc>[WebGL 2] Implement transform feedback and pass transform feedback conformance tests</short_desc>
          <delta_ts>2020-07-24 14:55:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          <blocked>126404</blocked>
    
    <blocked>209513</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Fan">justin_fan</reporter>
          <assigned_to name="Justin Fan">justin_fan</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>noam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1603188</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2020-01-06 11:58:38 -0800</bug_when>
    <thetext>[WebGL 2] Implement transform feedback and pass transform feedback conformance tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603190</commentid>
    <comment_count>1</comment_count>
      <attachid>386873</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2020-01-06 12:00:06 -0800</bug_when>
    <thetext>Created attachment 386873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604945</commentid>
    <comment_count>2</comment_count>
      <attachid>387294</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2020-01-09 17:25:55 -0800</bug_when>
    <thetext>Created attachment 387294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604979</commentid>
    <comment_count>3</comment_count>
      <attachid>387304</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2020-01-09 18:40:27 -0800</bug_when>
    <thetext>Created attachment 387304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604982</commentid>
    <comment_count>4</comment_count>
      <attachid>387305</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2020-01-09 18:46:29 -0800</bug_when>
    <thetext>Created attachment 387305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604984</commentid>
    <comment_count>5</comment_count>
      <attachid>387307</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2020-01-09 18:48:35 -0800</bug_when>
    <thetext>Created attachment 387307
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605243</commentid>
    <comment_count>6</comment_count>
      <attachid>387307</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-01-10 12:37:08 -0800</bug_when>
    <thetext>Comment on attachment 387307
Patch

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

You&apos;re going to have to rebase, sorry.

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:105
&gt; +    // Remove all references to WebGLObjects so if they are the last reference
&gt; +    // they will be freed before the last context is removed from the context group.

I don&apos;t think we need this comment.

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:331
&gt; -    memcpy(static_cast&lt;char*&gt;(dstData-&gt;baseAddress()) + dstData-&gt;byteOffset() + dstOffset * elementSize, ptr, copyLength * elementSize);
&gt; +    if (ptr)
&gt; +        memcpy(static_cast&lt;char*&gt;(dstData-&gt;baseAddress()) + dstData-&gt;byteOffset() + dstOffset * elementSize, ptr, copyLength * elementSize);
&gt; +

If ptr is null, wouldn&apos;t we want to throw an error?

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:1100
&gt; +    auto addResult = m_activeQueries.add(targetKey, makeRefPtr(&amp;query));
&gt; +
&gt; +    if (!addResult.isNewEntry) {

You can do this in one line - no need for addResult.

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:1268
&gt; +            synthesizeGLError(GraphicsContextGL::INVALID_OPERATION, &quot;bindTransformFeedback&quot;, &quot;cannot bind a deleted Transform Feedback object&quot;);

Nit: Transform Feedback should probably be one word.

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:2541
&gt; +    size_t index = m_boundTransformFeedbackBuffers.find(buffer);
&gt; +    if (index &lt; m_boundTransformFeedbackBuffers.size())
&gt; +        m_boundTransformFeedbackBuffers[index] = nullptr;

Why can&apos;t you call m_boundTransformFeedbackBuffers.removeAll(buffer) ?

&gt; Source/WebCore/platform/graphics/GraphicsContextGL.h:1068
&gt; +    // WebGL2 Transform Feedback calls
&gt; +    virtual PlatformGLObject createTransformFeedback() = 0;
&gt; +    virtual void deleteTransformFeedback(PlatformGLObject) = 0;
&gt; +    virtual GCGLboolean isTransformFeedback(PlatformGLObject) = 0;
&gt; +    virtual void bindTransformFeedback(GCGLenum, PlatformGLObject) = 0;
&gt; +    virtual void beginTransformFeedback(GCGLenum) = 0;
&gt; +    virtual void endTransformFeedback() = 0;
&gt; +    virtual void transformFeedbackVaryings(PlatformGLObject, const Vector&lt;String&gt;&amp;, GCGLenum) = 0;
&gt; +    virtual void getTransformFeedbackVarying(PlatformGLObject, GCGLuint, ActiveInfo&amp;) = 0;
&gt; +
&gt; +    virtual void bindBufferBase(GCGLenum, GCGLuint, PlatformGLObject) = 0;
&gt; +

I think I landed all these just moments ago.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605250</commentid>
    <comment_count>7</comment_count>
      <attachid>387307</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2020-01-10 12:44:40 -0800</bug_when>
    <thetext>Comment on attachment 387307
Patch

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

&gt;&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:105
&gt;&gt; +    // they will be freed before the last context is removed from the context group.
&gt; 
&gt; I don&apos;t think we need this comment.

Ok, it&apos;s copied from the WebGLRenderingContextBase dtor.

&gt;&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:331
&gt;&gt; +
&gt; 
&gt; If ptr is null, wouldn&apos;t we want to throw an error?

If ptr is null, ANGLE throws an error here.

&gt;&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:1100
&gt;&gt; +    if (!addResult.isNewEntry) {
&gt; 
&gt; You can do this in one line - no need for addResult.

ok!

&gt;&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:1268
&gt;&gt; +            synthesizeGLError(GraphicsContextGL::INVALID_OPERATION, &quot;bindTransformFeedback&quot;, &quot;cannot bind a deleted Transform Feedback object&quot;);
&gt; 
&gt; Nit: Transform Feedback should probably be one word.

I&apos;ll probably keep this, since it follows the convention in the conformance test output.

&gt;&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:2541
&gt;&gt; +        m_boundTransformFeedbackBuffers[index] = nullptr;
&gt; 
&gt; Why can&apos;t you call m_boundTransformFeedbackBuffers.removeAll(buffer) ?

I need to keep the size of the vector the same.

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContextGL.h:1068
&gt;&gt; +
&gt; 
&gt; I think I landed all these just moments ago.

darn. I knew I should&apos;ve said something &gt;:(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605256</commentid>
    <comment_count>8</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2020-01-10 12:54:13 -0800</bug_when>
    <thetext>*** Bug 126943 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605258</commentid>
    <comment_count>9</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2020-01-10 12:55:13 -0800</bug_when>
    <thetext>rdar://problem/15002432</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605405</commentid>
    <comment_count>10</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2020-01-10 17:01:41 -0800</bug_when>
    <thetext>needs to land on top of https://bugs.webkit.org/show_bug.cgi?id=206081</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605990</commentid>
    <comment_count>11</comment_count>
      <attachid>387557</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2020-01-13 12:28:40 -0800</bug_when>
    <thetext>Created attachment 387557
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606184</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-13 18:34:04 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 387557:

imported/w3c/IndexedDB-private-browsing/idbdatabase_close.html bug 206210 (author: youennf@gmail.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606185</commentid>
    <comment_count>13</comment_count>
      <attachid>387557</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-13 18:34:39 -0800</bug_when>
    <thetext>Comment on attachment 387557
Patch for landing

Clearing flags on attachment: 387557

Committed r254481: &lt;https://trac.webkit.org/changeset/254481&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606186</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-13 18:34:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386873</attachid>
            <date>2020-01-06 12:00:06 -0800</date>
            <delta_ts>2020-01-09 17:25:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205823-20200106120006.patch</filename>
            <type>text/plain</type>
            <size>40576</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhhM2M4NmRlZWE3NzI3YjQwZWE1ZTI2
ODE5NzMxMDFjZGJhZGNlYTEuLjc3NTMzMzYxZDcxOGM5MGVhOTkwMGMyODNiNGVmNGM2ZmUzODYw
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDEtMDYgIEp1c3RpbiBGYW4gIDxqdXN0aW5f
ZmFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR0wgMl0gSW1wbGVtZW50IHRyYW5zZm9ybSBm
ZWVkYmFjayBhbmQgcGFzcyB0cmFuc2Zvcm0gZmVlZGJhY2sgY29uZm9ybWFuY2UgdGVzdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTgyMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRm
b3JtLmg6CisKIDIwMTktMTItMTcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgbWFjQ2F0YWx5c3Q6IEN1cnNvciBzaG91bGQgdXBkYXRlIG9uIG1vdXNl
IG1vdmVtZW50IGFuZCBzdHlsZSBjaGFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNzUxMGM0NTQ2NTA4Yzdh
YzM4MTE1ZWVjMTAxZmUwMDE5YmI2YzhkLi44YTA3N2E2MGY1ZmNjOTg1MjExODgzNGNlOGU3MjA1
MzMxN2RhN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMjAtMDEtMDYgIEp1c3Rp
biBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR0wgMl0gSW1wbGVt
ZW50IHRyYW5zZm9ybSBmZWVkYmFjayBhbmQgcGFzcyB0cmFuc2Zvcm0gZmVlZGJhY2sgY29uZm9y
bWFuY2UgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNTgyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01D
b252ZXJ0V2ViR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvSlNWYWx1ZSk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVU
cmFuc2Zvcm1GZWVkYmFja0J1ZmZlckNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5RdWVyeSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRRdWVyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVUcmFuc2Zv
cm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpp
c1RyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0VHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmJpbmRCdWZmZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuY2FjaGVEZWxldGVkQnVmZmVyKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xBbnkuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6c2V0VGFyZ2V0KToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUXVlcnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xRdWVyeTo6V2ViR0xRdWVyeSk6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVBbmRDYWNoZUJ1ZmZlckJpbmRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmNhY2hlRGVsZXRlZEJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
UHJvZ3JhbVBhcmFtZXRlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJh
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6V2ViR0xU
cmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRyYW5zZm9ybUZlZWRi
YWNrOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBo
aWNzQ29udGV4dDNEQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGVRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6YmVnaW5RdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZW5k
UXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFF1ZXJ5T2Jq
ZWN0dWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEJ1ZmZlckJhc2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTENvbW1vbi5jcHA6CisKIDIwMTktMTItMTcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgbWFjQ2F0YWx5c3Q6IEN1cnNvciBzaG91bGQgdXBkYXRl
IG9uIG1vdXNlIG1vdmVtZW50IGFuZCBzdHlsZSBjaGFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDAwNDc1
MDE5ZTJmZTc0Y2M2ZjJmNjc3MDU5MDgwOTA4Y2MyNWYyMzYuLjIzNzE0NTA1OGI1YWI4YjU4OTFl
YmFiYjU1ZDIzYzZmYTdlNmFiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
LmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTEwOSw5ICsxMTA5LDkgQEAK
IC8qIFVTRV9BTkdMRT0xIHVzZXMgQU5HTEUgZm9yIHRoZSBXZWJHTCBiYWNrZW5kLgogICAgSXQg
cmVwbGFjZXMgVVNFX09QRU5HTCwgVVNFX09QRU5HTF9FUyBhbmQgVVNFX0VHTC4gKi8KICNpZiBQ
TEFURk9STShNQUMpCi0jZGVmaW5lIFVTRV9PUEVOR0wgMQorI2RlZmluZSBVU0VfT1BFTkdMIDAK
ICNkZWZpbmUgVVNFX09QRU5HTF9FUyAwCi0jZGVmaW5lIFVTRV9BTkdMRSAwCisjZGVmaW5lIFVT
RV9BTkdMRSAxCiAjZWxpZiBQTEFURk9STShNQUNDQVRBTFlTVCkgJiYgX19oYXNfaW5jbHVkZSg8
T3BlbkdML09wZW5HTC5oPikKICNkZWZpbmUgVVNFX09QRU5HTCAxCiAjZGVmaW5lIFVTRV9PUEVO
R0xfRVMgMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0V2ViR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2Vi
R0wuY3BwCmluZGV4IDc4YTRhZTYyZTc0N2FjNzE2NjgxMzMzYjRlNDQ3ZmZhNWJlNjFkMTAuLjE4
NGIzMzA3YTFjNjA3ZGY1NGI3ZTAwZGI5ZTdhOGU1NTAxNDBmOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAKQEAgLTU4LDYgKzU4LDcg
QEAKICNpbmNsdWRlICJKU1dlYkdMUHJvZ3JhbS5oIgogI2luY2x1ZGUgIkpTV2ViR0xSZW5kZXJi
dWZmZXIuaCIKICNpbmNsdWRlICJKU1dlYkdMVGV4dHVyZS5oIgorI2luY2x1ZGUgIkpTV2ViR0xU
cmFuc2Zvcm1GZWVkYmFjay5oIgogI2luY2x1ZGUgIkpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5o
IgogI2luY2x1ZGUgIkpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KQEAgLTEzOCw2ICsxMzksOSBAQCBKU1ZhbHVlIGNv
bnZlcnRUb0pTVmFsdWUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9N
R2xvYmFsT2JqZWN0JgogICAgICAgICAsCiAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPFdlYkdM
VmVydGV4QXJyYXlPYmplY3Q+JiBhcnJheSkgewogICAgICAgICAgICAgcmV0dXJuIHRvSlMoJmxl
eGljYWxHbG9iYWxPYmplY3QsICZnbG9iYWxPYmplY3QsIGFycmF5LmdldCgpKTsKKyAgICAgICAg
fSwKKyAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4mIHRy
YW5zZm9ybUZlZWRiYWNrKSB7CisgICAgICAgICAgICByZXR1cm4gdG9KUygmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgJmdsb2JhbE9iamVjdCwgdHJhbnNmb3JtRmVlZGJhY2suZ2V0KCkpOwogICAgICAg
ICB9CiAjZW5kaWYKICAgICApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA0YmFmM2FhMDE4YmRiOWZkMzc5MDU4
NjU5ZDFjODJlMjM1ZWFmOGRhLi43ZmY3OWUzZWIyNGJlM2UxYzcyMGJmOWYyMDY2YzhjZDI1YTZj
NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkSW1h
Z2UuaCIKICNpbmNsdWRlICJFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaCIKKyNpbmNsdWRl
ICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKICNpbmNsdWRlICJIVE1M
Q2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKQEAgLTk1LDYg
Kzk2LDcgQEAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dChD
YW52YXNCYXNlJiBjYW52YXMsIFJlZjxHcmFwaGljc0MKIHsKICAgICBpbml0aWFsaXplU2hhZGVy
RXh0ZW5zaW9ucygpOwogICAgIGluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVjdHMoKTsKKyAgICBp
bml0aWFsaXplVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDYWNoZSgpOwogfQogCiB2b2lkIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVjdHMoKQpAQCAtMTE4
LDYgKzEyMCwxNCBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVTaGFk
ZXJFeHRlbnNpb25zKCkKICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFi
bGVkKCJHTF9FWFRfZnJhZ19kZXB0aCIpOwogfQogCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmluaXRpYWxpemVUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlckNhY2hlKCkKK3sKKyAgICBpbnQg
bWF4VHJhbnNmb3JtRmVlZGJhY2tBdHRyaWJzID0gZ2V0SW50UGFyYW1ldGVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpNQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlMpOworICAgIEFT
U0VSVChtYXhUcmFuc2Zvcm1GZWVkYmFja0F0dHJpYnMgPj0gNCk7CisKKyAgICBtX2JvdW5kVHJh
bnNmb3JtRmVlZGJhY2tCdWZmZXJzLnJlc2l6ZSg0KTsKK30KKwogaW5saW5lIHN0YXRpYyBPcHRp
b25hbDx1bnNpZ25lZD4gYXJyYXlCdWZmZXJWaWV3RWxlbWVudFNpemUoY29uc3QgQXJyYXlCdWZm
ZXJWaWV3JiBkYXRhKQogewogICAgIHN3aXRjaCAoZGF0YS5nZXRUeXBlKCkpIHsKQEAgLTMwNyw5
ICszMTcsMTAgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJTdWJEYXRh
KEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNyY0J5dGUKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAvLyBGSVhNRTogQ29hbGVzY2UgbXVsdGlwbGUgZ2V0QnVmZmVyU3ViRGF0YSgpIGNhbGxz
IHRvIHVzZSBhIHNpbmdsZSBtYXAoKSBjYWxsCiAgICAgdm9pZCogcHRyID0gbV9jb250ZXh0LT5t
YXBCdWZmZXJSYW5nZSh0YXJnZXQsIGNoZWNrZWRTcmNCeXRlT2Zmc2V0LnVuc2FmZUdldCgpLCBz
dGF0aWNfY2FzdDxHQzNEc2l6ZWlwdHI+KGNoZWNrZWRDb3B5TGVuZ3RoUHRyLnVuc2FmZUdldCgp
ICogY2hlY2tlZEVsZW1lbnRTaXplLnVuc2FmZUdldCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6Ok1B
UF9SRUFEX0JJVCk7Ci0gICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNl
QWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRT
aXplLCBwdHIsIGNvcHlMZW5ndGggKiBlbGVtZW50U2l6ZSk7Ci0gICAgYm9vbCBzdWNjZXNzID0g
bV9jb250ZXh0LT51bm1hcEJ1ZmZlcih0YXJnZXQpOwotICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vz
cywgc3VjY2Vzcyk7CisgICAgaWYgKHB0cikKKyAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNo
YXIqPihkc3REYXRhLT5iYXNlQWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRz
dE9mZnNldCAqIGVsZW1lbnRTaXplLCBwdHIsIGNvcHlMZW5ndGggKiBlbGVtZW50U2l6ZSk7Cisg
ICAgbV9jb250ZXh0LT51bm1hcEJ1ZmZlcih0YXJnZXQpOworLy8gICAgQVNTRVJUX1VOVVNFRChz
dWNjZXNzLCBzdWNjZXNzKTsKICNlbmRpZgogICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KCk7CiB9CkBAIC04NjgsOSArODc5LDEyIEBAIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYoR0MzRHVpbnQsIFVpbnQzMkxpc3QmJikK
ICAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gdmVydGV4QXR0cmliSTR1aXYo
KSIpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYklQb2lu
dGVyKEdDM0R1aW50LCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRHNpemVpLCBHQzNEaW50NjQpCit2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYklQb2ludGVyKEdDM0R1aW50
IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0RzaXplaSBzdHJpZGUsIEdD
M0RpbnQ2NCBvZmZzZXQpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1d
IHZlcnRleEF0dHJpYklQb2ludGVyKCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYklQb2lu
dGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIG9mZnNldCk7CiB9CiAKIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIoR0MzRGJpdGZpZWxkIG1hc2spCkBAIC0xMDQ4LDggKzEw
NjIsMTAgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhckJ1ZmZlcmZpKEdDM0Rl
bnVtIGJ1ZmZlciwgR0MzRGludCBkcmF3YnVmZmVyLAogCiBSZWZQdHI8V2ViR0xRdWVyeT4gV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUXVlcnkoKQogewotICAgIExPRyhXZWJHTCwgIltb
IE5PVCBJTVBMRU1FTlRFRCBdXSBjcmVhdGVRdWVyeSgpIik7Ci0gICAgcmV0dXJuIG51bGxwdHI7
CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gV2ViR0xRdWVyeTo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpkZWxldGVRdWVyeShXZWJHTFF1ZXJ5KikKQEAgLTEwNjMsMTQgKzEwNzks
NDQgQEAgR0MzRGJvb2xlYW4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNRdWVyeShXZWJHTFF1
ZXJ5KikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6YmVnaW5RdWVyeShHQzNEZW51bSwgV2ViR0xRdWVyeSYpCit2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmJlZ2luUXVlcnkoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTFF1ZXJ5JiBxdWVyeSkK
IHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gYmVnaW5RdWVyeSgpIik7
CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklY
TUU6IEFkZCB2YWxpZGF0aW9uIHRvIHByZXZlbnQgYmFkIGNhY2hpbmcuCisKKyAgICAvLyBPbmx5
IG9uZSBxdWVyeSBvYmplY3QgY2FuIGJlIGFjdGl2ZSBwZXIgdGFyZ2V0LgorICAgIGF1dG8gdGFy
Z2V0S2V5ID0gKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QU5ZX1NBTVBMRVNfUEFTU0VE
X0NPTlNFUlZBVElWRSkgPyBHcmFwaGljc0NvbnRleHQzRDo6QU5ZX1NBTVBMRVNfUEFTU0VEIDog
dGFyZ2V0OworCisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2FjdGl2ZVF1ZXJpZXMuYWRkKHRhcmdl
dEtleSwgbWFrZVJlZlB0cigmcXVlcnkpKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5
KSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X09QRVJBVElPTiwgImJlZ2luUXVlcnkiLCAiUXVlcnkgb2JqZWN0IG9mIHRhcmdldCBpcyBhbHJl
YWR5IGFjdGl2ZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb250ZXh0LT5i
ZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkub2JqZWN0KCkpOwogfQogCi12b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmVuZFF1ZXJ5KEdDM0RlbnVtKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjplbmRRdWVyeShHQzNEZW51bSB0YXJnZXQpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9U
IElNUExFTUVOVEVEIF1dIGVuZFF1ZXJ5KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8
ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8g
dGFyZ2V0S2V5ID0gKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QU5ZX1NBTVBMRVNfUEFT
U0VEX0NPTlNFUlZBVElWRSkgPyBHcmFwaGljc0NvbnRleHQzRDo6QU5ZX1NBTVBMRVNfUEFTU0VE
IDogdGFyZ2V0OworCisgICAgYXV0byBxdWVyeSA9IG1fYWN0aXZlUXVlcmllcy50YWtlKHRhcmdl
dEtleSk7CisgICAgaWYgKCFxdWVyeSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sICJlbmRRdWVyeSIsICJRdWVyeSBvYmpl
Y3Qgb2YgdGFyZ2V0IGlzIG5vdCBhY3RpdmUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1fY29udGV4dC0+ZW5kUXVlcnkodGFyZ2V0KTsKKworICAgIC8vIEEgcXVlcnkncyByZXN1
bHQgbXVzdCBub3QgYmUgbWFkZSBhdmFpbGFibGUgdW50aWwgY29udHJvbCBoYXMgcmV0dXJuZWQg
dG8gdGhlIHVzZXIgYWdlbnQncyBtYWluIGxvb3AuCisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5ldmVudExvb3AoKS5xdWV1ZU1pY3JvdGFzayhbcXVlcnldIHsKKyAgICAgICAgcXVlcnkt
Pm1ha2VSZXN1bHRBdmFpbGFibGUoKTsKKyAgICB9KTsKIH0KIAogUmVmUHRyPFdlYkdMUXVlcnk+
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFF1ZXJ5KEdDM0RlbnVtLCBHQzNEZW51bSkKQEAg
LTEwNzksMTAgKzExMjUsMjUgQEAgUmVmUHRyPFdlYkdMUXVlcnk+IFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmdldFF1ZXJ5KEdDM0RlbnVtLCBHQzNEZW51bSkKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIo
V2ViR0xRdWVyeSYsIEdDM0RlbnVtKQorV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UXVlcnlQYXJhbWV0ZXIoV2ViR0xRdWVyeSYgcXVlcnksIEdDM0RlbnVtIHBuYW1lKQogewot
ICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSBnZXRRdWVyeVBhcmFtZXRlciki
KTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN3aXRjaCAocG5hbWUpIHsKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpRVUVSWV9SRVNVTFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
UVVFUllfUkVTVUxUX0FWQUlMQUJMRToKKyAgICAgICAgaWYgKCFxdWVyeS5pc1Jlc3VsdEF2YWls
YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X0VOVU0sICJnZXRRdWVyeVBhcmFtZXRlciIsICJJbnZhbGlkIHBuYW1lIik7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CisgICAgbV9j
b250ZXh0LT5nZXRRdWVyeU9iamVjdHVpdihxdWVyeS5vYmplY3QoKSwgcG5hbWUsICZyZXN1bHQp
OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFJlZlB0cjxXZWJHTFNhbXBsZXI+IFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVNhbXBsZXIoKQpAQCAtMTE2Myw0NSArMTIyNCw4NiBAQCBX
ZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTeW5jUGFyYW1ldGVyKFdlYkdMU3lu
YyYsIEdDM0RlbnVtKQogCiBSZWZQdHI8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4gV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQogewotICAgIExPRyhXZWJH
TCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIik7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6Y3JlYXRl
KCp0aGlzKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVUcmFuc2Zv
cm1GZWVkYmFjayhXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKikKK3ZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xUcmFuc2Zvcm1GZWVkYmFjayog
ZmVlZGJhY2tPYmplY3QpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1d
IGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrID09IGZl
ZWRiYWNrT2JqZWN0KQorICAgICAgICBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2sgPSBudWxscHRy
OworCisgICAgZGVsZXRlT2JqZWN0KGZlZWRiYWNrT2JqZWN0KTsKIH0KIAotR0MzRGJvb2xlYW4g
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNUcmFuc2Zvcm1GZWVkYmFjayhXZWJHTFRyYW5zZm9y
bUZlZWRiYWNrKikKK0dDM0Rib29sZWFuIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmlzVHJhbnNm
b3JtRmVlZGJhY2soV2ViR0xUcmFuc2Zvcm1GZWVkYmFjayogZmVlZGJhY2tPYmplY3QpCiB7Ci0g
ICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGlzVHJhbnNmb3JtRmVlZGJhY2so
KSIpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8ICFmZWVk
YmFja09iamVjdCB8fCBmZWVkYmFja09iamVjdC0+aXNEZWxldGVkKCkgfHwgIXZhbGlkYXRlV2Vi
R0xPYmplY3QoImlzVHJhbnNmb3JtRmVlZGJhY2siLCBmZWVkYmFja09iamVjdCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2NvbnRleHQtPmlzVHJhbnNmb3JtRmVlZGJh
Y2soZmVlZGJhY2tPYmplY3QtPm9iamVjdCgpKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0MzRGVudW0sIFdlYkdMVHJhbnNmb3JtRmVl
ZGJhY2sqKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kVHJhbnNmb3JtRmVlZGJh
Y2soR0MzRGVudW0gdGFyZ2V0LCBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKiBmZWVkYmFja09iamVj
dCkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gYmluZFRyYW5zZm9y
bUZlZWRiYWNrKCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoZmVlZGJhY2tPYmplY3QpIHsKKyAgICAgICAgaWYgKGZlZWRiYWNrT2JqZWN0
LT5pc0RlbGV0ZWQoKSkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCAiYmluZFRyYW5zZm9ybUZlZWRiYWNrIiwgImNh
bm5vdCBiaW5kIGEgZGVsZXRlZCBUcmFuc2Zvcm0gRmVlZGJhY2sgb2JqZWN0Iik7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXZhbGlkYXRlV2ViR0xPYmpl
Y3QoImlzVHJhbnNmb3JtRmVlZGJhY2siLCBmZWVkYmFja09iamVjdCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV9jb250ZXh0LT5iaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFy
Z2V0LCBvYmplY3RPclplcm8oZmVlZGJhY2tPYmplY3QpKTsKKyAgICBtX2JvdW5kVHJhbnNmb3Jt
RmVlZGJhY2sgPSBmZWVkYmFja09iamVjdDsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDM0RlbnVtKQordm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDM0RlbnVtIHByaW1pdGl2ZU1vZGUp
CiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGJlZ2luVHJhbnNmb3Jt
RmVlZGJhY2soKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fY29udGV4dC0+YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKTsK
IH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRUcmFuc2Zvcm1GZWVkYmFjaygp
CiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGVuZFRyYW5zZm9ybUZl
ZWRiYWNrKCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2NvbnRleHQtPmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CiB9CiAKLXZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhXZWJHTFByb2dyYW0m
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEdDM0RlbnVtKQordm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQzNEZW51bSBidWZmZXJNb2RlKQogewot
ICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSB0cmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzKCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8IHZhcnlpbmdzLmlzRW1wdHko
KSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgidHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyIsICZw
cm9ncmFtKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZXh0LT50cmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmdzKHByb2dyYW0ub2JqZWN0KCksIHZhcnlpbmdzLCBidWZmZXJNb2RlKTsKIH0K
IAotUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0VHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFdlYkdMUHJvZ3JhbSYsIEdDM0R1aW50KQorUmVmUHRyPFdl
YkdMQWN0aXZlSW5mbz4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0VHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5nKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgpCiB7Ci0gICAg
TE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZygpIik7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5nIiwgJnByb2dyYW0pKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFjdGl2ZUlu
Zm8gaW5mbzsKKyAgICBtX2NvbnRleHQtPmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9n
cmFtLm9iamVjdCgpLCBpbmRleCwgaW5mbyk7CisKKyAgICBpZiAoIWluZm8ubmFtZSB8fCAhaW5m
by50eXBlIHx8ICFpbmZvLnNpemUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0
dXJuIFdlYkdMQWN0aXZlSW5mbzo6Y3JlYXRlKGluZm8ubmFtZSwgaW5mby50eXBlLCBpbmZvLnNp
emUpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnBhdXNlVHJhbnNmb3JtRmVl
ZGJhY2soKQpAQCAtMTIxNCw5ICsxMzE2LDMyIEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQogICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBM
RU1FTlRFRCBdXSByZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpIik7CiB9CiAKLXZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlckJhc2UoR0MzRGVudW0sIEdDM0R1aW50LCBXZWJH
TEJ1ZmZlciopCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRCdWZmZXJCYXNlKEdD
M0RlbnVtIHRhcmdldCwgR0MzRHVpbnQgaW5kZXgsIFdlYkdMQnVmZmVyKiBidWZmZXIpCiB7Ci0g
ICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGJpbmRCdWZmZXJCYXNlKCkiKTsK
KyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBzd2l0Y2ggKHRhcmdldCkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRSQU5TRk9S
TV9GRUVEQkFDS19CVUZGRVI6IHsKKyAgICAgICAgaWYgKGluZGV4ID49IG1fYm91bmRUcmFuc2Zv
cm1GZWVkYmFja0J1ZmZlcnMuc2l6ZSgpKSB7CisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImJpbmRCdWZmZXJCYXNlIiwgImlu
ZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTklGT1JNX0JV
RkZFUjogeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9FTlVNLCAiYmluZEJ1ZmZlckJhc2UiLCAidGFyZ2V0IG5vdCB5ZXQgc3VwcG9ydGVkIik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgImJpbmRCdWZmZXJCYXNl
IiwgImludmFsaWQgdGFyZ2V0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
IXZhbGlkYXRlQW5kQ2FjaGVCdWZmZXJCaW5kaW5nKCJiaW5kQnVmZmVyQmFzZSIsIHRhcmdldCwg
YnVmZmVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyQmFz
ZSh0YXJnZXQsIGluZGV4LCBvYmplY3RPclplcm8oYnVmZmVyKSk7CiB9CiAKIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlclJhbmdlKEdDM0RlbnVtLCBHQzNEdWludCwgV2Vi
R0xCdWZmZXIqLCBHQzNEaW50NjQsIEdDM0RpbnQ2NCkKQEAgLTEyMjQsMTAgKzEzNDksMjAgQEAg
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kQnVmZmVyUmFuZ2UoR0MzRGVudW0sIEdD
M0R1aW50LCBXZWJHTEJ1ZmZlciosIEcKICAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5U
RUQgXV0gYmluZEJ1ZmZlclJhbmdlKCkiKTsKIH0KIAotV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDM0R1aW50KQor
V2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcihHQzNE
ZW51bSB0YXJnZXQsIEdDM0R1aW50IGluZGV4KQogeworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgc3dpdGNoICh0YXJnZXQp
IHsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
X0JJTkRJTkc6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VFJBTlNGT1JNX0ZFRURCQUNL
X0JVRkZFUl9CSU5ESU5HOiB7CisgICAgICAgIGlmIChpbmRleCA+PSBtX2JvdW5kVHJhbnNmb3Jt
RmVlZGJhY2tCdWZmZXJzLnNpemUoKSkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJnZXRJbmRleGVkUGFyYW1ldGVyIiwg
ImluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyc1tp
bmRleF07CisgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVJfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpUUkFOU0ZPUk1f
RkVFREJBQ0tfQlVGRkVSX1NUQVJUOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOSUZP
Uk1fQlVGRkVSX0JJTkRJTkc6CkBAIC0yMDgxLDYgKzIyMTYsMTAgQEAgV2ViR0xBbnkgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQogICAgICAgICBy
ZXR1cm4gbV9iYWNrRHJhd0J1ZmZlcjsgLy8gZW11bGF0ZWQgYmFja2J1ZmZlcgogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlJFQURfRlJBTUVCVUZGRVJfQklORElORzoKICAgICAgICAgcmV0
dXJuIG1fcmVhZEZyYW1lYnVmZmVyQmluZGluZzsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpUUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORzoKKyAgICAgICAgcmV0dXJuIG1fYm91bmRUcmFu
c2Zvcm1GZWVkYmFjazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpUUkFOU0ZPUk1fRkVF
REJBQ0tfQlVGRkVSX0JJTkRJTkc6CisgICAgICAgIHJldHVybiBtX2JvdW5kVHJhbnNmb3JtRmVl
ZGJhY2tCdWZmZXI7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09QWV9SRUFEX0JVRkZF
UjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT1BZX1dSSVRFX0JVRkZFUjoKICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpQSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOiAgIApAQCAt
MjA4OSw3ICsyMjI4LDYgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFy
YW1ldGVyKEdDM0RlbnVtIHBuYW1lKQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNBTVBM
RVJfQklORElORzoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0JJTkRJTkdf
MkRfQVJSQVk6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9CSU5ESU5HXzNE
OgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJf
QklORElORzoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTklGT1JNX0JVRkZFUl9CSU5E
SU5HOgogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9FTlVNLCAiZ2V0UGFyYW1ldGVyIiwgInBhcmFtZXRlciBuYW1lIG5vdCB5ZXQgc3VwcG9ydGVk
Iik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjE4Nyw2ICsyMzI1LDE3IEBAIGJvb2wg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDYXBhYmlsaXR5KGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgR0MzRGVuCiAgICAgfQogfQogCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OnVuY2FjaGVEZWxldGVkQnVmZmVyKFdlYkdMQnVmZmVyKiBidWZmZXIpCit7CisgICAgQVNT
RVJUKGJ1ZmZlcik7CisKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmNhY2hlRGVs
ZXRlZEJ1ZmZlcihidWZmZXIpOworCisgICAgc2l6ZV90IGluZGV4ID0gbV9ib3VuZFRyYW5zZm9y
bUZlZWRiYWNrQnVmZmVycy5maW5kKGJ1ZmZlcik7CisgICAgaWYgKGluZGV4IDwgbV9ib3VuZFRy
YW5zZm9ybUZlZWRiYWNrQnVmZmVycy5zaXplKCkpCisgICAgICAgIG1fYm91bmRUcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlcnNbaW5kZXhdID0gbnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDkyYzE4MzJiOWVjOWEz
MzVjZDk4MDVkOTAzOTc1MjQzYzBkMzAyYzEuLjNlZDI1OGQ5NmZkM2YxNTJhNDI0NmM3YjBjZDA2
NDk2ZGQxY2NlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TDJSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTIyNCw4ICsyMjQsMTcgQEAgcHJpdmF0ZToKICAgICBH
QzNEZW51bSBiYXNlSW50ZXJuYWxGb3JtYXRGcm9tSW50ZXJuYWxGb3JtYXQoR0MzRGVudW0gaW50
ZXJuYWxmb3JtYXQpOwogICAgIGJvb2wgaXNJbnRlZ2VyRm9ybWF0KEdDM0RlbnVtIGludGVybmFs
Zm9ybWF0KTsKICAgICB2b2lkIGluaXRpYWxpemVTaGFkZXJFeHRlbnNpb25zKCk7CisgICAgdm9p
ZCBpbml0aWFsaXplVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDYWNoZSgpOwogCiAgICAgYm9vbCB2
YWxpZGF0ZVRleFN0b3JhZ2VGdW5jUGFyYW1ldGVycyhHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXpl
aSBsZXZlbHMsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0Rz
aXplaSBoZWlnaHQsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSk7CisKKyAgICB2b2lkIHVuY2Fj
aGVEZWxldGVkQnVmZmVyKFdlYkdMQnVmZmVyKikgZmluYWw7CisKKyAgICBSZWZQdHI8V2ViR0xU
cmFuc2Zvcm1GZWVkYmFjaz4gbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrOworICAgIFZlY3RvcjxS
ZWZQdHI8V2ViR0xCdWZmZXI+PiBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzOworCisg
ICAgLy8gUXVlcmllcworICAgIEhhc2hNYXA8R0MzRGVudW0sIFJlZlB0cjxXZWJHTFF1ZXJ5Pj4g
bV9hY3RpdmVRdWVyaWVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xBbnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQW55LmgKaW5kZXggY2Y1M2UxZTNlOWQ0ZjA1MjhlYzMyYzYwNzYw
MzU1YzE2NzFkNzQ2Yi4uMzk1N2I4NDdmMDFmZTJmOTdlMDZkYzM2MDFhYmQ1MWE2NzhhOWJiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xBbnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFueS5oCkBAIC00NSw2ICs0NSw3IEBAIGNs
YXNzIFdlYkdMRnJhbWVidWZmZXI7CiBjbGFzcyBXZWJHTFByb2dyYW07CiBjbGFzcyBXZWJHTFJl
bmRlcmJ1ZmZlcjsKIGNsYXNzIFdlYkdMVGV4dHVyZTsKK2NsYXNzIFdlYkdMVHJhbnNmb3JtRmVl
ZGJhY2s7CiBjbGFzcyBXZWJHTFZlcnRleEFycmF5T2JqZWN0OwogY2xhc3MgV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUzsKIApAQCAtNzAsNiArNzEsNyBAQCB1c2luZyBXZWJHTEFueSA9IFZhcmlh
bnQ8CiAgICAgUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+CiAjaWYgRU5BQkxFKFdF
QkdMMikKICAgICAsIFJlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0PgorICAgICwgUmVmUHRy
PFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s+CiAjZW5kaWYKID47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAppbmRleCBkODdjYWUyNTA2M2M3NmE3ZjdkMDNiMjZj
ODgyM2Y2ZTcyMjE3OWM0Li41Y2JmMmUyODRmNGJlMDgwNGVjOGMzOTlkNTgxNTgxYWIzOWE4OGY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCkBAIC0yNTMs
MjUgKzI1MywxMyBAQCB2b2lkIFdlYkdMQnVmZmVyOjpzZXRDYWNoZWRNYXhJbmRleChHQzNEZW51
bSB0eXBlLCB1bnNpZ25lZCB2YWx1ZSkKICAgICBtX25leHRBdmFpbGFibGVDYWNoZUVudHJ5ID0g
KG1fbmV4dEF2YWlsYWJsZUNhY2hlRW50cnkgKyAxKSAlIFdURl9BUlJBWV9MRU5HVEgobV9tYXhJ
bmRleENhY2hlKTsKIH0KIAotdm9pZCBXZWJHTEJ1ZmZlcjo6c2V0VGFyZ2V0KEdDM0RlbnVtIHRh
cmdldCwgYm9vbCBmb3JXZWJHTDIpCit2b2lkIFdlYkdMQnVmZmVyOjpzZXRUYXJnZXQoR0MzRGVu
dW0gdGFyZ2V0KQogewotICAgIC8vIEluIFdlYkdMLCBhIGJ1ZmZlciBpcyBib3VuZCB0byBvbmUg
dGFyZ2V0IGluIGl0cyBsaWZldGltZQotICAgIGlmIChtX3RhcmdldCkKLSAgICAgICAgcmV0dXJu
OwotICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiB8fCB0
YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSKQotICAgICAg
ICBtX3RhcmdldCA9IHRhcmdldDsKLSAgICBlbHNlIGlmIChmb3JXZWJHTDIpIHsKLSNpZiBFTkFC
TEUoV0VCR0wyKQotICAgICAgICBzd2l0Y2ggKHRhcmdldCkgewotICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpDT1BZX1JFQURfQlVGRkVSOgotICAgICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpDT1BZX1dSSVRFX0JVRkZFUjoKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6UElYRUxfUEFDS19CVUZGRVI6Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlBJ
WEVMX1VOUEFDS19CVUZGRVI6Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVI6Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVO
SUZPUk1fQlVGRkVSOgotICAgICAgICAgICAgbV90YXJnZXQgPSB0YXJnZXQ7Ci0gICAgICAgIH0K
LSNlbmRpZgorICAgIG1fdGFyZ2V0ID0gdGFyZ2V0OworCisgICAgaWYgKHRhcmdldCA9PSBHcmFw
aGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSIHx8IHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIpIHsKKyAgICAgICAgQVNTRVJUKCFtX2FycmF5QnVmZmVy
T3JFbGVtZW50QXJyYXlCdWZmZXIgfHwgdGFyZ2V0ID09IG1fYXJyYXlCdWZmZXJPckVsZW1lbnRB
cnJheUJ1ZmZlcik7CisgICAgICAgIG1fYXJyYXlCdWZmZXJPckVsZW1lbnRBcnJheUJ1ZmZlciA9
IHRhcmdldDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZl
ci5oCmluZGV4IGUzM2Q5NzM3YzM1OTIzOTgzMmM2ZGE1ZjNmNTgwOGZiNGE2Nzg5MDMuLmU4Yzhi
NjdiOWE5NDY3MDA1MTI2MzNiNjMwZDZjZDI3MWY3YWMyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xCdWZmZXIuaApAQCAtNjAsNyArNjAsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRDYWNoZWRNYXhJbmRleChHQzNEZW51bSB0eXBlLCB1bnNpZ25lZCB2YWx1ZSk7CiAKICAg
ICBHQzNEZW51bSBnZXRUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldDsgfQotICAgIHZv
aWQgc2V0VGFyZ2V0KEdDM0RlbnVtLCBib29sIGZvcldlYkdMMik7CisgICAgdm9pZCBzZXRUYXJn
ZXQoR0MzRGVudW0pOworCisgICAgR0MzRGVudW0gYXJyYXlCdWZmZXJPckVsZW1lbnRBcnJheUJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlCdWZmZXJPckVsZW1lbnRBcnJheUJ1ZmZlcjsg
fQogCiAgICAgYm9vbCBoYXNFdmVyQmVlbkJvdW5kKCkgY29uc3QgeyByZXR1cm4gb2JqZWN0KCkg
JiYgbV90YXJnZXQ7IH0KIApAQCAtNzUsNiArNzcsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxK
U0M6OkFycmF5QnVmZmVyPiBtX2VsZW1lbnRBcnJheUJ1ZmZlcjsKICAgICBHQzNEc2l6ZWlwdHIg
bV9ieXRlTGVuZ3RoIHsgMCB9OwogCisgICAgR0MzRGVudW0gbV9hcnJheUJ1ZmZlck9yRWxlbWVu
dEFycmF5QnVmZmVyIHsgMCB9OworCiAgICAgLy8gT3B0aW1pemF0aW9uIGZvciBpbmRleCB2YWxp
ZGF0aW9uLiBGb3IgZWFjaCB0eXBlIG9mIGluZGV4CiAgICAgLy8gKGkuZS4sIFVOU0lHTkVEX1NI
T1JUKSwgY2FjaGUgdGhlIG1heGltdW0gaW5kZXggaW4gdGhlCiAgICAgLy8gZW50aXJlIGJ1ZmZl
ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5jcHAKaW5kZXggOGNhNTI1
MTE1NzM1MDE1NDVhYzU1ZjVlOTQxZWFhNWE4MDQzYmVhZi4uMDA1OTdjZDFlNTdhOGFhM2JkMWQ4
NWY0YTc3NGMwYzY2ZmI5NWVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xR
dWVyeS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgV2ViR0xRdWVyeTo6fldlYkdMUXVlcnkoKQogV2Vi
R0xRdWVyeTo6V2ViR0xRdWVyeShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAg
OiBXZWJHTFNoYXJlZE9iamVjdChjdHgpCiB7Ci0gICAgLy8gRklYTUU6IENhbGwgY3JlYXRlUXVl
cnkgZnJvbSBHcmFwaGljc0NvbnRleHQzRC4KKyAgICBzZXRPYmplY3QoY3R4LmdyYXBoaWNzQ29u
dGV4dDNEKCktPmNyZWF0ZVF1ZXJ5KCkpOwogfQogCiB2b2lkIFdlYkdMUXVlcnk6OmRlbGV0ZU9i
amVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCwgUGxhdGZvcm0zRE9iamVjdCBv
YmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmgKaW5kZXggZmQ2NDRk
MjRjMTI4MWM5YzE5OGUyZjVhZjkxNTJlYzg0NjE1YjM2NS4uNmRiNGUxM2Q2ZTVkY2QyNWU1ODEx
NGFiZjRhZDAyMDA5MGUzZDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xRdWVyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVl
cnkuaApAQCAtMzYsOSArMzYsMTYgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViR0xRdWVy
eT4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJH
TFF1ZXJ5KCk7CiAKKyAgICBib29sIGlzUmVzdWx0QXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9pc1Jlc3VsdEF2YWlsYWJsZTsgfQorCisgICAgdm9pZCBtYWtlUmVzdWx0QXZhaWxhYmxlKCkg
eyBtX2lzUmVzdWx0QXZhaWxhYmxlID0gdHJ1ZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGlj
aXQgV2ViR0xRdWVyeShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdm9pZCBkZWxl
dGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJp
ZGU7CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2lzUmVzdWx0QXZhaWxhYmxlIHsgZmFsc2UgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggYjIxZWE4
YTlhZWI2MWIwYjljY2MwNzVmNjU1ZDhhYWQxYjEzY2NmNS4uN2Y3OWJjZmI0ZGVlNmZkNmRhOTU5
OWM3ZjRjNDk1NTg5OWEwN2RlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTEyMTksMTcgKzEyMTks
MjYgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjaGVja09iamVjdFRvQmVCb3Vu
ZChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIFcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kQnVmZmVyKEdDM0RlbnVtIHRhcmdldCwg
V2ViR0xCdWZmZXIqIGJ1ZmZlcikKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFs
aWRhdGVBbmRDYWNoZUJ1ZmZlckJpbmRpbmcoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNE
ZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYm9vbCBkZWxldGVkOwot
ICAgIGlmICghY2hlY2tPYmplY3RUb0JlQm91bmQoImJpbmRCdWZmZXIiLCBidWZmZXIsIGRlbGV0
ZWQpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFjaGVja09iamVjdFRvQmVCb3VuZChmdW5j
dGlvbk5hbWUsIGJ1ZmZlciwgZGVsZXRlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoZGVsZXRlZCkKICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKLSAgICBpZiAoYnVmZmVyICYm
IGJ1ZmZlci0+Z2V0VGFyZ2V0KCkgJiYgYnVmZmVyLT5nZXRUYXJnZXQoKSAhPSB0YXJnZXQpIHsK
LSAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BF
UkFUSU9OLCAiYmluZEJ1ZmZlciIsICJidWZmZXJzIGNhbiBub3QgYmUgdXNlZCB3aXRoIG11bHRp
cGxlIHRhcmdldHMiKTsKLSAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGJ1ZmZlcikgeworICAg
ICAgICAvLyBJbiBXZWJHTCwgYSBidWZmZXIgbWF5IG9ubHkgYmUgYm91bmQgdG8gb25lIG9mIHRo
ZSBBUlJBWV9CVUZGRVIgb3IgRUxFTUVOVF9BUlJBWV9CVUZGRVIgdGFyZ2V0IGluIGl0cyBsaWZl
dGltZS4KKyAgICAgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVG
RkVSIHx8IHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIp
IHsKKyAgICAgICAgICAgIGlmIChidWZmZXItPmFycmF5QnVmZmVyT3JFbGVtZW50QXJyYXlCdWZm
ZXIoKSAmJiB0YXJnZXQgIT0gYnVmZmVyLT5hcnJheUJ1ZmZlck9yRWxlbWVudEFycmF5QnVmZmVy
KCkpIHsKKyAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImJ1ZmZlcnMgY2FuIG9ubHkgYmUg
Ym91bmQgdG8gb25lIG9mIEFSUkFZX0JVRkZFUiBvciBFTEVNRU5UX0FSUkFZX0JVRkZFUiIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIGJ1ZmZlci0+c2V0VGFyZ2V0KHRhcmdldCk7CiAgICAgfQorCiAgICAgaWYgKHRh
cmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSKQogICAgICAgICBtX2JvdW5k
QXJyYXlCdWZmZXIgPSBidWZmZXI7CiAgICAgZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29u
dGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUikKQEAgLTEyNjYsMTMgKzEyNzUsMTkgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kQnVmZmVyKEdDM0RlbnVtIHRhcmdldCwg
V2ViR0xCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKICAg
ICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VO
VU0sICJiaW5kQnVmZmVyIiwgImludmFsaWQgdGFyZ2V0Iik7Ci0gICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kQnVmZmVy
KEdDM0RlbnVtIHRhcmdldCwgV2ViR0xCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBpZiAoIXZhbGlk
YXRlQW5kQ2FjaGVCdWZmZXJCaW5kaW5nKCJiaW5kQnVmZmVyIiwgdGFyZ2V0LCBidWZmZXIpKQor
ICAgICAgICByZXR1cm47CisKICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIodGFyZ2V0LCBvYmpl
Y3RPclplcm8oYnVmZmVyKSk7Ci0gICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgYnVmZmVyLT5zZXRU
YXJnZXQodGFyZ2V0LCBpc1dlYkdMMigpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpiaW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVy
KiBidWZmZXIpCkBAIC0xODI1LDE0ICsxODQwLDI5IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6ZGVsZXRlT2JqZWN0KFdlYkdMT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKKyNkZWZpbmUgUkVNT1ZFX0JVRkZFUl9GUk9NX0JJTkRJTkcoYmluZGluZykgXAor
ICAgIGlmIChiaW5kaW5nID09IGJ1ZmZlcikgXAorICAgICAgICBiaW5kaW5nID0gbnVsbHB0cjsK
Kwordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmNhY2hlRGVsZXRlZEJ1ZmZlcihX
ZWJHTEJ1ZmZlciogYnVmZmVyKQoreworICAgIFJFTU9WRV9CVUZGRVJfRlJPTV9CSU5ESU5HKG1f
Ym91bmRBcnJheUJ1ZmZlcik7CisgICAgUkVNT1ZFX0JVRkZFUl9GUk9NX0JJTkRJTkcobV9ib3Vu
ZENvcHlSZWFkQnVmZmVyKTsKKyAgICBSRU1PVkVfQlVGRkVSX0ZST01fQklORElORyhtX2JvdW5k
Q29weVdyaXRlQnVmZmVyKTsKKyAgICBSRU1PVkVfQlVGRkVSX0ZST01fQklORElORyhtX2JvdW5k
UGl4ZWxQYWNrQnVmZmVyKTsKKyAgICBSRU1PVkVfQlVGRkVSX0ZST01fQklORElORyhtX2JvdW5k
UGl4ZWxVbnBhY2tCdWZmZXIpOworICAgIFJFTU9WRV9CVUZGRVJfRlJPTV9CSU5ESU5HKG1fYm91
bmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7CisgICAgUkVNT1ZFX0JVRkZFUl9GUk9NX0JJTkRJ
TkcobV9ib3VuZFVuaWZvcm1CdWZmZXIpOworCisgICAgbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0
LT51bmJpbmRCdWZmZXIoKmJ1ZmZlcik7Cit9CisKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6ZGVsZXRlQnVmZmVyKFdlYkdMQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgaWYgKCFkZWxl
dGVPYmplY3QoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX2JvdW5kQXJyYXlC
dWZmZXIgPT0gYnVmZmVyKQotICAgICAgICBtX2JvdW5kQXJyYXlCdWZmZXIgPSBudWxscHRyOwog
Ci0gICAgbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT51bmJpbmRCdWZmZXIoKmJ1ZmZlcik7Cisg
ICAgdW5jYWNoZURlbGV0ZWRCdWZmZXIoYnVmZmVyKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpkZWxldGVGcmFtZWJ1ZmZlcihXZWJHTEZyYW1lYnVmZmVyKiBmcmFtZWJ1
ZmZlcikKQEAgLTI2ODAsNiArMjcxMCwxOSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgRwogI2Vu
ZGlmIC8vIFVTRShBTkdMRSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIGRlZmF1bHQ6Cisj
aWYgRU5BQkxFKFdFQkdMMikKKyAgICAgICAgaWYgKGlzV2ViR0wyKCkpIHsKKyAgICAgICAgICAg
IHN3aXRjaCAocG5hbWUpIHsKKyAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVJfTU9ERToKKyAgICAgICAgICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlRSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HUzoKKyAgICAgICAgICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9VTklGT1JNX0JMT0NLUzoKKyAgICAgICAgICAgICAg
ICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihvYmplY3RPclplcm8ocHJvZ3JhbSksIHBuYW1lLCAm
dmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNl
bmRpZiAvLyBFTkFCTEUoV0VCR0wyKQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCAiZ2V0UHJvZ3JhbVBhcmFtZXRlciIsICJpbnZhbGlk
IHBhcmFtZXRlciBuYW1lIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaAppbmRleCA1OWEwYzA3ZDVlZDUzOTNiMmJlMTI5YWRmZjgyZTdhMDEwZGRmYWUyLi5kMmZj
NWRlYTA3YjNhMmE0MmExODJkYjNmNjE0ZDcxNDU4NWMwNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC00
NTcsNiArNDU3LDggQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBlbmFibGVTdXBwb3J0ZWRFeHRl
bnNpb24oQVNDSUlMaXRlcmFsIGV4dGVuc2lvbk5hbWVMaXRlcmFsKTsKIAorICAgIHZpcnR1YWwg
dm9pZCB1bmNhY2hlRGVsZXRlZEJ1ZmZlcihXZWJHTEJ1ZmZlciopOworCiAgICAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CiAgICAgUmVmUHRyPFdlYkdMQ29udGV4dEdyb3Vw
PiBtX2NvbnRleHRHcm91cDsKIApAQCAtNDY0LDcgKzQ2Niw3IEBAIHByb3RlY3RlZDoKICAgICAv
LyBUaGlzIGlzIHVzZWQgYm90aCBmb3Igc3ludGhldGljIGFuZCByZWFsIGNvbnRleHQgbG9zc2Vz
LiBGb3IgcmVhbCBvbmVzLCBpdCdzCiAgICAgLy8gbGlrZWx5IHRoYXQgdGhlcmUncyBubyBKYXZh
U2NyaXB0IG9uIHRoZSBzdGFjaywgYnV0IHRoYXQgbWlnaHQgYmUgZGVwZW5kZW50CiAgICAgLy8g
b24gaG93IGV4YWN0bHkgdGhlIHBsYXRmb3JtIGRpc2NvdmVycyB0aGF0IHRoZSBjb250ZXh0IHdh
cyBsb3N0LiBGb3IgYmV0dGVyCi0gICAgLy8gcG9ydGFiaWxpdHkgd2UgYWx3YXlzIGRlZmVyIHRo
ZSBkaXNwYXRjaCBvZiB0aGUgZXZlbnQuCisgICAgICAgIC8vIHBvcnRhYmlsaXR5IHdlIGFsd2F5
cyBkZWZlciB0aGUgZGlzcGF0Y2ggb2YgdGhlIGV2ZW50LgogICAgIFN1c3BlbmRhYmxlVGltZXIg
bV9kaXNwYXRjaENvbnRleHRMb3N0RXZlbnRUaW1lcjsKICAgICBTdXNwZW5kYWJsZVRpbWVyIG1f
ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZEV2ZW50VGltZXI7CiAgICAgYm9vbCBtX3Jlc3RvcmVBbGxv
d2VkIHsgZmFsc2UgfTsKQEAgLTgxNyw2ICs4MTksOCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gUmV0
dXJuIGZhbHNlIGlmIGNhbGxlciBzaG91bGQgcmV0dXJuIHdpdGhvdXQgZnVydGhlciBwcm9jZXNz
aW5nLgogICAgIGJvb2wgY2hlY2tPYmplY3RUb0JlQm91bmQoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBXZWJHTE9iamVjdCosIGJvb2wmIGRlbGV0ZWQpOwogCisgICAgYm9vbCB2YWxpZGF0ZUFu
ZENhY2hlQnVmZmVyQmluZGluZyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIHRh
cmdldCwgV2ViR0xCdWZmZXIqKTsKKwogICAgIC8vIEhlbHBlcnMgZm9yIHNpbXVsYXRpbmcgdmVy
dGV4QXR0cmliMC4KICAgICB2b2lkIGluaXRWZXJ0ZXhBdHRyaWIwKCk7CiAgICAgT3B0aW9uYWw8
Ym9vbD4gc2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDM0R1aW50IG51bVZlcnRleCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suY3Bw
CmluZGV4IGU1Mjc2YjhlMjA5OTQyN2UxNmU2YjRiMGFmMzgyOGRkYTBhNDk5MTEuLjRjMDIyMjU3
YmI0NDA1YWMxMDk0ZTQ5NDE1NDcxYjNhMTgwYmZhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suY3BwCkBAIC00NiwxNCAr
NDYsMTIgQEAgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6fldlYkdMVHJhbnNmb3JtRmVlZGJhY2so
KQogV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjayhXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJHTFNoYXJlZE9iamVjdChjdHgpCiB7
Ci0gICAgLy8gRklYTUU6IENhbGwgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2sgZnJvbSBHcmFwaGlj
c0NvbnRleHQzRC4KKyAgICBzZXRPYmplY3QoY3R4LmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0
ZVRyYW5zZm9ybUZlZWRiYWNrKCkpOwogfQogCiB2b2lkIFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s6
OmRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCwgUGxhdGZvcm0z
RE9iamVjdCBvYmplY3QpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHQzZCk7Ci0gICAgVU5V
U0VEX1BBUkFNKG9iamVjdCk7Ci0gICAgLy8gRklYTUU6IENhbGwgZGVsZXRlVHJhbnNmb3JtRmVl
ZGJhY2sgZnJvbSBHcmFwaGljc0NvbnRleHQzRC4KKyAgICBjb250ZXh0M2QtPmRlbGV0ZVRyYW5z
Zm9ybUZlZWRiYWNrKG9iamVjdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGEzZDFkZTJjYzI3YTY2
OTM3ZmVlMWVkMTUyNmI1MzNmYjhiN2VjNGMuLmEwOWRkNDM5NTRlMmY1YTFhNTBhZGYyNWMwMzY2
NjNiZWRkNmZlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtNTQ4LDYgKzU0OCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFViA9IDB4OEMzQiwKICAgICAgICAgUkdCOV9F
NSA9IDB4OEMzRCwKICAgICAgICAgVU5TSUdORURfSU5UXzVfOV85XzlfUkVWID0gMHg4QzNFLAor
ICAgICAgICBUUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR19NQVhfTEVOR1RIID0gMHg4Qzc2LAog
ICAgICAgICBUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX01PREUgPSAweDhDN0YsCiAgICAgICAg
IE1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUyA9IDB4OEM4MCwKICAg
ICAgICAgVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkdTID0gMHg4QzgzLApAQCAtMTE1OSw2ICsx
MTYwLDggQEAgcHVibGljOgogICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcihHQzNEdWludCBp
bmRleCwgR0MzRGludCBzaXplLCBHQzNEZW51bSB0eXBlLCBHQzNEYm9vbGVhbiBub3JtYWxpemVk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgc3RyaWRlLCBHQzNEaW50
cHRyIG9mZnNldCk7CiAKKyAgICB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdDM0R1aW50IGlu
ZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0RzaXplaSBzdHJpZGUsIEdDM0Rp
bnRwdHIgb2Zmc2V0KTsKKwogICAgIHZvaWQgdmlld3BvcnQoR0MzRGludCB4LCBHQzNEaW50IHks
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CiAKICAgICB2b2lkIHJlc2hhcGUo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKQEAgLTExNjcsMTIgKzExNzAsMzAgQEAgcHVibGljOgog
ICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBj
b3VudCwgR0MzRGVudW0gdHlwZSwgR0MzRGludHB0ciBvZmZzZXQsIEdDM0RzaXplaSBwcmltY291
bnQpOwogICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQzNEdWludCBpbmRleCwgR0MzRHVp
bnQgZGl2aXNvcik7CiAKKyAgICAvLyBXZWJHTDIgUXVlcnkgY2FsbHMKKyAgICBQbGF0Zm9ybTNE
T2JqZWN0IGNyZWF0ZVF1ZXJ5KCk7CisgICAgdm9pZCBiZWdpblF1ZXJ5KEdDM0RlbnVtLCBQbGF0
Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGVuZFF1ZXJ5KEdDM0RlbnVtKTsKKyAgICB2b2lkIGdl
dFF1ZXJ5T2JqZWN0dWl2KEdDM0R1aW50LCBHQzNEZW51bSwgR0MzRHVpbnQqKTsKKwogICAgIC8v
IFZlcnRleEFycmF5T2plY3QgY2FsbHMKICAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZVZlcnRl
eEFycmF5KCk7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybTNET2JqZWN0KTsK
ICAgICBHQzNEYm9vbGVhbiBpc1ZlcnRleEFycmF5KFBsYXRmb3JtM0RPYmplY3QpOwogICAgIHZv
aWQgYmluZFZlcnRleEFycmF5KFBsYXRmb3JtM0RPYmplY3QpOwogCisgICAgLy8gV2ViR0wyIFRy
YW5zZm9ybSBGZWVkYmFjayBjYWxscworICAgIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2soKTsKKyAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3Jt
M0RPYmplY3QpOworICAgIEdDM0Rib29sZWFuIGlzVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm0z
RE9iamVjdCk7CisgICAgdm9pZCBiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0MzRGVudW0sIFBsYXRm
b3JtM0RPYmplY3QpOworICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQzNEZW51bSk7
CisgICAgdm9pZCBlbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIHZvaWQgdHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5ncyhQbGF0Zm9ybTNET2JqZWN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEdD
M0RlbnVtKTsKKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9ybTNE
T2JqZWN0LCBHQzNEdWludCwgQWN0aXZlSW5mbyYpOworCisgICAgdm9pZCBiaW5kQnVmZmVyQmFz
ZShHQzNEZW51bSwgR0MzRHVpbnQsIFBsYXRmb3JtM0RPYmplY3QpOworCiAgICAgdm9pZCBwYWlu
dFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjb25zdCBJbnRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUmIGNhbnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYp
OwogCiAgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
M0RBTkdMRS5jcHAKaW5kZXggNmI1YmUxMDRiZDAzY2FkNjM3ZWMyMDJlNzkzOTFkZmMxMzZkNDkw
YS4uNzdlZDRmZjBiZjhlMDU4MTMwMDI3NjJlYTYxZGI1Y2MzYmMxZjFkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RB
TkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0M0RBTkdMRS5jcHAKQEAgLTE0MjgsNiArMTQyOCwxMiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1aW50IGluZGV4LCBHQzNEaW50
IHNpemUsIEdDM0RlbgogICAgIGdsOjpWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0
eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dmVydGV4QXR0cmliSVBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVu
dW0gdHlwZSwgR0MzRHNpemVpIHN0cmlkZSwgR0MzRGludHB0ciBvZmZzZXQpCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlZlcnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBz
aXplLCB0eXBlLCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KG9mZnNldCkpKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmlld3Bv
cnQoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdo
dCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKQEAgLTE4MTMsNiArMTgxOSwxMDkgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliRGl2aXNvcihHQzNEdWludCBpbmRl
eCwgR0MzRHVpbnQgZGl2aXNvcikKICAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2
aXNvcihpbmRleCwgZGl2aXNvcik7CiB9CiAKKy8vIFF1ZXJ5IEZ1bmN0aW9ucworCitQbGF0Zm9y
bTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVRdWVyeSgpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgR0x1aW50IG5hbWUgPSAwOworICAgIGdsOjpHZW5RdWVyaWVz
KDEsICZuYW1lKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6YmVnaW5RdWVyeShHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgcXVlcnkpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OkJlZ2luUXVlcnkodGFyZ2V0LCBx
dWVyeSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuZFF1ZXJ5KEdDM0RlbnVtIHRh
cmdldCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6RW5kUXVlcnkodGFy
Z2V0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UXVlcnlPYmplY3R1aXYoR0Mz
RHVpbnQgaWQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEdWludCogcGFyYW1zKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpdihpZCwgcG5hbWUsIHBh
cmFtcyk7Cit9CisKKy8vIFRyYW5zZm9ybSBGZWVkYmFjayBGdW5jdGlvbnMKKworUGxhdGZvcm0z
RE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIEdMdWludCBuYW1lID0gMDsKKyAgICBnbDo6
R2VuVHJhbnNmb3JtRmVlZGJhY2tzKDEsICZuYW1lKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm0z
RE9iamVjdCB0cmFuc2Zvcm1GZWVkYmFjaykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBnbDo6RGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tzKDEsICZ0cmFuc2Zvcm1GZWVkYmFjayk7
Cit9CisKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1RyYW5zZm9ybUZlZWRiYWNr
KFBsYXRmb3JtM0RPYmplY3QgdHJhbnNmb3JtRmVlZGJhY2spCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgcmV0dXJuIGdsOjpJc1RyYW5zZm9ybUZlZWRiYWNrKHRyYW5zZm9ybUZl
ZWRiYWNrKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZFRyYW5zZm9ybUZlZWRi
YWNrKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0cmFuc2Zvcm1GZWVkYmFjaykK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6QmluZFRyYW5zZm9ybUZlZWRi
YWNrKHRhcmdldCwgdHJhbnNmb3JtRmVlZGJhY2spOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDM0RlbnVtIHByaW1pdGl2ZU1vZGUpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OkJlZ2luVHJhbnNmb3JtRmVlZGJhY2so
cHJpbWl0aXZlTW9kZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuZFRyYW5zZm9y
bUZlZWRiYWNrKCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6RW5kVHJh
bnNmb3JtRmVlZGJhY2soKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dHJhbnNmb3Jt
RmVlZGJhY2tWYXJ5aW5ncyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB2YXJ5aW5ncywgR0MzRGVudW0gYnVmZmVyTW9kZSkKK3sKKyAgICBhdXRvIGNvbnZl
cnRlZFZhcnlpbmdzID0gdmFyeWluZ3MubWFwKFtdKGNvbnN0IFN0cmluZyYgdmFyeWluZykgLT4g
Y29uc3QgY2hhciogeworICAgICAgICByZXR1cm4gdmFyeWluZy51dGY4KCkuZGF0YSgpOworICAg
IH0pOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdzKHByb2dyYW0sIHZhcnlpbmdzLnNpemUoKSwgY29udmVydGVkVmFyeWluZ3MuZGF0
YSgpLCBidWZmZXJNb2RlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5k
ZXgsIEFjdGl2ZUluZm8mIGluZm8pCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
R0MzRHNpemVpIGJ1ZlNpemUgPSAwOworICAgIGdsOjpHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HX01BWF9MRU5HVEgsICZi
dWZTaXplKTsKKyAgICBpZiAoIWJ1ZlNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIEdDM0Rz
aXplaSBsZW5ndGggPSAwOworICAgIEdDM0RzaXplaSBzaXplID0gMDsKKyAgICBHQzNEZW51bSB0
eXBlID0gMDsKKyAgICBWZWN0b3I8R0MzRGNoYXI+IG5hbWUoYnVmU2l6ZSk7CisKKyAgICBnbDo6
R2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dyYW0sIGluZGV4LCBidWZTaXplLCAmbGVu
Z3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUuZGF0YSgpKTsKKworICAgIGluZm8ubmFtZSA9IFN0cmlu
ZyhuYW1lLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICBpbmZvLnNpemUgPSBzaXplOworICAgIGluZm8u
dHlwZSA9IHR5cGU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZmZXJCYXNl
KEdDM0RlbnVtIHRhcmdldCwgR0MzRHVpbnQgaW5kZXgsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVy
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpCaW5kQnVmZmVyQmFzZSh0
YXJnZXQsIGluZGV4LCBidWZmZXIpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1JBUEhJ
Q1NfQ09OVEVYVF8zRCkgJiYgVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHQzRE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDJiYzhlMTdlMDYyMTgxZDcwZTA0ZjdhYzJjOTFi
Y2EzODMxZDkyNS4uMjA1YjNlZjhjYjc3NDhmYjc1ZDU3MzVhMDBhMTk5ZTYxODI0NWEyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC02MTEs
NyArNjExLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3IKIAogICAgIDo6Z2xHZXRBY3RpdmVV
bmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMu
ZGF0YSgpLCBwbmFtZSwgcGFyYW1zLmRhdGEoKSk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBpZiBQ
TEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV1BFKQogCiBHQzNEZW51bSBHcmFwaGljc0NvbnRl
eHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQzNEZW51bSB0YXJnZXQpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387294</attachid>
            <date>2020-01-09 17:25:55 -0800</date>
            <delta_ts>2020-01-09 18:40:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205823-20200109172554.patch</filename>
            <type>text/plain</type>
            <size>45460</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTMwMDY4OWQxOTRmMjdj
NTk4MTMxYjU5ZjI5NDRiOTRmMDA2MTU5NC4uZDQ0Y2YyOTQ2OGYzYWYxM2EwYzk1YjRjNTI4ZDJm
NWYwYTZkNDlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIwLTAxLTA5ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdMIDJdIEltcGxl
bWVudCB0cmFuc2Zvcm0gZmVlZGJhY2sgYW5kIHBhc3MgdHJhbnNmb3JtIGZlZWRiYWNrIGNvbmZv
cm1hbmNlIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDU4MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJh
Y2sgY29uZm9ybWFuY2UgdGVzdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnRXZWJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9KU1ZhbHVlKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6fldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5p
dGlhbGl6ZVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YSk6IEFOR0xFIHZhbGlkYXRp
b24gaW4gbWFwQnVmZmVyUmFuZ2UgbWF5IGZhaWw7IHByZXZlbnQgY29weWluZyBmcm9tIGEgbnVs
bHB0ci4gCisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhB
dHRyaWJJUG9pbnRlcik6CisKKyAgICAgICAgQmFyZSBtaW5pbXVtIHN0dWJzIHRvIGdldCBXZWJH
TFF1ZXJ5IHBhc3NpbmcgdHJhbnNmb3JtX2ZlZWRiYWNrIHRlc3RzOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5RdWVyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFF1ZXJ5OjpXZWJHTFF1ZXJ5KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFF1ZXJ5Lmg6CisKKyAgICAgICAgVHJhbnNmb3JtIGZlZWRiYWNrIGZ1bmN0aW9uczoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRy
YW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
VHJhbnNmb3JtRmVlZGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xUcmFuc2Zvcm1G
ZWVkYmFjazo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFRyYW5zZm9ybUZlZWRiYWNrOjpkZWxldGVPYmplY3RJbXBsKToKKworICAgICAgICBNaXNjIGZ1
bmN0aW9ucyB0aGF0IG5lZWRlZCBhZGRlZCBmdW5jdGlvbmFsaXR5OgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorCisg
ICAgICAgIEhlbHBlciBmdW5jdGlvbnMgdG8gdHJhY2sgV2ViR0wyIHN0YXRlL29iamVjdHM6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmNhY2hlRGVsZXRlZEJ1
ZmZlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQW55Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OnNldFRhcmdl
dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlQW5kQ2FjaGVCdWZmZXJCaW5kaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5jYWNoZURlbGV0ZWRCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dy
YW1QYXJhbWV0ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaDoKKworICAgICAgICBQaXBlIG5ldyBHcmFwaGljc0NvbnRleHRHTCBtZXRob2RzIHRv
IEFOR0xFOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4
QXR0cmliSVBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZVF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpiZWdpblF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjplbmRRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0UXVlcnlPYmplY3R1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNUcmFuc2Zvcm1GZWVkYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmluZFRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpi
ZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5k
QnVmZmVyQmFzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmg6CisKIDIwMjAtMDEtMDcgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlZm9ybWF0IEZyYW1lTG9hZGVyIGxvZ2dpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcAppbmRleCA3
OGE0YWU2MmU3NDdhYzcxNjY4MTMzM2I0ZTQ0N2ZmYTViZTYxZDEwLi4xODRiMzMwN2ExYzYwN2Rm
NTRiN2UwMGRiOWU3YThlNTUwMTQwZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAi
SlNXZWJHTFByb2dyYW0uaCIKICNpbmNsdWRlICJKU1dlYkdMUmVuZGVyYnVmZmVyLmgiCiAjaW5j
bHVkZSAiSlNXZWJHTFRleHR1cmUuaCIKKyNpbmNsdWRlICJKU1dlYkdMVHJhbnNmb3JtRmVlZGJh
Y2suaCIKICNpbmNsdWRlICJKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCIKICNpbmNsdWRlICJK
U1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NJbmxpbmVzLmg+CkBAIC0xMzgsNiArMTM5LDkgQEAgSlNWYWx1ZSBjb252ZXJ0VG9KU1ZhbHVl
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCYK
ICAgICAgICAgLAogICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0PiYgYXJyYXkpIHsKICAgICAgICAgICAgIHJldHVybiB0b0pTKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAmZ2xvYmFsT2JqZWN0LCBhcnJheS5nZXQoKSk7CisgICAgICAgIH0sCisgICAgICAgIFsm
XSAoY29uc3QgUmVmUHRyPFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s+JiB0cmFuc2Zvcm1GZWVkYmFj
aykgeworICAgICAgICAgICAgcmV0dXJuIHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsICZnbG9i
YWxPYmplY3QsIHRyYW5zZm9ybUZlZWRiYWNrLmdldCgpKTsKICAgICAgICAgfQogI2VuZGlmCiAg
ICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHAKaW5kZXggODI1ZTc1YTk4YzFhNGMxM2RkOTU1Yzc4NTMyMzFkYTg3YTkz
ODFjYy4uNzIyMDA3NDZkZGY2N2VjOTViNTEyN2M3YTQ0OTllNzYyODllZWRjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5j
cHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVk
ZSAiRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgi
CiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCkBAIC05NSw2ICs5NiwxNiBAQCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmIGNh
bnZhcywgUmVmPEdyYXBoaWNzQwogewogICAgIGluaXRpYWxpemVTaGFkZXJFeHRlbnNpb25zKCk7
CiAgICAgaW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpOworICAgIGluaXRpYWxpemVUcmFu
c2Zvcm1GZWVkYmFja0J1ZmZlckNhY2hlKCk7Cit9CisKK1dlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
On5XZWJHTDJSZW5kZXJpbmdDb250ZXh0KCkKK3sKKyAgICAvLyBSZW1vdmUgYWxsIHJlZmVyZW5j
ZXMgdG8gV2ViR0xPYmplY3RzIHNvIGlmIHRoZXkgYXJlIHRoZSBsYXN0IHJlZmVyZW5jZQorICAg
IC8vIHRoZXkgd2lsbCBiZSBmcmVlZCBiZWZvcmUgdGhlIGxhc3QgY29udGV4dCBpcyByZW1vdmVk
IGZyb20gdGhlIGNvbnRleHQgZ3JvdXAuCisgICAgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrID0g
bnVsbHB0cjsKKyAgICBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzLmNsZWFyKCk7Cisg
ICAgbV9hY3RpdmVRdWVyaWVzLmNsZWFyKCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpCkBAIC0xMTgsNiArMTI5LDE0IEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVNoYWRlckV4dGVuc2lvbnMo
KQogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9m
cmFnX2RlcHRoIik7CiB9CiAKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6
ZVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ2FjaGUoKQoreworICAgIGludCBtYXhUcmFuc2Zvcm1G
ZWVkYmFja0F0dHJpYnMgPSBnZXRJbnRQYXJhbWV0ZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9U
UkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUyk7CisgICAgQVNTRVJUKG1heFRyYW5z
Zm9ybUZlZWRiYWNrQXR0cmlicyA+PSA0KTsKKworICAgIG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFj
a0J1ZmZlcnMucmVzaXplKG1heFRyYW5zZm9ybUZlZWRiYWNrQXR0cmlicyk7Cit9CisKIGlubGlu
ZSBzdGF0aWMgT3B0aW9uYWw8dW5zaWduZWQ+IGFycmF5QnVmZmVyVmlld0VsZW1lbnRTaXplKGNv
bnN0IEFycmF5QnVmZmVyVmlldyYgZGF0YSkKIHsKICAgICBzd2l0Y2ggKGRhdGEuZ2V0VHlwZSgp
KSB7CkBAIC0zMDcsNyArMzI2LDkgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRC
dWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNyY0J5dGUKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICAvLyBGSVhNRTogQ29hbGVzY2UgbXVsdGlwbGUgZ2V0QnVmZmVyU3Vi
RGF0YSgpIGNhbGxzIHRvIHVzZSBhIHNpbmdsZSBtYXAoKSBjYWxsCiAgICAgdm9pZCogcHRyID0g
bV9jb250ZXh0LT5tYXBCdWZmZXJSYW5nZSh0YXJnZXQsIGNoZWNrZWRTcmNCeXRlT2Zmc2V0LnVu
c2FmZUdldCgpLCBzdGF0aWNfY2FzdDxHQzNEc2l6ZWlwdHI+KGNoZWNrZWRDb3B5TGVuZ3RoUHRy
LnVuc2FmZUdldCgpICogY2hlY2tlZEVsZW1lbnRTaXplLnVuc2FmZUdldCgpKSwgR3JhcGhpY3ND
b250ZXh0R0w6Ok1BUF9SRUFEX0JJVCk7Ci0gICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihk
c3REYXRhLT5iYXNlQWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRzdE9mZnNl
dCAqIGVsZW1lbnRTaXplLCBwdHIsIGNvcHlMZW5ndGggKiBlbGVtZW50U2l6ZSk7CisgICAgaWYg
KHB0cikKKyAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNlQWRk
cmVzcygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRTaXpl
LCBwdHIsIGNvcHlMZW5ndGggKiBlbGVtZW50U2l6ZSk7CisKICAgICBpZiAoIW1fY29udGV4dC0+
dW5tYXBCdWZmZXIodGFyZ2V0KSkKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZ2V0QnVmZmVyU3ViRGF0YSIsICJGYWlsZWQg
d2hpbGUgdW5tYXBwaW5nIGJ1ZmZlciIpOwogI2VuZGlmCkBAIC04NjIsOSArODgzLDEyIEBAIHZv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYoR0MzRHVpbnQsIFVp
bnQzMkxpc3QmJikKICAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gdmVydGV4
QXR0cmliSTR1aXYoKSIpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRl
eEF0dHJpYklQb2ludGVyKEdDM0R1aW50LCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRHNpemVpLCBH
QzNEaW50NjQpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYklQb2lu
dGVyKEdDM0R1aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0RzaXpl
aSBzdHJpZGUsIEdDM0RpbnQ2NCBvZmZzZXQpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElN
UExFTUVOVEVEIF1dIHZlcnRleEF0dHJpYklQb2ludGVyKCkiKTsKKyAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHQtPnZlcnRl
eEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIG9mZnNldCk7CiB9CiAK
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIoR0MzRGJpdGZpZWxkIG1hc2spCkBA
IC0xMDQyLDggKzEwNjYsMTIgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhckJ1
ZmZlcmZpKEdDM0RlbnVtIGJ1ZmZlciwgR0MzRGludCBkcmF3YnVmZmVyLAogCiBSZWZQdHI8V2Vi
R0xRdWVyeT4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUXVlcnkoKQogewotICAgIExP
RyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSBjcmVhdGVRdWVyeSgpIik7Ci0gICAgcmV0
dXJuIG51bGxwdHI7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHF1ZXJ5ID0gV2ViR0xRdWVyeTo6Y3JlYXRlKCp0
aGlzKTsKKyAgICBhZGRTaGFyZWRPYmplY3QocXVlcnkuZ2V0KCkpOworICAgIHJldHVybiBxdWVy
eTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVRdWVyeShXZWJHTFF1
ZXJ5KikKQEAgLTEwNTcsMTQgKzEwODUsNDUgQEAgR0MzRGJvb2xlYW4gV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6aXNRdWVyeShXZWJHTFF1ZXJ5KikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5RdWVyeShHQzNEZW51bSwgV2ViR0xRdWVy
eSYpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luUXVlcnkoR0MzRGVudW0gdGFy
Z2V0LCBXZWJHTFF1ZXJ5JiBxdWVyeSkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVN
RU5URUQgXV0gYmVnaW5RdWVyeSgpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IEFkZCB2YWxpZGF0aW9uIHRvIHBy
ZXZlbnQgYmFkIGNhY2hpbmcuCisKKyAgICAvLyBPbmx5IG9uZSBxdWVyeSBvYmplY3QgY2FuIGJl
IGFjdGl2ZSBwZXIgdGFyZ2V0LgorICAgIGF1dG8gdGFyZ2V0S2V5ID0gKHRhcmdldCA9PSBHcmFw
aGljc0NvbnRleHRHTDo6QU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRSkgPyBHcmFwaGlj
c0NvbnRleHRHTDo6QU5ZX1NBTVBMRVNfUEFTU0VEIDogdGFyZ2V0OworCisgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX2FjdGl2ZVF1ZXJpZXMuYWRkKHRhcmdldEtleSwgbWFrZVJlZlB0cigmcXVlcnkp
KTsKKworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiYmVnaW5RdWVy
eSIsICJRdWVyeSBvYmplY3Qgb2YgdGFyZ2V0IGlzIGFscmVhZHkgYWN0aXZlIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbnRleHQtPmJlZ2luUXVlcnkodGFyZ2V0LCBxdWVy
eS5vYmplY3QoKSk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZW5kUXVlcnko
R0MzRGVudW0pCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmVuZFF1ZXJ5KEdDM0RlbnVt
IHRhcmdldCkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gZW5kUXVl
cnkoKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB0YXJnZXRLZXkgPSAo
dGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpBTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFU
SVZFKSA/IEdyYXBoaWNzQ29udGV4dEdMOjpBTllfU0FNUExFU19QQVNTRUQgOiB0YXJnZXQ7CisK
KyAgICBhdXRvIHF1ZXJ5ID0gbV9hY3RpdmVRdWVyaWVzLnRha2UodGFyZ2V0S2V5KTsKKyAgICBp
ZiAoIXF1ZXJ5KSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdM
OjpJTlZBTElEX09QRVJBVElPTiwgImVuZFF1ZXJ5IiwgIlF1ZXJ5IG9iamVjdCBvZiB0YXJnZXQg
aXMgbm90IGFjdGl2ZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb250ZXh0
LT5lbmRRdWVyeSh0YXJnZXQpOworCisgICAgLy8gQSBxdWVyeSdzIHJlc3VsdCBtdXN0IG5vdCBi
ZSBtYWRlIGF2YWlsYWJsZSB1bnRpbCBjb250cm9sIGhhcyByZXR1cm5lZCB0byB0aGUgdXNlciBh
Z2VudCdzIG1haW4gbG9vcC4KKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV2ZW50TG9v
cCgpLnF1ZXVlTWljcm90YXNrKFtxdWVyeV0geworICAgICAgICBxdWVyeS0+bWFrZVJlc3VsdEF2
YWlsYWJsZSgpOworICAgIH0pOwogfQogCiBSZWZQdHI8V2ViR0xRdWVyeT4gV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0UXVlcnkoR0MzRGVudW0sIEdDM0RlbnVtKQpAQCAtMTA3MywxMCArMTEz
MiwyNSBAQCBSZWZQdHI8V2ViR0xRdWVyeT4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVl
cnkoR0MzRGVudW0sIEdDM0RlbnVtKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1XZWJHTEFu
eSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlcihXZWJHTFF1ZXJ5Jiwg
R0MzRGVudW0pCitXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBhcmFt
ZXRlcihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0MzRGVudW0gcG5hbWUpCiB7Ci0gICAgTE9HKFdlYkdM
LCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGdldFF1ZXJ5UGFyYW1ldGVyKSIpOwotICAgIHJldHVy
biBudWxscHRyOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgc3dpdGNoIChwbmFtZSkgeworICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlFVRVJZX1JFU1VMVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpRVUVS
WV9SRVNVTFRfQVZBSUxBQkxFOgorICAgICAgICBpZiAoIXF1ZXJ5LmlzUmVzdWx0QXZhaWxhYmxl
KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5V
TSwgImdldFF1ZXJ5UGFyYW1ldGVyIiwgIkludmFsaWQgcG5hbWUiKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICBtX2NvbnRl
eHQtPmdldFF1ZXJ5T2JqZWN0dWl2KHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSwgJnJlc3VsdCk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUmVmUHRyPFdlYkdMU2FtcGxlcj4gV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Y3JlYXRlU2FtcGxlcigpCkBAIC0xMTU3LDQ1ICsxMjMxLDg4IEBAIFdlYkdM
QW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFN5bmNQYXJhbWV0ZXIoV2ViR0xTeW5jJiwg
R0MzRGVudW0pCiAKIFJlZlB0cjxXZWJHTFRyYW5zZm9ybUZlZWRiYWNrPiBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCiB7Ci0gICAgTE9HKFdlYkdMLCAi
W1sgTk9UIElNUExFTUVOVEVEIF1dIGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkiKTsKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gdHJhbnNmb3JtRmVlZGJhY2sgPSBXZWJHTFRy
YW5zZm9ybUZlZWRiYWNrOjpjcmVhdGUoKnRoaXMpOworICAgIGFkZFNoYXJlZE9iamVjdCh0cmFu
c2Zvcm1GZWVkYmFjay5nZXQoKSk7CisgICAgcmV0dXJuIHRyYW5zZm9ybUZlZWRiYWNrOwogfQog
Ci12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFdl
YkdMVHJhbnNmb3JtRmVlZGJhY2sqKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayhXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKiBmZWVkYmFja09iamVj
dCkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gZGVsZXRlVHJhbnNm
b3JtRmVlZGJhY2soKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2sgPT0gZmVlZGJh
Y2tPYmplY3QpCisgICAgICAgIG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjayA9IG51bGxwdHI7CisK
KyAgICBkZWxldGVPYmplY3QoZmVlZGJhY2tPYmplY3QpOwogfQogCi1HQzNEYm9vbGVhbiBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFdlYkdMVHJhbnNmb3JtRmVl
ZGJhY2sqKQorR0MzRGJvb2xlYW4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNUcmFuc2Zvcm1G
ZWVkYmFjayhXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKiBmZWVkYmFja09iamVjdCkKIHsKLSAgICBM
T0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gaXNUcmFuc2Zvcm1GZWVkYmFjaygpIik7
Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IWZlZWRiYWNrT2JqZWN0IHx8IGZlZWRiYWNrT2JqZWN0LT5pc0RlbGV0ZWQoKSB8fCAhdmFsaWRh
dGVXZWJHTE9iamVjdCgiaXNUcmFuc2Zvcm1GZWVkYmFjayIsIGZlZWRiYWNrT2JqZWN0KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fY29udGV4dC0+aXNUcmFuc2Zvcm1G
ZWVkYmFjayhmZWVkYmFja09iamVjdC0+b2JqZWN0KCkpOwogfQogCi12b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQzNEZW51bSwgV2ViR0xUcmFuc2Zv
cm1GZWVkYmFjayopCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRUcmFuc2Zvcm1G
ZWVkYmFjayhHQzNEZW51bSB0YXJnZXQsIFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGZlZWRiYWNr
T2JqZWN0KQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSBiaW5kVHJh
bnNmb3JtRmVlZGJhY2soKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChmZWVkYmFja09iamVjdCkgeworICAgICAgICBpZiAo
ZmVlZGJhY2tPYmplY3QtPmlzRGVsZXRlZCgpKSB7CisgICAgICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJiaW5kVHJhbnNmb3Jt
RmVlZGJhY2siLCAiY2Fubm90IGJpbmQgYSBkZWxldGVkIFRyYW5zZm9ybSBGZWVkYmFjayBvYmpl
Y3QiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdmFs
aWRhdGVXZWJHTE9iamVjdCgiaXNUcmFuc2Zvcm1GZWVkYmFjayIsIGZlZWRiYWNrT2JqZWN0KSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbnRleHQtPmJpbmRUcmFuc2Zv
cm1GZWVkYmFjayh0YXJnZXQsIG9iamVjdE9yWmVybyhmZWVkYmFja09iamVjdCkpOworICAgIG1f
Ym91bmRUcmFuc2Zvcm1GZWVkYmFjayA9IGZlZWRiYWNrT2JqZWN0OwogfQogCi12b2lkIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0MzRGVudW0pCit2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0MzRGVudW0g
cHJpbWl0aXZlTW9kZSkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0g
YmVnaW5UcmFuc2Zvcm1GZWVkYmFjaygpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZXh0LT5iZWdpblRyYW5zZm9ybUZl
ZWRiYWNrKHByaW1pdGl2ZU1vZGUpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVN
RU5URUQgXV0gZW5kVHJhbnNmb3JtRmVlZGJhY2soKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGV4dC0+ZW5kVHJhbnNm
b3JtRmVlZGJhY2soKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0cmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdzKFdlYkdMUHJvZ3JhbSYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
R0MzRGVudW0pCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ3MoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFy
eWluZ3MsIEdDM0RlbnVtIGJ1ZmZlck1vZGUpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElN
UExFTUVOVEVEIF1dIHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoKSIpOworICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgdmFyeWluZ3MuaXNFbXB0eSgpIHx8ICF2YWxpZGF0ZVdl
YkdMT2JqZWN0KCJ0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzIiwgJnByb2dyYW0pKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2NvbnRleHQtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJv
Z3JhbS5vYmplY3QoKSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpOwogfQogCi1SZWZQdHI8V2ViR0xB
Y3RpdmVJbmZvPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmcoV2ViR0xQcm9ncmFtJiwgR0MzRHVpbnQpCitSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoV2ViR0xQ
cm9ncmFtJiBwcm9ncmFtLCBHQzNEdWludCBpbmRleCkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBO
T1QgSU1QTEVNRU5URUQgXV0gZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKCkiKTsKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxp
ZGF0ZVdlYkdMT2JqZWN0KCJnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmciLCAmcHJvZ3JhbSkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgR3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2
ZUluZm8gaW5mbzsKKyAgICBtX2NvbnRleHQtPmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhw
cm9ncmFtLm9iamVjdCgpLCBpbmRleCwgaW5mbyk7CisKKyAgICBpZiAoIWluZm8ubmFtZSB8fCAh
aW5mby50eXBlIHx8ICFpbmZvLnNpemUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIFdlYkdMQWN0aXZlSW5mbzo6Y3JlYXRlKGluZm8ubmFtZSwgaW5mby50eXBlLCBpbmZv
LnNpemUpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnBhdXNlVHJhbnNmb3Jt
RmVlZGJhY2soKQpAQCAtMTIwOCw5ICsxMzI1LDMwIEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQogICAgIExPRyhXZWJHTCwgIltbIE5PVCBJ
TVBMRU1FTlRFRCBdXSByZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpIik7CiB9CiAKLXZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlckJhc2UoR0MzRGVudW0sIEdDM0R1aW50LCBX
ZWJHTEJ1ZmZlciopCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRCdWZmZXJCYXNl
KEdDM0RlbnVtIHRhcmdldCwgR0MzRHVpbnQgaW5kZXgsIFdlYkdMQnVmZmVyKiBidWZmZXIpCiB7
Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGJpbmRCdWZmZXJCYXNlKCki
KTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisK
KyAgICBzd2l0Y2ggKHRhcmdldCkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVI6CisgICAgICAgIGlmIChpbmRleCA+PSBtX2JvdW5kVHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXJzLnNpemUoKSkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJiaW5kQnVmZmVyQmFzZSIsICJp
bmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JVRkZFUjoK
KyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5V
TSwgImJpbmRCdWZmZXJCYXNlIiwgInRhcmdldCBub3QgeWV0IHN1cHBvcnRlZCIpOworICAgICAg
ICByZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImJpbmRCdWZmZXJCYXNlIiwgImludmFsaWQgdGFy
Z2V0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbGlkYXRlQW5kQ2Fj
aGVCdWZmZXJCaW5kaW5nKCJiaW5kQnVmZmVyQmFzZSIsIHRhcmdldCwgYnVmZmVyKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4
LCBvYmplY3RPclplcm8oYnVmZmVyKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6YmluZEJ1ZmZlclJhbmdlKEdDM0RlbnVtLCBHQzNEdWludCwgV2ViR0xCdWZmZXIqLCBHQzNE
aW50NjQsIEdDM0RpbnQ2NCkKQEAgLTEyMTgsMTAgKzEzNTYsMTggQEAgdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpiaW5kQnVmZmVyUmFuZ2UoR0MzRGVudW0sIEdDM0R1aW50LCBXZWJHTEJ1
ZmZlciosIEcKICAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gYmluZEJ1ZmZl
clJhbmdlKCkiKTsKIH0KIAotV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW5k
ZXhlZFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDM0R1aW50KQorV2ViR0xBbnkgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdD
M0R1aW50IGluZGV4KQogeworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCiAgICAgc3dpdGNoICh0YXJnZXQpIHsKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkc6CisgICAg
ICAgIGlmIChpbmRleCA+PSBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzLnNpemUoKSkg
eworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfVkFMVUUsICJnZXRJbmRleGVkUGFyYW1ldGVyIiwgImluZGV4IG91dCBvZiByYW5nZSIpOwor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1f
Ym91bmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNbaW5kZXhdOwogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRToKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUOgogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQlVGRkVSX0JJTkRJTkc6CkBAIC0yMDc0LDYgKzIy
MjAsMTAgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdD
M0RlbnVtIHBuYW1lKQogICAgICAgICByZXR1cm4gbV9iYWNrRHJhd0J1ZmZlcjsgLy8gZW11bGF0
ZWQgYmFja2J1ZmZlcgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVCVUZG
RVJfQklORElORzoKICAgICAgICAgcmV0dXJuIG1fcmVhZEZyYW1lYnVmZmVyQmluZGluZzsKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORzoKKyAg
ICAgICAgcmV0dXJuIG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjazsKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkc6CisgICAgICAgIHJl
dHVybiBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXI7CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09QWV9SRUFEX0JVRkZFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T1BZX1dSSVRFX0JVRkZFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpQSVhFTF9QQUNL
X0JVRkZFUl9CSU5ESU5HOiAgIApAQCAtMjA4Miw3ICsyMjMyLDYgQEAgV2ViR0xBbnkgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlNBTVBMRVJfQklORElORzoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpURVhUVVJFX0JJTkRJTkdfMkRfQVJSQVk6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6VEVYVFVSRV9CSU5ESU5HXzNEOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORzoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpVTklGT1JNX0JVRkZFUl9CSU5ESU5HOgogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVyIiwgInBhcmFtZXRl
ciBuYW1lIG5vdCB5ZXQgc3VwcG9ydGVkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
MjM4MSw2ICsyNTMwLDE3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpCiAgICAgTE9HKFdlYkdM
LCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIHJlYWRQaXhlbHMoKSIpOwogfQogCit2b2lkIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OnVuY2FjaGVEZWxldGVkQnVmZmVyKFdlYkdMQnVmZmVyKiBidWZm
ZXIpCit7CisgICAgQVNTRVJUKGJ1ZmZlcik7CisKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmNhY2hlRGVsZXRlZEJ1ZmZlcihidWZmZXIpOworCisgICAgc2l6ZV90IGluZGV4ID0g
bV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycy5maW5kKGJ1ZmZlcik7CisgICAgaWYgKGlu
ZGV4IDwgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycy5zaXplKCkpCisgICAgICAgIG1f
Ym91bmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNbaW5kZXhdID0gbnVsbHB0cjsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4
IGFmMmM0N2FmZmI5MjNlOGQzZWFlYmE0MjE0ODJlNDUzN2E0OTlkYjUuLmZhNjI3MTQ5OTMyZDVh
ZWQ3OTNkNDRlMGI2ODg4NDAzN2I2MmNiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHVi
bGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4g
Y3JlYXRlKENhbnZhc0Jhc2UmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOwogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4gY3JlYXRlKENhbnZh
c0Jhc2UmLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+JiYsIEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyk7CiAKKyAgICB+V2ViR0wyUmVuZGVyaW5nQ29udGV4dCgpOworCiAgICAgLy8g
QnVmZmVyIG9iamVjdHMKICAgICB1c2luZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZm
ZXJEYXRhOwogICAgIHVzaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1YkRh
dGE7CkBAIC0yNTgsOCArMjYwLDE3IEBAIHByaXZhdGU6CiAgICAgR0MzRGVudW0gYmFzZUludGVy
bmFsRm9ybWF0RnJvbUludGVybmFsRm9ybWF0KEdDM0RlbnVtIGludGVybmFsZm9ybWF0KTsKICAg
ICBib29sIGlzSW50ZWdlckZvcm1hdChHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCk7CiAgICAgdm9p
ZCBpbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucygpOworICAgIHZvaWQgaW5pdGlhbGl6ZVRyYW5z
Zm9ybUZlZWRiYWNrQnVmZmVyQ2FjaGUoKTsKIAogICAgIGJvb2wgdmFsaWRhdGVUZXhTdG9yYWdl
RnVuY1BhcmFtZXRlcnMoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWkgbGV2ZWxzLCBHQzNEZW51
bSBpbnRlcm5hbEZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUpOworCisgICAgdm9pZCB1bmNhY2hlRGVsZXRlZEJ1ZmZlcihX
ZWJHTEJ1ZmZlciopIGZpbmFsOworCisgICAgUmVmUHRyPFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s+
IG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjazsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkdMQnVmZmVy
Pj4gbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyczsKKworICAgIC8vIFF1ZXJpZXMKKyAg
ICBIYXNoTWFwPEdDM0RlbnVtLCBSZWZQdHI8V2ViR0xRdWVyeT4+IG1fYWN0aXZlUXVlcmllczsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQW55LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEFueS5oCmluZGV4IGNmNTNlMWUzZTlkNGYwNTI4ZWMzMmM2MDc2MDM1NWMxNjcxZDc0NmIuLjM5
NTdiODQ3ZjAxZmUyZjk3ZTA2ZGMzNjAxYWJkNTFhNjc4YTliYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQW55LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xBbnkuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBXZWJHTEZyYW1lYnVm
ZmVyOwogY2xhc3MgV2ViR0xQcm9ncmFtOwogY2xhc3MgV2ViR0xSZW5kZXJidWZmZXI7CiBjbGFz
cyBXZWJHTFRleHR1cmU7CitjbGFzcyBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOwogY2xhc3MgV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdDsKIGNsYXNzIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM7CiAK
QEAgLTcwLDYgKzcxLDcgQEAgdXNpbmcgV2ViR0xBbnkgPSBWYXJpYW50PAogICAgIFJlZlB0cjxX
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPgogI2lmIEVOQUJMRShXRUJHTDIpCiAgICAgLCBSZWZQ
dHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4KKyAgICAsIFJlZlB0cjxXZWJHTFRyYW5zZm9ybUZl
ZWRiYWNrPgogI2VuZGlmCiA+OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1
ZmZlci5jcHAKaW5kZXggYjhlZTI1ZmFjZjY4NTBmMDJmZGRjNDg2ODY1MmEwY2I1M2M2ZjgwYS4u
Y2FkNmVlYzFlNWFiNWU4NmNmN2E0MDE4YjExYzkyNjlmYTZjYTdhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcApAQCAtMjUzLDI1ICsyNTMsMTMgQEAgdm9p
ZCBXZWJHTEJ1ZmZlcjo6c2V0Q2FjaGVkTWF4SW5kZXgoR0MzRGVudW0gdHlwZSwgdW5zaWduZWQg
dmFsdWUpCiAgICAgbV9uZXh0QXZhaWxhYmxlQ2FjaGVFbnRyeSA9IChtX25leHRBdmFpbGFibGVD
YWNoZUVudHJ5ICsgMSkgJSBXVEZfQVJSQVlfTEVOR1RIKG1fbWF4SW5kZXhDYWNoZSk7CiB9CiAK
LXZvaWQgV2ViR0xCdWZmZXI6OnNldFRhcmdldChHQzNEZW51bSB0YXJnZXQsIGJvb2wgZm9yV2Vi
R0wyKQordm9pZCBXZWJHTEJ1ZmZlcjo6c2V0VGFyZ2V0KEdDM0RlbnVtIHRhcmdldCkKIHsKLSAg
ICAvLyBJbiBXZWJHTCwgYSBidWZmZXIgaXMgYm91bmQgdG8gb25lIHRhcmdldCBpbiBpdHMgbGlm
ZXRpbWUKLSAgICBpZiAobV90YXJnZXQpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAodGFyZ2V0
ID09IEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIgfHwgdGFyZ2V0ID09IEdyYXBoaWNz
Q29udGV4dEdMOjpFTEVNRU5UX0FSUkFZX0JVRkZFUikKLSAgICAgICAgbV90YXJnZXQgPSB0YXJn
ZXQ7Ci0gICAgZWxzZSBpZiAoZm9yV2ViR0wyKSB7Ci0jaWYgRU5BQkxFKFdFQkdMMikKLSAgICAg
ICAgc3dpdGNoICh0YXJnZXQpIHsKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09Q
WV9SRUFEX0JVRkZFUjoKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09QWV9XUklU
RV9CVUZGRVI6Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlBJWEVMX1BBQ0tfQlVG
RkVSOgotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpQSVhFTF9VTlBBQ0tfQlVGRkVS
OgotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVG
RkVSOgotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JVRkZFUjoKLSAg
ICAgICAgICAgIG1fdGFyZ2V0ID0gdGFyZ2V0OwotICAgICAgICB9Ci0jZW5kaWYKKyAgICBtX3Rh
cmdldCA9IHRhcmdldDsKKworICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkFS
UkFZX0JVRkZFUiB8fCB0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkVMRU1FTlRfQVJSQVlf
QlVGRkVSKSB7CisgICAgICAgIEFTU0VSVCghbV9hcnJheUJ1ZmZlck9yRWxlbWVudEFycmF5QnVm
ZmVyIHx8IHRhcmdldCA9PSBtX2FycmF5QnVmZmVyT3JFbGVtZW50QXJyYXlCdWZmZXIpOworICAg
ICAgICBtX2FycmF5QnVmZmVyT3JFbGVtZW50QXJyYXlCdWZmZXIgPSB0YXJnZXQ7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaAppbmRleCBiZDQzY2Rk
MDk5NDc3N2RlZDc1N2VjYjgyOGJhODc3N2Q4Zjk4MzgxLi4xNTJkN2IwMzdlMzE5ZmNiODBiY2E3
ODhlYjk4ZjRhMmNjNDU0ZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVm
ZmVyLmgKQEAgLTYwLDcgKzYwLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FjaGVkTWF4SW5k
ZXgoR0MzRGVudW0gdHlwZSwgdW5zaWduZWQgdmFsdWUpOwogCiAgICAgR0MzRGVudW0gZ2V0VGFy
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQ7IH0KLSAgICB2b2lkIHNldFRhcmdldChHQzNE
ZW51bSwgYm9vbCBmb3JXZWJHTDIpOworICAgIHZvaWQgc2V0VGFyZ2V0KEdDM0RlbnVtKTsKKwor
ICAgIEdDM0RlbnVtIGFycmF5QnVmZmVyT3JFbGVtZW50QXJyYXlCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2FycmF5QnVmZmVyT3JFbGVtZW50QXJyYXlCdWZmZXI7IH0KIAogICAgIGJvb2wgaGFz
RXZlckJlZW5Cb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG9iamVjdCgpICYmIG1fdGFyZ2V0OyB9CiAK
QEAgLTc1LDYgKzc3LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4g
bV9lbGVtZW50QXJyYXlCdWZmZXI7CiAgICAgR0MzRHNpemVpcHRyIG1fYnl0ZUxlbmd0aCB7IDAg
fTsKIAorICAgIEdDM0RlbnVtIG1fYXJyYXlCdWZmZXJPckVsZW1lbnRBcnJheUJ1ZmZlciB7IDAg
fTsKKwogICAgIC8vIE9wdGltaXphdGlvbiBmb3IgaW5kZXggdmFsaWRhdGlvbi4gRm9yIGVhY2gg
dHlwZSBvZiBpbmRleAogICAgIC8vIChpLmUuLCBVTlNJR05FRF9TSE9SVCksIGNhY2hlIHRoZSBt
YXhpbXVtIGluZGV4IGluIHRoZQogICAgIC8vIGVudGlyZSBidWZmZXIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCmluZGV4IGNiNjQ0NTIyMjczNDY1MDU3MmNiYjU2
MDMzMzdiOWYyZjQ1ZDk2NmIuLmY0MmFkYjZkOWQ2MTY0ZmI2YjVhN2M1ZWJkMjY0ZDk5ZDg0ZDk2
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCkBAIC00Niw3
ICs0Niw3IEBAIFdlYkdMUXVlcnk6On5XZWJHTFF1ZXJ5KCkKIFdlYkdMUXVlcnk6OldlYkdMUXVl
cnkoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRPYmpl
Y3QoY3R4KQogewotICAgIC8vIEZJWE1FOiBDYWxsIGNyZWF0ZVF1ZXJ5IGZyb20gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuCisgICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHRHTCgpLT5j
cmVhdGVRdWVyeSgpKTsKIH0KIAogdm9pZCBXZWJHTFF1ZXJ5OjpkZWxldGVPYmplY3RJbXBsKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oCmluZGV4IDA4N2MwNDExZjk2
MzliMzIxMmE4ODU2NjUyYWJhMWFiMTJjNTEzY2EuLjM3ZTIxOTU4ZGU5NTU0MTljOWE1ZDYzOTNk
NDVmMzhjZTljY2E5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUXVlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmgK
QEAgLTM2LDkgKzM2LDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYkdMUXVlcnk+IGNy
ZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xRdWVy
eSgpOwogCisgICAgYm9vbCBpc1Jlc3VsdEF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNS
ZXN1bHRBdmFpbGFibGU7IH0KKworICAgIHZvaWQgbWFrZVJlc3VsdEF2YWlsYWJsZSgpIHsgbV9p
c1Jlc3VsdEF2YWlsYWJsZSA9IHRydWU7IH0KKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFdl
YkdMUXVlcnkoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZvaWQgZGVsZXRlT2Jq
ZWN0SW1wbChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJy
aWRlOworCitwcml2YXRlOgorICAgIGJvb2wgbV9pc1Jlc3VsdEF2YWlsYWJsZSB7IGZhbHNlIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDBjMmZj
ODRiZmMwNmJkZjRkOGRjMzZjNzVkOWI5OWI2ZGJmZDIzZTUuLjllOWRiNjk0OTQyMWYxNGVjY2Y5
NTExYjc2MTY1MTFlZjRlMWMzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0xMTg4LDE3ICsxMTg4
LDI2IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tPYmplY3RUb0JlQm91
bmQoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBXCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQs
IFdlYkdMQnVmZmVyKiBidWZmZXIpCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZh
bGlkYXRlQW5kQ2FjaGVCdWZmZXJCaW5kaW5nKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0Mz
RGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZlciogYnVmZmVyKQogewogICAgIGJvb2wgZGVsZXRlZDsK
LSAgICBpZiAoIWNoZWNrT2JqZWN0VG9CZUJvdW5kKCJiaW5kQnVmZmVyIiwgYnVmZmVyLCBkZWxl
dGVkKSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghY2hlY2tPYmplY3RUb0JlQm91bmQoZnVu
Y3Rpb25OYW1lLCBidWZmZXIsIGRlbGV0ZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKGRlbGV0ZWQpCiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgaWYgKGJ1ZmZlciAm
JiBidWZmZXItPmdldFRhcmdldCgpICYmIGJ1ZmZlci0+Z2V0VGFyZ2V0KCkgIT0gdGFyZ2V0KSB7
Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09Q
RVJBVElPTiwgImJpbmRCdWZmZXIiLCAiYnVmZmVycyBjYW4gbm90IGJlIHVzZWQgd2l0aCBtdWx0
aXBsZSB0YXJnZXRzIik7Ci0gICAgICAgIHJldHVybjsKKworICAgIGlmIChidWZmZXIpIHsKKyAg
ICAgICAgLy8gSW4gV2ViR0wsIGEgYnVmZmVyIG1heSBvbmx5IGJlIGJvdW5kIHRvIG9uZSBvZiB0
aGUgQVJSQVlfQlVGRkVSIG9yIEVMRU1FTlRfQVJSQVlfQlVGRkVSIHRhcmdldCBpbiBpdHMgbGlm
ZXRpbWUuCisgICAgICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JV
RkZFUiB8fCB0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkVMRU1FTlRfQVJSQVlfQlVGRkVS
KSB7CisgICAgICAgICAgICBpZiAoYnVmZmVyLT5hcnJheUJ1ZmZlck9yRWxlbWVudEFycmF5QnVm
ZmVyKCkgJiYgdGFyZ2V0ICE9IGJ1ZmZlci0+YXJyYXlCdWZmZXJPckVsZW1lbnRBcnJheUJ1ZmZl
cigpKSB7CisgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJidWZmZXJzIGNhbiBvbmx5IGJl
IGJvdW5kIHRvIG9uZSBvZiBBUlJBWV9CVUZGRVIgb3IgRUxFTUVOVF9BUlJBWV9CVUZGRVIiKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBidWZmZXItPnNldFRhcmdldCh0YXJnZXQpOwogICAgIH0KKwogICAgIGlmICh0
YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUikKICAgICAgICAgbV9ib3Vu
ZEFycmF5QnVmZmVyID0gYnVmZmVyOwogICAgIGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIpCkBAIC0xMjM1LDEzICsxMjQ0LDE5IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQs
IFdlYkdMQnVmZmVyKiBidWZmZXIpCiAjZW5kaWYKICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CiAg
ICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9F
TlVNLCAiYmluZEJ1ZmZlciIsICJpbnZhbGlkIHRhcmdldCIpOwotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQogCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZl
cihHQzNEZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIpCit7CisgICAgaWYgKCF2YWxp
ZGF0ZUFuZENhY2hlQnVmZmVyQmluZGluZygiYmluZEJ1ZmZlciIsIHRhcmdldCwgYnVmZmVyKSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKHRhcmdldCwgb2Jq
ZWN0T3JaZXJvKGJ1ZmZlcikpOwotICAgIGlmIChidWZmZXIpCi0gICAgICAgIGJ1ZmZlci0+c2V0
VGFyZ2V0KHRhcmdldCwgaXNXZWJHTDIoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6YmluZEZyYW1lYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgV2ViR0xGcmFtZWJ1ZmZl
ciogYnVmZmVyKQpAQCAtMTc5NCwxNCArMTgwOSwyOSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmRlbGV0ZU9iamVjdChXZWJHTE9iamVjdCogb2JqZWN0KQogICAgIHJldHVybiB0
cnVlOwogfQogCisjZGVmaW5lIFJFTU9WRV9CVUZGRVJfRlJPTV9CSU5ESU5HKGJpbmRpbmcpIFwK
KyAgICBpZiAoYmluZGluZyA9PSBidWZmZXIpIFwKKyAgICAgICAgYmluZGluZyA9IG51bGxwdHI7
CisKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5jYWNoZURlbGV0ZWRCdWZmZXIo
V2ViR0xCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBSRU1PVkVfQlVGRkVSX0ZST01fQklORElORyht
X2JvdW5kQXJyYXlCdWZmZXIpOworICAgIFJFTU9WRV9CVUZGRVJfRlJPTV9CSU5ESU5HKG1fYm91
bmRDb3B5UmVhZEJ1ZmZlcik7CisgICAgUkVNT1ZFX0JVRkZFUl9GUk9NX0JJTkRJTkcobV9ib3Vu
ZENvcHlXcml0ZUJ1ZmZlcik7CisgICAgUkVNT1ZFX0JVRkZFUl9GUk9NX0JJTkRJTkcobV9ib3Vu
ZFBpeGVsUGFja0J1ZmZlcik7CisgICAgUkVNT1ZFX0JVRkZFUl9GUk9NX0JJTkRJTkcobV9ib3Vu
ZFBpeGVsVW5wYWNrQnVmZmVyKTsKKyAgICBSRU1PVkVfQlVGRkVSX0ZST01fQklORElORyhtX2Jv
dW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIpOworICAgIFJFTU9WRV9CVUZGRVJfRlJPTV9CSU5E
SU5HKG1fYm91bmRVbmlmb3JtQnVmZmVyKTsKKworICAgIG1fYm91bmRWZXJ0ZXhBcnJheU9iamVj
dC0+dW5iaW5kQnVmZmVyKCpidWZmZXIpOworfQorCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmRlbGV0ZUJ1ZmZlcihXZWJHTEJ1ZmZlciogYnVmZmVyKQogewogICAgIGlmICghZGVs
ZXRlT2JqZWN0KGJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAobV9ib3VuZEFycmF5
QnVmZmVyID09IGJ1ZmZlcikKLSAgICAgICAgbV9ib3VuZEFycmF5QnVmZmVyID0gbnVsbHB0cjsK
IAotICAgIG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+dW5iaW5kQnVmZmVyKCpidWZmZXIpOwor
ICAgIHVuY2FjaGVEZWxldGVkQnVmZmVyKGJ1ZmZlcik7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6ZGVsZXRlRnJhbWVidWZmZXIoV2ViR0xGcmFtZWJ1ZmZlciogZnJhbWVi
dWZmZXIpCkBAIC0yNjUyLDYgKzI2ODIsMTkgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0qIHByb2dyYW0sIEcKICNl
bmRpZiAvLyBVU0UoQU5HTEUpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICBkZWZhdWx0Ogor
I2lmIEVOQUJMRShXRUJHTDIpCisgICAgICAgIGlmIChpc1dlYkdMMigpKSB7CisgICAgICAgICAg
ICBzd2l0Y2ggKHBuYW1lKSB7CisgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpU
UkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX01PREU6CisgICAgICAgICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR1M6CisgICAgICAgICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STV9CTE9DS1M6CisgICAgICAgICAgICAg
ICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBwbmFtZSwg
JnZhbHVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisj
ZW5kaWYgLy8gRU5BQkxFKFdFQkdMMikKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFByb2dyYW1QYXJhbWV0ZXIiLCAiaW52YWxp
ZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmgKaW5kZXggMGM0NDUyYmI2MGM0MmI3MGQ3ZGU1Nzk5OTY5NDE1YWY0MjcxNDM0OC4uMjIx
ZmJjOTlmZDJjMzJkNTIyODRlNWQ4ZWMyMjdhM2QwNjA5Mjc3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAt
NDU3LDYgKzQ1Nyw4IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgZW5hYmxlU3VwcG9ydGVkRXh0
ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBleHRlbnNpb25OYW1lTGl0ZXJhbCk7CiAKKyAgICB2aXJ0dWFs
IHZvaWQgdW5jYWNoZURlbGV0ZWRCdWZmZXIoV2ViR0xCdWZmZXIqKTsKKwogICAgIFJlZlB0cjxH
cmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OwogICAgIFJlZlB0cjxXZWJHTENvbnRl
eHRHcm91cD4gbV9jb250ZXh0R3JvdXA7CiAKQEAgLTgxNyw2ICs4MTksOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgLy8gUmV0dXJuIGZhbHNlIGlmIGNhbGxlciBzaG91bGQgcmV0dXJuIHdpdGhvdXQgZnVy
dGhlciBwcm9jZXNzaW5nLgogICAgIGJvb2wgY2hlY2tPYmplY3RUb0JlQm91bmQoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBXZWJHTE9iamVjdCosIGJvb2wmIGRlbGV0ZWQpOwogCisgICAgYm9v
bCB2YWxpZGF0ZUFuZENhY2hlQnVmZmVyQmluZGluZyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IEdDM0RlbnVtIHRhcmdldCwgV2ViR0xCdWZmZXIqKTsKKwogICAgIC8vIEhlbHBlcnMgZm9yIHNp
bXVsYXRpbmcgdmVydGV4QXR0cmliMC4KICAgICB2b2lkIGluaXRWZXJ0ZXhBdHRyaWIwKCk7CiAg
ICAgT3B0aW9uYWw8Ym9vbD4gc2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDM0R1aW50IG51bVZlcnRl
eCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9y
bUZlZWRiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3Jt
RmVlZGJhY2suY3BwCmluZGV4IDE3NDU5NDViNjk2NDZkZmVlYTEyMTc2ZDQwNWJmZjU5NmUwYjQ0
ZGMuLjdjZjY3ZmJiZWM0MDYzZDY2ZmU1NzdhNjVjNzhmMzBkMTU5MDU0MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suY3Bw
CkBAIC00NiwxNCArNDYsMTIgQEAgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6fldlYkdMVHJhbnNm
b3JtRmVlZGJhY2soKQogV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6V2ViR0xUcmFuc2Zvcm1GZWVk
YmFjayhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJHTFNoYXJlZE9i
amVjdChjdHgpCiB7Ci0gICAgLy8gRklYTUU6IENhbGwgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2sg
ZnJvbSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC4KKyAgICBzZXRPYmplY3QoY3R4LmdyYXBoaWNz
Q29udGV4dEdMKCktPmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkpOwogfQogCiB2b2lkIFdlYkdM
VHJhbnNmb3JtRmVlZGJhY2s6OmRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wqIGNvbnRleHQzZCwgUGxhdGZvcm0zRE9iamVjdCBvYmplY3QpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGNvbnRleHQzZCk7Ci0gICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7Ci0gICAgLy8gRklYTUU6
IENhbGwgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sgZnJvbSBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TC4KKyAgICBjb250ZXh0M2QtPmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKG9iamVjdCk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oCmluZGV4IDkxNWM0MDQ0NzgyYWQyZGE2MDAyOGRhNjU5NTFiN2JmZGY1MzA2NTAu
LmM2ZGVhZjMwZGJjZmM4NTFmYjA0MTIzNjhmODRmMTE3M2I2YmJmNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAt
NDY0LDYgKzQ2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgVU5TSUdORURfSU5UXzEwRl8xMUZfMTFG
X1JFViA9IDB4OEMzQiwKICAgICAgICAgUkdCOV9FNSA9IDB4OEMzRCwKICAgICAgICAgVU5TSUdO
RURfSU5UXzVfOV85XzlfUkVWID0gMHg4QzNFLAorICAgICAgICBUUkFOU0ZPUk1fRkVFREJBQ0tf
VkFSWUlOR19NQVhfTEVOR1RIID0gMHg4Qzc2LAogICAgICAgICBUUkFOU0ZPUk1fRkVFREJBQ0tf
QlVGRkVSX01PREUgPSAweDhDN0YsCiAgICAgICAgIE1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQ
QVJBVEVfQ09NUE9ORU5UUyA9IDB4OEM4MCwKICAgICAgICAgVFJBTlNGT1JNX0ZFRURCQUNLX1ZB
UllJTkdTID0gMHg4QzgzLApAQCAtMTAxOSw2ICsxMDIwLDggQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6
ZSwgR0MzRGVudW0gdHlwZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwgR0MzRHNpemVpIHN0cmlk
ZSwgR0MzRGludHB0ciBvZmZzZXQpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWJJUG9pbnRlcihHQzNEdWludCBpbmRleCwgR0MzRGludCBzaXplLCBHQzNEZW51bSB0eXBlLCBH
QzNEc2l6ZWkgc3RyaWRlLCBHQzNEaW50cHRyIG9mZnNldCkgPSAwOworCiAgICAgdmlydHVhbCB2
b2lkIHZpZXdwb3J0KEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0Rz
aXplaSBoZWlnaHQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBidWZmZXJEYXRhKEdDM0RlbnVt
IHRhcmdldCwgR0MzRHNpemVpcHRyIHNpemUsIEdDM0RlbnVtIHVzYWdlKSA9IDA7CkBAIC0xMDM3
LDYgKzEwNDAsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0
YW5jZWQoR0MzRGVudW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0eXBlLCBHQzNE
aW50cHRyIG9mZnNldCwgR0MzRHNpemVpIHByaW1jb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDM0R1aW50IGluZGV4LCBHQzNEdWludCBkaXZpc29yKSA9
IDA7CiAKKyAgICAvLyBXZWJHTDIgUXVlcnkgY2FsbHMKKyAgICB2aXJ0dWFsIFBsYXRmb3JtM0RP
YmplY3QgY3JlYXRlUXVlcnkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJlZ2luUXVlcnkoR0Mz
RGVudW0sIFBsYXRmb3JtM0RPYmplY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnko
R0MzRGVudW0pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXYoR0MzRHVp
bnQsIEdDM0RlbnVtLCBHQzNEdWludCopID0gMDsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBjb250ZXh0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7IH0KICAg
ICB2b2lkIHNldENvbnRleHRBdHRyaWJ1dGVzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYgYXR0cnMpIHsgbV9hdHRycyA9IGF0dHJzOyB9CiAKQEAgLTEwNDYsNiArMTA1NSwxOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBHQzNEYm9vbGVhbiBpc1ZlcnRleEFycmF5KFBsYXRmb3Jt
M0RPYmplY3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYmluZFZlcnRleEFycmF5KFBsYXRmb3Jt
M0RPYmplY3QpID0gMDsKIAorICAgIC8vIFdlYkdMMiBUcmFuc2Zvcm0gRmVlZGJhY2sgY2FsbHMK
KyAgICB2aXJ0dWFsIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtM0RP
YmplY3QpID0gMDsKKyAgICB2aXJ0dWFsIEdDM0Rib29sZWFuIGlzVHJhbnNmb3JtRmVlZGJhY2so
UGxhdGZvcm0zRE9iamVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBiaW5kVHJhbnNmb3JtRmVl
ZGJhY2soR0MzRGVudW0sIFBsYXRmb3JtM0RPYmplY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQzNEZW51bSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBl
bmRUcmFuc2Zvcm1GZWVkYmFjaygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5ncyhQbGF0Zm9ybTNET2JqZWN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEdD
M0RlbnVtKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
ZyhQbGF0Zm9ybTNET2JqZWN0LCBHQzNEdWludCwgQWN0aXZlSW5mbyYpID0gMDsKKworICAgIHZp
cnR1YWwgdm9pZCBiaW5kQnVmZmVyQmFzZShHQzNEZW51bSwgR0MzRHVpbnQsIFBsYXRmb3JtM0RP
YmplY3QpID0gMDsKKwogI2lmIFVTRShPUEVOR0wpICYmIEVOQUJMRShXRUJHTDIpCiAgICAgdmly
dHVhbCB2b2lkIHByaW1pdGl2ZVJlc3RhcnRJbmRleChHQzNEdWludCkgPSAwOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IGIwNGFjZGFkODY4MDBjNjM2MTdl
MzdjMjFmM2JlMjU5MDkxNGIzOGYuLjlmMzdjYThiMWU4YjUzZDIwNzM2OGY3NzUyZDFiZjU1YTVl
YjYxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0xNDQyLDYgKzE0
NDIsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliUG9pbnRl
cihHQzNEdWludCBpbmRleCwgR0MzRGludCBzaXplLAogICAgIGdsOjpWZXJ0ZXhBdHRyaWJQb2lu
dGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nh
c3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKIH0KIAordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSVBvaW50ZXIoR0MzRHVpbnQgaW5k
ZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVudW0gdHlwZSwgR0MzRHNpemVpIHN0cmlkZSwgR0MzRGlu
dHB0ciBvZmZzZXQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlZlcnRl
eEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nh
c3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKK30KKwogdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmlld3BvcnQoR0MzRGludCB4LCBHQzNEaW50IHksIEdD
M0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKQEAgLTE4MzIsNiArMTgzOCwxMDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmVydGV4QXR0cmliRGl2aXNvcihHQzNEdWludCBpbmRleCwgR0MzRHVpbnQgZGl2aXMKICAg
ICBnZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CiB9
CiAKKy8vIFF1ZXJ5IEZ1bmN0aW9ucworCitQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjcmVhdGVRdWVyeSgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgR0x1aW50IG5hbWUgPSAwOworICAgIGdsOjpHZW5RdWVyaWVzKDEsICZuYW1lKTsKKyAgICBy
ZXR1cm4gbmFtZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmVnaW5RdWVy
eShHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgcXVlcnkpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgZ2w6OkJlZ2luUXVlcnkodGFyZ2V0LCBxdWVyeSk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmVuZFF1ZXJ5KEdDM0RlbnVtIHRhcmdldCkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6RW5kUXVlcnkodGFyZ2V0KTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYoR0Mz
RHVpbnQgaWQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEdWludCogcGFyYW1zKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpdihpZCwgcG5hbWUsIHBh
cmFtcyk7Cit9CisKKy8vIFRyYW5zZm9ybSBGZWVkYmFjayBGdW5jdGlvbnMKKworUGxhdGZvcm0z
RE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2so
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIEdMdWludCBuYW1lID0gMDsKKyAg
ICBnbDo6R2VuVHJhbnNmb3JtRmVlZGJhY2tzKDEsICZuYW1lKTsKKyAgICByZXR1cm4gbmFtZTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2soUGxhdGZvcm0zRE9iamVjdCB0cmFuc2Zvcm1GZWVkYmFjaykKK3sKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBnbDo6RGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tzKDEsICZ0cmFuc2Zv
cm1GZWVkYmFjayk7Cit9CisKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpp
c1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtM0RPYmplY3QgdHJhbnNmb3JtRmVlZGJhY2spCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIGdsOjpJc1RyYW5zZm9ybUZl
ZWRiYWNrKHRyYW5zZm9ybUZlZWRiYWNrKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9i
amVjdCB0cmFuc2Zvcm1GZWVkYmFjaykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBnbDo6QmluZFRyYW5zZm9ybUZlZWRiYWNrKHRhcmdldCwgdHJhbnNmb3JtRmVlZGJhY2spOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiZWdpblRyYW5zZm9ybUZlZWRiYWNr
KEdDM0RlbnVtIHByaW1pdGl2ZU1vZGUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgZ2w6OkJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
cyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YXJ5aW5n
cywgR0MzRGVudW0gYnVmZmVyTW9kZSkKK3sKKyAgICBhdXRvIGNvbnZlcnRlZFZhcnlpbmdzID0g
dmFyeWluZ3MubWFwKFtdKGNvbnN0IFN0cmluZyYgdmFyeWluZykgLT4gY29uc3QgY2hhciogewor
ICAgICAgICByZXR1cm4gdmFyeWluZy51dGY4KCkuZGF0YSgpOworICAgIH0pOworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIGdsOjpUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dy
YW0sIHZhcnlpbmdzLnNpemUoKSwgY29udmVydGVkVmFyeWluZ3MuZGF0YSgpLCBidWZmZXJNb2Rl
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIEFjdGl2
ZUluZm8mIGluZm8pCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgR0MzRHNpemVp
IGJ1ZlNpemUgPSAwOworICAgIGdsOjpHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OlRSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HX01BWF9MRU5HVEgsICZidWZT
aXplKTsKKyAgICBpZiAoIWJ1ZlNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIEdDM0RzaXpl
aSBsZW5ndGggPSAwOworICAgIEdDM0RzaXplaSBzaXplID0gMDsKKyAgICBHQzNEZW51bSB0eXBl
ID0gMDsKKyAgICBWZWN0b3I8R0MzRGNoYXI+IG5hbWUoYnVmU2l6ZSk7CisKKyAgICBnbDo6R2V0
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dyYW0sIGluZGV4LCBidWZTaXplLCAmbGVuZ3Ro
LCAmc2l6ZSwgJnR5cGUsIG5hbWUuZGF0YSgpKTsKKworICAgIGluZm8ubmFtZSA9IFN0cmluZyhu
YW1lLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICBpbmZvLnNpemUgPSBzaXplOworICAgIGluZm8udHlw
ZSA9IHR5cGU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRCdWZmZXJC
YXNlKEdDM0RlbnVtIHRhcmdldCwgR0MzRHVpbnQgaW5kZXgsIFBsYXRmb3JtM0RPYmplY3QgYnVm
ZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpCaW5kQnVmZmVyQmFz
ZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1JB
UEhJQ1NfQ09OVEVYVF9HTCkgJiYgVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaAppbmRleCA3YmI4ODk1YjFhZWE4N2M2NTNiNWY2YTZjZTBlMGMzNTNkNGRmOTExLi42
NzBiZjNlZTMyMTRlOWQxNDMyMDcyODRjYTAwNDJhMmUwMjZmOTNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaApAQCAtMzYwLDYgKzM2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHZlcnRleEF0dHJpYjRmdihHQzNEdWludCBpbmRleCwgY29uc3QgR0MzRGZsb2F0KiB2YWx1ZXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcihHQzNEdWludCBpbmRleCwg
R0MzRGludCBzaXplLCBHQzNEZW51bSB0eXBlLCBHQzNEYm9vbGVhbiBub3JtYWxpemVkLCBHQzNE
c2l6ZWkgc3RyaWRlLCBHQzNEaW50cHRyIG9mZnNldCkgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIHZl
cnRleEF0dHJpYklQb2ludGVyKEdDM0R1aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVt
IHR5cGUsIEdDM0RzaXplaSBzdHJpZGUsIEdDM0RpbnRwdHIgb2Zmc2V0KSBvdmVycmlkZTsKKwog
ICAgIHZvaWQgdmlld3BvcnQoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KTsKQEAgLTM2OCwxMiArMzcwLDMwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRy
YXdFbGVtZW50c0luc3RhbmNlZChHQzNEZW51bSBtb2RlLCBHQzNEc2l6ZWkgY291bnQsIEdDM0Rl
bnVtIHR5cGUsIEdDM0RpbnRwdHIgb2Zmc2V0LCBHQzNEc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlk
ZTsKICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0MzRHVpbnQgaW5kZXgsIEdDM0R1aW50
IGRpdmlzb3IpIG92ZXJyaWRlOwogCisgICAgLy8gV2ViR0wyIFF1ZXJ5IGNhbGxzCisgICAgUGxh
dGZvcm0zRE9iamVjdCBjcmVhdGVRdWVyeSgpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5RdWVy
eShHQzNEZW51bSwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmRRdWVy
eShHQzNEZW51bSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdihHQzNEdWlu
dCwgR0MzRGVudW0sIEdDM0R1aW50Kikgb3ZlcnJpZGU7CisKICAgICAvLyBWZXJ0ZXhBcnJheU9q
ZWN0IGNhbGxzCiAgICAgUGxhdGZvcm0zRE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheSgpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXkoUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJp
ZGU7CiAgICAgR0MzRGJvb2xlYW4gaXNWZXJ0ZXhBcnJheShQbGF0Zm9ybTNET2JqZWN0KSBvdmVy
cmlkZTsKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlk
ZTsKIAorICAgIC8vIFdlYkdMMiBUcmFuc2Zvcm0gRmVlZGJhY2sgY2FsbHMKKyAgICBQbGF0Zm9y
bTNET2JqZWN0IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
ZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlkZTsKKyAgICBH
QzNEYm9vbGVhbiBpc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRl
OworICAgIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDM0RlbnVtLCBQbGF0Zm9ybTNET2Jq
ZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIGJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0MzRGVudW0p
IG92ZXJyaWRlOworICAgIHZvaWQgZW5kVHJhbnNmb3JtRmVlZGJhY2soKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm0zRE9iamVjdCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBHQzNEZW51bSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRUcmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmcoUGxhdGZvcm0zRE9iamVjdCwgR0MzRHVpbnQsIEFjdGl2ZUluZm8m
KSBvdmVycmlkZTsKKworICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UoR0MzRGVudW0sIEdDM0R1aW50
LCBQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlkZTsKKwogICAgIHZvaWQgcGFpbnRUb0NhbnZhcyhj
b25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIHZv
aWQgbWFya0NvbnRleHRDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2Y3NmY4ZDI4NDY5ZTYwYjg5NzkyMjBk
ZWI3N2JhNTY1MWFkOGE3MC4uNzRhMDRiYjc2ZjRlZGFjMTAxZTBiYzNhYzk0NmVkZTEwZTQ4OGQz
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAxLTA5ICBKdXN0aW4gRmFuICA8anVzdGlu
X2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdMIDJdIEltcGxlbWVudCB0cmFuc2Zvcm0g
ZmVlZGJhY2sgYW5kIHBhc3MgdHJhbnNmb3JtIGZlZWRiYWNrIGNvbmZvcm1hbmNlIHRlc3RzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU4MjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgcGFzc2lu
ZyByZXN1bHRzIGZvciB0cmFuc2Zvcm1fZmVlZGJhY2ssIGFzIGV4cGVjdGVkIHdoZW4gQU5HTEUg
aXMgZW5hYmxlZC4KKworICAgICAgICAqIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90cmFuc2Zv
cm1fZmVlZGJhY2svdHdvLXVucmVmZXJlbmNlZC12YXJ5aW5ncy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9mZWVkYmFjay91bndyaXR0
ZW4tb3V0cHV0LWRlZmF1bHRzLXRvLXplcm8tZXhwZWN0ZWQudHh0OgorCiAyMDIwLTAxLTA3ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNpbmcgV2ViIFNoYXJl
IEFQSSBwcmVjZWRlZCBieSBhbiBBSkFYIGNhbGwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdHdvLXVucmVmZXJlbmNl
ZC12YXJ5aW5ncy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9jb25mb3Jt
YW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL3R3by11bnJlZmVyZW5jZWQtdmFyeWluZ3MtZXhwZWN0
ZWQudHh0CmluZGV4IGFiNDQ3ZTM2MWNjOGY2NjY2YTFiOWRkZTg3ZDQ2NWUwZDRlNmMwMTkuLjY0
N2FlOTQ4NDBmOWNjMjY1Mzg0NWZiNTViZTVjMTI2Mzk2ODFhYTEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdHdvLXVu
cmVmZXJlbmNlZC12YXJ5aW5ncy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
Mi4wLjAvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9mZWVkYmFjay90d28tdW5yZWZlcmVuY2VkLXZh
cnlpbmdzLWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSw1IEBACiBUaGlzIHRlc3QgcnVucyB0aGUg
V2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3Ig
RkFJTC4KIAogVGVzdDogLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UyL3RyYW5zZm9ybV9mZWVkYmFjay90d28tdW5yZWZlcmVuY2VkLXZhcnlpbmdzLmh0bWwKLVsg
MTogUEFTUyBdIFdlYkdMIGNvbnRleHQgZXhpc3RzCi1bIDI6IFBBU1MgXSBnZXRFcnJvciB3YXMg
ZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogSW5pdCB0cmFuc2Zvcm0gZmVlZGJhY2sgc2hvdWxk
IHN1Y2NlZWQKLVsgMzogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJS
T1IgOiBEcmF3IHdpdGggdHJhbnNmb3JtIGZlZWRiYWNrIHNob3VsZCBzdWNjZWVkCi1bIDQ6IEZB
SUwgXSBidWZmZXIgc2hvdWxkIG1hdGNoIGV4cGVjdGVkIHZhbHVlcwotWyA1OiBQQVNTIF0gc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLVsgRkFJTCBdIDEgZmFpbHVyZXMgcmVwb3J0ZWQKK1sg
UEFTUyBdIEFsbCB0ZXN0cyBwYXNzZWQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
Mi4wLjAvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9mZWVkYmFjay91bndyaXR0ZW4tb3V0cHV0LWRl
ZmF1bHRzLXRvLXplcm8tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29u
Zm9ybWFuY2UyL3RyYW5zZm9ybV9mZWVkYmFjay91bndyaXR0ZW4tb3V0cHV0LWRlZmF1bHRzLXRv
LXplcm8tZXhwZWN0ZWQudHh0CmluZGV4IDI5YzlhMWVmNjAzZDc4ZmM2MGVhYmIwZThkZTU0M2Vk
ODg4MzExMDIuLjY5NzRkYTQ4YTk0ODI3NGViZTliOGE5YjI3YjA0YWFkMGM3NDM4MGYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVl
ZGJhY2svdW53cml0dGVuLW91dHB1dC1kZWZhdWx0cy10by16ZXJvLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNr
L3Vud3JpdHRlbi1vdXRwdXQtZGVmYXVsdHMtdG8temVyby1leHBlY3RlZC50eHQKQEAgLTEsMTEg
KzEsNSBAQAogVGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFu
IGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuCiAKIFRlc3Q6IC4uLy4uL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdW53cml0
dGVuLW91dHB1dC1kZWZhdWx0cy10by16ZXJvLmh0bWwKLVsgMTogUEFTUyBdIFdlYkdMIGNvbnRl
eHQgZXhpc3RzCi1bIDI6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VS
Uk9SIDogU2V0IHVwIHByb2dyYW0gc2hvdWxkIHN1Y2NlZWQKLVsgMzogRkFJTCBdIGJ1ZmZlciBz
aG91bGQgbWF0Y2ggZXhwZWN0ZWQgdmFsdWVzCi1bIDQ6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhw
ZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogU2V0IHVwIHByb2dyYW0gc2hvdWxkIHN1Y2NlZWQKLVsg
NTogUEFTUyBdIGJ1ZmZlciBzaG91bGQgbWF0Y2ggZXhwZWN0ZWQgdmFsdWVzCi1bIDY6IFBBU1Mg
XSBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotWyBGQUlMIF0gMSBmYWlsdXJlcyByZXBvcnRl
ZAorWyBQQVNTIF0gQWxsIHRlc3RzIHBhc3NlZAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387304</attachid>
            <date>2020-01-09 18:40:27 -0800</date>
            <delta_ts>2020-01-09 18:46:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205823-20200109184026.patch</filename>
            <type>text/plain</type>
            <size>49714</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJlZDVhMjU4OGU0NzVm
NzhhOTVmY2ZhOTU4ZmZiMTVjZWRhNmIzNS4uODlhNGM0YzMzYTgzNmJiYTYwYjVkNDAyNDI0YzFj
YTYxZjg2YTA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDIwLTAxLTA5ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdMIDJdIEltcGxl
bWVudCB0cmFuc2Zvcm0gZmVlZGJhY2sgYW5kIHBhc3MgdHJhbnNmb3JtIGZlZWRiYWNrIGNvbmZv
cm1hbmNlIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDU4MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJh
Y2sgY29uZm9ybWFuY2UgdGVzdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnRXZWJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9KU1ZhbHVlKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6fldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5p
dGlhbGl6ZVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YSk6IEFOR0xFIHZhbGlkYXRp
b24gaW4gbWFwQnVmZmVyUmFuZ2UgbWF5IGZhaWw7IHByZXZlbnQgY29weWluZyBmcm9tIGEgbnVs
bHB0ci4gCisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhB
dHRyaWJJUG9pbnRlcik6CisKKyAgICAgICAgQmFyZSBtaW5pbXVtIHN0dWJzIHRvIGdldCBXZWJH
TFF1ZXJ5IHBhc3NpbmcgdHJhbnNmb3JtX2ZlZWRiYWNrIHRlc3RzOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5RdWVyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFF1ZXJ5OjpXZWJHTFF1ZXJ5KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFF1ZXJ5Lmg6CisKKyAgICAgICAgVHJhbnNmb3JtIGZlZWRiYWNrIGZ1bmN0aW9uczoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRy
YW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
VHJhbnNmb3JtRmVlZGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xUcmFuc2Zvcm1G
ZWVkYmFjazo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFRyYW5zZm9ybUZlZWRiYWNrOjpkZWxldGVPYmplY3RJbXBsKToKKworICAgICAgICBNaXNjIGZ1
bmN0aW9ucyB0aGF0IG5lZWRlZCBhZGRlZCBmdW5jdGlvbmFsaXR5OgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorCisg
ICAgICAgIEhlbHBlciBmdW5jdGlvbnMgdG8gdHJhY2sgV2ViR0wyIHN0YXRlL29iamVjdHM6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmNhY2hlRGVsZXRlZEJ1
ZmZlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQW55Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OnNldFRhcmdl
dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlQW5kQ2FjaGVCdWZmZXJCaW5kaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5jYWNoZURlbGV0ZWRCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dy
YW1QYXJhbWV0ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaDoKKworICAgICAgICBQaXBlIG5ldyBHcmFwaGljc0NvbnRleHRHTCBtZXRob2RzIHRv
IEFOR0xFOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4
QXR0cmliSVBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZVF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpiZWdpblF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjplbmRRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0UXVlcnlPYmplY3R1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNUcmFuc2Zvcm1GZWVkYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmluZFRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpi
ZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5k
QnVmZmVyQmFzZSk6CisKKyAgICAgICAgQWRkIEdyYXBoaWNzQ29udGV4dEdMIHN0dWJzIGZvciBu
b24tQU5HTEUgYnVpbGRzOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiZWdpblF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjplbmRRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVUcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNU
cmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpiaW5kQnVmZmVyQmFzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisKIDIwMjAtMDEtMDkgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI1
MzY2Mik6IExhcmdlIERhdGEgVVJMcyBhcmUgbm90IGJlaW5nIGhhbmRsZWQgcHJvcGVybHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcAppbmRl
eCA3OGE0YWU2MmU3NDdhYzcxNjY4MTMzM2I0ZTQ0N2ZmYTViZTYxZDEwLi4xODRiMzMwN2ExYzYw
N2RmNTRiN2UwMGRiOWU3YThlNTUwMTQwZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVk
ZSAiSlNXZWJHTFByb2dyYW0uaCIKICNpbmNsdWRlICJKU1dlYkdMUmVuZGVyYnVmZmVyLmgiCiAj
aW5jbHVkZSAiSlNXZWJHTFRleHR1cmUuaCIKKyNpbmNsdWRlICJKU1dlYkdMVHJhbnNmb3JtRmVl
ZGJhY2suaCIKICNpbmNsdWRlICJKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCIKICNpbmNsdWRl
ICJKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CkBAIC0xMzgsNiArMTM5LDkgQEAgSlNWYWx1ZSBjb252ZXJ0VG9KU1Zh
bHVlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVj
dCYKICAgICAgICAgLAogICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxXZWJHTFZlcnRleEFycmF5
T2JqZWN0PiYgYXJyYXkpIHsKICAgICAgICAgICAgIHJldHVybiB0b0pTKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBhcnJheS5nZXQoKSk7CisgICAgICAgIH0sCisgICAgICAg
IFsmXSAoY29uc3QgUmVmUHRyPFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s+JiB0cmFuc2Zvcm1GZWVk
YmFjaykgeworICAgICAgICAgICAgcmV0dXJuIHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsICZn
bG9iYWxPYmplY3QsIHRyYW5zZm9ybUZlZWRiYWNrLmdldCgpKTsKICAgICAgICAgfQogI2VuZGlm
CiAgICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYmFlOWI0YjFmNDkzYzg1NGQyNTE3ZmFiZmEzYWU5NWEy
MjMzM2ZiZi4uMjY1MTRlMjA4ZjUyOTRiMmMzNTYyMzEzZGU4NjViZWQ5MGRmYmU0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5j
bHVkZSAiRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCisjaW5jbHVkZSAiRXZlbnRMb29w
LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCkBAIC05NSw2ICs5NiwxNiBAQCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2Um
IGNhbnZhcywgUmVmPEdyYXBoaWNzQwogewogICAgIGluaXRpYWxpemVTaGFkZXJFeHRlbnNpb25z
KCk7CiAgICAgaW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpOworICAgIGluaXRpYWxpemVU
cmFuc2Zvcm1GZWVkYmFja0J1ZmZlckNhY2hlKCk7Cit9CisKK1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6On5XZWJHTDJSZW5kZXJpbmdDb250ZXh0KCkKK3sKKyAgICAvLyBSZW1vdmUgYWxsIHJlZmVy
ZW5jZXMgdG8gV2ViR0xPYmplY3RzIHNvIGlmIHRoZXkgYXJlIHRoZSBsYXN0IHJlZmVyZW5jZQor
ICAgIC8vIHRoZXkgd2lsbCBiZSBmcmVlZCBiZWZvcmUgdGhlIGxhc3QgY29udGV4dCBpcyByZW1v
dmVkIGZyb20gdGhlIGNvbnRleHQgZ3JvdXAuCisgICAgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNr
ID0gbnVsbHB0cjsKKyAgICBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzLmNsZWFyKCk7
CisgICAgbV9hY3RpdmVRdWVyaWVzLmNsZWFyKCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpCkBAIC0xMTgsNiArMTI5LDE0
IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVNoYWRlckV4dGVuc2lv
bnMoKQogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VY
VF9mcmFnX2RlcHRoIik7CiB9CiAKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlh
bGl6ZVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ2FjaGUoKQoreworICAgIGludCBtYXhUcmFuc2Zv
cm1GZWVkYmFja0F0dHJpYnMgPSBnZXRJbnRQYXJhbWV0ZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1B
WF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUyk7CisgICAgQVNTRVJUKG1heFRy
YW5zZm9ybUZlZWRiYWNrQXR0cmlicyA+PSA0KTsKKworICAgIG1fYm91bmRUcmFuc2Zvcm1GZWVk
YmFja0J1ZmZlcnMucmVzaXplKG1heFRyYW5zZm9ybUZlZWRiYWNrQXR0cmlicyk7Cit9CisKIGlu
bGluZSBzdGF0aWMgT3B0aW9uYWw8dW5zaWduZWQ+IGFycmF5QnVmZmVyVmlld0VsZW1lbnRTaXpl
KGNvbnN0IEFycmF5QnVmZmVyVmlldyYgZGF0YSkKIHsKICAgICBzd2l0Y2ggKGRhdGEuZ2V0VHlw
ZSgpKSB7CkBAIC0zMDcsNyArMzI2LDkgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNyY0J5dGUKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICAvLyBGSVhNRTogQ29hbGVzY2UgbXVsdGlwbGUgZ2V0QnVmZmVy
U3ViRGF0YSgpIGNhbGxzIHRvIHVzZSBhIHNpbmdsZSBtYXAoKSBjYWxsCiAgICAgdm9pZCogcHRy
ID0gbV9jb250ZXh0LT5tYXBCdWZmZXJSYW5nZSh0YXJnZXQsIGNoZWNrZWRTcmNCeXRlT2Zmc2V0
LnVuc2FmZUdldCgpLCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGNoZWNrZWRDb3B5TGVuZ3Ro
UHRyLnVuc2FmZUdldCgpICogY2hlY2tlZEVsZW1lbnRTaXplLnVuc2FmZUdldCgpKSwgR3JhcGhp
Y3NDb250ZXh0R0w6Ok1BUF9SRUFEX0JJVCk7Ci0gICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIq
Pihkc3REYXRhLT5iYXNlQWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRzdE9m
ZnNldCAqIGVsZW1lbnRTaXplLCBwdHIsIGNvcHlMZW5ndGggKiBlbGVtZW50U2l6ZSk7CisgICAg
aWYgKHB0cikKKyAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNl
QWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRT
aXplLCBwdHIsIGNvcHlMZW5ndGggKiBlbGVtZW50U2l6ZSk7CisKICAgICBpZiAoIW1fY29udGV4
dC0+dW5tYXBCdWZmZXIodGFyZ2V0KSkKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZ2V0QnVmZmVyU3ViRGF0YSIsICJGYWls
ZWQgd2hpbGUgdW5tYXBwaW5nIGJ1ZmZlciIpOwogI2VuZGlmCkBAIC04NjIsOSArODgzLDEyIEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQs
IFVpbnQzMkxpc3QmJikKICAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gdmVy
dGV4QXR0cmliSTR1aXYoKSIpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZl
cnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTHNpemVp
LCBHQ0dMaW50NjQpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYklQ
b2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBzdHJpZGUsIEdDR0xpbnQ2NCBvZmZzZXQpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9U
IElNUExFTUVOVEVEIF1dIHZlcnRleEF0dHJpYklQb2ludGVyKCkiKTsKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHQtPnZl
cnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIG9mZnNldCk7CiB9
CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIoR0NHTGJpdGZpZWxkIG1hc2sp
CkBAIC0xMDQyLDggKzEwNjYsMTIgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVh
ckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLAogCiBSZWZQdHI8
V2ViR0xRdWVyeT4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUXVlcnkoKQogewotICAg
IExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSBjcmVhdGVRdWVyeSgpIik7Ci0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHF1ZXJ5ID0gV2ViR0xRdWVyeTo6Y3JlYXRl
KCp0aGlzKTsKKyAgICBhZGRTaGFyZWRPYmplY3QocXVlcnkuZ2V0KCkpOworICAgIHJldHVybiBx
dWVyeTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVRdWVyeShXZWJH
TFF1ZXJ5KikKQEAgLTEwNTcsMTQgKzEwODUsNDUgQEAgR0NHTGJvb2xlYW4gV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6aXNRdWVyeShXZWJHTFF1ZXJ5KikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5RdWVyeShHQ0dMZW51bSwgV2ViR0xR
dWVyeSYpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luUXVlcnkoR0NHTGVudW0g
dGFyZ2V0LCBXZWJHTFF1ZXJ5JiBxdWVyeSkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1Q
TEVNRU5URUQgXV0gYmVnaW5RdWVyeSgpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IEFkZCB2YWxpZGF0aW9uIHRv
IHByZXZlbnQgYmFkIGNhY2hpbmcuCisKKyAgICAvLyBPbmx5IG9uZSBxdWVyeSBvYmplY3QgY2Fu
IGJlIGFjdGl2ZSBwZXIgdGFyZ2V0LgorICAgIGF1dG8gdGFyZ2V0S2V5ID0gKHRhcmdldCA9PSBH
cmFwaGljc0NvbnRleHRHTDo6QU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRSkgPyBHcmFw
aGljc0NvbnRleHRHTDo6QU5ZX1NBTVBMRVNfUEFTU0VEIDogdGFyZ2V0OworCisgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX2FjdGl2ZVF1ZXJpZXMuYWRkKHRhcmdldEtleSwgbWFrZVJlZlB0cigmcXVl
cnkpKTsKKworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiYmVnaW5R
dWVyeSIsICJRdWVyeSBvYmplY3Qgb2YgdGFyZ2V0IGlzIGFscmVhZHkgYWN0aXZlIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbnRleHQtPmJlZ2luUXVlcnkodGFyZ2V0LCBx
dWVyeS5vYmplY3QoKSk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZW5kUXVl
cnkoR0NHTGVudW0pCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmVuZFF1ZXJ5KEdDR0xl
bnVtIHRhcmdldCkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gZW5k
UXVlcnkoKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB0YXJnZXRLZXkg
PSAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpBTllfU0FNUExFU19QQVNTRURfQ09OU0VS
VkFUSVZFKSA/IEdyYXBoaWNzQ29udGV4dEdMOjpBTllfU0FNUExFU19QQVNTRUQgOiB0YXJnZXQ7
CisKKyAgICBhdXRvIHF1ZXJ5ID0gbV9hY3RpdmVRdWVyaWVzLnRha2UodGFyZ2V0S2V5KTsKKyAg
ICBpZiAoIXF1ZXJ5KSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImVuZFF1ZXJ5IiwgIlF1ZXJ5IG9iamVjdCBvZiB0YXJn
ZXQgaXMgbm90IGFjdGl2ZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb250
ZXh0LT5lbmRRdWVyeSh0YXJnZXQpOworCisgICAgLy8gQSBxdWVyeSdzIHJlc3VsdCBtdXN0IG5v
dCBiZSBtYWRlIGF2YWlsYWJsZSB1bnRpbCBjb250cm9sIGhhcyByZXR1cm5lZCB0byB0aGUgdXNl
ciBhZ2VudCdzIG1haW4gbG9vcC4KKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV2ZW50
TG9vcCgpLnF1ZXVlTWljcm90YXNrKFtxdWVyeV0geworICAgICAgICBxdWVyeS0+bWFrZVJlc3Vs
dEF2YWlsYWJsZSgpOworICAgIH0pOwogfQogCiBSZWZQdHI8V2ViR0xRdWVyeT4gV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnkoR0NHTGVudW0sIEdDR0xlbnVtKQpAQCAtMTA3MywxMCAr
MTEzMiwyNSBAQCBSZWZQdHI8V2ViR0xRdWVyeT4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0
UXVlcnkoR0NHTGVudW0sIEdDR0xlbnVtKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1XZWJH
TEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlcihXZWJHTFF1ZXJ5
JiwgR0NHTGVudW0pCitXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBh
cmFtZXRlcihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcG5hbWUpCiB7Ci0gICAgTE9HKFdl
YkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGdldFF1ZXJ5UGFyYW1ldGVyKSIpOwotICAgIHJl
dHVybiBudWxscHRyOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgc3dpdGNoIChwbmFtZSkgeworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlFVRVJZX1JFU1VMVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpR
VUVSWV9SRVNVTFRfQVZBSUxBQkxFOgorICAgICAgICBpZiAoIXF1ZXJ5LmlzUmVzdWx0QXZhaWxh
YmxlKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURf
RU5VTSwgImdldFF1ZXJ5UGFyYW1ldGVyIiwgIkludmFsaWQgcG5hbWUiKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICBtX2Nv
bnRleHQtPmdldFF1ZXJ5T2JqZWN0dWl2KHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSwgJnJlc3VsdCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUmVmUHRyPFdlYkdMU2FtcGxlcj4gV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlU2FtcGxlcigpCkBAIC0xMTU3LDQ1ICsxMjMxLDg4IEBAIFdl
YkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFN5bmNQYXJhbWV0ZXIoV2ViR0xTeW5j
JiwgR0NHTGVudW0pCiAKIFJlZlB0cjxXZWJHTFRyYW5zZm9ybUZlZWRiYWNrPiBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCiB7Ci0gICAgTE9HKFdlYkdM
LCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkiKTsKLSAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gdHJhbnNmb3JtRmVlZGJhY2sgPSBXZWJH
TFRyYW5zZm9ybUZlZWRiYWNrOjpjcmVhdGUoKnRoaXMpOworICAgIGFkZFNoYXJlZE9iamVjdCh0
cmFuc2Zvcm1GZWVkYmFjay5nZXQoKSk7CisgICAgcmV0dXJuIHRyYW5zZm9ybUZlZWRiYWNrOwog
fQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNr
KFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpk
ZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKiBmZWVkYmFja09i
amVjdCkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gZGVsZXRlVHJh
bnNmb3JtRmVlZGJhY2soKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2sgPT0gZmVl
ZGJhY2tPYmplY3QpCisgICAgICAgIG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjayA9IG51bGxwdHI7
CisKKyAgICBkZWxldGVPYmplY3QoZmVlZGJhY2tPYmplY3QpOwogfQogCi1HQ0dMYm9vbGVhbiBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFdlYkdMVHJhbnNmb3Jt
RmVlZGJhY2sqKQorR0NHTGJvb2xlYW4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNUcmFuc2Zv
cm1GZWVkYmFjayhXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKiBmZWVkYmFja09iamVjdCkKIHsKLSAg
ICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gaXNUcmFuc2Zvcm1GZWVkYmFjaygp
Iik7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIWZlZWRiYWNrT2JqZWN0IHx8IGZlZWRiYWNrT2JqZWN0LT5pc0RlbGV0ZWQoKSB8fCAhdmFs
aWRhdGVXZWJHTE9iamVjdCgiaXNUcmFuc2Zvcm1GZWVkYmFjayIsIGZlZWRiYWNrT2JqZWN0KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fY29udGV4dC0+aXNUcmFuc2Zv
cm1GZWVkYmFjayhmZWVkYmFja09iamVjdC0+b2JqZWN0KCkpOwogfQogCi12b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSwgV2ViR0xUcmFu
c2Zvcm1GZWVkYmFjayopCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRUcmFuc2Zv
cm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGZlZWRi
YWNrT2JqZWN0KQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSBiaW5k
VHJhbnNmb3JtRmVlZGJhY2soKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChmZWVkYmFja09iamVjdCkgeworICAgICAgICBp
ZiAoZmVlZGJhY2tPYmplY3QtPmlzRGVsZXRlZCgpKSB7CisgICAgICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJiaW5kVHJhbnNm
b3JtRmVlZGJhY2siLCAiY2Fubm90IGJpbmQgYSBkZWxldGVkIFRyYW5zZm9ybSBGZWVkYmFjayBv
YmplY3QiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
dmFsaWRhdGVXZWJHTE9iamVjdCgiaXNUcmFuc2Zvcm1GZWVkYmFjayIsIGZlZWRiYWNrT2JqZWN0
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbnRleHQtPmJpbmRUcmFu
c2Zvcm1GZWVkYmFjayh0YXJnZXQsIG9iamVjdE9yWmVybyhmZWVkYmFja09iamVjdCkpOworICAg
IG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjayA9IGZlZWRiYWNrT2JqZWN0OwogfQogCi12b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0pCit2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVu
dW0gcHJpbWl0aXZlTW9kZSkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQg
XV0gYmVnaW5UcmFuc2Zvcm1GZWVkYmFjaygpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZXh0LT5iZWdpblRyYW5zZm9y
bUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1Q
TEVNRU5URUQgXV0gZW5kVHJhbnNmb3JtRmVlZGJhY2soKSIpOworICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGV4dC0+ZW5kVHJh
bnNmb3JtRmVlZGJhY2soKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFdlYkdMUHJvZ3JhbSYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgR0NHTGVudW0pCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZ3MoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
dmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9U
IElNUExFTUVOVEVEIF1dIHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoKSIpOworICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgdmFyeWluZ3MuaXNFbXB0eSgpIHx8ICF2YWxpZGF0
ZVdlYkdMT2JqZWN0KCJ0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzIiwgJnByb2dyYW0pKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHQtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Mo
cHJvZ3JhbS5vYmplY3QoKSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpOwogfQogCi1SZWZQdHI8V2Vi
R0xBY3RpdmVJbmZvPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmcoV2ViR0xQcm9ncmFtJiwgR0NHTHVpbnQpCitSZWZQdHI8V2ViR0xBY3RpdmVJbmZv
PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoV2Vi
R0xQcm9ncmFtJiBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCkKIHsKLSAgICBMT0coV2ViR0wsICJb
WyBOT1QgSU1QTEVNRU5URUQgXV0gZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKCkiKTsKLSAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2
YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmciLCAmcHJvZ3Jh
bSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgR3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZUluZm8gaW5mbzsKKyAgICBtX2NvbnRleHQtPmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Zyhwcm9ncmFtLm9iamVjdCgpLCBpbmRleCwgaW5mbyk7CisKKyAgICBpZiAoIWluZm8ubmFtZSB8
fCAhaW5mby50eXBlIHx8ICFpbmZvLnNpemUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIFdlYkdMQWN0aXZlSW5mbzo6Y3JlYXRlKGluZm8ubmFtZSwgaW5mby50eXBlLCBp
bmZvLnNpemUpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnBhdXNlVHJhbnNm
b3JtRmVlZGJhY2soKQpAQCAtMTIwOCw5ICsxMzI1LDMwIEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQogICAgIExPRyhXZWJHTCwgIltbIE5P
VCBJTVBMRU1FTlRFRCBdXSByZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpIik7CiB9CiAKLXZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlckJhc2UoR0NHTGVudW0sIEdDR0x1aW50
LCBXZWJHTEJ1ZmZlciopCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRCdWZmZXJC
YXNlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFdlYkdMQnVmZmVyKiBidWZmZXIp
CiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGJpbmRCdWZmZXJCYXNl
KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47
CisKKyAgICBzd2l0Y2ggKHRhcmdldCkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVI6CisgICAgICAgIGlmIChpbmRleCA+PSBtX2JvdW5kVHJh
bnNmb3JtRmVlZGJhY2tCdWZmZXJzLnNpemUoKSkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJiaW5kQnVmZmVyQmFzZSIs
ICJpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JVRkZF
UjoKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURf
RU5VTSwgImJpbmRCdWZmZXJCYXNlIiwgInRhcmdldCBub3QgeWV0IHN1cHBvcnRlZCIpOworICAg
ICAgICByZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImJpbmRCdWZmZXJCYXNlIiwgImludmFsaWQg
dGFyZ2V0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbGlkYXRlQW5k
Q2FjaGVCdWZmZXJCaW5kaW5nKCJiaW5kQnVmZmVyQmFzZSIsIHRhcmdldCwgYnVmZmVyKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGlu
ZGV4LCBvYmplY3RPclplcm8oYnVmZmVyKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6YmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtLCBHQ0dMdWludCwgV2ViR0xCdWZmZXIqLCBH
Q0dMaW50NjQsIEdDR0xpbnQ2NCkKQEAgLTEyMTgsMTAgKzEzNTYsMTggQEAgdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0sIEdDR0x1aW50LCBXZWJH
TEJ1ZmZlciosIEcKICAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gYmluZEJ1
ZmZlclJhbmdlKCkiKTsKIH0KIAotV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0
SW5kZXhlZFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50KQorV2ViR0xBbnkgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQs
IEdDR0x1aW50IGluZGV4KQogeworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgc3dpdGNoICh0YXJnZXQpIHsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkc6Cisg
ICAgICAgIGlmIChpbmRleCA+PSBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzLnNpemUo
KSkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfVkFMVUUsICJnZXRJbmRleGVkUGFyYW1ldGVyIiwgImluZGV4IG91dCBvZiByYW5nZSIp
OworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNbaW5kZXhdOwogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRToKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUOgogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQlVGRkVSX0JJTkRJTkc6CkBAIC0yMDc0LDYg
KzIyMjAsMTAgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVy
KEdDR0xlbnVtIHBuYW1lKQogICAgICAgICByZXR1cm4gbV9iYWNrRHJhd0J1ZmZlcjsgLy8gZW11
bGF0ZWQgYmFja2J1ZmZlcgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVC
VUZGRVJfQklORElORzoKICAgICAgICAgcmV0dXJuIG1fcmVhZEZyYW1lYnVmZmVyQmluZGluZzsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORzoK
KyAgICAgICAgcmV0dXJuIG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjazsKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkc6CisgICAgICAg
IHJldHVybiBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXI7CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09QWV9SRUFEX0JVRkZFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT1BZX1dSSVRFX0JVRkZFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpQSVhFTF9Q
QUNLX0JVRkZFUl9CSU5ESU5HOiAgIApAQCAtMjA4Miw3ICsyMjMyLDYgQEAgV2ViR0xBbnkgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlNBTVBMRVJfQklORElORzoKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX0JJTkRJTkdfMkRfQVJSQVk6CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VEVYVFVSRV9CSU5ESU5HXzNEOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORzoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX0JVRkZFUl9CSU5ESU5HOgogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVyIiwgInBhcmFt
ZXRlciBuYW1lIG5vdCB5ZXQgc3VwcG9ydGVkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMjM4MSw2ICsyNTMwLDE3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBp
eGVscyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpCiAgICAgTE9HKFdl
YkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIHJlYWRQaXhlbHMoKSIpOwogfQogCit2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuY2FjaGVEZWxldGVkQnVmZmVyKFdlYkdMQnVmZmVyKiBi
dWZmZXIpCit7CisgICAgQVNTRVJUKGJ1ZmZlcik7CisKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmNhY2hlRGVsZXRlZEJ1ZmZlcihidWZmZXIpOworCisgICAgc2l6ZV90IGluZGV4
ID0gbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycy5maW5kKGJ1ZmZlcik7CisgICAgaWYg
KGluZGV4IDwgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycy5zaXplKCkpCisgICAgICAg
IG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNbaW5kZXhdID0gbnVsbHB0cjsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCmlu
ZGV4IDIzOTE3MmQ5NTRkNmUyYTJiY2FmMDcyYTIxYTJkZTYyODg3ZjAxZjQuLjc3MGYzMjVkNGVh
OGM2ZTYzNzYzOTUwOGE1MDM4OGVjODM2ZDE3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQ0LDYgKzQ0LDggQEAg
cHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0wyUmVuZGVyaW5nQ29udGV4
dD4gY3JlYXRlKENhbnZhc0Jhc2UmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOwogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4gY3JlYXRlKENh
bnZhc0Jhc2UmLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+JiYsIEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyk7CiAKKyAgICB+V2ViR0wyUmVuZGVyaW5nQ29udGV4dCgpOworCiAgICAg
Ly8gQnVmZmVyIG9iamVjdHMKICAgICB1c2luZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpi
dWZmZXJEYXRhOwogICAgIHVzaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1
YkRhdGE7CkBAIC0yNTgsOCArMjYwLDE3IEBAIHByaXZhdGU6CiAgICAgR0NHTGVudW0gYmFzZUlu
dGVybmFsRm9ybWF0RnJvbUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZm9ybWF0KTsK
ICAgICBib29sIGlzSW50ZWdlckZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCk7CiAgICAg
dm9pZCBpbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucygpOworICAgIHZvaWQgaW5pdGlhbGl6ZVRy
YW5zZm9ybUZlZWRiYWNrQnVmZmVyQ2FjaGUoKTsKIAogICAgIGJvb2wgdmFsaWRhdGVUZXhTdG9y
YWdlRnVuY1BhcmFtZXRlcnMoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dM
ZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpOworCisgICAgdm9pZCB1bmNhY2hlRGVsZXRlZEJ1ZmZl
cihXZWJHTEJ1ZmZlciopIGZpbmFsOworCisgICAgUmVmUHRyPFdlYkdMVHJhbnNmb3JtRmVlZGJh
Y2s+IG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjazsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkdMQnVm
ZmVyPj4gbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyczsKKworICAgIC8vIFF1ZXJpZXMK
KyAgICBIYXNoTWFwPEdDR0xlbnVtLCBSZWZQdHI8V2ViR0xRdWVyeT4+IG1fYWN0aXZlUXVlcmll
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQW55LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEFueS5oCmluZGV4IGNmNTNlMWUzZTlkNGYwNTI4ZWMzMmM2MDc2MDM1NWMxNjcxZDc0NmIu
LjM5NTdiODQ3ZjAxZmUyZjk3ZTA2ZGMzNjAxYWJkNTFhNjc4YTliYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQW55LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xBbnkuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBXZWJHTEZyYW1l
YnVmZmVyOwogY2xhc3MgV2ViR0xQcm9ncmFtOwogY2xhc3MgV2ViR0xSZW5kZXJidWZmZXI7CiBj
bGFzcyBXZWJHTFRleHR1cmU7CitjbGFzcyBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOwogY2xhc3Mg
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdDsKIGNsYXNzIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM7
CiAKQEAgLTcwLDYgKzcxLDcgQEAgdXNpbmcgV2ViR0xBbnkgPSBWYXJpYW50PAogICAgIFJlZlB0
cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPgogI2lmIEVOQUJMRShXRUJHTDIpCiAgICAgLCBS
ZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4KKyAgICAsIFJlZlB0cjxXZWJHTFRyYW5zZm9y
bUZlZWRiYWNrPgogI2VuZGlmCiA+OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEJ1ZmZlci5jcHAKaW5kZXggNWU5MTUyNmE5YmIxZmZhY2E0MDcxNWE3NmRmNzc1ZjA1OWE0MmM3
ZS4uNzBjMDZmOTg1NGY3ODVlOTg5ZTQ1Yjk3NGM0Yzc2NWM3ZTMxYmM3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcApAQCAtMjUzLDI1ICsyNTMsMTMgQEAg
dm9pZCBXZWJHTEJ1ZmZlcjo6c2V0Q2FjaGVkTWF4SW5kZXgoR0NHTGVudW0gdHlwZSwgdW5zaWdu
ZWQgdmFsdWUpCiAgICAgbV9uZXh0QXZhaWxhYmxlQ2FjaGVFbnRyeSA9IChtX25leHRBdmFpbGFi
bGVDYWNoZUVudHJ5ICsgMSkgJSBXVEZfQVJSQVlfTEVOR1RIKG1fbWF4SW5kZXhDYWNoZSk7CiB9
CiAKLXZvaWQgV2ViR0xCdWZmZXI6OnNldFRhcmdldChHQ0dMZW51bSB0YXJnZXQsIGJvb2wgZm9y
V2ViR0wyKQordm9pZCBXZWJHTEJ1ZmZlcjo6c2V0VGFyZ2V0KEdDR0xlbnVtIHRhcmdldCkKIHsK
LSAgICAvLyBJbiBXZWJHTCwgYSBidWZmZXIgaXMgYm91bmQgdG8gb25lIHRhcmdldCBpbiBpdHMg
bGlmZXRpbWUKLSAgICBpZiAobV90YXJnZXQpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAodGFy
Z2V0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIgfHwgdGFyZ2V0ID09IEdyYXBo
aWNzQ29udGV4dEdMOjpFTEVNRU5UX0FSUkFZX0JVRkZFUikKLSAgICAgICAgbV90YXJnZXQgPSB0
YXJnZXQ7Ci0gICAgZWxzZSBpZiAoZm9yV2ViR0wyKSB7Ci0jaWYgRU5BQkxFKFdFQkdMMikKLSAg
ICAgICAgc3dpdGNoICh0YXJnZXQpIHsKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09QWV9SRUFEX0JVRkZFUjoKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09QWV9X
UklURV9CVUZGRVI6Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlBJWEVMX1BBQ0tf
QlVGRkVSOgotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpQSVhFTF9VTlBBQ0tfQlVG
RkVSOgotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tf
QlVGRkVSOgotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JVRkZFUjoK
LSAgICAgICAgICAgIG1fdGFyZ2V0ID0gdGFyZ2V0OwotICAgICAgICB9Ci0jZW5kaWYKKyAgICBt
X3RhcmdldCA9IHRhcmdldDsKKworICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6
OkFSUkFZX0JVRkZFUiB8fCB0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkVMRU1FTlRfQVJS
QVlfQlVGRkVSKSB7CisgICAgICAgIEFTU0VSVCghbV9hcnJheUJ1ZmZlck9yRWxlbWVudEFycmF5
QnVmZmVyIHx8IHRhcmdldCA9PSBtX2FycmF5QnVmZmVyT3JFbGVtZW50QXJyYXlCdWZmZXIpOwor
ICAgICAgICBtX2FycmF5QnVmZmVyT3JFbGVtZW50QXJyYXlCdWZmZXIgPSB0YXJnZXQ7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaAppbmRleCA5YWZk
ODU3MGNiM2RkZjc2YWIxODVlZDI0ZmU2NjM1OTcyMzQ5Y2Y1Li43NjdlNGJjNDJkMDY5NDY1ZGI2
N2EzMDQ1MTVlMjI0ZThhMGM1NjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
QnVmZmVyLmgKQEAgLTYwLDcgKzYwLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FjaGVkTWF4
SW5kZXgoR0NHTGVudW0gdHlwZSwgdW5zaWduZWQgdmFsdWUpOwogCiAgICAgR0NHTGVudW0gZ2V0
VGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQ7IH0KLSAgICB2b2lkIHNldFRhcmdldChH
Q0dMZW51bSwgYm9vbCBmb3JXZWJHTDIpOworICAgIHZvaWQgc2V0VGFyZ2V0KEdDR0xlbnVtKTsK
KworICAgIEdDR0xlbnVtIGFycmF5QnVmZmVyT3JFbGVtZW50QXJyYXlCdWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2FycmF5QnVmZmVyT3JFbGVtZW50QXJyYXlCdWZmZXI7IH0KIAogICAgIGJvb2wg
aGFzRXZlckJlZW5Cb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG9iamVjdCgpICYmIG1fdGFyZ2V0OyB9
CiAKQEAgLTc1LDYgKzc3LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZl
cj4gbV9lbGVtZW50QXJyYXlCdWZmZXI7CiAgICAgR0NHTHNpemVpcHRyIG1fYnl0ZUxlbmd0aCB7
IDAgfTsKIAorICAgIEdDR0xlbnVtIG1fYXJyYXlCdWZmZXJPckVsZW1lbnRBcnJheUJ1ZmZlciB7
IDAgfTsKKwogICAgIC8vIE9wdGltaXphdGlvbiBmb3IgaW5kZXggdmFsaWRhdGlvbi4gRm9yIGVh
Y2ggdHlwZSBvZiBpbmRleAogICAgIC8vIChpLmUuLCBVTlNJR05FRF9TSE9SVCksIGNhY2hlIHRo
ZSBtYXhpbXVtIGluZGV4IGluIHRoZQogICAgIC8vIGVudGlyZSBidWZmZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCmluZGV4IDAxZGRlN2Y3ZjRlYzJlNWE1NjRh
MmI2OGQ1OTFiZjY3NDc4OGYwZDIuLjRmMjQxNTJiZjcyMjg5NzRiNzA0YTFlMDcwNTNlNTA2Mzc0
MzAwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIFdlYkdMUXVlcnk6On5XZWJHTFF1ZXJ5KCkKIFdlYkdMUXVlcnk6OldlYkdM
UXVlcnkoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRP
YmplY3QoY3R4KQogewotICAgIC8vIEZJWE1FOiBDYWxsIGNyZWF0ZVF1ZXJ5IGZyb20gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuCisgICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHRHTCgp
LT5jcmVhdGVRdWVyeSgpKTsKIH0KIAogdm9pZCBXZWJHTFF1ZXJ5OjpkZWxldGVPYmplY3RJbXBs
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2Jq
ZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oCmluZGV4IDU1NmQzOTlk
ZTNjYTBlZTA5NDcyNjAzYzA4OTk4NzMwY2Y1NTdmNDUuLjc2MTg5ZTFjNGIwNmUyNDE4NjZmYTVl
NjA3NThjOWUyY2VjNWRjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUXVlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5
LmgKQEAgLTM2LDkgKzM2LDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYkdMUXVlcnk+
IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xR
dWVyeSgpOwogCisgICAgYm9vbCBpc1Jlc3VsdEF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNSZXN1bHRBdmFpbGFibGU7IH0KKworICAgIHZvaWQgbWFrZVJlc3VsdEF2YWlsYWJsZSgpIHsg
bV9pc1Jlc3VsdEF2YWlsYWJsZSA9IHRydWU7IH0KKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0
IFdlYkdMUXVlcnkoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZvaWQgZGVsZXRl
T2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpIG92
ZXJyaWRlOworCitwcml2YXRlOgorICAgIGJvb2wgbV9pc1Jlc3VsdEF2YWlsYWJsZSB7IGZhbHNl
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDE3
ZWFhNWQxNWI3MGNlMThhMGFmNTZkMWNiZjJiMjI5NmI5MmI2NTIuLjY3Y2E1M2M0N2VlYTAwOGJl
YTNmNjFkZjk2ZTczODljYWVjYTZkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0xMTg4LDE3ICsx
MTg4LDI2IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tPYmplY3RUb0Jl
Qm91bmQoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBXCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJn
ZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIpCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnZhbGlkYXRlQW5kQ2FjaGVCdWZmZXJCaW5kaW5nKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwg
R0NHTGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZlciogYnVmZmVyKQogewogICAgIGJvb2wgZGVsZXRl
ZDsKLSAgICBpZiAoIWNoZWNrT2JqZWN0VG9CZUJvdW5kKCJiaW5kQnVmZmVyIiwgYnVmZmVyLCBk
ZWxldGVkKSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghY2hlY2tPYmplY3RUb0JlQm91bmQo
ZnVuY3Rpb25OYW1lLCBidWZmZXIsIGRlbGV0ZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKGRlbGV0ZWQpCiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgaWYgKGJ1ZmZl
ciAmJiBidWZmZXItPmdldFRhcmdldCgpICYmIGJ1ZmZlci0+Z2V0VGFyZ2V0KCkgIT0gdGFyZ2V0
KSB7Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X09QRVJBVElPTiwgImJpbmRCdWZmZXIiLCAiYnVmZmVycyBjYW4gbm90IGJlIHVzZWQgd2l0aCBt
dWx0aXBsZSB0YXJnZXRzIik7Ci0gICAgICAgIHJldHVybjsKKworICAgIGlmIChidWZmZXIpIHsK
KyAgICAgICAgLy8gSW4gV2ViR0wsIGEgYnVmZmVyIG1heSBvbmx5IGJlIGJvdW5kIHRvIG9uZSBv
ZiB0aGUgQVJSQVlfQlVGRkVSIG9yIEVMRU1FTlRfQVJSQVlfQlVGRkVSIHRhcmdldCBpbiBpdHMg
bGlmZXRpbWUuCisgICAgICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZ
X0JVRkZFUiB8fCB0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkVMRU1FTlRfQVJSQVlfQlVG
RkVSKSB7CisgICAgICAgICAgICBpZiAoYnVmZmVyLT5hcnJheUJ1ZmZlck9yRWxlbWVudEFycmF5
QnVmZmVyKCkgJiYgdGFyZ2V0ICE9IGJ1ZmZlci0+YXJyYXlCdWZmZXJPckVsZW1lbnRBcnJheUJ1
ZmZlcigpKSB7CisgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJidWZmZXJzIGNhbiBvbmx5
IGJlIGJvdW5kIHRvIG9uZSBvZiBBUlJBWV9CVUZGRVIgb3IgRUxFTUVOVF9BUlJBWV9CVUZGRVIi
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBidWZmZXItPnNldFRhcmdldCh0YXJnZXQpOwogICAgIH0KKwogICAgIGlm
ICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUikKICAgICAgICAgbV9i
b3VuZEFycmF5QnVmZmVyID0gYnVmZmVyOwogICAgIGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGlj
c0NvbnRleHRHTDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIpCkBAIC0xMjM1LDEzICsxMjQ0LDE5IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJn
ZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIpCiAjZW5kaWYKICAgICAgICAgaWYgKCFzdWNjZXNzKSB7
CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJ
RF9FTlVNLCAiYmluZEJ1ZmZlciIsICJpbnZhbGlkIHRhcmdldCIpOwotICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQogCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIpCit7CisgICAgaWYgKCF2
YWxpZGF0ZUFuZENhY2hlQnVmZmVyQmluZGluZygiYmluZEJ1ZmZlciIsIHRhcmdldCwgYnVmZmVy
KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKHRhcmdldCwg
b2JqZWN0T3JaZXJvKGJ1ZmZlcikpOwotICAgIGlmIChidWZmZXIpCi0gICAgICAgIGJ1ZmZlci0+
c2V0VGFyZ2V0KHRhcmdldCwgaXNXZWJHTDIoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgV2ViR0xGcmFtZWJ1
ZmZlciogYnVmZmVyKQpAQCAtMTc5NCwxNCArMTgwOSwyOSBAQCBib29sIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmRlbGV0ZU9iamVjdChXZWJHTE9iamVjdCogb2JqZWN0KQogICAgIHJldHVy
biB0cnVlOwogfQogCisjZGVmaW5lIFJFTU9WRV9CVUZGRVJfRlJPTV9CSU5ESU5HKGJpbmRpbmcp
IFwKKyAgICBpZiAoYmluZGluZyA9PSBidWZmZXIpIFwKKyAgICAgICAgYmluZGluZyA9IG51bGxw
dHI7CisKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5jYWNoZURlbGV0ZWRCdWZm
ZXIoV2ViR0xCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBSRU1PVkVfQlVGRkVSX0ZST01fQklORElO
RyhtX2JvdW5kQXJyYXlCdWZmZXIpOworICAgIFJFTU9WRV9CVUZGRVJfRlJPTV9CSU5ESU5HKG1f
Ym91bmRDb3B5UmVhZEJ1ZmZlcik7CisgICAgUkVNT1ZFX0JVRkZFUl9GUk9NX0JJTkRJTkcobV9i
b3VuZENvcHlXcml0ZUJ1ZmZlcik7CisgICAgUkVNT1ZFX0JVRkZFUl9GUk9NX0JJTkRJTkcobV9i
b3VuZFBpeGVsUGFja0J1ZmZlcik7CisgICAgUkVNT1ZFX0JVRkZFUl9GUk9NX0JJTkRJTkcobV9i
b3VuZFBpeGVsVW5wYWNrQnVmZmVyKTsKKyAgICBSRU1PVkVfQlVGRkVSX0ZST01fQklORElORyht
X2JvdW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIpOworICAgIFJFTU9WRV9CVUZGRVJfRlJPTV9C
SU5ESU5HKG1fYm91bmRVbmlmb3JtQnVmZmVyKTsKKworICAgIG1fYm91bmRWZXJ0ZXhBcnJheU9i
amVjdC0+dW5iaW5kQnVmZmVyKCpidWZmZXIpOworfQorCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmRlbGV0ZUJ1ZmZlcihXZWJHTEJ1ZmZlciogYnVmZmVyKQogewogICAgIGlmICgh
ZGVsZXRlT2JqZWN0KGJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAobV9ib3VuZEFy
cmF5QnVmZmVyID09IGJ1ZmZlcikKLSAgICAgICAgbV9ib3VuZEFycmF5QnVmZmVyID0gbnVsbHB0
cjsKIAotICAgIG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+dW5iaW5kQnVmZmVyKCpidWZmZXIp
OworICAgIHVuY2FjaGVEZWxldGVkQnVmZmVyKGJ1ZmZlcik7CiB9CiAKIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlRnJhbWVidWZmZXIoV2ViR0xGcmFtZWJ1ZmZlciogZnJh
bWVidWZmZXIpCkBAIC0yNjUyLDYgKzI2ODIsMTkgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0qIHByb2dyYW0sIEcK
ICNlbmRpZiAvLyBVU0UoQU5HTEUpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICBkZWZhdWx0
OgorI2lmIEVOQUJMRShXRUJHTDIpCisgICAgICAgIGlmIChpc1dlYkdMMigpKSB7CisgICAgICAg
ICAgICBzd2l0Y2ggKHBuYW1lKSB7CisgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX01PREU6CisgICAgICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR1M6CisgICAgICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STV9CTE9DS1M6CisgICAgICAgICAg
ICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBwbmFt
ZSwgJnZhbHVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMMikKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFByb2dyYW1QYXJhbWV0ZXIiLCAiaW52
YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmgKaW5kZXggNmFjYzExMmNmMzZhYjIzODc5ZTFmMDQ4MjA3YWI1YTJjNDhjMWI4ZS4u
MzBiNDNjYWU2ZGJkYmE1NTBjYzY1ODIzYjY4ZGRhYmFmNjM2NWI3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApA
QCAtNDU3LDYgKzQ1Nyw4IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgZW5hYmxlU3VwcG9ydGVk
RXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBleHRlbnNpb25OYW1lTGl0ZXJhbCk7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgdW5jYWNoZURlbGV0ZWRCdWZmZXIoV2ViR0xCdWZmZXIqKTsKKwogICAgIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OwogICAgIFJlZlB0cjxXZWJHTENv
bnRleHRHcm91cD4gbV9jb250ZXh0R3JvdXA7CiAKQEAgLTgxNiw2ICs4MTgsOCBAQCBwcm90ZWN0
ZWQ6CiAgICAgLy8gUmV0dXJuIGZhbHNlIGlmIGNhbGxlciBzaG91bGQgcmV0dXJuIHdpdGhvdXQg
ZnVydGhlciBwcm9jZXNzaW5nLgogICAgIGJvb2wgY2hlY2tPYmplY3RUb0JlQm91bmQoY29uc3Qg
Y2hhciogZnVuY3Rpb25OYW1lLCBXZWJHTE9iamVjdCosIGJvb2wmIGRlbGV0ZWQpOwogCisgICAg
Ym9vbCB2YWxpZGF0ZUFuZENhY2hlQnVmZmVyQmluZGluZyhjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIEdDR0xlbnVtIHRhcmdldCwgV2ViR0xCdWZmZXIqKTsKKwogICAgIC8vIEhlbHBlcnMgZm9y
IHNpbXVsYXRpbmcgdmVydGV4QXR0cmliMC4KICAgICB2b2lkIGluaXRWZXJ0ZXhBdHRyaWIwKCk7
CiAgICAgT3B0aW9uYWw8Ym9vbD4gc2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDR0x1aW50IG51bVZl
cnRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5z
Zm9ybUZlZWRiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNm
b3JtRmVlZGJhY2suY3BwCmluZGV4IDJkMjhjNTk5YWEzMmJkZjAxMmUzZWJkOTNlN2MwZDU2M2M2
ODVlOGYuLjVhMmYwMzMwY2QwNGQyMjQzYWEwNTkxZTYwMWQ2YWM4YTQ1ZDRjYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2su
Y3BwCkBAIC00NiwxNCArNDYsMTIgQEAgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6fldlYkdMVHJh
bnNmb3JtRmVlZGJhY2soKQogV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6V2ViR0xUcmFuc2Zvcm1G
ZWVkYmFjayhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJHTFNoYXJl
ZE9iamVjdChjdHgpCiB7Ci0gICAgLy8gRklYTUU6IENhbGwgY3JlYXRlVHJhbnNmb3JtRmVlZGJh
Y2sgZnJvbSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC4KKyAgICBzZXRPYmplY3QoY3R4LmdyYXBo
aWNzQ29udGV4dEdMKCktPmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkpOwogfQogCiB2b2lkIFdl
YkdMVHJhbnNmb3JtRmVlZGJhY2s6OmRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKGNvbnRleHQzZCk7Ci0gICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7Ci0gICAgLy8gRklY
TUU6IENhbGwgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sgZnJvbSBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC4KKyAgICBjb250ZXh0M2QtPmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKG9iamVjdCk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5oCmluZGV4IDRlOGQzOTg5ZjFhYjc2YmEyMjEzZWI0YzQyNDIzN2Q3MGRmMzQ0
Y2IuLmZhZDM2NmJmOTk1Yzc1ODA0MDNhMGQzMDk1ZjJlNTk3YTM1MjhjZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApA
QCAtNDY0LDYgKzQ2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgVU5TSUdORURfSU5UXzEwRl8xMUZf
MTFGX1JFViA9IDB4OEMzQiwKICAgICAgICAgUkdCOV9FNSA9IDB4OEMzRCwKICAgICAgICAgVU5T
SUdORURfSU5UXzVfOV85XzlfUkVWID0gMHg4QzNFLAorICAgICAgICBUUkFOU0ZPUk1fRkVFREJB
Q0tfVkFSWUlOR19NQVhfTEVOR1RIID0gMHg4Qzc2LAogICAgICAgICBUUkFOU0ZPUk1fRkVFREJB
Q0tfQlVGRkVSX01PREUgPSAweDhDN0YsCiAgICAgICAgIE1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tf
U0VQQVJBVEVfQ09NUE9ORU5UUyA9IDB4OEM4MCwKICAgICAgICAgVFJBTlNGT1JNX0ZFRURCQUNL
X1ZBUllJTkdTID0gMHg4QzgzLApAQCAtMTAxOCw2ICsxMDE5LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9h
dCogdmFsdWVzKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcihH
Q0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBu
b3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGlu
dCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNl
dCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHZpZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsKIApAQCAtMTAzNyw2ICsx
MDM5LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
KEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVy
dGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOwog
CisgICAgLy8gV2ViR0wyIFF1ZXJ5IGNhbGxzCisgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0
IGNyZWF0ZVF1ZXJ5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBiZWdpblF1ZXJ5KEdDR0xlbnVt
LCBQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZFF1ZXJ5KEdDR0xl
bnVtKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2KEdDR0x1aW50LCBH
Q0dMZW51bSwgR0NHTHVpbnQqKSA9IDA7CisKICAgICBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMgY29udGV4dEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJzOyB9CiAgICAgdm9p
ZCBzZXRDb250ZXh0QXR0cmlidXRlcyhjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
IGF0dHJzKSB7IG1fYXR0cnMgPSBhdHRyczsgfQogCkBAIC0xMDQ2LDYgKzEwNTQsMTggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2Jq
ZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2Jq
ZWN0KSA9IDA7CiAKKyAgICAvLyBXZWJHTDIgVHJhbnNmb3JtIEZlZWRiYWNrIGNhbGxzCisgICAg
dmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0
KSA9IDA7CisgICAgdmlydHVhbCBHQ0dMYm9vbGVhbiBpc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRm
b3JtR0xPYmplY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNr
KEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJlZ2lu
VHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kVHJh
bnNmb3JtRmVlZGJhY2soKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBHQ0dMZW51
bSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoUGxh
dGZvcm1HTE9iamVjdCwgR0NHTHVpbnQsIEFjdGl2ZUluZm8mKSA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgYmluZEJ1ZmZlckJhc2UoR0NHTGVudW0sIEdDR0x1aW50LCBQbGF0Zm9ybUdMT2JqZWN0
KSA9IDA7CisKICNpZiBVU0UoT1BFTkdMKSAmJiBFTkFCTEUoV0VCR0wyKQogICAgIHZpcnR1YWwg
dm9pZCBwcmltaXRpdmVSZXN0YXJ0SW5kZXgoR0NHTHVpbnQpID0gMDsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9H
cmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCA4MTAxMTkyM2ZiMmJmNGU5ODQ1MDdkYTMw
NzE2YzA2ZjQwNmM1ZDBjLi5mYmRhZmY0ZGY2NWYyZDk4NWIxMWQwNmMxMWM2ZDY1YWJkZDAxNWM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMTQ0Miw2ICsxNDQyLDEy
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0NH
THVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwKICAgICBnbDo6VmVydGV4QXR0cmliUG9pbnRlcihp
bmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCByZWludGVycHJldF9jYXN0PEdM
dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7CiB9CiAKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBH
Q0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpWZXJ0ZXhBdHRy
aWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCByZWludGVycHJldF9jYXN0PEdM
dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7Cit9CisKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZpZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CkBAIC0xODMyLDYgKzE4MzgsMTA5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZl
cnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzCiAgICAgZ2V0
RXh0ZW5zaW9ucygpLnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOwogfQogCisv
LyBRdWVyeSBGdW5jdGlvbnMKKworUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y3JlYXRlUXVlcnkoKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIEdM
dWludCBuYW1lID0gMDsKKyAgICBnbDo6R2VuUXVlcmllcygxLCAmbmFtZSk7CisgICAgcmV0dXJu
IG5hbWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJlZ2luUXVlcnkoR0NH
TGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIGdsOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OkVuZFF1ZXJ5KHRhcmdldCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWl2KEdDR0x1aW50
IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBnbDo6R2V0UXVlcnlPYmplY3R1aXYoaWQsIHBuYW1lLCBwYXJhbXMp
OworfQorCisvLyBUcmFuc2Zvcm0gRmVlZGJhY2sgRnVuY3Rpb25zCisKK1BsYXRmb3JtR0xPYmpl
Y3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBHTHVpbnQgbmFtZSA9IDA7CisgICAgZ2w6
OkdlblRyYW5zZm9ybUZlZWRiYWNrcygxLCAmbmFtZSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBs
YXRmb3JtR0xPYmplY3QgdHJhbnNmb3JtRmVlZGJhY2spCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgZ2w6OkRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrcygxLCAmdHJhbnNmb3JtRmVl
ZGJhY2spOworfQorCitHQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNUcmFu
c2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IHRyYW5zZm9ybUZlZWRiYWNrKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBnbDo6SXNUcmFuc2Zvcm1GZWVkYmFj
ayh0cmFuc2Zvcm1GZWVkYmFjayk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3Qg
dHJhbnNmb3JtRmVlZGJhY2spCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6
OkJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIHRyYW5zZm9ybUZlZWRiYWNrKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dM
ZW51bSBwcmltaXRpdmVNb2RlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGds
OjpCZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjplbmRUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgZ2w6OkVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdD
R0xlbnVtIGJ1ZmZlck1vZGUpCit7CisgICAgYXV0byBjb252ZXJ0ZWRWYXJ5aW5ncyA9IHZhcnlp
bmdzLm1hcChbXShjb25zdCBTdHJpbmcmIHZhcnlpbmcpIC0+IGNvbnN0IGNoYXIqIHsKKyAgICAg
ICAgcmV0dXJuIHZhcnlpbmcudXRmOCgpLmRhdGEoKTsKKyAgICB9KTsKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBnbDo6VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhwcm9ncmFtLCB2
YXJ5aW5ncy5zaXplKCksIGNvbnZlcnRlZFZhcnlpbmdzLmRhdGEoKSwgYnVmZmVyTW9kZSk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZv
JiBpbmZvKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIEdDR0xzaXplaSBidWZT
aXplID0gMDsKKyAgICBnbDo6R2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR19NQVhfTEVOR1RILCAmYnVmU2l6ZSk7
CisgICAgaWYgKCFidWZTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBHQ0dMc2l6ZWkgbGVu
Z3RoID0gMDsKKyAgICBHQ0dMc2l6ZWkgc2l6ZSA9IDA7CisgICAgR0NHTGVudW0gdHlwZSA9IDA7
CisgICAgVmVjdG9yPEdDR0xjaGFyPiBuYW1lKGJ1ZlNpemUpOworCisgICAgZ2w6OkdldFRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtLCBpbmRleCwgYnVmU2l6ZSwgJmxlbmd0aCwgJnNp
emUsICZ0eXBlLCBuYW1lLmRhdGEoKSk7CisKKyAgICBpbmZvLm5hbWUgPSBTdHJpbmcobmFtZS5k
YXRhKCksIGxlbmd0aCk7CisgICAgaW5mby5zaXplID0gc2l6ZTsKKyAgICBpbmZvLnR5cGUgPSB0
eXBlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kQnVmZmVyQmFzZShH
Q0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6QmluZEJ1ZmZlckJhc2UodGFy
Z2V0LCBpbmRleCwgYnVmZmVyKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEdSQVBISUNT
X0NPTlRFWFRfR0wpICYmIFVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuY3BwCmluZGV4IDYwNmM5OTY4NmEwMDg5ZjYwNmRmYzAyMzExZDM0Y2UxNDY1NDA5NmMuLjFi
ZDc1ZGM1MGNiYmRjNzVkZGI3MjhiNDE0Y2YzMWZmMzZkZmE1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAtNTMxLDYgKzUzMSw3NCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKIH0KICNlbmRpZgogCisj
aWYgIVVTRShBTkdMRSkKKy8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb25seSBv
biBBTkdMRSwgYnV0IHN0aWxsIHJlcXVpcmUgZGVmaW5pdGlvbnMgZm9yIG5vbi1BTkdMRSBidWls
ZHMuCisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYklQb2ludGVy
KEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMaW50cHRyKQorewor
fQorCisvLyBRdWVyeSBGdW5jdGlvbnMKKworUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y3JlYXRlUXVlcnkoKQoreworICAgIHJldHVybiAwOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiZWdpblF1ZXJ5KEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2Jq
ZWN0KQoreworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjplbmRRdWVyeShHQ0dM
ZW51bSkKK3sKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmpl
Y3R1aXYoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMdWludCopCit7Cit9CisKKy8vIFRyYW5zZm9y
bSBGZWVkYmFjayBGdW5jdGlvbnMKKworUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHJldHVybiAwOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQ
bGF0Zm9ybUdMT2JqZWN0KQoreworfQorCitHQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6aXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0KQoreworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmluZFRyYW5zZm9y
bUZlZWRiYWNrKEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2JqZWN0KQoreworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtKQorewor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjplbmRUcmFuc2Zvcm1GZWVkYmFjaygp
Cit7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBHQ0dMZW51
bSkKK3sKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50LCBBY3RpdmVJbmZvJikKK3sK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmluZEJ1ZmZlckJhc2UoR0NHTGVu
dW0sIEdDR0x1aW50LCBQbGF0Zm9ybUdMT2JqZWN0KQoreworfQorCisjZW5kaWYgLy8gIVVTRShB
TkdMRSkKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEdSQVBI
SUNTX0NPTlRFWFRfR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDA0
ZmI5YjRlMzJlYmI4NDY4MTc5ZTg2MTBiZjM5Y2ZkNjIxOGQ0YmYuLjdjNzE3MzQxYTNjODJlY2Nm
YjliZmIyZTJjODE1MmRlOWJjZGM4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCkBAIC02Miw3ICs2Miw3IEBAIHR5cGVkZWYgc3RydWN0IF9fSU9TdXJmYWNlKiBJT1N1cmZh
Y2VSZWY7CiAKICNpZiBVU0UoTklDT1NJQSkKIG5hbWVzcGFjZSBOaWNvc2lhIHsKLWNsYXNzIEdD
M0RMYXllcjsKK2NsYXNzIEdDR0xMYXllcjsKIH0KICNlbmRpZgogCkBAIC03OSw3ICs3OSw3IEBA
IGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIEltYWdlRGF0YTsK
ICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi1jbGFzcyBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3Jt
TGF5ZXI7CitjbGFzcyBUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI7CiAjZW5kaWYKIAog
dHlwZWRlZiBXVEY6Okhhc2hNYXA8Q1N0cmluZywgdWludDY0X3Q+IFNoYWRlck5hbWVIYXNoOwpA
QCAtMzU5LDYgKzM1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHZlcnRleEF0dHJpYjRmKEdDR0x1
aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxv
YXQgdykgb3ZlcnJpZGU7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgs
IGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSBvdmVycmlkZTsKICAgICB2b2lkIHZlcnRleEF0dHJp
YlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NH
TGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQp
IG92ZXJyaWRlOworICAgIHZvaWQgdmVydGV4QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgs
IEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0
ciBvZmZzZXQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCB2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKIApAQCAt
MzY4LDEyICszNjksMzAgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
KEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgdmVydGV4
QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7
CiAKKyAgICAvLyBXZWJHTDIgUXVlcnkgY2FsbHMKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0
ZVF1ZXJ5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpblF1ZXJ5KEdDR0xlbnVtLCBQbGF0Zm9y
bUdMT2JqZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2KEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHVp
bnQqKSBvdmVycmlkZTsKKwogICAgIC8vIFZlcnRleEFycmF5T2plY3QgY2FsbHMKICAgICBQbGF0
Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxl
dGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICBHQ0dMYm9vbGVh
biBpc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgYmlu
ZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCisgICAgLy8gV2ViR0wy
IFRyYW5zZm9ybSBGZWVkYmFjayBjYWxscworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJh
bnNmb3JtRmVlZGJhY2soKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRi
YWNrKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAgIEdDR0xib29sZWFuIGlzVHJhbnNm
b3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBiaW5kVHJh
bnNmb3JtRmVlZGJhY2soR0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAg
IHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBlbmRUcmFuc2Zvcm1GZWVkYmFjaygpIG92ZXJyaWRlOworICAgIHZvaWQgdHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5ncyhQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEdD
R0xlbnVtKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQ
bGF0Zm9ybUdMT2JqZWN0LCBHQ0dMdWludCwgQWN0aXZlSW5mbyYpIG92ZXJyaWRlOworCisgICAg
dm9pZCBiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSwgR0NHTHVpbnQsIFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOworCiAgICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGltYWdlUGl4ZWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUmIGNh
bnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgdm9pZCBtYXJrQ29udGV4dENoYW5n
ZWQoKTsKQEAgLTcxNywxMSArNzM2LDExIEBAIHByaXZhdGU6CiAgICAgTGlzdEhhc2hTZXQ8R0NH
TGVudW0+IG1fc3ludGhldGljRXJyb3JzOwogCiAjaWYgVVNFKE5JQ09TSUEpICYmIFVTRShURVhU
VVJFX01BUFBFUikKLSAgICBmcmllbmQgY2xhc3MgTmljb3NpYTo6R0MzRExheWVyOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxOaWNvc2lhOjpHQzNETGF5ZXI+IG1fbmljb3NpYUxheWVyOworICAgIGZy
aWVuZCBjbGFzcyBOaWNvc2lhOjpHQ0dMTGF5ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPE5pY29z
aWE6OkdDR0xMYXllcj4gbV9uaWNvc2lhTGF5ZXI7CiAjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVIp
Ci0gICAgZnJpZW5kIGNsYXNzIFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcjsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyPiBtX3RleG1hcExh
eWVyOworICAgIGZyaWVuZCBjbGFzcyBUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcj4gbV90ZXht
YXBMYXllcjsKICNlbGlmICFQTEFURk9STShDT0NPQSkKICAgICBmcmllbmQgY2xhc3MgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xQcml2YXRlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTFByaXZhdGU+IG1fcHJpdmF0ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhNWJjMDQzYTIyNmE3YmVl
NWM2MDY1YjNhMzYzN2E3ZjRmYTgwODE0Li44NjU5MTUxZWRlN2EzMzQwOGVjZmQzMzc2NmU1ZTc4
NTgwYTNhZDhkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDEtMDkgIEp1c3RpbiBGYW4g
IDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR0wgMl0gSW1wbGVtZW50IHRy
YW5zZm9ybSBmZWVkYmFjayBhbmQgcGFzcyB0cmFuc2Zvcm0gZmVlZGJhY2sgY29uZm9ybWFuY2Ug
dGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NTgyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBwYXNzaW5nIHJlc3VsdHMgZm9yIHRyYW5zZm9ybV9mZWVkYmFjaywgYXMgZXhwZWN0ZWQgd2hl
biBBTkdMRSBpcyBlbmFibGVkLgorCisgICAgICAgICogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2Uy
L3RyYW5zZm9ybV9mZWVkYmFjay90d28tdW5yZWZlcmVuY2VkLXZhcnlpbmdzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNr
L3Vud3JpdHRlbi1vdXRwdXQtZGVmYXVsdHMtdG8temVyby1leHBlY3RlZC50eHQ6CisKIDIwMjAt
MDEtMDkgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjI1MzY2Mik6IExhcmdlIERhdGEgVVJMcyBhcmUgbm90IGJlaW5nIGhhbmRsZWQg
cHJvcGVybHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNl
Mi90cmFuc2Zvcm1fZmVlZGJhY2svdHdvLXVucmVmZXJlbmNlZC12YXJ5aW5ncy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRi
YWNrL3R3by11bnJlZmVyZW5jZWQtdmFyeWluZ3MtZXhwZWN0ZWQudHh0CmluZGV4IGFiNDQ3ZTM2
MWNjOGY2NjY2YTFiOWRkZTg3ZDQ2NWUwZDRlNmMwMTkuLjY0N2FlOTQ4NDBmOWNjMjY1Mzg0NWZi
NTViZTVjMTI2Mzk2ODFhYTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2Nv
bmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdHdvLXVucmVmZXJlbmNlZC12YXJ5aW5ncy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3Ry
YW5zZm9ybV9mZWVkYmFjay90d28tdW5yZWZlcmVuY2VkLXZhcnlpbmdzLWV4cGVjdGVkLnR4dApA
QCAtMSwxMCArMSw1IEBACiBUaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVs
b3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC4KIAogVGVzdDogLi4vLi4v
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9mZWVkYmFj
ay90d28tdW5yZWZlcmVuY2VkLXZhcnlpbmdzLmh0bWwKLVsgMTogUEFTUyBdIFdlYkdMIGNvbnRl
eHQgZXhpc3RzCi1bIDI6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VS
Uk9SIDogSW5pdCB0cmFuc2Zvcm0gZmVlZGJhY2sgc2hvdWxkIHN1Y2NlZWQKLVsgMzogUEFTUyBd
IGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBEcmF3IHdpdGggdHJhbnNm
b3JtIGZlZWRiYWNrIHNob3VsZCBzdWNjZWVkCi1bIDQ6IEZBSUwgXSBidWZmZXIgc2hvdWxkIG1h
dGNoIGV4cGVjdGVkIHZhbHVlcwotWyA1OiBQQVNTIF0gc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKLVsgRkFJTCBdIDEgZmFpbHVyZXMgcmVwb3J0ZWQKK1sgUEFTUyBdIEFsbCB0ZXN0cyBwYXNz
ZWQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3Ry
YW5zZm9ybV9mZWVkYmFjay91bndyaXR0ZW4tb3V0cHV0LWRlZmF1bHRzLXRvLXplcm8tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9m
ZWVkYmFjay91bndyaXR0ZW4tb3V0cHV0LWRlZmF1bHRzLXRvLXplcm8tZXhwZWN0ZWQudHh0Cmlu
ZGV4IDI5YzlhMWVmNjAzZDc4ZmM2MGVhYmIwZThkZTU0M2VkODg4MzExMDIuLjY5NzRkYTQ4YTk0
ODI3NGViZTliOGE5YjI3YjA0YWFkMGM3NDM4MGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dl
YmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdW53cml0dGVuLW91dHB1
dC1kZWZhdWx0cy10by16ZXJvLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC8y
LjAuMC9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL3Vud3JpdHRlbi1vdXRwdXQtZGVm
YXVsdHMtdG8temVyby1leHBlY3RlZC50eHQKQEAgLTEsMTEgKzEsNSBAQAogVGhpcyB0ZXN0IHJ1
bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQ
QVNTIG9yIEZBSUwuCiAKIFRlc3Q6IC4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdW53cml0dGVuLW91dHB1dC1kZWZhdWx0cy10
by16ZXJvLmh0bWwKLVsgMTogUEFTUyBdIFdlYkdMIGNvbnRleHQgZXhpc3RzCi1bIDI6IFBBU1Mg
XSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogU2V0IHVwIHByb2dyYW0g
c2hvdWxkIHN1Y2NlZWQKLVsgMzogRkFJTCBdIGJ1ZmZlciBzaG91bGQgbWF0Y2ggZXhwZWN0ZWQg
dmFsdWVzCi1bIDQ6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9S
IDogU2V0IHVwIHByb2dyYW0gc2hvdWxkIHN1Y2NlZWQKLVsgNTogUEFTUyBdIGJ1ZmZlciBzaG91
bGQgbWF0Y2ggZXhwZWN0ZWQgdmFsdWVzCi1bIDY6IFBBU1MgXSBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotWyBGQUlMIF0gMSBmYWlsdXJlcyByZXBvcnRlZAorWyBQQVNTIF0gQWxsIHRlc3Rz
IHBhc3NlZAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387305</attachid>
            <date>2020-01-09 18:46:29 -0800</date>
            <delta_ts>2020-01-09 18:48:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205823-20200109184628.patch</filename>
            <type>text/plain</type>
            <size>49289</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJlZDVhMjU4OGU0NzVm
NzhhOTVmY2ZhOTU4ZmZiMTVjZWRhNmIzNS4uODlhNGM0YzMzYTgzNmJiYTYwYjVkNDAyNDI0YzFj
YTYxZjg2YTA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDIwLTAxLTA5ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdMIDJdIEltcGxl
bWVudCB0cmFuc2Zvcm0gZmVlZGJhY2sgYW5kIHBhc3MgdHJhbnNmb3JtIGZlZWRiYWNrIGNvbmZv
cm1hbmNlIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDU4MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJh
Y2sgY29uZm9ybWFuY2UgdGVzdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnRXZWJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9KU1ZhbHVlKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6fldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5p
dGlhbGl6ZVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YSk6IEFOR0xFIHZhbGlkYXRp
b24gaW4gbWFwQnVmZmVyUmFuZ2UgbWF5IGZhaWw7IHByZXZlbnQgY29weWluZyBmcm9tIGEgbnVs
bHB0ci4gCisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhB
dHRyaWJJUG9pbnRlcik6CisKKyAgICAgICAgQmFyZSBtaW5pbXVtIHN0dWJzIHRvIGdldCBXZWJH
TFF1ZXJ5IHBhc3NpbmcgdHJhbnNmb3JtX2ZlZWRiYWNrIHRlc3RzOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5RdWVyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFF1ZXJ5OjpXZWJHTFF1ZXJ5KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFF1ZXJ5Lmg6CisKKyAgICAgICAgVHJhbnNmb3JtIGZlZWRiYWNrIGZ1bmN0aW9uczoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRy
YW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
VHJhbnNmb3JtRmVlZGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xUcmFuc2Zvcm1G
ZWVkYmFjazo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFRyYW5zZm9ybUZlZWRiYWNrOjpkZWxldGVPYmplY3RJbXBsKToKKworICAgICAgICBNaXNjIGZ1
bmN0aW9ucyB0aGF0IG5lZWRlZCBhZGRlZCBmdW5jdGlvbmFsaXR5OgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorCisg
ICAgICAgIEhlbHBlciBmdW5jdGlvbnMgdG8gdHJhY2sgV2ViR0wyIHN0YXRlL29iamVjdHM6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmNhY2hlRGVsZXRlZEJ1
ZmZlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQW55Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OnNldFRhcmdl
dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlQW5kQ2FjaGVCdWZmZXJCaW5kaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5jYWNoZURlbGV0ZWRCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dy
YW1QYXJhbWV0ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaDoKKworICAgICAgICBQaXBlIG5ldyBHcmFwaGljc0NvbnRleHRHTCBtZXRob2RzIHRv
IEFOR0xFOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4
QXR0cmliSVBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZVF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpiZWdpblF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjplbmRRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0UXVlcnlPYmplY3R1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNUcmFuc2Zvcm1GZWVkYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmluZFRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpi
ZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5k
QnVmZmVyQmFzZSk6CisKKyAgICAgICAgQWRkIEdyYXBoaWNzQ29udGV4dEdMIHN0dWJzIGZvciBu
b24tQU5HTEUgYnVpbGRzOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiZWdpblF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjplbmRRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVUcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNU
cmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpiaW5kQnVmZmVyQmFzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisKIDIwMjAtMDEtMDkgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI1
MzY2Mik6IExhcmdlIERhdGEgVVJMcyBhcmUgbm90IGJlaW5nIGhhbmRsZWQgcHJvcGVybHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oCmluZGV4IDE4MjAwYzlkNjc0OGU2NjIxMTFiYzI1ZWQwYjI0ZjI5NDY0OGMwYzEuLjM4
MDI5OWIxMmFmMmYyMGVhOTZkYTdjNDk1MWExNTA1MjExZTcwNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAt
MTExNywxMSArMTExNywxMSBAQAogLyogVVNFX0FOR0xFPTEgdXNlcyBBTkdMRSBmb3IgdGhlIFdl
YkdMIGJhY2tlbmQuCiAgICBJdCByZXBsYWNlcyBVU0VfT1BFTkdMLCBVU0VfT1BFTkdMX0VTIGFu
ZCBVU0VfRUdMLiAqLwogI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKE1BQ0NBVEFMWVNU
KSAmJiBfX2hhc19pbmNsdWRlKDxPcGVuR0wvT3BlbkdMLmg+KSkKLSNkZWZpbmUgVVNFX09QRU5H
TCAxCi0jZGVmaW5lIFVTRV9PUEVOR0xfMyAxCisjZGVmaW5lIFVTRV9PUEVOR0wgMAorI2RlZmlu
ZSBVU0VfT1BFTkdMXzMgMAogI2RlZmluZSBVU0VfT1BFTkdMX0VTIDAKICNkZWZpbmUgVVNFX09Q
RU5HTF9FU18zIDAKLSNkZWZpbmUgVVNFX0FOR0xFIDAKKyNkZWZpbmUgVVNFX0FOR0xFIDEKICNl
bHNlCiAjZGVmaW5lIFVTRV9PUEVOR0wgMAogI2RlZmluZSBVU0VfT1BFTkdMXzMgMApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwCmluZGV4IDc4
YTRhZTYyZTc0N2FjNzE2NjgxMzMzYjRlNDQ3ZmZhNWJlNjFkMTAuLjE4NGIzMzA3YTFjNjA3ZGY1
NGI3ZTAwZGI5ZTdhOGU1NTAxNDBmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJK
U1dlYkdMUHJvZ3JhbS5oIgogI2luY2x1ZGUgIkpTV2ViR0xSZW5kZXJidWZmZXIuaCIKICNpbmNs
dWRlICJKU1dlYkdMVGV4dHVyZS5oIgorI2luY2x1ZGUgIkpTV2ViR0xUcmFuc2Zvcm1GZWVkYmFj
ay5oIgogI2luY2x1ZGUgIkpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIgogI2luY2x1ZGUgIkpT
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q0lubGluZXMuaD4KQEAgLTEzOCw2ICsxMzksOSBAQCBKU1ZhbHVlIGNvbnZlcnRUb0pTVmFsdWUo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0Jgog
ICAgICAgICAsCiAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3Q+JiBhcnJheSkgewogICAgICAgICAgICAgcmV0dXJuIHRvSlMoJmxleGljYWxHbG9iYWxPYmpl
Y3QsICZnbG9iYWxPYmplY3QsIGFycmF5LmdldCgpKTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZd
IChjb25zdCBSZWZQdHI8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4mIHRyYW5zZm9ybUZlZWRiYWNr
KSB7CisgICAgICAgICAgICByZXR1cm4gdG9KUygmbGV4aWNhbEdsb2JhbE9iamVjdCwgJmdsb2Jh
bE9iamVjdCwgdHJhbnNmb3JtRmVlZGJhY2suZ2V0KCkpOwogICAgICAgICB9CiAjZW5kaWYKICAg
ICApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmNwcAppbmRleCBiYWU5YjRiMWY0OTNjODU0ZDI1MTdmYWJmYTNhZTk1YTIyMzMz
ZmJmLi4yNjUxNGUyMDhmNTI5NGIyYzM1NjIzMTNkZTg2NWJlZDkwZGZiZTRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRl
ICJFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIK
ICNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKQEAgLTk1LDYgKzk2LDE2IEBAIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYgY2Fu
dmFzLCBSZWY8R3JhcGhpY3NDCiB7CiAgICAgaW5pdGlhbGl6ZVNoYWRlckV4dGVuc2lvbnMoKTsK
ICAgICBpbml0aWFsaXplVmVydGV4QXJyYXlPYmplY3RzKCk7CisgICAgaW5pdGlhbGl6ZVRyYW5z
Zm9ybUZlZWRiYWNrQnVmZmVyQ2FjaGUoKTsKK30KKworV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
fldlYkdMMlJlbmRlcmluZ0NvbnRleHQoKQoreworICAgIC8vIFJlbW92ZSBhbGwgcmVmZXJlbmNl
cyB0byBXZWJHTE9iamVjdHMgc28gaWYgdGhleSBhcmUgdGhlIGxhc3QgcmVmZXJlbmNlCisgICAg
Ly8gdGhleSB3aWxsIGJlIGZyZWVkIGJlZm9yZSB0aGUgbGFzdCBjb250ZXh0IGlzIHJlbW92ZWQg
ZnJvbSB0aGUgY29udGV4dCBncm91cC4KKyAgICBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2sgPSBu
dWxscHRyOworICAgIG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMuY2xlYXIoKTsKKyAg
ICBtX2FjdGl2ZVF1ZXJpZXMuY2xlYXIoKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojppbml0aWFsaXplVmVydGV4QXJyYXlPYmplY3RzKCkKQEAgLTExOCw2ICsxMjksMTQgQEAg
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucygp
CiAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2Zy
YWdfZGVwdGgiKTsKIH0KIAordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXpl
VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDYWNoZSgpCit7CisgICAgaW50IG1heFRyYW5zZm9ybUZl
ZWRiYWNrQXR0cmlicyA9IGdldEludFBhcmFtZXRlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1RS
QU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTKTsKKyAgICBBU1NFUlQobWF4VHJhbnNm
b3JtRmVlZGJhY2tBdHRyaWJzID49IDQpOworCisgICAgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNr
QnVmZmVycy5yZXNpemUobWF4VHJhbnNmb3JtRmVlZGJhY2tBdHRyaWJzKTsKK30KKwogaW5saW5l
IHN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gYXJyYXlCdWZmZXJWaWV3RWxlbWVudFNpemUoY29u
c3QgQXJyYXlCdWZmZXJWaWV3JiBkYXRhKQogewogICAgIHN3aXRjaCAoZGF0YS5nZXRUeXBlKCkp
IHsKQEAgLTMwNyw3ICszMjYsOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgc3JjQnl0ZQogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIC8vIEZJWE1FOiBDb2FsZXNjZSBtdWx0aXBsZSBnZXRCdWZmZXJTdWJE
YXRhKCkgY2FsbHMgdG8gdXNlIGEgc2luZ2xlIG1hcCgpIGNhbGwKICAgICB2b2lkKiBwdHIgPSBt
X2NvbnRleHQtPm1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgY2hlY2tlZFNyY0J5dGVPZmZzZXQudW5z
YWZlR2V0KCksIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4oY2hlY2tlZENvcHlMZW5ndGhQdHIu
dW5zYWZlR2V0KCkgKiBjaGVja2VkRWxlbWVudFNpemUudW5zYWZlR2V0KCkpLCBHcmFwaGljc0Nv
bnRleHRHTDo6TUFQX1JFQURfQklUKTsKLSAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KGRz
dERhdGEtPmJhc2VBZGRyZXNzKCkpICsgZHN0RGF0YS0+Ynl0ZU9mZnNldCgpICsgZHN0T2Zmc2V0
ICogZWxlbWVudFNpemUsIHB0ciwgY29weUxlbmd0aCAqIGVsZW1lbnRTaXplKTsKKyAgICBpZiAo
cHRyKQorICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KGRzdERhdGEtPmJhc2VBZGRy
ZXNzKCkpICsgZHN0RGF0YS0+Ynl0ZU9mZnNldCgpICsgZHN0T2Zmc2V0ICogZWxlbWVudFNpemUs
IHB0ciwgY29weUxlbmd0aCAqIGVsZW1lbnRTaXplKTsKKwogICAgIGlmICghbV9jb250ZXh0LT51
bm1hcEJ1ZmZlcih0YXJnZXQpKQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJnZXRCdWZmZXJTdWJEYXRhIiwgIkZhaWxlZCB3
aGlsZSB1bm1hcHBpbmcgYnVmZmVyIik7CiAjZW5kaWYKQEAgLTg2Miw5ICs4ODMsMTIgQEAgdm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCwgVWlu
dDMyTGlzdCYmKQogICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSB2ZXJ0ZXhB
dHRyaWJJNHVpdigpIik7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4
QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdD
R0xpbnQ2NCkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSVBvaW50
ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IHN0cmlkZSwgR0NHTGludDY0IG9mZnNldCkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1Q
TEVNRU5URUQgXV0gdmVydGV4QXR0cmliSVBvaW50ZXIoKSIpOworICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliSVBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0cmlkZSwgb2Zmc2V0KTsKIH0KIAog
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhcihHQ0dMYml0ZmllbGQgbWFzaykKQEAg
LTEwNDIsOCArMTA2NiwxMiBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVm
ZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsCiAKIFJlZlB0cjxXZWJH
TFF1ZXJ5PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVRdWVyeSgpCiB7Ci0gICAgTE9H
KFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGNyZWF0ZVF1ZXJ5KCkiKTsKLSAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gcXVlcnkgPSBXZWJHTFF1ZXJ5OjpjcmVhdGUoKnRo
aXMpOworICAgIGFkZFNoYXJlZE9iamVjdChxdWVyeS5nZXQoKSk7CisgICAgcmV0dXJuIHF1ZXJ5
OwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVF1ZXJ5KFdlYkdMUXVl
cnkqKQpAQCAtMTA1NywxNCArMTA4NSw0NSBAQCBHQ0dMYm9vbGVhbiBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojppc1F1ZXJ5KFdlYkdMUXVlcnkqKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblF1ZXJ5KEdDR0xlbnVtLCBXZWJHTFF1ZXJ5
JikKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5RdWVyeShHQ0dMZW51bSB0YXJn
ZXQsIFdlYkdMUXVlcnkmIHF1ZXJ5KQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1F
TlRFRCBdXSBiZWdpblF1ZXJ5KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogQWRkIHZhbGlkYXRpb24gdG8gcHJl
dmVudCBiYWQgY2FjaGluZy4KKworICAgIC8vIE9ubHkgb25lIHF1ZXJ5IG9iamVjdCBjYW4gYmUg
YWN0aXZlIHBlciB0YXJnZXQuCisgICAgYXV0byB0YXJnZXRLZXkgPSAodGFyZ2V0ID09IEdyYXBo
aWNzQ29udGV4dEdMOjpBTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFKSA/IEdyYXBoaWNz
Q29udGV4dEdMOjpBTllfU0FNUExFU19QQVNTRUQgOiB0YXJnZXQ7CisKKyAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fYWN0aXZlUXVlcmllcy5hZGQodGFyZ2V0S2V5LCBtYWtlUmVmUHRyKCZxdWVyeSkp
OworCisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJiZWdpblF1ZXJ5
IiwgIlF1ZXJ5IG9iamVjdCBvZiB0YXJnZXQgaXMgYWxyZWFkeSBhY3RpdmUiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1fY29udGV4dC0+YmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5
Lm9iamVjdCgpKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRRdWVyeShH
Q0dMZW51bSkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZW5kUXVlcnkoR0NHTGVudW0g
dGFyZ2V0KQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSBlbmRRdWVy
eSgpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHRhcmdldEtleSA9ICh0
YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkFOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJ
VkUpID8gR3JhcGhpY3NDb250ZXh0R0w6OkFOWV9TQU1QTEVTX1BBU1NFRCA6IHRhcmdldDsKKwor
ICAgIGF1dG8gcXVlcnkgPSBtX2FjdGl2ZVF1ZXJpZXMudGFrZSh0YXJnZXRLZXkpOworICAgIGlm
ICghcXVlcnkpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6
OklOVkFMSURfT1BFUkFUSU9OLCAiZW5kUXVlcnkiLCAiUXVlcnkgb2JqZWN0IG9mIHRhcmdldCBp
cyBub3QgYWN0aXZlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbnRleHQt
PmVuZFF1ZXJ5KHRhcmdldCk7CisKKyAgICAvLyBBIHF1ZXJ5J3MgcmVzdWx0IG11c3Qgbm90IGJl
IG1hZGUgYXZhaWxhYmxlIHVudGlsIGNvbnRyb2wgaGFzIHJldHVybmVkIHRvIHRoZSB1c2VyIGFn
ZW50J3MgbWFpbiBsb29wLgorICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXZlbnRMb29w
KCkucXVldWVNaWNyb3Rhc2soW3F1ZXJ5XSB7CisgICAgICAgIHF1ZXJ5LT5tYWtlUmVzdWx0QXZh
aWxhYmxlKCk7CisgICAgfSk7CiB9CiAKIFJlZlB0cjxXZWJHTFF1ZXJ5PiBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRRdWVyeShHQ0dMZW51bSwgR0NHTGVudW0pCkBAIC0xMDczLDEwICsxMTMy
LDI1IEBAIFJlZlB0cjxXZWJHTFF1ZXJ5PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVy
eShHQ0dMZW51bSwgR0NHTGVudW0pCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVdlYkdMQW55
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFF1ZXJ5UGFyYW1ldGVyKFdlYkdMUXVlcnkmLCBH
Q0dMZW51bSkKK1dlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFF1ZXJ5UGFyYW1l
dGVyKFdlYkdMUXVlcnkmIHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkKIHsKLSAgICBMT0coV2ViR0ws
ICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gZ2V0UXVlcnlQYXJhbWV0ZXIpIik7Ci0gICAgcmV0dXJu
IG51bGxwdHI7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBzd2l0Y2ggKHBuYW1lKSB7CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6UVVFUllfUkVTVUxUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlFVRVJZ
X1JFU1VMVF9BVkFJTEFCTEU6CisgICAgICAgIGlmICghcXVlcnkuaXNSZXN1bHRBdmFpbGFibGUo
KSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVN
LCAiZ2V0UXVlcnlQYXJhbWV0ZXIiLCAiSW52YWxpZCBwbmFtZSIpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworICAgIG1fY29udGV4
dC0+Z2V0UXVlcnlPYmplY3R1aXYocXVlcnkub2JqZWN0KCksIHBuYW1lLCAmcmVzdWx0KTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBSZWZQdHI8V2ViR0xTYW1wbGVyPiBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpjcmVhdGVTYW1wbGVyKCkKQEAgLTExNTcsNDUgKzEyMzEsODggQEAgV2ViR0xB
bnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3luY1BhcmFtZXRlcihXZWJHTFN5bmMmLCBH
Q0dMZW51bSkKIAogUmVmUHRyPFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s+IFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkKIHsKLSAgICBMT0coV2ViR0wsICJb
WyBOT1QgSU1QTEVNRU5URUQgXV0gY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSIpOwotICAgIHJl
dHVybiBudWxscHRyOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgYXV0byB0cmFuc2Zvcm1GZWVkYmFjayA9IFdlYkdMVHJh
bnNmb3JtRmVlZGJhY2s6OmNyZWF0ZSgqdGhpcyk7CisgICAgYWRkU2hhcmVkT2JqZWN0KHRyYW5z
Zm9ybUZlZWRiYWNrLmdldCgpKTsKKyAgICByZXR1cm4gdHJhbnNmb3JtRmVlZGJhY2s7CiB9CiAK
LXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soV2Vi
R0xUcmFuc2Zvcm1GZWVkYmFjayopCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0
ZVRyYW5zZm9ybUZlZWRiYWNrKFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGZlZWRiYWNrT2JqZWN0
KQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSBkZWxldGVUcmFuc2Zv
cm1GZWVkYmFjaygpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjayA9PSBmZWVkYmFj
a09iamVjdCkKKyAgICAgICAgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrID0gbnVsbHB0cjsKKwor
ICAgIGRlbGV0ZU9iamVjdChmZWVkYmFja09iamVjdCk7CiB9CiAKLUdDR0xib29sZWFuIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmlzVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xUcmFuc2Zvcm1GZWVk
YmFjayopCitHQ0dMYm9vbGVhbiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppc1RyYW5zZm9ybUZl
ZWRiYWNrKFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGZlZWRiYWNrT2JqZWN0KQogewotICAgIExP
RyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSBpc1RyYW5zZm9ybUZlZWRiYWNrKCkiKTsK
LSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
ZmVlZGJhY2tPYmplY3QgfHwgZmVlZGJhY2tPYmplY3QtPmlzRGVsZXRlZCgpIHx8ICF2YWxpZGF0
ZVdlYkdMT2JqZWN0KCJpc1RyYW5zZm9ybUZlZWRiYWNrIiwgZmVlZGJhY2tPYmplY3QpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9jb250ZXh0LT5pc1RyYW5zZm9ybUZl
ZWRiYWNrKGZlZWRiYWNrT2JqZWN0LT5vYmplY3QoKSk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtLCBXZWJHTFRyYW5zZm9y
bUZlZWRiYWNrKikKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFRyYW5zZm9ybUZl
ZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjayogZmVlZGJhY2tP
YmplY3QpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGJpbmRUcmFu
c2Zvcm1GZWVkYmFjaygpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKGZlZWRiYWNrT2JqZWN0KSB7CisgICAgICAgIGlmIChm
ZWVkYmFja09iamVjdC0+aXNEZWxldGVkKCkpIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImJpbmRUcmFuc2Zvcm1G
ZWVkYmFjayIsICJjYW5ub3QgYmluZCBhIGRlbGV0ZWQgVHJhbnNmb3JtIEZlZWRiYWNrIG9iamVj
dCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF2YWxp
ZGF0ZVdlYkdMT2JqZWN0KCJpc1RyYW5zZm9ybUZlZWRiYWNrIiwgZmVlZGJhY2tPYmplY3QpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29udGV4dC0+YmluZFRyYW5zZm9y
bUZlZWRiYWNrKHRhcmdldCwgb2JqZWN0T3JaZXJvKGZlZWRiYWNrT2JqZWN0KSk7CisgICAgbV9i
b3VuZFRyYW5zZm9ybUZlZWRiYWNrID0gZmVlZGJhY2tPYmplY3Q7CiB9CiAKLXZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSkKK3ZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBw
cmltaXRpdmVNb2RlKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSBi
ZWdpblRyYW5zZm9ybUZlZWRiYWNrKCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHQtPmJlZ2luVHJhbnNmb3JtRmVl
ZGJhY2socHJpbWl0aXZlTW9kZSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1F
TlRFRCBdXSBlbmRUcmFuc2Zvcm1GZWVkYmFjaygpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZXh0LT5lbmRUcmFuc2Zv
cm1GZWVkYmFjaygpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3MoV2ViR0xQcm9ncmFtJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBH
Q0dMZW51bSkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5ncyhXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YXJ5
aW5ncywgR0NHTGVudW0gYnVmZmVyTW9kZSkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1Q
TEVNRU5URUQgXV0gdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncygpIik7CisgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSB8fCB2YXJ5aW5ncy5pc0VtcHR5KCkgfHwgIXZhbGlkYXRlV2Vi
R0xPYmplY3QoInRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MiLCAmcHJvZ3JhbSkpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fY29udGV4dC0+dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhwcm9n
cmFtLm9iamVjdCgpLCB2YXJ5aW5ncywgYnVmZmVyTW9kZSk7CiB9CiAKLVJlZlB0cjxXZWJHTEFj
dGl2ZUluZm8+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyhXZWJHTFByb2dyYW0mLCBHQ0dMdWludCkKK1JlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhXZWJHTFBy
b2dyYW0mIHByb2dyYW0sIEdDR0x1aW50IGluZGV4KQogewotICAgIExPRyhXZWJHTCwgIltbIE5P
VCBJTVBMRU1FTlRFRCBdXSBnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoKSIpOwotICAgIHJl
dHVybiBudWxscHRyOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlk
YXRlV2ViR0xPYmplY3QoImdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyIsICZwcm9ncmFtKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZl
SW5mbyBpbmZvOworICAgIG1fY29udGV4dC0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHBy
b2dyYW0ub2JqZWN0KCksIGluZGV4LCBpbmZvKTsKKworICAgIGlmICghaW5mby5uYW1lIHx8ICFp
bmZvLnR5cGUgfHwgIWluZm8uc2l6ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBy
ZXR1cm4gV2ViR0xBY3RpdmVJbmZvOjpjcmVhdGUoaW5mby5uYW1lLCBpbmZvLnR5cGUsIGluZm8u
c2l6ZSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cGF1c2VUcmFuc2Zvcm1G
ZWVkYmFjaygpCkBAIC0xMjA4LDkgKzEzMjUsMzAgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCiAgICAgTE9HKFdlYkdMLCAiW1sgTk9UIElN
UExFTUVOVEVEIF1dIHJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkiKTsKIH0KIAotdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSwgR0NHTHVpbnQsIFdl
YkdMQnVmZmVyKikKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlckJhc2Uo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgV2ViR0xCdWZmZXIqIGJ1ZmZlcikKIHsK
LSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gYmluZEJ1ZmZlckJhc2UoKSIp
OworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHN3aXRjaCAodGFyZ2V0KSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNG
T1JNX0ZFRURCQUNLX0JVRkZFUjoKKyAgICAgICAgaWYgKGluZGV4ID49IG1fYm91bmRUcmFuc2Zv
cm1GZWVkYmFja0J1ZmZlcnMuc2l6ZSgpKSB7CisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImJpbmRCdWZmZXJCYXNlIiwgImlu
ZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQlVGRkVSOgor
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVN
LCAiYmluZEJ1ZmZlckJhc2UiLCAidGFyZ2V0IG5vdCB5ZXQgc3VwcG9ydGVkIik7CisgICAgICAg
IHJldHVybjsKKyAgICBkZWZhdWx0OgorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiYmluZEJ1ZmZlckJhc2UiLCAiaW52YWxpZCB0YXJn
ZXQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsaWRhdGVBbmRDYWNo
ZUJ1ZmZlckJpbmRpbmcoImJpbmRCdWZmZXJCYXNlIiwgdGFyZ2V0LCBidWZmZXIpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgs
IG9iamVjdE9yWmVybyhidWZmZXIpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0sIEdDR0x1aW50LCBXZWJHTEJ1ZmZlciosIEdDR0xp
bnQ2NCwgR0NHTGludDY0KQpAQCAtMTIxOCwxMCArMTM1NiwxOCBAQCB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSwgR0NHTHVpbnQsIFdlYkdMQnVm
ZmVyKiwgRwogICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSBiaW5kQnVmZmVy
UmFuZ2UoKSIpOwogfQogCi1XZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRl
eGVkUGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQpCitXZWJHTEFueSBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NH
THVpbnQgaW5kZXgpCiB7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBzd2l0Y2ggKHRhcmdldCkgewogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORzoKKyAgICAg
ICAgaWYgKGluZGV4ID49IG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMuc2l6ZSgpKSB7
CisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJ
RF9WQUxVRSwgImdldEluZGV4ZWRQYXJhbWV0ZXIiLCAiaW5kZXggb3V0IG9mIHJhbmdlIik7Cisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9i
b3VuZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyc1tpbmRleF07CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFOgogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQ6CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CVUZGRVJfQklORElORzoKQEAgLTIwNzQsNiArMjIy
MCwxMCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIoR0NH
TGVudW0gcG5hbWUpCiAgICAgICAgIHJldHVybiBtX2JhY2tEcmF3QnVmZmVyOyAvLyBlbXVsYXRl
ZCBiYWNrYnVmZmVyCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkVBRF9GUkFNRUJVRkZF
Ul9CSU5ESU5HOgogICAgICAgICByZXR1cm4gbV9yZWFkRnJhbWVidWZmZXJCaW5kaW5nOworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRSQU5TRk9STV9GRUVEQkFDS19CSU5ESU5HOgorICAg
ICAgICByZXR1cm4gbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrOworICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORzoKKyAgICAgICAgcmV0
dXJuIG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcjsKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT1BZX1JFQURfQlVGRkVSOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNP
UFlfV1JJVEVfQlVGRkVSOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlBJWEVMX1BBQ0tf
QlVGRkVSX0JJTkRJTkc6ICAgCkBAIC0yMDgyLDcgKzIyMzIsNiBAQCBXZWJHTEFueSBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6U0FNUExFUl9CSU5ESU5HOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlRFWFRVUkVfQklORElOR18yRF9BUlJBWToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpURVhUVVJFX0JJTkRJTkdfM0Q6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fQlVGRkVSX0JJTkRJTkc6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRQYXJhbWV0ZXIiLCAicGFyYW1ldGVy
IG5hbWUgbm90IHlldCBzdXBwb3J0ZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0y
MzgxLDYgKzI1MzAsMTcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxz
KEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkKICAgICBMT0coV2ViR0ws
ICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gcmVhZFBpeGVscygpIik7CiB9CiAKK3ZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dW5jYWNoZURlbGV0ZWRCdWZmZXIoV2ViR0xCdWZmZXIqIGJ1ZmZl
cikKK3sKKyAgICBBU1NFUlQoYnVmZmVyKTsKKworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuY2FjaGVEZWxldGVkQnVmZmVyKGJ1ZmZlcik7CisKKyAgICBzaXplX3QgaW5kZXggPSBt
X2JvdW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzLmZpbmQoYnVmZmVyKTsKKyAgICBpZiAoaW5k
ZXggPCBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzLnNpemUoKSkKKyAgICAgICAgbV9i
b3VuZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyc1tpbmRleF0gPSBudWxscHRyOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXgg
MjM5MTcyZDk1NGQ2ZTJhMmJjYWYwNzJhMjFhMmRlNjI4ODdmMDFmNC4uNzcwZjMyNWQ0ZWE4YzZl
NjM3NjM5NTA4YTUwMzg4ZWM4MzZkMTdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaApAQCAtNDQsNiArNDQsOCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiBj
cmVhdGUoQ2FudmFzQmFzZSYsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyk7CiAgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2FudmFz
QmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiwgR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzKTsKIAorICAgIH5XZWJHTDJSZW5kZXJpbmdDb250ZXh0KCk7CisKICAgICAvLyBC
dWZmZXIgb2JqZWN0cwogICAgIHVzaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZl
ckRhdGE7CiAgICAgdXNpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0
YTsKQEAgLTI1OCw4ICsyNjAsMTcgQEAgcHJpdmF0ZToKICAgICBHQ0dMZW51bSBiYXNlSW50ZXJu
YWxGb3JtYXRGcm9tSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQpOwogICAg
IGJvb2wgaXNJbnRlZ2VyRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZm9ybWF0KTsKICAgICB2b2lk
IGluaXRpYWxpemVTaGFkZXJFeHRlbnNpb25zKCk7CisgICAgdm9pZCBpbml0aWFsaXplVHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXJDYWNoZSgpOwogCiAgICAgYm9vbCB2YWxpZGF0ZVRleFN0b3JhZ2VG
dW5jUGFyYW1ldGVycyhHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVt
IGludGVybmFsRm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGNvbnN0
IGNoYXIqIGZ1bmN0aW9uTmFtZSk7CisKKyAgICB2b2lkIHVuY2FjaGVEZWxldGVkQnVmZmVyKFdl
YkdMQnVmZmVyKikgZmluYWw7CisKKyAgICBSZWZQdHI8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4g
bV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrOworICAgIFZlY3RvcjxSZWZQdHI8V2ViR0xCdWZmZXI+
PiBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzOworCisgICAgLy8gUXVlcmllcworICAg
IEhhc2hNYXA8R0NHTGVudW0sIFJlZlB0cjxXZWJHTFF1ZXJ5Pj4gbV9hY3RpdmVRdWVyaWVzOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xBbnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
QW55LmgKaW5kZXggY2Y1M2UxZTNlOWQ0ZjA1MjhlYzMyYzYwNzYwMzU1YzE2NzFkNzQ2Yi4uMzk1
N2I4NDdmMDFmZTJmOTdlMDZkYzM2MDFhYmQ1MWE2NzhhOWJiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xBbnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEFueS5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIFdlYkdMRnJhbWVidWZm
ZXI7CiBjbGFzcyBXZWJHTFByb2dyYW07CiBjbGFzcyBXZWJHTFJlbmRlcmJ1ZmZlcjsKIGNsYXNz
IFdlYkdMVGV4dHVyZTsKK2NsYXNzIFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s7CiBjbGFzcyBXZWJH
TFZlcnRleEFycmF5T2JqZWN0OwogY2xhc3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzsKIApA
QCAtNzAsNiArNzEsNyBAQCB1c2luZyBXZWJHTEFueSA9IFZhcmlhbnQ8CiAgICAgUmVmUHRyPFdl
YkdMVmVydGV4QXJyYXlPYmplY3RPRVM+CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICAsIFJlZlB0
cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0PgorICAgICwgUmVmUHRyPFdlYkdMVHJhbnNmb3JtRmVl
ZGJhY2s+CiAjZW5kaWYKID47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVm
ZmVyLmNwcAppbmRleCA1ZTkxNTI2YTliYjFmZmFjYTQwNzE1YTc2ZGY3NzVmMDU5YTQyYzdlLi43
MGMwNmY5ODU0Zjc4NWU5ODllNDViOTc0YzRjNzY1YzdlMzFiYzc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCkBAIC0yNTMsMjUgKzI1MywxMyBAQCB2b2lk
IFdlYkdMQnVmZmVyOjpzZXRDYWNoZWRNYXhJbmRleChHQ0dMZW51bSB0eXBlLCB1bnNpZ25lZCB2
YWx1ZSkKICAgICBtX25leHRBdmFpbGFibGVDYWNoZUVudHJ5ID0gKG1fbmV4dEF2YWlsYWJsZUNh
Y2hlRW50cnkgKyAxKSAlIFdURl9BUlJBWV9MRU5HVEgobV9tYXhJbmRleENhY2hlKTsKIH0KIAot
dm9pZCBXZWJHTEJ1ZmZlcjo6c2V0VGFyZ2V0KEdDR0xlbnVtIHRhcmdldCwgYm9vbCBmb3JXZWJH
TDIpCit2b2lkIFdlYkdMQnVmZmVyOjpzZXRUYXJnZXQoR0NHTGVudW0gdGFyZ2V0KQogewotICAg
IC8vIEluIFdlYkdMLCBhIGJ1ZmZlciBpcyBib3VuZCB0byBvbmUgdGFyZ2V0IGluIGl0cyBsaWZl
dGltZQotICAgIGlmIChtX3RhcmdldCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICh0YXJnZXQg
PT0gR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUiB8fCB0YXJnZXQgPT0gR3JhcGhpY3ND
b250ZXh0R0w6OkVMRU1FTlRfQVJSQVlfQlVGRkVSKQotICAgICAgICBtX3RhcmdldCA9IHRhcmdl
dDsKLSAgICBlbHNlIGlmIChmb3JXZWJHTDIpIHsKLSNpZiBFTkFCTEUoV0VCR0wyKQotICAgICAg
ICBzd2l0Y2ggKHRhcmdldCkgewotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT1BZ
X1JFQURfQlVGRkVSOgotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT1BZX1dSSVRF
X0JVRkZFUjoKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UElYRUxfUEFDS19CVUZG
RVI6Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlBJWEVMX1VOUEFDS19CVUZGRVI6
Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRSQU5TRk9STV9GRUVEQkFDS19CVUZG
RVI6Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQlVGRkVSOgotICAg
ICAgICAgICAgbV90YXJnZXQgPSB0YXJnZXQ7Ci0gICAgICAgIH0KLSNlbmRpZgorICAgIG1fdGFy
Z2V0ID0gdGFyZ2V0OworCisgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6QVJS
QVlfQlVGRkVSIHx8IHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6RUxFTUVOVF9BUlJBWV9C
VUZGRVIpIHsKKyAgICAgICAgQVNTRVJUKCFtX2FycmF5QnVmZmVyT3JFbGVtZW50QXJyYXlCdWZm
ZXIgfHwgdGFyZ2V0ID09IG1fYXJyYXlCdWZmZXJPckVsZW1lbnRBcnJheUJ1ZmZlcik7CisgICAg
ICAgIG1fYXJyYXlCdWZmZXJPckVsZW1lbnRBcnJheUJ1ZmZlciA9IHRhcmdldDsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCmluZGV4IDlhZmQ4NTcw
Y2IzZGRmNzZhYjE4NWVkMjRmZTY2MzU5NzIzNDljZjUuLjc2N2U0YmM0MmQwNjk0NjVkYjY3YTMw
NDUxNWUyMjRlOGEwYzU2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZm
ZXIuaApAQCAtNjAsNyArNjAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYWNoZWRNYXhJbmRl
eChHQ0dMZW51bSB0eXBlLCB1bnNpZ25lZCB2YWx1ZSk7CiAKICAgICBHQ0dMZW51bSBnZXRUYXJn
ZXQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldDsgfQotICAgIHZvaWQgc2V0VGFyZ2V0KEdDR0xl
bnVtLCBib29sIGZvcldlYkdMMik7CisgICAgdm9pZCBzZXRUYXJnZXQoR0NHTGVudW0pOworCisg
ICAgR0NHTGVudW0gYXJyYXlCdWZmZXJPckVsZW1lbnRBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYXJyYXlCdWZmZXJPckVsZW1lbnRBcnJheUJ1ZmZlcjsgfQogCiAgICAgYm9vbCBoYXNF
dmVyQmVlbkJvdW5kKCkgY29uc3QgeyByZXR1cm4gb2JqZWN0KCkgJiYgbV90YXJnZXQ7IH0KIApA
QCAtNzUsNiArNzcsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBt
X2VsZW1lbnRBcnJheUJ1ZmZlcjsKICAgICBHQ0dMc2l6ZWlwdHIgbV9ieXRlTGVuZ3RoIHsgMCB9
OwogCisgICAgR0NHTGVudW0gbV9hcnJheUJ1ZmZlck9yRWxlbWVudEFycmF5QnVmZmVyIHsgMCB9
OworCiAgICAgLy8gT3B0aW1pemF0aW9uIGZvciBpbmRleCB2YWxpZGF0aW9uLiBGb3IgZWFjaCB0
eXBlIG9mIGluZGV4CiAgICAgLy8gKGkuZS4sIFVOU0lHTkVEX1NIT1JUKSwgY2FjaGUgdGhlIG1h
eGltdW0gaW5kZXggaW4gdGhlCiAgICAgLy8gZW50aXJlIGJ1ZmZlci4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xRdWVyeS5jcHAKaW5kZXggMDFkZGU3ZjdmNGVjMmU1YTU2NGEyYjY4
ZDU5MWJmNjc0Nzg4ZjBkMi4uNGYyNDE1MmJmNzIyODk3NGI3MDRhMWUwNzA1M2U1MDYzNzQzMDBj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgV2ViR0xRdWVyeTo6fldlYkdMUXVlcnkoKQogV2ViR0xRdWVyeTo6V2ViR0xRdWVy
eShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJHTFNoYXJlZE9iamVj
dChjdHgpCiB7Ci0gICAgLy8gRklYTUU6IENhbGwgY3JlYXRlUXVlcnkgZnJvbSBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC4KKyAgICBzZXRPYmplY3QoY3R4LmdyYXBoaWNzQ29udGV4dEdMKCktPmNy
ZWF0ZVF1ZXJ5KCkpOwogfQogCiB2b2lkIFdlYkdMUXVlcnk6OmRlbGV0ZU9iamVjdEltcGwoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmgKaW5kZXggNTU2ZDM5OWRlM2Nh
MGVlMDk0NzI2MDNjMDg5OTg3MzBjZjU1N2Y0NS4uNzYxODllMWM0YjA2ZTI0MTg2NmZhNWU2MDc1
OGM5ZTJjZWM1ZGM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xRdWVyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuaApA
QCAtMzYsOSArMzYsMTYgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViR0xRdWVyeT4gY3Jl
YXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJHTFF1ZXJ5
KCk7CiAKKyAgICBib29sIGlzUmVzdWx0QXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Jl
c3VsdEF2YWlsYWJsZTsgfQorCisgICAgdm9pZCBtYWtlUmVzdWx0QXZhaWxhYmxlKCkgeyBtX2lz
UmVzdWx0QXZhaWxhYmxlID0gdHJ1ZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgV2Vi
R0xRdWVyeShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdm9pZCBkZWxldGVPYmpl
Y3RJbXBsKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJp
ZGU7CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2lzUmVzdWx0QXZhaWxhYmxlIHsgZmFsc2UgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMTdlYWE1
ZDE1YjcwY2UxOGEwYWY1NmQxY2JmMmIyMjk2YjkyYjY1Mi4uNjdjYTUzYzQ3ZWVhMDA4YmVhM2Y2
MWRmOTZlNzM4OWNhZWNhNmRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTExODgsMTcgKzExODgs
MjYgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjaGVja09iamVjdFRvQmVCb3Vu
ZChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIFcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kQnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
V2ViR0xCdWZmZXIqIGJ1ZmZlcikKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFs
aWRhdGVBbmRDYWNoZUJ1ZmZlckJpbmRpbmcoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dM
ZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYm9vbCBkZWxldGVkOwot
ICAgIGlmICghY2hlY2tPYmplY3RUb0JlQm91bmQoImJpbmRCdWZmZXIiLCBidWZmZXIsIGRlbGV0
ZWQpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFjaGVja09iamVjdFRvQmVCb3VuZChmdW5j
dGlvbk5hbWUsIGJ1ZmZlciwgZGVsZXRlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoZGVsZXRlZCkKICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKLSAgICBpZiAoYnVmZmVyICYm
IGJ1ZmZlci0+Z2V0VGFyZ2V0KCkgJiYgYnVmZmVyLT5nZXRUYXJnZXQoKSAhPSB0YXJnZXQpIHsK
LSAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BF
UkFUSU9OLCAiYmluZEJ1ZmZlciIsICJidWZmZXJzIGNhbiBub3QgYmUgdXNlZCB3aXRoIG11bHRp
cGxlIHRhcmdldHMiKTsKLSAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGJ1ZmZlcikgeworICAg
ICAgICAvLyBJbiBXZWJHTCwgYSBidWZmZXIgbWF5IG9ubHkgYmUgYm91bmQgdG8gb25lIG9mIHRo
ZSBBUlJBWV9CVUZGRVIgb3IgRUxFTUVOVF9BUlJBWV9CVUZGRVIgdGFyZ2V0IGluIGl0cyBsaWZl
dGltZS4KKyAgICAgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVG
RkVSIHx8IHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIp
IHsKKyAgICAgICAgICAgIGlmIChidWZmZXItPmFycmF5QnVmZmVyT3JFbGVtZW50QXJyYXlCdWZm
ZXIoKSAmJiB0YXJnZXQgIT0gYnVmZmVyLT5hcnJheUJ1ZmZlck9yRWxlbWVudEFycmF5QnVmZmVy
KCkpIHsKKyAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRH
TDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImJ1ZmZlcnMgY2FuIG9ubHkgYmUg
Ym91bmQgdG8gb25lIG9mIEFSUkFZX0JVRkZFUiBvciBFTEVNRU5UX0FSUkFZX0JVRkZFUiIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIGJ1ZmZlci0+c2V0VGFyZ2V0KHRhcmdldCk7CiAgICAgfQorCiAgICAgaWYgKHRh
cmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSKQogICAgICAgICBtX2JvdW5k
QXJyYXlCdWZmZXIgPSBidWZmZXI7CiAgICAgZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpFTEVNRU5UX0FSUkFZX0JVRkZFUikKQEAgLTEyMzUsMTMgKzEyNDQsMTkgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kQnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
V2ViR0xCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKICAg
ICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VO
VU0sICJiaW5kQnVmZmVyIiwgImludmFsaWQgdGFyZ2V0Iik7Ci0gICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kQnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgV2ViR0xCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBpZiAoIXZhbGlk
YXRlQW5kQ2FjaGVCdWZmZXJCaW5kaW5nKCJiaW5kQnVmZmVyIiwgdGFyZ2V0LCBidWZmZXIpKQor
ICAgICAgICByZXR1cm47CisKICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIodGFyZ2V0LCBvYmpl
Y3RPclplcm8oYnVmZmVyKSk7Ci0gICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgYnVmZmVyLT5zZXRU
YXJnZXQodGFyZ2V0LCBpc1dlYkdMMigpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVy
KiBidWZmZXIpCkBAIC0xNzk0LDE0ICsxODA5LDI5IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6ZGVsZXRlT2JqZWN0KFdlYkdMT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKKyNkZWZpbmUgUkVNT1ZFX0JVRkZFUl9GUk9NX0JJTkRJTkcoYmluZGluZykgXAor
ICAgIGlmIChiaW5kaW5nID09IGJ1ZmZlcikgXAorICAgICAgICBiaW5kaW5nID0gbnVsbHB0cjsK
Kwordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmNhY2hlRGVsZXRlZEJ1ZmZlcihX
ZWJHTEJ1ZmZlciogYnVmZmVyKQoreworICAgIFJFTU9WRV9CVUZGRVJfRlJPTV9CSU5ESU5HKG1f
Ym91bmRBcnJheUJ1ZmZlcik7CisgICAgUkVNT1ZFX0JVRkZFUl9GUk9NX0JJTkRJTkcobV9ib3Vu
ZENvcHlSZWFkQnVmZmVyKTsKKyAgICBSRU1PVkVfQlVGRkVSX0ZST01fQklORElORyhtX2JvdW5k
Q29weVdyaXRlQnVmZmVyKTsKKyAgICBSRU1PVkVfQlVGRkVSX0ZST01fQklORElORyhtX2JvdW5k
UGl4ZWxQYWNrQnVmZmVyKTsKKyAgICBSRU1PVkVfQlVGRkVSX0ZST01fQklORElORyhtX2JvdW5k
UGl4ZWxVbnBhY2tCdWZmZXIpOworICAgIFJFTU9WRV9CVUZGRVJfRlJPTV9CSU5ESU5HKG1fYm91
bmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7CisgICAgUkVNT1ZFX0JVRkZFUl9GUk9NX0JJTkRJ
TkcobV9ib3VuZFVuaWZvcm1CdWZmZXIpOworCisgICAgbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0
LT51bmJpbmRCdWZmZXIoKmJ1ZmZlcik7Cit9CisKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6ZGVsZXRlQnVmZmVyKFdlYkdMQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgaWYgKCFkZWxl
dGVPYmplY3QoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX2JvdW5kQXJyYXlC
dWZmZXIgPT0gYnVmZmVyKQotICAgICAgICBtX2JvdW5kQXJyYXlCdWZmZXIgPSBudWxscHRyOwog
Ci0gICAgbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT51bmJpbmRCdWZmZXIoKmJ1ZmZlcik7Cisg
ICAgdW5jYWNoZURlbGV0ZWRCdWZmZXIoYnVmZmVyKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpkZWxldGVGcmFtZWJ1ZmZlcihXZWJHTEZyYW1lYnVmZmVyKiBmcmFtZWJ1
ZmZlcikKQEAgLTI2NTIsNiArMjY4MiwxOSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgRwogI2Vu
ZGlmIC8vIFVTRShBTkdMRSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIGRlZmF1bHQ6Cisj
aWYgRU5BQkxFKFdFQkdMMikKKyAgICAgICAgaWYgKGlzV2ViR0wyKCkpIHsKKyAgICAgICAgICAg
IHN3aXRjaCAocG5hbWUpIHsKKyAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVJfTU9ERToKKyAgICAgICAgICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlRSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HUzoKKyAgICAgICAgICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9VTklGT1JNX0JMT0NLUzoKKyAgICAgICAgICAgICAg
ICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihvYmplY3RPclplcm8ocHJvZ3JhbSksIHBuYW1lLCAm
dmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNl
bmRpZiAvLyBFTkFCTEUoV0VCR0wyKQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UHJvZ3JhbVBhcmFtZXRlciIsICJpbnZhbGlk
IHBhcmFtZXRlciBuYW1lIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaAppbmRleCA2YWNjMTEyY2YzNmFiMjM4NzllMWYwNDgyMDdhYjVhMmM0OGMxYjhlLi4zMGI0
M2NhZTZkYmRiYTU1MGNjNjU4MjNiNjhkZGFiYWY2MzY1YjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC00
NTcsNiArNDU3LDggQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBlbmFibGVTdXBwb3J0ZWRFeHRl
bnNpb24oQVNDSUlMaXRlcmFsIGV4dGVuc2lvbk5hbWVMaXRlcmFsKTsKIAorICAgIHZpcnR1YWwg
dm9pZCB1bmNhY2hlRGVsZXRlZEJ1ZmZlcihXZWJHTEJ1ZmZlciopOworCiAgICAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBtX2NvbnRleHQ7CiAgICAgUmVmUHRyPFdlYkdMQ29udGV4
dEdyb3VwPiBtX2NvbnRleHRHcm91cDsKIApAQCAtODE2LDYgKzgxOCw4IEBAIHByb3RlY3RlZDoK
ICAgICAvLyBSZXR1cm4gZmFsc2UgaWYgY2FsbGVyIHNob3VsZCByZXR1cm4gd2l0aG91dCBmdXJ0
aGVyIHByb2Nlc3NpbmcuCiAgICAgYm9vbCBjaGVja09iamVjdFRvQmVCb3VuZChjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIFdlYkdMT2JqZWN0KiwgYm9vbCYgZGVsZXRlZCk7CiAKKyAgICBib29s
IHZhbGlkYXRlQW5kQ2FjaGVCdWZmZXJCaW5kaW5nKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwg
R0NHTGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZlciopOworCiAgICAgLy8gSGVscGVycyBmb3Igc2lt
dWxhdGluZyB2ZXJ0ZXhBdHRyaWIwLgogICAgIHZvaWQgaW5pdFZlcnRleEF0dHJpYjAoKTsKICAg
ICBPcHRpb25hbDxib29sPiBzaW11bGF0ZVZlcnRleEF0dHJpYjAoR0NHTHVpbnQgbnVtVmVydGV4
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3Jt
RmVlZGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1G
ZWVkYmFjay5jcHAKaW5kZXggMmQyOGM1OTlhYTMyYmRmMDEyZTNlYmQ5M2U3YzBkNTYzYzY4NWU4
Zi4uNWEyZjAzMzBjZDA0ZDIyNDNhYTA1OTFlNjAxZDZhYzhhNDVkNGNiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAK
QEAgLTQ2LDE0ICs0NiwxMiBAQCBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjp+V2ViR0xUcmFuc2Zv
cm1GZWVkYmFjaygpCiBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjpXZWJHTFRyYW5zZm9ybUZlZWRi
YWNrKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICA6IFdlYkdMU2hhcmVkT2Jq
ZWN0KGN0eCkKIHsKLSAgICAvLyBGSVhNRTogQ2FsbCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayBm
cm9tIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgorICAgIHNldE9iamVjdChjdHguZ3JhcGhpY3ND
b250ZXh0R0woKS0+Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSk7CiB9CiAKIHZvaWQgV2ViR0xU
cmFuc2Zvcm1GZWVkYmFjazo6ZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKIHsKLSAgICBVTlVTRURfUEFS
QU0oY29udGV4dDNkKTsKLSAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKLSAgICAvLyBGSVhNRTog
Q2FsbCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayBmcm9tIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LgorICAgIGNvbnRleHQzZC0+ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sob2JqZWN0KTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMLmgKaW5kZXggNGU4ZDM5ODlmMWFiNzZiYTIyMTNlYjRjNDI0MjM3ZDcwZGYzNDRjYi4u
ZmFkMzY2YmY5OTVjNzU4MDQwM2EwZDMwOTVmMmU1OTdhMzUyOGNlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC00
NjQsNiArNDY0LDcgQEAgcHVibGljOgogICAgICAgICBVTlNJR05FRF9JTlRfMTBGXzExRl8xMUZf
UkVWID0gMHg4QzNCLAogICAgICAgICBSR0I5X0U1ID0gMHg4QzNELAogICAgICAgICBVTlNJR05F
RF9JTlRfNV85XzlfOV9SRVYgPSAweDhDM0UsCisgICAgICAgIFRSQU5TRk9STV9GRUVEQkFDS19W
QVJZSU5HX01BWF9MRU5HVEggPSAweDhDNzYsCiAgICAgICAgIFRSQU5TRk9STV9GRUVEQkFDS19C
VUZGRVJfTU9ERSA9IDB4OEM3RiwKICAgICAgICAgTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBB
UkFURV9DT01QT05FTlRTID0gMHg4QzgwLAogICAgICAgICBUUkFOU0ZPUk1fRkVFREJBQ0tfVkFS
WUlOR1MgPSAweDhDODMsCkBAIC0xMDE4LDYgKzEwMTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2
YWx1ZXMpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1
aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1h
bGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNp
emUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCkBAIC0xMDM3LDYgKzEwMzks
MTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NH
TGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhB
dHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7CiAKKyAg
ICAvLyBXZWJHTDIgUXVlcnkgY2FsbHMKKyAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3Jl
YXRlUXVlcnkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJlZ2luUXVlcnkoR0NHTGVudW0sIFBs
YXRmb3JtR0xPYmplY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0p
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXYoR0NHTHVpbnQsIEdDR0xl
bnVtLCBHQ0dMdWludCopID0gMDsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBj
b250ZXh0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7IH0KICAgICB2b2lkIHNl
dENvbnRleHRBdHRyaWJ1dGVzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0
cnMpIHsgbV9hdHRycyA9IGF0dHJzOyB9CiAKQEAgLTEwNDYsNiArMTA1NCwxOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3Qp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3Qp
ID0gMDsKIAorICAgIC8vIFdlYkdMMiBUcmFuc2Zvcm0gRmVlZGJhY2sgY2FsbHMKKyAgICB2aXJ0
dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QpID0g
MDsKKyAgICB2aXJ0dWFsIEdDR0xib29sZWFuIGlzVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1H
TE9iamVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0NH
TGVudW0sIFBsYXRmb3JtR0xPYmplY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UcmFu
c2Zvcm1GZWVkYmFjayhHQ0dMZW51bSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRUcmFuc2Zv
cm1GZWVkYmFjaygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5ncyhQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEdDR0xlbnVtKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9y
bUdMT2JqZWN0LCBHQ0dMdWludCwgQWN0aXZlSW5mbyYpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSwgR0NHTHVpbnQsIFBsYXRmb3JtR0xPYmplY3QpID0g
MDsKKwogI2lmIFVTRShPUEVOR0wpICYmIEVOQUJMRShXRUJHTDIpCiAgICAgdmlydHVhbCB2b2lk
IHByaW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCkgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRH
TEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBo
aWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDgxMDExOTIzZmIyYmY0ZTk4NDUwN2RhMzA3MTZj
MDZmNDA2YzVkMGMuLmZiZGFmZjRkZjY1ZjJkOTg1YjExZDA2YzExYzZkNjVhYmRkMDE1YzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0xNDQyLDYgKzE0NDIsMTIgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliUG9pbnRlcihHQ0dMdWlu
dCBpbmRleCwgR0NHTGludCBzaXplLAogICAgIGdsOjpWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4
LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lk
Kj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKIH0KIAordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xp
bnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZz
ZXQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlZlcnRleEF0dHJpYklQ
b2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lk
Kj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKK30KKwogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKQEAg
LTE4MzIsNiArMTgzOCwxMDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4
QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXMKICAgICBnZXRFeHRl
bnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CiB9CiAKKy8vIFF1
ZXJ5IEZ1bmN0aW9ucworCitQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpjcmVhdGVRdWVyeSgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgR0x1aW50
IG5hbWUgPSAwOworICAgIGdsOjpHZW5RdWVyaWVzKDEsICZuYW1lKTsKKyAgICByZXR1cm4gbmFt
ZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmVnaW5RdWVyeShHQ0dMZW51
bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgZ2w6OkJlZ2luUXVlcnkodGFyZ2V0LCBxdWVyeSk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkKK3sKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6RW5kUXVlcnkodGFyZ2V0KTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpdihpZCwgcG5hbWUsIHBhcmFtcyk7Cit9
CisKKy8vIFRyYW5zZm9ybSBGZWVkYmFjayBGdW5jdGlvbnMKKworUGxhdGZvcm1HTE9iamVjdCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIEdMdWludCBuYW1lID0gMDsKKyAgICBnbDo6R2Vu
VHJhbnNmb3JtRmVlZGJhY2tzKDEsICZuYW1lKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZv
cm1HTE9iamVjdCB0cmFuc2Zvcm1GZWVkYmFjaykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBnbDo6RGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tzKDEsICZ0cmFuc2Zvcm1GZWVkYmFj
ayk7Cit9CisKK0dDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1RyYW5zZm9y
bUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgdHJhbnNmb3JtRmVlZGJhY2spCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIGdsOjpJc1RyYW5zZm9ybUZlZWRiYWNrKHRy
YW5zZm9ybUZlZWRiYWNrKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Ymlu
ZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCB0cmFu
c2Zvcm1GZWVkYmFjaykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6Qmlu
ZFRyYW5zZm9ybUZlZWRiYWNrKHRhcmdldCwgdHJhbnNmb3JtRmVlZGJhY2spOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVt
IHByaW1pdGl2ZU1vZGUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OkJl
Z2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBnbDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YXJ5aW5ncywgR0NHTGVu
dW0gYnVmZmVyTW9kZSkKK3sKKyAgICBhdXRvIGNvbnZlcnRlZFZhcnlpbmdzID0gdmFyeWluZ3Mu
bWFwKFtdKGNvbnN0IFN0cmluZyYgdmFyeWluZykgLT4gY29uc3QgY2hhciogeworICAgICAgICBy
ZXR1cm4gdmFyeWluZy51dGY4KCkuZGF0YSgpOworICAgIH0pOworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIGdsOjpUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0sIHZhcnlp
bmdzLnNpemUoKSwgY29udmVydGVkVmFyeWluZ3MuZGF0YSgpLCBidWZmZXJNb2RlKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGlu
Zm8pCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgR0NHTHNpemVpIGJ1ZlNpemUg
PSAwOworICAgIGdsOjpHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OlRSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HX01BWF9MRU5HVEgsICZidWZTaXplKTsKKyAg
ICBpZiAoIWJ1ZlNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIEdDR0xzaXplaSBsZW5ndGgg
PSAwOworICAgIEdDR0xzaXplaSBzaXplID0gMDsKKyAgICBHQ0dMZW51bSB0eXBlID0gMDsKKyAg
ICBWZWN0b3I8R0NHTGNoYXI+IG5hbWUoYnVmU2l6ZSk7CisKKyAgICBnbDo6R2V0VHJhbnNmb3Jt
RmVlZGJhY2tWYXJ5aW5nKHByb2dyYW0sIGluZGV4LCBidWZTaXplLCAmbGVuZ3RoLCAmc2l6ZSwg
JnR5cGUsIG5hbWUuZGF0YSgpKTsKKworICAgIGluZm8ubmFtZSA9IFN0cmluZyhuYW1lLmRhdGEo
KSwgbGVuZ3RoKTsKKyAgICBpbmZvLnNpemUgPSBzaXplOworICAgIGluZm8udHlwZSA9IHR5cGU7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRCdWZmZXJCYXNlKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyKQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpCaW5kQnVmZmVyQmFzZSh0YXJnZXQs
IGluZGV4LCBidWZmZXIpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1JBUEhJQ1NfQ09O
VEVYVF9HTCkgJiYgVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5j
cHAKaW5kZXggNjA2Yzk5Njg2YTAwODlmNjA2ZGZjMDIzMTFkMzRjZTE0NjU0MDk2Yy4uMWJkNzVk
YzUwY2JiZGM3NWRkYjcyOGI0MTRjZjMxZmYzNmRmYTU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuY3BwCkBAIC01MzEsNiArNTMxLDc0IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKQogfQogI2VuZGlmCiAKKyNpZiAh
VVNFKEFOR0xFKQorLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbmx5IG9uIEFO
R0xFLCBidXQgc3RpbGwgcmVxdWlyZSBkZWZpbml0aW9ucyBmb3Igbm9uLUFOR0xFIGJ1aWxkcy4K
Kwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSVBvaW50ZXIoR0NH
THVpbnQsIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xpbnRwdHIpCit7Cit9CisK
Ky8vIFF1ZXJ5IEZ1bmN0aW9ucworCitQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpjcmVhdGVRdWVyeSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmJlZ2luUXVlcnkoR0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3Qp
Cit7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmVuZFF1ZXJ5KEdDR0xlbnVt
KQoreworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVp
dihHQ0dMdWludCwgR0NHTGVudW0sIEdDR0x1aW50KikKK3sKK30KKworLy8gVHJhbnNmb3JtIEZl
ZWRiYWNrIEZ1bmN0aW9ucworCitQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRm
b3JtR0xPYmplY3QpCit7Cit9CisKK0dDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QpCit7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kVHJhbnNmb3JtRmVl
ZGJhY2soR0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3QpCit7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0pCit7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKK3sK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5ncyhQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEdDR0xlbnVtKQor
eworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmcoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQsIEFjdGl2ZUluZm8mKQoreworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSwg
R0NHTHVpbnQsIFBsYXRmb3JtR0xPYmplY3QpCit7Cit9CisKKyNlbmRpZiAvLyAhVVNFKEFOR0xF
KQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoR1JBUEhJQ1Nf
Q09OVEVYVF9HTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggMDRmYjli
NGUzMmViYjg0NjgxNzllODYxMGJmMzljZmQ2MjE4ZDRiZi4uYTk3MDNjOWY3N2I0N2MwOGVkNGMx
ZjI4MTkzNTFlYTg4MzU3NGI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgK
QEAgLTM1OSw2ICszNTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZihHQ0dM
dWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZs
b2F0IHcpIG92ZXJyaWRlOwogICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4
LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgb3ZlcnJpZGU7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdD
R0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4
LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KSBvdmVycmlkZTsKIAogICAgIHZvaWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7CiAKQEAg
LTM2OCwxMiArMzY5LDMwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNl
ZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRw
dHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIHZlcnRl
eEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRl
OwogCisgICAgLy8gV2ViR0wyIFF1ZXJ5IGNhbGxzCisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVh
dGVRdWVyeSgpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5RdWVyeShHQ0dMZW51bSwgUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmRRdWVyeShHQ0dMZW51bSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdihHQ0dMdWludCwgR0NHTGVudW0sIEdDR0x1
aW50Kikgb3ZlcnJpZGU7CisKICAgICAvLyBWZXJ0ZXhBcnJheU9qZWN0IGNhbGxzCiAgICAgUGxh
dGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVs
ZXRlVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgR0NHTGJvb2xl
YW4gaXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGJp
bmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAorICAgIC8vIFdlYkdM
MiBUcmFuc2Zvcm0gRmVlZGJhY2sgY2FsbHMKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVRy
YW5zZm9ybUZlZWRiYWNrKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVk
YmFjayhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKKyAgICBHQ0dMYm9vbGVhbiBpc1RyYW5z
Zm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgYmluZFRy
YW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0pIG92ZXJyaWRlOworICAgIHZv
aWQgZW5kVHJhbnNmb3JtRmVlZGJhY2soKSBvdmVycmlkZTsKKyAgICB2b2lkIHRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBH
Q0dMZW51bSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRUcmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmco
UGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQsIEFjdGl2ZUluZm8mKSBvdmVycmlkZTsKKworICAg
IHZvaWQgYmluZEJ1ZmZlckJhc2UoR0NHTGVudW0sIEdDR0x1aW50LCBQbGF0Zm9ybUdMT2JqZWN0
KSBvdmVycmlkZTsKKwogICAgIHZvaWQgcGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFy
KiBpbWFnZVBpeGVscywgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbnRTaXplJiBj
YW52YXNTaXplLCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIHZvaWQgbWFya0NvbnRleHRDaGFu
Z2VkKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYTViYzA0M2EyMjZhN2JlZTVjNjA2NWIzYTM2MzdhN2Y0ZmE4MDgxNC4u
ODY1OTE1MWVkZTdhMzM0MDhlY2ZkMzM3NjZlNWU3ODU4MGEzYWQ4ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIwLTAxLTA5ICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dlYkdMIDJdIEltcGxlbWVudCB0cmFuc2Zvcm0gZmVlZGJhY2sgYW5kIHBhc3Mg
dHJhbnNmb3JtIGZlZWRiYWNrIGNvbmZvcm1hbmNlIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU4MjMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgcGFzc2luZyByZXN1bHRzIGZvciB0cmFu
c2Zvcm1fZmVlZGJhY2ssIGFzIGV4cGVjdGVkIHdoZW4gQU5HTEUgaXMgZW5hYmxlZC4KKworICAg
ICAgICAqIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdHdvLXVu
cmVmZXJlbmNlZC12YXJ5aW5ncy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViZ2wvMi4wLjAv
Y29uZm9ybWFuY2UyL3RyYW5zZm9ybV9mZWVkYmFjay91bndyaXR0ZW4tb3V0cHV0LWRlZmF1bHRz
LXRvLXplcm8tZXhwZWN0ZWQudHh0OgorCiAyMDIwLTAxLTA5ICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNTM2NjIpOiBMYXJnZSBE
YXRhIFVSTHMgYXJlIG5vdCBiZWluZyBoYW5kbGVkIHByb3Blcmx5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL3R3by11
bnJlZmVyZW5jZWQtdmFyeWluZ3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvMi4w
LjAvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9mZWVkYmFjay90d28tdW5yZWZlcmVuY2VkLXZhcnlp
bmdzLWV4cGVjdGVkLnR4dAppbmRleCBhYjQ0N2UzNjFjYzhmNjY2NmExYjlkZGU4N2Q0NjVlMGQ0
ZTZjMDE5Li42NDdhZTk0ODQwZjljYzI2NTM4NDVmYjU1YmU1YzEyNjM5NjgxYWExIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRi
YWNrL3R3by11bnJlZmVyZW5jZWQtdmFyeWluZ3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdHdvLXVucmVm
ZXJlbmNlZC12YXJ5aW5ncy1leHBlY3RlZC50eHQKQEAgLTEsMTAgKzEsNSBAQAogVGhpcyB0ZXN0
IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0
cyBQQVNTIG9yIEZBSUwuCiAKIFRlc3Q6IC4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdHdvLXVucmVmZXJlbmNlZC12YXJ5aW5n
cy5odG1sCi1bIDE6IFBBU1MgXSBXZWJHTCBjb250ZXh0IGV4aXN0cwotWyAyOiBQQVNTIF0gZ2V0
RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IEluaXQgdHJhbnNmb3JtIGZlZWRi
YWNrIHNob3VsZCBzdWNjZWVkCi1bIDM6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFs
dWU6IE5PX0VSUk9SIDogRHJhdyB3aXRoIHRyYW5zZm9ybSBmZWVkYmFjayBzaG91bGQgc3VjY2Vl
ZAotWyA0OiBGQUlMIF0gYnVmZmVyIHNob3VsZCBtYXRjaCBleHBlY3RlZCB2YWx1ZXMKLVsgNTog
UEFTUyBdIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi1bIEZBSUwgXSAxIGZhaWx1cmVzIHJl
cG9ydGVkCitbIFBBU1MgXSBBbGwgdGVzdHMgcGFzc2VkCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdW53cml0dGVu
LW91dHB1dC1kZWZhdWx0cy10by16ZXJvLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmds
LzIuMC4wL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdW53cml0dGVuLW91dHB1dC1k
ZWZhdWx0cy10by16ZXJvLWV4cGVjdGVkLnR4dAppbmRleCAyOWM5YTFlZjYwM2Q3OGZjNjBlYWJi
MGU4ZGU1NDNlZDg4ODMxMTAyLi42OTc0ZGE0OGE5NDgyNzRlYmU5YjhhOWIyN2IwNGFhZDBjNzQz
ODBmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvdHJh
bnNmb3JtX2ZlZWRiYWNrL3Vud3JpdHRlbi1vdXRwdXQtZGVmYXVsdHMtdG8temVyby1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3RyYW5zZm9y
bV9mZWVkYmFjay91bndyaXR0ZW4tb3V0cHV0LWRlZmF1bHRzLXRvLXplcm8tZXhwZWN0ZWQudHh0
CkBAIC0xLDExICsxLDUgQEAKIFRoaXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxpc3RlZCBi
ZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBvciBGQUlMLgogCiBUZXN0OiAuLi8u
Li9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRi
YWNrL3Vud3JpdHRlbi1vdXRwdXQtZGVmYXVsdHMtdG8temVyby5odG1sCi1bIDE6IFBBU1MgXSBX
ZWJHTCBjb250ZXh0IGV4aXN0cwotWyAyOiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZh
bHVlOiBOT19FUlJPUiA6IFNldCB1cCBwcm9ncmFtIHNob3VsZCBzdWNjZWVkCi1bIDM6IEZBSUwg
XSBidWZmZXIgc2hvdWxkIG1hdGNoIGV4cGVjdGVkIHZhbHVlcwotWyA0OiBQQVNTIF0gZ2V0RXJy
b3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IFNldCB1cCBwcm9ncmFtIHNob3VsZCBz
dWNjZWVkCi1bIDU6IFBBU1MgXSBidWZmZXIgc2hvdWxkIG1hdGNoIGV4cGVjdGVkIHZhbHVlcwot
WyA2OiBQQVNTIF0gc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLVsgRkFJTCBdIDEgZmFpbHVy
ZXMgcmVwb3J0ZWQKK1sgUEFTUyBdIEFsbCB0ZXN0cyBwYXNzZWQKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387307</attachid>
            <date>2020-01-09 18:48:35 -0800</date>
            <delta_ts>2020-01-13 12:28:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205823-20200109184834.patch</filename>
            <type>text/plain</type>
            <size>48609</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJlZDVhMjU4OGU0NzVm
NzhhOTVmY2ZhOTU4ZmZiMTVjZWRhNmIzNS4uODlhNGM0YzMzYTgzNmJiYTYwYjVkNDAyNDI0YzFj
YTYxZjg2YTA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDIwLTAxLTA5ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdMIDJdIEltcGxl
bWVudCB0cmFuc2Zvcm0gZmVlZGJhY2sgYW5kIHBhc3MgdHJhbnNmb3JtIGZlZWRiYWNrIGNvbmZv
cm1hbmNlIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDU4MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJh
Y2sgY29uZm9ybWFuY2UgdGVzdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnRXZWJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9KU1ZhbHVlKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6fldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5p
dGlhbGl6ZVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YSk6IEFOR0xFIHZhbGlkYXRp
b24gaW4gbWFwQnVmZmVyUmFuZ2UgbWF5IGZhaWw7IHByZXZlbnQgY29weWluZyBmcm9tIGEgbnVs
bHB0ci4gCisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhB
dHRyaWJJUG9pbnRlcik6CisKKyAgICAgICAgQmFyZSBtaW5pbXVtIHN0dWJzIHRvIGdldCBXZWJH
TFF1ZXJ5IHBhc3NpbmcgdHJhbnNmb3JtX2ZlZWRiYWNrIHRlc3RzOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5RdWVyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFF1ZXJ5OjpXZWJHTFF1ZXJ5KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFF1ZXJ5Lmg6CisKKyAgICAgICAgVHJhbnNmb3JtIGZlZWRiYWNrIGZ1bmN0aW9uczoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRy
YW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
VHJhbnNmb3JtRmVlZGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xUcmFuc2Zvcm1G
ZWVkYmFjazo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFRyYW5zZm9ybUZlZWRiYWNrOjpkZWxldGVPYmplY3RJbXBsKToKKworICAgICAgICBNaXNjIGZ1
bmN0aW9ucyB0aGF0IG5lZWRlZCBhZGRlZCBmdW5jdGlvbmFsaXR5OgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorCisg
ICAgICAgIEhlbHBlciBmdW5jdGlvbnMgdG8gdHJhY2sgV2ViR0wyIHN0YXRlL29iamVjdHM6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmNhY2hlRGVsZXRlZEJ1
ZmZlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQW55Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OnNldFRhcmdl
dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlQW5kQ2FjaGVCdWZmZXJCaW5kaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5jYWNoZURlbGV0ZWRCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dy
YW1QYXJhbWV0ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaDoKKworICAgICAgICBQaXBlIG5ldyBHcmFwaGljc0NvbnRleHRHTCBtZXRob2RzIHRv
IEFOR0xFOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4
QXR0cmliSVBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZVF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpiZWdpblF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjplbmRRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0UXVlcnlPYmplY3R1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNUcmFuc2Zvcm1GZWVkYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmluZFRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpi
ZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5k
QnVmZmVyQmFzZSk6CisKKyAgICAgICAgQWRkIEdyYXBoaWNzQ29udGV4dEdMIHN0dWJzIGZvciBu
b24tQU5HTEUgYnVpbGRzOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiZWdpblF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjplbmRRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVUcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNU
cmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpiaW5kQnVmZmVyQmFzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisKIDIwMjAtMDEtMDkgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI1
MzY2Mik6IExhcmdlIERhdGEgVVJMcyBhcmUgbm90IGJlaW5nIGhhbmRsZWQgcHJvcGVybHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcAppbmRl
eCA3OGE0YWU2MmU3NDdhYzcxNjY4MTMzM2I0ZTQ0N2ZmYTViZTYxZDEwLi4xODRiMzMwN2ExYzYw
N2RmNTRiN2UwMGRiOWU3YThlNTUwMTQwZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVk
ZSAiSlNXZWJHTFByb2dyYW0uaCIKICNpbmNsdWRlICJKU1dlYkdMUmVuZGVyYnVmZmVyLmgiCiAj
aW5jbHVkZSAiSlNXZWJHTFRleHR1cmUuaCIKKyNpbmNsdWRlICJKU1dlYkdMVHJhbnNmb3JtRmVl
ZGJhY2suaCIKICNpbmNsdWRlICJKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCIKICNpbmNsdWRl
ICJKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CkBAIC0xMzgsNiArMTM5LDkgQEAgSlNWYWx1ZSBjb252ZXJ0VG9KU1Zh
bHVlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVj
dCYKICAgICAgICAgLAogICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxXZWJHTFZlcnRleEFycmF5
T2JqZWN0PiYgYXJyYXkpIHsKICAgICAgICAgICAgIHJldHVybiB0b0pTKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBhcnJheS5nZXQoKSk7CisgICAgICAgIH0sCisgICAgICAg
IFsmXSAoY29uc3QgUmVmUHRyPFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s+JiB0cmFuc2Zvcm1GZWVk
YmFjaykgeworICAgICAgICAgICAgcmV0dXJuIHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsICZn
bG9iYWxPYmplY3QsIHRyYW5zZm9ybUZlZWRiYWNrLmdldCgpKTsKICAgICAgICAgfQogI2VuZGlm
CiAgICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYmFlOWI0YjFmNDkzYzg1NGQyNTE3ZmFiZmEzYWU5NWEy
MjMzM2ZiZi4uMjY1MTRlMjA4ZjUyOTRiMmMzNTYyMzEzZGU4NjViZWQ5MGRmYmU0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5j
bHVkZSAiRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCisjaW5jbHVkZSAiRXZlbnRMb29w
LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCkBAIC05NSw2ICs5NiwxNiBAQCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2Um
IGNhbnZhcywgUmVmPEdyYXBoaWNzQwogewogICAgIGluaXRpYWxpemVTaGFkZXJFeHRlbnNpb25z
KCk7CiAgICAgaW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpOworICAgIGluaXRpYWxpemVU
cmFuc2Zvcm1GZWVkYmFja0J1ZmZlckNhY2hlKCk7Cit9CisKK1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6On5XZWJHTDJSZW5kZXJpbmdDb250ZXh0KCkKK3sKKyAgICAvLyBSZW1vdmUgYWxsIHJlZmVy
ZW5jZXMgdG8gV2ViR0xPYmplY3RzIHNvIGlmIHRoZXkgYXJlIHRoZSBsYXN0IHJlZmVyZW5jZQor
ICAgIC8vIHRoZXkgd2lsbCBiZSBmcmVlZCBiZWZvcmUgdGhlIGxhc3QgY29udGV4dCBpcyByZW1v
dmVkIGZyb20gdGhlIGNvbnRleHQgZ3JvdXAuCisgICAgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNr
ID0gbnVsbHB0cjsKKyAgICBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzLmNsZWFyKCk7
CisgICAgbV9hY3RpdmVRdWVyaWVzLmNsZWFyKCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpCkBAIC0xMTgsNiArMTI5LDE0
IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVNoYWRlckV4dGVuc2lv
bnMoKQogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VY
VF9mcmFnX2RlcHRoIik7CiB9CiAKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlh
bGl6ZVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ2FjaGUoKQoreworICAgIGludCBtYXhUcmFuc2Zv
cm1GZWVkYmFja0F0dHJpYnMgPSBnZXRJbnRQYXJhbWV0ZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1B
WF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUyk7CisgICAgQVNTRVJUKG1heFRy
YW5zZm9ybUZlZWRiYWNrQXR0cmlicyA+PSA0KTsKKworICAgIG1fYm91bmRUcmFuc2Zvcm1GZWVk
YmFja0J1ZmZlcnMucmVzaXplKG1heFRyYW5zZm9ybUZlZWRiYWNrQXR0cmlicyk7Cit9CisKIGlu
bGluZSBzdGF0aWMgT3B0aW9uYWw8dW5zaWduZWQ+IGFycmF5QnVmZmVyVmlld0VsZW1lbnRTaXpl
KGNvbnN0IEFycmF5QnVmZmVyVmlldyYgZGF0YSkKIHsKICAgICBzd2l0Y2ggKGRhdGEuZ2V0VHlw
ZSgpKSB7CkBAIC0zMDcsNyArMzI2LDkgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNyY0J5dGUKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICAvLyBGSVhNRTogQ29hbGVzY2UgbXVsdGlwbGUgZ2V0QnVmZmVy
U3ViRGF0YSgpIGNhbGxzIHRvIHVzZSBhIHNpbmdsZSBtYXAoKSBjYWxsCiAgICAgdm9pZCogcHRy
ID0gbV9jb250ZXh0LT5tYXBCdWZmZXJSYW5nZSh0YXJnZXQsIGNoZWNrZWRTcmNCeXRlT2Zmc2V0
LnVuc2FmZUdldCgpLCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGNoZWNrZWRDb3B5TGVuZ3Ro
UHRyLnVuc2FmZUdldCgpICogY2hlY2tlZEVsZW1lbnRTaXplLnVuc2FmZUdldCgpKSwgR3JhcGhp
Y3NDb250ZXh0R0w6Ok1BUF9SRUFEX0JJVCk7Ci0gICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIq
Pihkc3REYXRhLT5iYXNlQWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRzdE9m
ZnNldCAqIGVsZW1lbnRTaXplLCBwdHIsIGNvcHlMZW5ndGggKiBlbGVtZW50U2l6ZSk7CisgICAg
aWYgKHB0cikKKyAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNl
QWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRT
aXplLCBwdHIsIGNvcHlMZW5ndGggKiBlbGVtZW50U2l6ZSk7CisKICAgICBpZiAoIW1fY29udGV4
dC0+dW5tYXBCdWZmZXIodGFyZ2V0KSkKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZ2V0QnVmZmVyU3ViRGF0YSIsICJGYWls
ZWQgd2hpbGUgdW5tYXBwaW5nIGJ1ZmZlciIpOwogI2VuZGlmCkBAIC04NjIsOSArODgzLDEyIEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQs
IFVpbnQzMkxpc3QmJikKICAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gdmVy
dGV4QXR0cmliSTR1aXYoKSIpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZl
cnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTHNpemVp
LCBHQ0dMaW50NjQpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYklQ
b2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBzdHJpZGUsIEdDR0xpbnQ2NCBvZmZzZXQpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9U
IElNUExFTUVOVEVEIF1dIHZlcnRleEF0dHJpYklQb2ludGVyKCkiKTsKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHQtPnZl
cnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIG9mZnNldCk7CiB9
CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIoR0NHTGJpdGZpZWxkIG1hc2sp
CkBAIC0xMDQyLDggKzEwNjYsMTIgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVh
ckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLAogCiBSZWZQdHI8
V2ViR0xRdWVyeT4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUXVlcnkoKQogewotICAg
IExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSBjcmVhdGVRdWVyeSgpIik7Ci0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHF1ZXJ5ID0gV2ViR0xRdWVyeTo6Y3JlYXRl
KCp0aGlzKTsKKyAgICBhZGRTaGFyZWRPYmplY3QocXVlcnkuZ2V0KCkpOworICAgIHJldHVybiBx
dWVyeTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVRdWVyeShXZWJH
TFF1ZXJ5KikKQEAgLTEwNTcsMTQgKzEwODUsNDUgQEAgR0NHTGJvb2xlYW4gV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6aXNRdWVyeShXZWJHTFF1ZXJ5KikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5RdWVyeShHQ0dMZW51bSwgV2ViR0xR
dWVyeSYpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luUXVlcnkoR0NHTGVudW0g
dGFyZ2V0LCBXZWJHTFF1ZXJ5JiBxdWVyeSkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1Q
TEVNRU5URUQgXV0gYmVnaW5RdWVyeSgpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IEFkZCB2YWxpZGF0aW9uIHRv
IHByZXZlbnQgYmFkIGNhY2hpbmcuCisKKyAgICAvLyBPbmx5IG9uZSBxdWVyeSBvYmplY3QgY2Fu
IGJlIGFjdGl2ZSBwZXIgdGFyZ2V0LgorICAgIGF1dG8gdGFyZ2V0S2V5ID0gKHRhcmdldCA9PSBH
cmFwaGljc0NvbnRleHRHTDo6QU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRSkgPyBHcmFw
aGljc0NvbnRleHRHTDo6QU5ZX1NBTVBMRVNfUEFTU0VEIDogdGFyZ2V0OworCisgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX2FjdGl2ZVF1ZXJpZXMuYWRkKHRhcmdldEtleSwgbWFrZVJlZlB0cigmcXVl
cnkpKTsKKworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiYmVnaW5R
dWVyeSIsICJRdWVyeSBvYmplY3Qgb2YgdGFyZ2V0IGlzIGFscmVhZHkgYWN0aXZlIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbnRleHQtPmJlZ2luUXVlcnkodGFyZ2V0LCBx
dWVyeS5vYmplY3QoKSk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZW5kUXVl
cnkoR0NHTGVudW0pCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmVuZFF1ZXJ5KEdDR0xl
bnVtIHRhcmdldCkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gZW5k
UXVlcnkoKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB0YXJnZXRLZXkg
PSAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpBTllfU0FNUExFU19QQVNTRURfQ09OU0VS
VkFUSVZFKSA/IEdyYXBoaWNzQ29udGV4dEdMOjpBTllfU0FNUExFU19QQVNTRUQgOiB0YXJnZXQ7
CisKKyAgICBhdXRvIHF1ZXJ5ID0gbV9hY3RpdmVRdWVyaWVzLnRha2UodGFyZ2V0S2V5KTsKKyAg
ICBpZiAoIXF1ZXJ5KSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImVuZFF1ZXJ5IiwgIlF1ZXJ5IG9iamVjdCBvZiB0YXJn
ZXQgaXMgbm90IGFjdGl2ZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb250
ZXh0LT5lbmRRdWVyeSh0YXJnZXQpOworCisgICAgLy8gQSBxdWVyeSdzIHJlc3VsdCBtdXN0IG5v
dCBiZSBtYWRlIGF2YWlsYWJsZSB1bnRpbCBjb250cm9sIGhhcyByZXR1cm5lZCB0byB0aGUgdXNl
ciBhZ2VudCdzIG1haW4gbG9vcC4KKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV2ZW50
TG9vcCgpLnF1ZXVlTWljcm90YXNrKFtxdWVyeV0geworICAgICAgICBxdWVyeS0+bWFrZVJlc3Vs
dEF2YWlsYWJsZSgpOworICAgIH0pOwogfQogCiBSZWZQdHI8V2ViR0xRdWVyeT4gV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnkoR0NHTGVudW0sIEdDR0xlbnVtKQpAQCAtMTA3MywxMCAr
MTEzMiwyNSBAQCBSZWZQdHI8V2ViR0xRdWVyeT4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0
UXVlcnkoR0NHTGVudW0sIEdDR0xlbnVtKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1XZWJH
TEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlcihXZWJHTFF1ZXJ5
JiwgR0NHTGVudW0pCitXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBh
cmFtZXRlcihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcG5hbWUpCiB7Ci0gICAgTE9HKFdl
YkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGdldFF1ZXJ5UGFyYW1ldGVyKSIpOwotICAgIHJl
dHVybiBudWxscHRyOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgc3dpdGNoIChwbmFtZSkgeworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlFVRVJZX1JFU1VMVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpR
VUVSWV9SRVNVTFRfQVZBSUxBQkxFOgorICAgICAgICBpZiAoIXF1ZXJ5LmlzUmVzdWx0QXZhaWxh
YmxlKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURf
RU5VTSwgImdldFF1ZXJ5UGFyYW1ldGVyIiwgIkludmFsaWQgcG5hbWUiKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICBtX2Nv
bnRleHQtPmdldFF1ZXJ5T2JqZWN0dWl2KHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSwgJnJlc3VsdCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUmVmUHRyPFdlYkdMU2FtcGxlcj4gV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlU2FtcGxlcigpCkBAIC0xMTU3LDQ1ICsxMjMxLDg4IEBAIFdl
YkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFN5bmNQYXJhbWV0ZXIoV2ViR0xTeW5j
JiwgR0NHTGVudW0pCiAKIFJlZlB0cjxXZWJHTFRyYW5zZm9ybUZlZWRiYWNrPiBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCiB7Ci0gICAgTE9HKFdlYkdM
LCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkiKTsKLSAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gdHJhbnNmb3JtRmVlZGJhY2sgPSBXZWJH
TFRyYW5zZm9ybUZlZWRiYWNrOjpjcmVhdGUoKnRoaXMpOworICAgIGFkZFNoYXJlZE9iamVjdCh0
cmFuc2Zvcm1GZWVkYmFjay5nZXQoKSk7CisgICAgcmV0dXJuIHRyYW5zZm9ybUZlZWRiYWNrOwog
fQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNr
KFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpk
ZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKiBmZWVkYmFja09i
amVjdCkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gZGVsZXRlVHJh
bnNmb3JtRmVlZGJhY2soKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2sgPT0gZmVl
ZGJhY2tPYmplY3QpCisgICAgICAgIG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjayA9IG51bGxwdHI7
CisKKyAgICBkZWxldGVPYmplY3QoZmVlZGJhY2tPYmplY3QpOwogfQogCi1HQ0dMYm9vbGVhbiBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFdlYkdMVHJhbnNmb3Jt
RmVlZGJhY2sqKQorR0NHTGJvb2xlYW4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNUcmFuc2Zv
cm1GZWVkYmFjayhXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKiBmZWVkYmFja09iamVjdCkKIHsKLSAg
ICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gaXNUcmFuc2Zvcm1GZWVkYmFjaygp
Iik7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIWZlZWRiYWNrT2JqZWN0IHx8IGZlZWRiYWNrT2JqZWN0LT5pc0RlbGV0ZWQoKSB8fCAhdmFs
aWRhdGVXZWJHTE9iamVjdCgiaXNUcmFuc2Zvcm1GZWVkYmFjayIsIGZlZWRiYWNrT2JqZWN0KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fY29udGV4dC0+aXNUcmFuc2Zv
cm1GZWVkYmFjayhmZWVkYmFja09iamVjdC0+b2JqZWN0KCkpOwogfQogCi12b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSwgV2ViR0xUcmFu
c2Zvcm1GZWVkYmFjayopCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRUcmFuc2Zv
cm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGZlZWRi
YWNrT2JqZWN0KQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSBiaW5k
VHJhbnNmb3JtRmVlZGJhY2soKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChmZWVkYmFja09iamVjdCkgeworICAgICAgICBp
ZiAoZmVlZGJhY2tPYmplY3QtPmlzRGVsZXRlZCgpKSB7CisgICAgICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJiaW5kVHJhbnNm
b3JtRmVlZGJhY2siLCAiY2Fubm90IGJpbmQgYSBkZWxldGVkIFRyYW5zZm9ybSBGZWVkYmFjayBv
YmplY3QiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
dmFsaWRhdGVXZWJHTE9iamVjdCgiaXNUcmFuc2Zvcm1GZWVkYmFjayIsIGZlZWRiYWNrT2JqZWN0
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbnRleHQtPmJpbmRUcmFu
c2Zvcm1GZWVkYmFjayh0YXJnZXQsIG9iamVjdE9yWmVybyhmZWVkYmFja09iamVjdCkpOworICAg
IG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjayA9IGZlZWRiYWNrT2JqZWN0OwogfQogCi12b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0pCit2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVu
dW0gcHJpbWl0aXZlTW9kZSkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQg
XV0gYmVnaW5UcmFuc2Zvcm1GZWVkYmFjaygpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZXh0LT5iZWdpblRyYW5zZm9y
bUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1Q
TEVNRU5URUQgXV0gZW5kVHJhbnNmb3JtRmVlZGJhY2soKSIpOworICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGV4dC0+ZW5kVHJh
bnNmb3JtRmVlZGJhY2soKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFdlYkdMUHJvZ3JhbSYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgR0NHTGVudW0pCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZ3MoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
dmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9U
IElNUExFTUVOVEVEIF1dIHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoKSIpOworICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgdmFyeWluZ3MuaXNFbXB0eSgpIHx8ICF2YWxpZGF0
ZVdlYkdMT2JqZWN0KCJ0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzIiwgJnByb2dyYW0pKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHQtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Mo
cHJvZ3JhbS5vYmplY3QoKSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpOwogfQogCi1SZWZQdHI8V2Vi
R0xBY3RpdmVJbmZvPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmcoV2ViR0xQcm9ncmFtJiwgR0NHTHVpbnQpCitSZWZQdHI8V2ViR0xBY3RpdmVJbmZv
PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoV2Vi
R0xQcm9ncmFtJiBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCkKIHsKLSAgICBMT0coV2ViR0wsICJb
WyBOT1QgSU1QTEVNRU5URUQgXV0gZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKCkiKTsKLSAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2
YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmciLCAmcHJvZ3Jh
bSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgR3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZUluZm8gaW5mbzsKKyAgICBtX2NvbnRleHQtPmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Zyhwcm9ncmFtLm9iamVjdCgpLCBpbmRleCwgaW5mbyk7CisKKyAgICBpZiAoIWluZm8ubmFtZSB8
fCAhaW5mby50eXBlIHx8ICFpbmZvLnNpemUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIFdlYkdMQWN0aXZlSW5mbzo6Y3JlYXRlKGluZm8ubmFtZSwgaW5mby50eXBlLCBp
bmZvLnNpemUpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnBhdXNlVHJhbnNm
b3JtRmVlZGJhY2soKQpAQCAtMTIwOCw5ICsxMzI1LDMwIEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQogICAgIExPRyhXZWJHTCwgIltbIE5P
VCBJTVBMRU1FTlRFRCBdXSByZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpIik7CiB9CiAKLXZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlckJhc2UoR0NHTGVudW0sIEdDR0x1aW50
LCBXZWJHTEJ1ZmZlciopCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRCdWZmZXJC
YXNlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFdlYkdMQnVmZmVyKiBidWZmZXIp
CiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGJpbmRCdWZmZXJCYXNl
KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47
CisKKyAgICBzd2l0Y2ggKHRhcmdldCkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVI6CisgICAgICAgIGlmIChpbmRleCA+PSBtX2JvdW5kVHJh
bnNmb3JtRmVlZGJhY2tCdWZmZXJzLnNpemUoKSkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJiaW5kQnVmZmVyQmFzZSIs
ICJpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JVRkZF
UjoKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURf
RU5VTSwgImJpbmRCdWZmZXJCYXNlIiwgInRhcmdldCBub3QgeWV0IHN1cHBvcnRlZCIpOworICAg
ICAgICByZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImJpbmRCdWZmZXJCYXNlIiwgImludmFsaWQg
dGFyZ2V0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbGlkYXRlQW5k
Q2FjaGVCdWZmZXJCaW5kaW5nKCJiaW5kQnVmZmVyQmFzZSIsIHRhcmdldCwgYnVmZmVyKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGlu
ZGV4LCBvYmplY3RPclplcm8oYnVmZmVyKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6YmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtLCBHQ0dMdWludCwgV2ViR0xCdWZmZXIqLCBH
Q0dMaW50NjQsIEdDR0xpbnQ2NCkKQEAgLTEyMTgsMTAgKzEzNTYsMTggQEAgdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0sIEdDR0x1aW50LCBXZWJH
TEJ1ZmZlciosIEcKICAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gYmluZEJ1
ZmZlclJhbmdlKCkiKTsKIH0KIAotV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0
SW5kZXhlZFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50KQorV2ViR0xBbnkgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQs
IEdDR0x1aW50IGluZGV4KQogeworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgc3dpdGNoICh0YXJnZXQpIHsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkc6Cisg
ICAgICAgIGlmIChpbmRleCA+PSBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzLnNpemUo
KSkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfVkFMVUUsICJnZXRJbmRleGVkUGFyYW1ldGVyIiwgImluZGV4IG91dCBvZiByYW5nZSIp
OworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNbaW5kZXhdOwogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRToKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUOgogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQlVGRkVSX0JJTkRJTkc6CkBAIC0yMDc0LDYg
KzIyMjAsMTAgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVy
KEdDR0xlbnVtIHBuYW1lKQogICAgICAgICByZXR1cm4gbV9iYWNrRHJhd0J1ZmZlcjsgLy8gZW11
bGF0ZWQgYmFja2J1ZmZlcgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVC
VUZGRVJfQklORElORzoKICAgICAgICAgcmV0dXJuIG1fcmVhZEZyYW1lYnVmZmVyQmluZGluZzsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORzoK
KyAgICAgICAgcmV0dXJuIG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjazsKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkc6CisgICAgICAg
IHJldHVybiBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXI7CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09QWV9SRUFEX0JVRkZFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT1BZX1dSSVRFX0JVRkZFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpQSVhFTF9Q
QUNLX0JVRkZFUl9CSU5ESU5HOiAgIApAQCAtMjA4Miw3ICsyMjMyLDYgQEAgV2ViR0xBbnkgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlNBTVBMRVJfQklORElORzoKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX0JJTkRJTkdfMkRfQVJSQVk6CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VEVYVFVSRV9CSU5ESU5HXzNEOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORzoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX0JVRkZFUl9CSU5ESU5HOgogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVyIiwgInBhcmFt
ZXRlciBuYW1lIG5vdCB5ZXQgc3VwcG9ydGVkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMjM4MSw2ICsyNTMwLDE3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBp
eGVscyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpCiAgICAgTE9HKFdl
YkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIHJlYWRQaXhlbHMoKSIpOwogfQogCit2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuY2FjaGVEZWxldGVkQnVmZmVyKFdlYkdMQnVmZmVyKiBi
dWZmZXIpCit7CisgICAgQVNTRVJUKGJ1ZmZlcik7CisKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmNhY2hlRGVsZXRlZEJ1ZmZlcihidWZmZXIpOworCisgICAgc2l6ZV90IGluZGV4
ID0gbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycy5maW5kKGJ1ZmZlcik7CisgICAgaWYg
KGluZGV4IDwgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycy5zaXplKCkpCisgICAgICAg
IG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNbaW5kZXhdID0gbnVsbHB0cjsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCmlu
ZGV4IDIzOTE3MmQ5NTRkNmUyYTJiY2FmMDcyYTIxYTJkZTYyODg3ZjAxZjQuLjc3MGYzMjVkNGVh
OGM2ZTYzNzYzOTUwOGE1MDM4OGVjODM2ZDE3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQ0LDYgKzQ0LDggQEAg
cHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0wyUmVuZGVyaW5nQ29udGV4
dD4gY3JlYXRlKENhbnZhc0Jhc2UmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOwogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4gY3JlYXRlKENh
bnZhc0Jhc2UmLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+JiYsIEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyk7CiAKKyAgICB+V2ViR0wyUmVuZGVyaW5nQ29udGV4dCgpOworCiAgICAg
Ly8gQnVmZmVyIG9iamVjdHMKICAgICB1c2luZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpi
dWZmZXJEYXRhOwogICAgIHVzaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1
YkRhdGE7CkBAIC0yNTgsOCArMjYwLDE3IEBAIHByaXZhdGU6CiAgICAgR0NHTGVudW0gYmFzZUlu
dGVybmFsRm9ybWF0RnJvbUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZm9ybWF0KTsK
ICAgICBib29sIGlzSW50ZWdlckZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCk7CiAgICAg
dm9pZCBpbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucygpOworICAgIHZvaWQgaW5pdGlhbGl6ZVRy
YW5zZm9ybUZlZWRiYWNrQnVmZmVyQ2FjaGUoKTsKIAogICAgIGJvb2wgdmFsaWRhdGVUZXhTdG9y
YWdlRnVuY1BhcmFtZXRlcnMoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dM
ZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpOworCisgICAgdm9pZCB1bmNhY2hlRGVsZXRlZEJ1ZmZl
cihXZWJHTEJ1ZmZlciopIGZpbmFsOworCisgICAgUmVmUHRyPFdlYkdMVHJhbnNmb3JtRmVlZGJh
Y2s+IG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjazsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkdMQnVm
ZmVyPj4gbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyczsKKworICAgIC8vIFF1ZXJpZXMK
KyAgICBIYXNoTWFwPEdDR0xlbnVtLCBSZWZQdHI8V2ViR0xRdWVyeT4+IG1fYWN0aXZlUXVlcmll
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQW55LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEFueS5oCmluZGV4IGNmNTNlMWUzZTlkNGYwNTI4ZWMzMmM2MDc2MDM1NWMxNjcxZDc0NmIu
LjM5NTdiODQ3ZjAxZmUyZjk3ZTA2ZGMzNjAxYWJkNTFhNjc4YTliYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQW55LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xBbnkuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBXZWJHTEZyYW1l
YnVmZmVyOwogY2xhc3MgV2ViR0xQcm9ncmFtOwogY2xhc3MgV2ViR0xSZW5kZXJidWZmZXI7CiBj
bGFzcyBXZWJHTFRleHR1cmU7CitjbGFzcyBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOwogY2xhc3Mg
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdDsKIGNsYXNzIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM7
CiAKQEAgLTcwLDYgKzcxLDcgQEAgdXNpbmcgV2ViR0xBbnkgPSBWYXJpYW50PAogICAgIFJlZlB0
cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPgogI2lmIEVOQUJMRShXRUJHTDIpCiAgICAgLCBS
ZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4KKyAgICAsIFJlZlB0cjxXZWJHTFRyYW5zZm9y
bUZlZWRiYWNrPgogI2VuZGlmCiA+OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEJ1ZmZlci5jcHAKaW5kZXggNWU5MTUyNmE5YmIxZmZhY2E0MDcxNWE3NmRmNzc1ZjA1OWE0MmM3
ZS4uNzBjMDZmOTg1NGY3ODVlOTg5ZTQ1Yjk3NGM0Yzc2NWM3ZTMxYmM3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcApAQCAtMjUzLDI1ICsyNTMsMTMgQEAg
dm9pZCBXZWJHTEJ1ZmZlcjo6c2V0Q2FjaGVkTWF4SW5kZXgoR0NHTGVudW0gdHlwZSwgdW5zaWdu
ZWQgdmFsdWUpCiAgICAgbV9uZXh0QXZhaWxhYmxlQ2FjaGVFbnRyeSA9IChtX25leHRBdmFpbGFi
bGVDYWNoZUVudHJ5ICsgMSkgJSBXVEZfQVJSQVlfTEVOR1RIKG1fbWF4SW5kZXhDYWNoZSk7CiB9
CiAKLXZvaWQgV2ViR0xCdWZmZXI6OnNldFRhcmdldChHQ0dMZW51bSB0YXJnZXQsIGJvb2wgZm9y
V2ViR0wyKQordm9pZCBXZWJHTEJ1ZmZlcjo6c2V0VGFyZ2V0KEdDR0xlbnVtIHRhcmdldCkKIHsK
LSAgICAvLyBJbiBXZWJHTCwgYSBidWZmZXIgaXMgYm91bmQgdG8gb25lIHRhcmdldCBpbiBpdHMg
bGlmZXRpbWUKLSAgICBpZiAobV90YXJnZXQpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAodGFy
Z2V0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIgfHwgdGFyZ2V0ID09IEdyYXBo
aWNzQ29udGV4dEdMOjpFTEVNRU5UX0FSUkFZX0JVRkZFUikKLSAgICAgICAgbV90YXJnZXQgPSB0
YXJnZXQ7Ci0gICAgZWxzZSBpZiAoZm9yV2ViR0wyKSB7Ci0jaWYgRU5BQkxFKFdFQkdMMikKLSAg
ICAgICAgc3dpdGNoICh0YXJnZXQpIHsKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09QWV9SRUFEX0JVRkZFUjoKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09QWV9X
UklURV9CVUZGRVI6Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlBJWEVMX1BBQ0tf
QlVGRkVSOgotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpQSVhFTF9VTlBBQ0tfQlVG
RkVSOgotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tf
QlVGRkVSOgotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JVRkZFUjoK
LSAgICAgICAgICAgIG1fdGFyZ2V0ID0gdGFyZ2V0OwotICAgICAgICB9Ci0jZW5kaWYKKyAgICBt
X3RhcmdldCA9IHRhcmdldDsKKworICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6
OkFSUkFZX0JVRkZFUiB8fCB0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkVMRU1FTlRfQVJS
QVlfQlVGRkVSKSB7CisgICAgICAgIEFTU0VSVCghbV9hcnJheUJ1ZmZlck9yRWxlbWVudEFycmF5
QnVmZmVyIHx8IHRhcmdldCA9PSBtX2FycmF5QnVmZmVyT3JFbGVtZW50QXJyYXlCdWZmZXIpOwor
ICAgICAgICBtX2FycmF5QnVmZmVyT3JFbGVtZW50QXJyYXlCdWZmZXIgPSB0YXJnZXQ7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaAppbmRleCA5YWZk
ODU3MGNiM2RkZjc2YWIxODVlZDI0ZmU2NjM1OTcyMzQ5Y2Y1Li43NjdlNGJjNDJkMDY5NDY1ZGI2
N2EzMDQ1MTVlMjI0ZThhMGM1NjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
QnVmZmVyLmgKQEAgLTYwLDcgKzYwLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FjaGVkTWF4
SW5kZXgoR0NHTGVudW0gdHlwZSwgdW5zaWduZWQgdmFsdWUpOwogCiAgICAgR0NHTGVudW0gZ2V0
VGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQ7IH0KLSAgICB2b2lkIHNldFRhcmdldChH
Q0dMZW51bSwgYm9vbCBmb3JXZWJHTDIpOworICAgIHZvaWQgc2V0VGFyZ2V0KEdDR0xlbnVtKTsK
KworICAgIEdDR0xlbnVtIGFycmF5QnVmZmVyT3JFbGVtZW50QXJyYXlCdWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2FycmF5QnVmZmVyT3JFbGVtZW50QXJyYXlCdWZmZXI7IH0KIAogICAgIGJvb2wg
aGFzRXZlckJlZW5Cb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG9iamVjdCgpICYmIG1fdGFyZ2V0OyB9
CiAKQEAgLTc1LDYgKzc3LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZl
cj4gbV9lbGVtZW50QXJyYXlCdWZmZXI7CiAgICAgR0NHTHNpemVpcHRyIG1fYnl0ZUxlbmd0aCB7
IDAgfTsKIAorICAgIEdDR0xlbnVtIG1fYXJyYXlCdWZmZXJPckVsZW1lbnRBcnJheUJ1ZmZlciB7
IDAgfTsKKwogICAgIC8vIE9wdGltaXphdGlvbiBmb3IgaW5kZXggdmFsaWRhdGlvbi4gRm9yIGVh
Y2ggdHlwZSBvZiBpbmRleAogICAgIC8vIChpLmUuLCBVTlNJR05FRF9TSE9SVCksIGNhY2hlIHRo
ZSBtYXhpbXVtIGluZGV4IGluIHRoZQogICAgIC8vIGVudGlyZSBidWZmZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCmluZGV4IDAxZGRlN2Y3ZjRlYzJlNWE1NjRh
MmI2OGQ1OTFiZjY3NDc4OGYwZDIuLjRmMjQxNTJiZjcyMjg5NzRiNzA0YTFlMDcwNTNlNTA2Mzc0
MzAwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIFdlYkdMUXVlcnk6On5XZWJHTFF1ZXJ5KCkKIFdlYkdMUXVlcnk6OldlYkdM
UXVlcnkoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRP
YmplY3QoY3R4KQogewotICAgIC8vIEZJWE1FOiBDYWxsIGNyZWF0ZVF1ZXJ5IGZyb20gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuCisgICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHRHTCgp
LT5jcmVhdGVRdWVyeSgpKTsKIH0KIAogdm9pZCBXZWJHTFF1ZXJ5OjpkZWxldGVPYmplY3RJbXBs
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2Jq
ZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oCmluZGV4IDU1NmQzOTlk
ZTNjYTBlZTA5NDcyNjAzYzA4OTk4NzMwY2Y1NTdmNDUuLjc2MTg5ZTFjNGIwNmUyNDE4NjZmYTVl
NjA3NThjOWUyY2VjNWRjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUXVlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5
LmgKQEAgLTM2LDkgKzM2LDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYkdMUXVlcnk+
IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xR
dWVyeSgpOwogCisgICAgYm9vbCBpc1Jlc3VsdEF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNSZXN1bHRBdmFpbGFibGU7IH0KKworICAgIHZvaWQgbWFrZVJlc3VsdEF2YWlsYWJsZSgpIHsg
bV9pc1Jlc3VsdEF2YWlsYWJsZSA9IHRydWU7IH0KKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0
IFdlYkdMUXVlcnkoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZvaWQgZGVsZXRl
T2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpIG92
ZXJyaWRlOworCitwcml2YXRlOgorICAgIGJvb2wgbV9pc1Jlc3VsdEF2YWlsYWJsZSB7IGZhbHNl
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDE3
ZWFhNWQxNWI3MGNlMThhMGFmNTZkMWNiZjJiMjI5NmI5MmI2NTIuLjY3Y2E1M2M0N2VlYTAwOGJl
YTNmNjFkZjk2ZTczODljYWVjYTZkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0xMTg4LDE3ICsx
MTg4LDI2IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tPYmplY3RUb0Jl
Qm91bmQoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBXCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJn
ZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIpCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnZhbGlkYXRlQW5kQ2FjaGVCdWZmZXJCaW5kaW5nKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwg
R0NHTGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZlciogYnVmZmVyKQogewogICAgIGJvb2wgZGVsZXRl
ZDsKLSAgICBpZiAoIWNoZWNrT2JqZWN0VG9CZUJvdW5kKCJiaW5kQnVmZmVyIiwgYnVmZmVyLCBk
ZWxldGVkKSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghY2hlY2tPYmplY3RUb0JlQm91bmQo
ZnVuY3Rpb25OYW1lLCBidWZmZXIsIGRlbGV0ZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKGRlbGV0ZWQpCiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgaWYgKGJ1ZmZl
ciAmJiBidWZmZXItPmdldFRhcmdldCgpICYmIGJ1ZmZlci0+Z2V0VGFyZ2V0KCkgIT0gdGFyZ2V0
KSB7Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X09QRVJBVElPTiwgImJpbmRCdWZmZXIiLCAiYnVmZmVycyBjYW4gbm90IGJlIHVzZWQgd2l0aCBt
dWx0aXBsZSB0YXJnZXRzIik7Ci0gICAgICAgIHJldHVybjsKKworICAgIGlmIChidWZmZXIpIHsK
KyAgICAgICAgLy8gSW4gV2ViR0wsIGEgYnVmZmVyIG1heSBvbmx5IGJlIGJvdW5kIHRvIG9uZSBv
ZiB0aGUgQVJSQVlfQlVGRkVSIG9yIEVMRU1FTlRfQVJSQVlfQlVGRkVSIHRhcmdldCBpbiBpdHMg
bGlmZXRpbWUuCisgICAgICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZ
X0JVRkZFUiB8fCB0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkVMRU1FTlRfQVJSQVlfQlVG
RkVSKSB7CisgICAgICAgICAgICBpZiAoYnVmZmVyLT5hcnJheUJ1ZmZlck9yRWxlbWVudEFycmF5
QnVmZmVyKCkgJiYgdGFyZ2V0ICE9IGJ1ZmZlci0+YXJyYXlCdWZmZXJPckVsZW1lbnRBcnJheUJ1
ZmZlcigpKSB7CisgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJidWZmZXJzIGNhbiBvbmx5
IGJlIGJvdW5kIHRvIG9uZSBvZiBBUlJBWV9CVUZGRVIgb3IgRUxFTUVOVF9BUlJBWV9CVUZGRVIi
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBidWZmZXItPnNldFRhcmdldCh0YXJnZXQpOwogICAgIH0KKwogICAgIGlm
ICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUikKICAgICAgICAgbV9i
b3VuZEFycmF5QnVmZmVyID0gYnVmZmVyOwogICAgIGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGlj
c0NvbnRleHRHTDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIpCkBAIC0xMjM1LDEzICsxMjQ0LDE5IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJn
ZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIpCiAjZW5kaWYKICAgICAgICAgaWYgKCFzdWNjZXNzKSB7
CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJ
RF9FTlVNLCAiYmluZEJ1ZmZlciIsICJpbnZhbGlkIHRhcmdldCIpOwotICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQogCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIpCit7CisgICAgaWYgKCF2
YWxpZGF0ZUFuZENhY2hlQnVmZmVyQmluZGluZygiYmluZEJ1ZmZlciIsIHRhcmdldCwgYnVmZmVy
KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKHRhcmdldCwg
b2JqZWN0T3JaZXJvKGJ1ZmZlcikpOwotICAgIGlmIChidWZmZXIpCi0gICAgICAgIGJ1ZmZlci0+
c2V0VGFyZ2V0KHRhcmdldCwgaXNXZWJHTDIoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgV2ViR0xGcmFtZWJ1
ZmZlciogYnVmZmVyKQpAQCAtMTc5NCwxNCArMTgwOSwyOSBAQCBib29sIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmRlbGV0ZU9iamVjdChXZWJHTE9iamVjdCogb2JqZWN0KQogICAgIHJldHVy
biB0cnVlOwogfQogCisjZGVmaW5lIFJFTU9WRV9CVUZGRVJfRlJPTV9CSU5ESU5HKGJpbmRpbmcp
IFwKKyAgICBpZiAoYmluZGluZyA9PSBidWZmZXIpIFwKKyAgICAgICAgYmluZGluZyA9IG51bGxw
dHI7CisKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5jYWNoZURlbGV0ZWRCdWZm
ZXIoV2ViR0xCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBSRU1PVkVfQlVGRkVSX0ZST01fQklORElO
RyhtX2JvdW5kQXJyYXlCdWZmZXIpOworICAgIFJFTU9WRV9CVUZGRVJfRlJPTV9CSU5ESU5HKG1f
Ym91bmRDb3B5UmVhZEJ1ZmZlcik7CisgICAgUkVNT1ZFX0JVRkZFUl9GUk9NX0JJTkRJTkcobV9i
b3VuZENvcHlXcml0ZUJ1ZmZlcik7CisgICAgUkVNT1ZFX0JVRkZFUl9GUk9NX0JJTkRJTkcobV9i
b3VuZFBpeGVsUGFja0J1ZmZlcik7CisgICAgUkVNT1ZFX0JVRkZFUl9GUk9NX0JJTkRJTkcobV9i
b3VuZFBpeGVsVW5wYWNrQnVmZmVyKTsKKyAgICBSRU1PVkVfQlVGRkVSX0ZST01fQklORElORyht
X2JvdW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIpOworICAgIFJFTU9WRV9CVUZGRVJfRlJPTV9C
SU5ESU5HKG1fYm91bmRVbmlmb3JtQnVmZmVyKTsKKworICAgIG1fYm91bmRWZXJ0ZXhBcnJheU9i
amVjdC0+dW5iaW5kQnVmZmVyKCpidWZmZXIpOworfQorCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmRlbGV0ZUJ1ZmZlcihXZWJHTEJ1ZmZlciogYnVmZmVyKQogewogICAgIGlmICgh
ZGVsZXRlT2JqZWN0KGJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAobV9ib3VuZEFy
cmF5QnVmZmVyID09IGJ1ZmZlcikKLSAgICAgICAgbV9ib3VuZEFycmF5QnVmZmVyID0gbnVsbHB0
cjsKIAotICAgIG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+dW5iaW5kQnVmZmVyKCpidWZmZXIp
OworICAgIHVuY2FjaGVEZWxldGVkQnVmZmVyKGJ1ZmZlcik7CiB9CiAKIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlRnJhbWVidWZmZXIoV2ViR0xGcmFtZWJ1ZmZlciogZnJh
bWVidWZmZXIpCkBAIC0yNjUyLDYgKzI2ODIsMTkgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0qIHByb2dyYW0sIEcK
ICNlbmRpZiAvLyBVU0UoQU5HTEUpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICBkZWZhdWx0
OgorI2lmIEVOQUJMRShXRUJHTDIpCisgICAgICAgIGlmIChpc1dlYkdMMigpKSB7CisgICAgICAg
ICAgICBzd2l0Y2ggKHBuYW1lKSB7CisgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX01PREU6CisgICAgICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR1M6CisgICAgICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STV9CTE9DS1M6CisgICAgICAgICAg
ICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBwbmFt
ZSwgJnZhbHVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMMikKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFByb2dyYW1QYXJhbWV0ZXIiLCAiaW52
YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmgKaW5kZXggNmFjYzExMmNmMzZhYjIzODc5ZTFmMDQ4MjA3YWI1YTJjNDhjMWI4ZS4u
MzBiNDNjYWU2ZGJkYmE1NTBjYzY1ODIzYjY4ZGRhYmFmNjM2NWI3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApA
QCAtNDU3LDYgKzQ1Nyw4IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgZW5hYmxlU3VwcG9ydGVk
RXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBleHRlbnNpb25OYW1lTGl0ZXJhbCk7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgdW5jYWNoZURlbGV0ZWRCdWZmZXIoV2ViR0xCdWZmZXIqKTsKKwogICAgIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OwogICAgIFJlZlB0cjxXZWJHTENv
bnRleHRHcm91cD4gbV9jb250ZXh0R3JvdXA7CiAKQEAgLTgxNiw2ICs4MTgsOCBAQCBwcm90ZWN0
ZWQ6CiAgICAgLy8gUmV0dXJuIGZhbHNlIGlmIGNhbGxlciBzaG91bGQgcmV0dXJuIHdpdGhvdXQg
ZnVydGhlciBwcm9jZXNzaW5nLgogICAgIGJvb2wgY2hlY2tPYmplY3RUb0JlQm91bmQoY29uc3Qg
Y2hhciogZnVuY3Rpb25OYW1lLCBXZWJHTE9iamVjdCosIGJvb2wmIGRlbGV0ZWQpOwogCisgICAg
Ym9vbCB2YWxpZGF0ZUFuZENhY2hlQnVmZmVyQmluZGluZyhjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIEdDR0xlbnVtIHRhcmdldCwgV2ViR0xCdWZmZXIqKTsKKwogICAgIC8vIEhlbHBlcnMgZm9y
IHNpbXVsYXRpbmcgdmVydGV4QXR0cmliMC4KICAgICB2b2lkIGluaXRWZXJ0ZXhBdHRyaWIwKCk7
CiAgICAgT3B0aW9uYWw8Ym9vbD4gc2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDR0x1aW50IG51bVZl
cnRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5z
Zm9ybUZlZWRiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNm
b3JtRmVlZGJhY2suY3BwCmluZGV4IDJkMjhjNTk5YWEzMmJkZjAxMmUzZWJkOTNlN2MwZDU2M2M2
ODVlOGYuLjVhMmYwMzMwY2QwNGQyMjQzYWEwNTkxZTYwMWQ2YWM4YTQ1ZDRjYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2su
Y3BwCkBAIC00NiwxNCArNDYsMTIgQEAgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6fldlYkdMVHJh
bnNmb3JtRmVlZGJhY2soKQogV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6V2ViR0xUcmFuc2Zvcm1G
ZWVkYmFjayhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJHTFNoYXJl
ZE9iamVjdChjdHgpCiB7Ci0gICAgLy8gRklYTUU6IENhbGwgY3JlYXRlVHJhbnNmb3JtRmVlZGJh
Y2sgZnJvbSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC4KKyAgICBzZXRPYmplY3QoY3R4LmdyYXBo
aWNzQ29udGV4dEdMKCktPmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkpOwogfQogCiB2b2lkIFdl
YkdMVHJhbnNmb3JtRmVlZGJhY2s6OmRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKGNvbnRleHQzZCk7Ci0gICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7Ci0gICAgLy8gRklY
TUU6IENhbGwgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sgZnJvbSBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC4KKyAgICBjb250ZXh0M2QtPmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKG9iamVjdCk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5oCmluZGV4IDRlOGQzOTg5ZjFhYjc2YmEyMjEzZWI0YzQyNDIzN2Q3MGRmMzQ0
Y2IuLmZhZDM2NmJmOTk1Yzc1ODA0MDNhMGQzMDk1ZjJlNTk3YTM1MjhjZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApA
QCAtNDY0LDYgKzQ2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgVU5TSUdORURfSU5UXzEwRl8xMUZf
MTFGX1JFViA9IDB4OEMzQiwKICAgICAgICAgUkdCOV9FNSA9IDB4OEMzRCwKICAgICAgICAgVU5T
SUdORURfSU5UXzVfOV85XzlfUkVWID0gMHg4QzNFLAorICAgICAgICBUUkFOU0ZPUk1fRkVFREJB
Q0tfVkFSWUlOR19NQVhfTEVOR1RIID0gMHg4Qzc2LAogICAgICAgICBUUkFOU0ZPUk1fRkVFREJB
Q0tfQlVGRkVSX01PREUgPSAweDhDN0YsCiAgICAgICAgIE1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tf
U0VQQVJBVEVfQ09NUE9ORU5UUyA9IDB4OEM4MCwKICAgICAgICAgVFJBTlNGT1JNX0ZFRURCQUNL
X1ZBUllJTkdTID0gMHg4QzgzLApAQCAtMTAxOCw2ICsxMDE5LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xmbG9h
dCogdmFsdWVzKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcihH
Q0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBu
b3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGlu
dCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNl
dCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHZpZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsKIApAQCAtMTAzNyw2ICsx
MDM5LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
KEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVy
dGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOwog
CisgICAgLy8gV2ViR0wyIFF1ZXJ5IGNhbGxzCisgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0
IGNyZWF0ZVF1ZXJ5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBiZWdpblF1ZXJ5KEdDR0xlbnVt
LCBQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZFF1ZXJ5KEdDR0xl
bnVtKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2KEdDR0x1aW50LCBH
Q0dMZW51bSwgR0NHTHVpbnQqKSA9IDA7CisKICAgICBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMgY29udGV4dEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJzOyB9CiAgICAgdm9p
ZCBzZXRDb250ZXh0QXR0cmlidXRlcyhjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
IGF0dHJzKSB7IG1fYXR0cnMgPSBhdHRyczsgfQogCkBAIC0xMDQ2LDYgKzEwNTQsMTggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2Jq
ZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2Jq
ZWN0KSA9IDA7CiAKKyAgICAvLyBXZWJHTDIgVHJhbnNmb3JtIEZlZWRiYWNrIGNhbGxzCisgICAg
dmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0
KSA9IDA7CisgICAgdmlydHVhbCBHQ0dMYm9vbGVhbiBpc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRm
b3JtR0xPYmplY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNr
KEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJlZ2lu
VHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kVHJh
bnNmb3JtRmVlZGJhY2soKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBHQ0dMZW51
bSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoUGxh
dGZvcm1HTE9iamVjdCwgR0NHTHVpbnQsIEFjdGl2ZUluZm8mKSA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgYmluZEJ1ZmZlckJhc2UoR0NHTGVudW0sIEdDR0x1aW50LCBQbGF0Zm9ybUdMT2JqZWN0
KSA9IDA7CisKICNpZiBVU0UoT1BFTkdMKSAmJiBFTkFCTEUoV0VCR0wyKQogICAgIHZpcnR1YWwg
dm9pZCBwcmltaXRpdmVSZXN0YXJ0SW5kZXgoR0NHTHVpbnQpID0gMDsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9H
cmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCA4MTAxMTkyM2ZiMmJmNGU5ODQ1MDdkYTMw
NzE2YzA2ZjQwNmM1ZDBjLi5mYmRhZmY0ZGY2NWYyZDk4NWIxMWQwNmMxMWM2ZDY1YWJkZDAxNWM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMTQ0Miw2ICsxNDQyLDEy
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0NH
THVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwKICAgICBnbDo6VmVydGV4QXR0cmliUG9pbnRlcihp
bmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCByZWludGVycHJldF9jYXN0PEdM
dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7CiB9CiAKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBH
Q0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpWZXJ0ZXhBdHRy
aWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCByZWludGVycHJldF9jYXN0PEdM
dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7Cit9CisKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZpZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CkBAIC0xODMyLDYgKzE4MzgsMTA5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZl
cnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzCiAgICAgZ2V0
RXh0ZW5zaW9ucygpLnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOwogfQogCisv
LyBRdWVyeSBGdW5jdGlvbnMKKworUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y3JlYXRlUXVlcnkoKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIEdM
dWludCBuYW1lID0gMDsKKyAgICBnbDo6R2VuUXVlcmllcygxLCAmbmFtZSk7CisgICAgcmV0dXJu
IG5hbWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJlZ2luUXVlcnkoR0NH
TGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIGdsOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OkVuZFF1ZXJ5KHRhcmdldCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWl2KEdDR0x1aW50
IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBnbDo6R2V0UXVlcnlPYmplY3R1aXYoaWQsIHBuYW1lLCBwYXJhbXMp
OworfQorCisvLyBUcmFuc2Zvcm0gRmVlZGJhY2sgRnVuY3Rpb25zCisKK1BsYXRmb3JtR0xPYmpl
Y3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBHTHVpbnQgbmFtZSA9IDA7CisgICAgZ2w6
OkdlblRyYW5zZm9ybUZlZWRiYWNrcygxLCAmbmFtZSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBs
YXRmb3JtR0xPYmplY3QgdHJhbnNmb3JtRmVlZGJhY2spCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgZ2w6OkRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrcygxLCAmdHJhbnNmb3JtRmVl
ZGJhY2spOworfQorCitHQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNUcmFu
c2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IHRyYW5zZm9ybUZlZWRiYWNrKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBnbDo6SXNUcmFuc2Zvcm1GZWVkYmFj
ayh0cmFuc2Zvcm1GZWVkYmFjayk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3Qg
dHJhbnNmb3JtRmVlZGJhY2spCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6
OkJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIHRyYW5zZm9ybUZlZWRiYWNrKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dM
ZW51bSBwcmltaXRpdmVNb2RlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGds
OjpCZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjplbmRUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgZ2w6OkVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdD
R0xlbnVtIGJ1ZmZlck1vZGUpCit7CisgICAgYXV0byBjb252ZXJ0ZWRWYXJ5aW5ncyA9IHZhcnlp
bmdzLm1hcChbXShjb25zdCBTdHJpbmcmIHZhcnlpbmcpIC0+IGNvbnN0IGNoYXIqIHsKKyAgICAg
ICAgcmV0dXJuIHZhcnlpbmcudXRmOCgpLmRhdGEoKTsKKyAgICB9KTsKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBnbDo6VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhwcm9ncmFtLCB2
YXJ5aW5ncy5zaXplKCksIGNvbnZlcnRlZFZhcnlpbmdzLmRhdGEoKSwgYnVmZmVyTW9kZSk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZv
JiBpbmZvKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIEdDR0xzaXplaSBidWZT
aXplID0gMDsKKyAgICBnbDo6R2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR19NQVhfTEVOR1RILCAmYnVmU2l6ZSk7
CisgICAgaWYgKCFidWZTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBHQ0dMc2l6ZWkgbGVu
Z3RoID0gMDsKKyAgICBHQ0dMc2l6ZWkgc2l6ZSA9IDA7CisgICAgR0NHTGVudW0gdHlwZSA9IDA7
CisgICAgVmVjdG9yPEdDR0xjaGFyPiBuYW1lKGJ1ZlNpemUpOworCisgICAgZ2w6OkdldFRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtLCBpbmRleCwgYnVmU2l6ZSwgJmxlbmd0aCwgJnNp
emUsICZ0eXBlLCBuYW1lLmRhdGEoKSk7CisKKyAgICBpbmZvLm5hbWUgPSBTdHJpbmcobmFtZS5k
YXRhKCksIGxlbmd0aCk7CisgICAgaW5mby5zaXplID0gc2l6ZTsKKyAgICBpbmZvLnR5cGUgPSB0
eXBlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kQnVmZmVyQmFzZShH
Q0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6QmluZEJ1ZmZlckJhc2UodGFy
Z2V0LCBpbmRleCwgYnVmZmVyKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEdSQVBISUNT
X0NPTlRFWFRfR0wpICYmIFVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuY3BwCmluZGV4IDYwNmM5OTY4NmEwMDg5ZjYwNmRmYzAyMzExZDM0Y2UxNDY1NDA5NmMuLjFi
ZDc1ZGM1MGNiYmRjNzVkZGI3MjhiNDE0Y2YzMWZmMzZkZmE1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAtNTMxLDYgKzUzMSw3NCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKIH0KICNlbmRpZgogCisj
aWYgIVVTRShBTkdMRSkKKy8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb25seSBv
biBBTkdMRSwgYnV0IHN0aWxsIHJlcXVpcmUgZGVmaW5pdGlvbnMgZm9yIG5vbi1BTkdMRSBidWls
ZHMuCisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYklQb2ludGVy
KEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMaW50cHRyKQorewor
fQorCisvLyBRdWVyeSBGdW5jdGlvbnMKKworUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y3JlYXRlUXVlcnkoKQoreworICAgIHJldHVybiAwOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiZWdpblF1ZXJ5KEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2Jq
ZWN0KQoreworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjplbmRRdWVyeShHQ0dM
ZW51bSkKK3sKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmpl
Y3R1aXYoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMdWludCopCit7Cit9CisKKy8vIFRyYW5zZm9y
bSBGZWVkYmFjayBGdW5jdGlvbnMKKworUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHJldHVybiAwOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQ
bGF0Zm9ybUdMT2JqZWN0KQoreworfQorCitHQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6aXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0KQoreworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmluZFRyYW5zZm9y
bUZlZWRiYWNrKEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2JqZWN0KQoreworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtKQorewor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjplbmRUcmFuc2Zvcm1GZWVkYmFjaygp
Cit7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBHQ0dMZW51
bSkKK3sKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50LCBBY3RpdmVJbmZvJikKK3sK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmluZEJ1ZmZlckJhc2UoR0NHTGVu
dW0sIEdDR0x1aW50LCBQbGF0Zm9ybUdMT2JqZWN0KQoreworfQorCisjZW5kaWYgLy8gIVVTRShB
TkdMRSkKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEdSQVBI
SUNTX0NPTlRFWFRfR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDA0
ZmI5YjRlMzJlYmI4NDY4MTc5ZTg2MTBiZjM5Y2ZkNjIxOGQ0YmYuLmE5NzAzYzlmNzdiNDdjMDhl
ZDRjMWYyODE5MzUxZWE4ODM1NzRiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCkBAIC0zNTksNiArMzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgdmVydGV4QXR0cmliNGYo
R0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdD
R0xmbG9hdCB3KSBvdmVycmlkZTsKICAgICB2b2lkIHZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBp
bmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIG92ZXJyaWRlOwogICAgIHZvaWQgdmVydGV4
QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBl
LCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9m
ZnNldCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBp
bmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dM
aW50cHRyIG9mZnNldCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHZpZXdwb3J0KEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwog
CkBAIC0zNjgsMTIgKzM2OSwzMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVy
cmlkZTsKIAorICAgIC8vIFdlYkdMMiBRdWVyeSBjYWxscworICAgIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlUXVlcnkoKSBvdmVycmlkZTsKKyAgICB2b2lkIGJlZ2luUXVlcnkoR0NHTGVudW0sIFBs
YXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0pIG92
ZXJyaWRlOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXYoR0NHTHVpbnQsIEdDR0xlbnVtLCBH
Q0dMdWludCopIG92ZXJyaWRlOworCiAgICAgLy8gVmVydGV4QXJyYXlPamVjdCBjYWxscwogICAg
IFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXkoKSBvdmVycmlkZTsKICAgICB2b2lk
IGRlbGV0ZVZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIEdDR0xi
b29sZWFuIGlzVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKKyAgICAvLyBX
ZWJHTDIgVHJhbnNmb3JtIEZlZWRiYWNrIGNhbGxzCisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVh
dGVUcmFuc2Zvcm1GZWVkYmFjaygpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlVHJhbnNmb3Jt
RmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgR0NHTGJvb2xlYW4gaXNU
cmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIGJp
bmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBiZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNrKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB0cmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgR0NHTGVudW0pIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5nKFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50LCBBY3RpdmVJbmZvJikgb3ZlcnJpZGU7CisK
KyAgICB2b2lkIGJpbmRCdWZmZXJCYXNlKEdDR0xlbnVtLCBHQ0dMdWludCwgUGxhdGZvcm1HTE9i
amVjdCkgb3ZlcnJpZGU7CisKICAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQg
Y2hhciogaW1hZ2VQaXhlbHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW50U2l6
ZSYgY2FudmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICB2b2lkIG1hcmtDb250ZXh0
Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGE1YmMwNDNhMjI2YTdiZWU1YzYwNjViM2EzNjM3YTdmNGZhODA4
MTQuLjg2NTkxNTFlZGU3YTMzNDA4ZWNmZDMzNzY2ZTVlNzg1ODBhM2FkOGQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMC0wMS0wOSAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29t
PgorCisgICAgICAgIFtXZWJHTCAyXSBJbXBsZW1lbnQgdHJhbnNmb3JtIGZlZWRiYWNrIGFuZCBw
YXNzIHRyYW5zZm9ybSBmZWVkYmFjayBjb25mb3JtYW5jZSB0ZXN0cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1ODIzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHBhc3NpbmcgcmVzdWx0cyBmb3Ig
dHJhbnNmb3JtX2ZlZWRiYWNrLCBhcyBleHBlY3RlZCB3aGVuIEFOR0xFIGlzIGVuYWJsZWQuCisK
KyAgICAgICAgKiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL3R3
by11bnJlZmVyZW5jZWQtdmFyeWluZ3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmdsLzIu
MC4wL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdW53cml0dGVuLW91dHB1dC1kZWZh
dWx0cy10by16ZXJvLWV4cGVjdGVkLnR4dDoKKwogMjAyMC0wMS0wOSAgQnJlbnQgRnVsZ2hhbSAg
PGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjUzNjYyKTogTGFy
Z2UgRGF0YSBVUkxzIGFyZSBub3QgYmVpbmcgaGFuZGxlZCBwcm9wZXJseQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9mZWVkYmFjay90
d28tdW5yZWZlcmVuY2VkLXZhcnlpbmdzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmds
LzIuMC4wL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdHdvLXVucmVmZXJlbmNlZC12
YXJ5aW5ncy1leHBlY3RlZC50eHQKaW5kZXggYWI0NDdlMzYxY2M4ZjY2NjZhMWI5ZGRlODdkNDY1
ZTBkNGU2YzAxOS4uNjQ3YWU5NDg0MGY5Y2MyNjUzODQ1ZmI1NWJlNWMxMjYzOTY4MWFhMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9m
ZWVkYmFjay90d28tdW5yZWZlcmVuY2VkLXZhcnlpbmdzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL3R3by11
bnJlZmVyZW5jZWQtdmFyeWluZ3MtZXhwZWN0ZWQudHh0CkBAIC0xLDEwICsxLDUgQEAKIFRoaXMg
dGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJl
cG9ydHMgUEFTUyBvciBGQUlMLgogCiBUZXN0OiAuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL3R3by11bnJlZmVyZW5jZWQtdmFy
eWluZ3MuaHRtbAotWyAxOiBQQVNTIF0gV2ViR0wgY29udGV4dCBleGlzdHMKLVsgMjogUEFTUyBd
IGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBJbml0IHRyYW5zZm9ybSBm
ZWVkYmFjayBzaG91bGQgc3VjY2VlZAotWyAzOiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVk
IHZhbHVlOiBOT19FUlJPUiA6IERyYXcgd2l0aCB0cmFuc2Zvcm0gZmVlZGJhY2sgc2hvdWxkIHN1
Y2NlZWQKLVsgNDogRkFJTCBdIGJ1ZmZlciBzaG91bGQgbWF0Y2ggZXhwZWN0ZWQgdmFsdWVzCi1b
IDU6IFBBU1MgXSBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotWyBGQUlMIF0gMSBmYWlsdXJl
cyByZXBvcnRlZAorWyBQQVNTIF0gQWxsIHRlc3RzIHBhc3NlZAogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL3Vud3Jp
dHRlbi1vdXRwdXQtZGVmYXVsdHMtdG8temVyby1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL3Vud3JpdHRlbi1vdXRw
dXQtZGVmYXVsdHMtdG8temVyby1leHBlY3RlZC50eHQKaW5kZXggMjljOWExZWY2MDNkNzhmYzYw
ZWFiYjBlOGRlNTQzZWQ4ODgzMTEwMi4uNjk3NGRhNDhhOTQ4Mjc0ZWJlOWI4YTliMjdiMDRhYWQw
Yzc0MzgwZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2Uy
L3RyYW5zZm9ybV9mZWVkYmFjay91bndyaXR0ZW4tb3V0cHV0LWRlZmF1bHRzLXRvLXplcm8tZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90cmFu
c2Zvcm1fZmVlZGJhY2svdW53cml0dGVuLW91dHB1dC1kZWZhdWx0cy10by16ZXJvLWV4cGVjdGVk
LnR4dApAQCAtMSwxMSArMSw1IEBACiBUaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0
ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC4KIAogVGVzdDog
Li4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9m
ZWVkYmFjay91bndyaXR0ZW4tb3V0cHV0LWRlZmF1bHRzLXRvLXplcm8uaHRtbAotWyAxOiBQQVNT
IF0gV2ViR0wgY29udGV4dCBleGlzdHMKLVsgMjogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3Rl
ZCB2YWx1ZTogTk9fRVJST1IgOiBTZXQgdXAgcHJvZ3JhbSBzaG91bGQgc3VjY2VlZAotWyAzOiBG
QUlMIF0gYnVmZmVyIHNob3VsZCBtYXRjaCBleHBlY3RlZCB2YWx1ZXMKLVsgNDogUEFTUyBdIGdl
dEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBTZXQgdXAgcHJvZ3JhbSBzaG91
bGQgc3VjY2VlZAotWyA1OiBQQVNTIF0gYnVmZmVyIHNob3VsZCBtYXRjaCBleHBlY3RlZCB2YWx1
ZXMKLVsgNjogUEFTUyBdIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi1bIEZBSUwgXSAxIGZh
aWx1cmVzIHJlcG9ydGVkCitbIFBBU1MgXSBBbGwgdGVzdHMgcGFzc2VkCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387557</attachid>
            <date>2020-01-13 12:28:40 -0800</date>
            <delta_ts>2020-01-13 18:34:39 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-205823-20200113122839.patch</filename>
            <type>text/plain</type>
            <size>78753</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU0NzE2YmMwZmExYWVh
YWI0NmNiMTE3ZWE1YTMyMGFhNTUyNzQyMC4uMmY3NjEyYzFmOTY3ZDAyYTNjZWViYWQzM2E1YThi
ZDM2NDI2YmYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MyBAQAorMjAyMC0wMS0xMyAgSnVz
dGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHTCAyXSBJbXBs
ZW1lbnQgdHJhbnNmb3JtIGZlZWRiYWNrIGFuZCBwYXNzIHRyYW5zZm9ybSBmZWVkYmFjayBjb25m
b3JtYW5jZSB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA1ODIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAg
ICAgIENvdmVyZWQgYnkgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9mZWVkYmFj
ayBjb25mb3JtYW5jZSB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dFdlYkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0pTVmFsdWUpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp+V2ViR0wyUmVuZGVyaW5n
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0
aWFsaXplVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJTdWJEYXRhKTogQU5HTEUgdmFsaWRhdGlv
biBpbiBtYXBCdWZmZXJSYW5nZSBtYXkgZmFpbDsgcHJldmVudCBjb3B5aW5nIGZyb20gYSBudWxs
cHRyLiAKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0
dHJpYklQb2ludGVyKToKKworICAgICAgICBCYXJlIG1pbmltdW0gc3R1YnMgdG8gZ2V0IFdlYkdM
UXVlcnkgcGFzc2luZyB0cmFuc2Zvcm1fZmVlZGJhY2sgdGVzdHM6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVRdWVyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmVuZFF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFF1ZXJ5UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUXVlcnk6OldlYkdMUXVlcnkpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UXVlcnkuaDoKKworICAgICAgICBUcmFuc2Zvcm0gZmVlZGJhY2sgZnVuY3Rpb25zOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6aXNUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6Omdl
dFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xU
cmFuc2Zvcm1GZWVkYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRyYW5zZm9ybUZl
ZWRiYWNrOjpXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
VHJhbnNmb3JtRmVlZGJhY2s6OmRlbGV0ZU9iamVjdEltcGwpOgorCisgICAgICAgIE1pc2MgZnVu
Y3Rpb25zIHRoYXQgbmVlZGVkIGFkZGVkIGZ1bmN0aW9uYWxpdHk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kQnVmZmVyQmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcik6CisKKyAg
ICAgICAgSGVscGVyIGZ1bmN0aW9ucyB0byB0cmFjayBXZWJHTDIgc3RhdGUvb2JqZWN0czoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuY2FjaGVEZWxldGVkQnVm
ZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xBbnkuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6c2V0VGFyZ2V0
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUXVlcnkuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dmFsaWRhdGVBbmRDYWNoZUJ1ZmZlckJpbmRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmNhY2hlRGVsZXRlZEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3Jh
bVBhcmFtZXRlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5oOgorCisgICAgICAgIFBpcGUgbmV3IEdyYXBoaWNzQ29udGV4dEdMIG1ldGhvZHMgdG8g
QU5HTEU6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhB
dHRyaWJJUG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmJlZ2luUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmVuZFF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRRdWVyeU9iamVjdHVpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1RyYW5zZm9ybUZlZWRiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kVHJhbnNmb3Jt
RmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJl
Z2luVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRC
dWZmZXJCYXNlKToKKworICAgICAgICBBZGQgbWlzc2luZyB1bnJlbGF0ZWQgR3JhcGhpY3NDb250
ZXh0R0wgc3R1YnMgZm9yIEFOR0xFIGJ1aWxkczoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJUG9pbnRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtQmxvY2tCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmVnaW5RdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZW5kUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWl2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlVHJhbnNmb3Jt
RmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omlz
VHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6YmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRhdGVG
cmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjb3B5VGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlM0QpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFnRGF0
YUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMXVpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMnVpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtM3VpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtNHVpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMXVpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm0zdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtNHVpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0
eDNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4
QXR0cmliSTRpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6ZHJhd1JhbmdlRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcml2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJmaSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlUXVlcnkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzUXVlcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTYW1wbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVTYW1wbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1NhbXBsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRTYW1wbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzYW1wbGVyUGFyYW1ldGVy
aSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2FtcGxlclBh
cmFtZXRlcmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmlzU3luYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZGVsZXRlU3luYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OndhaXRTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kQnVmZmVyUmFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1J
bmRpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJ
bWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhT
dWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
b21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMpOgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRRdWVyeU9iamVjdHVpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnbEdldFF1ZXJ5T2JqZWN0dWl2KTogRGVsZXRl
ZC4KKwogMjAyMC0wMS0xMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIGVkaXRpbmcvdGV4dC1pdGVyYXRvci9maW5kU3RyaW5n
Lmh0bWwgZmFpbHMgb24gaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnRXZWJHTC5jcHAKaW5kZXggNzhhNGFlNjJlNzQ3YWM3MTY2ODEzMzNiNGU0NDdmZmE1
YmU2MWQxMC4uMTg0YjMzMDdhMWM2MDdkZjU0YjdlMDBkYjllN2E4ZTU1MDE0MGY5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcApAQCAt
NTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIkpTV2ViR0xQcm9ncmFtLmgiCiAjaW5jbHVkZSAiSlNX
ZWJHTFJlbmRlcmJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTV2ViR0xUZXh0dXJlLmgiCisjaW5jbHVk
ZSAiSlNXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgiCiAjaW5jbHVkZSAiSlNXZWJHTFZlcnRleEFy
cmF5T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgpAQCAtMTM4LDYgKzEzOSw5IEBA
IEpTVmFsdWUgY29udmVydFRvSlNWYWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNET01HbG9iYWxPYmplY3QmCiAgICAgICAgICwKICAgICAgICAgWyZdIChjb25zdCBS
ZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4mIGFycmF5KSB7CiAgICAgICAgICAgICByZXR1
cm4gdG9KUygmbGV4aWNhbEdsb2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCwgYXJyYXkuZ2V0KCkp
OworICAgICAgICB9LAorICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxXZWJHTFRyYW5zZm9ybUZl
ZWRiYWNrPiYgdHJhbnNmb3JtRmVlZGJhY2spIHsKKyAgICAgICAgICAgIHJldHVybiB0b0pTKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCB0cmFuc2Zvcm1GZWVkYmFjay5nZXQo
KSk7CiAgICAgICAgIH0KICNlbmRpZgogICAgICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGJhZTliNGIxZjQ5
M2M4NTRkMjUxN2ZhYmZhM2FlOTVhMjIzMzNmYmYuLjI2NTE0ZTIwOGY1Mjk0YjJjMzU2MjMxM2Rl
ODY1YmVkOTBkZmJlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRl
ICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5o
IgorI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2lu
Y2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5o
IgpAQCAtOTUsNiArOTYsMTYgQEAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dChDYW52YXNCYXNlJiBjYW52YXMsIFJlZjxHcmFwaGljc0MKIHsKICAgICBpbml0
aWFsaXplU2hhZGVyRXh0ZW5zaW9ucygpOwogICAgIGluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVj
dHMoKTsKKyAgICBpbml0aWFsaXplVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDYWNoZSgpOworfQor
CitXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp+V2ViR0wyUmVuZGVyaW5nQ29udGV4dCgpCit7Cisg
ICAgLy8gUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIFdlYkdMT2JqZWN0cyBzbyBpZiB0aGV5IGFy
ZSB0aGUgbGFzdCByZWZlcmVuY2UKKyAgICAvLyB0aGV5IHdpbGwgYmUgZnJlZWQgYmVmb3JlIHRo
ZSBsYXN0IGNvbnRleHQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBjb250ZXh0IGdyb3VwLgorICAgIG1f
Ym91bmRUcmFuc2Zvcm1GZWVkYmFjayA9IG51bGxwdHI7CisgICAgbV9ib3VuZFRyYW5zZm9ybUZl
ZWRiYWNrQnVmZmVycy5jbGVhcigpOworICAgIG1fYWN0aXZlUXVlcmllcy5jbGVhcigpOwogfQog
CiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVj
dHMoKQpAQCAtMTE4LDYgKzEyOSwxNCBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6Omlu
aXRpYWxpemVTaGFkZXJFeHRlbnNpb25zKCkKICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZnJhZ19kZXB0aCIpOwogfQogCit2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlckNhY2hlKCkK
K3sKKyAgICBpbnQgbWF4VHJhbnNmb3JtRmVlZGJhY2tBdHRyaWJzID0gZ2V0SW50UGFyYW1ldGVy
KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJ
QlMpOworICAgIEFTU0VSVChtYXhUcmFuc2Zvcm1GZWVkYmFja0F0dHJpYnMgPj0gNCk7CisKKyAg
ICBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzLnJlc2l6ZShtYXhUcmFuc2Zvcm1GZWVk
YmFja0F0dHJpYnMpOworfQorCiBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVkPiBhcnJh
eUJ1ZmZlclZpZXdFbGVtZW50U2l6ZShjb25zdCBBcnJheUJ1ZmZlclZpZXcmIGRhdGEpCiB7CiAg
ICAgc3dpdGNoIChkYXRhLmdldFR5cGUoKSkgewpAQCAtMzA3LDcgKzMyNiw5IEBAIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxv
bmcgbG9uZyBzcmNCeXRlCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gRklYTUU6IENvYWxl
c2NlIG11bHRpcGxlIGdldEJ1ZmZlclN1YkRhdGEoKSBjYWxscyB0byB1c2UgYSBzaW5nbGUgbWFw
KCkgY2FsbAogICAgIHZvaWQqIHB0ciA9IG1fY29udGV4dC0+bWFwQnVmZmVyUmFuZ2UodGFyZ2V0
LCBjaGVja2VkU3JjQnl0ZU9mZnNldC51bnNhZmVHZXQoKSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVp
cHRyPihjaGVja2VkQ29weUxlbmd0aFB0ci51bnNhZmVHZXQoKSAqIGNoZWNrZWRFbGVtZW50U2l6
ZS51bnNhZmVHZXQoKSksIEdyYXBoaWNzQ29udGV4dEdMOjpNQVBfUkVBRF9CSVQpOwotICAgIG1l
bWNweShzdGF0aWNfY2FzdDxjaGFyKj4oZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRh
LT5ieXRlT2Zmc2V0KCkgKyBkc3RPZmZzZXQgKiBlbGVtZW50U2l6ZSwgcHRyLCBjb3B5TGVuZ3Ro
ICogZWxlbWVudFNpemUpOworICAgIGlmIChwdHIpCisgICAgICAgIG1lbWNweShzdGF0aWNfY2Fz
dDxjaGFyKj4oZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5ieXRlT2Zmc2V0KCkg
KyBkc3RPZmZzZXQgKiBlbGVtZW50U2l6ZSwgcHRyLCBjb3B5TGVuZ3RoICogZWxlbWVudFNpemUp
OworCiAgICAgaWYgKCFtX2NvbnRleHQtPnVubWFwQnVmZmVyKHRhcmdldCkpCiAgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImdl
dEJ1ZmZlclN1YkRhdGEiLCAiRmFpbGVkIHdoaWxlIHVubWFwcGluZyBidWZmZXIiKTsKICNlbmRp
ZgpAQCAtODYyLDkgKzg4MywxMiBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRl
eEF0dHJpYkk0dWl2KEdDR0x1aW50LCBVaW50MzJMaXN0JiYpCiAgICAgTE9HKFdlYkdMLCAiW1sg
Tk9UIElNUExFTUVOVEVEIF1dIHZlcnRleEF0dHJpYkk0dWl2KCkiKTsKIH0KIAotdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCwgR0NHTGlu
dCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTGludDY0KQordm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXpl
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50NjQgb2Zmc2V0KQogewot
ICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSB2ZXJ0ZXhBdHRyaWJJUG9pbnRl
cigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlw
ZSwgc3RyaWRlLCBvZmZzZXQpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNs
ZWFyKEdDR0xiaXRmaWVsZCBtYXNrKQpAQCAtMTA0Miw4ICsxMDY2LDEyIEBAIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJmaShHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQg
ZHJhd2J1ZmZlciwKIAogUmVmUHRyPFdlYkdMUXVlcnk+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmNyZWF0ZVF1ZXJ5KCkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0g
Y3JlYXRlUXVlcnkoKSIpOwotICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBxdWVy
eSA9IFdlYkdMUXVlcnk6OmNyZWF0ZSgqdGhpcyk7CisgICAgYWRkU2hhcmVkT2JqZWN0KHF1ZXJ5
LmdldCgpKTsKKyAgICByZXR1cm4gcXVlcnk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6ZGVsZXRlUXVlcnkoV2ViR0xRdWVyeSopCkBAIC0xMDU3LDE0ICsxMDg1LDQ1IEBAIEdD
R0xib29sZWFuIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmlzUXVlcnkoV2ViR0xRdWVyeSopCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2lu
UXVlcnkoR0NHTGVudW0sIFdlYkdMUXVlcnkmKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpiZWdpblF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgV2ViR0xRdWVyeSYgcXVlcnkpCiB7Ci0gICAg
TE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGJlZ2luUXVlcnkoKSIpOworICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJ
WE1FOiBBZGQgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGJhZCBjYWNoaW5nLgorCisgICAgLy8gT25s
eSBvbmUgcXVlcnkgb2JqZWN0IGNhbiBiZSBhY3RpdmUgcGVyIHRhcmdldC4KKyAgICBhdXRvIHRh
cmdldEtleSA9ICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkFOWV9TQU1QTEVTX1BBU1NF
RF9DT05TRVJWQVRJVkUpID8gR3JhcGhpY3NDb250ZXh0R0w6OkFOWV9TQU1QTEVTX1BBU1NFRCA6
IHRhcmdldDsKKworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9hY3RpdmVRdWVyaWVzLmFkZCh0YXJn
ZXRLZXksIG1ha2VSZWZQdHIoJnF1ZXJ5KSk7CisKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0Vu
dHJ5KSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgImJlZ2luUXVlcnkiLCAiUXVlcnkgb2JqZWN0IG9mIHRhcmdldCBpcyBh
bHJlYWR5IGFjdGl2ZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb250ZXh0
LT5iZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkub2JqZWN0KCkpOwogfQogCi12b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmVuZFF1ZXJ5KEdDR0xlbnVtKQordm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sg
Tk9UIElNUExFTUVOVEVEIF1dIGVuZFF1ZXJ5KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gdGFyZ2V0S2V5ID0gKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6QU5Z
X1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRSkgPyBHcmFwaGljc0NvbnRleHRHTDo6QU5ZX1NB
TVBMRVNfUEFTU0VEIDogdGFyZ2V0OworCisgICAgYXV0byBxdWVyeSA9IG1fYWN0aXZlUXVlcmll
cy50YWtlKHRhcmdldEtleSk7CisgICAgaWYgKCFxdWVyeSkgeworICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJlbmRRdWVyeSIs
ICJRdWVyeSBvYmplY3Qgb2YgdGFyZ2V0IGlzIG5vdCBhY3RpdmUiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fY29udGV4dC0+ZW5kUXVlcnkodGFyZ2V0KTsKKworICAgIC8vIEEg
cXVlcnkncyByZXN1bHQgbXVzdCBub3QgYmUgbWFkZSBhdmFpbGFibGUgdW50aWwgY29udHJvbCBo
YXMgcmV0dXJuZWQgdG8gdGhlIHVzZXIgYWdlbnQncyBtYWluIGxvb3AuCisgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5ldmVudExvb3AoKS5xdWV1ZU1pY3JvdGFzayhbcXVlcnldIHsKKyAg
ICAgICAgcXVlcnktPm1ha2VSZXN1bHRBdmFpbGFibGUoKTsKKyAgICB9KTsKIH0KIAogUmVmUHRy
PFdlYkdMUXVlcnk+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFF1ZXJ5KEdDR0xlbnVtLCBH
Q0dMZW51bSkKQEAgLTEwNzMsMTAgKzExMzIsMjUgQEAgUmVmUHRyPFdlYkdMUXVlcnk+IFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmdldFF1ZXJ5KEdDR0xlbnVtLCBHQ0dMZW51bSkKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVl
cnlQYXJhbWV0ZXIoV2ViR0xRdWVyeSYsIEdDR0xlbnVtKQorV2ViR0xBbnkgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIoV2ViR0xRdWVyeSYgcXVlcnksIEdDR0xlbnVt
IHBuYW1lKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSBnZXRRdWVy
eVBhcmFtZXRlcikiKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN3aXRjaCAocG5h
bWUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpRVUVSWV9SRVNVTFQ6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6UVVFUllfUkVTVUxUX0FWQUlMQUJMRToKKyAgICAgICAgaWYg
KCFxdWVyeS5pc1Jlc3VsdEF2YWlsYWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRRdWVyeVBhcmFtZXRlciIsICJJbnZhbGlk
IHBuYW1lIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHVuc2lnbmVk
IHJlc3VsdCA9IDA7CisgICAgbV9jb250ZXh0LT5nZXRRdWVyeU9iamVjdHVpdihxdWVyeS5vYmpl
Y3QoKSwgcG5hbWUsICZyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFJlZlB0cjxX
ZWJHTFNhbXBsZXI+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVNhbXBsZXIoKQpAQCAt
MTE1Nyw0NSArMTIzMSw4OCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRT
eW5jUGFyYW1ldGVyKFdlYkdMU3luYyYsIEdDR0xlbnVtKQogCiBSZWZQdHI8V2ViR0xUcmFuc2Zv
cm1GZWVkYmFjaz4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJh
Y2soKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSBjcmVhdGVUcmFu
c2Zvcm1GZWVkYmFjaygpIik7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHRy
YW5zZm9ybUZlZWRiYWNrID0gV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6Y3JlYXRlKCp0aGlzKTsK
KyAgICBhZGRTaGFyZWRPYmplY3QodHJhbnNmb3JtRmVlZGJhY2suZ2V0KCkpOworICAgIHJldHVy
biB0cmFuc2Zvcm1GZWVkYmFjazsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpk
ZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKikKK3ZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xUcmFuc2Zv
cm1GZWVkYmFjayogZmVlZGJhY2tPYmplY3QpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElN
UExFTUVOVEVEIF1dIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKCkiKTsKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9ib3VuZFRy
YW5zZm9ybUZlZWRiYWNrID09IGZlZWRiYWNrT2JqZWN0KQorICAgICAgICBtX2JvdW5kVHJhbnNm
b3JtRmVlZGJhY2sgPSBudWxscHRyOworCisgICAgZGVsZXRlT2JqZWN0KGZlZWRiYWNrT2JqZWN0
KTsKIH0KIAotR0NHTGJvb2xlYW4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNUcmFuc2Zvcm1G
ZWVkYmFjayhXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKikKK0dDR0xib29sZWFuIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmlzVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xUcmFuc2Zvcm1GZWVkYmFjayog
ZmVlZGJhY2tPYmplY3QpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1d
IGlzVHJhbnNmb3JtRmVlZGJhY2soKSIpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFmZWVkYmFja09iamVjdCB8fCBmZWVkYmFja09iamVj
dC0+aXNEZWxldGVkKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImlzVHJhbnNmb3JtRmVlZGJh
Y2siLCBmZWVkYmFja09iamVjdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biBtX2NvbnRleHQtPmlzVHJhbnNmb3JtRmVlZGJhY2soZmVlZGJhY2tPYmplY3QtPm9iamVjdCgp
KTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kVHJhbnNmb3JtRmVlZGJh
Y2soR0NHTGVudW0sIFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqKQordm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gdGFyZ2V0LCBXZWJHTFRy
YW5zZm9ybUZlZWRiYWNrKiBmZWVkYmFja09iamVjdCkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBO
T1QgSU1QTEVNRU5URUQgXV0gYmluZFRyYW5zZm9ybUZlZWRiYWNrKCkiKTsKKyAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZmVlZGJh
Y2tPYmplY3QpIHsKKyAgICAgICAgaWYgKGZlZWRiYWNrT2JqZWN0LT5pc0RlbGV0ZWQoKSkgewor
ICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURf
T1BFUkFUSU9OLCAiYmluZFRyYW5zZm9ybUZlZWRiYWNrIiwgImNhbm5vdCBiaW5kIGEgZGVsZXRl
ZCBUcmFuc2Zvcm0gRmVlZGJhY2sgb2JqZWN0Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIXZhbGlkYXRlV2ViR0xPYmplY3QoImlzVHJhbnNmb3JtRmVl
ZGJhY2siLCBmZWVkYmFja09iamVjdCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbV9jb250ZXh0LT5iaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFyZ2V0LCBvYmplY3RPclplcm8o
ZmVlZGJhY2tPYmplY3QpKTsKKyAgICBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2sgPSBmZWVkYmFj
a09iamVjdDsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblRyYW5zZm9y
bUZlZWRiYWNrKEdDR0xlbnVtKQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblRy
YW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHByaW1pdGl2ZU1vZGUpCiB7Ci0gICAgTE9HKFdlYkdM
LCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGJlZ2luVHJhbnNmb3JtRmVlZGJhY2soKSIpOworICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
Y29udGV4dC0+YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKTsKIH0KIAogdm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRUcmFuc2Zvcm1GZWVkYmFjaygpCiB7Ci0gICAg
TE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGVuZFRyYW5zZm9ybUZlZWRiYWNrKCki
KTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2NvbnRleHQtPmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CiB9CiAKLXZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhXZWJHTFByb2dyYW0m
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEdDR0xlbnVtKQordm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZmZXJNb2RlKQogewot
ICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSB0cmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzKCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8IHZhcnlpbmdz
LmlzRW1wdHkoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgidHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5ncyIsICZwcm9ncmFtKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZXh0LT50cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0ub2JqZWN0KCksIHZhcnlpbmdzLCBidWZmZXJN
b2RlKTsKIH0KIAotUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFdlYkdMUHJvZ3JhbSYsIEdDR0x1aW50KQor
UmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0VHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5nKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgp
CiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGdldFRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZygpIik7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiZ2V0VHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nIiwgJnByb2dyYW0pKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IEdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGluZm87CisgICAgbV9jb250ZXh0LT5nZXRU
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3JhbS5vYmplY3QoKSwgaW5kZXgsIGluZm8pOwor
CisgICAgaWYgKCFpbmZvLm5hbWUgfHwgIWluZm8udHlwZSB8fCAhaW5mby5zaXplKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBXZWJHTEFjdGl2ZUluZm86OmNyZWF0ZShp
bmZvLm5hbWUsIGluZm8udHlwZSwgaW5mby5zaXplKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkKQEAgLTEyMDgsOSArMTMyNSwzMCBA
QCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkK
ICAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gcmVzdW1lVHJhbnNmb3JtRmVl
ZGJhY2soKSIpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRCdWZmZXJC
YXNlKEdDR0xlbnVtLCBHQ0dMdWludCwgV2ViR0xCdWZmZXIqKQordm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4
LCBXZWJHTEJ1ZmZlciogYnVmZmVyKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1F
TlRFRCBdXSBiaW5kQnVmZmVyQmFzZSgpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3dpdGNoICh0YXJnZXQpIHsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSOgorICAgICAgICBp
ZiAoaW5kZXggPj0gbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycy5zaXplKCkpIHsKKyAg
ICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZB
TFVFLCAiYmluZEJ1ZmZlckJhc2UiLCAiaW5kZXggb3V0IG9mIHJhbmdlIik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VU5JRk9STV9CVUZGRVI6CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJiaW5kQnVmZmVyQmFzZSIsICJ0YXJnZXQgbm90
IHlldCBzdXBwb3J0ZWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJiaW5k
QnVmZmVyQmFzZSIsICJpbnZhbGlkIHRhcmdldCIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCF2YWxpZGF0ZUFuZENhY2hlQnVmZmVyQmluZGluZygiYmluZEJ1ZmZlckJhc2Ui
LCB0YXJnZXQsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGV4dC0+Ymlu
ZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgb2JqZWN0T3JaZXJvKGJ1ZmZlcikpOwogfQogCiB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSwgR0NH
THVpbnQsIFdlYkdMQnVmZmVyKiwgR0NHTGludDY0LCBHQ0dMaW50NjQpCkBAIC0xMjE4LDEwICsx
MzU2LDE4IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlclJhbmdlKEdD
R0xlbnVtLCBHQ0dMdWludCwgV2ViR0xCdWZmZXIqLCBHCiAgICAgTE9HKFdlYkdMLCAiW1sgTk9U
IElNUExFTUVOVEVEIF1dIGJpbmRCdWZmZXJSYW5nZSgpIik7CiB9CiAKLVdlYkdMQW55IFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMdWludCkKK1dlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJh
bWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCkKIHsKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIHN3aXRj
aCAodGFyZ2V0KSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNGT1JNX0ZFRURC
QUNLX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICBpZiAoaW5kZXggPj0gbV9ib3VuZFRyYW5zZm9y
bUZlZWRiYWNrQnVmZmVycy5zaXplKCkpIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAiZ2V0SW5kZXhlZFBhcmFtZXRlciIs
ICJpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzW2lu
ZGV4XTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVG
RkVSX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNGT1JNX0ZFRURCQUNL
X0JVRkZFUl9TVEFSVDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JVRkZF
Ul9CSU5ESU5HOgpAQCAtMjA3NCw2ICsyMjIwLDEwIEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKICAgICAgICAgcmV0dXJuIG1f
YmFja0RyYXdCdWZmZXI7IC8vIGVtdWxhdGVkIGJhY2tidWZmZXIKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpSRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkc6CiAgICAgICAgIHJldHVybiBtX3Jl
YWRGcmFtZWJ1ZmZlckJpbmRpbmc7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNG
T1JNX0ZFRURCQUNLX0JJTkRJTkc6CisgICAgICAgIHJldHVybiBtX2JvdW5kVHJhbnNmb3JtRmVl
ZGJhY2s7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUl9CSU5ESU5HOgorICAgICAgICByZXR1cm4gbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrQnVm
ZmVyOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPUFlfUkVBRF9CVUZGRVI6CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09QWV9XUklURV9CVUZGRVI6CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6UElYRUxfUEFDS19CVUZGRVJfQklORElORzogICAKQEAgLTIwODIsNyAr
MjIzMiw2IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcihH
Q0dMZW51bSBwbmFtZSkKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTQU1QTEVSX0JJTkRJ
Tkc6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZ
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfQklORElOR18zRDoKLSAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkc6
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CVUZGRVJfQklORElORzoKICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwg
ImdldFBhcmFtZXRlciIsICJwYXJhbWV0ZXIgbmFtZSBub3QgeWV0IHN1cHBvcnRlZCIpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIzODEsNiArMjUzMCwxNyBAQCB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaQogICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSByZWFkUGl4
ZWxzKCkiKTsKIH0KIAordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmNhY2hlRGVsZXRl
ZEJ1ZmZlcihXZWJHTEJ1ZmZlciogYnVmZmVyKQoreworICAgIEFTU0VSVChidWZmZXIpOworCisg
ICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5jYWNoZURlbGV0ZWRCdWZmZXIoYnVmZmVy
KTsKKworICAgIHNpemVfdCBpbmRleCA9IG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMu
ZmluZChidWZmZXIpOworICAgIGlmIChpbmRleCA8IG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFja0J1
ZmZlcnMuc2l6ZSgpKQorICAgICAgICBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzW2lu
ZGV4XSA9IG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuaAppbmRleCAyMzkxNzJkOTU0ZDZlMmEyYmNhZjA3MmEyMWEyZGU2
Mjg4N2YwMWY0Li43NzBmMzI1ZDRlYThjNmU2Mzc2Mzk1MDhhNTAzODhlYzgzNmQxN2NkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5oCkBAIC00NCw2ICs0NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShDYW52YXNCYXNlJiwgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ+IGNyZWF0ZShDYW52YXNCYXNlJiwgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMPiYmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOwogCisgICAgfldlYkdMMlJlbmRl
cmluZ0NvbnRleHQoKTsKKwogICAgIC8vIEJ1ZmZlciBvYmplY3RzCiAgICAgdXNpbmcgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YTsKICAgICB1c2luZyBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpidWZmZXJTdWJEYXRhOwpAQCAtMjU4LDggKzI2MCwxNyBAQCBwcml2YXRl
OgogICAgIEdDR0xlbnVtIGJhc2VJbnRlcm5hbEZvcm1hdEZyb21JbnRlcm5hbEZvcm1hdChHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCk7CiAgICAgYm9vbCBpc0ludGVnZXJGb3JtYXQoR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQpOwogICAgIHZvaWQgaW5pdGlhbGl6ZVNoYWRlckV4dGVuc2lvbnMoKTsK
KyAgICB2b2lkIGluaXRpYWxpemVUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlckNhY2hlKCk7CiAKICAg
ICBib29sIHZhbGlkYXRlVGV4U3RvcmFnZUZ1bmNQYXJhbWV0ZXJzKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKTsKKworICAgIHZv
aWQgdW5jYWNoZURlbGV0ZWRCdWZmZXIoV2ViR0xCdWZmZXIqKSBmaW5hbDsKKworICAgIFJlZlB0
cjxXZWJHTFRyYW5zZm9ybUZlZWRiYWNrPiBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2s7CisgICAg
VmVjdG9yPFJlZlB0cjxXZWJHTEJ1ZmZlcj4+IG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZl
cnM7CisKKyAgICAvLyBRdWVyaWVzCisgICAgSGFzaE1hcDxHQ0dMZW51bSwgUmVmUHRyPFdlYkdM
UXVlcnk+PiBtX2FjdGl2ZVF1ZXJpZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFueS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xBbnkuaAppbmRleCBjZjUzZTFlM2U5ZDRmMDUyOGVj
MzJjNjA3NjAzNTVjMTY3MWQ3NDZiLi4zOTU3Yjg0N2YwMWZlMmY5N2UwNmRjMzYwMWFiZDUxYTY3
OGE5YmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFueS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQW55LmgKQEAgLTQ1LDYgKzQ1
LDcgQEAgY2xhc3MgV2ViR0xGcmFtZWJ1ZmZlcjsKIGNsYXNzIFdlYkdMUHJvZ3JhbTsKIGNsYXNz
IFdlYkdMUmVuZGVyYnVmZmVyOwogY2xhc3MgV2ViR0xUZXh0dXJlOworY2xhc3MgV2ViR0xUcmFu
c2Zvcm1GZWVkYmFjazsKIGNsYXNzIFdlYkdMVmVydGV4QXJyYXlPYmplY3Q7CiBjbGFzcyBXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTOwogCkBAIC03MCw2ICs3MSw3IEBAIHVzaW5nIFdlYkdMQW55
ID0gVmFyaWFudDwKICAgICBSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4KICNpZiBF
TkFCTEUoV0VCR0wyKQogICAgICwgUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3Q+CisgICAg
LCBSZWZQdHI8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4KICNlbmRpZgogPjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCmluZGV4IDVlOTE1MjZhOWJiMWZmYWNh
NDA3MTVhNzZkZjc3NWYwNTlhNDJjN2UuLjcwYzA2Zjk4NTRmNzg1ZTk4OWU0NWI5NzRjNGM3NjVj
N2UzMWJjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAK
QEAgLTI1MywyNSArMjUzLDEzIEBAIHZvaWQgV2ViR0xCdWZmZXI6OnNldENhY2hlZE1heEluZGV4
KEdDR0xlbnVtIHR5cGUsIHVuc2lnbmVkIHZhbHVlKQogICAgIG1fbmV4dEF2YWlsYWJsZUNhY2hl
RW50cnkgPSAobV9uZXh0QXZhaWxhYmxlQ2FjaGVFbnRyeSArIDEpICUgV1RGX0FSUkFZX0xFTkdU
SChtX21heEluZGV4Q2FjaGUpOwogfQogCi12b2lkIFdlYkdMQnVmZmVyOjpzZXRUYXJnZXQoR0NH
TGVudW0gdGFyZ2V0LCBib29sIGZvcldlYkdMMikKK3ZvaWQgV2ViR0xCdWZmZXI6OnNldFRhcmdl
dChHQ0dMZW51bSB0YXJnZXQpCiB7Ci0gICAgLy8gSW4gV2ViR0wsIGEgYnVmZmVyIGlzIGJvdW5k
IHRvIG9uZSB0YXJnZXQgaW4gaXRzIGxpZmV0aW1lCi0gICAgaWYgKG1fdGFyZ2V0KQotICAgICAg
ICByZXR1cm47Ci0gICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVG
RkVSIHx8IHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIp
Ci0gICAgICAgIG1fdGFyZ2V0ID0gdGFyZ2V0OwotICAgIGVsc2UgaWYgKGZvcldlYkdMMikgewot
I2lmIEVOQUJMRShXRUJHTDIpCi0gICAgICAgIHN3aXRjaCAodGFyZ2V0KSB7Ci0gICAgICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPUFlfUkVBRF9CVUZGRVI6Ci0gICAgICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPUFlfV1JJVEVfQlVGRkVSOgotICAgICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpQSVhFTF9QQUNLX0JVRkZFUjoKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6UElYRUxfVU5QQUNLX0JVRkZFUjoKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUjoKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6VU5JRk9STV9CVUZGRVI6Ci0gICAgICAgICAgICBtX3RhcmdldCA9IHRhcmdldDsKLSAg
ICAgICAgfQotI2VuZGlmCisgICAgbV90YXJnZXQgPSB0YXJnZXQ7CisKKyAgICBpZiAodGFyZ2V0
ID09IEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIgfHwgdGFyZ2V0ID09IEdyYXBoaWNz
Q29udGV4dEdMOjpFTEVNRU5UX0FSUkFZX0JVRkZFUikgeworICAgICAgICBBU1NFUlQoIW1fYXJy
YXlCdWZmZXJPckVsZW1lbnRBcnJheUJ1ZmZlciB8fCB0YXJnZXQgPT0gbV9hcnJheUJ1ZmZlck9y
RWxlbWVudEFycmF5QnVmZmVyKTsKKyAgICAgICAgbV9hcnJheUJ1ZmZlck9yRWxlbWVudEFycmF5
QnVmZmVyID0gdGFyZ2V0OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQnVmZmVyLmgKaW5kZXggOWFmZDg1NzBjYjNkZGY3NmFiMTg1ZWQyNGZlNjYzNTk3MjM0OWNm
NS4uNzY3ZTRiYzQyZDA2OTQ2NWRiNjdhMzA0NTE1ZTIyNGU4YTBjNTY2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCkBAIC02MCw3ICs2MCw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldENhY2hlZE1heEluZGV4KEdDR0xlbnVtIHR5cGUsIHVuc2lnbmVkIHZhbHVl
KTsKIAogICAgIEdDR0xlbnVtIGdldFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0OyB9
Ci0gICAgdm9pZCBzZXRUYXJnZXQoR0NHTGVudW0sIGJvb2wgZm9yV2ViR0wyKTsKKyAgICB2b2lk
IHNldFRhcmdldChHQ0dMZW51bSk7CisKKyAgICBHQ0dMZW51bSBhcnJheUJ1ZmZlck9yRWxlbWVu
dEFycmF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheUJ1ZmZlck9yRWxlbWVudEFycmF5
QnVmZmVyOyB9CiAKICAgICBib29sIGhhc0V2ZXJCZWVuQm91bmQoKSBjb25zdCB7IHJldHVybiBv
YmplY3QoKSAmJiBtX3RhcmdldDsgfQogCkBAIC03NSw2ICs3Nyw4IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fZWxlbWVudEFycmF5QnVmZmVyOwogICAgIEdDR0xz
aXplaXB0ciBtX2J5dGVMZW5ndGggeyAwIH07CiAKKyAgICBHQ0dMZW51bSBtX2FycmF5QnVmZmVy
T3JFbGVtZW50QXJyYXlCdWZmZXIgeyAwIH07CisKICAgICAvLyBPcHRpbWl6YXRpb24gZm9yIGlu
ZGV4IHZhbGlkYXRpb24uIEZvciBlYWNoIHR5cGUgb2YgaW5kZXgKICAgICAvLyAoaS5lLiwgVU5T
SUdORURfU0hPUlQpLCBjYWNoZSB0aGUgbWF4aW11bSBpbmRleCBpbiB0aGUKICAgICAvLyBlbnRp
cmUgYnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xR
dWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcAppbmRl
eCAwMWRkZTdmN2Y0ZWMyZTVhNTY0YTJiNjhkNTkxYmY2NzQ3ODhmMGQyLi40ZjI0MTUyYmY3MjI4
OTc0YjcwNGExZTA3MDUzZTUwNjM3NDMwMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFF1ZXJ5LmNwcApAQCAtNDYsNyArNDYsNyBAQCBXZWJHTFF1ZXJ5Ojp+V2ViR0xRdWVy
eSgpCiBXZWJHTFF1ZXJ5OjpXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0
eCkKICAgICA6IFdlYkdMU2hhcmVkT2JqZWN0KGN0eCkKIHsKLSAgICAvLyBGSVhNRTogQ2FsbCBj
cmVhdGVRdWVyeSBmcm9tIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgorICAgIHNldE9iamVjdChj
dHguZ3JhcGhpY3NDb250ZXh0R0woKS0+Y3JlYXRlUXVlcnkoKSk7CiB9CiAKIHZvaWQgV2ViR0xR
dWVyeTo6ZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dDNk
LCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UXVlcnkuaAppbmRleCA1NTZkMzk5ZGUzY2EwZWUwOTQ3MjYwM2MwODk5ODczMGNmNTU3ZjQ1Li43
NjE4OWUxYzRiMDZlMjQxODY2ZmE1ZTYwNzU4YzllMmNlYzVkYzYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oCkBAIC0zNiw5ICszNiwxNiBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxXZWJHTFF1ZXJ5PiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYp
OwogICAgIHZpcnR1YWwgfldlYkdMUXVlcnkoKTsKIAorICAgIGJvb2wgaXNSZXN1bHRBdmFpbGFi
bGUoKSBjb25zdCB7IHJldHVybiBtX2lzUmVzdWx0QXZhaWxhYmxlOyB9CisKKyAgICB2b2lkIG1h
a2VSZXN1bHRBdmFpbGFibGUoKSB7IG1faXNSZXN1bHRBdmFpbGFibGUgPSB0cnVlOyB9CisKIHBy
b3RlY3RlZDoKICAgICBleHBsaWNpdCBXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmKTsKICAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
LCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBib29sIG1faXNS
ZXN1bHRBdmFpbGFibGUgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcAppbmRleCAxN2VhYTVkMTViNzBjZTE4YTBhZjU2ZDFjYmYyYjIyOTZiOTJi
NjUyLi42N2NhNTNjNDdlZWEwMDhiZWEzZjYxZGY5NmU3Mzg5Y2FlY2E2ZGVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcApAQCAtMTE4OCwxNyArMTE4OCwyNiBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmNoZWNrT2JqZWN0VG9CZUJvdW5kKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgVwog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJp
bmRCdWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZlciogYnVmZmVyKQorYm9vbCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUFuZENhY2hlQnVmZmVyQmluZGluZyhjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCwgV2ViR0xCdWZmZXIqIGJ1ZmZl
cikKIHsKICAgICBib29sIGRlbGV0ZWQ7Ci0gICAgaWYgKCFjaGVja09iamVjdFRvQmVCb3VuZCgi
YmluZEJ1ZmZlciIsIGJ1ZmZlciwgZGVsZXRlZCkpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAo
IWNoZWNrT2JqZWN0VG9CZUJvdW5kKGZ1bmN0aW9uTmFtZSwgYnVmZmVyLCBkZWxldGVkKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChkZWxldGVkKQogICAgICAgICBidWZmZXIgPSBu
dWxscHRyOwotICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5nZXRUYXJnZXQoKSAmJiBidWZmZXIt
PmdldFRhcmdldCgpICE9IHRhcmdldCkgewotICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJiaW5kQnVmZmVyIiwgImJ1ZmZlcnMg
Y2FuIG5vdCBiZSB1c2VkIHdpdGggbXVsdGlwbGUgdGFyZ2V0cyIpOwotICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoYnVmZmVyKSB7CisgICAgICAgIC8vIEluIFdlYkdMLCBhIGJ1ZmZlciBtYXkg
b25seSBiZSBib3VuZCB0byBvbmUgb2YgdGhlIEFSUkFZX0JVRkZFUiBvciBFTEVNRU5UX0FSUkFZ
X0JVRkZFUiB0YXJnZXQgaW4gaXRzIGxpZmV0aW1lLgorICAgICAgICBpZiAodGFyZ2V0ID09IEdy
YXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIgfHwgdGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4
dEdMOjpFTEVNRU5UX0FSUkFZX0JVRkZFUikgeworICAgICAgICAgICAgaWYgKGJ1ZmZlci0+YXJy
YXlCdWZmZXJPckVsZW1lbnRBcnJheUJ1ZmZlcigpICYmIHRhcmdldCAhPSBidWZmZXItPmFycmF5
QnVmZmVyT3JFbGVtZW50QXJyYXlCdWZmZXIoKSkgeworICAgICAgICAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25O
YW1lLCAiYnVmZmVycyBjYW4gb25seSBiZSBib3VuZCB0byBvbmUgb2YgQVJSQVlfQlVGRkVSIG9y
IEVMRU1FTlRfQVJSQVlfQlVGRkVSIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgYnVmZmVyLT5zZXRUYXJnZXQodGFy
Z2V0KTsKICAgICB9CisKICAgICBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpBUlJB
WV9CVUZGRVIpCiAgICAgICAgIG1fYm91bmRBcnJheUJ1ZmZlciA9IGJ1ZmZlcjsKICAgICBlbHNl
IGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkVMRU1FTlRfQVJSQVlfQlVGRkVSKQpA
QCAtMTIzNSwxMyArMTI0NCwxOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJp
bmRCdWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZlciogYnVmZmVyKQogI2VuZGlmCiAg
ICAgICAgIGlmICghc3VjY2VzcykgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImJpbmRCdWZmZXIiLCAiaW52YWxpZCB0YXJn
ZXQiKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogICAgIH0KIAorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmJpbmRCdWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZlciog
YnVmZmVyKQoreworICAgIGlmICghdmFsaWRhdGVBbmRDYWNoZUJ1ZmZlckJpbmRpbmcoImJpbmRC
dWZmZXIiLCB0YXJnZXQsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fY29udGV4
dC0+YmluZEJ1ZmZlcih0YXJnZXQsIG9iamVjdE9yWmVybyhidWZmZXIpKTsKLSAgICBpZiAoYnVm
ZmVyKQotICAgICAgICBidWZmZXItPnNldFRhcmdldCh0YXJnZXQsIGlzV2ViR0wyKCkpOwogfQog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRGcmFtZWJ1ZmZlcihHQ0dMZW51
bSB0YXJnZXQsIFdlYkdMRnJhbWVidWZmZXIqIGJ1ZmZlcikKQEAgLTE3OTQsMTQgKzE4MDksMjkg
QEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVPYmplY3QoV2ViR0xPYmpl
Y3QqIG9iamVjdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2RlZmluZSBSRU1PVkVfQlVGRkVS
X0ZST01fQklORElORyhiaW5kaW5nKSBcCisgICAgaWYgKGJpbmRpbmcgPT0gYnVmZmVyKSBcCisg
ICAgICAgIGJpbmRpbmcgPSBudWxscHRyOworCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuY2FjaGVEZWxldGVkQnVmZmVyKFdlYkdMQnVmZmVyKiBidWZmZXIpCit7CisgICAgUkVN
T1ZFX0JVRkZFUl9GUk9NX0JJTkRJTkcobV9ib3VuZEFycmF5QnVmZmVyKTsKKyAgICBSRU1PVkVf
QlVGRkVSX0ZST01fQklORElORyhtX2JvdW5kQ29weVJlYWRCdWZmZXIpOworICAgIFJFTU9WRV9C
VUZGRVJfRlJPTV9CSU5ESU5HKG1fYm91bmRDb3B5V3JpdGVCdWZmZXIpOworICAgIFJFTU9WRV9C
VUZGRVJfRlJPTV9CSU5ESU5HKG1fYm91bmRQaXhlbFBhY2tCdWZmZXIpOworICAgIFJFTU9WRV9C
VUZGRVJfRlJPTV9CSU5ESU5HKG1fYm91bmRQaXhlbFVucGFja0J1ZmZlcik7CisgICAgUkVNT1ZF
X0JVRkZFUl9GUk9NX0JJTkRJTkcobV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKKyAg
ICBSRU1PVkVfQlVGRkVSX0ZST01fQklORElORyhtX2JvdW5kVW5pZm9ybUJ1ZmZlcik7CisKKyAg
ICBtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPnVuYmluZEJ1ZmZlcigqYnVmZmVyKTsKK30KKwog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVCdWZmZXIoV2ViR0xCdWZmZXIq
IGJ1ZmZlcikKIHsKICAgICBpZiAoIWRlbGV0ZU9iamVjdChidWZmZXIpKQogICAgICAgICByZXR1
cm47Ci0gICAgaWYgKG1fYm91bmRBcnJheUJ1ZmZlciA9PSBidWZmZXIpCi0gICAgICAgIG1fYm91
bmRBcnJheUJ1ZmZlciA9IG51bGxwdHI7CiAKLSAgICBtX2JvdW5kVmVydGV4QXJyYXlPYmplY3Qt
PnVuYmluZEJ1ZmZlcigqYnVmZmVyKTsKKyAgICB1bmNhY2hlRGVsZXRlZEJ1ZmZlcihidWZmZXIp
OwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRlbGV0ZUZyYW1lYnVmZmVy
KFdlYkdMRnJhbWVidWZmZXIqIGZyYW1lYnVmZmVyKQpAQCAtMjY1Miw2ICsyNjgyLDE5IEBAIFdl
YkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIoV2Vi
R0xQcm9ncmFtKiBwcm9ncmFtLCBHCiAjZW5kaWYgLy8gVVNFKEFOR0xFKQogICAgICAgICByZXR1
cm4gdmFsdWU7CiAgICAgZGVmYXVsdDoKKyNpZiBFTkFCTEUoV0VCR0wyKQorICAgICAgICBpZiAo
aXNXZWJHTDIoKSkgeworICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkgeworICAgICAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RFOgor
ICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNGT1JNX0ZFRURCQUNLX1ZB
UllJTkdTOgorICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6QUNUSVZFX1VOSUZP
Uk1fQkxPQ0tTOgorICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KG9iamVj
dE9yWmVybyhwcm9ncmFtKSwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShXRUJHTDIpCiAgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRQ
cm9ncmFtUGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUiKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDZhY2MxMTJjZjM2YWIyMzg3OWUx
ZjA0ODIwN2FiNWEyYzQ4YzFiOGUuLjMwYjQzY2FlNmRiZGJhNTUwY2M2NTgyM2I2OGRkYWJhZjYz
NjViNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTQ1Nyw2ICs0NTcsOCBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICBib29sIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0ZW5zaW9uTmFt
ZUxpdGVyYWwpOwogCisgICAgdmlydHVhbCB2b2lkIHVuY2FjaGVEZWxldGVkQnVmZmVyKFdlYkdM
QnVmZmVyKik7CisKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IG1fY29udGV4
dDsKICAgICBSZWZQdHI8V2ViR0xDb250ZXh0R3JvdXA+IG1fY29udGV4dEdyb3VwOwogCkBAIC04
MTYsNiArODE4LDggQEAgcHJvdGVjdGVkOgogICAgIC8vIFJldHVybiBmYWxzZSBpZiBjYWxsZXIg
c2hvdWxkIHJldHVybiB3aXRob3V0IGZ1cnRoZXIgcHJvY2Vzc2luZy4KICAgICBib29sIGNoZWNr
T2JqZWN0VG9CZUJvdW5kKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgV2ViR0xPYmplY3QqLCBi
b29sJiBkZWxldGVkKTsKIAorICAgIGJvb2wgdmFsaWRhdGVBbmRDYWNoZUJ1ZmZlckJpbmRpbmco
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKik7
CisKICAgICAvLyBIZWxwZXJzIGZvciBzaW11bGF0aW5nIHZlcnRleEF0dHJpYjAuCiAgICAgdm9p
ZCBpbml0VmVydGV4QXR0cmliMCgpOwogICAgIE9wdGlvbmFsPGJvb2w+IHNpbXVsYXRlVmVydGV4
QXR0cmliMChHQ0dMdWludCBudW1WZXJ0ZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmNwcAppbmRleCAyZDI4YzU5OWFhMzJi
ZGYwMTJlM2ViZDkzZTdjMGQ1NjNjNjg1ZThmLi41YTJmMDMzMGNkMDRkMjI0M2FhMDU5MWU2MDFk
NmFjOGE0NWQ0Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFRyYW5zZm9ybUZlZWRiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmNwcApAQCAtNDYsMTQgKzQ2LDEyIEBAIFdlYkdMVHJhbnNm
b3JtRmVlZGJhY2s6On5XZWJHTFRyYW5zZm9ybUZlZWRiYWNrKCkKIFdlYkdMVHJhbnNmb3JtRmVl
ZGJhY2s6OldlYkdMVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYg
Y3R4KQogICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogewotICAgIC8vIEZJWE1FOiBDYWxs
IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrIGZyb20gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuCisg
ICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHRHTCgpLT5jcmVhdGVUcmFuc2Zvcm1GZWVk
YmFjaygpKTsKIH0KIAogdm9pZCBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjpkZWxldGVPYmplY3RJ
bXBsKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qg
b2JqZWN0KQogewotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0M2QpOwotICAgIFVOVVNFRF9QQVJB
TShvYmplY3QpOwotICAgIC8vIEZJWE1FOiBDYWxsIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrIGZy
b20gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuCisgICAgY29udGV4dDNkLT5kZWxldGVUcmFuc2Zv
cm1GZWVkYmFjayhvYmplY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCA1Nzg4YWJlMTFjYzViNWRm
ZDdhMmZjODEwNmM0MGE0NGNiMWU1MzExLi4zODgxZDg5ZGVkODllM2U0ZDdiZmNhMzU3ZDgyZDQy
YzE0ODg5ODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTQ2NCw2ICs0NjQsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFVOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYgPSAweDhDM0IsCiAgICAgICAgIFJHQjlfRTUg
PSAweDhDM0QsCiAgICAgICAgIFVOU0lHTkVEX0lOVF81XzlfOV85X1JFViA9IDB4OEMzRSwKKyAg
ICAgICAgVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkdfTUFYX0xFTkdUSCA9IDB4OEM3NiwKICAg
ICAgICAgVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RFID0gMHg4QzdGLAogICAgICAgICBN
QVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMgPSAweDhDODAsCiAgICAg
ICAgIFRSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HUyA9IDB4OEM4MywKQEAgLTExMzMsNyArMTEz
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0
KSA9IDA7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpID0gMDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAg
IHZpcnR1YWwgdm9pZCBnbEdldFF1ZXJ5T2JqZWN0dWl2KFBsYXRmb3JtR0xPYmplY3QgcXVlcnks
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUs
IEdDR0x1aW50KiB2YWx1ZSkgPSAwOwogCiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNy
ZWF0ZVNhbXBsZXIoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyKSA9IDA7CkBAIC0xMTYwLDcgKzExNjEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0aXZl
TW9kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmRUcmFuc2Zvcm1GZWVkYmFjaygpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YXJ5aW5ncywgR0NHTGVudW0gYnVm
ZmVyTW9kZSkgPSAwOwotICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBnZXRUcmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAKaW5kZXggMTQ2NWQ3ZjQ4ODljNmUwMzA1ZDk0YTlhOTllNGU4NGFhYTcy
MzJmZi4uMTY1ZThiOGZiYzY5NmM3NTFlMTdhM2Y1ZDViN2IyZWYyYzNkNjJlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTE0NDIsNiArMTQ0MiwxMiBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4
LCBHQ0dMaW50IHNpemUsCiAgICAgZ2w6OlZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUs
IHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0
aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXpl
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6VmVydGV4QXR0cmliSVBvaW50ZXIo
aW5kZXgsIHNpemUsIHR5cGUsIHN0cmlkZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0
aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAtMTgzMiw4
NyArMTgzOCw5MTggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmli
RGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXMKICAgICBnZXRFeHRlbnNpb25z
KCkudmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQs
IEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIg
d3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKQorR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
Y29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKQoreworICAgIFVOVVNFRF9QQVJBTShwcm9n
cmFtKTsKKyAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrTmFtZSk7CisKKyAgICByZXR1cm4g
MDsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJs
b2NraXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBVTlVTRURfUEFSQU0o
cHJvZ3JhbSk7CisgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICBVTlVT
RURfUEFSQU0ocG5hbWUpOworICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOworfQorCitTdHJpbmcg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkKK3sKKyAgICBV
TlVTRURfUEFSQU0ocHJvZ3JhbSk7CisgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4
KTsKKworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcp
Cit7CisgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOworICAgIFVOVVNFRF9QQVJBTSh1bmlmb3Jt
QmxvY2tJbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0JpbmRpbmcpOworCit9
CisKKy8vIFF1ZXJ5IEZ1bmN0aW9ucworCitQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjcmVhdGVRdWVyeSgpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0g
ICAgZ2w6OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCByZWFkT2Zm
c2V0LCB3cml0ZU9mZnNldCwgc2l6ZSk7CisgICAgR0x1aW50IG5hbWUgPSAwOworICAgIGdsOjpH
ZW5RdWVyaWVzKDEsICZuYW1lKTsKKyAgICByZXR1cm4gbmFtZTsKIH0KIAotdm9pZCogR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiZWdpblF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwg
UGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAg
ICByZXR1cm4gZ2w6Ok1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vz
cyk7CisgICAgZ2w6OkJlZ2luUXVlcnkodGFyZ2V0LCBxdWVyeSk7CiB9CiAKLUdDR0xib29sZWFu
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpCiB7
CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIGdsOjpVbm1hcEJ1ZmZlcih0
YXJnZXQpOworICAgIGdsOjpFbmRRdWVyeSh0YXJnZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
TGludCogcGFyYW1zKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmpl
Y3R1aXYoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogcGFyYW1zKQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIGdsOjpHZXRJbnRlcm5hbGZvcm1hdGl2KHRh
cmdldCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOworICAgIGdsOjpH
ZXRRdWVyeU9iamVjdHVpdihpZCwgcG5hbWUsIHBhcmFtcyk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQorLy8gVHJhbnNmb3JtIEZlZWRiYWNrIEZ1bmN0
aW9ucworCitQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVU
cmFuc2Zvcm1GZWVkYmFjaygpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgZ2w6
OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBHTHVpbnQgbmFtZSA9IDA7CisgICAgZ2w6Okdl
blRyYW5zZm9ybUZlZWRiYWNrcygxLCAmbmFtZSk7CisgICAgcmV0dXJuIG5hbWU7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN0b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IHRyYW5zZm9ybUZlZWRiYWNrKQog
ewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIGdsOjpUZXhTdG9yYWdlMkQodGFyZ2V0
LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBtX3N0YXRlLnRl
eHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKKyAgICBn
bDo6RGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tzKDEsICZ0cmFuc2Zvcm1GZWVkYmFjayk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCkKK0dDR0xib29sZWFuIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmpl
Y3QgdHJhbnNmb3JtRmVlZGJhY2spCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAg
Z2w6OlRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUu
Y3VycmVudEJvdW5kVGV4dHVyZSgpKTsKKyAgICByZXR1cm4gZ2w6OklzVHJhbnNmb3JtRmVlZGJh
Y2sodHJhbnNmb3JtRmVlZGJhY2spOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3Rv
cjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xp
bnQ+JiBwYXJhbXMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kVHJhbnNmb3Jt
RmVlZGJhY2soR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHRyYW5zZm9ybUZlZWRi
YWNrKQogewotICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBnbDo6QmluZFRyYW5zZm9ybUZlZWRiYWNrKHRhcmdldCwgdHJhbnNmb3JtRmVlZGJhY2sp
OworfQogCi0gICAgZ2w6OkdldEFjdGl2ZVVuaWZvcm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGlj
ZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1lLCBwYXJhbXMuZGF0YSgpKTsK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NH
TGVudW0gcHJpbWl0aXZlTW9kZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBn
bDo6QmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKTsKIH0KIAotR0NHTHVpbnQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIGdsOjpFbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBH
Q0dMZW51bSBidWZmZXJNb2RlKQoreworICAgIGF1dG8gY29udmVydGVkVmFyeWluZ3MgPSB2YXJ5
aW5ncy5tYXAoW10oY29uc3QgU3RyaW5nJiB2YXJ5aW5nKSAtPiBjb25zdCBjaGFyKiB7CisgICAg
ICAgIHJldHVybiB2YXJ5aW5nLnV0ZjgoKS5kYXRhKCk7CisgICAgfSk7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwg
dmFyeWluZ3Muc2l6ZSgpLCBjb252ZXJ0ZWRWYXJ5aW5ncy5kYXRhKCksIGJ1ZmZlck1vZGUpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5m
byYgaW5mbykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBHQ0dMc2l6ZWkgYnVm
U2l6ZSA9IDA7CisgICAgZ2w6OkdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6VFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkdfTUFYX0xFTkdUSCwgJmJ1ZlNpemUp
OworICAgIGlmICghYnVmU2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR0NHTHNpemVpIGxl
bmd0aCA9IDA7CisgICAgR0NHTHNpemVpIHNpemUgPSAwOworICAgIEdDR0xlbnVtIHR5cGUgPSAw
OworICAgIFZlY3RvcjxHQ0dMY2hhcj4gbmFtZShidWZTaXplKTsKKworICAgIGdsOjpHZXRUcmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3JhbSwgaW5kZXgsIGJ1ZlNpemUsICZsZW5ndGgsICZz
aXplLCAmdHlwZSwgbmFtZS5kYXRhKCkpOworCisgICAgaW5mby5uYW1lID0gU3RyaW5nKG5hbWUu
ZGF0YSgpLCBsZW5ndGgpOworICAgIGluZm8uc2l6ZSA9IHNpemU7CisgICAgaW5mby50eXBlID0g
dHlwZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmluZEJ1ZmZlckJhc2Uo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OkJpbmRCdWZmZXJCYXNlKHRh
cmdldCwgaW5kZXgsIGJ1ZmZlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1
c2FnZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpCit7CisgICAgVU5VU0VE
X1BBUkFNKHRhcmdldCk7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJB
TSh1c2FnZSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7CisgICAgVU5VU0VEX1BBUkFN
KGxlbmd0aCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlclN1YkRh
dGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIGRzdEJ5dGVPZmZzZXQsIGNvbnN0IHZvaWQq
IHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKQoreworICAgIFVO
VVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9QQVJBTShkc3RCeXRlT2Zmc2V0KTsKKyAg
ICBVTlVTRURfUEFSQU0oc3JjRGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7Cit9CisKKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgc3JjQnl0
ZU9mZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0LCBHQ0dMdWlu
dCBsZW5ndGgpCit7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAgVU5VU0VEX1BBUkFN
KHNyY0J5dGVPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShkc3REYXRhKTsKKyAgICBVTlVTRURf
UEFSQU0oZHN0T2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGVuZ3RoKTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdD
R0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAs
IEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVs
ZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCit7CisgICAgVU5VU0VEX1BBUkFNKHNyY1gwKTsKKyAg
ICBVTlVTRURfUEFSQU0oc3JjWTApOworICAgIFVOVVNFRF9QQVJBTShzcmNYMSk7CisgICAgVU5V
U0VEX1BBUkFNKHNyY1kxKTsKKyAgICBVTlVTRURfUEFSQU0oZHN0WDApOworICAgIFVOVVNFRF9Q
QVJBTShkc3RZMCk7CisgICAgVU5VU0VEX1BBUkFNKGRzdFgxKTsKKyAgICBVTlVTRURfUEFSQU0o
ZHN0WTEpOworICAgIFVOVVNFRF9QQVJBTShtYXNrKTsKKyAgICBVTlVTRURfUEFSQU0oZmlsdGVy
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZnJhbWVidWZmZXJUZXh0dXJl
TGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2Jq
ZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpCit7CisgICAgVU5VU0VE
X1BBUkFNKHRhcmdldCk7CisgICAgVU5VU0VEX1BBUkFNKGF0dGFjaG1lbnQpOworICAgIFVOVVNF
RF9QQVJBTSh0ZXh0dXJlKTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9Q
QVJBTShsYXllcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRh
dGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4mIGF0
dGFjaG1lbnRzKQoreworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9QQVJB
TShhdHRhY2htZW50cyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFs
aWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IFZlY3RvcjxHQ0dMZW51
bT4mIGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNF
RF9QQVJBTShhdHRhY2htZW50cyk7CisgICAgVU5VU0VEX1BBUkFNKHgpOworICAgIFVOVVNFRF9Q
QVJBTSh5KTsKKyAgICBVTlVTRURfUEFSQU0od2lkdGgpOworICAgIFVOVVNFRF9QQVJBTShoZWln
aHQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQnVmZmVyKEdDR0xl
bnVtIHNyYykKK3sKKyAgICBVTlVTRURfUEFSQU0oc3JjKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIHBib09mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0odGFy
Z2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9QQVJBTShpbnRlcm5h
bGZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVp
Z2h0KTsKKyAgICBVTlVTRURfUEFSQU0oZGVwdGgpOworICAgIFVOVVNFRF9QQVJBTShib3JkZXIp
OworICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOworICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAg
ICBVTlVTRURfUEFSQU0ocGJvT2Zmc2V0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBjb25zdCB2b2lkKiBwaXhlbHMpCit7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAg
VU5VU0VEX1BBUkFNKGxldmVsKTsKKyAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxmb3JtYXQpOwor
ICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7CisgICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7CisgICAg
VU5VU0VEX1BBUkFNKGRlcHRoKTsKKyAgICBVTlVTRURfUEFSQU0oYm9yZGVyKTsKKyAgICBVTlVT
RURfUEFSQU0oZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgVU5VU0VEX1BB
UkFNKHBpeGVscyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdl
M0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NH
TGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCog
c3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0KQoreworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQp
OworICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7CisgICAgVU5VU0VEX1BBUkFNKGludGVybmFsZm9y
bWF0KTsKKyAgICBVTlVTRURfUEFSQU0od2lkdGgpOworICAgIFVOVVNFRF9QQVJBTShoZWlnaHQp
OworICAgIFVOVVNFRF9QQVJBTShkZXB0aCk7CisgICAgVU5VU0VEX1BBUkFNKGJvcmRlcik7Cisg
ICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKHR5cGUpOworICAgIFVO
VVNFRF9QQVJBTShzcmNEYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dM
aW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgcGJvT2Zm
c2V0KQoreworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9QQVJBTShsZXZl
bCk7CisgICAgVU5VU0VEX1BBUkFNKHhvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTSh5b2Zmc2V0
KTsKKyAgICBVTlVTRURfUEFSQU0oem9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsK
KyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVTRURfUEFSQU0oZGVwdGgpOworICAg
IFVOVVNFRF9QQVJBTShmb3JtYXQpOworICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICBVTlVT
RURfUEFSQU0ocGJvT2Zmc2V0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVO
VVNFRF9QQVJBTSh4b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oeW9mZnNldCk7CisgICAgVU5V
U0VEX1BBUkFNKHpvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7CisgICAgVU5VU0VE
X1BBUkFNKGhlaWdodCk7CisgICAgVU5VU0VEX1BBUkFNKGRlcHRoKTsKKyAgICBVTlVTRURfUEFS
QU0oZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgVU5VU0VEX1BBUkFNKHNy
Y0RhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjb3B5VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZz
ZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpCit7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAgVU5VU0VEX1BBUkFNKGxldmVs
KTsKKyAgICBVTlVTRURfUEFSQU0oeG9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHlvZmZzZXQp
OworICAgIFVOVVNFRF9QQVJBTSh6b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oeCk7CisgICAg
VU5VU0VEX1BBUkFNKHkpOworICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7CisgICAgVU5VU0VEX1BB
UkFNKGhlaWdodCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNz
ZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBv
ZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAgVU5VU0VEX1BBUkFNKGxl
dmVsKTsKKyAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxmb3JtYXQpOworICAgIFVOVVNFRF9QQVJB
TSh3aWR0aCk7CisgICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7CisgICAgVU5VU0VEX1BBUkFNKGRl
cHRoKTsKKyAgICBVTlVTRURfUEFSQU0oYm9yZGVyKTsKKyAgICBVTlVTRURfUEFSQU0oaW1hZ2VT
aXplKTsKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBjb25zdCB2b2lkKiBz
cmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKQor
eworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGludGVybmFsZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0od2lkdGgp
OworICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOworICAgIFVOVVNFRF9QQVJBTShkZXB0aCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGJvcmRlcik7CisgICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEpOworICAg
IFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGhPdmVy
cmlkZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhT
dWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdl
dCk7CisgICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKKyAgICBVTlVTRURfUEFSQU0oeG9mZnNldCk7
CisgICAgVU5VU0VEX1BBUkFNKHlvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTSh6b2Zmc2V0KTsK
KyAgICBVTlVTRURfUEFSQU0od2lkdGgpOworICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOworICAg
IFVOVVNFRF9QQVJBTShkZXB0aCk7CisgICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7CisgICAgVU5V
U0VEX1BBUkFNKGltYWdlU2l6ZSk7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkKK3sKKyAgICBVTlVT
RURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9Q
QVJBTSh4b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oeW9mZnNldCk7CisgICAgVU5VU0VEX1BB
UkFNKHpvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7CisgICAgVU5VU0VEX1BBUkFN
KGhlaWdodCk7CisgICAgVU5VU0VEX1BBUkFNKGRlcHRoKTsKKyAgICBVTlVTRURfUEFSQU0oZm9y
bWF0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjRGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY09m
ZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aE92ZXJyaWRlKTsKK30KKworR0NHTGlu
dCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
cHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja05hbWUpOworICAgIFVOVVNF
RF9QQVJBTShuYW1lKTsKIAogICAgIHJldHVybiAwOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCog
cGFyYW1zKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aShHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkKIHsKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICBVTlVTRURfUEFSQU0obG9j
YXRpb24pOworICAgIFVOVVNFRF9QQVJBTSh2MCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1
aW50IHYxKQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFN
KHYwKTsKKyAgICBVTlVTRURfUEFSQU0odjEpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWlu
dCB2MSwgR0NHTHVpbnQgdjIpCit7CisgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKKyAgICBV
TlVTRURfUEFSQU0odjApOworICAgIFVOVVNFRF9QQVJBTSh2MSk7CisgICAgVU5VU0VEX1BBUkFN
KHYyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dM
dWludCB2MykKK3sKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJB
TSh2MCk7CisgICAgVU5VU0VEX1BBUkFNKHYxKTsKKyAgICBVTlVTRURfUEFSQU0odjIpOworICAg
IFVOVVNFRF9QQVJBTSh2Myk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3sKKyAgICBVTlVTRURfUEFSQU0obG9j
YXRpb24pOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oc3JjT2Zm
c2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVp
bnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQoreworICAg
IFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVO
VVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpCit7CisgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKKyAgICBVTlVTRURfUEFS
QU0oZGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7CisgICAgVU5VU0VEX1BBUkFN
KHNyY0xlbmd0aCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00
dWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3sKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24p
OworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsK
KyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKK3sKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworICAgIFVO
VVNFRF9QQVJBTSh0cmFuc3Bvc2UpOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVT
RURfUEFSQU0oc3JjT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3sKKyAgICBVTlVTRURfUEFS
QU0obG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOworICAgIFVOVVNFRF9Q
QVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFS
QU0oc3JjTGVuZ3RoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkKK3sKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJBTSh0cmFu
c3Bvc2UpOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oc3JjT2Zm
c2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3sKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwor
ICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAg
ICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3sKKyAgICBVTlVT
RURfUEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOworICAgIFVO
VVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKKyAgICBVTlVT
RURfUEFSQU0oc3JjTGVuZ3RoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKK3sKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJB
TSh0cmFuc3Bvc2UpOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0o
c3JjT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCit7CisgICAgVU5VU0VEX1BB
UkFNKGluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oeCk7CisgICAgVU5VU0VEX1BBUkFNKHkpOwor
ICAgIFVOVVNFRF9QQVJBTSh6KTsKKyAgICBVTlVTRURfUEFSQU0odyk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIGNv
bnN0IEdDR0xpbnQqIHZhbHVlcykKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5kZXgpOworICAgIFVO
VVNFRF9QQVJBTSh2YWx1ZXMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBH
Q0dMdWludCB6LCBHQ0dMdWludCB3KQoreworICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CisgICAg
VU5VU0VEX1BBUkFNKHgpOworICAgIFVOVVNFRF9QQVJBTSh5KTsKKyAgICBVTlVTRURfUEFSQU0o
eik7CisgICAgVU5VU0VEX1BBUkFNKHcpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTHVpbnQqIHZh
bHVlcykKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5kZXgpOworICAgIFVOVVNFRF9QQVJBTSh2YWx1
ZXMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3UmFuZ2VFbGVtZW50
cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIFVOVVNFRF9Q
QVJBTShtb2RlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhcnQpOworICAgIFVOVVNFRF9QQVJBTShl
bmQpOworICAgIFVOVVNFRF9QQVJBTShjb3VudCk7CisgICAgVU5VU0VEX1BBUkFNKHR5cGUpOwor
ICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3QnVmZmVycyhjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZmZXJzKQoreworICAg
IFVOVVNFRF9QQVJBTShidWZmZXJzKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29u
c3QgR0NHTGludCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCit7CisgICAgVU5VU0VEX1BB
UkFNKGJ1ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKGRyYXdidWZmZXIpOworICAgIFVOVVNFRF9Q
QVJBTSh2YWx1ZXMpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTHVpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zm
c2V0KQoreworICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOworICAgIFVOVVNFRF9QQVJBTShkcmF3
YnVmZmVyKTsKKyAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsKKyAgICBVTlVTRURfUEFSQU0oc3Jj
T2Zmc2V0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJm
dihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGZsb2F0KiB2
YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsK
KyAgICBVTlVTRURfUEFSQU0oZHJhd2J1ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7
CisgICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZm
ZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQoreworICAgIFVOVVNFRF9QQVJB
TShidWZmZXIpOworICAgIFVOVVNFRF9QQVJBTShkcmF3YnVmZmVyKTsKKyAgICBVTlVTRURfUEFS
QU0oZGVwdGgpOworICAgIFVOVVNFRF9QQVJBTShzdGVuY2lsKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKK3sK
KyAgICBVTlVTRURfUEFSQU0ocXVlcnkpOworfQorCitHQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6aXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIFVOVVNF
RF9QQVJBTShxdWVyeSk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1BsYXRmb3JtR0xPYmpl
Y3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CiAgICAgVU5VU0VEX1BB
UkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0ocGFyYW1zKTsKKworICAgIHJldHVybiAwOwog
fQogCi1TdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9j
a05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRl
eCkKK1BsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVNhbXBs
ZXIoKQogewotICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKLSAgICBVTlVTRURfUEFSQU0odW5p
Zm9ybUJsb2NrSW5kZXgpOwogCi0gICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgcmV0dXJu
IDA7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRp
bmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIFVOVVNF
RF9QQVJBTShzYW1wbGVyKTsKK30KKworR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmlzU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAgVU5VU0VEX1BB
UkFNKHNhbXBsZXIpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpiaW5kU2FtcGxlcihHQ0dMdWludCB1bml0LCBQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIpCit7CisgICAgVU5VU0VEX1BBUkFNKHVuaXQpOworICAgIFVOVVNFRF9QQVJBTShz
YW1wbGVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2FtcGxlclBhcmFt
ZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBw
YXJhbSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7CisgICAgVU5VU0VEX1BBUkFNKHBu
YW1lKTsKKyAgICBVTlVTRURfUEFSQU0ocGFyYW0pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pCit7CisgICAgVU5VU0VEX1BBUkFNKHNhbXBs
ZXIpOworICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7CisgICAgVU5VU0VEX1BBUkFNKHBhcmFtKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFs
dWUpCit7CisgICAgVU5VU0VEX1BBUkFNKHNhbXBsZXIpOworICAgIFVOVVNFRF9QQVJBTShwbmFt
ZSk7CisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQoreworICAgIFVOVVNFRF9QQVJBTShzYW1w
bGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocG5hbWUpOworICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7
Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZlbmNlU3lu
YyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykKK3sKKyAgICBVTlVTRURf
UEFSQU0oY29uZGl0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZmxhZ3MpOworCisgICAgcmV0dXJu
IDA7Cit9CisKK0dDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1N5bmMoUGxh
dGZvcm1HTE9iamVjdCBzeW5jKQoreworICAgIFVOVVNFRF9QQVJBTShzeW5jKTsKKworICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlU3lu
YyhQbGF0Zm9ybUdMT2JqZWN0IHN5bmMpCit7CisgICAgVU5VU0VEX1BBUkFNKHN5bmMpOworfQor
CitHQ0dMZW51bSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xpZW50V2FpdFN5bmMoUGxhdGZv
cm1HTE9iamVjdCBzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0x1aW50NjQgdGltZW91dCkK
K3sKKyAgICBVTlVTRURfUEFSQU0oc3luYyk7CisgICAgVU5VU0VEX1BBUkFNKGZsYWdzKTsKKyAg
ICBVTlVTRURfUEFSQU0odGltZW91dCk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6d2FpdFN5bmMoUGxhdGZvcm1HTE9iamVjdCBzeW5jLCBHQ0dM
Yml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KQoreworICAgIFVOVVNFRF9QQVJBTShz
eW5jKTsKKyAgICBVTlVTRURfUEFSQU0oZmxhZ3MpOworICAgIFVOVVNFRF9QQVJBTSh0aW1lb3V0
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2l2KFBsYXRmb3Jt
R0xPYmplY3Qgc3luYywgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50
ICp2YWx1ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3luYyk7CisgICAgVU5VU0VEX1BBUkFNKHBu
YW1lKTsKKyAgICBVTlVTRURfUEFSQU0oYnVmU2l6ZSk7CisgICAgVU5VU0VEX1BBUkFNKHZhbHVl
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGF1c2VUcmFuc2Zvcm1GZWVk
YmFjaygpCit7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc3VtZVRyYW5z
Zm9ybUZlZWRiYWNrKCkKK3sKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Ymlu
ZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xP
YmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKKyAgICBV
TlVTRURfUEFSQU0oYnVmZmVyKTsKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBVTlVT
RURfUEFSQU0oc2l6ZSk7Cit9CisKK1ZlY3RvcjxHQ0dMdWludD4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3Jh
bSk7Ci0gICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKLSAgICBVTlVTRURfUEFS
QU0odW5pZm9ybUJsb2NrQmluZGluZyk7CisgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1OYW1lcyk7
CisKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRl
ciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIHBib09mZnNldCkK
K3sKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOwor
ICAgIFVOVVNFRF9QQVJBTShpbnRlcm5hbGZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRo
KTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVTRURfUEFSQU0oYm9yZGVyKTsK
KyAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAg
VU5VU0VEX1BBUkFNKHBib09mZnNldCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHNyY0Rh
dGEsIEdDR0x1aW50IHNyY09mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAg
ICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9QQVJBTShpbnRlcm5hbGZvcm1hdCk7
CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAg
ICBVTlVTRURfUEFSQU0oYm9yZGVyKTsKKyAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKKyAgICBV
TlVTRURfUEFSQU0odHlwZSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEpOworICAgIFVOVVNF
RF9QQVJBTShzcmNPZmZzZXQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIHBib09mZnNldCkKK3sK
KyAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAg
IFVOVVNFRF9QQVJBTSh4b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oeW9mZnNldCk7CisgICAg
VU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVT
RURfUEFSQU0oZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgVU5VU0VEX1BB
UkFNKHBib09mZnNldCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN1
YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50
IHNyY09mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFS
QU0obGV2ZWwpOworICAgIFVOVVNFRF9QQVJBTSh4b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0o
eW9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVp
Z2h0KTsKKyAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7
CisgICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0o
dGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9QQVJBTShpbnRl
cm5hbGZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0o
aGVpZ2h0KTsKKyAgICBVTlVTRURfUEFSQU0oYm9yZGVyKTsKKyAgICBVTlVTRURfUEFSQU0oaW1h
Z2VTaXplKTsKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkKK3sKKyAgICBVTlVTRURf
UEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9QQVJB
TShpbnRlcm5hbGZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURf
UEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVTRURfUEFSQU0oYm9yZGVyKTsKKyAgICBVTlVTRURfUEFS
QU0oc3JjRGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7CisgICAgVU5VU0VEX1BB
UkFNKHNyY0xlbmd0aE92ZXJyaWRlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xp
bnRwdHIgb2Zmc2V0KQoreworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9Q
QVJBTShsZXZlbCk7CisgICAgVU5VU0VEX1BBUkFNKHhvZmZzZXQpOworICAgIFVOVVNFRF9QQVJB
TSh5b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0od2lkdGgpOworICAgIFVOVVNFRF9QQVJBTSho
ZWlnaHQpOworICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOworICAgIFVOVVNFRF9QQVJBTShpbWFn
ZVNpemUpOworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgY29uc3Qgdm9pZCogc3Jj
RGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkKK3sK
KyAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAg
IFVOVVNFRF9QQVJBTSh4b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oeW9mZnNldCk7CisgICAg
VU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVT
RURfUEFSQU0oZm9ybWF0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjRGF0YSk7CisgICAgVU5VU0VE
X1BBUkFNKHNyY09mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aE92ZXJyaWRlKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VE
X1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9Q
QVJBTShzcmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCit7CisgICAgVU5VU0VEX1BBUkFNKGxvY2F0
aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKHNyY09mZnNl
dCk7CisgICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKK3sKKyAgICBV
TlVTRURfUEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVT
RURfUEFSQU0oc3JjT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9u
LCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFN
KGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShz
cmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2
KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Cisg
ICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAg
IFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJB
TShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShz
cmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdD
R0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQorewor
ICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAg
IFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xpbnQgbG9j
YXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BB
UkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJB
TShzcmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
TWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
K3sKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bv
c2UpOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0
KTsKKyAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCit7CisgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKKyAgICBV
TlVTRURfUEFSQU0odHJhbnNwb3NlKTsKKyAgICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAgVU5V
U0VEX1BBUkFNKHNyY09mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJB
TShsb2NhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7CisgICAgVU5VU0VEX1BB
UkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOworICAgIFVOVVNFRF9QQVJB
TShzcmNMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7
CisgICAgVU5VU0VEX1BBUkFNKHgpOworICAgIFVOVVNFRF9QQVJBTSh5KTsKKyAgICBVTlVTRURf
UEFSQU0od2lkdGgpOworICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOworICAgIFVOVVNFRF9QQVJB
TShmb3JtYXQpOworICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICBVTlVTRURfUEFSQU0ob2Zm
c2V0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50
IGRzdE9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0oeCk7CisgICAgVU5VU0VEX1BBUkFNKHkp
OworICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7CisgICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKHR5cGUpOworICAgIFVO
VVNFRF9QQVJBTShkc3REYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oZHN0T2Zmc2V0KTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCAyM2IxMDRhM2FlZTEzMWJj
MWQxOTViZTRhZmUxMTc4ZGI5ZTYyYmE1Li5lNDQ1YjMyYTIxNWU2NzdhMGUyODA2OWY3YmMxMTAx
MjAzMTc3M2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNDM2LDcg
KzQzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkgZmlu
YWw7CiAgICAgUGxhdGZvcm1HTE9iamVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lKSBmaW5hbDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZvaWQgZ2xH
ZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHVpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2KFBsYXRm
b3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFsdWUpIGZpbmFs
OwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVTYW1wbGVyKCkgZmluYWw7CiAgICAgdm9p
ZCBkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgZmluYWw7CkBAIC00NjQs
NyArNDY0LDcgQEAgcHVibGljOgogICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dM
ZW51bSBwcmltaXRpdmVNb2RlKSBmaW5hbDsKICAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNr
KCkgZmluYWw7CiAgICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBi
dWZmZXJNb2RlKSBmaW5hbDsKLSAgICBQbGF0Zm9ybUdMT2JqZWN0IGdldFRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4KSBmaW5h
bDsKKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgZmluYWw7CiAgICAgdm9pZCBw
YXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CiAgICAgdm9pZCByZXN1bWVUcmFuc2Zvcm1G
ZWVkYmFjaygpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29tbW9uLmNwcAppbmRleCBhNzA5ODEzNzQ0MDM0YWNmZmY1Y2M2OGQ0OTkyN2RiMjFjNTEwOTJm
Li45ZDFlMTc4MDY0MDQ5MDY0MjEwMDk4NmNlODk0Njg5OGRmMTA5MTdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTI1NjcsNyArMjU2Nyw3
IEBAIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5KEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdsR2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVj
dCBxdWVyeSwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWl2KFBsYXRmb3JtR0xPYmplY3QgcXVlcnks
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFsdWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHF1
ZXJ5KTsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwpAQCAtMjcwOCwxMiArMjcwOCwxMCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbQogICAgIFVOVVNFRF9QQVJBTShidWZmZXJNb2RlKTsKIH0K
IAotUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VHJhbnNmb3Jt
RmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUcmFuc2Zvcm1GZWVkYmFja1Zhcnlp
bmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwogICAgIFVOVVNFRF9QQVJBTShpbmRleCk7
Ci0KLSAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGF1
c2VUcmFuc2Zvcm1GZWVkYmFjaygpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzg0ZjdmNzI5YmEzMWMxZTNjODFkM2QzZjll
ZmJiMmNlNTYzMzA0Zi4uNDZiMGMwYzViYjg0N2RmZGVkMDY0NTI5ZTBhMjBlMGI0MjdmODNkZiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAxLTEzICBKdXN0aW4gRmFuICA8anVzdGluX2Zh
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdMIDJdIEltcGxlbWVudCB0cmFuc2Zvcm0gZmVl
ZGJhY2sgYW5kIHBhc3MgdHJhbnNmb3JtIGZlZWRiYWNrIGNvbmZvcm1hbmNlIHRlc3RzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU4MjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgQWRkIHBhc3NpbmcgcmVz
dWx0cyBmb3IgdHJhbnNmb3JtX2ZlZWRiYWNrLCBhcyBleHBlY3RlZCB3aGVuIEFOR0xFIGlzIGVu
YWJsZWQuCisKKyAgICAgICAgKiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2Zl
ZWRiYWNrL3R3by11bnJlZmVyZW5jZWQtdmFyeWluZ3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdW53cml0dGVuLW91
dHB1dC1kZWZhdWx0cy10by16ZXJvLWV4cGVjdGVkLnR4dDoKKwogMjAyMC0wMS0xMyAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBlZGl0aW5n
L3NlbGVjdGlvbi9pb3MvY2xlYXItc2VsZWN0aW9uLWFmdGVyLXRhcC1pbi1sYXJnZS1zZWxlY3Rl
ZC1ub24tZWRpdGFibGUtdGV4dC5odG1sIHRpbWVzIG91dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9mZWVkYmFjay90d28tdW5yZWZl
cmVuY2VkLXZhcnlpbmdzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2Nv
bmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVlZGJhY2svdHdvLXVucmVmZXJlbmNlZC12YXJ5aW5ncy1l
eHBlY3RlZC50eHQKaW5kZXggYWI0NDdlMzYxY2M4ZjY2NjZhMWI5ZGRlODdkNDY1ZTBkNGU2YzAx
OS4uNjQ3YWU5NDg0MGY5Y2MyNjUzODQ1ZmI1NWJlNWMxMjYzOTY4MWFhMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9mZWVkYmFjay90
d28tdW5yZWZlcmVuY2VkLXZhcnlpbmdzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL3R3by11bnJlZmVyZW5j
ZWQtdmFyeWluZ3MtZXhwZWN0ZWQudHh0CkBAIC0xLDEwICsxLDUgQEAKIFRoaXMgdGVzdCBydW5z
IHRoZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFT
UyBvciBGQUlMLgogCiBUZXN0OiAuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL3R3by11bnJlZmVyZW5jZWQtdmFyeWluZ3MuaHRt
bAotWyAxOiBQQVNTIF0gV2ViR0wgY29udGV4dCBleGlzdHMKLVsgMjogUEFTUyBdIGdldEVycm9y
IHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBJbml0IHRyYW5zZm9ybSBmZWVkYmFjayBz
aG91bGQgc3VjY2VlZAotWyAzOiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBO
T19FUlJPUiA6IERyYXcgd2l0aCB0cmFuc2Zvcm0gZmVlZGJhY2sgc2hvdWxkIHN1Y2NlZWQKLVsg
NDogRkFJTCBdIGJ1ZmZlciBzaG91bGQgbWF0Y2ggZXhwZWN0ZWQgdmFsdWVzCi1bIDU6IFBBU1Mg
XSBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotWyBGQUlMIF0gMSBmYWlsdXJlcyByZXBvcnRl
ZAorWyBQQVNTIF0gQWxsIHRlc3RzIHBhc3NlZAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL3Vud3JpdHRlbi1vdXRw
dXQtZGVmYXVsdHMtdG8temVyby1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC8yLjAu
MC9jb25mb3JtYW5jZTIvdHJhbnNmb3JtX2ZlZWRiYWNrL3Vud3JpdHRlbi1vdXRwdXQtZGVmYXVs
dHMtdG8temVyby1leHBlY3RlZC50eHQKaW5kZXggMjljOWExZWY2MDNkNzhmYzYwZWFiYjBlOGRl
NTQzZWQ4ODgzMTEwMi4uNjk3NGRhNDhhOTQ4Mjc0ZWJlOWI4YTliMjdiMDRhYWQwYzc0MzgwZiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3RyYW5zZm9y
bV9mZWVkYmFjay91bndyaXR0ZW4tb3V0cHV0LWRlZmF1bHRzLXRvLXplcm8tZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90cmFuc2Zvcm1fZmVl
ZGJhY2svdW53cml0dGVuLW91dHB1dC1kZWZhdWx0cy10by16ZXJvLWV4cGVjdGVkLnR4dApAQCAt
MSwxMSArMSw1IEBACiBUaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cg
aW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC4KIAogVGVzdDogLi4vLi4vcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RyYW5zZm9ybV9mZWVkYmFjay91
bndyaXR0ZW4tb3V0cHV0LWRlZmF1bHRzLXRvLXplcm8uaHRtbAotWyAxOiBQQVNTIF0gV2ViR0wg
Y29udGV4dCBleGlzdHMKLVsgMjogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTog
Tk9fRVJST1IgOiBTZXQgdXAgcHJvZ3JhbSBzaG91bGQgc3VjY2VlZAotWyAzOiBGQUlMIF0gYnVm
ZmVyIHNob3VsZCBtYXRjaCBleHBlY3RlZCB2YWx1ZXMKLVsgNDogUEFTUyBdIGdldEVycm9yIHdh
cyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBTZXQgdXAgcHJvZ3JhbSBzaG91bGQgc3VjY2Vl
ZAotWyA1OiBQQVNTIF0gYnVmZmVyIHNob3VsZCBtYXRjaCBleHBlY3RlZCB2YWx1ZXMKLVsgNjog
UEFTUyBdIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi1bIEZBSUwgXSAxIGZhaWx1cmVzIHJl
cG9ydGVkCitbIFBBU1MgXSBBbGwgdGVzdHMgcGFzc2VkCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>