<?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>218603</bug_id>
          
          <creation_ts>2020-11-05 00:12:50 -0800</creation_ts>
          <short_desc>Crash in AudioBuffer::sampleRate()</short_desc>
          <delta_ts>2020-11-10 09:01:15 -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>Web Audio</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=218754</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>product-security</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1704757</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-11-05 00:12:50 -0800</bug_when>
    <thetext>&lt;script&gt;
let ctx = new OfflineAudioContext(1, 2**29, 3000);
new OscillatorNode(ctx);
&lt;/script&gt;

results in this:
=================================================================
==67805==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000008 (pc 0x00011d7f33c2 bp 0x7ffee9ad5d60 sp 0x7ffee9ad5d60 T0)
==67805==The signal is caused by a READ memory access.
==67805==Hint: address points to the zero page.
==67805==WARNING: invalid path to external symbolizer!
==67805==WARNING: Failed to use and restart external symbolizer!
    #0 0x11d7f33c2 in WebCore::AudioBuffer::sampleRate() const+0x22 (WebCore.framework/Versions/A/WebCore:x86_64+0x5ee3c2)
    #1 0x11faf4e9b in WebCore::OfflineAudioDestinationNode::sampleRate() const+0x2b (WebCore.framework/Versions/A/WebCore:x86_64+0x28efe9b)
    #2 0x11fa8b9df in WebCore::BaseAudioContext::sampleRate() const+0x5f (WebCore.framework/Versions/A/WebCore:x86_64+0x28869df)
    #3 0x11fae4a8c in WebCore::OscillatorNode::OscillatorNode(WebCore::BaseAudioContext&amp;, WebCore::OscillatorOptions const&amp;)+0x1cc (WebCore.framework/Versions/A/WebCore:x86_64+0x28dfa8c)
    #4 0x11fae4068 in WebCore::OscillatorNode::OscillatorNode(WebCore::BaseAudioContext&amp;, WebCore::OscillatorOptions const&amp;)+0x8 (WebCore.framework/Versions/A/WebCore:x86_64+0x28df068)
    #5 0x11fae3cbe in WebCore::OscillatorNode::create(WebCore::BaseAudioContext&amp;, WebCore::OscillatorOptions const&amp;)+0x22e (WebCore.framework/Versions/A/WebCore:x86_64+0x28decbe)
    #6 0x11e48f9c5 in WebCore::JSDOMConstructor&lt;WebCore::JSOscillatorNode&gt;::construct(JSC::JSGlobalObject*, JSC::CallFrame*)+0x295 (WebCore.framework/Versions/A/WebCore:x86_64+0x128a9c5)
    #7 0x138e17017 in JSC::NativeFunction::operator()(JSC::JSGlobalObject*, JSC::CallFrame*)+0x27 (JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x258a017)
    #8 0x138e16f45 in JSC::TaggedNativeFunction::operator()(JSC::JSGlobalObject*, JSC::CallFrame*)+0xe5 (JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x2589f45)
    #9 0x138eba6dd in JSC::LLInt::handleHostCall(JSC::CallFrame*, JSC::JSValue, JSC::CodeSpecializationKind)+0x2bd (JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x262d6dd)
    #10 0x138eb9fa3 in JSC::LLInt::setUpCall(JSC::CallFrame*, JSC::CodeSpecializationKind, JSC::JSValue, JSC::LLIntCallLinkInfo*)+0x773 (JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x262cfa3)
    #11 0x138ea005b in JSC::SlowPathReturnType JSC::LLInt::genericCall&lt;JSC::OpConstruct&gt;(JSC::CodeBlock*, JSC::CallFrame*, JSC::OpConstruct&amp;&amp;, JSC::CodeSpecializationKind, unsigned int)+0x1ab (JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x261305b)
    #12 0x138e9fe30 in llint_slow_path_construct+0x120 (JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x2612e30)
    #13 0x13745394d in llint_entry+0x1cbaf (JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0xbc694d)
    #14 0x137436ba8 in vmEntryToJavaScript+0xd7 (JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0xba9ba8)
    #15 0x138b9aba5 in JSC::Interpreter::executeProgram(JSC::SourceCode const&amp;, JSC::JSGlobalObject*, JSC::JSObject*)+0x6d45 (JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x230dba5)
    #16 0x1392df16e in JSC::evaluate(JSC::JSGlobalObject*, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)+0x21e (JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x2a5216e)
    #17 0x1392df427 in JSC::profiledEvaluate(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)+0xe7 (JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x2a52427)
    #18 0x12016bd39 in WebCore::JSExecState::profiledEvaluate(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)+0xd9 (WebCore.framework/Versions/A/WebCore:x86_64+0x2f66d39)
    #19 0x12016b549 in WebCore::ScriptController::evaluateInWorld(WebCore::ScriptSourceCode const&amp;, WebCore::DOMWrapperWorld&amp;)+0x2e9 (WebCore.framework/Versions/A/WebCore:x86_64+0x2f66549)
    #20 0x12016b13d in WebCore::ScriptController::evaluateInWorldIgnoringException(WebCore::ScriptSourceCode const&amp;, WebCore::DOMWrapperWorld&amp;)+0xed (WebCore.framework/Versions/A/WebCore:x86_64+0x2f6613d)
    #21 0x12016bf3f in WebCore::ScriptController::evaluateIgnoringException(WebCore::ScriptSourceCode const&amp;)+0x1f (WebCore.framework/Versions/A/WebCore:x86_64+0x2f66f3f)
    #22 0x120a18a7c in WebCore::ScriptElement::executeClassicScript(WebCore::ScriptSourceCode const&amp;)+0x3bc (WebCore.framework/Versions/A/WebCore:x86_64+0x3813a7c)
    #23 0x120a1538e in WebCore::ScriptElement::prepareScript(WTF::TextPosition const&amp;, WebCore::ScriptElement::LegacyTypeSupport)+0xb0e (WebCore.framework/Versions/A/WebCore:x86_64+0x381038e)
    #24 0x121179426 in WebCore::HTMLScriptRunner::runScript(WebCore::ScriptElement&amp;, WTF::TextPosition const&amp;)+0x206 (WebCore.framework/Versions/A/WebCore:x86_64+0x3f74426)
    #25 0x1211790f4 in WebCore::HTMLScriptRunner::execute(WTF::Ref&lt;WebCore::ScriptElement, WTF::DumbPtrTraits&lt;WebCore::ScriptElement&gt; &gt;&amp;&amp;, WTF::TextPosition const&amp;)+0x84 (WebCore.framework/Versions/A/WebCore:x86_64+0x3f740f4)
    #26 0x12114fbf2 in WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder()+0x3f2 (WebCore.framework/Versions/A/WebCore:x86_64+0x3f4abf2)
    #27 0x1211502b7 in WebCore::HTMLDocumentParser::pumpTokenizerLoop(WebCore::HTMLDocumentParser::SynchronousMode, bool, WebCore::PumpSession&amp;)+0x367 (WebCore.framework/Versions/A/WebCore:x86_64+0x3f4b2b7)
    #28 0x12114f1de in WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode)+0x18e (WebCore.framework/Versions/A/WebCore:x86_64+0x3f4a1de)
    #29 0x12114eda5 in WebCore::HTMLDocumentParser::pumpTokenizerIfPossible(WebCore::HTMLDocumentParser::SynchronousMode)+0x65 (WebCore.framework/Versions/A/WebCore:x86_64+0x3f49da5)
    #30 0x121151302 in WebCore::HTMLDocumentParser::append(WTF::RefPtr&lt;WTF::StringImpl, WTF::DumbPtrTraits&lt;WTF::StringImpl&gt;, WTF::DefaultRefDerefTraits&lt;WTF::StringImpl&gt; &gt;&amp;&amp;)+0x332 (WebCore.framework/Versions/A/WebCore:x86_64+0x3f4c302)
    #31 0x1207b9aaf in WebCore::DecodedDataDocumentParser::flush(WebCore::DocumentWriter&amp;)+0x14f (WebCore.framework/Versions/A/WebCore:x86_64+0x35b4aaf)
    #32 0x121666a13 in WebCore::DocumentWriter::end()+0x153 (WebCore.framework/Versions/A/WebCore:x86_64+0x4461a13)
    #33 0x12166552c in WebCore::DocumentLoader::finishedLoading()+0x2dc (WebCore.framework/Versions/A/WebCore:x86_64+0x446052c)
    #34 0x121664e93 in WebCore::DocumentLoader::notifyFinished(WebCore::CachedResource&amp;, WebCore::NetworkLoadMetrics const&amp;)+0x2d3 (WebCore.framework/Versions/A/WebCore:x86_64+0x445fe93)
    #35 0x12182c1ff in WebCore::CachedResource::checkNotify(WebCore::NetworkLoadMetrics const&amp;)+0x17f (WebCore.framework/Versions/A/WebCore:x86_64+0x46271ff)
    #36 0x12182682e in WebCore::CachedResource::finishLoading(WebCore::SharedBuffer*, WebCore::NetworkLoadMetrics const&amp;)+0x4e (WebCore.framework/Versions/A/WebCore:x86_64+0x462182e)
    #37 0x1218280e8 in WebCore::CachedRawResource::finishLoading(WebCore::SharedBuffer*, WebCore::NetworkLoadMetrics const&amp;)+0x258 (WebCore.framework/Versions/A/WebCore:x86_64+0x46230e8)
    #38 0x12179bd82 in WebCore::SubresourceLoader::didFinishLoading(WebCore::NetworkLoadMetrics const&amp;)+0x732 (WebCore.framework/Versions/A/WebCore:x86_64+0x4596d82)
    #39 0x1130023b6 in WebKit::WebResourceLoader::didFinishResourceLoad(WebCore::NetworkLoadMetrics const&amp;)+0x286 (WebKit.framework/Versions/A/WebKit:x86_64+0x1afd3b6)
    #40 0x113721251 in void IPC::callMemberFunctionImpl&lt;WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(WebCore::NetworkLoadMetrics const&amp;), std::__1::tuple&lt;WebCore::NetworkLoadMetrics&gt;, 0ul&gt;(WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(WebCore::NetworkLoadMetrics const&amp;), std::__1::tuple&lt;WebCore::NetworkLoadMetrics&gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul&gt;)+0x61 (WebKit.framework/Versions/A/WebKit:x86_64+0x221c251)
    #41 0x1137211d8 in void IPC::callMemberFunction&lt;WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(WebCore::NetworkLoadMetrics const&amp;), std::__1::tuple&lt;WebCore::NetworkLoadMetrics&gt;, std::__1::integer_sequence&lt;unsigned long, 0ul&gt; &gt;(std::__1::tuple&lt;WebCore::NetworkLoadMetrics&gt;&amp;&amp;, WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(WebCore::NetworkLoadMetrics const&amp;))+0x28 (WebKit.framework/Versions/A/WebKit:x86_64+0x221c1d8)
    #42 0x11371ec46 in void IPC::handleMessage&lt;Messages::WebResourceLoader::DidFinishResourceLoad, WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(WebCore::NetworkLoadMetrics const&amp;)&gt;(IPC::Decoder&amp;, WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(WebCore::NetworkLoadMetrics const&amp;))+0x146 (WebKit.framework/Versions/A/WebKit:x86_64+0x2219c46)
    #43 0x11371e253 in WebKit::WebResourceLoader::didReceiveWebResourceLoaderMessage(IPC::Connection&amp;, IPC::Decoder&amp;)+0x1a3 (WebKit.framework/Versions/A/WebKit:x86_64+0x2219253)
    #44 0x112fc31aa in WebKit::NetworkProcessConnection::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)+0xfa (WebKit.framework/Versions/A/WebKit:x86_64+0x1abe1aa)
    #45 0x1115a295e in IPC::Connection::dispatchMessage(IPC::Decoder&amp;)+0x1ce (WebKit.framework/Versions/A/WebKit:x86_64+0x9d95e)
    #46 0x1115a35f7 in IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)+0x167 (WebKit.framework/Versions/A/WebKit:x86_64+0x9e5f7)
    #47 0x1115a4116 in IPC::Connection::dispatchOneIncomingMessage()+0x196 (WebKit.framework/Versions/A/WebKit:x86_64+0x9f116)
    #48 0x1115c11d5 in IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_7::operator()()+0x35 (WebKit.framework/Versions/A/WebKit:x86_64+0xbc1d5)
    #49 0x1115c113c in WTF::Detail::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_7, void&gt;::call()+0xc (WebKit.framework/Versions/A/WebKit:x86_64+0xbc13c)
    #50 0x1368c547e in WTF::Function&lt;void ()&gt;::operator()() const+0x3e (JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x3847e)
    #51 0x13695cf38 in WTF::RunLoop::performWork()+0x228 (JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0xcff38)
    #52 0x136960175 in WTF::RunLoop::performWork(void*)+0xb5 (JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0xd3175)


&lt;rdar://problem/70532749&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704980</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-11-05 12:45:18 -0800</bug_when>
    <thetext>This likely just needs a null-check on the m_renderTarget. It is possible to construct an OfflineAudioContext which has no renderTarget buffer and the buffer creation failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704991</commentid>
    <comment_count>2</comment_count>
      <attachid>413346</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-11-05 13:14:33 -0800</bug_when>
    <thetext>Created attachment 413346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704992</commentid>
    <comment_count>3</comment_count>
      <attachid>413346</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-11-05 13:19:42 -0800</bug_when>
    <thetext>Comment on attachment 413346
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705011</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-05 14:22:06 -0800</bug_when>
    <thetext>Committed r269475: &lt;https://trac.webkit.org/changeset/269475&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413346.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413346</attachid>
            <date>2020-11-05 13:14:33 -0800</date>
            <delta_ts>2020-11-05 14:22:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218603-20201105131432.patch</filename>
            <type>text/plain</type>
            <size>20774</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFjODFmNmY1YTRjM2Y5
ZTE2M2U0YTgwOTY5YjM3ZGM2MDYyZTI2My4uNWE0MzE3YzQyOWQ1NjZiZTgxMzE1Mzg0NGVkYWQ0
N2Y2NzM5ZWU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTExLTA1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2ggaW4gQXVkaW9CdWZm
ZXI6OnNhbXBsZVJhdGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE4NjAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSGF2ZSBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUgc3RvcmUgdGhlIHNhbXBs
ZSByYXRlIGluc3RlYWQgb2YgZ2V0dGluZworICAgICAgICBpdCBmcm9tIHRoZSByZW5kZXIgYnVm
ZmVyLiBJdCBpcyBwb3NzaWJsZSBmb3IgYW4gT2ZmbGluZUF1ZGlvQ29udGV4dCB0bworICAgICAg
ICBoYXZlIG5vIHJlbmRlcmluZyBidWZmZXIgd2hlbiBjb25zdHJ1Y3RpbmcgdGhpcyByZW5kZXJp
bmcgYnVmZmVyIGZhaWxzCisgICAgICAgIChlLmcuIGJlY2F1c2UgdGhlIGxlbmd0aCBpcyB0b28g
bGFyZ2UpLgorCisgICAgICAgIFRlc3Q6IHdlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFk
LWJ1ZmZlci1jcmFzaC5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
YXNlQXVkaW9Db250ZXh0OjpCYXNlQXVkaW9Db250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0Rl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvQ29udGV4dDo6T2ZmbGluZUF1ZGlvQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRp
b25Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0
aW9uTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0QXVkaW9D
b250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5o
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpXZWJLaXRP
ZmZsaW5lQXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0Lmg6CisKIDIwMjAtMTEtMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYlNvY2tldCBjb25zdHJ1Y3RvciBzaG91bGQgbm90IHRo
cm93IGluIGNhc2UgcG9ydCBpcyBibG9ja2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggOWQ2NDNjMTlhZWZjZDIxZTc1MTI2ZTY2
N2Q2Mjg4ZmE2ZTc2MjEyOS4uMmQxYjg5MGZhMGM1YmJiOTk4ZjNlMDYxMjhiNDNlMGU5YjAxM2Yx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmNwcApAQCAtMTIwLDggKzEyMCw4IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgQXVkaW9Db250ZXh0T3B0aW9ucyYgY29udGV4CiB9CiAKIC8v
IE9ubHkgbmVlZGVkIGZvciBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LgotQXVkaW9Db250ZXh0
OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzLCBSZWZQdHI8QXVkaW9CdWZmZXI+JiYgcmVuZGVyVGFyZ2V0KQotICAgIDogQmFzZUF1ZGlv
Q29udGV4dChkb2N1bWVudCwgbnVtYmVyT2ZDaGFubmVscywgV1RGTW92ZShyZW5kZXJUYXJnZXQp
KQorQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25l
ZCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBSZWZQdHI8QXVkaW9CdWZmZXI+
JiYgcmVuZGVyVGFyZ2V0KQorICAgIDogQmFzZUF1ZGlvQ29udGV4dChkb2N1bWVudCwgbnVtYmVy
T2ZDaGFubmVscywgc2FtcGxlUmF0ZSwgV1RGTW92ZShyZW5kZXJUYXJnZXQpKQogICAgICwgbV9t
ZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKSwgKnRoaXMpKQogewogICAgIGNvbnN0cnVjdENv
bW1vbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmgKaW5kZXggNDEzN2FhMDYyNmNjMzQxMmVlZmUzOTkzNzhmZDAwZWFhMWE2Yzc0NC4uMWU3OWFm
YjdmYTJjODQzNGEyNmJlMjk3NGUxZGIxN2EwZjQwNjRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC04OSw3ICs4OSw3IEBAIHB1Ymxp
YzoKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEF1ZGlvQ29udGV4dChEb2N1bWVudCYsIGNv
bnN0IEF1ZGlvQ29udGV4dE9wdGlvbnMmID0geyB9KTsKLSAgICBBdWRpb0NvbnRleHQoRG9jdW1l
bnQmLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBSZWZQdHI8QXVkaW9CdWZmZXI+JiYgcmVu
ZGVyVGFyZ2V0KTsKKyAgICBBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCB1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBSZWZQdHI8QXVkaW9CdWZmZXI+JiYgcmVuZGVy
VGFyZ2V0KTsKIAogICAgIGJvb2wgd2lsbEJlZ2luUGxheWJhY2soKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cAppbmRleCBkNmI3ODY5YTFiM2Q4OTNiNmY5MDIzOGMzZTQ2ZDNiN2E2NWRiNDBmLi45N2M5NmQ2
ZmU1ZWU1NDYzNDg3YWY3ZjU1ZWY2Y2ZjY2NlNGM3MmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAt
NDMsOCArNDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogCi1BdWRpb0Rlc3RpbmF0aW9uTm9k
ZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUoQmFzZUF1ZGlvQ29udGV4dCYgY29udGV4dCkKK0F1ZGlv
RGVzdGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZShCYXNlQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIE5vZGVU
eXBlRGVzdGluYXRpb24pCisgICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKIHsKICAgICBh
ZGRJbnB1dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDlmMTcwOTUzNmFmNzdmZGMyMzg5ODQxMGVm
MDIwODU4MWI0NWZiNTIuLjQxMjA3ZTVhYWE0MDRhMjMwMDkwMTY2ZDkwNjhjOTUzOWU0YmE4NGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5h
dGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQXVkaW9EZXN0aW5hdGlvbk5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9J
T0NhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvRGVzdGluYXRpb25O
b2RlKTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBdWRpb0Rlc3RpbmF0aW9uTm9kZShCYXNlQXVk
aW9Db250ZXh0Jik7CisgICAgQXVkaW9EZXN0aW5hdGlvbk5vZGUoQmFzZUF1ZGlvQ29udGV4dCYs
IGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7
CiAgICAgCiAgICAgLy8gQXVkaW9Ob2RlICAgCkBAIC00NSw2ICs0NSw4IEBAIHB1YmxpYzoKICAg
ICAvLyBJdCB3aWxsIG9wdGlvbmFsbHkgZ2l2ZSB1cyBsb2NhbC9saXZlIGF1ZGlvIGlucHV0IGlu
IHNvdXJjZUJ1cyAoaWYgaXQncyBub3QgMCkuCiAgICAgdm9pZCByZW5kZXIoQXVkaW9CdXMqIHNv
dXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMs
IGNvbnN0IEF1ZGlvSU9Qb3NpdGlvbiYgb3V0cHV0UG9zaXRpb24pIG92ZXJyaWRlOwogCisgICAg
ZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQor
CiAgICAgc2l6ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVu
dFNhbXBsZUZyYW1lOyB9CiAgICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgeyByZXR1cm4g
Y3VycmVudFNhbXBsZUZyYW1lKCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KHNhbXBsZVJhdGUoKSk7
IH0KIApAQCAtNzMsNiArNzUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gQ291bnRzIHRoZSBudW1i
ZXIgb2Ygc2FtcGxlLWZyYW1lcyBwcm9jZXNzZWQgYnkgdGhlIGRlc3RpbmF0aW9uLgogICAgIHN0
ZDo6YXRvbWljPHNpemVfdD4gbV9jdXJyZW50U2FtcGxlRnJhbWUgeyAwIH07CiAKKyAgICBmbG9h
dCBtX3NhbXBsZVJhdGU7CiAgICAgYm9vbCBtX2lzU2lsZW50IHsgdHJ1ZSB9OwogICAgIGJvb2wg
bV9pc0VmZmVjdGl2ZWx5UGxheWluZ0F1ZGlvIHsgZmFsc2UgfTsKICAgICBib29sIG1fbXV0ZWQg
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9C
YXNlQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFz
ZUF1ZGlvQ29udGV4dC5jcHAKaW5kZXggMjQ3ZGZkMDVhMDYzM2VmYmRiMzI0MjRjNWUzMWZhM2Rh
YjliMTI1MC4uOTA3NmM5Mjc5OTk4MTk0OTg5MjIyZjNjY2JiZTUxN2NhZjIwMDU2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQu
Y3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgQmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29udGV4
dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF1ZGlvQ29udGV4dE9wdGlvbnMKIH0KIAogLy8g
Q29uc3RydWN0b3IgZm9yIG9mZmxpbmUgKG5vbi1yZWFsdGltZSkgcmVuZGVyaW5nLgotQmFzZUF1
ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVk
IG51bWJlck9mQ2hhbm5lbHMsIFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiByZW5kZXJUYXJnZXQpCitC
YXNlQXVkaW9Db250ZXh0OjpCYXNlQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgdW5z
aWduZWQgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmUHRyPEF1ZGlvQnVm
ZmVyPiYmIHJlbmRlclRhcmdldCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKGRvY3VtZW50LmxvZ2dlcigp
KQpAQCAtMTU5LDcgKzE1OSw3IEBAIEJhc2VBdWRpb0NvbnRleHQ6OkJhc2VBdWRpb0NvbnRleHQo
RG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzCiAgICAgRkZURnJh
bWU6OmluaXRpYWxpemUoKTsKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBkZXN0aW5hdGlvbiBmb3Ig
b2ZmbGluZSByZW5kZXJpbmcuCi0gICAgbV9kZXN0aW5hdGlvbk5vZGUgPSBPZmZsaW5lQXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcywgbnVtYmVyT2ZDaGFubmVscywgbV9yZW5kZXJU
YXJnZXQuY29weVJlZigpKTsKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZSA9IE9mZmxpbmVBdWRpb0Rl
c3RpbmF0aW9uTm9kZTo6Y3JlYXRlKCp0aGlzLCBudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRl
LCBtX3JlbmRlclRhcmdldC5jb3B5UmVmKCkpOwogfQogCiBCYXNlQXVkaW9Db250ZXh0Ojp+QmFz
ZUF1ZGlvQ29udGV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmFzZUF1ZGlvQ29udGV4dC5oCmluZGV4IDYyNTU5NDJjMzNmMmJhY2M2ODAyMWZiMjJhMDQyMDZm
MTI2MzA5YmUuLmIxOTM0MGZlOTYyODYwZWU5ODUwNzZmNTJlZGI0NDgyMTAxZWY5MzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5o
CkBAIC0yOTMsNyArMjkzLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
QmFzZUF1ZGlvQ29udGV4dChEb2N1bWVudCYsIGNvbnN0IEF1ZGlvQ29udGV4dE9wdGlvbnMmID0g
eyB9KTsKLSAgICBCYXNlQXVkaW9Db250ZXh0KERvY3VtZW50JiwgdW5zaWduZWQgbnVtYmVyT2ZD
aGFubmVscywgUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCk7CisgICAgQmFzZUF1
ZGlvQ29udGV4dChEb2N1bWVudCYsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNh
bXBsZVJhdGUsIFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiByZW5kZXJUYXJnZXQpOwogICAgIAogICAg
IHZvaWQgY2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKICAgICB2b2lkIG1ha2VQZW5kaW5nQWN0aXZp
dHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA4MmViMThjMzFhZmJmN2Q4
YzkyOGZiNzBiZDMzYWVhN2I1MzFlOWFlLi42ZGM5ZDIwZjViNmMyZGVjNDQ0ZGJhYWM0MmE3ZTcx
ZDZkMGI2ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC00Nyw4ICs0Nyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogCiBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6
OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShCYXNlQXVkaW9Db250ZXh0JiBjb250ZXh0LCBP
cHRpb25hbDxmbG9hdD4gc2FtcGxlUmF0ZSkKLSAgICA6IEF1ZGlvRGVzdGluYXRpb25Ob2RlKGNv
bnRleHQpCi0gICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0ZS52YWx1ZU9yKEF1ZGlvRGVzdGlu
YXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpKSkKKyAgICA6IEF1ZGlvRGVzdGluYXRpb25Ob2Rl
KGNvbnRleHQsIHNhbXBsZVJhdGUudmFsdWVPcihBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNh
bXBsZVJhdGUoKSkpCiB7CiAgICAgaW5pdGlhbGl6ZURlZmF1bHROb2RlT3B0aW9ucygyLCBDaGFu
bmVsQ291bnRNb2RlOjpFeHBsaWNpdCwgQ2hhbm5lbEludGVycHJldGF0aW9uOjpTcGVha2Vycyk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCA1NGQ2OTVmOTUzNGNkYmIwNzc3ODk3
MDAxNTU0M2NjN2QzMmE4ODBjLi4zZmM2MmMxZmFlMmJhNjJiNDliNDc2MTI2YmY1N2Q2NWE4ZjFl
N2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTQxLDcgKzQxLDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgfkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSgpOwogCiAgICAgdW5z
aWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3Q7Ci0gICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQogICAgIAogICAgIHZvaWQgc3RhcnRS
ZW5kZXJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYm
KSBmaW5hbDsKIApAQCAtNjcsNyArNjYsNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBdWRpb0Rl
c3RpbmF0aW9uPiBtX2Rlc3RpbmF0aW9uOwogICAgIFN0cmluZyBtX2lucHV0RGV2aWNlSWQ7CiAg
ICAgdW5zaWduZWQgbV9udW1iZXJPZklucHV0Q2hhbm5lbHMgeyAwIH07Ci0gICAgZmxvYXQgbV9z
YW1wbGVSYXRlIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5j
cHAKaW5kZXggZjgzNjUyZTc2Y2UwZDk2NDNhNDdmZGU4N2Y1MmZkMDI0NjlkOGRlMS4uNGIxZmI1
OTRhMzgyNDlhNDg4NjhmNTE3NmM0NDFmNmJiZjliNTc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwCkBAIC0z
OCw4ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKE9mZmxpbmVBdWRpb0NvbnRleHQpOwogCi1pbmxpbmUgT2ZmbGluZUF1ZGlvQ29udGV4
dDo6T2ZmbGluZUF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJl
ck9mQ2hhbm5lbHMsIFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiByZW5kZXJUYXJnZXQpCi0gICAgOiBC
YXNlQXVkaW9Db250ZXh0KGRvY3VtZW50LCBudW1iZXJPZkNoYW5uZWxzLCBXVEZNb3ZlKHJlbmRl
clRhcmdldCkpCitpbmxpbmUgT2ZmbGluZUF1ZGlvQ29udGV4dDo6T2ZmbGluZUF1ZGlvQ29udGV4
dChEb2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNh
bXBsZVJhdGUsIFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiByZW5kZXJUYXJnZXQpCisgICAgOiBCYXNl
QXVkaW9Db250ZXh0KGRvY3VtZW50LCBudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlLCBXVEZN
b3ZlKHJlbmRlclRhcmdldCkpCiB7CiB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgRXhjZXB0aW9uT3I8
UmVmPE9mZmxpbmVBdWRpb0NvbnRleHQ+PiBPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW8KICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAic2Ft
cGxlUmF0ZSBpcyBub3QgaW4gcmFuZ2UiX3MgfTsKIAogICAgIGF1dG8gcmVuZGVyVGFyZ2V0ID0g
QXVkaW9CdWZmZXI6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCBsZW5ndGgsIHNhbXBsZVJhdGUp
OwotICAgIGF1dG8gYXVkaW9Db250ZXh0ID0gYWRvcHRSZWYoKm5ldyBPZmZsaW5lQXVkaW9Db250
ZXh0KGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSwgbnVtYmVyT2ZDaGFubmVscywgV1RGTW92
ZShyZW5kZXJUYXJnZXQpKSk7CisgICAgYXV0byBhdWRpb0NvbnRleHQgPSBhZG9wdFJlZigqbmV3
IE9mZmxpbmVBdWRpb0NvbnRleHQoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBudW1iZXJP
ZkNoYW5uZWxzLCBzYW1wbGVSYXRlLCBXVEZNb3ZlKHJlbmRlclRhcmdldCkpKTsKICAgICBhdWRp
b0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBhdWRpb0NvbnRleHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
Q29udGV4dC5oCmluZGV4IGJjYjFkOTJiNjg0MDZhY2NmZmI3MTFiMDIwYjdkMjk2MzBlOGU5NjEu
LmFiM2Q3MmYzNTI1MDk0MWZmYTJlOGE3MDYyZTVhYmQ2ZWM3ODgzY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5oCkBA
IC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB9OwogCiBwcml2YXRlOgotICAgIE9mZmxpbmVB
dWRpb0NvbnRleHQoRG9jdW1lbnQmLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBSZWZQdHI8
QXVkaW9CdWZmZXI+JiYgcmVuZGVyVGFyZ2V0KTsKKyAgICBPZmZsaW5lQXVkaW9Db250ZXh0KERv
Y3VtZW50JiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgUmVm
UHRyPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCk7CiAKICAgICB2b2lkIGRpZEZpbmlzaE9m
ZmxpbmVSZW5kZXJpbmcoRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4mJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRTdXNwZW5kUmVuZGVyaW5nKHNpemVfdCBmcmFtZSkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0
aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggZDJiZDY3MWJkN2RlMGFlZmQwMjJkYTczYzI2NjEw
ZjcxZTM4ZGI4MC4uY2QzZDBhNmFlODYyZmJjZTA2NzUyZDUyNmMxOWUwZDdiMzRmYjU5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0
aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNDMsOCArNDMsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChPZmZsaW5lQXVkaW9EZXN0
aW5hdGlvbk5vZGUpOwogCi1PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok9mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZShCYXNlQXVkaW9Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBudW1i
ZXJPZkNoYW5uZWxzLCBSZWZQdHI8QXVkaW9CdWZmZXI+JiYgcmVuZGVyVGFyZ2V0KQotICAgIDog
QXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCkKK09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKEJhc2VBdWRpb0NvbnRleHQmIGNvbnRleHQs
IHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIFJlZlB0cjxBdWRp
b0J1ZmZlcj4mJiByZW5kZXJUYXJnZXQpCisgICAgOiBBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9udW1iZXJPZkNoYW5uZWxzKG51bWJlck9mQ2hhbm5l
bHMpCiAgICAgLCBtX3JlbmRlclRhcmdldChXVEZNb3ZlKHJlbmRlclRhcmdldCkpCiAgICAgLCBt
X2ZyYW1lc1RvUHJvY2VzcyhtX3JlbmRlclRhcmdldCA/IG1fcmVuZGVyVGFyZ2V0LT5sZW5ndGgo
KSA6IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCA2ZjNiMGMxOWVmOTQyZjJlMjFm
NGMyODk1MWMxZjYwYzAzYjkxZmQ4Li40ZmQzZjdjN2M1NjVlYzA0MTIzYzU2NzBhNWY1MTBlMWEx
YWI1YjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTM3LDkgKzM3LDkgQEAgY2xh
c3MgQXVkaW9Db250ZXh0OwogY2xhc3MgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlIGZpbmFs
IDogcHVibGljIEF1ZGlvRGVzdGluYXRpb25Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShCYXNlQXVkaW9Db250ZXh0JiBj
b250ZXh0LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBSZWZQdHI8QXVkaW9CdWZmZXI+JiYg
cmVuZGVyVGFyZ2V0KQorICAgIHN0YXRpYyBSZWY8T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2Rl
PiBjcmVhdGUoQmFzZUF1ZGlvQ29udGV4dCYgY29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdl
dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9mZmxpbmVBdWRpb0Rlc3Rp
bmF0aW9uTm9kZShjb250ZXh0LCBudW1iZXJPZkNoYW5uZWxzLCBXVEZNb3ZlKHJlbmRlclRhcmdl
dCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT2ZmbGluZUF1ZGlvRGVzdGluYXRp
b25Ob2RlKGNvbnRleHQsIG51bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGUsIFdURk1vdmUocmVu
ZGVyVGFyZ2V0KSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfk9mZmxpbmVBdWRpb0Rlc3RpbmF0
aW9uTm9kZSgpOwpAQCAtNTIsMTAgKzUyLDggQEAgcHVibGljOgogICAgIHZvaWQgZW5hYmxlSW5w
dXQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBzdGFydFJlbmRlcmluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOwog
Ci0gICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVuZGVyVGFy
Z2V0LT5zYW1wbGVSYXRlKCk7IH0KLQogcHJpdmF0ZToKLSAgICBPZmZsaW5lQXVkaW9EZXN0aW5h
dGlvbk5vZGUoQmFzZUF1ZGlvQ29udGV4dCYsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIFJl
ZlB0cjxBdWRpb0J1ZmZlcj4mJiByZW5kZXJUYXJnZXQpOworICAgIE9mZmxpbmVBdWRpb0Rlc3Rp
bmF0aW9uTm9kZShCYXNlQXVkaW9Db250ZXh0JiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywg
ZmxvYXQgc2FtcGxlUmF0ZSwgUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCk7CiAK
ICAgICBlbnVtIGNsYXNzIE9mZmxpbmVSZW5kZXJSZXN1bHQgeyBGYWlsdXJlLCBTdXNwZW5kZWQs
IENvbXBsZXRlIH07CiAgICAgT2ZmbGluZVJlbmRlclJlc3VsdCBvZmZsaW5lUmVuZGVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5jcHAKaW5kZXggYTVkOTQ5NTk1MmQxNWNmZjA0ZmZjNTlkZjAxZGE2MWQwYTYyZjQxYi4u
ZDI0OWViMjEwYzNlNzc3M2QzMDY5MmMxYWUzMDJlMjg0MTBlNzRkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmNwcApA
QCAtODQsOCArODQsOCBAQCBXZWJLaXRBdWRpb0NvbnRleHQ6OldlYktpdEF1ZGlvQ29udGV4dChE
b2N1bWVudCYgZG9jdW1lbnQpCiB9CiAKIC8vIENvbnN0cnVjdG9yIGZvciBvZmZsaW5lIChub24t
cmVhbHRpbWUpIHJlbmRlcmluZy4KLVdlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0QXVkaW9Db250
ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCkK
LSAgICA6IEF1ZGlvQ29udGV4dChkb2N1bWVudCwgcmVuZGVyVGFyZ2V0LT5udW1iZXJPZkNoYW5u
ZWxzKCksIFdURk1vdmUocmVuZGVyVGFyZ2V0KSkKK1dlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0
QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmPEF1
ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCkKKyAgICA6IEF1ZGlvQ29udGV4dChkb2N1bWVudCwg
cmVuZGVyVGFyZ2V0LT5udW1iZXJPZkNoYW5uZWxzKCksIHNhbXBsZVJhdGUsIFdURk1vdmUocmVu
ZGVyVGFyZ2V0KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmgKaW5kZXggMzZjMWM5MTVjZjBlZjJkNjk0MmM5MWY4
YTI5OGNkMjk0YWU1N2ViMC4uNTdmYzkzNmE0OGY3ZWVlOTk1ZTljZTVhY2YxM2FiNzFmM2ZkNDM2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRp
b0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvQ29udGV4dC5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAg
IGV4cGxpY2l0IFdlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYpOwotICAgIFdlYktpdEF1ZGlv
Q29udGV4dChEb2N1bWVudCYsIFJlZjxBdWRpb0J1ZmZlcj4mJiByZW5kZXJUYXJnZXQpOworICAg
IFdlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYsIGZsb2F0IHNhbXBsZVJhdGUsIFJlZjxBdWRp
b0J1ZmZlcj4mJiByZW5kZXJUYXJnZXQpOwogCiBwcml2YXRlOgogICAgIC8vIEFjdGl2ZURPTU9i
amVjdCBBUEkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAppbmRleCBmMjVkNTk0ZjIxNmZhNmIz
NTY0MmI1ZjAyNjIwOWM5NTk1NmE4ODE4Li5hMDVmMjFkZjc5YjQ2NTFiNDNhMWYzN2RhMzFhOWI1
YWRlODUwODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTM2LDggKzM2LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0
T2ZmbGluZUF1ZGlvQ29udGV4dCk7CiAKLVdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQ6OldlYktp
dE9mZmxpbmVBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8QXVkaW9CdWZmZXI+
JiYgcmVuZGVyVGFyZ2V0KQotICAgIDogV2ViS2l0QXVkaW9Db250ZXh0KGRvY3VtZW50LCBXVEZN
b3ZlKHJlbmRlclRhcmdldCkpCitXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgZmxvYXQgc2FtcGxlUmF0ZSwgUmVm
PEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCkKKyAgICA6IFdlYktpdEF1ZGlvQ29udGV4dChk
b2N1bWVudCwgc2FtcGxlUmF0ZSwgV1RGTW92ZShyZW5kZXJUYXJnZXQpKQogewogfQogCkBAIC01
NCw3ICs1NCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Pj4g
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dDo6Y3JlYXRlKFNjCiAgICAgaWYgKCFyZW5kZXJUYXJn
ZXQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OwogCi0gICAgYXV0
byBhdWRpb0NvbnRleHQgPSBhZG9wdFJlZigqbmV3IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQo
ZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCByZW5kZXJUYXJnZXQucmVsZWFzZU5vbk51bGwo
KSkpOworICAgIGF1dG8gYXVkaW9Db250ZXh0ID0gYWRvcHRSZWYoKm5ldyBXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0KGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSwgc2FtcGxlUmF0ZSwgcmVu
ZGVyVGFyZ2V0LnJlbGVhc2VOb25OdWxsKCkpKTsKICAgICBhdWRpb0NvbnRleHQtPnN1c3BlbmRJ
Zk5lZWRlZCgpOwogICAgIHJldHVybiBhdWRpb0NvbnRleHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dC5oCmluZGV4IDllZDZlMGUzMWMwYjljNTgwZDExN2YyNWVhYjI0YjM0NThjMDY0MmMuLjg2MDA3
MjJkM2QzODI5ZjQ5OWRhY2VjOGY4Y2NhZDg5YWIyMzVjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dC5oCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICB+V2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dCgpOwogCiBwcml2YXRlOgotICAgIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQoRG9jdW1l
bnQmLCBSZWY8QXVkaW9CdWZmZXI+JiYgcmVuZGVyVGFyZ2V0KTsKKyAgICBXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0KERvY3VtZW50JiwgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmPEF1ZGlvQnVmZmVy
PiYmIHJlbmRlclRhcmdldCk7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgogICAgIGNv
bnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2MWE5
OThmZTgzNjczYWI3OTI1ZGViMzc2YWIwYTExNzc0ODEyMTQzLi5kMDk1Mzk2ODIyNWUxZDM0MzE1
MmRiNjI4MzhkMTBiNjk0NDY5NTczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTEtMDUg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBDcmFzaCBpbiBBdWRp
b0J1ZmZlcjo6c2FtcGxlUmF0ZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg2MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiB3ZWJh
dWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1idWZmZXIt
Y3Jhc2guaHRtbDogQWRkZWQuCisKIDIwMjAtMTEtMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYlNvY2tldCBjb25zdHJ1Y3RvciBzaG91bGQgbm90IHRo
cm93IGluIGNhc2UgcG9ydCBpcyBibG9ja2VkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJh
dWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC1iYWQtYnVmZmVyLWNyYXNo
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjhmMzY2NTljYjNiNmQxNWJmMDMwYjUyMzNlZmRk
NTVmYWVkMWQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGlu
ZUF1ZGlvQ29udGV4dC1iYWQtYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEy
IEBACitUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90IGNyYXNoLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjb250ZXh0ID0gbmV3IE9mZmxpbmVBdWRpb0NvbnRl
eHQoMSwgMioqMjksIDQ0MDAwKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgY29udGV4
dC5zYW1wbGVSYXRlIGlzIDQ0MDAwCitQQVNTIG5ldyBPc2NpbGxhdG9yTm9kZShjb250ZXh0KSBk
aWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZs
aW5lQXVkaW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmIyNWI3MWVjZjhhMTYzNTM4MjQwYWNkZTQ3OGI2ZDI5YWU3ZGU4ODkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1idWZmZXIt
Y3Jhc2guaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90IGNyYXNo
LiIpOworCitzaG91bGROb3RUaHJvdygiY29udGV4dCA9IG5ldyBPZmZsaW5lQXVkaW9Db250ZXh0
KDEsIDIqKjI5LCA0NDAwMCkiKTsKK3Nob3VsZEJlKCJjb250ZXh0LnNhbXBsZVJhdGUiLCAiNDQw
MDAiKTsKK3Nob3VsZE5vdFRocm93KCJuZXcgT3NjaWxsYXRvck5vZGUoY29udGV4dCkiKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>