<?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>166295</bug_id>
          
          <creation_ts>2016-12-20 15:55:02 -0800</creation_ts>
          <short_desc>WebAssembly JS API: cleanup &amp; pass VM around to {Compile/Runtime}Error</short_desc>
          <delta_ts>2016-12-21 12:34:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>165805</dependson>
          <blocked>159775</blocked>
    
    <blocked>166349</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1261826</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-20 15:55:02 -0800</bug_when>
    <thetext>As suggested here: https://bugs.webkit.org/show_bug.cgi?id=165805#c3
These should be updated accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261828</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-12-20 15:55:44 -0800</bug_when>
    <thetext>&lt;rdar://problem/29762017&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261843</commentid>
    <comment_count>2</comment_count>
      <attachid>297568</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-20 16:43:05 -0800</bug_when>
    <thetext>Created attachment 297568
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261858</commentid>
    <comment_count>3</comment_count>
      <attachid>297568</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-20 17:20:08 -0800</bug_when>
    <thetext>Comment on attachment 297568
patch

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

I think this needs some fixes.

&gt; JSTests/wasm/function-tests/trap-store-2.js:49
&gt; +        assert.throws(() =&gt; foo(i, address), WebAssembly.RuntimeError, &quot;Out of bounds memory access&quot;);

This is a difference in behavior.  The original does &quot;foo(6, address);&quot; instead.  Which one is the bug?

&gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:1158
&gt; +            JSWebAssemblyRuntimeError* error = JSWebAssemblyRuntimeError::create(exec, vm, globalObject-&gt;WebAssemblyRuntimeErrorStructure(), Wasm::errorMessageForExceptionType(type));

You should use VM&amp; instead of VM* because VM should always be valid.

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyCompileError.cpp:35
&gt; +JSWebAssemblyCompileError* JSWebAssemblyCompileError::create(ExecState* state, VM* vm, Structure* structure, const String&amp; message)

Ditto.  Use VM&amp;.

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyCompileError.cpp:38
&gt; +    instance-&gt;m_sourceAppender = defaultSourceAppender;

This is a change in behavior that is not described in your ChangeLog.  Is this intentional?  If intentional, why not do it in finishCreation() where we are supposed to initialize the object?

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyCompileError.h:39
&gt; +    static JSWebAssemblyCompileError* create(ExecState*, VM*, Structure*, const String&amp;);
&gt; +    static JSWebAssemblyCompileError* create(ExecState* state, VM* vm, Structure* structure, JSValue message)

Use VM&amp; instead of VM*.

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyRuntimeError.cpp:35
&gt; +JSWebAssemblyRuntimeError* JSWebAssemblyRuntimeError::create(ExecState* state, VM* vm, Structure* structure, const String&amp; message)

Use VM&amp;.

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyRuntimeError.cpp:38
&gt; +    instance-&gt;m_sourceAppender = defaultSourceAppender;

Do this initialization in finishCreation() where we do all initialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261895</commentid>
    <comment_count>4</comment_count>
      <attachid>297568</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-20 22:29:44 -0800</bug_when>
    <thetext>Comment on attachment 297568
patch

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

&gt;&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyCompileError.cpp:38
&gt;&gt; +    instance-&gt;m_sourceAppender = defaultSourceAppender;
&gt; 
&gt; This is a change in behavior that is not described in your ChangeLog.  Is this intentional?  If intentional, why not do it in finishCreation() where we are supposed to initialize the object?

That&apos;s where ErrorInstance does it, so I did the same. Should I fix both?

Agreed on adding to ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261898</commentid>
    <comment_count>5</comment_count>
      <attachid>297581</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-20 22:49:20 -0800</bug_when>
    <thetext>Created attachment 297581
patch

Address other comments:
 - Use VM&amp;.
 - Fix copy-paste mistake in a test.
 - Mention behavior change for source appender in ChangeLog.

See comment above for finishCreation(), I haven&apos;t changed it for now, let me know which way to go (change ErrorInstance as well, or leave both as-is).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261977</commentid>
    <comment_count>6</comment_count>
      <attachid>297568</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-21 09:18:24 -0800</bug_when>
    <thetext>Comment on attachment 297568
patch

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

&gt;&gt;&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyCompileError.cpp:38
&gt;&gt;&gt; +    instance-&gt;m_sourceAppender = defaultSourceAppender;
&gt;&gt; 
&gt;&gt; This is a change in behavior that is not described in your ChangeLog.  Is this intentional?  If intentional, why not do it in finishCreation() where we are supposed to initialize the object?
&gt; 
&gt; That&apos;s where ErrorInstance does it, so I did the same. Should I fix both?
&gt; 
&gt; Agreed on adding to ChangeLog.

You&apos;re right.  I still think it&apos;s bad form to do initialization work outside of finishCreation().  We should avoid it.  If we want to be pedantic, then I&apos;d say fix ErrorInstance too in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261983</commentid>
    <comment_count>7</comment_count>
      <attachid>297581</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-21 09:28:29 -0800</bug_when>
    <thetext>Comment on attachment 297581
patch

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

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyCompileError.cpp:38
&gt; +    instance-&gt;m_sourceAppender = defaultSourceAppender;

I&apos;ll let this slide for now because of ErrorInstance&apos;s bad form.  I think we should fix this eventually to do this initialization in finishCreation().  Otherwise, there&apos;s no point in having a separate finishCreation() from this create() function.

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyRuntimeError.cpp:38
&gt; +    instance-&gt;m_sourceAppender = defaultSourceAppender;

Ditto.

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyRuntimeError.cpp:39
&gt; +    instance-&gt;finishCreation(state, vm, message, true);

We&apos;re unconditionally passing true for useCurrentFrame here, but the original client of JSWebAssemblyRuntimeError::create() passes false.  Is this intentional?

Side note: as a matter of style, when passing bools like this, it&apos;s hard to tell what that bool is for.  So, instead, this is how we express it to make it clear what we&apos;re passing true for:
     bool useCurrentFrame = true;
     instance-&gt;finishCreation(state, vm, message, useCurrentFrame);

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyRuntimeErrorConstructor.cpp:54
&gt; -    return JSValue::encode(JSWebAssemblyRuntimeError::create(state, structure, message, false));
&gt; +    return JSValue::encode(JSWebAssemblyRuntimeError::create(state, vm, structure, message));

Originally, we&apos;re passing false for useCurrentFrame here but in the new JSWebAssemblyRuntimeError::create() we always pass true.  Is this intentional?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261996</commentid>
    <comment_count>8</comment_count>
      <attachid>297596</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-21 09:58:53 -0800</bug_when>
    <thetext>Created attachment 297596
patch

(In reply to comment #7)
&gt; Comment on attachment 297581 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=297581&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyCompileError.cpp:38
&gt; &gt; +    instance-&gt;m_sourceAppender = defaultSourceAppender;
&gt; 
&gt; I&apos;ll let this slide for now because of ErrorInstance&apos;s bad form.  I think we
&gt; should fix this eventually to do this initialization in finishCreation(). 
&gt; Otherwise, there&apos;s no point in having a separate finishCreation() from this
&gt; create() function.

Sounds good, I&apos;ll do this in a follow-up.

&gt; &gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyRuntimeError.cpp:39
&gt; &gt; +    instance-&gt;finishCreation(state, vm, message, true);
&gt; 
&gt; We&apos;re unconditionally passing true for useCurrentFrame here, but the
&gt; original client of JSWebAssemblyRuntimeError::create() passes false.  Is
&gt; this intentional?

Ah yes, it seems clearer. Added to the ChangeLog.
 
&gt; Side note: as a matter of style, when passing bools like this, it&apos;s hard to
&gt; tell what that bool is for.  So, instead, this is how we express it to make
&gt; it clear what we&apos;re passing true for:
&gt;      bool useCurrentFrame = true;
&gt;      instance-&gt;finishCreation(state, vm, message, useCurrentFrame);

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261999</commentid>
    <comment_count>9</comment_count>
      <attachid>297596</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-21 10:05:08 -0800</bug_when>
    <thetext>Comment on attachment 297596
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262086</commentid>
    <comment_count>10</comment_count>
      <attachid>297596</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-21 12:34:47 -0800</bug_when>
    <thetext>Comment on attachment 297596
patch

Clearing flags on attachment: 297596

Committed r210073: &lt;http://trac.webkit.org/changeset/210073&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262087</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-21 12:34:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297568</attachid>
            <date>2016-12-20 16:43:05 -0800</date>
            <delta_ts>2016-12-20 22:49:20 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-error-cleanup.patch</filename>
            <type>text/plain</type>
            <size>21778</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA3ODY3ZWRiYmE4MmFmMzllZTJmZTJkMWViYTU2Y2UxZGY2MjdiMmZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDIwIERlYyAyMDE2IDE2OjM4OjM5IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gZXJyb3It
Y2xlYW51cAoKLS0tCiBKU1Rlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IDI4ICsrKysrKysrKysrKysrKysrKysrCiBKU1Rlc3RzL3dhc20vYXNzZXJ0Lmpz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyICsrKysrKystLQogSlNUZXN0cy93YXNt
L2Z1bmN0aW9uLXRlc3RzL2V4Y2VwdGlvbnMuanMgICAgICAgICAgfCAgNiArKy0tLQogSlNUZXN0
cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC0yLmpzICAgICAgICAgfCAyNCArKysrKy0t
LS0tLS0tLS0tLQogSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC5qcyAgICAg
ICAgICAgfCAxOCArKystLS0tLS0tLS0tCiBKU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJh
cC1zdG9yZS0yLmpzICAgICAgICB8IDE5ICsrKy0tLS0tLS0tLS0tCiBKU1Rlc3RzL3dhc20vZnVu
Y3Rpb24tdGVzdHMvdHJhcC1zdG9yZS5qcyAgICAgICAgICB8IDE5ICsrKy0tLS0tLS0tLS0tCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8IDMwICsr
KysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcCAgICAgIHwgIDMgKy0tCiAuLi4vd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGls
ZUVycm9yLmNwcCAgICAgICAgICB8IDE0ICsrKysrLS0tLS0KIC4uLi93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3IuaCAgICAgICAgICAgIHwgIDggKysrLS0tCiAuLi4vd2FzbS9qcy9K
U1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmNwcCAgICAgICAgICB8ICA5ICsrKystLS0KIC4uLi93
YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCAgICAgICAgICAgIHwgIDYgKystLS0K
IC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwIHwgIDIg
Ky0KIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwICAgICAgIHwg
IDIgKy0KIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3Bw
IHwgIDIgKy0KIDE2IGZpbGVzIGNoYW5nZWQsIDEwOSBpbnNlcnRpb25zKCspLCA5MyBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDEzNDZlZDMuLjFiY2FjMDQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzMgQEAKIDIwMTYtMTItMjAgIEpGIEJh
c3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCisgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQ
STogY2xlYW51cCAmIHBhc3MgVk0gYXJvdW5kIHRvIHtDb21waWxlL1J1bnRpbWV9RXJyb3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjI5NQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjk3NjIwMTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRlc3RzIHRvIGdlbmVyYXRlIG5ldyBlcnJv
ciBtZXNzYWdlcy4gQWRhcHQgc29tZSB0byB1c2UgdGhlCisgICAgICAgIGFzc2VydC5qcyBtb2R1
bGUuCisKKyAgICAgICAgKiB3YXNtL2Fzc2VydC5qczogYWxsb3cgZmlsdGVyaW5nIG91dCBzb21l
dGltZXMtdXNlbGVzcyBzb3VyY2UKKyAgICAgICAgbG9jYXRpb24gaW5mb3JtYXRpb24uIFJldHVy
biB0aGUgZXhjZXB0aW9uIHNvIHRoYXQgZnVydGhlcgorICAgICAgICBwcm9jZXNzaW5nIGNhbiBv
Y2N1ciBvbiBpdCBhcyBkZXNpcmVkLgorICAgICAgICAqIHdhc20vZnVuY3Rpb24tdGVzdHMvZXhj
ZXB0aW9ucy5qczoKKyAgICAgICAgKiB3YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC0yLmpz
OgorICAgICAgICAoYXNzZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKGkuY2F0Y2gpOiBEZWxldGVk
LgorICAgICAgICAqIHdhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLmpzOgorICAgICAgICAo
YXNzZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKGkuY2F0Y2gpOiBEZWxldGVkLgorICAgICAgICAq
IHdhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1zdG9yZS0yLmpzOgorICAgICAgICAoaW1wb3J0LkJ1
aWxkZXIuZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hc3NlcnQpOiBEZWxldGVkLgorICAgICAg
ICAoaS5jYXRjaCk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFw
LXN0b3JlLmpzOgorICAgICAgICAoaW1wb3J0LkJ1aWxkZXIuZnJvbS5zdHJpbmdfYXBwZWFyZWRf
aGVyZS5hc3NlcnQpOiBEZWxldGVkLgorICAgICAgICAoaS5jYXRjaCk6IERlbGV0ZWQuCisKKzIw
MTYtMTItMjAgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFdl
YkFzc2VtYmx5IEFQSTogaW1wbGVtZW50IFdlYkFzc2VtYmx5LkxpbmtFcnJvcgogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1ODA1CiAgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yOTc0Nzg3ND4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9hc3NlcnQu
anMgYi9KU1Rlc3RzL3dhc20vYXNzZXJ0LmpzCmluZGV4IGNjMDI4NTEuLjRkMjg3MjAgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvd2FzbS9hc3NlcnQuanMKKysrIGIvSlNUZXN0cy93YXNtL2Fzc2VydC5q
cwpAQCAtMTAzLDEyICsxMDMsMjAgQEAgZXhwb3J0IGNvbnN0IGxlID0gKGxocywgcmhzLCBtc2cp
ID0+IHsKICAgICAgICAgX2ZhaWwoYEV4cGVjdGVkOiAiJHtsaHN9IiA+ICIke3Joc30iYCwgbXNn
KTsKIH07CiAKKy8vIElnbm9yZSBzb3VyY2UgaW5mb3JtYXRpb24gYXQgdGhlIGVuZCBvZiB0aGUg
ZXJyb3IgbWVzc2FnZSBpZiB0aGUgZXhwZWN0ZWQgbWVzc2FnZSBkaWRuJ3Qgc3BlY2lmeSB0aGF0
IGluZm9ybWF0aW9uLiBTb21ldGltZXMgaXQgY2hhbmdlcywgb3IgaXQncyB0cmlja3kgdG8gZ2V0
IGp1c3QgcmlnaHQuCitjb25zdCBfc291cmNlUmUgPSBuZXcgUmVnRXhwKC8gXChldmFsdWF0aW5n
ICcuKidcKS8pOworCiBjb25zdCBfdGhyb3dzID0gKGZ1bmMsIHR5cGUsIG1lc3NhZ2UsIC4uLmFy
Z3MpID0+IHsKICAgICB0cnkgewogICAgICAgICBmdW5jKC4uLmFyZ3MpOwogICAgIH0gY2F0Y2gg
KGUpIHsKLSAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiB0eXBlICYmIGUubWVzc2FnZSA9PT0gbWVz
c2FnZSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiB0eXBl
KSB7CisgICAgICAgICAgICBpZiAoZS5tZXNzYWdlID09PSBtZXNzYWdlKQorICAgICAgICAgICAg
ICAgIHJldHVybiBlOworICAgICAgICAgICAgY29uc3QgY2xlYW5NZXNzYWdlID0gZS5tZXNzYWdl
LnJlcGxhY2UoX3NvdXJjZVJlLCAnJyk7CisgICAgICAgICAgICBpZiAoY2xlYW5NZXNzYWdlID09
PSBtZXNzYWdlKQorICAgICAgICAgICAgICAgIHJldHVybiBlOworICAgICAgICB9CiAgICAgICAg
IF9mYWlsKGBFeHBlY3RlZCB0byB0aHJvdyBhICR7dHlwZS5uYW1lfSB3aXRoIG1lc3NhZ2UgIiR7
bWVzc2FnZX0iLCBnb3QgJHtlLm5hbWV9IHdpdGggbWVzc2FnZSAiJHtlLm1lc3NhZ2V9ImApOwog
ICAgIH0KICAgICBfZmFpbChgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke3R5cGUubmFtZX0gd2l0aCBt
ZXNzYWdlICIke21lc3NhZ2V9ImApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9u
LXRlc3RzL2V4Y2VwdGlvbnMuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvZXhjZXB0
aW9ucy5qcwppbmRleCA5NTI1MTNmLi5kMmIzYTQ5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20v
ZnVuY3Rpb24tdGVzdHMvZXhjZXB0aW9ucy5qcworKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24t
dGVzdHMvZXhjZXB0aW9ucy5qcwpAQCAtNDUsMTggKzQ1LDE4IEBAIGZ1bmN0aW9uIG1ha2VJbnN0
YW5jZSgpIHsKICAgICBhc3NlcnQuZXEodGFibGUuZ2V0KDApLCBudWxsKTsKIAogICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7Ci0gICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4g
Zm9vKDAsIGkpLCBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsICJjYWxsX2luZGlyZWN0IHRvIGEg
bnVsbCB0YWJsZSBlbnRyeSIpOworICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGZvbygwLCBp
KSwgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yLCAiY2FsbF9pbmRpcmVjdCB0byBhIG51bGwgdGFi
bGUgZW50cnkgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpOwogICAgIH0KIAogICAgIHRh
YmxlLnNldCgwLCBmb28pOwogICAgIGFzc2VydC5lcSh0YWJsZS5nZXQoMCksIGZvbyk7CiAKICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgewotICAgICAgICBhc3NlcnQudGhyb3dz
KCgpID0+IGZvbygxICsgaSwgaSksIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwgIk91dCBvZiBi
b3VuZHMgY2FsbF9pbmRpcmVjdCIpOworICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGZvbygx
ICsgaSwgaSksIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwgIk91dCBvZiBib3VuZHMgY2FsbF9p
bmRpcmVjdCAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIik7CiAgICAgfQogCiAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKLSAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9
PiBmb28oMCwgaSksIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwgImNhbGxfaW5kaXJlY3QgdG8g
YSBzaWduYXR1cmUgdGhhdCBkb2VzIG5vdCBtYXRjaCIpOworICAgICAgICBhc3NlcnQudGhyb3dz
KCgpID0+IGZvbygwLCBpKSwgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yLCAiY2FsbF9pbmRpcmVj
dCB0byBhIHNpZ25hdHVyZSB0aGF0IGRvZXMgbm90IG1hdGNoIChldmFsdWF0aW5nICdmdW5jKC4u
LmFyZ3MpJykiKTsKICAgICB9CiAKICAgICB0YWJsZS5zZXQoMCwgYmFyKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWxvYWQtMi5qcyBiL0pTVGVzdHMvd2Fz
bS9mdW5jdGlvbi10ZXN0cy90cmFwLWxvYWQtMi5qcwppbmRleCAyYzQwNzVmLi5kZmU5MTdjIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLTIuanMKKysr
IGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC0yLmpzCkBAIC0xLDQgKzEs
NSBAQAogaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcycKK2ltcG9ydCAqIGFzIGFz
c2VydCBmcm9tICcuLi9hc3NlcnQuanMnCiAKIGNvbnN0IHBhZ2VTaXplID0gNjQgKiAxMDI0Owog
Y29uc3QgbnVtUGFnZXMgPSAxMDsKQEAgLTE4LDExICsxOSw2IEBAIGNvbnN0IGJ1aWxkZXIgPSAo
bmV3IEJ1aWxkZXIoKSkKICAgICAgICAgLkVuZCgpCiAgICAgLkVuZCgpOwogCi1mdW5jdGlvbiBh
c3NlcnQoYikgewotICAgIGlmICghYikKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQiKQot
fQotCiBmdW5jdGlvbiB3YXNtRnJhbWVDb3VudEZyb21FcnJvcihlKSB7CiAgICAgbGV0IHN0YWNr
RnJhbWVzID0gZS5zdGFjay5zcGxpdCgiXG4iKS5maWx0ZXIoKHMpID0+IHMuaW5kZXhPZigiPHdh
c20+QFt3YXNtIGNvZGVdIikgIT09IC0xKTsKICAgICByZXR1cm4gc3RhY2tGcmFtZXMubGVuZ3Ro
OwpAQCAtNzAsMTggKzY2LDEwIEBAIGZ1bmN0aW9uIHdhc21GcmFtZUNvdW50RnJvbUVycm9yKGUp
IHsKICAgICB9CiAKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDA7IGkrKykgewotICAgICAg
ICBsZXQgdGhyZXcgPSBmYWxzZTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGZvbyg1LCBh
ZGRyZXNzKTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICBhc3NlcnQoZSBpbnN0
YW5jZW9mIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcik7Ci0gICAgICAgICAgICBhc3NlcnQoZS5t
ZXNzYWdlID09PSAiT3V0IG9mIGJvdW5kcyBtZW1vcnkgYWNjZXNzIik7Ci0gICAgICAgICAgICAv
LyBUaGVyZSBhcmUgNSB0b3RhbCBjYWxscywgYW5kIGVhY2ggY2FsbCBkb2VzOgotICAgICAgICAg
ICAgLy8gSlMgZW50cnksIHdhc20gZW50cnksIGpzIGNhbGwgc3R1Yi4KLSAgICAgICAgICAgIC8v
IFRoZSBsYXN0IGNhbGwgdGhhdCB0cmFwcyBqdXN0IGhhcyBKUyBlbnRyeSBhbmQgd2FzbSBlbnRy
eS4KLSAgICAgICAgICAgIGFzc2VydCh3YXNtRnJhbWVDb3VudEZyb21FcnJvcihlKSA9PT0gNSAq
IDMgKyAyKTsKLSAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBh
c3NlcnQodGhyZXcpOworICAgICAgICBjb25zdCBlID0gYXNzZXJ0LnRocm93cygoKSA9PiBmb28o
NSwgYWRkcmVzcyksIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwgIk91dCBvZiBib3VuZHMgbWVt
b3J5IGFjY2VzcyAoZXZhbHVhdGluZyAnZm9vKHggLSAxLCBhZGRyZXNzKScpIik7CisgICAgICAg
IC8vIFRoZXJlIGFyZSA1IHRvdGFsIGNhbGxzLCBhbmQgZWFjaCBjYWxsIGRvZXM6CisgICAgICAg
IC8vIEpTIGVudHJ5LCB3YXNtIGVudHJ5LCBqcyBjYWxsIHN0dWIuCisgICAgICAgIC8vIFRoZSBs
YXN0IGNhbGwgdGhhdCB0cmFwcyBqdXN0IGhhcyBKUyBlbnRyeSBhbmQgd2FzbSBlbnRyeS4KKyAg
ICAgICAgYXNzZXJ0LmVxKHdhc21GcmFtZUNvdW50RnJvbUVycm9yKGUpLCA1ICogMyArIDIpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWxv
YWQuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLmpzCmluZGV4IDU0
MmY3M2MuLjRkZDgyZGMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90
cmFwLWxvYWQuanMKKysrIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC5q
cwpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnCitp
bXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJwogCiBjb25zdCBwYWdlU2l6ZSA9
IDY0ICogMTAyNDsKIGNvbnN0IG51bVBhZ2VzID0gMTA7CkBAIC0yMiwyNSArMjMsMTIgQEAgY29u
c3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpOwogY29uc3QgbW9kdWxlID0gbmV3
IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pOwogY29uc3QgZm9vID0gbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG1vZHVsZSwge2E6IHtiOiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiBu
dW1QYWdlc30pfX0pLmV4cG9ydHMuZm9vOwogCi1mdW5jdGlvbiBhc3NlcnQoYikgewotICAgIGlm
ICghYikKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQiKQotfQotCiBmdW5jdGlvbiB3YXNt
RnJhbWVDb3VudEZyb21FcnJvcihlKSB7CiAgICAgbGV0IHN0YWNrRnJhbWVzID0gZS5zdGFjay5z
cGxpdCgiXG4iKS5maWx0ZXIoKHMpID0+IHMuaW5kZXhPZigiPHdhc20+QFt3YXNtIGNvZGVdIikg
IT09IC0xKTsKICAgICByZXR1cm4gc3RhY2tGcmFtZXMubGVuZ3RoOwogfQogCiBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDA7IGkrKykgewotICAgIGxldCB0aHJldyA9IGZhbHNlOwotICAgIHRyeSB7
Ci0gICAgICAgIGZvbyhudW1QYWdlcyAqIHBhZ2VTaXplICsgMSk7Ci0gICAgfSBjYXRjaChlKSB7
Ci0gICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKTsK
LSAgICAgICAgYXNzZXJ0KGUubWVzc2FnZSA9PT0gIk91dCBvZiBib3VuZHMgbWVtb3J5IGFjY2Vz
cyIpOwotICAgICAgICB0aHJldyA9IHRydWU7Ci0gICAgICAgIGFzc2VydCh3YXNtRnJhbWVDb3Vu
dEZyb21FcnJvcihlKSA9PT0gMik7Ci0gICAgfQotICAgIGFzc2VydCh0aHJldyk7CisgICAgY29u
c3QgZSA9IGFzc2VydC50aHJvd3MoKCkgPT4gZm9vKG51bVBhZ2VzICogcGFnZVNpemUgKyAxKSwg
V2ViQXNzZW1ibHkuUnVudGltZUVycm9yLCAiT3V0IG9mIGJvdW5kcyBtZW1vcnkgYWNjZXNzIChl
dmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKTsKKyAgICBhc3NlcnQuZXEod2FzbUZyYW1lQ291
bnRGcm9tRXJyb3IoZSksIDIpOwogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9u
LXRlc3RzL3RyYXAtc3RvcmUtMi5qcyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFw
LXN0b3JlLTIuanMKaW5kZXggZWNjY2MwYi4uYzFhNzFiOSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93
YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtc3RvcmUtMi5qcworKysgYi9KU1Rlc3RzL3dhc20vZnVu
Y3Rpb24tdGVzdHMvdHJhcC1zdG9yZS0yLmpzCkBAIC0xLDkgKzEsNSBAQAogaW1wb3J0IEJ1aWxk
ZXIgZnJvbSAnLi4vQnVpbGRlci5qcycKLQotZnVuY3Rpb24gYXNzZXJ0KGIpIHsKLSAgICBpZiAo
IWIpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIikKLX0KK2ltcG9ydCAqIGFzIGFzc2Vy
dCBmcm9tICcuLi9hc3NlcnQuanMnCiAKIGNvbnN0IHBhZ2VTaXplID0gNjQgKiAxMDI0OwogY29u
c3QgbnVtUGFnZXMgPSAxMDsKQEAgLTQ5LDE1ICs0NSw2IEBAIGNvbnN0IG51bVBhZ2VzID0gMTA7
CiAgICAgICAgIGZvbyh4IC0gMSwgYWRkcmVzcyk7CiAgICAgfQogCi0gICAgZm9yIChsZXQgaSA9
IDA7IGkgPCA1MDAwOyBpKyspIHsKLSAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7Ci0gICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICBmb28oNiwgYWRkcmVzcyk7Ci0gICAgICAgIH0gY2F0Y2goZSkg
ewotICAgICAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5SdW50aW1lRXJy
b3IpOwotICAgICAgICAgICAgYXNzZXJ0KGUubWVzc2FnZSA9PT0gIk91dCBvZiBib3VuZHMgbWVt
b3J5IGFjY2VzcyIpOwotICAgICAgICAgICAgdGhyZXcgPSB0cnVlOwotICAgICAgICB9Ci0gICAg
ICAgIGFzc2VydCh0aHJldyk7Ci0gICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDsg
aSsrKQorICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGZvbyhpLCBhZGRyZXNzKSwgV2ViQXNz
ZW1ibHkuUnVudGltZUVycm9yLCAiT3V0IG9mIGJvdW5kcyBtZW1vcnkgYWNjZXNzIik7CiB9CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1zdG9yZS5qcyBiL0pT
VGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLXN0b3JlLmpzCmluZGV4IDI2ZmY4MmIuLjU1
OTg3YzIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLXN0b3Jl
LmpzCisrKyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLXN0b3JlLmpzCkBAIC0x
LDkgKzEsNSBAQAogaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcycKLQotZnVuY3Rp
b24gYXNzZXJ0KGIpIHsKLSAgICBpZiAoIWIpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFk
IikKLX0KK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnCiAKIGNvbnN0IHBh
Z2VTaXplID0gNjQgKiAxMDI0OwogY29uc3QgbnVtUGFnZXMgPSAxMDsKQEAgLTI4LDE1ICsyNCw2
IEBAIGNvbnN0IG51bVBhZ2VzID0gMTA7CiAgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2Vt
Ymx5Lk1vZHVsZShiaW4pOwogICAgIGNvbnN0IGZvbyA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5j
ZShtb2R1bGUsIHthOiB7YjogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDogbnVtUGFn
ZXN9KX19KS5leHBvcnRzLmZvbzsKIAotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkr
KykgewotICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAg
ICAgIGZvbyhpLCBudW1QYWdlcyAqIHBhZ2VTaXplICsgMSk7Ci0gICAgICAgIH0gY2F0Y2goZSkg
ewotICAgICAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5SdW50aW1lRXJy
b3IpOwotICAgICAgICAgICAgYXNzZXJ0KGUubWVzc2FnZSA9PT0gIk91dCBvZiBib3VuZHMgbWVt
b3J5IGFjY2VzcyIpOwotICAgICAgICAgICAgdGhyZXcgPSB0cnVlOwotICAgICAgICB9Ci0gICAg
ICAgIGFzc2VydCh0aHJldyk7Ci0gICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7
IGkrKykKKyAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBmb28oaSwgbnVtUGFnZXMgKiBwYWdl
U2l6ZSArIDEpLCBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsICJPdXQgb2YgYm91bmRzIG1lbW9y
eSBhY2Nlc3MgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKaW5kZXggZTAyZDg0OC4uZGY3NWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzMgQEAKKzIwMTYtMTItMjAgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBw
bGUuY29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQSTogY2xlYW51cCAmIHBhc3MgVk0g
YXJvdW5kIHRvIHtDb21waWxlL1J1bnRpbWV9RXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjI5NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
Mjk3NjIwMTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVuYW1lIHRoZSBjcmVhdGUqIGZ1bmN0aW9ucywgYW5kIHBhc3MgVk0gYXJvdW5kLCBhcyBz
dWdnZXN0ZWQgZm9yCisgICAgICAgIExpbmtFcnJvciBpbiAjMTY1ODA1LgorCisgICAgICAgICog
aml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnRocm93RXhjZXB0aW9uRnJv
bVdhc21UaHVua0dlbmVyYXRvcik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29t
cGlsZUVycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcik6
CisgICAgICAgIChKU0M6OmNyZWF0ZVdlYkFzc2VtYmx5Q29tcGlsZUVycm9yKTogRGVsZXRlZC4K
KyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaDoKKyAgICAgICAg
KEpTQzo6SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNt
L2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvci5oOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5UnVudGltZUVy
cm9yOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3IpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0
ZU1vZHVsZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvcik6CisKIDIwMTYtMTItMjAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkcmVzcyBzb21lIHN0eWxlIHByb2JsZW1zIGZvdW5kIGJ5IHN0YXRpYyBh
bmFseXNpcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
CmluZGV4IDk1NTUxYzguLmM0ZmUyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTExNTUsOCArMTE1NSw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiB0aHJvd0V4Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogICAg
ICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwogICAg
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHZtLT50b3BKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpOwogCi0gICAgICAgICAgICBKU1dlYkFzc2VtYmx5
UnVudGltZUVycm9yKiBlcnJvciA9IEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZSgK
LSAgICAgICAgICAgICAgICBleGVjLCBnbG9iYWxPYmplY3QtPldlYkFzc2VtYmx5UnVudGltZUVy
cm9yU3RydWN0dXJlKCksIFdhc206OmVycm9yTWVzc2FnZUZvckV4Y2VwdGlvblR5cGUodHlwZSkp
OworICAgICAgICAgICAgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciogZXJyb3IgPSBKU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yOjpjcmVhdGUoZXhlYywgdm0sIGdsb2JhbE9iamVjdC0+V2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSwgV2FzbTo6ZXJyb3JNZXNzYWdlRm9yRXhjZXB0
aW9uVHlwZSh0eXBlKSk7CiAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Nj
b3BlLCBlcnJvcik7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcAppbmRleCAzYmY1
N2FiLi41YWJmM2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcApAQCAtMzIsMTEgKzMyLDExIEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKiBKU1dlYkFz
c2VtYmx5Q29tcGlsZUVycm9yOjpjcmVhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgYm9vbCB1c2VDdXJyZW50RnJhbWUpCitK
U1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKiBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjpjcmVh
dGUoRXhlY1N0YXRlKiBzdGF0ZSwgVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogewotICAgIGF1dG8mIHZtID0gc3RhdGUtPnZtKCk7Ci0gICAgYXV0
byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5Q29t
cGlsZUVycm9yPih2bS5oZWFwKSkgSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcih2bSwgc3RydWN0
dXJlKTsKLSAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oc3RhdGUsIHZtLCBtZXNzYWdlLCB1
c2VDdXJyZW50RnJhbWUpOworICAgIGF1dG8qIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcj4odm0tPmhlYXApKSBKU1dlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yKCp2bSwgc3RydWN0dXJlKTsKKyAgICBpbnN0YW5jZS0+bV9zb3VyY2VB
cHBlbmRlciA9IGRlZmF1bHRTb3VyY2VBcHBlbmRlcjsKKyAgICBpbnN0YW5jZS0+ZmluaXNoQ3Jl
YXRpb24oc3RhdGUsICp2bSwgbWVzc2FnZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwog
fQogCkBAIC00OCwxMSArNDgsMTEgQEAgSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6SlNXZWJB
c3NlbWJseUNvbXBpbGVFcnJvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXIKIGNvbnN0IENs
YXNzSW5mbyBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJs
eS5Db21waWxlRXJyb3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
V2ViQXNzZW1ibHlDb21waWxlRXJyb3IpIH07CiAKICAgICAKLUpTT2JqZWN0KiBjcmVhdGVXZWJB
c3NlbWJseUNvbXBpbGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKK0pTT2JqZWN0KiBjcmVhdGVKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKEV4ZWNTdGF0ZSog
c3RhdGUsIFZNKiB2bSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIEFTU0VSVCghbWVz
c2FnZS5pc0VtcHR5KCkpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0
ZShleGVjLCBnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1ibHlDb21w
aWxlRXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBl
Tm90aGluZywgdHJ1ZSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRl
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgcmV0dXJuIEpTV2ViQXNzZW1ibHlDb21waWxl
RXJyb3I6OmNyZWF0ZShzdGF0ZSwgdm0sIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1ibHlDb21waWxl
RXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBp
bGVFcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNv
bXBpbGVFcnJvci5oCmluZGV4IDZmMDVmM2UuLjA0NDM5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmgK
QEAgLTM1LDEwICszNSwxMCBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yIDogcHVi
bGljIEVycm9ySW5zdGFuY2UgewogcHVibGljOgogICAgIHR5cGVkZWYgRXJyb3JJbnN0YW5jZSBC
YXNlOwogCi0gICAgc3RhdGljIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IqIGNyZWF0ZShFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmUqLCBjb25zdCBTdHJpbmcmLCBib29sKTsKLSAgICBzdGF0aWMgSlNX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTVmFsdWUgbWVzc2FnZSwgYm9vbCB1c2VDdXJyZW50RnJhbWUpCisgICAg
c3RhdGljIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBWTSos
IFN0cnVjdHVyZSosIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5Q29t
cGlsZUVycm9yKiBjcmVhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNWYWx1ZSBtZXNzYWdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShl
eGVjLCBzdHJ1Y3R1cmUsIG1lc3NhZ2UuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogbWVzc2Fn
ZS50b1dURlN0cmluZyhleGVjKSwgdXNlQ3VycmVudEZyYW1lKTsKKyAgICAgICAgcmV0dXJuIGNy
ZWF0ZShzdGF0ZSwgdm0sIHN0cnVjdHVyZSwgbWVzc2FnZS5pc1VuZGVmaW5lZCgpID8gU3RyaW5n
KCkgOiBtZXNzYWdlLnRvV1RGU3RyaW5nKHN0YXRlKSk7CiAgICAgfQogCiAgICAgREVDTEFSRV9J
TkZPOwpAQCAtNDcsNyArNDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNXZWJBc3NlbWJseUNvbXBp
bGVFcnJvcihWTSYsIFN0cnVjdHVyZSopOwogfTsKIAotSlNPYmplY3QqIGNyZWF0ZVdlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOworSlNPYmplY3QqIGNy
ZWF0ZUpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IoRXhlY1N0YXRlKiwgVk0qLCBjb25zdCBTdHJp
bmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAKaW5kZXgg
MzEyMWVmYi4uMDA4Y2U4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAKQEAgLTMyLDExICszMiwx
MSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciogSlNX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGJvb2wgdXNlQ3VycmVudEZyYW1l
KQorSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciogSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6
Y3JlYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBhdXRvJiB2bSA9IHN0YXRlLT52bSgpOwotICAg
IGF1dG8qIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvcj4odm0uaGVhcCkpIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3Iodm0sIHN0
cnVjdHVyZSk7Ci0gICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHN0YXRlLCB2bSwgbWVzc2Fn
ZSwgdXNlQ3VycmVudEZyYW1lKTsKKyAgICBhdXRvKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I+KHZtLT5oZWFwKSkgSlNXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvcigqdm0sIHN0cnVjdHVyZSk7CisgICAgaW5zdGFuY2UtPm1fc291
cmNlQXBwZW5kZXIgPSBkZWZhdWx0U291cmNlQXBwZW5kZXI7CisgICAgaW5zdGFuY2UtPmZpbmlz
aENyZWF0aW9uKHN0YXRlLCAqdm0sIG1lc3NhZ2UsIHRydWUpOwogICAgIHJldHVybiBpbnN0YW5j
ZTsKIH0KIApAQCAtNDcsNiArNDcsNyBAQCBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpKU1dl
YkFzc2VtYmx5UnVudGltZUVycm9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cgogCiBjb25z
dCBDbGFzc0luZm8gSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6c19pbmZvID0geyAiV2ViQXNz
ZW1ibHkuUnVudGltZUVycm9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKSB9OwogCisgICAgCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaAppbmRl
eCAzYzc4NzllLi43YmFlYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oCkBAIC0zNSwxMCArMzUsMTAg
QEAgY2xhc3MgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciA6IHB1YmxpYyBFcnJvckluc3RhbmNl
IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEVycm9ySW5zdGFuY2UgQmFzZTsKIAotICAgIHN0YXRp
YyBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKiBjcmVhdGUoRXhlY1N0YXRlKiwgU3RydWN0dXJl
KiwgY29uc3QgU3RyaW5nJiwgYm9vbCB1c2VDdXJyZW50RnJhbWUgPSB0cnVlKTsKLSAgICBzdGF0
aWMgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUgbWVzc2FnZSwgYm9vbCB1c2VDdXJyZW50RnJhbWUp
CisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IqIGNyZWF0ZShFeGVjU3RhdGUq
LCBWTSosIFN0cnVjdHVyZSosIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBKU1dlYkFzc2Vt
Ymx5UnVudGltZUVycm9yKiBjcmVhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgVk0qIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBtZXNzYWdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIG1lc3NhZ2UuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDog
bWVzc2FnZS50b1dURlN0cmluZyhleGVjKSwgdXNlQ3VycmVudEZyYW1lKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZShzdGF0ZSwgdm0sIHN0cnVjdHVyZSwgbWVzc2FnZS5pc1VuZGVmaW5lZCgpID8g
U3RyaW5nKCkgOiBtZXNzYWdlLnRvV1RGU3RyaW5nKHN0YXRlKSk7CiAgICAgfQogCiAgICAgREVD
TEFSRV9JTkZPOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCBk
Njg1NjdhLi5mMTllODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNw
cApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKEV4ZWNTdGF0ZQogICAgIEpTVmFsdWUg
bWVzc2FnZSA9IHN0YXRlLT5hcmd1bWVudCgwKTsKICAgICBhdXRvKiBzdHJ1Y3R1cmUgPSBJbnRl
cm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShzdGF0ZSwgc3RhdGUtPm5ld1Rh
cmdldCgpLCBhc0ludGVybmFsRnVuY3Rpb24oc3RhdGUtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmpl
Y3QoKS0+V2ViQXNzZW1ibHlDb21waWxlRXJyb3JTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjpjcmVhdGUoc3RhdGUsIHN0cnVjdHVy
ZSwgbWVzc2FnZSwgZmFsc2UpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3I6OmNyZWF0ZShzdGF0ZSwgJnZtLCBzdHJ1Y3R1cmUsIG1lc3NhZ2Up
KTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggNzNjYTdhNC4uNTIyMTJmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5j
cHAKQEAgLTg0LDcgKzg0LDcgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9y
OjpjcmVhdGVNb2R1bGUoRXhlY1N0YXRlKiBzdGF0ZSwgU3RydWN0dXJlKgogICAgIC8vIE9uIGZh
aWx1cmUsIGEgbmV3IFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciBpcyB0aHJvd24uCiAgICAgcGxh
bi5ydW4oKTsKICAgICBpZiAocGxhbi5mYWlsZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXhj
ZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlV2ViQXNzZW1ibHlDb21waWxlRXJyb3Ioc3RhdGUs
IHBsYW4uZXJyb3JNZXNzYWdlKCkpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKHN0
YXRlLCBzY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihzdGF0ZSwgJnZtLCBw
bGFuLmVycm9yTWVzc2FnZSgpKSk7CiAKICAgICAvLyBPbiBzdWNjZXNzLCBhIG5ldyBXZWJBc3Nl
bWJseS5Nb2R1bGUgb2JqZWN0IGlzIHJldHVybmVkIHdpdGggW1tNb2R1bGVdXSBzZXQgdG8gdGhl
IHZhbGlkYXRlZCBBc3QubW9kdWxlLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0
b3IuY3BwCmluZGV4IDkyMGRiODMuLmM4MmE2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9y
Q29uc3RydWN0b3IuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoRXhlY1N0YXRl
CiAgICAgSlNWYWx1ZSBtZXNzYWdlID0gc3RhdGUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8qIHN0
cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKHN0YXRl
LCBzdGF0ZS0+bmV3VGFyZ2V0KCksIGFzSW50ZXJuYWxGdW5jdGlvbihzdGF0ZS0+anNDYWxsZWUo
KSktPmdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZShz
dGF0ZSwgc3RydWN0dXJlLCBtZXNzYWdlLCBmYWxzZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKHN0YXRlLCAmdm0sIHN0cnVj
dHVyZSwgbWVzc2FnZSkpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihFeGVjU3RhdGUqIHN0YXRlKQotLSAKMi45
LjMKCg==
</data>
<flag name="review"
          id="319884"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
    <flag name="commit-queue"
          id="319885"
          type_id="3"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297581</attachid>
            <date>2016-12-20 22:49:20 -0800</date>
            <delta_ts>2016-12-21 09:58:53 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-error-cleanup.patch</filename>
            <type>text/plain</type>
            <size>35407</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBmYjYwZjJkM2E1NGJlNzljZmNjYWFjYzk4N2NiMWQ4YzNiOGQxZDA0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDIwIERlYyAyMDE2IDE2OjM4OjM5IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gZXJyb3It
Y2xlYW51cAoKLS0tCiBKU1Rlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IDI4ICsrKysrKysrKysrKysrKysrKwogSlNUZXN0cy93YXNtL2Fzc2VydC5qcyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMiArKysrKystLQogSlNUZXN0cy93YXNtL2Z1
bmN0aW9uLXRlc3RzL2V4Y2VwdGlvbnMuanMgICAgICAgICAgfCAgNiArKy0tCiBKU1Rlc3RzL3dh
c20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLTIuanMgICAgICAgICB8IDI0ICsrKystLS0tLS0t
LS0tLQogSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC5qcyAgICAgICAgICAg
fCAxOCArKy0tLS0tLS0tLS0KIEpTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLXN0b3Jl
LTIuanMgICAgICAgIHwgMTkgKystLS0tLS0tLS0tCiBKU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVz
dHMvdHJhcC1zdG9yZS5qcyAgICAgICAgICB8IDE5ICsrLS0tLS0tLS0tLQogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgfCAzNCArKysrKysrKysrKysr
KysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAg
ICAgICB8ICAzICstCiAuLi4vd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcCAg
ICAgICAgICB8IDEyICsrKystLS0tCiAuLi4vd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yLmggICAgICAgICAgICB8ICA4ICsrLS0tCiAuLi4vd2FzbS9qcy9KU1dlYkFzc2VtYmx5TGlu
a0Vycm9yLmNwcCAgICAgICAgICAgICB8ICA4ICsrLS0tCiAuLi4vd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5TGlua0Vycm9yLmggICAgICAgICAgICAgICB8ICA2ICsrLS0KIC4uLi93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwICAgICAgICAgIHwgIDcgKysrLS0KIC4uLi93YXNtL2pz
L0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCAgICAgICAgICAgIHwgIDYgKystLQogLi4uL3dh
c20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgfCAgMiArLQogLi4u
L3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCAgICAgfCAyMCArKysr
KystLS0tLS0tCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNw
cCAgICB8ICAyICstCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNw
cCAgICAgICB8ICAyICstCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAg
ICAgICAgICAgICB8ICA4ICsrLS0tCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJv
ckNvbnN0cnVjdG9yLmNwcCB8ICAyICstCiAyMSBmaWxlcyBjaGFuZ2VkLCAxMzMgaW5zZXJ0aW9u
cygrKSwgMTEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDI1ZTYwZi4uMTVmMzAwZCAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAor
MjAxNi0xMi0yMCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViQXNzZW1ibHkgSlMgQVBJOiBjbGVhbnVwICYgcGFzcyBWTSBhcm91bmQgdG8ge0NvbXBpbGUv
UnVudGltZX1FcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY2Mjk1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTc2MjAxNz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGVzdHMgdG8g
Z2VuZXJhdGUgbmV3IGVycm9yIG1lc3NhZ2VzLiBBZGFwdCBzb21lIHRvIHVzZSB0aGUKKyAgICAg
ICAgYXNzZXJ0LmpzIG1vZHVsZS4KKworICAgICAgICAqIHdhc20vYXNzZXJ0LmpzOiBhbGxvdyBm
aWx0ZXJpbmcgb3V0IHNvbWV0aW1lcy11c2VsZXNzIHNvdXJjZQorICAgICAgICBsb2NhdGlvbiBp
bmZvcm1hdGlvbi4gUmV0dXJuIHRoZSBleGNlcHRpb24gc28gdGhhdCBmdXJ0aGVyCisgICAgICAg
IHByb2Nlc3NpbmcgY2FuIG9jY3VyIG9uIGl0IGFzIGRlc2lyZWQuCisgICAgICAgICogd2FzbS9m
dW5jdGlvbi10ZXN0cy9leGNlcHRpb25zLmpzOgorICAgICAgICAqIHdhc20vZnVuY3Rpb24tdGVz
dHMvdHJhcC1sb2FkLTIuanM6CisgICAgICAgIChhc3NlcnQpOiBEZWxldGVkLgorICAgICAgICAo
aS5jYXRjaCk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWxv
YWQuanM6CisgICAgICAgIChhc3NlcnQpOiBEZWxldGVkLgorICAgICAgICAoaS5jYXRjaCk6IERl
bGV0ZWQuCisgICAgICAgICogd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLXN0b3JlLTIuanM6Cisg
ICAgICAgIChpbXBvcnQuQnVpbGRlci5mcm9tLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFzc2VydCk6
IERlbGV0ZWQuCisgICAgICAgIChpLmNhdGNoKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2Z1
bmN0aW9uLXRlc3RzL3RyYXAtc3RvcmUuanM6CisgICAgICAgIChpbXBvcnQuQnVpbGRlci5mcm9t
LnN0cmluZ19hcHBlYXJlZF9oZXJlLmFzc2VydCk6IERlbGV0ZWQuCisgICAgICAgIChpLmNhdGNo
KTogRGVsZXRlZC4KKwogMjAxNi0xMi0yMCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZ2xvYmFsCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3dhc20vYXNzZXJ0LmpzIGIvSlNUZXN0cy93YXNtL2Fzc2VydC5qcwppbmRleCBjYzAy
ODUxLi40ZDI4NzIwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vYXNzZXJ0LmpzCisrKyBiL0pT
VGVzdHMvd2FzbS9hc3NlcnQuanMKQEAgLTEwMywxMiArMTAzLDIwIEBAIGV4cG9ydCBjb25zdCBs
ZSA9IChsaHMsIHJocywgbXNnKSA9PiB7CiAgICAgICAgIF9mYWlsKGBFeHBlY3RlZDogIiR7bGhz
fSIgPiAiJHtyaHN9ImAsIG1zZyk7CiB9OwogCisvLyBJZ25vcmUgc291cmNlIGluZm9ybWF0aW9u
IGF0IHRoZSBlbmQgb2YgdGhlIGVycm9yIG1lc3NhZ2UgaWYgdGhlIGV4cGVjdGVkIG1lc3NhZ2Ug
ZGlkbid0IHNwZWNpZnkgdGhhdCBpbmZvcm1hdGlvbi4gU29tZXRpbWVzIGl0IGNoYW5nZXMsIG9y
IGl0J3MgdHJpY2t5IHRvIGdldCBqdXN0IHJpZ2h0LgorY29uc3QgX3NvdXJjZVJlID0gbmV3IFJl
Z0V4cCgvIFwoZXZhbHVhdGluZyAnLionXCkvKTsKKwogY29uc3QgX3Rocm93cyA9IChmdW5jLCB0
eXBlLCBtZXNzYWdlLCAuLi5hcmdzKSA9PiB7CiAgICAgdHJ5IHsKICAgICAgICAgZnVuYyguLi5h
cmdzKTsKICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChlIGluc3RhbmNlb2YgdHlwZSAm
JiBlLm1lc3NhZ2UgPT09IG1lc3NhZ2UpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlm
IChlIGluc3RhbmNlb2YgdHlwZSkgeworICAgICAgICAgICAgaWYgKGUubWVzc2FnZSA9PT0gbWVz
c2FnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZTsKKyAgICAgICAgICAgIGNvbnN0IGNsZWFu
TWVzc2FnZSA9IGUubWVzc2FnZS5yZXBsYWNlKF9zb3VyY2VSZSwgJycpOworICAgICAgICAgICAg
aWYgKGNsZWFuTWVzc2FnZSA9PT0gbWVzc2FnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZTsK
KyAgICAgICAgfQogICAgICAgICBfZmFpbChgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke3R5cGUubmFt
ZX0gd2l0aCBtZXNzYWdlICIke21lc3NhZ2V9IiwgZ290ICR7ZS5uYW1lfSB3aXRoIG1lc3NhZ2Ug
IiR7ZS5tZXNzYWdlfSJgKTsKICAgICB9CiAgICAgX2ZhaWwoYEV4cGVjdGVkIHRvIHRocm93IGEg
JHt0eXBlLm5hbWV9IHdpdGggbWVzc2FnZSAiJHttZXNzYWdlfSJgKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9leGNlcHRpb25zLmpzIGIvSlNUZXN0cy93YXNtL2Z1
bmN0aW9uLXRlc3RzL2V4Y2VwdGlvbnMuanMKaW5kZXggOTUyNTEzZi4uZDJiM2E0OSAxMDA2NDQK
LS0tIGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2V4Y2VwdGlvbnMuanMKKysrIGIvSlNU
ZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2V4Y2VwdGlvbnMuanMKQEAgLTQ1LDE4ICs0NSwxOCBA
QCBmdW5jdGlvbiBtYWtlSW5zdGFuY2UoKSB7CiAgICAgYXNzZXJ0LmVxKHRhYmxlLmdldCgwKSwg
bnVsbCk7CiAKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgewotICAgICAgICBh
c3NlcnQudGhyb3dzKCgpID0+IGZvbygwLCBpKSwgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yLCAi
Y2FsbF9pbmRpcmVjdCB0byBhIG51bGwgdGFibGUgZW50cnkiKTsKKyAgICAgICAgYXNzZXJ0LnRo
cm93cygoKSA9PiBmb28oMCwgaSksIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwgImNhbGxfaW5k
aXJlY3QgdG8gYSBudWxsIHRhYmxlIGVudHJ5IChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJyki
KTsKICAgICB9CiAKICAgICB0YWJsZS5zZXQoMCwgZm9vKTsKICAgICBhc3NlcnQuZXEodGFibGUu
Z2V0KDApLCBmb28pOwogCiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKLSAg
ICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBmb28oMSArIGksIGkpLCBXZWJBc3NlbWJseS5SdW50
aW1lRXJyb3IsICJPdXQgb2YgYm91bmRzIGNhbGxfaW5kaXJlY3QiKTsKKyAgICAgICAgYXNzZXJ0
LnRocm93cygoKSA9PiBmb28oMSArIGksIGkpLCBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsICJP
dXQgb2YgYm91bmRzIGNhbGxfaW5kaXJlY3QgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIp
OwogICAgIH0KIAogICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7Ci0gICAgICAg
IGFzc2VydC50aHJvd3MoKCkgPT4gZm9vKDAsIGkpLCBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3Is
ICJjYWxsX2luZGlyZWN0IHRvIGEgc2lnbmF0dXJlIHRoYXQgZG9lcyBub3QgbWF0Y2giKTsKKyAg
ICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBmb28oMCwgaSksIFdlYkFzc2VtYmx5LlJ1bnRpbWVF
cnJvciwgImNhbGxfaW5kaXJlY3QgdG8gYSBzaWduYXR1cmUgdGhhdCBkb2VzIG5vdCBtYXRjaCAo
ZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIik7CiAgICAgfQogCiAgICAgdGFibGUuc2V0KDAs
IGJhcik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2Fk
LTIuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLTIuanMKaW5kZXgg
MmM0MDc1Zi4uZGZlOTE3YyAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3Rz
L3RyYXAtbG9hZC0yLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWxv
YWQtMi5qcwpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIu
anMnCitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJwogCiBjb25zdCBwYWdl
U2l6ZSA9IDY0ICogMTAyNDsKIGNvbnN0IG51bVBhZ2VzID0gMTA7CkBAIC0xOCwxMSArMTksNiBA
QCBjb25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCiAgICAgICAgIC5FbmQoKQogICAgIC5F
bmQoKTsKIAotZnVuY3Rpb24gYXNzZXJ0KGIpIHsKLSAgICBpZiAoIWIpCi0gICAgICAgIHRocm93
IG5ldyBFcnJvcigiQmFkIikKLX0KLQogZnVuY3Rpb24gd2FzbUZyYW1lQ291bnRGcm9tRXJyb3Io
ZSkgewogICAgIGxldCBzdGFja0ZyYW1lcyA9IGUuc3RhY2suc3BsaXQoIlxuIikuZmlsdGVyKChz
KSA9PiBzLmluZGV4T2YoIjx3YXNtPkBbd2FzbSBjb2RlXSIpICE9PSAtMSk7CiAgICAgcmV0dXJu
IHN0YWNrRnJhbWVzLmxlbmd0aDsKQEAgLTcwLDE4ICs2NiwxMCBAQCBmdW5jdGlvbiB3YXNtRnJh
bWVDb3VudEZyb21FcnJvcihlKSB7CiAgICAgfQogCiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1
MDAwOyBpKyspIHsKLSAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7Ci0gICAgICAgIHRyeSB7Ci0g
ICAgICAgICAgICBmb28oNSwgYWRkcmVzcyk7Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAg
ICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IpOwotICAg
ICAgICAgICAgYXNzZXJ0KGUubWVzc2FnZSA9PT0gIk91dCBvZiBib3VuZHMgbWVtb3J5IGFjY2Vz
cyIpOwotICAgICAgICAgICAgLy8gVGhlcmUgYXJlIDUgdG90YWwgY2FsbHMsIGFuZCBlYWNoIGNh
bGwgZG9lczoKLSAgICAgICAgICAgIC8vIEpTIGVudHJ5LCB3YXNtIGVudHJ5LCBqcyBjYWxsIHN0
dWIuCi0gICAgICAgICAgICAvLyBUaGUgbGFzdCBjYWxsIHRoYXQgdHJhcHMganVzdCBoYXMgSlMg
ZW50cnkgYW5kIHdhc20gZW50cnkuCi0gICAgICAgICAgICBhc3NlcnQod2FzbUZyYW1lQ291bnRG
cm9tRXJyb3IoZSkgPT09IDUgKiAzICsgMik7Ci0gICAgICAgICAgICB0aHJldyA9IHRydWU7Ci0g
ICAgICAgIH0KLSAgICAgICAgYXNzZXJ0KHRocmV3KTsKKyAgICAgICAgY29uc3QgZSA9IGFzc2Vy
dC50aHJvd3MoKCkgPT4gZm9vKDUsIGFkZHJlc3MpLCBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3Is
ICJPdXQgb2YgYm91bmRzIG1lbW9yeSBhY2Nlc3MgKGV2YWx1YXRpbmcgJ2Zvbyh4IC0gMSwgYWRk
cmVzcyknKSIpOworICAgICAgICAvLyBUaGVyZSBhcmUgNSB0b3RhbCBjYWxscywgYW5kIGVhY2gg
Y2FsbCBkb2VzOgorICAgICAgICAvLyBKUyBlbnRyeSwgd2FzbSBlbnRyeSwganMgY2FsbCBzdHVi
LgorICAgICAgICAvLyBUaGUgbGFzdCBjYWxsIHRoYXQgdHJhcHMganVzdCBoYXMgSlMgZW50cnkg
YW5kIHdhc20gZW50cnkuCisgICAgICAgIGFzc2VydC5lcSh3YXNtRnJhbWVDb3VudEZyb21FcnJv
cihlKSwgNSAqIDMgKyAyKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZnVu
Y3Rpb24tdGVzdHMvdHJhcC1sb2FkLmpzIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3Ry
YXAtbG9hZC5qcwppbmRleCA1NDJmNzNjLi40ZGQ4MmRjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dh
c20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlv
bi10ZXN0cy90cmFwLWxvYWQuanMKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgQnVpbGRlciBmcm9t
ICcuLi9CdWlsZGVyLmpzJworaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcycK
IAogY29uc3QgcGFnZVNpemUgPSA2NCAqIDEwMjQ7CiBjb25zdCBudW1QYWdlcyA9IDEwOwpAQCAt
MjIsMjUgKzIzLDEyIEBAIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsK
IGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKIGNvbnN0IGZvbyA9
IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHthOiB7YjogbmV3IFdlYkFzc2VtYmx5
Lk1lbW9yeSh7aW5pdGlhbDogbnVtUGFnZXN9KX19KS5leHBvcnRzLmZvbzsKIAotZnVuY3Rpb24g
YXNzZXJ0KGIpIHsKLSAgICBpZiAoIWIpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIikK
LX0KLQogZnVuY3Rpb24gd2FzbUZyYW1lQ291bnRGcm9tRXJyb3IoZSkgewogICAgIGxldCBzdGFj
a0ZyYW1lcyA9IGUuc3RhY2suc3BsaXQoIlxuIikuZmlsdGVyKChzKSA9PiBzLmluZGV4T2YoIjx3
YXNtPkBbd2FzbSBjb2RlXSIpICE9PSAtMSk7CiAgICAgcmV0dXJuIHN0YWNrRnJhbWVzLmxlbmd0
aDsKIH0KIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKLSAgICBsZXQgdGhyZXcg
PSBmYWxzZTsKLSAgICB0cnkgewotICAgICAgICBmb28obnVtUGFnZXMgKiBwYWdlU2l6ZSArIDEp
OwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFdlYkFzc2Vt
Ymx5LlJ1bnRpbWVFcnJvcik7Ci0gICAgICAgIGFzc2VydChlLm1lc3NhZ2UgPT09ICJPdXQgb2Yg
Ym91bmRzIG1lbW9yeSBhY2Nlc3MiKTsKLSAgICAgICAgdGhyZXcgPSB0cnVlOwotICAgICAgICBh
c3NlcnQod2FzbUZyYW1lQ291bnRGcm9tRXJyb3IoZSkgPT09IDIpOwotICAgIH0KLSAgICBhc3Nl
cnQodGhyZXcpOworICAgIGNvbnN0IGUgPSBhc3NlcnQudGhyb3dzKCgpID0+IGZvbyhudW1QYWdl
cyAqIHBhZ2VTaXplICsgMSksIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwgIk91dCBvZiBib3Vu
ZHMgbWVtb3J5IGFjY2VzcyAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIik7CisgICAgYXNz
ZXJ0LmVxKHdhc21GcmFtZUNvdW50RnJvbUVycm9yKGUpLCAyKTsKIH0KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLXN0b3JlLTIuanMgYi9KU1Rlc3RzL3dhc20v
ZnVuY3Rpb24tdGVzdHMvdHJhcC1zdG9yZS0yLmpzCmluZGV4IGVjY2NjMGIuLmNjNTUwZDcgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLXN0b3JlLTIuanMKKysr
IGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtc3RvcmUtMi5qcwpAQCAtMSw5ICsx
LDUgQEAKIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnCi0KLWZ1bmN0aW9uIGFz
c2VydChiKSB7Ci0gICAgaWYgKCFiKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCIpCi19
CitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJwogCiBjb25zdCBwYWdlU2l6
ZSA9IDY0ICogMTAyNDsKIGNvbnN0IG51bVBhZ2VzID0gMTA7CkBAIC00OSwxNSArNDUsNiBAQCBj
b25zdCBudW1QYWdlcyA9IDEwOwogICAgICAgICBmb28oeCAtIDEsIGFkZHJlc3MpOwogICAgIH0K
IAotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDsgaSsrKSB7Ci0gICAgICAgIGxldCB0aHJl
dyA9IGZhbHNlOwotICAgICAgICB0cnkgewotICAgICAgICAgICAgZm9vKDYsIGFkZHJlc3MpOwot
ICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgV2Vi
QXNzZW1ibHkuUnVudGltZUVycm9yKTsKLSAgICAgICAgICAgIGFzc2VydChlLm1lc3NhZ2UgPT09
ICJPdXQgb2YgYm91bmRzIG1lbW9yeSBhY2Nlc3MiKTsKLSAgICAgICAgICAgIHRocmV3ID0gdHJ1
ZTsKLSAgICAgICAgfQotICAgICAgICBhc3NlcnQodGhyZXcpOwotICAgIH0KKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDUwMDA7IGkrKykKKyAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBmb28o
NiwgYWRkcmVzcyksIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwgIk91dCBvZiBib3VuZHMgbWVt
b3J5IGFjY2VzcyIpOwogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3Rz
L3RyYXAtc3RvcmUuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1zdG9yZS5q
cwppbmRleCAyNmZmODJiLi41NTk4N2MyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vZnVuY3Rp
b24tdGVzdHMvdHJhcC1zdG9yZS5qcworKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMv
dHJhcC1zdG9yZS5qcwpAQCAtMSw5ICsxLDUgQEAKIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1
aWxkZXIuanMnCi0KLWZ1bmN0aW9uIGFzc2VydChiKSB7Ci0gICAgaWYgKCFiKQotICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkJhZCIpCi19CitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNz
ZXJ0LmpzJwogCiBjb25zdCBwYWdlU2l6ZSA9IDY0ICogMTAyNDsKIGNvbnN0IG51bVBhZ2VzID0g
MTA7CkBAIC0yOCwxNSArMjQsNiBAQCBjb25zdCBudW1QYWdlcyA9IDEwOwogICAgIGNvbnN0IG1v
ZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKICAgICBjb25zdCBmb28gPSBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7YToge2I6IG5ldyBXZWJBc3NlbWJseS5NZW1v
cnkoe2luaXRpYWw6IG51bVBhZ2VzfSl9fSkuZXhwb3J0cy5mb287CiAKLSAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKLSAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7Ci0gICAg
ICAgIHRyeSB7Ci0gICAgICAgICAgICBmb28oaSwgbnVtUGFnZXMgKiBwYWdlU2l6ZSArIDEpOwot
ICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgV2Vi
QXNzZW1ibHkuUnVudGltZUVycm9yKTsKLSAgICAgICAgICAgIGFzc2VydChlLm1lc3NhZ2UgPT09
ICJPdXQgb2YgYm91bmRzIG1lbW9yeSBhY2Nlc3MiKTsKLSAgICAgICAgICAgIHRocmV3ID0gdHJ1
ZTsKLSAgICAgICAgfQotICAgICAgICBhc3NlcnQodGhyZXcpOwotICAgIH0KKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwOyBpKyspCisgICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gZm9v
KGksIG51bVBhZ2VzICogcGFnZVNpemUgKyAxKSwgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yLCAi
T3V0IG9mIGJvdW5kcyBtZW1vcnkgYWNjZXNzIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJyki
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGE2NTliZDIuLjZmZmI2MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE2LTEyLTIwICBKRiBCYXN0
aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseSBKUyBBUEk6
IGNsZWFudXAgJiBwYXNzIFZNIGFyb3VuZCB0byB7Q29tcGlsZS9SdW50aW1lfUVycm9yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjYyOTUKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzI5NzYyMDE3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSB0aGUgY3JlYXRlKiBmdW5jdGlvbnMsIGFuZCBw
YXNzIFZNIGFyb3VuZCwgYXMgc3VnZ2VzdGVkIGZvcgorICAgICAgICBMaW5rRXJyb3IgaW4gIzE2
NTgwNS4KKworICAgICAgICBBdCB0aGUgc2FtZSB0aW1lLCB1c2UgdGhlIGRlZmF1bHQgc291cmNl
IGFwcGVuZGVyIHdoZW4KKyAgICAgICAgY29uc3RydWN0aW5nIHRoZXNlIGVycm9yIHR5cGVzLCB3
aGljaCBnaXZlcyBhIG5pY2UgbWFwIGJhY2sgdG8gdGhlCisgICAgICAgIG9yaWdpbmFsIHNvdXJj
ZSBhcyBwYXJ0IG9mIHRoZSBlcnJvciBtZXNzYWdlLgorCisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnRocm93RXhjZXB0aW9uRnJvbVdhc21UaHVua0dl
bmVyYXRvcik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcik6CisgICAgICAgIChK
U0M6OmNyZWF0ZVdlYkFzc2VtYmx5Q29tcGlsZUVycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKiB3
YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5UnVudGlt
ZUVycm9yOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvci5oOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpjcmVhdGUp
OgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IpOgor
ICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0ZU1vZHVsZSk6Cisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcik6CisKIDIw
MTYtMTItMjAgIFRhcmFzIFRzdWdyaWkgIDx0dHN1Z3JpaUBmYi5jb20+CiAKICAgICAgICAgRml4
IHVuZGVmaW5lZCBiZWhhdmlvciBjYXVzZWQgYnkgbWFjcm8gZXhwYW5zaW9uIHByb2R1Y2luZyAn
ZGVmaW5lZCcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cAppbmRleCA5NTU1MWM4Li43ODExODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC0xMTU1LDggKzExNTUsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgdGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKICAg
ICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKICAg
ICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB2bS0+dG9wSlNXZWJBc3Nl
bWJseUluc3RhbmNlLT5nbG9iYWxPYmplY3QoKTsKIAotICAgICAgICAgICAgSlNXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvciogZXJyb3IgPSBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpjcmVhdGUo
Ci0gICAgICAgICAgICAgICAgZXhlYywgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVJ1bnRpbWVF
cnJvclN0cnVjdHVyZSgpLCBXYXNtOjplcnJvck1lc3NhZ2VGb3JFeGNlcHRpb25UeXBlKHR5cGUp
KTsKKyAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IqIGVycm9yID0gSlNXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT5XZWJB
c3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpLCBXYXNtOjplcnJvck1lc3NhZ2VGb3JFeGNl
cHRpb25UeXBlKHR5cGUpKTsKICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93
U2NvcGUsIGVycm9yKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuY3BwCmluZGV4IDNi
ZjU3YWIuLjhlNGFhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuY3BwCkBAIC0zMiwxMSArMzIsMTEg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IqIEpTV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3I6OmNyZWF0ZShFeGVjU3RhdGUqIHN0YXRlLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBib29sIHVzZUN1cnJlbnRGcmFtZSkK
K0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IqIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OmNy
ZWF0ZShFeGVjU3RhdGUqIHN0YXRlLCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgYXV0byYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBh
dXRvKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlD
b21waWxlRXJyb3I+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKHZtLCBzdHJ1
Y3R1cmUpOwotICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbihzdGF0ZSwgdm0sIG1lc3NhZ2Us
IHVzZUN1cnJlbnRGcmFtZSk7CisgICAgaW5zdGFuY2UtPm1fc291cmNlQXBwZW5kZXIgPSBkZWZh
dWx0U291cmNlQXBwZW5kZXI7CisgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHN0YXRlLCB2
bSwgbWVzc2FnZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCkBAIC00OCwxMSAr
NDgsMTEgQEAgSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6SlNXZWJBc3NlbWJseUNvbXBpbGVF
cnJvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXIKIGNvbnN0IENsYXNzSW5mbyBKU1dlYkFz
c2VtYmx5Q29tcGlsZUVycm9yOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5Db21waWxlRXJyb3Ii
LCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3IpIH07CiAKICAgICAKLUpTT2JqZWN0KiBjcmVhdGVXZWJBc3NlbWJseUNvbXBpbGVF
cnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiBj
cmVhdGVKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKEV4ZWNTdGF0ZSogc3RhdGUsIFZNJiB2bSwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkp
OwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCk7Ci0gICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShleGVjLCBnbG9iYWxP
YmplY3QtPnZtKCksIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1ibHlDb21waWxlRXJyb3JTdHJ1Y3R1
cmUoKSwgbWVzc2FnZSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZywgdHJ1ZSk7
CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCk7CisgICAgcmV0dXJuIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OmNyZWF0ZShz
dGF0ZSwgdm0sIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1ibHlDb21waWxlRXJyb3JTdHJ1Y3R1cmUo
KSwgbWVzc2FnZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oCmlu
ZGV4IDZmMDVmM2UuLjA0ZTNmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmgKQEAgLTM1LDEwICszNSwx
MCBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yIDogcHVibGljIEVycm9ySW5zdGFu
Y2UgewogcHVibGljOgogICAgIHR5cGVkZWYgRXJyb3JJbnN0YW5jZSBCYXNlOwogCi0gICAgc3Rh
dGljIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmUqLCBjb25zdCBTdHJpbmcmLCBib29sKTsKLSAgICBzdGF0aWMgSlNXZWJBc3NlbWJseUNvbXBp
bGVFcnJvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
VmFsdWUgbWVzc2FnZSwgYm9vbCB1c2VDdXJyZW50RnJhbWUpCisgICAgc3RhdGljIEpTV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBWTSYsIFN0cnVjdHVyZSosIGNv
bnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKiBjcmVh
dGUoRXhlY1N0YXRlKiBzdGF0ZSwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1
ZSBtZXNzYWdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUs
IG1lc3NhZ2UuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogbWVzc2FnZS50b1dURlN0cmluZyhl
eGVjKSwgdXNlQ3VycmVudEZyYW1lKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShzdGF0ZSwgdm0s
IHN0cnVjdHVyZSwgbWVzc2FnZS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkgOiBtZXNzYWdlLnRv
V1RGU3RyaW5nKHN0YXRlKSk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpAQCAtNDcsNyAr
NDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihWTSYsIFN0
cnVjdHVyZSopOwogfTsKIAotSlNPYmplY3QqIGNyZWF0ZVdlYkFzc2VtYmx5Q29tcGlsZUVycm9y
KEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOworSlNPYmplY3QqIGNyZWF0ZUpTV2ViQXNzZW1i
bHlDb21waWxlRXJyb3IoRXhlY1N0YXRlKiwgVk0mLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5jcHAKaW5kZXggYmU5ZTU4NS4uMTFhMzMxZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUxpbmtF
cnJvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUxpbmtFcnJvci5jcHAKQEAgLTMyLDExICszMiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
SlNXZWJBc3NlbWJseUxpbmtFcnJvciogSlNXZWJBc3NlbWJseUxpbmtFcnJvcjo6Y3JlYXRlKEV4
ZWNTdGF0ZSogc3RhdGUsIFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKK0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IqIEpTV2ViQXNzZW1ibHlMaW5rRXJy
b3I6OmNyZWF0ZShFeGVjU3RhdGUqIHN0YXRlLCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5TGlua0Vycm9yPih2bS0+aGVhcCkpIEpT
V2ViQXNzZW1ibHlMaW5rRXJyb3IoKnZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIGluc3RhbmNl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseUxpbmtFcnJvcj4odm0u
aGVhcCkpIEpTV2ViQXNzZW1ibHlMaW5rRXJyb3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgaW5zdGFu
Y2UtPm1fc291cmNlQXBwZW5kZXIgPSBkZWZhdWx0U291cmNlQXBwZW5kZXI7Ci0gICAgaW5zdGFu
Y2UtPmZpbmlzaENyZWF0aW9uKHN0YXRlLCAqdm0sIG1lc3NhZ2UsIHRydWUpOworICAgIGluc3Rh
bmNlLT5maW5pc2hDcmVhdGlvbihzdGF0ZSwgdm0sIG1lc3NhZ2UsIHRydWUpOwogICAgIHJldHVy
biBpbnN0YW5jZTsKIH0KIApAQCAtNDgsNyArNDgsNyBAQCBKU1dlYkFzc2VtYmx5TGlua0Vycm9y
OjpKU1dlYkFzc2VtYmx5TGlua0Vycm9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiBj
b25zdCBDbGFzc0luZm8gSlNXZWJBc3NlbWJseUxpbmtFcnJvcjo6c19pbmZvID0geyAiV2ViQXNz
ZW1ibHkuTGlua0Vycm9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1dlYkFzc2VtYmx5TGlua0Vycm9yKSB9OwogCiAgICAgCi1KU09iamVjdCogY3JlYXRlSlNXZWJB
c3NlbWJseUxpbmtFcnJvcihFeGVjU3RhdGUqIHN0YXRlLCBWTSogdm0sIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKEV4ZWNTdGF0
ZSogc3RhdGUsIFZNJiB2bSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIEFTU0VSVCgh
bWVzc2FnZS5pc0VtcHR5KCkpOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBz
dGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5oCmluZGV4IGEwNmYwZmYuLmYy
NjUxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlMaW5rRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5TGlua0Vycm9yLmgKQEAgLTM1LDggKzM1LDggQEAgY2xhc3MgSlNXZWJBc3NlbWJs
eUxpbmtFcnJvciA6IHB1YmxpYyBFcnJvckluc3RhbmNlIHsKIHB1YmxpYzoKICAgICB0eXBlZGVm
IEVycm9ySW5zdGFuY2UgQmFzZTsKIAotICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5TGlua0Vycm9y
KiBjcmVhdGUoRXhlY1N0YXRlKiwgVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTdHJpbmcmKTsKLSAg
ICBzdGF0aWMgSlNXZWJBc3NlbWJseUxpbmtFcnJvciogY3JlYXRlKEV4ZWNTdGF0ZSogc3RhdGUs
IFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUgbWVzc2FnZSkKKyAgICBzdGF0
aWMgSlNXZWJBc3NlbWJseUxpbmtFcnJvciogY3JlYXRlKEV4ZWNTdGF0ZSosIFZNJiwgU3RydWN0
dXJlKiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlMaW5rRXJyb3Iq
IGNyZWF0ZShFeGVjU3RhdGUqIHN0YXRlLCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U1ZhbHVlIG1lc3NhZ2UpCiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlKHN0YXRlLCB2bSwg
c3RydWN0dXJlLCBtZXNzYWdlLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IG1lc3NhZ2UudG9X
VEZTdHJpbmcoc3RhdGUpKTsKICAgICB9CkBAIC00Nyw3ICs0Nyw3IEBAIHByb3RlY3RlZDoKICAg
ICBKU1dlYkFzc2VtYmx5TGlua0Vycm9yKFZNJiwgU3RydWN0dXJlKik7CiB9OwogCi1KU09iamVj
dCogY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihFeGVjU3RhdGUqLCBWTSosIGNvbnN0IFN0
cmluZyYpOworSlNPYmplY3QqIGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoRXhlY1N0YXRl
KiwgVk0mLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvci5jcHAKaW5kZXggMzEyMWVmYi4uYmMyNTgxYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5j
cHAKQEAgLTMyLDExICszMiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSlNXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvciogSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGJv
b2wgdXNlQ3VycmVudEZyYW1lKQorSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciogSlNXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBhdXRvJiB2bSA9
IHN0YXRlLT52bSgpOwogICAgIGF1dG8qIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcj4odm0uaGVhcCkpIEpTV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3Iodm0sIHN0cnVjdHVyZSk7Ci0gICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9u
KHN0YXRlLCB2bSwgbWVzc2FnZSwgdXNlQ3VycmVudEZyYW1lKTsKKyAgICBpbnN0YW5jZS0+bV9z
b3VyY2VBcHBlbmRlciA9IGRlZmF1bHRTb3VyY2VBcHBlbmRlcjsKKyAgICBpbnN0YW5jZS0+Zmlu
aXNoQ3JlYXRpb24oc3RhdGUsIHZtLCBtZXNzYWdlLCB0cnVlKTsKICAgICByZXR1cm4gaW5zdGFu
Y2U7CiB9CiAKQEAgLTQ3LDYgKzQ3LDcgQEAgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6SlNX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXIKIAogY29u
c3QgQ2xhc3NJbmZvIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OnNfaW5mbyA9IHsgIldlYkFz
c2VtYmx5LlJ1bnRpbWVFcnJvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcikgfTsKIAorICAgIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgKaW5k
ZXggM2M3ODc5ZS4uNWFjNjMwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaApAQCAtMzUsMTAgKzM1LDEw
IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IgOiBwdWJsaWMgRXJyb3JJbnN0YW5j
ZSB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBFcnJvckluc3RhbmNlIEJhc2U7CiAKLSAgICBzdGF0
aWMgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciogY3JlYXRlKEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSosIGNvbnN0IFN0cmluZyYsIGJvb2wgdXNlQ3VycmVudEZyYW1lID0gdHJ1ZSk7Ci0gICAgc3Rh
dGljIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU1ZhbHVlIG1lc3NhZ2UsIGJvb2wgdXNlQ3VycmVudEZyYW1l
KQorICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKiBjcmVhdGUoRXhlY1N0YXRl
KiwgVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgSlNXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvciogY3JlYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUgbWVzc2FnZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBj
cmVhdGUoZXhlYywgc3RydWN0dXJlLCBtZXNzYWdlLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6
IG1lc3NhZ2UudG9XVEZTdHJpbmcoZXhlYyksIHVzZUN1cnJlbnRGcmFtZSk7CisgICAgICAgIHJl
dHVybiBjcmVhdGUoc3RhdGUsIHZtLCBzdHJ1Y3R1cmUsIG1lc3NhZ2UuaXNVbmRlZmluZWQoKSA/
IFN0cmluZygpIDogbWVzc2FnZS50b1dURlN0cmluZyhzdGF0ZSkpOwogICAgIH0KIAogICAgIERF
Q0xBUkVfSU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
ZDY4NTY3YS4uNDBlZmZiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihFeGVjU3RhdGUKICAgICBKU1ZhbHVl
IG1lc3NhZ2UgPSBzdGF0ZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byogc3RydWN0dXJlID0gSW50
ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoc3RhdGUsIHN0YXRlLT5uZXdU
YXJnZXQoKSwgYXNJbnRlcm5hbEZ1bmN0aW9uKHN0YXRlLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2Jq
ZWN0KCktPldlYkFzc2VtYmx5Q29tcGlsZUVycm9yU3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKHN0YXRlLCBzdHJ1Y3R1
cmUsIG1lc3NhZ2UsIGZhbHNlKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1dlYkFz
c2VtYmx5Q29tcGlsZUVycm9yOjpjcmVhdGUoc3RhdGUsIHZtLCBzdHJ1Y3R1cmUsIG1lc3NhZ2Up
KTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IGQ2M2U4MzkuLjU4ZWEyNTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25z
dHJ1Y3Rvci5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UoRXhlY1N0YXRlKiBleAog
ICAgICAgICAgICAgLy8gNC4gSWYgaSBpcyBhIGZ1bmN0aW9uIGltcG9ydDoKICAgICAgICAgICAg
IC8vIGkuIElmIElzQ2FsbGFibGUodikgaXMgZmFsc2UsIHRocm93IGEgV2ViQXNzZW1ibHkuTGlu
a0Vycm9yLgogICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0Z1bmN0aW9uKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Nj
b3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsICZ2bSwgQVNDSUlMaXRlcmFs
KCJpbXBvcnQgZnVuY3Rpb24gbXVzdCBiZSBjYWxsYWJsZSIpKSkpOworICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwg
Y3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlMaXRlcmFsKCJpbXBv
cnQgZnVuY3Rpb24gbXVzdCBiZSBjYWxsYWJsZSIpKSkpOwogICAgICAgICAgICAgSlNDZWxsKiBj
ZWxsID0gdmFsdWUuYXNDZWxsKCk7CiAgICAgICAgICAgICAvLyBpaS4gSWYgdiBpcyBhbiBFeHBv
cnRlZCBGdW5jdGlvbiBFeG90aWMgT2JqZWN0OgogICAgICAgICAgICAgaWYgKFdlYkFzc2VtYmx5
RnVuY3Rpb24qIGltcG9ydGVkRXhwb3J0cyA9IGpzRHluYW1pY0Nhc3Q8V2ViQXNzZW1ibHlGdW5j
dGlvbio+KG9iamVjdCkpIHsKQEAgLTEzNywyMiArMTM3LDIyIEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlJbnN0YW5jZShFeGVjU3Rh
dGUqIGV4CiAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0ganNEeW5hbWlj
Q2FzdDxKU1dlYkFzc2VtYmx5VGFibGUqPih2YWx1ZSk7CiAgICAgICAgICAgICAvLyBpLiBJZiB2
IGlzIG5vdCBhIFdlYkFzc2VtYmx5LlRhYmxlIG9iamVjdCwgdGhyb3cgYSBXZWJBc3NlbWJseS5M
aW5rRXJyb3IuCiAgICAgICAgICAgICBpZiAoIXRhYmxlKQotICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRl
SlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCAmdm0sIEFTQ0lJTGl0ZXJhbCgiVGFibGUgaW1w
b3J0IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5UYWJsZSIpKSkpOworICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhy
b3dTY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlMaXRl
cmFsKCJUYWJsZSBpbXBvcnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5LlRhYmxl
IikpKSk7CiAKICAgICAgICAgICAgIHVpbnQzMl90IGV4cGVjdGVkSW5pdGlhbCA9IG1vZHVsZUlu
Zm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaW5pdGlhbCgpOwogICAgICAgICAgICAgdWludDMy
X3QgYWN0dWFsSW5pdGlhbCA9IHRhYmxlLT5zaXplKCk7CiAgICAgICAgICAgICBpZiAoYWN0dWFs
SW5pdGlhbCA8IGV4cGVjdGVkSW5pdGlhbCkKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZUpTV2ViQXNz
ZW1ibHlMaW5rRXJyb3IoZXhlYywgJnZtLCBBU0NJSUxpdGVyYWwoIlRhYmxlIGltcG9ydCBwcm92
aWRlZCBhbiAnaW5pdGlhbCcgdGhhdCBpcyB0b28gc21hbGwiKSkpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUs
IGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIEFTQ0lJTGl0ZXJhbCgiVGFi
bGUgaW1wb3J0IHByb3ZpZGVkIGFuICdpbml0aWFsJyB0aGF0IGlzIHRvbyBzbWFsbCIpKSkpOwog
CiAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZXhwZWN0ZWRNYXhpbXVt
ID0gbW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbi5tYXhpbXVtKCkpIHsKICAgICAg
ICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBhY3R1YWxNYXhpbXVtID0gdGFibGUt
Pm1heGltdW0oKTsKICAgICAgICAgICAgICAgICBpZiAoIWFjdHVhbE1heGltdW0pIHsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSgKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZUpTV2ViQXNzZW1i
bHlMaW5rRXJyb3IoZXhlYywgJnZtLCBBU0NJSUxpdGVyYWwoIlRhYmxlIGltcG9ydCBkb2VzIG5v
dCBoYXZlIGEgJ21heGltdW0nIGJ1dCB0aGUgbW9kdWxlIHJlcXVpcmVzIHRoYXQgaXQgZG9lcyIp
KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dT
Y29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlMaXRlcmFs
KCJUYWJsZSBpbXBvcnQgZG9lcyBub3QgaGF2ZSBhICdtYXhpbXVtJyBidXQgdGhlIG1vZHVsZSBy
ZXF1aXJlcyB0aGF0IGl0IGRvZXMiKSkpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgaWYgKCphY3R1YWxNYXhpbXVtID4gKmV4cGVjdGVkTWF4aW11bSkgewogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKAotICAgICAgICAgICAgICAgICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseUxp
bmtFcnJvcihleGVjLCAmdm0sIEFTQ0lJTGl0ZXJhbCgiSW1wb3J0ZWQgVGFibGUncyAnbWF4aW11
bScgaXMgbGFyZ2VyIHRoYW4gdGhlIG1vZHVsZSdzIGV4cGVjdGVkICdtYXhpbXVtJyIpKSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwg
Y3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlMaXRlcmFsKCJJbXBv
cnRlZCBUYWJsZSdzICdtYXhpbXVtJyBpcyBsYXJnZXIgdGhhbiB0aGUgbW9kdWxlJ3MgZXhwZWN0
ZWQgJ21heGltdW0nIikpKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBA
IC0xNjksMjMgKzE2OSwyMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UoRXhlY1N0YXRlKiBleAogICAgICAgICAgICAg
SlNXZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5
TWVtb3J5Kj4odmFsdWUpOwogICAgICAgICAgICAgLy8gaS4gSWYgdiBpcyBub3QgYSBXZWJBc3Nl
bWJseS5NZW1vcnkgb2JqZWN0LCB0aHJvdyBhIFdlYkFzc2VtYmx5LkxpbmtFcnJvci4KICAgICAg
ICAgICAgIGlmICghbWVtb3J5KQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseUxp
bmtFcnJvcihleGVjLCAmdm0sIEFTQ0lJTGl0ZXJhbCgiTWVtb3J5IGltcG9ydCBpcyBub3QgYW4g
aW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuTWVtb3J5IikpKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVh
dGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxpdGVyYWwoIk1lbW9yeSBp
bXBvcnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5Lk1lbW9yeSIpKSkpOwogCiAg
ICAgICAgICAgICBXYXNtOjpQYWdlQ291bnQgZXhwZWN0ZWRJbml0aWFsID0gbW9kdWxlSW5mb3Jt
YXRpb24ubWVtb3J5LmluaXRpYWwoKTsKICAgICAgICAgICAgIFdhc206OlBhZ2VDb3VudCBhY3R1
YWxJbml0aWFsID0gbWVtb3J5LT5tZW1vcnkoKS0+aW5pdGlhbCgpOwogICAgICAgICAgICAgaWYg
KGFjdHVhbEluaXRpYWwgPCBleHBlY3RlZEluaXRpYWwpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVK
U1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsICZ2bSwgQVNDSUlMaXRlcmFsKCJNZW1vcnkgaW1w
b3J0IHByb3ZpZGVkIGFuICdpbml0aWFsJyB0aGF0IGlzIHRvbyBzbWFsbCIpKSkpOworICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhy
b3dTY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlMaXRl
cmFsKCJNZW1vcnkgaW1wb3J0IHByb3ZpZGVkIGFuICdpbml0aWFsJyB0aGF0IGlzIHRvbyBzbWFs
bCIpKSkpOwogCiAgICAgICAgICAgICBpZiAoV2FzbTo6UGFnZUNvdW50IGV4cGVjdGVkTWF4aW11
bSA9IG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5tYXhpbXVtKCkpIHsKICAgICAgICAgICAgICAg
ICBXYXNtOjpQYWdlQ291bnQgYWN0dWFsTWF4aW11bSA9IG1lbW9yeS0+bWVtb3J5KCktPm1heGlt
dW0oKTsKICAgICAgICAgICAgICAgICBpZiAoIWFjdHVhbE1heGltdW0pIHsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSgKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5r
RXJyb3IoZXhlYywgJnZtLCBBU0NJSUxpdGVyYWwoIk1lbW9yeSBpbXBvcnQgZGlkIG5vdCBoYXZl
IGEgJ21heGltdW0nIGJ1dCB0aGUgbW9kdWxlIHJlcXVpcmVzIHRoYXQgaXQgZG9lcyIpKSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwg
Y3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlMaXRlcmFsKCJNZW1v
cnkgaW1wb3J0IGRpZCBub3QgaGF2ZSBhICdtYXhpbXVtJyBidXQgdGhlIG1vZHVsZSByZXF1aXJl
cyB0aGF0IGl0IGRvZXMiKSkpKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICBpZiAoYWN0dWFsTWF4aW11bSA+IGV4cGVjdGVkTWF4aW11bSkgewogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJv
cihleGVjLCAmdm0sIEFTQ0lJTGl0ZXJhbCgiTWVtb3J5IGltcG9ydHMgJ21heGltdW0nIGlzIGxh
cmdlciB0aGFuIHRoZSBtb2R1bGUncyBleHBlY3RlZCAnbWF4aW11bSciKSkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZUpT
V2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIEFTQ0lJTGl0ZXJhbCgiTWVtb3J5IGltcG9y
dHMgJ21heGltdW0nIGlzIGxhcmdlciB0aGFuIHRoZSBtb2R1bGUncyBleHBlY3RlZCAnbWF4aW11
bSciKSkpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAv
LyBpaS4gQXBwZW5kIHYgdG8gbWVtb3JpZXMuCkBAIC0xOTksNyArMTk5LDcgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNl
KEV4ZWNTdGF0ZSogZXgKICAgICAgICAgICAgIEFTU0VSVChtb2R1bGVJbmZvcm1hdGlvbi5nbG9i
YWxzW2ltcG9ydC5raW5kSW5kZXhdLm11dGFiaWxpdHkgPT0gV2FzbTo6R2xvYmFsOjpJbW11dGFi
bGUpOwogICAgICAgICAgICAgLy8gaWkuIElmIFR5cGUodikgaXMgbm90IE51bWJlciwgdGhyb3cg
YSBUeXBlRXJyb3IuCiAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJv
d1Njb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsICZ2bSwgQVNDSUlMaXRl
cmFsKCJpbXBvcnRlZCBnbG9iYWwgbXVzdCBiZSBhIG51bWJlciIpKSkpOworICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29w
ZSwgY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlMaXRlcmFsKCJp
bXBvcnRlZCBnbG9iYWwgbXVzdCBiZSBhIG51bWJlciIpKSkpOwogICAgICAgICAgICAgLy8gaWlp
LiBBcHBlbmQgVG9XZWJBc3NlbWJseVZhbHVlKHYpIHRvIGltcG9ydHMuCiAgICAgICAgICAgICBz
d2l0Y2ggKG1vZHVsZUluZm9ybWF0aW9uLmdsb2JhbHNbaW1wb3J0LmtpbmRJbmRleF0udHlwZSkg
ewogICAgICAgICAgICAgY2FzZSBXYXNtOjpJMzI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0
b3IuY3BwCmluZGV4IDVkYWYxZTkuLmVkMDc0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3Ry
dWN0b3IuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoRXhlY1N0YXRlKiBzCiAgICAg
SlNWYWx1ZSBtZXNzYWdlID0gc3RhdGUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8qIHN0cnVjdHVy
ZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKHN0YXRlLCBzdGF0
ZS0+bmV3VGFyZ2V0KCksIGFzSW50ZXJuYWxGdW5jdGlvbihzdGF0ZS0+anNDYWxsZWUoKSktPmds
b2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseUxpbmtFcnJvclN0cnVjdHVyZSgpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlMaW5rRXJyb3I6OmNyZWF0ZShzdGF0ZSwgJnZtLCBz
dHJ1Y3R1cmUsIG1lc3NhZ2UpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNz
ZW1ibHlMaW5rRXJyb3I6OmNyZWF0ZShzdGF0ZSwgdm0sIHN0cnVjdHVyZSwgbWVzc2FnZSkpOwog
fQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJs
eUxpbmtFcnJvcihFeGVjU3RhdGUqIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcApp
bmRleCA3M2NhN2E0Li4zOGVkYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcApAQCAt
ODQsNyArODQsNyBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0
ZU1vZHVsZShFeGVjU3RhdGUqIHN0YXRlLCBTdHJ1Y3R1cmUqCiAgICAgLy8gT24gZmFpbHVyZSwg
YSBuZXcgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yIGlzIHRocm93bi4KICAgICBwbGFuLnJ1bigp
OwogICAgIGlmIChwbGFuLmZhaWxlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24o
c3RhdGUsIHNjb3BlLCBjcmVhdGVXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihzdGF0ZSwgcGxhbi5l
cnJvck1lc3NhZ2UoKSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oc3RhdGUsIHNj
b3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKHN0YXRlLCB2bSwgcGxhbi5lcnJv
ck1lc3NhZ2UoKSkpOwogCiAgICAgLy8gT24gc3VjY2VzcywgYSBuZXcgV2ViQXNzZW1ibHkuTW9k
dWxlIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIFtbTW9kdWxlXV0gc2V0IHRvIHRoZSB2YWxpZGF0
ZWQgQXN0Lm1vZHVsZS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDhlMmRjNzMuLmVhZDY3MTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIFdlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogc3RhdGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZSogaW5zdAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2NvcGUsIHR5cGVuYW1lIE4sIHR5cGVu
YW1lIC4uLkFyZ3M+Ci1ORVZFUl9JTkxJTkUgc3RhdGljIEpTVmFsdWUgZGF0YVNlZ21lbnRGYWls
KEV4ZWNTdGF0ZSogc3RhdGUsIFZNKiB2bSwgU2NvcGUmIHNjb3BlLCBOIG1lbW9yeVNpemUsIE4g
c2VnbWVudFNpemUsIE4gb2Zmc2V0LCBBcmdzLi4uIGFyZ3MpCitORVZFUl9JTkxJTkUgc3RhdGlj
IEpTVmFsdWUgZGF0YVNlZ21lbnRGYWlsKEV4ZWNTdGF0ZSogc3RhdGUsIFZNJiB2bSwgU2NvcGUm
IHNjb3BlLCBOIG1lbW9yeVNpemUsIE4gc2VnbWVudFNpemUsIE4gb2Zmc2V0LCBBcmdzLi4uIGFy
Z3MpCiB7CiAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlSlNX
ZWJBc3NlbWJseUxpbmtFcnJvcihzdGF0ZSwgdm0sIG1ha2VTdHJpbmcoQVNDSUlMaXRlcmFsKCJJ
bnZhbGlkIGRhdGEgc2VnbWVudCBpbml0aWFsaXphdGlvbjogc2VnbWVudCBvZiAiKSwgU3RyaW5n
OjpudW1iZXIoc2VnbWVudFNpemUpLCBBU0NJSUxpdGVyYWwoIiBieXRlcyBtZW1vcnkgb2YgIiks
IFN0cmluZzo6bnVtYmVyKG1lbW9yeVNpemUpLCBBU0NJSUxpdGVyYWwoIiBieXRlcywgYXQgb2Zm
c2V0ICIpLCBTdHJpbmc6Om51bWJlcihvZmZzZXQpLCBhcmdzLi4uKSkpOwogfQpAQCAtMjI1LDcg
KzIyNSw3IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4ZWNT
dGF0ZSogc3RhdGUpCiAgICAgICAgICAgICB1aW50MzJfdCB0YWJsZUluZGV4ID0gZWxlbWVudC5v
ZmZzZXQ7CiAgICAgICAgICAgICB1aW50NjRfdCBsYXN0V3JpdHRlbkluZGV4ID0gc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHRhYmxlSW5kZXgpICsgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVsZW1lbnQu
ZnVuY3Rpb25JbmRpY2VzLnNpemUoKSkgLSAxOwogICAgICAgICAgICAgaWYgKGxhc3RXcml0dGVu
SW5kZXggPj0gdGFibGUtPnNpemUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNl
cHRpb24oc3RhdGUsIHNjb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKHN0YXRlLCAm
dm0sIEFTQ0lJTGl0ZXJhbCgiRWxlbWVudCBpcyB0cnlpbmcgdG8gc2V0IGFuIG91dCBvZiBib3Vu
ZHMgdGFibGUgaW5kZXgiKSkpOworICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlv
bihzdGF0ZSwgc2NvcGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3Ioc3RhdGUsIHZtLCBB
U0NJSUxpdGVyYWwoIkVsZW1lbnQgaXMgdHJ5aW5nIHRvIHNldCBhbiBvdXQgb2YgYm91bmRzIHRh
YmxlIGluZGV4IikpKTsKIAogICAgICAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGVs
ZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgLy8g
RklYTUU6IFRoaXMgZXNzZW50aWFsbHkgbWVhbnMgd2UncmUgZXhwb3J0aW5nIGFuIGltcG9ydC4K
QEAgLTI2Niw5ICsyNjYsOSBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFs
dWF0ZShFeGVjU3RhdGUqIHN0YXRlKQogICAgICAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDog
ZGF0YSkgewogICAgICAgICAgICAgICAgIGlmIChzZWdtZW50LT5zaXplSW5CeXRlcykgewogICAg
ICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2l6ZUluQnl0ZXMgPCBzZWdtZW50LT5zaXpl
SW5CeXRlcykpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVNlZ21lbnRGYWls
KHN0YXRlLCAmdm0sIHNjb3BlLCBzaXplSW5CeXRlcywgc2VnbWVudC0+c2l6ZUluQnl0ZXMsIHNl
Z21lbnQtPm9mZnNldCwgQVNDSUlMaXRlcmFsKCIsIHNlZ21lbnQgaXMgdG9vIGJpZyIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhU2VnbWVudEZhaWwoc3RhdGUsIHZtLCBz
Y29wZSwgc2l6ZUluQnl0ZXMsIHNlZ21lbnQtPnNpemVJbkJ5dGVzLCBzZWdtZW50LT5vZmZzZXQs
IEFTQ0lJTGl0ZXJhbCgiLCBzZWdtZW50IGlzIHRvbyBiaWciKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChVTkxJS0VMWShzZWdtZW50LT5vZmZzZXQgPiBzaXplSW5CeXRlcyAtIHNlZ21lbnQt
PnNpemVJbkJ5dGVzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhU2VnbWVu
dEZhaWwoc3RhdGUsICZ2bSwgc2NvcGUsIHNpemVJbkJ5dGVzLCBzZWdtZW50LT5zaXplSW5CeXRl
cywgc2VnbWVudC0+b2Zmc2V0LCBBU0NJSUxpdGVyYWwoIiwgc2VnbWVudCB3cml0ZXMgb3V0c2lk
ZSBvZiBtZW1vcnkiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVNlZ21l
bnRGYWlsKHN0YXRlLCB2bSwgc2NvcGUsIHNpemVJbkJ5dGVzLCBzZWdtZW50LT5zaXplSW5CeXRl
cywgc2VnbWVudC0+b2Zmc2V0LCBBU0NJSUxpdGVyYWwoIiwgc2VnbWVudCB3cml0ZXMgb3V0c2lk
ZSBvZiBtZW1vcnkiKSk7CiAgICAgICAgICAgICAgICAgICAgIG1lbWNweShtZW1vcnkgKyBzZWdt
ZW50LT5vZmZzZXQsICZzZWdtZW50LT5ieXRlKDApLCBzZWdtZW50LT5zaXplSW5CeXRlcyk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNv
bnN0cnVjdG9yLmNwcAppbmRleCA5MjBkYjgzLi4wNGFhZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRp
bWVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKEV4
ZWNTdGF0ZQogICAgIEpTVmFsdWUgbWVzc2FnZSA9IHN0YXRlLT5hcmd1bWVudCgwKTsKICAgICBh
dXRvKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVy
ZShzdGF0ZSwgc3RhdGUtPm5ld1RhcmdldCgpLCBhc0ludGVybmFsRnVuY3Rpb24oc3RhdGUtPmpz
Q2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1
cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpj
cmVhdGUoc3RhdGUsIHN0cnVjdHVyZSwgbWVzc2FnZSwgZmFsc2UpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZShzdGF0ZSwgdm0s
IHN0cnVjdHVyZSwgbWVzc2FnZSkpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihFeGVjU3RhdGUqIHN0YXRlKQot
LSAKMi45LjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297596</attachid>
            <date>2016-12-21 09:58:53 -0800</date>
            <delta_ts>2016-12-21 12:34:47 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-error-cleanup.patch</filename>
            <type>text/plain</type>
            <size>35475</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBjNDFlOTNlY2FjOGNkOGQ1NTY2YjRhODU1NTJhYWE0MmY0MjBhOWE3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDIwIERlYyAyMDE2IDE2OjM4OjM5IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gZXJyb3It
Y2xlYW51cAoKLS0tCiBKU1Rlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IDI4ICsrKysrKysrKysrKysrKysrCiBKU1Rlc3RzL3dhc20vYXNzZXJ0LmpzICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyICsrKysrKy0tCiBKU1Rlc3RzL3dhc20vZnVu
Y3Rpb24tdGVzdHMvZXhjZXB0aW9ucy5qcyAgICAgICAgICB8ICA2ICsrLS0KIEpTVGVzdHMvd2Fz
bS9mdW5jdGlvbi10ZXN0cy90cmFwLWxvYWQtMi5qcyAgICAgICAgIHwgMjQgKysrKy0tLS0tLS0t
LS0tCiBKU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLmpzICAgICAgICAgICB8
IDE4ICsrLS0tLS0tLS0tCiBKU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1zdG9yZS0y
LmpzICAgICAgICB8IDE5ICsrLS0tLS0tLS0tLQogSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3Rz
L3RyYXAtc3RvcmUuanMgICAgICAgICAgfCAxOSArKy0tLS0tLS0tLS0KIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwgMzUgKysrKysrKysrKysrKysr
KysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwICAg
ICAgfCAgMyArLQogLi4uL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5jcHAgICAg
ICAgICAgfCAxMSArKystLS0tCiAuLi4vd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9y
LmggICAgICAgICAgICB8ICA4ICsrLS0tCiAuLi4vd2FzbS9qcy9KU1dlYkFzc2VtYmx5TGlua0Vy
cm9yLmNwcCAgICAgICAgICAgICB8ICA5ICsrKy0tLQogLi4uL3dhc20vanMvSlNXZWJBc3NlbWJs
eUxpbmtFcnJvci5oICAgICAgICAgICAgICAgfCAgNiArKy0tCiAuLi4vd2FzbS9qcy9KU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yLmNwcCAgICAgICAgICB8ICA2ICsrLS0KIC4uLi93YXNtL2pzL0pT
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCAgICAgICAgICAgIHwgIDYgKystLQogLi4uL3dhc20v
anMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgfCAgMiArLQogLi4uL3dh
c20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCAgICAgfCAyMCArKysrKyst
LS0tLS0tCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcCAg
ICB8ICAyICstCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcCAg
ICAgICB8ICAyICstCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAgICAg
ICAgICAgICB8ICA4ICsrLS0tCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNv
bnN0cnVjdG9yLmNwcCB8ICAyICstCiAyMSBmaWxlcyBjaGFuZ2VkLCAxMzUgaW5zZXJ0aW9ucygr
KSwgMTExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDI1ZTYwZi4uMTVmMzAwZCAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAx
Ni0xMi0yMCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2Vi
QXNzZW1ibHkgSlMgQVBJOiBjbGVhbnVwICYgcGFzcyBWTSBhcm91bmQgdG8ge0NvbXBpbGUvUnVu
dGltZX1FcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY2Mjk1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTc2MjAxNz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGVzdHMgdG8gZ2Vu
ZXJhdGUgbmV3IGVycm9yIG1lc3NhZ2VzLiBBZGFwdCBzb21lIHRvIHVzZSB0aGUKKyAgICAgICAg
YXNzZXJ0LmpzIG1vZHVsZS4KKworICAgICAgICAqIHdhc20vYXNzZXJ0LmpzOiBhbGxvdyBmaWx0
ZXJpbmcgb3V0IHNvbWV0aW1lcy11c2VsZXNzIHNvdXJjZQorICAgICAgICBsb2NhdGlvbiBpbmZv
cm1hdGlvbi4gUmV0dXJuIHRoZSBleGNlcHRpb24gc28gdGhhdCBmdXJ0aGVyCisgICAgICAgIHBy
b2Nlc3NpbmcgY2FuIG9jY3VyIG9uIGl0IGFzIGRlc2lyZWQuCisgICAgICAgICogd2FzbS9mdW5j
dGlvbi10ZXN0cy9leGNlcHRpb25zLmpzOgorICAgICAgICAqIHdhc20vZnVuY3Rpb24tdGVzdHMv
dHJhcC1sb2FkLTIuanM6CisgICAgICAgIChhc3NlcnQpOiBEZWxldGVkLgorICAgICAgICAoaS5j
YXRjaCk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWxvYWQu
anM6CisgICAgICAgIChhc3NlcnQpOiBEZWxldGVkLgorICAgICAgICAoaS5jYXRjaCk6IERlbGV0
ZWQuCisgICAgICAgICogd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLXN0b3JlLTIuanM6CisgICAg
ICAgIChpbXBvcnQuQnVpbGRlci5mcm9tLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFzc2VydCk6IERl
bGV0ZWQuCisgICAgICAgIChpLmNhdGNoKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2Z1bmN0
aW9uLXRlc3RzL3RyYXAtc3RvcmUuanM6CisgICAgICAgIChpbXBvcnQuQnVpbGRlci5mcm9tLnN0
cmluZ19hcHBlYXJlZF9oZXJlLmFzc2VydCk6IERlbGV0ZWQuCisgICAgICAgIChpLmNhdGNoKTog
RGVsZXRlZC4KKwogMjAxNi0xMi0yMCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZ2xvYmFsCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3dhc20vYXNzZXJ0LmpzIGIvSlNUZXN0cy93YXNtL2Fzc2VydC5qcwppbmRleCBjYzAyODUx
Li40ZDI4NzIwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vYXNzZXJ0LmpzCisrKyBiL0pTVGVz
dHMvd2FzbS9hc3NlcnQuanMKQEAgLTEwMywxMiArMTAzLDIwIEBAIGV4cG9ydCBjb25zdCBsZSA9
IChsaHMsIHJocywgbXNnKSA9PiB7CiAgICAgICAgIF9mYWlsKGBFeHBlY3RlZDogIiR7bGhzfSIg
PiAiJHtyaHN9ImAsIG1zZyk7CiB9OwogCisvLyBJZ25vcmUgc291cmNlIGluZm9ybWF0aW9uIGF0
IHRoZSBlbmQgb2YgdGhlIGVycm9yIG1lc3NhZ2UgaWYgdGhlIGV4cGVjdGVkIG1lc3NhZ2UgZGlk
bid0IHNwZWNpZnkgdGhhdCBpbmZvcm1hdGlvbi4gU29tZXRpbWVzIGl0IGNoYW5nZXMsIG9yIGl0
J3MgdHJpY2t5IHRvIGdldCBqdXN0IHJpZ2h0LgorY29uc3QgX3NvdXJjZVJlID0gbmV3IFJlZ0V4
cCgvIFwoZXZhbHVhdGluZyAnLionXCkvKTsKKwogY29uc3QgX3Rocm93cyA9IChmdW5jLCB0eXBl
LCBtZXNzYWdlLCAuLi5hcmdzKSA9PiB7CiAgICAgdHJ5IHsKICAgICAgICAgZnVuYyguLi5hcmdz
KTsKICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChlIGluc3RhbmNlb2YgdHlwZSAmJiBl
Lm1lc3NhZ2UgPT09IG1lc3NhZ2UpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChl
IGluc3RhbmNlb2YgdHlwZSkgeworICAgICAgICAgICAgaWYgKGUubWVzc2FnZSA9PT0gbWVzc2Fn
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZTsKKyAgICAgICAgICAgIGNvbnN0IGNsZWFuTWVz
c2FnZSA9IGUubWVzc2FnZS5yZXBsYWNlKF9zb3VyY2VSZSwgJycpOworICAgICAgICAgICAgaWYg
KGNsZWFuTWVzc2FnZSA9PT0gbWVzc2FnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZTsKKyAg
ICAgICAgfQogICAgICAgICBfZmFpbChgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke3R5cGUubmFtZX0g
d2l0aCBtZXNzYWdlICIke21lc3NhZ2V9IiwgZ290ICR7ZS5uYW1lfSB3aXRoIG1lc3NhZ2UgIiR7
ZS5tZXNzYWdlfSJgKTsKICAgICB9CiAgICAgX2ZhaWwoYEV4cGVjdGVkIHRvIHRocm93IGEgJHt0
eXBlLm5hbWV9IHdpdGggbWVzc2FnZSAiJHttZXNzYWdlfSJgKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9leGNlcHRpb25zLmpzIGIvSlNUZXN0cy93YXNtL2Z1bmN0
aW9uLXRlc3RzL2V4Y2VwdGlvbnMuanMKaW5kZXggOTUyNTEzZi4uZDJiM2E0OSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2V4Y2VwdGlvbnMuanMKKysrIGIvSlNUZXN0
cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2V4Y2VwdGlvbnMuanMKQEAgLTQ1LDE4ICs0NSwxOCBAQCBm
dW5jdGlvbiBtYWtlSW5zdGFuY2UoKSB7CiAgICAgYXNzZXJ0LmVxKHRhYmxlLmdldCgwKSwgbnVs
bCk7CiAKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgewotICAgICAgICBhc3Nl
cnQudGhyb3dzKCgpID0+IGZvbygwLCBpKSwgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yLCAiY2Fs
bF9pbmRpcmVjdCB0byBhIG51bGwgdGFibGUgZW50cnkiKTsKKyAgICAgICAgYXNzZXJ0LnRocm93
cygoKSA9PiBmb28oMCwgaSksIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwgImNhbGxfaW5kaXJl
Y3QgdG8gYSBudWxsIHRhYmxlIGVudHJ5IChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKTsK
ICAgICB9CiAKICAgICB0YWJsZS5zZXQoMCwgZm9vKTsKICAgICBhc3NlcnQuZXEodGFibGUuZ2V0
KDApLCBmb28pOwogCiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKLSAgICAg
ICAgYXNzZXJ0LnRocm93cygoKSA9PiBmb28oMSArIGksIGkpLCBXZWJBc3NlbWJseS5SdW50aW1l
RXJyb3IsICJPdXQgb2YgYm91bmRzIGNhbGxfaW5kaXJlY3QiKTsKKyAgICAgICAgYXNzZXJ0LnRo
cm93cygoKSA9PiBmb28oMSArIGksIGkpLCBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsICJPdXQg
b2YgYm91bmRzIGNhbGxfaW5kaXJlY3QgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpOwog
ICAgIH0KIAogICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7Ci0gICAgICAgIGFz
c2VydC50aHJvd3MoKCkgPT4gZm9vKDAsIGkpLCBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsICJj
YWxsX2luZGlyZWN0IHRvIGEgc2lnbmF0dXJlIHRoYXQgZG9lcyBub3QgbWF0Y2giKTsKKyAgICAg
ICAgYXNzZXJ0LnRocm93cygoKSA9PiBmb28oMCwgaSksIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJv
ciwgImNhbGxfaW5kaXJlY3QgdG8gYSBzaWduYXR1cmUgdGhhdCBkb2VzIG5vdCBtYXRjaCAoZXZh
bHVhdGluZyAnZnVuYyguLi5hcmdzKScpIik7CiAgICAgfQogCiAgICAgdGFibGUuc2V0KDAsIGJh
cik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLTIu
anMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLTIuanMKaW5kZXggMmM0
MDc1Zi4uZGZlOTE3YyAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3Ry
YXAtbG9hZC0yLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWxvYWQt
Mi5qcwpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMn
CitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJwogCiBjb25zdCBwYWdlU2l6
ZSA9IDY0ICogMTAyNDsKIGNvbnN0IG51bVBhZ2VzID0gMTA7CkBAIC0xOCwxMSArMTksNiBAQCBj
b25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCiAgICAgICAgIC5FbmQoKQogICAgIC5FbmQo
KTsKIAotZnVuY3Rpb24gYXNzZXJ0KGIpIHsKLSAgICBpZiAoIWIpCi0gICAgICAgIHRocm93IG5l
dyBFcnJvcigiQmFkIikKLX0KLQogZnVuY3Rpb24gd2FzbUZyYW1lQ291bnRGcm9tRXJyb3IoZSkg
ewogICAgIGxldCBzdGFja0ZyYW1lcyA9IGUuc3RhY2suc3BsaXQoIlxuIikuZmlsdGVyKChzKSA9
PiBzLmluZGV4T2YoIjx3YXNtPkBbd2FzbSBjb2RlXSIpICE9PSAtMSk7CiAgICAgcmV0dXJuIHN0
YWNrRnJhbWVzLmxlbmd0aDsKQEAgLTcwLDE4ICs2NiwxMCBAQCBmdW5jdGlvbiB3YXNtRnJhbWVD
b3VudEZyb21FcnJvcihlKSB7CiAgICAgfQogCiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAw
OyBpKyspIHsKLSAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7Ci0gICAgICAgIHRyeSB7Ci0gICAg
ICAgICAgICBmb28oNSwgYWRkcmVzcyk7Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAg
ICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IpOwotICAgICAg
ICAgICAgYXNzZXJ0KGUubWVzc2FnZSA9PT0gIk91dCBvZiBib3VuZHMgbWVtb3J5IGFjY2VzcyIp
OwotICAgICAgICAgICAgLy8gVGhlcmUgYXJlIDUgdG90YWwgY2FsbHMsIGFuZCBlYWNoIGNhbGwg
ZG9lczoKLSAgICAgICAgICAgIC8vIEpTIGVudHJ5LCB3YXNtIGVudHJ5LCBqcyBjYWxsIHN0dWIu
Ci0gICAgICAgICAgICAvLyBUaGUgbGFzdCBjYWxsIHRoYXQgdHJhcHMganVzdCBoYXMgSlMgZW50
cnkgYW5kIHdhc20gZW50cnkuCi0gICAgICAgICAgICBhc3NlcnQod2FzbUZyYW1lQ291bnRGcm9t
RXJyb3IoZSkgPT09IDUgKiAzICsgMik7Ci0gICAgICAgICAgICB0aHJldyA9IHRydWU7Ci0gICAg
ICAgIH0KLSAgICAgICAgYXNzZXJ0KHRocmV3KTsKKyAgICAgICAgY29uc3QgZSA9IGFzc2VydC50
aHJvd3MoKCkgPT4gZm9vKDUsIGFkZHJlc3MpLCBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsICJP
dXQgb2YgYm91bmRzIG1lbW9yeSBhY2Nlc3MgKGV2YWx1YXRpbmcgJ2Zvbyh4IC0gMSwgYWRkcmVz
cyknKSIpOworICAgICAgICAvLyBUaGVyZSBhcmUgNSB0b3RhbCBjYWxscywgYW5kIGVhY2ggY2Fs
bCBkb2VzOgorICAgICAgICAvLyBKUyBlbnRyeSwgd2FzbSBlbnRyeSwganMgY2FsbCBzdHViLgor
ICAgICAgICAvLyBUaGUgbGFzdCBjYWxsIHRoYXQgdHJhcHMganVzdCBoYXMgSlMgZW50cnkgYW5k
IHdhc20gZW50cnkuCisgICAgICAgIGFzc2VydC5lcSh3YXNtRnJhbWVDb3VudEZyb21FcnJvcihl
KSwgNSAqIDMgKyAyKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rp
b24tdGVzdHMvdHJhcC1sb2FkLmpzIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAt
bG9hZC5qcwppbmRleCA1NDJmNzNjLi40ZGQ4MmRjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20v
ZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10
ZXN0cy90cmFwLWxvYWQuanMKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgQnVpbGRlciBmcm9tICcu
Li9CdWlsZGVyLmpzJworaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcycKIAog
Y29uc3QgcGFnZVNpemUgPSA2NCAqIDEwMjQ7CiBjb25zdCBudW1QYWdlcyA9IDEwOwpAQCAtMjIs
MjUgKzIzLDEyIEBAIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKIGNv
bnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKIGNvbnN0IGZvbyA9IG5l
dyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHthOiB7YjogbmV3IFdlYkFzc2VtYmx5Lk1l
bW9yeSh7aW5pdGlhbDogbnVtUGFnZXN9KX19KS5leHBvcnRzLmZvbzsKIAotZnVuY3Rpb24gYXNz
ZXJ0KGIpIHsKLSAgICBpZiAoIWIpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIikKLX0K
LQogZnVuY3Rpb24gd2FzbUZyYW1lQ291bnRGcm9tRXJyb3IoZSkgewogICAgIGxldCBzdGFja0Zy
YW1lcyA9IGUuc3RhY2suc3BsaXQoIlxuIikuZmlsdGVyKChzKSA9PiBzLmluZGV4T2YoIjx3YXNt
PkBbd2FzbSBjb2RlXSIpICE9PSAtMSk7CiAgICAgcmV0dXJuIHN0YWNrRnJhbWVzLmxlbmd0aDsK
IH0KIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKLSAgICBsZXQgdGhyZXcgPSBm
YWxzZTsKLSAgICB0cnkgewotICAgICAgICBmb28obnVtUGFnZXMgKiBwYWdlU2l6ZSArIDEpOwot
ICAgIH0gY2F0Y2goZSkgewotICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5
LlJ1bnRpbWVFcnJvcik7Ci0gICAgICAgIGFzc2VydChlLm1lc3NhZ2UgPT09ICJPdXQgb2YgYm91
bmRzIG1lbW9yeSBhY2Nlc3MiKTsKLSAgICAgICAgdGhyZXcgPSB0cnVlOwotICAgICAgICBhc3Nl
cnQod2FzbUZyYW1lQ291bnRGcm9tRXJyb3IoZSkgPT09IDIpOwotICAgIH0KLSAgICBhc3NlcnQo
dGhyZXcpOworICAgIGNvbnN0IGUgPSBhc3NlcnQudGhyb3dzKCgpID0+IGZvbyhudW1QYWdlcyAq
IHBhZ2VTaXplICsgMSksIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwgIk91dCBvZiBib3VuZHMg
bWVtb3J5IGFjY2VzcyAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIik7CisgICAgYXNzZXJ0
LmVxKHdhc21GcmFtZUNvdW50RnJvbUVycm9yKGUpLCAyKTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVz
dHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLXN0b3JlLTIuanMgYi9KU1Rlc3RzL3dhc20vZnVu
Y3Rpb24tdGVzdHMvdHJhcC1zdG9yZS0yLmpzCmluZGV4IGVjY2NjMGIuLmNjNTUwZDcgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLXN0b3JlLTIuanMKKysrIGIv
SlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtc3RvcmUtMi5qcwpAQCAtMSw5ICsxLDUg
QEAKIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnCi0KLWZ1bmN0aW9uIGFzc2Vy
dChiKSB7Ci0gICAgaWYgKCFiKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCIpCi19Citp
bXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJwogCiBjb25zdCBwYWdlU2l6ZSA9
IDY0ICogMTAyNDsKIGNvbnN0IG51bVBhZ2VzID0gMTA7CkBAIC00OSwxNSArNDUsNiBAQCBjb25z
dCBudW1QYWdlcyA9IDEwOwogICAgICAgICBmb28oeCAtIDEsIGFkZHJlc3MpOwogICAgIH0KIAot
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDsgaSsrKSB7Ci0gICAgICAgIGxldCB0aHJldyA9
IGZhbHNlOwotICAgICAgICB0cnkgewotICAgICAgICAgICAgZm9vKDYsIGFkZHJlc3MpOwotICAg
ICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgV2ViQXNz
ZW1ibHkuUnVudGltZUVycm9yKTsKLSAgICAgICAgICAgIGFzc2VydChlLm1lc3NhZ2UgPT09ICJP
dXQgb2YgYm91bmRzIG1lbW9yeSBhY2Nlc3MiKTsKLSAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsK
LSAgICAgICAgfQotICAgICAgICBhc3NlcnQodGhyZXcpOwotICAgIH0KKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDUwMDA7IGkrKykKKyAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBmb28oNiwg
YWRkcmVzcyksIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwgIk91dCBvZiBib3VuZHMgbWVtb3J5
IGFjY2VzcyIpOwogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3Ry
YXAtc3RvcmUuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1zdG9yZS5qcwpp
bmRleCAyNmZmODJiLi41NTk4N2MyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24t
dGVzdHMvdHJhcC1zdG9yZS5qcworKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJh
cC1zdG9yZS5qcwpAQCAtMSw5ICsxLDUgQEAKIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxk
ZXIuanMnCi0KLWZ1bmN0aW9uIGFzc2VydChiKSB7Ci0gICAgaWYgKCFiKQotICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkJhZCIpCi19CitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0
LmpzJwogCiBjb25zdCBwYWdlU2l6ZSA9IDY0ICogMTAyNDsKIGNvbnN0IG51bVBhZ2VzID0gMTA7
CkBAIC0yOCwxNSArMjQsNiBAQCBjb25zdCBudW1QYWdlcyA9IDEwOwogICAgIGNvbnN0IG1vZHVs
ZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKICAgICBjb25zdCBmb28gPSBuZXcgV2Vi
QXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7YToge2I6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnko
e2luaXRpYWw6IG51bVBhZ2VzfSl9fSkuZXhwb3J0cy5mb287CiAKLSAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDAwOyBpKyspIHsKLSAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7Ci0gICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICBmb28oaSwgbnVtUGFnZXMgKiBwYWdlU2l6ZSArIDEpOwotICAg
ICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgV2ViQXNz
ZW1ibHkuUnVudGltZUVycm9yKTsKLSAgICAgICAgICAgIGFzc2VydChlLm1lc3NhZ2UgPT09ICJP
dXQgb2YgYm91bmRzIG1lbW9yeSBhY2Nlc3MiKTsKLSAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsK
LSAgICAgICAgfQotICAgICAgICBhc3NlcnQodGhyZXcpOwotICAgIH0KKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwOyBpKyspCisgICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gZm9vKGks
IG51bVBhZ2VzICogcGFnZVNpemUgKyAxKSwgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yLCAiT3V0
IG9mIGJvdW5kcyBtZW1vcnkgYWNjZXNzIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGE2NTliZDIuLmMzNDdlNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE2LTEyLTIwICBKRiBCYXN0aWVu
ICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseSBKUyBBUEk6IGNs
ZWFudXAgJiBwYXNzIFZNIGFyb3VuZCB0byB7Q29tcGlsZS9SdW50aW1lfUVycm9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjYyOTUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzI5NzYyMDE3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbmFtZSB0aGUgY3JlYXRlKiBmdW5jdGlvbnMsIGFuZCBwYXNz
IFZNIGFyb3VuZCwgYXMgc3VnZ2VzdGVkIGZvcgorICAgICAgICBMaW5rRXJyb3IgaW4gIzE2NTgw
NS4KKworICAgICAgICBBdCB0aGUgc2FtZSB0aW1lLCB1c2UgdGhlIGRlZmF1bHQgc291cmNlIGFw
cGVuZGVyIHdoZW4KKyAgICAgICAgY29uc3RydWN0aW5nIHRoZXNlIGVycm9yIHR5cGVzLCB3aGlj
aCBnaXZlcyBhIG5pY2UgbWFwIGJhY2sgdG8gdGhlCisgICAgICAgIG9yaWdpbmFsIHNvdXJjZSBh
cyBwYXJ0IG9mIHRoZSBlcnJvciBtZXNzYWdlLiBUaGlzIGlzIGNsZWFyZXIgd2hlbgorICAgICAg
ICB1c2luZyB0aGUgY3VycmVudCBmcmFtZSwgc28gYWRkIHRoYXQgYXMgd2VsbC4KKworICAgICAg
ICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp0aHJvd0V4Y2VwdGlv
bkZyb21XYXNtVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJs
eUNvbXBpbGVFcnJvci5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb21waWxlRXJy
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OmNyZWF0ZUpTV2ViQXNzZW1ibHlDb21waWxlRXJy
b3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVXZWJBc3NlbWJseUNvbXBpbGVFcnJvcik6IERlbGV0
ZWQuCisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmg6CisgICAg
ICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OmNyZWF0ZSk6CisgICAgICAgICog
d2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5
Q29tcGlsZUVycm9yKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjpj
cmVhdGVNb2R1bGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3IpOgorCiAyMDE2LTEyLTIwICBUYXJhcyBUc3VncmlpICA8dHRzdWdyaWlAZmIuY29t
PgogCiAgICAgICAgIEZpeCB1bmRlZmluZWQgYmVoYXZpb3IgY2F1c2VkIGJ5IG1hY3JvIGV4cGFu
c2lvbiBwcm9kdWNpbmcgJ2RlZmluZWQnCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggOTU1NTFjOC4uNzgxMTg0MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtMTE1NSw4ICsxMTU1LDcg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9uRnJvbVdhc21UaHVua0dlbmVy
YXRvcihWTSogdm0pCiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKCp2bSk7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
dm0tPnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KCk7CiAKLSAgICAgICAg
ICAgIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IqIGVycm9yID0gSlNXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvcjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgIGV4ZWMsIGdsb2JhbE9iamVjdC0+V2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSwgV2FzbTo6ZXJyb3JNZXNzYWdlRm9yRXhj
ZXB0aW9uVHlwZSh0eXBlKSk7CisgICAgICAgICAgICBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9y
KiBlcnJvciA9IEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZShleGVjLCAqdm0sIGds
b2JhbE9iamVjdC0+V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSwgV2FzbTo6ZXJy
b3JNZXNzYWdlRm9yRXhjZXB0aW9uVHlwZSh0eXBlKSk7CiAgICAgICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yLmNwcAppbmRleCAzYmY1N2FiLi5lNDg1ODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcApA
QCAtMzIsMTAgKzMyLDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KU1dlYkFzc2VtYmx5Q29t
cGlsZUVycm9yKiBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjpjcmVhdGUoRXhlY1N0YXRlKiBz
dGF0ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgYm9vbCB1
c2VDdXJyZW50RnJhbWUpCitKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKiBKU1dlYkFzc2VtYmx5
Q29tcGlsZUVycm9yOjpjcmVhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGF1dG8mIHZtID0gc3Rh
dGUtPnZtKCk7CiAgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yPih2bS5oZWFwKSkgSlNXZWJBc3NlbWJseUNvbXBp
bGVFcnJvcih2bSwgc3RydWN0dXJlKTsKKyAgICBpbnN0YW5jZS0+bV9zb3VyY2VBcHBlbmRlciA9
IGRlZmF1bHRTb3VyY2VBcHBlbmRlcjsKKyAgICBib29sIHVzZUN1cnJlbnRGcmFtZSA9IHRydWU7
CiAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHN0YXRlLCB2bSwgbWVzc2FnZSwgdXNlQ3Vy
cmVudEZyYW1lKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CkBAIC00OCwxMSArNDksMTEgQEAg
SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXIKIGNvbnN0IENsYXNzSW5mbyBKU1dlYkFzc2VtYmx5Q29t
cGlsZUVycm9yOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5Db21waWxlRXJyb3IiLCAmQmFzZTo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3Ip
IH07CiAKICAgICAKLUpTT2JqZWN0KiBjcmVhdGVXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVKU1dl
YkFzc2VtYmx5Q29tcGlsZUVycm9yKEV4ZWNTdGF0ZSogc3RhdGUsIFZNJiB2bSwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwotICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7
Ci0gICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QtPnZt
KCksIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1ibHlDb21waWxlRXJyb3JTdHJ1Y3R1cmUoKSwgbWVz
c2FnZSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZywgdHJ1ZSk7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7
CisgICAgcmV0dXJuIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OmNyZWF0ZShzdGF0ZSwgdm0s
IGdsb2JhbE9iamVjdC0+V2ViQXNzZW1ibHlDb21waWxlRXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2Fn
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oCmluZGV4IDZmMDVm
M2UuLjA0ZTNmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmgKQEAgLTM1LDEwICszNSwxMCBAQCBjbGFz
cyBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yIDogcHVibGljIEVycm9ySW5zdGFuY2UgewogcHVi
bGljOgogICAgIHR5cGVkZWYgRXJyb3JJbnN0YW5jZSBCYXNlOwogCi0gICAgc3RhdGljIEpTV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBjb25z
dCBTdHJpbmcmLCBib29sKTsKLSAgICBzdGF0aWMgSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvciog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUgbWVz
c2FnZSwgYm9vbCB1c2VDdXJyZW50RnJhbWUpCisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBWTSYsIFN0cnVjdHVyZSosIGNvbnN0IFN0cmlu
ZyYpOworICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKiBjcmVhdGUoRXhlY1N0
YXRlKiBzdGF0ZSwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBtZXNzYWdl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIG1lc3NhZ2Uu
aXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogbWVzc2FnZS50b1dURlN0cmluZyhleGVjKSwgdXNl
Q3VycmVudEZyYW1lKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShzdGF0ZSwgdm0sIHN0cnVjdHVy
ZSwgbWVzc2FnZS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkgOiBtZXNzYWdlLnRvV1RGU3RyaW5n
KHN0YXRlKSk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpAQCAtNDcsNyArNDcsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihWTSYsIFN0cnVjdHVyZSop
OwogfTsKIAotSlNPYmplY3QqIGNyZWF0ZVdlYkFzc2VtYmx5Q29tcGlsZUVycm9yKEV4ZWNTdGF0
ZSosIGNvbnN0IFN0cmluZyYpOworSlNPYmplY3QqIGNyZWF0ZUpTV2ViQXNzZW1ibHlDb21waWxl
RXJyb3IoRXhlY1N0YXRlKiwgVk0mLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlMaW5rRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUxpbmtFcnJvci5jcHAKaW5kZXggYmU5ZTU4NS4uZWY1MmZlOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUxpbmtFcnJv
ci5jcHAKQEAgLTMyLDExICszMiwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSlNXZWJBc3Nl
bWJseUxpbmtFcnJvciogSlNXZWJBc3NlbWJseUxpbmtFcnJvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKK0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IqIEpTV2ViQXNzZW1ibHlMaW5rRXJyb3I6OmNyZWF0
ZShFeGVjU3RhdGUqIHN0YXRlLCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5TGlua0Vycm9yPih2bS0+aGVhcCkpIEpTV2ViQXNzZW1i
bHlMaW5rRXJyb3IoKnZtLCBzdHJ1Y3R1cmUpOworICAgIGF1dG8qIGluc3RhbmNlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseUxpbmtFcnJvcj4odm0uaGVhcCkpIEpT
V2ViQXNzZW1ibHlMaW5rRXJyb3Iodm0sIHN0cnVjdHVyZSk7CiAgICAgaW5zdGFuY2UtPm1fc291
cmNlQXBwZW5kZXIgPSBkZWZhdWx0U291cmNlQXBwZW5kZXI7Ci0gICAgaW5zdGFuY2UtPmZpbmlz
aENyZWF0aW9uKHN0YXRlLCAqdm0sIG1lc3NhZ2UsIHRydWUpOworICAgIGJvb2wgdXNlQ3VycmVu
dEZyYW1lID0gdHJ1ZTsKKyAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oc3RhdGUsIHZtLCBt
ZXNzYWdlLCB1c2VDdXJyZW50RnJhbWUpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIApAQCAt
NDgsNyArNDksNyBAQCBKU1dlYkFzc2VtYmx5TGlua0Vycm9yOjpKU1dlYkFzc2VtYmx5TGlua0Vy
cm9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiBjb25zdCBDbGFzc0luZm8gSlNXZWJB
c3NlbWJseUxpbmtFcnJvcjo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuTGlua0Vycm9yIiwgJkJh
c2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dlYkFzc2VtYmx5TGlua0Vycm9y
KSB9OwogCiAgICAgCi1KU09iamVjdCogY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihFeGVj
U3RhdGUqIHN0YXRlLCBWTSogdm0sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiBj
cmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKEV4ZWNTdGF0ZSogc3RhdGUsIFZNJiB2bSwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwog
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUxpbmtFcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUxpbmtFcnJvci5oCmluZGV4IGEwNmYwZmYuLmYyNjUxZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TGlua0Vycm9yLmgK
QEAgLTM1LDggKzM1LDggQEAgY2xhc3MgSlNXZWJBc3NlbWJseUxpbmtFcnJvciA6IHB1YmxpYyBF
cnJvckluc3RhbmNlIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEVycm9ySW5zdGFuY2UgQmFzZTsK
IAotICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5TGlua0Vycm9yKiBjcmVhdGUoRXhlY1N0YXRlKiwg
Vk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgSlNXZWJBc3NlbWJs
eUxpbmtFcnJvciogY3JlYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIFZNKiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTVmFsdWUgbWVzc2FnZSkKKyAgICBzdGF0aWMgSlNXZWJBc3NlbWJseUxpbmtF
cnJvciogY3JlYXRlKEV4ZWNTdGF0ZSosIFZNJiwgU3RydWN0dXJlKiwgY29uc3QgU3RyaW5nJik7
CisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IqIGNyZWF0ZShFeGVjU3RhdGUqIHN0
YXRlLCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1ZhbHVlIG1lc3NhZ2UpCiAgICAg
ewogICAgICAgICByZXR1cm4gY3JlYXRlKHN0YXRlLCB2bSwgc3RydWN0dXJlLCBtZXNzYWdlLmlz
VW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IG1lc3NhZ2UudG9XVEZTdHJpbmcoc3RhdGUpKTsKICAg
ICB9CkBAIC00Nyw3ICs0Nyw3IEBAIHByb3RlY3RlZDoKICAgICBKU1dlYkFzc2VtYmx5TGlua0Vy
cm9yKFZNJiwgU3RydWN0dXJlKik7CiB9OwogCi1KU09iamVjdCogY3JlYXRlSlNXZWJBc3NlbWJs
eUxpbmtFcnJvcihFeGVjU3RhdGUqLCBWTSosIGNvbnN0IFN0cmluZyYpOworSlNPYmplY3QqIGNy
ZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoRXhlY1N0YXRlKiwgVk0mLCBjb25zdCBTdHJpbmcm
KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAKaW5kZXggMzEy
MWVmYi4uZTIxMmEzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAKQEAgLTMyLDEwICszMiwxMSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciogSlNXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGJvb2wgdXNlQ3VycmVudEZyYW1lKQor
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciogSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3Jl
YXRlKEV4ZWNTdGF0ZSogc3RhdGUsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBhdXRvJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1
dG8qIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvcj4odm0uaGVhcCkpIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3Iodm0sIHN0cnVj
dHVyZSk7CisgICAgaW5zdGFuY2UtPm1fc291cmNlQXBwZW5kZXIgPSBkZWZhdWx0U291cmNlQXBw
ZW5kZXI7CisgICAgYm9vbCB1c2VDdXJyZW50RnJhbWUgPSB0cnVlOwogICAgIGluc3RhbmNlLT5m
aW5pc2hDcmVhdGlvbihzdGF0ZSwgdm0sIG1lc3NhZ2UsIHVzZUN1cnJlbnRGcmFtZSk7CiAgICAg
cmV0dXJuIGluc3RhbmNlOwogfQpAQCAtNDcsNiArNDgsNyBAQCBKU1dlYkFzc2VtYmx5UnVudGlt
ZUVycm9yOjpKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cgogCiBjb25zdCBDbGFzc0luZm8gSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6c19pbmZv
ID0geyAiV2ViQXNzZW1ibHkuUnVudGltZUVycm9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKSB9OwogCisgICAgCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3IuaAppbmRleCAzYzc4NzllLi41YWM2MzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oCkBAIC0z
NSwxMCArMzUsMTAgQEAgY2xhc3MgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciA6IHB1YmxpYyBF
cnJvckluc3RhbmNlIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEVycm9ySW5zdGFuY2UgQmFzZTsK
IAotICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKiBjcmVhdGUoRXhlY1N0YXRl
KiwgU3RydWN0dXJlKiwgY29uc3QgU3RyaW5nJiwgYm9vbCB1c2VDdXJyZW50RnJhbWUgPSB0cnVl
KTsKLSAgICBzdGF0aWMgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUgbWVzc2FnZSwgYm9vbCB1c2VD
dXJyZW50RnJhbWUpCisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IqIGNyZWF0
ZShFeGVjU3RhdGUqLCBWTSYsIFN0cnVjdHVyZSosIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRp
YyBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKiBjcmVhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBtZXNzYWdlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIG1lc3NhZ2UuaXNVbmRlZmluZWQoKSA/
IFN0cmluZygpIDogbWVzc2FnZS50b1dURlN0cmluZyhleGVjKSwgdXNlQ3VycmVudEZyYW1lKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZShzdGF0ZSwgdm0sIHN0cnVjdHVyZSwgbWVzc2FnZS5pc1Vu
ZGVmaW5lZCgpID8gU3RyaW5nKCkgOiBtZXNzYWdlLnRvV1RGU3RyaW5nKHN0YXRlKSk7CiAgICAg
fQogCiAgICAgREVDTEFSRV9JTkZPOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9y
LmNwcAppbmRleCBkNjg1NjdhLi40MGVmZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNv
bnN0cnVjdG9yLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKEV4ZWNTdGF0ZQog
ICAgIEpTVmFsdWUgbWVzc2FnZSA9IHN0YXRlLT5hcmd1bWVudCgwKTsKICAgICBhdXRvKiBzdHJ1
Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShzdGF0ZSwg
c3RhdGUtPm5ld1RhcmdldCgpLCBhc0ludGVybmFsRnVuY3Rpb24oc3RhdGUtPmpzQ2FsbGVlKCkp
LT5nbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlDb21waWxlRXJyb3JTdHJ1Y3R1cmUoKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjpjcmVhdGUoc3Rh
dGUsIHN0cnVjdHVyZSwgbWVzc2FnZSwgZmFsc2UpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OmNyZWF0ZShzdGF0ZSwgdm0sIHN0cnVjdHVy
ZSwgbWVzc2FnZSkpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihFeGVjU3RhdGUqIHN0YXRlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5z
dGFuY2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZDYzZTgzOS4uNThlYTI1ODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJ
bnN0YW5jZUNvbnN0cnVjdG9yLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlJbnN0YW5jZShFeGVj
U3RhdGUqIGV4CiAgICAgICAgICAgICAvLyA0LiBJZiBpIGlzIGEgZnVuY3Rpb24gaW1wb3J0Ogog
ICAgICAgICAgICAgLy8gaS4gSWYgSXNDYWxsYWJsZSh2KSBpcyBmYWxzZSwgdGhyb3cgYSBXZWJB
c3NlbWJseS5MaW5rRXJyb3IuCiAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzRnVuY3Rpb24oKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4
ZWMsIHRocm93U2NvcGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgJnZtLCBB
U0NJSUxpdGVyYWwoImltcG9ydCBmdW5jdGlvbiBtdXN0IGJlIGNhbGxhYmxlIikpKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0
aHJvd1Njb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxp
dGVyYWwoImltcG9ydCBmdW5jdGlvbiBtdXN0IGJlIGNhbGxhYmxlIikpKSk7CiAgICAgICAgICAg
ICBKU0NlbGwqIGNlbGwgPSB2YWx1ZS5hc0NlbGwoKTsKICAgICAgICAgICAgIC8vIGlpLiBJZiB2
IGlzIGFuIEV4cG9ydGVkIEZ1bmN0aW9uIEV4b3RpYyBPYmplY3Q6CiAgICAgICAgICAgICBpZiAo
V2ViQXNzZW1ibHlGdW5jdGlvbiogaW1wb3J0ZWRFeHBvcnRzID0ganNEeW5hbWljQ2FzdDxXZWJB
c3NlbWJseUZ1bmN0aW9uKj4ob2JqZWN0KSkgewpAQCAtMTM3LDIyICsxMzcsMjIgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUluc3Rh
bmNlKEV4ZWNTdGF0ZSogZXgKICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUg
PSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlUYWJsZSo+KHZhbHVlKTsKICAgICAgICAgICAg
IC8vIGkuIElmIHYgaXMgbm90IGEgV2ViQXNzZW1ibHkuVGFibGUgb2JqZWN0LCB0aHJvdyBhIFdl
YkFzc2VtYmx5LkxpbmtFcnJvci4KICAgICAgICAgICAgIGlmICghdGFibGUpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Nj
b3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsICZ2bSwgQVNDSUlMaXRlcmFs
KCJUYWJsZSBpbXBvcnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5LlRhYmxlIikp
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlv
bihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZt
LCBBU0NJSUxpdGVyYWwoIlRhYmxlIGltcG9ydCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgV2ViQXNz
ZW1ibHkuVGFibGUiKSkpKTsKIAogICAgICAgICAgICAgdWludDMyX3QgZXhwZWN0ZWRJbml0aWFs
ID0gbW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbi5pbml0aWFsKCk7CiAgICAgICAg
ICAgICB1aW50MzJfdCBhY3R1YWxJbml0aWFsID0gdGFibGUtPnNpemUoKTsKICAgICAgICAgICAg
IGlmIChhY3R1YWxJbml0aWFsIDwgZXhwZWN0ZWRJbml0aWFsKQotICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3Jl
YXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCAmdm0sIEFTQ0lJTGl0ZXJhbCgiVGFibGUg
aW1wb3J0IHByb3ZpZGVkIGFuICdpbml0aWFsJyB0aGF0IGlzIHRvbyBzbWFsbCIpKSkpOworICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywg
dGhyb3dTY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlM
aXRlcmFsKCJUYWJsZSBpbXBvcnQgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgdG9vIHNt
YWxsIikpKSk7CiAKICAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBleHBl
Y3RlZE1heGltdW0gPSBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9uLm1heGltdW0o
KSkgewogICAgICAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGFjdHVhbE1heGlt
dW0gPSB0YWJsZS0+bWF4aW11bSgpOwogICAgICAgICAgICAgICAgIGlmICghYWN0dWFsTWF4aW11
bSkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKAotICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRl
SlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCAmdm0sIEFTQ0lJTGl0ZXJhbCgiVGFibGUgaW1w
b3J0IGRvZXMgbm90IGhhdmUgYSAnbWF4aW11bScgYnV0IHRoZSBtb2R1bGUgcmVxdWlyZXMgdGhh
dCBpdCBkb2VzIikpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBB
U0NJSUxpdGVyYWwoIlRhYmxlIGltcG9ydCBkb2VzIG5vdCBoYXZlIGEgJ21heGltdW0nIGJ1dCB0
aGUgbW9kdWxlIHJlcXVpcmVzIHRoYXQgaXQgZG9lcyIpKSkpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBpZiAoKmFjdHVhbE1heGltdW0gPiAqZXhwZWN0ZWRNYXhpbXVtKSB7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoCi0gICAgICAgICAg
ICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVKU1dl
YkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsICZ2bSwgQVNDSUlMaXRlcmFsKCJJbXBvcnRlZCBUYWJs
ZSdzICdtYXhpbXVtJyBpcyBsYXJnZXIgdGhhbiB0aGUgbW9kdWxlJ3MgZXhwZWN0ZWQgJ21heGlt
dW0nIikpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0
aHJvd1Njb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxp
dGVyYWwoIkltcG9ydGVkIFRhYmxlJ3MgJ21heGltdW0nIGlzIGxhcmdlciB0aGFuIHRoZSBtb2R1
bGUncyBleHBlY3RlZCAnbWF4aW11bSciKSkpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAKQEAgLTE2OSwyMyArMTY5LDIzIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlJbnN0YW5jZShFeGVjU3RhdGUqIGV4CiAg
ICAgICAgICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBqc0R5bmFtaWNDYXN0PEpT
V2ViQXNzZW1ibHlNZW1vcnkqPih2YWx1ZSk7CiAgICAgICAgICAgICAvLyBpLiBJZiB2IGlzIG5v
dCBhIFdlYkFzc2VtYmx5Lk1lbW9yeSBvYmplY3QsIHRocm93IGEgV2ViQXNzZW1ibHkuTGlua0Vy
cm9yLgogICAgICAgICAgICAgaWYgKCFtZW1vcnkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVKU1dl
YkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsICZ2bSwgQVNDSUlMaXRlcmFsKCJNZW1vcnkgaW1wb3J0
IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5NZW1vcnkiKSkpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93
U2NvcGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIEFTQ0lJTGl0ZXJh
bCgiTWVtb3J5IGltcG9ydCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuTWVtb3J5
IikpKSk7CiAKICAgICAgICAgICAgIFdhc206OlBhZ2VDb3VudCBleHBlY3RlZEluaXRpYWwgPSBt
b2R1bGVJbmZvcm1hdGlvbi5tZW1vcnkuaW5pdGlhbCgpOwogICAgICAgICAgICAgV2FzbTo6UGFn
ZUNvdW50IGFjdHVhbEluaXRpYWwgPSBtZW1vcnktPm1lbW9yeSgpLT5pbml0aWFsKCk7CiAgICAg
ICAgICAgICBpZiAoYWN0dWFsSW5pdGlhbCA8IGV4cGVjdGVkSW5pdGlhbCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2Nv
cGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgJnZtLCBBU0NJSUxpdGVyYWwo
Ik1lbW9yeSBpbXBvcnQgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgdG9vIHNtYWxsIikp
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlv
bihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZt
LCBBU0NJSUxpdGVyYWwoIk1lbW9yeSBpbXBvcnQgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQg
aXMgdG9vIHNtYWxsIikpKSk7CiAKICAgICAgICAgICAgIGlmIChXYXNtOjpQYWdlQ291bnQgZXhw
ZWN0ZWRNYXhpbXVtID0gbW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5Lm1heGltdW0oKSkgewogICAg
ICAgICAgICAgICAgIFdhc206OlBhZ2VDb3VudCBhY3R1YWxNYXhpbXVtID0gbWVtb3J5LT5tZW1v
cnkoKS0+bWF4aW11bSgpOwogICAgICAgICAgICAgICAgIGlmICghYWN0dWFsTWF4aW11bSkgewog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKAotICAgICAgICAgICAg
ICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlSlNXZWJB
c3NlbWJseUxpbmtFcnJvcihleGVjLCAmdm0sIEFTQ0lJTGl0ZXJhbCgiTWVtb3J5IGltcG9ydCBk
aWQgbm90IGhhdmUgYSAnbWF4aW11bScgYnV0IHRoZSBtb2R1bGUgcmVxdWlyZXMgdGhhdCBpdCBk
b2VzIikpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0
aHJvd1Njb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxp
dGVyYWwoIk1lbW9yeSBpbXBvcnQgZGlkIG5vdCBoYXZlIGEgJ21heGltdW0nIGJ1dCB0aGUgbW9k
dWxlIHJlcXVpcmVzIHRoYXQgaXQgZG9lcyIpKSkpOwogICAgICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgICAgIGlmIChhY3R1YWxNYXhpbXVtID4gZXhwZWN0ZWRNYXhpbXVtKSB7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoCi0gICAgICAgICAgICAgICAg
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVKU1dlYkFzc2Vt
Ymx5TGlua0Vycm9yKGV4ZWMsICZ2bSwgQVNDSUlMaXRlcmFsKCJNZW1vcnkgaW1wb3J0cyAnbWF4
aW11bScgaXMgbGFyZ2VyIHRoYW4gdGhlIG1vZHVsZSdzIGV4cGVjdGVkICdtYXhpbXVtJyIpKSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29w
ZSwgY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlMaXRlcmFsKCJN
ZW1vcnkgaW1wb3J0cyAnbWF4aW11bScgaXMgbGFyZ2VyIHRoYW4gdGhlIG1vZHVsZSdzIGV4cGVj
dGVkICdtYXhpbXVtJyIpKSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIC8vIGlpLiBBcHBlbmQgdiB0byBtZW1vcmllcy4KQEAgLTE5OSw3ICsxOTksNyBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UoRXhlY1N0YXRlKiBleAogICAgICAgICAgICAgQVNTRVJUKG1vZHVsZUluZm9y
bWF0aW9uLmdsb2JhbHNbaW1wb3J0LmtpbmRJbmRleF0ubXV0YWJpbGl0eSA9PSBXYXNtOjpHbG9i
YWw6OkltbXV0YWJsZSk7CiAgICAgICAgICAgICAvLyBpaS4gSWYgVHlwZSh2KSBpcyBub3QgTnVt
YmVyLCB0aHJvdyBhIFR5cGVFcnJvci4KICAgICAgICAgICAgIGlmICghdmFsdWUuaXNOdW1iZXIo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgJnZt
LCBBU0NJSUxpdGVyYWwoImltcG9ydGVkIGdsb2JhbCBtdXN0IGJlIGEgbnVtYmVyIikpKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVj
LCB0aHJvd1Njb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJ
SUxpdGVyYWwoImltcG9ydGVkIGdsb2JhbCBtdXN0IGJlIGEgbnVtYmVyIikpKSk7CiAgICAgICAg
ICAgICAvLyBpaWkuIEFwcGVuZCBUb1dlYkFzc2VtYmx5VmFsdWUodikgdG8gaW1wb3J0cy4KICAg
ICAgICAgICAgIHN3aXRjaCAobW9kdWxlSW5mb3JtYXRpb24uZ2xvYmFsc1tpbXBvcnQua2luZElu
ZGV4XS50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFdhc206OkkzMjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJy
b3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNWRhZjFlOS4uZWQwNzQzYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5r
RXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUxpbmtFcnJvcihFeGVjU3Rh
dGUqIHMKICAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBzdGF0ZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0
byogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUo
c3RhdGUsIHN0YXRlLT5uZXdUYXJnZXQoKSwgYXNJbnRlcm5hbEZ1bmN0aW9uKHN0YXRlLT5qc0Nh
bGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5TGlua0Vycm9yU3RydWN0dXJlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNXZWJBc3NlbWJseUxpbmtFcnJvcjo6Y3JlYXRlKHN0
YXRlLCAmdm0sIHN0cnVjdHVyZSwgbWVzc2FnZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNXZWJBc3NlbWJseUxpbmtFcnJvcjo6Y3JlYXRlKHN0YXRlLCB2bSwgc3RydWN0dXJlLCBt
ZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxK
U1dlYkFzc2VtYmx5TGlua0Vycm9yKEV4ZWNTdGF0ZSogc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IDczY2E3YTQuLjM4ZWRiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0
b3IuY3BwCkBAIC04NCw3ICs4NCw3IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1
Y3Rvcjo6Y3JlYXRlTW9kdWxlKEV4ZWNTdGF0ZSogc3RhdGUsIFN0cnVjdHVyZSoKICAgICAvLyBP
biBmYWlsdXJlLCBhIG5ldyBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IgaXMgdGhyb3duLgogICAg
IHBsYW4ucnVuKCk7CiAgICAgaWYgKHBsYW4uZmFpbGVkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNyZWF0ZVdlYkFzc2VtYmx5Q29tcGlsZUVycm9yKHN0
YXRlLCBwbGFuLmVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlv
bihzdGF0ZSwgc2NvcGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3Ioc3RhdGUsIHZt
LCBwbGFuLmVycm9yTWVzc2FnZSgpKSk7CiAKICAgICAvLyBPbiBzdWNjZXNzLCBhIG5ldyBXZWJB
c3NlbWJseS5Nb2R1bGUgb2JqZWN0IGlzIHJldHVybmVkIHdpdGggW1tNb2R1bGVdXSBzZXQgdG8g
dGhlIHZhbGlkYXRlZCBBc3QubW9kdWxlLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKaW5kZXggOGUyZGM3
My4uZWFkNjcxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQg
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBzdGF0ZSwgSlNXZWJBc3Nl
bWJseUluc3RhbmNlKiBpbnN0CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBTY29wZSwgdHlwZW5h
bWUgTiwgdHlwZW5hbWUgLi4uQXJncz4KLU5FVkVSX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBkYXRh
U2VnbWVudEZhaWwoRXhlY1N0YXRlKiBzdGF0ZSwgVk0qIHZtLCBTY29wZSYgc2NvcGUsIE4gbWVt
b3J5U2l6ZSwgTiBzZWdtZW50U2l6ZSwgTiBvZmZzZXQsIEFyZ3MuLi4gYXJncykKK05FVkVSX0lO
TElORSBzdGF0aWMgSlNWYWx1ZSBkYXRhU2VnbWVudEZhaWwoRXhlY1N0YXRlKiBzdGF0ZSwgVk0m
IHZtLCBTY29wZSYgc2NvcGUsIE4gbWVtb3J5U2l6ZSwgTiBzZWdtZW50U2l6ZSwgTiBvZmZzZXQs
IEFyZ3MuLi4gYXJncykKIHsKICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3Bl
LCBjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKHN0YXRlLCB2bSwgbWFrZVN0cmluZyhBU0NJ
SUxpdGVyYWwoIkludmFsaWQgZGF0YSBzZWdtZW50IGluaXRpYWxpemF0aW9uOiBzZWdtZW50IG9m
ICIpLCBTdHJpbmc6Om51bWJlcihzZWdtZW50U2l6ZSksIEFTQ0lJTGl0ZXJhbCgiIGJ5dGVzIG1l
bW9yeSBvZiAiKSwgU3RyaW5nOjpudW1iZXIobWVtb3J5U2l6ZSksIEFTQ0lJTGl0ZXJhbCgiIGJ5
dGVzLCBhdCBvZmZzZXQgIiksIFN0cmluZzo6bnVtYmVyKG9mZnNldCksIGFyZ3MuLi4pKSk7CiB9
CkBAIC0yMjUsNyArMjI1LDcgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZh
bHVhdGUoRXhlY1N0YXRlKiBzdGF0ZSkKICAgICAgICAgICAgIHVpbnQzMl90IHRhYmxlSW5kZXgg
PSBlbGVtZW50Lm9mZnNldDsKICAgICAgICAgICAgIHVpbnQ2NF90IGxhc3RXcml0dGVuSW5kZXgg
PSBzdGF0aWNfY2FzdDx1aW50NjRfdD4odGFibGVJbmRleCkgKyBzdGF0aWNfY2FzdDx1aW50NjRf
dD4oZWxlbWVudC5mdW5jdGlvbkluZGljZXMuc2l6ZSgpKSAtIDE7CiAgICAgICAgICAgICBpZiAo
bGFzdFdyaXR0ZW5JbmRleCA+PSB0YWJsZS0+c2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVy
biB0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJy
b3Ioc3RhdGUsICZ2bSwgQVNDSUlMaXRlcmFsKCJFbGVtZW50IGlzIHRyeWluZyB0byBzZXQgYW4g
b3V0IG9mIGJvdW5kcyB0YWJsZSBpbmRleCIpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihz
dGF0ZSwgdm0sIEFTQ0lJTGl0ZXJhbCgiRWxlbWVudCBpcyB0cnlpbmcgdG8gc2V0IGFuIG91dCBv
ZiBib3VuZHMgdGFibGUgaW5kZXgiKSkpOwogCiAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGkg
PSAwOyBpIDwgZWxlbWVudC5mdW5jdGlvbkluZGljZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogVGhpcyBlc3NlbnRpYWxseSBtZWFucyB3ZSdyZSBleHBvcnRpbmcg
YW4gaW1wb3J0LgpAQCAtMjY2LDkgKzI2Niw5IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQ6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgICAgICAgICBmb3IgKGF1dG8m
IHNlZ21lbnQgOiBkYXRhKSB7CiAgICAgICAgICAgICAgICAgaWYgKHNlZ21lbnQtPnNpemVJbkJ5
dGVzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzaXplSW5CeXRlcyA8IHNl
Z21lbnQtPnNpemVJbkJ5dGVzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRh
U2VnbWVudEZhaWwoc3RhdGUsICZ2bSwgc2NvcGUsIHNpemVJbkJ5dGVzLCBzZWdtZW50LT5zaXpl
SW5CeXRlcywgc2VnbWVudC0+b2Zmc2V0LCBBU0NJSUxpdGVyYWwoIiwgc2VnbWVudCBpcyB0b28g
YmlnIikpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFTZWdtZW50RmFpbChz
dGF0ZSwgdm0sIHNjb3BlLCBzaXplSW5CeXRlcywgc2VnbWVudC0+c2l6ZUluQnl0ZXMsIHNlZ21l
bnQtPm9mZnNldCwgQVNDSUlMaXRlcmFsKCIsIHNlZ21lbnQgaXMgdG9vIGJpZyIpKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNlZ21lbnQtPm9mZnNldCA+IHNpemVJbkJ5dGVz
IC0gc2VnbWVudC0+c2l6ZUluQnl0ZXMpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGRhdGFTZWdtZW50RmFpbChzdGF0ZSwgJnZtLCBzY29wZSwgc2l6ZUluQnl0ZXMsIHNlZ21lbnQt
PnNpemVJbkJ5dGVzLCBzZWdtZW50LT5vZmZzZXQsIEFTQ0lJTGl0ZXJhbCgiLCBzZWdtZW50IHdy
aXRlcyBvdXRzaWRlIG9mIG1lbW9yeSIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBkYXRhU2VnbWVudEZhaWwoc3RhdGUsIHZtLCBzY29wZSwgc2l6ZUluQnl0ZXMsIHNlZ21lbnQt
PnNpemVJbkJ5dGVzLCBzZWdtZW50LT5vZmZzZXQsIEFTQ0lJTGl0ZXJhbCgiLCBzZWdtZW50IHdy
aXRlcyBvdXRzaWRlIG9mIG1lbW9yeSIpKTsKICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KG1l
bW9yeSArIHNlZ21lbnQtPm9mZnNldCwgJnNlZ21lbnQtPmJ5dGUoMCksIHNlZ21lbnQtPnNpemVJ
bkJ5dGVzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDkyMGRiODMuLjA0YWFmZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9y
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3IoRXhlY1N0YXRlCiAgICAgSlNWYWx1ZSBtZXNzYWdlID0gc3RhdGUtPmFyZ3VtZW50
KDApOwogICAgIGF1dG8qIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNs
YXNzU3RydWN0dXJlKHN0YXRlLCBzdGF0ZS0+bmV3VGFyZ2V0KCksIGFzSW50ZXJuYWxGdW5jdGlv
bihzdGF0ZS0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseVJ1bnRpbWVF
cnJvclN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3I6OmNyZWF0ZShzdGF0ZSwgc3RydWN0dXJlLCBtZXNzYWdlLCBmYWxzZSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRl
KHN0YXRlLCB2bSwgc3RydWN0dXJlLCBtZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKEV4ZWNTdGF0
ZSogc3RhdGUpCi0tIAoyLjkuMwoK
</data>

          </attachment>
      

    </bug>

</bugzilla>