<?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>209529</bug_id>
          
          <creation_ts>2020-03-24 18:27:02 -0700</creation_ts>
          <short_desc>Nullptr crash in WebCore::Node::isDescendantOf when inserting list</short_desc>
          <delta_ts>2020-03-25 18:51:20 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jack">shihchieh_lee</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>ews-feeder</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mifenton</cc>
    
    <cc>product-security</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1633719</commentid>
    <comment_count>0</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-03-24 18:27:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/60693542&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633720</commentid>
    <comment_count>1</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-03-24 18:27:18 -0700</bug_when>
    <thetext>    #0 0x794ee89a1 in WebCore::Node::getFlag(WebCore::Node::NodeFlags) const (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x1db9a1)
    #1 0x7980842a3 in WebCore::Node::isDescendantOf(WebCore::Node const&amp;) const (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x33772a3)
    #2 0x79820c6e0 in WebCore::selectionForParagraphIteration(WebCore::VisibleSelection const&amp;) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x34ff6e0)
    #3 0x79828fcc1 in WebCore::InsertListCommand::doApply() (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x3582cc1)
    #4 0x7981c1d16 in WebCore::CompositeEditCommand::apply() (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x34b4d16)
    #5 0x798277b28 in WebCore::executeInsertOrderedList(WebCore::Frame&amp;, WebCore::Event*, WebCore::EditorCommandSource, WTF::String const&amp;) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x356ab28)
    #6 0x797ef2127 in WebCore::Document::execCommand(WTF::String const&amp;, bool, WTF::String const&amp;) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x31e5127)
    #7 0x7957d29fa in WebCore::jsDocumentPrototypeFunctionExecCommandBody(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSDocument*, JSC::ThrowScope&amp;) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0xac59fa)
    #8 0x7956830d0 in long long WebCore::IDLOperation&lt;WebCore::JSDocument&gt;::call&lt;&amp;(WebCore::jsDocumentPrototypeFunctionExecCommandBody(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSDocument*, JSC::ThrowScope&amp;)), (WebCore::CastedThisErrorBehavior)0&gt;(JSC::JSGlobalObject&amp;, JSC::CallFrame&amp;, char const*) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x9760d0)
    #9 0x5adc4b601177  
    #10 0x7b101eb13 in llint_entry (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0xa70b13)
    #11 0x7b10078e8 in vmEntryToJavaScript (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0xa598e8)
    #12 0x7b265d8f0 in JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x20af8f0)
    #13 0x7b2c540c0 in JSC::call(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x26a60c0)
    #14 0x7b2c541c1 in JSC::call(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x26a61c1)
    #15 0x7b2c5459f in JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x26a659f)
    #16 0x797803254 in WebCore::JSExecState::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x2af6254)
    #17 0x79782dc8e in WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext&amp;, WebCore::Event&amp;) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x2b20c8e)
    #18 0x798007324 in WebCore::EventTarget::innerInvokeEventListeners(WebCore::Event&amp;, WTF::Vector&lt;WTF::RefPtr&lt;WebCore::RegisteredEventListener, WTF::DumbPtrTraits&lt;WebCore::RegisteredEventListener&gt; &gt;, 1ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;, WebCore::EventTarget::EventInvokePhase) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x32fa324)
    #19 0x798002342 in WebCore::EventTarget::fireEventListeners(WebCore::Event&amp;, WebCore::EventTarget::EventInvokePhase) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x32f5342)
    #20 0x797fef656 in WebCore::EventContext::handleLocalEvents(WebCore::Event&amp;, WebCore::EventTarget::EventInvokePhase) const (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x32e2656)
    #21 0x797ff0829 in WebCore::dispatchEventInDOM(WebCore::Event&amp;, WebCore::EventPath const&amp;) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x32e3829)
    #22 0x797ff01d8 in WebCore::EventDispatcher::dispatchEvent(WebCore::Node&amp;, WebCore::Event&amp;) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x32e31d8)
    #23 0x797fefbde in WebCore::EventDispatcher::dispatchScopedEvent(WebCore::Node&amp;, WebCore::Event&amp;) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x32e2bde)
    #24 0x797e7b4cd in WebCore::dispatchChildRemovalEvents(WTF::Ref&lt;WebCore::Node, WTF::DumbPtrTraits&lt;WebCore::Node&gt; &gt;&amp;) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x316e4cd)
    #25 0x797e6d206 in WebCore::ContainerNode::removeChild(WebCore::Node&amp;) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x3160206)
    #26 0x79807f135 in WebCore::Node::removeChild(WebCore::Node&amp;) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x3372135)
    #27 0x7980d6d45 in WebCore::processNodes(WebCore::Range::ActionType, WTF::Vector&lt;WTF::Ref&lt;WebCore::Node, WTF::DumbPtrTraits&lt;WebCore::Node&gt; &gt;, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;, WebCore::Node*, WTF::RefPtr&lt;WebCore::Node, WTF::DumbPtrTraits&lt;WebCore::Node&gt; &gt;) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x33c9d45)
    #28 0x7980d3aa4 in WebCore::Range::processContents(WebCore::Range::ActionType) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x33c6aa4)
    #29 0x7980d291b in WebCore::Range::deleteContents() (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x33c591b)
    #30 0x798e2aee1 in WebCore::DOMSelection::deleteFromDocument() (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x411dee1)
    #31 0x7956fa98d in WebCore::jsDOMSelectionPrototypeFunctionDeleteFromDocumentBody(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSDOMSelection*, JSC::ThrowScope&amp;) (Safari_ASAN_258763_9b2408707c444da861e139af54b820e789a0ed62.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x9ed98d)
    #32 0x7955716a6 in long long WebCore::IDLOperation&lt;WebCore::JSDOMSelection&gt;::call&lt;&amp;(WebCore::jsDOMSelectionPrototypeFunctionDeleteFromDocumentBody(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSDOMSelection*, JSC::ThrowScope&amp;)), (WebCore::CastedThisErrorBehavior)0&gt;(JSC::JSGlobalObject&amp;, JSC::CallFrame&amp;, char const*)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633721</commentid>
    <comment_count>2</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-03-24 18:28:12 -0700</bug_when>
    <thetext>&lt;style&gt;
html { -webkit-user-modify: read-write; }
&lt;/style&gt;
&lt;script&gt;
    function runTest() {
        document.execCommand(&quot;insertOrderedList&quot;, false);
        TD.addEventListener(&quot;DOMNodeRemovedFromDocument&quot;, runTest);
        document.execCommand(&quot;selectAll&quot;, false);
        window.getSelection().deleteFromDocument();
    }
&lt;/script&gt;
&lt;body onload=&quot;runTest()&quot;&gt;&lt;table&gt;&lt;td id=TD&gt;&lt;/td&gt;&lt;/table&gt;&lt;li contenteditable=&quot;false&quot;&gt;&lt;/li&gt;&lt;span&gt;a&lt;/span&gt;

Root cause:
While we process the second “insertOrderedList” command, in function selectionForParagraphIteration the end position of the selected range is null and it is deref ilater in the function.

The following happens that causes end position to become null:
1. First insertOrderedList command is bypassed because there is no selected range for the command.
2. DOMNodeRemovedFromDocument listner is added.
3. We select all the elements in the document and delete them.
4. In deletion, we call processContentsBetweenOffsets which would set the renderer of end position to null.
5. In the middle of deletion, DOMNodeRemovedFromDocument event is triggered so we reenter JSC and start to process the second insertOrderedList command. 
6. Because the selection is still valid, we try to insert ol for all the elements, which has the same selected range as delete command.
7. Before inserting ol, we call selectionForParagraphIteration to re-evaluate the selected range position.
8. When looking at the end of selection, because the renderer is set to null in the original end position, it is skipped when we consider selection candidate. Then we walk up the node tree but find no alternative and return a null position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633723</commentid>
    <comment_count>3</comment_count>
      <attachid>394455</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-03-24 18:35:43 -0700</bug_when>
    <thetext>Created attachment 394455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633728</commentid>
    <comment_count>4</comment_count>
      <attachid>394455</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-24 18:55:58 -0700</bug_when>
    <thetext>Comment on attachment 394455
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        The visible positions may be null if the DOM tree is altered before an edit command is applied. Add null check for visible positions at the beginning of InsertListCommand::doApply.

Please insert a line break after period. Otherwise, this is a really long line.

&gt; LayoutTests/ChangeLog:9
&gt; +        The visible positions may be null if the DOM tree is altered before an edit command is applied. Add null check for visible positions at the beginning of InsertListCommand::doApply.

This is a change log for a test it should mention that you&apos;re adding a test.
e.g. Added a regression test for the crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633736</commentid>
    <comment_count>5</comment_count>
      <attachid>394459</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-03-24 19:13:46 -0700</bug_when>
    <thetext>Created attachment 394459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633737</commentid>
    <comment_count>6</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-03-24 19:14:37 -0700</bug_when>
    <thetext>Thanks! Please see the new patch.
&gt; Comment on attachment 394455 [details]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633740</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-24 19:19:37 -0700</bug_when>
    <thetext>There is no security implication here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633741</commentid>
    <comment_count>8</comment_count>
      <attachid>394459</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-24 19:19:47 -0700</bug_when>
    <thetext>Comment on attachment 394459
Patch

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

&gt; LayoutTests/fast/lists/insert-list-during-node-removal-crash.html:3
&gt; +&lt;style&gt;
&gt; +html { -webkit-user-modify: read-write; }
&gt; +&lt;/style&gt;

Just add contenteditable=&quot;true&quot; on body instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633755</commentid>
    <comment_count>9</comment_count>
      <attachid>394466</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-03-24 20:24:12 -0700</bug_when>
    <thetext>Created attachment 394466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633783</commentid>
    <comment_count>10</comment_count>
      <attachid>394466</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-24 22:37:54 -0700</bug_when>
    <thetext>Comment on attachment 394466
Patch

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

&gt; LayoutTests/ChangeLog:12
&gt; +        * fast/lists/insert-list-during-node-removal-crash-expected.txt: Added.
&gt; +        * fast/lists/insert-list-during-node-removal-crash.html: Added.

Oops, sorry, I didn&apos;t realize this earlier.
This should be inside editing/execCommand or editing/inserting, not fast/lists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633878</commentid>
    <comment_count>11</comment_count>
      <attachid>394466</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-25 08:38:57 -0700</bug_when>
    <thetext>Comment on attachment 394466
Patch

r=me assuming we move the test to the editing directory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633929</commentid>
    <comment_count>12</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-03-25 10:21:14 -0700</bug_when>
    <thetext>Thanks, I will move the test files.

Somehow the test case shows timeout message in WebKitTestRunner because of &quot;testRunner.waitUntilDone&quot;. Am investigating and will upload new patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633965</commentid>
    <comment_count>13</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-03-25 11:29:32 -0700</bug_when>
    <thetext>Added print and verified that event handler is called once and finished afterwards when --no-timeout option is specified.

Besides, when running WebKitTestRunner with ./Tools/Scripts/run-webkit-tests, this error does not happen, probably because it sets a longer timeout:

&quot;Regular timeout: 30000, slow test timeout: 150000&quot;.

It should be safe to upload the test case.

(In reply to Jack from comment #12)
&gt; Somehow the test case shows timeout message in WebKitTestRunner because of
&gt; &quot;testRunner.waitUntilDone&quot;. Am investigating and will upload new patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634000</commentid>
    <comment_count>14</comment_count>
      <attachid>394529</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-03-25 12:48:48 -0700</bug_when>
    <thetext>Created attachment 394529
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634147</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-25 18:51:19 -0700</bug_when>
    <thetext>Committed r259027: &lt;https://trac.webkit.org/changeset/259027&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 394529.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394455</attachid>
            <date>2020-03-24 18:35:43 -0700</date>
            <delta_ts>2020-03-24 19:13:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209529-20200324183542.patch</filename>
            <type>text/plain</type>
            <size>5014</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhYTYzMjk3ZDE2MWRj
ZDJhNzkxZTY2NDRjMDE1MjVlMjUzMmE2Ni4uZTQ5YTBkNjA5OTY4MjVjYzYzNDRmZDY5NmQyODAx
ZmZhM2JlYzE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTAzLTI0ICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIE51bGxwdHIgY3Jhc2gg
aW4gV2ViQ29yZTo6Tm9kZTo6aXNEZXNjZW5kYW50T2Ygd2hlbiBpbnNlcnRpbmcgbGlzdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NTI5CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82MDY5MzU0Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgdmlzaWJsZSBwb3NpdGlvbnMgbWF5IGJlIG51bGwg
aWYgdGhlIERPTSB0cmVlIGlzIGFsdGVyZWQgYmVmb3JlIGFuIGVkaXQgY29tbWFuZCBpcyBhcHBs
aWVkLiBBZGQgbnVsbCBjaGVjayBmb3IgdmlzaWJsZSBwb3NpdGlvbnMgYXQgdGhlIGJlZ2lubmlu
ZyBvZiBJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseS4KKworICAgICAgICBUZXN0OiBmYXN0L2xp
c3RzL2luc2VydC1saXN0LWR1cmluZy1ub2RlLXJlbW92YWwtY3Jhc2guaHRtbAorCisgICAgICAg
ICogZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNl
cnRMaXN0Q29tbWFuZDo6ZG9BcHBseSk6CisKIDIwMjAtMDMtMjMgIEpvaG4gV2lsYW5kZXIgIDx3
aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRoZSBjYXBhYmlsaXR5IHRvIGNoYW5n
ZSBhbGwgb2YgYSB3ZWJzaXRlJ3MgY29va2llcyB0byBTYW1lU2l0ZT1TdHJpY3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKaW5kZXggM2M3N2MxZTBkZTdi
OGMwZTM0MDgyZWQ0MTVkMDBiY2Q4N2Q5ZjVkNi4uYmRjYmE5ZTUzNDU0NDZkNGNlMmZiM2FhYjkz
ZWZhNzQxMmRhYjUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRM
aXN0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29t
bWFuZC5jcHAKQEAgLTExMiwxMiArMTEyLDEzIEBAIEluc2VydExpc3RDb21tYW5kOjpJbnNlcnRM
aXN0Q29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQsIFR5cGUgdHlwZSkKIAogdm9pZCBJbnNlcnRM
aXN0Q29tbWFuZDo6ZG9BcHBseSgpCiB7Ci0gICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLmlzTm9u
ZU9yT3JwaGFuZWQoKSB8fCAhZW5kaW5nU2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRpdGFi
bGUoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQg
PSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlRW5kKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZp
c2libGVTdGFydCA9IGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpOwotICAgIC8vIFdo
ZW4gYSBzZWxlY3Rpb24gZW5kcyBhdCB0aGUgc3RhcnQgb2YgYSBwYXJhZ3JhcGgsIHdlIHJhcmVs
eSBwYWludCAKKworICAgIGlmICh2aXNpYmxlRW5kLmlzTnVsbCgpIHx8IHZpc2libGVTdGFydC5p
c051bGwoKSB8fCAhZW5kaW5nU2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gV2hlbiBhIHNlbGVjdGlvbiBlbmRzIGF0IHRoZSBz
dGFydCBvZiBhIHBhcmFncmFwaCwgd2UgcmFyZWx5IHBhaW50CiAgICAgLy8gdGhlIHNlbGVjdGlv
biBnYXAgYmVmb3JlIHRoYXQgcGFyYWdyYXBoLCBiZWNhdXNlIHRoZXJlIG9mdGVuIGlzIG5vIGdh
cC4gIAogICAgIC8vIEluIGEgY2FzZSBsaWtlIHRoaXMsIGl0J3Mgbm90IG9idmlvdXMgdG8gdGhl
IHVzZXIgdGhhdCB0aGUgc2VsZWN0aW9uIAogICAgIC8vIGVuZHMgImluc2lkZSIgdGhhdCBwYXJh
Z3JhcGgsIHNvIGl0IHdvdWxkIGJlIGNvbmZ1c2luZyBpZiBJbnNlcnRVbntPcmRlcmVkfUxpc3Qg
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMjE4YjQzZjI4ZDVmZTFjYmFmZDJjOTAyODIzZGE3NmY0NDM3NmJhMy4uY2EyNzdm
ZmNiM2U3ODg5YWIyZWYzODM0ODYzZDg5MzhjOWQzYTdmOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDIwLTAzLTI0ICBKYWNrIExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAg
ICAgIE51bGxwdHIgY3Jhc2ggaW4gV2ViQ29yZTo6Tm9kZTo6aXNEZXNjZW5kYW50T2Ygd2hlbiBp
bnNlcnRpbmcgbGlzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5NTI5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDY5MzU0Mj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgdmlzaWJsZSBwb3Np
dGlvbnMgbWF5IGJlIG51bGwgaWYgdGhlIERPTSB0cmVlIGlzIGFsdGVyZWQgYmVmb3JlIGFuIGVk
aXQgY29tbWFuZCBpcyBhcHBsaWVkLiBBZGQgbnVsbCBjaGVjayBmb3IgdmlzaWJsZSBwb3NpdGlv
bnMgYXQgdGhlIGJlZ2lubmluZyBvZiBJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseS4KKworICAg
ICAgICAqIGZhc3QvbGlzdHMvaW5zZXJ0LWxpc3QtZHVyaW5nLW5vZGUtcmVtb3ZhbC1jcmFzaC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbGlzdHMvaW5zZXJ0LWxpc3QtZHVy
aW5nLW5vZGUtcmVtb3ZhbC1jcmFzaC5odG1sOiBBZGRlZC4KKwogMjAyMC0wMy0yMyAgSmFzb24g
TGF3cmVuY2UgIDxsYXdyZW5jZS5qQGFwcGxlLmNvbT4KIAogICAgICAgICBbIGlPUyB3azIgRGVi
dWcgXSBmYXN0L3RleHQvY29udHJvbC1jaGFyYWN0ZXJzL3Zpc2libGUtY29udHJvbC1jaGFyYWN0
ZXJzLTEuaHRtbCBpcyBmbGFreSBjcmFzaGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbGlzdHMvaW5zZXJ0LWxpc3QtZHVyaW5nLW5vZGUtcmVtb3ZhbC1jcmFzaC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xpc3RzL2luc2VydC1saXN0LWR1cmluZy1ub2RlLXJlbW92
YWwtY3Jhc2gtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3YjgxMDM4OWYxMjEwMGNhZjM5Mjdk
MzIyMTcyYWNkZDkyODc3YzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xp
c3RzL2luc2VydC1saXN0LWR1cmluZy1ub2RlLXJlbW92YWwtY3Jhc2gtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEgQEAKK1Rlc3RzIGluc2VydGluZyBsaXN0IGR1cmluZyBub2RlIHJlbW92YWwuIFRo
ZSB0ZXN0IHBhc3NlcyBpZiBXZWJLaXQgZG9lc24ndCBjcmFzaCBvciBoaXQgYW4gYXNzZXJ0aW9u
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9pbnNlcnQtbGlzdC1kdXJpbmct
bm9kZS1yZW1vdmFsLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xpc3RzL2luc2VydC1s
aXN0LWR1cmluZy1ub2RlLXJlbW92YWwtY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTk5ZDJhZDM5
NGY2ZmU3NGU4MzE1MTJiMjgxNTk5NDhhN2ZjN2NlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9saXN0cy9pbnNlcnQtbGlzdC1kdXJpbmctbm9kZS1yZW1vdmFsLWNyYXNoLmh0
bWwKQEAgLTAsMCArMSwyNiBAQAorPHN0eWxlPgoraHRtbCB7IC13ZWJraXQtdXNlci1tb2RpZnk6
IHJlYWQtd3JpdGU7IH0KKzwvc3R5bGU+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gRG9tTm9kZUV2ZW50
SGFuZGxlcigpIHsKKyAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImluc2VydE9yZGVyZWRM
aXN0IiwgZmFsc2UpOworICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc3R5bGUnKS5yZW1vdmUoKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIjxwPiBUZXN0cyBpbnNlcnRp
bmcgbGlzdCBkdXJpbmcgbm9kZSByZW1vdmFsLiBUaGUgdGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRv
ZXNuJ3QgY3Jhc2ggb3IgaGl0IGFuIGFzc2VydGlvbi48L3A+IjsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgd2luZG93Lm9ubG9hZCA9ICgpID0+IHsKKyAg
ICAgICAgVEQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQiLCBE
b21Ob2RlRXZlbnRIYW5kbGVyKTsKKyAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoInNlbGVj
dEFsbCIsIGZhbHNlKTsKKyAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmRlbGV0ZUZyb21E
b2N1bWVudCgpOworICAgIH0KKzwvc2NyaXB0PgorPGJvZHk+PHRhYmxlPjx0ZCBpZD1URD48L3Rk
PjwvdGFibGU+PGxpIGNvbnRlbnRlZGl0YWJsZT0iZmFsc2UiPjwvbGk+PGRpdj5hPC9kaXY+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394459</attachid>
            <date>2020-03-24 19:13:46 -0700</date>
            <delta_ts>2020-03-24 19:45:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209529-20200324191345.patch</filename>
            <type>text/plain</type>
            <size>4882</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhYTYzMjk3ZDE2MWRj
ZDJhNzkxZTY2NDRjMDE1MjVlMjUzMmE2Ni4uOGFlNDdjNzdjYjZkNmJlYWYzMjg0YTFmZmQxNmNm
NjM5OTkxZTg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTAzLTI0ICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIE51bGxwdHIgY3Jhc2gg
aW4gV2ViQ29yZTo6Tm9kZTo6aXNEZXNjZW5kYW50T2Ygd2hlbiBpbnNlcnRpbmcgbGlzdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NTI5CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82MDY5MzU0Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgdmlzaWJsZSBwb3NpdGlvbnMgbWF5IGJlIG51bGwg
aWYgdGhlIERPTSB0cmVlIGlzIGFsdGVyZWQgYmVmb3JlIGFuIGVkaXQgY29tbWFuZCBpcyBhcHBs
aWVkLiAKKyAgICAgICAgQWRkIG51bGwgY2hlY2sgZm9yIHZpc2libGUgcG9zaXRpb25zIGF0IHRo
ZSBiZWdpbm5pbmcgb2YgSW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkuCisKKyAgICAgICAgVGVz
dDogZmFzdC9saXN0cy9pbnNlcnQtbGlzdC1kdXJpbmctbm9kZS1yZW1vdmFsLWNyYXNoLmh0bWwK
KworICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkpOgorCiAyMDIwLTAzLTIzICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0aGUgY2FwYWJpbGl0
eSB0byBjaGFuZ2UgYWxsIG9mIGEgd2Vic2l0ZSdzIGNvb2tpZXMgdG8gU2FtZVNpdGU9U3RyaWN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCmluZGV4IDNj
NzdjMWUwZGU3YjhjMGUzNDA4MmVkNDE1ZDAwYmNkODdkOWY1ZDYuLmJkY2JhOWU1MzQ1NDQ2ZDRj
ZTJmYjNhYWI5M2VmYTc0MTJkYWI1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0TGlzdENvbW1hbmQuY3BwCkBAIC0xMTIsMTIgKzExMiwxMyBAQCBJbnNlcnRMaXN0Q29tbWFu
ZDo6SW5zZXJ0TGlzdENvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBUeXBlIHR5cGUpCiAKIHZv
aWQgSW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkoKQogewotICAgIGlmIChlbmRpbmdTZWxlY3Rp
b24oKS5pc05vbmVPck9ycGhhbmVkKCkgfHwgIWVuZGluZ1NlbGVjdGlvbigpLmlzQ29udGVudFJp
Y2hseUVkaXRhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlRW5kID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpOwogICAgIFZpc2libGVQ
b3NpdGlvbiB2aXNpYmxlU3RhcnQgPSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsK
LSAgICAvLyBXaGVuIGEgc2VsZWN0aW9uIGVuZHMgYXQgdGhlIHN0YXJ0IG9mIGEgcGFyYWdyYXBo
LCB3ZSByYXJlbHkgcGFpbnQgCisKKyAgICBpZiAodmlzaWJsZUVuZC5pc051bGwoKSB8fCB2aXNp
YmxlU3RhcnQuaXNOdWxsKCkgfHwgIWVuZGluZ1NlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVk
aXRhYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdoZW4gYSBzZWxlY3Rpb24gZW5k
cyBhdCB0aGUgc3RhcnQgb2YgYSBwYXJhZ3JhcGgsIHdlIHJhcmVseSBwYWludAogICAgIC8vIHRo
ZSBzZWxlY3Rpb24gZ2FwIGJlZm9yZSB0aGF0IHBhcmFncmFwaCwgYmVjYXVzZSB0aGVyZSBvZnRl
biBpcyBubyBnYXAuICAKICAgICAvLyBJbiBhIGNhc2UgbGlrZSB0aGlzLCBpdCdzIG5vdCBvYnZp
b3VzIHRvIHRoZSB1c2VyIHRoYXQgdGhlIHNlbGVjdGlvbiAKICAgICAvLyBlbmRzICJpbnNpZGUi
IHRoYXQgcGFyYWdyYXBoLCBzbyBpdCB3b3VsZCBiZSBjb25mdXNpbmcgaWYgSW5zZXJ0VW57T3Jk
ZXJlZH1MaXN0IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDIxOGI0M2YyOGQ1ZmUxY2JhZmQyYzkwMjgyM2RhNzZmNDQzNzZi
YTMuLjRkNzYyMmZlOGFkZDFjMzJkNzUzZGM3NzNjYTg2NTQ0YjhlYWQ0ZTQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMC0wMy0yNCAgSmFjayBMZWUgIDxzaGloY2hpZWhfbGVlQGFwcGxlLmNv
bT4KKworICAgICAgICBOdWxscHRyIGNyYXNoIGluIFdlYkNvcmU6Ok5vZGU6OmlzRGVzY2VuZGFu
dE9mIHdoZW4gaW5zZXJ0aW5nIGxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwOTUyOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA2OTM1NDI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
YSByZWdyZXNzaW9uIHRlc3QgZm9yIHRoZSBjcmFzaC4KKworICAgICAgICAqIGZhc3QvbGlzdHMv
aW5zZXJ0LWxpc3QtZHVyaW5nLW5vZGUtcmVtb3ZhbC1jcmFzaC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvbGlzdHMvaW5zZXJ0LWxpc3QtZHVyaW5nLW5vZGUtcmVtb3ZhbC1j
cmFzaC5odG1sOiBBZGRlZC4KKwogMjAyMC0wMy0yMyAgSmFzb24gTGF3cmVuY2UgIDxsYXdyZW5j
ZS5qQGFwcGxlLmNvbT4KIAogICAgICAgICBbIGlPUyB3azIgRGVidWcgXSBmYXN0L3RleHQvY29u
dHJvbC1jaGFyYWN0ZXJzL3Zpc2libGUtY29udHJvbC1jaGFyYWN0ZXJzLTEuaHRtbCBpcyBmbGFr
eSBjcmFzaGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbGlzdHMvaW5zZXJ0LWxp
c3QtZHVyaW5nLW5vZGUtcmVtb3ZhbC1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2xpc3RzL2luc2VydC1saXN0LWR1cmluZy1ub2RlLXJlbW92YWwtY3Jhc2gtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU3YjgxMDM4OWYxMjEwMGNhZjM5MjdkMzIyMTcyYWNkZDkyODc3YzkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xpc3RzL2luc2VydC1saXN0LWR1
cmluZy1ub2RlLXJlbW92YWwtY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK1Rlc3Rz
IGluc2VydGluZyBsaXN0IGR1cmluZyBub2RlIHJlbW92YWwuIFRoZSB0ZXN0IHBhc3NlcyBpZiBX
ZWJLaXQgZG9lc24ndCBjcmFzaCBvciBoaXQgYW4gYXNzZXJ0aW9uLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9saXN0cy9pbnNlcnQtbGlzdC1kdXJpbmctbm9kZS1yZW1vdmFsLWNyYXNo
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xpc3RzL2luc2VydC1saXN0LWR1cmluZy1ub2RlLXJl
bW92YWwtY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTk5ZDJhZDM5NGY2ZmU3NGU4MzE1MTJiMjgx
NTk5NDhhN2ZjN2NlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9p
bnNlcnQtbGlzdC1kdXJpbmctbm9kZS1yZW1vdmFsLWNyYXNoLmh0bWwKQEAgLTAsMCArMSwyNiBA
QAorPHN0eWxlPgoraHRtbCB7IC13ZWJraXQtdXNlci1tb2RpZnk6IHJlYWQtd3JpdGU7IH0KKzwv
c3R5bGU+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gRG9tTm9kZUV2ZW50SGFuZGxlcigpIHsKKyAgICAg
ICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImluc2VydE9yZGVyZWRMaXN0IiwgZmFsc2UpOworICAg
ICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZG9j
dW1lbnQucXVlcnlTZWxlY3Rvcignc3R5bGUnKS5yZW1vdmUoKTsKKyAgICAgICAgICAgIGRvY3Vt
ZW50LmJvZHkuaW5uZXJIVE1MID0gIjxwPiBUZXN0cyBpbnNlcnRpbmcgbGlzdCBkdXJpbmcgbm9k
ZSByZW1vdmFsLiBUaGUgdGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXNuJ3QgY3Jhc2ggb3IgaGl0
IGFuIGFzc2VydGlvbi48L3A+IjsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgd2luZG93Lm9ubG9hZCA9ICgpID0+IHsKKyAgICAgICAgVEQuYWRkRXZlbnRM
aXN0ZW5lcigiRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQiLCBEb21Ob2RlRXZlbnRIYW5kbGVy
KTsKKyAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoInNlbGVjdEFsbCIsIGZhbHNlKTsKKyAg
ICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmRlbGV0ZUZyb21Eb2N1bWVudCgpOworICAgIH0K
Kzwvc2NyaXB0PgorPGJvZHk+PHRhYmxlPjx0ZCBpZD1URD48L3RkPjwvdGFibGU+PGxpIGNvbnRl
bnRlZGl0YWJsZT0iZmFsc2UiPjwvbGk+PGRpdj5hPC9kaXY+Cg==
</data>
<flag name="review"
          id="409879"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394466</attachid>
            <date>2020-03-24 20:24:12 -0700</date>
            <delta_ts>2020-03-25 12:48:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209529-20200324202412.patch</filename>
            <type>text/plain</type>
            <size>4805</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhYTYzMjk3ZDE2MWRj
ZDJhNzkxZTY2NDRjMDE1MjVlMjUzMmE2Ni4uOGFlNDdjNzdjYjZkNmJlYWYzMjg0YTFmZmQxNmNm
NjM5OTkxZTg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTAzLTI0ICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIE51bGxwdHIgY3Jhc2gg
aW4gV2ViQ29yZTo6Tm9kZTo6aXNEZXNjZW5kYW50T2Ygd2hlbiBpbnNlcnRpbmcgbGlzdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NTI5CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82MDY5MzU0Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgdmlzaWJsZSBwb3NpdGlvbnMgbWF5IGJlIG51bGwg
aWYgdGhlIERPTSB0cmVlIGlzIGFsdGVyZWQgYmVmb3JlIGFuIGVkaXQgY29tbWFuZCBpcyBhcHBs
aWVkLiAKKyAgICAgICAgQWRkIG51bGwgY2hlY2sgZm9yIHZpc2libGUgcG9zaXRpb25zIGF0IHRo
ZSBiZWdpbm5pbmcgb2YgSW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkuCisKKyAgICAgICAgVGVz
dDogZmFzdC9saXN0cy9pbnNlcnQtbGlzdC1kdXJpbmctbm9kZS1yZW1vdmFsLWNyYXNoLmh0bWwK
KworICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkpOgorCiAyMDIwLTAzLTIzICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0aGUgY2FwYWJpbGl0
eSB0byBjaGFuZ2UgYWxsIG9mIGEgd2Vic2l0ZSdzIGNvb2tpZXMgdG8gU2FtZVNpdGU9U3RyaWN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCmluZGV4IDNj
NzdjMWUwZGU3YjhjMGUzNDA4MmVkNDE1ZDAwYmNkODdkOWY1ZDYuLmJkY2JhOWU1MzQ1NDQ2ZDRj
ZTJmYjNhYWI5M2VmYTc0MTJkYWI1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0TGlzdENvbW1hbmQuY3BwCkBAIC0xMTIsMTIgKzExMiwxMyBAQCBJbnNlcnRMaXN0Q29tbWFu
ZDo6SW5zZXJ0TGlzdENvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBUeXBlIHR5cGUpCiAKIHZv
aWQgSW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkoKQogewotICAgIGlmIChlbmRpbmdTZWxlY3Rp
b24oKS5pc05vbmVPck9ycGhhbmVkKCkgfHwgIWVuZGluZ1NlbGVjdGlvbigpLmlzQ29udGVudFJp
Y2hseUVkaXRhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlRW5kID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpOwogICAgIFZpc2libGVQ
b3NpdGlvbiB2aXNpYmxlU3RhcnQgPSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsK
LSAgICAvLyBXaGVuIGEgc2VsZWN0aW9uIGVuZHMgYXQgdGhlIHN0YXJ0IG9mIGEgcGFyYWdyYXBo
LCB3ZSByYXJlbHkgcGFpbnQgCisKKyAgICBpZiAodmlzaWJsZUVuZC5pc051bGwoKSB8fCB2aXNp
YmxlU3RhcnQuaXNOdWxsKCkgfHwgIWVuZGluZ1NlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVk
aXRhYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdoZW4gYSBzZWxlY3Rpb24gZW5k
cyBhdCB0aGUgc3RhcnQgb2YgYSBwYXJhZ3JhcGgsIHdlIHJhcmVseSBwYWludAogICAgIC8vIHRo
ZSBzZWxlY3Rpb24gZ2FwIGJlZm9yZSB0aGF0IHBhcmFncmFwaCwgYmVjYXVzZSB0aGVyZSBvZnRl
biBpcyBubyBnYXAuICAKICAgICAvLyBJbiBhIGNhc2UgbGlrZSB0aGlzLCBpdCdzIG5vdCBvYnZp
b3VzIHRvIHRoZSB1c2VyIHRoYXQgdGhlIHNlbGVjdGlvbiAKICAgICAvLyBlbmRzICJpbnNpZGUi
IHRoYXQgcGFyYWdyYXBoLCBzbyBpdCB3b3VsZCBiZSBjb25mdXNpbmcgaWYgSW5zZXJ0VW57T3Jk
ZXJlZH1MaXN0IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDIxOGI0M2YyOGQ1ZmUxY2JhZmQyYzkwMjgyM2RhNzZmNDQzNzZi
YTMuLjRkNzYyMmZlOGFkZDFjMzJkNzUzZGM3NzNjYTg2NTQ0YjhlYWQ0ZTQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMC0wMy0yNCAgSmFjayBMZWUgIDxzaGloY2hpZWhfbGVlQGFwcGxlLmNv
bT4KKworICAgICAgICBOdWxscHRyIGNyYXNoIGluIFdlYkNvcmU6Ok5vZGU6OmlzRGVzY2VuZGFu
dE9mIHdoZW4gaW5zZXJ0aW5nIGxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwOTUyOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA2OTM1NDI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
YSByZWdyZXNzaW9uIHRlc3QgZm9yIHRoZSBjcmFzaC4KKworICAgICAgICAqIGZhc3QvbGlzdHMv
aW5zZXJ0LWxpc3QtZHVyaW5nLW5vZGUtcmVtb3ZhbC1jcmFzaC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvbGlzdHMvaW5zZXJ0LWxpc3QtZHVyaW5nLW5vZGUtcmVtb3ZhbC1j
cmFzaC5odG1sOiBBZGRlZC4KKwogMjAyMC0wMy0yMyAgSmFzb24gTGF3cmVuY2UgIDxsYXdyZW5j
ZS5qQGFwcGxlLmNvbT4KIAogICAgICAgICBbIGlPUyB3azIgRGVidWcgXSBmYXN0L3RleHQvY29u
dHJvbC1jaGFyYWN0ZXJzL3Zpc2libGUtY29udHJvbC1jaGFyYWN0ZXJzLTEuaHRtbCBpcyBmbGFr
eSBjcmFzaGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbGlzdHMvaW5zZXJ0LWxp
c3QtZHVyaW5nLW5vZGUtcmVtb3ZhbC1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2xpc3RzL2luc2VydC1saXN0LWR1cmluZy1ub2RlLXJlbW92YWwtY3Jhc2gtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU3YjgxMDM4OWYxMjEwMGNhZjM5MjdkMzIyMTcyYWNkZDkyODc3YzkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xpc3RzL2luc2VydC1saXN0LWR1
cmluZy1ub2RlLXJlbW92YWwtY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK1Rlc3Rz
IGluc2VydGluZyBsaXN0IGR1cmluZyBub2RlIHJlbW92YWwuIFRoZSB0ZXN0IHBhc3NlcyBpZiBX
ZWJLaXQgZG9lc24ndCBjcmFzaCBvciBoaXQgYW4gYXNzZXJ0aW9uLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9saXN0cy9pbnNlcnQtbGlzdC1kdXJpbmctbm9kZS1yZW1vdmFsLWNyYXNo
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xpc3RzL2luc2VydC1saXN0LWR1cmluZy1ub2RlLXJl
bW92YWwtY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWEwOTNmZjMwMjI3Njg2MTBjYTIwNDAyNjcx
NTc4NmRlZTRjNTI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9p
bnNlcnQtbGlzdC1kdXJpbmctbm9kZS1yZW1vdmFsLWNyYXNoLmh0bWwKQEAgLTAsMCArMSwyMyBA
QAorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIERvbU5vZGVFdmVudEhhbmRsZXIoKSB7CisgICAgICAgIGRv
Y3VtZW50LmV4ZWNDb21tYW5kKCJpbnNlcnRPcmRlcmVkTGlzdCIsIGZhbHNlKTsKKyAgICAgICAg
cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkuaW5uZXJIVE1MID0gIjxwPiBUZXN0cyBpbnNlcnRpbmcgbGlzdCBkdXJpbmcgbm9kZSBy
ZW1vdmFsLiBUaGUgdGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXNuJ3QgY3Jhc2ggb3IgaGl0IGFu
IGFzc2VydGlvbi48L3A+IjsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gKCkgPT4geworICAgICAg
ICBURC5hZGRFdmVudExpc3RlbmVyKCJET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudCIsIERvbU5v
ZGVFdmVudEhhbmRsZXIpOworICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgic2VsZWN0QWxs
IiwgZmFsc2UpOworICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuZGVsZXRlRnJvbURvY3Vt
ZW50KCk7CisgICAgfQorPC9zY3JpcHQ+Cis8Ym9keSBjb250ZW50ZWRpdGFibGU9InRydWUiPjx0
YWJsZT48dGQgaWQ9VEQ+PC90ZD48L3RhYmxlPjxsaSBjb250ZW50ZWRpdGFibGU9ImZhbHNlIj48
L2xpPjxkaXY+YTwvZGl2Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394529</attachid>
            <date>2020-03-25 12:48:48 -0700</date>
            <delta_ts>2020-03-25 18:51:20 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-209529-20200325124847.patch</filename>
            <type>text/plain</type>
            <size>4862</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhYTYzMjk3ZDE2MWRj
ZDJhNzkxZTY2NDRjMDE1MjVlMjUzMmE2Ni4uYmMzMGY4YjNmMjNlYTYxZTgwNmMxZGY1YTE1ZjBi
YzQ4ZGRlMDQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTAzLTI1ICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIE51bGxwdHIgY3Jhc2gg
aW4gV2ViQ29yZTo6Tm9kZTo6aXNEZXNjZW5kYW50T2Ygd2hlbiBpbnNlcnRpbmcgbGlzdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NTI5CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82MDY5MzU0Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICBUaGUgdmlzaWJsZSBwb3NpdGlvbnMgbWF5IGJlIG51bGwgaWYg
dGhlIERPTSB0cmVlIGlzIGFsdGVyZWQgYmVmb3JlIGFuIGVkaXQgY29tbWFuZCBpcyBhcHBsaWVk
LiAKKyAgICAgICAgQWRkIG51bGwgY2hlY2sgZm9yIHZpc2libGUgcG9zaXRpb25zIGF0IHRoZSBi
ZWdpbm5pbmcgb2YgSW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkuCisKKyAgICAgICAgVGVzdDog
ZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWxpc3QtZHVyaW5nLW5vZGUtcmVtb3ZhbC1jcmFzaC5o
dG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5KToKKwogMjAyMC0wMy0yMyAgSm9o
biBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdGhlIGNhcGFi
aWxpdHkgdG8gY2hhbmdlIGFsbCBvZiBhIHdlYnNpdGUncyBjb29raWVzIHRvIFNhbWVTaXRlPVN0
cmljdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcAppbmRl
eCAzYzc3YzFlMGRlN2I4YzBlMzQwODJlZDQxNWQwMGJjZDg3ZDlmNWQ2Li5iZGNiYTllNTM0NTQ0
NmQ0Y2UyZmIzYWFiOTNlZmE3NDEyZGFiNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0luc2VydExpc3RDb21tYW5kLmNwcApAQCAtMTEyLDEyICsxMTIsMTMgQEAgSW5zZXJ0TGlzdENv
bW1hbmQ6Okluc2VydExpc3RDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgVHlwZSB0eXBlKQog
CiB2b2lkIEluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5KCkKIHsKLSAgICBpZiAoZW5kaW5nU2Vs
ZWN0aW9uKCkuaXNOb25lT3JPcnBoYW5lZCgpIHx8ICFlbmRpbmdTZWxlY3Rpb24oKS5pc0NvbnRl
bnRSaWNobHlFZGl0YWJsZSgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZUVuZCA9IGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVFbmQoKTsKICAgICBWaXNp
YmxlUG9zaXRpb24gdmlzaWJsZVN0YXJ0ID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0
KCk7Ci0gICAgLy8gV2hlbiBhIHNlbGVjdGlvbiBlbmRzIGF0IHRoZSBzdGFydCBvZiBhIHBhcmFn
cmFwaCwgd2UgcmFyZWx5IHBhaW50IAorCisgICAgaWYgKHZpc2libGVFbmQuaXNOdWxsKCkgfHwg
dmlzaWJsZVN0YXJ0LmlzTnVsbCgpIHx8ICFlbmRpbmdTZWxlY3Rpb24oKS5pc0NvbnRlbnRSaWNo
bHlFZGl0YWJsZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBXaGVuIGEgc2VsZWN0aW9u
IGVuZHMgYXQgdGhlIHN0YXJ0IG9mIGEgcGFyYWdyYXBoLCB3ZSByYXJlbHkgcGFpbnQKICAgICAv
LyB0aGUgc2VsZWN0aW9uIGdhcCBiZWZvcmUgdGhhdCBwYXJhZ3JhcGgsIGJlY2F1c2UgdGhlcmUg
b2Z0ZW4gaXMgbm8gZ2FwLiAgCiAgICAgLy8gSW4gYSBjYXNlIGxpa2UgdGhpcywgaXQncyBub3Qg
b2J2aW91cyB0byB0aGUgdXNlciB0aGF0IHRoZSBzZWxlY3Rpb24gCiAgICAgLy8gZW5kcyAiaW5z
aWRlIiB0aGF0IHBhcmFncmFwaCwgc28gaXQgd291bGQgYmUgY29uZnVzaW5nIGlmIEluc2VydFVu
e09yZGVyZWR9TGlzdCAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyMThiNDNmMjhkNWZlMWNiYWZkMmM5MDI4MjNkYTc2ZjQ0
Mzc2YmEzLi40NmNiMmM5NzExNjA2ZjQ4MGU2NDY3MGNhYTRmNjU1MWM2OWRiY2ZjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMjAtMDMtMjUgIEphY2sgTGVlICA8c2hpaGNoaWVoX2xlZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgTnVsbHB0ciBjcmFzaCBpbiBXZWJDb3JlOjpOb2RlOjppc0Rlc2Nl
bmRhbnRPZiB3aGVuIGluc2VydGluZyBsaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk1MjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwNjkz
NTQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZGVk
IGEgcmVncmVzc2lvbiB0ZXN0IGZvciB0aGUgY3Jhc2guCisKKyAgICAgICAgKiBlZGl0aW5nL2lu
c2VydGluZy9pbnNlcnQtbGlzdC1kdXJpbmctbm9kZS1yZW1vdmFsLWNyYXNoLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWxpc3QtZHVyaW5n
LW5vZGUtcmVtb3ZhbC1jcmFzaC5odG1sOiBBZGRlZC4KKwogMjAyMC0wMy0yMyAgSmFzb24gTGF3
cmVuY2UgIDxsYXdyZW5jZS5qQGFwcGxlLmNvbT4KIAogICAgICAgICBbIGlPUyB3azIgRGVidWcg
XSBmYXN0L3RleHQvY29udHJvbC1jaGFyYWN0ZXJzL3Zpc2libGUtY29udHJvbC1jaGFyYWN0ZXJz
LTEuaHRtbCBpcyBmbGFreSBjcmFzaGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvaW5zZXJ0aW5nL2luc2VydC1saXN0LWR1cmluZy1ub2RlLXJlbW92YWwtY3Jhc2gtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWxpc3QtZHVyaW5n
LW5vZGUtcmVtb3ZhbC1jcmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdiODEwMzg5ZjEy
MTAwY2FmMzkyN2QzMjIxNzJhY2RkOTI4NzdjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1saXN0LWR1cmluZy1ub2RlLXJlbW92YWwtY3Jh
c2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK1Rlc3RzIGluc2VydGluZyBsaXN0IGR1cmlu
ZyBub2RlIHJlbW92YWwuIFRoZSB0ZXN0IHBhc3NlcyBpZiBXZWJLaXQgZG9lc24ndCBjcmFzaCBv
ciBoaXQgYW4gYXNzZXJ0aW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNl
cnRpbmcvaW5zZXJ0LWxpc3QtZHVyaW5nLW5vZGUtcmVtb3ZhbC1jcmFzaC5odG1sIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWxpc3QtZHVyaW5nLW5vZGUtcmVtb3ZhbC1j
cmFzaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlYTA5M2ZmMzAyMjc2ODYxMGNhMjA0MDI2NzE1Nzg2ZGVl
NGM1MjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9p
bnNlcnQtbGlzdC1kdXJpbmctbm9kZS1yZW1vdmFsLWNyYXNoLmh0bWwKQEAgLTAsMCArMSwyMyBA
QAorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIERvbU5vZGVFdmVudEhhbmRsZXIoKSB7CisgICAgICAgIGRv
Y3VtZW50LmV4ZWNDb21tYW5kKCJpbnNlcnRPcmRlcmVkTGlzdCIsIGZhbHNlKTsKKyAgICAgICAg
cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkuaW5uZXJIVE1MID0gIjxwPiBUZXN0cyBpbnNlcnRpbmcgbGlzdCBkdXJpbmcgbm9kZSBy
ZW1vdmFsLiBUaGUgdGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXNuJ3QgY3Jhc2ggb3IgaGl0IGFu
IGFzc2VydGlvbi48L3A+IjsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gKCkgPT4geworICAgICAg
ICBURC5hZGRFdmVudExpc3RlbmVyKCJET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudCIsIERvbU5v
ZGVFdmVudEhhbmRsZXIpOworICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgic2VsZWN0QWxs
IiwgZmFsc2UpOworICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuZGVsZXRlRnJvbURvY3Vt
ZW50KCk7CisgICAgfQorPC9zY3JpcHQ+Cis8Ym9keSBjb250ZW50ZWRpdGFibGU9InRydWUiPjx0
YWJsZT48dGQgaWQ9VEQ+PC90ZD48L3RhYmxlPjxsaSBjb250ZW50ZWRpdGFibGU9ImZhbHNlIj48
L2xpPjxkaXY+YTwvZGl2Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>