<?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>145396</bug_id>
          
          <creation_ts>2015-05-26 15:56:29 -0700</creation_ts>
          <short_desc>REGRESSION(r184872): Bindings tests broken on the bots. (Requested by dethbakin on #webkit).</short_desc>
          <delta_ts>2015-05-27 10:49:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>145016</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>bdakin</cc>
    
    <cc>darin</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1097520</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-26 15:56:29 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/184872 broke the build:
Bindings tests broken on the bots. (Requested by dethbakin on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097522</commentid>
    <comment_count>1</comment_count>
      <attachid>253753</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-26 15:56:59 -0700</bug_when>
    <thetext>Created attachment 253753
ROLLOUT of r184872

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097523</commentid>
    <comment_count>2</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-05-26 15:58:59 -0700</bug_when>
    <thetext>Here is the output of the failing bindings tests for future reference: 

(view as text)
python ./Tools/Scripts/run-bindings-tests
 in dir /Volumes/Data/slave/yosemite-debug-tests-wk2/build (timeout 1200 secs)
 watching logfiles {}
 argv: [&apos;python&apos;, &apos;./Tools/Scripts/run-bindings-tests&apos;]
 environment:
  Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.NzXM5OiteI/Render
  HOME=/Users/buildbot
  LOGNAME=buildbot
  OLDPWD=/Users/buildbot
  PATH=/usr/bin:/bin:/usr/sbin:/sbin
  PWD=/Volumes/Data/slave/yosemite-debug-tests-wk2/build
  SHELL=/bin/bash
  SHLVL=1
  SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.vyEiSPi6Q5/Listeners
  TMPDIR=/var/folders/k1/1ttd8pg161b8bnbstk_tjmz40000gn/T/
  USER=buildbot
  VERSIONER_PYTHON_PREFER_32_BIT=no
  VERSIONER_PYTHON_VERSION=2.7
  XPC_FLAGS=0x0
  XPC_SERVICE_NAME=0
  _=/usr/bin/twistd
  __CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0
 using PTY: False
PASS: (JS) JSTestCallback.cpp
PASS: (JS) JSTestCallback.h
PASS: (JS) JSTestCustomConstructorWithNoInterfaceObject.cpp
FAIL: (JS) JSTestCustomConstructorWithNoInterfaceObject.h
--- WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h	2015-05-26 14:52:03.000000000 -0700
+++ /var/folders/k1/1ttd8pg161b8bnbstk_tjmz40000gn/T/tmp0pXyrS/JSTestCustomConstructorWithNoInterfaceObject.h	2015-05-26 15:30:10.000000000 -0700
@@ -27,7 +27,7 @@
 
 namespace WebCore {
 
-class WEBCORE_EXPORT JSTestCustomConstructorWithNoInterfaceObject : public JSDOMWrapper {
+class JSTestCustomConstructorWithNoInterfaceObject : public JSDOMWrapper {
 public:
     typedef JSDOMWrapper Base;
     static JSTestCustomConstructorWithNoInterfaceObject* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&lt;TestCustomConstructorWithNoInterfaceObject&gt;&amp;&amp; impl)
@@ -78,7 +78,7 @@
     return &amp;owner.get();
 }
 
-WEBCORE_EXPORT JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestCustomConstructorWithNoInterfaceObject*);
+JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestCustomConstructorWithNoInterfaceObject*);
 inline JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, TestCustomConstructorWithNoInterfaceObject&amp; impl) { return toJS(exec, globalObject, &amp;impl); }
 
 // Custom constructor

PASS: (JS) JSTestCustomNamedGetter.cpp
PASS: (JS) JSTestCustomNamedGetter.h
PASS: (JS) JSTestActiveDOMObject.cpp
PASS: (JS) JSTestActiveDOMObject.h
PASS: (JS) JSTestEventConstructor.cpp
PASS: (JS) JSTestEventConstructor.h
PASS: (JS) JSTestEventTarget.cpp
PASS: (JS) JSTestEventTarget.h
PASS: (JS) JSattribute.cpp
PASS: (JS) JSattribute.h
PASS: (JS) JSTestException.cpp
PASS: (JS) JSTestException.h
PASS: (JS) JSTestGenerateIsReachable.cpp
PASS: (JS) JSTestGenerateIsReachable.h
PASS: (JS) JSTestImplements.cpp
PASS: (JS) JSTestImplements.h
PASS: (JS) JSreadonly.cpp
PASS: (JS) JSreadonly.h
PASS: (JS) JSTestInterface.cpp
PASS: (JS) JSTestInterface.h
PASS: (JS) JSTestMediaQueryListListener.cpp
PASS: (JS) JSTestMediaQueryListListener.h
PASS: (JS) JSTestNamedConstructor.cpp
PASS: (JS) JSTestNamedConstructor.h
PASS: (JS) JSTestNode.cpp
PASS: (JS) JSTestNode.h
PASS: (JS) JSTestNondeterministic.cpp
PASS: (JS) JSTestNondeterministic.h
PASS: (JS) JSTestObj.cpp
PASS: (JS) JSTestObj.h
PASS: (JS) JSTestOverloadedConstructors.cpp
PASS: (JS) JSTestOverloadedConstructors.h
PASS: (JS) JSTestSerializedScriptValueInterface.cpp
PASS: (JS) JSTestSerializedScriptValueInterface.h
PASS: (JS) JSTestSupplemental.cpp
PASS: (JS) JSTestSupplemental.h
PASS: (JS) JSTestTypedefs.cpp
PASS: (JS) JSTestTypedefs.h
PASS: (ObjC) DOMTestCallback.h
PASS: (ObjC) DOMTestCallback.mm
PASS: (ObjC) DOMTestCallbackInternal.h
PASS: (ObjC) DOMTestCustomConstructorWithNoInterfaceObject.h
FAIL: (ObjC) DOMTestCustomConstructorWithNoInterfaceObject.mm
--- WebCore/bindings/scripts/test/ObjC/DOMTestCustomConstructorWithNoInterfaceObject.mm	2015-05-26 14:52:03.000000000 -0700
+++ /var/folders/k1/1ttd8pg161b8bnbstk_tjmz40000gn/T/tmpTF0VcJ/DOMTestCustomConstructorWithNoInterfaceObject.mm	2015-05-26 15:30:13.000000000 -0700
@@ -69,7 +69,7 @@
 
 DOMTestCustomConstructorWithNoInterfaceObject *kit(WebCore::TestCustomConstructorWithNoInterfaceObject* value)
 {
-    { DOM_ASSERT_MAIN_THREAD(); WebCoreThreadViolationCheckRoundOne(); };
+    WebCoreThreadViolationCheckRoundOne();
     if (!value)
         return nil;
     if (DOMTestCustomConstructorWithNoInterfaceObject *wrapper = getDOMWrapper(value))

PASS: (ObjC) DOMTestCustomConstructorWithNoInterfaceObjectInternal.h
PASS: (ObjC) DOMTestCustomNamedGetter.h
PASS: (ObjC) DOMTestCustomNamedGetter.mm
PASS: (ObjC) DOMTestCustomNamedGetterInternal.h
PASS: (ObjC) DOMTestActiveDOMObject.h
PASS: (ObjC) DOMTestActiveDOMObject.mm
PASS: (ObjC) DOMTestActiveDOMObjectInternal.h
PASS: (ObjC) DOMTestEventConstructor.h
PASS: (ObjC) DOMTestEventConstructor.mm
PASS: (ObjC) DOMTestEventConstructorInternal.h
PASS: (ObjC) DOMTestEventTarget.h
PASS: (ObjC) DOMTestEventTarget.mm
PASS: (ObjC) DOMTestEventTargetInternal.h
PASS: (ObjC) DOMattribute.h
PASS: (ObjC) DOMattribute.mm
PASS: (ObjC) DOMattributeInternal.h
PASS: (ObjC) DOMTestException.h
PASS: (ObjC) DOMTestException.mm
PASS: (ObjC) DOMTestExceptionInternal.h
PASS: (ObjC) DOMTestGenerateIsReachable.h
PASS: (ObjC) DOMTestGenerateIsReachable.mm
PASS: (ObjC) DOMTestGenerateIsReachableInternal.h
PASS: (ObjC) DOMTestImplements.cpp
PASS: (ObjC) DOMTestImplements.h
PASS: (ObjC) DOMreadonly.h
PASS: (ObjC) DOMreadonly.mm
PASS: (ObjC) DOMreadonlyInternal.h
PASS: (ObjC) DOMTestInterface.h
PASS: (ObjC) DOMTestInterface.mm
PASS: (ObjC) DOMTestInterfaceInternal.h
PASS: (ObjC) DOMTestMediaQueryListListener.h
PASS: (ObjC) DOMTestMediaQueryListListener.mm
PASS: (ObjC) DOMTestMediaQueryListListenerInternal.h
PASS: (ObjC) DOMTestNamedConstructor.h
PASS: (ObjC) DOMTestNamedConstructor.mm
PASS: (ObjC) DOMTestNamedConstructorInternal.h
PASS: (ObjC) DOMTestNode.h
PASS: (ObjC) DOMTestNode.mm
PASS: (ObjC) DOMTestNodeInternal.h
PASS: (ObjC) DOMTestNondeterministic.h
PASS: (ObjC) DOMTestNondeterministic.mm
PASS: (ObjC) DOMTestNondeterministicInternal.h
PASS: (ObjC) DOMTestObj.h
PASS: (ObjC) DOMTestObj.mm
PASS: (ObjC) DOMTestObjInternal.h
PASS: (ObjC) DOMTestOverloadedConstructors.h
PASS: (ObjC) DOMTestOverloadedConstructors.mm
PASS: (ObjC) DOMTestOverloadedConstructorsInternal.h
PASS: (ObjC) DOMTestSerializedScriptValueInterface.h
PASS: (ObjC) DOMTestSerializedScriptValueInterface.mm
PASS: (ObjC) DOMTestSerializedScriptValueInterfaceInternal.h
PASS: (ObjC) DOMTestSupplemental.cpp
PASS: (ObjC) DOMTestSupplemental.h
PASS: (ObjC) DOMTestTypedefs.h
PASS: (ObjC) DOMTestTypedefs.mm
PASS: (ObjC) DOMTestTypedefsInternal.h
PASS: (GObject) WebKitDOMTestCallback.cpp
PASS: (GObject) WebKitDOMTestCallback.h
PASS: (GObject) WebKitDOMTestCallbackPrivate.h
PASS: (GObject) WebKitDOMTestCustomConstructorWithNoInterfaceObject.cpp
PASS: (GObject) WebKitDOMTestCustomConstructorWithNoInterfaceObject.h
PASS: (GObject) WebKitDOMTestCustomConstructorWithNoInterfaceObjectPrivate.h
PASS: (GObject) WebKitDOMTestCustomNamedGetter.cpp
PASS: (GObject) WebKitDOMTestCustomNamedGetter.h
PASS: (GObject) WebKitDOMTestCustomNamedGetterPrivate.h
PASS: (GObject) WebKitDOMTestActiveDOMObject.cpp
PASS: (GObject) WebKitDOMTestActiveDOMObject.h
PASS: (GObject) WebKitDOMTestActiveDOMObjectPrivate.h
PASS: (GObject) WebKitDOMTestEventConstructor.cpp
PASS: (GObject) WebKitDOMTestEventConstructor.h
PASS: (GObject) WebKitDOMTestEventConstructorPrivate.h
PASS: (GObject) WebKitDOMTestEventTarget.cpp
PASS: (GObject) WebKitDOMTestEventTarget.h
PASS: (GObject) WebKitDOMTestEventTargetPrivate.h
PASS: (GObject) WebKitDOMattribute.cpp
PASS: (GObject) WebKitDOMattribute.h
PASS: (GObject) WebKitDOMattributePrivate.h
PASS: (GObject) WebKitDOMTestException.cpp
PASS: (GObject) WebKitDOMTestException.h
PASS: (GObject) WebKitDOMTestExceptionPrivate.h
PASS: (GObject) WebKitDOMTestGenerateIsReachable.cpp
PASS: (GObject) WebKitDOMTestGenerateIsReachable.h
PASS: (GObject) WebKitDOMTestGenerateIsReachablePrivate.h
PASS: (GObject) WebKitDOMTestImplements.cpp
PASS: (GObject) WebKitDOMTestImplements.h
PASS: (GObject) WebKitDOMreadonly.cpp
PASS: (GObject) WebKitDOMreadonly.h
PASS: (GObject) WebKitDOMreadonlyPrivate.h
PASS: (GObject) WebKitDOMTestInterface.cpp
PASS: (GObject) WebKitDOMTestInterface.h
PASS: (GObject) WebKitDOMTestInterfacePrivate.h
PASS: (GObject) WebKitDOMTestMediaQueryListListener.cpp
PASS: (GObject) WebKitDOMTestMediaQueryListListener.h
PASS: (GObject) WebKitDOMTestMediaQueryListListenerPrivate.h
PASS: (GObject) WebKitDOMTestNamedConstructor.cpp
PASS: (GObject) WebKitDOMTestNamedConstructor.h
PASS: (GObject) WebKitDOMTestNamedConstructorPrivate.h
PASS: (GObject) WebKitDOMTestNode.cpp
PASS: (GObject) WebKitDOMTestNode.h
PASS: (GObject) WebKitDOMTestNodePrivate.h
PASS: (GObject) WebKitDOMTestNondeterministic.cpp
PASS: (GObject) WebKitDOMTestNondeterministic.h
PASS: (GObject) WebKitDOMTestNondeterministicPrivate.h
PASS: (GObject) WebKitDOMTestObj.cpp
PASS: (GObject) WebKitDOMTestObj.h
PASS: (GObject) WebKitDOMTestObjPrivate.h
PASS: (GObject) WebKitDOMTestOverloadedConstructors.cpp
PASS: (GObject) WebKitDOMTestOverloadedConstructors.h
PASS: (GObject) WebKitDOMTestOverloadedConstructorsPrivate.h
PASS: (GObject) WebKitDOMTestSerializedScriptValueInterface.cpp
PASS: (GObject) WebKitDOMTestSerializedScriptValueInterface.h
PASS: (GObject) WebKitDOMTestSerializedScriptValueInterfacePrivate.h
PASS: (GObject) WebKitDOMTestSupplemental.cpp
PASS: (GObject) WebKitDOMTestSupplemental.h
PASS: (GObject) WebKitDOMTestTypedefs.cpp
PASS: (GObject) WebKitDOMTestTypedefs.h
PASS: (GObject) WebKitDOMTestTypedefsPrivate.h

Some tests FAIL! (To update the reference files, execute &quot;run-bindings-tests --reset-results&quot;)
program finished with exit code 255
elapsedTime=8.838067</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097527</commentid>
    <comment_count>3</comment_count>
      <attachid>253753</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-26 16:01:03 -0700</bug_when>
    <thetext>Comment on attachment 253753
ROLLOUT of r184872

Clearing flags on attachment: 253753

Committed r184886: &lt;http://trac.webkit.org/changeset/184886&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097528</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-26 16:01:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097593</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-26 22:42:14 -0700</bug_when>
    <thetext>Thanks bdakin for taking the time to roll out the patch for me.

The code generator was changed between the time I prepared the patch and the time I landed it (https://bugs.webkit.org/show_bug.cgi?id=145372 and https://bugs.webkit.org/show_bug.cgi?id=144932).

The new binding tests I added need to be rebased to cope with these changes.

Any idea why the commit queue did not catch these errors upfront?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097654</commentid>
    <comment_count>6</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-05-27 10:13:47 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Thanks bdakin for taking the time to roll out the patch for me.
&gt; 
&gt; The code generator was changed between the time I prepared the patch and the
&gt; time I landed it (https://bugs.webkit.org/show_bug.cgi?id=145372 and
&gt; https://bugs.webkit.org/show_bug.cgi?id=144932).
&gt; 
&gt; The new binding tests I added need to be rebased to cope with these changes.
&gt; 
&gt; Any idea why the commit queue did not catch these errors upfront?

Ah, makes sense!

My understanding is that the commit queue runs layout tests but not bindings tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097664</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-27 10:49:29 -0700</bug_when>
    <thetext>For bindings test failures, it’s usually OK to just regenerate results rather than doing a path rollout. Of course, there’s always a chance that the failure represents a real bug, but I don’t think it’s super-risky to regenerate results and then consider that question at leisure. Nothing like the risk of, say, skipping a failing regression test.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253753</attachid>
            <date>2015-05-26 15:56:59 -0700</date>
            <delta_ts>2015-05-26 16:01:03 -0700</delta_ts>
            <desc>ROLLOUT of r184872</desc>
            <filename>bug-145396-20150526155648.patch</filename>
            <type>text/plain</type>
            <size>42819</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0ODgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjBhMjNiOGE4OTgxYWQ5
MjdiOWNiNDU5ZmYwN2E5ZDg1Mjc1NTMzMC4uNzEwNWY0ZWFjYWQwNmI1NDcwNWNlZDdjZmY5ODVi
YzRmYTM3NWE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA1LTI2ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTg0ODcyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ1Mzk2CisKKyAgICAgICAgQmluZGluZ3MgdGVzdHMgYnJva2VuIG9u
IHRoZSBib3RzLiAoUmVxdWVzdGVkIGJ5IGRldGhiYWtpbiBvbgorICAgICAgICAjd2Via2l0KS4K
KworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIkJpbmRpbmcgZ2VuZXJh
dG9yIHNob3VsZCBzdXBwb3J0IGludGVyZmFjZXMgd2l0aAorICAgICAgICBDdXN0b21Db25zdHJ1
Y3RvciBhbmQgTm9JbnRlcmZhY2VPYmplY3QiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDUwMTYKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMTg0ODcyCisKIDIwMTUtMDUtMjYgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9p
QG5hdmVyY29ycC5jb20+CiAKICAgICAgICAgW0VGTF1bQ29vcmRpbmF0ZWRHcmFwaGljc10gUmVt
b3ZlIENvb3JkaW5hdGVkVGlsZUNsaWVudCBhbmQgQ29vcmRpbmF0ZWRUaWxlQmFja2VuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCA1OGMwN2E3MWI4ZWYxMjM3MWUxNjQ3NzU5MGUyZDdlN2JlN2ViZDZlLi43NTZmYTc5NThj
NGI4MDA4ZjNiYjRkYmE4NDVhMjA2MDNjNTQ5OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTMwMSw3ICsxMzAxLDcg
QEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlc0hhc2hUYWJsZQogCiAgICAgaWYgKENvbnN0cnVjdG9y
U2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UpID09ICRpc0luc3RhbmNlKSB7CiAKLSAgICAg
ICAgaWYgKE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKSkgeworICAgICAgICBp
ZiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOb0ludGVyZmFjZU9iamVjdCJ9
KSB7CiAgICAgICAgICAgICBkaWUgaWYgISRudW1BdHRyaWJ1dGVzOwogICAgICAgICAgICAgcHVz
aChAJGhhc2hLZXlzLCAiY29uc3RydWN0b3IiKTsKICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSAi
anMiIC4gJGludGVyZmFjZU5hbWUgLiAiQ29uc3RydWN0b3IiOwpAQCAtMTc0OSw3ICsxNzQ5LDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJcbiIpOwogICAgIH0KIAotICAgIGlmICgkbnVtQXR0cmlidXRlcyA+IDAgfHwgTmVlZHNDb25z
dHJ1Y3RvclByb3BlcnR5KCRpbnRlcmZhY2UpKSB7CisgICAgaWYgKCRudW1BdHRyaWJ1dGVzID4g
MCB8fCAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vSW50ZXJmYWNlT2JqZWN0
In0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIvLyBBdHRyaWJ1dGVzXG5cbiIpOwog
ICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30p
IHsKICAgICAgICAgICAgIG5leHQgaWYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiRm9yd2FyZERlY2xhcmVJbkhlYWRlciJ9OwpAQCAtMTc2NSw3ICsxNzY1LDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KICAgICAg
ICAgCi0gICAgICAgIGlmIChOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkoJGludGVyZmFjZSkpIHsK
KyAgICAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm9JbnRlcmZh
Y2VPYmplY3QifSkgewogICAgICAgICAgICAgbXkgJGdldHRlciA9ICJqcyIgLiAkaW50ZXJmYWNl
TmFtZSAuICJDb25zdHJ1Y3RvciI7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpT
Qzo6RW5jb2RlZEpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwogICAgICAg
ICB9CkBAIC0xNzg0LDcgKzE3ODQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
IH0KIAogICAgICMgQWRkIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uCi0gICAgaWYgKE5lZWRzQ29u
c3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKSkgeworICAgIGlmICghJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vSW50ZXJmYWNlT2JqZWN0In0pIHsKICAgICAgICAgJGltcGxJ
bmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9IDE7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgICAgICAk
aW1wbEluY2x1ZGVzeyJET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudC5oIn0gPSAxOwpAQCAtMTgx
MSw3ICsxODExLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgXCVjb25k
aXRpb25hbHMsIDApIGlmICRudW1JbnN0YW5jZUF0dHJpYnV0ZXMgPiAwOwogCiAgICAgIyAtIEFk
ZCBhbGwgY29uc3RhbnRzCi0gICAgaWYgKE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJm
YWNlKSkgeworICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vSW50
ZXJmYWNlT2JqZWN0In0pIHsKICAgICAgICAgbXkgJGhhc2hTaXplID0gMDsKICAgICAgICAgbXkg
JGhhc2hOYW1lID0gJGNsYXNzTmFtZSAuICJDb25zdHJ1Y3RvclRhYmxlIjsKIApAQCAtMjE4OSw3
ICsyMTg5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgfQogCiAgICAg
fQotICAgICRudW1BdHRyaWJ1dGVzID0gJG51bUF0dHJpYnV0ZXMgKyAxIGlmIE5lZWRzQ29uc3Ry
dWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKTsKKyAgICAkbnVtQXR0cmlidXRlcyA9ICRudW1BdHRy
aWJ1dGVzICsgMSBpZiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vSW50ZXJm
YWNlT2JqZWN0In07CiAgICAgaWYgKCRudW1BdHRyaWJ1dGVzID4gMCkgewogICAgICAgICBmb3Jl
YWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAg
ICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOwpAQCAtMjQxNSw3ICsy
NDE1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiXG4iKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChOZWVkc0NvbnN0cnVj
dG9yUHJvcGVydHkoJGludGVyZmFjZSkpIHsKKyAgICAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiTm9JbnRlcmZhY2VPYmplY3QifSkgewogICAgICAgICAgICAgbXkg
JGNvbnN0cnVjdG9yRnVuY3Rpb25OYW1lID0gImpzIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0
cnVjdG9yIjsKIAogICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDdXN0b21Qcm94eVRvSlNPYmplY3QifSkgewpAQCAtMjQ0MCwxNCArMjQ0MCw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiTm9JbnRlcmZhY2VPYmplY3QifSkgewotICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoJHtjbGFzc05hbWV9Ojpn
ZXRDb25zdHJ1Y3RvcihleGVjLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7XG4i
KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgSlNWYWx1ZSBjb25zdHJ1Y3RvciA9ICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpj
cmVhdGUoZXhlYy0+dm0oKSwgJHtjbGFzc05hbWV9Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZShleGVjLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpLCBkb21PYmplY3QtPmdsb2Jh
bE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSksIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBjb25zdHJ1Y3RvciBwcm9wZXJ0eSB0byBl
bnN1cmUgcmV1c2luZyB0aGUgc2FtZSBjb25zdHJ1Y3RvciBvYmplY3RcbiIpOwotICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgY29uc3RydWN0b3IsIERv
bnRFbnVtIHwgUmVhZE9ubHkpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3Rvcik7XG4iKTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihleGVjLT52bSgpLCBkb21P
YmplY3QtPmdsb2JhbE9iamVjdCgpKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAifVxuXG4iKTsKICAgICAgICAgfQogCkBAIC00NzcwLDEzICs0NzYzLDYgQEAgc3ViIEhh
c0N1c3RvbU1ldGhvZAogICAgIHJldHVybiAkYXR0ckV4dC0+eyJDdXN0b20ifTsKIH0KIAotc3Vi
IE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eQotewotICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsK
LQotICAgIHJldHVybiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vSW50ZXJm
YWNlT2JqZWN0In0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNv
bnN0cnVjdG9yIn07Ci19Ci0KIHN1YiBJc0NvbnN0cnVjdGFibGUKIHsKICAgICBteSAkaW50ZXJm
YWNlID0gc2hpZnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM5YmI2Y2M0ZTY1NDQ0NTUyYzExNjg1
NmJjY2E0MTQ3ZWE4OGQ3ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01UZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaCIKLQotI2luY2x1ZGUgIkNTU0ltcG9ydFJ1
bGUuaCIKLSNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgIkRvY3VtZW50Lmgi
Ci0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbi5oIgotI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2luY2x1ZGUg
IldlYktpdERPTVByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01UZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcml2YXRlLmgiCi0jaW5jbHVkZSAiZ29iamVjdC9D
b252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KLQotI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfQ1VTVE9NX0NPTlNUUlVD
VE9SX1dJVEhfTk9fSU5URVJGQUNFX09CSkVDVF9HRVRfUFJJVkFURShvYmopIEdfVFlQRV9JTlNU
QU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9ET01fVFlQRV9URVNUX0NVU1RPTV9DT05TVFJV
Q1RPUl9XSVRIX05PX0lOVEVSRkFDRV9PQkpFQ1QsIFdlYktpdERPTVRlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByaXZhdGUpCi0KLXR5cGVkZWYgc3RydWN0IF9XZWJL
aXRET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcml2YXRlIHsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNl
T2JqZWN0PiBjb3JlT2JqZWN0OwotfSBXZWJLaXRET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3RQcml2YXRlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViS2l0
RE9NVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KiBraXQoV2ViQ29y
ZTo6VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KiBvYmopCi17Ci0g
ICAgaWYgKCFvYmopCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGdwb2ludGVyIHJldCA9
IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkKLSAgICAgICAgcmV0dXJuIFdFQktJVF9ET01fVEVT
VF9DVVNUT01fQ09OU1RSVUNUT1JfV0lUSF9OT19JTlRFUkZBQ0VfT0JKRUNUKHJldCk7Ci0KLSAg
ICByZXR1cm4gd3JhcFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdChv
YmopOwotfQotCi1XZWJDb3JlOjpUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3QqIGNvcmUoV2ViS2l0RE9NVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNl
T2JqZWN0KiByZXF1ZXN0KQotewotICAgIHJldHVybiByZXF1ZXN0ID8gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Kj4oV0VCS0lU
X0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpIDogMDsKLX0KLQotV2ViS2l0RE9NVGVz
dEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KiB3cmFwVGVzdEN1c3RvbUNv
bnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KFdlYkNvcmU6OlRlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCogY29yZU9iamVjdCkKLXsKLSAgICBBU1NFUlQoY29y
ZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdFQktJVF9ET01fVEVTVF9DVVNUT01fQ09OU1RSVUNUT1Jf
V0lUSF9OT19JTlRFUkZBQ0VfT0JKRUNUKGdfb2JqZWN0X25ldyhXRUJLSVRfRE9NX1RZUEVfVEVT
VF9DVVNUT01fQ09OU1RSVUNUT1JfV0lUSF9OT19JTlRFUkZBQ0VfT0JKRUNULCAiY29yZS1vYmpl
Y3QiLCBjb3JlT2JqZWN0LCBudWxscHRyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci1HX0RFRklORV9UWVBFKFdlYktpdERPTVRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdCwgd2Via2l0X2RvbV90ZXN0X2N1c3RvbV9jb25zdHJ1Y3Rvcl93aXRoX25vX2lu
dGVyZmFjZV9vYmplY3QsIFdFQktJVF9ET01fVFlQRV9PQkpFQ1QpCi0KLXN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fdGVzdF9jdXN0b21fY29uc3RydWN0b3Jfd2l0aF9ub19pbnRlcmZhY2Vfb2JqZWN0
X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01UZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9U
RVNUX0NVU1RPTV9DT05TVFJVQ1RPUl9XSVRIX05PX0lOVEVSRkFDRV9PQkpFQ1RfR0VUX1BSSVZB
VEUob2JqZWN0KTsKLQotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChwcml2LT5j
b3JlT2JqZWN0LmdldCgpKTsKLQotICAgIHByaXYtPn5XZWJLaXRET01UZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mo
d2Via2l0X2RvbV90ZXN0X2N1c3RvbV9jb25zdHJ1Y3Rvcl93aXRoX25vX2ludGVyZmFjZV9vYmpl
Y3RfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3RhdGljIEdPYmplY3Qq
IHdlYmtpdF9kb21fdGVzdF9jdXN0b21fY29uc3RydWN0b3Jfd2l0aF9ub19pbnRlcmZhY2Vfb2Jq
ZWN0X2NvbnN0cnVjdG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3Vu
dCwgR09iamVjdENvbnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQotewotICAgIEdP
YmplY3QqIG9iamVjdCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9jdXN0b21fY29u
c3RydWN0b3Jfd2l0aF9ub19pbnRlcmZhY2Vfb2JqZWN0X3BhcmVudF9jbGFzcyktPmNvbnN0cnVj
dG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7
Ci0KLSAgICBXZWJLaXRET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9URVNUX0NVU1RPTV9DT05TVFJVQ1RPUl9XSVRI
X05PX0lOVEVSRkFDRV9PQkpFQ1RfR0VUX1BSSVZBVEUob2JqZWN0KTsKLSAgICBwcml2LT5jb3Jl
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0Kj4oV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7
Ci0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCks
IG9iamVjdCk7Ci0KLSAgICByZXR1cm4gb2JqZWN0OwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX3Rlc3RfY3VzdG9tX2NvbnN0cnVjdG9yX3dpdGhfbm9faW50ZXJmYWNlX29iamVjdF9jbGFz
c19pbml0KFdlYktpdERPTVRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dENsYXNzKiByZXF1ZXN0Q2xhc3MpCi17Ci0gICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3Mg
PSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJp
dmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3RQcml2YXRlKSk7Ci0gICAgZ29iamVjdENsYXNzLT5jb25zdHJ1
Y3RvciA9IHdlYmtpdF9kb21fdGVzdF9jdXN0b21fY29uc3RydWN0b3Jfd2l0aF9ub19pbnRlcmZh
Y2Vfb2JqZWN0X2NvbnN0cnVjdG9yOwotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJr
aXRfZG9tX3Rlc3RfY3VzdG9tX2NvbnN0cnVjdG9yX3dpdGhfbm9faW50ZXJmYWNlX29iamVjdF9m
aW5hbGl6ZTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2N1c3RvbV9jb25zdHJ1
Y3Rvcl93aXRoX25vX2ludGVyZmFjZV9vYmplY3RfaW5pdChXZWJLaXRET01UZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqIHJlcXVlc3QpCi17Ci0gICAgV2ViS2l0RE9N
VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9ET01fVEVTVF9DVVNUT01fQ09OU1RSVUNUT1JfV0lUSF9OT19JTlRFUkZBQ0VfT0JK
RUNUX0dFVF9QUklWQVRFKHJlcXVlc3QpOwotICAgIG5ldyAocHJpdikgV2ViS2l0RE9NVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJpdmF0ZSgpOwotfQotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5YWM0Y2EwNjc5ZDA4NmRmOTM0YjRlOGI4MGYyYWE4NDVkYzc1MTE5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBA
QAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHBy
b2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5k
aW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01UZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RfaAotI2RlZmluZSBXZWJLaXRE
T01UZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RfaAotCi0jaWZkZWYg
V0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgot
I2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01PYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRk
b20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZp
bmUgV0VCS0lUX0RPTV9UWVBFX1RFU1RfQ1VTVE9NX0NPTlNUUlVDVE9SX1dJVEhfTk9fSU5URVJG
QUNFX09CSkVDVCAgICAgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfY3VzdG9tX2NvbnN0cnVjdG9y
X3dpdGhfbm9faW50ZXJmYWNlX29iamVjdF9nZXRfdHlwZSgpKQotI2RlZmluZSBXRUJLSVRfRE9N
X1RFU1RfQ1VTVE9NX0NPTlNUUlVDVE9SX1dJVEhfTk9fSU5URVJGQUNFX09CSkVDVChvYmopICAg
ICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfRE9NX1RZ
UEVfVEVTVF9DVVNUT01fQ09OU1RSVUNUT1JfV0lUSF9OT19JTlRFUkZBQ0VfT0JKRUNULCBXZWJL
aXRET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QpKQotI2RlZmlu
ZSBXRUJLSVRfRE9NX1RFU1RfQ1VTVE9NX0NPTlNUUlVDVE9SX1dJVEhfTk9fSU5URVJGQUNFX09C
SkVDVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBX
RUJLSVRfRE9NX1RZUEVfVEVTVF9DVVNUT01fQ09OU1RSVUNUT1JfV0lUSF9OT19JTlRFUkZBQ0Vf
T0JKRUNULCBXZWJLaXRET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3RDbGFzcykKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19URVNUX0NVU1RPTV9DT05TVFJVQ1RPUl9X
SVRIX05PX0lOVEVSRkFDRV9PQkpFQ1Qob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFO
Q0VfVFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX1RFU1RfQ1VTVE9NX0NPTlNUUlVDVE9SX1dJ
VEhfTk9fSU5URVJGQUNFX09CSkVDVCkpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNfVEVTVF9DVVNU
T01fQ09OU1RSVUNUT1JfV0lUSF9OT19JTlRFUkZBQ0VfT0JKRUNUX0NMQVNTKGtsYXNzKSAoR19U
WVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9URVNUX0NVU1RP
TV9DT05TVFJVQ1RPUl9XSVRIX05PX0lOVEVSRkFDRV9PQkpFQ1QpKQotI2RlZmluZSBXRUJLSVRf
RE9NX1RFU1RfQ1VTVE9NX0NPTlNUUlVDVE9SX1dJVEhfTk9fSU5URVJGQUNFX09CSkVDVF9HRVRf
Q0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfRE9N
X1RZUEVfVEVTVF9DVVNUT01fQ09OU1RSVUNUT1JfV0lUSF9OT19JTlRFUkZBQ0VfT0JKRUNULCBX
ZWJLaXRET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDbGFzcykp
Ci0KLXN0cnVjdCBfV2ViS2l0RE9NVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNl
T2JqZWN0IHsKLSAgICBXZWJLaXRET01PYmplY3QgcGFyZW50X2luc3RhbmNlOwotfTsKLQotc3Ry
dWN0IF9XZWJLaXRET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RD
bGFzcyB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotV0VC
S0lUX0FQSSBHVHlwZQotd2Via2l0X2RvbV90ZXN0X2N1c3RvbV9jb25zdHJ1Y3Rvcl93aXRoX25v
X2ludGVyZmFjZV9vYmplY3RfZ2V0X3R5cGUodm9pZCk7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRp
ZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRET01U
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RfaCAqLwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJpdmF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJpdmF0ZS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2Y2VkNDcxYmI1ZDE5MmZkMmNhNjNmMzk5ODEwZDQxYTM1YTA3
ODQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByaXZhdGUuaAorKysgL2Rldi9udWxs
CkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktp
dCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQg
YnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5k
ZWYgV2ViS2l0RE9NVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJp
dmF0ZV9oCi0jZGVmaW5lIFdlYktpdERPTVRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdFByaXZhdGVfaAotCi0jaW5jbHVkZSAiVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0LmgiCi0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTVRlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5oPgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLVdlYktpdERPTVRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dCogd3JhcFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdChXZWJDb3Jl
OjpUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqKTsKLVdlYktpdERP
TVRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCoga2l0KFdlYkNvcmU6
OlRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCopOwotV2ViQ29yZTo6
VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KiBjb3JlKFdlYktpdERP
TVRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCopOwotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBXZWJLaXRET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3RQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzlkM2JlMGVmNzEzNDE5ZjRhNmVkNGQ3MzU1
MGIwZjU1ODdlODc2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwy
MTYgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4g
c291cmNlIHByb2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5l
cmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQot
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Qu
aCIKLQotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIlRlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
LQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBBdHRy
aWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci0KLWNsYXNzIEpT
VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlIDogcHVi
bGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0M6OkpT
Tm9uRmluYWxPYmplY3QgQmFzZTsKLSAgICBzdGF0aWMgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQot
ICAgIHsKLSAgICAgICAgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3RQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGU+KHZtLmhlYXAp
KSBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KHZtKTsKLSAgICAgICAgcmV0dXJuIHB0cjsKLSAgICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0g
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICA6IEpT
Qzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKLX07Ci0KLWNsYXNzIEpTVGVzdEN1c3RvbUNv
bnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29u
c3RydWN0b3JPYmplY3QgewotcHJpdmF0ZToKLSAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9i
YWxPYmplY3QqKTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2Jh
bE9iamVjdCopOwotCi1wdWJsaWM6Ci0gICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBC
YXNlOwotICAgIHN0YXRpYyBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdENvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgewotICAgICAgICBK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEN1c3RvbUNvbnN0cnVj
dG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBKU1Rlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKHN0cnVjdHVyZSwg
Z2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0KTsKLSAgICAgICAgcmV0dXJuIHB0cjsKLSAgICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0g
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0gICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBn
ZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7Ci19Owot
Ci1jb25zdCBDbGFzc0luZm8gSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3RDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29u
c3RydWN0b3IpIH07Ci0KLUpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0Q29uc3RydWN0b3I6OkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0Q29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCi0gICAgOiBET01Db25zdHJ1Y3Rvck9iamVjdChzdHJ1Y3R1cmUsIGdsb2Jh
bE9iamVjdCkKLXsKLX0KLQotdm9pZCBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwot
ICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3Q6OmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNO
dW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKLX0KLQotQ29uc3Ry
dWN0VHlwZSBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0
cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVj
dERhdGEpCi17Ci0gICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDsKLSAgICByZXR1cm4g
Q29uc3RydWN0VHlwZUhvc3Q7Ci19Ci0KLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwot
Ci1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KLXsKLSAgICB7ICJjb25z
dHJ1Y3RvciIsIERvbnRFbnVtIHwgUmVhZE9ubHksIE5vSW50cmluc2ljLCAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEN1c3RvbUNvbnN0cnVj
dG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9LAotfTsKLQotY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90
eXBlOjpzX2luZm8gPSB7ICJUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3RQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlKSB9OwotCi12
b2lkIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OwotICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotfQotCi1j
b25zdCBDbGFzc0luZm8gSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3Q6OnNfaW5mbyA9IHsgIlRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QpIH07Ci0KLUpTVGVzdEN1c3RvbUNvbnN0cnVj
dG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0OjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dD4mJiBpbXBsKQotICAgIDogSlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQot
ICAgICwgbV9pbXBsKCZpbXBsLmxlYWtSZWYoKSkKLXsKLX0KLQotSlNPYmplY3QqIEpTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0OjpjcmVhdGVQcm90b3R5cGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBKU1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwotfQotCi1KU09iamVjdCogSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OmdldFByb3RvdHlwZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdD4odm0sIGdsb2JhbE9i
amVjdCk7Ci19Ci0KLXZvaWQgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3Q6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCi17Ci0gICAgSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCo+KGNlbGwpOwotICAg
IHRoaXNPYmplY3QtPkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
Ojp+SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QoKTsKLX0KLQot
SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6On5KU1Rlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCgpCi17Ci0gICAgcmVsZWFzZUltcGwo
KTsKLX0KLQotRW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90
b3R5cGUqPihiYXNlVmFsdWUpOwotICAgIGlmICghZG9tT2JqZWN0KQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0gSlNUZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KGV4ZWMtPnZtKCksIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCBkb21PYmplY3QtPmdsb2Jh
bE9iamVjdCgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSks
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsK
LSAgICAvLyBTaGFkb3dpbmcgY29uc3RydWN0b3IgcHJvcGVydHkgdG8gZW5zdXJlIHJldXNpbmcg
dGhlIHNhbWUgY29uc3RydWN0b3Igb2JqZWN0Ci0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBjb25zdHJ1Y3Rvciwg
RG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1
Y3Rvcik7Ci19Ci0KLWJvb2wgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBVTlVT
RURfUEFSQU0oaGFuZGxlKTsKLSAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi12b2lkIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNl
T2JqZWN0T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2
b2lkKiBjb250ZXh0KQotewotICAgIGF1dG8qIGpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0ID0ganNDYXN0PEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50
ZXJmYWNlT2JqZWN0Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdvcmxk
ID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVX
cmFwcGVyKHdvcmxkLCAmanNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3QtPmltcGwoKSwganNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Qp
OwotfQotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotI2lmIFBMQVRGT1JNKFdJTikK
LSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQotZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lk
ICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50
ZXJmYWNlT2JqZWN0QFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KLSNlbHNlCi1leHRlcm4gIkMiIHsg
ZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmU0MlRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdEVbXTsgfQotI2VuZGlmCi0jZW5kaWYKLUpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEN1c3Rv
bUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KiBpbXBsKQotewotICAgIGlmICghaW1w
bCkKLSAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGdl
dEV4aXN0aW5nV3JhcHBlcjxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdD4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotI2lm
IEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVy
ID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbCkpOwotI2lmIFBMQVRGT1JNKFdJTikK
LSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQq
PihfX2lkZW50aWZpZXIoIj8/XzdUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3RAV2ViQ29yZUBANkJAIikpOwotI2Vsc2UKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBv
aW50ZXIgPSAmX1pUVk43V2ViQ29yZTQyVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0RVsyXTsKLSNpZiBDT01QSUxFUihDTEFORykKLSAgICAvLyBJZiB0aGlzIGZhaWxz
IFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCBkb2VzIG5vdCBoYXZl
IGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCi0gICAgLy8gSW1wbGVtZW50YXRpb25M
YWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCi0gICAgQ09N
UElMRV9BU1NFUlQoX19pc19wb2x5bW9ycGhpYyhUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9J
bnRlcmZhY2VPYmplY3QpLCBUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3RfaXNfbm90X3BvbHltb3JwaGljKTsKLSNlbmRpZgotI2VuZGlmCi0gICAgLy8gSWYgeW91IGhp
dCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9y
Ci0gICAgLy8gVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0IGhhcyBz
dWJjbGFzc2VzLiBJZiBUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Qg
aGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCi0gICAgLy8gdG8gdG9KUygpIHdlIGN1cnJl
bnRseSByZXF1aXJlIFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCB5
b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZwotICAgIC8vIGJ5IGFkZGluZyB0aGUg
U2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmlu
aXRpb24KLSAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVk
VlRhYmxlUG9pbnRlcik7Ci0jZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdD4oZ2xvYmFsT2JqZWN0LCBp
bXBsKTsKLX0KLQotVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KiBK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDo6dG9XcmFwcGVkKEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqPih2YWx1ZSkp
Ci0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOwotICAgIHJldHVybiBudWxscHRyOwot
fQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3Rv
cldpdGhOb0ludGVyZmFjZU9iamVjdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
Zjc5MzY3ZDQ5YjJjZTNiYmNmZjhlODJkNTJiMWFiMGExZGI3NzAyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gICAgVGhpcyBmaWxlIGhh
cyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEK
LQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0q
LwotCi0jaWZuZGVmIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
X2gKLSNkZWZpbmUgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Rf
aAotCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCi0jaW5jbHVkZSAiVGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSlNU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QgOiBwdWJsaWMgSlNET01X
cmFwcGVyIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEpTRE9NV3JhcHBlciBCYXNlOwotICAgIHN0
YXRpYyBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCogY3JlYXRl
KEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFJlZjxUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q+JiYgaW1w
bCkKLSAgICB7Ci0gICAgICAgIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNl
T2JqZWN0KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEN1c3Rv
bUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0PihnbG9iYWxPYmplY3QtPnZtKCkuaGVh
cCkpIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KHN0cnVjdHVy
ZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwotICAgICAgICBwdHItPmZpbmlzaENy
ZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQot
Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlND
OjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5
cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgVGVzdEN1c3Rv
bUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVl
KTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7Ci0gICAgfkpTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KCk7Ci0KLSAgICBERUNMQVJFX0lO
Rk87Ci0KLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotICAgIFRlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7
IH0KLSAgICB2b2lkIHJlbGVhc2VJbXBsKCkgeyBzdGQ6OmV4Y2hhbmdlKG1faW1wbCwgbnVsbHB0
ciktPmRlcmVmKCk7IH0KLQotcHJpdmF0ZToKLSAgICBUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3QqIG1faW1wbDsKLXByb3RlY3RlZDoKLSAgICBKU1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdChKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiwgUmVmPFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dD4mJik7Ci0KLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mIHZtKQotICAgIHsKLSAg
ICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICBBU1NFUlQoaW5oZXJpdHMo
aW5mbygpKSk7Ci0gICAgfQotCi19OwotCi1jbGFzcyBKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdE93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsK
LXB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYp
OwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2
b2lkKiBjb250ZXh0KTsKLX07Ci0KLWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBl
ck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdCopCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdEN1c3RvbUNv
bnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0T3duZXI+IG93bmVyOwotICAgIHJldHVybiAm
b3duZXIuZ2V0KCk7Ci19Ci0KLVdFQkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3QqKTsKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEN1c3RvbUNv
bnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0JiBpbXBsKSB7IHJldHVybiB0b0pTKGV4ZWMs
IGdsb2JhbE9iamVjdCwgJmltcGwpOyB9Ci0KLS8vIEN1c3RvbSBjb25zdHJ1Y3RvcgotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTVGVzdEN1c3RvbUNvbnN0cnVj
dG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KEpTQzo6RXhlY1N0YXRlKik7Ci0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkNmM1NTY2MWY4MTUxN2MxMjIxYTM0ODY0ZDk4MzUwMTFk
NjIyNjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+
Ci0KLVdFQktJVF9DTEFTU19BVkFJTEFCTEVfTUFDKDk4NzZfNSkKLVdFQkNPUkVfRVhQT1JUIEBp
bnRlcmZhY2UgRE9NVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0IDog
RE9NT2JqZWN0Ci1AZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QubW0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGM0M2NkNGQwZTBhNjY1MWZiZjJhMmQ2N2RmMmJkMDIzZGY1N2QzNmQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAot
LyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KLSAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0KLSNp
bXBvcnQgIkRPTVRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5oIgot
Ci0jaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTVRlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdEludGVybmFsLmgiCi0jaW1wb3J0ICJFeGNlcHRp
b25IYW5kbGVycy5oIgotI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0jaW1wb3J0
ICJUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaCIKLSNpbXBvcnQg
IlRocmVhZENoZWNrLmgiCi0jaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgotI2ltcG9ydCAi
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgotI2ltcG9ydCA8d3RmL0dldFB0ci5oPgotCi0jZGVm
aW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3QqPihfaW50ZXJuYWwpCi0KLUBpbXBsZW1lbnRhdGlvbiBET01U
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QKLQotLSAodm9pZClkZWFs
bG9jCi17Ci0gICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFk
KFtET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QgY2xhc3NdLCBz
ZWxmKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAgICAgSU1Q
TC0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUK
LXsKLSAgICBpZiAoX2ludGVybmFsKQotICAgICAgICBJTVBMLT5kZXJlZigpOwotICAgIFtzdXBl
ciBmaW5hbGl6ZV07Ci19Ci0KLUBlbmQKLQotV2ViQ29yZTo6VGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0KiBjb3JlKERPTVRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdCAqd3JhcHBlcikKLXsKLSAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNl
T2JqZWN0Kj4od3JhcHBlci0+X2ludGVybmFsKSA6IDA7Ci19Ci0KLURPTVRlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCAqa2l0KFdlYkNvcmU6OlRlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCogdmFsdWUpCi17Ci0gICAgeyBET01fQVNTRVJU
X01BSU5fVEhSRUFEKCk7IFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1JvdW5kT25lKCk7IH07
Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBpZiAoRE9NVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0ICp3cmFwcGVyID0gZ2V0RE9NV3Jh
cHBlcih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFz
ZV07Ci0gICAgRE9NVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0ICp3
cmFwcGVyID0gW1tET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Qg
YWxsb2NdIF9pbml0XTsKLSAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0
PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwotICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRE
T01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVh
c2VdOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0SW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdEludGVybmFsLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiYTU0NzI0MGUwN2JmMjViNWM3NzVkM2ZlZTlhNmE5ZmE0
NjRkMDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0SW50ZXJuYWwuaAorKysgL2Rldi9udWxsCkBAIC0x
LDM0ICswLDAgQEAKLS8qCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4g
c291cmNlIHByb2plY3QuCi0gKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCA8V2ViQ29yZS9ET01UZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0OwotfQotCi1XRUJD
T1JFX0VYUE9SVCBXZWJDb3JlOjpUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3QqIGNvcmUoRE9NVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
ICopOwotV0VCQ09SRV9FWFBPUlQgRE9NVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0ICpraXQoV2ViQ29yZTo6VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdEN1c3RvbUNvbnN0cnVjdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0Q3VzdG9tQ29uc3RydWN0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmZDNiYzg1NzZiMDIwMDk3NDk2NWUwOGNmYmQ3ZmZmMzE1NmY3YzZiLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q3VzdG9tQ29uc3RydWN0b3IuaWRsCisrKyAv
ZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5v
biBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQs
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQg
dG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9O
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICog
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLVsKLSAgICBDdXN0b21Db25zdHJ1Y3RvciwKLSAgICBOb0ludGVyZmFjZU9i
amVjdAotXSBpbnRlcmZhY2UgVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0IHsKLX07Ci0K
</data>

          </attachment>
      

    </bug>

</bugzilla>