<?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>31239</bug_id>
          
          <creation_ts>2009-11-08 10:21:29 -0800</creation_ts>
          <short_desc>c3d test crash WebKit</short_desc>
          <delta_ts>2009-11-23 16:36:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://cs.helsinki.fi/u/ilmarihe/c3d/all_tests.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Chris Marrin">cmarrin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>161420</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-11-08 10:21:29 -0800</bug_when>
    <thetext>When I load the page in the URL, webkit crashes. Stack trace coming...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161421</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-11-08 10:22:08 -0800</bug_when>
    <thetext>Crash is at:
Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x000000000000000c
Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x00000001009e460e WebCore::GraphicsContext3D::useProgram(WebCore::CanvasProgram*) + 46
1   com.apple.WebCore             	0x0000000100784e65 WebCore::CanvasRenderingContext3D::useProgram(WebCore::CanvasProgram*) + 21
2   com.apple.WebCore             	0x0000000100aec991 WebCore::jsCanvasRenderingContext3DPrototypeFunctionUseProgram(JSC::ExecState*, JSC::JSObject*, JSC::JSValue, JSC::ArgList const&amp;) + 129
3   ???                           	0x00003978462001c4 0 + 63188735361476
4   com.apple.JavaScriptCore      	0x000000010056b119 JSC::Interpreter::execute(JSC::FunctionExecutable*, JSC::ExecState*, JSC::JSFunction*, JSC::JSObject*, JSC::ArgList const&amp;, JSC::ScopeChainNode*, JSC::JSValue*) + 585
5   ???                           	0x0000000116a257c0 0 + 4674705344
6   ???                           	0x0000000120727f78 0 + 4839341944
7   com.apple.WebCore             	0x0000000100b818c0 WebCore::JSDOMWindowShell::~JSDOMWindowShell() + 0
8   ???                           	0x0000441f0f66ffff 0 + 74900193083391</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163359</commentid>
    <comment_count>2</comment_count>
      <attachid>43166</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-11-13 10:13:37 -0800</bug_when>
    <thetext>Created attachment 43166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163378</commentid>
    <comment_count>3</comment_count>
      <attachid>43166</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-11-13 11:28:26 -0800</bug_when>
    <thetext>Comment on attachment 43166
Patch


From a quick scan:

&gt; Index: WebCore/html/canvas/WebGLArrayBuffer.cpp
&gt; ===================================================================

&gt; +    PassRefPtr&lt;WebGLArrayBuffer&gt; WebGLArrayBuffer::create(WebGLArrayBuffer* other)
&gt; +    {
&gt; +        RefPtr&lt;WebGLArrayBuffer&gt; buffer = adoptRef(new WebGLArrayBuffer(other-&gt;byteLength()));
&gt; +        memcpy(buffer-&gt;data(), other-&gt;data(), other-&gt;byteLength());
&gt; +        return buffer;

The normal idiom is 
  return buffer.release();

&gt; Index: WebCore/html/canvas/WebGLBuffer.cpp
&gt; ===================================================================

&gt;  WebGLBuffer::WebGLBuffer(WebGLRenderingContext* ctx)
&gt; -    : CanvasObject(ctx)
&gt; + : CanvasObject(ctx)
&gt; + , m_elementArrayBufferByteLength(0)
&gt; + , m_arrayBufferByteLength(0)

The old indentation was correct.

&gt; +bool WebGLBuffer::associateBufferData(unsigned long target, int size)
&gt; +{
&gt; +    if (target == GraphicsContext3D::ELEMENT_ARRAY_BUFFER)
&gt; +        m_elementArrayBufferByteLength = size;
&gt; +    else if (target == GraphicsContext3D::ARRAY_BUFFER)
&gt; +        m_arrayBufferByteLength = size;
&gt; +    else
&gt; +        return false;
&gt; +    return true;
&gt; +}

This would be clearer with early returns.

&gt; +
&gt; +bool WebGLBuffer::associateBufferData(unsigned long target, WebGLArray* array)
&gt; +{
&gt; +    if (!array)
&gt; +        return false;
&gt; +        
&gt; +    if (target == GraphicsContext3D::ELEMENT_ARRAY_BUFFER) {
&gt; +        m_elementArrayBufferByteLength = array-&gt;sizeInBytes();
&gt; +        m_elementArrayBuffer = array-&gt;buffer();
&gt; +    }
&gt; +    else if (target == GraphicsContext3D::ARRAY_BUFFER)
&gt; +        m_arrayBufferByteLength = array-&gt;sizeInBytes();
&gt; +    else
&gt; +        return false;
&gt; +    return true;
&gt; +}

This would be clearer with early returns.

&gt; +bool WebGLBuffer::associateBufferSubData(unsigned long target, long offset, WebGLArray* array)
&gt; +{
&gt; +    if (!array)
&gt; +        return false;
&gt; +        
&gt; +    if (target == GraphicsContext3D::ELEMENT_ARRAY_BUFFER) {
&gt; +        if (array-&gt;sizeInBytes() + offset &gt; m_elementArrayBufferByteLength)
&gt; +            return false;

What if offset is a large negative number, or MAX_LONG?

&gt; +        // If we already have a buffer, we need to clone it and add the new data
&gt; +        if (m_elementArrayBuffer)
&gt; +            m_elementArrayBuffer = WebGLArrayBuffer::create(m_elementArrayBuffer.get());
&gt; +            
&gt; +        memcpy(static_cast&lt;unsigned char*&gt;(m_elementArrayBuffer-&gt;data()) + offset, array-&gt;baseAddress(), array-&gt;sizeInBytes());
&gt; +    }
&gt; +    else if (target == GraphicsContext3D::ARRAY_BUFFER) {
&gt; +        if (array-&gt;sizeInBytes() + offset &gt; m_arrayBufferByteLength)
&gt; +            return false;
&gt; +    }
&gt; +    else
&gt; +        return false;
&gt; +    return true;
&gt; +}

This would be clearer with early returns.

&gt; Index: WebCore/html/canvas/WebGLRenderingContext.cpp
&gt; ===================================================================

&gt; +bool WebGLRenderingContext::validateIndexArray(unsigned long count, unsigned long type, long offset, long&amp; numElements)
&gt; +{
&gt; +    long lastIndex = -1;
&gt; +    if (!m_boundElementArrayBuffer)
&gt; +        return false;
&gt; +    
&gt; +    if (type == GraphicsContext3D::UNSIGNED_SHORT) {
&gt; +        int n = m_boundElementArrayBuffer-&gt;byteLength(GraphicsContext3D::ELEMENT_ARRAY_BUFFER);
&gt; +        if ((long) count * 2 + offset &gt; n)
&gt; +            return false;

You risk integer overflow here.

&gt; +        n /= 2;
&gt; +        const unsigned short* p = static_cast&lt;const unsigned short*&gt;(m_boundElementArrayBuffer-&gt;elementArrayBuffer()-&gt;data());
&gt; +        while (n-- &gt; 0) {
&gt; +            if (*p &gt; lastIndex)
&gt; +                lastIndex = *p;
&gt; +            ++p;
&gt; +        }
&gt; +    }
&gt; +    else if (type == GraphicsContext3D::UNSIGNED_BYTE) {
&gt; +        int n = m_boundElementArrayBuffer-&gt;byteLength(GraphicsContext3D::ELEMENT_ARRAY_BUFFER);
&gt; +        const unsigned char* p = static_cast&lt;const unsigned char*&gt;(m_boundElementArrayBuffer-&gt;elementArrayBuffer()-&gt;data());
&gt; +        if ((long) count + offset &gt; n)
&gt; +            return false;

You risk integer overflow here too.

&gt; +    if (smallestNumElements == 1e9)
&gt; +        smallestNumElements = 0;

1e9? Should that be a named constant?


&gt; -void WebGLRenderingContext::vertexAttribPointer(unsigned long indx, long size, unsigned long type, bool normalized, unsigned long stride, unsigned long offset)
&gt; +void WebGLRenderingContext::vertexAttribPointer(unsigned long indx, long size, unsigned long type, bool normalized, unsigned long stride, unsigned long offset, ExceptionCode&amp; ec)

indx is a pretty ugly name.

&gt; +    if (indx &gt;= m_vertexAttribState.size())
&gt; +        m_vertexAttribState.resize(indx + 1);

What if indx is MAX_UNSIGNED_LONG? (Here and elsewhere).

&gt; Index: WebCore/html/canvas/WebGLShader.h
&gt; ===================================================================
&gt; --- WebCore/html/canvas/WebGLShader.h	(revision 50913)
&gt; +++ WebCore/html/canvas/WebGLShader.h	(working copy)
&gt; @@ -37,10 +37,10 @@ namespace WebCore {
&gt;      public:
&gt;          virtual ~WebGLShader() { deleteObject(); }
&gt;          
&gt; -        static PassRefPtr&lt;WebGLShader&gt; create(WebGLRenderingContext*, GraphicsContext3D::ShaderType);
&gt; +        static PassRefPtr&lt;WebGLShader&gt; create(WebGLRenderingContext*, unsigned long);
&gt;          
&gt;      private:
&gt; -        WebGLShader(WebGLRenderingContext*, GraphicsContext3D::ShaderType);
&gt; +        WebGLShader(WebGLRenderingContext*, unsigned long);

These changes seem like a regression in readability, and I don&apos;t see any notes in the Changelog about why they were changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163579</commentid>
    <comment_count>4</comment_count>
      <attachid>43212</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-11-13 16:15:35 -0800</bug_when>
    <thetext>Created attachment 43212
Patch

Updated patch addressing issues from Simon</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163593</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-11-13 16:46:20 -0800</bug_when>
    <thetext>Simon pointed out that there is an errant, unfinished comment in WebGLRenderingContext. I also forgot to change createShader() to include the new WebGLEnumType. These will be fixed before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163598</commentid>
    <comment_count>6</comment_count>
      <attachid>43212</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-13 17:00:12 -0800</bug_when>
    <thetext>Comment on attachment 43212
Patch

Minor formatting bug
&gt; +bool WebGLRenderingContext::validateIndexArray(unsigned long count, unsigned long type, long offset, long&amp; numElements)
&gt; +{
...
&gt; +    }
&gt; +    else if

File a bug on createShader -- it will accept any non-FRAGMENT_SHADER value as GL_VERTEX_SHADER

r- until there are testcases for all of these as well :-(

--Oliver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165922</commentid>
    <comment_count>7</comment_count>
      <attachid>43732</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-11-23 13:50:56 -0800</bug_when>
    <thetext>Created attachment 43732
Replacement patch with test cases

I also added a bug as noted by Ollie (https://bugs.webkit.org/show_bug.cgi?id=31808)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165928</commentid>
    <comment_count>8</comment_count>
      <attachid>43732</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-23 14:00:14 -0800</bug_when>
    <thetext>Comment on attachment 43732
Replacement patch with test cases

r- due to the large number of unnecessary changes (the indx-&gt;index renames)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165942</commentid>
    <comment_count>9</comment_count>
      <attachid>43736</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-11-23 14:44:37 -0800</bug_when>
    <thetext>Created attachment 43736
Desperate attempt at acceptance patch

One more try with spurious indx-&gt;index change reverted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165950</commentid>
    <comment_count>10</comment_count>
      <attachid>43736</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-23 15:05:37 -0800</bug_when>
    <thetext>Comment on attachment 43736
Desperate attempt at acceptance patch

WebGLRenderingContext::validateIndexArray

has an else start on the line after }

You&apos;ve removed the type checks from createShader, which is a bad thing.

r- mostly due to removing the type checks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165953</commentid>
    <comment_count>11</comment_count>
      <attachid>43736</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-23 15:40:41 -0800</bug_when>
    <thetext>Comment on attachment 43736
Desperate attempt at acceptance patch

r=me, assuming you fix the style error, and fix bug 31808 quickly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165962</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-11-23 16:36:03 -0800</bug_when>
    <thetext>Sending        LayoutTests/ChangeLog
Adding         LayoutTests/fast/canvas/webgl/drawArraysOutOfBounds-expected.txt
Adding         LayoutTests/fast/canvas/webgl/drawArraysOutOfBounds.html
Adding         LayoutTests/fast/canvas/webgl/drawElementssOutOfBounds-expected.txt
Adding         LayoutTests/fast/canvas/webgl/drawElementssOutOfBounds.html
Sending        WebCore/ChangeLog
Sending        WebCore/bindings/js/JSWebGLArrayCustom.cpp
Sending        WebCore/bindings/js/JSWebGLRenderingContextCustom.cpp
Sending        WebCore/html/canvas/WebGLArrayBuffer.cpp
Sending        WebCore/html/canvas/WebGLArrayBuffer.h
Sending        WebCore/html/canvas/WebGLBuffer.cpp
Sending        WebCore/html/canvas/WebGLBuffer.h
Sending        WebCore/html/canvas/WebGLRenderingContext.cpp
Sending        WebCore/html/canvas/WebGLRenderingContext.h
Sending        WebCore/html/canvas/WebGLRenderingContext.idl
Sending        WebCore/html/canvas/WebGLShader.cpp
Sending        WebCore/html/canvas/WebGLShader.h
Sending        WebCore/platform/graphics/GraphicsContext3D.h
Sending        WebCore/platform/graphics/mac/GraphicsContext3DMac.cpp
Transmitting file data ...................
Committed revision 51327.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43166</attachid>
            <date>2009-11-13 10:13:37 -0800</date>
            <delta_ts>2009-11-13 16:15:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>31239.patch</filename>
            <type>text/plain</type>
            <size>49068</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDk1MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjkgQEAKKzIwMDktMTEtMTMgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCByYW5nZSBjaGVja3MgdG8gcmVuZGVyaW5nIGNhbGxzIGluIFdlYkdMCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTIzOQorCisgICAgICAgIEkgYW0g
bm93IHRyYWNraW5nIHRoZSBzaXplIG9mIHRoZSBkYXRhIGluIGVhY2ggQ2FudmFzQnVmZmVyIG9i
amVjdAorICAgICAgICBhbmQga2VlcGluZyB0cmFjayBvZiB0aGUgYnVmZmVyIHNpemUgb2YgZWFj
aCBhY3RpdmUgdmVydGV4IGF0dHJpYi4KKyAgICAgICAgSW4gZHJhd0FycmF5cyBhbmQgZHJhd0Vs
ZW1lbnRzIEkgbWFrZSBzdXJlIG5vIGF0dGVtcHQgaXMgbWFkZSB0bworICAgICAgICBhY2Nlc3Mg
ZWxlbWVudHMgb3V0c2lkZSB0aGUgdmFsaWQgYnVmZmVyIHJhbmdlcy4gVGhlIHRlc3QgYXQ6CisK
KyAgICAgICAgICAgIGh0dHA6Ly9jcy5oZWxzaW5raS5maS91L2lsbWFyaWhlL2MzZC9mdW5jdGlv
bnMvZHJhd0FycmF5c091dE9mQm91bmRzLmh0bWwKKworICAgICAgICBubyBsb25nZXIgY3Jhc2hl
cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xBcnJheUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dDo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dDo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xB
cnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEFycmF5QnVmZmVyOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xBcnJheUJ1ZmZlcjo6ZGF0YSk6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xBcnJheUJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjpXZWJHTEJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6YXNzb2NpYXRlQnVmZmVyRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6YXNzb2NpYXRlQnVmZmVyU3ViRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6Ynl0ZUxlbmd0aCk6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVm
ZmVyOjplbGVtZW50QXJyYXlCdWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnNpemVJbkJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpi
dWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dmFsaWRhdGVJbmRleEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVSZW5kZXJpbmdTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRyYXdBcnJheXMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmlzRnJhbWVidWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppc1Byb2dyYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppc1JlbmRlcmJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmlzU2hhZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6aXNUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dXNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZXRhY2hBbmRSZW1vdmVBbGxP
YmplY3RzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6VmVydGV4QXR0cmliU3Rh
dGU6OlZlcnRleEF0dHJpYlN0YXRlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2hhZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xTaGFkZXI6OldlYkdMU2hhZGVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFNoYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVNoYWRlcik6CisKIDIwMDktMTEtMTIg
IFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdM
QXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJH
TEFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gNTA5MTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViR0xBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV2ViR0xBcnJheSogb2JqZWN0
KQogeworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAg
ICAgICAgCiAgICAgaWYgKG9iamVjdC0+aXNGbG9hdEFycmF5KCkpCiAgICAgICAgIHJldHVybiBn
ZXRET01PYmplY3RXcmFwcGVyPEpTV2ViR0xGbG9hdEFycmF5PihleGVjLCBnbG9iYWxPYmplY3Qs
IHN0YXRpY19jYXN0PFdlYkdMRmxvYXRBcnJheSo+KG9iamVjdCkpOwogICAgIGlmIChvYmplY3Qt
PmlzVW5zaWduZWRCeXRlQXJyYXkoKSkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA1MDkxMykK
KysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MywxNyArNTMsMTkgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dDo6YnVmZmVyRAogCiAgICAgdW5zaWduZWQgdGFyZ2V0ID0gYXJncy5hdCgwKS50
b0ludDMyKGV4ZWMpOwogICAgIHVuc2lnbmVkIHVzYWdlID0gYXJncy5hdCgyKS50b0ludDMyKGV4
ZWMpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCiAgICAgLy8gSWYgYXJndW1lbnQgMSBp
cyBhIG51bWJlciwgd2UgYXJlIGluaXRpYWxpemluZyB0aGlzIGJ1ZmZlciB0byB0aGF0IHNpemUK
ICAgICBpZiAoIWFyZ3MuYXQoMSkuaXNPYmplY3QoKSkgewogICAgICAgICB1bnNpZ25lZCBpbnQg
Y291bnQgPSBhcmdzLmF0KDEpLnRvSW50MzIoZXhlYyk7Ci0gICAgICAgIHN0YXRpY19jYXN0PFdl
YkdMUmVuZGVyaW5nQ29udGV4dCo+KGltcGwoKSktPmJ1ZmZlckRhdGEodGFyZ2V0LCBjb3VudCwg
dXNhZ2UpOwotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgc3RhdGljX2Nh
c3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4oaW1wbCgpKS0+YnVmZmVyRGF0YSh0YXJnZXQsIGNv
dW50LCB1c2FnZSwgZWMpOworICAgIH0gZWxzZSB7CisgICAgICAgIFdlYkdMQXJyYXkqIGFycmF5
ID0gdG9XZWJHTEFycmF5KGFyZ3MuYXQoMSkpOworICAgICAgICBzdGF0aWNfY2FzdDxXZWJHTFJl
bmRlcmluZ0NvbnRleHQqPihpbXBsKCkpLT5idWZmZXJEYXRhKHRhcmdldCwgYXJyYXksIHVzYWdl
LCBlYyk7CiAgICAgfQogCi0gICAgV2ViR0xBcnJheSogYXJyYXkgPSB0b1dlYkdMQXJyYXkoYXJn
cy5hdCgxKSk7Ci0gICAgCi0gICAgc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4o
aW1wbCgpKS0+YnVmZmVyRGF0YSh0YXJnZXQsIGFycmF5LCB1c2FnZSk7CisgICAgaWYgKGVjICE9
IDApCisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiB9CiAKQEAgLTc0LDEwICs3NiwxNCBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpidWZmZXJTCiAKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBhcmdzLmF0KDApLnRv
SW50MzIoZXhlYyk7CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gYXJncy5hdCgxKS50b0ludDMyKGV4
ZWMpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIAogICAgIFdlYkdMQXJyYXkqIGFy
cmF5ID0gdG9XZWJHTEFycmF5KGFyZ3MuYXQoMikpOwogICAgIAotICAgIHN0YXRpY19jYXN0PFdl
YkdMUmVuZGVyaW5nQ29udGV4dCo+KGltcGwoKSktPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZz
ZXQsIGFycmF5KTsKKyAgICBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihpbXBs
KCkpLT5idWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBhcnJheSwgZWMpOworCisgICAgaWYg
KGVjICE9IDApCisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTE5MiwxMCArMTk4LDExIEBAIEpTVmFsdWUgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkkKICAgICB9IGVsc2UgaWYgKG8tPmluaGVyaXRzKCZK
U0hUTUxDYW52YXNFbGVtZW50OjpzX2luZm8pKSB7CiAgICAgICAgIEhUTUxDYW52YXNFbGVtZW50
KiBjYW52YXMgPSBzdGF0aWNfY2FzdDxIVE1MQ2FudmFzRWxlbWVudCo+KHN0YXRpY19jYXN0PEpT
SFRNTEVsZW1lbnQqPihvKS0+aW1wbCgpKTsKICAgICAgICAgY29udGV4dC0+dGV4U3ViSW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBjYW52YXMsIGZsaXBZ
LCBwcmVtdWx0aXBseUFscGhhLCBlYyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKLSAgICB9CisgICAgfSBlbHNlCisgICAg
ICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgCisgICAgaWYgKGVjICE9IDApCisgICAg
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
ICAgIAogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQXJyYXlCdWZmZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xBcnJheUJ1ZmZlci5jcHAJ
KHJldmlzaW9uIDUwOTEzKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFycmF5QnVmZmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSAiV2ViR0xB
cnJheUJ1ZmZlci5oIgogCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCiAgICAgUGFzc1JlZlB0cjxXZWJHTEFycmF5QnVmZmVyPiBXZWJHTEFycmF5
QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgc2l6ZUluQnl0ZXMpCkBAIC0zNiw2ICszOCwxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xBcnJh
eUJ1ZmZlcihzaXplSW5CeXRlcykpOwogICAgIH0KICAgICAKKyAgICBQYXNzUmVmUHRyPFdlYkdM
QXJyYXlCdWZmZXI+IFdlYkdMQXJyYXlCdWZmZXI6OmNyZWF0ZShXZWJHTEFycmF5QnVmZmVyKiBv
dGhlcikKKyAgICB7CisgICAgICAgIFJlZlB0cjxXZWJHTEFycmF5QnVmZmVyPiBidWZmZXIgPSBh
ZG9wdFJlZihuZXcgV2ViR0xBcnJheUJ1ZmZlcihvdGhlci0+Ynl0ZUxlbmd0aCgpKSk7CisgICAg
ICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgb3RoZXItPmRhdGEoKSwgb3RoZXItPmJ5dGVMZW5n
dGgoKSk7CisgICAgICAgIHJldHVybiBidWZmZXI7CisgICAgfQorCiAgICAgV2ViR0xBcnJheUJ1
ZmZlcjo6V2ViR0xBcnJheUJ1ZmZlcih1bnNpZ25lZCBzaXplSW5CeXRlcykgewogICAgICAgICBt
X3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXM7CiAgICAgICAgIG1fZGF0YSA9IFdURjo6ZmFzdFpl
cm9lZE1hbGxvYyhzaXplSW5CeXRlcyk7CkBAIC00NSw2ICs1NCwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHJldHVybiBtX2RhdGE7CiAgICAgfQogCisgICAgY29uc3Qgdm9pZCog
V2ViR0xBcnJheUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIG1fZGF0YTsK
KyAgICB9CisKICAgICB1bnNpZ25lZCBXZWJHTEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29u
c3QgewogICAgICAgICByZXR1cm4gbV9zaXplSW5CeXRlczsKICAgICB9CkluZGV4OiBXZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQXJyYXlCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQXJyYXlCdWZmZXIuaAkocmV2aXNpb24gNTA5MTMpCisrKyBXZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQXJyYXlCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCAr
MzQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFdlYkdMQXJyYXlCdWZmZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHTEFycmF5QnVmZmVyPiB7CiAgICAgcHVibGljOgogICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWduZWQg
c2l6ZUluQnl0ZXMpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTEFycmF5QnVmZmVy
PiBjcmVhdGUoV2ViR0xBcnJheUJ1ZmZlciopOwogCiAgICAgICAgIHZvaWQqIGRhdGEoKTsKKyAg
ICAgICAgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0OwogICAgICAgICB1bnNpZ25lZCBieXRlTGVu
Z3RoKCkgY29uc3Q7CiAKICAgICAgICAgfldlYkdMQXJyYXlCdWZmZXIoKTsKSW5kZXg6IFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCShyZXZpc2lvbiA1MDkxMykKKysrIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw5IEBA
IFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+IFdlYkdMQnVmZmVyOjpjcmUKIH0KIAogV2ViR0xCdWZm
ZXI6OldlYkdMQnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4KQotICAgIDogQ2FudmFz
T2JqZWN0KGN0eCkKKyA6IENhbnZhc09iamVjdChjdHgpCisgLCBtX2VsZW1lbnRBcnJheUJ1ZmZl
ckJ5dGVMZW5ndGgoMCkKKyAsIG1fYXJyYXlCdWZmZXJCeXRlTGVuZ3RoKDApCiB7CiAgICAgc2V0
T2JqZWN0KGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlQnVmZmVyKCkpOwog
fQpAQCAtNDgsNiArNTAsNjIgQEAgdm9pZCBXZWJHTEJ1ZmZlcjo6X2RlbGV0ZU9iamVjdChQbGF0
Zm9ybQogICAgIGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+ZGVsZXRlQnVmZmVyKG9i
amVjdCk7CiB9CiAKK2Jvb2wgV2ViR0xCdWZmZXI6OmFzc29jaWF0ZUJ1ZmZlckRhdGEodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIGludCBzaXplKQoreworICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3ND
b250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSKQorICAgICAgICBtX2VsZW1lbnRBcnJheUJ1
ZmZlckJ5dGVMZW5ndGggPSBzaXplOworICAgIGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0Nv
bnRleHQzRDo6QVJSQVlfQlVGRkVSKQorICAgICAgICBtX2FycmF5QnVmZmVyQnl0ZUxlbmd0aCA9
IHNpemU7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgV2ViR0xCdWZmZXI6OmFzc29jaWF0ZUJ1ZmZlckRhdGEodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIFdlYkdMQXJyYXkqIGFycmF5KQoreworICAgIGlmICghYXJyYXkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIpIHsKKyAgICAgICAgbV9lbGVtZW50QXJyYXlCdWZm
ZXJCeXRlTGVuZ3RoID0gYXJyYXktPnNpemVJbkJ5dGVzKCk7CisgICAgICAgIG1fZWxlbWVudEFy
cmF5QnVmZmVyID0gYXJyYXktPmJ1ZmZlcigpOworICAgIH0KKyAgICBlbHNlIGlmICh0YXJnZXQg
PT0gR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUikKKyAgICAgICAgbV9hcnJheUJ1ZmZl
ckJ5dGVMZW5ndGggPSBhcnJheS0+c2l6ZUluQnl0ZXMoKTsKKyAgICBlbHNlCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJHTEJ1ZmZlcjo6YXNz
b2NpYXRlQnVmZmVyU3ViRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBvZmZzZXQsIFdl
YkdMQXJyYXkqIGFycmF5KQoreworICAgIGlmICghYXJyYXkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgCisgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVO
VF9BUlJBWV9CVUZGRVIpIHsKKyAgICAgICAgaWYgKGFycmF5LT5zaXplSW5CeXRlcygpICsgb2Zm
c2V0ID4gbV9lbGVtZW50QXJyYXlCdWZmZXJCeXRlTGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgCisgICAgICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhIGJ1
ZmZlciwgd2UgbmVlZCB0byBjbG9uZSBpdCBhbmQgYWRkIHRoZSBuZXcgZGF0YQorICAgICAgICBp
ZiAobV9lbGVtZW50QXJyYXlCdWZmZXIpCisgICAgICAgICAgICBtX2VsZW1lbnRBcnJheUJ1ZmZl
ciA9IFdlYkdMQXJyYXlCdWZmZXI6OmNyZWF0ZShtX2VsZW1lbnRBcnJheUJ1ZmZlci5nZXQoKSk7
CisgICAgICAgICAgICAKKyAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIq
PihtX2VsZW1lbnRBcnJheUJ1ZmZlci0+ZGF0YSgpKSArIG9mZnNldCwgYXJyYXktPmJhc2VBZGRy
ZXNzKCksIGFycmF5LT5zaXplSW5CeXRlcygpKTsKKyAgICB9CisgICAgZWxzZSBpZiAodGFyZ2V0
ID09IEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIpIHsKKyAgICAgICAgaWYgKGFycmF5
LT5zaXplSW5CeXRlcygpICsgb2Zmc2V0ID4gbV9hcnJheUJ1ZmZlckJ5dGVMZW5ndGgpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiB0cnVlOworfQorCit1bnNpZ25lZCBXZWJHTEJ1ZmZlcjo6Ynl0ZUxl
bmd0aCh1bnNpZ25lZCBsb25nIHRhcmdldCkgY29uc3QKK3sKKyAgICByZXR1cm4gKHRhcmdldCA9
PSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSKSA/IG1fYXJyYXlCdWZmZXJCeXRlTGVu
Z3RoIDogbV9lbGVtZW50QXJyYXlCdWZmZXJCeXRlTGVuZ3RoOworfQorCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoM0RfQ0FOVkFTKQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaAkocmV2
aXNpb24gNTA5MTMpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV2ViR0xCdWZmZXJfaAogCiAjaW5j
bHVkZSAiQ2FudmFzT2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViR0xBcnJheUJ1ZmZlci5oIgogCiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpA
QCAtMzksMTAgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250
ZXh0Kik7CiAgICAgICAgIAorICAgICAgICBib29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIGludCBzaXplKTsKKyAgICAgICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJE
YXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBXZWJHTEFycmF5KiBhcnJheSk7CisgICAgICAgIGJv
b2wgYXNzb2NpYXRlQnVmZmVyU3ViRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBvZmZz
ZXQsIFdlYkdMQXJyYXkqIGFycmF5KTsKKyAgICAgICAgCisgICAgICAgIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgodW5zaWduZWQgbG9uZyB0YXJnZXQpIGNvbnN0OworICAgICAgICBjb25zdCBXZWJHTEFy
cmF5QnVmZmVyKiBlbGVtZW50QXJyYXlCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRB
cnJheUJ1ZmZlci5nZXQoKTsgfQorICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgcHJvdGVj
dGVkOgogICAgICAgICBXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKICAgICAg
ICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBfZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qg
byk7CisgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgUmVmUHRyPFdlYkdMQXJyYXlCdWZmZXI+
IG1fZWxlbWVudEFycmF5QnVmZmVyOworICAgICAgICB1bnNpZ25lZCBtX2VsZW1lbnRBcnJheUJ1
ZmZlckJ5dGVMZW5ndGg7CisgICAgICAgIHVuc2lnbmVkIG1fYXJyYXlCdWZmZXJCeXRlTGVuZ3Ro
OwogICAgIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA1MDkxMykK
KysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE3LDkgKzExNyw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpy
ZXNoYXBlKGludCAKIGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNpemVJbkJ5dGVzKGludCB0
eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpbnQgcmVzdWx0ID0gbV9jb250ZXh0LT5z
aXplSW5CeXRlcyh0eXBlKTsKLSAgICBpZiAocmVzdWx0IDw9IDApIHsKKyAgICBpZiAocmVzdWx0
IDw9IDApCiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICB9CisKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC0xNTUsNiArMTU1LDE2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpiaW5kQnVmZmVyKHUKICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KKworICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkFS
UkFZX0JVRkZFUikKKyAgICAgICAgbV9ib3VuZEFycmF5QnVmZmVyID0gYnVmZmVyOworICAgIGVs
c2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIp
CisgICAgICAgIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIgPSBidWZmZXI7CisgICAgZWxzZSB7
CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IG1fY29udGV4dC0+YmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7CiAgICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KQEAgLTIyMiwyMCArMjMyLDY1IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpibGVuZEZ1bmNTZXAKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRGF0YSh1
bnNpZ25lZCBsb25nIHRhcmdldCwgaW50IHNpemUsIHVuc2lnbmVkIGxvbmcgdXNhZ2UpCit2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwg
aW50IHNpemUsIHVuc2lnbmVkIGxvbmcgdXNhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAg
IGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSICYm
IG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIpIHsKKyAgICAgICAgaWYgKCFtX2JvdW5kRWxlbWVu
dEFycmF5QnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSkpIHsKKyAgICAg
ICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIg
JiYgbV9ib3VuZEFycmF5QnVmZmVyKSB7CisgICAgICAgIGlmICghbV9ib3VuZEFycmF5QnVmZmVy
LT5hc3NvY2lhdGVCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSkpIHsKKyAgICAgICAgICAgIGVjID0g
U1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7
CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIHVzYWdlKTsKICAgICBjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6YnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgV2ViR0xBcnJheSogZGF0YSwgdW5z
aWduZWQgbG9uZyB1c2FnZSkKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJEYXRh
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBXZWJHTEFycmF5KiBkYXRhLCB1bnNpZ25lZCBsb25nIHVz
YWdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29u
dGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUiAmJiBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVy
KSB7CisgICAgICAgIGlmICghbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlci0+YXNzb2NpYXRlQnVm
ZmVyRGF0YSh0YXJnZXQsIGRhdGEpKSB7CisgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHRhcmdldCA9PSBH
cmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSICYmIG1fYm91bmRBcnJheUJ1ZmZlcikgewor
ICAgICAgICBpZiAoIW1fYm91bmRBcnJheUJ1ZmZlci0+YXNzb2NpYXRlQnVmZmVyRGF0YSh0YXJn
ZXQsIGRhdGEpKSB7CisgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFy
Z2V0LCBkYXRhLCB1c2FnZSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
IH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlclN1YkRhdGEodW5zaWduZWQg
bG9uZyB0YXJnZXQsIGxvbmcgb2Zmc2V0LCBXZWJHTEFycmF5KiBkYXRhKQordm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmJ1ZmZlclN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcg
b2Zmc2V0LCBXZWJHTEFycmF5KiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAo
dGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUiAmJiBtX2Jv
dW5kRWxlbWVudEFycmF5QnVmZmVyKSB7CisgICAgICAgIGlmICghbV9ib3VuZEVsZW1lbnRBcnJh
eUJ1ZmZlci0+YXNzb2NpYXRlQnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgZGF0YSkpIHsK
KyAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9C
VUZGRVIgJiYgbV9ib3VuZEFycmF5QnVmZmVyKSB7CisgICAgICAgIGlmICghbV9ib3VuZEFycmF5
QnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBkYXRhKSkgewor
ICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgbV9jb250ZXh0LT5idWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0
LCBkYXRhKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQpAQCAtMzQz
LDEzICszOTgsOCBAQCBQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBXZWJHTFJlbmRlCiAK
IFBhc3NSZWZQdHI8V2ViR0xTaGFkZXI+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlU2hh
ZGVyKHVuc2lnbmVkIGxvbmcgdHlwZSkKIHsKLSAgICAvLyBGSVhNRTogTmVlZCB0byBpbmNsdWRl
IEdMXyBjb25zdGFudHMgZm9yIGludGVybmFsIHVzZQogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGRv
IHBhcmFtIGNoZWNraW5nIGFuZCB0aHJvdyBleGNlcHRpb24gaWYgYW4gaWxsZWdhbCB2YWx1ZSBp
cyBwYXNzZWQgaW4KLSAgICBHcmFwaGljc0NvbnRleHQzRDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBl
ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVI7Ci0gICAgaWYgKHR5cGUgPT0gMHg4
QjMwKSAvLyBHTF9GUkFHTUVOVF9TSEFERVIKLSAgICAgICAgc2hhZGVyVHlwZSA9IEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFHTUVOVF9TSEFERVI7Ci0gICAgICAgIAotICAgIFJlZlB0cjxXZWJHTFNo
YWRlcj4gbyA9IFdlYkdMU2hhZGVyOjpjcmVhdGUodGhpcywgc2hhZGVyVHlwZSk7CisgICAgUmVm
UHRyPFdlYkdMU2hhZGVyPiBvID0gV2ViR0xTaGFkZXI6OmNyZWF0ZSh0aGlzLCB0eXBlKTsKICAg
ICBhZGRPYmplY3Qoby5nZXQoKSk7CiAgICAgcmV0dXJuIG87CiB9CkBAIC00NDUsMTkgKzQ5NSw4
OCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGlzYWJsZSh1bnNpCiAKIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgbG9u
ZyBpbmRleCkKIHsKKyAgICBpZiAoaW5kZXggPCBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSkK
KyAgICAgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0uZW5hYmxlZCA9IGZhbHNlOworICAg
IAogICAgIG1fY29udGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKICAgICBj
bGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCitib29sIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dmFsaWRhdGVJbmRleEFycmF5KHVuc2lnbmVkIGxvbmcgY291bnQsIHVuc2lnbmVk
IGxvbmcgdHlwZSwgbG9uZyBvZmZzZXQsIGxvbmcmIG51bUVsZW1lbnRzKQoreworICAgIGxvbmcg
bGFzdEluZGV4ID0gLTE7CisgICAgaWYgKCFtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0
M0Q6OlVOU0lHTkVEX1NIT1JUKSB7CisgICAgICAgIGludCBuID0gbV9ib3VuZEVsZW1lbnRBcnJh
eUJ1ZmZlci0+Ynl0ZUxlbmd0aChHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZG
RVIpOworICAgICAgICBpZiAoKGxvbmcpIGNvdW50ICogMiArIG9mZnNldCA+IG4pCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgbiAvPSAyOworICAgICAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCogcCA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIHNo
b3J0Kj4obV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxlbWVudEFycmF5QnVmZmVyKCktPmRh
dGEoKSk7CisgICAgICAgIHdoaWxlIChuLS0gPiAwKSB7CisgICAgICAgICAgICBpZiAoKnAgPiBs
YXN0SW5kZXgpCisgICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gKnA7CisgICAgICAgICAgICAr
K3A7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAodHlwZSA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURSkgeworICAgICAgICBpbnQgbiA9IG1fYm91bmRFbGVtZW50QXJy
YXlCdWZmZXItPmJ5dGVMZW5ndGgoR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVG
RkVSKTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogcCA9IHN0YXRpY19jYXN0PGNvbnN0
IHVuc2lnbmVkIGNoYXIqPihtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJyYXlC
dWZmZXIoKS0+ZGF0YSgpKTsKKyAgICAgICAgaWYgKChsb25nKSBjb3VudCArIG9mZnNldCA+IG4p
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgd2hpbGUg
KG4tLSA+IDApIHsKKyAgICAgICAgICAgIGlmICgqcCA+IGxhc3RJbmRleCkKKyAgICAgICAgICAg
ICAgICBsYXN0SW5kZXggPSAqcDsKKyAgICAgICAgICAgICsrcDsKKyAgICAgICAgfQorICAgIH0g
ICAgCisgICAgICAgIAorICAgIC8vIFRoZW4gc2V0IHRoZSBsYXN0IGluZGV4IGluIHRoZSBpbmRl
eCBhcnJheSBhbmQgbWFrZSBzdXJlIGl0IGlzIHZhbGlkCisgICAgbnVtRWxlbWVudHMgPSBsYXN0
SW5kZXggKyAxOworICAgIHJldHVybiBudW1FbGVtZW50cyA+IDA7Cit9CisKK2Jvb2wgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVJlbmRlcmluZ1N0YXRlKGxvbmcgbnVtRWxlbWVudHMp
Cit7CisgICAgLy8gTG9vayBpbiBlYWNoIGVuYWJsZWQgdmVydGV4IGF0dHJpYiBhbmQgZmluZCB0
aGUgc21hbGxlc3QgYnVmZmVyIHNpemUKKyAgICBsb25nIHNtYWxsZXN0TnVtRWxlbWVudHMgPSAx
ZTk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmVydGV4QXR0cmliU3RhdGUuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgVmVydGV4QXR0cmliU3RhdGUmIHN0YXRlID0gbV92
ZXJ0ZXhBdHRyaWJTdGF0ZVtpXTsKKyAgICAgICAgaWYgKHN0YXRlLmVuYWJsZWQgJiYgc3RhdGUu
bnVtRWxlbWVudHMgPCBzbWFsbGVzdE51bUVsZW1lbnRzKQorICAgICAgICAgICAgc21hbGxlc3RO
dW1FbGVtZW50cyA9IHN0YXRlLm51bUVsZW1lbnRzOworICAgIH0KKyAgICAKKyAgICBpZiAoc21h
bGxlc3ROdW1FbGVtZW50cyA9PSAxZTkpCisgICAgICAgIHNtYWxsZXN0TnVtRWxlbWVudHMgPSAw
OworICAgIAorICAgIHJldHVybiBudW1FbGVtZW50cyA8PSBzbWFsbGVzdE51bUVsZW1lbnRzOwor
fQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0FycmF5cyh1bnNpZ25lZCBsb25n
IG1vZGUsIGxvbmcgZmlyc3QsIGxvbmcgY291bnQpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6ZHJhd0FycmF5cyh1bnNpZ25lZCBsb25nIG1vZGUsIGxvbmcgZmlyc3QsIGxvbmcgY291bnQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgcmVu
ZGVyaW5nIHN0YXRlCisgICAgaWYgKGZpcnN0IDwgMCB8fCBjb3VudCA8IDAgfHwgIXZhbGlkYXRl
UmVuZGVyaW5nU3RhdGUoZmlyc3QgKyBjb3VudCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NU
QVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBtX2NvbnRleHQtPmRy
YXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwodHJ1ZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkcmF3RWxlbWVudHMo
dW5zaWduZWQgbG9uZyBtb2RlLCB1bnNpZ25lZCBsb25nIGNvdW50LCB1bnNpZ25lZCBsb25nIHR5
cGUsIGxvbmcgb2Zmc2V0KQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRyYXdFbGVtZW50
cyh1bnNpZ25lZCBsb25nIG1vZGUsIHVuc2lnbmVkIGxvbmcgY291bnQsIHVuc2lnbmVkIGxvbmcg
dHlwZSwgbG9uZyBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIC8vIEVuc3VyZSB3
ZSBoYXZlIGEgdmFsaWQgcmVuZGVyaW5nIHN0YXRlCisgICAgbG9uZyBudW1FbGVtZW50czsKKyAg
ICAKKyAgICBpZiAob2Zmc2V0IDwgMCB8fCAhdmFsaWRhdGVJbmRleEFycmF5KGNvdW50LCB0eXBl
LCBvZmZzZXQsIG51bUVsZW1lbnRzKSB8fCAhdmFsaWRhdGVSZW5kZXJpbmdTdGF0ZShudW1FbGVt
ZW50cykpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAKICAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwg
dHlwZSwgb2Zmc2V0KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwodHJ1ZSk7CiB9CkBA
IC00NzAsNiArNTg5LDExIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjplbmFibGUodW5z
aWcKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KHVuc2lnbmVkIGxvbmcgaW5kZXgpCiB7CisgICAgaWYgKGluZGV4ID49IG1fdmVydGV4QXR0cmli
U3RhdGUuc2l6ZSgpKQorICAgICAgICBtX3ZlcnRleEF0dHJpYlN0YXRlLnJlc2l6ZShpbmRleCAr
IDEpOworICAgICAgICAKKyAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5lbmFibGVkID0g
dHJ1ZTsKKyAgICAKICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4
KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQpAQCAtODUzLDI2ICs5
NzcsNDEgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmlzRW5hYmxlZCh1bgogCiBib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aXNGcmFtZWJ1ZmZlcihXZWJHTEZyYW1lYnVmZmVyKiBm
cmFtZWJ1ZmZlcikKIHsKKyAgICBpZiAoIWZyYW1lYnVmZmVyKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICByZXR1cm4gbV9jb250ZXh0LT5pc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsK
IH0KIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmlzUHJvZ3JhbShXZWJHTFByb2dyYW0q
IHByb2dyYW0pCiB7CisgICAgaWYgKCFwcm9ncmFtKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
ICAgICByZXR1cm4gbV9jb250ZXh0LT5pc1Byb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIGJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojppc1JlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmJ1ZmZlciogcmVu
ZGVyYnVmZmVyKQogeworICAgIGlmICghcmVuZGVyYnVmZmVyKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICByZXR1cm4gbV9jb250ZXh0LT5pc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIp
OwogfQogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aXNTaGFkZXIoV2ViR0xTaGFkZXIq
IHNoYWRlcikKIHsKKyAgICBpZiAoIXNoYWRlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgcmV0dXJuIG1fY29udGV4dC0+aXNTaGFkZXIoc2hhZGVyKTsKIH0KIAogYm9vbCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmlzVGV4dHVyZShXZWJHTFRleHR1cmUqIHRleHR1cmUpCiB7CisgICAg
aWYgKCF0ZXh0dXJlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gbV9jb250
ZXh0LT5pc1RleHR1cmUodGV4dHVyZSk7CiB9CiAKQEAgLTE0MTUsMTQgKzE1NTQsMjQgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaQogICAgIGNsZWFudXBBZnRlckdy
YXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1c2VQ
cm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CisgICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0aGlzKSB7CisgICAg
ICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
ICAgIAogICAgIG1fY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtKTsKICAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dmFsaWRhdGVQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKK3ZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp2YWxpZGF0ZVByb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKKyAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9
IHRoaXMpIHsKKyAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAgICAgCiAgICAgbV9jb250ZXh0LT52YWxpZGF0ZVByb2dyYW0ocHJvZ3Jh
bSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KQEAgLTE1MTUsOCAr
MTY2NCwzMyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliCiAgICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnZlcnRleEF0dHJpYlBvaW50ZXIodW5zaWduZWQgbG9uZyBpbmR4LCBsb25nIHNp
emUsIHVuc2lnbmVkIGxvbmcgdHlwZSwgYm9vbCBub3JtYWxpemVkLCB1bnNpZ25lZCBsb25nIHN0
cmlkZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dmVydGV4QXR0cmliUG9pbnRlcih1bnNpZ25lZCBsb25nIGluZHgsIGxvbmcgc2l6ZSwgdW5zaWdu
ZWQgbG9uZyB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIHVuc2lnbmVkIGxvbmcgc3RyaWRlLCB1bnNp
Z25lZCBsb25nIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKCFtX2JvdW5k
QXJyYXlCdWZmZXIpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoaW5keCA+PSBtX3ZlcnRleEF0dHJpYlN0YXRl
LnNpemUoKSkKKyAgICAgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5yZXNpemUoaW5keCArIDEpOwor
CisgICAgLy8gRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdGhlIGJvdW5kIGJ1ZmZl
ciBjYW4gaG9sZCwgZ2l2ZW4gdGhlIG9mZnNldCwgc2l6ZSwgdHlwZSBhbmQgc3RyaWRlCisgICAg
ZWMgPSAwOworICAgIGxvbmcgYnl0ZXNQZXJFbGVtZW50ID0gc2l6ZSAqIHNpemVJbkJ5dGVzKHR5
cGUsIGVjKTsKKyAgICBpZiAoZWMgIT0gMCkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAg
ICBpZiAoc3RyaWRlICE9IDApIHsKKyAgICAgICAgaWYgKChsb25nKSBzdHJpZGUgPCBieXRlc1Bl
ckVsZW1lbnQpIHsKKyAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYnl0ZXNQZXJFbGVtZW50ID0gc3Ry
aWRlOworICAgIH0KKyAgICAgICAgCisgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmR4XS5udW1F
bGVtZW50cyA9IG1fYm91bmRBcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aChHcmFwaGljc0NvbnRleHQz
RDo6QVJSQVlfQlVGRkVSKSAtIG9mZnNldCAvIGJ5dGVzUGVyRWxlbWVudDsKKwogICAgIG1fY29u
dGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihpbmR4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBz
dHJpZGUsIG9mZnNldCk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0K
QEAgLTE1NDgsOCArMTcyMiw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjphZGRPYmpl
Y3QoQ2EKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRldGFjaEFuZFJlbW92ZUFsbE9i
amVjdHMoKQogewotICAgIEhhc2hTZXQ8Q2FudmFzT2JqZWN0Kj46Oml0ZXJhdG9yIHBlbmQgPSBt
X2NhbnZhc09iamVjdHMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PENhbnZhc09iamVjdCo+Ojpp
dGVyYXRvciBpdCA9IG1fY2FudmFzT2JqZWN0cy5iZWdpbigpOyBpdCAhPSBwZW5kOyArK2l0KQor
ICAgIEhhc2hTZXQ8UmVmUHRyPENhbnZhc09iamVjdD4gPjo6aXRlcmF0b3IgcGVuZCA9IG1fY2Fu
dmFzT2JqZWN0cy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPENhbnZhc09iamVjdD4g
Pjo6aXRlcmF0b3IgaXQgPSBtX2NhbnZhc09iamVjdHMuYmVnaW4oKTsgaXQgIT0gcGVuZDsgKytp
dCkKICAgICAgICAgKCppdCktPmRldGFjaENvbnRleHQoKTsKICAgICAgICAgCiAgICAgbV9jYW52
YXNPYmplY3RzLmNsZWFyKCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDUwOTEzKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsOSArNzMsOSBAQCBj
bGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAgICAgICAgIHZvaWQgYmxlbmRGdW5jKHVuc2lnbmVkIGxv
bmcgc2ZhY3RvciwgdW5zaWduZWQgbG9uZyBkZmFjdG9yKTsKICAgICAgICAgdm9pZCBibGVuZEZ1
bmNTZXBhcmF0ZSh1bnNpZ25lZCBsb25nIHNyY1JHQiwgdW5zaWduZWQgbG9uZyBkc3RSR0IsIHVu
c2lnbmVkIGxvbmcgc3JjQWxwaGEsIHVuc2lnbmVkIGxvbmcgZHN0QWxwaGEpOwogCi0gICAgICAg
IHZvaWQgYnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgaW50IHNpemUsIHVuc2lnbmVk
IGxvbmcgdXNhZ2UpOwotICAgICAgICB2b2lkIGJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIFdlYkdMQXJyYXkqIGRhdGEsIHVuc2lnbmVkIGxvbmcgdXNhZ2UpOwotICAgICAgICB2b2lk
IGJ1ZmZlclN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgb2Zmc2V0LCBXZWJHTEFy
cmF5KiBkYXRhKTsKKyAgICAgICAgdm9pZCBidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCBpbnQgc2l6ZSwgdW5zaWduZWQgbG9uZyB1c2FnZSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAg
ICB2b2lkIGJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIFdlYkdMQXJyYXkqIGRhdGEs
IHVuc2lnbmVkIGxvbmcgdXNhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBidWZm
ZXJTdWJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIG9mZnNldCwgV2ViR0xBcnJheSog
ZGF0YSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyh1bnNpZ25lZCBsb25nIHRhcmdldCk7CiAgICAgICAgIHZvaWQgY2xlYXIo
dW5zaWduZWQgbG9uZyBtYXNrKTsKQEAgLTExMCwxMSArMTEwLDExIEBAIGNsYXNzIFdlYktpdENT
U01hdHJpeDsKICAgICAgICAgdm9pZCBkZXB0aEZ1bmModW5zaWduZWQgbG9uZyk7CiAgICAgICAg
IHZvaWQgZGVwdGhNYXNrKGJvb2wpOwogICAgICAgICB2b2lkIGRlcHRoUmFuZ2UoZG91YmxlIHpO
ZWFyLCBkb3VibGUgekZhcik7Ci0gICAgICAgIHZvaWQgZGV0YWNoU2hhZGVyKFdlYkdMUHJvZ3Jh
bSosIFdlYkdMU2hhZGVyKiwgRXhjZXB0aW9uQ29kZSYgZWMpOworICAgICAgICB2b2lkIGRldGFj
aFNoYWRlcihXZWJHTFByb2dyYW0qLCBXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICAgICAgdm9pZCBkaXNhYmxlKHVuc2lnbmVkIGxvbmcgY2FwKTsKICAgICAgICAgdm9pZCBkaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgICAgIHZvaWQg
ZHJhd0FycmF5cyh1bnNpZ25lZCBsb25nIG1vZGUsIGxvbmcgZmlyc3QsIGxvbmcgY291bnQpOwot
ICAgICAgICB2b2lkIGRyYXdFbGVtZW50cyh1bnNpZ25lZCBsb25nIG1vZGUsIHVuc2lnbmVkIGxv
bmcgY291bnQsIHVuc2lnbmVkIGxvbmcgdHlwZSwgbG9uZyBvZmZzZXQpOworICAgICAgICB2b2lk
IGRyYXdBcnJheXModW5zaWduZWQgbG9uZyBtb2RlLCBsb25nIGZpcnN0LCBsb25nIGNvdW50LCBF
eGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQgZHJhd0VsZW1lbnRzKHVuc2lnbmVkIGxvbmcg
bW9kZSwgdW5zaWduZWQgbG9uZyBjb3VudCwgdW5zaWduZWQgbG9uZyB0eXBlLCBsb25nIG9mZnNl
dCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIHZvaWQgZW5hYmxlKHVuc2lnbmVkIGxvbmcg
Y2FwKTsKICAgICAgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25lZCBsb25n
IGluZGV4KTsKQEAgLTE1Niw3ICsxNTYsNyBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAgICAg
ICAgIC8vIFRCRAogICAgICAgICAvLyB2b2lkIGdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IChH
TGVudW0gc2hhZGVydHlwZSwgR0xlbnVtIHByZWNpc2lvbnR5cGUsIEdMaW50KiByYW5nZSwgR0xp
bnQqIHByZWNpc2lvbik7CiAKLSAgICAgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShXZWJHTFNo
YWRlciosIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICAgICAgU3RyaW5nIGdldFNoYWRlclNvdXJj
ZShXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgU3RyaW5nIGdldFN0cmlu
Zyh1bnNpZ25lZCBsb25nIG5hbWUpOwogCiAgICAgICAgIGZsb2F0IGdldFRleFBhcmFtZXRlcmYo
dW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwpAQCAtMTY0LDEyICsx
NjQsMTIgQEAgY2xhc3MgV2ViS2l0Q1NTTWF0cml4OwogICAgICAgICBpbnQgZ2V0VGV4UGFyYW1l
dGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7CiAgICAgICAg
IFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0VGV4UGFyYW1ldGVyaXYodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwogCi0gICAgICAgIGZsb2F0IGdldFVuaWZv
cm1mKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYg
ZWMpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gZ2V0VW5pZm9ybWZ2KFdl
YkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpOwor
ICAgICAgICBmbG9hdCBnZXRVbmlmb3JtZihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9j
YXRpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJy
YXk+IGdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgbG9uZyBnZXRVbmlmb3JtaShXZWJHTFByb2dyYW0qIHBy
b2dyYW0sIGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKTsKLSAgICAgICAgUGFzc1Jl
ZlB0cjxXZWJHTEludEFycmF5PiBnZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBs
b25nIGxvY2F0aW9uLCBFeGNlcHRpb25Db2RlJiBlYyk7CisgICAgICAgIFBhc3NSZWZQdHI8V2Vi
R0xJbnRBcnJheT4gZ2V0VW5pZm9ybWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2Nh
dGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgICAgIGxvbmcgZ2V0VW5pZm9ybUxvY2F0aW9u
KFdlYkdMUHJvZ3JhbSosIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpOwor
ICAgICAgICBsb25nIGdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qLCBjb25zdCBTdHJp
bmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICBmbG9hdCBnZXRWZXJ0ZXhBdHRy
aWJmKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwogICAgICAgICBQ
YXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gZ2V0VmVydGV4QXR0cmliZnYodW5zaWduZWQgbG9u
ZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7CkBAIC0xODcsNyArMTg3LDcgQEAgY2xhc3Mg
V2ViS2l0Q1NTTWF0cml4OwogICAgICAgICBib29sIGlzU2hhZGVyKFdlYkdMU2hhZGVyKik7CiAg
ICAgICAgIGJvb2wgaXNUZXh0dXJlKFdlYkdMVGV4dHVyZSopOwogICAgICAgICB2b2lkIGxpbmVX
aWR0aChkb3VibGUpOwotICAgICAgICB2b2lkIGxpbmtQcm9ncmFtKFdlYkdMUHJvZ3JhbSosIEV4
Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICAgICAgdm9pZCBsaW5rUHJvZ3JhbShXZWJHTFByb2dyYW0q
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgcGl4ZWxTdG9yZWkodW5zaWduZWQgbG9u
ZyBwbmFtZSwgbG9uZyBwYXJhbSk7CiAgICAgICAgIHZvaWQgcG9seWdvbk9mZnNldChkb3VibGUg
ZmFjdG9yLCBkb3VibGUgdW5pdHMpOwogICAgICAgICAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBjbGFz
cyBXZWJLaXRDU1NNYXRyaXg7CiAgICAgICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZSh1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQg
bG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOwogICAgICAgICB2b2lkIHNhbXBsZUNv
dmVyYWdlKGRvdWJsZSB2YWx1ZSwgYm9vbCBpbnZlcnQpOwogICAgICAgICB2b2lkIHNjaXNzb3Io
bG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0
KTsKLSAgICAgICAgdm9pZCBzaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqLCBjb25zdCBTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJiBlYyk7CisgICAgICAgIHZvaWQgc2hhZGVyU291cmNlKFdlYkdMU2hh
ZGVyKiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICB2b2lkIHN0ZW5j
aWxGdW5jKHVuc2lnbmVkIGxvbmcgZnVuYywgbG9uZyByZWYsIHVuc2lnbmVkIGxvbmcgbWFzayk7
CiAgICAgICAgIHZvaWQgc3RlbmNpbEZ1bmNTZXBhcmF0ZSh1bnNpZ25lZCBsb25nIGZhY2UsIHVu
c2lnbmVkIGxvbmcgZnVuYywgbG9uZyByZWYsIHVuc2lnbmVkIGxvbmcgbWFzayk7CiAgICAgICAg
IHZvaWQgc3RlbmNpbE1hc2sodW5zaWduZWQgbG9uZyk7CkBAIC0yNjgsOCArMjY4LDggQEAgY2xh
c3MgV2ViS2l0Q1NTTWF0cml4OwogICAgICAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYobG9uZyBs
b2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIFdlYkdMRmxvYXRBcnJheSogdmFsdWUpOwogICAgICAg
ICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIGZs
b2F0KiB2YWx1ZSwgaW50IHNpemUpOwogCi0gICAgICAgIHZvaWQgdXNlUHJvZ3JhbShXZWJHTFBy
b2dyYW0qKTsKLSAgICAgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oV2ViR0xQcm9ncmFtKik7Cisg
ICAgICAgIHZvaWQgdXNlUHJvZ3JhbShXZWJHTFByb2dyYW0qLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgICAgIHZvaWQgdmFsaWRhdGVQcm9ncmFtKFdlYkdMUHJvZ3JhbSosIEV4Y2VwdGlvbkNvZGUm
KTsKIAogICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjFmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxv
YXQgeCk7CiAgICAgICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KHVuc2lnbmVkIGxvbmcgaW5keCwg
V2ViR0xGbG9hdEFycmF5KiB2YWx1ZXMpOwpAQCAtMjg0LDcgKzI4NCw3IEBAIGNsYXNzIFdlYktp
dENTU01hdHJpeDsKICAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYodW5zaWduZWQgbG9uZyBp
bmR4LCBXZWJHTEZsb2F0QXJyYXkqIHZhbHVlcyk7CiAgICAgICAgIHZvaWQgdmVydGV4QXR0cmli
NGZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHZhbHVlcywgaW50IHNpemUpOwogICAgICAg
ICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIodW5zaWduZWQgbG9uZyBpbmR4LCBsb25nIHNpemUs
IHVuc2lnbmVkIGxvbmcgdHlwZSwgYm9vbCBub3JtYWxpemVkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdHJpZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RyaWRl
LCB1bnNpZ25lZCBsb25nIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIHZvaWQg
dmlld3BvcnQobG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxv
bmcgaGVpZ2h0KTsKIApAQCAtMzE0LDEyICszMTQsMjkgQEAgY2xhc3MgV2ViS2l0Q1NTTWF0cml4
OwogICAgICAgICAgICAgICAgIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgICAgICB9CiAgICAg
ICAgIAorICAgICAgICBib29sIHZhbGlkYXRlSW5kZXhBcnJheSh1bnNpZ25lZCBsb25nIGNvdW50
LCB1bnNpZ25lZCBsb25nIHR5cGUsIGxvbmcgb2Zmc2V0LCBsb25nJiBudW1FbGVtZW50cyk7Cisg
ICAgICAgIGJvb2wgdmFsaWRhdGVSZW5kZXJpbmdTdGF0ZShsb25nIG51bUVsZW1lbnRzKTsKKwog
ICAgICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKICAgICAgICAgYm9v
bCBtX25lZWRzVXBkYXRlOwogICAgICAgICBib29sIG1fbWFya2VkQ2FudmFzRGlydHk7CiAgICAg
ICAgIC8vIEZJWE1FOiBJIHRoaW5rIHRoaXMgaXMgYnJva2VuIC0tIGl0IGRvZXMgbm90IGluY3Jl
bWVudCBhbnkKICAgICAgICAgLy8gcmVmZXJlbmNlIGNvdW50cywgc28gbWF5IHJlZmVyIHRvIGRl
c3Ryb3llZCBvYmplY3RzLgotICAgICAgICBIYXNoU2V0PENhbnZhc09iamVjdCo+IG1fY2FudmFz
T2JqZWN0czsKKyAgICAgICAgSGFzaFNldDxSZWZQdHI8Q2FudmFzT2JqZWN0PiA+IG1fY2FudmFz
T2JqZWN0czsKKyAgICAgICAgCisgICAgICAgIC8vIExpc3Qgb2YgYm91bmQgVkJPJ3MuIFVzZWQg
dG8gbWFpbnRhaW4gaW5mbyBhYm91dCBzaXplcyBmb3IgQVJSQVlfQlVGRkVSIGFuZCBzdG9yZWQg
dmFsdWVzIGZvciBFTEVNRU5UX0FSUkFZX0JVRkZFUgorICAgICAgICBSZWZQdHI8V2ViR0xCdWZm
ZXI+IG1fYm91bmRBcnJheUJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBtX2Jv
dW5kRWxlbWVudEFycmF5QnVmZmVyOworICAgIAorICAgICAgICAvLyBDYWNoZWQgdmFsdWVzIGZv
ciB2ZXJ0ZXggYXR0cmliIHJhbmdlIGNoZWNrcworICAgICAgICBjbGFzcyBWZXJ0ZXhBdHRyaWJT
dGF0ZSB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIFZlcnRleEF0dHJpYlN0YXRlKCkg
OiBlbmFibGVkKGZhbHNlKSwgbnVtRWxlbWVudHMoMCkgeyB9CisgICAgICAgICAgICBib29sIGVu
YWJsZWQ7CisgICAgICAgICAgICBsb25nIG51bUVsZW1lbnRzOworICAgICAgICB9OworICAgICAg
ICAKKyAgICAgICAgVmVjdG9yPFZlcnRleEF0dHJpYlN0YXRlPiBtX3ZlcnRleEF0dHJpYlN0YXRl
OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlzaW9uIDUwOTEzKQorKysg
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC00NzIsMTMgKzQ3MiwxNCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIHZvaWQgICAg
ICAgICBibGVuZEVxdWF0aW9uU2VwYXJhdGUoaW4gdW5zaWduZWQgbG9uZyBtb2RlUkdCLCBpbiB1
bnNpZ25lZCBsb25nIG1vZGVBbHBoYSk7CiAgICAgICAgIHZvaWQgICAgICAgICBibGVuZEZ1bmMo
aW4gdW5zaWduZWQgbG9uZyBzZmFjdG9yLCBpbiB1bnNpZ25lZCBsb25nIGRmYWN0b3IpOwogICAg
ICAgICB2b2lkICAgICAgICAgYmxlbmRGdW5jU2VwYXJhdGUoaW4gdW5zaWduZWQgbG9uZyBzcmNS
R0IsIGluIHVuc2lnbmVkIGxvbmcgZHN0UkdCLCBpbiB1bnNpZ25lZCBsb25nIHNyY0FscGhhLCBp
biB1bnNpZ25lZCBsb25nIGRzdEFscGhhKTsKKwogICAgICAgICAvLyBTdXBwb3J0ZWQgZm9ybXM6
CiAgICAgICAgIC8vICAgdm9pZCBidWZmZXJEYXRhIChpbiBHTGVudW0gdGFyZ2V0LCBpbiBHTHNp
emVpIHNpemUsIGluIEdMZW51bSB1c2FnZSk7CiAgICAgICAgIC8vICAgdm9pZCBidWZmZXJEYXRh
IChpbiBHTGVudW0gdGFyZ2V0LCBpbiBXZWJHTEFycmF5IGRhdGEsIGluIEdMZW51bSB1c2FnZSk7
Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgYnVmZmVyRGF0YSgpOworICAgICAgICBbQ3VzdG9tXSB2
b2lkIGJ1ZmZlckRhdGEoKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgLy8gU3VwcG9y
dGVkIGZvcm1zOgogICAgICAgICAvLyAgIHZvaWQgYnVmZmVyU3ViRGF0YSAoaW4gR0xlbnVtIHRh
cmdldCwgaW4gR0xzaXplaXB0ciBvZmZzZXQsIGluIFdlYkdMQXJyYXkgZGF0YSk7Ci0gICAgICAg
IFtDdXN0b21dIHZvaWQgYnVmZmVyU3ViRGF0YSgpOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGJ1
ZmZlclN1YkRhdGEoKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICB1bnNpZ25lZCBs
b25nIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQpOwogICAg
ICAgICB2b2lkICAgICAgICAgY2xlYXIoaW4gdW5zaWduZWQgbG9uZyBtYXNrKTsKQEAgLTUxNyw4
ICs1MTgsOCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIHZvaWQgICAgICAgICBkZXRhY2hTaGFk
ZXIoaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIFdlYkdMU2hhZGVyIHNoYWRlcikgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgICAgICAgICBkaXNhYmxlKGluIHVuc2lnbmVk
IGxvbmcgY2FwKTsKICAgICAgICAgdm9pZCAgICAgICAgIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJh
eShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICAgICAgdm9pZCAgICAgICAgIGRyYXdBcnJh
eXMoaW4gdW5zaWduZWQgbG9uZyBtb2RlLCBpbiBsb25nIGZpcnN0LCBpbiB1bnNpZ25lZCBsb25n
IGNvdW50KTsKLSAgICAgICAgdm9pZCAgICAgICAgIGRyYXdFbGVtZW50cyAoaW4gdW5zaWduZWQg
bG9uZyBtb2RlLCBpbiBsb25nIGNvdW50LCBpbiB1bnNpZ25lZCBsb25nIHR5cGUsIGluIHVuc2ln
bmVkIGxvbmcgb2Zmc2V0KTsKKyAgICAgICAgdm9pZCAgICAgICAgIGRyYXdBcnJheXMoaW4gdW5z
aWduZWQgbG9uZyBtb2RlLCBpbiBsb25nIGZpcnN0LCBpbiB1bnNpZ25lZCBsb25nIGNvdW50KSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCAgICAgICAgIGRyYXdFbGVtZW50cyAo
aW4gdW5zaWduZWQgbG9uZyBtb2RlLCBpbiBsb25nIGNvdW50LCBpbiB1bnNpZ25lZCBsb25nIHR5
cGUsIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAg
ICAgICB2b2lkICAgICAgICAgZW5hYmxlKGluIHVuc2lnbmVkIGxvbmcgY2FwKTsKICAgICAgICAg
dm9pZCAgICAgICAgIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluIHVuc2lnbmVkIGxvbmcgaW5k
ZXgpOwpAQCAtNjY5LDggKzY3MCw4IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgW0N1c3RvbV0g
dm9pZCB1bmlmb3JtTWF0cml4M2Z2KGluIGxvbmcgbG9jYXRpb24sIGluIGJvb2xlYW4gdHJhbnNw
b3NlLCBpbiBXZWJHTEZsb2F0QXJyYXkgYXJyYXkpOwogICAgICAgICBbQ3VzdG9tXSB2b2lkIHVu
aWZvcm1NYXRyaXg0ZnYoaW4gbG9uZyBsb2NhdGlvbiwgaW4gYm9vbGVhbiB0cmFuc3Bvc2UsIGlu
IFdlYkdMRmxvYXRBcnJheSBhcnJheSk7CiAKLSAgICAgICAgdm9pZCAgICAgICAgIHVzZVByb2dy
YW0oaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0pOwotICAgICAgICB2b2lkICAgICAgICAgdmFsaWRh
dGVQcm9ncmFtKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtKTsKKyAgICAgICAgdm9pZCAgICAgICAg
IHVzZVByb2dyYW0oaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0pIHJhaXNlcyhET01FeGNlcHRpb24p
OworICAgICAgICB2b2lkICAgICAgICAgdmFsaWRhdGVQcm9ncmFtKGluIFdlYkdMUHJvZ3JhbSBw
cm9ncmFtKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICB2b2lkICAgICAgICAgdmVy
dGV4QXR0cmliMWYoaW4gdW5zaWduZWQgbG9uZyBpbmR4LCBpbiBmbG9hdCB4KTsKICAgICAgICAg
W0N1c3RvbV0gdm9pZCAgICAgICAgIHZlcnRleEF0dHJpYjFmdihpbiB1bnNpZ25lZCBsb25nIGlu
ZHgsIGluIFdlYkdMRmxvYXRBcnJheSB2YWx1ZXMpOwpAQCAtNjgxLDcgKzY4Miw3IEBAIG1vZHVs
ZSBodG1sIHsKICAgICAgICAgdm9pZCAgICAgICAgIHZlcnRleEF0dHJpYjRmKGluIHVuc2lnbmVk
IGxvbmcgaW5keCwgaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSwgaW4gZmxvYXQgeiwgaW4gZmxvYXQg
dyk7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgICAgICAgICB2ZXJ0ZXhBdHRyaWI0ZnYoaW4gdW5z
aWduZWQgbG9uZyBpbmR4LCBpbiBXZWJHTEZsb2F0QXJyYXkgdmFsdWVzKTsKICAgICAgICAgdm9p
ZCAgICAgICAgIHZlcnRleEF0dHJpYlBvaW50ZXIoaW4gdW5zaWduZWQgbG9uZyBpbmR4LCBpbiBs
b25nIHNpemUsIGluIHVuc2lnbmVkIGxvbmcgdHlwZSwgaW4gYm9vbGVhbiBub3JtYWxpemVkLCAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gbG9uZyBzdHJpZGUs
IGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gbG9uZyBzdHJpZGUsIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KSByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICB2b2lkICAgICAgICAgdmlld3BvcnQoaW4gbG9u
ZyB4LCBpbiBsb25nIHksIGluIHVuc2lnbmVkIGxvbmcgd2lkdGgsIGluIHVuc2lnbmVkIGxvbmcg
aGVpZ2h0KTsKICAgICB9OwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAJKHJl
dmlzaW9uIDUwOTEzKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDEyICszMiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgCi1QYXNzUmVmUHRyPFdlYkdMU2hhZGVyPiBXZWJHTFNoYWRlcjo6Y3JlYXRlKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dCogY3R4LCBHcmFwaGljc0NvbnRleHQzRDo6U2hhZGVyVHlwZSB0eXBlKQor
UGFzc1JlZlB0cjxXZWJHTFNoYWRlcj4gV2ViR0xTaGFkZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmlu
Z0NvbnRleHQqIGN0eCwgdW5zaWduZWQgbG9uZyB0eXBlKQogewogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViR0xTaGFkZXIoY3R4LCB0eXBlKSk7CiB9CiAKLVdlYkdMU2hhZGVyOjpXZWJHTFNo
YWRlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCwgR3JhcGhpY3NDb250ZXh0M0Q6OlNoYWRl
clR5cGUgdHlwZSkKK1dlYkdMU2hhZGVyOjpXZWJHTFNoYWRlcihXZWJHTFJlbmRlcmluZ0NvbnRl
eHQqIGN0eCwgdW5zaWduZWQgbG9uZyB0eXBlKQogICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKIHsK
ICAgICBzZXRPYmplY3QoY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVTaGFk
ZXIodHlwZSkpOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaAkocmV2aXNpb24gNTA5
MTMpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDEwICszNywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAg
ICAgICB2aXJ0dWFsIH5XZWJHTFNoYWRlcigpIHsgZGVsZXRlT2JqZWN0KCk7IH0KICAgICAgICAg
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMU2hhZGVyPiBjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0KiwgR3JhcGhpY3NDb250ZXh0M0Q6OlNoYWRlclR5cGUpOworICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJHTFNoYWRlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dCosIHVuc2lnbmVkIGxvbmcpOwogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBXZWJH
TFNoYWRlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBHcmFwaGljc0NvbnRleHQzRDo6U2hhZGVy
VHlwZSk7CisgICAgICAgIFdlYkdMU2hhZGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIHVuc2ln
bmVkIGxvbmcpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBfZGVsZXRlT2JqZWN0KFBsYXRmb3Jt
M0RPYmplY3QpOwogICAgIH07CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA1MDkxMykKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsOCArNzYs
MzA5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNE
IDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gU2hhZGVy
VHlwZSB7IEZSQUdNRU5UX1NIQURFUiwgVkVSVEVYX1NIQURFUiB9OwotICAgIAorICAgICAgICBl
bnVtIHsKKyAgICAgICAgICAgIERFUFRIX0JVRkZFUl9CSVQgPSAweDAwMDAwMTAwLAorICAgICAg
ICAgICAgU1RFTkNJTF9CVUZGRVJfQklUID0gMHgwMDAwMDQwMCwKKyAgICAgICAgICAgIENPTE9S
X0JVRkZFUl9CSVQgPSAweDAwMDA0MDAwLAorICAgICAgICAgICAgUE9JTlRTID0gMHgwMDAwLAor
ICAgICAgICAgICAgTElORVMgPSAweDAwMDEsCisgICAgICAgICAgICBMSU5FX0xPT1AgPSAweDAw
MDIsCisgICAgICAgICAgICBMSU5FX1NUUklQID0gMHgwMDAzLAorICAgICAgICAgICAgVFJJQU5H
TEVTID0gMHgwMDA0LAorICAgICAgICAgICAgVFJJQU5HTEVfU1RSSVAgPSAweDAwMDUsCisgICAg
ICAgICAgICBUUklBTkdMRV9GQU4gPSAweDAwMDYsCisgICAgICAgICAgICBaRVJPID0gMCwKKyAg
ICAgICAgICAgIE9ORSA9IDEsCisgICAgICAgICAgICBTUkNfQ09MT1IgPSAweDAzMDAsCisgICAg
ICAgICAgICBPTkVfTUlOVVNfU1JDX0NPTE9SID0gMHgwMzAxLAorICAgICAgICAgICAgU1JDX0FM
UEhBID0gMHgwMzAyLAorICAgICAgICAgICAgT05FX01JTlVTX1NSQ19BTFBIQSA9IDB4MDMwMywK
KyAgICAgICAgICAgIERTVF9BTFBIQSA9IDB4MDMwNCwKKyAgICAgICAgICAgIE9ORV9NSU5VU19E
U1RfQUxQSEEgPSAweDAzMDUsCisgICAgICAgICAgICBEU1RfQ09MT1IgPSAweDAzMDYsCisgICAg
ICAgICAgICBPTkVfTUlOVVNfRFNUX0NPTE9SID0gMHgwMzA3LAorICAgICAgICAgICAgU1JDX0FM
UEhBX1NBVFVSQVRFID0gMHgwMzA4LAorICAgICAgICAgICAgRlVOQ19BREQgPSAweDgwMDYsCisg
ICAgICAgICAgICBCTEVORF9FUVVBVElPTiA9IDB4ODAwOSwKKyAgICAgICAgICAgIEJMRU5EX0VR
VUFUSU9OX1JHQiA9IDB4ODAwOSwKKyAgICAgICAgICAgIEJMRU5EX0VRVUFUSU9OX0FMUEhBID0g
MHg4ODNELAorICAgICAgICAgICAgRlVOQ19TVUJUUkFDVCA9IDB4ODAwQSwKKyAgICAgICAgICAg
IEZVTkNfUkVWRVJTRV9TVUJUUkFDVCA9IDB4ODAwQiwKKyAgICAgICAgICAgIEJMRU5EX0RTVF9S
R0IgPSAweDgwQzgsCisgICAgICAgICAgICBCTEVORF9TUkNfUkdCID0gMHg4MEM5LAorICAgICAg
ICAgICAgQkxFTkRfRFNUX0FMUEhBID0gMHg4MENBLAorICAgICAgICAgICAgQkxFTkRfU1JDX0FM
UEhBID0gMHg4MENCLAorICAgICAgICAgICAgQ09OU1RBTlRfQ09MT1IgPSAweDgwMDEsCisgICAg
ICAgICAgICBPTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IgPSAweDgwMDIsCisgICAgICAgICAgICBD
T05TVEFOVF9BTFBIQSA9IDB4ODAwMywKKyAgICAgICAgICAgIE9ORV9NSU5VU19DT05TVEFOVF9B
TFBIQSA9IDB4ODAwNCwKKyAgICAgICAgICAgIEJMRU5EX0NPTE9SID0gMHg4MDA1LAorICAgICAg
ICAgICAgQVJSQVlfQlVGRkVSID0gMHg4ODkyLAorICAgICAgICAgICAgRUxFTUVOVF9BUlJBWV9C
VUZGRVIgPSAweDg4OTMsCisgICAgICAgICAgICBBUlJBWV9CVUZGRVJfQklORElORyA9IDB4ODg5
NCwKKyAgICAgICAgICAgIEVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcgPSAweDg4OTUsCisg
ICAgICAgICAgICBTVFJFQU1fRFJBVyA9IDB4ODhFMCwKKyAgICAgICAgICAgIFNUQVRJQ19EUkFX
ID0gMHg4OEU0LAorICAgICAgICAgICAgRFlOQU1JQ19EUkFXID0gMHg4OEU4LAorICAgICAgICAg
ICAgQlVGRkVSX1NJWkUgPSAweDg3NjQsCisgICAgICAgICAgICBCVUZGRVJfVVNBR0UgPSAweDg3
NjUsCisgICAgICAgICAgICBDVVJSRU5UX1ZFUlRFWF9BVFRSSUIgPSAweDg2MjYsCisgICAgICAg
ICAgICBGUk9OVCA9IDB4MDQwNCwKKyAgICAgICAgICAgIEJBQ0sgPSAweDA0MDUsCisgICAgICAg
ICAgICBGUk9OVF9BTkRfQkFDSyA9IDB4MDQwOCwKKyAgICAgICAgICAgIFRFWFRVUkVfMkQgPSAw
eDBERTEsCisgICAgICAgICAgICBDVUxMX0ZBQ0UgPSAweDBCNDQsCisgICAgICAgICAgICBCTEVO
RCA9IDB4MEJFMiwKKyAgICAgICAgICAgIERJVEhFUiA9IDB4MEJEMCwKKyAgICAgICAgICAgIFNU
RU5DSUxfVEVTVCA9IDB4MEI5MCwKKyAgICAgICAgICAgIERFUFRIX1RFU1QgPSAweDBCNzEsCisg
ICAgICAgICAgICBTQ0lTU09SX1RFU1QgPSAweDBDMTEsCisgICAgICAgICAgICBQT0xZR09OX09G
RlNFVF9GSUxMID0gMHg4MDM3LAorICAgICAgICAgICAgU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdF
ID0gMHg4MDlFLAorICAgICAgICAgICAgU0FNUExFX0NPVkVSQUdFID0gMHg4MEEwLAorICAgICAg
ICAgICAgTk9fRVJST1IgPSAwLAorICAgICAgICAgICAgSU5WQUxJRF9FTlVNID0gMHgwNTAwLAor
ICAgICAgICAgICAgSU5WQUxJRF9WQUxVRSA9IDB4MDUwMSwKKyAgICAgICAgICAgIElOVkFMSURf
T1BFUkFUSU9OID0gMHgwNTAyLAorICAgICAgICAgICAgT1VUX09GX01FTU9SWSA9IDB4MDUwNSwK
KyAgICAgICAgICAgIENXID0gMHgwOTAwLAorICAgICAgICAgICAgQ0NXID0gMHgwOTAxLAorICAg
ICAgICAgICAgTElORV9XSURUSCA9IDB4MEIyMSwKKyAgICAgICAgICAgIEFMSUFTRURfUE9JTlRf
U0laRV9SQU5HRSA9IDB4ODQ2RCwKKyAgICAgICAgICAgIEFMSUFTRURfTElORV9XSURUSF9SQU5H
RSA9IDB4ODQ2RSwKKyAgICAgICAgICAgIENVTExfRkFDRV9NT0RFID0gMHgwQjQ1LAorICAgICAg
ICAgICAgRlJPTlRfRkFDRSA9IDB4MEI0NiwKKyAgICAgICAgICAgIERFUFRIX1JBTkdFID0gMHgw
QjcwLAorICAgICAgICAgICAgREVQVEhfV1JJVEVNQVNLID0gMHgwQjcyLAorICAgICAgICAgICAg
REVQVEhfQ0xFQVJfVkFMVUUgPSAweDBCNzMsCisgICAgICAgICAgICBERVBUSF9GVU5DID0gMHgw
Qjc0LAorICAgICAgICAgICAgU1RFTkNJTF9DTEVBUl9WQUxVRSA9IDB4MEI5MSwKKyAgICAgICAg
ICAgIFNURU5DSUxfRlVOQyA9IDB4MEI5MiwKKyAgICAgICAgICAgIFNURU5DSUxfRkFJTCA9IDB4
MEI5NCwKKyAgICAgICAgICAgIFNURU5DSUxfUEFTU19ERVBUSF9GQUlMID0gMHgwQjk1LAorICAg
ICAgICAgICAgU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MgPSAweDBCOTYsCisgICAgICAgICAgICBT
VEVOQ0lMX1JFRiA9IDB4MEI5NywKKyAgICAgICAgICAgIFNURU5DSUxfVkFMVUVfTUFTSyA9IDB4
MEI5MywKKyAgICAgICAgICAgIFNURU5DSUxfV1JJVEVNQVNLID0gMHgwQjk4LAorICAgICAgICAg
ICAgU1RFTkNJTF9CQUNLX0ZVTkMgPSAweDg4MDAsCisgICAgICAgICAgICBTVEVOQ0lMX0JBQ0tf
RkFJTCA9IDB4ODgwMSwKKyAgICAgICAgICAgIFNURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwg
PSAweDg4MDIsCisgICAgICAgICAgICBTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTID0gMHg4
ODAzLAorICAgICAgICAgICAgU1RFTkNJTF9CQUNLX1JFRiA9IDB4OENBMywKKyAgICAgICAgICAg
IFNURU5DSUxfQkFDS19WQUxVRV9NQVNLID0gMHg4Q0E0LAorICAgICAgICAgICAgU1RFTkNJTF9C
QUNLX1dSSVRFTUFTSyA9IDB4OENBNSwKKyAgICAgICAgICAgIFZJRVdQT1JUID0gMHgwQkEyLAor
ICAgICAgICAgICAgU0NJU1NPUl9CT1ggPSAweDBDMTAsCisgICAgICAgICAgICBDT0xPUl9DTEVB
Ul9WQUxVRSA9IDB4MEMyMiwKKyAgICAgICAgICAgIENPTE9SX1dSSVRFTUFTSyA9IDB4MEMyMywK
KyAgICAgICAgICAgIFVOUEFDS19BTElHTk1FTlQgPSAweDBDRjUsCisgICAgICAgICAgICBQQUNL
X0FMSUdOTUVOVCA9IDB4MEQwNSwKKyAgICAgICAgICAgIE1BWF9URVhUVVJFX1NJWkUgPSAweDBE
MzMsCisgICAgICAgICAgICBNQVhfVklFV1BPUlRfRElNUyA9IDB4MEQzQSwKKyAgICAgICAgICAg
IFNVQlBJWEVMX0JJVFMgPSAweDBENTAsCisgICAgICAgICAgICBSRURfQklUUyA9IDB4MEQ1MiwK
KyAgICAgICAgICAgIEdSRUVOX0JJVFMgPSAweDBENTMsCisgICAgICAgICAgICBCTFVFX0JJVFMg
PSAweDBENTQsCisgICAgICAgICAgICBBTFBIQV9CSVRTID0gMHgwRDU1LAorICAgICAgICAgICAg
REVQVEhfQklUUyA9IDB4MEQ1NiwKKyAgICAgICAgICAgIFNURU5DSUxfQklUUyA9IDB4MEQ1NywK
KyAgICAgICAgICAgIFBPTFlHT05fT0ZGU0VUX1VOSVRTID0gMHgyQTAwLAorICAgICAgICAgICAg
UE9MWUdPTl9PRkZTRVRfRkFDVE9SID0gMHg4MDM4LAorICAgICAgICAgICAgVEVYVFVSRV9CSU5E
SU5HXzJEID0gMHg4MDY5LAorICAgICAgICAgICAgU0FNUExFX0JVRkZFUlMgPSAweDgwQTgsCisg
ICAgICAgICAgICBTQU1QTEVTID0gMHg4MEE5LAorICAgICAgICAgICAgU0FNUExFX0NPVkVSQUdF
X1ZBTFVFID0gMHg4MEFBLAorICAgICAgICAgICAgU0FNUExFX0NPVkVSQUdFX0lOVkVSVCA9IDB4
ODBBQiwKKyAgICAgICAgICAgIE5VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyA9IDB4ODZB
MiwKKyAgICAgICAgICAgIENPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTID0gMHg4NkEzLAorICAg
ICAgICAgICAgRE9OVF9DQVJFID0gMHgxMTAwLAorICAgICAgICAgICAgRkFTVEVTVCA9IDB4MTEw
MSwKKyAgICAgICAgICAgIE5JQ0VTVCA9IDB4MTEwMiwKKyAgICAgICAgICAgIEdFTkVSQVRFX01J
UE1BUF9ISU5UID0gMHg4MTkyLAorICAgICAgICAgICAgQllURSA9IDB4MTQwMCwKKyAgICAgICAg
ICAgIFVOU0lHTkVEX0JZVEUgPSAweDE0MDEsCisgICAgICAgICAgICBTSE9SVCA9IDB4MTQwMiwK
KyAgICAgICAgICAgIFVOU0lHTkVEX1NIT1JUID0gMHgxNDAzLAorICAgICAgICAgICAgSU5UID0g
MHgxNDA0LAorICAgICAgICAgICAgVU5TSUdORURfSU5UID0gMHgxNDA1LAorICAgICAgICAgICAg
RkxPQVQgPSAweDE0MDYsCisgICAgICAgICAgICBGSVhFRCA9IDB4MTQwQywKKyAgICAgICAgICAg
IERFUFRIX0NPTVBPTkVOVCA9IDB4MTkwMiwKKyAgICAgICAgICAgIEFMUEhBID0gMHgxOTA2LAor
ICAgICAgICAgICAgUkdCID0gMHgxOTA3LAorICAgICAgICAgICAgUkdCQSA9IDB4MTkwOCwKKyAg
ICAgICAgICAgIExVTUlOQU5DRSA9IDB4MTkwOSwKKyAgICAgICAgICAgIExVTUlOQU5DRV9BTFBI
QSA9IDB4MTkwQSwKKyAgICAgICAgICAgIFVOU0lHTkVEX1NIT1JUXzRfNF80XzQgPSAweDgwMzMs
CisgICAgICAgICAgICBVTlNJR05FRF9TSE9SVF81XzVfNV8xID0gMHg4MDM0LAorICAgICAgICAg
ICAgVU5TSUdORURfU0hPUlRfNV82XzUgPSAweDgzNjMsCisgICAgICAgICAgICBGUkFHTUVOVF9T
SEFERVIgPSAweDhCMzAsCisgICAgICAgICAgICBWRVJURVhfU0hBREVSID0gMHg4QjMxLAorICAg
ICAgICAgICAgTUFYX1ZFUlRFWF9BVFRSSUJTID0gMHg4ODY5LAorICAgICAgICAgICAgTUFYX1ZF
UlRFWF9VTklGT1JNX1ZFQ1RPUlMgPSAweDhERkIsCisgICAgICAgICAgICBNQVhfVkFSWUlOR19W
RUNUT1JTID0gMHg4REZDLAorICAgICAgICAgICAgTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0Vf
VU5JVFMgPSAweDhCNEQsCisgICAgICAgICAgICBNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5J
VFMgPSAweDhCNEMsCisgICAgICAgICAgICBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyA9IDB4ODg3
MiwKKyAgICAgICAgICAgIE1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMgPSAweDhERkQsCisg
ICAgICAgICAgICBTSEFERVJfVFlQRSA9IDB4OEI0RiwKKyAgICAgICAgICAgIERFTEVURV9TVEFU
VVMgPSAweDhCODAsCisgICAgICAgICAgICBMSU5LX1NUQVRVUyA9IDB4OEI4MiwKKyAgICAgICAg
ICAgIFZBTElEQVRFX1NUQVRVUyA9IDB4OEI4MywKKyAgICAgICAgICAgIEFUVEFDSEVEX1NIQURF
UlMgPSAweDhCODUsCisgICAgICAgICAgICBBQ1RJVkVfVU5JRk9STVMgPSAweDhCODYsCisgICAg
ICAgICAgICBBQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIID0gMHg4Qjg3LAorICAgICAgICAgICAg
QUNUSVZFX0FUVFJJQlVURVMgPSAweDhCODksCisgICAgICAgICAgICBBQ1RJVkVfQVRUUklCVVRF
X01BWF9MRU5HVEggPSAweDhCOEEsCisgICAgICAgICAgICBTSEFESU5HX0xBTkdVQUdFX1ZFUlNJ
T04gPSAweDhCOEMsCisgICAgICAgICAgICBDVVJSRU5UX1BST0dSQU0gPSAweDhCOEQsCisgICAg
ICAgICAgICBORVZFUiA9IDB4MDIwMCwKKyAgICAgICAgICAgIExFU1MgPSAweDAyMDEsCisgICAg
ICAgICAgICBFUVVBTCA9IDB4MDIwMiwKKyAgICAgICAgICAgIExFUVVBTCA9IDB4MDIwMywKKyAg
ICAgICAgICAgIEdSRUFURVIgPSAweDAyMDQsCisgICAgICAgICAgICBOT1RFUVVBTCA9IDB4MDIw
NSwKKyAgICAgICAgICAgIEdFUVVBTCA9IDB4MDIwNiwKKyAgICAgICAgICAgIEFMV0FZUyA9IDB4
MDIwNywKKyAgICAgICAgICAgIEtFRVAgPSAweDFFMDAsCisgICAgICAgICAgICBSRVBMQUNFID0g
MHgxRTAxLAorICAgICAgICAgICAgSU5DUiA9IDB4MUUwMiwKKyAgICAgICAgICAgIERFQ1IgPSAw
eDFFMDMsCisgICAgICAgICAgICBJTlZFUlQgPSAweDE1MEEsCisgICAgICAgICAgICBJTkNSX1dS
QVAgPSAweDg1MDcsCisgICAgICAgICAgICBERUNSX1dSQVAgPSAweDg1MDgsCisgICAgICAgICAg
ICBWRU5ET1IgPSAweDFGMDAsCisgICAgICAgICAgICBSRU5ERVJFUiA9IDB4MUYwMSwKKyAgICAg
ICAgICAgIFZFUlNJT04gPSAweDFGMDIsCisgICAgICAgICAgICBFWFRFTlNJT05TID0gMHgxRjAz
LAorICAgICAgICAgICAgTkVBUkVTVCA9IDB4MjYwMCwKKyAgICAgICAgICAgIExJTkVBUiA9IDB4
MjYwMSwKKyAgICAgICAgICAgIE5FQVJFU1RfTUlQTUFQX05FQVJFU1QgPSAweDI3MDAsCisgICAg
ICAgICAgICBMSU5FQVJfTUlQTUFQX05FQVJFU1QgPSAweDI3MDEsCisgICAgICAgICAgICBORUFS
RVNUX01JUE1BUF9MSU5FQVIgPSAweDI3MDIsCisgICAgICAgICAgICBMSU5FQVJfTUlQTUFQX0xJ
TkVBUiA9IDB4MjcwMywKKyAgICAgICAgICAgIFRFWFRVUkVfTUFHX0ZJTFRFUiA9IDB4MjgwMCwK
KyAgICAgICAgICAgIFRFWFRVUkVfTUlOX0ZJTFRFUiA9IDB4MjgwMSwKKyAgICAgICAgICAgIFRF
WFRVUkVfV1JBUF9TID0gMHgyODAyLAorICAgICAgICAgICAgVEVYVFVSRV9XUkFQX1QgPSAweDI4
MDMsCisgICAgICAgICAgICBURVhUVVJFID0gMHgxNzAyLAorICAgICAgICAgICAgVEVYVFVSRV9D
VUJFX01BUCA9IDB4ODUxMywKKyAgICAgICAgICAgIFRFWFRVUkVfQklORElOR19DVUJFX01BUCA9
IDB4ODUxNCwKKyAgICAgICAgICAgIFRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCA9IDB4ODUx
NSwKKyAgICAgICAgICAgIFRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCA9IDB4ODUxNiwKKyAg
ICAgICAgICAgIFRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSA9IDB4ODUxNywKKyAgICAgICAg
ICAgIFRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSA9IDB4ODUxOCwKKyAgICAgICAgICAgIFRF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiA9IDB4ODUxOSwKKyAgICAgICAgICAgIFRFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWiA9IDB4ODUxQSwKKyAgICAgICAgICAgIE1BWF9DVUJFX01BUF9U
RVhUVVJFX1NJWkUgPSAweDg1MUMsCisgICAgICAgICAgICBURVhUVVJFMCA9IDB4ODRDMCwKKyAg
ICAgICAgICAgIFRFWFRVUkUxID0gMHg4NEMxLAorICAgICAgICAgICAgVEVYVFVSRTIgPSAweDg0
QzIsCisgICAgICAgICAgICBURVhUVVJFMyA9IDB4ODRDMywKKyAgICAgICAgICAgIFRFWFRVUkU0
ID0gMHg4NEM0LAorICAgICAgICAgICAgVEVYVFVSRTUgPSAweDg0QzUsCisgICAgICAgICAgICBU
RVhUVVJFNiA9IDB4ODRDNiwKKyAgICAgICAgICAgIFRFWFRVUkU3ID0gMHg4NEM3LAorICAgICAg
ICAgICAgVEVYVFVSRTggPSAweDg0QzgsCisgICAgICAgICAgICBURVhUVVJFOSA9IDB4ODRDOSwK
KyAgICAgICAgICAgIFRFWFRVUkUxMCA9IDB4ODRDQSwKKyAgICAgICAgICAgIFRFWFRVUkUxMSA9
IDB4ODRDQiwKKyAgICAgICAgICAgIFRFWFRVUkUxMiA9IDB4ODRDQywKKyAgICAgICAgICAgIFRF
WFRVUkUxMyA9IDB4ODRDRCwKKyAgICAgICAgICAgIFRFWFRVUkUxNCA9IDB4ODRDRSwKKyAgICAg
ICAgICAgIFRFWFRVUkUxNSA9IDB4ODRDRiwKKyAgICAgICAgICAgIFRFWFRVUkUxNiA9IDB4ODRE
MCwKKyAgICAgICAgICAgIFRFWFRVUkUxNyA9IDB4ODREMSwKKyAgICAgICAgICAgIFRFWFRVUkUx
OCA9IDB4ODREMiwKKyAgICAgICAgICAgIFRFWFRVUkUxOSA9IDB4ODREMywKKyAgICAgICAgICAg
IFRFWFRVUkUyMCA9IDB4ODRENCwKKyAgICAgICAgICAgIFRFWFRVUkUyMSA9IDB4ODRENSwKKyAg
ICAgICAgICAgIFRFWFRVUkUyMiA9IDB4ODRENiwKKyAgICAgICAgICAgIFRFWFRVUkUyMyA9IDB4
ODRENywKKyAgICAgICAgICAgIFRFWFRVUkUyNCA9IDB4ODREOCwKKyAgICAgICAgICAgIFRFWFRV
UkUyNSA9IDB4ODREOSwKKyAgICAgICAgICAgIFRFWFRVUkUyNiA9IDB4ODREQSwKKyAgICAgICAg
ICAgIFRFWFRVUkUyNyA9IDB4ODREQiwKKyAgICAgICAgICAgIFRFWFRVUkUyOCA9IDB4ODREQywK
KyAgICAgICAgICAgIFRFWFRVUkUyOSA9IDB4ODRERCwKKyAgICAgICAgICAgIFRFWFRVUkUzMCA9
IDB4ODRERSwKKyAgICAgICAgICAgIFRFWFRVUkUzMSA9IDB4ODRERiwKKyAgICAgICAgICAgIEFD
VElWRV9URVhUVVJFID0gMHg4NEUwLAorICAgICAgICAgICAgUkVQRUFUID0gMHgyOTAxLAorICAg
ICAgICAgICAgQ0xBTVBfVE9fRURHRSA9IDB4ODEyRiwKKyAgICAgICAgICAgIE1JUlJPUkVEX1JF
UEVBVCA9IDB4ODM3MCwKKyAgICAgICAgICAgIEZMT0FUX1ZFQzIgPSAweDhCNTAsCisgICAgICAg
ICAgICBGTE9BVF9WRUMzID0gMHg4QjUxLAorICAgICAgICAgICAgRkxPQVRfVkVDNCA9IDB4OEI1
MiwKKyAgICAgICAgICAgIElOVF9WRUMyID0gMHg4QjUzLAorICAgICAgICAgICAgSU5UX1ZFQzMg
PSAweDhCNTQsCisgICAgICAgICAgICBJTlRfVkVDNCA9IDB4OEI1NSwKKyAgICAgICAgICAgIEJP
T0wgPSAweDhCNTYsCisgICAgICAgICAgICBCT09MX1ZFQzIgPSAweDhCNTcsCisgICAgICAgICAg
ICBCT09MX1ZFQzMgPSAweDhCNTgsCisgICAgICAgICAgICBCT09MX1ZFQzQgPSAweDhCNTksCisg
ICAgICAgICAgICBGTE9BVF9NQVQyID0gMHg4QjVBLAorICAgICAgICAgICAgRkxPQVRfTUFUMyA9
IDB4OEI1QiwKKyAgICAgICAgICAgIEZMT0FUX01BVDQgPSAweDhCNUMsCisgICAgICAgICAgICBT
QU1QTEVSXzJEID0gMHg4QjVFLAorICAgICAgICAgICAgU0FNUExFUl9DVUJFID0gMHg4QjYwLAor
ICAgICAgICAgICAgVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEID0gMHg4NjIyLAorICAgICAg
ICAgICAgVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFID0gMHg4NjIzLAorICAgICAgICAgICAgVkVS
VEVYX0FUVFJJQl9BUlJBWV9TVFJJREUgPSAweDg2MjQsCisgICAgICAgICAgICBWRVJURVhfQVRU
UklCX0FSUkFZX1RZUEUgPSAweDg2MjUsCisgICAgICAgICAgICBWRVJURVhfQVRUUklCX0FSUkFZ
X05PUk1BTElaRUQgPSAweDg4NkEsCisgICAgICAgICAgICBWRVJURVhfQVRUUklCX0FSUkFZX1BP
SU5URVIgPSAweDg2NDUsCisgICAgICAgICAgICBWRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9C
SU5ESU5HID0gMHg4ODlGLAorICAgICAgICAgICAgSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9U
WVBFID0gMHg4QjlBLAorICAgICAgICAgICAgSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JN
QVQgPSAweDhCOUIsCisgICAgICAgICAgICBDT01QSUxFX1NUQVRVUyA9IDB4OEI4MSwKKyAgICAg
ICAgICAgIElORk9fTE9HX0xFTkdUSCA9IDB4OEI4NCwKKyAgICAgICAgICAgIFNIQURFUl9TT1VS
Q0VfTEVOR1RIID0gMHg4Qjg4LAorICAgICAgICAgICAgU0hBREVSX0NPTVBJTEVSID0gMHg4REZB
LAorICAgICAgICAgICAgU0hBREVSX0JJTkFSWV9GT1JNQVRTID0gMHg4REY4LAorICAgICAgICAg
ICAgTlVNX1NIQURFUl9CSU5BUllfRk9STUFUUyA9IDB4OERGOSwKKyAgICAgICAgICAgIExPV19G
TE9BVCA9IDB4OERGMCwKKyAgICAgICAgICAgIE1FRElVTV9GTE9BVCA9IDB4OERGMSwKKyAgICAg
ICAgICAgIEhJR0hfRkxPQVQgPSAweDhERjIsCisgICAgICAgICAgICBMT1dfSU5UID0gMHg4REYz
LAorICAgICAgICAgICAgTUVESVVNX0lOVCA9IDB4OERGNCwKKyAgICAgICAgICAgIEhJR0hfSU5U
ID0gMHg4REY1LAorICAgICAgICAgICAgRlJBTUVCVUZGRVIgPSAweDhENDAsCisgICAgICAgICAg
ICBSRU5ERVJCVUZGRVIgPSAweDhENDEsCisgICAgICAgICAgICBSR0JBNCA9IDB4ODA1NiwKKyAg
ICAgICAgICAgIFJHQjVfQTEgPSAweDgwNTcsCisgICAgICAgICAgICBSR0I1NjUgPSAweDhENjIs
CisgICAgICAgICAgICBERVBUSF9DT01QT05FTlQxNiA9IDB4ODFBNSwKKyAgICAgICAgICAgIFNU
RU5DSUxfSU5ERVggPSAweDE5MDEsCisgICAgICAgICAgICBTVEVOQ0lMX0lOREVYOCA9IDB4OEQ0
OCwKKyAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9XSURUSCA9IDB4OEQ0MiwKKyAgICAgICAgICAg
IFJFTkRFUkJVRkZFUl9IRUlHSFQgPSAweDhENDMsCisgICAgICAgICAgICBSRU5ERVJCVUZGRVJf
SU5URVJOQUxfRk9STUFUID0gMHg4RDQ0LAorICAgICAgICAgICAgUkVOREVSQlVGRkVSX1JFRF9T
SVpFID0gMHg4RDUwLAorICAgICAgICAgICAgUkVOREVSQlVGRkVSX0dSRUVOX1NJWkUgPSAweDhE
NTEsCisgICAgICAgICAgICBSRU5ERVJCVUZGRVJfQkxVRV9TSVpFID0gMHg4RDUyLAorICAgICAg
ICAgICAgUkVOREVSQlVGRkVSX0FMUEhBX1NJWkUgPSAweDhENTMsCisgICAgICAgICAgICBSRU5E
RVJCVUZGRVJfREVQVEhfU0laRSA9IDB4OEQ1NCwKKyAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9T
VEVOQ0lMX1NJWkUgPSAweDhENTUsCisgICAgICAgICAgICBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X09CSkVDVF9UWVBFID0gMHg4Q0QwLAorICAgICAgICAgICAgRlJBTUVCVUZGRVJfQVRUQUNITUVO
VF9PQkpFQ1RfTkFNRSA9IDB4OENEMSwKKyAgICAgICAgICAgIEZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfVEVYVFVSRV9MRVZFTCA9IDB4OENEMiwKKyAgICAgICAgICAgIEZSQU1FQlVGRkVSX0FUVEFD
SE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFID0gMHg4Q0QzLAorICAgICAgICAgICAgQ09MT1Jf
QVRUQUNITUVOVDAgPSAweDhDRTAsCisgICAgICAgICAgICBERVBUSF9BVFRBQ0hNRU5UID0gMHg4
RDAwLAorICAgICAgICAgICAgU1RFTkNJTF9BVFRBQ0hNRU5UID0gMHg4RDIwLAorICAgICAgICAg
ICAgTk9ORSA9IDAsCisgICAgICAgICAgICBGUkFNRUJVRkZFUl9DT01QTEVURSA9IDB4OENENSwK
KyAgICAgICAgICAgIEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCA9IDB4OENENiwK
KyAgICAgICAgICAgIEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UID0g
MHg4Q0Q3LAorICAgICAgICAgICAgRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TID0g
MHg4Q0Q5LAorICAgICAgICAgICAgRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQgPSAweDhDREQsCisg
ICAgICAgICAgICBGUkFNRUJVRkZFUl9CSU5ESU5HID0gMHg4Q0E2LAorICAgICAgICAgICAgUkVO
REVSQlVGRkVSX0JJTkRJTkcgPSAweDhDQTcsCisgICAgICAgICAgICBNQVhfUkVOREVSQlVGRkVS
X1NJWkUgPSAweDg0RTgsCisgICAgICAgICAgICBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElP
TiA9IDB4MDUwNgorICAgICAgICB9OworICAgICAgICAKICAgICAgICAgc3RhdGljIFBhc3NPd25Q
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZSgpOwogICAgICAgICB2aXJ0dWFsIH5HcmFwaGlj
c0NvbnRleHQzRCgpOwogCkBAIC0zMDMsNyArNjA0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB1bnNpZ25lZCBjcmVhdGVGcmFtZWJ1ZmZlcigpOwogICAgICAgICB1bnNpZ25lZCBj
cmVhdGVQcm9ncmFtKCk7CiAgICAgICAgIHVuc2lnbmVkIGNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwot
ICAgICAgICB1bnNpZ25lZCBjcmVhdGVTaGFkZXIoU2hhZGVyVHlwZSk7CisgICAgICAgIHVuc2ln
bmVkIGNyZWF0ZVNoYWRlcih1bnNpZ25lZCBsb25nKTsKICAgICAgICAgdW5zaWduZWQgY3JlYXRl
VGV4dHVyZSgpOwogICAgICAgICAKICAgICAgICAgdm9pZCBkZWxldGVCdWZmZXIodW5zaWduZWQp
OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RN
YWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBo
aWNzQ29udGV4dDNETWFjLmNwcAkocmV2aXNpb24gNTA5MTMpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2ODMsNyArMTY4Myw3IEBAIHVuc2lnbmVkIEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVSZW5k
ZXIKICAgICByZXR1cm4gbzsKIH0KIAotdW5zaWduZWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZVNoYWRlcihTaGFkZXJUeXBlIHR5cGUpCit1bnNpZ25lZCBHcmFwaGljc0NvbnRleHQzRDo6Y3Jl
YXRlU2hhZGVyKHVuc2lnbmVkIGxvbmcgdHlwZSkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29u
dGV4dE9iaik7CiAgICAgcmV0dXJuIGdsQ3JlYXRlU2hhZGVyKCh0eXBlID09IEZSQUdNRU5UX1NI
QURFUikgPyBHTF9GUkFHTUVOVF9TSEFERVIgOiBHTF9WRVJURVhfU0hBREVSKTsK
</data>
<flag name="review"
          id="24860"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43212</attachid>
            <date>2009-11-13 16:15:35 -0800</date>
            <delta_ts>2009-11-23 13:50:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>31239.patch</filename>
            <type>text/plain</type>
            <size>59820</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDk3NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODAgQEAKKzIwMDktMTEtMTMgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCByYW5nZSBjaGVja3MgdG8gcmVuZGVyaW5nIGNhbGxzIGluIFdlYkdMCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTIzOQorCisgICAgICAgIEkgYW0g
bm93IHRyYWNraW5nIHRoZSBzaXplIG9mIHRoZSBkYXRhIGluIGVhY2ggQ2FudmFzQnVmZmVyIG9i
amVjdAorICAgICAgICBhbmQga2VlcGluZyB0cmFjayBvZiB0aGUgYnVmZmVyIHNpemUgb2YgZWFj
aCBhY3RpdmUgdmVydGV4IGF0dHJpYi4KKyAgICAgICAgSW4gZHJhd0FycmF5cyBhbmQgZHJhd0Vs
ZW1lbnRzIEkgbWFrZSBzdXJlIG5vIGF0dGVtcHQgaXMgbWFkZSB0bworICAgICAgICBhY2Nlc3Mg
ZWxlbWVudHMgb3V0c2lkZSB0aGUgdmFsaWQgYnVmZmVyIHJhbmdlcy4gVGhlIHRlc3QgYXQ6CisK
KyAgICAgICAgICAgIGh0dHA6Ly9jcy5oZWxzaW5raS5maS91L2lsbWFyaWhlL2MzZC9mdW5jdGlv
bnMvZHJhd0FycmF5c091dE9mQm91bmRzLmh0bWwKKworICAgICAgICBubyBsb25nZXIgY3Jhc2hl
cy4KKworICAgICAgICBJIGFsc28gYWRkZWQgYWxsIHRoZSBXZWJHTCBlbnVtZXJhdGlvbnMgdG8g
R3JhcGhpY3NDb250ZXh0M0QgdG8gdXNlIHRoZW0gaW4gdGhlIHZhbGlkYXRpb24gY2hlY2tzCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdMQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnRleFN1YkltYWdlMkQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQXJyYXlC
dWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xBcnJheUJ1ZmZlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQXJyYXlCdWZmZXI6OmRhdGEpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMQXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6V2ViR0xCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OmFzc29jaWF0ZUJ1ZmZlckRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OmFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OmJ5dGVMZW5ndGgpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6
ZWxlbWVudEFycmF5QnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpzaXplSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlSW5kZXhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlUmVuZGVyaW5nU3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppc0ZyYW1lYnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6aXNQcm9ncmFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6aXNSZW5kZXJidWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppc1NoYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmlzVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVzZVByb2dyYW0pOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIxZik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjFmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjJmKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliMmZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmli
M2YpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRy
aWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhB
dHRyaWI0Zik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRl
eEF0dHJpYjRmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZl
cnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6VmVydGV4QXR0cmliU3RhdGU6OlZlcnRleEF0dHJpYlN0YXRlKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMU2hhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2hhZGVyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTaGFkZXI6OldlYkdMU2hhZGVyKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250
ZXh0M0RNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZVNoYWRlcik6CisKIDIwMDktMTEtMTMgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm9l
dHRzY2hlc0BhY2Nlc3MtY29tcGFueS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xBcnJheUN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMQXJyYXlDdXN0b20uY3Bw
CShyZXZpc2lvbiA1MDkxMykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTEFycmF5Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXZWJHTEFycmF5KiBvYmplY3QpCiB7CisgICAgaWYgKCFv
YmplY3QpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICAKICAgICBpZiAo
b2JqZWN0LT5pc0Zsb2F0QXJyYXkoKSkKICAgICAgICAgcmV0dXJuIGdldERPTU9iamVjdFdyYXBw
ZXI8SlNXZWJHTEZsb2F0QXJyYXk+KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8V2Vi
R0xGbG9hdEFycmF5Kj4ob2JqZWN0KSk7CiAgICAgaWYgKG9iamVjdC0+aXNVbnNpZ25lZEJ5dGVB
cnJheSgpKQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDUwOTEzKQorKysgV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDE3ICs1MywxOSBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpidWZm
ZXJECiAKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBhcmdzLmF0KDApLnRvSW50MzIoZXhlYyk7CiAg
ICAgdW5zaWduZWQgdXNhZ2UgPSBhcmdzLmF0KDIpLnRvSW50MzIoZXhlYyk7CisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAKICAgICAvLyBJZiBhcmd1bWVudCAxIGlzIGEgbnVtYmVyLCB3ZSBh
cmUgaW5pdGlhbGl6aW5nIHRoaXMgYnVmZmVyIHRvIHRoYXQgc2l6ZQogICAgIGlmICghYXJncy5h
dCgxKS5pc09iamVjdCgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGludCBjb3VudCA9IGFyZ3MuYXQo
MSkudG9JbnQzMihleGVjKTsKLSAgICAgICAgc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250
ZXh0Kj4oaW1wbCgpKS0+YnVmZmVyRGF0YSh0YXJnZXQsIGNvdW50LCB1c2FnZSk7Ci0gICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmlu
Z0NvbnRleHQqPihpbXBsKCkpLT5idWZmZXJEYXRhKHRhcmdldCwgY291bnQsIHVzYWdlLCBlYyk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgV2ViR0xBcnJheSogYXJyYXkgPSB0b1dlYkdMQXJyYXko
YXJncy5hdCgxKSk7CisgICAgICAgIHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+
KGltcGwoKSktPmJ1ZmZlckRhdGEodGFyZ2V0LCBhcnJheSwgdXNhZ2UsIGVjKTsKICAgICB9CiAK
LSAgICBXZWJHTEFycmF5KiBhcnJheSA9IHRvV2ViR0xBcnJheShhcmdzLmF0KDEpKTsKLSAgICAK
LSAgICBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihpbXBsKCkpLT5idWZmZXJE
YXRhKHRhcmdldCwgYXJyYXksIHVzYWdlKTsKKyAgICBpZiAoZWMgIT0gMCkKKyAgICAgICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApA
QCAtNzQsMTAgKzc2LDE0IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZl
clMKIAogICAgIHVuc2lnbmVkIHRhcmdldCA9IGFyZ3MuYXQoMCkudG9JbnQzMihleGVjKTsKICAg
ICB1bnNpZ25lZCBvZmZzZXQgPSBhcmdzLmF0KDEpLnRvSW50MzIoZXhlYyk7CisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgCiAgICAgV2ViR0xBcnJheSogYXJyYXkgPSB0b1dlYkdMQXJy
YXkoYXJncy5hdCgyKSk7CiAgICAgCi0gICAgc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250
ZXh0Kj4oaW1wbCgpKS0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgYXJyYXkpOworICAg
IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KGltcGwoKSktPmJ1ZmZlclN1YkRh
dGEodGFyZ2V0LCBvZmZzZXQsIGFycmF5LCBlYyk7CisKKyAgICBpZiAoZWMgIT0gMCkKKyAgICAg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IH0KIApAQCAtMTkyLDEwICsxOTgsMTEgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dGV4U3ViSQogICAgIH0gZWxzZSBpZiAoby0+aW5oZXJpdHMoJkpTSFRNTENhbnZhc0VsZW1l
bnQ6OnNfaW5mbykpIHsKICAgICAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcyA9IHN0YXRp
Y19jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4oc3RhdGljX2Nhc3Q8SlNIVE1MRWxlbWVudCo+KG8p
LT5pbXBsKCkpOwogICAgICAgICBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGNhbnZhcywgZmxpcFksIHByZW11bHRpcGx5QWxw
aGEsIGVjKTsKLSAgICB9IGVsc2UgewotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQ
RV9NSVNNQVRDSF9FUlIpOwotICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgZWMgPSBUWVBFX01J
U01BVENIX0VSUjsKICAgICAKKyAgICBpZiAoZWMgIT0gMCkKKyAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsgICAgCiB9CiAKSW5kZXg6
IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xBcnJheUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFycmF5QnVmZmVyLmNwcAkocmV2aXNpb24gNTA5MTMp
CisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQXJyYXlCdWZmZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpbmNsdWRlICJXZWJHTEFycmF5QnVmZmVyLmgiCiAK
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKICAg
ICBQYXNzUmVmUHRyPFdlYkdMQXJyYXlCdWZmZXI+IFdlYkdMQXJyYXlCdWZmZXI6OmNyZWF0ZSh1
bnNpZ25lZCBzaXplSW5CeXRlcykKQEAgLTM2LDYgKzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTEFycmF5QnVmZmVyKHNpemVJbkJ5
dGVzKSk7CiAgICAgfQogICAgIAorICAgIFBhc3NSZWZQdHI8V2ViR0xBcnJheUJ1ZmZlcj4gV2Vi
R0xBcnJheUJ1ZmZlcjo6Y3JlYXRlKFdlYkdMQXJyYXlCdWZmZXIqIG90aGVyKQorICAgIHsKKyAg
ICAgICAgUmVmUHRyPFdlYkdMQXJyYXlCdWZmZXI+IGJ1ZmZlciA9IGFkb3B0UmVmKG5ldyBXZWJH
TEFycmF5QnVmZmVyKG90aGVyLT5ieXRlTGVuZ3RoKCkpKTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZl
ci0+ZGF0YSgpLCBvdGhlci0+ZGF0YSgpLCBvdGhlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAg
cmV0dXJuIGJ1ZmZlci5yZWxlYXNlKCk7CisgICAgfQorCiAgICAgV2ViR0xBcnJheUJ1ZmZlcjo6
V2ViR0xBcnJheUJ1ZmZlcih1bnNpZ25lZCBzaXplSW5CeXRlcykgewogICAgICAgICBtX3NpemVJ
bkJ5dGVzID0gc2l6ZUluQnl0ZXM7CiAgICAgICAgIG1fZGF0YSA9IFdURjo6ZmFzdFplcm9lZE1h
bGxvYyhzaXplSW5CeXRlcyk7CkBAIC00NSw2ICs1NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHJldHVybiBtX2RhdGE7CiAgICAgfQogCisgICAgY29uc3Qgdm9pZCogV2ViR0xB
cnJheUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIG1fZGF0YTsKKyAgICB9
CisKICAgICB1bnNpZ25lZCBXZWJHTEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3Qgewog
ICAgICAgICByZXR1cm4gbV9zaXplSW5CeXRlczsKICAgICB9CkluZGV4OiBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQXJyYXlCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQXJyYXlCdWZmZXIuaAkocmV2aXNpb24gNTA5MTMpCisrKyBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQXJyYXlCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFdlYkdMQXJyYXlCdWZmZXIgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJHTEFycmF5QnVmZmVyPiB7CiAgICAgcHVibGljOgogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJHTEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWduZWQgc2l6ZUlu
Qnl0ZXMpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTEFycmF5QnVmZmVyPiBjcmVh
dGUoV2ViR0xBcnJheUJ1ZmZlciopOwogCiAgICAgICAgIHZvaWQqIGRhdGEoKTsKKyAgICAgICAg
Y29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0OwogICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkg
Y29uc3Q7CiAKICAgICAgICAgfldlYkdMQXJyYXlCdWZmZXIoKTsKSW5kZXg6IFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xCdWZmZXIuY3BwCShyZXZpc2lvbiA1MDkxMykKKysrIFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw5IEBAIFBhc3NS
ZWZQdHI8V2ViR0xCdWZmZXI+IFdlYkdMQnVmZmVyOjpjcmUKIAogV2ViR0xCdWZmZXI6OldlYkdM
QnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4KQogICAgIDogQ2FudmFzT2JqZWN0KGN0
eCkKKyAgICAsIG1fZWxlbWVudEFycmF5QnVmZmVyQnl0ZUxlbmd0aCgwKQorICAgICwgbV9hcnJh
eUJ1ZmZlckJ5dGVMZW5ndGgoMCkKKyAgICAsIG1fZWxlbWVudEFycmF5QnVmZmVyQ2xvbmVkKGZh
bHNlKQogewogICAgIHNldE9iamVjdChjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmNy
ZWF0ZUJ1ZmZlcigpKTsKIH0KQEAgLTQ4LDYgKzUxLDc2IEBAIHZvaWQgV2ViR0xCdWZmZXI6Ol9k
ZWxldGVPYmplY3QoUGxhdGZvcm0KICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCkt
PmRlbGV0ZUJ1ZmZlcihvYmplY3QpOwogfQogCitib29sIFdlYkdMQnVmZmVyOjphc3NvY2lhdGVC
dWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbnQgc2l6ZSkKK3sKKyAgICBpZiAodGFy
Z2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUikgeworICAgICAg
ICBtX2VsZW1lbnRBcnJheUJ1ZmZlckJ5dGVMZW5ndGggPSBzaXplOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6
QVJSQVlfQlVGRkVSKSB7CisgICAgICAgIG1fYXJyYXlCdWZmZXJCeXRlTGVuZ3RoID0gc2l6ZTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIFdlYkdMQnVmZmVyOjphc3NvY2lhdGVCdWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCBXZWJHTEFycmF5KiBhcnJheSkKK3sKKyAgICBpZiAoIWFycmF5KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIAorICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVM
RU1FTlRfQVJSQVlfQlVGRkVSKSB7CisgICAgICAgIG1fZWxlbWVudEFycmF5QnVmZmVyQnl0ZUxl
bmd0aCA9IGFycmF5LT5zaXplSW5CeXRlcygpOworICAgICAgICBtX2VsZW1lbnRBcnJheUJ1ZmZl
ciA9IGFycmF5LT5idWZmZXIoKTsKKyAgICAgICAgbV9lbGVtZW50QXJyYXlCdWZmZXJDbG9uZWQg
PSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIGlmICh0YXJn
ZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUikgeworICAgICAgICBtX2FycmF5
QnVmZmVyQnl0ZUxlbmd0aCA9IGFycmF5LT5zaXplSW5CeXRlcygpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYkdMQnVm
ZmVyOjphc3NvY2lhdGVCdWZmZXJTdWJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIG9m
ZnNldCwgV2ViR0xBcnJheSogYXJyYXkpCit7CisgICAgaWYgKCFhcnJheSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAKKyAgICBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNE
OjpFTEVNRU5UX0FSUkFZX0JVRkZFUikgeworICAgICAgICAvLyBXZSBuZWVkIHRvIHByb3RlY3Qg
YWdhaW5zdCBpbnRlZ2VyIG92ZXJmbG93IHdpdGggdGhlc2UgdGVzdHMKKyAgICAgICAgaWYgKG9m
ZnNldCA8IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAg
ICAgdW5zaWduZWQgbG9uZyB1b2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4ob2Zm
c2V0KTsKKyAgICAgICAgaWYgKHVvZmZzZXQgPiBtX2VsZW1lbnRBcnJheUJ1ZmZlckJ5dGVMZW5n
dGggfHwgYXJyYXktPnNpemVJbkJ5dGVzKCkgPiBtX2VsZW1lbnRBcnJheUJ1ZmZlckJ5dGVMZW5n
dGggLSB1b2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgCisg
ICAgICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhIGJ1ZmZlciwgd2UgbmVlZCB0byBjbG9uZSBp
dCBhbmQgYWRkIHRoZSBuZXcgZGF0YQorICAgICAgICBpZiAobV9lbGVtZW50QXJyYXlCdWZmZXIg
JiYgIW1fZWxlbWVudEFycmF5QnVmZmVyQ2xvbmVkKSB7CisgICAgICAgICAgICBtX2VsZW1lbnRB
cnJheUJ1ZmZlciA9IFdlYkdMQXJyYXlCdWZmZXI6OmNyZWF0ZShtX2VsZW1lbnRBcnJheUJ1ZmZl
ci5nZXQoKSk7CisgICAgICAgICAgICBtX2VsZW1lbnRBcnJheUJ1ZmZlckNsb25lZCA9IHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcio+KG1fZWxlbWVudEFycmF5QnVmZmVyLT5kYXRhKCkpICsgb2Zmc2V0LCBhcnJh
eS0+YmFzZUFkZHJlc3MoKSwgYXJyYXktPnNpemVJbkJ5dGVzKCkpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6
QVJSQVlfQlVGRkVSKQorICAgICAgICByZXR1cm4gYXJyYXktPnNpemVJbkJ5dGVzKCkgKyBvZmZz
ZXQgPD0gbV9hcnJheUJ1ZmZlckJ5dGVMZW5ndGg7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3Vuc2lnbmVkIFdlYkdMQnVmZmVyOjpieXRlTGVuZ3RoKHVuc2lnbmVkIGxvbmcgdGFyZ2V0KSBj
b25zdAoreworICAgIHJldHVybiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9C
VUZGRVIpID8gbV9hcnJheUJ1ZmZlckJ5dGVMZW5ndGggOiBtX2VsZW1lbnRBcnJheUJ1ZmZlckJ5
dGVMZW5ndGg7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRSgzRF9DQU5WQVMpCkluZGV4OiBX
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCShyZXZpc2lvbiA1MDkxMykKKysrIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
I2RlZmluZSBXZWJHTEJ1ZmZlcl9oCiAKICNpbmNsdWRlICJDYW52YXNPYmplY3QuaCIKKyNpbmNs
dWRlICJXZWJHTEFycmF5QnVmZmVyLmgiCiAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zOSwxMCArNDAsMjMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xCdWZm
ZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKICAgICAgICAgCisgICAgICAgIGJv
b2wgYXNzb2NpYXRlQnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgaW50IHNpemUpOwor
ICAgICAgICBib29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIFdl
YkdMQXJyYXkqIGFycmF5KTsKKyAgICAgICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJTdWJEYXRhKHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIG9mZnNldCwgV2ViR0xBcnJheSogYXJyYXkpOworICAg
ICAgICAKKyAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCh1bnNpZ25lZCBsb25nIHRhcmdldCkg
Y29uc3Q7CisgICAgICAgIGNvbnN0IFdlYkdMQXJyYXlCdWZmZXIqIGVsZW1lbnRBcnJheUJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudEFycmF5QnVmZmVyLmdldCgpOyB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFdlYkdMQnVmZmVyKFdl
YkdMUmVuZGVyaW5nQ29udGV4dCopOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIF9k
ZWxldGVPYmplY3QoUGxhdGZvcm0zRE9iamVjdCBvKTsKKyAgICAKKyAgICBwcml2YXRlOgorICAg
ICAgICBSZWZQdHI8V2ViR0xBcnJheUJ1ZmZlcj4gbV9lbGVtZW50QXJyYXlCdWZmZXI7CisgICAg
ICAgIHVuc2lnbmVkIG1fZWxlbWVudEFycmF5QnVmZmVyQnl0ZUxlbmd0aDsKKyAgICAgICAgdW5z
aWduZWQgbV9hcnJheUJ1ZmZlckJ5dGVMZW5ndGg7CisgICAgICAgIGJvb2wgbV9lbGVtZW50QXJy
YXlCdWZmZXJDbG9uZWQ7CiAgICAgfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJl
dmlzaW9uIDUwOTEzKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw3IEBAIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6V2ViR0xSZW5kZXJpbmdDb24KICAgICAsIG1fbWFya2VkQ2FudmFzRGlydHkoZmFsc2Up
CiB7CiAgICAgQVNTRVJUKG1fY29udGV4dCk7CisgICAgbV9tYXhWZXJ0ZXhBdHRyaWJzID0gbV9j
b250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVkVSVEVYX0FUVFJJQlMp
OwogICAgIG1fY29udGV4dC0+cmVzaGFwZShjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhl
aWdodCgpKTsKIH0KIApAQCAtMTE3LDkgKzExOCw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpyZXNoYXBlKGludCAKIGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNpemVJbkJ5dGVz
KGludCB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpbnQgcmVzdWx0ID0gbV9jb250
ZXh0LT5zaXplSW5CeXRlcyh0eXBlKTsKLSAgICBpZiAocmVzdWx0IDw9IDApIHsKKyAgICBpZiAo
cmVzdWx0IDw9IDApCiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICB9CisKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC0xNTUsNiArMTU2LDE2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpiaW5kQnVmZmVyKHUKICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkFSUkFZX0JVRkZFUikKKyAgICAgICAgbV9ib3VuZEFycmF5QnVmZmVyID0gYnVmZmVyOwor
ICAgIGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9C
VUZGRVIpCisgICAgICAgIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIgPSBidWZmZXI7CisgICAg
ZWxzZSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7CiAgICAgY2xlYW51
cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KQEAgLTIyMiwyMCArMjMzLDY1IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpibGVuZEZ1bmNTZXAKICAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVy
RGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgaW50IHNpemUsIHVuc2lnbmVkIGxvbmcgdXNhZ2Up
Cit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRh
cmdldCwgaW50IHNpemUsIHVuc2lnbmVkIGxvbmcgdXNhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
eworICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVG
RkVSICYmIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIpIHsKKyAgICAgICAgaWYgKCFtX2JvdW5k
RWxlbWVudEFycmF5QnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSkpIHsK
KyAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9C
VUZGRVIgJiYgbV9ib3VuZEFycmF5QnVmZmVyKSB7CisgICAgICAgIGlmICghbV9ib3VuZEFycmF5
QnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSkpIHsKKyAgICAgICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIHVzYWdlKTsKICAgICBj
bGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6YnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgV2ViR0xBcnJheSogZGF0
YSwgdW5zaWduZWQgbG9uZyB1c2FnZSkKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpidWZm
ZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBXZWJHTEFycmF5KiBkYXRhLCB1bnNpZ25lZCBs
b25nIHVzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAodGFyZ2V0ID09IEdyYXBo
aWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUiAmJiBtX2JvdW5kRWxlbWVudEFycmF5
QnVmZmVyKSB7CisgICAgICAgIGlmICghbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlci0+YXNzb2Np
YXRlQnVmZmVyRGF0YSh0YXJnZXQsIGRhdGEpKSB7CisgICAgICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHRhcmdl
dCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSICYmIG1fYm91bmRBcnJheUJ1ZmZl
cikgeworICAgICAgICBpZiAoIW1fYm91bmRBcnJheUJ1ZmZlci0+YXNzb2NpYXRlQnVmZmVyRGF0
YSh0YXJnZXQsIGRhdGEpKSB7CisgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBlYyA9IFNZTlRB
WF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBtX2NvbnRleHQtPmJ1ZmZlckRh
dGEodGFyZ2V0LCBkYXRhLCB1c2FnZSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlclN1YkRhdGEodW5z
aWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgb2Zmc2V0LCBXZWJHTEFycmF5KiBkYXRhKQordm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlclN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQs
IGxvbmcgb2Zmc2V0LCBXZWJHTEFycmF5KiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAg
ICBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUiAm
JiBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyKSB7CisgICAgICAgIGlmICghbV9ib3VuZEVsZW1l
bnRBcnJheUJ1ZmZlci0+YXNzb2NpYXRlQnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgZGF0
YSkpIHsKKyAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpB
UlJBWV9CVUZGRVIgJiYgbV9ib3VuZEFycmF5QnVmZmVyKSB7CisgICAgICAgIGlmICghbV9ib3Vu
ZEFycmF5QnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBkYXRh
KSkgeworICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgbV9jb250ZXh0LT5idWZmZXJTdWJEYXRhKHRhcmdldCwg
b2Zmc2V0LCBkYXRhKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQpA
QCAtMzQzLDEzICszOTksOCBAQCBQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBXZWJHTFJl
bmRlCiAKIFBhc3NSZWZQdHI8V2ViR0xTaGFkZXI+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlU2hhZGVyKHVuc2lnbmVkIGxvbmcgdHlwZSkKIHsKLSAgICAvLyBGSVhNRTogTmVlZCB0byBp
bmNsdWRlIEdMXyBjb25zdGFudHMgZm9yIGludGVybmFsIHVzZQogICAgIC8vIEZJWE1FOiBOZWVk
IHRvIGRvIHBhcmFtIGNoZWNraW5nIGFuZCB0aHJvdyBleGNlcHRpb24gaWYgYW4gaWxsZWdhbCB2
YWx1ZSBpcyBwYXNzZWQgaW4KLSAgICBHcmFwaGljc0NvbnRleHQzRDo6U2hhZGVyVHlwZSBzaGFk
ZXJUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVI7Ci0gICAgaWYgKHR5cGUg
PT0gMHg4QjMwKSAvLyBHTF9GUkFHTUVOVF9TSEFERVIKLSAgICAgICAgc2hhZGVyVHlwZSA9IEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9TSEFERVI7Ci0gICAgICAgIAotICAgIFJlZlB0cjxX
ZWJHTFNoYWRlcj4gbyA9IFdlYkdMU2hhZGVyOjpjcmVhdGUodGhpcywgc2hhZGVyVHlwZSk7Cisg
ICAgUmVmUHRyPFdlYkdMU2hhZGVyPiBvID0gV2ViR0xTaGFkZXI6OmNyZWF0ZSh0aGlzLCBzdGF0
aWNfY2FzdDxHcmFwaGljc0NvbnRleHQzRDo6V2ViR0xFbnVtVHlwZT4odHlwZSkpOwogICAgIGFk
ZE9iamVjdChvLmdldCgpKTsKICAgICByZXR1cm4gbzsKIH0KQEAgLTQ0MywyMSArNDk0LDEwOCBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGlzYWJsZSh1bnNpCiAgICAgY2xlYW51cEFm
dGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25lZCBsb25nIGluZGV4KQordm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25lZCBsb25n
IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAoaW5kZXggPj0gbV9tYXhWZXJ0
ZXhBdHRyaWJzKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKGluZGV4IDwgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5z
aXplKCkpCisgICAgICAgIG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLmVuYWJsZWQgPSBmYWxz
ZTsKKyAgICAKICAgICBtX2NvbnRleHQtPmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7
CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAorYm9vbCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlSW5kZXhBcnJheSh1bnNpZ25lZCBsb25nIGNvdW50LCB1
bnNpZ25lZCBsb25nIHR5cGUsIGxvbmcgb2Zmc2V0LCBsb25nJiBudW1FbGVtZW50cykKK3sKKyAg
ICBsb25nIGxhc3RJbmRleCA9IC0xOworICAgIGlmICghbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZl
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICBpZiAob2Zmc2V0IDwgMCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAvLyBUaGUgR0wgc3BlYyBzYXlz
IHRoYXQgY291bnQgbXVzdCBiZSAiZ3JlYXRlcgorICAgIAorICAgIHVuc2lnbmVkIGxvbmcgdW9m
ZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG9mZnNldCk7CisgICAgCisgICAgaWYg
KHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JUKSB7CisgICAgICAgIC8v
IEZvciBhbiB1bnNpZ25lZCBzaG9ydCBhcnJheSwgb2Zmc2V0IG11c3QgYmUgZGl2aXNpYmxlIGJ5
IDIgZm9yIGFsaWdubWVudCByZWFzb25zCisgICAgICAgIGlmICh1b2Zmc2V0ICYgMSAhPSAwKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgLy8gTWFrZSB1b2Zm
c2V0IGFuIGVsZW1lbnQgb2Zmc2V0CisgICAgICAgIHVvZmZzZXQgLz0gMjsKKyAgICAKKyAgICAg
ICAgdW5zaWduZWQgbG9uZyBuID0gbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aChHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIpIC8gMjsKKyAgICAgICAg
aWYgKHVvZmZzZXQgPiBuIHx8IGNvdW50ID4gbiAtIHVvZmZzZXQpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQqIHAg
PSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KG1fYm91bmRFbGVtZW50QXJyYXlC
dWZmZXItPmVsZW1lbnRBcnJheUJ1ZmZlcigpLT5kYXRhKCkpOworICAgICAgICB3aGlsZSAobi0t
ID4gMCkgeworICAgICAgICAgICAgaWYgKCpwID4gbGFzdEluZGV4KQorICAgICAgICAgICAgICAg
IGxhc3RJbmRleCA9ICpwOworICAgICAgICAgICAgKytwOworICAgICAgICB9CisgICAgfQorICAg
IGVsc2UgaWYgKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpIHsKKyAg
ICAgICAgdW5zaWduZWQgbG9uZyBuID0gbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlci0+Ynl0ZUxl
bmd0aChHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIpOworICAgICAgICBp
ZiAodW9mZnNldCA+IG4gfHwgY291bnQgPiBuIC0gdW9mZnNldCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBwID0g
c3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KG1fYm91bmRFbGVtZW50QXJyYXlCdWZm
ZXItPmVsZW1lbnRBcnJheUJ1ZmZlcigpLT5kYXRhKCkpOworICAgICAgICB3aGlsZSAobi0tID4g
MCkgeworICAgICAgICAgICAgaWYgKCpwID4gbGFzdEluZGV4KQorICAgICAgICAgICAgICAgIGxh
c3RJbmRleCA9ICpwOworICAgICAgICAgICAgKytwOworICAgICAgICB9CisgICAgfSAgICAKKyAg
ICAgICAgCisgICAgLy8gVGhlbiBzZXQgdGhlIGxhc3QgaW5kZXggaW4gdGhlIGluZGV4IGFycmF5
IGFuZCBtYWtlIHN1cmUgaXQgaXMgdmFsaWQKKyAgICBudW1FbGVtZW50cyA9IGxhc3RJbmRleCAr
IDE7CisgICAgcmV0dXJuIG51bUVsZW1lbnRzID4gMDsKK30KKworYm9vbCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnZhbGlkYXRlUmVuZGVyaW5nU3RhdGUobG9uZyBudW1FbGVtZW50cykKK3sKKyAg
ICAvLyBMb29rIGluIGVhY2ggZW5hYmxlZCB2ZXJ0ZXggYXR0cmliIGFuZCBmaW5kIHRoZSBzbWFs
bGVzdCBidWZmZXIgc2l6ZQorICAgIGxvbmcgc21hbGxlc3ROdW1FbGVtZW50cyA9IExPTkdfTUFY
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUo
KTsgKytpKSB7CisgICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1fdmVy
dGV4QXR0cmliU3RhdGVbaV07CisgICAgICAgIGlmIChzdGF0ZS5lbmFibGVkICYmIHN0YXRlLm51
bUVsZW1lbnRzIDwgc21hbGxlc3ROdW1FbGVtZW50cykKKyAgICAgICAgICAgIHNtYWxsZXN0TnVt
RWxlbWVudHMgPSBzdGF0ZS5udW1FbGVtZW50czsKKyAgICB9CisgICAgCisgICAgaWYgKHNtYWxs
ZXN0TnVtRWxlbWVudHMgPT0gTE9OR19NQVgpCisgICAgICAgIHNtYWxsZXN0TnVtRWxlbWVudHMg
PSAwOworICAgIAorICAgIHJldHVybiBudW1FbGVtZW50cyA8PSBzbWFsbGVzdE51bUVsZW1lbnRz
OworfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0FycmF5cyh1bnNpZ25lZCBs
b25nIG1vZGUsIGxvbmcgZmlyc3QsIGxvbmcgY291bnQpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6ZHJhd0FycmF5cyh1bnNpZ25lZCBsb25nIG1vZGUsIGxvbmcgZmlyc3QsIGxvbmcgY291
bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQg
cmVuZGVyaW5nIHN0YXRlCisgICAgaWYgKGZpcnN0IDwgMCB8fCBjb3VudCA8IDAgfHwgIXZhbGlk
YXRlUmVuZGVyaW5nU3RhdGUoZmlyc3QgKyBjb3VudCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElE
X1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBtX2NvbnRleHQt
PmRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGlj
c0NhbGwodHJ1ZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkcmF3RWxlbWVu
dHModW5zaWduZWQgbG9uZyBtb2RlLCB1bnNpZ25lZCBsb25nIGNvdW50LCB1bnNpZ25lZCBsb25n
IHR5cGUsIGxvbmcgb2Zmc2V0KQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRyYXdFbGVt
ZW50cyh1bnNpZ25lZCBsb25nIG1vZGUsIHVuc2lnbmVkIGxvbmcgY291bnQsIHVuc2lnbmVkIGxv
bmcgdHlwZSwgbG9uZyBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIC8vIEVuc3Vy
ZSB3ZSBoYXZlIGEgdmFsaWQgcmVuZGVyaW5nIHN0YXRlCisgICAgbG9uZyBudW1FbGVtZW50czsK
KyAgICAKKyAgICBpZiAob2Zmc2V0IDwgMCB8fCAhdmFsaWRhdGVJbmRleEFycmF5KGNvdW50LCB0
eXBlLCBvZmZzZXQsIG51bUVsZW1lbnRzKSB8fCAhdmFsaWRhdGVSZW5kZXJpbmdTdGF0ZShudW1F
bGVtZW50cykpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKICAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50cyhtb2RlLCBjb3Vu
dCwgdHlwZSwgb2Zmc2V0KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwodHJ1ZSk7CiB9
CkBAIC00NjgsOCArNjA2LDE4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjplbmFibGUo
dW5zaWcKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgbG9u
ZyBpbmRleCkKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjplbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheSh1bnNpZ25lZCBsb25nIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAo
aW5kZXggPj0gbV9tYXhWZXJ0ZXhBdHRyaWJzKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFU
RV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKGluZGV4ID49IG1f
dmVydGV4QXR0cmliU3RhdGUuc2l6ZSgpKQorICAgICAgICBtX3ZlcnRleEF0dHJpYlN0YXRlLnJl
c2l6ZShpbmRleCArIDEpOworICAgICAgICAKKyAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4
XS5lbmFibGVkID0gdHJ1ZTsKKyAgICAKICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KGluZGV4KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQpA
QCAtODUzLDI2ICsxMDAxLDQxIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppc0VuYWJs
ZWQodW4KIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmlzRnJhbWVidWZmZXIoV2ViR0xG
cmFtZWJ1ZmZlciogZnJhbWVidWZmZXIpCiB7CisgICAgaWYgKCFmcmFtZWJ1ZmZlcikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIG1fY29udGV4dC0+aXNGcmFtZWJ1ZmZlcihm
cmFtZWJ1ZmZlcik7CiB9CiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppc1Byb2dyYW0o
V2ViR0xQcm9ncmFtKiBwcm9ncmFtKQogeworICAgIGlmICghcHJvZ3JhbSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIG1fY29udGV4dC0+aXNQcm9ncmFtKHByb2dyYW0pOwog
fQogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aXNSZW5kZXJidWZmZXIoV2ViR0xSZW5k
ZXJidWZmZXIqIHJlbmRlcmJ1ZmZlcikKIHsKKyAgICBpZiAoIXJlbmRlcmJ1ZmZlcikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIG1fY29udGV4dC0+aXNSZW5kZXJidWZmZXIo
cmVuZGVyYnVmZmVyKTsKIH0KIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmlzU2hhZGVy
KFdlYkdMU2hhZGVyKiBzaGFkZXIpCiB7CisgICAgaWYgKCFzaGFkZXIpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKwogICAgIHJldHVybiBtX2NvbnRleHQtPmlzU2hhZGVyKHNoYWRlcik7CiB9CiAK
IGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppc1RleHR1cmUoV2ViR0xUZXh0dXJlKiB0ZXh0
dXJlKQogeworICAgIGlmICghdGV4dHVyZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
cmV0dXJuIG1fY29udGV4dC0+aXNUZXh0dXJlKHRleHR1cmUpOwogfQogCkBAIC0xNDE1LDEwOSAr
MTU3OCwxNDQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaQogICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKK3ZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAh
PSB0aGlzKSB7CisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgICAgIAogICAgIG1fY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtKTsK
ICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKK3Zv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVByb2dyYW0oV2ViR0xQcm9ncmFtKiBw
cm9ncmFtLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3Jh
bS0+Y29udGV4dCgpICE9IHRoaXMpIHsKKyAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCiAgICAgbV9jb250ZXh0LT52YWxpZGF0
ZVByb2dyYW0ocHJvZ3JhbSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
IH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjFmKHVuc2lnbmVk
IGxvbmcgaW5keCwgZmxvYXQgdjApCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4
QXR0cmliMWYodW5zaWduZWQgbG9uZyBpbmRleCwgZmxvYXQgdjApCiB7Ci0gICAgbV9jb250ZXh0
LT52ZXJ0ZXhBdHRyaWIxZihpbmR4LCB2MCk7CisgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIx
ZihpbmRleCwgdjApOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAK
LXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIxZnYodW5zaWduZWQgbG9u
ZyBpbmR4LCBXZWJHTEZsb2F0QXJyYXkqIHYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dmVydGV4QXR0cmliMWZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIFdlYkdMRmxvYXRBcnJheSogdikK
IHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBtYWtlIHN1cmUgYXJyYXkgaXMgYmlnIGVub3VnaCBm
b3IgYXR0cmlidXRlIGJlaW5nIHNldAotICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGlu
ZHgsIHYtPmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIHYt
PmRhdGEoKSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAotdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjFmdih1bnNpZ25lZCBsb25nIGlu
ZHgsIGZsb2F0KiB2LCBpbnQgc2l6ZSkKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0
ZXhBdHRyaWIxZnYodW5zaWduZWQgbG9uZyBpbmRleCwgZmxvYXQqIHYsIGludCBzaXplKQogewog
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1ha2Ugc3VyZSBhcnJheSBpcyBiaWcgZW5vdWdoIGZvciBh
dHRyaWJ1dGUgYmVpbmcgc2V0CiAgICAgVU5VU0VEX1BBUkFNKHNpemUpOwogICAgIAotICAgIG1f
Y29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZHgsIHYpOworICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliMWZ2KGluZGV4LCB2KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2Up
OwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliMmYodW5zaWdu
ZWQgbG9uZyBpbmR4LCBmbG9hdCB2MCwgZmxvYXQgdjEpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dmVydGV4QXR0cmliMmYodW5zaWduZWQgbG9uZyBpbmRleCwgZmxvYXQgdjAsIGZsb2F0
IHYxKQogewotICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmYoaW5keCwgdjAsIHYxKTsKKyAg
ICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOwogICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp2ZXJ0ZXhBdHRyaWIyZnYodW5zaWduZWQgbG9uZyBpbmR4LCBXZWJHTEZsb2F0QXJyYXkqIHYp
Cit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliMmZ2KHVuc2lnbmVkIGxv
bmcgaW5kZXgsIFdlYkdMRmxvYXRBcnJheSogdikKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBt
YWtlIHN1cmUgYXJyYXkgaXMgYmlnIGVub3VnaCBmb3IgYXR0cmlidXRlIGJlaW5nIHNldAotICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZHgsIHYtPmRhdGEoKSk7CisgICAgbV9jb250
ZXh0LT52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIHYtPmRhdGEoKSk7CiAgICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZl
cnRleEF0dHJpYjJmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiB2LCBpbnQgc2l6ZSkKK3Zv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIyZnYodW5zaWduZWQgbG9uZyBp
bmRleCwgZmxvYXQqIHYsIGludCBzaXplKQogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1ha2Ug
c3VyZSBhcnJheSBpcyBiaWcgZW5vdWdoIGZvciBhdHRyaWJ1dGUgYmVpbmcgc2V0CiAgICAgVU5V
U0VEX1BBUkFNKHNpemUpOwogICAgIAotICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGlu
ZHgsIHYpOworICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCB2KTsKICAgICBj
bGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dmVydGV4QXR0cmliM2YodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCB2MCwgZmxv
YXQgdjEsIGZsb2F0IHYyKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJp
YjNmKHVuc2lnbmVkIGxvbmcgaW5kZXgsIGZsb2F0IHYwLCBmbG9hdCB2MSwgZmxvYXQgdjIpCiB7
Ci0gICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZihpbmR4LCB2MCwgdjEsIHYyKTsKKyAgICBt
X2NvbnRleHQtPnZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKICAgICBjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dmVydGV4QXR0cmliM2Z2KHVuc2lnbmVkIGxvbmcgaW5keCwgV2ViR0xGbG9hdEFycmF5KiB2
KQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjNmdih1bnNpZ25lZCBs
b25nIGluZGV4LCBXZWJHTEZsb2F0QXJyYXkqIHYpCiB7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8g
bWFrZSBzdXJlIGFycmF5IGlzIGJpZyBlbm91Z2ggZm9yIGF0dHJpYnV0ZSBiZWluZyBzZXQKLSAg
ICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjNmdihpbmR4LCB2LT5kYXRhKCkpOworICAgIG1fY29u
dGV4dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCB2LT5kYXRhKCkpOwogICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2
ZXJ0ZXhBdHRyaWIzZnYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCogdiwgaW50IHNpemUpCit2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliM2Z2KHVuc2lnbmVkIGxvbmcg
aW5kZXgsIGZsb2F0KiB2LCBpbnQgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBtYWtl
IHN1cmUgYXJyYXkgaXMgYmlnIGVub3VnaCBmb3IgYXR0cmlidXRlIGJlaW5nIHNldAogICAgIFVO
VVNFRF9QQVJBTShzaXplKTsKICAgICAKLSAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjNmdihp
bmR4LCB2KTsKKyAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjNmdihpbmRleCwgdik7CiAgICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnZlcnRleEF0dHJpYjRmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQgdjAsIGZs
b2F0IHYxLCBmbG9hdCB2MiwgZmxvYXQgdjMpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dmVydGV4QXR0cmliNGYodW5zaWduZWQgbG9uZyBpbmRleCwgZmxvYXQgdjAsIGZsb2F0IHYxLCBm
bG9hdCB2MiwgZmxvYXQgdjMpCiB7Ci0gICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZihpbmR4
LCB2MCwgdjEsIHYyLCB2Myk7CisgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZihpbmRleCwg
djAsIHYxLCB2MiwgdjMpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9
CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWI0ZnYodW5zaWduZWQg
bG9uZyBpbmR4LCBXZWJHTEZsb2F0QXJyYXkqIHYpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dmVydGV4QXR0cmliNGZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIFdlYkdMRmxvYXRBcnJheSog
dikKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBtYWtlIHN1cmUgYXJyYXkgaXMgYmlnIGVub3Vn
aCBmb3IgYXR0cmlidXRlIGJlaW5nIHNldAotICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliNGZ2
KGluZHgsIHYtPmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgs
IHYtPmRhdGEoKSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAot
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjRmdih1bnNpZ25lZCBsb25n
IGluZHgsIGZsb2F0KiB2LCBpbnQgc2l6ZSkKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2
ZXJ0ZXhBdHRyaWI0ZnYodW5zaWduZWQgbG9uZyBpbmRleCwgZmxvYXQqIHYsIGludCBzaXplKQog
ewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1ha2Ugc3VyZSBhcnJheSBpcyBiaWcgZW5vdWdoIGZv
ciBhdHRyaWJ1dGUgYmVpbmcgc2V0CiAgICAgVU5VU0VEX1BBUkFNKHNpemUpOwogICAgIAotICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliNGZ2KGluZHgsIHYpOworICAgIG1fY29udGV4dC0+dmVy
dGV4QXR0cmliNGZ2KGluZGV4LCB2KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFs
c2UpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliUG9pbnRl
cih1bnNpZ25lZCBsb25nIGluZHgsIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyB0eXBlLCBib29s
IG5vcm1hbGl6ZWQsIHVuc2lnbmVkIGxvbmcgc3RyaWRlLCB1bnNpZ25lZCBsb25nIG9mZnNldCkK
K3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKHVuc2lnbmVk
IGxvbmcgaW5kZXgsIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyB0eXBlLCBib29sIG5vcm1hbGl6
ZWQsIHVuc2lnbmVkIGxvbmcgc3RyaWRlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7Ci0gICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZHgsIHNp
emUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgb2Zmc2V0KTsKKyAgICBpZiAoIW1fYm91bmRB
cnJheUJ1ZmZlciB8fCBpbmRleCA+PSBtX21heFZlcnRleEF0dHJpYnMpIHsKKyAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBp
ZiAoaW5kZXggPj0gbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5zaXplKCkpCisgICAgICAgIG1fdmVydGV4
QXR0cmliU3RhdGUucmVzaXplKGluZGV4ICsgMSk7CisKKyAgICAvLyBEZXRlcm1pbmUgdGhlIG51
bWJlciBvZiBlbGVtZW50cyB0aGUgYm91bmQgYnVmZmVyIGNhbiBob2xkLCBnaXZlbiB0aGUgb2Zm
c2V0LCBzaXplLCB0eXBlIGFuZCBzdHJpZGUKKyAgICBlYyA9IDA7CisgICAgbG9uZyBieXRlc1Bl
ckVsZW1lbnQgPSBzaXplICogc2l6ZUluQnl0ZXModHlwZSwgZWMpOworICAgIGlmIChlYyAhPSAw
KQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIGlmIChzdHJpZGUgIT0gMCkgeworICAg
ICAgICBpZiAoKGxvbmcpIHN0cmlkZSA8IGJ5dGVzUGVyRWxlbWVudCkgeworICAgICAgICAgICAg
ZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBieXRlc1BlckVsZW1lbnQgPSBzdHJpZGU7CisgICAgfQorICAgICAgICAKKyAg
ICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5udW1FbGVtZW50cyA9IG1fYm91bmRBcnJheUJ1
ZmZlci0+Ynl0ZUxlbmd0aChHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSKSAtIG9mZnNl
dCAvIGJ5dGVzUGVyRWxlbWVudDsKKworICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRl
cihpbmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCBvZmZzZXQpOwogICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKQEAgLTE1NDgsOCArMTc0Niw4IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjphZGRPYmplY3QoQ2EKIAogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmRldGFjaEFuZFJlbW92ZUFsbE9iamVjdHMoKQogewotICAgIEhhc2hT
ZXQ8Q2FudmFzT2JqZWN0Kj46Oml0ZXJhdG9yIHBlbmQgPSBtX2NhbnZhc09iamVjdHMuZW5kKCk7
Ci0gICAgZm9yIChIYXNoU2V0PENhbnZhc09iamVjdCo+OjppdGVyYXRvciBpdCA9IG1fY2FudmFz
T2JqZWN0cy5iZWdpbigpOyBpdCAhPSBwZW5kOyArK2l0KQorICAgIEhhc2hTZXQ8UmVmUHRyPENh
bnZhc09iamVjdD4gPjo6aXRlcmF0b3IgcGVuZCA9IG1fY2FudmFzT2JqZWN0cy5lbmQoKTsKKyAg
ICBmb3IgKEhhc2hTZXQ8UmVmUHRyPENhbnZhc09iamVjdD4gPjo6aXRlcmF0b3IgaXQgPSBtX2Nh
bnZhc09iamVjdHMuYmVnaW4oKTsgaXQgIT0gcGVuZDsgKytpdCkKICAgICAgICAgKCppdCktPmRl
dGFjaENvbnRleHQoKTsKICAgICAgICAgCiAgICAgbV9jYW52YXNPYmplY3RzLmNsZWFyKCk7Cklu
ZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlz
aW9uIDUwOTEzKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzMsOSArNzMsOSBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7
CiAgICAgICAgIHZvaWQgYmxlbmRGdW5jKHVuc2lnbmVkIGxvbmcgc2ZhY3RvciwgdW5zaWduZWQg
bG9uZyBkZmFjdG9yKTsKICAgICAgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZSh1bnNpZ25lZCBs
b25nIHNyY1JHQiwgdW5zaWduZWQgbG9uZyBkc3RSR0IsIHVuc2lnbmVkIGxvbmcgc3JjQWxwaGEs
IHVuc2lnbmVkIGxvbmcgZHN0QWxwaGEpOwogCi0gICAgICAgIHZvaWQgYnVmZmVyRGF0YSh1bnNp
Z25lZCBsb25nIHRhcmdldCwgaW50IHNpemUsIHVuc2lnbmVkIGxvbmcgdXNhZ2UpOwotICAgICAg
ICB2b2lkIGJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIFdlYkdMQXJyYXkqIGRhdGEs
IHVuc2lnbmVkIGxvbmcgdXNhZ2UpOwotICAgICAgICB2b2lkIGJ1ZmZlclN1YkRhdGEodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIGxvbmcgb2Zmc2V0LCBXZWJHTEFycmF5KiBkYXRhKTsKKyAgICAgICAg
dm9pZCBidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbnQgc2l6ZSwgdW5zaWduZWQg
bG9uZyB1c2FnZSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIGJ1ZmZlckRhdGEodW5z
aWduZWQgbG9uZyB0YXJnZXQsIFdlYkdMQXJyYXkqIGRhdGEsIHVuc2lnbmVkIGxvbmcgdXNhZ2Us
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBidWZmZXJTdWJEYXRhKHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCBsb25nIG9mZnNldCwgV2ViR0xBcnJheSogZGF0YSwgRXhjZXB0aW9uQ29kZSYp
OwogCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh1bnNpZ25l
ZCBsb25nIHRhcmdldCk7CiAgICAgICAgIHZvaWQgY2xlYXIodW5zaWduZWQgbG9uZyBtYXNrKTsK
QEAgLTExMCwxNCArMTEwLDE0IEBAIGNsYXNzIFdlYktpdENTU01hdHJpeDsKICAgICAgICAgdm9p
ZCBkZXB0aEZ1bmModW5zaWduZWQgbG9uZyk7CiAgICAgICAgIHZvaWQgZGVwdGhNYXNrKGJvb2wp
OwogICAgICAgICB2b2lkIGRlcHRoUmFuZ2UoZG91YmxlIHpOZWFyLCBkb3VibGUgekZhcik7Ci0g
ICAgICAgIHZvaWQgZGV0YWNoU2hhZGVyKFdlYkdMUHJvZ3JhbSosIFdlYkdMU2hhZGVyKiwgRXhj
ZXB0aW9uQ29kZSYgZWMpOworICAgICAgICB2b2lkIGRldGFjaFNoYWRlcihXZWJHTFByb2dyYW0q
LCBXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBkaXNhYmxlKHVu
c2lnbmVkIGxvbmcgY2FwKTsKLSAgICAgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXko
dW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgICAgIHZvaWQgZHJhd0FycmF5cyh1bnNpZ25lZCBs
b25nIG1vZGUsIGxvbmcgZmlyc3QsIGxvbmcgY291bnQpOwotICAgICAgICB2b2lkIGRyYXdFbGVt
ZW50cyh1bnNpZ25lZCBsb25nIG1vZGUsIHVuc2lnbmVkIGxvbmcgY291bnQsIHVuc2lnbmVkIGxv
bmcgdHlwZSwgbG9uZyBvZmZzZXQpOworICAgICAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheSh1bnNpZ25lZCBsb25nIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQg
ZHJhd0FycmF5cyh1bnNpZ25lZCBsb25nIG1vZGUsIGxvbmcgZmlyc3QsIGxvbmcgY291bnQsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBkcmF3RWxlbWVudHModW5zaWduZWQgbG9uZyBt
b2RlLCB1bnNpZ25lZCBsb25nIGNvdW50LCB1bnNpZ25lZCBsb25nIHR5cGUsIGxvbmcgb2Zmc2V0
LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgdm9pZCBlbmFibGUodW5zaWduZWQgbG9uZyBj
YXApOwotICAgICAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGxvbmcg
aW5kZXgpOworICAgICAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGxv
bmcgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBmaW5pc2goKTsKICAgICAg
ICAgdm9pZCBmbHVzaCgpOwogICAgICAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxv
bmcgcmVuZGVyYnVmZmVydGFyZ2V0LCBXZWJHTFJlbmRlcmJ1ZmZlciosIEV4Y2VwdGlvbkNvZGUm
IGVjKTsKQEAgLTE1Niw3ICsxNTYsNyBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAgICAgICAg
IC8vIFRCRAogICAgICAgICAvLyB2b2lkIGdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IChHTGVu
dW0gc2hhZGVydHlwZSwgR0xlbnVtIHByZWNpc2lvbnR5cGUsIEdMaW50KiByYW5nZSwgR0xpbnQq
IHByZWNpc2lvbik7CiAKLSAgICAgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShXZWJHTFNoYWRl
ciosIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICAgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShX
ZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgU3RyaW5nIGdldFN0cmluZyh1
bnNpZ25lZCBsb25nIG5hbWUpOwogCiAgICAgICAgIGZsb2F0IGdldFRleFBhcmFtZXRlcmYodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwpAQCAtMTY0LDEyICsxNjQs
MTIgQEAgY2xhc3MgV2ViS2l0Q1NTTWF0cml4OwogICAgICAgICBpbnQgZ2V0VGV4UGFyYW1ldGVy
aSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7CiAgICAgICAgIFBh
c3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0VGV4UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0
YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwogCi0gICAgICAgIGZsb2F0IGdldFVuaWZvcm1m
KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMp
OwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gZ2V0VW5pZm9ybWZ2KFdlYkdM
UHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpOworICAg
ICAgICBmbG9hdCBnZXRVbmlmb3JtZihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRp
b24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+
IGdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICAgICAgbG9uZyBnZXRVbmlmb3JtaShXZWJHTFByb2dyYW0qIHByb2dy
YW0sIGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKTsKLSAgICAgICAgUGFzc1JlZlB0
cjxXZWJHTEludEFycmF5PiBnZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25n
IGxvY2F0aW9uLCBFeGNlcHRpb25Db2RlJiBlYyk7CisgICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJ
bnRBcnJheT4gZ2V0VW5pZm9ybWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlv
biwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgICAgIGxvbmcgZ2V0VW5pZm9ybUxvY2F0aW9uKFdl
YkdMUHJvZ3JhbSosIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpOworICAg
ICAgICBsb25nIGdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qLCBjb25zdCBTdHJpbmcm
IG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICBmbG9hdCBnZXRWZXJ0ZXhBdHRyaWJm
KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwogICAgICAgICBQYXNz
UmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gZ2V0VmVydGV4QXR0cmliZnYodW5zaWduZWQgbG9uZyBp
bmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7CkBAIC0xODcsNyArMTg3LDcgQEAgY2xhc3MgV2Vi
S2l0Q1NTTWF0cml4OwogICAgICAgICBib29sIGlzU2hhZGVyKFdlYkdMU2hhZGVyKik7CiAgICAg
ICAgIGJvb2wgaXNUZXh0dXJlKFdlYkdMVGV4dHVyZSopOwogICAgICAgICB2b2lkIGxpbmVXaWR0
aChkb3VibGUpOwotICAgICAgICB2b2lkIGxpbmtQcm9ncmFtKFdlYkdMUHJvZ3JhbSosIEV4Y2Vw
dGlvbkNvZGUmIGVjKTsKKyAgICAgICAgdm9pZCBsaW5rUHJvZ3JhbShXZWJHTFByb2dyYW0qLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgcGl4ZWxTdG9yZWkodW5zaWduZWQgbG9uZyBw
bmFtZSwgbG9uZyBwYXJhbSk7CiAgICAgICAgIHZvaWQgcG9seWdvbk9mZnNldChkb3VibGUgZmFj
dG9yLCBkb3VibGUgdW5pdHMpOwogICAgICAgICAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBjbGFzcyBX
ZWJLaXRDU1NNYXRyaXg7CiAgICAgICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZSh1bnNpZ25l
ZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9u
ZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOwogICAgICAgICB2b2lkIHNhbXBsZUNvdmVy
YWdlKGRvdWJsZSB2YWx1ZSwgYm9vbCBpbnZlcnQpOwogICAgICAgICB2b2lkIHNjaXNzb3IobG9u
ZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsK
LSAgICAgICAgdm9pZCBzaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqLCBjb25zdCBTdHJpbmcmLCBF
eGNlcHRpb25Db2RlJiBlYyk7CisgICAgICAgIHZvaWQgc2hhZGVyU291cmNlKFdlYkdMU2hhZGVy
KiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICB2b2lkIHN0ZW5jaWxG
dW5jKHVuc2lnbmVkIGxvbmcgZnVuYywgbG9uZyByZWYsIHVuc2lnbmVkIGxvbmcgbWFzayk7CiAg
ICAgICAgIHZvaWQgc3RlbmNpbEZ1bmNTZXBhcmF0ZSh1bnNpZ25lZCBsb25nIGZhY2UsIHVuc2ln
bmVkIGxvbmcgZnVuYywgbG9uZyByZWYsIHVuc2lnbmVkIGxvbmcgbWFzayk7CiAgICAgICAgIHZv
aWQgc3RlbmNpbE1hc2sodW5zaWduZWQgbG9uZyk7CkBAIC0yNjgsMjMgKzI2OCwyMyBAQCBjbGFz
cyBXZWJLaXRDU1NNYXRyaXg7CiAgICAgICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihsb25nIGxv
Y2F0aW9uLCBib29sIHRyYW5zcG9zZSwgV2ViR0xGbG9hdEFycmF5KiB2YWx1ZSk7CiAgICAgICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDRmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxv
YXQqIHZhbHVlLCBpbnQgc2l6ZSk7CiAKLSAgICAgICAgdm9pZCB1c2VQcm9ncmFtKFdlYkdMUHJv
Z3JhbSopOwotICAgICAgICB2b2lkIHZhbGlkYXRlUHJvZ3JhbShXZWJHTFByb2dyYW0qKTsKKyAg
ICAgICAgdm9pZCB1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICAgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oV2ViR0xQcm9ncmFtKiwgRXhjZXB0aW9uQ29kZSYp
OwogCi0gICAgICAgIHZvaWQgdmVydGV4QXR0cmliMWYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9h
dCB4KTsKLSAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYodW5zaWduZWQgbG9uZyBpbmR4LCBX
ZWJHTEZsb2F0QXJyYXkqIHZhbHVlcyk7Ci0gICAgICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KHVu
c2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHZhbHVlcywgaW50IHNpemUpOwotICAgICAgICB2b2lk
IHZlcnRleEF0dHJpYjJmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQgeCwgZmxvYXQgeSk7Ci0g
ICAgICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgV2ViR0xGbG9h
dEFycmF5KiB2YWx1ZXMpOwotICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjJmdih1bnNpZ25lZCBs
b25nIGluZHgsIGZsb2F0KiB2YWx1ZXMsIGludCBzaXplKTsKLSAgICAgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWIzZih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwot
ICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjNmdih1bnNpZ25lZCBsb25nIGluZHgsIFdlYkdMRmxv
YXRBcnJheSogdmFsdWVzKTsKLSAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYodW5zaWduZWQg
bG9uZyBpbmR4LCBmbG9hdCogdmFsdWVzLCBpbnQgc2l6ZSk7Ci0gICAgICAgIHZvaWQgdmVydGV4
QXR0cmliNGYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBm
bG9hdCB3KTsKLSAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYodW5zaWduZWQgbG9uZyBpbmR4
LCBXZWJHTEZsb2F0QXJyYXkqIHZhbHVlcyk7Ci0gICAgICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2
KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHZhbHVlcywgaW50IHNpemUpOwotICAgICAgICB2
b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIodW5zaWduZWQgbG9uZyBpbmR4LCBsb25nIHNpemUsIHVu
c2lnbmVkIGxvbmcgdHlwZSwgYm9vbCBub3JtYWxpemVkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdHJpZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsK
KyAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZih1bnNpZ25lZCBsb25nIGluZGV4LCBmbG9hdCB4
KTsKKyAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYodW5zaWduZWQgbG9uZyBpbmRleCwgV2Vi
R0xGbG9hdEFycmF5KiB2YWx1ZXMpOworICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjFmdih1bnNp
Z25lZCBsb25nIGluZGV4LCBmbG9hdCogdmFsdWVzLCBpbnQgc2l6ZSk7CisgICAgICAgIHZvaWQg
dmVydGV4QXR0cmliMmYodW5zaWduZWQgbG9uZyBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSk7Cisg
ICAgICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIFdlYkdMRmxv
YXRBcnJheSogdmFsdWVzKTsKKyAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYodW5zaWduZWQg
bG9uZyBpbmRleCwgZmxvYXQqIHZhbHVlcywgaW50IHNpemUpOworICAgICAgICB2b2lkIHZlcnRl
eEF0dHJpYjNmKHVuc2lnbmVkIGxvbmcgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHop
OworICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjNmdih1bnNpZ25lZCBsb25nIGluZGV4LCBXZWJH
TEZsb2F0QXJyYXkqIHZhbHVlcyk7CisgICAgICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KHVuc2ln
bmVkIGxvbmcgaW5kZXgsIGZsb2F0KiB2YWx1ZXMsIGludCBzaXplKTsKKyAgICAgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWI0Zih1bnNpZ25lZCBsb25nIGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB6LCBmbG9hdCB3KTsKKyAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYodW5zaWduZWQgbG9u
ZyBpbmRleCwgV2ViR0xGbG9hdEFycmF5KiB2YWx1ZXMpOworICAgICAgICB2b2lkIHZlcnRleEF0
dHJpYjRmdih1bnNpZ25lZCBsb25nIGluZGV4LCBmbG9hdCogdmFsdWVzLCBpbnQgc2l6ZSk7Cisg
ICAgICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcih1bnNpZ25lZCBsb25nIGluZGV4LCBsb25n
IHNpemUsIHVuc2lnbmVkIGxvbmcgdHlwZSwgYm9vbCBub3JtYWxpemVkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdHJpZGUsIHVuc2lnbmVkIGxvbmcg
b2Zmc2V0LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgdm9pZCB2aWV3cG9ydChsb25nIHgs
IGxvbmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOwogCkBA
IC0zMTQsMTIgKzMxNCwzMCBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAgICAgICAgICAgICAg
ICAgbWFya0NvbnRleHRDaGFuZ2VkKCk7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGJv
b2wgdmFsaWRhdGVJbmRleEFycmF5KHVuc2lnbmVkIGxvbmcgY291bnQsIHVuc2lnbmVkIGxvbmcg
dHlwZSwgbG9uZyBvZmZzZXQsIGxvbmcmIG51bUVsZW1lbnRzKTsKKyAgICAgICAgYm9vbCB2YWxp
ZGF0ZVJlbmRlcmluZ1N0YXRlKGxvbmcgbnVtRWxlbWVudHMpOworCiAgICAgICAgIE93blB0cjxH
cmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OwogICAgICAgICBib29sIG1fbmVlZHNVcGRhdGU7
CiAgICAgICAgIGJvb2wgbV9tYXJrZWRDYW52YXNEaXJ0eTsKICAgICAgICAgLy8gRklYTUU6IEkg
dGhpbmsgdGhpcyBpcyBicm9rZW4gLS0gaXQgZG9lcyBub3QgaW5jcmVtZW50IGFueQogICAgICAg
ICAvLyByZWZlcmVuY2UgY291bnRzLCBzbyBtYXkgcmVmZXIgdG8gZGVzdHJveWVkIG9iamVjdHMu
Ci0gICAgICAgIEhhc2hTZXQ8Q2FudmFzT2JqZWN0Kj4gbV9jYW52YXNPYmplY3RzOworICAgICAg
ICBIYXNoU2V0PFJlZlB0cjxDYW52YXNPYmplY3Q+ID4gbV9jYW52YXNPYmplY3RzOworICAgICAg
ICAKKyAgICAgICAgLy8gTGlzdCBvZiBib3VuZCBWQk8ncy4gVXNlZCB0byBtYWludGFpbiBpbmZv
IGFib3V0IHNpemVzIGZvciBBUlJBWV9CVUZGRVIgYW5kIHN0b3JlZCB2YWx1ZXMgZm9yIEVMRU1F
TlRfQVJSQVlfQlVGRkVSCisgICAgICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gbV9ib3VuZEFycmF5
QnVmZmVyOworICAgICAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IG1fYm91bmRFbGVtZW50QXJyYXlC
dWZmZXI7CisgICAgCisgICAgICAgIC8vIENhY2hlZCB2YWx1ZXMgZm9yIHZlcnRleCBhdHRyaWIg
cmFuZ2UgY2hlY2tzCisgICAgICAgIGNsYXNzIFZlcnRleEF0dHJpYlN0YXRlIHsKKyAgICAgICAg
cHVibGljOgorICAgICAgICAgICAgVmVydGV4QXR0cmliU3RhdGUoKSA6IGVuYWJsZWQoZmFsc2Up
LCBudW1FbGVtZW50cygwKSB7IH0KKyAgICAgICAgICAgIGJvb2wgZW5hYmxlZDsKKyAgICAgICAg
ICAgIGxvbmcgbnVtRWxlbWVudHM7CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBWZWN0
b3I8VmVydGV4QXR0cmliU3RhdGU+IG1fdmVydGV4QXR0cmliU3RhdGU7CisgICAgICAgIHVuc2ln
bmVkIG1fbWF4VmVydGV4QXR0cmliczsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRs
CShyZXZpc2lvbiA1MDkxMykKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDcyLDEzICs0NzIsMTQgQEAgbW9kdWxlIGh0
bWwgewogICAgICAgICB2b2lkICAgICAgICAgYmxlbmRFcXVhdGlvblNlcGFyYXRlKGluIHVuc2ln
bmVkIGxvbmcgbW9kZVJHQiwgaW4gdW5zaWduZWQgbG9uZyBtb2RlQWxwaGEpOwogICAgICAgICB2
b2lkICAgICAgICAgYmxlbmRGdW5jKGluIHVuc2lnbmVkIGxvbmcgc2ZhY3RvciwgaW4gdW5zaWdu
ZWQgbG9uZyBkZmFjdG9yKTsKICAgICAgICAgdm9pZCAgICAgICAgIGJsZW5kRnVuY1NlcGFyYXRl
KGluIHVuc2lnbmVkIGxvbmcgc3JjUkdCLCBpbiB1bnNpZ25lZCBsb25nIGRzdFJHQiwgaW4gdW5z
aWduZWQgbG9uZyBzcmNBbHBoYSwgaW4gdW5zaWduZWQgbG9uZyBkc3RBbHBoYSk7CisKICAgICAg
ICAgLy8gU3VwcG9ydGVkIGZvcm1zOgogICAgICAgICAvLyAgIHZvaWQgYnVmZmVyRGF0YSAoaW4g
R0xlbnVtIHRhcmdldCwgaW4gR0xzaXplaSBzaXplLCBpbiBHTGVudW0gdXNhZ2UpOwogICAgICAg
ICAvLyAgIHZvaWQgYnVmZmVyRGF0YSAoaW4gR0xlbnVtIHRhcmdldCwgaW4gV2ViR0xBcnJheSBk
YXRhLCBpbiBHTGVudW0gdXNhZ2UpOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIGJ1ZmZlckRhdGEo
KTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBidWZmZXJEYXRhKCkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CiAgICAgICAgIC8vIFN1cHBvcnRlZCBmb3JtczoKICAgICAgICAgLy8gICB2b2lkIGJ1ZmZl
clN1YkRhdGEgKGluIEdMZW51bSB0YXJnZXQsIGluIEdMc2l6ZWlwdHIgb2Zmc2V0LCBpbiBXZWJH
TEFycmF5IGRhdGEpOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIGJ1ZmZlclN1YkRhdGEoKTsKKyAg
ICAgICAgW0N1c3RvbV0gdm9pZCBidWZmZXJTdWJEYXRhKCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CiAKICAgICAgICAgdW5zaWduZWQgbG9uZyBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGluIHVuc2ln
bmVkIGxvbmcgdGFyZ2V0KTsKICAgICAgICAgdm9pZCAgICAgICAgIGNsZWFyKGluIHVuc2lnbmVk
IGxvbmcgbWFzayk7CkBAIC01MTYsMTIgKzUxNywxMiBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAg
IHZvaWQgICAgICAgICBkZXB0aFJhbmdlKGluIGRvdWJsZSB6TmVhciwgaW4gZG91YmxlIHpGYXIp
OwogICAgICAgICB2b2lkICAgICAgICAgZGV0YWNoU2hhZGVyKGluIFdlYkdMUHJvZ3JhbSBwcm9n
cmFtLCBpbiBXZWJHTFNoYWRlciBzaGFkZXIpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAg
ICB2b2lkICAgICAgICAgZGlzYWJsZShpbiB1bnNpZ25lZCBsb25nIGNhcCk7Ci0gICAgICAgIHZv
aWQgICAgICAgICBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW4gdW5zaWduZWQgbG9uZyBpbmRl
eCk7Ci0gICAgICAgIHZvaWQgICAgICAgICBkcmF3QXJyYXlzKGluIHVuc2lnbmVkIGxvbmcgbW9k
ZSwgaW4gbG9uZyBmaXJzdCwgaW4gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgICAgIHZvaWQg
ICAgICAgICBkcmF3RWxlbWVudHMgKGluIHVuc2lnbmVkIGxvbmcgbW9kZSwgaW4gbG9uZyBjb3Vu
dCwgaW4gdW5zaWduZWQgbG9uZyB0eXBlLCBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAg
ICAgIHZvaWQgICAgICAgICBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW4gdW5zaWduZWQgbG9u
ZyBpbmRleCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgICAgICAgICBkcmF3
QXJyYXlzKGluIHVuc2lnbmVkIGxvbmcgbW9kZSwgaW4gbG9uZyBmaXJzdCwgaW4gdW5zaWduZWQg
bG9uZyBjb3VudCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgICAgICAgICBk
cmF3RWxlbWVudHMgKGluIHVuc2lnbmVkIGxvbmcgbW9kZSwgaW4gbG9uZyBjb3VudCwgaW4gdW5z
aWduZWQgbG9uZyB0eXBlLCBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAKICAgICAgICAgdm9pZCAgICAgICAgIGVuYWJsZShpbiB1bnNpZ25lZCBsb25nIGNh
cCk7Ci0gICAgICAgIHZvaWQgICAgICAgICBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbiB1bnNp
Z25lZCBsb25nIGluZGV4KTsKKyAgICAgICAgdm9pZCAgICAgICAgIGVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAg
ICAgICB2b2lkICAgICAgICAgZmluaXNoKCk7CiAgICAgICAgIHZvaWQgICAgICAgICBmbHVzaCgp
OwogICAgICAgICB2b2lkICAgICAgICAgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoaW4gdW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgaW4gdW5zaWduZWQg
bG9uZyByZW5kZXJidWZmZXJ0YXJnZXQsIGluIFdlYkdMUmVuZGVyYnVmZmVyIHJlbmRlcmJ1ZmZl
cikgcmFpc2VzKERPTUV4Y2VwdGlvbik7CkBAIC02NjksMTkgKzY3MCwxOSBAQCBtb2R1bGUgaHRt
bCB7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihpbiBsb25nIGxvY2F0
aW9uLCBpbiBib29sZWFuIHRyYW5zcG9zZSwgaW4gV2ViR0xGbG9hdEFycmF5IGFycmF5KTsKICAg
ICAgICAgW0N1c3RvbV0gdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGluIGxvbmcgbG9jYXRpb24sIGlu
IGJvb2xlYW4gdHJhbnNwb3NlLCBpbiBXZWJHTEZsb2F0QXJyYXkgYXJyYXkpOwogCi0gICAgICAg
IHZvaWQgICAgICAgICB1c2VQcm9ncmFtKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtKTsKLSAgICAg
ICAgdm9pZCAgICAgICAgIHZhbGlkYXRlUHJvZ3JhbShpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSk7
CisgICAgICAgIHZvaWQgICAgICAgICB1c2VQcm9ncmFtKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFt
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCAgICAgICAgIHZhbGlkYXRlUHJv
Z3JhbShpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKLSAg
ICAgICAgdm9pZCAgICAgICAgIHZlcnRleEF0dHJpYjFmKGluIHVuc2lnbmVkIGxvbmcgaW5keCwg
aW4gZmxvYXQgeCk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgICAgICAgICB2ZXJ0ZXhBdHRyaWIx
ZnYoaW4gdW5zaWduZWQgbG9uZyBpbmR4LCBpbiBXZWJHTEZsb2F0QXJyYXkgdmFsdWVzKTsKLSAg
ICAgICAgdm9pZCAgICAgICAgIHZlcnRleEF0dHJpYjJmKGluIHVuc2lnbmVkIGxvbmcgaW5keCwg
aW4gZmxvYXQgeCwgaW4gZmxvYXQgeSk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgICAgICAgICB2
ZXJ0ZXhBdHRyaWIyZnYoaW4gdW5zaWduZWQgbG9uZyBpbmR4LCBpbiBXZWJHTEZsb2F0QXJyYXkg
dmFsdWVzKTsKLSAgICAgICAgdm9pZCAgICAgICAgIHZlcnRleEF0dHJpYjNmKGluIHVuc2lnbmVk
IGxvbmcgaW5keCwgaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSwgaW4gZmxvYXQgeik7Ci0gICAgICAg
IFtDdXN0b21dIHZvaWQgICAgICAgICB2ZXJ0ZXhBdHRyaWIzZnYoaW4gdW5zaWduZWQgbG9uZyBp
bmR4LCBpbiBXZWJHTEZsb2F0QXJyYXkgdmFsdWVzKTsKLSAgICAgICAgdm9pZCAgICAgICAgIHZl
cnRleEF0dHJpYjRmKGluIHVuc2lnbmVkIGxvbmcgaW5keCwgaW4gZmxvYXQgeCwgaW4gZmxvYXQg
eSwgaW4gZmxvYXQgeiwgaW4gZmxvYXQgdyk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgICAgICAg
ICB2ZXJ0ZXhBdHRyaWI0ZnYoaW4gdW5zaWduZWQgbG9uZyBpbmR4LCBpbiBXZWJHTEZsb2F0QXJy
YXkgdmFsdWVzKTsKLSAgICAgICAgdm9pZCAgICAgICAgIHZlcnRleEF0dHJpYlBvaW50ZXIoaW4g
dW5zaWduZWQgbG9uZyBpbmR4LCBpbiBsb25nIHNpemUsIGluIHVuc2lnbmVkIGxvbmcgdHlwZSwg
aW4gYm9vbGVhbiBub3JtYWxpemVkLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gbG9uZyBzdHJpZGUsIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKKyAgICAg
ICAgdm9pZCAgICAgICAgIHZlcnRleEF0dHJpYjFmKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGlu
IGZsb2F0IHgpOworICAgICAgICBbQ3VzdG9tXSB2b2lkICAgICAgICAgdmVydGV4QXR0cmliMWZ2
KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIFdlYkdMRmxvYXRBcnJheSB2YWx1ZXMpOworICAg
ICAgICB2b2lkICAgICAgICAgdmVydGV4QXR0cmliMmYoaW4gdW5zaWduZWQgbG9uZyBpbmRleCwg
aW4gZmxvYXQgeCwgaW4gZmxvYXQgeSk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgICAgICAgICB2
ZXJ0ZXhBdHRyaWIyZnYoaW4gdW5zaWduZWQgbG9uZyBpbmRleCwgaW4gV2ViR0xGbG9hdEFycmF5
IHZhbHVlcyk7CisgICAgICAgIHZvaWQgICAgICAgICB2ZXJ0ZXhBdHRyaWIzZihpbiB1bnNpZ25l
ZCBsb25nIGluZGV4LCBpbiBmbG9hdCB4LCBpbiBmbG9hdCB5LCBpbiBmbG9hdCB6KTsKKyAgICAg
ICAgW0N1c3RvbV0gdm9pZCAgICAgICAgIHZlcnRleEF0dHJpYjNmdihpbiB1bnNpZ25lZCBsb25n
IGluZGV4LCBpbiBXZWJHTEZsb2F0QXJyYXkgdmFsdWVzKTsKKyAgICAgICAgdm9pZCAgICAgICAg
IHZlcnRleEF0dHJpYjRmKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIGZsb2F0IHgsIGluIGZs
b2F0IHksIGluIGZsb2F0IHosIGluIGZsb2F0IHcpOworICAgICAgICBbQ3VzdG9tXSB2b2lkICAg
ICAgICAgdmVydGV4QXR0cmliNGZ2KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIFdlYkdMRmxv
YXRBcnJheSB2YWx1ZXMpOworICAgICAgICB2b2lkICAgICAgICAgdmVydGV4QXR0cmliUG9pbnRl
cihpbiB1bnNpZ25lZCBsb25nIGluZGV4LCBpbiBsb25nIHNpemUsIGluIHVuc2lnbmVkIGxvbmcg
dHlwZSwgaW4gYm9vbGVhbiBub3JtYWxpemVkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gbG9uZyBzdHJpZGUsIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICB2b2lkICAgICAgICAgdmlld3BvcnQoaW4g
bG9uZyB4LCBpbiBsb25nIHksIGluIHVuc2lnbmVkIGxvbmcgd2lkdGgsIGluIHVuc2lnbmVkIGxv
bmcgaGVpZ2h0KTsKICAgICB9OwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAJ
KHJldmlzaW9uIDUwOTEzKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDEyICszMiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCi1QYXNzUmVmUHRyPFdlYkdMU2hhZGVyPiBXZWJHTFNoYWRlcjo6Y3JlYXRlKFdlYkdM
UmVuZGVyaW5nQ29udGV4dCogY3R4LCBHcmFwaGljc0NvbnRleHQzRDo6U2hhZGVyVHlwZSB0eXBl
KQorUGFzc1JlZlB0cjxXZWJHTFNoYWRlcj4gV2ViR0xTaGFkZXI6OmNyZWF0ZShXZWJHTFJlbmRl
cmluZ0NvbnRleHQqIGN0eCwgR3JhcGhpY3NDb250ZXh0M0Q6OldlYkdMRW51bVR5cGUgdHlwZSkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMU2hhZGVyKGN0eCwgdHlwZSkpOwogfQog
Ci1XZWJHTFNoYWRlcjo6V2ViR0xTaGFkZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgsIEdy
YXBoaWNzQ29udGV4dDNEOjpTaGFkZXJUeXBlIHR5cGUpCitXZWJHTFNoYWRlcjo6V2ViR0xTaGFk
ZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgsIEdyYXBoaWNzQ29udGV4dDNEOjpXZWJHTEVu
dW1UeXBlIHR5cGUpCiAgICAgOiBDYW52YXNPYmplY3QoY3R4KQogewogICAgIHNldE9iamVjdChj
b250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZVNoYWRlcih0eXBlKSk7CkluZGV4
OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oCShyZXZpc2lvbiA1MDkxMykKKysrIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTAgKzM3LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfldl
YkdMU2hhZGVyKCkgeyBkZWxldGVPYmplY3QoKTsgfQogICAgICAgICAKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViR0xTaGFkZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBH
cmFwaGljc0NvbnRleHQzRDo6U2hhZGVyVHlwZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYkdMU2hhZGVyPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgR3JhcGhpY3NDb250
ZXh0M0Q6OldlYkdMRW51bVR5cGUpOwogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBX
ZWJHTFNoYWRlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBHcmFwaGljc0NvbnRleHQzRDo6U2hh
ZGVyVHlwZSk7CisgICAgICAgIFdlYkdMU2hhZGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIEdy
YXBoaWNzQ29udGV4dDNEOjpXZWJHTEVudW1UeXBlKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
X2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0KTsKICAgICB9OwpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gNTA5MTMp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDggKzc2LDMwOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBHcmFwaGljc0NvbnRleHQzRCA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBlbnVtIFNoYWRlclR5cGUgeyBGUkFHTUVOVF9TSEFERVIsIFZFUlRFWF9TSEFE
RVIgfTsKLSAgICAKKyAgICAgICAgZW51bSBXZWJHTEVudW1UeXBlIHsKKyAgICAgICAgICAgIERF
UFRIX0JVRkZFUl9CSVQgPSAweDAwMDAwMTAwLAorICAgICAgICAgICAgU1RFTkNJTF9CVUZGRVJf
QklUID0gMHgwMDAwMDQwMCwKKyAgICAgICAgICAgIENPTE9SX0JVRkZFUl9CSVQgPSAweDAwMDA0
MDAwLAorICAgICAgICAgICAgUE9JTlRTID0gMHgwMDAwLAorICAgICAgICAgICAgTElORVMgPSAw
eDAwMDEsCisgICAgICAgICAgICBMSU5FX0xPT1AgPSAweDAwMDIsCisgICAgICAgICAgICBMSU5F
X1NUUklQID0gMHgwMDAzLAorICAgICAgICAgICAgVFJJQU5HTEVTID0gMHgwMDA0LAorICAgICAg
ICAgICAgVFJJQU5HTEVfU1RSSVAgPSAweDAwMDUsCisgICAgICAgICAgICBUUklBTkdMRV9GQU4g
PSAweDAwMDYsCisgICAgICAgICAgICBaRVJPID0gMCwKKyAgICAgICAgICAgIE9ORSA9IDEsCisg
ICAgICAgICAgICBTUkNfQ09MT1IgPSAweDAzMDAsCisgICAgICAgICAgICBPTkVfTUlOVVNfU1JD
X0NPTE9SID0gMHgwMzAxLAorICAgICAgICAgICAgU1JDX0FMUEhBID0gMHgwMzAyLAorICAgICAg
ICAgICAgT05FX01JTlVTX1NSQ19BTFBIQSA9IDB4MDMwMywKKyAgICAgICAgICAgIERTVF9BTFBI
QSA9IDB4MDMwNCwKKyAgICAgICAgICAgIE9ORV9NSU5VU19EU1RfQUxQSEEgPSAweDAzMDUsCisg
ICAgICAgICAgICBEU1RfQ09MT1IgPSAweDAzMDYsCisgICAgICAgICAgICBPTkVfTUlOVVNfRFNU
X0NPTE9SID0gMHgwMzA3LAorICAgICAgICAgICAgU1JDX0FMUEhBX1NBVFVSQVRFID0gMHgwMzA4
LAorICAgICAgICAgICAgRlVOQ19BREQgPSAweDgwMDYsCisgICAgICAgICAgICBCTEVORF9FUVVB
VElPTiA9IDB4ODAwOSwKKyAgICAgICAgICAgIEJMRU5EX0VRVUFUSU9OX1JHQiA9IDB4ODAwOSwK
KyAgICAgICAgICAgIEJMRU5EX0VRVUFUSU9OX0FMUEhBID0gMHg4ODNELAorICAgICAgICAgICAg
RlVOQ19TVUJUUkFDVCA9IDB4ODAwQSwKKyAgICAgICAgICAgIEZVTkNfUkVWRVJTRV9TVUJUUkFD
VCA9IDB4ODAwQiwKKyAgICAgICAgICAgIEJMRU5EX0RTVF9SR0IgPSAweDgwQzgsCisgICAgICAg
ICAgICBCTEVORF9TUkNfUkdCID0gMHg4MEM5LAorICAgICAgICAgICAgQkxFTkRfRFNUX0FMUEhB
ID0gMHg4MENBLAorICAgICAgICAgICAgQkxFTkRfU1JDX0FMUEhBID0gMHg4MENCLAorICAgICAg
ICAgICAgQ09OU1RBTlRfQ09MT1IgPSAweDgwMDEsCisgICAgICAgICAgICBPTkVfTUlOVVNfQ09O
U1RBTlRfQ09MT1IgPSAweDgwMDIsCisgICAgICAgICAgICBDT05TVEFOVF9BTFBIQSA9IDB4ODAw
MywKKyAgICAgICAgICAgIE9ORV9NSU5VU19DT05TVEFOVF9BTFBIQSA9IDB4ODAwNCwKKyAgICAg
ICAgICAgIEJMRU5EX0NPTE9SID0gMHg4MDA1LAorICAgICAgICAgICAgQVJSQVlfQlVGRkVSID0g
MHg4ODkyLAorICAgICAgICAgICAgRUxFTUVOVF9BUlJBWV9CVUZGRVIgPSAweDg4OTMsCisgICAg
ICAgICAgICBBUlJBWV9CVUZGRVJfQklORElORyA9IDB4ODg5NCwKKyAgICAgICAgICAgIEVMRU1F
TlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcgPSAweDg4OTUsCisgICAgICAgICAgICBTVFJFQU1fRFJB
VyA9IDB4ODhFMCwKKyAgICAgICAgICAgIFNUQVRJQ19EUkFXID0gMHg4OEU0LAorICAgICAgICAg
ICAgRFlOQU1JQ19EUkFXID0gMHg4OEU4LAorICAgICAgICAgICAgQlVGRkVSX1NJWkUgPSAweDg3
NjQsCisgICAgICAgICAgICBCVUZGRVJfVVNBR0UgPSAweDg3NjUsCisgICAgICAgICAgICBDVVJS
RU5UX1ZFUlRFWF9BVFRSSUIgPSAweDg2MjYsCisgICAgICAgICAgICBGUk9OVCA9IDB4MDQwNCwK
KyAgICAgICAgICAgIEJBQ0sgPSAweDA0MDUsCisgICAgICAgICAgICBGUk9OVF9BTkRfQkFDSyA9
IDB4MDQwOCwKKyAgICAgICAgICAgIFRFWFRVUkVfMkQgPSAweDBERTEsCisgICAgICAgICAgICBD
VUxMX0ZBQ0UgPSAweDBCNDQsCisgICAgICAgICAgICBCTEVORCA9IDB4MEJFMiwKKyAgICAgICAg
ICAgIERJVEhFUiA9IDB4MEJEMCwKKyAgICAgICAgICAgIFNURU5DSUxfVEVTVCA9IDB4MEI5MCwK
KyAgICAgICAgICAgIERFUFRIX1RFU1QgPSAweDBCNzEsCisgICAgICAgICAgICBTQ0lTU09SX1RF
U1QgPSAweDBDMTEsCisgICAgICAgICAgICBQT0xZR09OX09GRlNFVF9GSUxMID0gMHg4MDM3LAor
ICAgICAgICAgICAgU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFID0gMHg4MDlFLAorICAgICAgICAg
ICAgU0FNUExFX0NPVkVSQUdFID0gMHg4MEEwLAorICAgICAgICAgICAgTk9fRVJST1IgPSAwLAor
ICAgICAgICAgICAgSU5WQUxJRF9FTlVNID0gMHgwNTAwLAorICAgICAgICAgICAgSU5WQUxJRF9W
QUxVRSA9IDB4MDUwMSwKKyAgICAgICAgICAgIElOVkFMSURfT1BFUkFUSU9OID0gMHgwNTAyLAor
ICAgICAgICAgICAgT1VUX09GX01FTU9SWSA9IDB4MDUwNSwKKyAgICAgICAgICAgIENXID0gMHgw
OTAwLAorICAgICAgICAgICAgQ0NXID0gMHgwOTAxLAorICAgICAgICAgICAgTElORV9XSURUSCA9
IDB4MEIyMSwKKyAgICAgICAgICAgIEFMSUFTRURfUE9JTlRfU0laRV9SQU5HRSA9IDB4ODQ2RCwK
KyAgICAgICAgICAgIEFMSUFTRURfTElORV9XSURUSF9SQU5HRSA9IDB4ODQ2RSwKKyAgICAgICAg
ICAgIENVTExfRkFDRV9NT0RFID0gMHgwQjQ1LAorICAgICAgICAgICAgRlJPTlRfRkFDRSA9IDB4
MEI0NiwKKyAgICAgICAgICAgIERFUFRIX1JBTkdFID0gMHgwQjcwLAorICAgICAgICAgICAgREVQ
VEhfV1JJVEVNQVNLID0gMHgwQjcyLAorICAgICAgICAgICAgREVQVEhfQ0xFQVJfVkFMVUUgPSAw
eDBCNzMsCisgICAgICAgICAgICBERVBUSF9GVU5DID0gMHgwQjc0LAorICAgICAgICAgICAgU1RF
TkNJTF9DTEVBUl9WQUxVRSA9IDB4MEI5MSwKKyAgICAgICAgICAgIFNURU5DSUxfRlVOQyA9IDB4
MEI5MiwKKyAgICAgICAgICAgIFNURU5DSUxfRkFJTCA9IDB4MEI5NCwKKyAgICAgICAgICAgIFNU
RU5DSUxfUEFTU19ERVBUSF9GQUlMID0gMHgwQjk1LAorICAgICAgICAgICAgU1RFTkNJTF9QQVNT
X0RFUFRIX1BBU1MgPSAweDBCOTYsCisgICAgICAgICAgICBTVEVOQ0lMX1JFRiA9IDB4MEI5NywK
KyAgICAgICAgICAgIFNURU5DSUxfVkFMVUVfTUFTSyA9IDB4MEI5MywKKyAgICAgICAgICAgIFNU
RU5DSUxfV1JJVEVNQVNLID0gMHgwQjk4LAorICAgICAgICAgICAgU1RFTkNJTF9CQUNLX0ZVTkMg
PSAweDg4MDAsCisgICAgICAgICAgICBTVEVOQ0lMX0JBQ0tfRkFJTCA9IDB4ODgwMSwKKyAgICAg
ICAgICAgIFNURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwgPSAweDg4MDIsCisgICAgICAgICAg
ICBTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTID0gMHg4ODAzLAorICAgICAgICAgICAgU1RF
TkNJTF9CQUNLX1JFRiA9IDB4OENBMywKKyAgICAgICAgICAgIFNURU5DSUxfQkFDS19WQUxVRV9N
QVNLID0gMHg4Q0E0LAorICAgICAgICAgICAgU1RFTkNJTF9CQUNLX1dSSVRFTUFTSyA9IDB4OENB
NSwKKyAgICAgICAgICAgIFZJRVdQT1JUID0gMHgwQkEyLAorICAgICAgICAgICAgU0NJU1NPUl9C
T1ggPSAweDBDMTAsCisgICAgICAgICAgICBDT0xPUl9DTEVBUl9WQUxVRSA9IDB4MEMyMiwKKyAg
ICAgICAgICAgIENPTE9SX1dSSVRFTUFTSyA9IDB4MEMyMywKKyAgICAgICAgICAgIFVOUEFDS19B
TElHTk1FTlQgPSAweDBDRjUsCisgICAgICAgICAgICBQQUNLX0FMSUdOTUVOVCA9IDB4MEQwNSwK
KyAgICAgICAgICAgIE1BWF9URVhUVVJFX1NJWkUgPSAweDBEMzMsCisgICAgICAgICAgICBNQVhf
VklFV1BPUlRfRElNUyA9IDB4MEQzQSwKKyAgICAgICAgICAgIFNVQlBJWEVMX0JJVFMgPSAweDBE
NTAsCisgICAgICAgICAgICBSRURfQklUUyA9IDB4MEQ1MiwKKyAgICAgICAgICAgIEdSRUVOX0JJ
VFMgPSAweDBENTMsCisgICAgICAgICAgICBCTFVFX0JJVFMgPSAweDBENTQsCisgICAgICAgICAg
ICBBTFBIQV9CSVRTID0gMHgwRDU1LAorICAgICAgICAgICAgREVQVEhfQklUUyA9IDB4MEQ1NiwK
KyAgICAgICAgICAgIFNURU5DSUxfQklUUyA9IDB4MEQ1NywKKyAgICAgICAgICAgIFBPTFlHT05f
T0ZGU0VUX1VOSVRTID0gMHgyQTAwLAorICAgICAgICAgICAgUE9MWUdPTl9PRkZTRVRfRkFDVE9S
ID0gMHg4MDM4LAorICAgICAgICAgICAgVEVYVFVSRV9CSU5ESU5HXzJEID0gMHg4MDY5LAorICAg
ICAgICAgICAgU0FNUExFX0JVRkZFUlMgPSAweDgwQTgsCisgICAgICAgICAgICBTQU1QTEVTID0g
MHg4MEE5LAorICAgICAgICAgICAgU0FNUExFX0NPVkVSQUdFX1ZBTFVFID0gMHg4MEFBLAorICAg
ICAgICAgICAgU0FNUExFX0NPVkVSQUdFX0lOVkVSVCA9IDB4ODBBQiwKKyAgICAgICAgICAgIE5V
TV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyA9IDB4ODZBMiwKKyAgICAgICAgICAgIENPTVBS
RVNTRURfVEVYVFVSRV9GT1JNQVRTID0gMHg4NkEzLAorICAgICAgICAgICAgRE9OVF9DQVJFID0g
MHgxMTAwLAorICAgICAgICAgICAgRkFTVEVTVCA9IDB4MTEwMSwKKyAgICAgICAgICAgIE5JQ0VT
VCA9IDB4MTEwMiwKKyAgICAgICAgICAgIEdFTkVSQVRFX01JUE1BUF9ISU5UID0gMHg4MTkyLAor
ICAgICAgICAgICAgQllURSA9IDB4MTQwMCwKKyAgICAgICAgICAgIFVOU0lHTkVEX0JZVEUgPSAw
eDE0MDEsCisgICAgICAgICAgICBTSE9SVCA9IDB4MTQwMiwKKyAgICAgICAgICAgIFVOU0lHTkVE
X1NIT1JUID0gMHgxNDAzLAorICAgICAgICAgICAgSU5UID0gMHgxNDA0LAorICAgICAgICAgICAg
VU5TSUdORURfSU5UID0gMHgxNDA1LAorICAgICAgICAgICAgRkxPQVQgPSAweDE0MDYsCisgICAg
ICAgICAgICBGSVhFRCA9IDB4MTQwQywKKyAgICAgICAgICAgIERFUFRIX0NPTVBPTkVOVCA9IDB4
MTkwMiwKKyAgICAgICAgICAgIEFMUEhBID0gMHgxOTA2LAorICAgICAgICAgICAgUkdCID0gMHgx
OTA3LAorICAgICAgICAgICAgUkdCQSA9IDB4MTkwOCwKKyAgICAgICAgICAgIExVTUlOQU5DRSA9
IDB4MTkwOSwKKyAgICAgICAgICAgIExVTUlOQU5DRV9BTFBIQSA9IDB4MTkwQSwKKyAgICAgICAg
ICAgIFVOU0lHTkVEX1NIT1JUXzRfNF80XzQgPSAweDgwMzMsCisgICAgICAgICAgICBVTlNJR05F
RF9TSE9SVF81XzVfNV8xID0gMHg4MDM0LAorICAgICAgICAgICAgVU5TSUdORURfU0hPUlRfNV82
XzUgPSAweDgzNjMsCisgICAgICAgICAgICBGUkFHTUVOVF9TSEFERVIgPSAweDhCMzAsCisgICAg
ICAgICAgICBWRVJURVhfU0hBREVSID0gMHg4QjMxLAorICAgICAgICAgICAgTUFYX1ZFUlRFWF9B
VFRSSUJTID0gMHg4ODY5LAorICAgICAgICAgICAgTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMg
PSAweDhERkIsCisgICAgICAgICAgICBNQVhfVkFSWUlOR19WRUNUT1JTID0gMHg4REZDLAorICAg
ICAgICAgICAgTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMgPSAweDhCNEQsCisgICAg
ICAgICAgICBNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMgPSAweDhCNEMsCisgICAgICAg
ICAgICBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyA9IDB4ODg3MiwKKyAgICAgICAgICAgIE1BWF9G
UkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMgPSAweDhERkQsCisgICAgICAgICAgICBTSEFERVJfVFlQ
RSA9IDB4OEI0RiwKKyAgICAgICAgICAgIERFTEVURV9TVEFUVVMgPSAweDhCODAsCisgICAgICAg
ICAgICBMSU5LX1NUQVRVUyA9IDB4OEI4MiwKKyAgICAgICAgICAgIFZBTElEQVRFX1NUQVRVUyA9
IDB4OEI4MywKKyAgICAgICAgICAgIEFUVEFDSEVEX1NIQURFUlMgPSAweDhCODUsCisgICAgICAg
ICAgICBBQ1RJVkVfVU5JRk9STVMgPSAweDhCODYsCisgICAgICAgICAgICBBQ1RJVkVfVU5JRk9S
TV9NQVhfTEVOR1RIID0gMHg4Qjg3LAorICAgICAgICAgICAgQUNUSVZFX0FUVFJJQlVURVMgPSAw
eDhCODksCisgICAgICAgICAgICBBQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEggPSAweDhCOEEs
CisgICAgICAgICAgICBTSEFESU5HX0xBTkdVQUdFX1ZFUlNJT04gPSAweDhCOEMsCisgICAgICAg
ICAgICBDVVJSRU5UX1BST0dSQU0gPSAweDhCOEQsCisgICAgICAgICAgICBORVZFUiA9IDB4MDIw
MCwKKyAgICAgICAgICAgIExFU1MgPSAweDAyMDEsCisgICAgICAgICAgICBFUVVBTCA9IDB4MDIw
MiwKKyAgICAgICAgICAgIExFUVVBTCA9IDB4MDIwMywKKyAgICAgICAgICAgIEdSRUFURVIgPSAw
eDAyMDQsCisgICAgICAgICAgICBOT1RFUVVBTCA9IDB4MDIwNSwKKyAgICAgICAgICAgIEdFUVVB
TCA9IDB4MDIwNiwKKyAgICAgICAgICAgIEFMV0FZUyA9IDB4MDIwNywKKyAgICAgICAgICAgIEtF
RVAgPSAweDFFMDAsCisgICAgICAgICAgICBSRVBMQUNFID0gMHgxRTAxLAorICAgICAgICAgICAg
SU5DUiA9IDB4MUUwMiwKKyAgICAgICAgICAgIERFQ1IgPSAweDFFMDMsCisgICAgICAgICAgICBJ
TlZFUlQgPSAweDE1MEEsCisgICAgICAgICAgICBJTkNSX1dSQVAgPSAweDg1MDcsCisgICAgICAg
ICAgICBERUNSX1dSQVAgPSAweDg1MDgsCisgICAgICAgICAgICBWRU5ET1IgPSAweDFGMDAsCisg
ICAgICAgICAgICBSRU5ERVJFUiA9IDB4MUYwMSwKKyAgICAgICAgICAgIFZFUlNJT04gPSAweDFG
MDIsCisgICAgICAgICAgICBFWFRFTlNJT05TID0gMHgxRjAzLAorICAgICAgICAgICAgTkVBUkVT
VCA9IDB4MjYwMCwKKyAgICAgICAgICAgIExJTkVBUiA9IDB4MjYwMSwKKyAgICAgICAgICAgIE5F
QVJFU1RfTUlQTUFQX05FQVJFU1QgPSAweDI3MDAsCisgICAgICAgICAgICBMSU5FQVJfTUlQTUFQ
X05FQVJFU1QgPSAweDI3MDEsCisgICAgICAgICAgICBORUFSRVNUX01JUE1BUF9MSU5FQVIgPSAw
eDI3MDIsCisgICAgICAgICAgICBMSU5FQVJfTUlQTUFQX0xJTkVBUiA9IDB4MjcwMywKKyAgICAg
ICAgICAgIFRFWFRVUkVfTUFHX0ZJTFRFUiA9IDB4MjgwMCwKKyAgICAgICAgICAgIFRFWFRVUkVf
TUlOX0ZJTFRFUiA9IDB4MjgwMSwKKyAgICAgICAgICAgIFRFWFRVUkVfV1JBUF9TID0gMHgyODAy
LAorICAgICAgICAgICAgVEVYVFVSRV9XUkFQX1QgPSAweDI4MDMsCisgICAgICAgICAgICBURVhU
VVJFID0gMHgxNzAyLAorICAgICAgICAgICAgVEVYVFVSRV9DVUJFX01BUCA9IDB4ODUxMywKKyAg
ICAgICAgICAgIFRFWFRVUkVfQklORElOR19DVUJFX01BUCA9IDB4ODUxNCwKKyAgICAgICAgICAg
IFRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCA9IDB4ODUxNSwKKyAgICAgICAgICAgIFRFWFRV
UkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCA9IDB4ODUxNiwKKyAgICAgICAgICAgIFRFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWSA9IDB4ODUxNywKKyAgICAgICAgICAgIFRFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWSA9IDB4ODUxOCwKKyAgICAgICAgICAgIFRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJ
VkVfWiA9IDB4ODUxOSwKKyAgICAgICAgICAgIFRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWiA9
IDB4ODUxQSwKKyAgICAgICAgICAgIE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUgPSAweDg1MUMs
CisgICAgICAgICAgICBURVhUVVJFMCA9IDB4ODRDMCwKKyAgICAgICAgICAgIFRFWFRVUkUxID0g
MHg4NEMxLAorICAgICAgICAgICAgVEVYVFVSRTIgPSAweDg0QzIsCisgICAgICAgICAgICBURVhU
VVJFMyA9IDB4ODRDMywKKyAgICAgICAgICAgIFRFWFRVUkU0ID0gMHg4NEM0LAorICAgICAgICAg
ICAgVEVYVFVSRTUgPSAweDg0QzUsCisgICAgICAgICAgICBURVhUVVJFNiA9IDB4ODRDNiwKKyAg
ICAgICAgICAgIFRFWFRVUkU3ID0gMHg4NEM3LAorICAgICAgICAgICAgVEVYVFVSRTggPSAweDg0
QzgsCisgICAgICAgICAgICBURVhUVVJFOSA9IDB4ODRDOSwKKyAgICAgICAgICAgIFRFWFRVUkUx
MCA9IDB4ODRDQSwKKyAgICAgICAgICAgIFRFWFRVUkUxMSA9IDB4ODRDQiwKKyAgICAgICAgICAg
IFRFWFRVUkUxMiA9IDB4ODRDQywKKyAgICAgICAgICAgIFRFWFRVUkUxMyA9IDB4ODRDRCwKKyAg
ICAgICAgICAgIFRFWFRVUkUxNCA9IDB4ODRDRSwKKyAgICAgICAgICAgIFRFWFRVUkUxNSA9IDB4
ODRDRiwKKyAgICAgICAgICAgIFRFWFRVUkUxNiA9IDB4ODREMCwKKyAgICAgICAgICAgIFRFWFRV
UkUxNyA9IDB4ODREMSwKKyAgICAgICAgICAgIFRFWFRVUkUxOCA9IDB4ODREMiwKKyAgICAgICAg
ICAgIFRFWFRVUkUxOSA9IDB4ODREMywKKyAgICAgICAgICAgIFRFWFRVUkUyMCA9IDB4ODRENCwK
KyAgICAgICAgICAgIFRFWFRVUkUyMSA9IDB4ODRENSwKKyAgICAgICAgICAgIFRFWFRVUkUyMiA9
IDB4ODRENiwKKyAgICAgICAgICAgIFRFWFRVUkUyMyA9IDB4ODRENywKKyAgICAgICAgICAgIFRF
WFRVUkUyNCA9IDB4ODREOCwKKyAgICAgICAgICAgIFRFWFRVUkUyNSA9IDB4ODREOSwKKyAgICAg
ICAgICAgIFRFWFRVUkUyNiA9IDB4ODREQSwKKyAgICAgICAgICAgIFRFWFRVUkUyNyA9IDB4ODRE
QiwKKyAgICAgICAgICAgIFRFWFRVUkUyOCA9IDB4ODREQywKKyAgICAgICAgICAgIFRFWFRVUkUy
OSA9IDB4ODRERCwKKyAgICAgICAgICAgIFRFWFRVUkUzMCA9IDB4ODRERSwKKyAgICAgICAgICAg
IFRFWFRVUkUzMSA9IDB4ODRERiwKKyAgICAgICAgICAgIEFDVElWRV9URVhUVVJFID0gMHg4NEUw
LAorICAgICAgICAgICAgUkVQRUFUID0gMHgyOTAxLAorICAgICAgICAgICAgQ0xBTVBfVE9fRURH
RSA9IDB4ODEyRiwKKyAgICAgICAgICAgIE1JUlJPUkVEX1JFUEVBVCA9IDB4ODM3MCwKKyAgICAg
ICAgICAgIEZMT0FUX1ZFQzIgPSAweDhCNTAsCisgICAgICAgICAgICBGTE9BVF9WRUMzID0gMHg4
QjUxLAorICAgICAgICAgICAgRkxPQVRfVkVDNCA9IDB4OEI1MiwKKyAgICAgICAgICAgIElOVF9W
RUMyID0gMHg4QjUzLAorICAgICAgICAgICAgSU5UX1ZFQzMgPSAweDhCNTQsCisgICAgICAgICAg
ICBJTlRfVkVDNCA9IDB4OEI1NSwKKyAgICAgICAgICAgIEJPT0wgPSAweDhCNTYsCisgICAgICAg
ICAgICBCT09MX1ZFQzIgPSAweDhCNTcsCisgICAgICAgICAgICBCT09MX1ZFQzMgPSAweDhCNTgs
CisgICAgICAgICAgICBCT09MX1ZFQzQgPSAweDhCNTksCisgICAgICAgICAgICBGTE9BVF9NQVQy
ID0gMHg4QjVBLAorICAgICAgICAgICAgRkxPQVRfTUFUMyA9IDB4OEI1QiwKKyAgICAgICAgICAg
IEZMT0FUX01BVDQgPSAweDhCNUMsCisgICAgICAgICAgICBTQU1QTEVSXzJEID0gMHg4QjVFLAor
ICAgICAgICAgICAgU0FNUExFUl9DVUJFID0gMHg4QjYwLAorICAgICAgICAgICAgVkVSVEVYX0FU
VFJJQl9BUlJBWV9FTkFCTEVEID0gMHg4NjIyLAorICAgICAgICAgICAgVkVSVEVYX0FUVFJJQl9B
UlJBWV9TSVpFID0gMHg4NjIzLAorICAgICAgICAgICAgVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJ
REUgPSAweDg2MjQsCisgICAgICAgICAgICBWRVJURVhfQVRUUklCX0FSUkFZX1RZUEUgPSAweDg2
MjUsCisgICAgICAgICAgICBWRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQgPSAweDg4NkEs
CisgICAgICAgICAgICBWRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVIgPSAweDg2NDUsCisgICAg
ICAgICAgICBWRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HID0gMHg4ODlGLAorICAg
ICAgICAgICAgSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFID0gMHg4QjlBLAorICAgICAg
ICAgICAgSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQgPSAweDhCOUIsCisgICAgICAg
ICAgICBDT01QSUxFX1NUQVRVUyA9IDB4OEI4MSwKKyAgICAgICAgICAgIElORk9fTE9HX0xFTkdU
SCA9IDB4OEI4NCwKKyAgICAgICAgICAgIFNIQURFUl9TT1VSQ0VfTEVOR1RIID0gMHg4Qjg4LAor
ICAgICAgICAgICAgU0hBREVSX0NPTVBJTEVSID0gMHg4REZBLAorICAgICAgICAgICAgU0hBREVS
X0JJTkFSWV9GT1JNQVRTID0gMHg4REY4LAorICAgICAgICAgICAgTlVNX1NIQURFUl9CSU5BUllf
Rk9STUFUUyA9IDB4OERGOSwKKyAgICAgICAgICAgIExPV19GTE9BVCA9IDB4OERGMCwKKyAgICAg
ICAgICAgIE1FRElVTV9GTE9BVCA9IDB4OERGMSwKKyAgICAgICAgICAgIEhJR0hfRkxPQVQgPSAw
eDhERjIsCisgICAgICAgICAgICBMT1dfSU5UID0gMHg4REYzLAorICAgICAgICAgICAgTUVESVVN
X0lOVCA9IDB4OERGNCwKKyAgICAgICAgICAgIEhJR0hfSU5UID0gMHg4REY1LAorICAgICAgICAg
ICAgRlJBTUVCVUZGRVIgPSAweDhENDAsCisgICAgICAgICAgICBSRU5ERVJCVUZGRVIgPSAweDhE
NDEsCisgICAgICAgICAgICBSR0JBNCA9IDB4ODA1NiwKKyAgICAgICAgICAgIFJHQjVfQTEgPSAw
eDgwNTcsCisgICAgICAgICAgICBSR0I1NjUgPSAweDhENjIsCisgICAgICAgICAgICBERVBUSF9D
T01QT05FTlQxNiA9IDB4ODFBNSwKKyAgICAgICAgICAgIFNURU5DSUxfSU5ERVggPSAweDE5MDEs
CisgICAgICAgICAgICBTVEVOQ0lMX0lOREVYOCA9IDB4OEQ0OCwKKyAgICAgICAgICAgIFJFTkRF
UkJVRkZFUl9XSURUSCA9IDB4OEQ0MiwKKyAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9IRUlHSFQg
PSAweDhENDMsCisgICAgICAgICAgICBSRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUID0gMHg4
RDQ0LAorICAgICAgICAgICAgUkVOREVSQlVGRkVSX1JFRF9TSVpFID0gMHg4RDUwLAorICAgICAg
ICAgICAgUkVOREVSQlVGRkVSX0dSRUVOX1NJWkUgPSAweDhENTEsCisgICAgICAgICAgICBSRU5E
RVJCVUZGRVJfQkxVRV9TSVpFID0gMHg4RDUyLAorICAgICAgICAgICAgUkVOREVSQlVGRkVSX0FM
UEhBX1NJWkUgPSAweDhENTMsCisgICAgICAgICAgICBSRU5ERVJCVUZGRVJfREVQVEhfU0laRSA9
IDB4OEQ1NCwKKyAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkUgPSAweDhENTUs
CisgICAgICAgICAgICBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFID0gMHg4Q0Qw
LAorICAgICAgICAgICAgRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSA9IDB4OENE
MSwKKyAgICAgICAgICAgIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTCA9IDB4
OENEMiwKKyAgICAgICAgICAgIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01B
UF9GQUNFID0gMHg4Q0QzLAorICAgICAgICAgICAgQ09MT1JfQVRUQUNITUVOVDAgPSAweDhDRTAs
CisgICAgICAgICAgICBERVBUSF9BVFRBQ0hNRU5UID0gMHg4RDAwLAorICAgICAgICAgICAgU1RF
TkNJTF9BVFRBQ0hNRU5UID0gMHg4RDIwLAorICAgICAgICAgICAgTk9ORSA9IDAsCisgICAgICAg
ICAgICBGUkFNRUJVRkZFUl9DT01QTEVURSA9IDB4OENENSwKKyAgICAgICAgICAgIEZSQU1FQlVG
RkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCA9IDB4OENENiwKKyAgICAgICAgICAgIEZSQU1FQlVG
RkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UID0gMHg4Q0Q3LAorICAgICAgICAgICAg
RlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TID0gMHg4Q0Q5LAorICAgICAgICAgICAg
RlJBTUVCVUZGRVJfVU5TVVBQT1JURUQgPSAweDhDREQsCisgICAgICAgICAgICBGUkFNRUJVRkZF
Ul9CSU5ESU5HID0gMHg4Q0E2LAorICAgICAgICAgICAgUkVOREVSQlVGRkVSX0JJTkRJTkcgPSAw
eDhDQTcsCisgICAgICAgICAgICBNQVhfUkVOREVSQlVGRkVSX1NJWkUgPSAweDg0RTgsCisgICAg
ICAgICAgICBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA9IDB4MDUwNgorICAgICAgICB9
OworICAgICAgICAKICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IGNyZWF0ZSgpOwogICAgICAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHQzRCgpOwogCkBAIC0z
MDMsNyArNjA0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB1bnNpZ25lZCBjcmVh
dGVGcmFtZWJ1ZmZlcigpOwogICAgICAgICB1bnNpZ25lZCBjcmVhdGVQcm9ncmFtKCk7CiAgICAg
ICAgIHVuc2lnbmVkIGNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwotICAgICAgICB1bnNpZ25lZCBjcmVh
dGVTaGFkZXIoU2hhZGVyVHlwZSk7CisgICAgICAgIHVuc2lnbmVkIGNyZWF0ZVNoYWRlcih1bnNp
Z25lZCBsb25nKTsKICAgICAgICAgdW5zaWduZWQgY3JlYXRlVGV4dHVyZSgpOwogICAgICAgICAK
ICAgICAgICAgdm9pZCBkZWxldGVCdWZmZXIodW5zaWduZWQpOwpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAko
cmV2aXNpb24gNTA5MTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGlj
c0NvbnRleHQzRE1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2ODMsNyArMTY4Myw3IEBAIHVu
c2lnbmVkIEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVSZW5kZXIKICAgICByZXR1cm4gbzsKIH0K
IAotdW5zaWduZWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVNoYWRlcihTaGFkZXJUeXBlIHR5
cGUpCit1bnNpZ25lZCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKHVuc2lnbmVkIGxv
bmcgdHlwZSkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7CiAgICAgcmV0dXJu
IGdsQ3JlYXRlU2hhZGVyKCh0eXBlID09IEZSQUdNRU5UX1NIQURFUikgPyBHTF9GUkFHTUVOVF9T
SEFERVIgOiBHTF9WRVJURVhfU0hBREVSKTsK
</data>
<flag name="review"
          id="24908"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43732</attachid>
            <date>2009-11-23 13:50:56 -0800</date>
            <delta_ts>2009-11-23 14:44:37 -0800</delta_ts>
            <desc>Replacement patch with test cases</desc>
            <filename>31239.patch</filename>
            <type>text/plain</type>
            <size>70825</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTMxNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODMgQEAKKzIwMDktMTEtMjMgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCByYW5nZSBjaGVja3MgdG8gcmVuZGVyaW5nIGNhbGxzIGluIFdlYkdMCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTIzOQorCisgICAgICAgIEkgYW0g
bm93IHRyYWNraW5nIHRoZSBzaXplIG9mIHRoZSBkYXRhIGluIGVhY2ggQ2FudmFzQnVmZmVyIG9i
amVjdAorICAgICAgICBhbmQga2VlcGluZyB0cmFjayBvZiB0aGUgYnVmZmVyIHNpemUgb2YgZWFj
aCBhY3RpdmUgdmVydGV4IGF0dHJpYi4KKyAgICAgICAgSW4gZHJhd0FycmF5cyBhbmQgZHJhd0Vs
ZW1lbnRzIEkgbWFrZSBzdXJlIG5vIGF0dGVtcHQgaXMgbWFkZSB0bworICAgICAgICBhY2Nlc3Mg
ZWxlbWVudHMgb3V0c2lkZSB0aGUgdmFsaWQgYnVmZmVyIHJhbmdlcy4gVGhlIHRlc3QgYXQ6CisK
KyAgICAgICAgICAgIGh0dHA6Ly9jcy5oZWxzaW5raS5maS91L2lsbWFyaWhlL2MzZC9mdW5jdGlv
bnMvZHJhd0FycmF5c091dE9mQm91bmRzLmh0bWwKKworICAgICAgICBubyBsb25nZXIgY3Jhc2hl
cy4KKworICAgICAgICBJIGFsc28gYWRkZWQgYWxsIHRoZSBXZWJHTCBlbnVtZXJhdGlvbnMgdG8g
R3JhcGhpY3NDb250ZXh0M0QgdG8gdXNlIHRoZW0gaW4gdGhlIHZhbGlkYXRpb24gY2hlY2tzCisK
KyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL3dlYmdsL2RyYXdBcnJheXNPdXRPZkJvdW5kcy5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2NhbnZhcy93ZWJnbC9kcmF3RWxlbWVudHNzT3V0T2ZC
b3VuZHMuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJHTEFycmF5Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTEFycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQXJyYXlCdWZm
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEFycmF5QnVmZmVyOjpkYXRhKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEFycmF5QnVmZmVyLmg6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6
OldlYkdMQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjphc3NvY2lhdGVC
dWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjphc3NvY2lhdGVCdWZm
ZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjpieXRlTGVuZ3RoKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xCdWZmZXI6OmVsZW1lbnRBcnJheUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dDo6c2l6ZUluQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUluZGV4QXJyYXkpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVJlbmRlcmluZ1N0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0FycmF5cyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRyYXdFbGVtZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6aXNG
cmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omlz
UHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmlzUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6aXNT
aGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppc1RleHR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1c2VQcm9ncmFt
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVQcm9n
cmFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0
cmliMWYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhB
dHRyaWIxZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0
ZXhBdHRyaWIyZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZl
cnRleEF0dHJpYjJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dmVydGV4QXR0cmliM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dmVydGV4QXR0cmliNGYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6ZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cyk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OlZlcnRleEF0dHJpYlN0YXRlOjpWZXJ0ZXhBdHRyaWJTdGF0
ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFNoYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2hhZGVyOjpXZWJH
TFNoYWRlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6Oik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGVTaGFkZXIpOgorCiAyMDA5LTExLTIzICBBbGV4ZXkgUHJvc2t1cnlha292
ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXZWJHTEFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViR0xBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDUxMzEwKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMQXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw2ICs0NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdl
YkdMQXJyYXkqIG9iamVjdCkKIHsKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgICAgIAogICAgIGlmIChvYmplY3QpIHsKICAgICAgICAgaWYgKG9i
amVjdC0+aXNGbG9hdEFycmF5KCkpCiAgICAgICAgICAgICByZXR1cm4gZ2V0RE9NT2JqZWN0V3Jh
cHBlcjxKU1dlYkdMRmxvYXRBcnJheT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxX
ZWJHTEZsb2F0QXJyYXkqPihvYmplY3QpKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA1MTMx
MCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MywxNyArNTMsMTkgQEAgSlNWYWx1ZSBKU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6YnVmZmVyRAogCiAgICAgdW5zaWduZWQgdGFyZ2V0ID0gYXJncy5hdCgw
KS50b0ludDMyKGV4ZWMpOwogICAgIHVuc2lnbmVkIHVzYWdlID0gYXJncy5hdCgyKS50b0ludDMy
KGV4ZWMpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCiAgICAgLy8gSWYgYXJndW1lbnQg
MSBpcyBhIG51bWJlciwgd2UgYXJlIGluaXRpYWxpemluZyB0aGlzIGJ1ZmZlciB0byB0aGF0IHNp
emUKICAgICBpZiAoIWFyZ3MuYXQoMSkuaXNPYmplY3QoKSkgewogICAgICAgICB1bnNpZ25lZCBp
bnQgY291bnQgPSBhcmdzLmF0KDEpLnRvSW50MzIoZXhlYyk7Ci0gICAgICAgIHN0YXRpY19jYXN0
PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KGltcGwoKSktPmJ1ZmZlckRhdGEodGFyZ2V0LCBjb3Vu
dCwgdXNhZ2UpOwotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4oaW1wbCgpKS0+YnVmZmVyRGF0YSh0YXJnZXQs
IGNvdW50LCB1c2FnZSwgZWMpOworICAgIH0gZWxzZSB7CisgICAgICAgIFdlYkdMQXJyYXkqIGFy
cmF5ID0gdG9XZWJHTEFycmF5KGFyZ3MuYXQoMSkpOworICAgICAgICBzdGF0aWNfY2FzdDxXZWJH
TFJlbmRlcmluZ0NvbnRleHQqPihpbXBsKCkpLT5idWZmZXJEYXRhKHRhcmdldCwgYXJyYXksIHVz
YWdlLCBlYyk7CiAgICAgfQogCi0gICAgV2ViR0xBcnJheSogYXJyYXkgPSB0b1dlYkdMQXJyYXko
YXJncy5hdCgxKSk7Ci0gICAgCi0gICAgc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0
Kj4oaW1wbCgpKS0+YnVmZmVyRGF0YSh0YXJnZXQsIGFycmF5LCB1c2FnZSk7CisgICAgaWYgKGVj
ICE9IDApCisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiB9CiAKQEAgLTc0LDEwICs3NiwxNCBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpidWZmZXJTCiAKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBhcmdzLmF0KDAp
LnRvSW50MzIoZXhlYyk7CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gYXJncy5hdCgxKS50b0ludDMy
KGV4ZWMpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIAogICAgIFdlYkdMQXJyYXkq
IGFycmF5ID0gdG9XZWJHTEFycmF5KGFyZ3MuYXQoMikpOwogICAgIAotICAgIHN0YXRpY19jYXN0
PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KGltcGwoKSktPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBv
ZmZzZXQsIGFycmF5KTsKKyAgICBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihp
bXBsKCkpLT5idWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBhcnJheSwgZWMpOworCisgICAg
aWYgKGVjICE9IDApCisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTE5MiwxMCArMTk4LDExIEBAIEpTVmFsdWUgSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkkKICAgICB9IGVsc2UgaWYgKG8tPmluaGVyaXRz
KCZKU0hUTUxDYW52YXNFbGVtZW50OjpzX2luZm8pKSB7CiAgICAgICAgIEhUTUxDYW52YXNFbGVt
ZW50KiBjYW52YXMgPSBzdGF0aWNfY2FzdDxIVE1MQ2FudmFzRWxlbWVudCo+KHN0YXRpY19jYXN0
PEpTSFRNTEVsZW1lbnQqPihvKS0+aW1wbCgpKTsKICAgICAgICAgY29udGV4dC0+dGV4U3ViSW1h
Z2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBjYW52YXMsIGZs
aXBZLCBwcmVtdWx0aXBseUFscGhhLCBlYyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKLSAgICB9CisgICAgfSBlbHNlCisg
ICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgCisgICAgaWYgKGVjICE9IDApCisg
ICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7ICAgIAogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQXJyYXlCdWZmZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xBcnJheUJ1ZmZlci5j
cHAJKHJldmlzaW9uIDUxMzEwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFycmF5QnVm
ZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSAiV2Vi
R0xBcnJheUJ1ZmZlci5oIgogCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8V2ViR0xBcnJheUJ1ZmZlcj4gV2ViR0xBcnJheUJ1ZmZl
cjo6Y3JlYXRlKHVuc2lnbmVkIHNpemVJbkJ5dGVzKQpAQCAtMzYsNiArMzgsMTMgQEAgUGFzc1Jl
ZlB0cjxXZWJHTEFycmF5QnVmZmVyPiBXZWJHTEFycmF5QgogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViR0xBcnJheUJ1ZmZlcihzaXplSW5CeXRlcykpOwogfQogCitQYXNzUmVmUHRyPFdlYkdM
QXJyYXlCdWZmZXI+IFdlYkdMQXJyYXlCdWZmZXI6OmNyZWF0ZShXZWJHTEFycmF5QnVmZmVyKiBv
dGhlcikKK3sKKyAgICBSZWZQdHI8V2ViR0xBcnJheUJ1ZmZlcj4gYnVmZmVyID0gYWRvcHRSZWYo
bmV3IFdlYkdMQXJyYXlCdWZmZXIob3RoZXItPmJ5dGVMZW5ndGgoKSkpOworICAgIG1lbWNweShi
dWZmZXItPmRhdGEoKSwgb3RoZXItPmRhdGEoKSwgb3RoZXItPmJ5dGVMZW5ndGgoKSk7CisgICAg
cmV0dXJuIGJ1ZmZlci5yZWxlYXNlKCk7Cit9CisKIFdlYkdMQXJyYXlCdWZmZXI6OldlYkdMQXJy
YXlCdWZmZXIodW5zaWduZWQgc2l6ZUluQnl0ZXMpIHsKICAgICBtX3NpemVJbkJ5dGVzID0gc2l6
ZUluQnl0ZXM7CiAgICAgbV9kYXRhID0gV1RGOjpmYXN0WmVyb2VkTWFsbG9jKHNpemVJbkJ5dGVz
KTsKQEAgLTQ1LDYgKzU0LDEwIEBAIHZvaWQqIFdlYkdMQXJyYXlCdWZmZXI6OmRhdGEoKSB7CiAg
ICAgcmV0dXJuIG1fZGF0YTsKIH0KIAorY29uc3Qgdm9pZCogV2ViR0xBcnJheUJ1ZmZlcjo6ZGF0
YSgpIGNvbnN0IHsKKyAgICByZXR1cm4gbV9kYXRhOworfQorCiB1bnNpZ25lZCBXZWJHTEFycmF5
QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QgewogICAgIHJldHVybiBtX3NpemVJbkJ5dGVzOwog
fQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFycmF5QnVmZmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFycmF5QnVmZmVyLmgJKHJldmlzaW9uIDUx
MzEwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFycmF5QnVmZmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDggKzM0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdlYkdM
QXJyYXlCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHTEFycmF5QnVmZmVyPiB7CiAgIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTEFycmF5QnVmZmVyPiBjcmVhdGUodW5z
aWduZWQgc2l6ZUluQnl0ZXMpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMQXJyYXlCdWZm
ZXI+IGNyZWF0ZShXZWJHTEFycmF5QnVmZmVyKik7CiAKICAgICB2b2lkKiBkYXRhKCk7CisgICAg
Y29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25z
dDsKIAogICAgIH5XZWJHTEFycmF5QnVmZmVyKCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
QnVmZmVyLmNwcAkocmV2aXNpb24gNTEzMTApCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
QnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksOSBAQCBQYXNzUmVmUHRyPFdl
YkdMQnVmZmVyPiBXZWJHTEJ1ZmZlcjo6Y3JlCiAKIFdlYkdMQnVmZmVyOjpXZWJHTEJ1ZmZlcihX
ZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCkKICAgICA6IENhbnZhc09iamVjdChjdHgpCisgICAg
LCBtX2VsZW1lbnRBcnJheUJ1ZmZlckJ5dGVMZW5ndGgoMCkKKyAgICAsIG1fYXJyYXlCdWZmZXJC
eXRlTGVuZ3RoKDApCisgICAgLCBtX2VsZW1lbnRBcnJheUJ1ZmZlckNsb25lZChmYWxzZSkKIHsK
ICAgICBzZXRPYmplY3QoY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVCdWZm
ZXIoKSk7CiB9CkBAIC00OCw2ICs1MSw3NiBAQCB2b2lkIFdlYkdMQnVmZmVyOjpfZGVsZXRlT2Jq
ZWN0KFBsYXRmb3JtCiAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5kZWxldGVC
dWZmZXIob2JqZWN0KTsKIH0KIAorYm9vbCBXZWJHTEJ1ZmZlcjo6YXNzb2NpYXRlQnVmZmVyRGF0
YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgaW50IHNpemUpCit7CisgICAgaWYgKHRhcmdldCA9PSBH
cmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIpIHsKKyAgICAgICAgbV9lbGVt
ZW50QXJyYXlCdWZmZXJCeXRlTGVuZ3RoID0gc2l6ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIAorICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JV
RkZFUikgeworICAgICAgICBtX2FycmF5QnVmZmVyQnl0ZUxlbmd0aCA9IHNpemU7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBXZWJH
TEJ1ZmZlcjo6YXNzb2NpYXRlQnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgV2ViR0xB
cnJheSogYXJyYXkpCit7CisgICAgaWYgKCFhcnJheSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAKKyAgICBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FS
UkFZX0JVRkZFUikgeworICAgICAgICBtX2VsZW1lbnRBcnJheUJ1ZmZlckJ5dGVMZW5ndGggPSBh
cnJheS0+Ynl0ZUxlbmd0aCgpOworICAgICAgICBtX2VsZW1lbnRBcnJheUJ1ZmZlciA9IGFycmF5
LT5idWZmZXIoKTsKKyAgICAgICAgbV9lbGVtZW50QXJyYXlCdWZmZXJDbG9uZWQgPSBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIGlmICh0YXJnZXQgPT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUikgeworICAgICAgICBtX2FycmF5QnVmZmVyQnl0
ZUxlbmd0aCA9IGFycmF5LT5ieXRlTGVuZ3RoKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2ViR0xCdWZmZXI6OmFzc29j
aWF0ZUJ1ZmZlclN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgb2Zmc2V0LCBXZWJH
TEFycmF5KiBhcnJheSkKK3sKKyAgICBpZiAoIWFycmF5KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIAorICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRf
QVJSQVlfQlVGRkVSKSB7CisgICAgICAgIC8vIFdlIG5lZWQgdG8gcHJvdGVjdCBhZ2FpbnN0IGlu
dGVnZXIgb3ZlcmZsb3cgd2l0aCB0aGVzZSB0ZXN0cworICAgICAgICBpZiAob2Zmc2V0IDwgMCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICB1bnNpZ25l
ZCBsb25nIHVvZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihvZmZzZXQpOworICAg
ICAgICBpZiAodW9mZnNldCA+IG1fZWxlbWVudEFycmF5QnVmZmVyQnl0ZUxlbmd0aCB8fCBhcnJh
eS0+Ynl0ZUxlbmd0aCgpID4gbV9lbGVtZW50QXJyYXlCdWZmZXJCeXRlTGVuZ3RoIC0gdW9mZnNl
dCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICAvLyBJ
ZiB3ZSBhbHJlYWR5IGhhdmUgYSBidWZmZXIsIHdlIG5lZWQgdG8gY2xvbmUgaXQgYW5kIGFkZCB0
aGUgbmV3IGRhdGEKKyAgICAgICAgaWYgKG1fZWxlbWVudEFycmF5QnVmZmVyICYmICFtX2VsZW1l
bnRBcnJheUJ1ZmZlckNsb25lZCkgeworICAgICAgICAgICAgbV9lbGVtZW50QXJyYXlCdWZmZXIg
PSBXZWJHTEFycmF5QnVmZmVyOjpjcmVhdGUobV9lbGVtZW50QXJyYXlCdWZmZXIuZ2V0KCkpOwor
ICAgICAgICAgICAgbV9lbGVtZW50QXJyYXlCdWZmZXJDbG9uZWQgPSB0cnVlOworICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIq
PihtX2VsZW1lbnRBcnJheUJ1ZmZlci0+ZGF0YSgpKSArIG9mZnNldCwgYXJyYXktPmJhc2VBZGRy
ZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgCisgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVS
KQorICAgICAgICByZXR1cm4gYXJyYXktPmJ5dGVMZW5ndGgoKSArIG9mZnNldCA8PSBtX2FycmF5
QnVmZmVyQnl0ZUxlbmd0aDsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordW5zaWduZWQgV2Vi
R0xCdWZmZXI6OmJ5dGVMZW5ndGgodW5zaWduZWQgbG9uZyB0YXJnZXQpIGNvbnN0Cit7CisgICAg
cmV0dXJuICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUikgPyBtX2Fy
cmF5QnVmZmVyQnl0ZUxlbmd0aCA6IG1fZWxlbWVudEFycmF5QnVmZmVyQnl0ZUxlbmd0aDsKK30K
KwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKDNEX0NBTlZBUykKSW5kZXg6IFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQnVmZmVyLmgJKHJldmlzaW9uIDUxMzEwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdlYkdM
QnVmZmVyX2gKIAogI2luY2x1ZGUgIkNhbnZhc09iamVjdC5oIgorI2luY2x1ZGUgIldlYkdMQXJy
YXlCdWZmZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KQEAgLTM5LDEwICs0MCwyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gY3JlYXRlKFdl
YkdMUmVuZGVyaW5nQ29udGV4dCopOwogICAgICAgICAKKyAgICAgICAgYm9vbCBhc3NvY2lhdGVC
dWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbnQgc2l6ZSk7CisgICAgICAgIGJvb2wg
YXNzb2NpYXRlQnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgV2ViR0xBcnJheSogYXJy
YXkpOworICAgICAgICBib29sIGFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEodW5zaWduZWQgbG9uZyB0
YXJnZXQsIGxvbmcgb2Zmc2V0LCBXZWJHTEFycmF5KiBhcnJheSk7CisgICAgICAgIAorICAgICAg
ICB1bnNpZ25lZCBieXRlTGVuZ3RoKHVuc2lnbmVkIGxvbmcgdGFyZ2V0KSBjb25zdDsKKyAgICAg
ICAgY29uc3QgV2ViR0xBcnJheUJ1ZmZlciogZWxlbWVudEFycmF5QnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbGVtZW50QXJyYXlCdWZmZXIuZ2V0KCk7IH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgV2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdD
b250ZXh0Kik7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgX2RlbGV0ZU9iamVjdChQ
bGF0Zm9ybTNET2JqZWN0IG8pOworICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIFJlZlB0cjxX
ZWJHTEFycmF5QnVmZmVyPiBtX2VsZW1lbnRBcnJheUJ1ZmZlcjsKKyAgICAgICAgdW5zaWduZWQg
bV9lbGVtZW50QXJyYXlCdWZmZXJCeXRlTGVuZ3RoOworICAgICAgICB1bnNpZ25lZCBtX2FycmF5
QnVmZmVyQnl0ZUxlbmd0aDsKKyAgICAgICAgYm9vbCBtX2VsZW1lbnRBcnJheUJ1ZmZlckNsb25l
ZDsKICAgICB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gNTEzMTAp
CisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJl
bmRlcmluZ0NvbgogICAgICwgbV9tYXJrZWRDYW52YXNEaXJ0eShmYWxzZSkKIHsKICAgICBBU1NF
UlQobV9jb250ZXh0KTsKKyAgICBtX21heFZlcnRleEF0dHJpYnMgPSBtX2NvbnRleHQtPmdldElu
dGVnZXIoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9WRVJURVhfQVRUUklCUyk7CiAgICAgbV9jb250
ZXh0LT5yZXNoYXBlKGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpOwogfQog
CkBAIC0xMTcsOSArMTE4LDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlc2hhcGUo
aW50IAogaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2l6ZUluQnl0ZXMoaW50IHR5cGUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGludCByZXN1bHQgPSBtX2NvbnRleHQtPnNpemVJbkJ5
dGVzKHR5cGUpOwotICAgIGlmIChyZXN1bHQgPD0gMCkgeworICAgIGlmIChyZXN1bHQgPD0gMCkK
ICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgIH0KKwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKQEAgLTE1NSw2ICsxNTYsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRC
dWZmZXIodQogICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwogICAgICAgICByZXR1cm47
CiAgICAgfQorCisgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVG
RkVSKQorICAgICAgICBtX2JvdW5kQXJyYXlCdWZmZXIgPSBidWZmZXI7CisgICAgZWxzZSBpZiAo
dGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUikKKyAgICAg
ICAgbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlciA9IGJ1ZmZlcjsKKyAgICBlbHNlIHsKKyAgICAg
ICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbV9jb250
ZXh0LT5iaW5kQnVmZmVyKHRhcmdldCwgYnVmZmVyKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGlj
c0NhbGwoZmFsc2UpOwogfQpAQCAtMjIyLDIwICsyMzMsNjUgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmJsZW5kRnVuY1NlcAogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxz
ZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJEYXRhKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCBpbnQgc2l6ZSwgdW5zaWduZWQgbG9uZyB1c2FnZSkKK3ZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbnQgc2l6
ZSwgdW5zaWduZWQgbG9uZyB1c2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKHRh
cmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIgJiYgbV9ib3Vu
ZEVsZW1lbnRBcnJheUJ1ZmZlcikgeworICAgICAgICBpZiAoIW1fYm91bmRFbGVtZW50QXJyYXlC
dWZmZXItPmFzc29jaWF0ZUJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplKSkgeworICAgICAgICAgICAg
ZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSBl
bHNlIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiAmJiBtX2Jv
dW5kQXJyYXlCdWZmZXIpIHsKKyAgICAgICAgaWYgKCFtX2JvdW5kQXJyYXlCdWZmZXItPmFzc29j
aWF0ZUJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplKSkgeworICAgICAgICAgICAgZWMgPSBTWU5UQVhf
RVJSOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbV9jb250
ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgdXNhZ2UpOwogICAgIGNsZWFudXBBZnRlckdy
YXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpidWZm
ZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBXZWJHTEFycmF5KiBkYXRhLCB1bnNpZ25lZCBs
b25nIHVzYWdlKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckRhdGEodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIFdlYkdMQXJyYXkqIGRhdGEsIHVuc2lnbmVkIGxvbmcgdXNhZ2UsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6
OkVMRU1FTlRfQVJSQVlfQlVGRkVSICYmIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIpIHsKKyAg
ICAgICAgaWYgKCFtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJEYXRh
KHRhcmdldCwgZGF0YSkpIHsKKyAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNz
Q29udGV4dDNEOjpBUlJBWV9CVUZGRVIgJiYgbV9ib3VuZEFycmF5QnVmZmVyKSB7CisgICAgICAg
IGlmICghbV9ib3VuZEFycmF5QnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJEYXRhKHRhcmdldCwgZGF0
YSkpIHsKKyAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKwogICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIGRh
dGEsIHVzYWdlKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyU3ViRGF0YSh1bnNpZ25lZCBsb25nIHRh
cmdldCwgbG9uZyBvZmZzZXQsIFdlYkdMQXJyYXkqIGRhdGEpCit2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6YnVmZmVyU3ViRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBvZmZzZXQs
IFdlYkdMQXJyYXkqIGRhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGlmICh0YXJnZXQg
PT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSICYmIG1fYm91bmRFbGVt
ZW50QXJyYXlCdWZmZXIpIHsKKyAgICAgICAgaWYgKCFtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVy
LT5hc3NvY2lhdGVCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBkYXRhKSkgeworICAgICAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfSBlbHNlIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiAm
JiBtX2JvdW5kQXJyYXlCdWZmZXIpIHsKKyAgICAgICAgaWYgKCFtX2JvdW5kQXJyYXlCdWZmZXIt
PmFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEpKSB7CisgICAgICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9IGVsc2UgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEp
OwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CkBAIC0zNDMsMTMgKzM5
OSw4IEBAIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IFdlYkdMUmVuZGUKIAogUGFzc1Jl
ZlB0cjxXZWJHTFNoYWRlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTaGFkZXIodW5z
aWduZWQgbG9uZyB0eXBlKQogewotICAgIC8vIEZJWE1FOiBOZWVkIHRvIGluY2x1ZGUgR0xfIGNv
bnN0YW50cyBmb3IgaW50ZXJuYWwgdXNlCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gZG8gcGFyYW0g
Y2hlY2tpbmcgYW5kIHRocm93IGV4Y2VwdGlvbiBpZiBhbiBpbGxlZ2FsIHZhbHVlIGlzIHBhc3Nl
ZCBpbgotICAgIEdyYXBoaWNzQ29udGV4dDNEOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgPSBHcmFw
aGljc0NvbnRleHQzRDo6VkVSVEVYX1NIQURFUjsKLSAgICBpZiAodHlwZSA9PSAweDhCMzApIC8v
IEdMX0ZSQUdNRU5UX1NIQURFUgotICAgICAgICBzaGFkZXJUeXBlID0gR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQUdNRU5UX1NIQURFUjsKLSAgICAgICAgCi0gICAgUmVmUHRyPFdlYkdMU2hhZGVyPiBv
ID0gV2ViR0xTaGFkZXI6OmNyZWF0ZSh0aGlzLCBzaGFkZXJUeXBlKTsKKyAgICBSZWZQdHI8V2Vi
R0xTaGFkZXI+IG8gPSBXZWJHTFNoYWRlcjo6Y3JlYXRlKHRoaXMsIHN0YXRpY19jYXN0PEdyYXBo
aWNzQ29udGV4dDNEOjpXZWJHTEVudW1UeXBlPih0eXBlKSk7CiAgICAgYWRkT2JqZWN0KG8uZ2V0
KCkpOwogICAgIHJldHVybiBvOwogfQpAQCAtNDQzLDIxICs0OTQsMTA4IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpkaXNhYmxlKHVuc2kKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGlzYWJsZVZlcnRl
eEF0dHJpYkFycmF5KHVuc2lnbmVkIGxvbmcgaW5kZXgpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGxvbmcgaW5kZXgsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogeworICAgIGlmIChpbmRleCA+PSBtX21heFZlcnRleEF0dHJpYnMpIHsK
KyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBpZiAoaW5kZXggPCBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSkKKyAgICAg
ICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0uZW5hYmxlZCA9IGZhbHNlOworICAgIAogICAg
IG1fY29udGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKICAgICBjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dmFsaWRhdGVJbmRleEFycmF5KHVuc2lnbmVkIGxvbmcgY291bnQsIHVuc2lnbmVkIGxvbmcg
dHlwZSwgbG9uZyBvZmZzZXQsIGxvbmcmIG51bUVsZW1lbnRzKQoreworICAgIGxvbmcgbGFzdElu
ZGV4ID0gLTE7CisgICAgaWYgKCFtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgIGlmIChvZmZzZXQgPCAwKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIAorICAgIC8vIFRoZSBHTCBzcGVjIHNheXMgdGhhdCBjb3VudCBt
dXN0IGJlICJncmVhdGVyCisgICAgCisgICAgdW5zaWduZWQgbG9uZyB1b2Zmc2V0ID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgbG9uZz4ob2Zmc2V0KTsKKyAgICAKKyAgICBpZiAodHlwZSA9PSBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQpIHsKKyAgICAgICAgLy8gRm9yIGFuIHVuc2ln
bmVkIHNob3J0IGFycmF5LCBvZmZzZXQgbXVzdCBiZSBkaXZpc2libGUgYnkgMiBmb3IgYWxpZ25t
ZW50IHJlYXNvbnMKKyAgICAgICAgaWYgKHVvZmZzZXQgJiAxICE9IDApCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICAvLyBNYWtlIHVvZmZzZXQgYW4gZWxlbWVu
dCBvZmZzZXQKKyAgICAgICAgdW9mZnNldCAvPSAyOworICAgIAorICAgICAgICB1bnNpZ25lZCBs
b25nIG4gPSBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKEdyYXBoaWNzQ29u
dGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUikgLyAyOworICAgICAgICBpZiAodW9mZnNldCA+
IG4gfHwgY291bnQgPiBuIC0gdW9mZnNldCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIAorICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCogcCA9IHN0YXRpY19jYXN0
PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4obV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxlbWVu
dEFycmF5QnVmZmVyKCktPmRhdGEoKSk7CisgICAgICAgIHdoaWxlIChuLS0gPiAwKSB7CisgICAg
ICAgICAgICBpZiAoKnAgPiBsYXN0SW5kZXgpCisgICAgICAgICAgICAgICAgbGFzdEluZGV4ID0g
KnA7CisgICAgICAgICAgICArK3A7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAodHlw
ZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSkgeworICAgICAgICB1bnNpZ25l
ZCBsb25nIG4gPSBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKEdyYXBoaWNz
Q29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUik7CisgICAgICAgIGlmICh1b2Zmc2V0ID4g
biB8fCBjb3VudCA+IG4gLSB1b2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHAgPSBzdGF0aWNfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyKj4obV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxlbWVudEFy
cmF5QnVmZmVyKCktPmRhdGEoKSk7CisgICAgICAgIHdoaWxlIChuLS0gPiAwKSB7CisgICAgICAg
ICAgICBpZiAoKnAgPiBsYXN0SW5kZXgpCisgICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gKnA7
CisgICAgICAgICAgICArK3A7CisgICAgICAgIH0KKyAgICB9ICAgIAorICAgICAgICAKKyAgICAv
LyBUaGVuIHNldCB0aGUgbGFzdCBpbmRleCBpbiB0aGUgaW5kZXggYXJyYXkgYW5kIG1ha2Ugc3Vy
ZSBpdCBpcyB2YWxpZAorICAgIG51bUVsZW1lbnRzID0gbGFzdEluZGV4ICsgMTsKKyAgICByZXR1
cm4gbnVtRWxlbWVudHMgPiAwOworfQorCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFs
aWRhdGVSZW5kZXJpbmdTdGF0ZShsb25nIG51bUVsZW1lbnRzKQoreworICAgIC8vIExvb2sgaW4g
ZWFjaCBlbmFibGVkIHZlcnRleCBhdHRyaWIgYW5kIGZpbmQgdGhlIHNtYWxsZXN0IGJ1ZmZlciBz
aXplCisgICAgbG9uZyBzbWFsbGVzdE51bUVsZW1lbnRzID0gTE9OR19NQVg7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fdmVydGV4QXR0cmliU3RhdGUuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgY29uc3QgVmVydGV4QXR0cmliU3RhdGUmIHN0YXRlID0gbV92ZXJ0ZXhBdHRyaWJTdGF0
ZVtpXTsKKyAgICAgICAgaWYgKHN0YXRlLmVuYWJsZWQgJiYgc3RhdGUubnVtRWxlbWVudHMgPCBz
bWFsbGVzdE51bUVsZW1lbnRzKQorICAgICAgICAgICAgc21hbGxlc3ROdW1FbGVtZW50cyA9IHN0
YXRlLm51bUVsZW1lbnRzOworICAgIH0KKyAgICAKKyAgICBpZiAoc21hbGxlc3ROdW1FbGVtZW50
cyA9PSBMT05HX01BWCkKKyAgICAgICAgc21hbGxlc3ROdW1FbGVtZW50cyA9IDA7CisgICAgCisg
ICAgcmV0dXJuIG51bUVsZW1lbnRzIDw9IHNtYWxsZXN0TnVtRWxlbWVudHM7Cit9CiAKLXZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkcmF3QXJyYXlzKHVuc2lnbmVkIGxvbmcgbW9kZSwgbG9u
ZyBmaXJzdCwgbG9uZyBjb3VudCkKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkcmF3QXJy
YXlzKHVuc2lnbmVkIGxvbmcgbW9kZSwgbG9uZyBmaXJzdCwgbG9uZyBjb3VudCwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CisgICAgLy8gRW5zdXJlIHdlIGhhdmUgYSB2YWxpZCByZW5kZXJpbmcgc3Rh
dGUKKyAgICBpZiAoZmlyc3QgPCAwIHx8IGNvdW50IDwgMCB8fCAhdmFsaWRhdGVSZW5kZXJpbmdT
dGF0ZShmaXJzdCArIGNvdW50KSkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIG1fY29udGV4dC0+ZHJhd0FycmF5cyht
b2RlLCBmaXJzdCwgY291bnQpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbCh0cnVlKTsK
IH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRyYXdFbGVtZW50cyh1bnNpZ25lZCBs
b25nIG1vZGUsIHVuc2lnbmVkIGxvbmcgY291bnQsIHVuc2lnbmVkIGxvbmcgdHlwZSwgbG9uZyBv
ZmZzZXQpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0VsZW1lbnRzKHVuc2lnbmVk
IGxvbmcgbW9kZSwgdW5zaWduZWQgbG9uZyBjb3VudCwgdW5zaWduZWQgbG9uZyB0eXBlLCBsb25n
IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgLy8gRW5zdXJlIHdlIGhhdmUgYSB2
YWxpZCByZW5kZXJpbmcgc3RhdGUKKyAgICBsb25nIG51bUVsZW1lbnRzOworICAgIAorICAgIGlm
IChvZmZzZXQgPCAwIHx8ICF2YWxpZGF0ZUluZGV4QXJyYXkoY291bnQsIHR5cGUsIG9mZnNldCwg
bnVtRWxlbWVudHMpIHx8ICF2YWxpZGF0ZVJlbmRlcmluZ1N0YXRlKG51bUVsZW1lbnRzKSkgewor
ICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAogICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZz
ZXQpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbCh0cnVlKTsKIH0KQEAgLTQ2OCw4ICs2
MDYsMTggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVuYWJsZSh1bnNpZwogICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25lZCBsb25nIGluZGV4KQordm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVk
IGxvbmcgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGlmIChpbmRleCA+PSBtX21h
eFZlcnRleEF0dHJpYnMpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoaW5kZXggPj0gbV92ZXJ0ZXhBdHRyaWJT
dGF0ZS5zaXplKCkpCisgICAgICAgIG1fdmVydGV4QXR0cmliU3RhdGUucmVzaXplKGluZGV4ICsg
MSk7CisgICAgICAgIAorICAgIG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLmVuYWJsZWQgPSB0
cnVlOworICAgIAogICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgp
OwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CkBAIC04NTMsMjYgKzEw
MDEsNDEgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmlzRW5hYmxlZCh1bgogCiBib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aXNGcmFtZWJ1ZmZlcihXZWJHTEZyYW1lYnVmZmVyKiBm
cmFtZWJ1ZmZlcikKIHsKKyAgICBpZiAoIWZyYW1lYnVmZmVyKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICByZXR1cm4gbV9jb250ZXh0LT5pc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsK
IH0KIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmlzUHJvZ3JhbShXZWJHTFByb2dyYW0q
IHByb2dyYW0pCiB7CisgICAgaWYgKCFwcm9ncmFtKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
ICAgICByZXR1cm4gbV9jb250ZXh0LT5pc1Byb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIGJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojppc1JlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmJ1ZmZlciogcmVu
ZGVyYnVmZmVyKQogeworICAgIGlmICghcmVuZGVyYnVmZmVyKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICByZXR1cm4gbV9jb250ZXh0LT5pc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIp
OwogfQogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aXNTaGFkZXIoV2ViR0xTaGFkZXIq
IHNoYWRlcikKIHsKKyAgICBpZiAoIXNoYWRlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgcmV0dXJuIG1fY29udGV4dC0+aXNTaGFkZXIoc2hhZGVyKTsKIH0KIAogYm9vbCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmlzVGV4dHVyZShXZWJHTFRleHR1cmUqIHRleHR1cmUpCiB7CisgICAg
aWYgKCF0ZXh0dXJlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gbV9jb250
ZXh0LT5pc1RleHR1cmUodGV4dHVyZSk7CiB9CiAKQEAgLTE0MTUsMTA5ICsxNTc4LDE0NCBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpCiAgICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVz
ZVByb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVzZVByb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKKyAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKKyAg
ICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAgICAgCiAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKHByb2dyYW0pOwogICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp2YWxpZGF0ZVByb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQordm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnZhbGlkYXRlUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogeworICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkg
IT0gdGhpcykgeworICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgICAgICAKICAgICBtX2NvbnRleHQtPnZhbGlkYXRlUHJvZ3JhbShwcm9n
cmFtKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliMWYodW5zaWduZWQgbG9uZyBpbmR4LCBm
bG9hdCB2MCkKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIxZih1bnNp
Z25lZCBsb25nIGluZGV4LCBmbG9hdCB2MCkKIHsKLSAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJp
YjFmKGluZHgsIHYwKTsKKyAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjFmKGluZGV4LCB2MCk7
CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjFmdih1bnNpZ25lZCBsb25nIGluZHgsIFdlYkdM
RmxvYXRBcnJheSogdikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIx
ZnYodW5zaWduZWQgbG9uZyBpbmRleCwgV2ViR0xGbG9hdEFycmF5KiB2KQogewogICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIG1ha2Ugc3VyZSBhcnJheSBpcyBiaWcgZW5vdWdoIGZvciBhdHRyaWJ1dGUg
YmVpbmcgc2V0Ci0gICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZnYoaW5keCwgdi0+ZGF0YSgp
KTsKKyAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjFmdihpbmRleCwgdi0+ZGF0YSgpKTsKICAg
ICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dmVydGV4QXR0cmliMWZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHYs
IGludCBzaXplKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjFmdih1
bnNpZ25lZCBsb25nIGluZGV4LCBmbG9hdCogdiwgaW50IHNpemUpCiB7CiAgICAgLy8gRklYTUU6
IE5lZWQgdG8gbWFrZSBzdXJlIGFycmF5IGlzIGJpZyBlbm91Z2ggZm9yIGF0dHJpYnV0ZSBiZWlu
ZyBzZXQKICAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CiAgICAgCi0gICAgbV9jb250ZXh0LT52ZXJ0
ZXhBdHRyaWIxZnYoaW5keCwgdik7CisgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZnYoaW5k
ZXgsIHYpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKLXZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIyZih1bnNpZ25lZCBsb25nIGluZHgs
IGZsb2F0IHYwLCBmbG9hdCB2MSkKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhB
dHRyaWIyZih1bnNpZ25lZCBsb25nIGluZGV4LCBmbG9hdCB2MCwgZmxvYXQgdjEpCiB7Ci0gICAg
bV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIyZihpbmR4LCB2MCwgdjEpOworICAgIG1fY29udGV4dC0+
dmVydGV4QXR0cmliMmYoaW5kZXgsIHYwLCB2MSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJp
YjJmdih1bnNpZ25lZCBsb25nIGluZHgsIFdlYkdMRmxvYXRBcnJheSogdikKK3ZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIyZnYodW5zaWduZWQgbG9uZyBpbmRleCwgV2Vi
R0xGbG9hdEFycmF5KiB2KQogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1ha2Ugc3VyZSBhcnJh
eSBpcyBiaWcgZW5vdWdoIGZvciBhdHRyaWJ1dGUgYmVpbmcgc2V0Ci0gICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWIyZnYoaW5keCwgdi0+ZGF0YSgpKTsKKyAgICBtX2NvbnRleHQtPnZlcnRleEF0
dHJpYjJmdihpbmRleCwgdi0+ZGF0YSgpKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliMmZ2
KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHYsIGludCBzaXplKQordm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjJmdih1bnNpZ25lZCBsb25nIGluZGV4LCBmbG9hdCog
diwgaW50IHNpemUpCiB7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gbWFrZSBzdXJlIGFycmF5IGlz
IGJpZyBlbm91Z2ggZm9yIGF0dHJpYnV0ZSBiZWluZyBzZXQKICAgICBVTlVTRURfUEFSQU0oc2l6
ZSk7CiAgICAgCi0gICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIyZnYoaW5keCwgdik7CisgICAg
bV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIHYpOwogICAgIGNsZWFudXBBZnRlckdy
YXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0
ZXhBdHRyaWIzZih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHYwLCBmbG9hdCB2MSwgZmxvYXQg
djIpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliM2YodW5zaWduZWQg
bG9uZyBpbmRleCwgZmxvYXQgdjAsIGZsb2F0IHYxLCBmbG9hdCB2MikKIHsKLSAgICBtX2NvbnRl
eHQtPnZlcnRleEF0dHJpYjNmKGluZHgsIHYwLCB2MSwgdjIpOworICAgIG1fY29udGV4dC0+dmVy
dGV4QXR0cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNz
Q2FsbChmYWxzZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRy
aWIzZnYodW5zaWduZWQgbG9uZyBpbmR4LCBXZWJHTEZsb2F0QXJyYXkqIHYpCit2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliM2Z2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIFdl
YkdMRmxvYXRBcnJheSogdikKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBtYWtlIHN1cmUgYXJy
YXkgaXMgYmlnIGVub3VnaCBmb3IgYXR0cmlidXRlIGJlaW5nIHNldAotICAgIG1fY29udGV4dC0+
dmVydGV4QXR0cmliM2Z2KGluZHgsIHYtPmRhdGEoKSk7CisgICAgbV9jb250ZXh0LT52ZXJ0ZXhB
dHRyaWIzZnYoaW5kZXgsIHYtPmRhdGEoKSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjNm
dih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiB2LCBpbnQgc2l6ZSkKK3ZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIzZnYodW5zaWduZWQgbG9uZyBpbmRleCwgZmxvYXQq
IHYsIGludCBzaXplKQogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1ha2Ugc3VyZSBhcnJheSBp
cyBiaWcgZW5vdWdoIGZvciBhdHRyaWJ1dGUgYmVpbmcgc2V0CiAgICAgVU5VU0VEX1BBUkFNKHNp
emUpOwogICAgIAotICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2Z2KGluZHgsIHYpOworICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCB2KTsKICAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVy
dGV4QXR0cmliNGYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCB2MCwgZmxvYXQgdjEsIGZsb2F0
IHYyLCBmbG9hdCB2MykKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWI0
Zih1bnNpZ25lZCBsb25nIGluZGV4LCBmbG9hdCB2MCwgZmxvYXQgdjEsIGZsb2F0IHYyLCBmbG9h
dCB2MykKIHsKLSAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmKGluZHgsIHYwLCB2MSwgdjIs
IHYzKTsKKyAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2
Myk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjRmdih1bnNpZ25lZCBsb25nIGluZHgsIFdl
YkdMRmxvYXRBcnJheSogdikKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRy
aWI0ZnYodW5zaWduZWQgbG9uZyBpbmRleCwgV2ViR0xGbG9hdEFycmF5KiB2KQogewogICAgIC8v
IEZJWE1FOiBOZWVkIHRvIG1ha2Ugc3VyZSBhcnJheSBpcyBiaWcgZW5vdWdoIGZvciBhdHRyaWJ1
dGUgYmVpbmcgc2V0Ci0gICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5keCwgdi0+ZGF0
YSgpKTsKKyAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmdihpbmRleCwgdi0+ZGF0YSgpKTsK
ICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliNGZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQq
IHYsIGludCBzaXplKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjRm
dih1bnNpZ25lZCBsb25nIGluZGV4LCBmbG9hdCogdiwgaW50IHNpemUpCiB7CiAgICAgLy8gRklY
TUU6IE5lZWQgdG8gbWFrZSBzdXJlIGFycmF5IGlzIGJpZyBlbm91Z2ggZm9yIGF0dHJpYnV0ZSBi
ZWluZyBzZXQKICAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CiAgICAgCi0gICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWI0ZnYoaW5keCwgdik7CisgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYo
aW5kZXgsIHYpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKLXZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKHVuc2lnbmVkIGxv
bmcgaW5keCwgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIHR5cGUsIGJvb2wgbm9ybWFsaXplZCwg
dW5zaWduZWQgbG9uZyBzdHJpZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQordm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYlBvaW50ZXIodW5zaWduZWQgbG9uZyBpbmRleCwg
bG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIHR5cGUsIGJvb2wgbm9ybWFsaXplZCwgdW5zaWduZWQg
bG9uZyBzdHJpZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoaW5keCwgc2l6ZSwgdHlwZSwgbm9y
bWFsaXplZCwgc3RyaWRlLCBvZmZzZXQpOworICAgIGlmICghbV9ib3VuZEFycmF5QnVmZmVyIHx8
IGluZGV4ID49IG1fbWF4VmVydGV4QXR0cmlicykgeworICAgICAgICBlYyA9IElOVkFMSURfU1RB
VEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChpbmRleCA+PSBt
X3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSkKKyAgICAgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5y
ZXNpemUoaW5kZXggKyAxKTsKKworICAgIC8vIERldGVybWluZSB0aGUgbnVtYmVyIG9mIGVsZW1l
bnRzIHRoZSBib3VuZCBidWZmZXIgY2FuIGhvbGQsIGdpdmVuIHRoZSBvZmZzZXQsIHNpemUsIHR5
cGUgYW5kIHN0cmlkZQorICAgIGVjID0gMDsKKyAgICBsb25nIGJ5dGVzUGVyRWxlbWVudCA9IHNp
emUgKiBzaXplSW5CeXRlcyh0eXBlLCBlYyk7CisgICAgaWYgKGVjICE9IDApCisgICAgICAgIHJl
dHVybjsKKyAgICAgICAgCisgICAgaWYgKHN0cmlkZSAhPSAwKSB7CisgICAgICAgIGlmICgobG9u
Zykgc3RyaWRlIDwgYnl0ZXNQZXJFbGVtZW50KSB7CisgICAgICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJ5
dGVzUGVyRWxlbWVudCA9IHN0cmlkZTsKKyAgICB9CisgICAgICAgIAorICAgIG1fdmVydGV4QXR0
cmliU3RhdGVbaW5kZXhdLm51bUVsZW1lbnRzID0gKG1fYm91bmRBcnJheUJ1ZmZlci0+Ynl0ZUxl
bmd0aChHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSKSAtIG9mZnNldCkgLyBieXRlc1Bl
ckVsZW1lbnQ7CisKKyAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNp
emUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgb2Zmc2V0KTsKICAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwogfQogCkBAIC0xNTQ4LDggKzE3NDYsOCBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6YWRkT2JqZWN0KENhCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKCkKIHsKLSAgICBIYXNoU2V0PENhbnZhc09i
amVjdCo+OjppdGVyYXRvciBwZW5kID0gbV9jYW52YXNPYmplY3RzLmVuZCgpOwotICAgIGZvciAo
SGFzaFNldDxDYW52YXNPYmplY3QqPjo6aXRlcmF0b3IgaXQgPSBtX2NhbnZhc09iamVjdHMuYmVn
aW4oKTsgaXQgIT0gcGVuZDsgKytpdCkKKyAgICBIYXNoU2V0PFJlZlB0cjxDYW52YXNPYmplY3Q+
ID46Oml0ZXJhdG9yIHBlbmQgPSBtX2NhbnZhc09iamVjdHMuZW5kKCk7CisgICAgZm9yIChIYXNo
U2V0PFJlZlB0cjxDYW52YXNPYmplY3Q+ID46Oml0ZXJhdG9yIGl0ID0gbV9jYW52YXNPYmplY3Rz
LmJlZ2luKCk7IGl0ICE9IHBlbmQ7ICsraXQpCiAgICAgICAgICgqaXQpLT5kZXRhY2hDb250ZXh0
KCk7CiAgICAgICAgIAogICAgIG1fY2FudmFzT2JqZWN0cy5jbGVhcigpOwpJbmRleDogV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiA1MTMxMCkK
KysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTczLDkgKzczLDkgQEAgY2xhc3MgV2ViS2l0Q1NTTWF0cml4OwogICAgICAgICB2
b2lkIGJsZW5kRnVuYyh1bnNpZ25lZCBsb25nIHNmYWN0b3IsIHVuc2lnbmVkIGxvbmcgZGZhY3Rv
cik7CiAgICAgICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUodW5zaWduZWQgbG9uZyBzcmNSR0Is
IHVuc2lnbmVkIGxvbmcgZHN0UkdCLCB1bnNpZ25lZCBsb25nIHNyY0FscGhhLCB1bnNpZ25lZCBs
b25nIGRzdEFscGhhKTsKIAotICAgICAgICB2b2lkIGJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0
YXJnZXQsIGludCBzaXplLCB1bnNpZ25lZCBsb25nIHVzYWdlKTsKLSAgICAgICAgdm9pZCBidWZm
ZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBXZWJHTEFycmF5KiBkYXRhLCB1bnNpZ25lZCBs
b25nIHVzYWdlKTsKLSAgICAgICAgdm9pZCBidWZmZXJTdWJEYXRhKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCBsb25nIG9mZnNldCwgV2ViR0xBcnJheSogZGF0YSk7CisgICAgICAgIHZvaWQgYnVmZmVy
RGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgaW50IHNpemUsIHVuc2lnbmVkIGxvbmcgdXNhZ2Us
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCBXZWJHTEFycmF5KiBkYXRhLCB1bnNpZ25lZCBsb25nIHVzYWdlLCBFeGNlcHRpb25D
b2RlJik7CisgICAgICAgIHZvaWQgYnVmZmVyU3ViRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwg
bG9uZyBvZmZzZXQsIFdlYkdMQXJyYXkqIGRhdGEsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAg
ICB1bnNpZ25lZCBsb25nIGNoZWNrRnJhbWVidWZmZXJTdGF0dXModW5zaWduZWQgbG9uZyB0YXJn
ZXQpOwogICAgICAgICB2b2lkIGNsZWFyKHVuc2lnbmVkIGxvbmcgbWFzayk7CkBAIC0xMTAsMTQg
KzExMCwxNCBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAgICAgICAgIHZvaWQgZGVwdGhGdW5j
KHVuc2lnbmVkIGxvbmcpOwogICAgICAgICB2b2lkIGRlcHRoTWFzayhib29sKTsKICAgICAgICAg
dm9pZCBkZXB0aFJhbmdlKGRvdWJsZSB6TmVhciwgZG91YmxlIHpGYXIpOwotICAgICAgICB2b2lk
IGRldGFjaFNoYWRlcihXZWJHTFByb2dyYW0qLCBXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUm
IGVjKTsKKyAgICAgICAgdm9pZCBkZXRhY2hTaGFkZXIoV2ViR0xQcm9ncmFtKiwgV2ViR0xTaGFk
ZXIqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgZGlzYWJsZSh1bnNpZ25lZCBsb25n
IGNhcCk7Ci0gICAgICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGxv
bmcgaW5kZXgpOwotICAgICAgICB2b2lkIGRyYXdBcnJheXModW5zaWduZWQgbG9uZyBtb2RlLCBs
b25nIGZpcnN0LCBsb25nIGNvdW50KTsKLSAgICAgICAgdm9pZCBkcmF3RWxlbWVudHModW5zaWdu
ZWQgbG9uZyBtb2RlLCB1bnNpZ25lZCBsb25nIGNvdW50LCB1bnNpZ25lZCBsb25nIHR5cGUsIGxv
bmcgb2Zmc2V0KTsKKyAgICAgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWdu
ZWQgbG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIGRyYXdBcnJheXMo
dW5zaWduZWQgbG9uZyBtb2RlLCBsb25nIGZpcnN0LCBsb25nIGNvdW50LCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgICAgIHZvaWQgZHJhd0VsZW1lbnRzKHVuc2lnbmVkIGxvbmcgbW9kZSwgdW5zaWdu
ZWQgbG9uZyBjb3VudCwgdW5zaWduZWQgbG9uZyB0eXBlLCBsb25nIG9mZnNldCwgRXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgICAgIHZvaWQgZW5hYmxlKHVuc2lnbmVkIGxvbmcgY2FwKTsKLSAgICAg
ICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAg
ICAgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25lZCBsb25nIGluZGV4LCBF
eGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgZmluaXNoKCk7CiAgICAgICAgIHZvaWQgZmx1
c2goKTsKICAgICAgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBsb25n
IHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHJlbmRlcmJ1
ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqLCBFeGNlcHRpb25Db2RlJiBlYyk7CkBAIC0x
NTYsNyArMTU2LDcgQEAgY2xhc3MgV2ViS2l0Q1NTTWF0cml4OwogICAgICAgICAvLyBUQkQKICAg
ICAgICAgLy8gdm9pZCBnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdCAoR0xlbnVtIHNoYWRlcnR5
cGUsIEdMZW51bSBwcmVjaXNpb250eXBlLCBHTGludCogcmFuZ2UsIEdMaW50KiBwcmVjaXNpb24p
OwogCi0gICAgICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqLCBFeGNlcHRp
b25Db2RlJiBlYyk7CisgICAgICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIq
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIFN0cmluZyBnZXRTdHJpbmcodW5zaWduZWQgbG9u
ZyBuYW1lKTsKIAogICAgICAgICBmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKQEAgLTE2NCwxMiArMTY0LDEyIEBAIGNsYXNz
IFdlYktpdENTU01hdHJpeDsKICAgICAgICAgaW50IGdldFRleFBhcmFtZXRlcmkodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwogICAgICAgICBQYXNzUmVmUHRyPFdl
YkdMSW50QXJyYXk+IGdldFRleFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNp
Z25lZCBsb25nIHBuYW1lKTsKIAotICAgICAgICBmbG9hdCBnZXRVbmlmb3JtZihXZWJHTFByb2dy
YW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKTsKLSAgICAgICAg
UGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0qIHBy
b2dyYW0sIGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICAgICAgZmxvYXQg
Z2V0VW5pZm9ybWYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBFeGNlcHRp
b25Db2RlJik7CisgICAgICAgIFBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBnZXRVbmlmb3Jt
ZnYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgICAgIGxvbmcgZ2V0VW5pZm9ybWkoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxv
Y2F0aW9uLCBFeGNlcHRpb25Db2RlJiBlYyk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRB
cnJheT4gZ2V0VW5pZm9ybWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwg
RXhjZXB0aW9uQ29kZSYgZWMpOworICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdl
dFVuaWZvcm1pdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlv
bkNvZGUmKTsKIAotICAgICAgICBsb25nIGdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0q
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICAgICAgbG9uZyBn
ZXRVbmlmb3JtTG9jYXRpb24oV2ViR0xQcm9ncmFtKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNl
cHRpb25Db2RlJik7CiAKICAgICAgICAgZmxvYXQgZ2V0VmVydGV4QXR0cmliZih1bnNpZ25lZCBs
b25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKICAgICAgICAgUGFzc1JlZlB0cjxXZWJH
TEZsb2F0QXJyYXk+IGdldFZlcnRleEF0dHJpYmZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2ln
bmVkIGxvbmcgcG5hbWUpOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIGNsYXNzIFdlYktpdENTU01hdHJp
eDsKICAgICAgICAgYm9vbCBpc1NoYWRlcihXZWJHTFNoYWRlciopOwogICAgICAgICBib29sIGlz
VGV4dHVyZShXZWJHTFRleHR1cmUqKTsKICAgICAgICAgdm9pZCBsaW5lV2lkdGgoZG91YmxlKTsK
LSAgICAgICAgdm9pZCBsaW5rUHJvZ3JhbShXZWJHTFByb2dyYW0qLCBFeGNlcHRpb25Db2RlJiBl
Yyk7CisgICAgICAgIHZvaWQgbGlua1Byb2dyYW0oV2ViR0xQcm9ncmFtKiwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgICAgICB2b2lkIHBpeGVsU3RvcmVpKHVuc2lnbmVkIGxvbmcgcG5hbWUsIGxvbmcg
cGFyYW0pOwogICAgICAgICB2b2lkIHBvbHlnb25PZmZzZXQoZG91YmxlIGZhY3RvciwgZG91Ymxl
IHVuaXRzKTsKICAgICAgICAgCkBAIC0xOTcsNyArMTk3LDcgQEAgY2xhc3MgV2ViS2l0Q1NTTWF0
cml4OwogICAgICAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVu
c2lnbmVkIGxvbmcgaGVpZ2h0KTsKICAgICAgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShkb3VibGUg
dmFsdWUsIGJvb2wgaW52ZXJ0KTsKICAgICAgICAgdm9pZCBzY2lzc29yKGxvbmcgeCwgbG9uZyB5
LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7Ci0gICAgICAgIHZv
aWQgc2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29k
ZSYgZWMpOworICAgICAgICB2b2lkIHNoYWRlclNvdXJjZShXZWJHTFNoYWRlciosIGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBzdGVuY2lsRnVuYyh1bnNpZ25l
ZCBsb25nIGZ1bmMsIGxvbmcgcmVmLCB1bnNpZ25lZCBsb25nIG1hc2spOwogICAgICAgICB2b2lk
IHN0ZW5jaWxGdW5jU2VwYXJhdGUodW5zaWduZWQgbG9uZyBmYWNlLCB1bnNpZ25lZCBsb25nIGZ1
bmMsIGxvbmcgcmVmLCB1bnNpZ25lZCBsb25nIG1hc2spOwogICAgICAgICB2b2lkIHN0ZW5jaWxN
YXNrKHVuc2lnbmVkIGxvbmcpOwpAQCAtMjY4LDIzICsyNjgsMjMgQEAgY2xhc3MgV2ViS2l0Q1NT
TWF0cml4OwogICAgICAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYobG9uZyBsb2NhdGlvbiwgYm9v
bCB0cmFuc3Bvc2UsIFdlYkdMRmxvYXRBcnJheSogdmFsdWUpOwogICAgICAgICB2b2lkIHVuaWZv
cm1NYXRyaXg0ZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0KiB2YWx1ZSwg
aW50IHNpemUpOwogCi0gICAgICAgIHZvaWQgdXNlUHJvZ3JhbShXZWJHTFByb2dyYW0qKTsKLSAg
ICAgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oV2ViR0xQcm9ncmFtKik7CisgICAgICAgIHZvaWQg
dXNlUHJvZ3JhbShXZWJHTFByb2dyYW0qLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQg
dmFsaWRhdGVQcm9ncmFtKFdlYkdMUHJvZ3JhbSosIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgICAg
ICB2b2lkIHZlcnRleEF0dHJpYjFmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQgeCk7Ci0gICAg
ICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgV2ViR0xGbG9hdEFy
cmF5KiB2YWx1ZXMpOwotICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjFmdih1bnNpZ25lZCBsb25n
IGluZHgsIGZsb2F0KiB2YWx1ZXMsIGludCBzaXplKTsKLSAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWIyZih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHgsIGZsb2F0IHkpOwotICAgICAgICB2b2lk
IHZlcnRleEF0dHJpYjJmdih1bnNpZ25lZCBsb25nIGluZHgsIFdlYkdMRmxvYXRBcnJheSogdmFs
dWVzKTsKLSAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYodW5zaWduZWQgbG9uZyBpbmR4LCBm
bG9hdCogdmFsdWVzLCBpbnQgc2l6ZSk7Ci0gICAgICAgIHZvaWQgdmVydGV4QXR0cmliM2YodW5z
aWduZWQgbG9uZyBpbmR4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKLSAgICAgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWIzZnYodW5zaWduZWQgbG9uZyBpbmR4LCBXZWJHTEZsb2F0QXJyYXkqIHZh
bHVlcyk7Ci0gICAgICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KHVuc2lnbmVkIGxvbmcgaW5keCwg
ZmxvYXQqIHZhbHVlcywgaW50IHNpemUpOwotICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjRmKHVu
c2lnbmVkIGxvbmcgaW5keCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdyk7Ci0g
ICAgICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgV2ViR0xGbG9h
dEFycmF5KiB2YWx1ZXMpOwotICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjRmdih1bnNpZ25lZCBs
b25nIGluZHgsIGZsb2F0KiB2YWx1ZXMsIGludCBzaXplKTsKLSAgICAgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWJQb2ludGVyKHVuc2lnbmVkIGxvbmcgaW5keCwgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25n
IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgc3RyaWRlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAgICAgIHZv
aWQgdmVydGV4QXR0cmliMWYodW5zaWduZWQgbG9uZyBpbmRleCwgZmxvYXQgeCk7CisgICAgICAg
IHZvaWQgdmVydGV4QXR0cmliMWZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIFdlYkdMRmxvYXRBcnJh
eSogdmFsdWVzKTsKKyAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYodW5zaWduZWQgbG9uZyBp
bmRleCwgZmxvYXQqIHZhbHVlcywgaW50IHNpemUpOworICAgICAgICB2b2lkIHZlcnRleEF0dHJp
YjJmKHVuc2lnbmVkIGxvbmcgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHkpOworICAgICAgICB2b2lk
IHZlcnRleEF0dHJpYjJmdih1bnNpZ25lZCBsb25nIGluZGV4LCBXZWJHTEZsb2F0QXJyYXkqIHZh
bHVlcyk7CisgICAgICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgs
IGZsb2F0KiB2YWx1ZXMsIGludCBzaXplKTsKKyAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZih1
bnNpZ25lZCBsb25nIGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKKyAgICAgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWIzZnYodW5zaWduZWQgbG9uZyBpbmRleCwgV2ViR0xGbG9hdEFycmF5
KiB2YWx1ZXMpOworICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjNmdih1bnNpZ25lZCBsb25nIGlu
ZGV4LCBmbG9hdCogdmFsdWVzLCBpbnQgc2l6ZSk7CisgICAgICAgIHZvaWQgdmVydGV4QXR0cmli
NGYodW5zaWduZWQgbG9uZyBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQg
dyk7CisgICAgICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIFdl
YkdMRmxvYXRBcnJheSogdmFsdWVzKTsKKyAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYodW5z
aWduZWQgbG9uZyBpbmRleCwgZmxvYXQqIHZhbHVlcywgaW50IHNpemUpOworICAgICAgICB2b2lk
IHZlcnRleEF0dHJpYlBvaW50ZXIodW5zaWduZWQgbG9uZyBpbmRleCwgbG9uZyBzaXplLCB1bnNp
Z25lZCBsb25nIHR5cGUsIGJvb2wgbm9ybWFsaXplZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RyaWRlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgRXhj
ZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIHZvaWQgdmlld3BvcnQobG9uZyB4LCBsb25nIHksIHVu
c2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKIApAQCAtMzE0LDEyICsz
MTQsMzAgQEAgY2xhc3MgV2ViS2l0Q1NTTWF0cml4OwogICAgICAgICAgICAgICAgIG1hcmtDb250
ZXh0Q2hhbmdlZCgpOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBib29sIHZhbGlkYXRl
SW5kZXhBcnJheSh1bnNpZ25lZCBsb25nIGNvdW50LCB1bnNpZ25lZCBsb25nIHR5cGUsIGxvbmcg
b2Zmc2V0LCBsb25nJiBudW1FbGVtZW50cyk7CisgICAgICAgIGJvb2wgdmFsaWRhdGVSZW5kZXJp
bmdTdGF0ZShsb25nIG51bUVsZW1lbnRzKTsKKwogICAgICAgICBPd25QdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IG1fY29udGV4dDsKICAgICAgICAgYm9vbCBtX25lZWRzVXBkYXRlOwogICAgICAgICBi
b29sIG1fbWFya2VkQ2FudmFzRGlydHk7CiAgICAgICAgIC8vIEZJWE1FOiBJIHRoaW5rIHRoaXMg
aXMgYnJva2VuIC0tIGl0IGRvZXMgbm90IGluY3JlbWVudCBhbnkKICAgICAgICAgLy8gcmVmZXJl
bmNlIGNvdW50cywgc28gbWF5IHJlZmVyIHRvIGRlc3Ryb3llZCBvYmplY3RzLgotICAgICAgICBI
YXNoU2V0PENhbnZhc09iamVjdCo+IG1fY2FudmFzT2JqZWN0czsKKyAgICAgICAgSGFzaFNldDxS
ZWZQdHI8Q2FudmFzT2JqZWN0PiA+IG1fY2FudmFzT2JqZWN0czsKKyAgICAgICAgCisgICAgICAg
IC8vIExpc3Qgb2YgYm91bmQgVkJPJ3MuIFVzZWQgdG8gbWFpbnRhaW4gaW5mbyBhYm91dCBzaXpl
cyBmb3IgQVJSQVlfQlVGRkVSIGFuZCBzdG9yZWQgdmFsdWVzIGZvciBFTEVNRU5UX0FSUkFZX0JV
RkZFUgorICAgICAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IG1fYm91bmRBcnJheUJ1ZmZlcjsKKyAg
ICAgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyOworICAg
IAorICAgICAgICAvLyBDYWNoZWQgdmFsdWVzIGZvciB2ZXJ0ZXggYXR0cmliIHJhbmdlIGNoZWNr
cworICAgICAgICBjbGFzcyBWZXJ0ZXhBdHRyaWJTdGF0ZSB7CisgICAgICAgIHB1YmxpYzoKKyAg
ICAgICAgICAgIFZlcnRleEF0dHJpYlN0YXRlKCkgOiBlbmFibGVkKGZhbHNlKSwgbnVtRWxlbWVu
dHMoMCkgeyB9CisgICAgICAgICAgICBib29sIGVuYWJsZWQ7CisgICAgICAgICAgICBsb25nIG51
bUVsZW1lbnRzOworICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgVmVjdG9yPFZlcnRleEF0
dHJpYlN0YXRlPiBtX3ZlcnRleEF0dHJpYlN0YXRlOworICAgICAgICB1bnNpZ25lZCBtX21heFZl
cnRleEF0dHJpYnM7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAkocmV2aXNpb24g
NTEzMTApCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3MiwxMyArNDcyLDE0IEBAIG1vZHVsZSBodG1sIHsKICAgICAg
ICAgdm9pZCAgICAgICAgIGJsZW5kRXF1YXRpb25TZXBhcmF0ZShpbiB1bnNpZ25lZCBsb25nIG1v
ZGVSR0IsIGluIHVuc2lnbmVkIGxvbmcgbW9kZUFscGhhKTsKICAgICAgICAgdm9pZCAgICAgICAg
IGJsZW5kRnVuYyhpbiB1bnNpZ25lZCBsb25nIHNmYWN0b3IsIGluIHVuc2lnbmVkIGxvbmcgZGZh
Y3Rvcik7CiAgICAgICAgIHZvaWQgICAgICAgICBibGVuZEZ1bmNTZXBhcmF0ZShpbiB1bnNpZ25l
ZCBsb25nIHNyY1JHQiwgaW4gdW5zaWduZWQgbG9uZyBkc3RSR0IsIGluIHVuc2lnbmVkIGxvbmcg
c3JjQWxwaGEsIGluIHVuc2lnbmVkIGxvbmcgZHN0QWxwaGEpOworCiAgICAgICAgIC8vIFN1cHBv
cnRlZCBmb3JtczoKICAgICAgICAgLy8gICB2b2lkIGJ1ZmZlckRhdGEgKGluIEdMZW51bSB0YXJn
ZXQsIGluIEdMc2l6ZWkgc2l6ZSwgaW4gR0xlbnVtIHVzYWdlKTsKICAgICAgICAgLy8gICB2b2lk
IGJ1ZmZlckRhdGEgKGluIEdMZW51bSB0YXJnZXQsIGluIFdlYkdMQXJyYXkgZGF0YSwgaW4gR0xl
bnVtIHVzYWdlKTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBidWZmZXJEYXRhKCk7CisgICAgICAg
IFtDdXN0b21dIHZvaWQgYnVmZmVyRGF0YSgpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAg
ICAvLyBTdXBwb3J0ZWQgZm9ybXM6CiAgICAgICAgIC8vICAgdm9pZCBidWZmZXJTdWJEYXRhIChp
biBHTGVudW0gdGFyZ2V0LCBpbiBHTHNpemVpcHRyIG9mZnNldCwgaW4gV2ViR0xBcnJheSBkYXRh
KTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBidWZmZXJTdWJEYXRhKCk7CisgICAgICAgIFtDdXN0
b21dIHZvaWQgYnVmZmVyU3ViRGF0YSgpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgICAg
IHVuc2lnbmVkIGxvbmcgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhpbiB1bnNpZ25lZCBsb25nIHRh
cmdldCk7CiAgICAgICAgIHZvaWQgICAgICAgICBjbGVhcihpbiB1bnNpZ25lZCBsb25nIG1hc2sp
OwpAQCAtNTE2LDEyICs1MTcsMTIgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICB2b2lkICAgICAg
ICAgZGVwdGhSYW5nZShpbiBkb3VibGUgek5lYXIsIGluIGRvdWJsZSB6RmFyKTsKICAgICAgICAg
dm9pZCAgICAgICAgIGRldGFjaFNoYWRlcihpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSwgaW4gV2Vi
R0xTaGFkZXIgc2hhZGVyKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCAgICAg
ICAgIGRpc2FibGUoaW4gdW5zaWduZWQgbG9uZyBjYXApOwotICAgICAgICB2b2lkICAgICAgICAg
ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgICAg
ICB2b2lkICAgICAgICAgZHJhd0FycmF5cyhpbiB1bnNpZ25lZCBsb25nIG1vZGUsIGluIGxvbmcg
Zmlyc3QsIGluIHVuc2lnbmVkIGxvbmcgY291bnQpOwotICAgICAgICB2b2lkICAgICAgICAgZHJh
d0VsZW1lbnRzIChpbiB1bnNpZ25lZCBsb25nIG1vZGUsIGluIGxvbmcgY291bnQsIGluIHVuc2ln
bmVkIGxvbmcgdHlwZSwgaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOworICAgICAgICB2b2lkICAg
ICAgICAgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpIHJh
aXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkICAgICAgICAgZHJhd0FycmF5cyhpbiB1
bnNpZ25lZCBsb25nIG1vZGUsIGluIGxvbmcgZmlyc3QsIGluIHVuc2lnbmVkIGxvbmcgY291bnQp
IHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkICAgICAgICAgZHJhd0VsZW1lbnRz
IChpbiB1bnNpZ25lZCBsb25nIG1vZGUsIGluIGxvbmcgY291bnQsIGluIHVuc2lnbmVkIGxvbmcg
dHlwZSwgaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAg
ICAgICAgIHZvaWQgICAgICAgICBlbmFibGUoaW4gdW5zaWduZWQgbG9uZyBjYXApOwotICAgICAg
ICB2b2lkICAgICAgICAgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW4gdW5zaWduZWQgbG9uZyBp
bmRleCk7CisgICAgICAgIHZvaWQgICAgICAgICBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbiB1
bnNpZ25lZCBsb25nIGluZGV4KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCAg
ICAgICAgIGZpbmlzaCgpOwogICAgICAgICB2b2lkICAgICAgICAgZmx1c2goKTsKICAgICAgICAg
dm9pZCAgICAgICAgIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGluIHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCBpbiB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIGluIHVuc2lnbmVkIGxvbmcgcmVuZGVy
YnVmZmVydGFyZ2V0LCBpbiBXZWJHTFJlbmRlcmJ1ZmZlciByZW5kZXJidWZmZXIpIHJhaXNlcyhE
T01FeGNlcHRpb24pOwpAQCAtNjY5LDE5ICs2NzAsMTkgQEAgbW9kdWxlIGh0bWwgewogICAgICAg
ICBbQ3VzdG9tXSB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoaW4gbG9uZyBsb2NhdGlvbiwgaW4gYm9v
bGVhbiB0cmFuc3Bvc2UsIGluIFdlYkdMRmxvYXRBcnJheSBhcnJheSk7CiAgICAgICAgIFtDdXN0
b21dIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihpbiBsb25nIGxvY2F0aW9uLCBpbiBib29sZWFuIHRy
YW5zcG9zZSwgaW4gV2ViR0xGbG9hdEFycmF5IGFycmF5KTsKIAotICAgICAgICB2b2lkICAgICAg
ICAgdXNlUHJvZ3JhbShpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSk7Ci0gICAgICAgIHZvaWQgICAg
ICAgICB2YWxpZGF0ZVByb2dyYW0oaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0pOworICAgICAgICB2
b2lkICAgICAgICAgdXNlUHJvZ3JhbShpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSkgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgICAgICAgICB2YWxpZGF0ZVByb2dyYW0oaW4gV2Vi
R0xQcm9ncmFtIHByb2dyYW0pIHJhaXNlcyhET01FeGNlcHRpb24pOwogCi0gICAgICAgIHZvaWQg
ICAgICAgICB2ZXJ0ZXhBdHRyaWIxZihpbiB1bnNpZ25lZCBsb25nIGluZHgsIGluIGZsb2F0IHgp
OwotICAgICAgICBbQ3VzdG9tXSB2b2lkICAgICAgICAgdmVydGV4QXR0cmliMWZ2KGluIHVuc2ln
bmVkIGxvbmcgaW5keCwgaW4gV2ViR0xGbG9hdEFycmF5IHZhbHVlcyk7Ci0gICAgICAgIHZvaWQg
ICAgICAgICB2ZXJ0ZXhBdHRyaWIyZihpbiB1bnNpZ25lZCBsb25nIGluZHgsIGluIGZsb2F0IHgs
IGluIGZsb2F0IHkpOwotICAgICAgICBbQ3VzdG9tXSB2b2lkICAgICAgICAgdmVydGV4QXR0cmli
MmZ2KGluIHVuc2lnbmVkIGxvbmcgaW5keCwgaW4gV2ViR0xGbG9hdEFycmF5IHZhbHVlcyk7Ci0g
ICAgICAgIHZvaWQgICAgICAgICB2ZXJ0ZXhBdHRyaWIzZihpbiB1bnNpZ25lZCBsb25nIGluZHgs
IGluIGZsb2F0IHgsIGluIGZsb2F0IHksIGluIGZsb2F0IHopOwotICAgICAgICBbQ3VzdG9tXSB2
b2lkICAgICAgICAgdmVydGV4QXR0cmliM2Z2KGluIHVuc2lnbmVkIGxvbmcgaW5keCwgaW4gV2Vi
R0xGbG9hdEFycmF5IHZhbHVlcyk7Ci0gICAgICAgIHZvaWQgICAgICAgICB2ZXJ0ZXhBdHRyaWI0
ZihpbiB1bnNpZ25lZCBsb25nIGluZHgsIGluIGZsb2F0IHgsIGluIGZsb2F0IHksIGluIGZsb2F0
IHosIGluIGZsb2F0IHcpOwotICAgICAgICBbQ3VzdG9tXSB2b2lkICAgICAgICAgdmVydGV4QXR0
cmliNGZ2KGluIHVuc2lnbmVkIGxvbmcgaW5keCwgaW4gV2ViR0xGbG9hdEFycmF5IHZhbHVlcyk7
Ci0gICAgICAgIHZvaWQgICAgICAgICB2ZXJ0ZXhBdHRyaWJQb2ludGVyKGluIHVuc2lnbmVkIGxv
bmcgaW5keCwgaW4gbG9uZyBzaXplLCBpbiB1bnNpZ25lZCBsb25nIHR5cGUsIGluIGJvb2xlYW4g
bm9ybWFsaXplZCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IGxvbmcgc3RyaWRlLCBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAgICAgIHZvaWQgICAg
ICAgICB2ZXJ0ZXhBdHRyaWIxZihpbiB1bnNpZ25lZCBsb25nIGluZGV4LCBpbiBmbG9hdCB4KTsK
KyAgICAgICAgW0N1c3RvbV0gdm9pZCAgICAgICAgIHZlcnRleEF0dHJpYjFmdihpbiB1bnNpZ25l
ZCBsb25nIGluZGV4LCBpbiBXZWJHTEZsb2F0QXJyYXkgdmFsdWVzKTsKKyAgICAgICAgdm9pZCAg
ICAgICAgIHZlcnRleEF0dHJpYjJmKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIGZsb2F0IHgs
IGluIGZsb2F0IHkpOworICAgICAgICBbQ3VzdG9tXSB2b2lkICAgICAgICAgdmVydGV4QXR0cmli
MmZ2KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIFdlYkdMRmxvYXRBcnJheSB2YWx1ZXMpOwor
ICAgICAgICB2b2lkICAgICAgICAgdmVydGV4QXR0cmliM2YoaW4gdW5zaWduZWQgbG9uZyBpbmRl
eCwgaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSwgaW4gZmxvYXQgeik7CisgICAgICAgIFtDdXN0b21d
IHZvaWQgICAgICAgICB2ZXJ0ZXhBdHRyaWIzZnYoaW4gdW5zaWduZWQgbG9uZyBpbmRleCwgaW4g
V2ViR0xGbG9hdEFycmF5IHZhbHVlcyk7CisgICAgICAgIHZvaWQgICAgICAgICB2ZXJ0ZXhBdHRy
aWI0ZihpbiB1bnNpZ25lZCBsb25nIGluZGV4LCBpbiBmbG9hdCB4LCBpbiBmbG9hdCB5LCBpbiBm
bG9hdCB6LCBpbiBmbG9hdCB3KTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCAgICAgICAgIHZlcnRl
eEF0dHJpYjRmdihpbiB1bnNpZ25lZCBsb25nIGluZGV4LCBpbiBXZWJHTEZsb2F0QXJyYXkgdmFs
dWVzKTsKKyAgICAgICAgdm9pZCAgICAgICAgIHZlcnRleEF0dHJpYlBvaW50ZXIoaW4gdW5zaWdu
ZWQgbG9uZyBpbmRleCwgaW4gbG9uZyBzaXplLCBpbiB1bnNpZ25lZCBsb25nIHR5cGUsIGluIGJv
b2xlYW4gbm9ybWFsaXplZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIGxvbmcgc3RyaWRlLCBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCkgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CiAKICAgICAgICAgdm9pZCAgICAgICAgIHZpZXdwb3J0KGluIGxvbmcgeCwgaW4g
bG9uZyB5LCBpbiB1bnNpZ25lZCBsb25nIHdpZHRoLCBpbiB1bnNpZ25lZCBsb25nIGhlaWdodCk7
CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwCShyZXZpc2lvbiA1
MTMxMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiwxMiArMzIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotUGFz
c1JlZlB0cjxXZWJHTFNoYWRlcj4gV2ViR0xTaGFkZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqIGN0eCwgR3JhcGhpY3NDb250ZXh0M0Q6OlNoYWRlclR5cGUgdHlwZSkKK1Bhc3NSZWZQ
dHI8V2ViR0xTaGFkZXI+IFdlYkdMU2hhZGVyOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0
KiBjdHgsIEdyYXBoaWNzQ29udGV4dDNEOjpXZWJHTEVudW1UeXBlIHR5cGUpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJHTFNoYWRlcihjdHgsIHR5cGUpKTsKIH0KIAotV2ViR0xTaGFk
ZXI6OldlYkdMU2hhZGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4LCBHcmFwaGljc0NvbnRl
eHQzRDo6U2hhZGVyVHlwZSB0eXBlKQorV2ViR0xTaGFkZXI6OldlYkdMU2hhZGVyKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dCogY3R4LCBHcmFwaGljc0NvbnRleHQzRDo6V2ViR0xFbnVtVHlwZSB0eXBl
KQogICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKIHsKICAgICBzZXRPYmplY3QoY29udGV4dCgpLT5n
cmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVTaGFkZXIodHlwZSkpOwpJbmRleDogV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xTaGFkZXIuaAkocmV2aXNpb24gNTEzMTApCisrKyBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMU2hhZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEwICszNywxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5XZWJHTFNoYWRlcigp
IHsgZGVsZXRlT2JqZWN0KCk7IH0KICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYkdMU2hhZGVyPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgR3JhcGhpY3NDb250
ZXh0M0Q6OlNoYWRlclR5cGUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTFNoYWRl
cj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIEdyYXBoaWNzQ29udGV4dDNEOjpXZWJH
TEVudW1UeXBlKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgV2ViR0xTaGFkZXIo
V2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgR3JhcGhpY3NDb250ZXh0M0Q6OlNoYWRlclR5cGUpOwor
ICAgICAgICBXZWJHTFNoYWRlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBHcmFwaGljc0NvbnRl
eHQzRDo6V2ViR0xFbnVtVHlwZSk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIF9kZWxldGVPYmpl
Y3QoUGxhdGZvcm0zRE9iamVjdCk7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDUxMzEwKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03Niw4ICs3NiwzMDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgR3JhcGhp
Y3NDb250ZXh0M0QgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
ZW51bSBTaGFkZXJUeXBlIHsgRlJBR01FTlRfU0hBREVSLCBWRVJURVhfU0hBREVSIH07Ci0gICAg
CisgICAgICAgIGVudW0gV2ViR0xFbnVtVHlwZSB7CisgICAgICAgICAgICBERVBUSF9CVUZGRVJf
QklUID0gMHgwMDAwMDEwMCwKKyAgICAgICAgICAgIFNURU5DSUxfQlVGRkVSX0JJVCA9IDB4MDAw
MDA0MDAsCisgICAgICAgICAgICBDT0xPUl9CVUZGRVJfQklUID0gMHgwMDAwNDAwMCwKKyAgICAg
ICAgICAgIFBPSU5UUyA9IDB4MDAwMCwKKyAgICAgICAgICAgIExJTkVTID0gMHgwMDAxLAorICAg
ICAgICAgICAgTElORV9MT09QID0gMHgwMDAyLAorICAgICAgICAgICAgTElORV9TVFJJUCA9IDB4
MDAwMywKKyAgICAgICAgICAgIFRSSUFOR0xFUyA9IDB4MDAwNCwKKyAgICAgICAgICAgIFRSSUFO
R0xFX1NUUklQID0gMHgwMDA1LAorICAgICAgICAgICAgVFJJQU5HTEVfRkFOID0gMHgwMDA2LAor
ICAgICAgICAgICAgWkVSTyA9IDAsCisgICAgICAgICAgICBPTkUgPSAxLAorICAgICAgICAgICAg
U1JDX0NPTE9SID0gMHgwMzAwLAorICAgICAgICAgICAgT05FX01JTlVTX1NSQ19DT0xPUiA9IDB4
MDMwMSwKKyAgICAgICAgICAgIFNSQ19BTFBIQSA9IDB4MDMwMiwKKyAgICAgICAgICAgIE9ORV9N
SU5VU19TUkNfQUxQSEEgPSAweDAzMDMsCisgICAgICAgICAgICBEU1RfQUxQSEEgPSAweDAzMDQs
CisgICAgICAgICAgICBPTkVfTUlOVVNfRFNUX0FMUEhBID0gMHgwMzA1LAorICAgICAgICAgICAg
RFNUX0NPTE9SID0gMHgwMzA2LAorICAgICAgICAgICAgT05FX01JTlVTX0RTVF9DT0xPUiA9IDB4
MDMwNywKKyAgICAgICAgICAgIFNSQ19BTFBIQV9TQVRVUkFURSA9IDB4MDMwOCwKKyAgICAgICAg
ICAgIEZVTkNfQUREID0gMHg4MDA2LAorICAgICAgICAgICAgQkxFTkRfRVFVQVRJT04gPSAweDgw
MDksCisgICAgICAgICAgICBCTEVORF9FUVVBVElPTl9SR0IgPSAweDgwMDksCisgICAgICAgICAg
ICBCTEVORF9FUVVBVElPTl9BTFBIQSA9IDB4ODgzRCwKKyAgICAgICAgICAgIEZVTkNfU1VCVFJB
Q1QgPSAweDgwMEEsCisgICAgICAgICAgICBGVU5DX1JFVkVSU0VfU1VCVFJBQ1QgPSAweDgwMEIs
CisgICAgICAgICAgICBCTEVORF9EU1RfUkdCID0gMHg4MEM4LAorICAgICAgICAgICAgQkxFTkRf
U1JDX1JHQiA9IDB4ODBDOSwKKyAgICAgICAgICAgIEJMRU5EX0RTVF9BTFBIQSA9IDB4ODBDQSwK
KyAgICAgICAgICAgIEJMRU5EX1NSQ19BTFBIQSA9IDB4ODBDQiwKKyAgICAgICAgICAgIENPTlNU
QU5UX0NPTE9SID0gMHg4MDAxLAorICAgICAgICAgICAgT05FX01JTlVTX0NPTlNUQU5UX0NPTE9S
ID0gMHg4MDAyLAorICAgICAgICAgICAgQ09OU1RBTlRfQUxQSEEgPSAweDgwMDMsCisgICAgICAg
ICAgICBPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEgPSAweDgwMDQsCisgICAgICAgICAgICBCTEVO
RF9DT0xPUiA9IDB4ODAwNSwKKyAgICAgICAgICAgIEFSUkFZX0JVRkZFUiA9IDB4ODg5MiwKKyAg
ICAgICAgICAgIEVMRU1FTlRfQVJSQVlfQlVGRkVSID0gMHg4ODkzLAorICAgICAgICAgICAgQVJS
QVlfQlVGRkVSX0JJTkRJTkcgPSAweDg4OTQsCisgICAgICAgICAgICBFTEVNRU5UX0FSUkFZX0JV
RkZFUl9CSU5ESU5HID0gMHg4ODk1LAorICAgICAgICAgICAgU1RSRUFNX0RSQVcgPSAweDg4RTAs
CisgICAgICAgICAgICBTVEFUSUNfRFJBVyA9IDB4ODhFNCwKKyAgICAgICAgICAgIERZTkFNSUNf
RFJBVyA9IDB4ODhFOCwKKyAgICAgICAgICAgIEJVRkZFUl9TSVpFID0gMHg4NzY0LAorICAgICAg
ICAgICAgQlVGRkVSX1VTQUdFID0gMHg4NzY1LAorICAgICAgICAgICAgQ1VSUkVOVF9WRVJURVhf
QVRUUklCID0gMHg4NjI2LAorICAgICAgICAgICAgRlJPTlQgPSAweDA0MDQsCisgICAgICAgICAg
ICBCQUNLID0gMHgwNDA1LAorICAgICAgICAgICAgRlJPTlRfQU5EX0JBQ0sgPSAweDA0MDgsCisg
ICAgICAgICAgICBURVhUVVJFXzJEID0gMHgwREUxLAorICAgICAgICAgICAgQ1VMTF9GQUNFID0g
MHgwQjQ0LAorICAgICAgICAgICAgQkxFTkQgPSAweDBCRTIsCisgICAgICAgICAgICBESVRIRVIg
PSAweDBCRDAsCisgICAgICAgICAgICBTVEVOQ0lMX1RFU1QgPSAweDBCOTAsCisgICAgICAgICAg
ICBERVBUSF9URVNUID0gMHgwQjcxLAorICAgICAgICAgICAgU0NJU1NPUl9URVNUID0gMHgwQzEx
LAorICAgICAgICAgICAgUE9MWUdPTl9PRkZTRVRfRklMTCA9IDB4ODAzNywKKyAgICAgICAgICAg
IFNBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRSA9IDB4ODA5RSwKKyAgICAgICAgICAgIFNBTVBMRV9D
T1ZFUkFHRSA9IDB4ODBBMCwKKyAgICAgICAgICAgIE5PX0VSUk9SID0gMCwKKyAgICAgICAgICAg
IElOVkFMSURfRU5VTSA9IDB4MDUwMCwKKyAgICAgICAgICAgIElOVkFMSURfVkFMVUUgPSAweDA1
MDEsCisgICAgICAgICAgICBJTlZBTElEX09QRVJBVElPTiA9IDB4MDUwMiwKKyAgICAgICAgICAg
IE9VVF9PRl9NRU1PUlkgPSAweDA1MDUsCisgICAgICAgICAgICBDVyA9IDB4MDkwMCwKKyAgICAg
ICAgICAgIENDVyA9IDB4MDkwMSwKKyAgICAgICAgICAgIExJTkVfV0lEVEggPSAweDBCMjEsCisg
ICAgICAgICAgICBBTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UgPSAweDg0NkQsCisgICAgICAgICAg
ICBBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UgPSAweDg0NkUsCisgICAgICAgICAgICBDVUxMX0ZB
Q0VfTU9ERSA9IDB4MEI0NSwKKyAgICAgICAgICAgIEZST05UX0ZBQ0UgPSAweDBCNDYsCisgICAg
ICAgICAgICBERVBUSF9SQU5HRSA9IDB4MEI3MCwKKyAgICAgICAgICAgIERFUFRIX1dSSVRFTUFT
SyA9IDB4MEI3MiwKKyAgICAgICAgICAgIERFUFRIX0NMRUFSX1ZBTFVFID0gMHgwQjczLAorICAg
ICAgICAgICAgREVQVEhfRlVOQyA9IDB4MEI3NCwKKyAgICAgICAgICAgIFNURU5DSUxfQ0xFQVJf
VkFMVUUgPSAweDBCOTEsCisgICAgICAgICAgICBTVEVOQ0lMX0ZVTkMgPSAweDBCOTIsCisgICAg
ICAgICAgICBTVEVOQ0lMX0ZBSUwgPSAweDBCOTQsCisgICAgICAgICAgICBTVEVOQ0lMX1BBU1Nf
REVQVEhfRkFJTCA9IDB4MEI5NSwKKyAgICAgICAgICAgIFNURU5DSUxfUEFTU19ERVBUSF9QQVNT
ID0gMHgwQjk2LAorICAgICAgICAgICAgU1RFTkNJTF9SRUYgPSAweDBCOTcsCisgICAgICAgICAg
ICBTVEVOQ0lMX1ZBTFVFX01BU0sgPSAweDBCOTMsCisgICAgICAgICAgICBTVEVOQ0lMX1dSSVRF
TUFTSyA9IDB4MEI5OCwKKyAgICAgICAgICAgIFNURU5DSUxfQkFDS19GVU5DID0gMHg4ODAwLAor
ICAgICAgICAgICAgU1RFTkNJTF9CQUNLX0ZBSUwgPSAweDg4MDEsCisgICAgICAgICAgICBTVEVO
Q0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMID0gMHg4ODAyLAorICAgICAgICAgICAgU1RFTkNJTF9C
QUNLX1BBU1NfREVQVEhfUEFTUyA9IDB4ODgwMywKKyAgICAgICAgICAgIFNURU5DSUxfQkFDS19S
RUYgPSAweDhDQTMsCisgICAgICAgICAgICBTVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSyA9IDB4OENB
NCwKKyAgICAgICAgICAgIFNURU5DSUxfQkFDS19XUklURU1BU0sgPSAweDhDQTUsCisgICAgICAg
ICAgICBWSUVXUE9SVCA9IDB4MEJBMiwKKyAgICAgICAgICAgIFNDSVNTT1JfQk9YID0gMHgwQzEw
LAorICAgICAgICAgICAgQ09MT1JfQ0xFQVJfVkFMVUUgPSAweDBDMjIsCisgICAgICAgICAgICBD
T0xPUl9XUklURU1BU0sgPSAweDBDMjMsCisgICAgICAgICAgICBVTlBBQ0tfQUxJR05NRU5UID0g
MHgwQ0Y1LAorICAgICAgICAgICAgUEFDS19BTElHTk1FTlQgPSAweDBEMDUsCisgICAgICAgICAg
ICBNQVhfVEVYVFVSRV9TSVpFID0gMHgwRDMzLAorICAgICAgICAgICAgTUFYX1ZJRVdQT1JUX0RJ
TVMgPSAweDBEM0EsCisgICAgICAgICAgICBTVUJQSVhFTF9CSVRTID0gMHgwRDUwLAorICAgICAg
ICAgICAgUkVEX0JJVFMgPSAweDBENTIsCisgICAgICAgICAgICBHUkVFTl9CSVRTID0gMHgwRDUz
LAorICAgICAgICAgICAgQkxVRV9CSVRTID0gMHgwRDU0LAorICAgICAgICAgICAgQUxQSEFfQklU
UyA9IDB4MEQ1NSwKKyAgICAgICAgICAgIERFUFRIX0JJVFMgPSAweDBENTYsCisgICAgICAgICAg
ICBTVEVOQ0lMX0JJVFMgPSAweDBENTcsCisgICAgICAgICAgICBQT0xZR09OX09GRlNFVF9VTklU
UyA9IDB4MkEwMCwKKyAgICAgICAgICAgIFBPTFlHT05fT0ZGU0VUX0ZBQ1RPUiA9IDB4ODAzOCwK
KyAgICAgICAgICAgIFRFWFRVUkVfQklORElOR18yRCA9IDB4ODA2OSwKKyAgICAgICAgICAgIFNB
TVBMRV9CVUZGRVJTID0gMHg4MEE4LAorICAgICAgICAgICAgU0FNUExFUyA9IDB4ODBBOSwKKyAg
ICAgICAgICAgIFNBTVBMRV9DT1ZFUkFHRV9WQUxVRSA9IDB4ODBBQSwKKyAgICAgICAgICAgIFNB
TVBMRV9DT1ZFUkFHRV9JTlZFUlQgPSAweDgwQUIsCisgICAgICAgICAgICBOVU1fQ09NUFJFU1NF
RF9URVhUVVJFX0ZPUk1BVFMgPSAweDg2QTIsCisgICAgICAgICAgICBDT01QUkVTU0VEX1RFWFRV
UkVfRk9STUFUUyA9IDB4ODZBMywKKyAgICAgICAgICAgIERPTlRfQ0FSRSA9IDB4MTEwMCwKKyAg
ICAgICAgICAgIEZBU1RFU1QgPSAweDExMDEsCisgICAgICAgICAgICBOSUNFU1QgPSAweDExMDIs
CisgICAgICAgICAgICBHRU5FUkFURV9NSVBNQVBfSElOVCA9IDB4ODE5MiwKKyAgICAgICAgICAg
IEJZVEUgPSAweDE0MDAsCisgICAgICAgICAgICBVTlNJR05FRF9CWVRFID0gMHgxNDAxLAorICAg
ICAgICAgICAgU0hPUlQgPSAweDE0MDIsCisgICAgICAgICAgICBVTlNJR05FRF9TSE9SVCA9IDB4
MTQwMywKKyAgICAgICAgICAgIElOVCA9IDB4MTQwNCwKKyAgICAgICAgICAgIFVOU0lHTkVEX0lO
VCA9IDB4MTQwNSwKKyAgICAgICAgICAgIEZMT0FUID0gMHgxNDA2LAorICAgICAgICAgICAgRklY
RUQgPSAweDE0MEMsCisgICAgICAgICAgICBERVBUSF9DT01QT05FTlQgPSAweDE5MDIsCisgICAg
ICAgICAgICBBTFBIQSA9IDB4MTkwNiwKKyAgICAgICAgICAgIFJHQiA9IDB4MTkwNywKKyAgICAg
ICAgICAgIFJHQkEgPSAweDE5MDgsCisgICAgICAgICAgICBMVU1JTkFOQ0UgPSAweDE5MDksCisg
ICAgICAgICAgICBMVU1JTkFOQ0VfQUxQSEEgPSAweDE5MEEsCisgICAgICAgICAgICBVTlNJR05F
RF9TSE9SVF80XzRfNF80ID0gMHg4MDMzLAorICAgICAgICAgICAgVU5TSUdORURfU0hPUlRfNV81
XzVfMSA9IDB4ODAzNCwKKyAgICAgICAgICAgIFVOU0lHTkVEX1NIT1JUXzVfNl81ID0gMHg4MzYz
LAorICAgICAgICAgICAgRlJBR01FTlRfU0hBREVSID0gMHg4QjMwLAorICAgICAgICAgICAgVkVS
VEVYX1NIQURFUiA9IDB4OEIzMSwKKyAgICAgICAgICAgIE1BWF9WRVJURVhfQVRUUklCUyA9IDB4
ODg2OSwKKyAgICAgICAgICAgIE1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTID0gMHg4REZCLAor
ICAgICAgICAgICAgTUFYX1ZBUllJTkdfVkVDVE9SUyA9IDB4OERGQywKKyAgICAgICAgICAgIE1B
WF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTID0gMHg4QjRELAorICAgICAgICAgICAgTUFY
X1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTID0gMHg4QjRDLAorICAgICAgICAgICAgTUFYX1RF
WFRVUkVfSU1BR0VfVU5JVFMgPSAweDg4NzIsCisgICAgICAgICAgICBNQVhfRlJBR01FTlRfVU5J
Rk9STV9WRUNUT1JTID0gMHg4REZELAorICAgICAgICAgICAgU0hBREVSX1RZUEUgPSAweDhCNEYs
CisgICAgICAgICAgICBERUxFVEVfU1RBVFVTID0gMHg4QjgwLAorICAgICAgICAgICAgTElOS19T
VEFUVVMgPSAweDhCODIsCisgICAgICAgICAgICBWQUxJREFURV9TVEFUVVMgPSAweDhCODMsCisg
ICAgICAgICAgICBBVFRBQ0hFRF9TSEFERVJTID0gMHg4Qjg1LAorICAgICAgICAgICAgQUNUSVZF
X1VOSUZPUk1TID0gMHg4Qjg2LAorICAgICAgICAgICAgQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdU
SCA9IDB4OEI4NywKKyAgICAgICAgICAgIEFDVElWRV9BVFRSSUJVVEVTID0gMHg4Qjg5LAorICAg
ICAgICAgICAgQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIID0gMHg4QjhBLAorICAgICAgICAg
ICAgU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OID0gMHg4QjhDLAorICAgICAgICAgICAgQ1VSUkVO
VF9QUk9HUkFNID0gMHg4QjhELAorICAgICAgICAgICAgTkVWRVIgPSAweDAyMDAsCisgICAgICAg
ICAgICBMRVNTID0gMHgwMjAxLAorICAgICAgICAgICAgRVFVQUwgPSAweDAyMDIsCisgICAgICAg
ICAgICBMRVFVQUwgPSAweDAyMDMsCisgICAgICAgICAgICBHUkVBVEVSID0gMHgwMjA0LAorICAg
ICAgICAgICAgTk9URVFVQUwgPSAweDAyMDUsCisgICAgICAgICAgICBHRVFVQUwgPSAweDAyMDYs
CisgICAgICAgICAgICBBTFdBWVMgPSAweDAyMDcsCisgICAgICAgICAgICBLRUVQID0gMHgxRTAw
LAorICAgICAgICAgICAgUkVQTEFDRSA9IDB4MUUwMSwKKyAgICAgICAgICAgIElOQ1IgPSAweDFF
MDIsCisgICAgICAgICAgICBERUNSID0gMHgxRTAzLAorICAgICAgICAgICAgSU5WRVJUID0gMHgx
NTBBLAorICAgICAgICAgICAgSU5DUl9XUkFQID0gMHg4NTA3LAorICAgICAgICAgICAgREVDUl9X
UkFQID0gMHg4NTA4LAorICAgICAgICAgICAgVkVORE9SID0gMHgxRjAwLAorICAgICAgICAgICAg
UkVOREVSRVIgPSAweDFGMDEsCisgICAgICAgICAgICBWRVJTSU9OID0gMHgxRjAyLAorICAgICAg
ICAgICAgRVhURU5TSU9OUyA9IDB4MUYwMywKKyAgICAgICAgICAgIE5FQVJFU1QgPSAweDI2MDAs
CisgICAgICAgICAgICBMSU5FQVIgPSAweDI2MDEsCisgICAgICAgICAgICBORUFSRVNUX01JUE1B
UF9ORUFSRVNUID0gMHgyNzAwLAorICAgICAgICAgICAgTElORUFSX01JUE1BUF9ORUFSRVNUID0g
MHgyNzAxLAorICAgICAgICAgICAgTkVBUkVTVF9NSVBNQVBfTElORUFSID0gMHgyNzAyLAorICAg
ICAgICAgICAgTElORUFSX01JUE1BUF9MSU5FQVIgPSAweDI3MDMsCisgICAgICAgICAgICBURVhU
VVJFX01BR19GSUxURVIgPSAweDI4MDAsCisgICAgICAgICAgICBURVhUVVJFX01JTl9GSUxURVIg
PSAweDI4MDEsCisgICAgICAgICAgICBURVhUVVJFX1dSQVBfUyA9IDB4MjgwMiwKKyAgICAgICAg
ICAgIFRFWFRVUkVfV1JBUF9UID0gMHgyODAzLAorICAgICAgICAgICAgVEVYVFVSRSA9IDB4MTcw
MiwKKyAgICAgICAgICAgIFRFWFRVUkVfQ1VCRV9NQVAgPSAweDg1MTMsCisgICAgICAgICAgICBU
RVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAgPSAweDg1MTQsCisgICAgICAgICAgICBURVhUVVJFX0NV
QkVfTUFQX1BPU0lUSVZFX1ggPSAweDg1MTUsCisgICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQ
X05FR0FUSVZFX1ggPSAweDg1MTYsCisgICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1kgPSAweDg1MTcsCisgICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1kg
PSAweDg1MTgsCisgICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ogPSAweDg1
MTksCisgICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ogPSAweDg1MUEsCisg
ICAgICAgICAgICBNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFID0gMHg4NTFDLAorICAgICAgICAg
ICAgVEVYVFVSRTAgPSAweDg0QzAsCisgICAgICAgICAgICBURVhUVVJFMSA9IDB4ODRDMSwKKyAg
ICAgICAgICAgIFRFWFRVUkUyID0gMHg4NEMyLAorICAgICAgICAgICAgVEVYVFVSRTMgPSAweDg0
QzMsCisgICAgICAgICAgICBURVhUVVJFNCA9IDB4ODRDNCwKKyAgICAgICAgICAgIFRFWFRVUkU1
ID0gMHg4NEM1LAorICAgICAgICAgICAgVEVYVFVSRTYgPSAweDg0QzYsCisgICAgICAgICAgICBU
RVhUVVJFNyA9IDB4ODRDNywKKyAgICAgICAgICAgIFRFWFRVUkU4ID0gMHg4NEM4LAorICAgICAg
ICAgICAgVEVYVFVSRTkgPSAweDg0QzksCisgICAgICAgICAgICBURVhUVVJFMTAgPSAweDg0Q0Es
CisgICAgICAgICAgICBURVhUVVJFMTEgPSAweDg0Q0IsCisgICAgICAgICAgICBURVhUVVJFMTIg
PSAweDg0Q0MsCisgICAgICAgICAgICBURVhUVVJFMTMgPSAweDg0Q0QsCisgICAgICAgICAgICBU
RVhUVVJFMTQgPSAweDg0Q0UsCisgICAgICAgICAgICBURVhUVVJFMTUgPSAweDg0Q0YsCisgICAg
ICAgICAgICBURVhUVVJFMTYgPSAweDg0RDAsCisgICAgICAgICAgICBURVhUVVJFMTcgPSAweDg0
RDEsCisgICAgICAgICAgICBURVhUVVJFMTggPSAweDg0RDIsCisgICAgICAgICAgICBURVhUVVJF
MTkgPSAweDg0RDMsCisgICAgICAgICAgICBURVhUVVJFMjAgPSAweDg0RDQsCisgICAgICAgICAg
ICBURVhUVVJFMjEgPSAweDg0RDUsCisgICAgICAgICAgICBURVhUVVJFMjIgPSAweDg0RDYsCisg
ICAgICAgICAgICBURVhUVVJFMjMgPSAweDg0RDcsCisgICAgICAgICAgICBURVhUVVJFMjQgPSAw
eDg0RDgsCisgICAgICAgICAgICBURVhUVVJFMjUgPSAweDg0RDksCisgICAgICAgICAgICBURVhU
VVJFMjYgPSAweDg0REEsCisgICAgICAgICAgICBURVhUVVJFMjcgPSAweDg0REIsCisgICAgICAg
ICAgICBURVhUVVJFMjggPSAweDg0REMsCisgICAgICAgICAgICBURVhUVVJFMjkgPSAweDg0REQs
CisgICAgICAgICAgICBURVhUVVJFMzAgPSAweDg0REUsCisgICAgICAgICAgICBURVhUVVJFMzEg
PSAweDg0REYsCisgICAgICAgICAgICBBQ1RJVkVfVEVYVFVSRSA9IDB4ODRFMCwKKyAgICAgICAg
ICAgIFJFUEVBVCA9IDB4MjkwMSwKKyAgICAgICAgICAgIENMQU1QX1RPX0VER0UgPSAweDgxMkYs
CisgICAgICAgICAgICBNSVJST1JFRF9SRVBFQVQgPSAweDgzNzAsCisgICAgICAgICAgICBGTE9B
VF9WRUMyID0gMHg4QjUwLAorICAgICAgICAgICAgRkxPQVRfVkVDMyA9IDB4OEI1MSwKKyAgICAg
ICAgICAgIEZMT0FUX1ZFQzQgPSAweDhCNTIsCisgICAgICAgICAgICBJTlRfVkVDMiA9IDB4OEI1
MywKKyAgICAgICAgICAgIElOVF9WRUMzID0gMHg4QjU0LAorICAgICAgICAgICAgSU5UX1ZFQzQg
PSAweDhCNTUsCisgICAgICAgICAgICBCT09MID0gMHg4QjU2LAorICAgICAgICAgICAgQk9PTF9W
RUMyID0gMHg4QjU3LAorICAgICAgICAgICAgQk9PTF9WRUMzID0gMHg4QjU4LAorICAgICAgICAg
ICAgQk9PTF9WRUM0ID0gMHg4QjU5LAorICAgICAgICAgICAgRkxPQVRfTUFUMiA9IDB4OEI1QSwK
KyAgICAgICAgICAgIEZMT0FUX01BVDMgPSAweDhCNUIsCisgICAgICAgICAgICBGTE9BVF9NQVQ0
ID0gMHg4QjVDLAorICAgICAgICAgICAgU0FNUExFUl8yRCA9IDB4OEI1RSwKKyAgICAgICAgICAg
IFNBTVBMRVJfQ1VCRSA9IDB4OEI2MCwKKyAgICAgICAgICAgIFZFUlRFWF9BVFRSSUJfQVJSQVlf
RU5BQkxFRCA9IDB4ODYyMiwKKyAgICAgICAgICAgIFZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRSA9
IDB4ODYyMywKKyAgICAgICAgICAgIFZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFID0gMHg4NjI0
LAorICAgICAgICAgICAgVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFID0gMHg4NjI1LAorICAgICAg
ICAgICAgVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEID0gMHg4ODZBLAorICAgICAgICAg
ICAgVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSID0gMHg4NjQ1LAorICAgICAgICAgICAgVkVS
VEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORyA9IDB4ODg5RiwKKyAgICAgICAgICAgIElN
UExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRSA9IDB4OEI5QSwKKyAgICAgICAgICAgIElNUExF
TUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUID0gMHg4QjlCLAorICAgICAgICAgICAgQ09NUElM
RV9TVEFUVVMgPSAweDhCODEsCisgICAgICAgICAgICBJTkZPX0xPR19MRU5HVEggPSAweDhCODQs
CisgICAgICAgICAgICBTSEFERVJfU09VUkNFX0xFTkdUSCA9IDB4OEI4OCwKKyAgICAgICAgICAg
IFNIQURFUl9DT01QSUxFUiA9IDB4OERGQSwKKyAgICAgICAgICAgIFNIQURFUl9CSU5BUllfRk9S
TUFUUyA9IDB4OERGOCwKKyAgICAgICAgICAgIE5VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFMgPSAw
eDhERjksCisgICAgICAgICAgICBMT1dfRkxPQVQgPSAweDhERjAsCisgICAgICAgICAgICBNRURJ
VU1fRkxPQVQgPSAweDhERjEsCisgICAgICAgICAgICBISUdIX0ZMT0FUID0gMHg4REYyLAorICAg
ICAgICAgICAgTE9XX0lOVCA9IDB4OERGMywKKyAgICAgICAgICAgIE1FRElVTV9JTlQgPSAweDhE
RjQsCisgICAgICAgICAgICBISUdIX0lOVCA9IDB4OERGNSwKKyAgICAgICAgICAgIEZSQU1FQlVG
RkVSID0gMHg4RDQwLAorICAgICAgICAgICAgUkVOREVSQlVGRkVSID0gMHg4RDQxLAorICAgICAg
ICAgICAgUkdCQTQgPSAweDgwNTYsCisgICAgICAgICAgICBSR0I1X0ExID0gMHg4MDU3LAorICAg
ICAgICAgICAgUkdCNTY1ID0gMHg4RDYyLAorICAgICAgICAgICAgREVQVEhfQ09NUE9ORU5UMTYg
PSAweDgxQTUsCisgICAgICAgICAgICBTVEVOQ0lMX0lOREVYID0gMHgxOTAxLAorICAgICAgICAg
ICAgU1RFTkNJTF9JTkRFWDggPSAweDhENDgsCisgICAgICAgICAgICBSRU5ERVJCVUZGRVJfV0lE
VEggPSAweDhENDIsCisgICAgICAgICAgICBSRU5ERVJCVUZGRVJfSEVJR0hUID0gMHg4RDQzLAor
ICAgICAgICAgICAgUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVCA9IDB4OEQ0NCwKKyAgICAg
ICAgICAgIFJFTkRFUkJVRkZFUl9SRURfU0laRSA9IDB4OEQ1MCwKKyAgICAgICAgICAgIFJFTkRF
UkJVRkZFUl9HUkVFTl9TSVpFID0gMHg4RDUxLAorICAgICAgICAgICAgUkVOREVSQlVGRkVSX0JM
VUVfU0laRSA9IDB4OEQ1MiwKKyAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFID0g
MHg4RDUzLAorICAgICAgICAgICAgUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUgPSAweDhENTQsCisg
ICAgICAgICAgICBSRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFID0gMHg4RDU1LAorICAgICAgICAg
ICAgRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSA9IDB4OENEMCwKKyAgICAgICAg
ICAgIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUgPSAweDhDRDEsCisgICAgICAg
ICAgICBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUwgPSAweDhDRDIsCisgICAg
ICAgICAgICBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRSA9IDB4
OENEMywKKyAgICAgICAgICAgIENPTE9SX0FUVEFDSE1FTlQwID0gMHg4Q0UwLAorICAgICAgICAg
ICAgREVQVEhfQVRUQUNITUVOVCA9IDB4OEQwMCwKKyAgICAgICAgICAgIFNURU5DSUxfQVRUQUNI
TUVOVCA9IDB4OEQyMCwKKyAgICAgICAgICAgIE5PTkUgPSAwLAorICAgICAgICAgICAgRlJBTUVC
VUZGRVJfQ09NUExFVEUgPSAweDhDRDUsCisgICAgICAgICAgICBGUkFNRUJVRkZFUl9JTkNPTVBM
RVRFX0FUVEFDSE1FTlQgPSAweDhDRDYsCisgICAgICAgICAgICBGUkFNRUJVRkZFUl9JTkNPTVBM
RVRFX01JU1NJTkdfQVRUQUNITUVOVCA9IDB4OENENywKKyAgICAgICAgICAgIEZSQU1FQlVGRkVS
X0lOQ09NUExFVEVfRElNRU5TSU9OUyA9IDB4OENEOSwKKyAgICAgICAgICAgIEZSQU1FQlVGRkVS
X1VOU1VQUE9SVEVEID0gMHg4Q0RELAorICAgICAgICAgICAgRlJBTUVCVUZGRVJfQklORElORyA9
IDB4OENBNiwKKyAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9CSU5ESU5HID0gMHg4Q0E3LAorICAg
ICAgICAgICAgTUFYX1JFTkRFUkJVRkZFUl9TSVpFID0gMHg4NEU4LAorICAgICAgICAgICAgSU5W
QUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gPSAweDA1MDYKKyAgICAgICAgfTsKKyAgICAgICAg
CiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGUoKTsK
ICAgICAgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0M0QoKTsKIApAQCAtMzAzLDcgKzYwNCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdW5zaWduZWQgY3JlYXRlRnJhbWVidWZm
ZXIoKTsKICAgICAgICAgdW5zaWduZWQgY3JlYXRlUHJvZ3JhbSgpOwogICAgICAgICB1bnNpZ25l
ZCBjcmVhdGVSZW5kZXJidWZmZXIoKTsKLSAgICAgICAgdW5zaWduZWQgY3JlYXRlU2hhZGVyKFNo
YWRlclR5cGUpOworICAgICAgICB1bnNpZ25lZCBjcmVhdGVTaGFkZXIodW5zaWduZWQgbG9uZyk7
CiAgICAgICAgIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoKTsKICAgICAgICAgCiAgICAgICAgIHZv
aWQgZGVsZXRlQnVmZmVyKHVuc2lnbmVkKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAJKHJldmlzaW9uIDUx
MzEwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RN
YWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgzLDcgKzE2ODMsNyBAQCB1bnNpZ25lZCBHcmFw
aGljc0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVyCiAgICAgcmV0dXJuIG87CiB9CiAKLXVuc2lnbmVk
IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVTaGFkZXIoU2hhZGVyVHlwZSB0eXBlKQordW5zaWdu
ZWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVNoYWRlcih1bnNpZ25lZCBsb25nIHR5cGUpCiB7
CiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwogICAgIHJldHVybiBnbENyZWF0ZVNo
YWRlcigodHlwZSA9PSBGUkFHTUVOVF9TSEFERVIpID8gR0xfRlJBR01FTlRfU0hBREVSIDogR0xf
VkVSVEVYX1NIQURFUik7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MTMxNSkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDA5LTExLTIzICBD
aHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3Igb3V0IG9mIGJvdW5kcyBjb25kaXRp
b25zIG9uIGRyYXdFbGVtZW50cyBhbmQgZHJhd0FycmF5cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzEyMzkKKworICAgICAgICAqIGZhc3QvY2FudmFz
L3dlYmdsL2RyYXdBcnJheXNPdXRPZkJvdW5kcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3dlYmdsL2RyYXdBcnJheXNPdXRPZkJvdW5kcy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9kcmF3RWxlbWVudHNzT3V0T2ZCb3VuZHMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9kcmF3RWxlbWVu
dHNzT3V0T2ZCb3VuZHMuaHRtbDogQWRkZWQuCisKIDIwMDktMTEtMjIgIENocmlzIEZsZWl6YWNo
ICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVu
dC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXdBcnJheXNPdXRPZkJv
dW5kcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvZHJhd0FycmF5c091dE9mQm91bmRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXdBcnJheXNPdXRPZkJvdW5kcy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjggQEAKK1Rlc3Qgb2YgZHJhd0FycmF5
cyB3aXRoIG91dC1vZi1ib3VuZHMgcGFyYW1ldGVycworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKK1Rlc3QgZW1wdHkgYnVmZmVyCitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0
LlRSSUFOR0xFUywgMCwgMSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VS
UjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJ
QU5HTEVTLCAwLCAxMDAwMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VS
UjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJ
QU5HTEVTLCAwLCAxMDAwMDAwMDAwMDAwMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElE
X1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNv
bnRleHQuVFJJQU5HTEVTLCAwLCAtMSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NU
QVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRl
eHQuVFJJQU5HTEVTLCAxLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVf
RVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5U
UklBTkdMRVMsIC0xLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJS
OiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklB
TkdMRVMsIDEsIC0xKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBE
T00gRXhjZXB0aW9uIDExLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdM
RVMsIC0xLCAxKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00g
RXhjZXB0aW9uIDExLgorCitUZXN0IGJ1ZmZlciB3aXRoIDMgZmxvYXQgdmVjdG9ycworUEFTUyBj
b250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIDMpIGlzIHVuZGVmaW5lZAor
UEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDMsIDIpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNT
IGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMTAwMDApIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNT
IGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMTAwMDAwMDAwMDAwMDAp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24g
MTEuCitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgLTEpIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEu
CitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIDApIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQ
QVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgLTEpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNT
IGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIDEpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCisKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3QXJyYXlzT3V0T2ZCb3VuZHMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3QXJyYXlzT3V0T2ZC
b3VuZHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2RyYXdBcnJheXNPdXRPZkJvdW5kcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBA
Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93
ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbigiVGVzdCBvZiBkcmF3QXJyYXlzIHdpdGggb3V0LW9mLWJvdW5kcyBwYXJhbWV0ZXJz
Iik7CisKK3ZhciBjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KCk7Cit2YXIgcHJvZ3JhbSA9IGxv
YWRTdGFuZGFyZFByb2dyYW0oY29udGV4dCk7CisKK2NvbnRleHQudXNlUHJvZ3JhbShwcm9ncmFt
KTsKK3ZhciB2ZXJ0ZXhPYmplY3QgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcigpOworY29udGV4dC5i
aW5kQnVmZmVyKGNvbnRleHQuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhPYmplY3QpOworY29udGV4dC5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKworZGVidWcoIlRlc3QgZW1wdHkgYnVmZmVyIikK
K2NvbnRleHQuYnVmZmVyRGF0YShjb250ZXh0LkFSUkFZX0JVRkZFUiwgbmV3IFdlYkdMRmxvYXRB
cnJheShbICBdKSwgY29udGV4dC5TVEFUSUNfRFJBVyk7Citjb250ZXh0LnZlcnRleEF0dHJpYlBv
aW50ZXIoMCwgMywgY29udGV4dC5GTE9BVCwgZmFsc2UsIDAsIDApOworc2hvdWxkVGhyb3coImNv
bnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMSkiKTsKK3Nob3VsZFRocm93
KCJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIDEwMDAwKSIpOworc2hv
dWxkVGhyb3coImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMTAwMDAw
MDAwMDAwMDApIik7CitzaG91bGRUaHJvdygiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJ
QU5HTEVTLCAwLCAtMSkiKTsKK3Nob3VsZFRocm93KCJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4
dC5UUklBTkdMRVMsIDEsIDApIik7CitzaG91bGRUaHJvdygiY29udGV4dC5kcmF3QXJyYXlzKGNv
bnRleHQuVFJJQU5HTEVTLCAtMSwgMCkiKTsKK3Nob3VsZFRocm93KCJjb250ZXh0LmRyYXdBcnJh
eXMoY29udGV4dC5UUklBTkdMRVMsIDEsIC0xKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZHJh
d0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIDEpIik7CisKK2RlYnVnKCIiKQorZGVidWco
IlRlc3QgYnVmZmVyIHdpdGggMyBmbG9hdCB2ZWN0b3JzIikKK2NvbnRleHQuYnVmZmVyRGF0YShj
b250ZXh0LkFSUkFZX0JVRkZFUiwgbmV3IFdlYkdMRmxvYXRBcnJheShbIDAsMC41LDAsIC0wLjUs
LTAuNSwwLCAwLjUsLTAuNSwwIF0pLCBjb250ZXh0LlNUQVRJQ19EUkFXKTsKK2NvbnRleHQudmVy
dGV4QXR0cmliUG9pbnRlcigwLCAzLCBjb250ZXh0LkZMT0FULCBmYWxzZSwgMCwgMCk7CitzaG91
bGRCZSgiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAzKSIsICJ1bmRl
ZmluZWQiKTsKK3Nob3VsZFRocm93KCJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdM
RVMsIDMsIDIpIik7CitzaG91bGRUaHJvdygiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJ
QU5HTEVTLCAwLCAxMDAwMCkiKTsKK3Nob3VsZFRocm93KCJjb250ZXh0LmRyYXdBcnJheXMoY29u
dGV4dC5UUklBTkdMRVMsIDAsIDEwMDAwMDAwMDAwMDAwKSIpOworc2hvdWxkVGhyb3coImNvbnRl
eHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgLTEpIik7CitzaG91bGRUaHJvdygi
Y29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAtMSwgMCkiKTsKK3Nob3VsZFRo
cm93KCJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDEsIC0xKSIpOworc2hv
dWxkVGhyb3coImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIDEpIik7
CisKK2RlYnVnKCIiKQorc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9k
cmF3RWxlbWVudHNzT3V0T2ZCb3VuZHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXdFbGVtZW50c3NPdXRPZkJvdW5kcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3
RWxlbWVudHNzT3V0T2ZCb3VuZHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDI2IEBACitUZXN0IG9mIGRyYXdFbGVtZW50cyB3aXRoIG91dC1vZi1ib3VuZHMgcGFyYW1ldGVy
cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1Rlc3QgZW1wdHkgaW5kZXggYnVmZmVy
CitQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAzLCBjb250ZXh0
LlVOU0lHTkVEX0JZVEUsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9F
UlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQu
VFJJQU5HTEVTLCAxMDAwMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBjb250
ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMTAwMDAwMDAwMDAwMDAsIGNvbnRl
eHQuVU5TSUdORURfQllURSwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRF
X0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4
dC5UUklBTkdMRVMsIDEsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1MgY29udGV4
dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDAsIGNvbnRleHQuVU5TSUdORURfQllU
RSwgLTEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNl
cHRpb24gMTEuCitQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAt
MSwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAxKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFM
SURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50
cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAtMSkgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KKwor
VGVzdCBidWZmZXIgd2l0aCAzIGJ5dGUgaW5kZXhlcworUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50
cyhjb250ZXh0LlRSSUFOR0xFUywgMywgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSBpcyB1bmRl
ZmluZWQKK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDMsIGNv
bnRleHQuVU5TSUdORURfQllURSwgMikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NU
QVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29u
dGV4dC5UUklBTkdMRVMsIDEwMDAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNT
IGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxMDAwMDAwMDAwMDAwMCwg
Y29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURf
U1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhj
b250ZXh0LlRSSUFOR0xFUywgMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAtMSkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1Mg
Y29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIC0xLCBjb250ZXh0LlVOU0lH
TkVEX0JZVEUsIDEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERP
TSBFeGNlcHRpb24gMTEuCitQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5H
TEVTLCAxLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIC0xKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvZHJhd0VsZW1lbnRzc091dE9mQm91bmRzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZHJhd0VsZW1lbnRzc091dE9mQm91bmRz
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3
RWxlbWVudHNzT3V0T2ZCb3VuZHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2Vi
Z2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3Jp
cHRpb24oIlRlc3Qgb2YgZHJhd0VsZW1lbnRzIHdpdGggb3V0LW9mLWJvdW5kcyBwYXJhbWV0ZXJz
Iik7CisKK3ZhciBjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KCk7Cit2YXIgcHJvZ3JhbSA9IGxv
YWRTdGFuZGFyZFByb2dyYW0oY29udGV4dCk7CisKK2NvbnRleHQudXNlUHJvZ3JhbShwcm9ncmFt
KTsKK3ZhciB2ZXJ0ZXhPYmplY3QgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcigpOworY29udGV4dC5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKK2NvbnRleHQuYmluZEJ1ZmZlcihjb250ZXh0LkFS
UkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKK2NvbnRleHQuYnVmZmVyRGF0YShjb250ZXh0LkFS
UkFZX0JVRkZFUiwgbmV3IFdlYkdMRmxvYXRBcnJheShbIDAsMC41LDAsIC0wLjUsLTAuNSwwLCAw
LjUsLTAuNSwwIF0pLCBjb250ZXh0LlNUQVRJQ19EUkFXKTsKK2NvbnRleHQudmVydGV4QXR0cmli
UG9pbnRlcigwLCAzLCBjb250ZXh0LkZMT0FULCBmYWxzZSwgMCwgMCk7CisKK3ZhciBpbmRleE9i
amVjdCA9IGNvbnRleHQuY3JlYXRlQnVmZmVyKCk7CisKK2RlYnVnKCJUZXN0IGVtcHR5IGluZGV4
IGJ1ZmZlciIpCitjb250ZXh0LmJpbmRCdWZmZXIoY29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZF
UiwgaW5kZXhPYmplY3QpOworY29udGV4dC5idWZmZXJEYXRhKGNvbnRleHQuRUxFTUVOVF9BUlJB
WV9CVUZGRVIsIG5ldyBXZWJHTFVuc2lnbmVkQnl0ZUFycmF5KFsgIF0pLCBjb250ZXh0LlNUQVRJ
Q19EUkFXKTsKK3Nob3VsZFRocm93KCJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFO
R0xFUywgMywgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRl
eHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxMDAwMCwgY29udGV4dC5VTlNJR05F
RF9CWVRFLCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQu
VFJJQU5HTEVTLCAxMDAwMDAwMDAwMDAwMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSIpOwor
c2hvdWxkVGhyb3coImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCBj
b250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIik7CitzaG91bGRUaHJvdygiY29udGV4dC5kcmF3RWxl
bWVudHMoY29udGV4dC5UUklBTkdMRVMsIDAsIGNvbnRleHQuVU5TSUdORURfQllURSwgLTEpIik7
CitzaG91bGRUaHJvdygiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIC0x
LCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDEpIik7CitzaG91bGRUaHJvdygiY29udGV4dC5kcmF3
RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEsIGNvbnRleHQuVU5TSUdORURfQllURSwgLTEp
Iik7CisKK2RlYnVnKCIiKQorZGVidWcoIlRlc3QgYnVmZmVyIHdpdGggMyBieXRlIGluZGV4ZXMi
KQorY29udGV4dC5iaW5kQnVmZmVyKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4
T2JqZWN0KTsKK2NvbnRleHQuYnVmZmVyRGF0YShjb250ZXh0LkVMRU1FTlRfQVJSQVlfQlVGRkVS
LCBuZXcgV2ViR0xVbnNpZ25lZEJ5dGVBcnJheShbIDAsIDEsIDIgXSksIGNvbnRleHQuU1RBVElD
X0RSQVcpOworc2hvdWxkQmUoImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVT
LCAzLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIiwgInVuZGVmaW5lZCIpOworc2hvdWxkVGhy
b3coImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAzLCBjb250ZXh0LlVO
U0lHTkVEX0JZVEUsIDIpIik7CitzaG91bGRUaHJvdygiY29udGV4dC5kcmF3RWxlbWVudHMoY29u
dGV4dC5UUklBTkdMRVMsIDEwMDAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIik7CitzaG91
bGRUaHJvdygiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwMDAw
MDAwMDAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIik7CitzaG91bGRUaHJvdygiY29udGV4
dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDAsIGNvbnRleHQuVU5TSUdORURfQllU
RSwgLTEpIik7CitzaG91bGRUaHJvdygiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklB
TkdMRVMsIC0xLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDEpIik7CitzaG91bGRUaHJvdygiY29u
dGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEsIGNvbnRleHQuVU5TSUdORURf
QllURSwgLTEpIik7CisKK2RlYnVnKCIiKQorc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="25458"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43736</attachid>
            <date>2009-11-23 14:44:37 -0800</date>
            <delta_ts>2009-11-23 15:40:41 -0800</delta_ts>
            <desc>Desperate attempt at acceptance patch</desc>
            <filename>31239.patch</filename>
            <type>text/plain</type>
            <size>63046</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTMxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzUgQEAKKzIwMDktMTEtMjMgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCByYW5nZSBjaGVja3MgdG8gcmVuZGVyaW5nIGNhbGxzIGluIFdlYkdMCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTIzOQorCisgICAgICAgIEkgYW0g
bm93IHRyYWNraW5nIHRoZSBzaXplIG9mIHRoZSBkYXRhIGluIGVhY2ggQ2FudmFzQnVmZmVyIG9i
amVjdAorICAgICAgICBhbmQga2VlcGluZyB0cmFjayBvZiB0aGUgYnVmZmVyIHNpemUgb2YgZWFj
aCBhY3RpdmUgdmVydGV4IGF0dHJpYi4KKyAgICAgICAgSW4gZHJhd0FycmF5cyBhbmQgZHJhd0Vs
ZW1lbnRzIEkgbWFrZSBzdXJlIG5vIGF0dGVtcHQgaXMgbWFkZSB0bworICAgICAgICBhY2Nlc3Mg
ZWxlbWVudHMgb3V0c2lkZSB0aGUgdmFsaWQgYnVmZmVyIHJhbmdlcy4gVGhlIHRlc3QgYXQ6CisK
KyAgICAgICAgICAgIGh0dHA6Ly9jcy5oZWxzaW5raS5maS91L2lsbWFyaWhlL2MzZC9mdW5jdGlv
bnMvZHJhd0FycmF5c091dE9mQm91bmRzLmh0bWwKKworICAgICAgICBubyBsb25nZXIgY3Jhc2hl
cy4KKworICAgICAgICBJIGFsc28gYWRkZWQgYWxsIHRoZSBXZWJHTCBlbnVtZXJhdGlvbnMgdG8g
R3JhcGhpY3NDb250ZXh0M0QgdG8gdXNlIHRoZW0gaW4gdGhlIHZhbGlkYXRpb24gY2hlY2tzCisK
KyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL3dlYmdsL2RyYXdBcnJheXNPdXRPZkJvdW5kcy5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2NhbnZhcy93ZWJnbC9kcmF3RWxlbWVudHNzT3V0T2ZC
b3VuZHMuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJHTEFycmF5Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTEFycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQXJyYXlCdWZm
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEFycmF5QnVmZmVyOjpkYXRhKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEFycmF5QnVmZmVyLmg6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6
OldlYkdMQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjphc3NvY2lhdGVC
dWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjphc3NvY2lhdGVCdWZm
ZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjpieXRlTGVuZ3RoKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xCdWZmZXI6OmVsZW1lbnRBcnJheUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dDo6c2l6ZUluQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUluZGV4QXJyYXkpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVJlbmRlcmluZ1N0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0FycmF5cyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRyYXdFbGVtZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6aXNG
cmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omlz
UHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmlzUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6aXNT
aGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppc1RleHR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1c2VQcm9ncmFt
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVQcm9n
cmFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0
cmliUG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRl
dGFjaEFuZFJlbW92ZUFsbE9iamVjdHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpWZXJ0ZXhBdHRyaWJTdGF0ZTo6VmVydGV4QXR0cmliU3RhdGUpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xTaGFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTaGFkZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFNoYWRlcjo6V2ViR0xTaGFkZXIpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjopOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVy
KToKKwogMjAwOS0xMS0yMyAgQWRhbSBMYW5nbGV5ICA8YWdsQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRG1pdHJ5IFRpdG92LgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYkdMQXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJHTEFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gNTEzMTApCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViR0xBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV2ViR0xBcnJheSog
b2JqZWN0KQogeworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICAgICAgCiAgICAgaWYgKG9iamVjdCkgewogICAgICAgICBpZiAob2JqZWN0LT5pc0Zs
b2F0QXJyYXkoKSkKICAgICAgICAgICAgIHJldHVybiBnZXRET01PYmplY3RXcmFwcGVyPEpTV2Vi
R0xGbG9hdEFycmF5PihleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PFdlYkdMRmxvYXRB
cnJheSo+KG9iamVjdCkpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDUxMzEwKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDE3ICs1MywxOSBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpidWZmZXJECiAKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBhcmdzLmF0KDApLnRvSW50MzIo
ZXhlYyk7CiAgICAgdW5zaWduZWQgdXNhZ2UgPSBhcmdzLmF0KDIpLnRvSW50MzIoZXhlYyk7Cisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAKICAgICAvLyBJZiBhcmd1bWVudCAxIGlzIGEgbnVt
YmVyLCB3ZSBhcmUgaW5pdGlhbGl6aW5nIHRoaXMgYnVmZmVyIHRvIHRoYXQgc2l6ZQogICAgIGlm
ICghYXJncy5hdCgxKS5pc09iamVjdCgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGludCBjb3VudCA9
IGFyZ3MuYXQoMSkudG9JbnQzMihleGVjKTsKLSAgICAgICAgc3RhdGljX2Nhc3Q8V2ViR0xSZW5k
ZXJpbmdDb250ZXh0Kj4oaW1wbCgpKS0+YnVmZmVyRGF0YSh0YXJnZXQsIGNvdW50LCB1c2FnZSk7
Ci0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICBzdGF0aWNfY2FzdDxXZWJH
TFJlbmRlcmluZ0NvbnRleHQqPihpbXBsKCkpLT5idWZmZXJEYXRhKHRhcmdldCwgY291bnQsIHVz
YWdlLCBlYyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgV2ViR0xBcnJheSogYXJyYXkgPSB0b1dl
YkdMQXJyYXkoYXJncy5hdCgxKSk7CisgICAgICAgIHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5n
Q29udGV4dCo+KGltcGwoKSktPmJ1ZmZlckRhdGEodGFyZ2V0LCBhcnJheSwgdXNhZ2UsIGVjKTsK
ICAgICB9CiAKLSAgICBXZWJHTEFycmF5KiBhcnJheSA9IHRvV2ViR0xBcnJheShhcmdzLmF0KDEp
KTsKLSAgICAKLSAgICBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihpbXBsKCkp
LT5idWZmZXJEYXRhKHRhcmdldCwgYXJyYXksIHVzYWdlKTsKKyAgICBpZiAoZWMgIT0gMCkKKyAg
ICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKIH0KIApAQCAtNzQsMTAgKzc2LDE0IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmJ1ZmZlclMKIAogICAgIHVuc2lnbmVkIHRhcmdldCA9IGFyZ3MuYXQoMCkudG9JbnQzMihl
eGVjKTsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSBhcmdzLmF0KDEpLnRvSW50MzIoZXhlYyk7Cisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgCiAgICAgV2ViR0xBcnJheSogYXJyYXkgPSB0
b1dlYkdMQXJyYXkoYXJncy5hdCgyKSk7CiAgICAgCi0gICAgc3RhdGljX2Nhc3Q8V2ViR0xSZW5k
ZXJpbmdDb250ZXh0Kj4oaW1wbCgpKS0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgYXJy
YXkpOworICAgIHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KGltcGwoKSktPmJ1
ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGFycmF5LCBlYyk7CisKKyAgICBpZiAoZWMgIT0g
MCkKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIH0KIApAQCAtMTkyLDEwICsxOTgsMTEgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dGV4U3ViSQogICAgIH0gZWxzZSBpZiAoby0+aW5oZXJpdHMoJkpTSFRNTENh
bnZhc0VsZW1lbnQ6OnNfaW5mbykpIHsKICAgICAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZh
cyA9IHN0YXRpY19jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4oc3RhdGljX2Nhc3Q8SlNIVE1MRWxl
bWVudCo+KG8pLT5pbXBsKCkpOwogICAgICAgICBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdl
dCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGNhbnZhcywgZmxpcFksIHByZW11
bHRpcGx5QWxwaGEsIGVjKTsKLSAgICB9IGVsc2UgewotICAgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwotICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgZWMg
PSBUWVBFX01JU01BVENIX0VSUjsKICAgICAKKyAgICBpZiAoZWMgIT0gMCkKKyAgICAgICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsgICAgCiB9
CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xBcnJheUJ1ZmZlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFycmF5QnVmZmVyLmNwcAkocmV2aXNp
b24gNTEzMTApCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQXJyYXlCdWZmZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpbmNsdWRlICJXZWJHTEFycmF5QnVm
ZmVyLmgiCiAKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUGFzc1JlZlB0cjxXZWJHTEFycmF5QnVmZmVyPiBXZWJHTEFycmF5QnVmZmVyOjpjcmVhdGUo
dW5zaWduZWQgc2l6ZUluQnl0ZXMpCkBAIC0zNiw2ICszOCwxMyBAQCBQYXNzUmVmUHRyPFdlYkdM
QXJyYXlCdWZmZXI+IFdlYkdMQXJyYXlCCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTEFy
cmF5QnVmZmVyKHNpemVJbkJ5dGVzKSk7CiB9CiAKK1Bhc3NSZWZQdHI8V2ViR0xBcnJheUJ1ZmZl
cj4gV2ViR0xBcnJheUJ1ZmZlcjo6Y3JlYXRlKFdlYkdMQXJyYXlCdWZmZXIqIG90aGVyKQorewor
ICAgIFJlZlB0cjxXZWJHTEFycmF5QnVmZmVyPiBidWZmZXIgPSBhZG9wdFJlZihuZXcgV2ViR0xB
cnJheUJ1ZmZlcihvdGhlci0+Ynl0ZUxlbmd0aCgpKSk7CisgICAgbWVtY3B5KGJ1ZmZlci0+ZGF0
YSgpLCBvdGhlci0+ZGF0YSgpLCBvdGhlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICByZXR1cm4gYnVm
ZmVyLnJlbGVhc2UoKTsKK30KKwogV2ViR0xBcnJheUJ1ZmZlcjo6V2ViR0xBcnJheUJ1ZmZlcih1
bnNpZ25lZCBzaXplSW5CeXRlcykgewogICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlczsK
ICAgICBtX2RhdGEgPSBXVEY6OmZhc3RaZXJvZWRNYWxsb2Moc2l6ZUluQnl0ZXMpOwpAQCAtNDUs
NiArNTQsMTAgQEAgdm9pZCogV2ViR0xBcnJheUJ1ZmZlcjo6ZGF0YSgpIHsKICAgICByZXR1cm4g
bV9kYXRhOwogfQogCitjb25zdCB2b2lkKiBXZWJHTEFycmF5QnVmZmVyOjpkYXRhKCkgY29uc3Qg
eworICAgIHJldHVybiBtX2RhdGE7Cit9CisKIHVuc2lnbmVkIFdlYkdMQXJyYXlCdWZmZXI6OmJ5
dGVMZW5ndGgoKSBjb25zdCB7CiAgICAgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7CiB9CkluZGV4OiBX
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQXJyYXlCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQXJyYXlCdWZmZXIuaAkocmV2aXNpb24gNTEzMTApCisrKyBX
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQXJyYXlCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzQsOCArMzQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV2ViR0xBcnJheUJ1ZmZl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdMQXJyYXlCdWZmZXI+IHsKICAgcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMQXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBzaXpl
SW5CeXRlcyk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xBcnJheUJ1ZmZlcj4gY3JlYXRl
KFdlYkdMQXJyYXlCdWZmZXIqKTsKIAogICAgIHZvaWQqIGRhdGEoKTsKKyAgICBjb25zdCB2b2lk
KiBkYXRhKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0OwogCiAgICAg
fldlYkdMQXJyYXlCdWZmZXIoKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZm
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3Bw
CShyZXZpc2lvbiA1MTMxMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw5IEBAIFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+
IFdlYkdMQnVmZmVyOjpjcmUKIAogV2ViR0xCdWZmZXI6OldlYkdMQnVmZmVyKFdlYkdMUmVuZGVy
aW5nQ29udGV4dCogY3R4KQogICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKKyAgICAsIG1fZWxlbWVu
dEFycmF5QnVmZmVyQnl0ZUxlbmd0aCgwKQorICAgICwgbV9hcnJheUJ1ZmZlckJ5dGVMZW5ndGgo
MCkKKyAgICAsIG1fZWxlbWVudEFycmF5QnVmZmVyQ2xvbmVkKGZhbHNlKQogewogICAgIHNldE9i
amVjdChjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZUJ1ZmZlcigpKTsKIH0K
QEAgLTQ4LDYgKzUxLDc2IEBAIHZvaWQgV2ViR0xCdWZmZXI6Ol9kZWxldGVPYmplY3QoUGxhdGZv
cm0KICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmRlbGV0ZUJ1ZmZlcihvYmpl
Y3QpOwogfQogCitib29sIFdlYkdMQnVmZmVyOjphc3NvY2lhdGVCdWZmZXJEYXRhKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCBpbnQgc2l6ZSkKK3sKKyAgICBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29u
dGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUikgeworICAgICAgICBtX2VsZW1lbnRBcnJheUJ1
ZmZlckJ5dGVMZW5ndGggPSBzaXplOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
CisgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSKSB7Cisg
ICAgICAgIG1fYXJyYXlCdWZmZXJCeXRlTGVuZ3RoID0gc2l6ZTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYkdMQnVmZmVyOjph
c3NvY2lhdGVCdWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBXZWJHTEFycmF5KiBhcnJh
eSkKK3sKKyAgICBpZiAoIWFycmF5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAor
ICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVS
KSB7CisgICAgICAgIG1fZWxlbWVudEFycmF5QnVmZmVyQnl0ZUxlbmd0aCA9IGFycmF5LT5ieXRl
TGVuZ3RoKCk7CisgICAgICAgIG1fZWxlbWVudEFycmF5QnVmZmVyID0gYXJyYXktPmJ1ZmZlcigp
OworICAgICAgICBtX2VsZW1lbnRBcnJheUJ1ZmZlckNsb25lZCA9IGZhbHNlOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6QVJSQVlfQlVGRkVSKSB7CisgICAgICAgIG1fYXJyYXlCdWZmZXJCeXRlTGVuZ3RoID0g
YXJyYXktPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBXZWJHTEJ1ZmZlcjo6YXNzb2NpYXRlQnVmZmVy
U3ViRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBvZmZzZXQsIFdlYkdMQXJyYXkqIGFy
cmF5KQoreworICAgIGlmICghYXJyYXkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
CisgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZG
RVIpIHsKKyAgICAgICAgLy8gV2UgbmVlZCB0byBwcm90ZWN0IGFnYWluc3QgaW50ZWdlciBvdmVy
ZmxvdyB3aXRoIHRoZXNlIHRlc3RzCisgICAgICAgIGlmIChvZmZzZXQgPCAwKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgCisgICAgICAgIHVuc2lnbmVkIGxvbmcgdW9m
ZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG9mZnNldCk7CisgICAgICAgIGlmICh1
b2Zmc2V0ID4gbV9lbGVtZW50QXJyYXlCdWZmZXJCeXRlTGVuZ3RoIHx8IGFycmF5LT5ieXRlTGVu
Z3RoKCkgPiBtX2VsZW1lbnRBcnJheUJ1ZmZlckJ5dGVMZW5ndGggLSB1b2Zmc2V0KQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgCisgICAgICAgIC8vIElmIHdlIGFscmVh
ZHkgaGF2ZSBhIGJ1ZmZlciwgd2UgbmVlZCB0byBjbG9uZSBpdCBhbmQgYWRkIHRoZSBuZXcgZGF0
YQorICAgICAgICBpZiAobV9lbGVtZW50QXJyYXlCdWZmZXIgJiYgIW1fZWxlbWVudEFycmF5QnVm
ZmVyQ2xvbmVkKSB7CisgICAgICAgICAgICBtX2VsZW1lbnRBcnJheUJ1ZmZlciA9IFdlYkdMQXJy
YXlCdWZmZXI6OmNyZWF0ZShtX2VsZW1lbnRBcnJheUJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAg
ICBtX2VsZW1lbnRBcnJheUJ1ZmZlckNsb25lZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG1fZWxlbWVu
dEFycmF5QnVmZmVyLT5kYXRhKCkpICsgb2Zmc2V0LCBhcnJheS0+YmFzZUFkZHJlc3MoKSwgYXJy
YXktPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAg
ICBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIpCisgICAgICAg
IHJldHVybiBhcnJheS0+Ynl0ZUxlbmd0aCgpICsgb2Zmc2V0IDw9IG1fYXJyYXlCdWZmZXJCeXRl
TGVuZ3RoOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit1bnNpZ25lZCBXZWJHTEJ1ZmZlcjo6
Ynl0ZUxlbmd0aCh1bnNpZ25lZCBsb25nIHRhcmdldCkgY29uc3QKK3sKKyAgICByZXR1cm4gKHRh
cmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSKSA/IG1fYXJyYXlCdWZmZXJC
eXRlTGVuZ3RoIDogbV9lbGVtZW50QXJyYXlCdWZmZXJCeXRlTGVuZ3RoOworfQorCiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoM0RfQ0FOVkFTKQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIu
aAkocmV2aXNpb24gNTEzMTApCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV2ViR0xCdWZmZXJfaAog
CiAjaW5jbHVkZSAiQ2FudmFzT2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViR0xBcnJheUJ1ZmZlci5o
IgogCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgpAQCAtMzksMTAgKzQwLDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBjcmVhdGUoV2ViR0xSZW5kZXJp
bmdDb250ZXh0Kik7CiAgICAgICAgIAorICAgICAgICBib29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEo
dW5zaWduZWQgbG9uZyB0YXJnZXQsIGludCBzaXplKTsKKyAgICAgICAgYm9vbCBhc3NvY2lhdGVC
dWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBXZWJHTEFycmF5KiBhcnJheSk7CisgICAg
ICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyU3ViRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9u
ZyBvZmZzZXQsIFdlYkdMQXJyYXkqIGFycmF5KTsKKyAgICAgICAgCisgICAgICAgIHVuc2lnbmVk
IGJ5dGVMZW5ndGgodW5zaWduZWQgbG9uZyB0YXJnZXQpIGNvbnN0OworICAgICAgICBjb25zdCBX
ZWJHTEFycmF5QnVmZmVyKiBlbGVtZW50QXJyYXlCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Vs
ZW1lbnRBcnJheUJ1ZmZlci5nZXQoKTsgfQorICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICBXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsK
ICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBfZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RP
YmplY3Qgbyk7CisgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgUmVmUHRyPFdlYkdMQXJyYXlC
dWZmZXI+IG1fZWxlbWVudEFycmF5QnVmZmVyOworICAgICAgICB1bnNpZ25lZCBtX2VsZW1lbnRB
cnJheUJ1ZmZlckJ5dGVMZW5ndGg7CisgICAgICAgIHVuc2lnbmVkIG1fYXJyYXlCdWZmZXJCeXRl
TGVuZ3RoOworICAgICAgICBib29sIG1fZWxlbWVudEFycmF5QnVmZmVyQ2xvbmVkOwogICAgIH07
CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA1MTMxMCkKKysrIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjAsNiArNjAsNyBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29u
CiAgICAgLCBtX21hcmtlZENhbnZhc0RpcnR5KGZhbHNlKQogewogICAgIEFTU0VSVChtX2NvbnRl
eHQpOworICAgIG1fbWF4VmVydGV4QXR0cmlicyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFw
aGljc0NvbnRleHQzRDo6TUFYX1ZFUlRFWF9BVFRSSUJTKTsKICAgICBtX2NvbnRleHQtPnJlc2hh
cGUoY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSk7CiB9CiAKQEAgLTExNyw5
ICsxMTgsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVzaGFwZShpbnQgCiBpbnQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzaXplSW5CeXRlcyhpbnQgdHlwZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgaW50IHJlc3VsdCA9IG1fY29udGV4dC0+c2l6ZUluQnl0ZXModHlwZSk7
Ci0gICAgaWYgKHJlc3VsdCA8PSAwKSB7CisgICAgaWYgKHJlc3VsdCA8PSAwKQogICAgICAgICBl
YyA9IFNZTlRBWF9FUlI7Ci0gICAgfQorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTU1
LDYgKzE1NiwxNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlcih1CiAg
ICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CisK
KyAgICBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIpCisgICAg
ICAgIG1fYm91bmRBcnJheUJ1ZmZlciA9IGJ1ZmZlcjsKKyAgICBlbHNlIGlmICh0YXJnZXQgPT0g
R3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSKQorICAgICAgICBtX2JvdW5k
RWxlbWVudEFycmF5QnVmZmVyID0gYnVmZmVyOworICAgIGVsc2UgeworICAgICAgICBlYyA9IFNZ
TlRBWF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBtX2NvbnRleHQtPmJpbmRC
dWZmZXIodGFyZ2V0LCBidWZmZXIpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxz
ZSk7CiB9CkBAIC0yMjIsMjAgKzIzMyw2NSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
YmxlbmRGdW5jU2VwCiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAot
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIGludCBzaXplLCB1bnNpZ25lZCBsb25nIHVzYWdlKQordm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGludCBzaXplLCB1bnNpZ25l
ZCBsb25nIHVzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAodGFyZ2V0ID09IEdy
YXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUiAmJiBtX2JvdW5kRWxlbWVudEFy
cmF5QnVmZmVyKSB7CisgICAgICAgIGlmICghbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlci0+YXNz
b2NpYXRlQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUpKSB7CisgICAgICAgICAgICBlYyA9IFNZTlRB
WF9FUlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHRh
cmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSICYmIG1fYm91bmRBcnJheUJ1
ZmZlcikgeworICAgICAgICBpZiAoIW1fYm91bmRBcnJheUJ1ZmZlci0+YXNzb2NpYXRlQnVmZmVy
RGF0YSh0YXJnZXQsIHNpemUpKSB7CisgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBlYyA9IFNZ
TlRBWF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBtX2NvbnRleHQtPmJ1ZmZl
ckRhdGEodGFyZ2V0LCBzaXplLCB1c2FnZSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckRhdGEodW5z
aWduZWQgbG9uZyB0YXJnZXQsIFdlYkdMQXJyYXkqIGRhdGEsIHVuc2lnbmVkIGxvbmcgdXNhZ2Up
Cit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRh
cmdldCwgV2ViR0xBcnJheSogZGF0YSwgdW5zaWduZWQgbG9uZyB1c2FnZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CisgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9B
UlJBWV9CVUZGRVIgJiYgbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlcikgeworICAgICAgICBpZiAo
IW1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXItPmFzc29jaWF0ZUJ1ZmZlckRhdGEodGFyZ2V0LCBk
YXRhKSkgeworICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgfSBlbHNlIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6
OkFSUkFZX0JVRkZFUiAmJiBtX2JvdW5kQXJyYXlCdWZmZXIpIHsKKyAgICAgICAgaWYgKCFtX2Jv
dW5kQXJyYXlCdWZmZXItPmFzc29jaWF0ZUJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhKSkgeworICAg
ICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgZGF0YSwgdXNhZ2Up
OwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKLXZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpidWZmZXJTdWJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25n
IG9mZnNldCwgV2ViR0xBcnJheSogZGF0YSkKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpi
dWZmZXJTdWJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIG9mZnNldCwgV2ViR0xBcnJh
eSogZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKHRhcmdldCA9PSBHcmFwaGlj
c0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIgJiYgbV9ib3VuZEVsZW1lbnRBcnJheUJ1
ZmZlcikgeworICAgICAgICBpZiAoIW1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXItPmFzc29jaWF0
ZUJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEpKSB7CisgICAgICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
aWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSICYmIG1fYm91bmRB
cnJheUJ1ZmZlcikgeworICAgICAgICBpZiAoIW1fYm91bmRBcnJheUJ1ZmZlci0+YXNzb2NpYXRl
QnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgZGF0YSkpIHsKKyAgICAgICAgICAgIGVjID0g
U1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7
CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IG1fY29udGV4dC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgZGF0YSk7CiAgICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KQEAgLTM0MywxMyArMzk5LDggQEAgUGFz
c1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gV2ViR0xSZW5kZQogCiBQYXNzUmVmUHRyPFdlYkdM
U2hhZGVyPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVNoYWRlcih1bnNpZ25lZCBsb25n
IHR5cGUpCiB7Ci0gICAgLy8gRklYTUU6IE5lZWQgdG8gaW5jbHVkZSBHTF8gY29uc3RhbnRzIGZv
ciBpbnRlcm5hbCB1c2UKICAgICAvLyBGSVhNRTogTmVlZCB0byBkbyBwYXJhbSBjaGVja2luZyBh
bmQgdGhyb3cgZXhjZXB0aW9uIGlmIGFuIGlsbGVnYWwgdmFsdWUgaXMgcGFzc2VkIGluCi0gICAg
R3JhcGhpY3NDb250ZXh0M0Q6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA9IEdyYXBoaWNzQ29udGV4
dDNEOjpWRVJURVhfU0hBREVSOwotICAgIGlmICh0eXBlID09IDB4OEIzMCkgLy8gR0xfRlJBR01F
TlRfU0hBREVSCi0gICAgICAgIHNoYWRlclR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBR01F
TlRfU0hBREVSOwotICAgICAgICAKLSAgICBSZWZQdHI8V2ViR0xTaGFkZXI+IG8gPSBXZWJHTFNo
YWRlcjo6Y3JlYXRlKHRoaXMsIHNoYWRlclR5cGUpOworICAgIFJlZlB0cjxXZWJHTFNoYWRlcj4g
byA9IFdlYkdMU2hhZGVyOjpjcmVhdGUodGhpcywgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0
M0Q6OldlYkdMRW51bVR5cGU+KHR5cGUpKTsKICAgICBhZGRPYmplY3Qoby5nZXQoKSk7CiAgICAg
cmV0dXJuIG87CiB9CkBAIC00NDMsMjEgKzQ5NCwxMDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmRpc2FibGUodW5zaQogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkaXNhYmxlVmVydGV4QXR0cmliQXJy
YXkodW5zaWduZWQgbG9uZyBpbmRleCkKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgbG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CisgICAgaWYgKGluZGV4ID49IG1fbWF4VmVydGV4QXR0cmlicykgeworICAgICAgICBl
YyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IGlmIChpbmRleCA8IG1fdmVydGV4QXR0cmliU3RhdGUuc2l6ZSgpKQorICAgICAgICBtX3ZlcnRl
eEF0dHJpYlN0YXRlW2luZGV4XS5lbmFibGVkID0gZmFsc2U7CisgICAgCiAgICAgbV9jb250ZXh0
LT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOwogICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7CiB9CiAKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0
ZUluZGV4QXJyYXkodW5zaWduZWQgbG9uZyBjb3VudCwgdW5zaWduZWQgbG9uZyB0eXBlLCBsb25n
IG9mZnNldCwgbG9uZyYgbnVtRWxlbWVudHMpCit7CisgICAgbG9uZyBsYXN0SW5kZXggPSAtMTsK
KyAgICBpZiAoIW1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgCisgICAgaWYgKG9mZnNldCA8IDApCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgCisgICAgLy8gVGhlIEdMIHNwZWMgc2F5cyB0aGF0IGNvdW50IG11c3QgYmUgImdy
ZWF0ZXIKKyAgICAKKyAgICB1bnNpZ25lZCBsb25nIHVvZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nPihvZmZzZXQpOworICAgIAorICAgIGlmICh0eXBlID09IEdyYXBoaWNzQ29udGV4
dDNEOjpVTlNJR05FRF9TSE9SVCkgeworICAgICAgICAvLyBGb3IgYW4gdW5zaWduZWQgc2hvcnQg
YXJyYXksIG9mZnNldCBtdXN0IGJlIGRpdmlzaWJsZSBieSAyIGZvciBhbGlnbm1lbnQgcmVhc29u
cworICAgICAgICBpZiAodW9mZnNldCAmIDEgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgCisgICAgICAgIC8vIE1ha2UgdW9mZnNldCBhbiBlbGVtZW50IG9mZnNldAor
ICAgICAgICB1b2Zmc2V0IC89IDI7CisgICAgCisgICAgICAgIHVuc2lnbmVkIGxvbmcgbiA9IG1f
Ym91bmRFbGVtZW50QXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoR3JhcGhpY3NDb250ZXh0M0Q6OkVM
RU1FTlRfQVJSQVlfQlVGRkVSKSAvIDI7CisgICAgICAgIGlmICh1b2Zmc2V0ID4gbiB8fCBjb3Vu
dCA+IG4gLSB1b2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBwID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5z
aWduZWQgc2hvcnQqPihtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJyYXlCdWZm
ZXIoKS0+ZGF0YSgpKTsKKyAgICAgICAgd2hpbGUgKG4tLSA+IDApIHsKKyAgICAgICAgICAgIGlm
ICgqcCA+IGxhc3RJbmRleCkKKyAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSAqcDsKKyAgICAg
ICAgICAgICsrcDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmICh0eXBlID09IEdyYXBo
aWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFKSB7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbiA9
IG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoR3JhcGhpY3NDb250ZXh0M0Q6
OkVMRU1FTlRfQVJSQVlfQlVGRkVSKTsKKyAgICAgICAgaWYgKHVvZmZzZXQgPiBuIHx8IGNvdW50
ID4gbiAtIHVvZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAK
KyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogcCA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJyYXlCdWZmZXIo
KS0+ZGF0YSgpKTsKKyAgICAgICAgd2hpbGUgKG4tLSA+IDApIHsKKyAgICAgICAgICAgIGlmICgq
cCA+IGxhc3RJbmRleCkKKyAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSAqcDsKKyAgICAgICAg
ICAgICsrcDsKKyAgICAgICAgfQorICAgIH0gICAgCisgICAgICAgIAorICAgIC8vIFRoZW4gc2V0
IHRoZSBsYXN0IGluZGV4IGluIHRoZSBpbmRleCBhcnJheSBhbmQgbWFrZSBzdXJlIGl0IGlzIHZh
bGlkCisgICAgbnVtRWxlbWVudHMgPSBsYXN0SW5kZXggKyAxOworICAgIHJldHVybiBudW1FbGVt
ZW50cyA+IDA7Cit9CisKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVJlbmRl
cmluZ1N0YXRlKGxvbmcgbnVtRWxlbWVudHMpCit7CisgICAgLy8gTG9vayBpbiBlYWNoIGVuYWJs
ZWQgdmVydGV4IGF0dHJpYiBhbmQgZmluZCB0aGUgc21hbGxlc3QgYnVmZmVyIHNpemUKKyAgICBs
b25nIHNtYWxsZXN0TnVtRWxlbWVudHMgPSBMT05HX01BWDsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5zaXplKCk7ICsraSkgeworICAgICAgICBjb25z
dCBWZXJ0ZXhBdHRyaWJTdGF0ZSYgc3RhdGUgPSBtX3ZlcnRleEF0dHJpYlN0YXRlW2ldOworICAg
ICAgICBpZiAoc3RhdGUuZW5hYmxlZCAmJiBzdGF0ZS5udW1FbGVtZW50cyA8IHNtYWxsZXN0TnVt
RWxlbWVudHMpCisgICAgICAgICAgICBzbWFsbGVzdE51bUVsZW1lbnRzID0gc3RhdGUubnVtRWxl
bWVudHM7CisgICAgfQorICAgIAorICAgIGlmIChzbWFsbGVzdE51bUVsZW1lbnRzID09IExPTkdf
TUFYKQorICAgICAgICBzbWFsbGVzdE51bUVsZW1lbnRzID0gMDsKKyAgICAKKyAgICByZXR1cm4g
bnVtRWxlbWVudHMgPD0gc21hbGxlc3ROdW1FbGVtZW50czsKK30KIAotdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmRyYXdBcnJheXModW5zaWduZWQgbG9uZyBtb2RlLCBsb25nIGZpcnN0LCBs
b25nIGNvdW50KQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRyYXdBcnJheXModW5zaWdu
ZWQgbG9uZyBtb2RlLCBsb25nIGZpcnN0LCBsb25nIGNvdW50LCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKKyAgICAvLyBFbnN1cmUgd2UgaGF2ZSBhIHZhbGlkIHJlbmRlcmluZyBzdGF0ZQorICAgIGlm
IChmaXJzdCA8IDAgfHwgY291bnQgPCAwIHx8ICF2YWxpZGF0ZVJlbmRlcmluZ1N0YXRlKGZpcnN0
ICsgY291bnQpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgCiAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzKG1vZGUsIGZpcnN0
LCBjb3VudCk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKHRydWUpOwogfQogCi12b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0VsZW1lbnRzKHVuc2lnbmVkIGxvbmcgbW9kZSwg
dW5zaWduZWQgbG9uZyBjb3VudCwgdW5zaWduZWQgbG9uZyB0eXBlLCBsb25nIG9mZnNldCkKK3Zv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkcmF3RWxlbWVudHModW5zaWduZWQgbG9uZyBtb2Rl
LCB1bnNpZ25lZCBsb25nIGNvdW50LCB1bnNpZ25lZCBsb25nIHR5cGUsIGxvbmcgb2Zmc2V0LCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICAvLyBFbnN1cmUgd2UgaGF2ZSBhIHZhbGlkIHJlbmRl
cmluZyBzdGF0ZQorICAgIGxvbmcgbnVtRWxlbWVudHM7CisgICAgCisgICAgaWYgKG9mZnNldCA8
IDAgfHwgIXZhbGlkYXRlSW5kZXhBcnJheShjb3VudCwgdHlwZSwgb2Zmc2V0LCBudW1FbGVtZW50
cykgfHwgIXZhbGlkYXRlUmVuZGVyaW5nU3RhdGUobnVtRWxlbWVudHMpKSB7CisgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCiAgICAg
bV9jb250ZXh0LT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCk7CiAgICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKHRydWUpOwogfQpAQCAtNDY4LDggKzYwNiwxOCBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5hYmxlKHVuc2lnCiAgICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGxvbmcgaW5kZXgpCit2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgbG9uZyBpbmRl
eCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKGluZGV4ID49IG1fbWF4VmVydGV4QXR0
cmlicykgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIGlmIChpbmRleCA+PSBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUo
KSkKKyAgICAgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5yZXNpemUoaW5kZXggKyAxKTsKKyAgICAg
ICAgCisgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0uZW5hYmxlZCA9IHRydWU7CisgICAg
CiAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CiAgICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KQEAgLTg1MywyNiArMTAwMSw0MSBAQCBi
b29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aXNFbmFibGVkKHVuCiAKIGJvb2wgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojppc0ZyYW1lYnVmZmVyKFdlYkdMRnJhbWVidWZmZXIqIGZyYW1lYnVmZmVy
KQogeworICAgIGlmICghZnJhbWVidWZmZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAg
IHJldHVybiBtX2NvbnRleHQtPmlzRnJhbWVidWZmZXIoZnJhbWVidWZmZXIpOwogfQogCiBib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aXNQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkK
IHsKKyAgICBpZiAoIXByb2dyYW0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVy
biBtX2NvbnRleHQtPmlzUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogYm9vbCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmlzUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyYnVmZmVyKiByZW5kZXJidWZmZXIp
CiB7CisgICAgaWYgKCFyZW5kZXJidWZmZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAg
IHJldHVybiBtX2NvbnRleHQtPmlzUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CiB9CiAKIGJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppc1NoYWRlcihXZWJHTFNoYWRlciogc2hhZGVyKQog
eworICAgIGlmICghc2hhZGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4g
bV9jb250ZXh0LT5pc1NoYWRlcihzaGFkZXIpOwogfQogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6aXNUZXh0dXJlKFdlYkdMVGV4dHVyZSogdGV4dHVyZSkKIHsKKyAgICBpZiAoIXRleHR1
cmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiBtX2NvbnRleHQtPmlzVGV4
dHVyZSh0ZXh0dXJlKTsKIH0KIApAQCAtMTQxNSwxNCArMTU3OCwyNCBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpCiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVzZVByb2dyYW0oV2Vi
R0xQcm9ncmFtKiBwcm9ncmFtKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVzZVByb2dy
YW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAo
IXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKKyAgICAgICAgZWMgPSBU
WVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCiAgICAg
bV9jb250ZXh0LT51c2VQcm9ncmFtKHByb2dyYW0pOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNz
Q2FsbChmYWxzZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVBy
b2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnZhbGlkYXRlUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0sIEV4Y2VwdGlvbkNvZGUmIGVj
KQogeworICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgewor
ICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgICAgICAKICAgICBtX2NvbnRleHQtPnZhbGlkYXRlUHJvZ3JhbShwcm9ncmFtKTsKICAgICBj
bGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQpAQCAtMTUxNSw4ICsxNjg4LDMzIEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIKICAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dmVydGV4QXR0cmliUG9pbnRlcih1bnNpZ25lZCBsb25nIGluZHgsIGxvbmcgc2l6ZSwgdW5zaWdu
ZWQgbG9uZyB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIHVuc2lnbmVkIGxvbmcgc3RyaWRlLCB1bnNp
Z25lZCBsb25nIG9mZnNldCkKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRy
aWJQb2ludGVyKHVuc2lnbmVkIGxvbmcgaW5keCwgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIHR5
cGUsIGJvb2wgbm9ybWFsaXplZCwgdW5zaWduZWQgbG9uZyBzdHJpZGUsIHVuc2lnbmVkIGxvbmcg
b2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAoIW1fYm91bmRBcnJheUJ1ZmZl
ciB8fCBpbmR4ID49IG1fbWF4VmVydGV4QXR0cmlicykgeworICAgICAgICBlYyA9IElOVkFMSURf
U1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChpbmR4ID49
IG1fdmVydGV4QXR0cmliU3RhdGUuc2l6ZSgpKQorICAgICAgICBtX3ZlcnRleEF0dHJpYlN0YXRl
LnJlc2l6ZShpbmR4ICsgMSk7CisKKyAgICAvLyBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBlbGVt
ZW50cyB0aGUgYm91bmQgYnVmZmVyIGNhbiBob2xkLCBnaXZlbiB0aGUgb2Zmc2V0LCBzaXplLCB0
eXBlIGFuZCBzdHJpZGUKKyAgICBlYyA9IDA7CisgICAgbG9uZyBieXRlc1BlckVsZW1lbnQgPSBz
aXplICogc2l6ZUluQnl0ZXModHlwZSwgZWMpOworICAgIGlmIChlYyAhPSAwKQorICAgICAgICBy
ZXR1cm47CisgICAgICAgIAorICAgIGlmIChzdHJpZGUgIT0gMCkgeworICAgICAgICBpZiAoKGxv
bmcpIHN0cmlkZSA8IGJ5dGVzUGVyRWxlbWVudCkgeworICAgICAgICAgICAgZWMgPSBTWU5UQVhf
RVJSOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBi
eXRlc1BlckVsZW1lbnQgPSBzdHJpZGU7CisgICAgfQorICAgICAgICAKKyAgICBtX3ZlcnRleEF0
dHJpYlN0YXRlW2luZHhdLm51bUVsZW1lbnRzID0gKG1fYm91bmRBcnJheUJ1ZmZlci0+Ynl0ZUxl
bmd0aChHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSKSAtIG9mZnNldCkgLyBieXRlc1Bl
ckVsZW1lbnQ7CisKICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoaW5keCwgc2l6
ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCBvZmZzZXQpOwogICAgIGNsZWFudXBBZnRlckdy
YXBoaWNzQ2FsbChmYWxzZSk7CiB9CkBAIC0xNTQ4LDggKzE3NDYsOCBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6YWRkT2JqZWN0KENhCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKCkKIHsKLSAgICBIYXNoU2V0PENhbnZhc09iamVj
dCo+OjppdGVyYXRvciBwZW5kID0gbV9jYW52YXNPYmplY3RzLmVuZCgpOwotICAgIGZvciAoSGFz
aFNldDxDYW52YXNPYmplY3QqPjo6aXRlcmF0b3IgaXQgPSBtX2NhbnZhc09iamVjdHMuYmVnaW4o
KTsgaXQgIT0gcGVuZDsgKytpdCkKKyAgICBIYXNoU2V0PFJlZlB0cjxDYW52YXNPYmplY3Q+ID46
Oml0ZXJhdG9yIHBlbmQgPSBtX2NhbnZhc09iamVjdHMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0
PFJlZlB0cjxDYW52YXNPYmplY3Q+ID46Oml0ZXJhdG9yIGl0ID0gbV9jYW52YXNPYmplY3RzLmJl
Z2luKCk7IGl0ICE9IHBlbmQ7ICsraXQpCiAgICAgICAgICgqaXQpLT5kZXRhY2hDb250ZXh0KCk7
CiAgICAgICAgIAogICAgIG1fY2FudmFzT2JqZWN0cy5jbGVhcigpOwpJbmRleDogV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiA1MTMxMCkKKysr
IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTczLDkgKzczLDkgQEAgY2xhc3MgV2ViS2l0Q1NTTWF0cml4OwogICAgICAgICB2b2lk
IGJsZW5kRnVuYyh1bnNpZ25lZCBsb25nIHNmYWN0b3IsIHVuc2lnbmVkIGxvbmcgZGZhY3Rvcik7
CiAgICAgICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUodW5zaWduZWQgbG9uZyBzcmNSR0IsIHVu
c2lnbmVkIGxvbmcgZHN0UkdCLCB1bnNpZ25lZCBsb25nIHNyY0FscGhhLCB1bnNpZ25lZCBsb25n
IGRzdEFscGhhKTsKIAotICAgICAgICB2b2lkIGJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIGludCBzaXplLCB1bnNpZ25lZCBsb25nIHVzYWdlKTsKLSAgICAgICAgdm9pZCBidWZmZXJE
YXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBXZWJHTEFycmF5KiBkYXRhLCB1bnNpZ25lZCBsb25n
IHVzYWdlKTsKLSAgICAgICAgdm9pZCBidWZmZXJTdWJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCBsb25nIG9mZnNldCwgV2ViR0xBcnJheSogZGF0YSk7CisgICAgICAgIHZvaWQgYnVmZmVyRGF0
YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgaW50IHNpemUsIHVuc2lnbmVkIGxvbmcgdXNhZ2UsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCBXZWJHTEFycmF5KiBkYXRhLCB1bnNpZ25lZCBsb25nIHVzYWdlLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgICAgIHZvaWQgYnVmZmVyU3ViRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9u
ZyBvZmZzZXQsIFdlYkdMQXJyYXkqIGRhdGEsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICB1
bnNpZ25lZCBsb25nIGNoZWNrRnJhbWVidWZmZXJTdGF0dXModW5zaWduZWQgbG9uZyB0YXJnZXQp
OwogICAgICAgICB2b2lkIGNsZWFyKHVuc2lnbmVkIGxvbmcgbWFzayk7CkBAIC0xMTAsMTQgKzEx
MCwxNCBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAgICAgICAgIHZvaWQgZGVwdGhGdW5jKHVu
c2lnbmVkIGxvbmcpOwogICAgICAgICB2b2lkIGRlcHRoTWFzayhib29sKTsKICAgICAgICAgdm9p
ZCBkZXB0aFJhbmdlKGRvdWJsZSB6TmVhciwgZG91YmxlIHpGYXIpOwotICAgICAgICB2b2lkIGRl
dGFjaFNoYWRlcihXZWJHTFByb2dyYW0qLCBXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmIGVj
KTsKKyAgICAgICAgdm9pZCBkZXRhY2hTaGFkZXIoV2ViR0xQcm9ncmFtKiwgV2ViR0xTaGFkZXIq
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgZGlzYWJsZSh1bnNpZ25lZCBsb25nIGNh
cCk7Ci0gICAgICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGxvbmcg
aW5kZXgpOwotICAgICAgICB2b2lkIGRyYXdBcnJheXModW5zaWduZWQgbG9uZyBtb2RlLCBsb25n
IGZpcnN0LCBsb25nIGNvdW50KTsKLSAgICAgICAgdm9pZCBkcmF3RWxlbWVudHModW5zaWduZWQg
bG9uZyBtb2RlLCB1bnNpZ25lZCBsb25nIGNvdW50LCB1bnNpZ25lZCBsb25nIHR5cGUsIGxvbmcg
b2Zmc2V0KTsKKyAgICAgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQg
bG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIGRyYXdBcnJheXModW5z
aWduZWQgbG9uZyBtb2RlLCBsb25nIGZpcnN0LCBsb25nIGNvdW50LCBFeGNlcHRpb25Db2RlJik7
CisgICAgICAgIHZvaWQgZHJhd0VsZW1lbnRzKHVuc2lnbmVkIGxvbmcgbW9kZSwgdW5zaWduZWQg
bG9uZyBjb3VudCwgdW5zaWduZWQgbG9uZyB0eXBlLCBsb25nIG9mZnNldCwgRXhjZXB0aW9uQ29k
ZSYpOwogCiAgICAgICAgIHZvaWQgZW5hYmxlKHVuc2lnbmVkIGxvbmcgY2FwKTsKLSAgICAgICAg
dm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICAg
ICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25lZCBsb25nIGluZGV4LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgZmluaXNoKCk7CiAgICAgICAgIHZvaWQgZmx1c2go
KTsKICAgICAgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRh
cmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHJlbmRlcmJ1ZmZl
cnRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqLCBFeGNlcHRpb25Db2RlJiBlYyk7CkBAIC0xNTYs
NyArMTU2LDcgQEAgY2xhc3MgV2ViS2l0Q1NTTWF0cml4OwogICAgICAgICAvLyBUQkQKICAgICAg
ICAgLy8gdm9pZCBnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdCAoR0xlbnVtIHNoYWRlcnR5cGUs
IEdMZW51bSBwcmVjaXNpb250eXBlLCBHTGludCogcmFuZ2UsIEdMaW50KiBwcmVjaXNpb24pOwog
Ci0gICAgICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqLCBFeGNlcHRpb25D
b2RlJiBlYyk7CisgICAgICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgICAgIFN0cmluZyBnZXRTdHJpbmcodW5zaWduZWQgbG9uZyBu
YW1lKTsKIAogICAgICAgICBmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKQEAgLTE2NCwxMiArMTY0LDEyIEBAIGNsYXNzIFdl
YktpdENTU01hdHJpeDsKICAgICAgICAgaW50IGdldFRleFBhcmFtZXRlcmkodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwogICAgICAgICBQYXNzUmVmUHRyPFdlYkdM
SW50QXJyYXk+IGdldFRleFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIHBuYW1lKTsKIAotICAgICAgICBmbG9hdCBnZXRVbmlmb3JtZihXZWJHTFByb2dyYW0q
IHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKTsKLSAgICAgICAgUGFz
c1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0qIHByb2dy
YW0sIGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICAgICAgZmxvYXQgZ2V0
VW5pZm9ybWYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBFeGNlcHRpb25D
b2RlJik7CisgICAgICAgIFBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBnZXRVbmlmb3JtZnYo
V2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgICAgIGxvbmcgZ2V0VW5pZm9ybWkoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0
aW9uLCBFeGNlcHRpb25Db2RlJiBlYyk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJh
eT4gZ2V0VW5pZm9ybWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpOworICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldFVu
aWZvcm1pdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNv
ZGUmKTsKIAotICAgICAgICBsb25nIGdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qLCBj
b25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICAgICAgbG9uZyBnZXRV
bmlmb3JtTG9jYXRpb24oV2ViR0xQcm9ncmFtKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRp
b25Db2RlJik7CiAKICAgICAgICAgZmxvYXQgZ2V0VmVydGV4QXR0cmliZih1bnNpZ25lZCBsb25n
IGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKICAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEZs
b2F0QXJyYXk+IGdldFZlcnRleEF0dHJpYmZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVk
IGxvbmcgcG5hbWUpOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIGNsYXNzIFdlYktpdENTU01hdHJpeDsK
ICAgICAgICAgYm9vbCBpc1NoYWRlcihXZWJHTFNoYWRlciopOwogICAgICAgICBib29sIGlzVGV4
dHVyZShXZWJHTFRleHR1cmUqKTsKICAgICAgICAgdm9pZCBsaW5lV2lkdGgoZG91YmxlKTsKLSAg
ICAgICAgdm9pZCBsaW5rUHJvZ3JhbShXZWJHTFByb2dyYW0qLCBFeGNlcHRpb25Db2RlJiBlYyk7
CisgICAgICAgIHZvaWQgbGlua1Byb2dyYW0oV2ViR0xQcm9ncmFtKiwgRXhjZXB0aW9uQ29kZSYp
OwogICAgICAgICB2b2lkIHBpeGVsU3RvcmVpKHVuc2lnbmVkIGxvbmcgcG5hbWUsIGxvbmcgcGFy
YW0pOwogICAgICAgICB2b2lkIHBvbHlnb25PZmZzZXQoZG91YmxlIGZhY3RvciwgZG91YmxlIHVu
aXRzKTsKICAgICAgICAgCkBAIC0xOTcsNyArMTk3LDcgQEAgY2xhc3MgV2ViS2l0Q1NTTWF0cml4
OwogICAgICAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UodW5zaWduZWQgbG9uZyB0YXJnZXQs
IHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2ln
bmVkIGxvbmcgaGVpZ2h0KTsKICAgICAgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShkb3VibGUgdmFs
dWUsIGJvb2wgaW52ZXJ0KTsKICAgICAgICAgdm9pZCBzY2lzc29yKGxvbmcgeCwgbG9uZyB5LCB1
bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7Ci0gICAgICAgIHZvaWQg
c2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYg
ZWMpOworICAgICAgICB2b2lkIHNoYWRlclNvdXJjZShXZWJHTFNoYWRlciosIGNvbnN0IFN0cmlu
ZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBzdGVuY2lsRnVuYyh1bnNpZ25lZCBs
b25nIGZ1bmMsIGxvbmcgcmVmLCB1bnNpZ25lZCBsb25nIG1hc2spOwogICAgICAgICB2b2lkIHN0
ZW5jaWxGdW5jU2VwYXJhdGUodW5zaWduZWQgbG9uZyBmYWNlLCB1bnNpZ25lZCBsb25nIGZ1bmMs
IGxvbmcgcmVmLCB1bnNpZ25lZCBsb25nIG1hc2spOwogICAgICAgICB2b2lkIHN0ZW5jaWxNYXNr
KHVuc2lnbmVkIGxvbmcpOwpAQCAtMjY4LDggKzI2OCw4IEBAIGNsYXNzIFdlYktpdENTU01hdHJp
eDsKICAgICAgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJh
bnNwb3NlLCBXZWJHTEZsb2F0QXJyYXkqIHZhbHVlKTsKICAgICAgICAgdm9pZCB1bmlmb3JtTWF0
cml4NGZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogdmFsdWUsIGludCBz
aXplKTsKIAotICAgICAgICB2b2lkIHVzZVByb2dyYW0oV2ViR0xQcm9ncmFtKik7Ci0gICAgICAg
IHZvaWQgdmFsaWRhdGVQcm9ncmFtKFdlYkdMUHJvZ3JhbSopOworICAgICAgICB2b2lkIHVzZVBy
b2dyYW0oV2ViR0xQcm9ncmFtKiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHZhbGlk
YXRlUHJvZ3JhbShXZWJHTFByb2dyYW0qLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWIxZih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHgpOwogICAgICAgICB2
b2lkIHZlcnRleEF0dHJpYjFmdih1bnNpZ25lZCBsb25nIGluZHgsIFdlYkdMRmxvYXRBcnJheSog
dmFsdWVzKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAgICAg
ICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgV2ViR0xGbG9hdEFy
cmF5KiB2YWx1ZXMpOwogICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjRmdih1bnNpZ25lZCBsb25n
IGluZHgsIGZsb2F0KiB2YWx1ZXMsIGludCBzaXplKTsKICAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJQb2ludGVyKHVuc2lnbmVkIGxvbmcgaW5keCwgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIHR5
cGUsIGJvb2wgbm9ybWFsaXplZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgc3RyaWRlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0cmlkZSwgdW5zaWduZWQgbG9uZyBv
ZmZzZXQsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICB2b2lkIHZpZXdwb3J0KGxvbmcgeCwg
bG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7CiAKQEAg
LTMxNCwxMiArMzE0LDMwIEBAIGNsYXNzIFdlYktpdENTU01hdHJpeDsKICAgICAgICAgICAgICAg
ICBtYXJrQ29udGV4dENoYW5nZWQoKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgYm9v
bCB2YWxpZGF0ZUluZGV4QXJyYXkodW5zaWduZWQgbG9uZyBjb3VudCwgdW5zaWduZWQgbG9uZyB0
eXBlLCBsb25nIG9mZnNldCwgbG9uZyYgbnVtRWxlbWVudHMpOworICAgICAgICBib29sIHZhbGlk
YXRlUmVuZGVyaW5nU3RhdGUobG9uZyBudW1FbGVtZW50cyk7CisKICAgICAgICAgT3duUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CiAgICAgICAgIGJvb2wgbV9uZWVkc1VwZGF0ZTsK
ICAgICAgICAgYm9vbCBtX21hcmtlZENhbnZhc0RpcnR5OwogICAgICAgICAvLyBGSVhNRTogSSB0
aGluayB0aGlzIGlzIGJyb2tlbiAtLSBpdCBkb2VzIG5vdCBpbmNyZW1lbnQgYW55CiAgICAgICAg
IC8vIHJlZmVyZW5jZSBjb3VudHMsIHNvIG1heSByZWZlciB0byBkZXN0cm95ZWQgb2JqZWN0cy4K
LSAgICAgICAgSGFzaFNldDxDYW52YXNPYmplY3QqPiBtX2NhbnZhc09iamVjdHM7CisgICAgICAg
IEhhc2hTZXQ8UmVmUHRyPENhbnZhc09iamVjdD4gPiBtX2NhbnZhc09iamVjdHM7CisgICAgICAg
IAorICAgICAgICAvLyBMaXN0IG9mIGJvdW5kIFZCTydzLiBVc2VkIHRvIG1haW50YWluIGluZm8g
YWJvdXQgc2l6ZXMgZm9yIEFSUkFZX0JVRkZFUiBhbmQgc3RvcmVkIHZhbHVlcyBmb3IgRUxFTUVO
VF9BUlJBWV9CVUZGRVIKKyAgICAgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBtX2JvdW5kQXJyYXlC
dWZmZXI7CisgICAgICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gbV9ib3VuZEVsZW1lbnRBcnJheUJ1
ZmZlcjsKKyAgICAKKyAgICAgICAgLy8gQ2FjaGVkIHZhbHVlcyBmb3IgdmVydGV4IGF0dHJpYiBy
YW5nZSBjaGVja3MKKyAgICAgICAgY2xhc3MgVmVydGV4QXR0cmliU3RhdGUgeworICAgICAgICBw
dWJsaWM6CisgICAgICAgICAgICBWZXJ0ZXhBdHRyaWJTdGF0ZSgpIDogZW5hYmxlZChmYWxzZSks
IG51bUVsZW1lbnRzKDApIHsgfQorICAgICAgICAgICAgYm9vbCBlbmFibGVkOworICAgICAgICAg
ICAgbG9uZyBudW1FbGVtZW50czsKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIFZlY3Rv
cjxWZXJ0ZXhBdHRyaWJTdGF0ZT4gbV92ZXJ0ZXhBdHRyaWJTdGF0ZTsKKyAgICAgICAgdW5zaWdu
ZWQgbV9tYXhWZXJ0ZXhBdHRyaWJzOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwJ
KHJldmlzaW9uIDUxMzEwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NzIsMTMgKzQ3MiwxNCBAQCBtb2R1bGUgaHRt
bCB7CiAgICAgICAgIHZvaWQgICAgICAgICBibGVuZEVxdWF0aW9uU2VwYXJhdGUoaW4gdW5zaWdu
ZWQgbG9uZyBtb2RlUkdCLCBpbiB1bnNpZ25lZCBsb25nIG1vZGVBbHBoYSk7CiAgICAgICAgIHZv
aWQgICAgICAgICBibGVuZEZ1bmMoaW4gdW5zaWduZWQgbG9uZyBzZmFjdG9yLCBpbiB1bnNpZ25l
ZCBsb25nIGRmYWN0b3IpOwogICAgICAgICB2b2lkICAgICAgICAgYmxlbmRGdW5jU2VwYXJhdGUo
aW4gdW5zaWduZWQgbG9uZyBzcmNSR0IsIGluIHVuc2lnbmVkIGxvbmcgZHN0UkdCLCBpbiB1bnNp
Z25lZCBsb25nIHNyY0FscGhhLCBpbiB1bnNpZ25lZCBsb25nIGRzdEFscGhhKTsKKwogICAgICAg
ICAvLyBTdXBwb3J0ZWQgZm9ybXM6CiAgICAgICAgIC8vICAgdm9pZCBidWZmZXJEYXRhIChpbiBH
TGVudW0gdGFyZ2V0LCBpbiBHTHNpemVpIHNpemUsIGluIEdMZW51bSB1c2FnZSk7CiAgICAgICAg
IC8vICAgdm9pZCBidWZmZXJEYXRhIChpbiBHTGVudW0gdGFyZ2V0LCBpbiBXZWJHTEFycmF5IGRh
dGEsIGluIEdMZW51bSB1c2FnZSk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgYnVmZmVyRGF0YSgp
OworICAgICAgICBbQ3VzdG9tXSB2b2lkIGJ1ZmZlckRhdGEoKSByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKICAgICAgICAgLy8gU3VwcG9ydGVkIGZvcm1zOgogICAgICAgICAvLyAgIHZvaWQgYnVmZmVy
U3ViRGF0YSAoaW4gR0xlbnVtIHRhcmdldCwgaW4gR0xzaXplaXB0ciBvZmZzZXQsIGluIFdlYkdM
QXJyYXkgZGF0YSk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgYnVmZmVyU3ViRGF0YSgpOworICAg
ICAgICBbQ3VzdG9tXSB2b2lkIGJ1ZmZlclN1YkRhdGEoKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
IAogICAgICAgICB1bnNpZ25lZCBsb25nIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoaW4gdW5zaWdu
ZWQgbG9uZyB0YXJnZXQpOwogICAgICAgICB2b2lkICAgICAgICAgY2xlYXIoaW4gdW5zaWduZWQg
bG9uZyBtYXNrKTsKQEAgLTUxNiwxMiArNTE3LDEyIEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAg
dm9pZCAgICAgICAgIGRlcHRoUmFuZ2UoaW4gZG91YmxlIHpOZWFyLCBpbiBkb3VibGUgekZhcik7
CiAgICAgICAgIHZvaWQgICAgICAgICBkZXRhY2hTaGFkZXIoaW4gV2ViR0xQcm9ncmFtIHByb2dy
YW0sIGluIFdlYkdMU2hhZGVyIHNoYWRlcikgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAg
IHZvaWQgICAgICAgICBkaXNhYmxlKGluIHVuc2lnbmVkIGxvbmcgY2FwKTsKLSAgICAgICAgdm9p
ZCAgICAgICAgIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbiB1bnNpZ25lZCBsb25nIGluZGV4
KTsKLSAgICAgICAgdm9pZCAgICAgICAgIGRyYXdBcnJheXMoaW4gdW5zaWduZWQgbG9uZyBtb2Rl
LCBpbiBsb25nIGZpcnN0LCBpbiB1bnNpZ25lZCBsb25nIGNvdW50KTsKLSAgICAgICAgdm9pZCAg
ICAgICAgIGRyYXdFbGVtZW50cyAoaW4gdW5zaWduZWQgbG9uZyBtb2RlLCBpbiBsb25nIGNvdW50
LCBpbiB1bnNpZ25lZCBsb25nIHR5cGUsIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKKyAgICAg
ICAgdm9pZCAgICAgICAgIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbiB1bnNpZ25lZCBsb25n
IGluZGV4KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCAgICAgICAgIGRyYXdB
cnJheXMoaW4gdW5zaWduZWQgbG9uZyBtb2RlLCBpbiBsb25nIGZpcnN0LCBpbiB1bnNpZ25lZCBs
b25nIGNvdW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCAgICAgICAgIGRy
YXdFbGVtZW50cyAoaW4gdW5zaWduZWQgbG9uZyBtb2RlLCBpbiBsb25nIGNvdW50LCBpbiB1bnNp
Z25lZCBsb25nIHR5cGUsIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KSByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKIAogICAgICAgICB2b2lkICAgICAgICAgZW5hYmxlKGluIHVuc2lnbmVkIGxvbmcgY2Fw
KTsKLSAgICAgICAgdm9pZCAgICAgICAgIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluIHVuc2ln
bmVkIGxvbmcgaW5kZXgpOworICAgICAgICB2b2lkICAgICAgICAgZW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAg
ICAgIHZvaWQgICAgICAgICBmaW5pc2goKTsKICAgICAgICAgdm9pZCAgICAgICAgIGZsdXNoKCk7
CiAgICAgICAgIHZvaWQgICAgICAgICBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihpbiB1bnNpZ25l
ZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBpbiB1bnNpZ25lZCBs
b25nIHJlbmRlcmJ1ZmZlcnRhcmdldCwgaW4gV2ViR0xSZW5kZXJidWZmZXIgcmVuZGVyYnVmZmVy
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKQEAgLTY2OSw4ICs2NzAsOCBAQCBtb2R1bGUgaHRtbCB7
CiAgICAgICAgIFtDdXN0b21dIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihpbiBsb25nIGxvY2F0aW9u
LCBpbiBib29sZWFuIHRyYW5zcG9zZSwgaW4gV2ViR0xGbG9hdEFycmF5IGFycmF5KTsKICAgICAg
ICAgW0N1c3RvbV0gdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGluIGxvbmcgbG9jYXRpb24sIGluIGJv
b2xlYW4gdHJhbnNwb3NlLCBpbiBXZWJHTEZsb2F0QXJyYXkgYXJyYXkpOwogCi0gICAgICAgIHZv
aWQgICAgICAgICB1c2VQcm9ncmFtKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtKTsKLSAgICAgICAg
dm9pZCAgICAgICAgIHZhbGlkYXRlUHJvZ3JhbShpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSk7Cisg
ICAgICAgIHZvaWQgICAgICAgICB1c2VQcm9ncmFtKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtKSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCAgICAgICAgIHZhbGlkYXRlUHJvZ3Jh
bShpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAg
ICAgdm9pZCAgICAgICAgIHZlcnRleEF0dHJpYjFmKGluIHVuc2lnbmVkIGxvbmcgaW5keCwgaW4g
ZmxvYXQgeCk7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgICAgICAgICB2ZXJ0ZXhBdHRyaWIxZnYo
aW4gdW5zaWduZWQgbG9uZyBpbmR4LCBpbiBXZWJHTEZsb2F0QXJyYXkgdmFsdWVzKTsKQEAgLTY4
MSw3ICs2ODIsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIHZvaWQgICAgICAgICB2ZXJ0ZXhB
dHRyaWI0ZihpbiB1bnNpZ25lZCBsb25nIGluZHgsIGluIGZsb2F0IHgsIGluIGZsb2F0IHksIGlu
IGZsb2F0IHosIGluIGZsb2F0IHcpOwogICAgICAgICBbQ3VzdG9tXSB2b2lkICAgICAgICAgdmVy
dGV4QXR0cmliNGZ2KGluIHVuc2lnbmVkIGxvbmcgaW5keCwgaW4gV2ViR0xGbG9hdEFycmF5IHZh
bHVlcyk7CiAgICAgICAgIHZvaWQgICAgICAgICB2ZXJ0ZXhBdHRyaWJQb2ludGVyKGluIHVuc2ln
bmVkIGxvbmcgaW5keCwgaW4gbG9uZyBzaXplLCBpbiB1bnNpZ25lZCBsb25nIHR5cGUsIGluIGJv
b2xlYW4gbm9ybWFsaXplZCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIGxvbmcgc3RyaWRlLCBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGxvbmcgc3RyaWRlLCBpbiB1bnNpZ25l
ZCBsb25nIG9mZnNldCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgdm9pZCAgICAg
ICAgIHZpZXdwb3J0KGluIGxvbmcgeCwgaW4gbG9uZyB5LCBpbiB1bnNpZ25lZCBsb25nIHdpZHRo
LCBpbiB1bnNpZ25lZCBsb25nIGhlaWdodCk7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xTaGFkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xTaGFkZXIuY3BwCShyZXZpc2lvbiA1MTMxMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xTaGFkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsMTIgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAotUGFzc1JlZlB0cjxXZWJHTFNoYWRlcj4gV2ViR0xTaGFk
ZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlNoYWRlclR5cGUgdHlwZSkKK1Bhc3NSZWZQdHI8V2ViR0xTaGFkZXI+IFdlYkdMU2hhZGVyOjpj
cmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgsIEdyYXBoaWNzQ29udGV4dDNEOjpXZWJH
TEVudW1UeXBlIHR5cGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTFNoYWRlcihj
dHgsIHR5cGUpKTsKIH0KIAotV2ViR0xTaGFkZXI6OldlYkdMU2hhZGVyKFdlYkdMUmVuZGVyaW5n
Q29udGV4dCogY3R4LCBHcmFwaGljc0NvbnRleHQzRDo6U2hhZGVyVHlwZSB0eXBlKQorV2ViR0xT
aGFkZXI6OldlYkdMU2hhZGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4LCBHcmFwaGljc0Nv
bnRleHQzRDo6V2ViR0xFbnVtVHlwZSB0eXBlKQogICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKIHsK
ICAgICBzZXRPYmplY3QoY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVTaGFk
ZXIodHlwZSkpOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaAkocmV2aXNpb24gNTEz
MTApCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDEwICszNywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAg
ICAgICB2aXJ0dWFsIH5XZWJHTFNoYWRlcigpIHsgZGVsZXRlT2JqZWN0KCk7IH0KICAgICAgICAg
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMU2hhZGVyPiBjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0KiwgR3JhcGhpY3NDb250ZXh0M0Q6OlNoYWRlclR5cGUpOworICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJHTFNoYWRlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dCosIEdyYXBoaWNzQ29udGV4dDNEOjpXZWJHTEVudW1UeXBlKTsKICAgICAgICAgCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgV2ViR0xTaGFkZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlNoYWRlclR5cGUpOworICAgICAgICBXZWJHTFNoYWRlcihXZWJHTFJlbmRl
cmluZ0NvbnRleHQqLCBHcmFwaGljc0NvbnRleHQzRDo6V2ViR0xFbnVtVHlwZSk7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIF9kZWxldGVPYmplY3QoUGxhdGZvcm0zRE9iamVjdCk7CiAgICAgfTsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJ
KHJldmlzaW9uIDUxMzEwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw4ICs3NiwzMDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0QgOiBwdWJsaWMgTm9uY29weWFi
bGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBTaGFkZXJUeXBlIHsgRlJBR01FTlRfU0hB
REVSLCBWRVJURVhfU0hBREVSIH07Ci0gICAgCisgICAgICAgIGVudW0gV2ViR0xFbnVtVHlwZSB7
CisgICAgICAgICAgICBERVBUSF9CVUZGRVJfQklUID0gMHgwMDAwMDEwMCwKKyAgICAgICAgICAg
IFNURU5DSUxfQlVGRkVSX0JJVCA9IDB4MDAwMDA0MDAsCisgICAgICAgICAgICBDT0xPUl9CVUZG
RVJfQklUID0gMHgwMDAwNDAwMCwKKyAgICAgICAgICAgIFBPSU5UUyA9IDB4MDAwMCwKKyAgICAg
ICAgICAgIExJTkVTID0gMHgwMDAxLAorICAgICAgICAgICAgTElORV9MT09QID0gMHgwMDAyLAor
ICAgICAgICAgICAgTElORV9TVFJJUCA9IDB4MDAwMywKKyAgICAgICAgICAgIFRSSUFOR0xFUyA9
IDB4MDAwNCwKKyAgICAgICAgICAgIFRSSUFOR0xFX1NUUklQID0gMHgwMDA1LAorICAgICAgICAg
ICAgVFJJQU5HTEVfRkFOID0gMHgwMDA2LAorICAgICAgICAgICAgWkVSTyA9IDAsCisgICAgICAg
ICAgICBPTkUgPSAxLAorICAgICAgICAgICAgU1JDX0NPTE9SID0gMHgwMzAwLAorICAgICAgICAg
ICAgT05FX01JTlVTX1NSQ19DT0xPUiA9IDB4MDMwMSwKKyAgICAgICAgICAgIFNSQ19BTFBIQSA9
IDB4MDMwMiwKKyAgICAgICAgICAgIE9ORV9NSU5VU19TUkNfQUxQSEEgPSAweDAzMDMsCisgICAg
ICAgICAgICBEU1RfQUxQSEEgPSAweDAzMDQsCisgICAgICAgICAgICBPTkVfTUlOVVNfRFNUX0FM
UEhBID0gMHgwMzA1LAorICAgICAgICAgICAgRFNUX0NPTE9SID0gMHgwMzA2LAorICAgICAgICAg
ICAgT05FX01JTlVTX0RTVF9DT0xPUiA9IDB4MDMwNywKKyAgICAgICAgICAgIFNSQ19BTFBIQV9T
QVRVUkFURSA9IDB4MDMwOCwKKyAgICAgICAgICAgIEZVTkNfQUREID0gMHg4MDA2LAorICAgICAg
ICAgICAgQkxFTkRfRVFVQVRJT04gPSAweDgwMDksCisgICAgICAgICAgICBCTEVORF9FUVVBVElP
Tl9SR0IgPSAweDgwMDksCisgICAgICAgICAgICBCTEVORF9FUVVBVElPTl9BTFBIQSA9IDB4ODgz
RCwKKyAgICAgICAgICAgIEZVTkNfU1VCVFJBQ1QgPSAweDgwMEEsCisgICAgICAgICAgICBGVU5D
X1JFVkVSU0VfU1VCVFJBQ1QgPSAweDgwMEIsCisgICAgICAgICAgICBCTEVORF9EU1RfUkdCID0g
MHg4MEM4LAorICAgICAgICAgICAgQkxFTkRfU1JDX1JHQiA9IDB4ODBDOSwKKyAgICAgICAgICAg
IEJMRU5EX0RTVF9BTFBIQSA9IDB4ODBDQSwKKyAgICAgICAgICAgIEJMRU5EX1NSQ19BTFBIQSA9
IDB4ODBDQiwKKyAgICAgICAgICAgIENPTlNUQU5UX0NPTE9SID0gMHg4MDAxLAorICAgICAgICAg
ICAgT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SID0gMHg4MDAyLAorICAgICAgICAgICAgQ09OU1RB
TlRfQUxQSEEgPSAweDgwMDMsCisgICAgICAgICAgICBPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEg
PSAweDgwMDQsCisgICAgICAgICAgICBCTEVORF9DT0xPUiA9IDB4ODAwNSwKKyAgICAgICAgICAg
IEFSUkFZX0JVRkZFUiA9IDB4ODg5MiwKKyAgICAgICAgICAgIEVMRU1FTlRfQVJSQVlfQlVGRkVS
ID0gMHg4ODkzLAorICAgICAgICAgICAgQVJSQVlfQlVGRkVSX0JJTkRJTkcgPSAweDg4OTQsCisg
ICAgICAgICAgICBFTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HID0gMHg4ODk1LAorICAgICAg
ICAgICAgU1RSRUFNX0RSQVcgPSAweDg4RTAsCisgICAgICAgICAgICBTVEFUSUNfRFJBVyA9IDB4
ODhFNCwKKyAgICAgICAgICAgIERZTkFNSUNfRFJBVyA9IDB4ODhFOCwKKyAgICAgICAgICAgIEJV
RkZFUl9TSVpFID0gMHg4NzY0LAorICAgICAgICAgICAgQlVGRkVSX1VTQUdFID0gMHg4NzY1LAor
ICAgICAgICAgICAgQ1VSUkVOVF9WRVJURVhfQVRUUklCID0gMHg4NjI2LAorICAgICAgICAgICAg
RlJPTlQgPSAweDA0MDQsCisgICAgICAgICAgICBCQUNLID0gMHgwNDA1LAorICAgICAgICAgICAg
RlJPTlRfQU5EX0JBQ0sgPSAweDA0MDgsCisgICAgICAgICAgICBURVhUVVJFXzJEID0gMHgwREUx
LAorICAgICAgICAgICAgQ1VMTF9GQUNFID0gMHgwQjQ0LAorICAgICAgICAgICAgQkxFTkQgPSAw
eDBCRTIsCisgICAgICAgICAgICBESVRIRVIgPSAweDBCRDAsCisgICAgICAgICAgICBTVEVOQ0lM
X1RFU1QgPSAweDBCOTAsCisgICAgICAgICAgICBERVBUSF9URVNUID0gMHgwQjcxLAorICAgICAg
ICAgICAgU0NJU1NPUl9URVNUID0gMHgwQzExLAorICAgICAgICAgICAgUE9MWUdPTl9PRkZTRVRf
RklMTCA9IDB4ODAzNywKKyAgICAgICAgICAgIFNBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRSA9IDB4
ODA5RSwKKyAgICAgICAgICAgIFNBTVBMRV9DT1ZFUkFHRSA9IDB4ODBBMCwKKyAgICAgICAgICAg
IE5PX0VSUk9SID0gMCwKKyAgICAgICAgICAgIElOVkFMSURfRU5VTSA9IDB4MDUwMCwKKyAgICAg
ICAgICAgIElOVkFMSURfVkFMVUUgPSAweDA1MDEsCisgICAgICAgICAgICBJTlZBTElEX09QRVJB
VElPTiA9IDB4MDUwMiwKKyAgICAgICAgICAgIE9VVF9PRl9NRU1PUlkgPSAweDA1MDUsCisgICAg
ICAgICAgICBDVyA9IDB4MDkwMCwKKyAgICAgICAgICAgIENDVyA9IDB4MDkwMSwKKyAgICAgICAg
ICAgIExJTkVfV0lEVEggPSAweDBCMjEsCisgICAgICAgICAgICBBTElBU0VEX1BPSU5UX1NJWkVf
UkFOR0UgPSAweDg0NkQsCisgICAgICAgICAgICBBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UgPSAw
eDg0NkUsCisgICAgICAgICAgICBDVUxMX0ZBQ0VfTU9ERSA9IDB4MEI0NSwKKyAgICAgICAgICAg
IEZST05UX0ZBQ0UgPSAweDBCNDYsCisgICAgICAgICAgICBERVBUSF9SQU5HRSA9IDB4MEI3MCwK
KyAgICAgICAgICAgIERFUFRIX1dSSVRFTUFTSyA9IDB4MEI3MiwKKyAgICAgICAgICAgIERFUFRI
X0NMRUFSX1ZBTFVFID0gMHgwQjczLAorICAgICAgICAgICAgREVQVEhfRlVOQyA9IDB4MEI3NCwK
KyAgICAgICAgICAgIFNURU5DSUxfQ0xFQVJfVkFMVUUgPSAweDBCOTEsCisgICAgICAgICAgICBT
VEVOQ0lMX0ZVTkMgPSAweDBCOTIsCisgICAgICAgICAgICBTVEVOQ0lMX0ZBSUwgPSAweDBCOTQs
CisgICAgICAgICAgICBTVEVOQ0lMX1BBU1NfREVQVEhfRkFJTCA9IDB4MEI5NSwKKyAgICAgICAg
ICAgIFNURU5DSUxfUEFTU19ERVBUSF9QQVNTID0gMHgwQjk2LAorICAgICAgICAgICAgU1RFTkNJ
TF9SRUYgPSAweDBCOTcsCisgICAgICAgICAgICBTVEVOQ0lMX1ZBTFVFX01BU0sgPSAweDBCOTMs
CisgICAgICAgICAgICBTVEVOQ0lMX1dSSVRFTUFTSyA9IDB4MEI5OCwKKyAgICAgICAgICAgIFNU
RU5DSUxfQkFDS19GVU5DID0gMHg4ODAwLAorICAgICAgICAgICAgU1RFTkNJTF9CQUNLX0ZBSUwg
PSAweDg4MDEsCisgICAgICAgICAgICBTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMID0gMHg4
ODAyLAorICAgICAgICAgICAgU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUyA9IDB4ODgwMywK
KyAgICAgICAgICAgIFNURU5DSUxfQkFDS19SRUYgPSAweDhDQTMsCisgICAgICAgICAgICBTVEVO
Q0lMX0JBQ0tfVkFMVUVfTUFTSyA9IDB4OENBNCwKKyAgICAgICAgICAgIFNURU5DSUxfQkFDS19X
UklURU1BU0sgPSAweDhDQTUsCisgICAgICAgICAgICBWSUVXUE9SVCA9IDB4MEJBMiwKKyAgICAg
ICAgICAgIFNDSVNTT1JfQk9YID0gMHgwQzEwLAorICAgICAgICAgICAgQ09MT1JfQ0xFQVJfVkFM
VUUgPSAweDBDMjIsCisgICAgICAgICAgICBDT0xPUl9XUklURU1BU0sgPSAweDBDMjMsCisgICAg
ICAgICAgICBVTlBBQ0tfQUxJR05NRU5UID0gMHgwQ0Y1LAorICAgICAgICAgICAgUEFDS19BTElH
Tk1FTlQgPSAweDBEMDUsCisgICAgICAgICAgICBNQVhfVEVYVFVSRV9TSVpFID0gMHgwRDMzLAor
ICAgICAgICAgICAgTUFYX1ZJRVdQT1JUX0RJTVMgPSAweDBEM0EsCisgICAgICAgICAgICBTVUJQ
SVhFTF9CSVRTID0gMHgwRDUwLAorICAgICAgICAgICAgUkVEX0JJVFMgPSAweDBENTIsCisgICAg
ICAgICAgICBHUkVFTl9CSVRTID0gMHgwRDUzLAorICAgICAgICAgICAgQkxVRV9CSVRTID0gMHgw
RDU0LAorICAgICAgICAgICAgQUxQSEFfQklUUyA9IDB4MEQ1NSwKKyAgICAgICAgICAgIERFUFRI
X0JJVFMgPSAweDBENTYsCisgICAgICAgICAgICBTVEVOQ0lMX0JJVFMgPSAweDBENTcsCisgICAg
ICAgICAgICBQT0xZR09OX09GRlNFVF9VTklUUyA9IDB4MkEwMCwKKyAgICAgICAgICAgIFBPTFlH
T05fT0ZGU0VUX0ZBQ1RPUiA9IDB4ODAzOCwKKyAgICAgICAgICAgIFRFWFRVUkVfQklORElOR18y
RCA9IDB4ODA2OSwKKyAgICAgICAgICAgIFNBTVBMRV9CVUZGRVJTID0gMHg4MEE4LAorICAgICAg
ICAgICAgU0FNUExFUyA9IDB4ODBBOSwKKyAgICAgICAgICAgIFNBTVBMRV9DT1ZFUkFHRV9WQUxV
RSA9IDB4ODBBQSwKKyAgICAgICAgICAgIFNBTVBMRV9DT1ZFUkFHRV9JTlZFUlQgPSAweDgwQUIs
CisgICAgICAgICAgICBOVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMgPSAweDg2QTIsCisg
ICAgICAgICAgICBDT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyA9IDB4ODZBMywKKyAgICAgICAg
ICAgIERPTlRfQ0FSRSA9IDB4MTEwMCwKKyAgICAgICAgICAgIEZBU1RFU1QgPSAweDExMDEsCisg
ICAgICAgICAgICBOSUNFU1QgPSAweDExMDIsCisgICAgICAgICAgICBHRU5FUkFURV9NSVBNQVBf
SElOVCA9IDB4ODE5MiwKKyAgICAgICAgICAgIEJZVEUgPSAweDE0MDAsCisgICAgICAgICAgICBV
TlNJR05FRF9CWVRFID0gMHgxNDAxLAorICAgICAgICAgICAgU0hPUlQgPSAweDE0MDIsCisgICAg
ICAgICAgICBVTlNJR05FRF9TSE9SVCA9IDB4MTQwMywKKyAgICAgICAgICAgIElOVCA9IDB4MTQw
NCwKKyAgICAgICAgICAgIFVOU0lHTkVEX0lOVCA9IDB4MTQwNSwKKyAgICAgICAgICAgIEZMT0FU
ID0gMHgxNDA2LAorICAgICAgICAgICAgRklYRUQgPSAweDE0MEMsCisgICAgICAgICAgICBERVBU
SF9DT01QT05FTlQgPSAweDE5MDIsCisgICAgICAgICAgICBBTFBIQSA9IDB4MTkwNiwKKyAgICAg
ICAgICAgIFJHQiA9IDB4MTkwNywKKyAgICAgICAgICAgIFJHQkEgPSAweDE5MDgsCisgICAgICAg
ICAgICBMVU1JTkFOQ0UgPSAweDE5MDksCisgICAgICAgICAgICBMVU1JTkFOQ0VfQUxQSEEgPSAw
eDE5MEEsCisgICAgICAgICAgICBVTlNJR05FRF9TSE9SVF80XzRfNF80ID0gMHg4MDMzLAorICAg
ICAgICAgICAgVU5TSUdORURfU0hPUlRfNV81XzVfMSA9IDB4ODAzNCwKKyAgICAgICAgICAgIFVO
U0lHTkVEX1NIT1JUXzVfNl81ID0gMHg4MzYzLAorICAgICAgICAgICAgRlJBR01FTlRfU0hBREVS
ID0gMHg4QjMwLAorICAgICAgICAgICAgVkVSVEVYX1NIQURFUiA9IDB4OEIzMSwKKyAgICAgICAg
ICAgIE1BWF9WRVJURVhfQVRUUklCUyA9IDB4ODg2OSwKKyAgICAgICAgICAgIE1BWF9WRVJURVhf
VU5JRk9STV9WRUNUT1JTID0gMHg4REZCLAorICAgICAgICAgICAgTUFYX1ZBUllJTkdfVkVDVE9S
UyA9IDB4OERGQywKKyAgICAgICAgICAgIE1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRT
ID0gMHg4QjRELAorICAgICAgICAgICAgTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTID0g
MHg4QjRDLAorICAgICAgICAgICAgTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMgPSAweDg4NzIsCisg
ICAgICAgICAgICBNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTID0gMHg4REZELAorICAgICAg
ICAgICAgU0hBREVSX1RZUEUgPSAweDhCNEYsCisgICAgICAgICAgICBERUxFVEVfU1RBVFVTID0g
MHg4QjgwLAorICAgICAgICAgICAgTElOS19TVEFUVVMgPSAweDhCODIsCisgICAgICAgICAgICBW
QUxJREFURV9TVEFUVVMgPSAweDhCODMsCisgICAgICAgICAgICBBVFRBQ0hFRF9TSEFERVJTID0g
MHg4Qjg1LAorICAgICAgICAgICAgQUNUSVZFX1VOSUZPUk1TID0gMHg4Qjg2LAorICAgICAgICAg
ICAgQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCA9IDB4OEI4NywKKyAgICAgICAgICAgIEFDVElW
RV9BVFRSSUJVVEVTID0gMHg4Qjg5LAorICAgICAgICAgICAgQUNUSVZFX0FUVFJJQlVURV9NQVhf
TEVOR1RIID0gMHg4QjhBLAorICAgICAgICAgICAgU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OID0g
MHg4QjhDLAorICAgICAgICAgICAgQ1VSUkVOVF9QUk9HUkFNID0gMHg4QjhELAorICAgICAgICAg
ICAgTkVWRVIgPSAweDAyMDAsCisgICAgICAgICAgICBMRVNTID0gMHgwMjAxLAorICAgICAgICAg
ICAgRVFVQUwgPSAweDAyMDIsCisgICAgICAgICAgICBMRVFVQUwgPSAweDAyMDMsCisgICAgICAg
ICAgICBHUkVBVEVSID0gMHgwMjA0LAorICAgICAgICAgICAgTk9URVFVQUwgPSAweDAyMDUsCisg
ICAgICAgICAgICBHRVFVQUwgPSAweDAyMDYsCisgICAgICAgICAgICBBTFdBWVMgPSAweDAyMDcs
CisgICAgICAgICAgICBLRUVQID0gMHgxRTAwLAorICAgICAgICAgICAgUkVQTEFDRSA9IDB4MUUw
MSwKKyAgICAgICAgICAgIElOQ1IgPSAweDFFMDIsCisgICAgICAgICAgICBERUNSID0gMHgxRTAz
LAorICAgICAgICAgICAgSU5WRVJUID0gMHgxNTBBLAorICAgICAgICAgICAgSU5DUl9XUkFQID0g
MHg4NTA3LAorICAgICAgICAgICAgREVDUl9XUkFQID0gMHg4NTA4LAorICAgICAgICAgICAgVkVO
RE9SID0gMHgxRjAwLAorICAgICAgICAgICAgUkVOREVSRVIgPSAweDFGMDEsCisgICAgICAgICAg
ICBWRVJTSU9OID0gMHgxRjAyLAorICAgICAgICAgICAgRVhURU5TSU9OUyA9IDB4MUYwMywKKyAg
ICAgICAgICAgIE5FQVJFU1QgPSAweDI2MDAsCisgICAgICAgICAgICBMSU5FQVIgPSAweDI2MDEs
CisgICAgICAgICAgICBORUFSRVNUX01JUE1BUF9ORUFSRVNUID0gMHgyNzAwLAorICAgICAgICAg
ICAgTElORUFSX01JUE1BUF9ORUFSRVNUID0gMHgyNzAxLAorICAgICAgICAgICAgTkVBUkVTVF9N
SVBNQVBfTElORUFSID0gMHgyNzAyLAorICAgICAgICAgICAgTElORUFSX01JUE1BUF9MSU5FQVIg
PSAweDI3MDMsCisgICAgICAgICAgICBURVhUVVJFX01BR19GSUxURVIgPSAweDI4MDAsCisgICAg
ICAgICAgICBURVhUVVJFX01JTl9GSUxURVIgPSAweDI4MDEsCisgICAgICAgICAgICBURVhUVVJF
X1dSQVBfUyA9IDB4MjgwMiwKKyAgICAgICAgICAgIFRFWFRVUkVfV1JBUF9UID0gMHgyODAzLAor
ICAgICAgICAgICAgVEVYVFVSRSA9IDB4MTcwMiwKKyAgICAgICAgICAgIFRFWFRVUkVfQ1VCRV9N
QVAgPSAweDg1MTMsCisgICAgICAgICAgICBURVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAgPSAweDg1
MTQsCisgICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggPSAweDg1MTUsCisg
ICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ggPSAweDg1MTYsCisgICAgICAg
ICAgICBURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1kgPSAweDg1MTcsCisgICAgICAgICAgICBU
RVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1kgPSAweDg1MTgsCisgICAgICAgICAgICBURVhUVVJF
X0NVQkVfTUFQX1BPU0lUSVZFX1ogPSAweDg1MTksCisgICAgICAgICAgICBURVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1ogPSAweDg1MUEsCisgICAgICAgICAgICBNQVhfQ1VCRV9NQVBfVEVYVFVS
RV9TSVpFID0gMHg4NTFDLAorICAgICAgICAgICAgVEVYVFVSRTAgPSAweDg0QzAsCisgICAgICAg
ICAgICBURVhUVVJFMSA9IDB4ODRDMSwKKyAgICAgICAgICAgIFRFWFRVUkUyID0gMHg4NEMyLAor
ICAgICAgICAgICAgVEVYVFVSRTMgPSAweDg0QzMsCisgICAgICAgICAgICBURVhUVVJFNCA9IDB4
ODRDNCwKKyAgICAgICAgICAgIFRFWFRVUkU1ID0gMHg4NEM1LAorICAgICAgICAgICAgVEVYVFVS
RTYgPSAweDg0QzYsCisgICAgICAgICAgICBURVhUVVJFNyA9IDB4ODRDNywKKyAgICAgICAgICAg
IFRFWFRVUkU4ID0gMHg4NEM4LAorICAgICAgICAgICAgVEVYVFVSRTkgPSAweDg0QzksCisgICAg
ICAgICAgICBURVhUVVJFMTAgPSAweDg0Q0EsCisgICAgICAgICAgICBURVhUVVJFMTEgPSAweDg0
Q0IsCisgICAgICAgICAgICBURVhUVVJFMTIgPSAweDg0Q0MsCisgICAgICAgICAgICBURVhUVVJF
MTMgPSAweDg0Q0QsCisgICAgICAgICAgICBURVhUVVJFMTQgPSAweDg0Q0UsCisgICAgICAgICAg
ICBURVhUVVJFMTUgPSAweDg0Q0YsCisgICAgICAgICAgICBURVhUVVJFMTYgPSAweDg0RDAsCisg
ICAgICAgICAgICBURVhUVVJFMTcgPSAweDg0RDEsCisgICAgICAgICAgICBURVhUVVJFMTggPSAw
eDg0RDIsCisgICAgICAgICAgICBURVhUVVJFMTkgPSAweDg0RDMsCisgICAgICAgICAgICBURVhU
VVJFMjAgPSAweDg0RDQsCisgICAgICAgICAgICBURVhUVVJFMjEgPSAweDg0RDUsCisgICAgICAg
ICAgICBURVhUVVJFMjIgPSAweDg0RDYsCisgICAgICAgICAgICBURVhUVVJFMjMgPSAweDg0RDcs
CisgICAgICAgICAgICBURVhUVVJFMjQgPSAweDg0RDgsCisgICAgICAgICAgICBURVhUVVJFMjUg
PSAweDg0RDksCisgICAgICAgICAgICBURVhUVVJFMjYgPSAweDg0REEsCisgICAgICAgICAgICBU
RVhUVVJFMjcgPSAweDg0REIsCisgICAgICAgICAgICBURVhUVVJFMjggPSAweDg0REMsCisgICAg
ICAgICAgICBURVhUVVJFMjkgPSAweDg0REQsCisgICAgICAgICAgICBURVhUVVJFMzAgPSAweDg0
REUsCisgICAgICAgICAgICBURVhUVVJFMzEgPSAweDg0REYsCisgICAgICAgICAgICBBQ1RJVkVf
VEVYVFVSRSA9IDB4ODRFMCwKKyAgICAgICAgICAgIFJFUEVBVCA9IDB4MjkwMSwKKyAgICAgICAg
ICAgIENMQU1QX1RPX0VER0UgPSAweDgxMkYsCisgICAgICAgICAgICBNSVJST1JFRF9SRVBFQVQg
PSAweDgzNzAsCisgICAgICAgICAgICBGTE9BVF9WRUMyID0gMHg4QjUwLAorICAgICAgICAgICAg
RkxPQVRfVkVDMyA9IDB4OEI1MSwKKyAgICAgICAgICAgIEZMT0FUX1ZFQzQgPSAweDhCNTIsCisg
ICAgICAgICAgICBJTlRfVkVDMiA9IDB4OEI1MywKKyAgICAgICAgICAgIElOVF9WRUMzID0gMHg4
QjU0LAorICAgICAgICAgICAgSU5UX1ZFQzQgPSAweDhCNTUsCisgICAgICAgICAgICBCT09MID0g
MHg4QjU2LAorICAgICAgICAgICAgQk9PTF9WRUMyID0gMHg4QjU3LAorICAgICAgICAgICAgQk9P
TF9WRUMzID0gMHg4QjU4LAorICAgICAgICAgICAgQk9PTF9WRUM0ID0gMHg4QjU5LAorICAgICAg
ICAgICAgRkxPQVRfTUFUMiA9IDB4OEI1QSwKKyAgICAgICAgICAgIEZMT0FUX01BVDMgPSAweDhC
NUIsCisgICAgICAgICAgICBGTE9BVF9NQVQ0ID0gMHg4QjVDLAorICAgICAgICAgICAgU0FNUExF
Ul8yRCA9IDB4OEI1RSwKKyAgICAgICAgICAgIFNBTVBMRVJfQ1VCRSA9IDB4OEI2MCwKKyAgICAg
ICAgICAgIFZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRCA9IDB4ODYyMiwKKyAgICAgICAgICAg
IFZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRSA9IDB4ODYyMywKKyAgICAgICAgICAgIFZFUlRFWF9B
VFRSSUJfQVJSQVlfU1RSSURFID0gMHg4NjI0LAorICAgICAgICAgICAgVkVSVEVYX0FUVFJJQl9B
UlJBWV9UWVBFID0gMHg4NjI1LAorICAgICAgICAgICAgVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JN
QUxJWkVEID0gMHg4ODZBLAorICAgICAgICAgICAgVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVS
ID0gMHg4NjQ1LAorICAgICAgICAgICAgVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElO
RyA9IDB4ODg5RiwKKyAgICAgICAgICAgIElNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRSA9
IDB4OEI5QSwKKyAgICAgICAgICAgIElNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUID0g
MHg4QjlCLAorICAgICAgICAgICAgQ09NUElMRV9TVEFUVVMgPSAweDhCODEsCisgICAgICAgICAg
ICBJTkZPX0xPR19MRU5HVEggPSAweDhCODQsCisgICAgICAgICAgICBTSEFERVJfU09VUkNFX0xF
TkdUSCA9IDB4OEI4OCwKKyAgICAgICAgICAgIFNIQURFUl9DT01QSUxFUiA9IDB4OERGQSwKKyAg
ICAgICAgICAgIFNIQURFUl9CSU5BUllfRk9STUFUUyA9IDB4OERGOCwKKyAgICAgICAgICAgIE5V
TV9TSEFERVJfQklOQVJZX0ZPUk1BVFMgPSAweDhERjksCisgICAgICAgICAgICBMT1dfRkxPQVQg
PSAweDhERjAsCisgICAgICAgICAgICBNRURJVU1fRkxPQVQgPSAweDhERjEsCisgICAgICAgICAg
ICBISUdIX0ZMT0FUID0gMHg4REYyLAorICAgICAgICAgICAgTE9XX0lOVCA9IDB4OERGMywKKyAg
ICAgICAgICAgIE1FRElVTV9JTlQgPSAweDhERjQsCisgICAgICAgICAgICBISUdIX0lOVCA9IDB4
OERGNSwKKyAgICAgICAgICAgIEZSQU1FQlVGRkVSID0gMHg4RDQwLAorICAgICAgICAgICAgUkVO
REVSQlVGRkVSID0gMHg4RDQxLAorICAgICAgICAgICAgUkdCQTQgPSAweDgwNTYsCisgICAgICAg
ICAgICBSR0I1X0ExID0gMHg4MDU3LAorICAgICAgICAgICAgUkdCNTY1ID0gMHg4RDYyLAorICAg
ICAgICAgICAgREVQVEhfQ09NUE9ORU5UMTYgPSAweDgxQTUsCisgICAgICAgICAgICBTVEVOQ0lM
X0lOREVYID0gMHgxOTAxLAorICAgICAgICAgICAgU1RFTkNJTF9JTkRFWDggPSAweDhENDgsCisg
ICAgICAgICAgICBSRU5ERVJCVUZGRVJfV0lEVEggPSAweDhENDIsCisgICAgICAgICAgICBSRU5E
RVJCVUZGRVJfSEVJR0hUID0gMHg4RDQzLAorICAgICAgICAgICAgUkVOREVSQlVGRkVSX0lOVEVS
TkFMX0ZPUk1BVCA9IDB4OEQ0NCwKKyAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9SRURfU0laRSA9
IDB4OEQ1MCwKKyAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9HUkVFTl9TSVpFID0gMHg4RDUxLAor
ICAgICAgICAgICAgUkVOREVSQlVGRkVSX0JMVUVfU0laRSA9IDB4OEQ1MiwKKyAgICAgICAgICAg
IFJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFID0gMHg4RDUzLAorICAgICAgICAgICAgUkVOREVSQlVG
RkVSX0RFUFRIX1NJWkUgPSAweDhENTQsCisgICAgICAgICAgICBSRU5ERVJCVUZGRVJfU1RFTkNJ
TF9TSVpFID0gMHg4RDU1LAorICAgICAgICAgICAgRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpF
Q1RfVFlQRSA9IDB4OENEMCwKKyAgICAgICAgICAgIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JK
RUNUX05BTUUgPSAweDhDRDEsCisgICAgICAgICAgICBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RF
WFRVUkVfTEVWRUwgPSAweDhDRDIsCisgICAgICAgICAgICBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X1RFWFRVUkVfQ1VCRV9NQVBfRkFDRSA9IDB4OENEMywKKyAgICAgICAgICAgIENPTE9SX0FUVEFD
SE1FTlQwID0gMHg4Q0UwLAorICAgICAgICAgICAgREVQVEhfQVRUQUNITUVOVCA9IDB4OEQwMCwK
KyAgICAgICAgICAgIFNURU5DSUxfQVRUQUNITUVOVCA9IDB4OEQyMCwKKyAgICAgICAgICAgIE5P
TkUgPSAwLAorICAgICAgICAgICAgRlJBTUVCVUZGRVJfQ09NUExFVEUgPSAweDhDRDUsCisgICAg
ICAgICAgICBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQgPSAweDhDRDYsCisgICAg
ICAgICAgICBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVCA9IDB4OENE
NywKKyAgICAgICAgICAgIEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUyA9IDB4OENE
OSwKKyAgICAgICAgICAgIEZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEID0gMHg4Q0RELAorICAgICAg
ICAgICAgRlJBTUVCVUZGRVJfQklORElORyA9IDB4OENBNiwKKyAgICAgICAgICAgIFJFTkRFUkJV
RkZFUl9CSU5ESU5HID0gMHg4Q0E3LAorICAgICAgICAgICAgTUFYX1JFTkRFUkJVRkZFUl9TSVpF
ID0gMHg4NEU4LAorICAgICAgICAgICAgSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gPSAw
eDA1MDYKKyAgICAgICAgfTsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjcmVhdGUoKTsKICAgICAgICAgdmlydHVhbCB+R3JhcGhpY3NDb250
ZXh0M0QoKTsKIApAQCAtMzAzLDcgKzYwNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdW5zaWduZWQgY3JlYXRlRnJhbWVidWZmZXIoKTsKICAgICAgICAgdW5zaWduZWQgY3JlYXRl
UHJvZ3JhbSgpOwogICAgICAgICB1bnNpZ25lZCBjcmVhdGVSZW5kZXJidWZmZXIoKTsKLSAgICAg
ICAgdW5zaWduZWQgY3JlYXRlU2hhZGVyKFNoYWRlclR5cGUpOworICAgICAgICB1bnNpZ25lZCBj
cmVhdGVTaGFkZXIodW5zaWduZWQgbG9uZyk7CiAgICAgICAgIHVuc2lnbmVkIGNyZWF0ZVRleHR1
cmUoKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgZGVsZXRlQnVmZmVyKHVuc2lnbmVkKTsKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0Nv
bnRleHQzRE1hYy5jcHAJKHJldmlzaW9uIDUxMzEwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgz
LDcgKzE2ODMsNyBAQCB1bnNpZ25lZCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVyCiAg
ICAgcmV0dXJuIG87CiB9CiAKLXVuc2lnbmVkIEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVTaGFk
ZXIoU2hhZGVyVHlwZSB0eXBlKQordW5zaWduZWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVNo
YWRlcih1bnNpZ25lZCBsb25nIHR5cGUpCiB7CiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRP
YmopOwogICAgIHJldHVybiBnbENyZWF0ZVNoYWRlcigodHlwZSA9PSBGUkFHTUVOVF9TSEFERVIp
ID8gR0xfRlJBR01FTlRfU0hBREVSIDogR0xfVkVSVEVYX1NIQURFUik7CkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA1MTMxOSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE1IEBACisyMDA5LTExLTIzICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
cyBmb3Igb3V0IG9mIGJvdW5kcyBjb25kaXRpb25zIG9uIGRyYXdFbGVtZW50cyBhbmQgZHJhd0Fy
cmF5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzEy
MzkKKworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2RyYXdBcnJheXNPdXRPZkJvdW5kcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2RyYXdBcnJh
eXNPdXRPZkJvdW5kcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9k
cmF3RWxlbWVudHNzT3V0T2ZCb3VuZHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2NhbnZhcy93ZWJnbC9kcmF3RWxlbWVudHNzT3V0T2ZCb3VuZHMuaHRtbDogQWRkZWQuCisK
IDIwMDktMTEtMjMgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLiBTa2lwIG5ldyB0ZXN0cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2RyYXdBcnJheXNPdXRPZkJvdW5kcy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZHJhd0FycmF5c091dE9mQm91bmRz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL2RyYXdBcnJheXNPdXRPZkJvdW5kcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjggQEAKK1Rlc3Qgb2YgZHJhd0FycmF5cyB3aXRoIG91dC1vZi1ib3VuZHMgcGFyYW1l
dGVycworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1Rlc3QgZW1wdHkgYnVmZmVyCitQ
QVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMSkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1Mg
Y29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAxMDAwMCkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1Mg
Y29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAxMDAwMDAwMDAwMDAwMCkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAx
MS4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAtMSkgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4K
K1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCAwKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFT
UyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIC0xLCAwKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBj
b250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDEsIC0xKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBjb250
ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIC0xLCAxKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorCitUZXN0IGJ1ZmZl
ciB3aXRoIDMgZmxvYXQgdmVjdG9ycworUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5U
UklBTkdMRVMsIDAsIDMpIGlzIHVuZGVmaW5lZAorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29u
dGV4dC5UUklBTkdMRVMsIDMsIDIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFU
RV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0
LlRSSUFOR0xFUywgMCwgMTAwMDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFU
RV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0
LlRSSUFOR0xFUywgMCwgMTAwMDAwMDAwMDAwMDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5W
QUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNvbnRleHQuZHJhd0FycmF5
cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgLTEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJ
RF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhj
b250ZXh0LlRSSUFOR0xFUywgLTEsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9T
VEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250
ZXh0LlRSSUFOR0xFUywgMSwgLTEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFU
RV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0
LlRSSUFOR0xFUywgLTEsIDEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9F
UlI6IERPTSBFeGNlcHRpb24gMTEuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9k
cmF3QXJyYXlzT3V0T2ZCb3VuZHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9kcmF3QXJyYXlzT3V0T2ZCb3VuZHMuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXdBcnJheXNPdXRPZkJvdW5kcy5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBvZiBkcmF3QXJyYXlz
IHdpdGggb3V0LW9mLWJvdW5kcyBwYXJhbWV0ZXJzIik7CisKK3ZhciBjb250ZXh0ID0gY3JlYXRl
M0RDb250ZXh0KCk7Cit2YXIgcHJvZ3JhbSA9IGxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dCk7
CisKK2NvbnRleHQudXNlUHJvZ3JhbShwcm9ncmFtKTsKK3ZhciB2ZXJ0ZXhPYmplY3QgPSBjb250
ZXh0LmNyZWF0ZUJ1ZmZlcigpOworY29udGV4dC5iaW5kQnVmZmVyKGNvbnRleHQuQVJSQVlfQlVG
RkVSLCB2ZXJ0ZXhPYmplY3QpOworY29udGV4dC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsK
KworZGVidWcoIlRlc3QgZW1wdHkgYnVmZmVyIikKK2NvbnRleHQuYnVmZmVyRGF0YShjb250ZXh0
LkFSUkFZX0JVRkZFUiwgbmV3IFdlYkdMRmxvYXRBcnJheShbICBdKSwgY29udGV4dC5TVEFUSUNf
RFJBVyk7Citjb250ZXh0LnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgY29udGV4dC5GTE9BVCwg
ZmFsc2UsIDAsIDApOworc2hvdWxkVGhyb3coImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRS
SUFOR0xFUywgMCwgMSkiKTsKK3Nob3VsZFRocm93KCJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4
dC5UUklBTkdMRVMsIDAsIDEwMDAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZHJhd0FycmF5
cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMTAwMDAwMDAwMDAwMDApIik7CitzaG91bGRUaHJvdygi
Y29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAtMSkiKTsKK3Nob3VsZFRo
cm93KCJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDEsIDApIik7CitzaG91
bGRUaHJvdygiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAtMSwgMCkiKTsK
K3Nob3VsZFRocm93KCJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDEsIC0x
KSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywg
LTEsIDEpIik7CisKK2RlYnVnKCIiKQorZGVidWcoIlRlc3QgYnVmZmVyIHdpdGggMyBmbG9hdCB2
ZWN0b3JzIikKK2NvbnRleHQuYnVmZmVyRGF0YShjb250ZXh0LkFSUkFZX0JVRkZFUiwgbmV3IFdl
YkdMRmxvYXRBcnJheShbIDAsMC41LDAsIC0wLjUsLTAuNSwwLCAwLjUsLTAuNSwwIF0pLCBjb250
ZXh0LlNUQVRJQ19EUkFXKTsKK2NvbnRleHQudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBjb250
ZXh0LkZMT0FULCBmYWxzZSwgMCwgMCk7CitzaG91bGRCZSgiY29udGV4dC5kcmF3QXJyYXlzKGNv
bnRleHQuVFJJQU5HTEVTLCAwLCAzKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZFRocm93KCJjb250
ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDMsIDIpIik7CitzaG91bGRUaHJvdygi
Y29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAxMDAwMCkiKTsKK3Nob3Vs
ZFRocm93KCJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIDEwMDAwMDAw
MDAwMDAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFO
R0xFUywgMCwgLTEpIik7CitzaG91bGRUaHJvdygiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQu
VFJJQU5HTEVTLCAtMSwgMCkiKTsKK3Nob3VsZFRocm93KCJjb250ZXh0LmRyYXdBcnJheXMoY29u
dGV4dC5UUklBTkdMRVMsIDEsIC0xKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZHJhd0FycmF5
cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIDEpIik7CisKK2RlYnVnKCIiKQorc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3RWxlbWVudHNzT3V0T2ZCb3VuZHMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2Ry
YXdFbGVtZW50c3NPdXRPZkJvdW5kcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3RWxlbWVudHNzT3V0T2ZCb3VuZHMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACitUZXN0IG9mIGRyYXdFbGVtZW50
cyB3aXRoIG91dC1vZi1ib3VuZHMgcGFyYW1ldGVycworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKK1Rlc3QgZW1wdHkgaW5kZXggYnVmZmVyCitQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRz
KGNvbnRleHQuVFJJQU5HTEVTLCAzLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNT
IGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxMDAwMCwgY29udGV4dC5V
TlNJR05FRF9CWVRFLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJS
OiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRS
SUFOR0xFUywgMTAwMDAwMDAwMDAwMDAsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BB
U1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEsIGNvbnRleHQuVU5T
SUdORURfQllURSwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjog
RE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklB
TkdMRVMsIDAsIGNvbnRleHQuVU5TSUdORURfQllURSwgLTEpIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNvbnRleHQuZHJh
d0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAtMSwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAx
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9u
IDExLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgY29u
dGV4dC5VTlNJR05FRF9CWVRFLCAtMSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NU
QVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KKworVGVzdCBidWZmZXIgd2l0aCAzIGJ5dGUgaW5k
ZXhlcworUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMywgY29u
dGV4dC5VTlNJR05FRF9CWVRFLCAwKSBpcyB1bmRlZmluZWQKK1BBU1MgY29udGV4dC5kcmF3RWxl
bWVudHMoY29udGV4dC5UUklBTkdMRVMsIDMsIGNvbnRleHQuVU5TSUdORURfQllURSwgMikgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4K
K1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwLCBjb250
ZXh0LlVOU0lHTkVEX0JZVEUsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFU
RV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRl
eHQuVFJJQU5HTEVTLCAxMDAwMDAwMDAwMDAwMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDEx
LgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgY29udGV4
dC5VTlNJR05FRF9CWVRFLCAtMSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRF
X0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4
dC5UUklBTkdMRVMsIC0xLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDEpIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGNvbnRl
eHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCBjb250ZXh0LlVOU0lHTkVEX0JZ
VEUsIC0xKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhj
ZXB0aW9uIDExLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZHJhd0VsZW1lbnRz
c091dE9mQm91bmRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvZHJhd0VsZW1lbnRzc091dE9mQm91bmRzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3RWxlbWVudHNzT3V0T2ZCb3VuZHMuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qgb2YgZHJhd0VsZW1lbnRz
IHdpdGggb3V0LW9mLWJvdW5kcyBwYXJhbWV0ZXJzIik7CisKK3ZhciBjb250ZXh0ID0gY3JlYXRl
M0RDb250ZXh0KCk7Cit2YXIgcHJvZ3JhbSA9IGxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dCk7
CisKK2NvbnRleHQudXNlUHJvZ3JhbShwcm9ncmFtKTsKK3ZhciB2ZXJ0ZXhPYmplY3QgPSBjb250
ZXh0LmNyZWF0ZUJ1ZmZlcigpOworY29udGV4dC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsK
K2NvbnRleHQuYmluZEJ1ZmZlcihjb250ZXh0LkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsK
K2NvbnRleHQuYnVmZmVyRGF0YShjb250ZXh0LkFSUkFZX0JVRkZFUiwgbmV3IFdlYkdMRmxvYXRB
cnJheShbIDAsMC41LDAsIC0wLjUsLTAuNSwwLCAwLjUsLTAuNSwwIF0pLCBjb250ZXh0LlNUQVRJ
Q19EUkFXKTsKK2NvbnRleHQudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBjb250ZXh0LkZMT0FU
LCBmYWxzZSwgMCwgMCk7CisKK3ZhciBpbmRleE9iamVjdCA9IGNvbnRleHQuY3JlYXRlQnVmZmVy
KCk7CisKK2RlYnVnKCJUZXN0IGVtcHR5IGluZGV4IGJ1ZmZlciIpCitjb250ZXh0LmJpbmRCdWZm
ZXIoY29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kZXhPYmplY3QpOworY29udGV4dC5i
dWZmZXJEYXRhKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBXZWJHTFVuc2lnbmVk
Qnl0ZUFycmF5KFsgIF0pLCBjb250ZXh0LlNUQVRJQ19EUkFXKTsKK3Nob3VsZFRocm93KCJjb250
ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMywgY29udGV4dC5VTlNJR05FRF9C
WVRFLCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJ
QU5HTEVTLCAxMDAwMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSIpOworc2hvdWxkVGhyb3co
ImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxMDAwMDAwMDAwMDAwMCwg
Y29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZHJhd0Vs
ZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIik7
CitzaG91bGRUaHJvdygiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDAs
IGNvbnRleHQuVU5TSUdORURfQllURSwgLTEpIik7CitzaG91bGRUaHJvdygiY29udGV4dC5kcmF3
RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIC0xLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDEp
Iik7CitzaG91bGRUaHJvdygiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMs
IDEsIGNvbnRleHQuVU5TSUdORURfQllURSwgLTEpIik7CisKK2RlYnVnKCIiKQorZGVidWcoIlRl
c3QgYnVmZmVyIHdpdGggMyBieXRlIGluZGV4ZXMiKQorY29udGV4dC5iaW5kQnVmZmVyKGNvbnRl
eHQuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4T2JqZWN0KTsKK2NvbnRleHQuYnVmZmVyRGF0
YShjb250ZXh0LkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBuZXcgV2ViR0xVbnNpZ25lZEJ5dGVBcnJh
eShbIDAsIDEsIDIgXSksIGNvbnRleHQuU1RBVElDX0RSQVcpOworc2hvdWxkQmUoImNvbnRleHQu
ZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAzLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUs
IDApIiwgInVuZGVmaW5lZCIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZHJhd0VsZW1lbnRzKGNv
bnRleHQuVFJJQU5HTEVTLCAzLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDIpIik7CitzaG91bGRU
aHJvdygiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwLCBjb250
ZXh0LlVOU0lHTkVEX0JZVEUsIDApIik7CitzaG91bGRUaHJvdygiY29udGV4dC5kcmF3RWxlbWVu
dHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwMDAwMDAwMDAwLCBjb250ZXh0LlVOU0lHTkVEX0JZ
VEUsIDApIik7CitzaG91bGRUaHJvdygiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklB
TkdMRVMsIDAsIGNvbnRleHQuVU5TSUdORURfQllURSwgLTEpIik7CitzaG91bGRUaHJvdygiY29u
dGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIC0xLCBjb250ZXh0LlVOU0lHTkVE
X0JZVEUsIDEpIik7CitzaG91bGRUaHJvdygiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5U
UklBTkdMRVMsIDEsIGNvbnRleHQuVU5TSUdORURfQllURSwgLTEpIik7CisKK2RlYnVnKCIiKQor
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>
<flag name="review"
          id="25462"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>