<?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>136247</bug_id>
          
          <creation_ts>2014-08-26 01:20:24 -0700</creation_ts>
          <short_desc>AX: Heuristic: Avoid exposing an element as clickable if mouse event delegation is handled on an AXElement with more than one descendant AXElement</short_desc>
          <delta_ts>2015-04-04 23:52:38 -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>Accessibility</component>
          <version>528+ (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>
          <dependson>133613</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Craig">jcraig</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>gijs</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1031337</commentid>
    <comment_count>0</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2014-08-26 01:20:24 -0700</bug_when>
    <thetext>Add-on from Bug 133613.

Chris also added: &quot;We could not expose &apos;clickable&apos; on an object if there is a more than say two objects with the same event handler.&quot;

There will be cases matching that heuristic that we can&apos;t disambiguate, but I think this will result in better behavior overall, so let&apos;s try it. I wrote it up as &quot;more than one descendant AXElement&quot; as opposed to &quot;DOM Element&quot; b/c if the other DOM elements aren&apos;t turned into accessibles, they won&apos;t matter.…</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031338</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-08-26 01:20:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/18130664&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081840</commentid>
    <comment_count>2</comment_count>
      <attachid>249871</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-03-31 17:38:06 -0700</bug_when>
    <thetext>Created attachment 249871
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081843</commentid>
    <comment_count>3</comment_count>
      <attachid>249871</attachid>
    <who name="James Craig">jcraig</who>
    <bug_when>2015-03-31 17:56:28 -0700</bug_when>
    <thetext>Comment on attachment 249871
patch

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

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:2019
&gt; +    // [Bug: 136247] Heuristic: element handlers that have more than one accessible descendant should not be exposed as supporting press.
&gt; +    if (actionElement != element()) {
&gt; +        if (AccessibilityObject* axObj = axObjectCache()-&gt;getOrCreate(actionElement)) {
&gt; +            AccessibilityChildrenVector results;
&gt; +            // Search within for immediate descendants that are static text. If we find more than one
&gt; +            // then this is an event delegator actionElement and we should expose the press action.
&gt; +            Vector&lt;AccessibilitySearchKey&gt; keys({ StaticTextSearchKey, ControlSearchKey, GraphicSearchKey, HeadingSearchKey, LinkSearchKey });
&gt; +            AccessibilitySearchCriteria criteria(axObj, SearchDirectionNext, &quot;&quot;, 2, false, false);
&gt; +            criteria.searchKeys = keys;
&gt; +            axObj-&gt;findMatchingObjects(&amp;criteria, results);
&gt; +            if (results.size() &gt; 1)
&gt; +                return false;
&gt; +        }
&gt; +    }
&gt; +    

If I&apos;m reading this correctly, this might mean a link element inside an event delegate would not accept press?

&lt;div onclick=&quot;foo()&quot;&gt;
  &lt;div role=&quot;link&quot; tabindex=&quot;0&quot;&gt;regardless of delegation, this node should still support &quot;press&quot; due to the role&lt;/div&gt;
&lt;/div&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081846</commentid>
    <comment_count>4</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-03-31 18:00:13 -0700</bug_when>
    <thetext>Links are always going to support press

(In reply to comment #3)
&gt; Comment on attachment 249871 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=249871&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityObject.cpp:2019
&gt; &gt; +    // [Bug: 136247] Heuristic: element handlers that have more than one accessible descendant should not be exposed as supporting press.
&gt; &gt; +    if (actionElement != element()) {
&gt; &gt; +        if (AccessibilityObject* axObj = axObjectCache()-&gt;getOrCreate(actionElement)) {
&gt; &gt; +            AccessibilityChildrenVector results;
&gt; &gt; +            // Search within for immediate descendants that are static text. If we find more than one
&gt; &gt; +            // then this is an event delegator actionElement and we should expose the press action.
&gt; &gt; +            Vector&lt;AccessibilitySearchKey&gt; keys({ StaticTextSearchKey, ControlSearchKey, GraphicSearchKey, HeadingSearchKey, LinkSearchKey });
&gt; &gt; +            AccessibilitySearchCriteria criteria(axObj, SearchDirectionNext, &quot;&quot;, 2, false, false);
&gt; &gt; +            criteria.searchKeys = keys;
&gt; &gt; +            axObj-&gt;findMatchingObjects(&amp;criteria, results);
&gt; &gt; +            if (results.size() &gt; 1)
&gt; &gt; +                return false;
&gt; &gt; +        }
&gt; &gt; +    }
&gt; &gt; +    
&gt; 
&gt; If I&apos;m reading this correctly, this might mean a link element inside an
&gt; event delegate would not accept press?
&gt; 
&gt; &lt;div onclick=&quot;foo()&quot;&gt;
&gt;   &lt;div role=&quot;link&quot; tabindex=&quot;0&quot;&gt;regardless of delegation, this node should
&gt; still support &quot;press&quot; due to the role&lt;/div&gt;
&gt; &lt;/div&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081847</commentid>
    <comment_count>5</comment_count>
      <attachid>249874</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-03-31 18:03:39 -0700</bug_when>
    <thetext>Created attachment 249874
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081905</commentid>
    <comment_count>6</comment_count>
      <attachid>249896</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-03-31 23:31:25 -0700</bug_when>
    <thetext>Created attachment 249896
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082818</commentid>
    <comment_count>7</comment_count>
      <attachid>249896</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2015-04-04 15:17:37 -0700</bug_when>
    <thetext>Comment on attachment 249896
patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Modify the logic for determing whether an element supports the press action by trying to filter out objects being handled by event delegation.

typo: s/determing/determining</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082869</commentid>
    <comment_count>8</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-04-04 23:52:38 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/182355</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249871</attachid>
            <date>2015-03-31 17:38:06 -0700</date>
            <delta_ts>2015-03-31 18:03:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>14588</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjIxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE1LTAzLTMxICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEhldXJpc3RpYzog
QXZvaWQgZXhwb3NpbmcgYW4gZWxlbWVudCBhcyBjbGlja2FibGUgaWYgbW91c2UgZXZlbnQgZGVs
ZWdhdGlvbiBpcyBoYW5kbGVkIG9uIGFuIEFYRWxlbWVudCB3aXRoIG1vcmUgdGhhbiBvbmUgZGVz
Y2VuZGFudCBBWEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNjI0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1vZGlmeSB0aGUgbG9naWMgZm9yIGRldGVybWluZyB3aGV0aGVyIGFuIGVsZW1l
bnQgc3VwcG9ydHMgdGhlIHByZXNzIGFjdGlvbiBieSB0cnlpbmcgdG8gZmlsdGVyIG91dCBvYmpl
Y3RzIGJlaW5nIGhhbmRsZWQgYnkgZXZlbnQgZGVsZWdhdGlvbi4KKyAgICAgICAgVGhlIGhldXJp
c3RpYyBpcyBpZiBhbiBlbGVtZW50IGhhbmRsZXMgY2xpY2sgYWN0aW9ucyBhbmQgaGFzIG1vcmUg
dGhhbiBvbmUgb2YgYSB7c3RhdGljIHRleHQsIGltYWdlLCBjb250cm9sLCBsaW5rLCBoZWFkaW5n
fSwgdGhlbiB3ZSB0aGluaworICAgICAgICBpdCdzIHVzaW5nIGV2ZW50IGRlbGVnYXRpb24sIGFu
ZCBkbyBub3QgZXhwb3NlIHRoZSBwcmVzcyBhY3Rpb24uCisKKyAgICAgICAgVGVzdDogcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJlc3MtYWN0aW9uLW5vdC1leHBvc2VkLXdpdGgtZXZlbnQt
ZGVsZWdhdGlvbi5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9y
dHNQcmVzc0FjdGlvbik6CisKIDIwMTUtMDMtMzEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBjb21wdXRlIGEgcmVn
aW9uIGZvciBlbGVtZW50cyBvbiB0aGUgcGFnZSB0aGF0IGhhdmUgd2hlZWwgZXZlbnQgaGFuZGxl
cnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMTgyMDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAw
Miw2ICsyMDAyLDIxIEBACiAgICAgaWYgKCFhY3Rpb25FbGVtZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCisgICAgLy8gW0J1ZzogMTM2MjQ3XSBIZXVyaXN0aWM6IGVsZW1lbnQgaGFu
ZGxlcnMgdGhhdCBoYXZlIG1vcmUgdGhhbiBvbmUgYWNjZXNzaWJsZSBkZXNjZW5kYW50IHNob3Vs
ZCBub3QgYmUgZXhwb3NlZCBhcyBzdXBwb3J0aW5nIHByZXNzLgorICAgIGlmIChhY3Rpb25FbGVt
ZW50ICE9IGVsZW1lbnQoKSkgeworICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhP
YmogPSBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGFjdGlvbkVsZW1lbnQpKSB7CisgICAg
ICAgICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsKKyAgICAgICAgICAg
IC8vIFNlYXJjaCB3aXRoaW4gZm9yIGltbWVkaWF0ZSBkZXNjZW5kYW50cyB0aGF0IGFyZSBzdGF0
aWMgdGV4dC4gSWYgd2UgZmluZCBtb3JlIHRoYW4gb25lCisgICAgICAgICAgICAvLyB0aGVuIHRo
aXMgaXMgYW4gZXZlbnQgZGVsZWdhdG9yIGFjdGlvbkVsZW1lbnQgYW5kIHdlIHNob3VsZCBleHBv
c2UgdGhlIHByZXNzIGFjdGlvbi4KKyAgICAgICAgICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5PiBrZXlzKHsgU3RhdGljVGV4dFNlYXJjaEtleSwgQ29udHJvbFNlYXJjaEtleSwgR3Jh
cGhpY1NlYXJjaEtleSwgSGVhZGluZ1NlYXJjaEtleSwgTGlua1NlYXJjaEtleSB9KTsKKyAgICAg
ICAgICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBjcml0ZXJpYShheE9iaiwgU2VhcmNo
RGlyZWN0aW9uTmV4dCwgIiIsIDIsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICBjcml0ZXJp
YS5zZWFyY2hLZXlzID0ga2V5czsKKyAgICAgICAgICAgIGF4T2JqLT5maW5kTWF0Y2hpbmdPYmpl
Y3RzKCZjcml0ZXJpYSwgcmVzdWx0cyk7CisgICAgICAgICAgICBpZiAocmVzdWx0cy5zaXplKCkg
PiAxKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKICAgICAvLyBbQnVnOiAxMzM2MTNdIEhldXJpc3RpYzogSWYgdGhlIGFjdGlvbiBlbGVtZW50
IGlzIHByZXNlbnRhdGlvbmFsLCB3ZSBzaG91bGRuJ3QgZXhwb3NlIHByZXNzIGFzIGEgc3VwcG9y
dGVkIGFjdGlvbi4KICAgICByZXR1cm4gIW5vZGVIYXNQcmVzZW50YXRpb25Sb2xlKGFjdGlvbkVs
ZW1lbnQpOwogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyMjE1KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDMtMzEgIENocmlz
IEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogSGV1cmlzdGlj
OiBBdm9pZCBleHBvc2luZyBhbiBlbGVtZW50IGFzIGNsaWNrYWJsZSBpZiBtb3VzZSBldmVudCBk
ZWxlZ2F0aW9uIGlzIGhhbmRsZWQgb24gYW4gQVhFbGVtZW50IHdpdGggbW9yZSB0aGFuIG9uZSBk
ZXNjZW5kYW50IEFYRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM2MjQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wcmVzcy1hY3Rpb24tbm90
LWV4cG9zZWQtd2hlbi1ib2R5LWlzLWNsaWNrLWhhbmRsZXItZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3ByZXNzLWFjdGlvbi1ub3Qt
ZXhwb3NlZC13aGVuLWJvZHktaXMtY2xpY2staGFuZGxlci5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3ByZXNzLWFjdGlvbi1ub3QtZXhwb3NlZC13
aXRoLWV2ZW50LWRlbGVnYXRpb24tZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wcmVzcy1hY3Rpb24tbm90LWV4cG9zZWQtd2hl
bi1ib2R5LWlzLWNsaWNrLWhhbmRsZXItZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L3ByZXNzLWFjdGlvbi1ub3QtZXhwb3NlZC13aXRoLWV2ZW50LWRl
bGVnYXRpb24uaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvcHJlc3MtYWN0aW9uLW5vdC1leHBvc2VkLXdoZW4tYm9keS1pcy1jbGljay1oYW5k
bGVyLmh0bWwuCisKIDIwMTUtMDMtMzEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBjb21wdXRlIGEgcmVnaW9uIGZv
ciBlbGVtZW50cyBvbiB0aGUgcGFnZSB0aGF0IGhhdmUgd2hlZWwgZXZlbnQgaGFuZGxlcnMKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3ByZXNzLWFjdGlvbi1u
b3QtZXhwb3NlZC13aGVuLWJvZHktaXMtY2xpY2staGFuZGxlci1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJlc3MtYWN0
aW9uLW5vdC1leHBvc2VkLXdoZW4tYm9keS1pcy1jbGljay1oYW5kbGVyLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMTgyMDcxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvcHJlc3MtYWN0aW9uLW5vdC1leHBvc2VkLXdoZW4tYm9keS1pcy1jbGljay1oYW5kbGVyLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyMSArMCwwIEBACi0KLVRoaXMgdGVzdHMg
dGhhdCBpZiB0aGUgYm9keSBvciBodG1sIHRhZ3MgaGF2ZSBjbGljayBoYW5kbGVycywgdGhlbiBu
b24tY29udHJvbCBlbGVtZW50cyBkbyBub3QgYXV0b21hdGljYWxseSBoYXZlIHRoZSBwcmVzcyBh
Y3Rpb24gb24gdGhlbS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgdGV4
dDEucm9sZSBpcyAnQVhSb2xlOiBBWFN0YXRpY1RleHQnCi1QQVNTIHRleHQyLnJvbGUgaXMgJ0FY
Um9sZTogQVhTdGF0aWNUZXh0JwotV2hlbiBhIGNsaWNrIGhhbmRsZXIgaXMgb24gdGhlIEhUTUwg
dGFnLCBBWFByZXNzIHNob3VsZCBub3QgYmUgc3VwcG9ydGVkIG9uIHN0YXRpYyB0ZXh0IGNoaWxk
cmVuIGVsZW1lbnRzIGF1dG9tYXRpY2FsbHkuCi1QQVNTIHRleHQxLmlzUHJlc3NBY3Rpb25TdXBw
b3J0ZWQoKSBpcyBmYWxzZQotUEFTUyB0ZXh0Mi5pc1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkgaXMg
ZmFsc2UKLVdoZW4gYSBjbGljayBoYW5kbGVyIGlzIG9uIHRoZSBCT0RZIHRhZywgQVhQcmVzcyBz
aG91bGQgbm90IGJlIHN1cHBvcnRlZCBvbiBzdGF0aWMgdGV4dCBjaGlsZHJlbiBlbGVtZW50cyBh
dXRvbWF0aWNhbGx5LgotUEFTUyB0ZXh0MS5pc1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkgaXMgZmFs
c2UKLVBBU1MgdGV4dDIuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIGlzIGZhbHNlCi1XaGVuIGEg
Y2xpY2sgaGFuZGxlciBpcyBvbiBhIHBhcmVudCB0YWcsIEFYUHJlc3Mgc2hvdWxkIGJlIHN1cHBv
cnRlZCBvbiBzdGF0aWMgdGV4dCBjaGlsZHJlbiBlbGVtZW50cyBhdXRvbWF0aWNhbGx5LgotUEFT
UyB0ZXh0MS5pc1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkgaXMgdHJ1ZQotUEFTUyB0ZXh0Mi5pc1By
ZXNzQWN0aW9uU3VwcG9ydGVkKCkgaXMgdHJ1ZQotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L3ByZXNzLWFjdGlvbi1ub3QtZXhwb3NlZC13aGVuLWJvZHktaXMtY2xpY2st
aGFuZGxlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L3ByZXNzLWFjdGlvbi1ub3QtZXhwb3NlZC13aGVuLWJvZHktaXMtY2xpY2staGFu
ZGxlci5odG1sCShyZXZpc2lvbiAxODIwNzEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS9wcmVzcy1hY3Rpb24tbm90LWV4cG9zZWQtd2hlbi1ib2R5LWlzLWNsaWNr
LWhhbmRsZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2MCArMCwwIEBACi08IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Ci08aHRtbCBpZD0iaHRtbCI+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHkiPgotCi08ZGl2IGlkPSJncm91cDEiIHJv
bGU9Imdyb3VwIj4KLXRleHQxCi08YnI+Ci08ZGl2IHJvbGU9InRleHQiIGlkPSJ0ZXh0MiI+dGV4
dDI8L2Rpdj4KLQotPC9kaXY+Ci0KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Ci0KLTxzY3JpcHQ+Ci0KLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
cyB0aGF0IGlmIHRoZSBib2R5IG9yIGh0bWwgdGFncyBoYXZlIGNsaWNrIGhhbmRsZXJzLCB0aGVu
IG5vbi1jb250cm9sIGVsZW1lbnRzIGRvIG5vdCBhdXRvbWF0aWNhbGx5IGhhdmUgdGhlIHByZXNz
IGFjdGlvbiBvbiB0aGVtLiIpOwotCi0gICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgewotCi0gICAgICAgICAgZnVuY3Rpb24gbGlzdGVuZXIoKSB7IH0KLQotICAgICAgICAg
IHZhciBncm91cCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgiZ3JvdXAxIik7Ci0gICAgICAgICAgdmFyIHRleHQxID0gZ3JvdXAuY2hpbGRBdEluZGV4KDAp
LmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgICB2YXIgdGV4dDIgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQyIik7Ci0KLSAgICAgICAgICBzaG91
bGRCZSgidGV4dDEucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7Ci0gICAgICAgICAg
c2hvdWxkQmUoInRleHQyLnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOwotCi0gICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImh0bWwiKS5hZGRFdmVudExpc3RlbmVyKCdj
bGljaycsIGxpc3RlbmVyLCBmYWxzZSk7Ci0KLSAgICAgICAgICBkZWJ1ZygiV2hlbiBhIGNsaWNr
IGhhbmRsZXIgaXMgb24gdGhlIEhUTUwgdGFnLCBBWFByZXNzIHNob3VsZCBub3QgYmUgc3VwcG9y
dGVkIG9uIHN0YXRpYyB0ZXh0IGNoaWxkcmVuIGVsZW1lbnRzIGF1dG9tYXRpY2FsbHkuIik7Ci0g
ICAgICAgICAgc2hvdWxkQmVGYWxzZSgidGV4dDEuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIik7
Ci0gICAgICAgICAgc2hvdWxkQmVGYWxzZSgidGV4dDIuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgp
Iik7Ci0KLSAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbCIpLnJlbW92ZUV2
ZW50TGlzdGVuZXIoJ2NsaWNrJywgbGlzdGVuZXIsIGZhbHNlKTsKLSAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiYm9keSIpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbGlzdGVu
ZXIsIGZhbHNlKTsKLQotICAgICAgICAgIGRlYnVnKCJXaGVuIGEgY2xpY2sgaGFuZGxlciBpcyBv
biB0aGUgQk9EWSB0YWcsIEFYUHJlc3Mgc2hvdWxkIG5vdCBiZSBzdXBwb3J0ZWQgb24gc3RhdGlj
IHRleHQgY2hpbGRyZW4gZWxlbWVudHMgYXV0b21hdGljYWxseS4iKTsKLSAgICAgICAgICBzaG91
bGRCZUZhbHNlKCJ0ZXh0MS5pc1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkiKTsKLSAgICAgICAgICBz
aG91bGRCZUZhbHNlKCJ0ZXh0Mi5pc1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkiKTsKLQotICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikucmVtb3ZlRXZlbnRMaXN0ZW5lcign
Y2xpY2snLCBsaXN0ZW5lciwgZmFsc2UpOwotICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJncm91cDEiKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGxpc3RlbmVyLCBmYWxzZSk7
Ci0KLSAgICAgICAgICBkZWJ1ZygiV2hlbiBhIGNsaWNrIGhhbmRsZXIgaXMgb24gYSBwYXJlbnQg
dGFnLCBBWFByZXNzIHNob3VsZCBiZSBzdXBwb3J0ZWQgb24gc3RhdGljIHRleHQgY2hpbGRyZW4g
ZWxlbWVudHMgYXV0b21hdGljYWxseS4iKTsKLSAgICAgICAgICBzaG91bGRCZVRydWUoInRleHQx
LmlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQoKSIpOwotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4
dDIuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIik7Ci0KLSAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZ3JvdXAxIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwotICAgIH0K
LQotPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3ByZXNzLWFjdGlvbi1ub3QtZXhwb3NlZC13aXRoLWV2
ZW50LWRlbGVnYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3ByZXNzLWFjdGlvbi1ub3QtZXhwb3NlZC13aXRoLWV2
ZW50LWRlbGVnYXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wcmVzcy1hY3Rpb24tbm90LWV4cG9zZWQtd2l0
aC1ldmVudC1kZWxlZ2F0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDcgQEAKIAotVGhpcyB0ZXN0cyB0aGF0IGlmIHRoZSBib2R5IG9yIGh0bWwgdGFncyBoYXZlIGNs
aWNrIGhhbmRsZXJzLCB0aGVuIG5vbi1jb250cm9sIGVsZW1lbnRzIGRvIG5vdCBhdXRvbWF0aWNh
bGx5IGhhdmUgdGhlIHByZXNzIGFjdGlvbiBvbiB0aGVtLgogCitUaGlzIHRlc3RzIHdoZXRoZXIg
c3RhdGljIHRleHQgaGFzIHRoZSBwcmVzcyBhY3Rpb24gc3VwcG9ydGVkLiBJZiB0aGUgaGFuZGxl
ciBpcyBvbiBhbiBlbGVtZW50IHRoYXQgaGFzIG1vcmUgdGhhbiBvbmUgY2hpbGQsIHRoZW4gd2Ug
YXNzdW1lIHRoYXQgZXZlbnQgZGVsZWdhdGlvbiBpcyBiZWluZyB1c2VkLiBJbiB0aGF0IGNhc2Ug
d2UgZG8gbm90IGV4cG9zZSBwcmVzcyBzdXBwb3J0ZWQuCisKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KIAogCkBAIC05LDEyICsxMCwzMCBAQAogV2hlbiBhIGNsaWNrIGhhbmRsZXIgaXMgb24g
dGhlIEhUTUwgdGFnLCBBWFByZXNzIHNob3VsZCBub3QgYmUgc3VwcG9ydGVkIG9uIHN0YXRpYyB0
ZXh0IGNoaWxkcmVuIGVsZW1lbnRzIGF1dG9tYXRpY2FsbHkuCiBQQVNTIHRleHQxLmlzUHJlc3NB
Y3Rpb25TdXBwb3J0ZWQoKSBpcyBmYWxzZQogUEFTUyB0ZXh0Mi5pc1ByZXNzQWN0aW9uU3VwcG9y
dGVkKCkgaXMgZmFsc2UKKwogV2hlbiBhIGNsaWNrIGhhbmRsZXIgaXMgb24gdGhlIEJPRFkgdGFn
LCBBWFByZXNzIHNob3VsZCBub3QgYmUgc3VwcG9ydGVkIG9uIHN0YXRpYyB0ZXh0IGNoaWxkcmVu
IGVsZW1lbnRzIGF1dG9tYXRpY2FsbHkuCisKIFBBU1MgdGV4dDEuaXNQcmVzc0FjdGlvblN1cHBv
cnRlZCgpIGlzIGZhbHNlCiBQQVNTIHRleHQyLmlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQoKSBpcyBm
YWxzZQorCiBXaGVuIGEgY2xpY2sgaGFuZGxlciBpcyBvbiBhIHBhcmVudCB0YWcsIEFYUHJlc3Mg
c2hvdWxkIGJlIHN1cHBvcnRlZCBvbiBzdGF0aWMgdGV4dCBjaGlsZHJlbiBlbGVtZW50cyBhdXRv
bWF0aWNhbGx5LgorCiBQQVNTIHRleHQxLmlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQoKSBpcyB0cnVl
CitQQVNTIHRleHQyLmlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQoKSBpcyBmYWxzZQorCitXaGVuIGEg
Y2xpY2sgaGFuZGxlciBpcyBvbiB0aGUgcGFyZW50LCB1c2luZyByb2xlPXRleHQgc2hvdWxkIGV4
cG9zZSBBWFByZXNzLgorCiBQQVNTIHRleHQyLmlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQoKSBpcyB0
cnVlCisKK1doZW4gYSBjbGljayBoYW5kbGVyIGlzIG9uIGEgcGFyZW50IHRoYXQgaGFzIG1vcmUg
dGhhbiBvbmUgZGVzY2VuZGFudCwgZG8gbm90IGV4cG9zZSBwcmVzcy4KKworUEFTUyB0ZXh0My5p
c1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkgaXMgZmFsc2UKK1BBU1MgdGV4dDMuaXNQcmVzc0FjdGlv
blN1cHBvcnRlZCgpIGlzIGZhbHNlCisKK1doZW4gYSBjbGljayBoYW5kbGVyIGlzIG9uIGEgcGFy
ZW50IHRoYXQgaGFzIG9uZSBkaXJlY3QgZGVzY2VuZGFudCwgYnV0IHRoZW4gc3ViLWRlc2NlbmRh
bnRzIGJlbG93IHRoYXQsIGRvIG5vdCBleHBvc2UgcHJlc3MuCisKK1BBU1MgdGV4dDQuaXNQcmVz
c0FjdGlvblN1cHBvcnRlZCgpIGlzIGZhbHNlCitQQVNTIHRleHQ0LmlzUHJlc3NBY3Rpb25TdXBw
b3J0ZWQoKSBpcyBmYWxzZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNU
IENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9w
cmVzcy1hY3Rpb24tbm90LWV4cG9zZWQtd2l0aC1ldmVudC1kZWxlZ2F0aW9uLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJlc3MtYWN0
aW9uLW5vdC1leHBvc2VkLXdpdGgtZXZlbnQtZGVsZWdhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wcmVzcy1hY3Rpb24t
bm90LWV4cG9zZWQtd2l0aC1ldmVudC1kZWxlZ2F0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTcsMjQgKzcsNDIgQEAKIAogPGRpdiBpZD0iZ3JvdXAxIiByb2xlPSJncm91cCI+CiB0ZXh0MQor
PC9kaXY+CisKIDxicj4KKworPGRpdiBpZD0iZ3JvdXAyIiByb2xlPSJncm91cCI+CiA8ZGl2IHJv
bGU9InRleHQiIGlkPSJ0ZXh0MiI+dGV4dDI8L2Rpdj4KKzwvZGl2PgogCis8ZGl2IGlkPSJncm91
cDMiIHJvbGU9Imdyb3VwIj4KK2E8YnI+Cis8YnV0dG9uPmI8L2J1dHRvbj4KIDwvZGl2PgogCis8
ZGl2IGlkPSJncm91cDQiIHJvbGU9Imdyb3VwIj4KKyAgPGRpdiByb2xlPSJncm91cCI+CisgICAg
IDxidXR0b24+YTwvYnV0dG9uPgorICAgICA8YnV0dG9uPmI8L2J1dHRvbj4KKyAgICAgYworICA8
L2Rpdj4KKzwvZGl2PgorCis8L2Rpdj4KKwogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KIAogPHNjcmlwdD4KIAotICAgIGRlc2NyaXB0aW9uKCJUaGlz
IHRlc3RzIHRoYXQgaWYgdGhlIGJvZHkgb3IgaHRtbCB0YWdzIGhhdmUgY2xpY2sgaGFuZGxlcnMs
IHRoZW4gbm9uLWNvbnRyb2wgZWxlbWVudHMgZG8gbm90IGF1dG9tYXRpY2FsbHkgaGF2ZSB0aGUg
cHJlc3MgYWN0aW9uIG9uIHRoZW0uIik7CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgd2hl
dGhlciBzdGF0aWMgdGV4dCBoYXMgdGhlIHByZXNzIGFjdGlvbiBzdXBwb3J0ZWQuIElmIHRoZSBo
YW5kbGVyIGlzIG9uIGFuIGVsZW1lbnQgdGhhdCBoYXMgbW9yZSB0aGFuIG9uZSBjaGlsZCwgdGhl
biB3ZSBhc3N1bWUgdGhhdCBldmVudCBkZWxlZ2F0aW9uIGlzIGJlaW5nIHVzZWQuIEluIHRoYXQg
Y2FzZSB3ZSBkbyBub3QgZXhwb3NlIHByZXNzIHN1cHBvcnRlZC4iKTsKIAogICAgIGlmICh3aW5k
b3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKIAogICAgICAgICAgIGZ1bmN0aW9uIGxpc3Rl
bmVyKCkgeyB9CiAKICAgICAgICAgICB2YXIgZ3JvdXAgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImdyb3VwMSIpOwotICAgICAgICAgIHZhciB0ZXh0MSA9
IGdyb3VwLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgICAgdmFyIHRl
eHQxID0gZ3JvdXAuY2hpbGRBdEluZGV4KDApOwogICAgICAgICAgIHZhciB0ZXh0MiA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDIiKTsKIAogICAg
ICAgICAgIHNob3VsZEJlKCJ0ZXh0MS5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsK
QEAgLTM5LDE4ICs1NywzNyBAQAogICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJo
dG1sIikucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lciwgZmFsc2UpOwogICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuYWRkRXZlbnRMaXN0ZW5lcign
Y2xpY2snLCBsaXN0ZW5lciwgZmFsc2UpOwogCi0gICAgICAgICAgZGVidWcoIldoZW4gYSBjbGlj
ayBoYW5kbGVyIGlzIG9uIHRoZSBCT0RZIHRhZywgQVhQcmVzcyBzaG91bGQgbm90IGJlIHN1cHBv
cnRlZCBvbiBzdGF0aWMgdGV4dCBjaGlsZHJlbiBlbGVtZW50cyBhdXRvbWF0aWNhbGx5LiIpOwor
ICAgICAgICAgIGRlYnVnKCJcbldoZW4gYSBjbGljayBoYW5kbGVyIGlzIG9uIHRoZSBCT0RZIHRh
ZywgQVhQcmVzcyBzaG91bGQgbm90IGJlIHN1cHBvcnRlZCBvbiBzdGF0aWMgdGV4dCBjaGlsZHJl
biBlbGVtZW50cyBhdXRvbWF0aWNhbGx5LlxuIik7CiAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgi
dGV4dDEuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIik7CiAgICAgICAgICAgc2hvdWxkQmVGYWxz
ZSgidGV4dDIuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIik7CiAKICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiYm9keSIpLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbGlz
dGVuZXIsIGZhbHNlKTsKICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JvdXAx
IikuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lciwgZmFsc2UpOwogCi0gICAgICAg
ICAgZGVidWcoIldoZW4gYSBjbGljayBoYW5kbGVyIGlzIG9uIGEgcGFyZW50IHRhZywgQVhQcmVz
cyBzaG91bGQgYmUgc3VwcG9ydGVkIG9uIHN0YXRpYyB0ZXh0IGNoaWxkcmVuIGVsZW1lbnRzIGF1
dG9tYXRpY2FsbHkuIik7CisgICAgICAgICAgZGVidWcoIlxuV2hlbiBhIGNsaWNrIGhhbmRsZXIg
aXMgb24gYSBwYXJlbnQgdGFnLCBBWFByZXNzIHNob3VsZCBiZSBzdXBwb3J0ZWQgb24gc3RhdGlj
IHRleHQgY2hpbGRyZW4gZWxlbWVudHMgYXV0b21hdGljYWxseS5cbiIpOwogICAgICAgICAgIHNo
b3VsZEJlVHJ1ZSgidGV4dDEuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIik7CisgICAgICAgICAg
c2hvdWxkQmVGYWxzZSgidGV4dDIuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIik7CisKKyAgICAg
ICAgICBkZWJ1ZygiXG5XaGVuIGEgY2xpY2sgaGFuZGxlciBpcyBvbiB0aGUgcGFyZW50LCB1c2lu
ZyByb2xlPXRleHQgc2hvdWxkIGV4cG9zZSBBWFByZXNzLlxuIik7CisgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImdyb3VwMiIpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbGlz
dGVuZXIsIGZhbHNlKTsKICAgICAgICAgICBzaG91bGRCZVRydWUoInRleHQyLmlzUHJlc3NBY3Rp
b25TdXBwb3J0ZWQoKSIpOwogCi0gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdy
b3VwMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAgICBkZWJ1ZygiXG5X
aGVuIGEgY2xpY2sgaGFuZGxlciBpcyBvbiBhIHBhcmVudCB0aGF0IGhhcyBtb3JlIHRoYW4gb25l
IGRlc2NlbmRhbnQsIGRvIG5vdCBleHBvc2UgcHJlc3MuXG4iKTsKKyAgICAgICAgICB2YXIgdGV4
dDMgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2dyb3Vw
MycpLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgICBzaG91bGRCZUZhbHNlKCJ0ZXh0My5pc1By
ZXNzQWN0aW9uU3VwcG9ydGVkKCkiKTsKKworICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJncm91cDMiKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGxpc3RlbmVyLCBmYWxzZSk7
CisgICAgICAgICAgc2hvdWxkQmVGYWxzZSgidGV4dDMuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgp
Iik7CisKKyAgICAgICAgICBkZWJ1ZygiXG5XaGVuIGEgY2xpY2sgaGFuZGxlciBpcyBvbiBhIHBh
cmVudCB0aGF0IGhhcyBvbmUgZGlyZWN0IGRlc2NlbmRhbnQsIGJ1dCB0aGVuIHN1Yi1kZXNjZW5k
YW50cyBiZWxvdyB0aGF0LCBkbyBub3QgZXhwb3NlIHByZXNzLlxuIik7CisgICAgICAgICAgdmFy
IHRleHQ0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdn
cm91cDQnKS5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDIpOworICAgICAgICAgIHNob3Vs
ZEJlRmFsc2UoInRleHQ0LmlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQoKSIpOworCisgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyb3VwNCIpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNr
JywgbGlzdGVuZXIsIGZhbHNlKTsKKyAgICAgICAgICBzaG91bGRCZUZhbHNlKCJ0ZXh0NC5pc1By
ZXNzQWN0aW9uU3VwcG9ydGVkKCkiKTsKKworICAgICAgICAgIGZvciAodmFyIGsgPSAxOyBrIDw9
IDQ7IGsrKykKKyAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyb3VwIiAr
IGspLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgICB9CiAKIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249874</attachid>
            <date>2015-03-31 18:03:39 -0700</date>
            <delta_ts>2015-03-31 23:31:25 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>14588</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjIxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE1LTAzLTMxICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEhldXJpc3RpYzog
QXZvaWQgZXhwb3NpbmcgYW4gZWxlbWVudCBhcyBjbGlja2FibGUgaWYgbW91c2UgZXZlbnQgZGVs
ZWdhdGlvbiBpcyBoYW5kbGVkIG9uIGFuIEFYRWxlbWVudCB3aXRoIG1vcmUgdGhhbiBvbmUgZGVz
Y2VuZGFudCBBWEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNjI0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1vZGlmeSB0aGUgbG9naWMgZm9yIGRldGVybWluZyB3aGV0aGVyIGFuIGVsZW1l
bnQgc3VwcG9ydHMgdGhlIHByZXNzIGFjdGlvbiBieSB0cnlpbmcgdG8gZmlsdGVyIG91dCBvYmpl
Y3RzIGJlaW5nIGhhbmRsZWQgYnkgZXZlbnQgZGVsZWdhdGlvbi4KKyAgICAgICAgVGhlIGhldXJp
c3RpYyBpcyBpZiBhbiBlbGVtZW50IGhhbmRsZXMgY2xpY2sgYWN0aW9ucyBhbmQgaGFzIG1vcmUg
dGhhbiBvbmUgb2YgYSB7c3RhdGljIHRleHQsIGltYWdlLCBjb250cm9sLCBsaW5rLCBoZWFkaW5n
fSwgdGhlbiB3ZSB0aGluaworICAgICAgICBpdCdzIHVzaW5nIGV2ZW50IGRlbGVnYXRpb24sIGFu
ZCBkbyBub3QgZXhwb3NlIHRoZSBwcmVzcyBhY3Rpb24uCisKKyAgICAgICAgVGVzdDogcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJlc3MtYWN0aW9uLW5vdC1leHBvc2VkLXdpdGgtZXZlbnQt
ZGVsZWdhdGlvbi5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9y
dHNQcmVzc0FjdGlvbik6CisKIDIwMTUtMDMtMzEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBjb21wdXRlIGEgcmVn
aW9uIGZvciBlbGVtZW50cyBvbiB0aGUgcGFnZSB0aGF0IGhhdmUgd2hlZWwgZXZlbnQgaGFuZGxl
cnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMTgyMjE1KQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAw
Miw2ICsyMDAyLDIxIEBACiAgICAgaWYgKCFhY3Rpb25FbGVtZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCisgICAgLy8gW0J1ZzogMTM2MjQ3XSBIZXVyaXN0aWM6IGVsZW1lbnQgaGFu
ZGxlcnMgdGhhdCBoYXZlIG1vcmUgdGhhbiBvbmUgYWNjZXNzaWJsZSBkZXNjZW5kYW50IHNob3Vs
ZCBub3QgYmUgZXhwb3NlZCBhcyBzdXBwb3J0aW5nIHByZXNzLgorICAgIGlmIChhY3Rpb25FbGVt
ZW50ICE9IGVsZW1lbnQoKSkgeworICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhP
YmogPSBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGFjdGlvbkVsZW1lbnQpKSB7CisgICAg
ICAgICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsKKyAgICAgICAgICAg
IC8vIFNlYXJjaCB3aXRoaW4gZm9yIGltbWVkaWF0ZSBkZXNjZW5kYW50cyB0aGF0IGFyZSBzdGF0
aWMgdGV4dC4gSWYgd2UgZmluZCBtb3JlIHRoYW4gb25lCisgICAgICAgICAgICAvLyB0aGVuIHRo
aXMgaXMgYW4gZXZlbnQgZGVsZWdhdG9yIGFjdGlvbkVsZW1lbnQgYW5kIHdlIHNob3VsZCBleHBv
c2UgdGhlIHByZXNzIGFjdGlvbi4KKyAgICAgICAgICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5PiBrZXlzKHsgU3RhdGljVGV4dFNlYXJjaEtleSwgQ29udHJvbFNlYXJjaEtleSwgR3Jh
cGhpY1NlYXJjaEtleSwgSGVhZGluZ1NlYXJjaEtleSwgTGlua1NlYXJjaEtleSB9KTsKKyAgICAg
ICAgICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBjcml0ZXJpYShheE9iaiwgU2VhcmNo
RGlyZWN0aW9uTmV4dCwgIiIsIDIsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICBjcml0ZXJp
YS5zZWFyY2hLZXlzID0ga2V5czsKKyAgICAgICAgICAgIGF4T2JqLT5maW5kTWF0Y2hpbmdPYmpl
Y3RzKCZjcml0ZXJpYSwgcmVzdWx0cyk7CisgICAgICAgICAgICBpZiAocmVzdWx0cy5zaXplKCkg
PiAxKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKICAgICAvLyBbQnVnOiAxMzM2MTNdIEhldXJpc3RpYzogSWYgdGhlIGFjdGlvbiBlbGVtZW50
IGlzIHByZXNlbnRhdGlvbmFsLCB3ZSBzaG91bGRuJ3QgZXhwb3NlIHByZXNzIGFzIGEgc3VwcG9y
dGVkIGFjdGlvbi4KICAgICByZXR1cm4gIW5vZGVIYXNQcmVzZW50YXRpb25Sb2xlKGFjdGlvbkVs
ZW1lbnQpOwogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyMjE1KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDMtMzEgIENocmlz
IEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogSGV1cmlzdGlj
OiBBdm9pZCBleHBvc2luZyBhbiBlbGVtZW50IGFzIGNsaWNrYWJsZSBpZiBtb3VzZSBldmVudCBk
ZWxlZ2F0aW9uIGlzIGhhbmRsZWQgb24gYW4gQVhFbGVtZW50IHdpdGggbW9yZSB0aGFuIG9uZSBk
ZXNjZW5kYW50IEFYRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM2MjQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wcmVzcy1hY3Rpb24tbm90
LWV4cG9zZWQtd2hlbi1ib2R5LWlzLWNsaWNrLWhhbmRsZXItZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3ByZXNzLWFjdGlvbi1ub3Qt
ZXhwb3NlZC13aGVuLWJvZHktaXMtY2xpY2staGFuZGxlci5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3ByZXNzLWFjdGlvbi1ub3QtZXhwb3NlZC13
aXRoLWV2ZW50LWRlbGVnYXRpb24tZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wcmVzcy1hY3Rpb24tbm90LWV4cG9zZWQtd2hl
bi1ib2R5LWlzLWNsaWNrLWhhbmRsZXItZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L3ByZXNzLWFjdGlvbi1ub3QtZXhwb3NlZC13aXRoLWV2ZW50LWRl
bGVnYXRpb24uaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvcHJlc3MtYWN0aW9uLW5vdC1leHBvc2VkLXdoZW4tYm9keS1pcy1jbGljay1oYW5k
bGVyLmh0bWwuCisKIDIwMTUtMDMtMzEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBjb21wdXRlIGEgcmVnaW9uIGZv
ciBlbGVtZW50cyBvbiB0aGUgcGFnZSB0aGF0IGhhdmUgd2hlZWwgZXZlbnQgaGFuZGxlcnMKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3ByZXNzLWFjdGlvbi1u
b3QtZXhwb3NlZC13aGVuLWJvZHktaXMtY2xpY2staGFuZGxlci1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJlc3MtYWN0
aW9uLW5vdC1leHBvc2VkLXdoZW4tYm9keS1pcy1jbGljay1oYW5kbGVyLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMTgyMjE1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvcHJlc3MtYWN0aW9uLW5vdC1leHBvc2VkLXdoZW4tYm9keS1pcy1jbGljay1oYW5kbGVyLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyMSArMCwwIEBACi0KLVRoaXMgdGVzdHMg
dGhhdCBpZiB0aGUgYm9keSBvciBodG1sIHRhZ3MgaGF2ZSBjbGljayBoYW5kbGVycywgdGhlbiBu
b24tY29udHJvbCBlbGVtZW50cyBkbyBub3QgYXV0b21hdGljYWxseSBoYXZlIHRoZSBwcmVzcyBh
Y3Rpb24gb24gdGhlbS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgdGV4
dDEucm9sZSBpcyAnQVhSb2xlOiBBWFN0YXRpY1RleHQnCi1QQVNTIHRleHQyLnJvbGUgaXMgJ0FY
Um9sZTogQVhTdGF0aWNUZXh0JwotV2hlbiBhIGNsaWNrIGhhbmRsZXIgaXMgb24gdGhlIEhUTUwg
dGFnLCBBWFByZXNzIHNob3VsZCBub3QgYmUgc3VwcG9ydGVkIG9uIHN0YXRpYyB0ZXh0IGNoaWxk
cmVuIGVsZW1lbnRzIGF1dG9tYXRpY2FsbHkuCi1QQVNTIHRleHQxLmlzUHJlc3NBY3Rpb25TdXBw
b3J0ZWQoKSBpcyBmYWxzZQotUEFTUyB0ZXh0Mi5pc1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkgaXMg
ZmFsc2UKLVdoZW4gYSBjbGljayBoYW5kbGVyIGlzIG9uIHRoZSBCT0RZIHRhZywgQVhQcmVzcyBz
aG91bGQgbm90IGJlIHN1cHBvcnRlZCBvbiBzdGF0aWMgdGV4dCBjaGlsZHJlbiBlbGVtZW50cyBh
dXRvbWF0aWNhbGx5LgotUEFTUyB0ZXh0MS5pc1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkgaXMgZmFs
c2UKLVBBU1MgdGV4dDIuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIGlzIGZhbHNlCi1XaGVuIGEg
Y2xpY2sgaGFuZGxlciBpcyBvbiBhIHBhcmVudCB0YWcsIEFYUHJlc3Mgc2hvdWxkIGJlIHN1cHBv
cnRlZCBvbiBzdGF0aWMgdGV4dCBjaGlsZHJlbiBlbGVtZW50cyBhdXRvbWF0aWNhbGx5LgotUEFT
UyB0ZXh0MS5pc1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkgaXMgdHJ1ZQotUEFTUyB0ZXh0Mi5pc1By
ZXNzQWN0aW9uU3VwcG9ydGVkKCkgaXMgdHJ1ZQotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L3ByZXNzLWFjdGlvbi1ub3QtZXhwb3NlZC13aGVuLWJvZHktaXMtY2xpY2st
aGFuZGxlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L3ByZXNzLWFjdGlvbi1ub3QtZXhwb3NlZC13aGVuLWJvZHktaXMtY2xpY2staGFu
ZGxlci5odG1sCShyZXZpc2lvbiAxODIyMTUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS9wcmVzcy1hY3Rpb24tbm90LWV4cG9zZWQtd2hlbi1ib2R5LWlzLWNsaWNr
LWhhbmRsZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2MCArMCwwIEBACi08IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Ci08aHRtbCBpZD0iaHRtbCI+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHkiPgotCi08ZGl2IGlkPSJncm91cDEiIHJv
bGU9Imdyb3VwIj4KLXRleHQxCi08YnI+Ci08ZGl2IHJvbGU9InRleHQiIGlkPSJ0ZXh0MiI+dGV4
dDI8L2Rpdj4KLQotPC9kaXY+Ci0KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Ci0KLTxzY3JpcHQ+Ci0KLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
cyB0aGF0IGlmIHRoZSBib2R5IG9yIGh0bWwgdGFncyBoYXZlIGNsaWNrIGhhbmRsZXJzLCB0aGVu
IG5vbi1jb250cm9sIGVsZW1lbnRzIGRvIG5vdCBhdXRvbWF0aWNhbGx5IGhhdmUgdGhlIHByZXNz
IGFjdGlvbiBvbiB0aGVtLiIpOwotCi0gICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgewotCi0gICAgICAgICAgZnVuY3Rpb24gbGlzdGVuZXIoKSB7IH0KLQotICAgICAgICAg
IHZhciBncm91cCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgiZ3JvdXAxIik7Ci0gICAgICAgICAgdmFyIHRleHQxID0gZ3JvdXAuY2hpbGRBdEluZGV4KDAp
LmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgICB2YXIgdGV4dDIgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQyIik7Ci0KLSAgICAgICAgICBzaG91
bGRCZSgidGV4dDEucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7Ci0gICAgICAgICAg
c2hvdWxkQmUoInRleHQyLnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOwotCi0gICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImh0bWwiKS5hZGRFdmVudExpc3RlbmVyKCdj
bGljaycsIGxpc3RlbmVyLCBmYWxzZSk7Ci0KLSAgICAgICAgICBkZWJ1ZygiV2hlbiBhIGNsaWNr
IGhhbmRsZXIgaXMgb24gdGhlIEhUTUwgdGFnLCBBWFByZXNzIHNob3VsZCBub3QgYmUgc3VwcG9y
dGVkIG9uIHN0YXRpYyB0ZXh0IGNoaWxkcmVuIGVsZW1lbnRzIGF1dG9tYXRpY2FsbHkuIik7Ci0g
ICAgICAgICAgc2hvdWxkQmVGYWxzZSgidGV4dDEuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIik7
Ci0gICAgICAgICAgc2hvdWxkQmVGYWxzZSgidGV4dDIuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgp
Iik7Ci0KLSAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbCIpLnJlbW92ZUV2
ZW50TGlzdGVuZXIoJ2NsaWNrJywgbGlzdGVuZXIsIGZhbHNlKTsKLSAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiYm9keSIpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbGlzdGVu
ZXIsIGZhbHNlKTsKLQotICAgICAgICAgIGRlYnVnKCJXaGVuIGEgY2xpY2sgaGFuZGxlciBpcyBv
biB0aGUgQk9EWSB0YWcsIEFYUHJlc3Mgc2hvdWxkIG5vdCBiZSBzdXBwb3J0ZWQgb24gc3RhdGlj
IHRleHQgY2hpbGRyZW4gZWxlbWVudHMgYXV0b21hdGljYWxseS4iKTsKLSAgICAgICAgICBzaG91
bGRCZUZhbHNlKCJ0ZXh0MS5pc1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkiKTsKLSAgICAgICAgICBz
aG91bGRCZUZhbHNlKCJ0ZXh0Mi5pc1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkiKTsKLQotICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikucmVtb3ZlRXZlbnRMaXN0ZW5lcign
Y2xpY2snLCBsaXN0ZW5lciwgZmFsc2UpOwotICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJncm91cDEiKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGxpc3RlbmVyLCBmYWxzZSk7
Ci0KLSAgICAgICAgICBkZWJ1ZygiV2hlbiBhIGNsaWNrIGhhbmRsZXIgaXMgb24gYSBwYXJlbnQg
dGFnLCBBWFByZXNzIHNob3VsZCBiZSBzdXBwb3J0ZWQgb24gc3RhdGljIHRleHQgY2hpbGRyZW4g
ZWxlbWVudHMgYXV0b21hdGljYWxseS4iKTsKLSAgICAgICAgICBzaG91bGRCZVRydWUoInRleHQx
LmlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQoKSIpOwotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4
dDIuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIik7Ci0KLSAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZ3JvdXAxIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwotICAgIH0K
LQotPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3ByZXNzLWFjdGlvbi1ub3QtZXhwb3NlZC13aXRoLWV2
ZW50LWRlbGVnYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3ByZXNzLWFjdGlvbi1ub3QtZXhwb3NlZC13aXRoLWV2
ZW50LWRlbGVnYXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wcmVzcy1hY3Rpb24tbm90LWV4cG9zZWQtd2l0
aC1ldmVudC1kZWxlZ2F0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDcgQEAKIAotVGhpcyB0ZXN0cyB0aGF0IGlmIHRoZSBib2R5IG9yIGh0bWwgdGFncyBoYXZlIGNs
aWNrIGhhbmRsZXJzLCB0aGVuIG5vbi1jb250cm9sIGVsZW1lbnRzIGRvIG5vdCBhdXRvbWF0aWNh
bGx5IGhhdmUgdGhlIHByZXNzIGFjdGlvbiBvbiB0aGVtLgogCitUaGlzIHRlc3RzIHdoZXRoZXIg
c3RhdGljIHRleHQgaGFzIHRoZSBwcmVzcyBhY3Rpb24gc3VwcG9ydGVkLiBJZiB0aGUgaGFuZGxl
ciBpcyBvbiBhbiBlbGVtZW50IHRoYXQgaGFzIG1vcmUgdGhhbiBvbmUgY2hpbGQsIHRoZW4gd2Ug
YXNzdW1lIHRoYXQgZXZlbnQgZGVsZWdhdGlvbiBpcyBiZWluZyB1c2VkLiBJbiB0aGF0IGNhc2Ug
d2UgZG8gbm90IGV4cG9zZSBwcmVzcyBzdXBwb3J0ZWQuCisKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KIAogCkBAIC05LDEyICsxMCwzMCBAQAogV2hlbiBhIGNsaWNrIGhhbmRsZXIgaXMgb24g
dGhlIEhUTUwgdGFnLCBBWFByZXNzIHNob3VsZCBub3QgYmUgc3VwcG9ydGVkIG9uIHN0YXRpYyB0
ZXh0IGNoaWxkcmVuIGVsZW1lbnRzIGF1dG9tYXRpY2FsbHkuCiBQQVNTIHRleHQxLmlzUHJlc3NB
Y3Rpb25TdXBwb3J0ZWQoKSBpcyBmYWxzZQogUEFTUyB0ZXh0Mi5pc1ByZXNzQWN0aW9uU3VwcG9y
dGVkKCkgaXMgZmFsc2UKKwogV2hlbiBhIGNsaWNrIGhhbmRsZXIgaXMgb24gdGhlIEJPRFkgdGFn
LCBBWFByZXNzIHNob3VsZCBub3QgYmUgc3VwcG9ydGVkIG9uIHN0YXRpYyB0ZXh0IGNoaWxkcmVu
IGVsZW1lbnRzIGF1dG9tYXRpY2FsbHkuCisKIFBBU1MgdGV4dDEuaXNQcmVzc0FjdGlvblN1cHBv
cnRlZCgpIGlzIGZhbHNlCiBQQVNTIHRleHQyLmlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQoKSBpcyBm
YWxzZQorCiBXaGVuIGEgY2xpY2sgaGFuZGxlciBpcyBvbiBhIHBhcmVudCB0YWcsIEFYUHJlc3Mg
c2hvdWxkIGJlIHN1cHBvcnRlZCBvbiBzdGF0aWMgdGV4dCBjaGlsZHJlbiBlbGVtZW50cyBhdXRv
bWF0aWNhbGx5LgorCiBQQVNTIHRleHQxLmlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQoKSBpcyB0cnVl
CitQQVNTIHRleHQyLmlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQoKSBpcyBmYWxzZQorCitXaGVuIGEg
Y2xpY2sgaGFuZGxlciBpcyBvbiB0aGUgcGFyZW50LCB1c2luZyByb2xlPXRleHQgc2hvdWxkIGV4
cG9zZSBBWFByZXNzLgorCiBQQVNTIHRleHQyLmlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQoKSBpcyB0
cnVlCisKK1doZW4gYSBjbGljayBoYW5kbGVyIGlzIG9uIGEgcGFyZW50IHRoYXQgaGFzIG1vcmUg
dGhhbiBvbmUgZGVzY2VuZGFudCwgZG8gbm90IGV4cG9zZSBwcmVzcy4KKworUEFTUyB0ZXh0My5p
c1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkgaXMgZmFsc2UKK1BBU1MgdGV4dDMuaXNQcmVzc0FjdGlv
blN1cHBvcnRlZCgpIGlzIGZhbHNlCisKK1doZW4gYSBjbGljayBoYW5kbGVyIGlzIG9uIGEgcGFy
ZW50IHRoYXQgaGFzIG9uZSBkaXJlY3QgZGVzY2VuZGFudCwgYnV0IHRoZW4gc3ViLWRlc2NlbmRh
bnRzIGJlbG93IHRoYXQsIGRvIG5vdCBleHBvc2UgcHJlc3MuCisKK1BBU1MgdGV4dDQuaXNQcmVz
c0FjdGlvblN1cHBvcnRlZCgpIGlzIGZhbHNlCitQQVNTIHRleHQ0LmlzUHJlc3NBY3Rpb25TdXBw
b3J0ZWQoKSBpcyBmYWxzZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNU
IENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9w
cmVzcy1hY3Rpb24tbm90LWV4cG9zZWQtd2l0aC1ldmVudC1kZWxlZ2F0aW9uLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJlc3MtYWN0
aW9uLW5vdC1leHBvc2VkLXdpdGgtZXZlbnQtZGVsZWdhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wcmVzcy1hY3Rpb24t
bm90LWV4cG9zZWQtd2l0aC1ldmVudC1kZWxlZ2F0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTcsMjQgKzcsNDIgQEAKIAogPGRpdiBpZD0iZ3JvdXAxIiByb2xlPSJncm91cCI+CiB0ZXh0MQor
PC9kaXY+CisKIDxicj4KKworPGRpdiBpZD0iZ3JvdXAyIiByb2xlPSJncm91cCI+CiA8ZGl2IHJv
bGU9InRleHQiIGlkPSJ0ZXh0MiI+dGV4dDI8L2Rpdj4KKzwvZGl2PgogCis8ZGl2IGlkPSJncm91
cDMiIHJvbGU9Imdyb3VwIj4KK2E8YnI+Cis8YnV0dG9uPmI8L2J1dHRvbj4KIDwvZGl2PgogCis8
ZGl2IGlkPSJncm91cDQiIHJvbGU9Imdyb3VwIj4KKyAgPGRpdiByb2xlPSJncm91cCI+CisgICAg
IDxidXR0b24+YTwvYnV0dG9uPgorICAgICA8YnV0dG9uPmI8L2J1dHRvbj4KKyAgICAgYworICA8
L2Rpdj4KKzwvZGl2PgorCis8L2Rpdj4KKwogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KIAogPHNjcmlwdD4KIAotICAgIGRlc2NyaXB0aW9uKCJUaGlz
IHRlc3RzIHRoYXQgaWYgdGhlIGJvZHkgb3IgaHRtbCB0YWdzIGhhdmUgY2xpY2sgaGFuZGxlcnMs
IHRoZW4gbm9uLWNvbnRyb2wgZWxlbWVudHMgZG8gbm90IGF1dG9tYXRpY2FsbHkgaGF2ZSB0aGUg
cHJlc3MgYWN0aW9uIG9uIHRoZW0uIik7CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgd2hl
dGhlciBzdGF0aWMgdGV4dCBoYXMgdGhlIHByZXNzIGFjdGlvbiBzdXBwb3J0ZWQuIElmIHRoZSBo
YW5kbGVyIGlzIG9uIGFuIGVsZW1lbnQgdGhhdCBoYXMgbW9yZSB0aGFuIG9uZSBjaGlsZCwgdGhl
biB3ZSBhc3N1bWUgdGhhdCBldmVudCBkZWxlZ2F0aW9uIGlzIGJlaW5nIHVzZWQuIEluIHRoYXQg
Y2FzZSB3ZSBkbyBub3QgZXhwb3NlIHByZXNzIHN1cHBvcnRlZC4iKTsKIAogICAgIGlmICh3aW5k
b3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKIAogICAgICAgICAgIGZ1bmN0aW9uIGxpc3Rl
bmVyKCkgeyB9CiAKICAgICAgICAgICB2YXIgZ3JvdXAgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImdyb3VwMSIpOwotICAgICAgICAgIHZhciB0ZXh0MSA9
IGdyb3VwLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgICAgdmFyIHRl
eHQxID0gZ3JvdXAuY2hpbGRBdEluZGV4KDApOwogICAgICAgICAgIHZhciB0ZXh0MiA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDIiKTsKIAogICAg
ICAgICAgIHNob3VsZEJlKCJ0ZXh0MS5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsK
QEAgLTM5LDE4ICs1NywzNyBAQAogICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJo
dG1sIikucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lciwgZmFsc2UpOwogICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuYWRkRXZlbnRMaXN0ZW5lcign
Y2xpY2snLCBsaXN0ZW5lciwgZmFsc2UpOwogCi0gICAgICAgICAgZGVidWcoIldoZW4gYSBjbGlj
ayBoYW5kbGVyIGlzIG9uIHRoZSBCT0RZIHRhZywgQVhQcmVzcyBzaG91bGQgbm90IGJlIHN1cHBv
cnRlZCBvbiBzdGF0aWMgdGV4dCBjaGlsZHJlbiBlbGVtZW50cyBhdXRvbWF0aWNhbGx5LiIpOwor
ICAgICAgICAgIGRlYnVnKCJcbldoZW4gYSBjbGljayBoYW5kbGVyIGlzIG9uIHRoZSBCT0RZIHRh
ZywgQVhQcmVzcyBzaG91bGQgbm90IGJlIHN1cHBvcnRlZCBvbiBzdGF0aWMgdGV4dCBjaGlsZHJl
biBlbGVtZW50cyBhdXRvbWF0aWNhbGx5LlxuIik7CiAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgi
dGV4dDEuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIik7CiAgICAgICAgICAgc2hvdWxkQmVGYWxz
ZSgidGV4dDIuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIik7CiAKICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiYm9keSIpLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbGlz
dGVuZXIsIGZhbHNlKTsKICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JvdXAx
IikuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lciwgZmFsc2UpOwogCi0gICAgICAg
ICAgZGVidWcoIldoZW4gYSBjbGljayBoYW5kbGVyIGlzIG9uIGEgcGFyZW50IHRhZywgQVhQcmVz
cyBzaG91bGQgYmUgc3VwcG9ydGVkIG9uIHN0YXRpYyB0ZXh0IGNoaWxkcmVuIGVsZW1lbnRzIGF1
dG9tYXRpY2FsbHkuIik7CisgICAgICAgICAgZGVidWcoIlxuV2hlbiBhIGNsaWNrIGhhbmRsZXIg
aXMgb24gYSBwYXJlbnQgdGFnLCBBWFByZXNzIHNob3VsZCBiZSBzdXBwb3J0ZWQgb24gc3RhdGlj
IHRleHQgY2hpbGRyZW4gZWxlbWVudHMgYXV0b21hdGljYWxseS5cbiIpOwogICAgICAgICAgIHNo
b3VsZEJlVHJ1ZSgidGV4dDEuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIik7CisgICAgICAgICAg
c2hvdWxkQmVGYWxzZSgidGV4dDIuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIik7CisKKyAgICAg
ICAgICBkZWJ1ZygiXG5XaGVuIGEgY2xpY2sgaGFuZGxlciBpcyBvbiB0aGUgcGFyZW50LCB1c2lu
ZyByb2xlPXRleHQgc2hvdWxkIGV4cG9zZSBBWFByZXNzLlxuIik7CisgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImdyb3VwMiIpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbGlz
dGVuZXIsIGZhbHNlKTsKICAgICAgICAgICBzaG91bGRCZVRydWUoInRleHQyLmlzUHJlc3NBY3Rp
b25TdXBwb3J0ZWQoKSIpOwogCi0gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdy
b3VwMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAgICBkZWJ1ZygiXG5X
aGVuIGEgY2xpY2sgaGFuZGxlciBpcyBvbiBhIHBhcmVudCB0aGF0IGhhcyBtb3JlIHRoYW4gb25l
IGRlc2NlbmRhbnQsIGRvIG5vdCBleHBvc2UgcHJlc3MuXG4iKTsKKyAgICAgICAgICB2YXIgdGV4
dDMgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2dyb3Vw
MycpLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgICBzaG91bGRCZUZhbHNlKCJ0ZXh0My5pc1By
ZXNzQWN0aW9uU3VwcG9ydGVkKCkiKTsKKworICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJncm91cDMiKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGxpc3RlbmVyLCBmYWxzZSk7
CisgICAgICAgICAgc2hvdWxkQmVGYWxzZSgidGV4dDMuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgp
Iik7CisKKyAgICAgICAgICBkZWJ1ZygiXG5XaGVuIGEgY2xpY2sgaGFuZGxlciBpcyBvbiBhIHBh
cmVudCB0aGF0IGhhcyBvbmUgZGlyZWN0IGRlc2NlbmRhbnQsIGJ1dCB0aGVuIHN1Yi1kZXNjZW5k
YW50cyBiZWxvdyB0aGF0LCBkbyBub3QgZXhwb3NlIHByZXNzLlxuIik7CisgICAgICAgICAgdmFy
IHRleHQ0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdn
cm91cDQnKS5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDIpOworICAgICAgICAgIHNob3Vs
ZEJlRmFsc2UoInRleHQ0LmlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQoKSIpOworCisgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyb3VwNCIpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNr
JywgbGlzdGVuZXIsIGZhbHNlKTsKKyAgICAgICAgICBzaG91bGRCZUZhbHNlKCJ0ZXh0NC5pc1By
ZXNzQWN0aW9uU3VwcG9ydGVkKCkiKTsKKworICAgICAgICAgIGZvciAodmFyIGsgPSAxOyBrIDw9
IDQ7IGsrKykKKyAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyb3VwIiAr
IGspLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgICB9CiAKIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249896</attachid>
            <date>2015-03-31 23:31:25 -0700</date>
            <delta_ts>2015-04-04 15:17:37 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>14350</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjIxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE1LTAzLTMxICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEhldXJpc3RpYzog
QXZvaWQgZXhwb3NpbmcgYW4gZWxlbWVudCBhcyBjbGlja2FibGUgaWYgbW91c2UgZXZlbnQgZGVs
ZWdhdGlvbiBpcyBoYW5kbGVkIG9uIGFuIEFYRWxlbWVudCB3aXRoIG1vcmUgdGhhbiBvbmUgZGVz
Y2VuZGFudCBBWEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNjI0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1vZGlmeSB0aGUgbG9naWMgZm9yIGRldGVybWluZyB3aGV0aGVyIGFuIGVsZW1l
bnQgc3VwcG9ydHMgdGhlIHByZXNzIGFjdGlvbiBieSB0cnlpbmcgdG8gZmlsdGVyIG91dCBvYmpl
Y3RzIGJlaW5nIGhhbmRsZWQgYnkgZXZlbnQgZGVsZWdhdGlvbi4KKyAgICAgICAgVGhlIGhldXJp
c3RpYyBpcyBpZiBhbiBlbGVtZW50IGhhbmRsZXMgY2xpY2sgYWN0aW9ucyBhbmQgaGFzIG1vcmUg
dGhhbiBvbmUgb2YgYSB7c3RhdGljIHRleHQsIGltYWdlLCBjb250cm9sLCBsaW5rLCBoZWFkaW5n
fSwgdGhlbiB3ZSB0aGluaworICAgICAgICBpdCdzIHVzaW5nIGV2ZW50IGRlbGVnYXRpb24sIGFu
ZCBkbyBub3QgZXhwb3NlIHRoZSBwcmVzcyBhY3Rpb24uCisKKyAgICAgICAgVGVzdDogcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJlc3MtYWN0aW9uLW5vdC1leHBvc2VkLWZvci1ldmVudC1k
ZWxlZ2F0aW9uLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0
c1ByZXNzQWN0aW9uKToKKwogMjAxNS0wMy0zMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGNvbXB1dGUgYSByZWdp
b24gZm9yIGVsZW1lbnRzIG9uIHRoZSBwYWdlIHRoYXQgaGF2ZSB3aGVlbCBldmVudCBoYW5kbGVy
cwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwCShyZXZpc2lvbiAxODIyMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAy
LDYgKzIwMDIsMjEgQEAKICAgICBpZiAoIWFjdGlvbkVsZW1lbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAKKyAgICAvLyBbQnVnOiAxMzYyNDddIEhldXJpc3RpYzogZWxlbWVudCBoYW5k
bGVycyB0aGF0IGhhdmUgbW9yZSB0aGFuIG9uZSBhY2Nlc3NpYmxlIGRlc2NlbmRhbnQgc2hvdWxk
IG5vdCBiZSBleHBvc2VkIGFzIHN1cHBvcnRpbmcgcHJlc3MuCisgICAgaWYgKGFjdGlvbkVsZW1l
bnQgIT0gZWxlbWVudCgpKSB7CisgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9i
aiA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoYWN0aW9uRWxlbWVudCkpIHsKKyAgICAg
ICAgICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByZXN1bHRzOworICAgICAgICAgICAg
Ly8gU2VhcmNoIHdpdGhpbiBmb3IgaW1tZWRpYXRlIGRlc2NlbmRhbnRzIHRoYXQgYXJlIHN0YXRp
YyB0ZXh0LiBJZiB3ZSBmaW5kIG1vcmUgdGhhbiBvbmUKKyAgICAgICAgICAgIC8vIHRoZW4gdGhp
cyBpcyBhbiBldmVudCBkZWxlZ2F0b3IgYWN0aW9uRWxlbWVudCBhbmQgd2Ugc2hvdWxkIGV4cG9z
ZSB0aGUgcHJlc3MgYWN0aW9uLgorICAgICAgICAgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlTZWFy
Y2hLZXk+IGtleXMoeyBTdGF0aWNUZXh0U2VhcmNoS2V5LCBDb250cm9sU2VhcmNoS2V5LCBHcmFw
aGljU2VhcmNoS2V5LCBIZWFkaW5nU2VhcmNoS2V5LCBMaW5rU2VhcmNoS2V5IH0pOworICAgICAg
ICAgICAgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGNyaXRlcmlhKGF4T2JqLCBTZWFyY2hE
aXJlY3Rpb25OZXh0LCAiIiwgMiwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgIGNyaXRlcmlh
LnNlYXJjaEtleXMgPSBrZXlzOworICAgICAgICAgICAgYXhPYmotPmZpbmRNYXRjaGluZ09iamVj
dHMoJmNyaXRlcmlhLCByZXN1bHRzKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHRzLnNpemUoKSA+
IDEpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAg
IAogICAgIC8vIFtCdWc6IDEzMzYxM10gSGV1cmlzdGljOiBJZiB0aGUgYWN0aW9uIGVsZW1lbnQg
aXMgcHJlc2VudGF0aW9uYWwsIHdlIHNob3VsZG4ndCBleHBvc2UgcHJlc3MgYXMgYSBzdXBwb3J0
ZWQgYWN0aW9uLgogICAgIHJldHVybiAhbm9kZUhhc1ByZXNlbnRhdGlvblJvbGUoYWN0aW9uRWxl
bWVudCk7CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODIyMTUpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wMy0zMSAgQ2hyaXMg
RmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBIZXVyaXN0aWM6
IEF2b2lkIGV4cG9zaW5nIGFuIGVsZW1lbnQgYXMgY2xpY2thYmxlIGlmIG1vdXNlIGV2ZW50IGRl
bGVnYXRpb24gaXMgaGFuZGxlZCBvbiBhbiBBWEVsZW1lbnQgd2l0aCBtb3JlIHRoYW4gb25lIGRl
c2NlbmRhbnQgQVhFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzYyNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3ByZXNzLWFjdGlvbi1ub3Qt
ZXhwb3NlZC13aGVuLWJvZHktaXMtY2xpY2staGFuZGxlci1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJlc3MtYWN0aW9uLW5vdC1l
eHBvc2VkLXdoZW4tYm9keS1pcy1jbGljay1oYW5kbGVyLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJlc3MtYWN0aW9uLW5vdC1leHBvc2VkLWZv
ci1ldmVudC1kZWxlZ2F0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJlc3MtYWN0aW9uLW5vdC1leHBvc2VkLWZvci1ldmVudC1k
ZWxlZ2F0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDE1LTAzLTMxICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gY29tcHV0
ZSBhIHJlZ2lvbiBmb3IgZWxlbWVudHMgb24gdGhlIHBhZ2UgdGhhdCBoYXZlIHdoZWVsIGV2ZW50
IGhhbmRsZXJzCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9w
cmVzcy1hY3Rpb24tbm90LWV4cG9zZWQtZm9yLWV2ZW50LWRlbGVnYXRpb24tZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3By
ZXNzLWFjdGlvbi1ub3QtZXhwb3NlZC1mb3ItZXZlbnQtZGVsZWdhdGlvbi1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9w
cmVzcy1hY3Rpb24tbm90LWV4cG9zZWQtZm9yLWV2ZW50LWRlbGVnYXRpb24tZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAgQEAKKworCitUaGlzIHRlc3RzIHdoZXRoZXIg
c3RhdGljIHRleHQgaGFzIHRoZSBwcmVzcyBhY3Rpb24gc3VwcG9ydGVkLiBJZiB0aGUgaGFuZGxl
ciBpcyBvbiBhbiBlbGVtZW50IHRoYXQgaGFzIG1vcmUgdGhhbiBvbmUgY2hpbGQsIHRoZW4gd2Ug
YXNzdW1lIHRoYXQgZXZlbnQgZGVsZWdhdGlvbiBpcyBiZWluZyB1c2VkLiBJbiB0aGF0IGNhc2Ug
d2UgZG8gbm90IGV4cG9zZSBwcmVzcyBzdXBwb3J0ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIHRleHQxLnJvbGUgaXMgJ0FYUm9sZTogQVhTdGF0aWNUZXh0JworUEFT
UyB0ZXh0Mi5yb2xlIGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKK1doZW4gYSBjbGljayBoYW5k
bGVyIGlzIG9uIHRoZSBIVE1MIHRhZywgQVhQcmVzcyBzaG91bGQgbm90IGJlIHN1cHBvcnRlZCBv
biBzdGF0aWMgdGV4dCBjaGlsZHJlbiBlbGVtZW50cyBhdXRvbWF0aWNhbGx5LgorUEFTUyB0ZXh0
MS5pc1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkgaXMgZmFsc2UKK1BBU1MgdGV4dDIuaXNQcmVzc0Fj
dGlvblN1cHBvcnRlZCgpIGlzIGZhbHNlCisKK1doZW4gYSBjbGljayBoYW5kbGVyIGlzIG9uIHRo
ZSBCT0RZIHRhZywgQVhQcmVzcyBzaG91bGQgbm90IGJlIHN1cHBvcnRlZCBvbiBzdGF0aWMgdGV4
dCBjaGlsZHJlbiBlbGVtZW50cyBhdXRvbWF0aWNhbGx5LgorCitQQVNTIHRleHQxLmlzUHJlc3NB
Y3Rpb25TdXBwb3J0ZWQoKSBpcyBmYWxzZQorUEFTUyB0ZXh0Mi5pc1ByZXNzQWN0aW9uU3VwcG9y
dGVkKCkgaXMgZmFsc2UKKworV2hlbiBhIGNsaWNrIGhhbmRsZXIgaXMgb24gYSBwYXJlbnQgdGFn
LCBBWFByZXNzIHNob3VsZCBiZSBzdXBwb3J0ZWQgb24gc3RhdGljIHRleHQgY2hpbGRyZW4gZWxl
bWVudHMgYXV0b21hdGljYWxseS4KKworUEFTUyB0ZXh0MS5pc1ByZXNzQWN0aW9uU3VwcG9ydGVk
KCkgaXMgdHJ1ZQorUEFTUyB0ZXh0Mi5pc1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkgaXMgZmFsc2UK
KworV2hlbiBhIGNsaWNrIGhhbmRsZXIgaXMgb24gdGhlIHBhcmVudCwgdXNpbmcgcm9sZT10ZXh0
IHNob3VsZCBleHBvc2UgQVhQcmVzcy4KKworUEFTUyB0ZXh0Mi5pc1ByZXNzQWN0aW9uU3VwcG9y
dGVkKCkgaXMgdHJ1ZQorCitXaGVuIGEgY2xpY2sgaGFuZGxlciBpcyBvbiBhIHBhcmVudCB0aGF0
IGhhcyBtb3JlIHRoYW4gb25lIGRlc2NlbmRhbnQsIGRvIG5vdCBleHBvc2UgcHJlc3MuCisKK1BB
U1MgdGV4dDMuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIGlzIGZhbHNlCitQQVNTIHRleHQzLmlz
UHJlc3NBY3Rpb25TdXBwb3J0ZWQoKSBpcyBmYWxzZQorCitXaGVuIGEgY2xpY2sgaGFuZGxlciBp
cyBvbiBhIHBhcmVudCB0aGF0IGhhcyBvbmUgZGlyZWN0IGRlc2NlbmRhbnQsIGJ1dCB0aGVuIHN1
Yi1kZXNjZW5kYW50cyBiZWxvdyB0aGF0LCBkbyBub3QgZXhwb3NlIHByZXNzLgorCitQQVNTIHRl
eHQ0LmlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQoKSBpcyBmYWxzZQorUEFTUyB0ZXh0NC5pc1ByZXNz
QWN0aW9uU3VwcG9ydGVkKCkgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS9wcmVzcy1hY3Rpb24tbm90LWV4cG9zZWQtZm9yLWV2ZW50LWRlbGVnYXRpb24u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS9wcmVzcy1hY3Rpb24tbm90LWV4cG9zZWQtZm9yLWV2ZW50LWRlbGVnYXRpb24uaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3ByZXNz
LWFjdGlvbi1ub3QtZXhwb3NlZC1mb3ItZXZlbnQtZGVsZWdhdGlvbi5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsOTcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sIGlkPSJodG1sIj4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBp
ZD0iYm9keSI+CisKKzxkaXYgaWQ9Imdyb3VwMSIgcm9sZT0iZ3JvdXAiPgordGV4dDEKKzwvZGl2
PgorCis8YnI+CisKKzxkaXYgaWQ9Imdyb3VwMiIgcm9sZT0iZ3JvdXAiPgorPGRpdiByb2xlPSJ0
ZXh0IiBpZD0idGV4dDIiPnRleHQyPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD0iZ3JvdXAzIiBy
b2xlPSJncm91cCI+CithPGJyPgorPGJ1dHRvbj5iPC9idXR0b24+Cis8L2Rpdj4KKworPGRpdiBp
ZD0iZ3JvdXA0IiByb2xlPSJncm91cCI+CisgIDxkaXYgcm9sZT0iZ3JvdXAiPgorICAgICA8YnV0
dG9uPmE8L2J1dHRvbj4KKyAgICAgPGJ1dHRvbj5iPC9idXR0b24+CisgICAgIGMKKyAgPC9kaXY+
Cis8L2Rpdj4KKworPC9kaXY+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
cyB3aGV0aGVyIHN0YXRpYyB0ZXh0IGhhcyB0aGUgcHJlc3MgYWN0aW9uIHN1cHBvcnRlZC4gSWYg
dGhlIGhhbmRsZXIgaXMgb24gYW4gZWxlbWVudCB0aGF0IGhhcyBtb3JlIHRoYW4gb25lIGNoaWxk
LCB0aGVuIHdlIGFzc3VtZSB0aGF0IGV2ZW50IGRlbGVnYXRpb24gaXMgYmVpbmcgdXNlZC4gSW4g
dGhhdCBjYXNlIHdlIGRvIG5vdCBleHBvc2UgcHJlc3Mgc3VwcG9ydGVkLiIpOworCisgICAgaWYg
KHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworCisgICAgICAgICAgZnVuY3Rpb24g
bGlzdGVuZXIoKSB7IH0KKworICAgICAgICAgIHZhciBncm91cCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiZ3JvdXAxIik7CisgICAgICAgICAgdmFyIHRl
eHQxID0gZ3JvdXAuY2hpbGRBdEluZGV4KDApOworICAgICAgICAgIHZhciB0ZXh0MiA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDIiKTsKKworICAg
ICAgICAgIHNob3VsZEJlKCJ0ZXh0MS5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsK
KyAgICAgICAgICBzaG91bGRCZSgidGV4dDIucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQn
Iik7CisKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbCIpLmFkZEV2ZW50
TGlzdGVuZXIoJ2NsaWNrJywgbGlzdGVuZXIsIGZhbHNlKTsKKworICAgICAgICAgIGRlYnVnKCJX
aGVuIGEgY2xpY2sgaGFuZGxlciBpcyBvbiB0aGUgSFRNTCB0YWcsIEFYUHJlc3Mgc2hvdWxkIG5v
dCBiZSBzdXBwb3J0ZWQgb24gc3RhdGljIHRleHQgY2hpbGRyZW4gZWxlbWVudHMgYXV0b21hdGlj
YWxseS4iKTsKKyAgICAgICAgICBzaG91bGRCZUZhbHNlKCJ0ZXh0MS5pc1ByZXNzQWN0aW9uU3Vw
cG9ydGVkKCkiKTsKKyAgICAgICAgICBzaG91bGRCZUZhbHNlKCJ0ZXh0Mi5pc1ByZXNzQWN0aW9u
U3VwcG9ydGVkKCkiKTsKKworICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJodG1s
IikucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lciwgZmFsc2UpOworICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuYWRkRXZlbnRMaXN0ZW5lcignY2xp
Y2snLCBsaXN0ZW5lciwgZmFsc2UpOworCisgICAgICAgICAgZGVidWcoIlxuV2hlbiBhIGNsaWNr
IGhhbmRsZXIgaXMgb24gdGhlIEJPRFkgdGFnLCBBWFByZXNzIHNob3VsZCBub3QgYmUgc3VwcG9y
dGVkIG9uIHN0YXRpYyB0ZXh0IGNoaWxkcmVuIGVsZW1lbnRzIGF1dG9tYXRpY2FsbHkuXG4iKTsK
KyAgICAgICAgICBzaG91bGRCZUZhbHNlKCJ0ZXh0MS5pc1ByZXNzQWN0aW9uU3VwcG9ydGVkKCki
KTsKKyAgICAgICAgICBzaG91bGRCZUZhbHNlKCJ0ZXh0Mi5pc1ByZXNzQWN0aW9uU3VwcG9ydGVk
KCkiKTsKKworICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikucmVtb3Zl
RXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lciwgZmFsc2UpOworICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJncm91cDEiKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGxp
c3RlbmVyLCBmYWxzZSk7CisKKyAgICAgICAgICBkZWJ1ZygiXG5XaGVuIGEgY2xpY2sgaGFuZGxl
ciBpcyBvbiBhIHBhcmVudCB0YWcsIEFYUHJlc3Mgc2hvdWxkIGJlIHN1cHBvcnRlZCBvbiBzdGF0
aWMgdGV4dCBjaGlsZHJlbiBlbGVtZW50cyBhdXRvbWF0aWNhbGx5LlxuIik7CisgICAgICAgICAg
c2hvdWxkQmVUcnVlKCJ0ZXh0MS5pc1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkiKTsKKyAgICAgICAg
ICBzaG91bGRCZUZhbHNlKCJ0ZXh0Mi5pc1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkiKTsKKworICAg
ICAgICAgIGRlYnVnKCJcbldoZW4gYSBjbGljayBoYW5kbGVyIGlzIG9uIHRoZSBwYXJlbnQsIHVz
aW5nIHJvbGU9dGV4dCBzaG91bGQgZXhwb3NlIEFYUHJlc3MuXG4iKTsKKyAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JvdXAyIikuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBs
aXN0ZW5lciwgZmFsc2UpOworICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dDIuaXNQcmVzc0Fj
dGlvblN1cHBvcnRlZCgpIik7CisKKyAgICAgICAgICBkZWJ1ZygiXG5XaGVuIGEgY2xpY2sgaGFu
ZGxlciBpcyBvbiBhIHBhcmVudCB0aGF0IGhhcyBtb3JlIHRoYW4gb25lIGRlc2NlbmRhbnQsIGRv
IG5vdCBleHBvc2UgcHJlc3MuXG4iKTsKKyAgICAgICAgICB2YXIgdGV4dDMgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2dyb3VwMycpLmNoaWxkQXRJbmRl
eCgwKTsKKyAgICAgICAgICBzaG91bGRCZUZhbHNlKCJ0ZXh0My5pc1ByZXNzQWN0aW9uU3VwcG9y
dGVkKCkiKTsKKworICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncm91cDMiKS5h
ZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGxpc3RlbmVyLCBmYWxzZSk7CisgICAgICAgICAgc2hv
dWxkQmVGYWxzZSgidGV4dDMuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIik7CisKKyAgICAgICAg
ICBkZWJ1ZygiXG5XaGVuIGEgY2xpY2sgaGFuZGxlciBpcyBvbiBhIHBhcmVudCB0aGF0IGhhcyBv
bmUgZGlyZWN0IGRlc2NlbmRhbnQsIGJ1dCB0aGVuIHN1Yi1kZXNjZW5kYW50cyBiZWxvdyB0aGF0
LCBkbyBub3QgZXhwb3NlIHByZXNzLlxuIik7CisgICAgICAgICAgdmFyIHRleHQ0ID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdncm91cDQnKS5jaGlsZEF0
SW5kZXgoMCkuY2hpbGRBdEluZGV4KDIpOworICAgICAgICAgIHNob3VsZEJlRmFsc2UoInRleHQ0
LmlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQoKSIpOworCisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImdyb3VwNCIpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbGlzdGVuZXIsIGZh
bHNlKTsKKyAgICAgICAgICBzaG91bGRCZUZhbHNlKCJ0ZXh0NC5pc1ByZXNzQWN0aW9uU3VwcG9y
dGVkKCkiKTsKKworICAgICAgICAgIGZvciAodmFyIGsgPSAxOyBrIDw9IDQ7IGsrKykKKyAgICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyb3VwIiArIGspLnN0eWxlLnZpc2li
aWxpdHkgPSAiaGlkZGVuIjsKKyAgICB9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wcmVzcy1h
Y3Rpb24tbm90LWV4cG9zZWQtd2hlbi1ib2R5LWlzLWNsaWNrLWhhbmRsZXItZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3By
ZXNzLWFjdGlvbi1ub3QtZXhwb3NlZC13aGVuLWJvZHktaXMtY2xpY2staGFuZGxlci1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE4MjIxNSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L3ByZXNzLWFjdGlvbi1ub3QtZXhwb3NlZC13aGVuLWJvZHktaXMtY2xpY2staGFu
ZGxlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMjEgKzAsMCBAQAotCi1UaGlz
IHRlc3RzIHRoYXQgaWYgdGhlIGJvZHkgb3IgaHRtbCB0YWdzIGhhdmUgY2xpY2sgaGFuZGxlcnMs
IHRoZW4gbm9uLWNvbnRyb2wgZWxlbWVudHMgZG8gbm90IGF1dG9tYXRpY2FsbHkgaGF2ZSB0aGUg
cHJlc3MgYWN0aW9uIG9uIHRoZW0uCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1Q
QVNTIHRleHQxLnJvbGUgaXMgJ0FYUm9sZTogQVhTdGF0aWNUZXh0JwotUEFTUyB0ZXh0Mi5yb2xl
IGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKLVdoZW4gYSBjbGljayBoYW5kbGVyIGlzIG9uIHRo
ZSBIVE1MIHRhZywgQVhQcmVzcyBzaG91bGQgbm90IGJlIHN1cHBvcnRlZCBvbiBzdGF0aWMgdGV4
dCBjaGlsZHJlbiBlbGVtZW50cyBhdXRvbWF0aWNhbGx5LgotUEFTUyB0ZXh0MS5pc1ByZXNzQWN0
aW9uU3VwcG9ydGVkKCkgaXMgZmFsc2UKLVBBU1MgdGV4dDIuaXNQcmVzc0FjdGlvblN1cHBvcnRl
ZCgpIGlzIGZhbHNlCi1XaGVuIGEgY2xpY2sgaGFuZGxlciBpcyBvbiB0aGUgQk9EWSB0YWcsIEFY
UHJlc3Mgc2hvdWxkIG5vdCBiZSBzdXBwb3J0ZWQgb24gc3RhdGljIHRleHQgY2hpbGRyZW4gZWxl
bWVudHMgYXV0b21hdGljYWxseS4KLVBBU1MgdGV4dDEuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgp
IGlzIGZhbHNlCi1QQVNTIHRleHQyLmlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQoKSBpcyBmYWxzZQot
V2hlbiBhIGNsaWNrIGhhbmRsZXIgaXMgb24gYSBwYXJlbnQgdGFnLCBBWFByZXNzIHNob3VsZCBi
ZSBzdXBwb3J0ZWQgb24gc3RhdGljIHRleHQgY2hpbGRyZW4gZWxlbWVudHMgYXV0b21hdGljYWxs
eS4KLVBBU1MgdGV4dDEuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIGlzIHRydWUKLVBBU1MgdGV4
dDIuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIGlzIHRydWUKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS9wcmVzcy1hY3Rpb24tbm90LWV4cG9zZWQtd2hlbi1ib2R5LWlz
LWNsaWNrLWhhbmRsZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS9wcmVzcy1hY3Rpb24tbm90LWV4cG9zZWQtd2hlbi1ib2R5LWlzLWNs
aWNrLWhhbmRsZXIuaHRtbAkocmV2aXNpb24gMTgyMjE1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJlc3MtYWN0aW9uLW5vdC1leHBvc2VkLXdoZW4tYm9keS1p
cy1jbGljay1oYW5kbGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNjAgKzAsMCBAQAotPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWwgaWQ9Imh0
bWwiPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4KLQotPGRpdiBpZD0iZ3Jv
dXAxIiByb2xlPSJncm91cCI+Ci10ZXh0MQotPGJyPgotPGRpdiByb2xlPSJ0ZXh0IiBpZD0idGV4
dDIiPnRleHQyPC9kaXY+Ci0KLTwvZGl2PgotCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCi08c2NyaXB0PgotCi0gICAgZGVzY3JpcHRpb24oIlRo
aXMgdGVzdHMgdGhhdCBpZiB0aGUgYm9keSBvciBodG1sIHRhZ3MgaGF2ZSBjbGljayBoYW5kbGVy
cywgdGhlbiBub24tY29udHJvbCBlbGVtZW50cyBkbyBub3QgYXV0b21hdGljYWxseSBoYXZlIHRo
ZSBwcmVzcyBhY3Rpb24gb24gdGhlbS4iKTsKLQotICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpIHsKLQotICAgICAgICAgIGZ1bmN0aW9uIGxpc3RlbmVyKCkgeyB9Ci0KLSAg
ICAgICAgICB2YXIgZ3JvdXAgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoImdyb3VwMSIpOwotICAgICAgICAgIHZhciB0ZXh0MSA9IGdyb3VwLmNoaWxkQXRJ
bmRleCgwKS5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgICAgdmFyIHRleHQyID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0MiIpOwotCi0gICAgICAg
ICAgc2hvdWxkQmUoInRleHQxLnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOwotICAg
ICAgICAgIHNob3VsZEJlKCJ0ZXh0Mi5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsK
LQotICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJodG1sIikuYWRkRXZlbnRMaXN0
ZW5lcignY2xpY2snLCBsaXN0ZW5lciwgZmFsc2UpOwotCi0gICAgICAgICAgZGVidWcoIldoZW4g
YSBjbGljayBoYW5kbGVyIGlzIG9uIHRoZSBIVE1MIHRhZywgQVhQcmVzcyBzaG91bGQgbm90IGJl
IHN1cHBvcnRlZCBvbiBzdGF0aWMgdGV4dCBjaGlsZHJlbiBlbGVtZW50cyBhdXRvbWF0aWNhbGx5
LiIpOwotICAgICAgICAgIHNob3VsZEJlRmFsc2UoInRleHQxLmlzUHJlc3NBY3Rpb25TdXBwb3J0
ZWQoKSIpOwotICAgICAgICAgIHNob3VsZEJlRmFsc2UoInRleHQyLmlzUHJlc3NBY3Rpb25TdXBw
b3J0ZWQoKSIpOwotCi0gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImh0bWwiKS5y
ZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGxpc3RlbmVyLCBmYWxzZSk7Ci0gICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycs
IGxpc3RlbmVyLCBmYWxzZSk7Ci0KLSAgICAgICAgICBkZWJ1ZygiV2hlbiBhIGNsaWNrIGhhbmRs
ZXIgaXMgb24gdGhlIEJPRFkgdGFnLCBBWFByZXNzIHNob3VsZCBub3QgYmUgc3VwcG9ydGVkIG9u
IHN0YXRpYyB0ZXh0IGNoaWxkcmVuIGVsZW1lbnRzIGF1dG9tYXRpY2FsbHkuIik7Ci0gICAgICAg
ICAgc2hvdWxkQmVGYWxzZSgidGV4dDEuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIik7Ci0gICAg
ICAgICAgc2hvdWxkQmVGYWxzZSgidGV4dDIuaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpIik7Ci0K
LSAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpLnJlbW92ZUV2ZW50TGlz
dGVuZXIoJ2NsaWNrJywgbGlzdGVuZXIsIGZhbHNlKTsKLSAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZ3JvdXAxIikuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lciwg
ZmFsc2UpOwotCi0gICAgICAgICAgZGVidWcoIldoZW4gYSBjbGljayBoYW5kbGVyIGlzIG9uIGEg
cGFyZW50IHRhZywgQVhQcmVzcyBzaG91bGQgYmUgc3VwcG9ydGVkIG9uIHN0YXRpYyB0ZXh0IGNo
aWxkcmVuIGVsZW1lbnRzIGF1dG9tYXRpY2FsbHkuIik7Ci0gICAgICAgICAgc2hvdWxkQmVUcnVl
KCJ0ZXh0MS5pc1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkiKTsKLSAgICAgICAgICBzaG91bGRCZVRy
dWUoInRleHQyLmlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQoKSIpOwotCi0gICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImdyb3VwMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsK
LSAgICB9Ci0KLTwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Cg==
</data>
<flag name="review"
          id="274737"
          type_id="1"
          status="+"
          setter="mario"
    />
          </attachment>
      

    </bug>

</bugzilla>