<?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>163048</bug_id>
          
          <creation_ts>2016-10-06 11:35:08 -0700</creation_ts>
          <short_desc>Modify check-webkit-style to prohibit sensitive phrases</short_desc>
          <delta_ts>2016-10-11 09:54:04 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>glenn</cc>
    
    <cc>lforschler</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1237201</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-10-06 11:35:08 -0700</bug_when>
    <thetext>Warn about security-sensitive terms in ChangeLog entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237209</commentid>
    <comment_count>1</comment_count>
      <attachid>290839</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-10-06 11:42:50 -0700</bug_when>
    <thetext>Created attachment 290839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237210</commentid>
    <comment_count>2</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-10-06 11:44:16 -0700</bug_when>
    <thetext>rdar://problem/28289755</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237245</commentid>
    <comment_count>3</comment_count>
      <attachid>290839</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-06 12:30:12 -0700</bug_when>
    <thetext>Comment on attachment 290839
Patch

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

This change looks fine to me. I&apos;d like Dan or someone more familiar with webkitpy to see if there&apos;s anything missing.

&gt; Tools/Scripts/webkitpy/style/checkers/changelog.py:111
&gt; +           # bug, bypass, crash, dereference, error, failure, heap, leak, overflow, stack

This is useful information, but I don&apos;t think it needs to be encoded as a comment in the file. Can you just mention this in the Bugzilla notes?

&gt; Tools/Scripts/webkitpy/style/checkers/changelog.py:114
&gt; +        # Make sure words are separated by a single space

I don&apos;t think this comment is necessary. An even clearer way to express this idea would be to make a new function &quot;collapseWhitespace&quot; or &quot;ensureOneSpaceBetweenWords&quot; or something.

&gt; Tools/Scripts/webkitpy/style/checkers/changelog.py:143
&gt; +                                    &quot;Please don&apos;t use the security-sensitive &apos;&quot; + (&quot;terms &quot; if more_than_one_unwanted_term_found else &quot;term &quot;) + all_unwanted_terms_used + &quot;&apos; in change logs or in commits.&quot;)

This line was a little difficult to read. It seems like a &quot;format_dangerous_terms_message&quot; function would be nice here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237283</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-10-06 13:02:16 -0700</bug_when>
    <thetext>Thanks, Brent! I&apos;ll wait for Dan&apos;s comments too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237351</commentid>
    <comment_count>5</comment_count>
      <attachid>290839</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-10-06 14:20:39 -0700</bug_when>
    <thetext>Comment on attachment 290839
Patch

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

I am worried about the false positive rate for this change. How did you come up with this list of &quot;unwanted security terms&quot;? Did you build it up from looking at the ChangeLog entries for security bug fixes? Do we have any metrics on the false positive rate of running this filter against the existing ChangeLog files?

&gt; Tools/Scripts/webkitpy/style/checkers/changelog.py:98
&gt; +    def check_for_unwanted_security_terms(self, first_line_checked, segments):

The name segments is ambiguous. I suggest that we use the same name that the caller uses, entry_lines, to describe the array of lines of text from the change log entry.

&gt; Tools/Scripts/webkitpy/style/checkers/changelog.py:99
&gt; +        unwanted_security_terms = [

Maybe unwanted_phrases would be a more descriptive name for this variable as it contains phrases such as &quot;buffer underrun&quot;.

&gt; Tools/Scripts/webkitpy/style/checkers/changelog.py:103
&gt; +           &quot;memory corruption&quot;, &quot;null dereference&quot;, &quot;null pointer dereference&quot;,

From my understanding we do not consider a null pointer deference as a security bug. So, I would remove the terms &quot;null dereference&quot; and &quot;null pointer dereference&quot;.

&gt; Tools/Scripts/webkitpy/style/checkers/changelog.py:107
&gt; +           &quot;fuzz&quot;,         # Captures fuzzer, fuzzing, fuzztest

This will also match the adjective &quot;fuzzy&quot; and &quot;jsfunfuzz&quot; - the name of a JavaScript fuzzer. I guess we do not mention either often enough.

Minor: No change needed. I do not see the need to space out this comment and the one below such that they are both left aligned.

&gt; Tools/Scripts/webkitpy/style/checkers/changelog.py:115
&gt; +        trimmed_segments = []

Maybe a better name for this variable would be cleansed_lines.

&gt; Tools/Scripts/webkitpy/style/checkers/changelog.py:116
&gt; +        for untrimmed_segment in segments:

I suggest that we rename untrimmed_segment to line to better describe what it is, a line from a ChangeLog entry.

&gt; Tools/Scripts/webkitpy/style/checkers/changelog.py:141
&gt; +        class FoundUnwantedSecurityTerm:
&gt; +            def __init__(self, term, line_number):
&gt; +                self.term = term
&gt; +                self.line_number = line_number
&gt; +
&gt; +        found_unwanted_security_terms = []
&gt; +        for unwanted_term in unwanted_security_terms:
&gt; +            for segment_index, segment in enumerate(trimmed_segments):
&gt; +                if (searchIgnorecase(unwanted_term, segment)):
&gt; +                    found_unwanted_security_terms.append(FoundUnwantedSecurityTerm(unwanted_term, first_line_checked + segment_index))
&gt; +
&gt; +        if len(found_unwanted_security_terms) &gt; 0:
&gt; +            all_unwanted_terms_used = &quot;&quot;
&gt; +            first_line_number_with_unwanted_term = maxsize
&gt; +            more_than_one_unwanted_term_found = False
&gt; +            for found_unwanted_security_term in found_unwanted_security_terms:
&gt; +                first_line_number_with_unwanted_term = min(first_line_number_with_unwanted_term, found_unwanted_security_term.line_number)
&gt; +                if (all_unwanted_terms_used == &quot;&quot;):
&gt; +                    all_unwanted_terms_used = found_unwanted_security_term.term
&gt; +                else:
&gt; +                    more_than_one_unwanted_term_found = True
&gt; +                    all_unwanted_terms_used += &quot;, &quot; + found_unwanted_security_term.term
&gt; +            self.handle_style_error(first_line_number_with_unwanted_term,

Making use of webkitpy.tool.grammar.pluralize() to do the pluralization logic of &quot;term&quot;, and removing the remark &quot;or in commits&quot; from the error message (*), I would write this code as:

# FIXME: Handle hyphens used to divide words.
unwanted_phrase_and_line_number_pairs = []
for i, line in enumerate(cleansed_lines):
    for phrase in unwanted_phrases:
        if (searchIgnorecase(phrase, line)):
            line_number = first_line_checked + i
            unwanted_phrase_and_line_number_pairs.append((phrase, line_number))

if not unwanted_phrase_and_line_number_pairs:
    return

unwanted_phrases = []
for phrase, line_number in unwanted_phrase_and_line_number_pairs:
    unwanted_phrases.append(phrase)
first_line_number_with_unwanted_phrase = unwanted_phrase_and_line_number_pairs[0][1]
self.handle_style_error(first_line_number_with_unwanted_phrase,
                        &quot;changelog/unwantedsecurityterms&quot;, 3,
                        &quot;Please don&apos;t use the following security-sensitive {} in change logs: {}&quot;.format(pluralize(len(unwanted_phrase_and_line_number_pairs), &quot;term&quot;), &quot; &quot;.join(unwanted_phrases))

Notice that we do not need to use sys.maxsize.

(*) It seem unnecessary to add the remark &quot;or in commits&quot; as we assume a committer knows the project conventions such that they will always use the ChangeLog message as their commit message. For commit queue landed changes, the commit queue does this automatically.

&gt; Tools/Scripts/webkitpy/style/checkers/changelog.py:142
&gt; +                                    &quot;changelog/unwantedsecurityterms&quot;, 3,

Do we need to add the category &quot;changelog/unwantedsecurityterms&quot; to ChangeLogChecker.categories?

&gt; Tools/Scripts/webkitpy/style/checkers/changelog_unittest.py:190
&gt; +                          &apos;        A buffer overflow existed in code.&apos;)

I suggest that we add a newline character to the end of this line to more closely match how a real ChangeLog entry would be formatted.

&gt; Tools/Scripts/webkitpy/style/checkers/changelog_unittest.py:202
&gt; +                          &apos;        This patch addresses a great number of issues.&apos;
&gt; +                          &apos;        Therefore there is a lot to say here about a great&apos;
&gt; +                          &apos;        many things such as the weather, the latest and&apos;
&gt; +                          &apos;        greatest in sports, and the mood of fiction&apos;
&gt; +                          &apos;        characters. Anyway the patch fixes a null pointer&apos;
&gt; +                          &apos;        dereference which is not good. Well, it is good&apos;
&gt; +                          &apos;        that it is fixed but not good that it existed.&apos;)

I suggest that we add newline characters to the end of each line in this section to make it straightforward to reason about the correctness of this test.

&gt; Tools/Scripts/webkitpy/style/checkers/changelog_unittest.py:209
&gt; +                          &apos;        This patch addresses a pretty bad buffer &apos;
&gt; +                          &apos;        overflow in &apos;)

Ditto.

&gt; Tools/Scripts/webkitpy/style/checkers/changelog_unittest.py:221
&gt; +                          &apos;        Bug found through fuzzing.&apos;)

I suggest that we add a newline character to the end of this line to more closely match how a real ChangeLog entry would be formatted.

&gt; Tools/Scripts/webkitpy/style/checkers/changelog_unittest.py:228
&gt; +                          &apos;\n&apos;

I suggest that we either move this &apos;\n&apos; to the end of the previous line (line 227) or add a newline character to the end of line 227 to make it straightforward to reason about the correctness of this test.

&gt; Tools/Scripts/webkitpy/style/checkers/changelog_unittest.py:230
&gt; +                          &apos;\n&apos;

I suggest that we either move this &apos;\n&apos; to the end of the previous line (line 229) or add a newline character to the end of line 229 to make it straightforward to reason about the correctness of this test.

&gt; Tools/Scripts/webkitpy/style/checkers/changelog_unittest.py:240
&gt; +                          &apos;\n&apos;

I suggest that we either move this &apos;\n&apos; to the end of the previous line (line 239) or add a newline character to the end of line 239 to make it straightforward to reason about the correctness of this test.

&gt; Tools/Scripts/webkitpy/style/checkers/changelog_unittest.py:242
&gt; +                          &apos;\n&apos;

I suggest that we either move this &apos;\n&apos; to the end of the previous line (line 241) or add a newline character to the end of line 241 to make it straightforward to reason about the correctness of this test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237362</commentid>
    <comment_count>6</comment_count>
      <attachid>290839</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-06 14:39:10 -0700</bug_when>
    <thetext>Comment on attachment 290839
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/style/checkers/changelog.py:103
&gt;&gt; +           &quot;memory corruption&quot;, &quot;null dereference&quot;, &quot;null pointer dereference&quot;,
&gt; 
&gt; From my understanding we do not consider a null pointer deference as a security bug. So, I would remove the terms &quot;null dereference&quot; and &quot;null pointer dereference&quot;.

That&apos;s a good point. I agree we should remove the terms &quot;null pointer&quot; and &quot;null pointer dereference&quot; from the list.

&gt;&gt; Tools/Scripts/webkitpy/style/checkers/changelog.py:107
&gt;&gt; +           &quot;fuzz&quot;,         # Captures fuzzer, fuzzing, fuzztest
&gt; 
&gt; This will also match the adjective &quot;fuzzy&quot; and &quot;jsfunfuzz&quot; - the name of a JavaScript fuzzer. I guess we do not mention either often enough.
&gt; 
&gt; Minor: No change needed. I do not see the need to space out this comment and the one below such that they are both left aligned.

We probably should not match &quot;fuzzy&quot;, but we should probably avoid &quot;jsfunfuzz&quot;, since anything related to jsfunfuzz is likely to be of interest to people looking for vulnerabilities.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237368</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-10-06 14:51:56 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; # FIXME: Handle hyphens used to divide words.
&gt; unwanted_phrase_and_line_number_pairs = []
&gt; for i, line in enumerate(cleansed_lines):
&gt;     for phrase in unwanted_phrases:
&gt;         if (searchIgnorecase(phrase, line)):
&gt;             line_number = first_line_checked + i
&gt;             unwanted_phrase_and_line_number_pairs.append((phrase,
&gt; line_number))
&gt; 
&gt; if not unwanted_phrase_and_line_number_pairs:
&gt;     return
&gt; 
&gt; unwanted_phrases = []
&gt; for phrase, line_number in unwanted_phrase_and_line_number_pairs:
&gt;     unwanted_phrases.append(phrase)
&gt; first_line_number_with_unwanted_phrase =
&gt; unwanted_phrase_and_line_number_pairs[0][1]
&gt; self.handle_style_error(first_line_number_with_unwanted_phrase,
&gt;                         &quot;changelog/unwantedsecurityterms&quot;, 3,
&gt;                         &quot;Please don&apos;t use the following security-sensitive
&gt; {} in change logs:
&gt; {}&quot;.format(pluralize(len(unwanted_phrase_and_line_number_pairs), &quot;term&quot;), &quot;
&gt; &quot;.join(unwanted_phrases))

Disregard this code snippet as it does not find unwanted phrases across line breaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237400</commentid>
    <comment_count>8</comment_count>
      <attachid>290873</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-10-06 17:21:57 -0700</bug_when>
    <thetext>Created attachment 290873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237401</commentid>
    <comment_count>9</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-10-06 17:24:14 -0700</bug_when>
    <thetext>Brent and Dan, thanks for both of your reviews. I have made the changes you suggested and simplified the code.

I also searched through all of WebCore&apos;s change logs to see if we had phrases that would cause noise/false positives. Those phrases were removed from the blacklist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237402</commentid>
    <comment_count>10</comment_count>
      <attachid>290874</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-10-06 17:26:04 -0700</bug_when>
    <thetext>Created attachment 290874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237403</commentid>
    <comment_count>11</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-10-06 17:26:32 -0700</bug_when>
    <thetext>Removed unnecessary import statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238612</commentid>
    <comment_count>12</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-10-10 16:43:33 -0700</bug_when>
    <thetext>Anyone up for a review of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238879</commentid>
    <comment_count>13</comment_count>
      <attachid>290874</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-11 09:18:17 -0700</bug_when>
    <thetext>Comment on attachment 290874
Patch

Looks good. Let&apos;s see how this goes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238894</commentid>
    <comment_count>14</comment_count>
      <attachid>290874</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-11 09:41:09 -0700</bug_when>
    <thetext>Comment on attachment 290874
Patch

Clearing flags on attachment: 290874

Committed r207146: &lt;http://trac.webkit.org/changeset/207146&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238895</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-11 09:41:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238899</commentid>
    <comment_count>16</comment_count>
      <attachid>290874</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-10-11 09:54:04 -0700</bug_when>
    <thetext>Comment on attachment 290874
Patch

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

&gt; Tools/Scripts/webkitpy/style/checkers/changelog.py:121
&gt; +        lines_with_single_spaces = []
&gt; +        for line in lines:
&gt; +            lines_with_single_spaces.append(&quot; &quot;.join(line.split()))
&gt; +
&gt; +        found_unwanted_security_phrases = []
&gt; +        last_index = len(lines_with_single_spaces) - 1
&gt; +        first_line_number_with_unwanted_phrase = maxsize
&gt; +        for unwanted_phrase in unwanted_security_phrases:
&gt; +            for line_index, line in enumerate(lines_with_single_spaces):
&gt; +                next_line = &quot;&quot; if line_index &gt;= last_index else lines_with_single_spaces[line_index + 1]

Is there much value in finding the line number of the first unwanted phrase given that the emitted error contains the path to the offending ChangeLog file and we list the found phrases?

We can simplify this code by concatenating the lines in lines_with_single_spaces together such that each line is delimited from the next line by a single space character (and, optionally, removing hyphens), call this changelog_entry. Then search for unwanted phrase p in changelog_entry for each p in unwanted_security_phrases, appending p to found_unwanted_security_phrases if changelog_entry contains p. If you have your heart set on providing the line number of the first occurrence of an unwanted phrase then we can build up a list of the starting positions of each line in changelog_entry when building up changelog_entry and use this list to map back the starting position of the first found unwanted phrase to its line number.

&gt; Tools/Scripts/webkitpy/style/checkers/changelog.py:129
&gt; +                                    &quot;Please consider whether the use of security-sensitive phrasing could help someone exploit WebKit: {}&quot;.format(&quot;, &quot;.join(found_unwanted_security_phrases)))

The presence of these unwanted phrases in a ChangeLog message does not necessarily help someone &quot;exploit WebKit&quot; as much as they attract attention to a security sensitive change. I suggest that we phrase this message in terms of attention attracting capabilities of using these words. Maybe a message of the form: &quot;ChangeLog contains the words: X, Y. Avoid using these words and analogous language as they can attract unnecessary attention to the security implications of this change.&quot;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290839</attachid>
            <date>2016-10-06 11:42:50 -0700</date>
            <delta_ts>2016-10-06 17:21:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163048-20161006113936.patch</filename>
            <type>text/plain</type>
            <size>9859</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwNjg3MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIzIEBACisyMDE2LTEwLTA2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29t
PgorCisgICAgICAgIE1vZGlmeSBjaGVjay13ZWJraXQtc3R5bGUgdG8gcHJvaGliaXQgc2Vuc2l0
aXZlIHBocmFzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzA0OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjgyODk3NTU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL2NoYW5nZWxvZy5weToKKyAgICAgICAgKENoYW5nZUxvZ0NoZWNrZXIu
Y2hlY2tfZW50cnkpOgorICAgICAgICAgICAgTm93IGNhbGxzIENoYW5nZUxvZ0NoZWNrZXIuY2hl
Y2tfZm9yX3Vud2FudGVkX3NlY3VyaXR5X3Rlcm1zKCkuCisgICAgICAgIChDaGFuZ2VMb2dDaGVj
a2VyKToKKyAgICAgICAgKENoYW5nZUxvZ0NoZWNrZXIuY2hlY2tfZm9yX3Vud2FudGVkX3NlY3Vy
aXR5X3Rlcm1zKToKKyAgICAgICAgICAgIE5ldyBmdW5jdGlvbiB0byBjaGVjayBmb3Igc2Vuc2l0
aXZlIHRlcm1zLgorICAgICAgICAoQ2hhbmdlTG9nQ2hlY2tlci5jaGVja19mb3JfdW53YW50ZWRf
c2VjdXJpdHlfdGVybXMuRm91bmRVbndhbnRlZFNlY3VyaXR5VGVybSk6CisgICAgICAgIChDaGFu
Z2VMb2dDaGVja2VyLmNoZWNrX2Zvcl91bndhbnRlZF9zZWN1cml0eV90ZXJtcy5Gb3VuZFVud2Fu
dGVkU2VjdXJpdHlUZXJtLl9faW5pdF9fKToKKyAgICAgICAgICAgIENvbnZlbmllbmNlIGNsYXNz
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY2hhbmdlbG9nX3Vu
aXR0ZXN0LnB5OgorICAgICAgICAoQ2hhbmdlTG9nQ2hlY2tlclRlc3QudGVzdF91bndhbnRlZF9z
ZWN1cml0eV90ZXJtcyk6CisKIDIwMTYtMTAtMDYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBh
cHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIFJlc291cmNlIExvYWQgU3RhdGlzdGljcwpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jaGFuZ2Vsb2cucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jaGFuZ2Vs
b2cucHkJKHJldmlzaW9uIDIwNjg3MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMvY2hhbmdlbG9nLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAi
IiJDaGVja3MgV2ViS2l0IHN0eWxlIGZvciBDaGFuZ2VMb2cgZmlsZXMuIiIiCiAKIGZyb20gY29t
bW9uIGltcG9ydCBUYWJDaGVja2VyLCBtYXRjaCwgc2VhcmNoLCBzZWFyY2hJZ25vcmVjYXNlCitm
cm9tIHN5cyBpbXBvcnQgbWF4c2l6ZQogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuY2hh
bmdlbG9nIGltcG9ydCBwYXJzZV9idWdfaWRfZnJvbV9jaGFuZ2Vsb2cKIAogCkBAIC03NCw2ICs3
NSw4IEBAIGNsYXNzIENoYW5nZUxvZ0NoZWNrZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiY2hhbmdlbG9nL25vbmV3dGVzdHMiLCA1LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZb3Ugc2hvdWxkIHJlbW92ZSB0aGUg
J05vIG5ldyB0ZXN0cycgYW5kIGVpdGhlciBhZGQgYW5kIGxpc3QgdGVzdHMsIG9yIGV4cGxhaW4g
d2h5IG5vIG5ldyB0ZXN0cyB3ZXJlIHBvc3NpYmxlLiIpCiAKKyAgICAgICAgc2VsZi5jaGVja19m
b3JfdW53YW50ZWRfc2VjdXJpdHlfdGVybXMoZmlyc3RfbGluZV9jaGVja2VkLCBlbnRyeV9saW5l
cykKKwogICAgIGRlZiBjaGVjayhzZWxmLCBsaW5lcyk6CiAgICAgICAgIHNlbGYuX3RhYl9jaGVj
a2VyLmNoZWNrKGxpbmVzKQogICAgICAgICBmaXJzdF9saW5lX2NoZWNrZWQgPSAwCkBAIC05MSwz
ICs5NCw1MCBAQCBjbGFzcyBDaGFuZ2VMb2dDaGVja2VyKG9iamVjdCk6CiAgICAgICAgICAgICBl
bnRyeV9saW5lcy5hcHBlbmQobGluZSkKIAogICAgICAgICBzZWxmLmNoZWNrX2VudHJ5KGZpcnN0
X2xpbmVfY2hlY2tlZCwgZW50cnlfbGluZXMpCisKKyAgICBkZWYgY2hlY2tfZm9yX3Vud2FudGVk
X3NlY3VyaXR5X3Rlcm1zKHNlbGYsIGZpcnN0X2xpbmVfY2hlY2tlZCwgc2VnbWVudHMpOgorICAg
ICAgICB1bndhbnRlZF9zZWN1cml0eV90ZXJtcyA9IFsKKyAgICAgICAgICAgImFyYml0cmFyeSBj
b2RlIGV4ZWN1dGlvbiIsICJiYWQgY2FzdCIsICJidWZmZXIgb3ZlcmZsb3ciLCAiYnVmZmVyIG92
ZXJydW4iLAorICAgICAgICAgICAiYnVmZmVyIHVuZGVycnVuIiwgImRlbmlhbCBvZiBzZXJ2aWNl
IiwgImRpc2Nsb3N1cmUiLCAiZXhwbG9pdCIsCisgICAgICAgICAgICJkb3VibGUgZnJlZSIsICJp
bnRlZ2VyIG92ZXJmbG93IiwgImludmFsaWQgY2FzdCIsICJtYWxpY2lvdXMiLAorICAgICAgICAg
ICAibWVtb3J5IGNvcnJ1cHRpb24iLCAibnVsbCBkZXJlZmVyZW5jZSIsICJudWxsIHBvaW50ZXIg
ZGVyZWZlcmVuY2UiLAorICAgICAgICAgICAib3V0IG9mIGJvdW5kcyIsICJyYWNlIGNvbmRpdGlv
biIsICJzZWN1cml0eSBidWciLCAic2VjdXJpdHkgZmxhdyIsCisgICAgICAgICAgICJzZW5zaXRp
dmUgaW5mb3JtYXRpb24iLCAic3Bvb2ZpbmciLCAidHlwZSBjb25mdXNpb24iLCAidXNlIGFmdGVy
IGZyZWUiLAorICAgICAgICAgICAidXNlLWFmdGVyLWZyZWUiLCAiVVhTUyIsICJXVEZDcmFzaFdp
dGhTZWN1cml0eUltcGxpY2F0aW9uIiwKKyAgICAgICAgICAgImZ1enoiLCAgICAgICAgICMgQ2Fw
dHVyZXMgZnV6emVyLCBmdXp6aW5nLCBmdXp6dGVzdAorICAgICAgICAgICAidnVsbmVyYWIiLCAg
ICAgIyBDYXB0dXJlcyB2dWxuZXJhYmxlLCB2dWxuZXJhYmlsaXR5LCB2dWxuZXJhYmlsaXRpZXMK
KworICAgICAgICAgICAjIFRlcm1zIGNvbnNpZGVyZWQgdG9vIGdlbmVyYWwgdG8gZmxhZzoKKyAg
ICAgICAgICAgIyBidWcsIGJ5cGFzcywgY3Jhc2gsIGRlcmVmZXJlbmNlLCBlcnJvciwgZmFpbHVy
ZSwgaGVhcCwgbGVhaywgb3ZlcmZsb3csIHN0YWNrCisgICAgICAgIF0KKworICAgICAgICAjIE1h
a2Ugc3VyZSB3b3JkcyBhcmUgc2VwYXJhdGVkIGJ5IGEgc2luZ2xlIHNwYWNlCisgICAgICAgIHRy
aW1tZWRfc2VnbWVudHMgPSBbXQorICAgICAgICBmb3IgdW50cmltbWVkX3NlZ21lbnQgaW4gc2Vn
bWVudHM6CisgICAgICAgICAgICB0cmltbWVkX3NlZ21lbnRzLmFwcGVuZCgiICIuam9pbih1bnRy
aW1tZWRfc2VnbWVudC5zcGxpdCgpKSkKKworICAgICAgICBjbGFzcyBGb3VuZFVud2FudGVkU2Vj
dXJpdHlUZXJtOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlcm0sIGxpbmVfbnVt
YmVyKToKKyAgICAgICAgICAgICAgICBzZWxmLnRlcm0gPSB0ZXJtCisgICAgICAgICAgICAgICAg
c2VsZi5saW5lX251bWJlciA9IGxpbmVfbnVtYmVyCisKKyAgICAgICAgZm91bmRfdW53YW50ZWRf
c2VjdXJpdHlfdGVybXMgPSBbXQorICAgICAgICBmb3IgdW53YW50ZWRfdGVybSBpbiB1bndhbnRl
ZF9zZWN1cml0eV90ZXJtczoKKyAgICAgICAgICAgIGZvciBzZWdtZW50X2luZGV4LCBzZWdtZW50
IGluIGVudW1lcmF0ZSh0cmltbWVkX3NlZ21lbnRzKToKKyAgICAgICAgICAgICAgICBpZiAoc2Vh
cmNoSWdub3JlY2FzZSh1bndhbnRlZF90ZXJtLCBzZWdtZW50KSk6CisgICAgICAgICAgICAgICAg
ICAgIGZvdW5kX3Vud2FudGVkX3NlY3VyaXR5X3Rlcm1zLmFwcGVuZChGb3VuZFVud2FudGVkU2Vj
dXJpdHlUZXJtKHVud2FudGVkX3Rlcm0sIGZpcnN0X2xpbmVfY2hlY2tlZCArIHNlZ21lbnRfaW5k
ZXgpKQorCisgICAgICAgIGlmIGxlbihmb3VuZF91bndhbnRlZF9zZWN1cml0eV90ZXJtcykgPiAw
OgorICAgICAgICAgICAgYWxsX3Vud2FudGVkX3Rlcm1zX3VzZWQgPSAiIgorICAgICAgICAgICAg
Zmlyc3RfbGluZV9udW1iZXJfd2l0aF91bndhbnRlZF90ZXJtID0gbWF4c2l6ZQorICAgICAgICAg
ICAgbW9yZV90aGFuX29uZV91bndhbnRlZF90ZXJtX2ZvdW5kID0gRmFsc2UKKyAgICAgICAgICAg
IGZvciBmb3VuZF91bndhbnRlZF9zZWN1cml0eV90ZXJtIGluIGZvdW5kX3Vud2FudGVkX3NlY3Vy
aXR5X3Rlcm1zOgorICAgICAgICAgICAgICAgIGZpcnN0X2xpbmVfbnVtYmVyX3dpdGhfdW53YW50
ZWRfdGVybSA9IG1pbihmaXJzdF9saW5lX251bWJlcl93aXRoX3Vud2FudGVkX3Rlcm0sIGZvdW5k
X3Vud2FudGVkX3NlY3VyaXR5X3Rlcm0ubGluZV9udW1iZXIpCisgICAgICAgICAgICAgICAgaWYg
KGFsbF91bndhbnRlZF90ZXJtc191c2VkID09ICIiKToKKyAgICAgICAgICAgICAgICAgICAgYWxs
X3Vud2FudGVkX3Rlcm1zX3VzZWQgPSBmb3VuZF91bndhbnRlZF9zZWN1cml0eV90ZXJtLnRlcm0K
KyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBtb3JlX3RoYW5fb25l
X3Vud2FudGVkX3Rlcm1fZm91bmQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGFsbF91bndh
bnRlZF90ZXJtc191c2VkICs9ICIsICIgKyBmb3VuZF91bndhbnRlZF9zZWN1cml0eV90ZXJtLnRl
cm0KKyAgICAgICAgICAgIHNlbGYuaGFuZGxlX3N0eWxlX2Vycm9yKGZpcnN0X2xpbmVfbnVtYmVy
X3dpdGhfdW53YW50ZWRfdGVybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJjaGFuZ2Vsb2cvdW53YW50ZWRzZWN1cml0eXRlcm1zIiwgMywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJQbGVhc2UgZG9uJ3QgdXNlIHRoZSBzZWN1cml0eS1zZW5zaXRp
dmUgJyIgKyAoInRlcm1zICIgaWYgbW9yZV90aGFuX29uZV91bndhbnRlZF90ZXJtX2ZvdW5kIGVs
c2UgInRlcm0gIikgKyBhbGxfdW53YW50ZWRfdGVybXNfdXNlZCArICInIGluIGNoYW5nZSBsb2dz
IG9yIGluIGNvbW1pdHMuIikKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAy
MDY4NzEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NoYW5nZWxv
Z191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTgwLDMgKzE4MCw2NiBAQCBjbGFzcyBD
aGFuZ2VMb2dDaGVja2VyVGVzdCh1bml0dGVzdC5UZXN0CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcgICAgICAgICogU291cmNlL1dlYktpdC9mb28uY3BwOiAgICBcbicKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgKiBTb3VyY2UvV2ViS2l0L2Jhci5jcHA6XG4n
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICogU291cmNlL1dlYktpdC9m
b29iYXIuY3BwOiBEZXNjcmlwdGlvblxuJykKKworICAgIGRlZiB0ZXN0X3Vud2FudGVkX3NlY3Vy
aXR5X3Rlcm1zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9lcnJvcig1LCByYW5nZSgxLCAy
MCksICdjaGFuZ2Vsb2cvdW53YW50ZWRzZWN1cml0eXRlcm1zJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgJzIwMTYtMTEtMTEgQm9ndXMgUGVyc29uIDxicGVyc29uQGV4YW1wbGUuY29tPlxu
JworICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBFeGFtcGxlQnVnXG4nCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMzQ1XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgQSBidWZmZXIgb3ZlcmZsb3cgZXhpc3Rl
ZCBpbiBjb2RlLicpCisgICAgICAgIHNlbGYuYXNzZXJ0X2Vycm9yKDUsIHJhbmdlKDEsIDIwKSwg
J2NoYW5nZWxvZy91bndhbnRlZHNlY3VyaXR5dGVybXMnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAnMjAxNi0xMS0xMSBCb2d1cyBQZXJzb24gPGJwZXJzb25AZXhhbXBsZS5jb20+XG4nCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIEV4YW1wbGVCdWdcbicKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgJyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTIzNDVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAnICAgICAgICBUaGlzIHBhdGNoIGFkZHJlc3NlcyBhIGdyZWF0
IG51bWJlciBvZiBpc3N1ZXMuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBU
aGVyZWZvcmUgdGhlcmUgaXMgYSBsb3QgdG8gc2F5IGhlcmUgYWJvdXQgYSBncmVhdCcKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgbWFueSB0aGluZ3Mgc3VjaCBhcyB0aGUgd2Vh
dGhlciwgdGhlIGxhdGVzdCBhbmQnCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAg
IGdyZWF0ZXN0IGluIHNwb3J0cywgYW5kIHRoZSBtb29kIG9mIGZpY3Rpb24nCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICcgICAgICAgIGNoYXJhY3RlcnMuIEFueXdheSB0aGUgcGF0Y2ggZml4
ZXMgYSBudWxsIHBvaW50ZXInCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIGRl
cmVmZXJlbmNlIHdoaWNoIGlzIG5vdCBnb29kLiBXZWxsLCBpdCBpcyBnb29kJworICAgICAgICAg
ICAgICAgICAgICAgICAgICAnICAgICAgICB0aGF0IGl0IGlzIGZpeGVkIGJ1dCBub3QgZ29vZCB0
aGF0IGl0IGV4aXN0ZWQuJykKKyAgICAgICAgc2VsZi5hc3NlcnRfZXJyb3IoNSwgcmFuZ2UoMSwg
MjApLCAnY2hhbmdlbG9nL3Vud2FudGVkc2VjdXJpdHl0ZXJtcycsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICcyMDE2LTExLTExIEJvZ3VzIFBlcnNvbiA8YnBlcnNvbkBleGFtcGxlLmNvbT5c
bicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgRXhhbXBsZUJ1Z1xuJworICAg
ICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjM0NVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEg
cHJldHR5IGJhZCBidWZmZXIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBv
dmVyZmxvdyBpbiAnKQorICAgICAgICBzZWxmLmFzc2VydF9lcnJvcigyLCByYW5nZSgxLCAyMCks
ICdjaGFuZ2Vsb2cvdW53YW50ZWRzZWN1cml0eXRlcm1zJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgJzIwMTYtMTEtMTEgQm9ndXMgUGVyc29uIDxicGVyc29uQGV4YW1wbGUuY29tPlxuJwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBGaXggdXNlIGFmdGVyIGZyZWVcbicK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xu
JworICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBBIGdvb2QgZml4LicpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2Vycm9yKDUsIHJhbmdlKDEsIDIwKSwgJ2NoYW5nZWxvZy91bndhbnRl
ZHNlY3VyaXR5dGVybXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnMjAxNi0xMS0xMSBC
b2d1cyBQZXJzb24gPGJwZXJzb25AZXhhbXBsZS5jb20+XG4nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICcgICAgICAgIEV4YW1wbGVCdWdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
JyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDVcbicK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAnICAgICAgICBCdWcgZm91bmQgdGhyb3VnaCBmdXp6aW5nLicpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2Vycm9yKDksIHJhbmdlKDEsIDIwKSwgJ2NoYW5nZWxvZy91bndhbnRlZHNlY3VyaXR5dGVy
bXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnMjAxNi0xMS0xMSBCb2d1cyBQZXJzb24g
PGJwZXJzb25AZXhhbXBsZS5jb20+XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAg
ICAgIEV4YW1wbGVCdWdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgaHR0
cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDVcbicKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBC
dWcgZm91bmQgdGhyb3VnaCB0ZXN0aW5nLicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xu
JworICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBTZXZlcmFsIG5ldyB0ZXN0cyBh
ZGRlZC4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyAgICAgICAgKiBTb3VyY2UvV2ViS2l0L2Zvby5jcHA6ICAgIFxuJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAnICAgICAgICAqIFNvdXJjZS9XZWJLaXQvYmFyLmNwcDpcbicK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgKiBTb3VyY2UvV2ViS2l0L2Zvb2Jh
ci5jcHA6IFZ1bG5lcmFiaWxpdGllcyBmaXhlZFxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRfZXJy
b3IoNSwgcmFuZ2UoMSwgMjApLCAnY2hhbmdlbG9nL3Vud2FudGVkc2VjdXJpdHl0ZXJtcycsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICcyMDE2LTExLTExIEJvZ3VzIFBlcnNvbiA8YnBlcnNv
bkBleGFtcGxlLmNvbT5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgRXhh
bXBsZUJ1ZyB3aXRoIHNldmVyYWwgc2VjdXJpdHkgc2Vuc2l0aXZlIHRlcm1zIGluIGNoYW5nZSBs
b2dcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgaHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDVcbicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBVc2UtYWZ0ZXItZnJl
ZSBmb3VuZCB0aHJvdWdoIHRlc3RpbmcuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4n
CisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFNldmVyYWwgbmV3IHRlc3RzIGFk
ZGVkIHRvIGNoZWNrIGRvdWJsZSBmcmVlLicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xu
JworICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAqIFNvdXJjZS9XZWJLaXQvZm9v
LmNwcDogICAgXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICogU291cmNl
L1dlYktpdC9iYXIuY3BwOlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAq
IFNvdXJjZS9XZWJLaXQvZm9vYmFyLmNwcDogbWVtb3J5IENPUlJVUFRJT04gZml4ZWRcbicpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290873</attachid>
            <date>2016-10-06 17:21:57 -0700</date>
            <delta_ts>2016-10-06 17:26:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163048-20161006171843.patch</filename>
            <type>text/plain</type>
            <size>9687</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwNjg3MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMwIEBACisyMDE2LTEwLTA2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29t
PgorCisgICAgICAgIE1vZGlmeSBjaGVjay13ZWJraXQtc3R5bGUgdG8gcHJvaGliaXQgc2Vuc2l0
aXZlIHBocmFzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzA0OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjgyODk3NTU+CisKKyAgICAgICAg
VGVybXMgY29uc2lkZXJlZCBvciBmb3VuZCB0byBiZSB0b28gZ2VuZXJhbCB0byBmbGFnOgorICAg
ICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTiwgYmFkIGNhc3QsIGJ1ZywgYnlw
YXNzLCBjcmFzaCwKKyAgICAgICAgZGVuaWFsIG9mIHNlcnZpY2UsIGRlcmVmZXJlbmNlLCBkaXNj
bG9zdXJlLCBlcnJvciwgZXhwbG9pdCwKKyAgICAgICAgZmFpbHVyZSwgaGVhcCwgaW50ZWdlciBv
dmVyZmxvdywgbGVhaywgbnVsbCBkZXJlZmVyZW5jZSwKKyAgICAgICAgbnVsbCBwb2ludGVyIGRl
cmVmZXJlbmNlLCBvdXQgb2YgYm91bmRzLCBvdmVyZmxvdywKKyAgICAgICAgcmFjZSBjb25kaXRp
b24sIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiwgc3RhY2ssIHR5cGUgY29uZnVzaW9uLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy9jaGFuZ2Vsb2cucHk6CisgICAgICAgIChDaGFuZ2VMb2dDaGVj
a2VyLmNoZWNrX2VudHJ5KToKKyAgICAgICAgICAgIE5vdyBjYWxscyBDaGFuZ2VMb2dDaGVja2Vy
LmNoZWNrX2Zvcl91bndhbnRlZF9zZWN1cml0eV90ZXJtcygpLgorICAgICAgICAoQ2hhbmdlTG9n
Q2hlY2tlcik6CisgICAgICAgIChDaGFuZ2VMb2dDaGVja2VyLmNoZWNrX2Zvcl91bndhbnRlZF9z
ZWN1cml0eV90ZXJtcyk6CisgICAgICAgICAgICBOZXcgZnVuY3Rpb24gdG8gY2hlY2sgZm9yIHNl
bnNpdGl2ZSB0ZXJtcy4KKyAgICAgICAgKENoYW5nZUxvZ0NoZWNrZXIuY2hlY2tfZm9yX3Vud2Fu
dGVkX3NlY3VyaXR5X3Rlcm1zLkZvdW5kVW53YW50ZWRTZWN1cml0eVRlcm0pOgorICAgICAgICAo
Q2hhbmdlTG9nQ2hlY2tlci5jaGVja19mb3JfdW53YW50ZWRfc2VjdXJpdHlfdGVybXMuRm91bmRV
bndhbnRlZFNlY3VyaXR5VGVybS5fX2luaXRfXyk6CisgICAgICAgICAgICBDb252ZW5pZW5jZSBj
bGFzcy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NoYW5nZWxv
Z191bml0dGVzdC5weToKKyAgICAgICAgKENoYW5nZUxvZ0NoZWNrZXJUZXN0LnRlc3RfdW53YW50
ZWRfc2VjdXJpdHlfdGVybXMpOgorCiAyMDE2LTEwLTA2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5k
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3MK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY2hhbmdlbG9nLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY2hh
bmdlbG9nLnB5CShyZXZpc2lvbiAyMDY4NzEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL2NoYW5nZWxvZy5weQkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsOSBA
QAogIiIiQ2hlY2tzIFdlYktpdCBzdHlsZSBmb3IgQ2hhbmdlTG9nIGZpbGVzLiIiIgogCiBmcm9t
IGNvbW1vbiBpbXBvcnQgVGFiQ2hlY2tlciwgbWF0Y2gsIHNlYXJjaCwgc2VhcmNoSWdub3JlY2Fz
ZQorZnJvbSBzeXMgaW1wb3J0IG1heHNpemUKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0
LmNoYW5nZWxvZyBpbXBvcnQgcGFyc2VfYnVnX2lkX2Zyb21fY2hhbmdlbG9nCitmcm9tIHdlYmtp
dHB5LnRvb2wuZ3JhbW1hciBpbXBvcnQgcGx1cmFsaXplCiAKIAogY2xhc3MgQ2hhbmdlTG9nQ2hl
Y2tlcihvYmplY3QpOgpAQCAtNzQsNiArNzYsOCBAQCBjbGFzcyBDaGFuZ2VMb2dDaGVja2VyKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYW5nZWxv
Zy9ub25ld3Rlc3RzIiwgNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiWW91IHNob3VsZCByZW1vdmUgdGhlICdObyBuZXcgdGVzdHMnIGFuZCBlaXRoZXIgYWRkIGFu
ZCBsaXN0IHRlc3RzLCBvciBleHBsYWluIHdoeSBubyBuZXcgdGVzdHMgd2VyZSBwb3NzaWJsZS4i
KQogCisgICAgICAgIHNlbGYuY2hlY2tfZm9yX3Vud2FudGVkX3NlY3VyaXR5X3BocmFzZXMoZmly
c3RfbGluZV9jaGVja2VkLCBlbnRyeV9saW5lcykKKwogICAgIGRlZiBjaGVjayhzZWxmLCBsaW5l
cyk6CiAgICAgICAgIHNlbGYuX3RhYl9jaGVja2VyLmNoZWNrKGxpbmVzKQogICAgICAgICBmaXJz
dF9saW5lX2NoZWNrZWQgPSAwCkBAIC05MSwzICs5NSwzNiBAQCBjbGFzcyBDaGFuZ2VMb2dDaGVj
a2VyKG9iamVjdCk6CiAgICAgICAgICAgICBlbnRyeV9saW5lcy5hcHBlbmQobGluZSkKIAogICAg
ICAgICBzZWxmLmNoZWNrX2VudHJ5KGZpcnN0X2xpbmVfY2hlY2tlZCwgZW50cnlfbGluZXMpCisK
KyAgICBkZWYgY29udGFpbnNfcGhyYXNlX2luX2ZpcnN0X2xpbmVfb3JfYWNyb3NzX3R3b19saW5l
cyhzZWxmLCBwaHJhc2UsIGxpbmUxLCBsaW5lMik6CisgICAgICAgIHJldHVybiBzZWFyY2hJZ25v
cmVjYXNlKHBocmFzZSwgbGluZTEpIG9yICgobm90IHNlYXJjaElnbm9yZWNhc2UocGhyYXNlLCBs
aW5lMikpIGFuZCBzZWFyY2hJZ25vcmVjYXNlKHBocmFzZSwgbGluZTEgKyAiICIgKyBsaW5lMikp
CisKKyAgICBkZWYgY2hlY2tfZm9yX3Vud2FudGVkX3NlY3VyaXR5X3BocmFzZXMoc2VsZiwgZmly
c3RfbGluZV9jaGVja2VkLCBsaW5lcyk6CisgICAgICAgIHVud2FudGVkX3NlY3VyaXR5X3BocmFz
ZXMgPSBbCisgICAgICAgICAgICAiYXJiaXRyYXJ5IGNvZGUgZXhlY3V0aW9uIiwgImJ1ZmZlciBv
dmVyZmxvdyIsICJidWZmZXIgb3ZlcnJ1biIsCisgICAgICAgICAgICAiYnVmZmVyIHVuZGVycnVu
IiwgImRhbmdsaW5nIHBvaW50ZXIiLCAiZG91YmxlIGZyZWUiLCAiZnV6emVyIiwgImZ1enppbmci
LCAiZnV6eiB0ZXN0IiwKKyAgICAgICAgICAgICJpbnZhbGlkIGNhc3QiLCAianNmdW5mdXp6Iiwg
Im1hbGljaW91cyIsICJtZW1vcnkgY29ycnVwdGlvbiIsICJzZWN1cml0eSBidWciLAorICAgICAg
ICAgICAgInNlY3VyaXR5IGZsYXciLCAidXNlIGFmdGVyIGZyZWUiLCAidXNlLWFmdGVyLWZyZWUi
LCAiVVhTUyIsCisgICAgICAgICAgICAiV1RGQ3Jhc2hXaXRoU2VjdXJpdHlJbXBsaWNhdGlvbiIs
CisgICAgICAgICAgICAic3Bvb2YiLCAgIyBDYXB0dXJlcyBzcG9vZiwgc3Bvb2ZlZCwgc3Bvb2Zp
bmcKKyAgICAgICAgICAgICJ2dWxuZXJhYiIsICAjIENhcHR1cmVzIHZ1bG5lcmFibGUsIHZ1bG5l
cmFiaWxpdHksIHZ1bG5lcmFiaWxpdGllcworICAgICAgICBdCisKKyAgICAgICAgbGluZXNfd2l0
aF9zaW5nbGVfc3BhY2VzID0gW10KKyAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAg
ICAgICBsaW5lc193aXRoX3NpbmdsZV9zcGFjZXMuYXBwZW5kKCIgIi5qb2luKGxpbmUuc3BsaXQo
KSkpCisKKyAgICAgICAgZm91bmRfdW53YW50ZWRfc2VjdXJpdHlfcGhyYXNlcyA9IFtdCisgICAg
ICAgIGxhc3RfaW5kZXggPSBsZW4obGluZXNfd2l0aF9zaW5nbGVfc3BhY2VzKSAtIDEKKyAgICAg
ICAgZmlyc3RfbGluZV9udW1iZXJfd2l0aF91bndhbnRlZF9waHJhc2UgPSBtYXhzaXplCisgICAg
ICAgIGZvciB1bndhbnRlZF9waHJhc2UgaW4gdW53YW50ZWRfc2VjdXJpdHlfcGhyYXNlczoKKyAg
ICAgICAgICAgIGZvciBsaW5lX2luZGV4LCBsaW5lIGluIGVudW1lcmF0ZShsaW5lc193aXRoX3Np
bmdsZV9zcGFjZXMpOgorICAgICAgICAgICAgICAgIG5leHRfbGluZSA9ICIiIGlmIGxpbmVfaW5k
ZXggPj0gbGFzdF9pbmRleCBlbHNlIGxpbmVzX3dpdGhfc2luZ2xlX3NwYWNlc1tsaW5lX2luZGV4
ICsgMV0KKyAgICAgICAgICAgICAgICBpZiBzZWxmLmNvbnRhaW5zX3BocmFzZV9pbl9maXJzdF9s
aW5lX29yX2Fjcm9zc190d29fbGluZXModW53YW50ZWRfcGhyYXNlLCBsaW5lLCBuZXh0X2xpbmUp
OgorICAgICAgICAgICAgICAgICAgICBmb3VuZF91bndhbnRlZF9zZWN1cml0eV9waHJhc2VzLmFw
cGVuZCh1bndhbnRlZF9waHJhc2UpCisgICAgICAgICAgICAgICAgICAgIGZpcnN0X2xpbmVfbnVt
YmVyX3dpdGhfdW53YW50ZWRfcGhyYXNlID0gbWluKGZpcnN0X2xpbmVfbnVtYmVyX3dpdGhfdW53
YW50ZWRfcGhyYXNlLCBmaXJzdF9saW5lX2NoZWNrZWQgKyBsaW5lX2luZGV4KQorCisgICAgICAg
IGlmIGxlbihmb3VuZF91bndhbnRlZF9zZWN1cml0eV9waHJhc2VzKSA+IDA6CisgICAgICAgICAg
ICBzZWxmLmhhbmRsZV9zdHlsZV9lcnJvcihmaXJzdF9saW5lX251bWJlcl93aXRoX3Vud2FudGVk
X3BocmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFuZ2Vsb2cv
dW53YW50ZWRzZWN1cml0eXRlcm1zIiwgMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJQbGVhc2UgY29uc2lkZXIgd2hldGhlciB0aGUgdXNlIG9mIHNlY3VyaXR5LXNlbnNp
dGl2ZSBwaHJhc2luZyBjb3VsZCBoZWxwIHNvbWVvbmUgZXhwbG9pdCBXZWJLaXQ6IHt9Ii5mb3Jt
YXQoIiwgIi5qb2luKGZvdW5kX3Vud2FudGVkX3NlY3VyaXR5X3BocmFzZXMpKSkKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY2hh
bmdlbG9nX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMDY4NzEpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NoYW5nZWxvZ191bml0dGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtMTgwLDMgKzE4MCw2NiBAQCBjbGFzcyBDaGFuZ2VMb2dDaGVja2VyVGVzdCh1bml0dGVz
dC5UZXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICogU291cmNlL1dl
YktpdC9mb28uY3BwOiAgICBcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAg
ICAgKiBTb3VyY2UvV2ViS2l0L2Jhci5jcHA6XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcgICAgICAgICogU291cmNlL1dlYktpdC9mb29iYXIuY3BwOiBEZXNjcmlwdGlvblxuJykK
KworICAgIGRlZiB0ZXN0X3Vud2FudGVkX3NlY3VyaXR5X3Rlcm1zKHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydF9lcnJvcig1LCByYW5nZSgxLCAyMCksICdjaGFuZ2Vsb2cvdW53YW50ZWRzZWN1
cml0eXRlcm1zJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMTYtMTEtMTEgQm9ndXMg
UGVyc29uIDxicGVyc29uQGV4YW1wbGUuY29tPlxuJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAnICAgICAgICBFeGFtcGxlQnVnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAg
ICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzQ1XG4nCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAg
ICAgICAgQSBidWZmZXIgb3ZlcmZsb3cgZXhpc3RlZCBpbiBjb2RlLlxuJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfZXJyb3IoOSwgcmFuZ2UoMSwgMjApLCAnY2hhbmdlbG9nL3Vud2FudGVkc2VjdXJp
dHl0ZXJtcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICcyMDE2LTExLTExIEJvZ3VzIFBl
cnNvbiA8YnBlcnNvbkBleGFtcGxlLmNvbT5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
JyAgICAgICAgRXhhbXBsZUJ1Z1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAg
ICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM0NVxuJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgZ3JlYXQgbnVtYmVyIG9mIGlzc3Vlcy5cbicKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgVGhlcmVmb3JlIHRoZXJlIGlzIGEgbG90
IHRvIHNheSBoZXJlIGFib3V0IGEgZ3JlYXRcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
JyAgICAgICAgbWFueSB0aGluZ3Mgc3VjaCBhcyB0aGUgd2VhdGhlciwgdGhlIGxhdGVzdCBhbmRc
bicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgZ3JlYXRlc3QgaW4gc3BvcnRz
LCBhbmQgdGhlIG1vb2Qgb2YgZmljdGlvblxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAn
ICAgICAgICBjaGFyYWN0ZXJzLiBBbnl3YXkgdGhlIHBhdGNoIGZpeGVzIGEgdXNlIGFmdGVyXG4n
CisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIGZyZWUgd2hpY2ggaXMgbm90IGdv
b2QuIE9yIHJhdGhlciwgaXQgaXMgZ29vZFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAn
ICAgICAgICB0aGF0IGl0IGlzIGZpeGVkIGJ1dCBub3QgZ29vZCB0aGF0IGl0IGV4aXN0ZWQuXG4n
KQorICAgICAgICBzZWxmLmFzc2VydF9lcnJvcig1LCByYW5nZSgxLCAyMCksICdjaGFuZ2Vsb2cv
dW53YW50ZWRzZWN1cml0eXRlcm1zJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMTYt
MTEtMTEgQm9ndXMgUGVyc29uIDxicGVyc29uQGV4YW1wbGUuY29tPlxuJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAnICAgICAgICBFeGFtcGxlQnVnXG4nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICcgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MzQ1XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyAgICAgICAgVGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBwcmV0dHkgYmFkIGJ1ZmZl
clxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBvdmVyZmxvdyBpblxuJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfZXJyb3IoMiwgcmFuZ2UoMSwgMjApLCAnY2hhbmdlbG9nL3Vu
d2FudGVkc2VjdXJpdHl0ZXJtcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICcyMDE2LTEx
LTExIEJvZ3VzIFBlcnNvbiA8YnBlcnNvbkBleGFtcGxlLmNvbT5cbicKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyAgICAgICAgRml4IHVzZSBhZnRlciBmcmVlXG4nCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICcgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMzQ1XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgJyAgICAgICAgQSBnb29kIGZpeC5cbicpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2Vycm9yKDUsIHJhbmdlKDEsIDIwKSwgJ2NoYW5nZWxvZy91bndhbnRlZHNlY3VyaXR5dGVy
bXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnMjAxNi0xMS0xMSBCb2d1cyBQZXJzb24g
PGJwZXJzb25AZXhhbXBsZS5jb20+XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAg
ICAgIEV4YW1wbGVCdWdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgaHR0
cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDVcbicKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBC
dWcgZm91bmQgdGhyb3VnaCBmdXp6aW5nLlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRfZXJyb3Io
MTEsIHJhbmdlKDEsIDIwKSwgJ2NoYW5nZWxvZy91bndhbnRlZHNlY3VyaXR5dGVybXMnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAnMjAxNi0xMS0xMSBCb2d1cyBQZXJzb24gPGJwZXJzb25A
ZXhhbXBsZS5jb20+XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIEV4YW1w
bGVCdWdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgaHR0cDovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDVcbicKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBCdWcgZm91bmQg
dGhyb3VnaCB0ZXN0aW5nLlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFNldmVyYWwgbmV3IHRlc3RzIGFkZGVkLlxu
JworICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICcgICAgICAgICogU291cmNlL1dlYktpdC9mb28uY3BwOiAgICBcbicKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgJyAgICAgICAgKiBTb3VyY2UvV2ViS2l0L2Jhci5jcHA6XG4nCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICogU291cmNlL1dlYktpdC9mb29iYXIuY3Bw
OiBWdWxuZXJhYmlsaXRpZXMgZml4ZWRcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0X2Vycm9yKDUs
IHJhbmdlKDEsIDIwKSwgJ2NoYW5nZWxvZy91bndhbnRlZHNlY3VyaXR5dGVybXMnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAnMjAxNi0xMS0xMSBCb2d1cyBQZXJzb24gPGJwZXJzb25AZXhh
bXBsZS5jb20+XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIEV4YW1wbGVC
dWcgd2l0aCBzZXZlcmFsIHNlY3VyaXR5IHNlbnNpdGl2ZSB0ZXJtcyBpbiBjaGFuZ2UgbG9nXG4n
CisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMzQ1XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdc
bicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgVXNlLWFmdGVyLWZyZWUgZm91
bmQgdGhyb3VnaCB0ZXN0aW5nLlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFNldmVyYWwgbmV3IHRlc3RzIGFkZGVk
IHRvIGNoZWNrIGRvdWJsZSBmcmVlLlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4n
CisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICogU291cmNlL1dlYktpdC9mb28u
Y3BwOiAgICBcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgKiBTb3VyY2Uv
V2ViS2l0L2Jhci5jcHA6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICog
U291cmNlL1dlYktpdC9mb29iYXIuY3BwOiBtZW1vcnkgQ09SUlVQVElPTiBmaXhlZFxuJykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290874</attachid>
            <date>2016-10-06 17:26:04 -0700</date>
            <delta_ts>2016-10-11 09:41:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163048-20161006172250.patch</filename>
            <type>text/plain</type>
            <size>9609</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwNjg3MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMwIEBACisyMDE2LTEwLTA2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29t
PgorCisgICAgICAgIE1vZGlmeSBjaGVjay13ZWJraXQtc3R5bGUgdG8gcHJvaGliaXQgc2Vuc2l0
aXZlIHBocmFzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzA0OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjgyODk3NTU+CisKKyAgICAgICAg
VGVybXMgY29uc2lkZXJlZCBvciBmb3VuZCB0byBiZSB0b28gZ2VuZXJhbCB0byBmbGFnOgorICAg
ICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTiwgYmFkIGNhc3QsIGJ1ZywgYnlw
YXNzLCBjcmFzaCwKKyAgICAgICAgZGVuaWFsIG9mIHNlcnZpY2UsIGRlcmVmZXJlbmNlLCBkaXNj
bG9zdXJlLCBlcnJvciwgZXhwbG9pdCwKKyAgICAgICAgZmFpbHVyZSwgaGVhcCwgaW50ZWdlciBv
dmVyZmxvdywgbGVhaywgbnVsbCBkZXJlZmVyZW5jZSwKKyAgICAgICAgbnVsbCBwb2ludGVyIGRl
cmVmZXJlbmNlLCBvdXQgb2YgYm91bmRzLCBvdmVyZmxvdywKKyAgICAgICAgcmFjZSBjb25kaXRp
b24sIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiwgc3RhY2ssIHR5cGUgY29uZnVzaW9uLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy9jaGFuZ2Vsb2cucHk6CisgICAgICAgIChDaGFuZ2VMb2dDaGVj
a2VyLmNoZWNrX2VudHJ5KToKKyAgICAgICAgICAgIE5vdyBjYWxscyBDaGFuZ2VMb2dDaGVja2Vy
LmNoZWNrX2Zvcl91bndhbnRlZF9zZWN1cml0eV90ZXJtcygpLgorICAgICAgICAoQ2hhbmdlTG9n
Q2hlY2tlcik6CisgICAgICAgIChDaGFuZ2VMb2dDaGVja2VyLmNoZWNrX2Zvcl91bndhbnRlZF9z
ZWN1cml0eV90ZXJtcyk6CisgICAgICAgICAgICBOZXcgZnVuY3Rpb24gdG8gY2hlY2sgZm9yIHNl
bnNpdGl2ZSB0ZXJtcy4KKyAgICAgICAgKENoYW5nZUxvZ0NoZWNrZXIuY2hlY2tfZm9yX3Vud2Fu
dGVkX3NlY3VyaXR5X3Rlcm1zLkZvdW5kVW53YW50ZWRTZWN1cml0eVRlcm0pOgorICAgICAgICAo
Q2hhbmdlTG9nQ2hlY2tlci5jaGVja19mb3JfdW53YW50ZWRfc2VjdXJpdHlfdGVybXMuRm91bmRV
bndhbnRlZFNlY3VyaXR5VGVybS5fX2luaXRfXyk6CisgICAgICAgICAgICBDb252ZW5pZW5jZSBj
bGFzcy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NoYW5nZWxv
Z191bml0dGVzdC5weToKKyAgICAgICAgKENoYW5nZUxvZ0NoZWNrZXJUZXN0LnRlc3RfdW53YW50
ZWRfc2VjdXJpdHlfdGVybXMpOgorCiAyMDE2LTEwLTA2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5k
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3MK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY2hhbmdlbG9nLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY2hh
bmdlbG9nLnB5CShyZXZpc2lvbiAyMDY4NzEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL2NoYW5nZWxvZy5weQkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBA
QAogIiIiQ2hlY2tzIFdlYktpdCBzdHlsZSBmb3IgQ2hhbmdlTG9nIGZpbGVzLiIiIgogCiBmcm9t
IGNvbW1vbiBpbXBvcnQgVGFiQ2hlY2tlciwgbWF0Y2gsIHNlYXJjaCwgc2VhcmNoSWdub3JlY2Fz
ZQorZnJvbSBzeXMgaW1wb3J0IG1heHNpemUKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0
LmNoYW5nZWxvZyBpbXBvcnQgcGFyc2VfYnVnX2lkX2Zyb21fY2hhbmdlbG9nCiAKIApAQCAtNzQs
NiArNzUsOCBAQCBjbGFzcyBDaGFuZ2VMb2dDaGVja2VyKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYW5nZWxvZy9ub25ld3Rlc3RzIiwgNSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWW91IHNob3VsZCByZW1vdmUg
dGhlICdObyBuZXcgdGVzdHMnIGFuZCBlaXRoZXIgYWRkIGFuZCBsaXN0IHRlc3RzLCBvciBleHBs
YWluIHdoeSBubyBuZXcgdGVzdHMgd2VyZSBwb3NzaWJsZS4iKQogCisgICAgICAgIHNlbGYuY2hl
Y2tfZm9yX3Vud2FudGVkX3NlY3VyaXR5X3BocmFzZXMoZmlyc3RfbGluZV9jaGVja2VkLCBlbnRy
eV9saW5lcykKKwogICAgIGRlZiBjaGVjayhzZWxmLCBsaW5lcyk6CiAgICAgICAgIHNlbGYuX3Rh
Yl9jaGVja2VyLmNoZWNrKGxpbmVzKQogICAgICAgICBmaXJzdF9saW5lX2NoZWNrZWQgPSAwCkBA
IC05MSwzICs5NCwzNiBAQCBjbGFzcyBDaGFuZ2VMb2dDaGVja2VyKG9iamVjdCk6CiAgICAgICAg
ICAgICBlbnRyeV9saW5lcy5hcHBlbmQobGluZSkKIAogICAgICAgICBzZWxmLmNoZWNrX2VudHJ5
KGZpcnN0X2xpbmVfY2hlY2tlZCwgZW50cnlfbGluZXMpCisKKyAgICBkZWYgY29udGFpbnNfcGhy
YXNlX2luX2ZpcnN0X2xpbmVfb3JfYWNyb3NzX3R3b19saW5lcyhzZWxmLCBwaHJhc2UsIGxpbmUx
LCBsaW5lMik6CisgICAgICAgIHJldHVybiBzZWFyY2hJZ25vcmVjYXNlKHBocmFzZSwgbGluZTEp
IG9yICgobm90IHNlYXJjaElnbm9yZWNhc2UocGhyYXNlLCBsaW5lMikpIGFuZCBzZWFyY2hJZ25v
cmVjYXNlKHBocmFzZSwgbGluZTEgKyAiICIgKyBsaW5lMikpCisKKyAgICBkZWYgY2hlY2tfZm9y
X3Vud2FudGVkX3NlY3VyaXR5X3BocmFzZXMoc2VsZiwgZmlyc3RfbGluZV9jaGVja2VkLCBsaW5l
cyk6CisgICAgICAgIHVud2FudGVkX3NlY3VyaXR5X3BocmFzZXMgPSBbCisgICAgICAgICAgICAi
YXJiaXRyYXJ5IGNvZGUgZXhlY3V0aW9uIiwgImJ1ZmZlciBvdmVyZmxvdyIsICJidWZmZXIgb3Zl
cnJ1biIsCisgICAgICAgICAgICAiYnVmZmVyIHVuZGVycnVuIiwgImRhbmdsaW5nIHBvaW50ZXIi
LCAiZG91YmxlIGZyZWUiLCAiZnV6emVyIiwgImZ1enppbmciLCAiZnV6eiB0ZXN0IiwKKyAgICAg
ICAgICAgICJpbnZhbGlkIGNhc3QiLCAianNmdW5mdXp6IiwgIm1hbGljaW91cyIsICJtZW1vcnkg
Y29ycnVwdGlvbiIsICJzZWN1cml0eSBidWciLAorICAgICAgICAgICAgInNlY3VyaXR5IGZsYXci
LCAidXNlIGFmdGVyIGZyZWUiLCAidXNlLWFmdGVyLWZyZWUiLCAiVVhTUyIsCisgICAgICAgICAg
ICAiV1RGQ3Jhc2hXaXRoU2VjdXJpdHlJbXBsaWNhdGlvbiIsCisgICAgICAgICAgICAic3Bvb2Yi
LCAgIyBDYXB0dXJlcyBzcG9vZiwgc3Bvb2ZlZCwgc3Bvb2ZpbmcKKyAgICAgICAgICAgICJ2dWxu
ZXJhYiIsICAjIENhcHR1cmVzIHZ1bG5lcmFibGUsIHZ1bG5lcmFiaWxpdHksIHZ1bG5lcmFiaWxp
dGllcworICAgICAgICBdCisKKyAgICAgICAgbGluZXNfd2l0aF9zaW5nbGVfc3BhY2VzID0gW10K
KyAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICBsaW5lc193aXRoX3Npbmds
ZV9zcGFjZXMuYXBwZW5kKCIgIi5qb2luKGxpbmUuc3BsaXQoKSkpCisKKyAgICAgICAgZm91bmRf
dW53YW50ZWRfc2VjdXJpdHlfcGhyYXNlcyA9IFtdCisgICAgICAgIGxhc3RfaW5kZXggPSBsZW4o
bGluZXNfd2l0aF9zaW5nbGVfc3BhY2VzKSAtIDEKKyAgICAgICAgZmlyc3RfbGluZV9udW1iZXJf
d2l0aF91bndhbnRlZF9waHJhc2UgPSBtYXhzaXplCisgICAgICAgIGZvciB1bndhbnRlZF9waHJh
c2UgaW4gdW53YW50ZWRfc2VjdXJpdHlfcGhyYXNlczoKKyAgICAgICAgICAgIGZvciBsaW5lX2lu
ZGV4LCBsaW5lIGluIGVudW1lcmF0ZShsaW5lc193aXRoX3NpbmdsZV9zcGFjZXMpOgorICAgICAg
ICAgICAgICAgIG5leHRfbGluZSA9ICIiIGlmIGxpbmVfaW5kZXggPj0gbGFzdF9pbmRleCBlbHNl
IGxpbmVzX3dpdGhfc2luZ2xlX3NwYWNlc1tsaW5lX2luZGV4ICsgMV0KKyAgICAgICAgICAgICAg
ICBpZiBzZWxmLmNvbnRhaW5zX3BocmFzZV9pbl9maXJzdF9saW5lX29yX2Fjcm9zc190d29fbGlu
ZXModW53YW50ZWRfcGhyYXNlLCBsaW5lLCBuZXh0X2xpbmUpOgorICAgICAgICAgICAgICAgICAg
ICBmb3VuZF91bndhbnRlZF9zZWN1cml0eV9waHJhc2VzLmFwcGVuZCh1bndhbnRlZF9waHJhc2Up
CisgICAgICAgICAgICAgICAgICAgIGZpcnN0X2xpbmVfbnVtYmVyX3dpdGhfdW53YW50ZWRfcGhy
YXNlID0gbWluKGZpcnN0X2xpbmVfbnVtYmVyX3dpdGhfdW53YW50ZWRfcGhyYXNlLCBmaXJzdF9s
aW5lX2NoZWNrZWQgKyBsaW5lX2luZGV4KQorCisgICAgICAgIGlmIGxlbihmb3VuZF91bndhbnRl
ZF9zZWN1cml0eV9waHJhc2VzKSA+IDA6CisgICAgICAgICAgICBzZWxmLmhhbmRsZV9zdHlsZV9l
cnJvcihmaXJzdF9saW5lX251bWJlcl93aXRoX3Vud2FudGVkX3BocmFzZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFuZ2Vsb2cvdW53YW50ZWRzZWN1cml0eXRlcm1z
IiwgMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQbGVhc2UgY29uc2lk
ZXIgd2hldGhlciB0aGUgdXNlIG9mIHNlY3VyaXR5LXNlbnNpdGl2ZSBwaHJhc2luZyBjb3VsZCBo
ZWxwIHNvbWVvbmUgZXhwbG9pdCBXZWJLaXQ6IHt9Ii5mb3JtYXQoIiwgIi5qb2luKGZvdW5kX3Vu
d2FudGVkX3NlY3VyaXR5X3BocmFzZXMpKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiAyMDY4NzEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2NoYW5nZWxvZ191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTgwLDMgKzE4MCw2NiBA
QCBjbGFzcyBDaGFuZ2VMb2dDaGVja2VyVGVzdCh1bml0dGVzdC5UZXN0CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcgICAgICAgICogU291cmNlL1dlYktpdC9mb28uY3BwOiAgICBcbicK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgKiBTb3VyY2UvV2ViS2l0L2Jh
ci5jcHA6XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICogU291cmNl
L1dlYktpdC9mb29iYXIuY3BwOiBEZXNjcmlwdGlvblxuJykKKworICAgIGRlZiB0ZXN0X3Vud2Fu
dGVkX3NlY3VyaXR5X3Rlcm1zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9lcnJvcig1LCBy
YW5nZSgxLCAyMCksICdjaGFuZ2Vsb2cvdW53YW50ZWRzZWN1cml0eXRlcm1zJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgJzIwMTYtMTEtMTEgQm9ndXMgUGVyc29uIDxicGVyc29uQGV4YW1w
bGUuY29tPlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBFeGFtcGxlQnVn
XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzQ1XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgQSBidWZmZXIgb3ZlcmZs
b3cgZXhpc3RlZCBpbiBjb2RlLlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRfZXJyb3IoOSwgcmFu
Z2UoMSwgMjApLCAnY2hhbmdlbG9nL3Vud2FudGVkc2VjdXJpdHl0ZXJtcycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICcyMDE2LTExLTExIEJvZ3VzIFBlcnNvbiA8YnBlcnNvbkBleGFtcGxl
LmNvbT5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgRXhhbXBsZUJ1Z1xu
JworICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBodHRwOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM0NVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAn
XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFRoaXMgcGF0Y2ggYWRkcmVz
c2VzIGEgZ3JlYXQgbnVtYmVyIG9mIGlzc3Vlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgJyAgICAgICAgVGhlcmVmb3JlIHRoZXJlIGlzIGEgbG90IHRvIHNheSBoZXJlIGFib3V0IGEg
Z3JlYXRcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgbWFueSB0aGluZ3Mg
c3VjaCBhcyB0aGUgd2VhdGhlciwgdGhlIGxhdGVzdCBhbmRcbicKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyAgICAgICAgZ3JlYXRlc3QgaW4gc3BvcnRzLCBhbmQgdGhlIG1vb2Qgb2YgZmlj
dGlvblxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBjaGFyYWN0ZXJzLiBB
bnl3YXkgdGhlIHBhdGNoIGZpeGVzIGEgdXNlIGFmdGVyXG4nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICcgICAgICAgIGZyZWUgd2hpY2ggaXMgbm90IGdvb2QuIE9yIHJhdGhlciwgaXQgaXMg
Z29vZFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICB0aGF0IGl0IGlzIGZp
eGVkIGJ1dCBub3QgZ29vZCB0aGF0IGl0IGV4aXN0ZWQuXG4nKQorICAgICAgICBzZWxmLmFzc2Vy
dF9lcnJvcig1LCByYW5nZSgxLCAyMCksICdjaGFuZ2Vsb2cvdW53YW50ZWRzZWN1cml0eXRlcm1z
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMTYtMTEtMTEgQm9ndXMgUGVyc29uIDxi
cGVyc29uQGV4YW1wbGUuY29tPlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAg
ICBFeGFtcGxlQnVnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzQ1XG4nCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgVGhp
cyBwYXRjaCBhZGRyZXNzZXMgYSBwcmV0dHkgYmFkIGJ1ZmZlclxuJworICAgICAgICAgICAgICAg
ICAgICAgICAgICAnICAgICAgICBvdmVyZmxvdyBpblxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
ZXJyb3IoMiwgcmFuZ2UoMSwgMjApLCAnY2hhbmdlbG9nL3Vud2FudGVkc2VjdXJpdHl0ZXJtcycs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICcyMDE2LTExLTExIEJvZ3VzIFBlcnNvbiA8YnBl
cnNvbkBleGFtcGxlLmNvbT5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAg
Rml4IHVzZSBhZnRlciBmcmVlXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAg
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzQ1XG4nCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAg
ICAgQSBnb29kIGZpeC5cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0X2Vycm9yKDUsIHJhbmdlKDEs
IDIwKSwgJ2NoYW5nZWxvZy91bndhbnRlZHNlY3VyaXR5dGVybXMnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAnMjAxNi0xMS0xMSBCb2d1cyBQZXJzb24gPGJwZXJzb25AZXhhbXBsZS5jb20+
XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIEV4YW1wbGVCdWdcbicKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTIzNDVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBCdWcgZm91bmQgdGhyb3VnaCBmdXp6
aW5nLlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRfZXJyb3IoMTEsIHJhbmdlKDEsIDIwKSwgJ2No
YW5nZWxvZy91bndhbnRlZHNlY3VyaXR5dGVybXMnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAnMjAxNi0xMS0xMSBCb2d1cyBQZXJzb24gPGJwZXJzb25AZXhhbXBsZS5jb20+XG4nCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIEV4YW1wbGVCdWdcbicKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgJyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIzNDVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAg
ICAgICAgICAgICAgICAgICAnICAgICAgICBCdWcgZm91bmQgdGhyb3VnaCB0ZXN0aW5nLlxuJwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICcgICAgICAgIFNldmVyYWwgbmV3IHRlc3RzIGFkZGVkLlxuJworICAgICAgICAgICAgICAgICAg
ICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICogU291cmNl
L1dlYktpdC9mb28uY3BwOiAgICBcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAg
ICAgKiBTb3VyY2UvV2ViS2l0L2Jhci5jcHA6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICcgICAgICAgICogU291cmNlL1dlYktpdC9mb29iYXIuY3BwOiBWdWxuZXJhYmlsaXRpZXMgZml4
ZWRcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0X2Vycm9yKDUsIHJhbmdlKDEsIDIwKSwgJ2NoYW5n
ZWxvZy91bndhbnRlZHNlY3VyaXR5dGVybXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAn
MjAxNi0xMS0xMSBCb2d1cyBQZXJzb24gPGJwZXJzb25AZXhhbXBsZS5jb20+XG4nCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICcgICAgICAgIEV4YW1wbGVCdWcgd2l0aCBzZXZlcmFsIHNlY3Vy
aXR5IHNlbnNpdGl2ZSB0ZXJtcyBpbiBjaGFuZ2UgbG9nXG4nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICcgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MzQ1XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyAgICAgICAgVXNlLWFmdGVyLWZyZWUgZm91bmQgdGhyb3VnaCB0ZXN0aW5nLlxu
JworICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICcgICAgICAgIFNldmVyYWwgbmV3IHRlc3RzIGFkZGVkIHRvIGNoZWNrIGRvdWJsZSBmcmVl
LlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICcgICAgICAgICogU291cmNlL1dlYktpdC9mb28uY3BwOiAgICBcbicKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgJyAgICAgICAgKiBTb3VyY2UvV2ViS2l0L2Jhci5jcHA6XG4nCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICogU291cmNlL1dlYktpdC9mb29iYXIu
Y3BwOiBtZW1vcnkgQ09SUlVQVElPTiBmaXhlZFxuJykK
</data>

          </attachment>
      

    </bug>

</bugzilla>