<?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>183352</bug_id>
          
          <creation_ts>2018-03-05 17:21:42 -0800</creation_ts>
          <short_desc>AX: Implement accessible dismiss action on iOS</short_desc>
          <delta_ts>2018-03-14 10:51:16 -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>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nan Wang">n_wang</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>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1403828</commentid>
    <comment_count>0</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2018-03-05 17:21:42 -0800</bug_when>
    <thetext>With AOM accessibility events
Spec: https://wicg.github.io/aom/spec/phase2.html

we have a onaccessibledismiss event listener.

Let&apos;s first support the escape action on iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403833</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-05 17:22:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/38161500&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404097</commentid>
    <comment_count>2</comment_count>
      <attachid>335123</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2018-03-06 11:58:50 -0800</bug_when>
    <thetext>Created attachment 335123
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404098</commentid>
    <comment_count>3</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2018-03-06 12:01:03 -0800</bug_when>
    <thetext>(In reply to Nan Wang from comment #2)
&gt; Created attachment 335123 [details]
&gt; patch

Wrong bug! :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406085</commentid>
    <comment_count>4</comment_count>
      <attachid>335685</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2018-03-13 02:17:03 -0700</bug_when>
    <thetext>Created attachment 335685
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406086</commentid>
    <comment_count>5</comment_count>
      <attachid>335686</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2018-03-13 02:17:53 -0700</bug_when>
    <thetext>Created attachment 335686
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406152</commentid>
    <comment_count>6</comment_count>
      <attachid>335686</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2018-03-13 10:49:47 -0700</bug_when>
    <thetext>Comment on attachment 335686
patch

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

&gt; Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:1496
&gt; +    return m_object-&gt;dispatchAccessibilityEventWithType(AccessibilityEventType::Dismiss);

I think we should somehow determine when to dispatch this event, and return YES. Otherwise the page in Safari would still back to the previous page. 
Maybe we dispatch the event only when there&apos;s a listener</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406177</commentid>
    <comment_count>7</comment_count>
      <attachid>335686</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2018-03-13 12:08:28 -0700</bug_when>
    <thetext>Comment on attachment 335686
patch

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

&gt;&gt; Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:1496
&gt;&gt; +    return m_object-&gt;dispatchAccessibilityEventWithType(AccessibilityEventType::Dismiss);
&gt; 
&gt; I think we should somehow determine when to dispatch this event, and return YES. Otherwise the page in Safari would still back to the previous page. 
&gt; Maybe we dispatch the event only when there&apos;s a listener

can we just if the event Default was prevented? is that good enough?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406180</commentid>
    <comment_count>8</comment_count>
      <attachid>335686</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2018-03-13 12:14:11 -0700</bug_when>
    <thetext>Comment on attachment 335686
patch

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

&gt;&gt;&gt; Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:1496
&gt;&gt;&gt; +    return m_object-&gt;dispatchAccessibilityEventWithType(AccessibilityEventType::Dismiss);
&gt;&gt; 
&gt;&gt; I think we should somehow determine when to dispatch this event, and return YES. Otherwise the page in Safari would still back to the previous page. 
&gt;&gt; Maybe we dispatch the event only when there&apos;s a listener
&gt; 
&gt; can we just if the event Default was prevented? is that good enough?

It works but this event listener will only work with preventDefault. I&apos;m not sure if it&apos;s a good practice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406183</commentid>
    <comment_count>9</comment_count>
      <attachid>335686</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2018-03-13 12:24:33 -0700</bug_when>
    <thetext>Comment on attachment 335686
patch

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

&gt;&gt;&gt;&gt; Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:1496
&gt;&gt;&gt;&gt; +    return m_object-&gt;dispatchAccessibilityEventWithType(AccessibilityEventType::Dismiss);
&gt;&gt;&gt; 
&gt;&gt;&gt; I think we should somehow determine when to dispatch this event, and return YES. Otherwise the page in Safari would still back to the previous page. 
&gt;&gt;&gt; Maybe we dispatch the event only when there&apos;s a listener
&gt;&gt; 
&gt;&gt; can we just if the event Default was prevented? is that good enough?
&gt; 
&gt; It works but this event listener will only work with preventDefault. I&apos;m not sure if it&apos;s a good practice?

Another concern is that there could be some generic dismiss action we implement in future (something similar to enter a &apos;ESC&apos; keycode), and preventDefault is to prevent calling into that generic function.
But I think currently I&apos;m fine with either case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406362</commentid>
    <comment_count>10</comment_count>
      <attachid>335765</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2018-03-14 00:18:54 -0700</bug_when>
    <thetext>Created attachment 335765
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406400</commentid>
    <comment_count>11</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2018-03-14 08:51:01 -0700</bug_when>
    <thetext>
&gt; Another concern is that there could be some generic dismiss action we
&gt; implement in future (something similar to enter a &apos;ESC&apos; keycode), and
&gt; preventDefault is to prevent calling into that generic function.
&gt; But I think currently I&apos;m fine with either case.

can you take a look again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406401</commentid>
    <comment_count>12</comment_count>
      <attachid>335765</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2018-03-14 08:54:27 -0700</bug_when>
    <thetext>Comment on attachment 335765
patch

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

&gt; LayoutTests/accessibility/ios-simulator/AOM-dismiss-event.html:30
&gt; +        axNode.dismiss();

Can we also test the case when there&apos;s no event listener? Should be easy since dismiss() returns a boolean</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406402</commentid>
    <comment_count>13</comment_count>
      <attachid>335765</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2018-03-14 08:56:09 -0700</bug_when>
    <thetext>Comment on attachment 335765
patch

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

&gt; Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:1496
&gt; +    m_object-&gt;dispatchAccessibilityEventWithType(AccessibilityEventType::Dismiss);

I think we should also call shouldDispatchAccessibilityEvent() here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406403</commentid>
    <comment_count>14</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2018-03-14 08:56:48 -0700</bug_when>
    <thetext>(In reply to Nan Wang from comment #13)
&gt; Comment on attachment 335765 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=335765&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:1496
&gt; &gt; +    m_object-&gt;dispatchAccessibilityEventWithType(AccessibilityEventType::Dismiss);
&gt; 
&gt; I think we should also call shouldDispatchAccessibilityEvent() here

nevermind, it&apos;s checked in dispatchAccessibilityEventWithType already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406405</commentid>
    <comment_count>15</comment_count>
      <attachid>335771</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2018-03-14 08:58:39 -0700</bug_when>
    <thetext>Created attachment 335771
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406406</commentid>
    <comment_count>16</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2018-03-14 08:59:00 -0700</bug_when>
    <thetext>(In reply to Nan Wang from comment #14)
&gt; (In reply to Nan Wang from comment #13)
&gt; &gt; Comment on attachment 335765 [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=335765&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:1496
&gt; &gt; &gt; +    m_object-&gt;dispatchAccessibilityEventWithType(AccessibilityEventType::Dismiss);
&gt; &gt; 
&gt; &gt; I think we should also call shouldDispatchAccessibilityEvent() here
&gt; 
&gt; nevermind, it&apos;s checked in dispatchAccessibilityEventWithType already.

we should probably check that when returning whether this event was processed. updated patch...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406407</commentid>
    <comment_count>17</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2018-03-14 09:03:24 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #16)
&gt; (In reply to Nan Wang from comment #14)
&gt; &gt; (In reply to Nan Wang from comment #13)
&gt; &gt; &gt; Comment on attachment 335765 [details]
&gt; &gt; &gt; patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=335765&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:1496
&gt; &gt; &gt; &gt; +    m_object-&gt;dispatchAccessibilityEventWithType(AccessibilityEventType::Dismiss);
&gt; &gt; &gt; 
&gt; &gt; &gt; I think we should also call shouldDispatchAccessibilityEvent() here
&gt; &gt; 
&gt; &gt; nevermind, it&apos;s checked in dispatchAccessibilityEventWithType already.
&gt; 
&gt; we should probably check that when returning whether this event was
&gt; processed. updated patch...

Yes I was about to comment on this. Can we also add a test case when there&apos;s no event listener?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406411</commentid>
    <comment_count>18</comment_count>
      <attachid>335773</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2018-03-14 09:09:51 -0700</bug_when>
    <thetext>Created attachment 335773
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406412</commentid>
    <comment_count>19</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2018-03-14 09:10:07 -0700</bug_when>
    <thetext>&gt; Yes I was about to comment on this. Can we also add a test case when there&apos;s
&gt; no event listener?

Added</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406417</commentid>
    <comment_count>20</comment_count>
      <attachid>335773</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-03-14 09:15:14 -0700</bug_when>
    <thetext>Comment on attachment 335773
patch

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

&gt; Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm:74
&gt; +    for (Node* node = this-&gt;node(); node; node = node-&gt;parentNode()) {

auto* should do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406424</commentid>
    <comment_count>21</comment_count>
      <attachid>335775</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2018-03-14 09:24:59 -0700</bug_when>
    <thetext>Created attachment 335775
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406442</commentid>
    <comment_count>22</comment_count>
      <attachid>335775</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-14 10:51:15 -0700</bug_when>
    <thetext>Comment on attachment 335775
patch for landing

Clearing flags on attachment: 335775

Committed r229603: &lt;https://trac.webkit.org/changeset/229603&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406443</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-14 10:51:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335123</attachid>
            <date>2018-03-06 11:58:50 -0800</date>
            <delta_ts>2018-03-06 12:00:48 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>4412</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTMzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE4LTAzLTA2ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEZsYWt5IHRlc3QgYWZ0ZXIgcjIy
OTMxMAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgz
Mzc2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODE4ODY4NT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgdGVzdCB0aGF0IGZvcmNlcyB0aGUg
Y29udGV4dCBtZW51IHRvIHNob3cgc29tZXRpbWVzIGxvY2tzIHVwIAorICAgICAgICB0aGUgdGVz
dCBydW5uZXIuIEFsc28sIHdlIG1pc3NlZCBhIGNhc2Ugd2hlcmUgY2FsbGluZyBBWFNob3dNZW51
CisgICAgICAgIGFjdGlvbiBvbiBhIGNvbWJvYm94IGlzIG5vdCBkaXNwYXRjaGluZyB0aGUgYWNj
ZXNzaWJpbGl0eSBldmVudC4KKworICAgICAgICBVc2luZyB0aGUgY29tYm9ib3ggZXhhbXBsZSB0
byB0ZXN0IHRoZSBldmVudCBkaXNwYXRjaGluZyBpbiBvcmRlciB0bworICAgICAgICBhdm9pZCB0
aGUgdGVzdCBoYW5nLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlQZXJmb3JtU2hvd01lbnVBY3Rpb25dKToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVNob3dDb250ZXh0
TWVudV0pOgorCiAyMDE4LTAzLTA2ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYiBBbmltYXRpb25zXSBBZGQgYSBuZXcgcnVudGltZSBmbGFnIHRvIGNv
bnRyb2wgd2hldGhlciBDU1MgQW5pbWF0aW9ucyBhbmQgQ1NTIFRyYW5zaXRpb25zIHNob3VsZCBy
dW4gdXNpbmcgdGhlIFdlYiBBbmltYXRpb25zIHRpbWVsaW5lCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkocmV2aXNpb24gMjI5MzMxKQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTM1MjEsNiArMzUyMSw5IEBAIC0gKHZvaWQpYWNjZXNzaWJp
bGl0eVBlcmZvcm1EZWNyZW1lbnRBY3QKIAogLSAodm9pZClhY2Nlc3NpYmlsaXR5UGVyZm9ybVNo
b3dNZW51QWN0aW9uCiB7CisgICAgaWYgKG1fb2JqZWN0ICYmIG1fb2JqZWN0LT5kaXNwYXRjaEFj
Y2Vzc2liaWxpdHlFdmVudFdpdGhUeXBlKEFjY2Vzc2liaWxpdHlFdmVudFR5cGU6OkNvbnRleHRN
ZW51KSkKKyAgICAgICAgcmV0dXJuOworICAgIAogICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94KQogICAgICAgICBtX29iamVjdC0+c2V0
SXNFeHBhbmRlZCh0cnVlKTsKICAgICBlbHNlIHsKQEAgLTM1MzksOSArMzU0Miw2IEBAIC0gKHZv
aWQpYWNjZXNzaWJpbGl0eVNob3dDb250ZXh0TWVudQogICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIGlmIChtX29iamVjdC0+ZGlzcGF0Y2hBY2Nlc3NpYmlsaXR5RXZl
bnRXaXRoVHlwZShBY2Nlc3NpYmlsaXR5RXZlbnRUeXBlOjpDb250ZXh0TWVudSkpCi0gICAgICAg
IHJldHVybjsKLSAgICAKICAgICBJbnRSZWN0IHJlY3QgPSBzbmFwcGVkSW50UmVjdChtX29iamVj
dC0+ZWxlbWVudFJlY3QoKSk7CiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX29iamVjdC0+
ZG9jdW1lbnRGcmFtZVZpZXcoKTsKICAgICAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTMzMSkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisy
MDE4LTAzLTA2ICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEZs
YWt5IHRlc3QgYWZ0ZXIgcjIyOTMxMAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgzMzc2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODE4ODY4NT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL0FPTS1ldmVudHMtYWxsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L21hYy9BT00tZXZlbnRzLWFsbC5odG1sOgorCiAyMDE4LTAzLTA2ICBDbGF1ZGlv
IFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIG5l
dyBiYXNlbGluZSBhZnRlciByMjI5MTc3CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9BT00tZXZlbnRzLWFsbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvQU9NLWV2ZW50cy1hbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAyMjkzMzEpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9BT00tZXZlbnRzLWFs
bC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw2IEBACi0gIGJ1dHRvbiAg
CisgIGJ1dHRvbgorb3B0aW9uIDEKKwogVGhpcyB0ZXN0cyBhbGwgYWNjZXNzaWJpbGl0eSBldmVu
dHMuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL0FPTS1ldmVudHMtYWxsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvQU9NLWV2ZW50cy1hbGwuaHRtbAkocmV2aXNpb24gMjI5MzMx
KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvQU9NLWV2ZW50cy1hbGwuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtOCw2ICs4LDExIEBACiA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9Imlu
cHV0Ij4KIDxidXR0b24gaWQ9ImJ1dHRvbiI+YnV0dG9uPC9idXR0b24+CiAKKzxkaXYgaWQ9ImNv
bWJvIiB0YWJpbmRleD0wIHJvbGU9ImNvbWJvYm94IiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJp
YS1sYWJlbD0iVGVzdCI+Cis8ZGl2IHJvbGU9Imxpc3Rib3giPgorPGRpdiByb2xlPSJvcHRpb24i
Pm9wdGlvbiAxPC9kaXY+Cis8L2Rpdj48L2Rpdj4KKwogPHNlbGVjdCBpZD0iZ3JvdXAiIG11bHRp
cGxlPSJtdWx0aXBsZSI+CiAgICAgPG9wdGlvbiBpZD0ib3B0aW9uIj5PcHRpb24gMTwvb3B0aW9u
PgogICAgIDxvcHRpb24+T3B0aW9uIDI8L29wdGlvbj4KQEAgLTczLDggKzc4LDggQEAKIAogICAg
ICAgICBmdW5jdGlvbiB0ZXN0U2hvd0NvbnRleHRNZW51KCkgewogICAgICAgICAgICAgZGVidWco
IlxuVGVzdCBhY2Nlc3NpYmxlY29udGV4dG1lbnUiKTsKLSAgICAgICAgICAgIG5vZGUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uIik7Ci0gICAgICAgICAgICBheE5vZGUgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImJ1dHRvbiIpOworICAg
ICAgICAgICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb21ibyIpOworICAgICAg
ICAgICAgYXhOb2RlID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJjb21ibyIpOwogCiAgICAgICAgICAgICBub2RlLm9uYWNjZXNzaWJsZWNvbnRleHRtZW51
ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgZGVidWcoInJlY2VpdmVkIGFjY2Vzc2li
bGVjb250ZXh0bWVudSBldmVudCIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335685</attachid>
            <date>2018-03-13 02:17:03 -0700</date>
            <delta_ts>2018-03-13 02:17:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>4590</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAzLTEzICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEltcGxlbWVudCBh
Y2Nlc3NpYmxlIGRpc21pc3MgYWN0aW9uIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMzUyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
ODE2MTUwMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvQU9NLWRpc21pc3MtZXZlbnQuaHRt
bAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlQZXJmb3JtRXNjYXBlXSk6CisKIDIwMTgtMDMtMTIgIEpvaG4gV2lsYW5kZXIg
IDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNz
OiBJbW1lZGlhdGVseSBmb3J3YXJkIGNvb2tpZSBhY2Nlc3MgYXQgdXNlciBpbnRlcmFjdGlvbiB3
aGVuIHRoZXJlJ3MgYW4gb3BlbmVyIGRvY3VtZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcklPUy5tbQkocmV2aXNpb24gMjI5NTY0KQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHdv
cmtpbmcgY29weSkKQEAgLTE0ODgsNiArMTQ4OCwxNCBAQAogICAgIHJldHVybiBbc2VsZiBjb252
ZXJ0UG9pbnRUb1NjcmVlblNwYWNlOmZsb2F0UG9pbnRdOwogfQogCistIChCT09MKWFjY2Vzc2li
aWxpdHlQZXJmb3JtRXNjYXBlCit7CisgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxp
dHlDYWxsXSkKKyAgICAgICAgcmV0dXJuIE5POworICAgIAorICAgIHJldHVybiBtX29iamVjdC0+
ZGlzcGF0Y2hBY2Nlc3NpYmlsaXR5RXZlbnRXaXRoVHlwZShBY2Nlc3NpYmlsaXR5RXZlbnRUeXBl
OjpEaXNtaXNzKTsKK30KKwogLSAoQk9PTClfYWNjZXNzaWJpbGl0eVNjcm9sbFRvVmlzaWJsZQog
ewogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMjk1NzQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0xMyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hA
YXBwbGUuY29tPgorCisgICAgICAgIEFYOiBJbXBsZW1lbnQgYWNjZXNzaWJsZSBkaXNtaXNzIGFj
dGlvbiBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MzM1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzgxNjE1MDA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lv
cy1zaW11bGF0b3IvQU9NLWRpc21pc3MtZXZlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvQU9NLWRpc21pc3MtZXZlbnQuaHRtbDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorCiAy
MDE4LTAzLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTG9h
ZCBtYXkgZ2V0IGNvbW1pdHRlZCBiZWZvcmUgcmVjZWl2aW5nIHBvbGljeSBmb3IgdGhlIHJlc291
cmNlIHJlc3BvbnNlCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0
b3IvQU9NLWRpc21pc3MtZXZlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9BT00tZGlzbWlzcy1ldmVudC1leHBlY3Rl
ZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2lt
dWxhdG9yL0FPTS1kaXNtaXNzLWV2ZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDExIEBACit0ZXN0MQorVGhpcyB0ZXN0cyB0aGUgYWNjZXNzaWJsZWRpc21pc3MgZXZl
bnQgb24gaU9TLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworcmVjZWl2ZWQgYWNj
ZXNzaWJsZWRpc21pc3M6IFtvYmplY3QgRXZlbnRdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9pb3Mtc2ltdWxhdG9yL0FPTS1kaXNtaXNzLWV2ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL0FPTS1kaXNtaXNzLWV2ZW50Lmh0
bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxh
dG9yL0FPTS1kaXNtaXNzLWV2ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5IGlkPSJib2R5Ij4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGRpdiBpZD0iY29u
dGVudCI+CisKKzxkaXYgaWQ9Imdyb3VwIiByb2xlPSJncm91cCIgdGFiaW5kZXg9MD4KK3Rlc3Qx
Cis8L2Rpdj4KKworPC9kaXY+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
cyB0aGUgYWNjZXNzaWJsZWRpc21pc3MgZXZlbnQgb24gaU9TLiIpOworCisgICAgaWYgKHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncm91cCIp
OworICAgICAgICB2YXIgYXhOb2RlID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJncm91cCIpOworICAgICAgICBub2RlLm9uYWNjZXNzaWJsZWRpc21pc3Mg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgZGVidWcoInJlY2VpdmVkIGFjY2Vzc2li
bGVkaXNtaXNzOiAiICsgZXZlbnQpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7IAorICAg
ICAgICAgfTsKKworICAgICAgICBheE5vZGUuZGlzbWlzcygpOworICAgIH0KKzwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMjk1NjQpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTQ5NSw2ICs0
OTUsNyBAQAogCiB3ZWJraXQub3JnL2IvMTgwODk4IGFjY2Vzc2liaWxpdHkvbWFjL0FPTS1ldmVu
dHMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE4MzAyMyBhY2Nlc3NpYmlsaXR5L21hYy9B
T00tZXZlbnRzLWFsbC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTgzMzUyIGFjY2Vzc2li
aWxpdHkvaW9zLXNpbXVsYXRvci9BT00tZGlzbWlzcy1ldmVudC5odG1sIFsgU2tpcCBdCiAKIHdl
YmtpdC5vcmcvYi8xODI3NTIgYWNjZXNzaWJpbGl0eS9tYWMvYWNjZXNzaWJpbGl0eS1tYWtlLWZp
cnN0LXJlc3BvbmRlci5odG1sIFsgU2tpcCBdCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335686</attachid>
            <date>2018-03-13 02:17:53 -0700</date>
            <delta_ts>2018-03-14 00:18:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>7937</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAzLTEzICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEltcGxlbWVudCBh
Y2Nlc3NpYmxlIGRpc21pc3MgYWN0aW9uIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMzUyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
ODE2MTUwMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvQU9NLWRpc21pc3MtZXZlbnQuaHRt
bAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlQZXJmb3JtRXNjYXBlXSk6CisKIDIwMTgtMDMtMTIgIEpvaG4gV2lsYW5kZXIg
IDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNz
OiBJbW1lZGlhdGVseSBmb3J3YXJkIGNvb2tpZSBhY2Nlc3MgYXQgdXNlciBpbnRlcmFjdGlvbiB3
aGVuIHRoZXJlJ3MgYW4gb3BlbmVyIGRvY3VtZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcklPUy5tbQkocmV2aXNpb24gMjI5NTY0KQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHdv
cmtpbmcgY29weSkKQEAgLTE0ODgsNiArMTQ4OCwxNCBAQAogICAgIHJldHVybiBbc2VsZiBjb252
ZXJ0UG9pbnRUb1NjcmVlblNwYWNlOmZsb2F0UG9pbnRdOwogfQogCistIChCT09MKWFjY2Vzc2li
aWxpdHlQZXJmb3JtRXNjYXBlCit7CisgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxp
dHlDYWxsXSkKKyAgICAgICAgcmV0dXJuIE5POworICAgIAorICAgIHJldHVybiBtX29iamVjdC0+
ZGlzcGF0Y2hBY2Nlc3NpYmlsaXR5RXZlbnRXaXRoVHlwZShBY2Nlc3NpYmlsaXR5RXZlbnRUeXBl
OjpEaXNtaXNzKTsKK30KKwogLSAoQk9PTClfYWNjZXNzaWJpbGl0eVNjcm9sbFRvVmlzaWJsZQog
ewogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMjk1NzQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0xMyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hA
YXBwbGUuY29tPgorCisgICAgICAgIEFYOiBJbXBsZW1lbnQgYWNjZXNzaWJsZSBkaXNtaXNzIGFj
dGlvbiBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MzM1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzgxNjE1MDA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lv
cy1zaW11bGF0b3IvQU9NLWRpc21pc3MtZXZlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvQU9NLWRpc21pc3MtZXZlbnQuaHRtbDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorCiAy
MDE4LTAzLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTG9h
ZCBtYXkgZ2V0IGNvbW1pdHRlZCBiZWZvcmUgcmVjZWl2aW5nIHBvbGljeSBmb3IgdGhlIHJlc291
cmNlIHJlc3BvbnNlCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0
b3IvQU9NLWRpc21pc3MtZXZlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9BT00tZGlzbWlzcy1ldmVudC1leHBlY3Rl
ZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2lt
dWxhdG9yL0FPTS1kaXNtaXNzLWV2ZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDExIEBACit0ZXN0MQorVGhpcyB0ZXN0cyB0aGUgYWNjZXNzaWJsZWRpc21pc3MgZXZl
bnQgb24gaU9TLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworcmVjZWl2ZWQgYWNj
ZXNzaWJsZWRpc21pc3M6IFtvYmplY3QgRXZlbnRdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9pb3Mtc2ltdWxhdG9yL0FPTS1kaXNtaXNzLWV2ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL0FPTS1kaXNtaXNzLWV2ZW50Lmh0
bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxh
dG9yL0FPTS1kaXNtaXNzLWV2ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5IGlkPSJib2R5Ij4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGRpdiBpZD0iY29u
dGVudCI+CisKKzxkaXYgaWQ9Imdyb3VwIiByb2xlPSJncm91cCIgdGFiaW5kZXg9MD4KK3Rlc3Qx
Cis8L2Rpdj4KKworPC9kaXY+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
cyB0aGUgYWNjZXNzaWJsZWRpc21pc3MgZXZlbnQgb24gaU9TLiIpOworCisgICAgaWYgKHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncm91cCIp
OworICAgICAgICB2YXIgYXhOb2RlID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJncm91cCIpOworICAgICAgICBub2RlLm9uYWNjZXNzaWJsZWRpc21pc3Mg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgZGVidWcoInJlY2VpdmVkIGFjY2Vzc2li
bGVkaXNtaXNzOiAiICsgZXZlbnQpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7IAorICAg
ICAgICAgfTsKKworICAgICAgICBheE5vZGUuZGlzbWlzcygpOworICAgIH0KKzwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMjk1NjQpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTQ5NSw2ICs0
OTUsNyBAQAogCiB3ZWJraXQub3JnL2IvMTgwODk4IGFjY2Vzc2liaWxpdHkvbWFjL0FPTS1ldmVu
dHMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE4MzAyMyBhY2Nlc3NpYmlsaXR5L21hYy9B
T00tZXZlbnRzLWFsbC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTgzMzUyIGFjY2Vzc2li
aWxpdHkvaW9zLXNpbXVsYXRvci9BT00tZGlzbWlzcy1ldmVudC5odG1sIFsgU2tpcCBdCiAKIHdl
YmtpdC5vcmcvYi8xODI3NTIgYWNjZXNzaWJpbGl0eS9tYWMvYWNjZXNzaWJpbGl0eS1tYWtlLWZp
cnN0LXJlc3BvbmRlci5odG1sIFsgU2tpcCBdCiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTU3NSkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE4LTAzLTEzICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEltcGxlbWVu
dCBhY2Nlc3NpYmxlIGRpc21pc3MgYWN0aW9uIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMzUyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8zODE2MTUwMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc21pc3Mg
Y29uc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGw6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElP
Uy5tbToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzbWlzcyk6CisK
IDIwMTgtMDMtMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgU3RvcCB1c2luZyBTREsgY29uZGl0aW9uYWxzIHRvIGNvbnRyb2wgZmVhdHVyZSBkZWZp
bml0aW9ucwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
Mjk1NjQpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBACiBib29s
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VhcmNoRmllbGQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1RleHRBcmVhKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VNYXRjaGVzVGV4dE5lYXJNYXJr
ZXJzKEpTU3RyaW5nUmVmLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciosIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsgfQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpkaXNtaXNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogICAgIAogLy8g
VW5zdXBwb3J0ZWQgbWV0aG9kcyBvbiB2YXJpb3VzIHBsYXRmb3Jtcy4gQXMgdGhleSdyZSBpbXBs
ZW1lbnRlZCBvbiBvdGhlciBwbGF0Zm9ybXMgdGhpcyBsaXN0IHNob3VsZCBiZSBtb2RpZmllZC4K
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiAyMjk1NjQpCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsNyBAQAogICAgIHZvaWQgZGVjcmVtZW50
KCk7CiAgICAgdm9pZCBzaG93TWVudSgpOwogICAgIHZvaWQgcHJlc3MoKTsKKyAgICBib29sIGRp
c21pc3MoKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzeW5jUHJlc3MoKTsKICNlbHNl
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwJ
KHJldmlzaW9uIDIyOTU2NCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTExOCw2ICsxMTgsNyBAQAogICAgIHZvaWQgcHJlc3MoKTsKICAgICB2b2lkIHN5bmNQcmVzcygp
OwogICAgIHZvaWQgc2hvd01lbnUoKTsKKyAgICBib29sZWFuIGRpc21pc3MoKTsKIAogICAgIC8v
IEF0dHJpYnV0ZSBpbmZvLgogICAgIERPTVN0cmluZyBhbGxBdHRyaWJ1dGVzKCk7CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0JKHJldmlzaW9uIDIyOTU2
NCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTgzNCw2ICs4MzQsMTEgQEAK
IHsKICAgICBbbV9lbGVtZW50IF9hY2Nlc3NpYmlsaXR5QWN0aXZhdGVdOwogfQorICAgIAorYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNtaXNzKCkKK3sKKyAgICByZXR1cm4gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5UGVyZm9ybUVzY2FwZV07Cit9CiAKIHZvaWQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVt
ZW50KSBjb25zdAogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335765</attachid>
            <date>2018-03-14 00:18:54 -0700</date>
            <delta_ts>2018-03-14 08:58:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>9380</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAzLTEzICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEltcGxlbWVudCBh
Y2Nlc3NpYmxlIGRpc21pc3MgYWN0aW9uIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMzUyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
ODE2MTUwMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvQU9NLWRpc21pc3MtZXZlbnQuaHRt
bAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlQZXJmb3JtRXNjYXBlXSk6CisKIDIwMTgtMDMtMTIgIEpvaG4gV2lsYW5kZXIg
IDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNz
OiBJbW1lZGlhdGVseSBmb3J3YXJkIGNvb2tpZSBhY2Nlc3MgYXQgdXNlciBpbnRlcmFjdGlvbiB3
aGVuIHRoZXJlJ3MgYW4gb3BlbmVyIGRvY3VtZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gMjI5NTY0
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMjQsNiArMTEyNCw3IEBACiAgICAgaW50IGFjY2Vzc2liaWxp
dHlQYXNzd29yZEZpZWxkTGVuZ3RoKCk7CiAgICAgYm9vbCBoYXNUb3VjaEV2ZW50TGlzdGVuZXIo
KSBjb25zdDsKICAgICBib29sIGlzSW5wdXRUeXBlUG9wdXBCdXR0b24oKSBjb25zdDsKKyAgICBi
b29sIGhhc0FjY2Vzc2libGVEaXNtaXNzRXZlbnRMaXN0ZW5lcigpIGNvbnN0OwogI2VuZGlmCiAg
ICAgCiAgICAgLy8gYWxsb3dzIGZvciBhbiBBY2Nlc3NpYmlsaXR5T2JqZWN0IHRvIHVwZGF0ZSBp
dHMgcmVuZGVyIHRyZWUgb3IgcGVyZm9ybQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCShyZXZp
c2lvbiAyMjk1NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3Np
YmlsaXR5T2JqZWN0SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwxNSBAQAogewog
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7
CiB9CisgICAgCitib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc0FjY2Vzc2libGVEaXNtaXNz
RXZlbnRMaXN0ZW5lcigpIGNvbnN0Cit7CisgICAgZm9yIChOb2RlKiBub2RlID0gdGhpcy0+bm9k
ZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIGlmIChub2Rl
LT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkuYWNjZXNzaWJsZWRpc21pc3NFdmVudCkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQog
CiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc1RvdWNoRXZlbnRMaXN0ZW5lcigpIGNvbnN0
CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQkocmV2aXNp
b24gMjI5NTY0KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0ODgsNiArMTQ4
OCwxNyBAQAogICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UG9pbnRUb1NjcmVlblNwYWNlOmZsb2F0
UG9pbnRdOwogfQogCistIChCT09MKWFjY2Vzc2liaWxpdHlQZXJmb3JtRXNjYXBlCit7CisgICAg
aWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKKyAgICAgICAgcmV0dXJuIE5P
OworICAgIAorICAgIG1fb2JqZWN0LT5kaXNwYXRjaEFjY2Vzc2liaWxpdHlFdmVudFdpdGhUeXBl
KEFjY2Vzc2liaWxpdHlFdmVudFR5cGU6OkRpc21pc3MpOworICAgIAorICAgIC8vIFJldHVybiB3
aGV0aGVyIGEgbGlzdGVuZXIgcmVjZWl2ZWQgdGhpcyBldmVudCBzbyBpdCBwcmV2ZW50cyBvdGhl
ciBjYWxsZXJzIHVwIHRoZSBoaWVyYXJjaHkgY2hhaW4uCisgICAgcmV0dXJuIG1fb2JqZWN0LT5o
YXNBY2Nlc3NpYmxlRGlzbWlzc0V2ZW50TGlzdGVuZXIoKTsKK30KKwogLSAoQk9PTClfYWNjZXNz
aWJpbGl0eVNjcm9sbFRvVmlzaWJsZQogewogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3Np
YmlsaXR5Q2FsbF0pCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjk1NzQpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0xMyAgQ2hy
aXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBJbXBsZW1l
bnQgYWNjZXNzaWJsZSBkaXNtaXNzIGFjdGlvbiBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzM1MgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzgxNjE1MDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvQU9NLWRpc21pc3MtZXZlbnQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3Iv
QU9NLWRpc21pc3MtZXZlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE4LTAzLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgTG9hZCBtYXkgZ2V0IGNvbW1pdHRlZCBiZWZvcmUgcmVjZWl2
aW5nIHBvbGljeSBmb3IgdGhlIHJlc291cmNlIHJlc3BvbnNlCkluZGV4OiBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvQU9NLWRpc21pc3MtZXZlbnQtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9B
T00tZGlzbWlzcy1ldmVudC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL0FPTS1kaXNtaXNzLWV2ZW50LWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACit0ZXN0MQorVGhpcyB0ZXN0cyB0
aGUgYWNjZXNzaWJsZWRpc21pc3MgZXZlbnQgb24gaU9TLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworcmVjZWl2ZWQgYWNjZXNzaWJsZWRpc21pc3M6IFtvYmplY3QgRXZlbnRdCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL0FPTS1kaXNtaXNzLWV2ZW50
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxh
dG9yL0FPTS1kaXNtaXNzLWV2ZW50Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL0FPTS1kaXNtaXNzLWV2ZW50Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5
IGlkPSJib2R5Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPGRpdiBpZD0iY29udGVudCI+CisKKzxkaXYgaWQ9Imdyb3VwIiByb2xlPSJn
cm91cCIgdGFiaW5kZXg9MD4KK3Rlc3QxCis8L2Rpdj4KKworPC9kaXY+CisKKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisKKyAg
ICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWNjZXNzaWJsZWRpc21pc3MgZXZlbnQgb24g
aU9TLiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAg
ICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgbm9kZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJncm91cCIpOworICAgICAgICB2YXIgYXhOb2RlID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJncm91cCIpOworICAgICAgICBu
b2RlLm9uYWNjZXNzaWJsZWRpc21pc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAg
ZGVidWcoInJlY2VpdmVkIGFjY2Vzc2libGVkaXNtaXNzOiAiICsgZXZlbnQpOworICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7IAorICAgICAgICAgfTsKKworICAgICAgICBheE5vZGUuZGlzbWlz
cygpOworICAgIH0KKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMjk1
NjQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMJKHdv
cmtpbmcgY29weSkKQEAgLTQ5NSw2ICs0OTUsNyBAQAogCiB3ZWJraXQub3JnL2IvMTgwODk4IGFj
Y2Vzc2liaWxpdHkvbWFjL0FPTS1ldmVudHMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE4
MzAyMyBhY2Nlc3NpYmlsaXR5L21hYy9BT00tZXZlbnRzLWFsbC5odG1sIFsgU2tpcCBdCit3ZWJr
aXQub3JnL2IvMTgzMzUyIGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9BT00tZGlzbWlzcy1l
dmVudC5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8xODI3NTIgYWNjZXNzaWJpbGl0eS9t
YWMvYWNjZXNzaWJpbGl0eS1tYWtlLWZpcnN0LXJlc3BvbmRlci5odG1sIFsgU2tpcCBdCiAKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIyOTU3NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE4IEBACisyMDE4LTAzLTEzICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+
CisKKyAgICAgICAgQVg6IEltcGxlbWVudCBhY2Nlc3NpYmxlIGRpc21pc3MgYWN0aW9uIG9uIGlP
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMzUy
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODE2MTUwMD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmRpc21pc3MgY29uc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3Mv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZGlzbWlzcyk6CisKIDIwMTgtMDMtMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBTREsgY29uZGl0aW9uYWxz
IHRvIGNvbnRyb2wgZmVhdHVyZSBkZWZpbml0aW9ucwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjk1NjQpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NSw2ICs3NSw3IEBACiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VhcmNo
RmllbGQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc1RleHRBcmVhKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2Vy
UmFuZ2VNYXRjaGVzVGV4dE5lYXJNYXJrZXJzKEpTU3RyaW5nUmVmLCBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciosIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsgfQor
Ym9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNtaXNzKCkgeyByZXR1cm4gZmFsc2U7IH0K
ICNlbmRpZgogICAgIAogLy8gVW5zdXBwb3J0ZWQgbWV0aG9kcyBvbiB2YXJpb3VzIHBsYXRmb3Jt
cy4gQXMgdGhleSdyZSBpbXBsZW1lbnRlZCBvbiBvdGhlciBwbGF0Zm9ybXMgdGhpcyBsaXN0IHNo
b3VsZCBiZSBtb2RpZmllZC4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZp
c2lvbiAyMjk1NjQpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsNyBAQAog
ICAgIHZvaWQgZGVjcmVtZW50KCk7CiAgICAgdm9pZCBzaG93TWVudSgpOwogICAgIHZvaWQgcHJl
c3MoKTsKKyAgICBib29sIGRpc21pc3MoKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBz
eW5jUHJlc3MoKTsKICNlbHNlCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5pZGwJKHJldmlzaW9uIDIyOTU2NCkKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsNyBAQAogICAgIHZvaWQgcHJlc3MoKTsKICAg
ICB2b2lkIHN5bmNQcmVzcygpOwogICAgIHZvaWQgc2hvd01lbnUoKTsKKyAgICBib29sZWFuIGRp
c21pc3MoKTsKIAogICAgIC8vIEF0dHJpYnV0ZSBpbmZvLgogICAgIERPTVN0cmluZyBhbGxBdHRy
aWJ1dGVzKCk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lv
cy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1Mu
bW0JKHJldmlzaW9uIDIyOTU2NCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTgzNCw2ICs4MzQsMTEgQEAKIHsKICAgICBbbV9lbGVtZW50IF9hY2Nlc3NpYmlsaXR5QWN0aXZh
dGVdOwogfQorICAgIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNtaXNzKCkKK3sK
KyAgICByZXR1cm4gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5UGVyZm9ybUVzY2FwZV07Cit9CiAK
IHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335771</attachid>
            <date>2018-03-14 08:58:39 -0700</date>
            <delta_ts>2018-03-14 09:09:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>9428</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAzLTEzICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEltcGxlbWVudCBh
Y2Nlc3NpYmxlIGRpc21pc3MgYWN0aW9uIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMzUyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
ODE2MTUwMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvQU9NLWRpc21pc3MtZXZlbnQuaHRt
bAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlQZXJmb3JtRXNjYXBlXSk6CisKIDIwMTgtMDMtMTIgIEpvaG4gV2lsYW5kZXIg
IDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNz
OiBJbW1lZGlhdGVseSBmb3J3YXJkIGNvb2tpZSBhY2Nlc3MgYXQgdXNlciBpbnRlcmFjdGlvbiB3
aGVuIHRoZXJlJ3MgYW4gb3BlbmVyIGRvY3VtZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gMjI5NTY0
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMjQsNiArMTEyNCw3IEBACiAgICAgaW50IGFjY2Vzc2liaWxp
dHlQYXNzd29yZEZpZWxkTGVuZ3RoKCk7CiAgICAgYm9vbCBoYXNUb3VjaEV2ZW50TGlzdGVuZXIo
KSBjb25zdDsKICAgICBib29sIGlzSW5wdXRUeXBlUG9wdXBCdXR0b24oKSBjb25zdDsKKyAgICBi
b29sIGhhc0FjY2Vzc2libGVEaXNtaXNzRXZlbnRMaXN0ZW5lcigpIGNvbnN0OwogI2VuZGlmCiAg
ICAgCiAgICAgLy8gYWxsb3dzIGZvciBhbiBBY2Nlc3NpYmlsaXR5T2JqZWN0IHRvIHVwZGF0ZSBp
dHMgcmVuZGVyIHRyZWUgb3IgcGVyZm9ybQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCShyZXZp
c2lvbiAyMjk1NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3Np
YmlsaXR5T2JqZWN0SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwxNSBAQAogewog
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7
CiB9CisgICAgCitib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc0FjY2Vzc2libGVEaXNtaXNz
RXZlbnRMaXN0ZW5lcigpIGNvbnN0Cit7CisgICAgZm9yIChOb2RlKiBub2RlID0gdGhpcy0+bm9k
ZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIGlmIChub2Rl
LT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkuYWNjZXNzaWJsZWRpc21pc3NFdmVudCkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQog
CiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc1RvdWNoRXZlbnRMaXN0ZW5lcigpIGNvbnN0
CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQkocmV2aXNp
b24gMjI5NTY0KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0ODgsNiArMTQ4
OCwxNyBAQAogICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UG9pbnRUb1NjcmVlblNwYWNlOmZsb2F0
UG9pbnRdOwogfQogCistIChCT09MKWFjY2Vzc2liaWxpdHlQZXJmb3JtRXNjYXBlCit7CisgICAg
aWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKKyAgICAgICAgcmV0dXJuIE5P
OworICAgIAorICAgIG1fb2JqZWN0LT5kaXNwYXRjaEFjY2Vzc2liaWxpdHlFdmVudFdpdGhUeXBl
KEFjY2Vzc2liaWxpdHlFdmVudFR5cGU6OkRpc21pc3MpOworICAgIAorICAgIC8vIFJldHVybiB3
aGV0aGVyIGEgbGlzdGVuZXIgcmVjZWl2ZWQgdGhpcyBldmVudCBzbyBpdCBwcmV2ZW50cyBvdGhl
ciBjYWxsZXJzIHVwIHRoZSBoaWVyYXJjaHkgY2hhaW4uCisgICAgcmV0dXJuIG1fb2JqZWN0LT5z
aG91bGREaXNwYXRjaEFjY2Vzc2liaWxpdHlFdmVudCgpICYmIG1fb2JqZWN0LT5oYXNBY2Nlc3Np
YmxlRGlzbWlzc0V2ZW50TGlzdGVuZXIoKTsKK30KKwogLSAoQk9PTClfYWNjZXNzaWJpbGl0eVNj
cm9sbFRvVmlzaWJsZQogewogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2Fs
bF0pCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjk1NzQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0xMyAgQ2hyaXMgRmxlaXph
Y2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBJbXBsZW1lbnQgYWNjZXNz
aWJsZSBkaXNtaXNzIGFjdGlvbiBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MzM1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzgxNjE1
MDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvQU9NLWRpc21pc3MtZXZlbnQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvQU9NLWRpc21p
c3MtZXZlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhw
ZWN0YXRpb25zOgorCiAyMDE4LTAzLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgTG9hZCBtYXkgZ2V0IGNvbW1pdHRlZCBiZWZvcmUgcmVjZWl2aW5nIHBvbGlj
eSBmb3IgdGhlIHJlc291cmNlIHJlc3BvbnNlCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2lvcy1zaW11bGF0b3IvQU9NLWRpc21pc3MtZXZlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9BT00tZGlzbWlz
cy1ldmVudC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9pb3Mtc2ltdWxhdG9yL0FPTS1kaXNtaXNzLWV2ZW50LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACit0ZXN0MQorVGhpcyB0ZXN0cyB0aGUgYWNjZXNz
aWJsZWRpc21pc3MgZXZlbnQgb24gaU9TLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworcmVjZWl2ZWQgYWNjZXNzaWJsZWRpc21pc3M6IFtvYmplY3QgRXZlbnRdCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL0FPTS1kaXNtaXNzLWV2ZW50Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL0FPTS1k
aXNtaXNzLWV2ZW50Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9pb3Mtc2ltdWxhdG9yL0FPTS1kaXNtaXNzLWV2ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5IGlkPSJib2R5
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPGRpdiBpZD0iY29udGVudCI+CisKKzxkaXYgaWQ9Imdyb3VwIiByb2xlPSJncm91cCIgdGFi
aW5kZXg9MD4KK3Rlc3QxCis8L2Rpdj4KKworPC9kaXY+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisKKyAgICBkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0cyB0aGUgYWNjZXNzaWJsZWRpc21pc3MgZXZlbnQgb24gaU9TLiIpOwor
CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJncm91cCIpOworICAgICAgICB2YXIgYXhOb2RlID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJncm91cCIpOworICAgICAgICBub2RlLm9uYWNj
ZXNzaWJsZWRpc21pc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgZGVidWcoInJl
Y2VpdmVkIGFjY2Vzc2libGVkaXNtaXNzOiAiICsgZXZlbnQpOworICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7IAorICAgICAgICAgfTsKKworICAgICAgICBheE5vZGUuZGlzbWlzcygpOworICAg
IH0KKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMjk1NjQpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5NSw2ICs0OTUsNyBAQAogCiB3ZWJraXQub3JnL2IvMTgwODk4IGFjY2Vzc2liaWxp
dHkvbWFjL0FPTS1ldmVudHMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE4MzAyMyBhY2Nl
c3NpYmlsaXR5L21hYy9BT00tZXZlbnRzLWFsbC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2Iv
MTgzMzUyIGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9BT00tZGlzbWlzcy1ldmVudC5odG1s
IFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8xODI3NTIgYWNjZXNzaWJpbGl0eS9tYWMvYWNjZXNz
aWJpbGl0eS1tYWtlLWZpcnN0LXJlc3BvbmRlci5odG1sIFsgU2tpcCBdCiAKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTU3
NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisy
MDE4LTAzLTEzICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgQVg6IEltcGxlbWVudCBhY2Nlc3NpYmxlIGRpc21pc3MgYWN0aW9uIG9uIGlPUworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMzUyCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zODE2MTUwMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmRpc21pc3MgY29uc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGw6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudElPUy5tbToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZGlzbWlzcyk6CisKIDIwMTgtMDMtMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBTREsgY29uZGl0aW9uYWxzIHRvIGNvbnRy
b2wgZmVhdHVyZSBkZWZpbml0aW9ucwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAyMjk1NjQpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2
ICs3NSw3IEBACiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VhcmNoRmllbGQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1Rl
eHRBcmVhKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VNYXRj
aGVzVGV4dE5lYXJNYXJrZXJzKEpTU3RyaW5nUmVmLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcios
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsgfQorYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpkaXNtaXNzKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgog
ICAgIAogLy8gVW5zdXBwb3J0ZWQgbWV0aG9kcyBvbiB2YXJpb3VzIHBsYXRmb3Jtcy4gQXMgdGhl
eSdyZSBpbXBsZW1lbnRlZCBvbiBvdGhlciBwbGF0Zm9ybXMgdGhpcyBsaXN0IHNob3VsZCBiZSBt
b2RpZmllZC4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiAyMjk1
NjQpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsNyBAQAogICAgIHZvaWQg
ZGVjcmVtZW50KCk7CiAgICAgdm9pZCBzaG93TWVudSgpOwogICAgIHZvaWQgcHJlc3MoKTsKKyAg
ICBib29sIGRpc21pc3MoKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzeW5jUHJlc3Mo
KTsKICNlbHNlCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5pZGwJKHJldmlzaW9uIDIyOTU2NCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTExOCw2ICsxMTgsNyBAQAogICAgIHZvaWQgcHJlc3MoKTsKICAgICB2b2lkIHN5
bmNQcmVzcygpOwogICAgIHZvaWQgc2hvd01lbnUoKTsKKyAgICBib29sZWFuIGRpc21pc3MoKTsK
IAogICAgIC8vIEF0dHJpYnV0ZSBpbmZvLgogICAgIERPTVN0cmluZyBhbGxBdHRyaWJ1dGVzKCk7
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0JKHJldmlz
aW9uIDIyOTU2NCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9z
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTgzNCw2ICs4
MzQsMTEgQEAKIHsKICAgICBbbV9lbGVtZW50IF9hY2Nlc3NpYmlsaXR5QWN0aXZhdGVdOwogfQor
ICAgIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNtaXNzKCkKK3sKKyAgICByZXR1
cm4gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5UGVyZm9ybUVzY2FwZV07Cit9CiAKIHZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KiBlbGVtZW50KSBjb25zdAogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335773</attachid>
            <date>2018-03-14 09:09:51 -0700</date>
            <delta_ts>2018-03-14 09:24:59 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>9812</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAzLTEzICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEltcGxlbWVudCBh
Y2Nlc3NpYmxlIGRpc21pc3MgYWN0aW9uIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMzUyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
ODE2MTUwMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvQU9NLWRpc21pc3MtZXZlbnQuaHRt
bAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlQZXJmb3JtRXNjYXBlXSk6CisKIDIwMTgtMDMtMTIgIEpvaG4gV2lsYW5kZXIg
IDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNz
OiBJbW1lZGlhdGVseSBmb3J3YXJkIGNvb2tpZSBhY2Nlc3MgYXQgdXNlciBpbnRlcmFjdGlvbiB3
aGVuIHRoZXJlJ3MgYW4gb3BlbmVyIGRvY3VtZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gMjI5NTY0
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMjQsNiArMTEyNCw3IEBACiAgICAgaW50IGFjY2Vzc2liaWxp
dHlQYXNzd29yZEZpZWxkTGVuZ3RoKCk7CiAgICAgYm9vbCBoYXNUb3VjaEV2ZW50TGlzdGVuZXIo
KSBjb25zdDsKICAgICBib29sIGlzSW5wdXRUeXBlUG9wdXBCdXR0b24oKSBjb25zdDsKKyAgICBi
b29sIGhhc0FjY2Vzc2libGVEaXNtaXNzRXZlbnRMaXN0ZW5lcigpIGNvbnN0OwogI2VuZGlmCiAg
ICAgCiAgICAgLy8gYWxsb3dzIGZvciBhbiBBY2Nlc3NpYmlsaXR5T2JqZWN0IHRvIHVwZGF0ZSBp
dHMgcmVuZGVyIHRyZWUgb3IgcGVyZm9ybQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCShyZXZp
c2lvbiAyMjk1NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3Np
YmlsaXR5T2JqZWN0SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwxNSBAQAogewog
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7
CiB9CisgICAgCitib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc0FjY2Vzc2libGVEaXNtaXNz
RXZlbnRMaXN0ZW5lcigpIGNvbnN0Cit7CisgICAgZm9yIChOb2RlKiBub2RlID0gdGhpcy0+bm9k
ZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIGlmIChub2Rl
LT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkuYWNjZXNzaWJsZWRpc21pc3NFdmVudCkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQog
CiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc1RvdWNoRXZlbnRMaXN0ZW5lcigpIGNvbnN0
CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQkocmV2aXNp
b24gMjI5NTY0KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0ODgsNiArMTQ4
OCwxNyBAQAogICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UG9pbnRUb1NjcmVlblNwYWNlOmZsb2F0
UG9pbnRdOwogfQogCistIChCT09MKWFjY2Vzc2liaWxpdHlQZXJmb3JtRXNjYXBlCit7CisgICAg
aWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKKyAgICAgICAgcmV0dXJuIE5P
OworICAgIAorICAgIG1fb2JqZWN0LT5kaXNwYXRjaEFjY2Vzc2liaWxpdHlFdmVudFdpdGhUeXBl
KEFjY2Vzc2liaWxpdHlFdmVudFR5cGU6OkRpc21pc3MpOworICAgIAorICAgIC8vIFJldHVybiB3
aGV0aGVyIGEgbGlzdGVuZXIgcmVjZWl2ZWQgdGhpcyBldmVudCBzbyBpdCBwcmV2ZW50cyBvdGhl
ciBjYWxsZXJzIHVwIHRoZSBoaWVyYXJjaHkgY2hhaW4uCisgICAgcmV0dXJuIG1fb2JqZWN0LT5z
aG91bGREaXNwYXRjaEFjY2Vzc2liaWxpdHlFdmVudCgpICYmIG1fb2JqZWN0LT5oYXNBY2Nlc3Np
YmxlRGlzbWlzc0V2ZW50TGlzdGVuZXIoKTsKK30KKwogLSAoQk9PTClfYWNjZXNzaWJpbGl0eVNj
cm9sbFRvVmlzaWJsZQogewogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2Fs
bF0pCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjk1NzQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0xMyAgQ2hyaXMgRmxlaXph
Y2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBJbXBsZW1lbnQgYWNjZXNz
aWJsZSBkaXNtaXNzIGFjdGlvbiBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MzM1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzgxNjE1
MDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvQU9NLWRpc21pc3MtZXZlbnQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvQU9NLWRpc21p
c3MtZXZlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhw
ZWN0YXRpb25zOgorCiAyMDE4LTAzLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgTG9hZCBtYXkgZ2V0IGNvbW1pdHRlZCBiZWZvcmUgcmVjZWl2aW5nIHBvbGlj
eSBmb3IgdGhlIHJlc291cmNlIHJlc3BvbnNlCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2lvcy1zaW11bGF0b3IvQU9NLWRpc21pc3MtZXZlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9BT00tZGlzbWlz
cy1ldmVudC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9pb3Mtc2ltdWxhdG9yL0FPTS1kaXNtaXNzLWV2ZW50LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACit0ZXN0MQordGVzdDIKK1RoaXMgdGVzdHMgdGhl
IGFjY2Vzc2libGVkaXNtaXNzIGV2ZW50IG9uIGlPUy4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK3JlY2VpdmVkIGFjY2Vzc2libGVkaXNtaXNzOiBbb2JqZWN0IEV2ZW50XQorUEFT
UyBkaXNwYXRjaGVkIGlzIHRydWUKK1BBU1MgZGlzcGF0Y2hlZCBpcyBmYWxzZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9BT00tZGlzbWlzcy1ldmVudC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9BT00t
ZGlzbWlzcy1ldmVudC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvaW9zLXNpbXVsYXRvci9BT00tZGlzbWlzcy1ldmVudC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keSBpZD0iYm9k
eSI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxkaXYgaWQ9ImNvbnRlbnQiPgorCis8ZGl2IGlkPSJldmVudCIgcm9sZT0iZ3JvdXAiIHRh
YmluZGV4PTA+Cit0ZXN0MQorPC9kaXY+CisKKzxkaXYgaWQ9Im5vX2V2ZW50IiByb2xlPSJncm91
cCIgdGFiaW5kZXg9MD4KK3Rlc3QyCis8L2Rpdj4KKworPC9kaXY+CisKKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisKKyAgICBk
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWNjZXNzaWJsZWRpc21pc3MgZXZlbnQgb24gaU9T
LiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAg
ICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgbm9kZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJldmVudCIpOworICAgICAgICB2YXIgYXhOb2RlID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJldmVudCIpOworICAgICAgICBub2Rl
Lm9uYWNjZXNzaWJsZWRpc21pc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgZGVi
dWcoInJlY2VpdmVkIGFjY2Vzc2libGVkaXNtaXNzOiAiICsgZXZlbnQpOworICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7IAorICAgICAgICAgfTsKKworICAgICAgICB2YXIgZGlzcGF0Y2hlZCA9
IGF4Tm9kZS5kaXNtaXNzKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZGlzcGF0Y2hlZCIpOwor
CisgICAgICAgIG5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm9fZXZlbnQiKTsKKyAg
ICAgICAgYXhOb2RlID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJub19ldmVudCIpOworICAgICAgICBkaXNwYXRjaGVkID0gYXhOb2RlLmRpc21pc3MoKTsK
KyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZGlzcGF0Y2hlZCIpOworICAgIH0KKzwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMjk1NjQpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTQ5NSw2ICs0
OTUsNyBAQAogCiB3ZWJraXQub3JnL2IvMTgwODk4IGFjY2Vzc2liaWxpdHkvbWFjL0FPTS1ldmVu
dHMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE4MzAyMyBhY2Nlc3NpYmlsaXR5L21hYy9B
T00tZXZlbnRzLWFsbC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTgzMzUyIGFjY2Vzc2li
aWxpdHkvaW9zLXNpbXVsYXRvci9BT00tZGlzbWlzcy1ldmVudC5odG1sIFsgU2tpcCBdCiAKIHdl
YmtpdC5vcmcvYi8xODI3NTIgYWNjZXNzaWJpbGl0eS9tYWMvYWNjZXNzaWJpbGl0eS1tYWtlLWZp
cnN0LXJlc3BvbmRlci5odG1sIFsgU2tpcCBdCiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTU3NSkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE4LTAzLTEzICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEltcGxlbWVu
dCBhY2Nlc3NpYmxlIGRpc21pc3MgYWN0aW9uIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMzUyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8zODE2MTUwMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc21pc3Mg
Y29uc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGw6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElP
Uy5tbToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzbWlzcyk6CisK
IDIwMTgtMDMtMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgU3RvcCB1c2luZyBTREsgY29uZGl0aW9uYWxzIHRvIGNvbnRyb2wgZmVhdHVyZSBkZWZp
bml0aW9ucwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
Mjk1NjQpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBACiBib29s
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VhcmNoRmllbGQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1RleHRBcmVhKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VNYXRjaGVzVGV4dE5lYXJNYXJr
ZXJzKEpTU3RyaW5nUmVmLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciosIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsgfQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpkaXNtaXNzKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogICAgIAogLy8gVW5zdXBw
b3J0ZWQgbWV0aG9kcyBvbiB2YXJpb3VzIHBsYXRmb3Jtcy4gQXMgdGhleSdyZSBpbXBsZW1lbnRl
ZCBvbiBvdGhlciBwbGF0Zm9ybXMgdGhpcyBsaXN0IHNob3VsZCBiZSBtb2RpZmllZC4KSW5kZXg6
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiAyMjk1NjQpCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsNyBAQAogICAgIHZvaWQgZGVjcmVtZW50KCk7CiAg
ICAgdm9pZCBzaG93TWVudSgpOwogICAgIHZvaWQgcHJlc3MoKTsKKyAgICBib29sIGRpc21pc3Mo
KTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzeW5jUHJlc3MoKTsKICNlbHNlCkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwJKHJldmlz
aW9uIDIyOTU2NCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2
ICsxMTgsNyBAQAogICAgIHZvaWQgcHJlc3MoKTsKICAgICB2b2lkIHN5bmNQcmVzcygpOwogICAg
IHZvaWQgc2hvd01lbnUoKTsKKyAgICBib29sZWFuIGRpc21pc3MoKTsKIAogICAgIC8vIEF0dHJp
YnV0ZSBpbmZvLgogICAgIERPTVN0cmluZyBhbGxBdHRyaWJ1dGVzKCk7CkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0JKHJldmlzaW9uIDIyOTU2NCkKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTgzNCw2ICs4MzQsMTEgQEAKIHsKICAg
ICBbbV9lbGVtZW50IF9hY2Nlc3NpYmlsaXR5QWN0aXZhdGVdOwogfQorICAgIAorYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpkaXNtaXNzKCkKK3sKKyAgICByZXR1cm4gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5UGVyZm9ybUVzY2FwZV07Cit9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2V0U2VsZWN0ZWRDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KSBj
b25zdAogewo=
</data>
<flag name="review"
          id="354352"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335775</attachid>
            <date>2018-03-14 09:24:59 -0700</date>
            <delta_ts>2018-03-14 10:51:15 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>10107</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAzLTEzICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEltcGxlbWVudCBh
Y2Nlc3NpYmxlIGRpc21pc3MgYWN0aW9uIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMzUyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
ODE2MTUwMD4KKworICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAg
VGVzdDogYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL0FPTS1kaXNtaXNzLWV2ZW50Lmh0bWwK
KworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nl
c3NpYmlsaXR5UGVyZm9ybUVzY2FwZV0pOgorCiAyMDE4LTAzLTEyICBKb2huIFdpbGFuZGVyICA8
d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczog
SW1tZWRpYXRlbHkgZm9yd2FyZCBjb29raWUgYWNjZXNzIGF0IHVzZXIgaW50ZXJhY3Rpb24gd2hl
biB0aGVyZSdzIGFuIG9wZW5lciBkb2N1bWVudApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDIyOTU2NCkK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTI0LDYgKzExMjQsNyBAQAogICAgIGludCBhY2Nlc3NpYmlsaXR5
UGFzc3dvcmRGaWVsZExlbmd0aCgpOwogICAgIGJvb2wgaGFzVG91Y2hFdmVudExpc3RlbmVyKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0lucHV0VHlwZVBvcHVwQnV0dG9uKCkgY29uc3Q7CisgICAgYm9v
bCBoYXNBY2Nlc3NpYmxlRGlzbWlzc0V2ZW50TGlzdGVuZXIoKSBjb25zdDsKICNlbmRpZgogICAg
IAogICAgIC8vIGFsbG93cyBmb3IgYW4gQWNjZXNzaWJpbGl0eU9iamVjdCB0byB1cGRhdGUgaXRz
IHJlbmRlciB0cmVlIG9yIHBlcmZvcm0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQkocmV2aXNp
b24gMjI5NTY0KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJp
bGl0eU9iamVjdElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjgsMTAgKzY4LDE5IEBACiB7CiAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhhdmlvcjsK
IH0KKyAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzQWNjZXNzaWJsZURpc21pc3NF
dmVudExpc3RlbmVyKCkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8qIG5vZGUgPSB0aGlzLT5ub2Rl
KCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgaWYgKG5vZGUt
Pmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5hY2Nlc3NpYmxlZGlzbWlzc0V2ZW50KSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CiAK
IGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzVG91Y2hFdmVudExpc3RlbmVyKCkgY29uc3QK
IHsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7IG5vZGU7IG5vZGUgPSBub2Rl
LT5wYXJlbnROb2RlKCkpIHsKKyAgICBmb3IgKGF1dG8qIG5vZGUgPSB0aGlzLT5ub2RlKCk7IG5v
ZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKICAgICAgICAgaWYgKG5vZGUtPmhhc0V2
ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS50b3VjaHN0YXJ0RXZlbnQpIHx8IG5vZGUtPmhhc0V2
ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS50b3VjaGVuZEV2ZW50KSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9z
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCShyZXZpc2lvbiAyMjk1NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTQ4OCw2ICsxNDg4LDE3IEBACiAgICAgcmV0dXJuIFtzZWxmIGNvbnZlcnRQb2ludFRvU2Ny
ZWVuU3BhY2U6ZmxvYXRQb2ludF07CiB9CiAKKy0gKEJPT0wpYWNjZXNzaWJpbGl0eVBlcmZvcm1F
c2NhcGUKK3sKKyAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQorICAg
ICAgICByZXR1cm4gTk87CisgICAgCisgICAgbV9vYmplY3QtPmRpc3BhdGNoQWNjZXNzaWJpbGl0
eUV2ZW50V2l0aFR5cGUoQWNjZXNzaWJpbGl0eUV2ZW50VHlwZTo6RGlzbWlzcyk7CisgICAgCisg
ICAgLy8gUmV0dXJuIHdoZXRoZXIgYSBsaXN0ZW5lciByZWNlaXZlZCB0aGlzIGV2ZW50IHNvIGl0
IHByZXZlbnRzIG90aGVyIGNhbGxlcnMgdXAgdGhlIGhpZXJhcmNoeSBjaGFpbi4KKyAgICByZXR1
cm4gbV9vYmplY3QtPnNob3VsZERpc3BhdGNoQWNjZXNzaWJpbGl0eUV2ZW50KCkgJiYgbV9vYmpl
Y3QtPmhhc0FjY2Vzc2libGVEaXNtaXNzRXZlbnRMaXN0ZW5lcigpOworfQorCiAtIChCT09MKV9h
Y2Nlc3NpYmlsaXR5U2Nyb2xsVG9WaXNpYmxlCiB7CiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFj
Y2Vzc2liaWxpdHlDYWxsXSkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTU3NCkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE4LTAzLTEz
ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IElt
cGxlbWVudCBhY2Nlc3NpYmxlIGRpc21pc3MgYWN0aW9uIG9uIGlPUworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMzUyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zODE2MTUwMD4KKworICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvQU9NLWRpc21pc3MtZXZlbnQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0
b3IvQU9NLWRpc21pc3MtZXZlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE4LTAzLTEyICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgTG9hZCBtYXkgZ2V0IGNvbW1pdHRlZCBiZWZvcmUgcmVj
ZWl2aW5nIHBvbGljeSBmb3IgdGhlIHJlc291cmNlIHJlc3BvbnNlCkluZGV4OiBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvQU9NLWRpc21pc3MtZXZlbnQtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRv
ci9BT00tZGlzbWlzcy1ldmVudC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL0FPTS1kaXNtaXNzLWV2ZW50LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACit0ZXN0MQordGVzdDIKK1Ro
aXMgdGVzdHMgdGhlIGFjY2Vzc2libGVkaXNtaXNzIGV2ZW50IG9uIGlPUy4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK3JlY2VpdmVkIGFjY2Vzc2libGVkaXNtaXNzOiBbb2JqZWN0
IEV2ZW50XQorUEFTUyBkaXNwYXRjaGVkIGlzIHRydWUKK1BBU1MgZGlzcGF0Y2hlZCBpcyBmYWxz
ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9BT00tZGlzbWlzcy1l
dmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNp
bXVsYXRvci9BT00tZGlzbWlzcy1ldmVudC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9BT00tZGlzbWlzcy1ldmVudC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
Ym9keSBpZD0iYm9keSI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxkaXYgaWQ9ImNvbnRlbnQiPgorCis8ZGl2IGlkPSJldmVudCIgcm9s
ZT0iZ3JvdXAiIHRhYmluZGV4PTA+Cit0ZXN0MQorPC9kaXY+CisKKzxkaXYgaWQ9Im5vX2V2ZW50
IiByb2xlPSJncm91cCIgdGFiaW5kZXg9MD4KK3Rlc3QyCis8L2Rpdj4KKworPC9kaXY+CisKKzxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3Jp
cHQ+CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWNjZXNzaWJsZWRpc21pc3Mg
ZXZlbnQgb24gaU9TLiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgeworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgbm9kZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJldmVudCIpOworICAgICAgICB2YXIgYXhOb2RlID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJldmVudCIpOwor
ICAgICAgICBub2RlLm9uYWNjZXNzaWJsZWRpc21pc3MgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICAgICAgZGVidWcoInJlY2VpdmVkIGFjY2Vzc2libGVkaXNtaXNzOiAiICsgZXZlbnQpOwor
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7IAorICAgICAgICAgfTsKKworICAgICAgICB2YXIg
ZGlzcGF0Y2hlZCA9IGF4Tm9kZS5kaXNtaXNzKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZGlz
cGF0Y2hlZCIpOworCisgICAgICAgIG5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm9f
ZXZlbnQiKTsKKyAgICAgICAgYXhOb2RlID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJub19ldmVudCIpOworICAgICAgICBkaXNwYXRjaGVkID0gYXhOb2Rl
LmRpc21pc3MoKTsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZGlzcGF0Y2hlZCIpOworICAgIH0K
Kzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMjk1NjQpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkK
QEAgLTQ5NSw2ICs0OTUsNyBAQAogCiB3ZWJraXQub3JnL2IvMTgwODk4IGFjY2Vzc2liaWxpdHkv
bWFjL0FPTS1ldmVudHMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE4MzAyMyBhY2Nlc3Np
YmlsaXR5L21hYy9BT00tZXZlbnRzLWFsbC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTgz
MzUyIGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9BT00tZGlzbWlzcy1ldmVudC5odG1sIFsg
U2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8xODI3NTIgYWNjZXNzaWJpbGl0eS9tYWMvYWNjZXNzaWJp
bGl0eS1tYWtlLWZpcnN0LXJlc3BvbmRlci5odG1sIFsgU2tpcCBdCiAKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTU3NSkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE4
LTAzLTEzICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAg
QVg6IEltcGxlbWVudCBhY2Nlc3NpYmxlIGRpc21pc3MgYWN0aW9uIG9uIGlPUworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMzUyCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zODE2MTUwMD4KKworICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0
YXMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpkaXNtaXNzIGNvbnN0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRJT1MubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRp
c21pc3MpOgorCiAyMDE4LTAzLTEyICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgU0RLIGNvbmRpdGlvbmFscyB0byBjb250cm9sIGZl
YXR1cmUgZGVmaW5pdGlvbnMKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAko
cmV2aXNpb24gMjI5NTY0KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUs
NyBAQAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlYXJjaEZpZWxkKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNUZXh0QXJl
YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTWF0Y2hlc1Rl
eHROZWFyTWFya2VycyhKU1N0cmluZ1JlZiwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqLCBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIG51bGxwdHI7IH0KK2Jvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6ZGlzbWlzcygpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKICAgICAK
IC8vIFVuc3VwcG9ydGVkIG1ldGhvZHMgb24gdmFyaW91cyBwbGF0Zm9ybXMuIEFzIHRoZXkncmUg
aW1wbGVtZW50ZWQgb24gb3RoZXIgcGxhdGZvcm1zIHRoaXMgbGlzdCBzaG91bGQgYmUgbW9kaWZp
ZWQuCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMjI5NTY0KQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYgKzk3LDcgQEAKICAgICB2b2lkIGRlY3Jl
bWVudCgpOwogICAgIHZvaWQgc2hvd01lbnUoKTsKICAgICB2b2lkIHByZXNzKCk7CisgICAgYm9v
bCBkaXNtaXNzKCk7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgc3luY1ByZXNzKCk7CiAj
ZWxzZQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aWRsCShyZXZpc2lvbiAyMjk1NjQpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTgsNiArMTE4LDcgQEAKICAgICB2b2lkIHByZXNzKCk7CiAgICAgdm9pZCBzeW5jUHJl
c3MoKTsKICAgICB2b2lkIHNob3dNZW51KCk7CisgICAgYm9vbGVhbiBkaXNtaXNzKCk7CiAKICAg
ICAvLyBBdHRyaWJ1dGUgaW5mby4KICAgICBET01TdHJpbmcgYWxsQXR0cmlidXRlcygpOwpJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCShyZXZpc2lvbiAy
Mjk1NjQpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MzQsNiArODM0LDEx
IEBACiB7CiAgICAgW21fZWxlbWVudCBfYWNjZXNzaWJpbGl0eUFjdGl2YXRlXTsKIH0KKyAgICAK
K2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzbWlzcygpCit7CisgICAgcmV0dXJuIFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eVBlcmZvcm1Fc2NhcGVdOworfQogCiB2b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCog
ZWxlbWVudCkgY29uc3QKIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>