<?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>85368</bug_id>
          
          <creation_ts>2012-05-02 05:37:18 -0700</creation_ts>
          <short_desc>[webkit-patch] Add new chrome-channels to track down current chrome release channels for a committed bug.</short_desc>
          <delta_ts>2012-05-08 06:36:48 -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>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Peters">gavinp</reporter>
          <assigned_to name="Gavin Peters">gavinp</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>614208</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-05-02 05:37:18 -0700</bug_when>
    <thetext>[webkit-patch] Add new chrome-channels to track down current chrome release channels for a committed bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614209</commentid>
    <comment_count>1</comment_count>
      <attachid>139793</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-05-02 05:39:05 -0700</bug_when>
    <thetext>Created attachment 139793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614211</commentid>
    <comment_count>2</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-05-02 05:43:55 -0700</bug_when>
    <thetext>I&apos;d like to eventually make this into a mini-bot that comments on bugs that have a keyword chrome-channel-reports on them.  But, for now, this new command will save me a lot of time. 

dpranke, WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614677</commentid>
    <comment_count>3</comment_count>
      <attachid>139793</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-05-02 14:37:51 -0700</bug_when>
    <thetext>Comment on attachment 139793
Patch

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

We typically require at least *some* form of test for anything that gets checked in, even if it is a &quot;scripting hack&quot; :)

&gt; Tools/Scripts/webkitpy/common/net/omahaproxy.py:67
&gt; +                    row = (int(version[&apos;base_webkit_revision&apos;]), version[&apos;channel&apos;], platform[&apos;os&apos;], version[&apos;date&apos;])

Should this be a dict or an object instead of a tuple?

&gt; Tools/Scripts/webkitpy/tool/commands/chromechannels.py:38
&gt; +    help_text = &quot;Lists which chrome channels the commit associated with a bug is included in.&quot;

I&apos;m actually unclear on this ... is it figuring out when a bugfix is introduced, when a bug is introduced, or is really just querying revision numbers regardless of what the change in the revision was for?

Also, it looks like the usage is &quot;webkit-patch chrome-channels bug&quot; ... can we mention that bugno is a required argument somewhere and whether it is a bug number, or a URL to the bug, or ... ?

What happens if there were multiple commits for a single bug number? It&apos;s rare, but it certainly happens ... do you look for channels that have any of the commits? all of the commits? etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614680</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-05-02 14:40:12 -0700</bug_when>
    <thetext>I&apos;m also a little torn on this functionality since it is so chromium-specific; I&apos;m not sure how suitable this is for being in webkit at all.

That said, it does seem useful, so I&apos;m on the side of including it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614865</commentid>
    <comment_count>5</comment_count>
      <attachid>139793</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-02 17:40:56 -0700</bug_when>
    <thetext>Comment on attachment 139793
Patch

The more the merrier.  Chrome should feel welcome to add chrome-specific stuff to webkit-patch IMO.  The architecture was designed such that Apple could add sekret commands in some other directory for importing into Radar, etc.  I don&apos;t see why Chrome shouldn&apos;t be able to do the same.  We could move this command out of the main WebKit system at some point if needed.  I&apos;m not sure Host should hold the OmahaProxy however, since this is the only command which needs one, and adding something to host means all webkitpy commands would load it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617681</commentid>
    <comment_count>6</comment_count>
      <attachid>139793</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-05-07 10:23:57 -0700</bug_when>
    <thetext>Comment on attachment 139793
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/common/net/omahaproxy.py:67
&gt;&gt; +                    row = (int(version[&apos;base_webkit_revision&apos;]), version[&apos;channel&apos;], platform[&apos;os&apos;], version[&apos;date&apos;])
&gt; 
&gt; Should this be a dict or an object instead of a tuple?

Yes. Done.

&gt;&gt; Tools/Scripts/webkitpy/tool/commands/chromechannels.py:38
&gt;&gt; +    help_text = &quot;Lists which chrome channels the commit associated with a bug is included in.&quot;
&gt; 
&gt; I&apos;m actually unclear on this ... is it figuring out when a bugfix is introduced, when a bug is introduced, or is really just querying revision numbers regardless of what the change in the revision was for?
&gt; 
&gt; Also, it looks like the usage is &quot;webkit-patch chrome-channels bug&quot; ... can we mention that bugno is a required argument somewhere and whether it is a bug number, or a URL to the bug, or ... ?
&gt; 
&gt; What happens if there were multiple commits for a single bug number? It&apos;s rare, but it certainly happens ... do you look for channels that have any of the commits? all of the commits? etc.

I&apos;ve added long help, and also improved my search through the bug history to bail earlier when the history is too confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618141</commentid>
    <comment_count>7</comment_count>
      <attachid>140630</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-05-07 17:18:03 -0700</bug_when>
    <thetext>Created attachment 140630
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618149</commentid>
    <comment_count>8</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-05-07 17:28:11 -0700</bug_when>
    <thetext>The new upload adds tests and a lot more documentation.  I also documented bug-search, since chrome-channels is a variation on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618153</commentid>
    <comment_count>9</comment_count>
      <attachid>140630</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-07 17:30:53 -0700</bug_when>
    <thetext>Comment on attachment 140630
Patch

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

This seems really cool. :)

&gt; Tools/Scripts/webkitpy/common/net/omahaproxy.py:42
&gt; +    chrome_platforms = {&quot;linux&quot;: &quot;Linux&quot;, &quot;win&quot;: &quot;Windows&quot;, &quot;mac&quot;: &quot;Mac&quot;, &quot;cros&quot;: &quot;Chrome OS&quot;, &quot;cf&quot;: &quot;Chrome Frame&quot;}

IMO this dict would be more readable written out one pair per line.

&gt; Tools/Scripts/webkitpy/common/net/omahaproxy.py:63
&gt; +    def _get_json(self):
&gt; +        try:
&gt; +            return urllib2.urlopen(self._json_url()).read()
&gt; +        except urllib2.HTTPError, e:
&gt; +            if e.code == 404:
&gt; +                return None
&gt; +            raise e

I think we have something to do this for you.... NetworkRequest iirc?

&gt; Tools/Scripts/webkitpy/common/net/omahaproxy.py:71
&gt; +                    row = {&quot;commit&quot;: int(version[&quot;base_webkit_revision&quot;]),

I would normally have put the key/value pairs indented to 4c insetad of right after the {.  I&apos;m not sure what official pep8 is.

&gt; Tools/Scripts/webkitpy/common/net/omahaproxy.py:75
&gt; +                           }

I would have unintended this all the way to match &quot;row&quot;.  I&apos;m not sure what official pep8 style is.

&gt; Tools/Scripts/webkitpy/common/net/omahaproxy_unittest.py:44
&gt; +    example_omahaproxy_json = &quot;&quot;&quot;[{&quot;os&quot;: &quot;win&quot;, &quot;versions&quot;: [{&quot;base_webkit_revision&quot;: &quot;116185&quot;, &quot;v8_ver&quot;: &quot;3.10.8.1&quot;, &quot;wk_ver&quot;: &quot;536.11&quot;, &quot;base_trunk_revision&quot;: 135598, &quot;prev_version&quot;: &quot;20.0.1128.0&quot;, &quot;version&quot;: &quot;20.0.1129.0&quot;, &quot;date&quot;: &quot;05\/07\/12&quot;, &quot;prev_date&quot;: &quot;05\/06\/12&quot;, &quot;true_branch&quot;: &quot;trunk&quot;, &quot;channel&quot;: &quot;canary&quot;, &quot;branch_revision&quot;: &quot;NA&quot;}, {&quot;base_webkit_revision&quot;: &quot;115687&quot;, &quot;v8_ver&quot;: &quot;3.10.6.0&quot;, &quot;wk_ver&quot;: &quot;536.10&quot;, &quot;base_trunk_revision&quot;: 134666, &quot;prev_version&quot;: &quot;20.0.1123.1&quot;, &quot;version&quot;: &quot;20.0.1123.4&quot;, &quot;date&quot;: &quot;05\/04\/12&quot;, &quot;prev_date&quot;: &quot;05\/02\/12&quot;, &quot;true_branch&quot;: &quot;1123&quot;, &quot;channel&quot;: &quot;dev&quot;, &quot;branch_revision&quot;: 135092}]},{&quot;os&quot;: &quot;linux&quot;, &quot;versions&quot;: [{&quot;base_webkit_revision&quot;: &quot;115688&quot;, &quot;v8_ver&quot;: &quot;3.10.6.0&quot;, &quot;wk_ver&quot;: &quot;536.10&quot;, &quot;base_trunk_revision&quot;: 134666, &quot;prev_version&quot;: &quot;20.0.1123.2&quot;, &quot;version&quot;: &quot;20.0.1123.4&quot;, &quot;date&quot;: &quot;05\/04\/12&quot;, &quot;prev_date&quot;: &quot;05\/02\/12&quot;, &quot;true_branch&quot;: &quot;1123&quot;, &quot;channel&quot;: &quot;dev&quot;, &quot;branch_revision&quot;: 135092}, {&quot;base_webkit_revision&quot;: &quot;112327&quot;, &quot;v8_ver&quot;: &quot;3.9.24.17&quot;, &quot;wk_ver&quot;: &quot;536.5&quot;, &quot;base_trunk_revision&quot;: 129376, &quot;prev_version&quot;: &quot;19.0.1084.36&quot;, &quot;version&quot;: &quot;19.0.1084.41&quot;, &quot;date&quot;: &quot;05\/03\/12&quot;, &quot;prev_date&quot;: &quot;04\/25\/12&quot;, &quot;true_branch&quot;: &quot;1084&quot;, &quot;channel&quot;: &quot;beta&quot;, &quot;branch_revision&quot;: 134854}, {&quot;base_webkit_revision&quot;: &quot;*&quot;, &quot;v8_ver&quot;: &quot;3.9.24.17&quot;, &quot;wk_ver&quot;: &quot;536.5&quot;, &quot;base_trunk_revision&quot;: 129376, &quot;prev_version&quot;: &quot;19.0.1084.36&quot;, &quot;version&quot;: &quot;19.0.1084.41&quot;, &quot;date&quot;: &quot;05\/03\/12&quot;, &quot;prev_date&quot;: &quot;04\/25\/12&quot;, &quot;true_branch&quot;: &quot;1084&quot;, &quot;channel&quot;: &quot;release&quot;, &quot;branch_revision&quot;: 134854}]}]&quot;&quot;&quot;

Is this from the horses mouth?  Should we pretty-print this here?

&gt; Tools/Scripts/webkitpy/common/net/omahaproxy_unittest.py:46
&gt; +    expected_revisions = [{&quot;commit&quot;: 116185, &quot;channel&quot;: &quot;canary&quot;, &quot;platform&quot;: &quot;Windows&quot;, &quot;date&quot;: &quot;05/07/12&quot;},

Again, this is kind odd indent for webkitpy.  Again, not sure what pep8&apos;s official style for multi-line lists or dicts is.

&gt; Tools/Scripts/webkitpy/tool/commands/chromechannels.py:61
&gt; +    def execute(self, options, args, tool):

You could break this function up into smaller pieces which would be more testable. :)  For example, having a function which processed one bug at a time would allow you to test that function with a mock bug. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618231</commentid>
    <comment_count>10</comment_count>
      <attachid>140651</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-05-07 19:45:41 -0700</bug_when>
    <thetext>Created attachment 140651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618236</commentid>
    <comment_count>11</comment_count>
      <attachid>140630</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-05-07 19:50:08 -0700</bug_when>
    <thetext>Comment on attachment 140630
Patch

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

This version should be more testable.

&gt;&gt; Tools/Scripts/webkitpy/common/net/omahaproxy.py:42
&gt;&gt; +    chrome_platforms = {&quot;linux&quot;: &quot;Linux&quot;, &quot;win&quot;: &quot;Windows&quot;, &quot;mac&quot;: &quot;Mac&quot;, &quot;cros&quot;: &quot;Chrome OS&quot;, &quot;cf&quot;: &quot;Chrome Frame&quot;}
&gt; 
&gt; IMO this dict would be more readable written out one pair per line.

Done.

&gt;&gt; Tools/Scripts/webkitpy/common/net/omahaproxy.py:63
&gt;&gt; +            raise e
&gt; 
&gt; I think we have something to do this for you.... NetworkRequest iirc?

NetworkTransaction.  Done.

&gt;&gt; Tools/Scripts/webkitpy/common/net/omahaproxy.py:71
&gt;&gt; +                    row = {&quot;commit&quot;: int(version[&quot;base_webkit_revision&quot;]),
&gt; 
&gt; I would normally have put the key/value pairs indented to 4c insetad of right after the {.  I&apos;m not sure what official pep8 is.

Done.

&gt;&gt; Tools/Scripts/webkitpy/common/net/omahaproxy.py:75
&gt;&gt; +                           }
&gt; 
&gt; I would have unintended this all the way to match &quot;row&quot;.  I&apos;m not sure what official pep8 style is.

Done.

&gt;&gt; Tools/Scripts/webkitpy/common/net/omahaproxy_unittest.py:44
&gt;&gt; +    example_omahaproxy_json = &quot;&quot;&quot;[{&quot;os&quot;: &quot;win&quot;, &quot;versions&quot;: [{&quot;base_webkit_revision&quot;: &quot;116185&quot;, &quot;v8_ver&quot;: &quot;3.10.8.1&quot;, &quot;wk_ver&quot;: &quot;536.11&quot;, &quot;base_trunk_revision&quot;: 135598, &quot;prev_version&quot;: &quot;20.0.1128.0&quot;, &quot;version&quot;: &quot;20.0.1129.0&quot;, &quot;date&quot;: &quot;05\/07\/12&quot;, &quot;prev_date&quot;: &quot;05\/06\/12&quot;, &quot;true_branch&quot;: &quot;trunk&quot;, &quot;channel&quot;: &quot;canary&quot;, &quot;branch_revision&quot;: &quot;NA&quot;}, {&quot;base_webkit_revision&quot;: &quot;115687&quot;, &quot;v8_ver&quot;: &quot;3.10.6.0&quot;, &quot;wk_ver&quot;: &quot;536.10&quot;, &quot;base_trunk_revision&quot;: 134666, &quot;prev_version&quot;: &quot;20.0.1123.1&quot;, &quot;version&quot;: &quot;20.0.1123.4&quot;, &quot;date&quot;: &quot;05\/04\/12&quot;, &quot;prev_date&quot;: &quot;05\/02\/12&quot;, &quot;true_branch&quot;: &quot;1123&quot;, &quot;channel&quot;: &quot;dev&quot;, &quot;branch_revision&quot;: 135092}]},{&quot;os&quot;: &quot;linux&quot;, &quot;versions&quot;: [{&quot;base_webkit_revision&quot;: &quot;115688&quot;, &quot;v8_ver&quot;: &quot;3.10.6.0&quot;, &quot;wk_ver&quot;: &quot;536.10&quot;, &quot;base_trunk_revision&quot;: 134666, &quot;prev_version&quot;: &quot;20.0.1123.2&quot;, &quot;version&quot;: &quot;20.0.1123.4&quot;, &quot;date&quot;: &quot;05\/04\/12&quot;, &quot;prev_date&quot;: &quot;05\/02\/12&quot;, &quot;true_branch&quot;: &quot;1123&quot;, &quot;channel&quot;: &quot;dev&quot;, &quot;branch_revision&quot;: 135092}, {&quot;base_webkit_revision&quot;: &quot;112327&quot;, &quot;v8_ver&quot;: &quot;3.9.24.17&quot;, &quot;wk_ver&quot;: &quot;536.5&quot;, &quot;base_trunk_revision&quot;: 129376, &quot;prev_version&quot;: &quot;19.0.1084.36&quot;, &quot;version&quot;: &quot;19.0.1084.41&quot;, &quot;date&quot;: &quot;05\/03\/12&quot;, &quot;prev_date&quot;: &quot;04\/25\/12&quot;, &quot;true_branch&quot;: &quot;1084&quot;, &quot;channel&quot;: &quot;beta&quot;, &quot;branch_revision&quot;: 134854}, {&quot;base_webkit_revision&quot;: &quot;*&quot;, &quot;v8_ver&quot;: &quot;3.9.24.17&quot;, &quot;wk_ver&quot;: &quot;536.5&quot;, &quot;base_trunk_revision&quot;: 129376, &quot;prev_version&quot;: &quot;19.0.1084.36&quot;, &quot;version&quot;: &quot;19.0.1084.41&quot;, &quot;date&quot;: &quot;05\/03\/12&quot;, &quot;prev_date&quot;: &quot;04\/25\/12&quot;, &quot;true_branch&quot;: &quot;1084&quot;, &quot;channel&quot;: &quot;release&quot;, &quot;branch_revision&quot;: 134854}]}]&quot;&quot;&quot;
&gt; 
&gt; Is this from the horses mouth?  Should we pretty-print this here?

Done.

&gt;&gt; Tools/Scripts/webkitpy/common/net/omahaproxy_unittest.py:46
&gt;&gt; +    expected_revisions = [{&quot;commit&quot;: 116185, &quot;channel&quot;: &quot;canary&quot;, &quot;platform&quot;: &quot;Windows&quot;, &quot;date&quot;: &quot;05/07/12&quot;},
&gt; 
&gt; Again, this is kind odd indent for webkitpy.  Again, not sure what pep8&apos;s official style for multi-line lists or dicts is.

Done.

&gt;&gt; Tools/Scripts/webkitpy/tool/commands/chromechannels.py:61
&gt;&gt; +    def execute(self, options, args, tool):
&gt; 
&gt; You could break this function up into smaller pieces which would be more testable. :)  For example, having a function which processed one bug at a time would allow you to test that function with a mock bug. :)

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618242</commentid>
    <comment_count>12</comment_count>
      <attachid>140651</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-07 19:56:15 -0700</bug_when>
    <thetext>Comment on attachment 140651
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618459</commentid>
    <comment_count>13</comment_count>
      <attachid>140651</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-08 06:36:43 -0700</bug_when>
    <thetext>Comment on attachment 140651
Patch

Clearing flags on attachment: 140651

Committed r116414: &lt;http://trac.webkit.org/changeset/116414&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618460</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-08 06:36:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139793</attachid>
            <date>2012-05-02 05:39:05 -0700</date>
            <delta_ts>2012-05-07 17:17:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85368-20120502083904.patch</filename>
            <type>text/plain</type>
            <size>12282</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NjIzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzk4Yzk4OGQ1NzYzODIzZDdlYzNmMTdjZWI3MzA4MTJm
YmNmZjQ2Zi4uYjNiOTQyMzgzYzI2ZTZmMDMxMDFmNGRlNzI0M2I5YmYzM2ViYzkxMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMx
IEBACiAyMDEyLTA1LTAyICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIFt3ZWJraXQtcGF0Y2hdIEFkZCBuZXcgY2hyb21lLWNoYW5uZWxzIGNvbW1hbmQgdG8g
dHJhY2sgZG93biBjdXJyZW50IGNocm9tZSByZWxlYXNlIGNoYW5uZWxzIGZvciBhIGNvbW1pdHRl
ZCBidWcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTM2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
IHRoZSBmaW5lc3QgdHJhZGl0aW9uIG9mIHNjcmlwdGluZyBoYWNrcywgSSBoYXZlIHByb3ZpZGVk
IG5vIHRlc3RzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3Vy
bHMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vaG9zdC5weToKKyAgICAg
ICAgKEhvc3QuX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9vbWFoYXByb3h5LnB5OiBBZGRlZC4KKyAgICAgICAgKE9tYWhhUHJveHkpOgorICAgICAgICAo
T21haGFQcm94eS5fX2luaXRfXyk6CisgICAgICAgIChPbWFoYVByb3h5LnNldF91cmwpOgorICAg
ICAgICAoT21haGFQcm94eS5fanNvbl91cmwpOgorICAgICAgICAoT21haGFQcm94eS5fZ2V0X2pz
b24pOgorICAgICAgICAoT21haGFQcm94eS5nZXRfcmV2aXNpb25zKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvX19pbml0X18ucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Nocm9tZWNoYW5uZWxzLnB5OiBBZGRlZC4KKyAgICAg
ICAgKENocm9tZUNoYW5uZWxzKToKKyAgICAgICAgKENocm9tZUNoYW5uZWxzLl9faW5pdF9fKToK
KyAgICAgICAgKENocm9tZUNoYW5uZWxzLl9wcmV0dHlfcHJpbnRfcGxhdGZvcm0pOgorICAgICAg
ICAoQ2hyb21lQ2hhbm5lbHMuZXhlY3V0ZSk6CisKKzIwMTItMDUtMDIgIEdhdmluIFBldGVycyAg
PGdhdmlucEBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW3dlYmtpdC1wYXRjaF0gUmV0dXJuIG1l
YW5pbmdmdWwgcmVzdWx0cyBmcm9tIHNpbmdsZS1yZXN1bHQgcXVlcmllcy4KICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1MzY3CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy91cmxzLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3VybHMucHkKaW5kZXggYjU0NzA0NWY0ZWQyN2Iy
YTc0MTY4Y2UyYjEyNjkzZDYzY2Q4NDY3YS4uNDg4MzBjNTY0MzUzNDM1N2E2MTk5OWQzNDY0MWI4
MGU0OTg0N2U4NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29u
ZmlnL3VybHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3Vy
bHMucHkKQEAgLTU2LDYgKzU2LDcgQEAgZGlyZWN0X2F0dGFjaG1lbnRfdXJsID0gciJodHRwcz86
Ly9idWctKD9QPGJ1Z19pZD5cZCspLWF0dGFjaG1lbnRzLiVzL2F0dGFjaG1lbnQKIGJ1aWxkYm90
X3VybCA9ICJodHRwOi8vYnVpbGQud2Via2l0Lm9yZyIKIGNocm9taXVtX2J1aWxkYm90X3VybCA9
ICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0IgogCitvbWFoYXBy
b3h5X3VybCA9ICJodHRwOi8vb21haGFwcm94eS5hcHBzcG90LmNvbS8iCiAKIGRlZiBwYXJzZV9i
dWdfaWQoc3RyaW5nKToKICAgICBpZiBub3Qgc3RyaW5nOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vaG9zdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2hvc3QucHkKaW5kZXggZmZjMTNiZjk4NjgzOTFkNGI5ZDc0NTE5Y2NjNTE1NDZmMGVlODBk
YS4uN2VjNmIwNTA1MmNjNmRkNjE4NDg3ZTNkYzdjYWEwM2FjMWIyMzNiZCAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vaG9zdC5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9ob3N0LnB5CkBAIC0zNCw3ICszNCw3IEBAIGltcG9ydCBzeXMKIGZy
b20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0IGltcG9ydCBDaGVja291dAogZnJvbSB3ZWJraXRw
eS5jb21tb24uY2hlY2tvdXQuc2NtLmRldGVjdGlvbiBpbXBvcnQgU0NNRGV0ZWN0b3IKIGZyb20g
d2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAotZnJvbSB3ZWJraXRweS5j
b21tb24ubmV0IGltcG9ydCBidWd6aWxsYSwgYnVpbGRib3QsIHdlYgorZnJvbSB3ZWJraXRweS5j
b21tb24ubmV0IGltcG9ydCBidWd6aWxsYSwgYnVpbGRib3QsIHdlYiwgb21haGFwcm94eQogZnJv
bSB3ZWJraXRweS5jb21tb24ubmV0LmJ1aWxkYm90LmNocm9taXVtYnVpbGRib3QgaW1wb3J0IENo
cm9taXVtQnVpbGRCb3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGlt
cG9ydCBTeXN0ZW1Ib3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi53YXRjaGxpc3Qud2F0Y2hsaXN0
bG9hZGVyIGltcG9ydCBXYXRjaExpc3RMb2FkZXIKQEAgLTU2LDYgKzU2LDcgQEAgY2xhc3MgSG9z
dChTeXN0ZW1Ib3N0KToKICAgICAgICAgIyBFdmVyeXRoaW5nIGJlbG93IHRoaXMgbGluZSBpcyBX
ZWJLaXQtc3BlY2lmaWMgYW5kIGJlbG9uZ3Mgb24gYSBoaWdoZXItbGV2ZWwgb2JqZWN0LgogICAg
ICAgICBzZWxmLmJ1Z3MgPSBidWd6aWxsYS5CdWd6aWxsYSgpCiAgICAgICAgIHNlbGYuYnVpbGRi
b3QgPSBidWlsZGJvdC5CdWlsZEJvdCgpCisgICAgICAgIHNlbGYub21haGFwcm94eSA9IG9tYWhh
cHJveHkuT21haGFQcm94eSgpCiAKICAgICAgICAgIyBGSVhNRTogVW5mb3J0dW5hdGVseSBQb3J0
IG9iamVjdHMgYXJlIGN1cnJlbnRseSB0aGUgY2VudHJhbC1kaXNwYXRjaCBvYmplY3RzIG9mIHRo
ZSBOUldUIHdvcmxkLgogICAgICAgICAjIEluIG9yZGVyIHRvIGluc3RhbnRpYXRlIGEgcG9ydCBj
b3JyZWN0bHksIHdlIGhhdmUgdG8gcGFzcyBpdCBhdCBsZWFzdCBhbiBleGVjdXRpdmUsIHVzZXIs
IHNjbSwgYW5kIGZpbGVzeXN0ZW0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9vbWFoYXByb3h5LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
bmV0L29tYWhhcHJveHkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTA0Y2FhYWU1OTBkMjUxMmVlNTdmNzU4YzQ4
ZDE3YjcwZDQ2ZDFmMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9vbWFoYXByb3h5LnB5CkBAIC0wLDAgKzEsNzIgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorIworIyBUaGlzIGlzIHRoZSBjbGllbnQgdG8gcXVlcnkgaHR0cDovL29tYWhhcHJveHkuYXBw
c3BvdC5jb20vIHRvIHJldHJpZXZlCisjIGNocm9tZSB2ZXJzaW9ucyBhc3NvY2lhdGVkIHdpdGgg
V2ViS2l0IGNvbW1pdHMuCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5ldC5uZXR3b3JrdHJhbnNh
Y3Rpb24gaW1wb3J0IE5ldHdvcmtUcmFuc2FjdGlvbgorZnJvbSB3ZWJraXRweS5jb21tb24uY29u
ZmlnIGltcG9ydCB1cmxzCisKK2ltcG9ydCBqc29uCitpbXBvcnQgdXJsbGliMgorCisKK2NsYXNz
IE9tYWhhUHJveHkob2JqZWN0KToKKyAgICBkZWZhdWx0X3VybCA9IHVybHMub21haGFwcm94eV91
cmwKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmw9ZGVmYXVsdF91cmwsIGJyb3dzZXI9Tm9u
ZSk6CisgICAgICAgIHNlbGYuc2V0X3VybCh1cmwpCisgICAgICAgIGZyb20gd2Via2l0cHkudGhp
cmRwYXJ0eS5hdXRvaW5zdGFsbGVkLm1lY2hhbml6ZSBpbXBvcnQgQnJvd3NlcgorICAgICAgICBz
ZWxmLl9icm93c2VyID0gYnJvd3NlciBvciBCcm93c2VyKCkKKworICAgIGRlZiBzZXRfdXJsKHNl
bGYsIHVybCk6CisgICAgICAgIHNlbGYudXJsID0gdXJsCisKKyAgICBkZWYgX2pzb25fdXJsKHNl
bGYpOgorICAgICAgICByZXR1cm4gIiVzL2FsbC5qc29uIiAlIHNlbGYudXJsCisKKyAgICBkZWYg
X2dldF9qc29uKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gdXJsbGli
Mi51cmxvcGVuKHNlbGYuX2pzb25fdXJsKCkpLnJlYWQoKQorICAgICAgICBleGNlcHQgdXJsbGli
Mi5IVFRQRXJyb3IsIGU6CisgICAgICAgICAgICBpZiBlLmNvZGUgPT0gNDA0OgorICAgICAgICAg
ICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICByYWlzZSBlCisKKyAgICBkZWYgZ2V0X3Jl
dmlzaW9ucyhzZWxmKToKKyAgICAgICAgcmV2aXNpb25zX2pzb24gPSBqc29uLmxvYWRzKHNlbGYu
X2dldF9qc29uKCkpCisgICAgICAgIHJldmlzaW9ucyA9IFtdCisgICAgICAgIGZvciBwbGF0Zm9y
bSBpbiByZXZpc2lvbnNfanNvbjoKKyAgICAgICAgICAgIGZvciB2ZXJzaW9uIGluIHBsYXRmb3Jt
Wyd2ZXJzaW9ucyddOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAg
cm93ID0gKGludCh2ZXJzaW9uWydiYXNlX3dlYmtpdF9yZXZpc2lvbiddKSwgdmVyc2lvblsnY2hh
bm5lbCddLCBwbGF0Zm9ybVsnb3MnXSwgdmVyc2lvblsnZGF0ZSddKQorICAgICAgICAgICAgICAg
ICAgICByZXZpc2lvbnMuYXBwZW5kKHJvdykKKyAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVF
cnJvcjoKKyAgICAgICAgICAgICAgICAgICAgbmV4dAorICAgICAgICByZXZpc2lvbnMuc29ydCgp
CisgICAgICAgIHJldHVybiByZXZpc2lvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9fX2luaXRfXy5weQppbmRleCBlZjA1YjVhYzRiZWRkYWZlZGI1YmZjMjQ1
ZjYzOTMxNGY4ODE0MDY3Li5lMGQ4ODVmNzEzYzFkYTgyMTJhNmM2M2NmYzBiNGVjY2IyNTEwMzUx
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvX19pbml0
X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL19faW5pdF9f
LnB5CkBAIC01LDYgKzUsNyBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuYW5hbHl6ZWNo
YW5nZWxvZyBpbXBvcnQgQW5hbHl6ZUNoYW5nZUxvZwogZnJvbSB3ZWJraXRweS50b29sLmNvbW1h
bmRzLmFwcGx5d2F0Y2hsaXN0bG9jYWwgaW1wb3J0IEFwcGx5V2F0Y2hMaXN0TG9jYWwKIGZyb20g
d2Via2l0cHkudG9vbC5jb21tYW5kcy5idWdmb3J0ZXN0IGltcG9ydCBCdWdGb3JUZXN0CiBmcm9t
IHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuYnVnc2VhcmNoIGltcG9ydCBCdWdTZWFyY2gKK2Zyb20g
d2Via2l0cHkudG9vbC5jb21tYW5kcy5jaHJvbWVjaGFubmVscyBpbXBvcnQgQ2hyb21lQ2hhbm5l
bHMKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5kb3dubG9hZCBpbXBvcnQgKgogZnJvbSB3
ZWJraXRweS50b29sLmNvbW1hbmRzLmVhcmx5d2FybmluZ3N5c3RlbSBpbXBvcnQgKgogZnJvbSB3
ZWJraXRweS50b29sLmNvbW1hbmRzLmV4cGVjdGF0aW9ucyBpbXBvcnQgT3B0aW1pemVFeHBlY3Rh
dGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9j
aHJvbWVjaGFubmVscy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9j
aHJvbWVjaGFubmVscy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzZlMGFmMDdhZjA3NDljMzMwZDEwMjU4MmE3
ZTFlNTM4NTRkZTMzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL2Nocm9tZWNoYW5uZWxzLnB5CkBAIC0wLDAgKzEsOTcgQEAKKyMgQ29weXJp
Z2h0IChjKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitmcm9tIG9wdHBhcnNlIGltcG9ydCBtYWtlX29wdGlvbgorCitmcm9tIHdlYmtp
dHB5LnRvb2wubXVsdGljb21tYW5kdG9vbCBpbXBvcnQgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1h
bmQKKworaW1wb3J0IHJlCisKKworY2xhc3MgQ2hyb21lQ2hhbm5lbHMoQWJzdHJhY3REZWNsYXJh
dGl2ZUNvbW1hbmQpOgorICAgIG5hbWUgPSAiY2hyb21lLWNoYW5uZWxzIgorICAgIGhlbHBfdGV4
dCA9ICJMaXN0cyB3aGljaCBjaHJvbWUgY2hhbm5lbHMgdGhlIGNvbW1pdCBhc3NvY2lhdGVkIHdp
dGggYSBidWcgaXMgaW5jbHVkZWQgaW4uIgorCisgICAgY2hyb21lX2NoYW5uZWxzID0gWyJjYW5h
cnkiLCAiZGV2IiwgImJldGEiLCAic3RhYmxlIl0KKyAgICBjaHJvbWVfcGxhdGZvcm1zID0geyds
aW51eCc6ICdMaW51eCcsICd3aW4nOiAnV2luZG93cycsICdtYWMnOiAnTWFjJywgJ2Nyb3MnOiAn
Q2hyb21lIE9TJywgJ2NmJzogJ0Nocm9tZSBGcmFtZSd9CisKKyAgICBjb21taXRlZF9wYXR0ZXJu
ID0gIkNvbW1pdHRlZCByKFswLTldKyk6IDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC9cXDE+IgorICAgIHJvbGxvdXRfcGF0dGVybiA9ICJSb2xsZWQgb3V0IGluIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0L1swLTldKyIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToK
KyAgICAgICAgb3B0aW9ucyA9IFsKKyAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLWRhdGVzIiwg
YWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9J3ByaW50IHRoZSBkYXRlcyB0aGlzIGJ1ZyBlbnRlcmVkIGVhY2ggY2hhbm5lbCcp
XQorICAgICAgICBBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZC5fX2luaXRfXyhzZWxmLCBvcHRp
b25zPW9wdGlvbnMpCisgICAgICAgIHNlbGYuX3JlX2NvbW1pdHRlZCA9IHJlLmNvbXBpbGUoc2Vs
Zi5jb21taXRlZF9wYXR0ZXJuKQorICAgICAgICBzZWxmLl9yZV9yb2xsb3V0ID0gcmUuY29tcGls
ZShzZWxmLnJvbGxvdXRfcGF0dGVybikKKworICAgIGRlZiBfcHJldHR5X3ByaW50X3BsYXRmb3Jt
KHNlbGYsIHBsYXRmb3JtKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYu
Y2hyb21lX3BsYXRmb3Jtc1twbGF0Zm9ybV0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yLCBrOgor
ICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtCisKKyAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRp
b25zLCBhcmdzLCB0b29sKToKKyAgICAgICAgc2VhcmNoX3N0cmluZyA9IGFyZ3NbMF0KKyAgICAg
ICAgcmV2aXNpb25zID0gdG9vbC5vbWFoYXByb3h5LmdldF9yZXZpc2lvbnMoKQorICAgICAgICBi
dWdzID0gdG9vbC5idWdzLnF1ZXJpZXMuZmV0Y2hfYnVnc19tYXRjaGluZ19xdWlja3NlYXJjaChz
ZWFyY2hfc3RyaW5nKQorICAgICAgICBpZiBub3QgYnVnczoKKyAgICAgICAgICAgIHByaW50ICJO
byBidWdzIGZvdW5kIG1hdGNoaW5nICclcyciICUgc2VhcmNoX3N0cmluZworICAgICAgICAgICAg
cmV0dXJuCisgICAgICAgIGZvciBidWcgaW4gYnVnczoKKyAgICAgICAgICAgIGNvbW1lbnRzID0g
YnVnLmNvbW1lbnRzKCkKKyAgICAgICAgICAgIGNvbW1pdCA9IE5vbmUKKyAgICAgICAgICAgIGZv
ciBjb21tZW50IGluIGNvbW1lbnRzOgorICAgICAgICAgICAgICAgIGNvbW1pdF9tYXRjaCA9IHNl
bGYuX3JlX2NvbW1pdHRlZC5zZWFyY2goY29tbWVudFsndGV4dCddKQorICAgICAgICAgICAgICAg
IGlmIGNvbW1pdF9tYXRjaDoKKyAgICAgICAgICAgICAgICAgICAgY29tbWl0ID0gaW50KGNvbW1p
dF9tYXRjaC5ncm91cCgxKSkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9yZV9yb2xsb3V0LnNl
YXJjaChjb21tZW50Wyd0ZXh0J10pOgorICAgICAgICAgICAgICAgICAgICBjb21taXQgPSBOb25l
CisgICAgICAgICAgICBpZiBub3QgY29tbWl0OgorICAgICAgICAgICAgICAgIHByaW50ICIlNXMg
JXMiICUgKGJ1Zy5pZCgpLCBidWcudGl0bGUoKSkKKyAgICAgICAgICAgICAgICBwcmludCAiICAg
Li4uIGRvZXMgbm90IGFwcGVhciB0byBoYXZlIGFuIGFzc29jaWF0ZWQgY29tbWl0LiIKKyAgICAg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBwcmludCAiJTVzICVzIChjb21taXQg
JWQpIiAlIChidWcuaWQoKSwgYnVnLnRpdGxlKCksIGNvbW1pdCkKKyAgICAgICAgICAgIGJ5X2No
YW5uZWwgPSB7fQorICAgICAgICAgICAgZm9yIHJldmlzaW9uIGluIHJldmlzaW9uczoKKyAgICAg
ICAgICAgICAgICAocmV2aXNpb25fY29tbWl0LCBjaGFubmVsLCBvcywgZGF0ZSkgPSByZXZpc2lv
bgorICAgICAgICAgICAgICAgIGlmIHJldmlzaW9uX2NvbW1pdCA8IGNvbW1pdDoKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBub3QgY2hhbm5lbCBpbiBi
eV9jaGFubmVsOgorICAgICAgICAgICAgICAgICAgICBieV9jaGFubmVsW2NoYW5uZWxdID0gIiAg
ICU2czoiICUgY2hhbm5lbAorICAgICAgICAgICAgICAgIGJ5X2NoYW5uZWxbY2hhbm5lbF0gKz0g
IiAlcyIgJSBzZWxmLl9wcmV0dHlfcHJpbnRfcGxhdGZvcm0ob3MpCisgICAgICAgICAgICAgICAg
aWYgb3B0aW9ucy5kYXRlczoKKyAgICAgICAgICAgICAgICAgICAgYnlfY2hhbm5lbFtjaGFubmVs
XSArPSAiICVzIiAlIGRhdGUKKyAgICAgICAgICAgICAgICBieV9jaGFubmVsW2NoYW5uZWxdICs9
ICIsIgorICAgICAgICAgICAgZm9yIGNoYW5uZWwgaW4gc2VsZi5jaHJvbWVfY2hhbm5lbHM6Cisg
ICAgICAgICAgICAgICAgaWYgY2hhbm5lbCBpbiBieV9jaGFubmVsOgorICAgICAgICAgICAgICAg
ICAgICBwcmludCBieV9jaGFubmVsW2NoYW5uZWxdWzotMV0KKyAgICAgICAgICAgIGlmIG5vdCBi
eV9jaGFubmVsOgorICAgICAgICAgICAgICAgIHByaW50ICIgICAuLi4gbm90IHlldCByZWxlYXNl
ZCBpbiBhbnkgQ2hyb21lIGNoYW5uZWxzLiIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140630</attachid>
            <date>2012-05-07 17:18:03 -0700</date>
            <delta_ts>2012-05-07 19:50:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85368-20120507201802.patch</filename>
            <type>text/plain</type>
            <size>24818</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MTg1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGNlMmZmMjUyZGExOTc4OTM5MDk1NTBiMWM4YWVhMjMz
NDFlODAwOS4uZDdiZmIwNTkyYmNkMTg5NTczYjkxNGMyMjRlYmIwOTczYzhhNDI1NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQy
IEBACiAyMDEyLTA1LTA3ICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIFt3ZWJraXQtcGF0Y2hdIEFkZCBuZXcgY2hyb21lLWNoYW5uZWxzIHRvIHRyYWNrIGRv
d24gY3VycmVudCBjaHJvbWUgcmVsZWFzZSBjaGFubmVscyBmb3IgYSBjb21taXR0ZWQgYnVnLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUzNjgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NvbmZpZy91cmxzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV9tb2NrLnB5OgorICAgICAgICAoTW9ja0J1
Z3ppbGxhUXVlcmllcy5mZXRjaF9idWdzX21hdGNoaW5nX3F1aWNrc2VhcmNoKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvb21haGFwcm94eS5weTogQWRkZWQuCisgICAg
ICAgIChPbWFoYVByb3h5KToKKyAgICAgICAgKE9tYWhhUHJveHkuX19pbml0X18pOgorICAgICAg
ICAoT21haGFQcm94eS5zZXRfdXJsKToKKyAgICAgICAgKE9tYWhhUHJveHkuX2pzb25fdXJsKToK
KyAgICAgICAgKE9tYWhhUHJveHkuX2dldF9qc29uKToKKyAgICAgICAgKE9tYWhhUHJveHkuZ2V0
X3JldmlzaW9ucyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L29tYWhh
cHJveHlfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoTW9ja09tYWhhUHJveHkpOgorICAg
ICAgICAoTW9ja09tYWhhUHJveHkuX19pbml0X18pOgorICAgICAgICAoT21haGFQcm94eVRlc3Qp
OgorICAgICAgICAoT21haGFQcm94eVRlc3QudGVzdF9nZXRfcmV2aXNpb25zKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvX19pbml0X18ucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2J1Z3NlYXJjaC5weToKKyAgICAgICAgKEJ1
Z1NlYXJjaCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Nocm9t
ZWNoYW5uZWxzLnB5OiBBZGRlZC4KKyAgICAgICAgKENocm9tZUNoYW5uZWxzKToKKyAgICAgICAg
KF9faW5pdF9fKToKKyAgICAgICAgKGV4ZWN1dGUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9jaHJvbWVjaGFubmVsc191bml0dGVzdC5weTogQWRkZWQuCisgICAg
ICAgIChNb2NrT21haGFQcm94eSk6CisgICAgICAgIChNb2NrT21haGFQcm94eS5nZXRfcmV2aXNp
b25zKToKKyAgICAgICAgKFRlc3RhYmxlQ2hyb21lQ2hhbm5lbHMpOgorICAgICAgICAoVGVzdGFi
bGVDaHJvbWVDaGFubmVscy5fX2luaXRfXyk6CisgICAgICAgIChDaHJvbWVDaGFubmVsc1Rlc3Qp
OgorICAgICAgICAoQ2hyb21lQ2hhbm5lbHNUZXN0LnRlc3RfY2hyb21lX2NoYW5uZWxzKToKKwor
MjAxMi0wNS0wNyAgR2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KKwogICAgICAg
ICBbd2Via2l0LXBhdGNoXSBSZXR1cm4gbWVhbmluZ2Z1bCByZXN1bHRzIGZyb20gc2luZ2xlLXJl
c3VsdCBxdWVyaWVzLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODUzNjcKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y29uZmlnL3VybHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvdXJs
cy5weQppbmRleCBiNTQ3MDQ1ZjRlZDI3YjJhNzQxNjhjZTJiMTI2OTNkNjNjZDg0NjdhLi40ODgz
MGM1NjQzNTM0MzU3YTYxOTk5ZDM0NjQxYjgwZTQ5ODQ3ZTg3IDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvdXJscy5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jb25maWcvdXJscy5weQpAQCAtNTYsNiArNTYsNyBAQCBkaXJlY3Rf
YXR0YWNobWVudF91cmwgPSByImh0dHBzPzovL2J1Zy0oP1A8YnVnX2lkPlxkKyktYXR0YWNobWVu
dHMuJXMvYXR0YWNobWVudAogYnVpbGRib3RfdXJsID0gImh0dHA6Ly9idWlsZC53ZWJraXQub3Jn
IgogY2hyb21pdW1fYnVpbGRib3RfdXJsID0gImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9j
aHJvbWl1bS53ZWJraXQiCiAKK29tYWhhcHJveHlfdXJsID0gImh0dHA6Ly9vbWFoYXByb3h5LmFw
cHNwb3QuY29tLyIKIAogZGVmIHBhcnNlX2J1Z19pZChzdHJpbmcpOgogICAgIGlmIG5vdCBzdHJp
bmc6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemls
bGEvYnVnemlsbGFfbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9i
dWd6aWxsYS9idWd6aWxsYV9tb2NrLnB5CmluZGV4IDQ3Zjg2N2UwMzc4Y2Y2OTExZGVlZDY1NjNl
ZmUxMmNmNDA4NjY3NjguLjNkZTc1ZmE0NmFlZjg3YzQ2N2QwN2FlNTkyMjUyMjEwMjAzNTg3ZjUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9i
dWd6aWxsYV9tb2NrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9i
dWd6aWxsYS9idWd6aWxsYV9tb2NrLnB5CkBAIC0xNjksOSArMTY5LDkgQEAgX2J1ZzIgPSB7CiAg
ICAgImJ1Z19zdGF0dXMiOiAiQVNTSUdORUQiLAogICAgICJjb21tZW50cyI6IFt7ImNvbW1lbnRf
ZGF0ZSI6ICBkYXRldGltZS5kYXRldGltZSgyMDExLCA2LCAxMSwgOSwgNCwgMyksCiAgICAgICAg
ICAgICAgICAgICAiY29tbWVudF9lbWFpbCI6ICJiYXJAZm9vLmNvbSIsCi0gICAgICAgICAgICAg
ICAgICAidGV4dCI6ICJNZXNzYWdlMS4iLAotICAgICAgICB9LAotICAgIF0sCisgICAgICAgICAg
ICAgICAgICAidGV4dCI6ICJNZXNzYWdlMS5cbkNvbW1pdHRlZCByMzU6IDxodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8zNT4iLAorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgXSwKIH0KIAogCkBAIC0xODMsNyArMTgzLDE1IEBAIF9idWczID0gewogICAgICJj
Y19lbWFpbHMiOiBbXSwKICAgICAiYXR0YWNobWVudHMiOiBbX3BhdGNoN10sCiAgICAgImJ1Z19z
dGF0dXMiOiAiTkVXIiwKLSAgICAiY29tbWVudHMiOiBbXSwKKyAgICAiY29tbWVudHMiOiAgW3si
Y29tbWVudF9kYXRlIjogIGRhdGV0aW1lLmRhdGV0aW1lKDIwMTEsIDYsIDExLCA5LCA0LCAzKSwK
KyAgICAgICAgICAgICAgICAgICAiY29tbWVudF9lbWFpbCI6ICJiYXJAZm9vLmNvbSIsCisgICAg
ICAgICAgICAgICAgICAgInRleHQiOiAiQ29tbWl0dGVkIHIzMDogPGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzMwPiIsCisgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgIHsiY29tbWVudF9kYXRlIjogIGRhdGV0aW1lLmRhdGV0aW1lKDIwMTEsIDYsIDExLCA5
LCA0LCAzKSwKKyAgICAgICAgICAgICAgICAgICAiY29tbWVudF9lbWFpbCI6ICJiYXJAZm9vLmNv
bSIsCisgICAgICAgICAgICAgICAgICAgInRleHQiOiAiQ29tbWl0dGVkIHIzMTogPGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMxPiIsCisgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAgIF0sCiB9CiAKIApAQCAtMTk1LDcgKzIwMywxNSBAQCBfYnVnNCA9IHsK
ICAgICAiY2NfZW1haWxzIjogW10sCiAgICAgImF0dGFjaG1lbnRzIjogW19wYXRjaDQsIF9wYXRj
aDUsIF9wYXRjaDZdLAogICAgICJidWdfc3RhdHVzIjogIlJFT1BFTkVEIiwKLSAgICAiY29tbWVu
dHMiOiBbXSwKKyAgICAiY29tbWVudHMiOiBbeyJjb21tZW50X2RhdGUiOiAgZGF0ZXRpbWUuZGF0
ZXRpbWUoMjAxMSwgNiwgMTEsIDksIDQsIDMpLAorICAgICAgICAgICAgICAgICAgImNvbW1lbnRf
ZW1haWwiOiAiYmFyQGZvby5jb20iLAorICAgICAgICAgICAgICAgICAgInRleHQiOiAiQ29tbWl0
dGVkIHIyNTogPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMwPiIsCisgICAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICB7ImNvbW1lbnRfZGF0ZSI6ICBkYXRldGlt
ZS5kYXRldGltZSgyMDExLCA2LCAxMSwgOSwgNCwgMyksCisgICAgICAgICAgICAgICAgICAiY29t
bWVudF9lbWFpbCI6ICJiYXJAZm9vLmNvbSIsCisgICAgICAgICAgICAgICAgICAidGV4dCI6ICJS
b2xsZWQgb3V0IGluIDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNiIsCisgICAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICBdLAogfQogCiAKQEAgLTIwOCw3ICsy
MjQsMTIgQEAgX2J1ZzUgPSB7CiAgICAgImF0dGFjaG1lbnRzIjogW10sCiAgICAgImJ1Z19zdGF0
dXMiOiAiUkVTT0xWRUQiLAogICAgICJkdXBfaWQiOiA1MDAwMiwKLSAgICAiY29tbWVudHMiOiBb
XSwKKyAgICAiY29tbWVudHMiOiBbeyJjb21tZW50X2RhdGUiOiAgZGF0ZXRpbWUuZGF0ZXRpbWUo
MjAxMSwgNiwgMTEsIDksIDQsIDMpLAorICAgICAgICAgICAgICAgICAgImNvbW1lbnRfZW1haWwi
OiAiYmFyQGZvby5jb20iLAorICAgICAgICAgICAgICAgICAgInRleHQiOiAiQ29tbWl0dGVkIHIx
NTogPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE1PiIsCisgICAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgICBdLAorCiB9CiAKIApAQCAtMjUxLDYgKzI3MiwxMCBA
QCBjbGFzcyBNb2NrQnVnemlsbGFRdWVyaWVzKG9iamVjdCk6CiAgICAgZGVmIGZldGNoX2J1Z3Nf
bWF0Y2hpbmdfc2VhcmNoKHNlbGYsIHNlYXJjaF9zdHJpbmcsIGF1dGhvcl9lbWFpbD1Ob25lKToK
ICAgICAgICAgcmV0dXJuIFtzZWxmLl9idWd6aWxsYS5mZXRjaF9idWcoNTAwMDQpLCBzZWxmLl9i
dWd6aWxsYS5mZXRjaF9idWcoNTAwMDMpXQogCisgICAgZGVmIGZldGNoX2J1Z3NfbWF0Y2hpbmdf
cXVpY2tzZWFyY2goc2VsZiwgc2VhcmNoX3N0cmluZyk6CisgICAgICAgIHJldHVybiBbc2VsZi5f
YnVnemlsbGEuZmV0Y2hfYnVnKDUwMDAxKSwgc2VsZi5fYnVnemlsbGEuZmV0Y2hfYnVnKDUwMDAy
KSwKKyAgICAgICAgICAgICAgICBzZWxmLl9idWd6aWxsYS5mZXRjaF9idWcoNTAwMDMpLCBzZWxm
Ll9idWd6aWxsYS5mZXRjaF9idWcoNTAwMDQpXQorCiAKIF9tb2NrX3Jldmlld2VycyA9IFtSZXZp
ZXdlcigiRm9vIEJhciIsICJmb29AYmFyLmNvbSIpLAogICAgICAgICAgICAgICAgICAgIFJldmll
d2VyKCJSZXZpZXdlcjIiLCAicmV2aWV3ZXIyQHdlYmtpdC5vcmciKV0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9vbWFoYXByb3h5LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L29tYWhhcHJveHkucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI0YmYw
ZmI4NThmNzRiOTRlNGI4ZGY3N2JlZDA5YTg4ZDQxZTMwOAotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9vbWFoYXByb3h5LnB5CkBAIC0wLDAgKzEs
ODAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmli
dXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIworIyBUaGlzIGlzIHRoZSBjbGllbnQgdG8gcXVlcnkg
aHR0cDovL29tYWhhcHJveHkuYXBwc3BvdC5jb20vIHRvIHJldHJpZXZlCisjIGNocm9tZSB2ZXJz
aW9ucyBhc3NvY2lhdGVkIHdpdGggV2ViS2l0IGNvbW1pdHMuCisKK2Zyb20gd2Via2l0cHkuY29t
bW9uLm5ldC5uZXR3b3JrdHJhbnNhY3Rpb24gaW1wb3J0IE5ldHdvcmtUcmFuc2FjdGlvbgorZnJv
bSB3ZWJraXRweS5jb21tb24uY29uZmlnIGltcG9ydCB1cmxzCisKK2ltcG9ydCBqc29uCitpbXBv
cnQgdXJsbGliMgorCisKK2NsYXNzIE9tYWhhUHJveHkob2JqZWN0KToKKyAgICBkZWZhdWx0X3Vy
bCA9IHVybHMub21haGFwcm94eV91cmwKKworICAgIGNocm9tZV9wbGF0Zm9ybXMgPSB7ImxpbnV4
IjogIkxpbnV4IiwgIndpbiI6ICJXaW5kb3dzIiwgIm1hYyI6ICJNYWMiLCAiY3JvcyI6ICJDaHJv
bWUgT1MiLCAiY2YiOiAiQ2hyb21lIEZyYW1lIn0KKyAgICBjaHJvbWVfY2hhbm5lbHMgPSBbImNh
bmFyeSIsICJkZXYiLCAiYmV0YSIsICJzdGFibGUiXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHVybD1kZWZhdWx0X3VybCwgYnJvd3Nlcj1Ob25lKToKKyAgICAgICAgc2VsZi5fY2hyb21lX2No
YW5uZWxzID0gc2V0KHNlbGYuY2hyb21lX2NoYW5uZWxzKQorICAgICAgICBzZWxmLnNldF91cmwo
dXJsKQorICAgICAgICBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5tZWNo
YW5pemUgaW1wb3J0IEJyb3dzZXIKKyAgICAgICAgc2VsZi5fYnJvd3NlciA9IGJyb3dzZXIgb3Ig
QnJvd3NlcigpCisKKyAgICBkZWYgc2V0X3VybChzZWxmLCB1cmwpOgorICAgICAgICBzZWxmLnVy
bCA9IHVybAorCisgICAgZGVmIF9qc29uX3VybChzZWxmKToKKyAgICAgICAgcmV0dXJuICIlcy9h
bGwuanNvbiIgJSBzZWxmLnVybAorCisgICAgZGVmIF9nZXRfanNvbihzZWxmKToKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgcmV0dXJuIHVybGxpYjIudXJsb3BlbihzZWxmLl9qc29uX3VybCgp
KS5yZWFkKCkKKyAgICAgICAgZXhjZXB0IHVybGxpYjIuSFRUUEVycm9yLCBlOgorICAgICAgICAg
ICAgaWYgZS5jb2RlID09IDQwNDoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAg
ICAgICAgcmFpc2UgZQorCisgICAgZGVmIGdldF9yZXZpc2lvbnMoc2VsZik6CisgICAgICAgIHJl
dmlzaW9uc19qc29uID0ganNvbi5sb2FkcyhzZWxmLl9nZXRfanNvbigpKQorICAgICAgICByZXZp
c2lvbnMgPSBbXQorICAgICAgICBmb3IgcGxhdGZvcm0gaW4gcmV2aXNpb25zX2pzb246CisgICAg
ICAgICAgICBmb3IgdmVyc2lvbiBpbiBwbGF0Zm9ybVsidmVyc2lvbnMiXToKKyAgICAgICAgICAg
ICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJvdyA9IHsiY29tbWl0IjogaW50KHZlcnNp
b25bImJhc2Vfd2Via2l0X3JldmlzaW9uIl0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImNoYW5uZWwiOiB2ZXJzaW9uWyJjaGFubmVsIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAicGxhdGZvcm0iOiBzZWxmLmNocm9tZV9wbGF0Zm9ybXNbcGxhdGZvcm1bIm9zIl1dLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImRhdGUiOiB2ZXJzaW9uWyJkYXRlIl0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCh2ZXJzaW9u
WyJjaGFubmVsIl0gaW4gc2VsZi5fY2hyb21lX2NoYW5uZWxzKQorICAgICAgICAgICAgICAgICAg
ICByZXZpc2lvbnMuYXBwZW5kKHJvdykKKyAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJv
cjoKKyAgICAgICAgICAgICAgICAgICAgbmV4dAorICAgICAgICByZXR1cm4gcmV2aXNpb25zCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvb21haGFwcm94eV91
bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9vbWFoYXByb3h5
X3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMGViOGVjYjg5OWE0YzcwZTNkNmUyNzEwMDljYmEz
MzZlYjdkM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvb21haGFwcm94eV91bml0dGVzdC5weQpAQCAtMCwwICsxLDY1IEBACisjIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyMKKworIyBVbml0IHRlc3QgZm9yIG9tYWhhcHJveHkucHkKKworaW1wb3J0IHVuaXR0
ZXN0CisKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5ldC5vbWFoYXByb3h5IGltcG9ydCBPbWFoYVBy
b3h5CisKKworY2xhc3MgTW9ja09tYWhhUHJveHkoT21haGFQcm94eSk6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGpzb24pOgorICAgICAgICBzZWxmLl9nZXRfanNvbiA9IGxhbWJkYToganNvbgor
ICAgICAgICBPbWFoYVByb3h5Ll9faW5pdF9fKHNlbGYpCisKKworY2xhc3MgT21haGFQcm94eVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGV4YW1wbGVfb21haGFwcm94eV9qc29uID0gIiIi
W3sib3MiOiAid2luIiwgInZlcnNpb25zIjogW3siYmFzZV93ZWJraXRfcmV2aXNpb24iOiAiMTE2
MTg1IiwgInY4X3ZlciI6ICIzLjEwLjguMSIsICJ3a192ZXIiOiAiNTM2LjExIiwgImJhc2VfdHJ1
bmtfcmV2aXNpb24iOiAxMzU1OTgsICJwcmV2X3ZlcnNpb24iOiAiMjAuMC4xMTI4LjAiLCAidmVy
c2lvbiI6ICIyMC4wLjExMjkuMCIsICJkYXRlIjogIjA1XC8wN1wvMTIiLCAicHJldl9kYXRlIjog
IjA1XC8wNlwvMTIiLCAidHJ1ZV9icmFuY2giOiAidHJ1bmsiLCAiY2hhbm5lbCI6ICJjYW5hcnki
LCAiYnJhbmNoX3JldmlzaW9uIjogIk5BIn0sIHsiYmFzZV93ZWJraXRfcmV2aXNpb24iOiAiMTE1
Njg3IiwgInY4X3ZlciI6ICIzLjEwLjYuMCIsICJ3a192ZXIiOiAiNTM2LjEwIiwgImJhc2VfdHJ1
bmtfcmV2aXNpb24iOiAxMzQ2NjYsICJwcmV2X3ZlcnNpb24iOiAiMjAuMC4xMTIzLjEiLCAidmVy
c2lvbiI6ICIyMC4wLjExMjMuNCIsICJkYXRlIjogIjA1XC8wNFwvMTIiLCAicHJldl9kYXRlIjog
IjA1XC8wMlwvMTIiLCAidHJ1ZV9icmFuY2giOiAiMTEyMyIsICJjaGFubmVsIjogImRldiIsICJi
cmFuY2hfcmV2aXNpb24iOiAxMzUwOTJ9XX0seyJvcyI6ICJsaW51eCIsICJ2ZXJzaW9ucyI6IFt7
ImJhc2Vfd2Via2l0X3JldmlzaW9uIjogIjExNTY4OCIsICJ2OF92ZXIiOiAiMy4xMC42LjAiLCAi
d2tfdmVyIjogIjUzNi4xMCIsICJiYXNlX3RydW5rX3JldmlzaW9uIjogMTM0NjY2LCAicHJldl92
ZXJzaW9uIjogIjIwLjAuMTEyMy4yIiwgInZlcnNpb24iOiAiMjAuMC4xMTIzLjQiLCAiZGF0ZSI6
ICIwNVwvMDRcLzEyIiwgInByZXZfZGF0ZSI6ICIwNVwvMDJcLzEyIiwgInRydWVfYnJhbmNoIjog
IjExMjMiLCAiY2hhbm5lbCI6ICJkZXYiLCAiYnJhbmNoX3JldmlzaW9uIjogMTM1MDkyfSwgeyJi
YXNlX3dlYmtpdF9yZXZpc2lvbiI6ICIxMTIzMjciLCAidjhfdmVyIjogIjMuOS4yNC4xNyIsICJ3
a192ZXIiOiAiNTM2LjUiLCAiYmFzZV90cnVua19yZXZpc2lvbiI6IDEyOTM3NiwgInByZXZfdmVy
c2lvbiI6ICIxOS4wLjEwODQuMzYiLCAidmVyc2lvbiI6ICIxOS4wLjEwODQuNDEiLCAiZGF0ZSI6
ICIwNVwvMDNcLzEyIiwgInByZXZfZGF0ZSI6ICIwNFwvMjVcLzEyIiwgInRydWVfYnJhbmNoIjog
IjEwODQiLCAiY2hhbm5lbCI6ICJiZXRhIiwgImJyYW5jaF9yZXZpc2lvbiI6IDEzNDg1NH0sIHsi
YmFzZV93ZWJraXRfcmV2aXNpb24iOiAiKiIsICJ2OF92ZXIiOiAiMy45LjI0LjE3IiwgIndrX3Zl
ciI6ICI1MzYuNSIsICJiYXNlX3RydW5rX3JldmlzaW9uIjogMTI5Mzc2LCAicHJldl92ZXJzaW9u
IjogIjE5LjAuMTA4NC4zNiIsICJ2ZXJzaW9uIjogIjE5LjAuMTA4NC40MSIsICJkYXRlIjogIjA1
XC8wM1wvMTIiLCAicHJldl9kYXRlIjogIjA0XC8yNVwvMTIiLCAidHJ1ZV9icmFuY2giOiAiMTA4
NCIsICJjaGFubmVsIjogInJlbGVhc2UiLCAiYnJhbmNoX3JldmlzaW9uIjogMTM0ODU0fV19XSIi
IgorCisgICAgZXhwZWN0ZWRfcmV2aXNpb25zID0gW3siY29tbWl0IjogMTE2MTg1LCAiY2hhbm5l
bCI6ICJjYW5hcnkiLCAicGxhdGZvcm0iOiAiV2luZG93cyIsICJkYXRlIjogIjA1LzA3LzEyIn0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiY29tbWl0IjogMTE1Njg3LCAiY2hhbm5lbCI6
ICJkZXYiLCAicGxhdGZvcm0iOiAiV2luZG93cyIsICJkYXRlIjogIjA1LzA0LzEyIn0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsiY29tbWl0IjogMTE1Njg4LCAiY2hhbm5lbCI6ICJkZXYi
LCAicGxhdGZvcm0iOiAiTGludXgiLCAiZGF0ZSI6ICIwNS8wNC8xMiJ9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICB7ImNvbW1pdCI6IDExMjMyNywgImNoYW5uZWwiOiAiYmV0YSIsICJwbGF0
Zm9ybSI6ICJMaW51eCIsICJkYXRlIjogIjA1LzAzLzEyIn0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0KKworICAgIGRlZiB0ZXN0X2dldF9yZXZpc2lvbnMoc2VsZik6CisgICAgICAgIG9t
YWhhcHJveHkgPSBNb2NrT21haGFQcm94eShzZWxmLmV4YW1wbGVfb21haGFwcm94eV9qc29uKQor
ICAgICAgICByZXZpc2lvbnMgPSBvbWFoYXByb3h5LmdldF9yZXZpc2lvbnMoKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihyZXZpc2lvbnMpLCA0KQorICAgICAgICBmb3IgcmV2aXNpb24g
aW4gcmV2aXNpb25zOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJjb21taXQiIGluIHJl
dmlzaW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJjaGFubmVsIiBpbiByZXZpc2lv
bikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgicGxhdGZvcm0iIGluIHJldmlzaW9uKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJkYXRlIiBpbiByZXZpc2lvbikKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJldmlzaW9uLmtleXMoKSksIDQpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmV2aXNpb25zLCBzZWxmLmV4cGVjdGVkX3JldmlzaW9ucykKKworaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9fX2luaXRfXy5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9fX2luaXRfXy5weQppbmRleCBlZjA1YjVh
YzRiZWRkYWZlZGI1YmZjMjQ1ZjYzOTMxNGY4ODE0MDY3Li5lMGQ4ODVmNzEzYzFkYTgyMTJhNmM2
M2NmYzBiNGVjY2IyNTEwMzUxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvX19pbml0X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL19faW5pdF9fLnB5CkBAIC01LDYgKzUsNyBAQCBmcm9tIHdlYmtpdHB5LnRvb2wu
Y29tbWFuZHMuYW5hbHl6ZWNoYW5nZWxvZyBpbXBvcnQgQW5hbHl6ZUNoYW5nZUxvZwogZnJvbSB3
ZWJraXRweS50b29sLmNvbW1hbmRzLmFwcGx5d2F0Y2hsaXN0bG9jYWwgaW1wb3J0IEFwcGx5V2F0
Y2hMaXN0TG9jYWwKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5idWdmb3J0ZXN0IGltcG9y
dCBCdWdGb3JUZXN0CiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuYnVnc2VhcmNoIGltcG9y
dCBCdWdTZWFyY2gKK2Zyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5jaHJvbWVjaGFubmVscyBp
bXBvcnQgQ2hyb21lQ2hhbm5lbHMKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5kb3dubG9h
ZCBpbXBvcnQgKgogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLmVhcmx5d2FybmluZ3N5c3Rl
bSBpbXBvcnQgKgogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLmV4cGVjdGF0aW9ucyBpbXBv
cnQgT3B0aW1pemVFeHBlY3RhdGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9idWdzZWFyY2gucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvYnVnc2VhcmNoLnB5CmluZGV4IDVjYmMxYTA0NDJkYzc4NTcwNDg5ZDBjNjkw
NDUzMzI2OWExMTc3ZGQuLmExZDc0YzU0ODJmOGJmMjAzOTEzODM2ZjVjOTdhNmVlOGVhNTE5NmEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9idWdzZWFy
Y2gucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2J1Z3NlYXJj
aC5weQpAQCAtMzIsNiArMzIsMTMgQEAgZnJvbSB3ZWJraXRweS50b29sLm11bHRpY29tbWFuZHRv
b2wgaW1wb3J0IEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kCiBjbGFzcyBCdWdTZWFyY2goQWJz
dHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAgIG5hbWUgPSAiYnVnLXNlYXJjaCIKICAgICBo
ZWxwX3RleHQgPSAiTGlzdCBidWdzIG1hdGNoaW5nIGEgcXVlcnkiCisgICAgYXJndW1lbnRfbmFt
ZXMgPSAiUVVFUlkiCisgICAgbG9uZ19oZWxwID0gXAorIiIiUnVucyB0aGUgYnVnemlsbGEgcXVp
Y2tzZWFyY2ggUVVFUlkgb24gYnVncy53ZWJraXQub3JnLCBhbmQgbGlzdHMgYWxsIGJ1Z3MKK3Jl
dHVybmVkLiBRVUVSWSBjYW4gYmUgYXMgc2ltcGxlIGFzIGEgYnVnIG51bWJlciBvciBhIGNvbW1h
IGRlbGltaXRlZCBsaXN0IG9mCitidWcgbnVtYmVycy4KK1NlZSBodHRwczovL2J1Z3ppbGxhLm1v
emlsbGEub3JnL3BhZ2UuY2dpP2lkPXF1aWNrc2VhcmNoLmh0bWwgZm9yIGZ1bGwKK2RvY3VtZW50
YXRpb24gb24gdGhlIHF1ZXJ5IGZvcm1hdC4iIiIKIAogICAgIGRlZiBleGVjdXRlKHNlbGYsIG9w
dGlvbnMsIGFyZ3MsIHRvb2wpOgogICAgICAgICBzZWFyY2hfc3RyaW5nID0gYXJnc1swXQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Nocm9tZWNoYW5u
ZWxzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Nocm9tZWNoYW5u
ZWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmIzNDE2ZDE0YWU4MGMyYzI2ZjZlMWI4YTZlYmFkOTIxZDhjMGI5
ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvY2hyb21lY2hhbm5lbHMucHkKQEAgLTAsMCArMSwxMDIgQEAKKyMgQ29weXJpZ2h0IChjKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Citmcm9tIG9wdHBhcnNlIGltcG9ydCBtYWtlX29wdGlvbgorCitmcm9tIHdlYmtpdHB5LmNvbW1v
bi5uZXQub21haGFwcm94eSBpbXBvcnQgT21haGFQcm94eQorZnJvbSB3ZWJraXRweS50b29sLm11
bHRpY29tbWFuZHRvb2wgaW1wb3J0IEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kCisKK2ltcG9y
dCByZQorCisKK2NsYXNzIENocm9tZUNoYW5uZWxzKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5k
KToKKyAgICBuYW1lID0gImNocm9tZS1jaGFubmVscyIKKyAgICBoZWxwX3RleHQgPSAiTGlzdCB3
aGljaCBjaHJvbWUgY2hhbm5lbHMgaW5jbHVkZSB0aGUgcGF0Y2hlcyBpbiBidWdzIHJldHVybmVk
IGJ5IFFVRVJZLiIKKyAgICBhcmd1bWVudF9uYW1lcyA9ICJRVUVSWSIKKyAgICBsb25nX2hlbHAg
PSAiIiJSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgbGlzdCBvZiBDaHJvbWUgcmVsZWFzZXMgZnJvbSBv
bWFoYXByb3h5LmFwcHNwb3QuY29tLAorYW5kIHRoZW4gcnVucyB0aGUgYnVnemlsbGEgcXVpY2tz
ZWFyY2ggUVVFUlkgb24gYnVncy5idWd6aWxsYS5vcmcuIEZvciBlYWNoIGJ1ZworcmV0dXJuZWQg
YnkgcXVlcnksIGEgc2luZ2xlIHN2biBjb21taXQgaXMgZGVkdWNlZCwgYW5kIGEgc2hvcnQgc3Vt
bWFyeSBpcworcHJpbnRlZCBvZiBlYWNoIGJ1ZyBsaXN0aW5nIHdoaWNoIENocm9tZSBjaGFubmVs
cyBjb250YWluIGVhY2ggYnVncyBhc3NvY2lhdGVkCitjb21taXQuCisKK1RoZSBRVUVSWSBjYW4g
YmUgYXMgc2ltcGxlIGFzIGEgYnVnIG51bWJlciwgb3IgYSBjb21tYSBkZWxpbWl0ZWQgbGlzdCBv
ZiBidWcKK251bWJlcnMuIFNlZSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3BhZ2UuY2dp
P2lkPXF1aWNrc2VhcmNoLmh0bWwgZm9yIGZ1bGwKK2RvY3VtZW50YXRpb24gb24gdGhlIHF1ZXJ5
IGZvcm1hdC4iIiIKKworICAgIGNocm9tZV9jaGFubmVscyA9IE9tYWhhUHJveHkuY2hyb21lX2No
YW5uZWxzCisgICAgY29tbWl0ZWRfcGF0dGVybiA9ICJDb21taXR0ZWQgcihbMC05XSspOiA8aHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvXFwxPiIKKyAgICByb2xsb3V0X3BhdHRlcm4g
PSAiUm9sbGVkIG91dCBpbiBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC9bMC05XSsi
CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIEFic3RyYWN0RGVjbGFyYXRpdmVD
b21tYW5kLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYuX3JlX2NvbW1pdHRlZCA9IHJlLmNv
bXBpbGUoc2VsZi5jb21taXRlZF9wYXR0ZXJuKQorICAgICAgICBzZWxmLl9yZV9yb2xsb3V0ID0g
cmUuY29tcGlsZShzZWxmLnJvbGxvdXRfcGF0dGVybikKKyAgICAgICAgc2VsZi5fb21haGFwcm94
eSA9IE9tYWhhUHJveHkoKQorCisgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywg
dG9vbCk6CisgICAgICAgIHNlYXJjaF9zdHJpbmcgPSBhcmdzWzBdCisgICAgICAgIHJldmlzaW9u
cyA9IHNlbGYuX29tYWhhcHJveHkuZ2V0X3JldmlzaW9ucygpCisgICAgICAgIGJ1Z3MgPSB0b29s
LmJ1Z3MucXVlcmllcy5mZXRjaF9idWdzX21hdGNoaW5nX3F1aWNrc2VhcmNoKHNlYXJjaF9zdHJp
bmcpCisgICAgICAgIGlmIG5vdCBidWdzOgorICAgICAgICAgICAgcHJpbnQgIk5vIGJ1Z3MgZm91
bmQgbWF0Y2hpbmcgJyVzJyIgJSBzZWFyY2hfc3RyaW5nCisgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgZm9yIGJ1ZyBpbiBidWdzOgorICAgICAgICAgICAgY29tbWVudHMgPSBidWcuY29tbWVu
dHMoKQorICAgICAgICAgICAgY29tbWl0ID0gTm9uZQorICAgICAgICAgICAgZm9yIGNvbW1lbnQg
aW4gY29tbWVudHM6CisgICAgICAgICAgICAgICAgY29tbWl0X21hdGNoID0gc2VsZi5fcmVfY29t
bWl0dGVkLnNlYXJjaChjb21tZW50Wyd0ZXh0J10pCisgICAgICAgICAgICAgICAgaWYgY29tbWl0
X21hdGNoOgorICAgICAgICAgICAgICAgICAgICBpZiBjb21taXQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICBjb21taXQgPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiJTVz
ICVzIiAlIChidWcuaWQoKSwgYnVnLnRpdGxlKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBw
cmludCAiLi4uIGhhcyB0b28gY29uZnVzaW5nIGEgY29tbWl0IGhpc3RvcnkgdG8gcGFyc2UsIHNr
aXBwaW5nIgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAg
ICAgY29tbWl0ID0gaW50KGNvbW1pdF9tYXRjaC5ncm91cCgxKSkKKyAgICAgICAgICAgICAgICBp
ZiBzZWxmLl9yZV9yb2xsb3V0LnNlYXJjaChjb21tZW50Wyd0ZXh0J10pOgorICAgICAgICAgICAg
ICAgICAgICBjb21taXQgPSBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
IGlmIG5vdCBjb21taXQ6CisgICAgICAgICAgICAgICAgICAgIHByaW50ICIlNXMgJXMiICUgKGJ1
Zy5pZCgpLCBidWcudGl0bGUoKSkKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgIi4uLiBkb2Vz
IG5vdCBhcHBlYXIgdG8gaGF2ZSBhbiBhc3NvY2lhdGVkIGNvbW1pdC4iCisgICAgICAgICAgICBp
ZiBub3QgY29tbWl0OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHBy
aW50ICIlNXMgJXMgKGNvbW1pdCAlZCkiICUgKGJ1Zy5pZCgpLCBidWcudGl0bGUoKSwgY29tbWl0
KQorICAgICAgICAgICAgYnlfY2hhbm5lbCA9IHt9CisgICAgICAgICAgICBmb3IgcmV2aXNpb24g
aW4gcmV2aXNpb25zOgorICAgICAgICAgICAgICAgIGNoYW5uZWwgPSByZXZpc2lvblsnY2hhbm5l
bCddCisgICAgICAgICAgICAgICAgaWYgcmV2aXNpb25bJ2NvbW1pdCddIDwgY29tbWl0OgorICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIG5vdCBjaGFubmVs
IGluIGJ5X2NoYW5uZWw6CisgICAgICAgICAgICAgICAgICAgIGJ5X2NoYW5uZWxbcmV2aXNpb25b
J2NoYW5uZWwnXV0gPSAiICU2czoiICUgY2hhbm5lbAorICAgICAgICAgICAgICAgIGJ5X2NoYW5u
ZWxbY2hhbm5lbF0gKz0gIiAlcywiICUgcmV2aXNpb25bJ3BsYXRmb3JtJ10KKyAgICAgICAgICAg
IGZvciBjaGFubmVsIGluIHNlbGYuY2hyb21lX2NoYW5uZWxzOgorICAgICAgICAgICAgICAgIGlm
IGNoYW5uZWwgaW4gYnlfY2hhbm5lbDoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgYnlfY2hh
bm5lbFtjaGFubmVsXVs6LTFdCisgICAgICAgICAgICBpZiBub3QgYnlfY2hhbm5lbDoKKyAgICAg
ICAgICAgICAgICBwcmludCAiLi4uIG5vdCB5ZXQgcmVsZWFzZWQgaW4gYW55IENocm9tZSBjaGFu
bmVscy4iCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
Y2hyb21lY2hhbm5lbHNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvY2hyb21lY2hhbm5lbHNfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDRmZTg0ZTE5
MTRlMmRkZTEzYjUyYjMxODYyN2E5MjdmMjViOTdhNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9jaHJvbWVjaGFubmVsc191bml0dGVzdC5w
eQpAQCAtMCwwICsxLDcyIEBACisjIENvcHlyaWdodCAoYykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6
CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSB3ZWJraXRweS50b29s
LmNvbW1hbmRzLmNocm9tZWNoYW5uZWxzIGltcG9ydCBDaHJvbWVDaGFubmVscworZnJvbSB3ZWJr
aXRweS50b29sLmNvbW1hbmRzLmNvbW1hbmR0ZXN0IGltcG9ydCBDb21tYW5kc1Rlc3QKK2Zyb20g
d2Via2l0cHkuY29tbW9uLm5ldC5vbWFoYXByb3h5IGltcG9ydCBPbWFoYVByb3h5CisKKworY2xh
c3MgTW9ja09tYWhhUHJveHkoT21haGFQcm94eSk6CisgICAgcmV2aXNpb25zID0gW3siY29tbWl0
IjogMjAsICJjaGFubmVsIjogImNhbmFyeSIsICJwbGF0Zm9ybSI6ICJNYWMiLCAiZGF0ZSI6ICIw
Ny8wNC83NiJ9LAorICAgICAgICAgICAgICAgICB7ImNvbW1pdCI6IDIwLCAiY2hhbm5lbCI6ICJj
YW5hcnkiLCAicGxhdGZvcm0iOiAiV2luZG93cyIsICJkYXRlIjogIjA3LzA0Lzc2In0sCisgICAg
ICAgICAgICAgICAgIHsiY29tbWl0IjogMjUsICJjaGFubmVsIjogImRldiIsICJwbGF0Zm9ybSI6
ICJNYWMiLCAiZGF0ZSI6ICIwNy8wMS83NiJ9LAorICAgICAgICAgICAgICAgICB7ImNvbW1pdCI6
IDMwLCAiY2hhbm5lbCI6ICJkZXYiLCAicGxhdGZvcm0iOiAiV2luZG93cyIsICJkYXRlIjogIjAz
LzI5LzgyIn0sCisgICAgICAgICAgICAgICAgIHsiY29tbWl0IjogMzAsICJjaGFubmVsIjogImRl
diIsICJwbGF0Zm9ybSI6ICJMaW51eCIsICJkYXRlIjogIjAzLzI5LzgyIn0sCisgICAgICAgICAg
ICAgICAgIHsiY29tbWl0IjogMTUsICJjaGFubmVsIjogImJldGEiLCAicGxhdGZvcm0iOiAiV2lu
ZG93cyIsICJkYXRlIjogIjA3LzA0LzY3In0sCisgICAgICAgICAgICAgICAgIHsiY29tbWl0Ijog
MTUsICJjaGFubmVsIjogImJldGEiLCAicGxhdGZvcm0iOiAiTGludXgiLCAiZGF0ZSI6ICIwNy8w
NC82NyJ9LAorICAgICAgICAgICAgICAgICB7ImNvbW1pdCI6IDEwLCAiY2hhbm5lbCI6ICJzdGFi
bGUiLCAicGxhdGZvcm0iOiAiV2luZG93cyIsICJkYXRlIjogIjA3LzAxLzY3In0sCisgICAgICAg
ICAgICAgICAgIHsiY29tbWl0IjogMjAsICJjaGFubmVsIjogInN0YWJsZSIsICJwbGF0Zm9ybSI6
ICJMaW51eCIsICJkYXRlIjogIjA5LzE2LzEwIn0sCisgICAgICAgICAgICAgICAgIF0KKworICAg
IGRlZiBnZXRfcmV2aXNpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5yZXZpc2lvbnMK
KworCitjbGFzcyBUZXN0YWJsZUNocm9tZUNoYW5uZWxzKENocm9tZUNoYW5uZWxzKToKKyAgICBk
ZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIENocm9tZUNoYW5uZWxzLl9faW5pdF9fKHNlbGYp
CisgICAgICAgIHNlbGYuX29tYWhhcHJveHkgPSBNb2NrT21haGFQcm94eSgpCisKKworY2xhc3Mg
Q2hyb21lQ2hhbm5lbHNUZXN0KENvbW1hbmRzVGVzdCk6CisKKyAgICBkZWYgdGVzdF9jaHJvbWVf
Y2hhbm5lbHMoc2VsZik6CisgICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9IFwKKyIiIjUwMDAxIEJ1
ZyB3aXRoIGEgcGF0Y2ggbmVlZGluZyByZXZpZXcuIChjb21taXQgMzUpCisuLi4gbm90IHlldCBy
ZWxlYXNlZCBpbiBhbnkgQ2hyb21lIGNoYW5uZWxzLgorNTAwMDIgVGhlIHRoaXJkIGJ1ZworLi4u
IGhhcyB0b28gY29uZnVzaW5nIGEgY29tbWl0IGhpc3RvcnkgdG8gcGFyc2UsIHNraXBwaW5nCis1
MDAwMyBUaGUgZm91cnRoIGJ1ZworLi4uIGRvZXMgbm90IGFwcGVhciB0byBoYXZlIGFuIGFzc29j
aWF0ZWQgY29tbWl0LgorNTAwMDQgVGhlIGZpZnRoIGJ1ZyAoY29tbWl0IDE1KQorIGNhbmFyeTog
TWFjLCBXaW5kb3dzCisgICAgZGV2OiBNYWMsIFdpbmRvd3MsIExpbnV4CisgICBiZXRhOiBXaW5k
b3dzLCBMaW51eAorIHN0YWJsZTogTGludXgKKyIiIgorICAgICAgICBzZWxmLmFzc2VydF9leGVj
dXRlX291dHB1dHMoVGVzdGFibGVDaHJvbWVDaGFubmVscygpLCBbImZvbyJdLCBleHBlY3RlZF9z
dGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140651</attachid>
            <date>2012-05-07 19:45:41 -0700</date>
            <delta_ts>2012-05-08 06:36:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85368-20120507224539.patch</filename>
            <type>text/plain</type>
            <size>26977</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MTg1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGNlMmZmMjUyZGExOTc4OTM5MDk1NTBiMWM4YWVhMjMz
NDFlODAwOS4uZjc3Mjc4OWI3MGI5YzJjNmM5OTI3ZjIzOTQxODQxNzJkNWMzNTBlZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQz
IEBACiAyMDEyLTA1LTA3ICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIFt3ZWJraXQtcGF0Y2hdIEFkZCBuZXcgY2hyb21lLWNoYW5uZWxzIGNvbW1hbmQgdG8g
dHJhY2sgZG93biBjdXJyZW50IGNocm9tZSByZWxlYXNlIGNoYW5uZWxzIGZvciBhIGNvbW1pdHRl
ZCBidWcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTM2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3VybHMucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX21vY2sucHk6CisgICAgICAg
IChNb2NrQnVnemlsbGFRdWVyaWVzLmZldGNoX2J1Z3NfbWF0Y2hpbmdfcXVpY2tzZWFyY2gpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9vbWFoYXByb3h5LnB5OiBBZGRl
ZC4KKyAgICAgICAgKE9tYWhhUHJveHkpOgorICAgICAgICAoT21haGFQcm94eS5fX2luaXRfXyk6
CisgICAgICAgIChPbWFoYVByb3h5LnNldF91cmwpOgorICAgICAgICAoT21haGFQcm94eS5fanNv
bl91cmwpOgorICAgICAgICAoT21haGFQcm94eS5fZ2V0X2pzb24pOgorICAgICAgICAoT21haGFQ
cm94eS5nZXRfcmV2aXNpb25zKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvb21haGFwcm94eV91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChNb2NrT21haGFQcm94
eSk6CisgICAgICAgIChNb2NrT21haGFQcm94eS5fX2luaXRfXyk6CisgICAgICAgIChPbWFoYVBy
b3h5VGVzdCk6CisgICAgICAgIChPbWFoYVByb3h5VGVzdC50ZXN0X2dldF9yZXZpc2lvbnMpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9fX2luaXRfXy5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvYnVnc2VhcmNoLnB5OgorICAg
ICAgICAoQnVnU2VhcmNoKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvY2hyb21lY2hhbm5lbHMucHk6IEFkZGVkLgorICAgICAgICAoQ2hyb21lQ2hhbm5lbHMpOgor
ICAgICAgICAoX19pbml0X18pOgorICAgICAgICAoZXhlY3V0ZSk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Nocm9tZWNoYW5uZWxzX3VuaXR0ZXN0LnB5OiBBZGRl
ZC4KKyAgICAgICAgKE1vY2tPbWFoYVByb3h5KToKKyAgICAgICAgKE1vY2tPbWFoYVByb3h5Lmdl
dF9yZXZpc2lvbnMpOgorICAgICAgICAoVGVzdGFibGVDaHJvbWVDaGFubmVscyk6CisgICAgICAg
IChUZXN0YWJsZUNocm9tZUNoYW5uZWxzLl9faW5pdF9fKToKKyAgICAgICAgKENocm9tZUNoYW5u
ZWxzVGVzdCk6CisgICAgICAgIChDaHJvbWVDaGFubmVsc1Rlc3QudGVzdF9zaW5nbGVfYnVnKToK
KyAgICAgICAgKENocm9tZUNoYW5uZWxzVGVzdC50ZXN0X3dpdGhfcXVlcnkpOgorCisyMDEyLTA1
LTA3ICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFt3ZWJr
aXQtcGF0Y2hdIFJldHVybiBtZWFuaW5nZnVsIHJlc3VsdHMgZnJvbSBzaW5nbGUtcmVzdWx0IHF1
ZXJpZXMuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTM2NwogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcv
dXJscy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy91cmxzLnB5Cmlu
ZGV4IGI1NDcwNDVmNGVkMjdiMmE3NDE2OGNlMmIxMjY5M2Q2M2NkODQ2N2EuLjQ4ODMwYzU2NDM1
MzQzNTdhNjE5OTlkMzQ2NDFiODBlNDk4NDdlODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NvbmZpZy91cmxzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NvbmZpZy91cmxzLnB5CkBAIC01Niw2ICs1Niw3IEBAIGRpcmVjdF9hdHRhY2ht
ZW50X3VybCA9IHIiaHR0cHM/Oi8vYnVnLSg/UDxidWdfaWQ+XGQrKS1hdHRhY2htZW50cy4lcy9h
dHRhY2htZW50CiBidWlsZGJvdF91cmwgPSAiaHR0cDovL2J1aWxkLndlYmtpdC5vcmciCiBjaHJv
bWl1bV9idWlsZGJvdF91cmwgPSAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVt
LndlYmtpdCIKIAorb21haGFwcm94eV91cmwgPSAiaHR0cDovL29tYWhhcHJveHkuYXBwc3BvdC5j
b20vIgogCiBkZWYgcGFyc2VfYnVnX2lkKHN0cmluZyk6CiAgICAgaWYgbm90IHN0cmluZzoKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6
aWxsYV9tb2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxh
L2J1Z3ppbGxhX21vY2sucHkKaW5kZXggNDdmODY3ZTAzNzhjZjY5MTFkZWVkNjU2M2VmZTEyY2Y0
MDg2Njc2OC4uM2RlNzVmYTQ2YWVmODdjNDY3ZDA3YWU1OTIyNTIyMTAyMDM1ODdmNSAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxh
X21vY2sucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxh
L2J1Z3ppbGxhX21vY2sucHkKQEAgLTE2OSw5ICsxNjksOSBAQCBfYnVnMiA9IHsKICAgICAiYnVn
X3N0YXR1cyI6ICJBU1NJR05FRCIsCiAgICAgImNvbW1lbnRzIjogW3siY29tbWVudF9kYXRlIjog
IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTEsIDYsIDExLCA5LCA0LCAzKSwKICAgICAgICAgICAgICAg
ICAgICJjb21tZW50X2VtYWlsIjogImJhckBmb28uY29tIiwKLSAgICAgICAgICAgICAgICAgICJ0
ZXh0IjogIk1lc3NhZ2UxLiIsCi0gICAgICAgIH0sCi0gICAgXSwKKyAgICAgICAgICAgICAgICAg
ICJ0ZXh0IjogIk1lc3NhZ2UxLlxuQ29tbWl0dGVkIHIzNTogPGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzM1PiIsCisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
ICBdLAogfQogCiAKQEAgLTE4Myw3ICsxODMsMTUgQEAgX2J1ZzMgPSB7CiAgICAgImNjX2VtYWls
cyI6IFtdLAogICAgICJhdHRhY2htZW50cyI6IFtfcGF0Y2g3XSwKICAgICAiYnVnX3N0YXR1cyI6
ICJORVciLAotICAgICJjb21tZW50cyI6IFtdLAorICAgICJjb21tZW50cyI6ICBbeyJjb21tZW50
X2RhdGUiOiAgZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMSwgNiwgMTEsIDksIDQsIDMpLAorICAgICAg
ICAgICAgICAgICAgICJjb21tZW50X2VtYWlsIjogImJhckBmb28uY29tIiwKKyAgICAgICAgICAg
ICAgICAgICAidGV4dCI6ICJDb21taXR0ZWQgcjMwOiA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMzA+IiwKKyAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAg
eyJjb21tZW50X2RhdGUiOiAgZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMSwgNiwgMTEsIDksIDQsIDMp
LAorICAgICAgICAgICAgICAgICAgICJjb21tZW50X2VtYWlsIjogImJhckBmb28uY29tIiwKKyAg
ICAgICAgICAgICAgICAgICAidGV4dCI6ICJDb21taXR0ZWQgcjMxOiA8aHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMzE+IiwKKyAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgICAgXSwKIH0KIAogCkBAIC0xOTUsNyArMjAzLDE1IEBAIF9idWc0ID0gewogICAgICJj
Y19lbWFpbHMiOiBbXSwKICAgICAiYXR0YWNobWVudHMiOiBbX3BhdGNoNCwgX3BhdGNoNSwgX3Bh
dGNoNl0sCiAgICAgImJ1Z19zdGF0dXMiOiAiUkVPUEVORUQiLAotICAgICJjb21tZW50cyI6IFtd
LAorICAgICJjb21tZW50cyI6IFt7ImNvbW1lbnRfZGF0ZSI6ICBkYXRldGltZS5kYXRldGltZSgy
MDExLCA2LCAxMSwgOSwgNCwgMyksCisgICAgICAgICAgICAgICAgICAiY29tbWVudF9lbWFpbCI6
ICJiYXJAZm9vLmNvbSIsCisgICAgICAgICAgICAgICAgICAidGV4dCI6ICJDb21taXR0ZWQgcjI1
OiA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMzA+IiwKKyAgICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgIHsiY29tbWVudF9kYXRlIjogIGRhdGV0aW1lLmRhdGV0
aW1lKDIwMTEsIDYsIDExLCA5LCA0LCAzKSwKKyAgICAgICAgICAgICAgICAgICJjb21tZW50X2Vt
YWlsIjogImJhckBmb28uY29tIiwKKyAgICAgICAgICAgICAgICAgICJ0ZXh0IjogIlJvbGxlZCBv
dXQgaW4gPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI2IiwKKyAgICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgIF0sCiB9CiAKIApAQCAtMjA4LDcgKzIyNCwxMiBA
QCBfYnVnNSA9IHsKICAgICAiYXR0YWNobWVudHMiOiBbXSwKICAgICAiYnVnX3N0YXR1cyI6ICJS
RVNPTFZFRCIsCiAgICAgImR1cF9pZCI6IDUwMDAyLAotICAgICJjb21tZW50cyI6IFtdLAorICAg
ICJjb21tZW50cyI6IFt7ImNvbW1lbnRfZGF0ZSI6ICBkYXRldGltZS5kYXRldGltZSgyMDExLCA2
LCAxMSwgOSwgNCwgMyksCisgICAgICAgICAgICAgICAgICAiY29tbWVudF9lbWFpbCI6ICJiYXJA
Zm9vLmNvbSIsCisgICAgICAgICAgICAgICAgICAidGV4dCI6ICJDb21taXR0ZWQgcjE1OiA8aHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTU+IiwKKyAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgIF0sCisKIH0KIAogCkBAIC0yNTEsNiArMjcyLDEwIEBAIGNsYXNz
IE1vY2tCdWd6aWxsYVF1ZXJpZXMob2JqZWN0KToKICAgICBkZWYgZmV0Y2hfYnVnc19tYXRjaGlu
Z19zZWFyY2goc2VsZiwgc2VhcmNoX3N0cmluZywgYXV0aG9yX2VtYWlsPU5vbmUpOgogICAgICAg
ICByZXR1cm4gW3NlbGYuX2J1Z3ppbGxhLmZldGNoX2J1Zyg1MDAwNCksIHNlbGYuX2J1Z3ppbGxh
LmZldGNoX2J1Zyg1MDAwMyldCiAKKyAgICBkZWYgZmV0Y2hfYnVnc19tYXRjaGluZ19xdWlja3Nl
YXJjaChzZWxmLCBzZWFyY2hfc3RyaW5nKToKKyAgICAgICAgcmV0dXJuIFtzZWxmLl9idWd6aWxs
YS5mZXRjaF9idWcoNTAwMDEpLCBzZWxmLl9idWd6aWxsYS5mZXRjaF9idWcoNTAwMDIpLAorICAg
ICAgICAgICAgICAgIHNlbGYuX2J1Z3ppbGxhLmZldGNoX2J1Zyg1MDAwMyksIHNlbGYuX2J1Z3pp
bGxhLmZldGNoX2J1Zyg1MDAwNCldCisKIAogX21vY2tfcmV2aWV3ZXJzID0gW1Jldmlld2VyKCJG
b28gQmFyIiwgImZvb0BiYXIuY29tIiksCiAgICAgICAgICAgICAgICAgICAgUmV2aWV3ZXIoIlJl
dmlld2VyMiIsICJyZXZpZXdlcjJAd2Via2l0Lm9yZyIpXQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L29tYWhhcHJveHkucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvb21haGFwcm94eS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTY5MjNhNmE1ZWJi
OGE3Mjk3YjA4YjM2ZWE5NDZlZGJmZjY1OGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L29tYWhhcHJveHkucHkKQEAgLTAsMCArMSw4MCBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4K
KyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisjCisjIFRoaXMgaXMgdGhlIGNsaWVudCB0byBxdWVyeSBodHRwOi8v
b21haGFwcm94eS5hcHBzcG90LmNvbS8gdG8gcmV0cmlldmUKKyMgY2hyb21lIHZlcnNpb25zIGFz
c29jaWF0ZWQgd2l0aCBXZWJLaXQgY29tbWl0cy4KKworZnJvbSB3ZWJraXRweS5jb21tb24ubmV0
Lm5ldHdvcmt0cmFuc2FjdGlvbiBpbXBvcnQgTmV0d29ya1RyYW5zYWN0aW9uCitmcm9tIHdlYmtp
dHB5LmNvbW1vbi5jb25maWcgaW1wb3J0IHVybHMKKworaW1wb3J0IGpzb24KK2ltcG9ydCB1cmxs
aWIyCisKKworY2xhc3MgT21haGFQcm94eShvYmplY3QpOgorICAgIGRlZmF1bHRfdXJsID0gdXJs
cy5vbWFoYXByb3h5X3VybAorCisgICAgY2hyb21lX3BsYXRmb3JtcyA9IHsibGludXgiOiAiTGlu
dXgiLAorICAgICAgICAgICAgICAgICAgICAgICAgIndpbiI6ICJXaW5kb3dzIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJtYWMiOiAiTWFjIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJj
cm9zIjogIkNocm9tZSBPUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAiY2YiOiAiQ2hyb21l
IEZyYW1lIn0KKyAgICBjaHJvbWVfY2hhbm5lbHMgPSBbImNhbmFyeSIsICJkZXYiLCAiYmV0YSIs
ICJzdGFibGUiXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybD1kZWZhdWx0X3VybCwgYnJv
d3Nlcj1Ob25lKToKKyAgICAgICAgc2VsZi5fY2hyb21lX2NoYW5uZWxzID0gc2V0KHNlbGYuY2hy
b21lX2NoYW5uZWxzKQorICAgICAgICBzZWxmLnNldF91cmwodXJsKQorICAgICAgICBmcm9tIHdl
YmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5tZWNoYW5pemUgaW1wb3J0IEJyb3dzZXIK
KyAgICAgICAgc2VsZi5fYnJvd3NlciA9IGJyb3dzZXIgb3IgQnJvd3NlcigpCisKKyAgICBkZWYg
c2V0X3VybChzZWxmLCB1cmwpOgorICAgICAgICBzZWxmLnVybCA9IHVybAorCisgICAgZGVmIF9q
c29uX3VybChzZWxmKToKKyAgICAgICAgcmV0dXJuICIlcy9hbGwuanNvbiIgJSBzZWxmLnVybAor
CisgICAgZGVmIF9nZXRfanNvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIE5ldHdvcmtUcmFuc2Fj
dGlvbigpLnJ1bihsYW1iZGE6IHVybGxpYjIudXJsb3BlbihzZWxmLl9qc29uX3VybCgpKS5yZWFk
KCkpCisKKyAgICBkZWYgZ2V0X3JldmlzaW9ucyhzZWxmKToKKyAgICAgICAgcmV2aXNpb25zX2pz
b24gPSBqc29uLmxvYWRzKHNlbGYuX2dldF9qc29uKCkpCisgICAgICAgIHJldmlzaW9ucyA9IFtd
CisgICAgICAgIGZvciBwbGF0Zm9ybSBpbiByZXZpc2lvbnNfanNvbjoKKyAgICAgICAgICAgIGZv
ciB2ZXJzaW9uIGluIHBsYXRmb3JtWyJ2ZXJzaW9ucyJdOgorICAgICAgICAgICAgICAgIHRyeToK
KyAgICAgICAgICAgICAgICAgICAgcm93ID0geworICAgICAgICAgICAgICAgICAgICAgICAgImNv
bW1pdCI6IGludCh2ZXJzaW9uWyJiYXNlX3dlYmtpdF9yZXZpc2lvbiJdKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJjaGFubmVsIjogdmVyc2lvblsiY2hhbm5lbCJdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgInBsYXRmb3JtIjogc2VsZi5jaHJvbWVfcGxhdGZvcm1zW3BsYXRmb3JtWyJv
cyJdXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJkYXRlIjogdmVyc2lvblsiZGF0ZSJdLAor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCh2ZXJzaW9u
WyJjaGFubmVsIl0gaW4gc2VsZi5fY2hyb21lX2NoYW5uZWxzKQorICAgICAgICAgICAgICAgICAg
ICByZXZpc2lvbnMuYXBwZW5kKHJvdykKKyAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJv
cjoKKyAgICAgICAgICAgICAgICAgICAgbmV4dAorICAgICAgICByZXR1cm4gcmV2aXNpb25zCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvb21haGFwcm94eV91
bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9vbWFoYXByb3h5
X3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyNzM1YzFhYmNhNDA2ZGJkZmFkZTBkOTY2ODk4YmJh
OTgyOGFhMmQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvb21haGFwcm94eV91bml0dGVzdC5weQpAQCAtMCwwICsxLDEyNSBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisjCisKKyMgVW5pdCB0ZXN0IGZvciBvbWFoYXByb3h5LnB5CisKK2ltcG9ydCB1bml0
dGVzdAorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQub21haGFwcm94eSBpbXBvcnQgT21haGFQ
cm94eQorCisKK2NsYXNzIE1vY2tPbWFoYVByb3h5KE9tYWhhUHJveHkpOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBqc29uKToKKyAgICAgICAgc2VsZi5fZ2V0X2pzb24gPSBsYW1iZGE6IGpzb24K
KyAgICAgICAgT21haGFQcm94eS5fX2luaXRfXyhzZWxmKQorCisKK2NsYXNzIE9tYWhhUHJveHlU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBleGFtcGxlX29tYWhhcHJveHlfanNvbiA9ICIi
IlsKKyAgICAgICAgeyJvcyI6ICJ3aW4iLAorICAgICAgICAgInZlcnNpb25zIjogWworICAgICAg
ICAgICAgICAgIHsiYmFzZV93ZWJraXRfcmV2aXNpb24iOiAiMTE2MTg1IiwKKyAgICAgICAgICAg
ICAgICAgInY4X3ZlciI6ICIzLjEwLjguMSIsCisgICAgICAgICAgICAgICAgICJ3a192ZXIiOiAi
NTM2LjExIiwKKyAgICAgICAgICAgICAgICAgImJhc2VfdHJ1bmtfcmV2aXNpb24iOiAxMzU1OTgs
CisgICAgICAgICAgICAgICAgICJwcmV2X3ZlcnNpb24iOiAiMjAuMC4xMTI4LjAiLAorICAgICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICIyMC4wLjExMjkuMCIsCisgICAgICAgICAgICAgICAgICJk
YXRlIjogIjA1XC8wN1wvMTIiLAorICAgICAgICAgICAgICAgICAicHJldl9kYXRlIjogIjA1XC8w
NlwvMTIiLAorICAgICAgICAgICAgICAgICAidHJ1ZV9icmFuY2giOiAidHJ1bmsiLAorICAgICAg
ICAgICAgICAgICAiY2hhbm5lbCI6ICJjYW5hcnkiLAorICAgICAgICAgICAgICAgICAiYnJhbmNo
X3JldmlzaW9uIjogIk5BIn0sCisgICAgICAgICAgICAgICAgeyJiYXNlX3dlYmtpdF9yZXZpc2lv
biI6ICIxMTU2ODciLAorICAgICAgICAgICAgICAgICAidjhfdmVyIjogIjMuMTAuNi4wIiwKKyAg
ICAgICAgICAgICAgICAgIndrX3ZlciI6ICI1MzYuMTAiLAorICAgICAgICAgICAgICAgICAiYmFz
ZV90cnVua19yZXZpc2lvbiI6IDEzNDY2NiwKKyAgICAgICAgICAgICAgICAgInByZXZfdmVyc2lv
biI6ICIyMC4wLjExMjMuMSIsCisgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIwLjAuMTEy
My40IiwKKyAgICAgICAgICAgICAgICAgImRhdGUiOiAiMDVcLzA0XC8xMiIsCisgICAgICAgICAg
ICAgICAgICJwcmV2X2RhdGUiOiAiMDVcLzAyXC8xMiIsCisgICAgICAgICAgICAgICAgICJ0cnVl
X2JyYW5jaCI6ICIxMTIzIiwKKyAgICAgICAgICAgICAgICAgImNoYW5uZWwiOiAiZGV2IiwKKyAg
ICAgICAgICAgICAgICAgImJyYW5jaF9yZXZpc2lvbiI6IDEzNTA5Mn1dfSwKKyAgICAgICAgeyJv
cyI6ICJsaW51eCIsCisgICAgICAgICAidmVyc2lvbnMiOiBbCisgICAgICAgICAgICAgICAgeyJi
YXNlX3dlYmtpdF9yZXZpc2lvbiI6ICIxMTU2ODgiLAorICAgICAgICAgICAgICAgICAidjhfdmVy
IjogIjMuMTAuNi4wIiwKKyAgICAgICAgICAgICAgICAgIndrX3ZlciI6ICI1MzYuMTAiLAorICAg
ICAgICAgICAgICAgICAiYmFzZV90cnVua19yZXZpc2lvbiI6IDEzNDY2NiwKKyAgICAgICAgICAg
ICAgICAgInByZXZfdmVyc2lvbiI6ICIyMC4wLjExMjMuMiIsCisgICAgICAgICAgICAgICAgICJ2
ZXJzaW9uIjogIjIwLjAuMTEyMy40IiwKKyAgICAgICAgICAgICAgICAgImRhdGUiOiAiMDVcLzA0
XC8xMiIsCisgICAgICAgICAgICAgICAgICJwcmV2X2RhdGUiOiAiMDVcLzAyXC8xMiIsCisgICAg
ICAgICAgICAgICAgICJ0cnVlX2JyYW5jaCI6ICIxMTIzIiwKKyAgICAgICAgICAgICAgICAgImNo
YW5uZWwiOiAiZGV2IiwKKyAgICAgICAgICAgICAgICAgImJyYW5jaF9yZXZpc2lvbiI6IDEzNTA5
Mn0sCisgICAgICAgICAgICAgICAgeyJiYXNlX3dlYmtpdF9yZXZpc2lvbiI6ICIxMTIzMjciLAor
ICAgICAgICAgICAgICAgICAidjhfdmVyIjogIjMuOS4yNC4xNyIsCisgICAgICAgICAgICAgICAg
ICJ3a192ZXIiOiAiNTM2LjUiLAorICAgICAgICAgICAgICAgICAiYmFzZV90cnVua19yZXZpc2lv
biI6IDEyOTM3NiwKKyAgICAgICAgICAgICAgICAgInByZXZfdmVyc2lvbiI6ICIxOS4wLjEwODQu
MzYiLAorICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxOS4wLjEwODQuNDEiLAorICAgICAg
ICAgICAgICAgICAiZGF0ZSI6ICIwNVwvMDNcLzEyIiwKKyAgICAgICAgICAgICAgICAgInByZXZf
ZGF0ZSI6ICIwNFwvMjVcLzEyIiwKKyAgICAgICAgICAgICAgICAgInRydWVfYnJhbmNoIjogIjEw
ODQiLAorICAgICAgICAgICAgICAgICAiY2hhbm5lbCI6ICJiZXRhIiwKKyAgICAgICAgICAgICAg
ICAgImJyYW5jaF9yZXZpc2lvbiI6IDEzNDg1NH0sCisgICAgICAgICAgICAgICAgeyJiYXNlX3dl
YmtpdF9yZXZpc2lvbiI6ICIqIiwKKyAgICAgICAgICAgICAgICAgInY4X3ZlciI6ICIzLjkuMjQu
MTciLAorICAgICAgICAgICAgICAgICAid2tfdmVyIjogIjUzNi41IiwKKyAgICAgICAgICAgICAg
ICAgImJhc2VfdHJ1bmtfcmV2aXNpb24iOiAxMjkzNzYsCisgICAgICAgICAgICAgICAgICJwcmV2
X3ZlcnNpb24iOiAiMTkuMC4xMDg0LjM2IiwKKyAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAi
MTkuMC4xMDg0LjQxIiwKKyAgICAgICAgICAgICAgICAgImRhdGUiOiAiMDVcLzAzXC8xMiIsCisg
ICAgICAgICAgICAgICAgICJwcmV2X2RhdGUiOiAiMDRcLzI1XC8xMiIsCisgICAgICAgICAgICAg
ICAgICJ0cnVlX2JyYW5jaCI6ICIxMDg0IiwKKyAgICAgICAgICAgICAgICAgImNoYW5uZWwiOiAi
cmVsZWFzZSIsCisgICAgICAgICAgICAgICAgICJicmFuY2hfcmV2aXNpb24iOiAxMzQ4NTR9XX1d
IiIiCisKKyAgICBleHBlY3RlZF9yZXZpc2lvbnMgPSBbCisgICAgICAgIHsiY29tbWl0IjogMTE2
MTg1LCAiY2hhbm5lbCI6ICJjYW5hcnkiLCAicGxhdGZvcm0iOiAiV2luZG93cyIsICJkYXRlIjog
IjA1LzA3LzEyIn0sCisgICAgICAgIHsiY29tbWl0IjogMTE1Njg3LCAiY2hhbm5lbCI6ICJkZXYi
LCAicGxhdGZvcm0iOiAiV2luZG93cyIsICJkYXRlIjogIjA1LzA0LzEyIn0sCisgICAgICAgIHsi
Y29tbWl0IjogMTE1Njg4LCAiY2hhbm5lbCI6ICJkZXYiLCAicGxhdGZvcm0iOiAiTGludXgiLCAi
ZGF0ZSI6ICIwNS8wNC8xMiJ9LAorICAgICAgICB7ImNvbW1pdCI6IDExMjMyNywgImNoYW5uZWwi
OiAiYmV0YSIsICJwbGF0Zm9ybSI6ICJMaW51eCIsICJkYXRlIjogIjA1LzAzLzEyIn0sCisgICAg
XQorCisgICAgZGVmIHRlc3RfZ2V0X3JldmlzaW9ucyhzZWxmKToKKyAgICAgICAgb21haGFwcm94
eSA9IE1vY2tPbWFoYVByb3h5KHNlbGYuZXhhbXBsZV9vbWFoYXByb3h5X2pzb24pCisgICAgICAg
IHJldmlzaW9ucyA9IG9tYWhhcHJveHkuZ2V0X3JldmlzaW9ucygpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKHJldmlzaW9ucyksIDQpCisgICAgICAgIGZvciByZXZpc2lvbiBpbiByZXZp
c2lvbnM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoImNvbW1pdCIgaW4gcmV2aXNpb24p
CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoImNoYW5uZWwiIGluIHJldmlzaW9uKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJwbGF0Zm9ybSIgaW4gcmV2aXNpb24pCisgICAgICAg
ICAgICBzZWxmLmFzc2VydFRydWUoImRhdGUiIGluIHJldmlzaW9uKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4ocmV2aXNpb24ua2V5cygpKSwgNCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXZpc2lvbnMsIHNlbGYuZXhwZWN0ZWRfcmV2aXNpb25zKQorCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL19faW5pdF9fLnB5CmluZGV4IGVmMDViNWFjNGJlZGRh
ZmVkYjViZmMyNDVmNjM5MzE0Zjg4MTQwNjcuLmUwZDg4NWY3MTNjMWRhODIxMmE2YzYzY2ZjMGI0
ZWNjYjI1MTAzNTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9fX2luaXRfXy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvX19pbml0X18ucHkKQEAgLTUsNiArNSw3IEBAIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5k
cy5hbmFseXplY2hhbmdlbG9nIGltcG9ydCBBbmFseXplQ2hhbmdlTG9nCiBmcm9tIHdlYmtpdHB5
LnRvb2wuY29tbWFuZHMuYXBwbHl3YXRjaGxpc3Rsb2NhbCBpbXBvcnQgQXBwbHlXYXRjaExpc3RM
b2NhbAogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLmJ1Z2ZvcnRlc3QgaW1wb3J0IEJ1Z0Zv
clRlc3QKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5idWdzZWFyY2ggaW1wb3J0IEJ1Z1Nl
YXJjaAorZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLmNocm9tZWNoYW5uZWxzIGltcG9ydCBD
aHJvbWVDaGFubmVscwogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLmRvd25sb2FkIGltcG9y
dCAqCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuZWFybHl3YXJuaW5nc3lzdGVtIGltcG9y
dCAqCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuZXhwZWN0YXRpb25zIGltcG9ydCBPcHRp
bWl6ZUV4cGVjdGF0aW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL2J1Z3NlYXJjaC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9idWdzZWFyY2gucHkKaW5kZXggNWNiYzFhMDQ0MmRjNzg1NzA0ODlkMGM2OTA0NTMzMjY5
YTExNzdkZC4uYTFkNzRjNTQ4MmY4YmYyMDM5MTM4MzZmNWM5N2E2ZWU4ZWE1MTk2YSAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2J1Z3NlYXJjaC5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvYnVnc2VhcmNoLnB5CkBA
IC0zMiw2ICszMiwxMyBAQCBmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21tYW5kdG9vbCBpbXBv
cnQgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQKIGNsYXNzIEJ1Z1NlYXJjaChBYnN0cmFjdERl
Y2xhcmF0aXZlQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJidWctc2VhcmNoIgogICAgIGhlbHBfdGV4
dCA9ICJMaXN0IGJ1Z3MgbWF0Y2hpbmcgYSBxdWVyeSIKKyAgICBhcmd1bWVudF9uYW1lcyA9ICJR
VUVSWSIKKyAgICBsb25nX2hlbHAgPSBcCisiIiJSdW5zIHRoZSBidWd6aWxsYSBxdWlja3NlYXJj
aCBRVUVSWSBvbiBidWdzLndlYmtpdC5vcmcsIGFuZCBsaXN0cyBhbGwgYnVncworcmV0dXJuZWQu
IFFVRVJZIGNhbiBiZSBhcyBzaW1wbGUgYXMgYSBidWcgbnVtYmVyIG9yIGEgY29tbWEgZGVsaW1p
dGVkIGxpc3Qgb2YKK2J1ZyBudW1iZXJzLgorU2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5v
cmcvcGFnZS5jZ2k/aWQ9cXVpY2tzZWFyY2guaHRtbCBmb3IgZnVsbAorZG9jdW1lbnRhdGlvbiBv
biB0aGUgcXVlcnkgZm9ybWF0LiIiIgogCiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywg
YXJncywgdG9vbCk6CiAgICAgICAgIHNlYXJjaF9zdHJpbmcgPSBhcmdzWzBdCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvY2hyb21lY2hhbm5lbHMucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvY2hyb21lY2hhbm5lbHMucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGEwOTNiNDhjNzBjMDVkMGYwMTMxYzU4OGRlNWIzMjY0ZmRiYTdmOQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9jaHJv
bWVjaGFubmVscy5weQpAQCAtMCwwICsxLDEwNCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20g
b3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5ldC5v
bWFoYXByb3h5IGltcG9ydCBPbWFoYVByb3h5Citmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21t
YW5kdG9vbCBpbXBvcnQgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQKKworaW1wb3J0IHJlCisK
KworY2xhc3MgQ2hyb21lQ2hhbm5lbHMoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgorICAg
IG5hbWUgPSAiY2hyb21lLWNoYW5uZWxzIgorICAgIGhlbHBfdGV4dCA9ICJMaXN0IHdoaWNoIGNo
cm9tZSBjaGFubmVscyBpbmNsdWRlIHRoZSBwYXRjaGVzIGluIGJ1Z3MgcmV0dXJuZWQgYnkgUVVF
UlkuIgorICAgIGFyZ3VtZW50X25hbWVzID0gIlFVRVJZIgorICAgIGxvbmdfaGVscCA9ICIiIlJl
dHJpZXZlcyB0aGUgY3VycmVudCBsaXN0IG9mIENocm9tZSByZWxlYXNlcyBmcm9tIG9tYWhhcHJv
eHkuYXBwc3BvdC5jb20sCithbmQgdGhlbiBydW5zIHRoZSBidWd6aWxsYSBxdWlja3NlYXJjaCBR
VUVSWSBvbiBidWdzLmJ1Z3ppbGxhLm9yZy4gRm9yIGVhY2ggYnVnCityZXR1cm5lZCBieSBxdWVy
eSwgYSBzaW5nbGUgc3ZuIGNvbW1pdCBpcyBkZWR1Y2VkLCBhbmQgYSBzaG9ydCBzdW1tYXJ5IGlz
CitwcmludGVkIG9mIGVhY2ggYnVnIGxpc3Rpbmcgd2hpY2ggQ2hyb21lIGNoYW5uZWxzIGNvbnRh
aW4gZWFjaCBidWdzIGFzc29jaWF0ZWQKK2NvbW1pdC4KKworVGhlIFFVRVJZIGNhbiBiZSBhcyBz
aW1wbGUgYXMgYSBidWcgbnVtYmVyLCBvciBhIGNvbW1hIGRlbGltaXRlZCBsaXN0IG9mIGJ1Zwor
bnVtYmVycy4gU2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvcGFnZS5jZ2k/aWQ9cXVp
Y2tzZWFyY2guaHRtbCBmb3IgZnVsbAorZG9jdW1lbnRhdGlvbiBvbiB0aGUgcXVlcnkgZm9ybWF0
LiIiIgorCisgICAgY2hyb21lX2NoYW5uZWxzID0gT21haGFQcm94eS5jaHJvbWVfY2hhbm5lbHMK
KyAgICBjb21taXRlZF9wYXR0ZXJuID0gIkNvbW1pdHRlZCByKFswLTldKyk6IDxodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC9cXDE+IgorICAgIHJvbGxvdXRfcGF0dGVybiA9ICJSb2xs
ZWQgb3V0IGluIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0L1swLTldKyIKKworICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQu
X19pbml0X18oc2VsZikKKyAgICAgICAgc2VsZi5fcmVfY29tbWl0dGVkID0gcmUuY29tcGlsZShz
ZWxmLmNvbW1pdGVkX3BhdHRlcm4pCisgICAgICAgIHNlbGYuX3JlX3JvbGxvdXQgPSByZS5jb21w
aWxlKHNlbGYucm9sbG91dF9wYXR0ZXJuKQorICAgICAgICBzZWxmLl9vbWFoYXByb3h5ID0gT21h
aGFQcm94eSgpCisKKyAgICBkZWYgX2NoYW5uZWxzX2Zvcl9idWcoc2VsZiwgcmV2aXNpb25zLCBi
dWcpOgorICAgICAgICBjb21tZW50cyA9IGJ1Zy5jb21tZW50cygpCisgICAgICAgIGNvbW1pdCA9
IE5vbmUKKworICAgICAgICAjIFNjYW4gdGhlIGNvbW1lbnRzLCBsb29raW5nIGZvciBhIHNhbmUg
bGlzdCBvZiBjb21taXRzIGFuZCByb2xsYmFja3MuCisgICAgICAgIGZvciBjb21tZW50IGluIGNv
bW1lbnRzOgorICAgICAgICAgICAgY29tbWl0X21hdGNoID0gc2VsZi5fcmVfY29tbWl0dGVkLnNl
YXJjaChjb21tZW50Wyd0ZXh0J10pCisgICAgICAgICAgICBpZiBjb21taXRfbWF0Y2g6CisgICAg
ICAgICAgICAgICAgaWYgY29tbWl0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiU1cyAl
c1xuLi4uIGhhcyB0b28gY29uZnVzaW5nIGEgY29tbWl0IGhpc3RvcnkgdG8gcGFyc2UsIHNraXBw
aW5nXG4iICUgKGJ1Zy5pZCgpLCBidWcudGl0bGUoKSkKKyAgICAgICAgICAgICAgICBjb21taXQg
PSBpbnQoY29tbWl0X21hdGNoLmdyb3VwKDEpKQorICAgICAgICAgICAgaWYgc2VsZi5fcmVfcm9s
bG91dC5zZWFyY2goY29tbWVudFsndGV4dCddKToKKyAgICAgICAgICAgICAgICBjb21taXQgPSBO
b25lCisgICAgICAgIGlmIG5vdCBjb21taXQ6CisgICAgICAgICAgICByZXR1cm4gIiU1cyAlc1xu
Li4uIGRvZXMgbm90IGFwcGVhciB0byBoYXZlIGFuIGFzc29jaWF0ZWQgY29tbWl0LlxuIiAlIChi
dWcuaWQoKSwgYnVnLnRpdGxlKCkpCisKKyAgICAgICAgIyBXZSBub3cga25vdyB0aGF0IHdlIGhh
dmUgYSBjb21taXQsIHNvIGdhdGhlciB1cCB0aGUgbGlzdCBvZiBwbGF0Zm9ybXMKKyAgICAgICAg
IyBieSBjaGFubmVsLCB0aGVuIHByaW50LgorICAgICAgICBieV9jaGFubmVsID0ge30KKyAgICAg
ICAgZm9yIHJldmlzaW9uIGluIHJldmlzaW9uczoKKyAgICAgICAgICAgIGNoYW5uZWwgPSByZXZp
c2lvblsnY2hhbm5lbCddCisgICAgICAgICAgICBpZiByZXZpc2lvblsnY29tbWl0J10gPCBjb21t
aXQ6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIG5vdCBjaGFubmVs
IGluIGJ5X2NoYW5uZWw6CisgICAgICAgICAgICAgICAgYnlfY2hhbm5lbFtyZXZpc2lvblsnY2hh
bm5lbCddXSA9ICIgJTZzOiIgJSBjaGFubmVsCisgICAgICAgICAgICBieV9jaGFubmVsW2NoYW5u
ZWxdICs9ICIgJXMsIiAlIHJldmlzaW9uWydwbGF0Zm9ybSddCisgICAgICAgIGlmIG5vdCBieV9j
aGFubmVsOgorICAgICAgICAgICAgcmV0dXJuICIlNXMgJXMgKHIlZClcbi4uLiBub3QgeWV0IHJl
bGVhc2VkIGluIGFueSBDaHJvbWUgY2hhbm5lbHMuXG4iICUgKGJ1Zy5pZCgpLCBidWcudGl0bGUo
KSwgY29tbWl0KQorICAgICAgICByZXR2YWwgPSAiJTVzICVzIChyJWQpXG4iICUgKGJ1Zy5pZCgp
LCBidWcudGl0bGUoKSwgY29tbWl0KQorICAgICAgICBmb3IgY2hhbm5lbCBpbiBzZWxmLmNocm9t
ZV9jaGFubmVsczoKKyAgICAgICAgICAgIGlmIGNoYW5uZWwgaW4gYnlfY2hhbm5lbDoKKyAgICAg
ICAgICAgICAgICByZXR2YWwgKz0gYnlfY2hhbm5lbFtjaGFubmVsXVs6LTFdCisgICAgICAgICAg
ICAgICAgcmV0dmFsICs9ICJcbiIKKyAgICAgICAgcmV0dXJuIHJldHZhbAorCisgICAgZGVmIGV4
ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAgICAgIHNlYXJjaF9zdHJpbmcg
PSBhcmdzWzBdCisgICAgICAgIHJldmlzaW9ucyA9IHNlbGYuX29tYWhhcHJveHkuZ2V0X3Jldmlz
aW9ucygpCisgICAgICAgIGJ1Z3MgPSB0b29sLmJ1Z3MucXVlcmllcy5mZXRjaF9idWdzX21hdGNo
aW5nX3F1aWNrc2VhcmNoKHNlYXJjaF9zdHJpbmcpCisgICAgICAgIGlmIG5vdCBidWdzOgorICAg
ICAgICAgICAgcHJpbnQgIk5vIGJ1Z3MgZm91bmQgbWF0Y2hpbmcgJyVzJyIgJSBzZWFyY2hfc3Ry
aW5nCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZm9yIGJ1ZyBpbiBidWdzOgorICAgICAg
ICAgICAgcHJpbnQgc2VsZi5fY2hhbm5lbHNfZm9yX2J1ZyhyZXZpc2lvbnMsIGJ1ZyksCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvY2hyb21lY2hhbm5l
bHNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvY2hy
b21lY2hhbm5lbHNfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM3YWViYmZlYzgxNzU1NjZhNjEx
MjY5Yjc5OTg3ZTY5MDllZjYwMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9jaHJvbWVjaGFubmVsc191bml0dGVzdC5weQpAQCAtMCwwICsx
LDk5IEBACisjIENvcHlyaWdodCAoYykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLmNo
cm9tZWNoYW5uZWxzIGltcG9ydCBDaHJvbWVDaGFubmVscworZnJvbSB3ZWJraXRweS50b29sLmNv
bW1hbmRzLmNvbW1hbmR0ZXN0IGltcG9ydCBDb21tYW5kc1Rlc3QKK2Zyb20gd2Via2l0cHkudG9v
bC5tb2NrdG9vbCBpbXBvcnQgTW9ja1Rvb2wKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5ldC5vbWFo
YXByb3h5IGltcG9ydCBPbWFoYVByb3h5CisKKworY2xhc3MgTW9ja09tYWhhUHJveHkoT21haGFQ
cm94eSk6CisgICAgcmV2aXNpb25zID0gW3siY29tbWl0IjogMjAsICJjaGFubmVsIjogImNhbmFy
eSIsICJwbGF0Zm9ybSI6ICJNYWMiLCAiZGF0ZSI6ICIwNy8wNC83NiJ9LAorICAgICAgICAgICAg
ICAgICB7ImNvbW1pdCI6IDIwLCAiY2hhbm5lbCI6ICJjYW5hcnkiLCAicGxhdGZvcm0iOiAiV2lu
ZG93cyIsICJkYXRlIjogIjA3LzA0Lzc2In0sCisgICAgICAgICAgICAgICAgIHsiY29tbWl0Ijog
MjUsICJjaGFubmVsIjogImRldiIsICJwbGF0Zm9ybSI6ICJNYWMiLCAiZGF0ZSI6ICIwNy8wMS83
NiJ9LAorICAgICAgICAgICAgICAgICB7ImNvbW1pdCI6IDMwLCAiY2hhbm5lbCI6ICJkZXYiLCAi
cGxhdGZvcm0iOiAiV2luZG93cyIsICJkYXRlIjogIjAzLzI5LzgyIn0sCisgICAgICAgICAgICAg
ICAgIHsiY29tbWl0IjogMzAsICJjaGFubmVsIjogImRldiIsICJwbGF0Zm9ybSI6ICJMaW51eCIs
ICJkYXRlIjogIjAzLzI5LzgyIn0sCisgICAgICAgICAgICAgICAgIHsiY29tbWl0IjogMTUsICJj
aGFubmVsIjogImJldGEiLCAicGxhdGZvcm0iOiAiV2luZG93cyIsICJkYXRlIjogIjA3LzA0LzY3
In0sCisgICAgICAgICAgICAgICAgIHsiY29tbWl0IjogMTUsICJjaGFubmVsIjogImJldGEiLCAi
cGxhdGZvcm0iOiAiTGludXgiLCAiZGF0ZSI6ICIwNy8wNC82NyJ9LAorICAgICAgICAgICAgICAg
ICB7ImNvbW1pdCI6IDEwLCAiY2hhbm5lbCI6ICJzdGFibGUiLCAicGxhdGZvcm0iOiAiV2luZG93
cyIsICJkYXRlIjogIjA3LzAxLzY3In0sCisgICAgICAgICAgICAgICAgIHsiY29tbWl0IjogMjAs
ICJjaGFubmVsIjogInN0YWJsZSIsICJwbGF0Zm9ybSI6ICJMaW51eCIsICJkYXRlIjogIjA5LzE2
LzEwIn0sCisgICAgICAgICAgICAgICAgIF0KKworICAgIGRlZiBnZXRfcmV2aXNpb25zKHNlbGYp
OgorICAgICAgICByZXR1cm4gc2VsZi5yZXZpc2lvbnMKKworCitjbGFzcyBUZXN0YWJsZUNocm9t
ZUNoYW5uZWxzKENocm9tZUNoYW5uZWxzKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAg
ICAgIENocm9tZUNoYW5uZWxzLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYuX29tYWhhcHJv
eHkgPSBNb2NrT21haGFQcm94eSgpCisKKworY2xhc3MgQ2hyb21lQ2hhbm5lbHNUZXN0KENvbW1h
bmRzVGVzdCk6CisKKyAgICBzaW5nbGVfYnVnX2V4cGVjdGF0aW9ucyA9IHsKKyAgICAgICAgNTAw
MDE6ICIiIjUwMDAxIEJ1ZyB3aXRoIGEgcGF0Y2ggbmVlZGluZyByZXZpZXcuIChyMzUpCisuLi4g
bm90IHlldCByZWxlYXNlZCBpbiBhbnkgQ2hyb21lIGNoYW5uZWxzLgorIiIiLAorICAgICAgICA1
MDAwMjogIiIiNTAwMDIgVGhlIHRoaXJkIGJ1ZworLi4uIGhhcyB0b28gY29uZnVzaW5nIGEgY29t
bWl0IGhpc3RvcnkgdG8gcGFyc2UsIHNraXBwaW5nCisiIiIsCisgICAgICAgIDUwMDAzOiAiIiI1
MDAwMyBUaGUgZm91cnRoIGJ1ZworLi4uIGRvZXMgbm90IGFwcGVhciB0byBoYXZlIGFuIGFzc29j
aWF0ZWQgY29tbWl0LgorIiIiLAorICAgICAgICA1MDAwNDogIiIiNTAwMDQgVGhlIGZpZnRoIGJ1
ZyAocjE1KQorIGNhbmFyeTogTWFjLCBXaW5kb3dzCisgICAgZGV2OiBNYWMsIFdpbmRvd3MsIExp
bnV4CisgICBiZXRhOiBXaW5kb3dzLCBMaW51eAorIHN0YWJsZTogTGludXgKKyIiIn0KKworICAg
IGRlZiB0ZXN0X3NpbmdsZV9idWcoc2VsZik6CisgICAgICAgIHRlc3RhYmxlX2Nocm9tZV9jaGFu
bmVscyA9IFRlc3RhYmxlQ2hyb21lQ2hhbm5lbHMoKQorICAgICAgICB0b29sID0gTW9ja1Rvb2wo
KQorICAgICAgICB0ZXN0YWJsZV9jaHJvbWVfY2hhbm5lbHMuYmluZF90b190b29sKHRvb2wpCisg
ICAgICAgIHJldmlzaW9ucyA9IHRlc3RhYmxlX2Nocm9tZV9jaGFubmVscy5fb21haGFwcm94eS5n
ZXRfcmV2aXNpb25zKCkKKyAgICAgICAgZm9yIGJ1Z19pZCwgZXhwZWN0YXRpb24gaW4gc2VsZi5z
aW5nbGVfYnVnX2V4cGVjdGF0aW9ucy5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh0ZXN0YWJsZV9jaHJvbWVfY2hhbm5lbHMuX2NoYW5uZWxzX2Zvcl9idWcocmV2aXNpb25z
LCB0ZXN0YWJsZV9jaHJvbWVfY2hhbm5lbHMuX3Rvb2wuYnVncy5mZXRjaF9idWcoYnVnX2lkKSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uKQorCisgICAgZGVmIHRl
c3Rfd2l0aF9xdWVyeShzZWxmKToKKyAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gXAorIiIiNTAw
MDEgQnVnIHdpdGggYSBwYXRjaCBuZWVkaW5nIHJldmlldy4gKHIzNSkKKy4uLiBub3QgeWV0IHJl
bGVhc2VkIGluIGFueSBDaHJvbWUgY2hhbm5lbHMuCis1MDAwMiBUaGUgdGhpcmQgYnVnCisuLi4g
aGFzIHRvbyBjb25mdXNpbmcgYSBjb21taXQgaGlzdG9yeSB0byBwYXJzZSwgc2tpcHBpbmcKKzUw
MDAzIFRoZSBmb3VydGggYnVnCisuLi4gZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYW4gYXNzb2Np
YXRlZCBjb21taXQuCis1MDAwNCBUaGUgZmlmdGggYnVnIChyMTUpCisgY2FuYXJ5OiBNYWMsIFdp
bmRvd3MKKyAgICBkZXY6IE1hYywgV2luZG93cywgTGludXgKKyAgIGJldGE6IFdpbmRvd3MsIExp
bnV4Cisgc3RhYmxlOiBMaW51eAorIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0
cHV0cyhUZXN0YWJsZUNocm9tZUNoYW5uZWxzKCksIFsiZm9vIl0sIGV4cGVjdGVkX3N0ZG91dD1l
eHBlY3RlZF9zdGRvdXQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>