<?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>166687</bug_id>
          
          <creation_ts>2017-01-04 09:36:37 -0800</creation_ts>
          <short_desc>Assertion hit on redfin.com: ASSERTION FAILED: collection-&gt;length() &gt; 1</short_desc>
          <delta_ts>2017-01-04 13:27:08 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1263784</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-01-04 09:36:37 -0800</bug_when>
    <thetext>Assertion hit on redfin.com: ASSERTION FAILED: collection-&gt;length() &gt; 1

Source/WebCore/bindings/js/JSDOMWindowProperties.cpp(65) : bool WebCore::jsDOMWindowPropertiesGetOwnPropertySlotNamedItemGetter(WebCore::JSDOMWindowProperties *, WebCore::Frame &amp;, JSC::ExecState *, JSC::PropertyName, JSC::PropertySlot &amp;)
1   0x10fa8eead WTFCrash
2   0x11367bdc7 WebCore::jsDOMWindowPropertiesGetOwnPropertySlotNamedItemGetter(WebCore::JSDOMWindowProperties*, WebCore::Frame&amp;, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)
3   0x11367ba46 WebCore::JSDOMWindowProperties::getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)
4   0x10e6ce8ea JSC::JSObject::getNonIndexPropertySlot(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)
5   0x10e6cd236 JSC::JSObject::getPropertySlot(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)
6   0x10e6cce67 JSC::JSValue::getPropertySlot(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;) const
7   0x10e6cccc5 JSC::JSValue::get(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;) const
8   0x10f65027a llint_slow_path_get_by_id
9   0x10f6618d0 llint_entry
10  0x10f65e61e vmEntryToJavaScript
11  0x10f472989 JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*)
12  0x10f42ab34 JSC::Interpreter::execute(JSC::ProgramExecutable*, JSC::ExecState*, JSC::JSObject*)
13  0x10ed1939d JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
14  0x10ed19560 JSC::profiledEvaluate(JSC::ExecState*, JSC::ProfilingReason, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
15  0x114700bcb WebCore::JSMainThreadExecState::profiledEvaluate(JSC::ExecState*, JSC::ProfilingReason, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
16  0x1147009b8 WebCore::ScriptController::evaluateInWorld(WebCore::ScriptSourceCode const&amp;, WebCore::DOMWrapperWorld&amp;, WebCore::ExceptionDetails*)
17  0x114700cad WebCore::ScriptController::evaluate(WebCore::ScriptSourceCode const&amp;, WebCore::ExceptionDetails*)
18  0x114715157 WebCore::ScriptElement::executeClassicScript(WebCore::ScriptSourceCode const&amp;)
19  0x113ebee88 WebCore::LoadableClassicScript::execute(WebCore::ScriptElement&amp;)
20  0x114715c0f WebCore::ScriptElement::executeScriptAndDispatchEvent(WebCore::LoadableScript&amp;)
21  0x114715d66 WebCore::ScriptElement::executePendingScript(WebCore::PendingScript&amp;)
22  0x11472d85a WebCore::ScriptRunner::timerFired()
23  0x1147305fb void std::__1::__invoke_void_return_wrapper&lt;void&gt;::__call&lt;std::__1::__bind&lt;void (WebCore::ScriptRunner::*&amp;)(), WebCore::ScriptRunner*&gt;&amp;&gt;(std::__1::__bind&lt;void (WebCore::ScriptRunner::*&amp;)(), WebCore::ScriptRunner*&gt;&amp;&amp;&amp;)
24  0x1147304e9 std::__1::__function::__func&lt;std::__1::__bind&lt;void (WebCore::ScriptRunner::*&amp;)(), WebCore::ScriptRunner*&gt;, std::__1::allocator&lt;std::__1::__bind&lt;void (WebCore::ScriptRunner::*&amp;)(), WebCore::ScriptRunner*&gt; &gt;, void ()&gt;::operator()()
25  0x11234b02a std::__1::function&lt;void ()&gt;::operator()() const
26  0x11234af49 WebCore::Timer::fired()
27  0x114be5a0a WebCore::ThreadTimers::sharedTimerFiredInternal()
28  0x114be6c31 WebCore::ThreadTimers::setSharedTimer(WebCore::SharedTimer*)::$_0::operator()() const
29  0x114be6bfd void std::__1::__invoke_void_return_wrapper&lt;void&gt;::__call&lt;WebCore::ThreadTimers::setSharedTimer(WebCore::SharedTimer*)::$_0&amp;&gt;(WebCore::ThreadTimers::setSharedTimer(WebCore::SharedTimer*)::$_0&amp;&amp;&amp;)
30  0x114be6ba9 std::__1::__function::__func&lt;WebCore::ThreadTimers::setSharedTimer(WebCore::SharedTimer*)::$_0, std::__1::allocator&lt;WebCore::ThreadTimers::setSharedTimer(WebCore::SharedTimer*)::$_0&gt;, void ()&gt;::operator()()
31  0x11234b02a std::__1::function&lt;void ()&gt;::operator()() const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263785</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-01-04 09:37:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/29865854&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263800</commentid>
    <comment_count>2</comment_count>
      <attachid>298024</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-01-04 10:03:01 -0800</bug_when>
    <thetext>Created attachment 298024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263801</commentid>
    <comment_count>3</comment_count>
      <attachid>298024</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-01-04 10:03:43 -0800</bug_when>
    <thetext>Comment on attachment 298024
Patch

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

&gt; Source/WebCore/dom/Element.cpp:3225
&gt; +    if (isInShadowTree())

Alternatively, we could do this check at the cal sites if you&apos;d prefer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263806</commentid>
    <comment_count>4</comment_count>
      <attachid>298024</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-04 10:10:45 -0800</bug_when>
    <thetext>Comment on attachment 298024
Patch

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

&gt;&gt; Source/WebCore/dom/Element.cpp:3225
&gt;&gt; +    if (isInShadowTree())
&gt; 
&gt; Alternatively, we could do this check at the cal sites if you&apos;d prefer.

I like doing this check as close as possible to the code that actually manipulates the collection so we are more likely to get it right.

But I don’t see isInShadowTree checks in HTMLImageElement::parseAttribute and HTMLObjectElement::updateDocNamedItem (function name should not abbreviate &quot;document&quot;). Should I be worried about those cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263808</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-01-04 10:14:47 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 298024 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=298024&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/Element.cpp:3225
&gt; &gt;&gt; +    if (isInShadowTree())
&gt; &gt; 
&gt; &gt; Alternatively, we could do this check at the cal sites if you&apos;d prefer.
&gt; 
&gt; I like doing this check as close as possible to the code that actually
&gt; manipulates the collection so we are more likely to get it right.
&gt; 
&gt; But I don’t see isInShadowTree checks in HTMLImageElement::parseAttribute
&gt; and HTMLObjectElement::updateDocNamedItem (function name should not
&gt; abbreviate &quot;document&quot;). Should I be worried about those cases?

That&apos;s a good point. I suspect we have the same bug for document named items. I&apos;ll extend the layout test to confirm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263831</commentid>
    <comment_count>6</comment_count>
      <attachid>298031</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-01-04 11:06:13 -0800</bug_when>
    <thetext>Created attachment 298031
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263850</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-01-04 11:49:19 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 298024 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=298024&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/Element.cpp:3225
&gt; &gt;&gt; +    if (isInShadowTree())
&gt; &gt; 
&gt; &gt; Alternatively, we could do this check at the cal sites if you&apos;d prefer.
&gt; 
&gt; I like doing this check as close as possible to the code that actually
&gt; manipulates the collection so we are more likely to get it right.
&gt; 
&gt; But I don’t see isInShadowTree checks in HTMLImageElement::parseAttribute
&gt; and HTMLObjectElement::updateDocNamedItem (function name should not
&gt; abbreviate &quot;document&quot;). Should I be worried about those cases?

The latest iteration covers the other call sites you mentioned and extends layout test coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263860</commentid>
    <comment_count>8</comment_count>
      <attachid>298031</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-04 12:04:23 -0800</bug_when>
    <thetext>Comment on attachment 298031
Patch

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

&gt; Source/WebCore/html/HTMLImageElement.cpp:229
&gt; +            if (m_hadNameBeforeAttributeChanged != willHaveName &amp;&amp; inDocument() &amp;&amp; !isInShadowTree() &amp;&amp; is&lt;HTMLDocument&gt;(document())) {

I assume that we want to sort these checks so that the ones most likely to quickly return false come first, or in some sort of conceptually logical order. How did you decide where to add this new check? Maybe the last one is the only virtual function call and the others are all cheaper than that?

&gt; Source/WebCore/html/HTMLObjectElement.cpp:448
&gt; +    if (isNamedItem != wasNamedItem &amp;&amp; inDocument() &amp;&amp; !isInShadowTree() &amp;&amp; is&lt;HTMLDocument&gt;(document())) {

Same comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263866</commentid>
    <comment_count>9</comment_count>
      <attachid>298040</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-01-04 12:45:53 -0800</bug_when>
    <thetext>Created attachment 298040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263868</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-01-04 12:50:37 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 298031 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=298031&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLImageElement.cpp:229
&gt; &gt; +            if (m_hadNameBeforeAttributeChanged != willHaveName &amp;&amp; inDocument() &amp;&amp; !isInShadowTree() &amp;&amp; is&lt;HTMLDocument&gt;(document())) {
&gt; 
&gt; I assume that we want to sort these checks so that the ones most likely to
&gt; quickly return false come first, or in some sort of conceptually logical
&gt; order. How did you decide where to add this new check? Maybe the last one is
&gt; the only virtual function call and the others are all cheaper than that?

Actually, all 4 checks are cheap (is&lt;HTMLDocument&gt;() does not cause a virtual function call, merely checks a flag). I added he new check after inDocument() because I felt it was logical to first check that the Element is in a document (more general case) but then make sure it is *not* in a shadow tree (more specific case).

isInShadowTree() will be false in most cases so I don&apos;t think there are benefits to make it come first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263874</commentid>
    <comment_count>11</comment_count>
      <attachid>298040</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-04 13:27:02 -0800</bug_when>
    <thetext>Comment on attachment 298040
Patch

Clearing flags on attachment: 298040

Committed r210284: &lt;http://trac.webkit.org/changeset/210284&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263875</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-04 13:27:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298024</attachid>
            <date>2017-01-04 10:03:01 -0800</date>
            <delta_ts>2017-01-04 11:06:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166687-20170104100138.patch</filename>
            <type>text/plain</type>
            <size>7194</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWY3ZmVjYjA2MzdhMDE3
ZDAxYmFkYjI3MDAxNjBmOWMxYjM5NWYyMy4uMjljYTVhNTBmMTJiMzMyZTQ3M2IyZjNkODk3MWYx
NmMxN2YyYzAwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE3LTAxLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXNzZXJ0aW9uIGhpdCBvbiBy
ZWRmaW4uY29tOiBBU1NFUlRJT04gRkFJTEVEOiBjb2xsZWN0aW9uLT5sZW5ndGgoKSA+IDEKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjY4NworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjk4NjU4NTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugd2VyZSBtaXN0YWtlbmx5IGNhbGxpbmcgRG9jdW1l
bnQ6OmFkZFdpbmRvd05hbWVkSXRlbSgpIC8gRG9jdW1lbnQ6OnJlbW92ZVdpbmRvd05hbWVkSXRl
bSgpCisgICAgICAgIGZvciBlbGVtZW50cyBpbiBTaGFkb3cgRE9Ncy4gQXMgYSByZXN1bHQsIHRo
ZSB3aW5kb3dOYW1lZEl0ZW0gRG9jdW1lbnRPcmRlcmVkTWFwIHdvdWxkCisgICAgICAgIGNvbnRh
aW4gZWxlbWVudHMgaW4gc2hhZG93IERPTXMuIFRoaXMgd291bGQgY2F1c2UgdGhlIGFzc2VydGlv
biB0byBiZSBoaXQgaW4gd2luZG93J3MKKyAgICAgICAgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIGJl
Y2F1c2Ugb2YgdGhlIGxlbmd0aCBtaXNtYXRjaCBiZXR3ZWVuIHRoZSB3aW5kb3dOYW1lZEl0ZW0K
KyAgICAgICAgRG9jdW1lbnRPcmRlcmVkTWFwIGFuZCB0aGUgV2luZG93TmFtZUNvbGxlY3Rpb24u
CisKKyAgICAgICAgVGVzdDogZmFzdC9zaGFkb3ctZG9tL3dpbmRvdy1uYW1lZC1wcm9wZXJ0eS5o
dG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50Ojp1cGRhdGVOYW1lRm9yRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
dXBkYXRlSWRGb3JEb2N1bWVudCk6CisKIDIwMTctMDEtMDMgIEFuZHJlYXMgS2xpbmcgIDxha2xp
bmdAYXBwbGUuY29tPgogCiAgICAgICAgIFBsYWNlaG9sZGVyIHN0eWxlIG1lY2hhbmlzbSBsZWFr
cyBDU1NGb250U2VsZWN0b3IgZm9yIGZpcnN0IERvY3VtZW50IHN0eWxlZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAppbmRleCA5Y2Y1MGQzNTkzY2Y5MWM3ZjBhNzE2MmQ2ZTE5NjJjZGZjNDU4NjRlLi40
NzExNTUzZTIzMmZkMDgzOGFiYmQwMGQ5YWQ0NjE2NzZmNDExMjNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCkBAIC0zMjIyLDYgKzMyMjIsOSBAQCB2b2lkIEVsZW1lbnQ6OnVwZGF0ZU5hbWVGb3JE
b2N1bWVudChIVE1MRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmCiB7CiAg
ICAgQVNTRVJUKG9sZE5hbWUgIT0gbmV3TmFtZSk7CiAKKyAgICBpZiAoaXNJblNoYWRvd1RyZWUo
KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKFdpbmRvd05hbWVDb2xsZWN0aW9uOjplbGVt
ZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKCp0aGlzKSkgewogICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGlkID0gV2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZJ
ZEF0dHJpYnV0ZU1hdGNoKCp0aGlzKSA/IGdldElkQXR0cmlidXRlKCkgOiBudWxsQXRvbTsKICAg
ICAgICAgaWYgKCFvbGROYW1lLmlzRW1wdHkoKSAmJiBvbGROYW1lICE9IGlkKQpAQCAtMzI3Miw2
ICszMjc1LDkgQEAgdm9pZCBFbGVtZW50Ojp1cGRhdGVJZEZvckRvY3VtZW50KEhUTUxEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgb2wKICAgICBBU1NFUlQoaW5Eb2N1bWVu
dCgpKTsKICAgICBBU1NFUlQob2xkSWQgIT0gbmV3SWQpOwogCisgICAgaWYgKGlzSW5TaGFkb3dU
cmVlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChXaW5kb3dOYW1lQ29sbGVjdGlvbjo6
ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2goKnRoaXMpKSB7CiAgICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSA9IGNvbmRpdGlvbiA9PSBVcGRhdGVIVE1MRG9jdW1lbnROYW1l
ZEl0ZW1NYXBzT25seUlmRGlmZmVyc0Zyb21OYW1lQXR0cmlidXRlICYmIFdpbmRvd05hbWVDb2xs
ZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKCp0aGlzKSA/IGdldE5h
bWVBdHRyaWJ1dGUoKSA6IG51bGxBdG9tOwogICAgICAgICBpZiAoIW9sZElkLmlzRW1wdHkoKSAm
JiBvbGRJZCAhPSBuYW1lKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE3NzlkYjNhYTBlMjkxNDlhOWI0YzdkNDJjODA2NTZh
MjA5ODQxOWIuLjRiZWUyNmQ1ZWFiY2Y5ZjMwYjEzZmE5ODg4MmFjMDQ1MDk4ZDk0YzEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxNy0wMS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIEFzc2VydGlvbiBoaXQgb24gcmVkZmluLmNvbTogQVNTRVJUSU9OIEZB
SUxFRDogY29sbGVjdGlvbi0+bGVuZ3RoKCkgPiAxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY2ODcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5
ODY1ODU0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS93
aW5kb3ctbmFtZWQtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3NoYWRvdy1kb20vd2luZG93LW5hbWVkLXByb3BlcnR5Lmh0bWw6IEFkZGVkLgorCiAyMDE3LTAx
LTAzICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIEEgZmxvYXRpbmcgZWxlbWVudCB3aXRoaW4gPGxpPiBvdmVybGFwcyB3aXRoIHRoZSBt
YXJrZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS93aW5kb3ctbmFt
ZWQtcHJvcGVydHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3dp
bmRvdy1uYW1lZC1wcm9wZXJ0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBkYmUzNDIyMDFl
MjlmMTY2MDdjMzEyMWUwMjI2YTJiMGM1ODRiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvc2hhZG93LWRvbS93aW5kb3ctbmFtZWQtcHJvcGVydHktZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNiBAQAorCitQQVNTIFdpbmRvdydzIG5hbWVkIHByb3BlcnR5IGdldHRlciBzaG91
bGQgbm90IHJldHVybiBlbGVtZW50cyBpbiBzaGFkb3cgRE9NcyBieSBpZCAKK1BBU1MgV2luZG93
J3MgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRzIGluIHNo
YWRvdyBET01zIGJ5IGlkIChpZCBhdHRyaWJ1dGUgdXBkYXRlKSAKK1BBU1MgV2luZG93J3MgbmFt
ZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRzIGluIHNoYWRvdyBE
T01zIGJ5IG5hbWUgCitQQVNTIFdpbmRvdydzIG5hbWVkIHByb3BlcnR5IGdldHRlciBzaG91bGQg
bm90IHJldHVybiBlbGVtZW50cyBpbiBzaGFkb3cgRE9NcyBieSBuYW1lIChuYW1lIGF0dHJpYnV0
ZSB1cGRhdGUpIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vd2lu
ZG93LW5hbWVkLXByb3BlcnR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vd2lu
ZG93LW5hbWVkLXByb3BlcnR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBiODQ4ZDIxZGVlZjA4YmY5MTY3
YmFmMGQyOGRkYTRjMDRkYzcxZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
c2hhZG93LWRvbS93aW5kb3ctbmFtZWQtcHJvcGVydHkuaHRtbApAQCAtMCwwICsxLDc5IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0nLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPScuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgorPGRpdiBpZD0iY29udGFpbmVyIj48
L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvbnRhaW5lcicpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaGVhZGVyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnaGVhZGVyJyk7CisgICAgdmFyIHNoYWRvd1Jvb3QgPSBoZWFk
ZXIuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsKKyAgICBzaGFkb3dSb290LmlubmVySFRN
TCA9ICc8c3BhbiBpZD0iZm9vIj48L3NwYW4+JzsKKyAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQo
aGVhZGVyKTsKKworICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIp
OworICAgIHNwYW4uaWQgPSAnZm9vJzsKKyAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoc3Bhbik7
CisKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5mb28sIHNwYW4pOworICAgIGFzc2VydF9lcXVh
bHMoc2hhZG93Um9vdC5maXJzdENoaWxkLmlkLCAnZm9vJyk7CisgICAgc2hhZG93Um9vdC5yZW1v
dmVDaGlsZChzaGFkb3dSb290LmZpcnN0Q2hpbGQpOworICAgIGFzc2VydF9lcXVhbHMod2luZG93
LmZvbywgc3Bhbik7Cit9LCAiV2luZG93J3MgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBu
b3QgcmV0dXJuIGVsZW1lbnRzIGluIHNoYWRvdyBET01zIGJ5IGlkIik7CisKK3Rlc3QoZnVuY3Rp
b24gKCkgeworICAgIHZhciBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoZWFkZXIn
KTsKKyAgICB2YXIgc2hhZG93Um9vdCA9IGhlYWRlci5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVu
J30pOworICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzcGFuPjwvc3Bhbj4nOworICAgIGNv
bnRhaW5lci5hcHBlbmRDaGlsZChoZWFkZXIpOworCisgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgc3Bhbi5pZCA9ICdmb28yJzsKKyAgICBjb250YWlu
ZXIuYXBwZW5kQ2hpbGQoc3Bhbik7CisKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5mb28yLCBz
cGFuKTsKKyAgICBzaGFkb3dSb290LmZpcnN0Q2hpbGQuaWQgPSAnZm9vMic7CisgICAgYXNzZXJ0
X2VxdWFscyh3aW5kb3cuZm9vMiwgc3Bhbik7CisKKyAgICBzaGFkb3dSb290LmZpcnN0Q2hpbGQu
aWQgPSAnb3RoZXInOworICAgIGFzc2VydF9lcXVhbHMod2luZG93LmZvbzIsIHNwYW4pOworfSwg
IldpbmRvdydzIG5hbWVkIHByb3BlcnR5IGdldHRlciBzaG91bGQgbm90IHJldHVybiBlbGVtZW50
cyBpbiBzaGFkb3cgRE9NcyBieSBpZCAoaWQgYXR0cmlidXRlIHVwZGF0ZSkiKTsKKwordGVzdChm
dW5jdGlvbiAoKSB7CisgICAgdmFyIGhlYWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2hl
YWRlcicpOworICAgIHZhciBzaGFkb3dSb290ID0gaGVhZGVyLmF0dGFjaFNoYWRvdyh7bW9kZTog
J29wZW4nfSk7CisgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGZvcm0gbmFtZT0iYmFyIj48
L2Zvcm0+JzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGhlYWRlcik7CisKKyAgICB2
YXIgZm9ybSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZvcm0iKTsKKyAgICBmb3JtLnNldEF0
dHJpYnV0ZSgnbmFtZScsICdiYXInKTsKKyAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZm9ybSk7
CisKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5iYXIsIGZvcm0pOworICAgIGFzc2VydF9lcXVh
bHMoc2hhZG93Um9vdC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgnbmFtZScpLCAnYmFyJyk7Cisg
ICAgc2hhZG93Um9vdC5yZW1vdmVDaGlsZChzaGFkb3dSb290LmZpcnN0Q2hpbGQpOworICAgIGFz
c2VydF9lcXVhbHMod2luZG93LmJhciwgZm9ybSk7Cit9LCAiV2luZG93J3MgbmFtZWQgcHJvcGVy
dHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRzIGluIHNoYWRvdyBET01zIGJ5IG5h
bWUiKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGhlYWRlciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2hlYWRlcicpOworICAgIHZhciBzaGFkb3dSb290ID0gaGVhZGVyLmF0dGFj
aFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7CisgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGZv
cm0+PC9mb3JtPic7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChoZWFkZXIpOworCisg
ICAgdmFyIGZvcm0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmb3JtIik7CisgICAgZm9ybS5z
ZXRBdHRyaWJ1dGUoJ25hbWUnLCAnYmFyMicpOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChm
b3JtKTsKKworICAgIGFzc2VydF9lcXVhbHMod2luZG93LmJhcjIsIGZvcm0pOworICAgIHNoYWRv
d1Jvb3QuZmlyc3RDaGlsZC5uYW1lID0gJ2JhcjInOworICAgIGFzc2VydF9lcXVhbHMod2luZG93
LmJhcjIsIGZvcm0pOworCisgICAgc2hhZG93Um9vdC5maXJzdENoaWxkLm5hbWUgPSAnb3RoZXIn
OworICAgIGFzc2VydF9lcXVhbHMod2luZG93LmJhcjIsIGZvcm0pOworfSwgIldpbmRvdydzIG5h
bWVkIHByb3BlcnR5IGdldHRlciBzaG91bGQgbm90IHJldHVybiBlbGVtZW50cyBpbiBzaGFkb3cg
RE9NcyBieSBuYW1lIChuYW1lIGF0dHJpYnV0ZSB1cGRhdGUpIik7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298031</attachid>
            <date>2017-01-04 11:06:13 -0800</date>
            <delta_ts>2017-01-04 12:45:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166687-20170104110446.patch</filename>
            <type>text/plain</type>
            <size>15150</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWY3ZmVjYjA2MzdhMDE3
ZDAxYmFkYjI3MDAxNjBmOWMxYjM5NWYyMy4uN2JmZDEwZWM1N2Q4YmZkNzFmZjIwYzFkNDc4MWE3
YmYxZDcyZmYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTAxLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXNzZXJ0aW9uIGhpdCBvbiBy
ZWRmaW4uY29tOiBBU1NFUlRJT04gRkFJTEVEOiBjb2xsZWN0aW9uLT5sZW5ndGgoKSA+IDEKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjY4NworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjk4NjU4NTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugd2VyZSBtaXN0YWtlbmx5IGNhbGxpbmcgRG9jdW1l
bnQ6OmFkZFdpbmRvd05hbWVkSXRlbSgpIC8gRG9jdW1lbnQ6OnJlbW92ZVdpbmRvd05hbWVkSXRl
bSgpCisgICAgICAgIGZvciBlbGVtZW50cyBpbiBTaGFkb3cgRE9Ncy4gQXMgYSByZXN1bHQsIHRo
ZSB3aW5kb3dOYW1lZEl0ZW0gRG9jdW1lbnRPcmRlcmVkTWFwIHdvdWxkCisgICAgICAgIGNvbnRh
aW4gZWxlbWVudHMgaW4gc2hhZG93IERPTXMuIFRoaXMgd291bGQgY2F1c2UgdGhlIGFzc2VydGlv
biB0byBiZSBoaXQgaW4gd2luZG93J3MKKyAgICAgICAgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIGJl
Y2F1c2Ugb2YgdGhlIGxlbmd0aCBtaXNtYXRjaCBiZXR3ZWVuIHRoZSB3aW5kb3dOYW1lZEl0ZW0K
KyAgICAgICAgRG9jdW1lbnRPcmRlcmVkTWFwIGFuZCB0aGUgV2luZG93TmFtZUNvbGxlY3Rpb24u
CisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2hhZG93LWRvbS9kb2N1bWVudC1uYW1lZC1wcm9wZXJ0
eS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NoYWRvdy1kb20vd2luZG93LW5hbWVkLXByb3Bl
cnR5Lmh0bWwKKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OnVwZGF0ZU5hbWVGb3JEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50Ojp1cGRhdGVJZEZvckRvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZURvY05hbWVkSXRlbSk6CisKIDIwMTctMDEt
MDMgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFBsYWNlaG9s
ZGVyIHN0eWxlIG1lY2hhbmlzbSBsZWFrcyBDU1NGb250U2VsZWN0b3IgZm9yIGZpcnN0IERvY3Vt
ZW50IHN0eWxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5Y2Y1MGQzNTkzY2Y5MWM3ZjBh
NzE2MmQ2ZTE5NjJjZGZjNDU4NjRlLi40NzExNTUzZTIzMmZkMDgzOGFiYmQwMGQ5YWQ0NjE2NzZm
NDExMjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zMjIyLDYgKzMyMjIsOSBAQCB2b2lk
IEVsZW1lbnQ6OnVwZGF0ZU5hbWVGb3JEb2N1bWVudChIVE1MRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBBdG9taWNTdHJpbmcmCiB7CiAgICAgQVNTRVJUKG9sZE5hbWUgIT0gbmV3TmFtZSk7CiAK
KyAgICBpZiAoaXNJblNoYWRvd1RyZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKFdp
bmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKCp0
aGlzKSkgewogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gV2luZG93TmFtZUNvbGxl
Y3Rpb246OmVsZW1lbnRNYXRjaGVzSWZJZEF0dHJpYnV0ZU1hdGNoKCp0aGlzKSA/IGdldElkQXR0
cmlidXRlKCkgOiBudWxsQXRvbTsKICAgICAgICAgaWYgKCFvbGROYW1lLmlzRW1wdHkoKSAmJiBv
bGROYW1lICE9IGlkKQpAQCAtMzI3Miw2ICszMjc1LDkgQEAgdm9pZCBFbGVtZW50Ojp1cGRhdGVJ
ZEZvckRvY3VtZW50KEhUTUxEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYg
b2wKICAgICBBU1NFUlQoaW5Eb2N1bWVudCgpKTsKICAgICBBU1NFUlQob2xkSWQgIT0gbmV3SWQp
OwogCisgICAgaWYgKGlzSW5TaGFkb3dUcmVlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlm
IChXaW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2go
KnRoaXMpKSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IGNvbmRpdGlvbiA9
PSBVcGRhdGVIVE1MRG9jdW1lbnROYW1lZEl0ZW1NYXBzT25seUlmRGlmZmVyc0Zyb21OYW1lQXR0
cmlidXRlICYmIFdpbmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJp
YnV0ZU1hdGNoKCp0aGlzKSA/IGdldE5hbWVBdHRyaWJ1dGUoKSA6IG51bGxBdG9tOwogICAgICAg
ICBpZiAoIW9sZElkLmlzRW1wdHkoKSAmJiBvbGRJZCAhPSBuYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggOTZlZTNiMmM0MmEyMTkyNjJlM2I2OTIxZjk2
NTFkMzM0Y2U2NmJiZC4uNGY0OWVmMTQxZTk2ODlmMTkxMzVhYmY5Nzk1YmMyMmEwYzExMmFlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0yMjYsNyArMjI2
LDcgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHIKICAgICB9IGVsc2UgewogICAgICAgICBpZiAo
bmFtZSA9PSBuYW1lQXR0cikgewogICAgICAgICAgICAgYm9vbCB3aWxsSGF2ZU5hbWUgPSAhdmFs
dWUuaXNOdWxsKCk7Ci0gICAgICAgICAgICBpZiAobV9oYWROYW1lQmVmb3JlQXR0cmlidXRlQ2hh
bmdlZCAhPSB3aWxsSGF2ZU5hbWUgJiYgaW5Eb2N1bWVudCgpICYmIGlzPEhUTUxEb2N1bWVudD4o
ZG9jdW1lbnQoKSkpIHsKKyAgICAgICAgICAgIGlmIChtX2hhZE5hbWVCZWZvcmVBdHRyaWJ1dGVD
aGFuZ2VkICE9IHdpbGxIYXZlTmFtZSAmJiBpbkRvY3VtZW50KCkgJiYgIWlzSW5TaGFkb3dUcmVl
KCkgJiYgaXM8SFRNTERvY3VtZW50Pihkb2N1bWVudCgpKSkgewogICAgICAgICAgICAgICAgIEhU
TUxEb2N1bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxIVE1MRG9jdW1lbnQ+KHRoaXMtPmRvY3Vt
ZW50KCkpOwogICAgICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBnZXRJZEF0
dHJpYnV0ZSgpOwogICAgICAgICAgICAgICAgIGlmICghaWQuaXNFbXB0eSgpICYmIGlkICE9IGdl
dE5hbWVBdHRyaWJ1dGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50
LmNwcAppbmRleCBiZGU2YWUyMzVmZDJkNDQ3OWRhZmI2ODk0MGY3MTliMDJjMzQ4Y2YzLi44OTBh
YTZhZThjOTdmNTFkODFlYzc2Yzg3NjhiN2MzNjAzNTJhYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgSFRNTE9i
amVjdEVsZW1lbnQ6OnVwZGF0ZURvY05hbWVkSXRlbSgpCiAgICAgICAgICAgICBpc05hbWVkSXRl
bSA9IGZhbHNlOwogICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOwogICAgIH0K
LSAgICBpZiAoaXNOYW1lZEl0ZW0gIT0gd2FzTmFtZWRJdGVtICYmIGluRG9jdW1lbnQoKSAmJiBp
czxIVE1MRG9jdW1lbnQ+KGRvY3VtZW50KCkpKSB7CisgICAgaWYgKGlzTmFtZWRJdGVtICE9IHdh
c05hbWVkSXRlbSAmJiBpbkRvY3VtZW50KCkgJiYgIWlzSW5TaGFkb3dUcmVlKCkgJiYgaXM8SFRN
TERvY3VtZW50Pihkb2N1bWVudCgpKSkgewogICAgICAgICBIVE1MRG9jdW1lbnQmIGRvY3VtZW50
ID0gZG93bmNhc3Q8SFRNTERvY3VtZW50Pih0aGlzLT5kb2N1bWVudCgpKTsKIAogICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGlkID0gZ2V0SWRBdHRyaWJ1dGUoKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNzc5ZGIz
YWEwZTI5MTQ5YTliNGM3ZDQyYzgwNjU2YTIwOTg0MTliLi4yOWUwYTE0NDRmZTg5NzAyMDU1YTVk
ZWQxOTEzYzY0ZWI2OGJlNTY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDEtMDQgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBc3NlcnRpb24gaGl0IG9u
IHJlZGZpbi5jb206IEFTU0VSVElPTiBGQUlMRUQ6IGNvbGxlY3Rpb24tPmxlbmd0aCgpID4gMQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2Njg3Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTg2NTg1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAg
ICAgICAgKiBmYXN0L3NoYWRvdy1kb20vZG9jdW1lbnQtbmFtZWQtcHJvcGVydHktZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vZG9jdW1lbnQtbmFtZWQtcHJv
cGVydHkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL3dpbmRvdy1uYW1l
ZC1wcm9wZXJ0eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhZG93LWRv
bS93aW5kb3ctbmFtZWQtcHJvcGVydHkuaHRtbDogQWRkZWQuCisKIDIwMTctMDEtMDMgIENhcmxv
cyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgQSBm
bG9hdGluZyBlbGVtZW50IHdpdGhpbiA8bGk+IG92ZXJsYXBzIHdpdGggdGhlIG1hcmtlcgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2RvY3VtZW50LW5hbWVkLXByb3Bl
cnR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9kb2N1bWVudC1u
YW1lZC1wcm9wZXJ0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzljMDRiNzBiMTAyYzFlYWI4
NTgzNjdmM2RjY2M5ODJlZDdiOTAzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc2hhZG93LWRvbS9kb2N1bWVudC1uYW1lZC1wcm9wZXJ0eS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMiBAQAorCisKKworCisKK1BBU1MgRG9jdW1lbnQncyBuYW1lZCBwcm9wZXJ0eSBnZXR0
ZXIgc2hvdWxkIG5vdCByZXR1cm4gZWxlbWVudHMgaW4gc2hhZG93IERPTXMgYnkgaWQgCitQQVNT
IERvY3VtZW50J3MgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1l
bnRzIGluIHNoYWRvdyBET01zIGJ5IGlkIChpZCBhdHRyaWJ1dGUgdXBkYXRlKSAKK1BBU1MgRG9j
dW1lbnQncyBuYW1lZCBwcm9wZXJ0eSBnZXR0ZXIgc2hvdWxkIG5vdCByZXR1cm4gZWxlbWVudHMg
aW4gc2hhZG93IERPTXMgYnkgaWQgKGltYWdlIG5hbWUgY2hhbmdlKSAKK1BBU1MgRG9jdW1lbnQn
cyBuYW1lZCBwcm9wZXJ0eSBnZXR0ZXIgc2hvdWxkIG5vdCByZXR1cm4gZWxlbWVudHMgaW4gc2hh
ZG93IERPTXMgYnkgaWQgKG9iamVjdCBjaGlsZHJlbiBjaGFuZ2UpIAorUEFTUyBEb2N1bWVudCdz
IG5hbWVkIHByb3BlcnR5IGdldHRlciBzaG91bGQgbm90IHJldHVybiBlbGVtZW50cyBpbiBzaGFk
b3cgRE9NcyBieSBuYW1lIAorUEFTUyBEb2N1bWVudCdzIG5hbWVkIHByb3BlcnR5IGdldHRlciBz
aG91bGQgbm90IHJldHVybiBlbGVtZW50cyBpbiBzaGFkb3cgRE9NcyBieSBuYW1lIChuYW1lIGF0
dHJpYnV0ZSB1cGRhdGUpIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1k
b20vZG9jdW1lbnQtbmFtZWQtcHJvcGVydHkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93
LWRvbS9kb2N1bWVudC1uYW1lZC1wcm9wZXJ0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwM2UwMTc2YmJj
MTQ2NzllN2RmMTEyNWNlMzgxNTQyZTIwYWFhZWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3NoYWRvdy1kb20vZG9jdW1lbnQtbmFtZWQtcHJvcGVydHkuaHRtbApAQCAtMCww
ICsxLDEyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0n
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz48L3NjcmlwdD4KKzxkaXYgaWQ9
ImNvbnRhaW5lciI+PC9kaXY+Cis8c2NyaXB0PgordmFyIGNvbnRhaW5lciA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb250YWluZXInKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFy
IGhlYWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2hlYWRlcicpOworICAgIHZhciBzaGFk
b3dSb290ID0gaGVhZGVyLmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7CisgICAgc2hhZG93
Um9vdC5pbm5lckhUTUwgPSAnPGltZyBpZD0iZm9vIiBuYW1lPSJ0ZXN0MiI+PC9pbWc+JzsKKyAg
ICBjb250YWluZXIuYXBwZW5kQ2hpbGQoaGVhZGVyKTsKKworICAgIHZhciBpbWcgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBpbWcuaWQgPSAnZm9vJzsKKyAgICBpbWcubmFt
ZSA9ICd0ZXN0MScKKyAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoaW1nKTsKKworICAgIGFzc2Vy
dF9lcXVhbHMoZG9jdW1lbnQuZm9vLCBpbWcpOworICAgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9v
dC5maXJzdENoaWxkLmlkLCAnZm9vJyk7CisgICAgc2hhZG93Um9vdC5yZW1vdmVDaGlsZChzaGFk
b3dSb290LmZpcnN0Q2hpbGQpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuZm9vLCBpbWcp
OworfSwgIkRvY3VtZW50J3MgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJu
IGVsZW1lbnRzIGluIHNoYWRvdyBET01zIGJ5IGlkIik7CisKK3Rlc3QoZnVuY3Rpb24gKCkgewor
ICAgIHZhciBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoZWFkZXInKTsKKyAgICB2
YXIgc2hhZG93Um9vdCA9IGhlYWRlci5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVuJ30pOworICAg
IHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxpbWcgbmFtZT0idGVzdDIiPjwvaW1nPic7CisgICAg
Y29udGFpbmVyLmFwcGVuZENoaWxkKGhlYWRlcik7CisKKyAgICB2YXIgaW1nID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgaW1nLmlkID0gJ2ZvbzInOworICAgIGltZy5zZXRB
dHRyaWJ1dGUoJ25hbWUnLCAndGVzdDEnKTsKKyAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoaW1n
KTsKKworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuZm9vMiwgaW1nKTsKKyAgICBzaGFkb3dS
b290LmZpcnN0Q2hpbGQuaWQgPSAnZm9vMic7CisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5m
b28yLCBpbWcpOworCisgICAgc2hhZG93Um9vdC5maXJzdENoaWxkLmlkID0gJ290aGVyJzsKKyAg
ICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmZvbzIsIGltZyk7Cit9LCAiRG9jdW1lbnQncyBuYW1l
ZCBwcm9wZXJ0eSBnZXR0ZXIgc2hvdWxkIG5vdCByZXR1cm4gZWxlbWVudHMgaW4gc2hhZG93IERP
TXMgYnkgaWQgKGlkIGF0dHJpYnV0ZSB1cGRhdGUpIik7CisKK3Rlc3QoZnVuY3Rpb24gKCkgewor
ICAgIHZhciBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoZWFkZXInKTsKKyAgICB2
YXIgc2hhZG93Um9vdCA9IGhlYWRlci5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVuJ30pOworICAg
IHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxpbWc+PC9pbWc+JzsKKyAgICBjb250YWluZXIuYXBw
ZW5kQ2hpbGQoaGVhZGVyKTsKKworICAgIHZhciBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpbWciKTsKKyAgICBpbWcuaWQgPSAnZm9vMyc7CisgICAgaW1nLnNldEF0dHJpYnV0ZSgnbmFt
ZScsICd0ZXN0MScpOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChpbWcpOworCisgICAgYXNz
ZXJ0X2VxdWFscyhkb2N1bWVudC5mb28zLCBpbWcpOworICAgIHNoYWRvd1Jvb3QuZmlyc3RDaGls
ZC5pZCA9ICdmb28zJzsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmZvbzMsIGltZyk7Cisg
ICAgc2hhZG93Um9vdC5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgnbmFtZScsICd0ZXN0MicpOwor
ICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuZm9vMywgaW1nKTsKKworICAgIHNoYWRvd1Jvb3Qu
Zmlyc3RDaGlsZC5yZW1vdmVBdHRyaWJ1dGUoJ25hbWUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRv
Y3VtZW50LmZvbzMsIGltZyk7Cit9LCAiRG9jdW1lbnQncyBuYW1lZCBwcm9wZXJ0eSBnZXR0ZXIg
c2hvdWxkIG5vdCByZXR1cm4gZWxlbWVudHMgaW4gc2hhZG93IERPTXMgYnkgaWQgKGltYWdlIG5h
bWUgY2hhbmdlKSIpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaGVhZGVyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnaGVhZGVyJyk7CisgICAgdmFyIHNoYWRvd1Jvb3QgPSBoZWFk
ZXIuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsKKyAgICBzaGFkb3dSb290LmlubmVySFRN
TCA9ICc8b2JqZWN0IGlkPSJmb280Ij50ZXh0PC9vYmplY3Q+JzsKKyAgICBjb250YWluZXIuYXBw
ZW5kQ2hpbGQoaGVhZGVyKTsKKworICAgIHZhciBvYmplY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJvYmplY3QiKTsKKyAgICBvYmplY3QuaWQgPSAnZm9vNCc7CisgICAgY29udGFpbmVyLmFw
cGVuZENoaWxkKG9iamVjdCk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmZvbzQsIG9i
amVjdCk7CisgICAgYXNzZXJ0X2VxdWFscyhzaGFkb3dSb290LmZpcnN0Q2hpbGQuZmlyc3RDaGls
ZC5kYXRhLCAidGV4dCIpOworICAgIHNoYWRvd1Jvb3QuZmlyc3RDaGlsZC5yZW1vdmVDaGlsZChz
aGFkb3dSb290LmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCk7CisgICAgYXNzZXJ0X2VxdWFscyhkb2N1
bWVudC5mb280LCBvYmplY3QpOworICAgIHNoYWRvd1Jvb3QuZmlyc3RDaGlsZC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1l
bnQuZm9vNCwgb2JqZWN0KTsKK30sICJEb2N1bWVudCdzIG5hbWVkIHByb3BlcnR5IGdldHRlciBz
aG91bGQgbm90IHJldHVybiBlbGVtZW50cyBpbiBzaGFkb3cgRE9NcyBieSBpZCAob2JqZWN0IGNo
aWxkcmVuIGNoYW5nZSkiKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGhlYWRlciA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2hlYWRlcicpOworICAgIHZhciBzaGFkb3dSb290ID0g
aGVhZGVyLmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7CisgICAgc2hhZG93Um9vdC5pbm5l
ckhUTUwgPSAnPGltZyBuYW1lPSJiYXIiPjwvaW1nPic7CisgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChoZWFkZXIpOworCisgICAgdmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImltZyIpOworICAgIGltZy5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAnYmFyJyk7CisgICAgY29udGFp
bmVyLmFwcGVuZENoaWxkKGltZyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmJhciwg
aW1nKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3QuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1
dGUoJ25hbWUnKSwgJ2JhcicpOworICAgIHNoYWRvd1Jvb3QucmVtb3ZlQ2hpbGQoc2hhZG93Um9v
dC5maXJzdENoaWxkKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmJhciwgaW1nKTsKK30s
ICJEb2N1bWVudCdzIG5hbWVkIHByb3BlcnR5IGdldHRlciBzaG91bGQgbm90IHJldHVybiBlbGVt
ZW50cyBpbiBzaGFkb3cgRE9NcyBieSBuYW1lIik7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAg
IHZhciBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoZWFkZXInKTsKKyAgICB2YXIg
c2hhZG93Um9vdCA9IGhlYWRlci5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVuJ30pOworICAgIHNo
YWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxpbWc+PC9pbWc+JzsKKyAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGhlYWRlcik7CisKKyAgICB2YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaW1nIik7CisgICAgaW1nLnNldEF0dHJpYnV0ZSgnbmFtZScsICdiYXIyJyk7CisgICAgY29u
dGFpbmVyLmFwcGVuZENoaWxkKGltZyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmJh
cjIsIGltZyk7CisgICAgc2hhZG93Um9vdC5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgnbmFtZScs
ICdiYXIyJyk7CisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5iYXIyLCBpbWcpOworCisgICAg
c2hhZG93Um9vdC5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgnbmFtZScsICdvdGhlcicpOworICAg
IGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYmFyMiwgaW1nKTsKK30sICJEb2N1bWVudCdzIG5hbWVk
IHByb3BlcnR5IGdldHRlciBzaG91bGQgbm90IHJldHVybiBlbGVtZW50cyBpbiBzaGFkb3cgRE9N
cyBieSBuYW1lIChuYW1lIGF0dHJpYnV0ZSB1cGRhdGUpIik7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS93aW5kb3ct
bmFtZWQtcHJvcGVydHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9t
L3dpbmRvdy1uYW1lZC1wcm9wZXJ0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBkYmUzNDIy
MDFlMjlmMTY2MDdjMzEyMWUwMjI2YTJiMGM1ODRiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS93aW5kb3ctbmFtZWQtcHJvcGVydHktZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIFdpbmRvdydzIG5hbWVkIHByb3BlcnR5IGdldHRlciBz
aG91bGQgbm90IHJldHVybiBlbGVtZW50cyBpbiBzaGFkb3cgRE9NcyBieSBpZCAKK1BBU1MgV2lu
ZG93J3MgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRzIGlu
IHNoYWRvdyBET01zIGJ5IGlkIChpZCBhdHRyaWJ1dGUgdXBkYXRlKSAKK1BBU1MgV2luZG93J3Mg
bmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRzIGluIHNoYWRv
dyBET01zIGJ5IG5hbWUgCitQQVNTIFdpbmRvdydzIG5hbWVkIHByb3BlcnR5IGdldHRlciBzaG91
bGQgbm90IHJldHVybiBlbGVtZW50cyBpbiBzaGFkb3cgRE9NcyBieSBuYW1lIChuYW1lIGF0dHJp
YnV0ZSB1cGRhdGUpIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20v
d2luZG93LW5hbWVkLXByb3BlcnR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20v
d2luZG93LW5hbWVkLXByb3BlcnR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjMxZjk5M2M0ZmYyZDk5MTEx
NmJiNTcwYWVkN2ZmZTJkYmNkMGUzOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc2hhZG93LWRvbS93aW5kb3ctbmFtZWQtcHJvcGVydHkuaHRtbApAQCAtMCwwICsxLDc5IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0nLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPScuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgorPGRpdiBpZD0iY29udGFpbmVy
Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnRhaW5lcicpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaGVhZGVyID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaGVhZGVyJyk7CisgICAgdmFyIHNoYWRvd1Jvb3QgPSBo
ZWFkZXIuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsKKyAgICBzaGFkb3dSb290LmlubmVy
SFRNTCA9ICc8c3BhbiBpZD0iZm9vIj48L3NwYW4+JzsKKyAgICBjb250YWluZXIuYXBwZW5kQ2hp
bGQoaGVhZGVyKTsKKworICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOworICAgIHNwYW4uaWQgPSAnZm9vJzsKKyAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoc3Bh
bik7CisKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5mb28sIHNwYW4pOworICAgIGFzc2VydF9l
cXVhbHMoc2hhZG93Um9vdC5maXJzdENoaWxkLmlkLCAnZm9vJyk7CisgICAgc2hhZG93Um9vdC5y
ZW1vdmVDaGlsZChzaGFkb3dSb290LmZpcnN0Q2hpbGQpOworICAgIGFzc2VydF9lcXVhbHMod2lu
ZG93LmZvbywgc3Bhbik7Cit9LCAiV2luZG93J3MgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3Vs
ZCBub3QgcmV0dXJuIGVsZW1lbnRzIGluIHNoYWRvdyBET01zIGJ5IGlkIik7CisKK3Rlc3QoZnVu
Y3Rpb24gKCkgeworICAgIHZhciBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoZWFk
ZXInKTsKKyAgICB2YXIgc2hhZG93Um9vdCA9IGhlYWRlci5hdHRhY2hTaGFkb3coe21vZGU6ICdv
cGVuJ30pOworICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzcGFuPjwvc3Bhbj4nOworICAg
IGNvbnRhaW5lci5hcHBlbmRDaGlsZChoZWFkZXIpOworCisgICAgdmFyIHNwYW4gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgc3Bhbi5pZCA9ICdmb28yJzsKKyAgICBjb250
YWluZXIuYXBwZW5kQ2hpbGQoc3Bhbik7CisKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5mb28y
LCBzcGFuKTsKKyAgICBzaGFkb3dSb290LmZpcnN0Q2hpbGQuaWQgPSAnZm9vMic7CisgICAgYXNz
ZXJ0X2VxdWFscyh3aW5kb3cuZm9vMiwgc3Bhbik7CisKKyAgICBzaGFkb3dSb290LmZpcnN0Q2hp
bGQuaWQgPSAnb3RoZXInOworICAgIGFzc2VydF9lcXVhbHMod2luZG93LmZvbzIsIHNwYW4pOwor
fSwgIldpbmRvdydzIG5hbWVkIHByb3BlcnR5IGdldHRlciBzaG91bGQgbm90IHJldHVybiBlbGVt
ZW50cyBpbiBzaGFkb3cgRE9NcyBieSBpZCAoaWQgYXR0cmlidXRlIHVwZGF0ZSkiKTsKKwordGVz
dChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGhlYWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2hlYWRlcicpOworICAgIHZhciBzaGFkb3dSb290ID0gaGVhZGVyLmF0dGFjaFNoYWRvdyh7bW9k
ZTogJ29wZW4nfSk7CisgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGZvcm0gbmFtZT0iYmFy
Ij48L2Zvcm0+JzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGhlYWRlcik7CisKKyAg
ICB2YXIgZm9ybSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZvcm0iKTsKKyAgICBmb3JtLnNl
dEF0dHJpYnV0ZSgnbmFtZScsICdiYXInKTsKKyAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZm9y
bSk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5iYXIsIGZvcm0pOworICAgIGFzc2VydF9l
cXVhbHMoc2hhZG93Um9vdC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgnbmFtZScpLCAnYmFyJyk7
CisgICAgc2hhZG93Um9vdC5yZW1vdmVDaGlsZChzaGFkb3dSb290LmZpcnN0Q2hpbGQpOworICAg
IGFzc2VydF9lcXVhbHMod2luZG93LmJhciwgZm9ybSk7Cit9LCAiV2luZG93J3MgbmFtZWQgcHJv
cGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRzIGluIHNoYWRvdyBET01zIGJ5
IG5hbWUiKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGhlYWRlciA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2hlYWRlcicpOworICAgIHZhciBzaGFkb3dSb290ID0gaGVhZGVyLmF0
dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7CisgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAn
PGZvcm0+PC9mb3JtPic7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChoZWFkZXIpOwor
CisgICAgdmFyIGZvcm0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmb3JtIik7CisgICAgZm9y
bS5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAnYmFyMicpOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGls
ZChmb3JtKTsKKworICAgIGFzc2VydF9lcXVhbHMod2luZG93LmJhcjIsIGZvcm0pOworICAgIHNo
YWRvd1Jvb3QuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAnYmFyMicpOworICAgIGFz
c2VydF9lcXVhbHMod2luZG93LmJhcjIsIGZvcm0pOworCisgICAgc2hhZG93Um9vdC5maXJzdENo
aWxkLnNldEF0dHJpYnV0ZSgnbmFtZScsICdvdGhlcicpOworICAgIGFzc2VydF9lcXVhbHMod2lu
ZG93LmJhcjIsIGZvcm0pOworfSwgIldpbmRvdydzIG5hbWVkIHByb3BlcnR5IGdldHRlciBzaG91
bGQgbm90IHJldHVybiBlbGVtZW50cyBpbiBzaGFkb3cgRE9NcyBieSBuYW1lIChuYW1lIGF0dHJp
YnV0ZSB1cGRhdGUpIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298040</attachid>
            <date>2017-01-04 12:45:53 -0800</date>
            <delta_ts>2017-01-04 13:27:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166687-20170104124426.patch</filename>
            <type>text/plain</type>
            <size>20943</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWY3ZmVjYjA2MzdhMDE3
ZDAxYmFkYjI3MDAxNjBmOWMxYjM5NWYyMy4uYWY5MzkxYzY1ODdlYTMxYWI3ZTFiMWRlODkyNjk5
NGY0Y2I1NWUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTAxLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXNzZXJ0aW9uIGhpdCBvbiBy
ZWRmaW4uY29tOiBBU1NFUlRJT04gRkFJTEVEOiBjb2xsZWN0aW9uLT5sZW5ndGgoKSA+IDEKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjY4NworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjk4NjU4NTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgV2Ugd2VyZSBtaXN0YWtlbmx5IGNhbGxpbmcgRG9jdW1lbnQ6
OmFkZFdpbmRvd05hbWVkSXRlbSgpIC8gRG9jdW1lbnQ6OnJlbW92ZVdpbmRvd05hbWVkSXRlbSgp
CisgICAgICAgIGZvciBlbGVtZW50cyBpbiBTaGFkb3cgRE9Ncy4gQXMgYSByZXN1bHQsIHRoZSB3
aW5kb3dOYW1lZEl0ZW0gRG9jdW1lbnRPcmRlcmVkTWFwIHdvdWxkCisgICAgICAgIGNvbnRhaW4g
ZWxlbWVudHMgaW4gc2hhZG93IERPTXMuIFRoaXMgd291bGQgY2F1c2UgdGhlIGFzc2VydGlvbiB0
byBiZSBoaXQgaW4gd2luZG93J3MKKyAgICAgICAgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIGJlY2F1
c2Ugb2YgdGhlIGxlbmd0aCBtaXNtYXRjaCBiZXR3ZWVuIHRoZSB3aW5kb3dOYW1lZEl0ZW0KKyAg
ICAgICAgRG9jdW1lbnRPcmRlcmVkTWFwIGFuZCB0aGUgV2luZG93TmFtZUNvbGxlY3Rpb24uCisK
KyAgICAgICAgVGVzdHM6IGZhc3Qvc2hhZG93LWRvbS9kb2N1bWVudC1uYW1lZC1wcm9wZXJ0eS5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L3NoYWRvdy1kb20vd2luZG93LW5hbWVkLXByb3BlcnR5
Lmh0bWwKKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnVwZGF0ZU5hbWVGb3JEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
Ojp1cGRhdGVJZEZvckRvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUp
OgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZURvY05hbWVkSXRlbSk6CisKIDIwMTctMDEtMDMg
IEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFBsYWNlaG9sZGVy
IHN0eWxlIG1lY2hhbmlzbSBsZWFrcyBDU1NGb250U2VsZWN0b3IgZm9yIGZpcnN0IERvY3VtZW50
IHN0eWxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5Y2Y1MGQzNTkzY2Y5MWM3ZjBhNzE2
MmQ2ZTE5NjJjZGZjNDU4NjRlLi40NzExNTUzZTIzMmZkMDgzOGFiYmQwMGQ5YWQ0NjE2NzZmNDEx
MjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zMjIyLDYgKzMyMjIsOSBAQCB2b2lkIEVs
ZW1lbnQ6OnVwZGF0ZU5hbWVGb3JEb2N1bWVudChIVE1MRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBBdG9taWNTdHJpbmcmCiB7CiAgICAgQVNTRVJUKG9sZE5hbWUgIT0gbmV3TmFtZSk7CiAKKyAg
ICBpZiAoaXNJblNoYWRvd1RyZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKFdpbmRv
d05hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKCp0aGlz
KSkgewogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gV2luZG93TmFtZUNvbGxlY3Rp
b246OmVsZW1lbnRNYXRjaGVzSWZJZEF0dHJpYnV0ZU1hdGNoKCp0aGlzKSA/IGdldElkQXR0cmli
dXRlKCkgOiBudWxsQXRvbTsKICAgICAgICAgaWYgKCFvbGROYW1lLmlzRW1wdHkoKSAmJiBvbGRO
YW1lICE9IGlkKQpAQCAtMzI3Miw2ICszMjc1LDkgQEAgdm9pZCBFbGVtZW50Ojp1cGRhdGVJZEZv
ckRvY3VtZW50KEhUTUxEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgb2wK
ICAgICBBU1NFUlQoaW5Eb2N1bWVudCgpKTsKICAgICBBU1NFUlQob2xkSWQgIT0gbmV3SWQpOwog
CisgICAgaWYgKGlzSW5TaGFkb3dUcmVlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChX
aW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2goKnRo
aXMpKSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IGNvbmRpdGlvbiA9PSBV
cGRhdGVIVE1MRG9jdW1lbnROYW1lZEl0ZW1NYXBzT25seUlmRGlmZmVyc0Zyb21OYW1lQXR0cmli
dXRlICYmIFdpbmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0
ZU1hdGNoKCp0aGlzKSA/IGdldE5hbWVBdHRyaWJ1dGUoKSA6IG51bGxBdG9tOwogICAgICAgICBp
ZiAoIW9sZElkLmlzRW1wdHkoKSAmJiBvbGRJZCAhPSBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggOTZlZTNiMmM0MmEyMTkyNjJlM2I2OTIxZjk2NTFk
MzM0Y2U2NmJiZC4uNGY0OWVmMTQxZTk2ODlmMTkxMzVhYmY5Nzk1YmMyMmEwYzExMmFlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0yMjYsNyArMjI2LDcg
QEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHIKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobmFt
ZSA9PSBuYW1lQXR0cikgewogICAgICAgICAgICAgYm9vbCB3aWxsSGF2ZU5hbWUgPSAhdmFsdWUu
aXNOdWxsKCk7Ci0gICAgICAgICAgICBpZiAobV9oYWROYW1lQmVmb3JlQXR0cmlidXRlQ2hhbmdl
ZCAhPSB3aWxsSGF2ZU5hbWUgJiYgaW5Eb2N1bWVudCgpICYmIGlzPEhUTUxEb2N1bWVudD4oZG9j
dW1lbnQoKSkpIHsKKyAgICAgICAgICAgIGlmIChtX2hhZE5hbWVCZWZvcmVBdHRyaWJ1dGVDaGFu
Z2VkICE9IHdpbGxIYXZlTmFtZSAmJiBpbkRvY3VtZW50KCkgJiYgIWlzSW5TaGFkb3dUcmVlKCkg
JiYgaXM8SFRNTERvY3VtZW50Pihkb2N1bWVudCgpKSkgewogICAgICAgICAgICAgICAgIEhUTUxE
b2N1bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxIVE1MRG9jdW1lbnQ+KHRoaXMtPmRvY3VtZW50
KCkpOwogICAgICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBnZXRJZEF0dHJp
YnV0ZSgpOwogICAgICAgICAgICAgICAgIGlmICghaWQuaXNFbXB0eSgpICYmIGlkICE9IGdldE5h
bWVBdHRyaWJ1dGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNw
cAppbmRleCBiZGU2YWUyMzVmZDJkNDQ3OWRhZmI2ODk0MGY3MTliMDJjMzQ4Y2YzLi44OTBhYTZh
ZThjOTdmNTFkODFlYzc2Yzg3NjhiN2MzNjAzNTJhYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgSFRNTE9iamVj
dEVsZW1lbnQ6OnVwZGF0ZURvY05hbWVkSXRlbSgpCiAgICAgICAgICAgICBpc05hbWVkSXRlbSA9
IGZhbHNlOwogICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOwogICAgIH0KLSAg
ICBpZiAoaXNOYW1lZEl0ZW0gIT0gd2FzTmFtZWRJdGVtICYmIGluRG9jdW1lbnQoKSAmJiBpczxI
VE1MRG9jdW1lbnQ+KGRvY3VtZW50KCkpKSB7CisgICAgaWYgKGlzTmFtZWRJdGVtICE9IHdhc05h
bWVkSXRlbSAmJiBpbkRvY3VtZW50KCkgJiYgIWlzSW5TaGFkb3dUcmVlKCkgJiYgaXM8SFRNTERv
Y3VtZW50Pihkb2N1bWVudCgpKSkgewogICAgICAgICBIVE1MRG9jdW1lbnQmIGRvY3VtZW50ID0g
ZG93bmNhc3Q8SFRNTERvY3VtZW50Pih0aGlzLT5kb2N1bWVudCgpKTsKIAogICAgICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGlkID0gZ2V0SWRBdHRyaWJ1dGUoKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNzc5ZGIzYWEw
ZTI5MTQ5YTliNGM3ZDQyYzgwNjU2YTIwOTg0MTliLi4yNDBlZDQxY2UwM2Y0YzY3MDFjZjU0NjU5
NGVkMDk3OWMxNTQ2OTdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDEtMDQgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBc3NlcnRpb24gaGl0IG9uIHJl
ZGZpbi5jb206IEFTU0VSVElPTiBGQUlMRUQ6IGNvbGxlY3Rpb24tPmxlbmd0aCgpID4gMQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2Njg3CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8yOTg2NTg1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAg
KiBmYXN0L3NoYWRvdy1kb20vZG9jdW1lbnQtbmFtZWQtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vZG9jdW1lbnQtbmFtZWQtcHJvcGVydHku
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL3dpbmRvdy1uYW1lZC1wcm9w
ZXJ0eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS93aW5k
b3ctbmFtZWQtcHJvcGVydHkuaHRtbDogQWRkZWQuCisKIDIwMTctMDEtMDMgIENhcmxvcyBBbGJl
cnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgQSBmbG9hdGlu
ZyBlbGVtZW50IHdpdGhpbiA8bGk+IG92ZXJsYXBzIHdpdGggdGhlIG1hcmtlcgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2RvY3VtZW50LW5hbWVkLXByb3BlcnR5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9kb2N1bWVudC1uYW1lZC1w
cm9wZXJ0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2YwMjU5NmNhMDc5N2NlZjI5NjE4NjU1
NDJiNmE4OWY5N2RiN2JjMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hh
ZG93LWRvbS9kb2N1bWVudC1uYW1lZC1wcm9wZXJ0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
OCBAQAorCisKKworCisKK1BBU1MgRG9jdW1lbnQncyBuYW1lZCBwcm9wZXJ0eSBnZXR0ZXIgc2hv
dWxkIG5vdCByZXR1cm4gZWxlbWVudHMgaW4gc2hhZG93IERPTXMgYnkgaWQgCitQQVNTIERvY3Vt
ZW50J3MgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRzIGlu
IHNoYWRvdyBET01zIGJ5IGlkIChkdXBsaWNhdGUgaWQpIAorUEFTUyBEb2N1bWVudCdzIG5hbWVk
IHByb3BlcnR5IGdldHRlciBzaG91bGQgbm90IHJldHVybiBlbGVtZW50cyBpbiBzaGFkb3cgRE9N
cyBieSBpZCAoaWQgYXR0cmlidXRlIHVwZGF0ZSkgCitQQVNTIERvY3VtZW50J3MgbmFtZWQgcHJv
cGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRzIGluIHNoYWRvdyBET01zIGJ5
IGlkIChkdXBsaWNhdGUgaWQgYXR0cmlidXRlIHVwZGF0ZSkgCitQQVNTIERvY3VtZW50J3MgbmFt
ZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRzIGluIHNoYWRvdyBE
T01zIGJ5IGlkIChpbWFnZSBuYW1lIGNoYW5nZSkgCitQQVNTIERvY3VtZW50J3MgbmFtZWQgcHJv
cGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRzIGluIHNoYWRvdyBET01zIGJ5
IGlkIChpbWFnZSBuYW1lIGNoYW5nZSB3aXRoIGR1cGxpY2F0ZSBpZCkgCitQQVNTIERvY3VtZW50
J3MgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRzIGluIHNo
YWRvdyBET01zIGJ5IGlkIChvYmplY3QgY2hpbGRyZW4gY2hhbmdlKSAKK1BBU1MgRG9jdW1lbnQn
cyBuYW1lZCBwcm9wZXJ0eSBnZXR0ZXIgc2hvdWxkIG5vdCByZXR1cm4gZWxlbWVudHMgaW4gc2hh
ZG93IERPTXMgYnkgaWQgKG9iamVjdCBjaGlsZHJlbiBjaGFuZ2Ugd2l0aCBkdXBsaWNhdGUgaWQp
IAorUEFTUyBEb2N1bWVudCdzIG5hbWVkIHByb3BlcnR5IGdldHRlciBzaG91bGQgbm90IHJldHVy
biBlbGVtZW50cyBpbiBzaGFkb3cgRE9NcyBieSBuYW1lIAorUEFTUyBEb2N1bWVudCdzIG5hbWVk
IHByb3BlcnR5IGdldHRlciBzaG91bGQgbm90IHJldHVybiBlbGVtZW50cyBpbiBzaGFkb3cgRE9N
cyBieSBuYW1lIChkdXBsaWNhdGUgbmFtZSkgCitQQVNTIERvY3VtZW50J3MgbmFtZWQgcHJvcGVy
dHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRzIGluIHNoYWRvdyBET01zIGJ5IG5h
bWUgKG5hbWUgYXR0cmlidXRlIHVwZGF0ZSkgCitQQVNTIERvY3VtZW50J3MgbmFtZWQgcHJvcGVy
dHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRzIGluIHNoYWRvdyBET01zIGJ5IG5h
bWUgKGR1cGxpY2F0ZSBuYW1lIGF0dHJpYnV0ZSB1cGRhdGUpIAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZG9jdW1lbnQtbmFtZWQtcHJvcGVydHkuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9kb2N1bWVudC1uYW1lZC1wcm9wZXJ0eS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmI1NWI1ZDJmNjY0ZWEyYmNlYzk0MDZiYmRkNzI5Y2IzOGNmYzljYTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZG9jdW1lbnQtbmFtZWQt
cHJvcGVydHkuaHRtbApAQCAtMCwwICsxLDE4NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
Kzxib2R5PgorPHNjcmlwdCBzcmM9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyc+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Jz48L3NjcmlwdD4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+PC9kaXY+Cis8c2NyaXB0PgordmFyIGNv
bnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKTsKKwordGVzdChm
dW5jdGlvbiAoKSB7CisgICAgdmFyIGhlYWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2hl
YWRlcicpOworICAgIHZhciBzaGFkb3dSb290ID0gaGVhZGVyLmF0dGFjaFNoYWRvdyh7bW9kZTog
J29wZW4nfSk7CisgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGltZyBpZD0iZm9vIiBuYW1l
PSJ0ZXN0MiI+PC9pbWc+JzsKKyAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoaGVhZGVyKTsKKwor
ICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuZm9vLCB1bmRlZmluZWQpOworfSwgIkRvY3VtZW50
J3MgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRzIGluIHNo
YWRvdyBET01zIGJ5IGlkIik7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBoZWFkZXIg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoZWFkZXInKTsKKyAgICB2YXIgc2hhZG93Um9vdCA9
IGhlYWRlci5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVuJ30pOworICAgIHNoYWRvd1Jvb3QuaW5u
ZXJIVE1MID0gJzxpbWcgaWQ9ImZvbzEiIG5hbWU9InRlc3QyIj48L2ltZz4nOworICAgIGNvbnRh
aW5lci5hcHBlbmRDaGlsZChoZWFkZXIpOworCisgICAgdmFyIGltZyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImltZyIpOworICAgIGltZy5pZCA9ICdmb28xJzsKKyAgICBpbWcubmFtZSA9ICd0
ZXN0MScKKyAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoaW1nKTsKKworICAgIGFzc2VydF9lcXVh
bHMoZG9jdW1lbnQuZm9vMSwgaW1nKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3QuZmly
c3RDaGlsZC5pZCwgJ2ZvbzEnKTsKKyAgICBzaGFkb3dSb290LnJlbW92ZUNoaWxkKHNoYWRvd1Jv
b3QuZmlyc3RDaGlsZCk7CisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5mb28xLCBpbWcpOwor
fSwgIkRvY3VtZW50J3MgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVs
ZW1lbnRzIGluIHNoYWRvdyBET01zIGJ5IGlkIChkdXBsaWNhdGUgaWQpIik7CisKK3Rlc3QoZnVu
Y3Rpb24gKCkgeworICAgIHZhciBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoZWFk
ZXInKTsKKyAgICB2YXIgc2hhZG93Um9vdCA9IGhlYWRlci5hdHRhY2hTaGFkb3coe21vZGU6ICdv
cGVuJ30pOworICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxpbWcgbmFtZT0idGVzdDIiPjwv
aW1nPic7CisgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGhlYWRlcik7CisKKyAgICBhc3NlcnRf
ZXF1YWxzKGRvY3VtZW50LmZvbzIsIHVuZGVmaW5lZCk7CisgICAgc2hhZG93Um9vdC5maXJzdENo
aWxkLmlkID0gJ2ZvbzInOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuZm9vMiwgdW5kZWZp
bmVkKTsKKworfSwgIkRvY3VtZW50J3MgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3Qg
cmV0dXJuIGVsZW1lbnRzIGluIHNoYWRvdyBET01zIGJ5IGlkIChpZCBhdHRyaWJ1dGUgdXBkYXRl
KSIpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaGVhZGVyID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnaGVhZGVyJyk7CisgICAgdmFyIHNoYWRvd1Jvb3QgPSBoZWFkZXIuYXR0YWNo
U2hhZG93KHttb2RlOiAnb3Blbid9KTsKKyAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8aW1n
IG5hbWU9InRlc3QyIj48L2ltZz4nOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChoZWFkZXIp
OworCisgICAgdmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGlt
Zy5pZCA9ICdmb28zJzsKKyAgICBpbWcuc2V0QXR0cmlidXRlKCduYW1lJywgJ3Rlc3QxJyk7Cisg
ICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGltZyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3Vt
ZW50LmZvbzMsIGltZyk7CisgICAgc2hhZG93Um9vdC5maXJzdENoaWxkLmlkID0gJ2ZvbzMnOwor
ICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuZm9vMywgaW1nKTsKKworICAgIHNoYWRvd1Jvb3Qu
Zmlyc3RDaGlsZC5pZCA9ICdvdGhlcic7CisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5mb28z
LCBpbWcpOworfSwgIkRvY3VtZW50J3MgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3Qg
cmV0dXJuIGVsZW1lbnRzIGluIHNoYWRvdyBET01zIGJ5IGlkIChkdXBsaWNhdGUgaWQgYXR0cmli
dXRlIHVwZGF0ZSkiKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGhlYWRlciA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2hlYWRlcicpOworICAgIHZhciBzaGFkb3dSb290ID0gaGVh
ZGVyLmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7CisgICAgc2hhZG93Um9vdC5pbm5lckhU
TUwgPSAnPGltZz48L2ltZz4nOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChoZWFkZXIpOwor
CisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5mb280LCB1bmRlZmluZWQpOworICAgIHNoYWRv
d1Jvb3QuZmlyc3RDaGlsZC5pZCA9ICdmb280JzsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50
LmZvbzQsIHVuZGVmaW5lZCk7CisgICAgc2hhZG93Um9vdC5maXJzdENoaWxkLnNldEF0dHJpYnV0
ZSgnbmFtZScsICd0ZXN0MycpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuZm9vNCwgdW5k
ZWZpbmVkKTsKKworfSwgIkRvY3VtZW50J3MgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBu
b3QgcmV0dXJuIGVsZW1lbnRzIGluIHNoYWRvdyBET01zIGJ5IGlkIChpbWFnZSBuYW1lIGNoYW5n
ZSkiKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGhlYWRlciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2hlYWRlcicpOworICAgIHZhciBzaGFkb3dSb290ID0gaGVhZGVyLmF0dGFj
aFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7CisgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGlt
Zz48L2ltZz4nOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChoZWFkZXIpOworCisgICAgdmFy
IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGltZy5pZCA9ICdmb281
JzsKKyAgICBpbWcuc2V0QXR0cmlidXRlKCduYW1lJywgJ3Rlc3QxJyk7CisgICAgY29udGFpbmVy
LmFwcGVuZENoaWxkKGltZyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmZvbzUsIGlt
Zyk7CisgICAgc2hhZG93Um9vdC5maXJzdENoaWxkLmlkID0gJ2ZvbzUnOworICAgIGFzc2VydF9l
cXVhbHMoZG9jdW1lbnQuZm9vNSwgaW1nKTsKKyAgICBzaGFkb3dSb290LmZpcnN0Q2hpbGQuc2V0
QXR0cmlidXRlKCduYW1lJywgJ3Rlc3QzJyk7CisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5m
b281LCBpbWcpOworCisgICAgc2hhZG93Um9vdC5maXJzdENoaWxkLnJlbW92ZUF0dHJpYnV0ZSgn
bmFtZScpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuZm9vNSwgaW1nKTsKK30sICJEb2N1
bWVudCdzIG5hbWVkIHByb3BlcnR5IGdldHRlciBzaG91bGQgbm90IHJldHVybiBlbGVtZW50cyBp
biBzaGFkb3cgRE9NcyBieSBpZCAoaW1hZ2UgbmFtZSBjaGFuZ2Ugd2l0aCBkdXBsaWNhdGUgaWQp
Iik7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBoZWFkZXIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdoZWFkZXInKTsKKyAgICB2YXIgc2hhZG93Um9vdCA9IGhlYWRlci5hdHRhY2hT
aGFkb3coe21vZGU6ICdvcGVuJ30pOworICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxvYmpl
Y3QgaWQ9ImZvbzYiPnRleHQ8L29iamVjdD4nOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCho
ZWFkZXIpOworCisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5mb282LCB1bmRlZmluZWQpOwor
ICAgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9vdC5maXJzdENoaWxkLmZpcnN0Q2hpbGQuZGF0YSwg
InRleHQiKTsKKyAgICBzaGFkb3dSb290LmZpcnN0Q2hpbGQucmVtb3ZlQ2hpbGQoc2hhZG93Um9v
dC5maXJzdENoaWxkLmZpcnN0Q2hpbGQpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuZm9v
NiwgdW5kZWZpbmVkKTsKK30sICJEb2N1bWVudCdzIG5hbWVkIHByb3BlcnR5IGdldHRlciBzaG91
bGQgbm90IHJldHVybiBlbGVtZW50cyBpbiBzaGFkb3cgRE9NcyBieSBpZCAob2JqZWN0IGNoaWxk
cmVuIGNoYW5nZSkiKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGhlYWRlciA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2hlYWRlcicpOworICAgIHZhciBzaGFkb3dSb290ID0gaGVh
ZGVyLmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7CisgICAgc2hhZG93Um9vdC5pbm5lckhU
TUwgPSAnPG9iamVjdCBpZD0iZm9vNyI+dGV4dDwvb2JqZWN0Pic7CisgICAgY29udGFpbmVyLmFw
cGVuZENoaWxkKGhlYWRlcik7CisKKyAgICB2YXIgb2JqZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgib2JqZWN0Iik7CisgICAgb2JqZWN0LmlkID0gJ2ZvbzcnOworICAgIGNvbnRhaW5lci5h
cHBlbmRDaGlsZChvYmplY3QpOworCisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5mb283LCBv
YmplY3QpOworICAgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9vdC5maXJzdENoaWxkLmZpcnN0Q2hp
bGQuZGF0YSwgInRleHQiKTsKKyAgICBzaGFkb3dSb290LmZpcnN0Q2hpbGQucmVtb3ZlQ2hpbGQo
c2hhZG93Um9vdC5maXJzdENoaWxkLmZpcnN0Q2hpbGQpOworICAgIGFzc2VydF9lcXVhbHMoZG9j
dW1lbnQuZm9vNywgb2JqZWN0KTsKKyAgICBzaGFkb3dSb290LmZpcnN0Q2hpbGQuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3Vt
ZW50LmZvbzcsIG9iamVjdCk7Cit9LCAiRG9jdW1lbnQncyBuYW1lZCBwcm9wZXJ0eSBnZXR0ZXIg
c2hvdWxkIG5vdCByZXR1cm4gZWxlbWVudHMgaW4gc2hhZG93IERPTXMgYnkgaWQgKG9iamVjdCBj
aGlsZHJlbiBjaGFuZ2Ugd2l0aCBkdXBsaWNhdGUgaWQpIik7CisKK3Rlc3QoZnVuY3Rpb24gKCkg
eworICAgIHZhciBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoZWFkZXInKTsKKyAg
ICB2YXIgc2hhZG93Um9vdCA9IGhlYWRlci5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVuJ30pOwor
ICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxpbWcgbmFtZT0iYmFyIj48L2ltZz4nOworICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaGVhZGVyKTsKKworICAgIGFzc2VydF9lcXVhbHMo
ZG9jdW1lbnQuYmFyLCB1bmRlZmluZWQpOworfSwgIkRvY3VtZW50J3MgbmFtZWQgcHJvcGVydHkg
Z2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRzIGluIHNoYWRvdyBET01zIGJ5IG5hbWUi
KTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGhlYWRlciA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2hlYWRlcicpOworICAgIHZhciBzaGFkb3dSb290ID0gaGVhZGVyLmF0dGFjaFNo
YWRvdyh7bW9kZTogJ29wZW4nfSk7CisgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGltZyBu
YW1lPSJiYXIxIj48L2ltZz4nOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaGVhZGVy
KTsKKworICAgIHZhciBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBp
bWcuc2V0QXR0cmlidXRlKCduYW1lJywgJ2JhcjEnKTsKKyAgICBjb250YWluZXIuYXBwZW5kQ2hp
bGQoaW1nKTsKKworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYmFyMSwgaW1nKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3QuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoJ25hbWUnKSwg
J2JhcjEnKTsKKyAgICBzaGFkb3dSb290LnJlbW92ZUNoaWxkKHNoYWRvd1Jvb3QuZmlyc3RDaGls
ZCk7CisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5iYXIxLCBpbWcpOworfSwgIkRvY3VtZW50
J3MgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRzIGluIHNo
YWRvdyBET01zIGJ5IG5hbWUgKGR1cGxpY2F0ZSBuYW1lKSIpOworCit0ZXN0KGZ1bmN0aW9uICgp
IHsKKyAgICB2YXIgaGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaGVhZGVyJyk7Cisg
ICAgdmFyIHNoYWRvd1Jvb3QgPSBoZWFkZXIuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsK
KyAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8aW1nPjwvaW1nPic7CisgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChoZWFkZXIpOworCisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5i
YXIyLCB1bmRlZmluZWQpOworICAgIHNoYWRvd1Jvb3QuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUo
J25hbWUnLCAnYmFyMicpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYmFyMiwgdW5kZWZp
bmVkKTsKK30sICJEb2N1bWVudCdzIG5hbWVkIHByb3BlcnR5IGdldHRlciBzaG91bGQgbm90IHJl
dHVybiBlbGVtZW50cyBpbiBzaGFkb3cgRE9NcyBieSBuYW1lIChuYW1lIGF0dHJpYnV0ZSB1cGRh
dGUpIik7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBoZWFkZXIgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdoZWFkZXInKTsKKyAgICB2YXIgc2hhZG93Um9vdCA9IGhlYWRlci5hdHRh
Y2hTaGFkb3coe21vZGU6ICdvcGVuJ30pOworICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxp
bWc+PC9pbWc+JzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGhlYWRlcik7CisKKyAg
ICB2YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgaW1nLnNldEF0
dHJpYnV0ZSgnbmFtZScsICdiYXIzJyk7CisgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGltZyk7
CisKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmJhcjMsIGltZyk7CisgICAgc2hhZG93Um9v
dC5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgnbmFtZScsICdiYXIzJyk7CisgICAgYXNzZXJ0X2Vx
dWFscyhkb2N1bWVudC5iYXIzLCBpbWcpOworCisgICAgc2hhZG93Um9vdC5maXJzdENoaWxkLnNl
dEF0dHJpYnV0ZSgnbmFtZScsICdvdGhlcicpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQu
YmFyMywgaW1nKTsKK30sICJEb2N1bWVudCdzIG5hbWVkIHByb3BlcnR5IGdldHRlciBzaG91bGQg
bm90IHJldHVybiBlbGVtZW50cyBpbiBzaGFkb3cgRE9NcyBieSBuYW1lIChkdXBsaWNhdGUgbmFt
ZSBhdHRyaWJ1dGUgdXBkYXRlKSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vd2luZG93LW5hbWVkLXByb3BlcnR5
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS93aW5kb3ctbmFtZWQt
cHJvcGVydHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1NDhhZGMwM2NlZTQ1NjNlMjc0NTBj
MzZhNDZlNGVhNjJhZGM5MmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3No
YWRvdy1kb20vd2luZG93LW5hbWVkLXByb3BlcnR5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEw
IEBACisKK1BBU1MgV2luZG93J3MgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0
dXJuIGVsZW1lbnRzIGluIHNoYWRvdyBET01zIGJ5IGlkIAorUEFTUyBXaW5kb3cncyBuYW1lZCBw
cm9wZXJ0eSBnZXR0ZXIgc2hvdWxkIG5vdCByZXR1cm4gZWxlbWVudHMgaW4gc2hhZG93IERPTXMg
YnkgaWQgKGR1cGxpY2F0ZSBpZCkgCitQQVNTIFdpbmRvdydzIG5hbWVkIHByb3BlcnR5IGdldHRl
ciBzaG91bGQgbm90IHJldHVybiBlbGVtZW50cyBpbiBzaGFkb3cgRE9NcyBieSBpZCAoaWQgYXR0
cmlidXRlIHVwZGF0ZSkgCitQQVNTIFdpbmRvdydzIG5hbWVkIHByb3BlcnR5IGdldHRlciBzaG91
bGQgbm90IHJldHVybiBlbGVtZW50cyBpbiBzaGFkb3cgRE9NcyBieSBpZCAoZHVwbGljYXRlIGlk
IGF0dHJpYnV0ZSB1cGRhdGUpIAorUEFTUyBXaW5kb3cncyBuYW1lZCBwcm9wZXJ0eSBnZXR0ZXIg
c2hvdWxkIG5vdCByZXR1cm4gZWxlbWVudHMgaW4gc2hhZG93IERPTXMgYnkgbmFtZSAKK1BBU1Mg
V2luZG93J3MgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRz
IGluIHNoYWRvdyBET01zIGJ5IG5hbWUgKGR1cGxpY2F0ZSBuYW1lKSAKK1BBU1MgV2luZG93J3Mg
bmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRzIGluIHNoYWRv
dyBET01zIGJ5IG5hbWUgKG5hbWUgYXR0cmlidXRlIHVwZGF0ZSkgCitQQVNTIFdpbmRvdydzIG5h
bWVkIHByb3BlcnR5IGdldHRlciBzaG91bGQgbm90IHJldHVybiBlbGVtZW50cyBpbiBzaGFkb3cg
RE9NcyBieSBuYW1lIChkdXBsaWNhdGUgbmFtZSBhdHRyaWJ1dGUgdXBkYXRlKSAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3dpbmRvdy1uYW1lZC1wcm9wZXJ0eS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3dpbmRvdy1uYW1lZC1wcm9wZXJ0eS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRhZWY5M2QyNjVlNzZkYTJkMzNjNjc1ZmQwNTkxMjc1MjBlZTViODAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vd2luZG93LW5h
bWVkLXByb3BlcnR5Lmh0bWwKQEAgLTAsMCArMSwxMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMn
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyc+PC9zY3JpcHQ+Cis8ZGl2IGlkPSJjb250YWluZXIiPjwvZGl2PgorPHNjcmlwdD4KK3Zh
ciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJyk7CisKK3Rl
c3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdoZWFkZXInKTsKKyAgICB2YXIgc2hhZG93Um9vdCA9IGhlYWRlci5hdHRhY2hTaGFkb3coe21v
ZGU6ICdvcGVuJ30pOworICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzcGFuIGlkPSJmb28i
Pjwvc3Bhbj4nOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChoZWFkZXIpOworCisgICAgYXNz
ZXJ0X2VxdWFscyh3aW5kb3cuZm9vLCB1bmRlZmluZWQpOworfSwgIldpbmRvdydzIG5hbWVkIHBy
b3BlcnR5IGdldHRlciBzaG91bGQgbm90IHJldHVybiBlbGVtZW50cyBpbiBzaGFkb3cgRE9NcyBi
eSBpZCIpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaGVhZGVyID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnaGVhZGVyJyk7CisgICAgdmFyIHNoYWRvd1Jvb3QgPSBoZWFkZXIuYXR0
YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsKKyAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8
c3BhbiBpZD0iZm9vMSI+PC9zcGFuPic7CisgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGhlYWRl
cik7CisKKyAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAg
ICBzcGFuLmlkID0gJ2ZvbzEnOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChzcGFuKTsKKwor
ICAgIGFzc2VydF9lcXVhbHMod2luZG93LmZvbzEsIHNwYW4pOworICAgIGFzc2VydF9lcXVhbHMo
c2hhZG93Um9vdC5maXJzdENoaWxkLmlkLCAnZm9vMScpOworICAgIHNoYWRvd1Jvb3QucmVtb3Zl
Q2hpbGQoc2hhZG93Um9vdC5maXJzdENoaWxkKTsKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5m
b28xLCBzcGFuKTsKK30sICJXaW5kb3cncyBuYW1lZCBwcm9wZXJ0eSBnZXR0ZXIgc2hvdWxkIG5v
dCByZXR1cm4gZWxlbWVudHMgaW4gc2hhZG93IERPTXMgYnkgaWQgKGR1cGxpY2F0ZSBpZCkiKTsK
KwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGhlYWRlciA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2hlYWRlcicpOworICAgIHZhciBzaGFkb3dSb290ID0gaGVhZGVyLmF0dGFjaFNoYWRv
dyh7bW9kZTogJ29wZW4nfSk7CisgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPHNwYW4+PC9z
cGFuPic7CisgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGhlYWRlcik7CisKKyAgICBhc3NlcnRf
ZXF1YWxzKHdpbmRvdy5mb28yLCB1bmRlZmluZWQpOworICAgIHNoYWRvd1Jvb3QuZmlyc3RDaGls
ZC5pZCA9ICdmb28yJzsKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5mb28yLCB1bmRlZmluZWQp
OworfSwgIldpbmRvdydzIG5hbWVkIHByb3BlcnR5IGdldHRlciBzaG91bGQgbm90IHJldHVybiBl
bGVtZW50cyBpbiBzaGFkb3cgRE9NcyBieSBpZCAoaWQgYXR0cmlidXRlIHVwZGF0ZSkiKTsKKwor
dGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGhlYWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2hlYWRlcicpOworICAgIHZhciBzaGFkb3dSb290ID0gaGVhZGVyLmF0dGFjaFNoYWRvdyh7
bW9kZTogJ29wZW4nfSk7CisgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPHNwYW4+PC9zcGFu
Pic7CisgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGhlYWRlcik7CisKKyAgICB2YXIgc3BhbiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBzcGFuLmlkID0gJ2ZvbzMnOwor
ICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChzcGFuKTsKKworICAgIGFzc2VydF9lcXVhbHMod2lu
ZG93LmZvbzMsIHNwYW4pOworICAgIHNoYWRvd1Jvb3QuZmlyc3RDaGlsZC5pZCA9ICdmb28zJzsK
KyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5mb28zLCBzcGFuKTsKKworICAgIHNoYWRvd1Jvb3Qu
Zmlyc3RDaGlsZC5pZCA9ICdvdGhlcic7CisgICAgYXNzZXJ0X2VxdWFscyh3aW5kb3cuZm9vMywg
c3Bhbik7Cit9LCAiV2luZG93J3MgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0
dXJuIGVsZW1lbnRzIGluIHNoYWRvdyBET01zIGJ5IGlkIChkdXBsaWNhdGUgaWQgYXR0cmlidXRl
IHVwZGF0ZSkiKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGhlYWRlciA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2hlYWRlcicpOworICAgIHZhciBzaGFkb3dSb290ID0gaGVhZGVy
LmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7CisgICAgc2hhZG93Um9vdC5pbm5lckhUTUwg
PSAnPGZvcm0gbmFtZT0iYmFyIj48L2Zvcm0+JzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGhlYWRlcik7CisKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5iYXIsIHVuZGVmaW5lZCk7
Cit9LCAiV2luZG93J3MgbmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVs
ZW1lbnRzIGluIHNoYWRvdyBET01zIGJ5IG5hbWUiKTsKKwordGVzdChmdW5jdGlvbiAoKSB7Cisg
ICAgdmFyIGhlYWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2hlYWRlcicpOworICAgIHZh
ciBzaGFkb3dSb290ID0gaGVhZGVyLmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7CisgICAg
c2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGZvcm0gbmFtZT0iYmFyMSI+PC9mb3JtPic7CisgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChoZWFkZXIpOworCisgICAgdmFyIGZvcm0gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJmb3JtIik7CisgICAgZm9ybS5zZXRBdHRyaWJ1dGUoJ25hbWUn
LCAnYmFyMScpOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChmb3JtKTsKKworICAgIGFzc2Vy
dF9lcXVhbHMod2luZG93LmJhcjEsIGZvcm0pOworICAgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9v
dC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgnbmFtZScpLCAnYmFyMScpOworICAgIHNoYWRvd1Jv
b3QucmVtb3ZlQ2hpbGQoc2hhZG93Um9vdC5maXJzdENoaWxkKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHdpbmRvdy5iYXIxLCBmb3JtKTsKK30sICJXaW5kb3cncyBuYW1lZCBwcm9wZXJ0eSBnZXR0ZXIg
c2hvdWxkIG5vdCByZXR1cm4gZWxlbWVudHMgaW4gc2hhZG93IERPTXMgYnkgbmFtZSAoZHVwbGlj
YXRlIG5hbWUpIik7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBoZWFkZXIgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdoZWFkZXInKTsKKyAgICB2YXIgc2hhZG93Um9vdCA9IGhlYWRl
ci5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVuJ30pOworICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1M
ID0gJzxmb3JtPjwvZm9ybT4nOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaGVhZGVy
KTsKKworICAgIGFzc2VydF9lcXVhbHMod2luZG93LmJhcjIsIHVuZGVmaW5lZCk7CisgICAgc2hh
ZG93Um9vdC5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgnbmFtZScsICdiYXIyJyk7CisgICAgYXNz
ZXJ0X2VxdWFscyh3aW5kb3cuYmFyMiwgdW5kZWZpbmVkKTsKK30sICJXaW5kb3cncyBuYW1lZCBw
cm9wZXJ0eSBnZXR0ZXIgc2hvdWxkIG5vdCByZXR1cm4gZWxlbWVudHMgaW4gc2hhZG93IERPTXMg
YnkgbmFtZSAobmFtZSBhdHRyaWJ1dGUgdXBkYXRlKSIpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsK
KyAgICB2YXIgaGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaGVhZGVyJyk7CisgICAg
dmFyIHNoYWRvd1Jvb3QgPSBoZWFkZXIuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsKKyAg
ICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8Zm9ybT48L2Zvcm0+JzsKKyAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGhlYWRlcik7CisKKyAgICB2YXIgZm9ybSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImZvcm0iKTsKKyAgICBmb3JtLnNldEF0dHJpYnV0ZSgnbmFtZScsICdiYXIzJyk7
CisgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGZvcm0pOworCisgICAgYXNzZXJ0X2VxdWFscyh3
aW5kb3cuYmFyMywgZm9ybSk7CisgICAgc2hhZG93Um9vdC5maXJzdENoaWxkLnNldEF0dHJpYnV0
ZSgnbmFtZScsICdiYXIzJyk7CisgICAgYXNzZXJ0X2VxdWFscyh3aW5kb3cuYmFyMywgZm9ybSk7
CisKKyAgICBzaGFkb3dSb290LmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCduYW1lJywgJ290aGVy
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh3aW5kb3cuYmFyMywgZm9ybSk7Cit9LCAiV2luZG93J3Mg
bmFtZWQgcHJvcGVydHkgZ2V0dGVyIHNob3VsZCBub3QgcmV0dXJuIGVsZW1lbnRzIGluIHNoYWRv
dyBET01zIGJ5IG5hbWUgKGR1cGxpY2F0ZSBuYW1lIGF0dHJpYnV0ZSB1cGRhdGUpIik7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>