<?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>201561</bug_id>
          
          <creation_ts>2019-09-06 14:31:49 -0700</creation_ts>
          <short_desc>results.webkit.org: Configurations should be branch specific</short_desc>
          <delta_ts>2019-09-16 15:41:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>kocsen_chung</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1568702</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-06 14:31:49 -0700</bug_when>
    <thetext>The fact that configurations are global, rather than being applied per branch, has lead to a number of idiosyncrasies, most notably, the user being provided with more configurations to filter by than are actually available. To fix this, we need to bucket configurations by branch.

Note that this will require a small database migration (only a handful of very small tables).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568718</commentid>
    <comment_count>1</comment_count>
      <attachid>378240</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-06 14:58:54 -0700</bug_when>
    <thetext>Created attachment 378240
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568720</commentid>
    <comment_count>2</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-06 15:00:01 -0700</bug_when>
    <thetext>I&apos;d like a sanity check on this before I push it to the dev instance, since even on the dev instance, it makes some database schema changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569298</commentid>
    <comment_count>3</comment_count>
      <attachid>378409</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-09 14:16:45 -0700</bug_when>
    <thetext>Created attachment 378409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569328</commentid>
    <comment_count>4</comment_count>
      <attachid>378414</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-09 15:59:03 -0700</bug_when>
    <thetext>Created attachment 378414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570261</commentid>
    <comment_count>5</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-12 08:39:23 -0700</bug_when>
    <thetext>I talked to Kocsen about this earlier in the week.

We determined that using branch as a partitioning key made our life more difficult, so instead, I switched it to just a primary key. We still need to create new tables, but the code for extracting the configurations into the Redis cache is much smaller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571119</commentid>
    <comment_count>6</comment_count>
      <attachid>378414</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2019-09-16 09:18:33 -0700</bug_when>
    <thetext>Comment on attachment 378414
Patch

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

&gt; Tools/resultsdbpy/resultsdbpy/controller/upload_controller.py:170
&gt; +                branch=branch[0] if branch else None,

Is there some mechanism to ensure branch is aways a list of string rather than just a string?

&gt; Tools/resultsdbpy/resultsdbpy/model/configuration_context.py:215
&gt; +    def search_for_recent_configuration(self, configuration=Configuration(), branch=None):

Just want to point out that the default argument `configuration` will only be initialized once at the function def time. All invocations to this function will ref to a single configuration object if default value is used.

&gt; Tools/resultsdbpy/resultsdbpy/model/configuration_context_unittest.py:79
&gt; +                self.database.register_configuration(configuration, None, old)

Personally, I would prefer to use `timestamp=old` over passing a None argument.

&gt; Tools/resultsdbpy/resultsdbpy/view/static/js/drawer.js:120
&gt; +let configurationsDefinedCallbacks = [];

Where is this variable updated?

&gt; Tools/resultsdbpy/resultsdbpy/view/static/js/drawer.js:134
&gt; +            configurations = [];
&gt; +            json.forEach(pair =&gt; {
&gt; +                const config = new Configuration(pair[0]);
&gt; +                configurations.push(config);
&gt; +            });

How about `configurations = json.map(pair =&gt; new Configuration(pair[0])`?

&gt; Tools/resultsdbpy/resultsdbpy/view/static/js/drawer.js:135
&gt; +            configurationsDefinedCallbacks.forEach(callback =&gt; {callback();});

I think `configurationsDefinedCallbacks.forEach(callback =&gt; callback());` would work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571121</commentid>
    <comment_count>7</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2019-09-16 09:18:50 -0700</bug_when>
    <thetext>r=me with comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571131</commentid>
    <comment_count>8</comment_count>
      <attachid>378414</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-16 09:40:40 -0700</bug_when>
    <thetext>Comment on attachment 378414
Patch

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

&gt;&gt; Tools/resultsdbpy/resultsdbpy/controller/upload_controller.py:170
&gt;&gt; +                branch=branch[0] if branch else None,
&gt; 
&gt; Is there some mechanism to ensure branch is aways a list of string rather than just a string?

Yes, @query_as_kwargs() turns the request&apos;s query into a kwarg dictionary, and always passes arguments as a list.

&gt;&gt; Tools/resultsdbpy/resultsdbpy/model/configuration_context.py:215
&gt;&gt; +    def search_for_recent_configuration(self, configuration=Configuration(), branch=None):
&gt; 
&gt; Just want to point out that the default argument `configuration` will only be initialized once at the function def time. All invocations to this function will ref to a single configuration object if default value is used.

That&apos;s totally fine, we convert the configuration to a string in self.redis.scan_iter(...) and don&apos;t make any edits to it.

Sometimes I wish Python had a &apos;const&apos; keyword....

&gt;&gt; Tools/resultsdbpy/resultsdbpy/view/static/js/drawer.js:120
&gt;&gt; +let configurationsDefinedCallbacks = [];
&gt; 
&gt; Where is this variable updated?

It&apos;s updated in ConfigurationSelectors(...), it was originally a local variable within that function, we&apos;re just making it local to the whole file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571170</commentid>
    <comment_count>9</comment_count>
      <attachid>378871</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-16 10:37:35 -0700</bug_when>
    <thetext>Created attachment 378871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571292</commentid>
    <comment_count>10</comment_count>
      <attachid>378871</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-16 15:40:56 -0700</bug_when>
    <thetext>Comment on attachment 378871
Patch

Clearing flags on attachment: 378871

Committed r249924: &lt;https://trac.webkit.org/changeset/249924&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571293</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-16 15:40:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571294</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-16 15:41:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/55417843&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378240</attachid>
            <date>2019-09-06 14:58:54 -0700</date>
            <delta_ts>2019-09-09 14:16:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201561-20190906145853.patch</filename>
            <type>text/plain</type>
            <size>25902</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0OTU5MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ0IEBACisyMDE5LTA5LTA2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IENvbmZpZ3VyYXRpb25zIHNob3VsZCBi
ZSBicmFuY2ggc3BlY2lmaWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMTU2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFBhcnRpdGlvbiBjb25maWd1cmF0aW9ucyBieSBicmFuY2ggaW4gYm90aCBSZWRp
cyBhbmQgQ2Fzc2FuZHJhLgorCisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29u
dHJvbGxlci91cGxvYWRfY29udHJvbGxlci5weToKKyAgICAgICAgKFVwbG9hZENvbnRyb2xsZXIu
c3VpdGVzKTogQWxsb3cgdGhlIHVzZXIgdG8gc3BlY2lmeSBicmFuY2hlcyB3aGlsZSBsaXN0aW5n
IHN1aXRlcy4KKyAgICAgICAgKiByZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZl
X2NvbnRleHQucHk6CisgICAgICAgIChBcmNoaXZlQ29udGV4dC5yZWdpc3Rlcik6IFJlZ2lzdGVy
IGVhY2ggY29uZmlndXJhdGlvbiB3aXRoIGEgYnJhbmNoLgorICAgICAgICAqIHJlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L21vZGVsL2NvbmZpZ3VyYXRpb25fY29udGV4dC5weToKKyAgICAgICAgKENv
bmZpZ3VyYXRpb25Db250ZXh0LkJ5UGxhdGZvcm0pOiBJbmRleCBieSBicmFuY2guCisgICAgICAg
IChDb25maWd1cmF0aW9uQ29udGV4dC5CeVBsYXRmb3JtQW5kVmVyc2lvbik6IERpdHRvLgorICAg
ICAgICAoQ29uZmlndXJhdGlvbkNvbnRleHQuQnlBcmNoaXRlY3R1cmUpOiBEaXR0by4KKyAgICAg
ICAgKENvbmZpZ3VyYXRpb25Db250ZXh0LkJ5TW9kZWwpOiBEaXR0by4KKyAgICAgICAgKENvbmZp
Z3VyYXRpb25Db250ZXh0Ll9faW5pdF9fKTogUmVxdWlyZSBDb21taXRDb250ZXh0LCBpdGVyYXRl
IHRocm91Z2ggZWFjaAorICAgICAgICBicmFuY2ggdG8gcG9wdWxhdGUgUmVkaXMgY2FjaGUuCisg
ICAgICAgIChDb25maWd1cmF0aW9uQ29udGV4dC5fY29udmVydF90b19yZWRpc19rZXkpOiBBY2Nl
cHQgYnJhbmNoIGluIFJlZGlzIGtleS4KKyAgICAgICAgKENvbmZpZ3VyYXRpb25Db250ZXh0Ll9y
ZWdpc3Rlcl9pbl9yZWRpcyk6IFJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24gd2l0aCBicmFuY2guCisg
ICAgICAgIChDb25maWd1cmF0aW9uQ29udGV4dC5yZWdpc3Rlcl9jb25maWd1cmF0aW9uKTogRGl0
dG8uCisgICAgICAgIChDb25maWd1cmF0aW9uQ29udGV4dC5zZWFyY2hfZm9yX2NvbmZpZ3VyYXRp
b24pOiBTZWFyY2ggZm9yIGNvbmZpZ3VyYXRpb24gd2l0aCBicmFuY2guCisgICAgICAgIChDb25m
aWd1cmF0aW9uQ29udGV4dC5zZWFyY2hfZm9yX3JlY2VudF9jb25maWd1cmF0aW9uKTogRGl0dG8u
CisgICAgICAgIChDb25maWd1cmF0aW9uQ29udGV4dC5zZWxlY3RfZnJvbV90YWJsZV93aXRoX2Nv
bmZpZ3VyYXRpb25zKTogRGl0dG8uCisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
bW9kZWwvY29uZmlndXJhdGlvbl9jb250ZXh0X3VuaXR0ZXN0LnB5OgorICAgICAgICAoQ29uZmln
dXJhdGlvbkNvbnRleHRUZXN0LmluaXRfZGF0YWJhc2UpOiBDb25zdHJ1Y3QgQ29uZmlndXJhdGlv
bkNvbnRleHQgd2l0aAorICAgICAgICBDb21taXRDb250ZXh0IG9iamVjdC4KKyAgICAgICAgKENv
bmZpZ3VyYXRpb25Db250ZXh0VGVzdC5yZWdpc3Rlcl9jb25maWd1cmF0aW9ucyk6IFJlZ2lzdGVy
IHdpdGggYnJhbmNoLgorICAgICAgICAoQ29uZmlndXJhdGlvbkNvbnRleHRUZXN0LnRlc3RfcmVw
b3B1bGF0ZV9yZWNlbnQpOiBDb25zdHJ1Y3QgQ29uZmlndXJhdGlvbkNvbnRleHQgd2l0aAorICAg
ICAgICBDb21taXRDb250ZXh0IG9iamVjdC4KKyAgICAgICAgKiByZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9tb2RlbC9tb2RlbC5weToKKyAgICAgICAgKE1vZGVsLl9faW5pdF9fKTogQ29uc3RydWN0
IENvbmZpZ3VyYXRpb25Db250ZXh0IHdpdGggQ29tbWl0Q29udGV4dCBvYmplY3QuCisgICAgICAg
ICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvdXBsb2FkX2NvbnRleHQucHk6CisgICAg
ICAgIChVcGxvYWRDb250ZXh0LlN1aXRlc0J5Q29uZmlndXJhdGlvbik6IEluZGV4IGJ5IGJyYW5j
aC4KKyAgICAgICAgKFVwbG9hZENvbnRleHQudXBsb2FkX3Rlc3RfcmVzdWx0cyk6IFJlZ2lzdGVy
IGVhY2ggY29uZmlndXJhdGlvbiB3aXRoIGEgYnJhbmNoLgorICAgICAgICAoVXBsb2FkQ29udGV4
dC5maW5kX3N1aXRlcyk6IFBhc3MgYnJhbmNoIHRvIHNlYXJjaCBmb3IgY29uZmlndXJhdGlvbnMu
CisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMvZHJhd2Vy
LmpzOiBDaGVjayBmb3IgbmV3IGNvbmZpZ3VyYXRpb25zIHdoZW4gdGhlIGJyYW5jaCBpcyBjaGFu
Z2VkLgorICAgICAgICAqIHJlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL3N1
aXRlX3Jlc3VsdHMuaHRtbDogQWRkIGJyYW5jaCB0byBzdWl0ZXMgcXVlcnkuCisKIDIwMTktMDkt
MDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBEZXByZWNhdGUgYWxsIFdLQ29va2llTWFuYWdlclJlZiBmdW5jdGlvbnMKSW5kZXg6IFRvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdXBsb2FkX2NvbnRyb2xsZXIucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci91
cGxvYWRfY29udHJvbGxlci5weQkocmV2aXNpb24gMjQ5NTczKQorKysgVG9vbHMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlci5weQkod29ya2luZyBj
b3B5KQpAQCAtMTU5LDEzICsxNTksMTYgQEAgY2xhc3MgVXBsb2FkQ29udHJvbGxlcihIYXNDb21t
aXRDb250ZXh0KQogCiAgICAgQHF1ZXJ5X2FzX2t3YXJncygpCiAgICAgQGNvbmZpZ3VyYXRpb25f
Zm9yX3F1ZXJ5KCkKLSAgICBkZWYgc3VpdGVzKHNlbGYsIGNvbmZpZ3VyYXRpb25zPU5vbmUsIHJl
Y2VudD1Ob25lLCBzdWl0ZT1Ob25lLCAqKmt3YXJncyk6CisgICAgZGVmIHN1aXRlcyhzZWxmLCBj
b25maWd1cmF0aW9ucz1Ob25lLCByZWNlbnQ9Tm9uZSwgc3VpdGU9Tm9uZSwgYnJhbmNoPU5vbmUs
ICoqa3dhcmdzKToKICAgICAgICAgQXNzZXJ0UmVxdWVzdC5pc190eXBlKFsnR0VUJ10pCiAgICAg
ICAgIEFzc2VydFJlcXVlc3QucXVlcnlfa3dhcmdzX2VtcHR5KCoqa3dhcmdzKQogCiAgICAgICAg
IHdpdGggc2VsZi51cGxvYWRfY29udGV4dDoKLSAgICAgICAgICAgIHN1aXRlc19ieV9jb25maWcg
PSBzZWxmLnVwbG9hZF9jb250ZXh0LmZpbmRfc3VpdGVzKGNvbmZpZ3VyYXRpb25zPWNvbmZpZ3Vy
YXRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVjZW50PWJvb2xlYW5fcXVlcnkoKnJlY2VudClbMF0gaWYgcmVjZW50
IGVsc2UgVHJ1ZSkKKyAgICAgICAgICAgIHN1aXRlc19ieV9jb25maWcgPSBzZWxmLnVwbG9hZF9j
b250ZXh0LmZpbmRfc3VpdGVzKAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPWNvbmZp
Z3VyYXRpb25zLAorICAgICAgICAgICAgICAgIHJlY2VudD1ib29sZWFuX3F1ZXJ5KCpyZWNlbnQp
WzBdIGlmIHJlY2VudCBlbHNlIFRydWUsCisgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaFsw
XSBpZiBicmFuY2ggZWxzZSBOb25lLAorICAgICAgICAgICAgKQogICAgICAgICAgICAgcmVzdWx0
ID0gW10KICAgICAgICAgICAgIGZvciBjb25maWcsIGNhbmRpZGF0ZV9zdWl0ZXMgaW4gc3VpdGVz
X2J5X2NvbmZpZy5pdGVtcygpOgogICAgICAgICAgICAgICAgIHN1aXRlc19mb3JfY29uZmlnID0g
W3MgZm9yIHMgaW4gY2FuZGlkYXRlX3N1aXRlcyBpZiBub3Qgc3VpdGUgb3IgcyBpbiBzdWl0ZV0K
SW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9h
cmNoaXZlX2NvbnRleHQucHkJKHJldmlzaW9uIDI0OTU3MykKKysrIFRvb2xzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4dC5weQkod29ya2luZyBjb3B5KQpAQCAt
OTgsMTEgKzk4LDExIEBAIGNsYXNzIEFyY2hpdmVDb250ZXh0KG9iamVjdCk6CiAgICAgICAgICAg
ICB1dWlkID0gc2VsZi5jb21taXRfY29udGV4dC51dWlkX2Zvcl9jb21taXRzKGNvbW1pdHMpCiAg
ICAgICAgICAgICB0dGwgPSBpbnQoKHV1aWQgLy8gQ29tbWl0LlRJTUVTVEFNUF9UT19VVUlEX01V
TFRJUExJRVIpICsgc2VsZi50dGxfc2Vjb25kcyAtIHRpbWUudGltZSgpKSBpZiBzZWxmLnR0bF9z
ZWNvbmRzIGVsc2UgTm9uZQogCi0gICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4
dC5yZWdpc3Rlcl9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIHRpbWVzdGFtcD10aW1lc3Rh
bXApCi0KICAgICAgICAgICAgIGZvciBicmFuY2ggaW4gc2VsZi5jb21taXRfY29udGV4dC5icmFu
Y2hfa2V5c19mb3JfY29tbWl0cyhjb21taXRzKToKKyAgICAgICAgICAgICAgICBzZWxmLmNvbmZp
Z3VyYXRpb25fY29udGV4dC5yZWdpc3Rlcl9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGJy
YW5jaD1icmFuY2gsIHRpbWVzdGFtcD10aW1lc3RhbXApCisKICAgICAgICAgICAgICAgICBzZWxm
LmNvbmZpZ3VyYXRpb25fY29udGV4dC5pbnNlcnRfcm93X3dpdGhfY29uZmlndXJhdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgVXBsb2FkQ29udGV4dC5TdWl0ZXNCeUNvbmZpZ3VyYXRpb24uX190
YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb24sIHN1aXRlPXN1aXRlLCB0dGw9dHRsLAorICAgICAg
ICAgICAgICAgICAgICBVcGxvYWRDb250ZXh0LlN1aXRlc0J5Q29uZmlndXJhdGlvbi5fX3RhYmxl
X25hbWVfXywgY29uZmlndXJhdGlvbiwgc3VpdGU9c3VpdGUsIGJyYW5jaD1icmFuY2gsIHR0bD10
dGwsCiAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlv
bl9jb250ZXh0Lmluc2VydF9yb3dfd2l0aF9jb25maWd1cmF0aW9uKAogICAgICAgICAgICAgICAg
ICAgICBzZWxmLkFyY2hpdmVzQnlDb21taXQuX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb249
Y29uZmlndXJhdGlvbiwgc3VpdGU9c3VpdGUsCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9tb2RlbC9jb25maWd1cmF0aW9uX2NvbnRleHQucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29uZmlndXJhdGlvbl9jb250ZXh0LnB5
CShyZXZpc2lvbiAyNDk1NzMpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2Rl
bC9jb25maWd1cmF0aW9uX2NvbnRleHQucHkJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDgg
QEAgY2xhc3MgQ29uZmlndXJhdGlvbkNvbnRleHQob2JqZWN0KToKICAgICAgICAgICAgICkKIAog
ICAgIGNsYXNzIEJ5UGxhdGZvcm0oTW9kZWwsIENvbmZpZ3VyYXRpb25Nb2RlbCk6Ci0gICAgICAg
IF9fdGFibGVfbmFtZV9fID0gJ2NvbmZpZ3VyYXRpb25zX2J5X3BsYXRmb3JtJworICAgICAgICBf
X3RhYmxlX25hbWVfXyA9ICdjb25maWd1cmF0aW9uc19ieV9icmFuY2hfYW5kX3BsYXRmb3JtJwor
ICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJl
ZD1UcnVlKQogICAgICAgICBwbGF0Zm9ybSA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRy
dWUsIHJlcXVpcmVkPVRydWUpCiAgICAgICAgIHN0eWxlID0gY29sdW1ucy5UZXh0KHByaW1hcnlf
a2V5PVRydWUsIHJlcXVpcmVkPUZhbHNlKQogICAgICAgICBmbGF2b3IgPSBjb2x1bW5zLlRleHQo
cHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCkBAIC03Niw3ICs3Nyw4IEBAIGNsYXNz
IENvbmZpZ3VyYXRpb25Db250ZXh0KG9iamVjdCk6CiAgICAgICAgIGxhc3RfcnVuID0gY29sdW1u
cy5EYXRlVGltZShyZXF1aXJlZD1UcnVlKQogCiAgICAgY2xhc3MgQnlQbGF0Zm9ybUFuZFZlcnNp
b24oTW9kZWwsIENvbmZpZ3VyYXRpb25Nb2RlbCk6Ci0gICAgICAgIF9fdGFibGVfbmFtZV9fID0g
J2NvbmZpZ3VyYXRpb25zX2J5X3BsYXRmb3JtX2FuZF92ZXJzaW9uJworICAgICAgICBfX3RhYmxl
X25hbWVfXyA9ICdjb25maWd1cmF0aW9uc19ieV9icmFuY2hfcGxhdGZvcm1fYW5kX3ZlcnNpb24n
CisgICAgICAgIGJyYW5jaCA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVp
cmVkPVRydWUpCiAgICAgICAgIHBsYXRmb3JtID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9
VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKICAgICAgICAgdmVyc2lvbiA9IGNvbHVtbnMuSW50ZWdlcihw
YXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCiAgICAgICAgIHN0eWxlID0gY29sdW1u
cy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPUZhbHNlKQpAQCAtODgsNyArOTAsOCBA
QCBjbGFzcyBDb25maWd1cmF0aW9uQ29udGV4dChvYmplY3QpOgogICAgICAgICBsYXN0X3J1biA9
IGNvbHVtbnMuRGF0ZVRpbWUocmVxdWlyZWQ9VHJ1ZSkKIAogICAgIGNsYXNzIEJ5QXJjaGl0ZWN0
dXJlKE1vZGVsLCBDb25maWd1cmF0aW9uTW9kZWwpOgotICAgICAgICBfX3RhYmxlX25hbWVfXyA9
ICdjb25maWd1cmF0aW9uc19ieV9hcmNoaXRlY3R1cmUnCisgICAgICAgIF9fdGFibGVfbmFtZV9f
ID0gJ2NvbmZpZ3VyYXRpb25zX2J5X2JyYW5jaF9hbmRfYXJjaGl0ZWN0dXJlJworICAgICAgICBi
cmFuY2ggPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQog
ICAgICAgICBhcmNoaXRlY3R1cmUgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCBy
ZXF1aXJlZD1UcnVlKQogICAgICAgICBzdHlsZSA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1U
cnVlLCByZXF1aXJlZD1GYWxzZSkKICAgICAgICAgcGxhdGZvcm0gPSBjb2x1bW5zLlRleHQocHJp
bWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKQEAgLTEwMCw3ICsxMDMsOCBAQCBjbGFzcyBD
b25maWd1cmF0aW9uQ29udGV4dChvYmplY3QpOgogICAgICAgICBsYXN0X3J1biA9IGNvbHVtbnMu
RGF0ZVRpbWUocmVxdWlyZWQ9VHJ1ZSkKIAogICAgIGNsYXNzIEJ5TW9kZWwoTW9kZWwsIENvbmZp
Z3VyYXRpb25Nb2RlbCk6Ci0gICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2NvbmZpZ3VyYXRpb25z
X2J5X21vZGVsJworICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdjb25maWd1cmF0aW9uc19ieV9i
cmFuY2hfYW5kX21vZGVsJworICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocGFydGl0aW9u
X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQogICAgICAgICBtb2RlbCA9IGNvbHVtbnMuVGV4dChw
YXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCiAgICAgICAgIHZlcnNpb24gPSBjb2x1
bW5zLkludGVnZXIocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKICAgICAgICAgc3R5
bGUgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCkBAIC0x
MTEsMTMgKzExNSwxMiBAQCBjbGFzcyBDb25maWd1cmF0aW9uQ29udGV4dChvYmplY3QpOgogICAg
ICAgICB2ZXJzaW9uX25hbWUgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWly
ZWQ9RmFsc2UpCiAgICAgICAgIGxhc3RfcnVuID0gY29sdW1ucy5EYXRlVGltZShyZXF1aXJlZD1U
cnVlKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlZGlzLCBjYXNzYW5kcmEsIGNhY2hlX3Rp
bWVvdXQ9NjAgKiA2MCAqIDI0ICogMTQpOgotICAgICAgICBhc3NlcnQgcmVkaXMKLSAgICAgICAg
YXNzZXJ0IGNhc3NhbmRyYQotCi0gICAgICAgIHNlbGYucmVkaXMgPSByZWRpcwotICAgICAgICBz
ZWxmLmNhc3NhbmRyYSA9IGNhc3NhbmRyYQotICAgICAgICBzZWxmLnJlcG9zaXRvcmllcyA9IHt9
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbW1pdF9jb250ZXh0LCBjYWNoZV90aW1lb3V0PTYw
ICogNjAgKiAyNCAqIDE0KToKKyAgICAgICAgYXNzZXJ0IGNvbW1pdF9jb250ZXh0CisKKyAgICAg
ICAgc2VsZi5jb21taXRfY29udGV4dCA9IGNvbW1pdF9jb250ZXh0CisgICAgICAgIHNlbGYucmVk
aXMgPSBjb21taXRfY29udGV4dC5yZWRpcworICAgICAgICBzZWxmLmNhc3NhbmRyYSA9IGNvbW1p
dF9jb250ZXh0LmNhc3NhbmRyYQogICAgICAgICBzZWxmLmNhY2hlX3RpbWVvdXQgPSBjYWNoZV90
aW1lb3V0CiAKICAgICAgICAgd2l0aCBzZWxmOgpAQCAtMTI2LDkgKzEyOSwxNSBAQCBjbGFzcyBD
b25maWd1cmF0aW9uQ29udGV4dChvYmplY3QpOgogICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEu
Y3JlYXRlX3RhYmxlKHNlbGYuQnlBcmNoaXRlY3R1cmUpCiAgICAgICAgICAgICBzZWxmLmNhc3Nh
bmRyYS5jcmVhdGVfdGFibGUoc2VsZi5CeU1vZGVsKQogCi0gICAgICAgICAgICBmb3IgY29uZmln
dXJhdGlvbiBpbiBzZWxmLmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90YWJsZShzZWxmLkJ5UGxhdGZv
cm0uX190YWJsZV9uYW1lX18pOgotICAgICAgICAgICAgICAgIGlmIGNvbmZpZ3VyYXRpb24ubGFz
dF9ydW4gPj0gZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChpbnQodGltZS50aW1lKCkgLSBjYWNo
ZV90aW1lb3V0KSk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlZ2lzdGVyX2luX3JlZGlz
KGNvbmZpZ3VyYXRpb24udG9fY29uZmlndXJhdGlvbigpLCBjb25maWd1cmF0aW9uLmxhc3RfcnVu
KQorICAgICAgICAgICAgYnJhbmNoZXMgPSBzZXQoKQorICAgICAgICAgICAgZm9yIHJlcG9faWQg
aW4gY29tbWl0X2NvbnRleHQucmVwb3NpdG9yaWVzLmtleXMoKToKKyAgICAgICAgICAgICAgICBi
cmFuY2hlcyA9IGJyYW5jaGVzLnVuaW9uKGNvbW1pdF9jb250ZXh0LmJyYW5jaGVzKHJlcG9faWQp
KQorICAgICAgICAgICAgYnJhbmNoZXMuYWRkKHNlbGYuY29tbWl0X2NvbnRleHQuREVGQVVMVF9C
UkFOQ0hfS0VZKQorCisgICAgICAgICAgICBmb3IgYnJhbmNoIGluIGJyYW5jaGVzOgorICAgICAg
ICAgICAgICAgIGZvciBjb25maWd1cmF0aW9uIGluIHNlbGYuY2Fzc2FuZHJhLnNlbGVjdF9mcm9t
X3RhYmxlKHNlbGYuQnlQbGF0Zm9ybS5fX3RhYmxlX25hbWVfXyk6CisgICAgICAgICAgICAgICAg
ICAgIGlmIGNvbmZpZ3VyYXRpb24ubGFzdF9ydW4gPj0gZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFt
cChpbnQodGltZS50aW1lKCkgLSBjYWNoZV90aW1lb3V0KSk6CisgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9yZWdpc3Rlcl9pbl9yZWRpcyhjb25maWd1cmF0aW9uLnRvX2NvbmZpZ3VyYXRp
b24oKSwgYnJhbmNoLCBjb25maWd1cmF0aW9uLmxhc3RfcnVuKQogCiAgICAgZGVmIF9fZW50ZXJf
XyhzZWxmKToKICAgICAgICAgc2VsZi5jYXNzYW5kcmEuX19lbnRlcl9fKCkKQEAgLTEzNyw4ICsx
NDYsOSBAQCBjbGFzcyBDb25maWd1cmF0aW9uQ29udGV4dChvYmplY3QpOgogICAgICAgICBzZWxm
LmNhc3NhbmRyYS5fX2V4aXRfXygqYXJncywgKiprd2FyZ3MpCiAKICAgICBAY2xhc3NtZXRob2QK
LSAgICBkZWYgX2NvbnZlcnRfdG9fcmVkaXNfa2V5KGNscywgY29uZmlndXJhdGlvbik6Ci0gICAg
ICAgIHJldHVybiAnY29uZmlndXJhdGlvbnM6e306e306e306e306e306e306e306e30nLmZvcm1h
dCgKKyAgICBkZWYgX2NvbnZlcnRfdG9fcmVkaXNfa2V5KGNscywgY29uZmlndXJhdGlvbiwgYnJh
bmNoKToKKyAgICAgICAgcmV0dXJuICdjb25maWd1cmF0aW9uc19ieV9icmFuY2g6e306e306e306
e306e306e306e306e306e30nLmZvcm1hdCgKKyAgICAgICAgICAgIGJyYW5jaCwKICAgICAgICAg
ICAgIGNvbmZpZ3VyYXRpb24ucGxhdGZvcm0gb3IgJyonLCAnKicgaWYgY29uZmlndXJhdGlvbi5p
c19zaW11bGF0b3IgaXMgTm9uZSBlbHNlICgxIGlmIGNvbmZpZ3VyYXRpb24uaXNfc2ltdWxhdG9y
IGVsc2UgMCksCiAgICAgICAgICAgICAnKicgaWYgY29uZmlndXJhdGlvbi52ZXJzaW9uIGlzIE5v
bmUgZWxzZSBDb25maWd1cmF0aW9uLmludGVnZXJfdG9fdmVyc2lvbihjb25maWd1cmF0aW9uLnZl
cnNpb24pLAogICAgICAgICAgICAgY29uZmlndXJhdGlvbi52ZXJzaW9uX25hbWUgb3IgJyonLApA
QCAtMTQ2LDcgKzE1Niw3IEBAIGNsYXNzIENvbmZpZ3VyYXRpb25Db250ZXh0KG9iamVjdCk6CiAg
ICAgICAgICAgICBjb25maWd1cmF0aW9uLnN0eWxlIG9yICcqJywgY29uZmlndXJhdGlvbi5mbGF2
b3Igb3IgJyonLAogICAgICAgICApCiAKLSAgICBkZWYgX3JlZ2lzdGVyX2luX3JlZGlzKHNlbGYs
IGNvbmZpZ3VyYXRpb24sIHRpbWVzdGFtcCk6CisgICAgZGVmIF9yZWdpc3Rlcl9pbl9yZWRpcyhz
ZWxmLCBjb25maWd1cmF0aW9uLCBicmFuY2gsIHRpbWVzdGFtcCk6CiAgICAgICAgIGlmIGlzaW5z
dGFuY2UodGltZXN0YW1wLCBkYXRldGltZSk6CiAgICAgICAgICAgICB0aW1lc3RhbXAgPSBjYWxl
bmRhci50aW1lZ20odGltZXN0YW1wLnRpbWV0dXBsZSgpKQogICAgICAgICBleHBpcmF0aW9uID0g
aW50KHNlbGYuY2FjaGVfdGltZW91dCAtICh0aW1lLnRpbWUoKSAtIGludCh0aW1lc3RhbXApKSkK
QEAgLTE1NCwxMSArMTY0LDExIEBAIGNsYXNzIENvbmZpZ3VyYXRpb25Db250ZXh0KG9iamVjdCk6
CiAgICAgICAgICAgICBzZGsgPSBjb25maWd1cmF0aW9uLnNkawogICAgICAgICAgICAgdHJ5Ogog
ICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uc2RrID0gTm9uZQotICAgICAgICAgICAgICAg
IHNlbGYucmVkaXMuc2V0KHNlbGYuX2NvbnZlcnRfdG9fcmVkaXNfa2V5KGNvbmZpZ3VyYXRpb24p
LCBjb25maWd1cmF0aW9uLnRvX2pzb24oKSwgZXg9ZXhwaXJhdGlvbikKKyAgICAgICAgICAgICAg
ICBzZWxmLnJlZGlzLnNldChzZWxmLl9jb252ZXJ0X3RvX3JlZGlzX2tleShjb25maWd1cmF0aW9u
LCBicmFuY2gpLCBjb25maWd1cmF0aW9uLnRvX2pzb24oKSwgZXg9ZXhwaXJhdGlvbikKICAgICAg
ICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5zZGsgPSBzZGsK
IAotICAgIGRlZiByZWdpc3Rlcl9jb25maWd1cmF0aW9uKHNlbGYsIGNvbmZpZ3VyYXRpb24sIHRp
bWVzdGFtcD10aW1lLnRpbWUoKSk6CisgICAgZGVmIHJlZ2lzdGVyX2NvbmZpZ3VyYXRpb24oc2Vs
ZiwgY29uZmlndXJhdGlvbiwgYnJhbmNoPU5vbmUsIHRpbWVzdGFtcD10aW1lLnRpbWUoKSk6CiAg
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbmZpZ3VyYXRpb24sIENvbmZpZ3VyYXRpb24pOgog
ICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7Q29uZmlndXJhdGlv
bn0sIGdvdCB7dHlwZShjb25maWd1cmF0aW9uKX0nKQogICAgICAgICBpZiBub3QgY29uZmlndXJh
dGlvbi5pc19jb21wbGV0ZSgpOgpAQCAtMTY2LDEzICsxNzYsMTUgQEAgY2xhc3MgQ29uZmlndXJh
dGlvbkNvbnRleHQob2JqZWN0KToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodGltZXN0YW1w
LCBkYXRldGltZSk6CiAgICAgICAgICAgICB0aW1lc3RhbXAgPSBkYXRldGltZS51dGNmcm9tdGlt
ZXN0YW1wKGludCh0aW1lc3RhbXApKQogCisgICAgICAgIGJyYW5jaCA9IGJyYW5jaCBvciBzZWxm
LmNvbW1pdF9jb250ZXh0LkRFRkFVTFRfQlJBTkNIX0tFWQorCiAgICAgICAgIHdpdGggc2VsZjoK
ICAgICAgICAgICAgIHRhYmxlc190b19pbnNlcnRfdG8gPSBbc2VsZi5CeVBsYXRmb3JtLl9fdGFi
bGVfbmFtZV9fLCBzZWxmLkJ5UGxhdGZvcm1BbmRWZXJzaW9uLl9fdGFibGVfbmFtZV9fLCBzZWxm
LkJ5QXJjaGl0ZWN0dXJlLl9fdGFibGVfbmFtZV9fXQogICAgICAgICAgICAgaWYgY29uZmlndXJh
dGlvbi5tb2RlbCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0YWJsZXNfdG9faW5zZXJ0
X3RvLmFwcGVuZChzZWxmLkJ5TW9kZWwuX190YWJsZV9uYW1lX18pCiAgICAgICAgICAgICBmb3Ig
dGFibGUgaW4gdGFibGVzX3RvX2luc2VydF90bzoKICAgICAgICAgICAgICAgICBzZWxmLmNhc3Nh
bmRyYS5pbnNlcnRfcm93KAotICAgICAgICAgICAgICAgICAgICB0YWJsZSwKKyAgICAgICAgICAg
ICAgICAgICAgdGFibGUsIGJyYW5jaD1icmFuY2gsCiAgICAgICAgICAgICAgICAgICAgIHBsYXRm
b3JtPWNvbmZpZ3VyYXRpb24ucGxhdGZvcm0sIGlzX3NpbXVsYXRvcj1jb25maWd1cmF0aW9uLmlz
X3NpbXVsYXRvciwKICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj1jb25maWd1cmF0aW9uLnZl
cnNpb24sIHZlcnNpb25fbmFtZT1jb25maWd1cmF0aW9uLnZlcnNpb25fbmFtZSBvciAnJywKICAg
ICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlPWNvbmZpZ3VyYXRpb24uYXJjaGl0ZWN0dXJl
LCBtb2RlbD1jb25maWd1cmF0aW9uLm1vZGVsIG9yICcnLApAQCAtMTgwLDEzICsxOTIsMTMgQEAg
Y2xhc3MgQ29uZmlndXJhdGlvbkNvbnRleHQob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAg
bGFzdF9ydW49dGltZXN0YW1wLAogICAgICAgICAgICAgICAgICkKIAotICAgICAgICBzZWxmLl9y
ZWdpc3Rlcl9pbl9yZWRpcyhjb25maWd1cmF0aW9uLCB0aW1lc3RhbXApCisgICAgICAgIHNlbGYu
X3JlZ2lzdGVyX2luX3JlZGlzKGNvbmZpZ3VyYXRpb24sIGJyYW5jaCwgdGltZXN0YW1wKQogCi0g
ICAgZGVmIHNlYXJjaF9mb3JfY29uZmlndXJhdGlvbihzZWxmLCBjb25maWd1cmF0aW9uKToKKyAg
ICBkZWYgc2VhcmNoX2Zvcl9jb25maWd1cmF0aW9uKHNlbGYsIGNvbmZpZ3VyYXRpb24sIGJyYW5j
aD1Ob25lKToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29uZmlndXJhdGlvbiwgQ29uZmln
dXJhdGlvbik6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtD
b25maWd1cmF0aW9ufSwgZ290IHt0eXBlKGNvbmZpZ3VyYXRpb24pfScpCiAKLSAgICAgICAga3dh
cmdzID0ge30KKyAgICAgICAga3dhcmdzID0gZGljdChicmFuY2g9YnJhbmNoIG9yIHNlbGYuY29t
bWl0X2NvbnRleHQuREVGQVVMVF9CUkFOQ0hfS0VZKQogICAgICAgICBmb3IgbWVtYmVyIGluIENv
bmZpZ3VyYXRpb24uUkVRVUlSRURfTUVNQkVSUyArIENvbmZpZ3VyYXRpb24uT1BUSU9OQUxfTUVN
QkVSUzoKICAgICAgICAgICAgIGlmIGdldGF0dHIoY29uZmlndXJhdGlvbiwgbWVtYmVyKToKICAg
ICAgICAgICAgICAgICBrd2FyZ3NbbWVtYmVyXSA9IGdldGF0dHIoY29uZmlndXJhdGlvbiwgbWVt
YmVyKQpAQCAtMjA1LDEyICsyMTcsMTIgQEAgY2xhc3MgQ29uZmlndXJhdGlvbkNvbnRleHQob2Jq
ZWN0KToKICAgICAgICAgd2l0aCBzZWxmOgogICAgICAgICAgICAgcmV0dXJuIFttb2RlbC50b19j
b25maWd1cmF0aW9uKCkgZm9yIG1vZGVsIGluIHNlbGYuY2Fzc2FuZHJhLnNlbGVjdF9mcm9tX3Rh
YmxlKHRhYmxlLl9fdGFibGVfbmFtZV9fLCAqKmt3YXJncyldCiAKLSAgICBkZWYgc2VhcmNoX2Zv
cl9yZWNlbnRfY29uZmlndXJhdGlvbihzZWxmLCBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24o
KSk6CisgICAgZGVmIHNlYXJjaF9mb3JfcmVjZW50X2NvbmZpZ3VyYXRpb24oc2VsZiwgY29uZmln
dXJhdGlvbj1Db25maWd1cmF0aW9uKCksIGJyYW5jaD1Ob25lKToKICAgICAgICAgaWYgbm90IGlz
aW5zdGFuY2UoY29uZmlndXJhdGlvbiwgQ29uZmlndXJhdGlvbik6CiAgICAgICAgICAgICByYWlz
ZSBUeXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtDb25maWd1cmF0aW9ufSwgZ290IHt0eXBlKGNv
bmZpZ3VyYXRpb24pfScpCiAKICAgICAgICAgY29uZmlndXJhdGlvbnMgPSBbXQotICAgICAgICBm
b3Iga2V5IGluIHNlbGYucmVkaXMuc2Nhbl9pdGVyKHNlbGYuX2NvbnZlcnRfdG9fcmVkaXNfa2V5
KGNvbmZpZ3VyYXRpb24pKToKKyAgICAgICAgZm9yIGtleSBpbiBzZWxmLnJlZGlzLnNjYW5faXRl
cihzZWxmLl9jb252ZXJ0X3RvX3JlZGlzX2tleShjb25maWd1cmF0aW9uLCBicmFuY2ggb3Igc2Vs
Zi5jb21taXRfY29udGV4dC5ERUZBVUxUX0JSQU5DSF9LRVkpKToKICAgICAgICAgICAgIGNhbmRp
ZGF0ZSA9IENvbmZpZ3VyYXRpb24uZnJvbV9qc29uKHNlbGYucmVkaXMuZ2V0KGtleS5kZWNvZGUo
J3V0Zi04JykpLmRlY29kZSgndXRmLTgnKSkKICAgICAgICAgICAgIGlmIGNhbmRpZGF0ZSA9PSBj
b25maWd1cmF0aW9uOgogICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLmFwcGVuZChjYW5k
aWRhdGUpCkBAIC0yMzYsNyArMjQ4LDcgQEAgY2xhc3MgQ29uZmlndXJhdGlvbkNvbnRleHQob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzPWpzb24uZHVtcHMoYXR0cmlidXRlc19k
aWN0KSwKICAgICAgICAgICAgICAgICAqKmt3YXJncykKIAotICAgIGRlZiBzZWxlY3RfZnJvbV90
YWJsZV93aXRoX2NvbmZpZ3VyYXRpb25zKHNlbGYsIHRhYmxlX25hbWUsIGNvbmZpZ3VyYXRpb25z
PU5vbmUsIHJlY2VudD1UcnVlLCBsaW1pdD0xMDAsICoqa3dhcmdzKToKKyAgICBkZWYgc2VsZWN0
X2Zyb21fdGFibGVfd2l0aF9jb25maWd1cmF0aW9ucyhzZWxmLCB0YWJsZV9uYW1lLCBjb25maWd1
cmF0aW9ucz1Ob25lLCBicmFuY2g9Tm9uZSwgcmVjZW50PVRydWUsIGxpbWl0PTEwMCwgKiprd2Fy
Z3MpOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb25maWd1cmF0aW9ucywgSXRlcmFibGUp
OgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdFeHBlY3RlZCBjb25maWd1cmF0aW9ucyB0
byBiZSBpdGVyYWJsZScpCiAgICAgICAgIGlmIG5vdCBjb25maWd1cmF0aW9uczoKQEAgLTI1MCw5
ICsyNjIsOSBAQCBjbGFzcyBDb25maWd1cmF0aW9uQ29udGV4dChvYmplY3QpOgogICAgICAgICAg
ICAgICAgIGlmIGNvbmZpZy5pc19jb21wbGV0ZSgpOgogICAgICAgICAgICAgICAgICAgICBjb21w
bGV0ZV9jb25maWd1cmF0aW9ucy5hZGQoY29uZmlnKQogICAgICAgICAgICAgICAgIGVsaWYgcmVj
ZW50OgotICAgICAgICAgICAgICAgICAgICBbY29tcGxldGVfY29uZmlndXJhdGlvbnMuYWRkKGVs
ZW1lbnQpIGZvciBlbGVtZW50IGluIHNlbGYuc2VhcmNoX2Zvcl9yZWNlbnRfY29uZmlndXJhdGlv
bihjb25maWcpXQorICAgICAgICAgICAgICAgICAgICBbY29tcGxldGVfY29uZmlndXJhdGlvbnMu
YWRkKGVsZW1lbnQpIGZvciBlbGVtZW50IGluIHNlbGYuc2VhcmNoX2Zvcl9yZWNlbnRfY29uZmln
dXJhdGlvbihjb25maWcsIGJyYW5jaD1icmFuY2gpXQogICAgICAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgICAgIFtjb21wbGV0ZV9jb25maWd1cmF0aW9ucy5hZGQoZWxlbWVudCkg
Zm9yIGVsZW1lbnQgaW4gc2VsZi5zZWFyY2hfZm9yX2NvbmZpZ3VyYXRpb24oY29uZmlnKV0KKyAg
ICAgICAgICAgICAgICAgICAgW2NvbXBsZXRlX2NvbmZpZ3VyYXRpb25zLmFkZChlbGVtZW50KSBm
b3IgZWxlbWVudCBpbiBzZWxmLnNlYXJjaF9mb3JfY29uZmlndXJhdGlvbihjb25maWcsIGJyYW5j
aD1icmFuY2gpXQogCiAgICAgICAgICAgICByZXN1bHRzID0ge30KICAgICAgICAgICAgIGZvciBj
b25maWd1cmF0aW9uIGluIGNvbXBsZXRlX2NvbmZpZ3VyYXRpb25zOgpAQCAtMjY4LDYgKzI4MCw3
IEBAIGNsYXNzIENvbmZpZ3VyYXRpb25Db250ZXh0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAg
ICAgIGFyY2hpdGVjdHVyZT1jb25maWd1cmF0aW9uLmFyY2hpdGVjdHVyZSwKICAgICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlcz1qc29uLmR1bXBzKGF0dHJpYnV0ZXNfZGljdCksCiAgICAgICAg
ICAgICAgICAgICAgIGxpbWl0PWxpbWl0LAorICAgICAgICAgICAgICAgICAgICBicmFuY2g9YnJh
bmNoIG9yIHNlbGYuY29tbWl0X2NvbnRleHQuREVGQVVMVF9CUkFOQ0hfS0VZLAogICAgICAgICAg
ICAgICAgICAgICAqKmt3YXJncykKICAgICAgICAgICAgICAgICBpZiBsZW4ocm93cykgPT0gMDoK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWUKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L21vZGVsL2NvbmZpZ3VyYXRpb25fY29udGV4dF91bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb25maWd1cmF0aW9u
X2NvbnRleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI0OTU3MykKKysrIFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbmZpZ3VyYXRpb25fY29udGV4dF91bml0dGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQCBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xs
ZXIuY29uZmlndXJhdGlvCiBmcm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCiBm
cm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcwogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jYXNz
YW5kcmFfY29udGV4dCBpbXBvcnQgQ2Fzc2FuZHJhQ29udGV4dAorZnJvbSByZXN1bHRzZGJweS5t
b2RlbC5jb21taXRfY29udGV4dCBpbXBvcnQgQ29tbWl0Q29udGV4dAogZnJvbSByZXN1bHRzZGJw
eS5tb2RlbC5jb25maWd1cmF0aW9uX2NvbnRleHQgaW1wb3J0IENvbmZpZ3VyYXRpb25Db250ZXh0
LCBDbHVzdGVyZWRCeUNvbmZpZ3VyYXRpb24KIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19j
YXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKIGZyb20gcmVzdWx0
c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tl
clRlc3RDYXNlCkBAIC02MywxMCArNjQsMTEgQEAgY2xhc3MgQ29uZmlndXJhdGlvbkNvbnRleHRU
ZXN0KFdhaXRGb3JEbwogCiAgICAgZGVmIGluaXRfZGF0YWJhc2Uoc2VsZiwgcmVkaXM9U3RyaWN0
UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKICAgICAgICAgY2Fzc2FuZHJhLmRy
b3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKLSAgICAgICAgc2VsZi5kYXRhYmFz
ZSA9IENvbmZpZ3VyYXRpb25Db250ZXh0KAorCisgICAgICAgIHNlbGYuZGF0YWJhc2UgPSBDb25m
aWd1cmF0aW9uQ29udGV4dChDb21taXRDb250ZXh0KAogICAgICAgICAgICAgcmVkaXM9cmVkaXMo
KSwKICAgICAgICAgICAgIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFD
RSwgY3JlYXRlX2tleXNwYWNlPVRydWUpLAotICAgICAgICApCisgICAgICAgICkpCiAKICAgICBk
ZWYgcmVnaXN0ZXJfY29uZmlndXJhdGlvbnMoc2VsZik6CiAgICAgICAgIGN1cnJlbnQgPSB0aW1l
LnRpbWUoKQpAQCAtNzUsOSArNzcsOSBAQCBjbGFzcyBDb25maWd1cmF0aW9uQ29udGV4dFRlc3Qo
V2FpdEZvckRvCiAgICAgICAgIGZvciBjb25maWd1cmF0aW9uIGluIHNlbGYuQ09ORklHVVJBVElP
TlM6CiAgICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5wbGF0Zm9ybSA9PSAnTWFjJyBhbmQg
Y29uZmlndXJhdGlvbi52ZXJzaW9uIDw9IENvbmZpZ3VyYXRpb24udmVyc2lvbl90b19pbnRlZ2Vy
KCcxMC4xMycpKSBcCiAgICAgICAgICAgICAgICBvciAoY29uZmlndXJhdGlvbi5wbGF0Zm9ybSA9
PSAnaU9TJyBhbmQgY29uZmlndXJhdGlvbi52ZXJzaW9uIDw9IENvbmZpZ3VyYXRpb24udmVyc2lv
bl90b19pbnRlZ2VyKCcxMScpKToKLSAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lz
dGVyX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgb2xkKQorICAgICAgICAgICAgICAgIHNl
bGYuZGF0YWJhc2UucmVnaXN0ZXJfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBOb25lLCBv
bGQpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UucmVn
aXN0ZXJfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBjdXJyZW50KQorICAgICAgICAgICAg
ICAgIHNlbGYuZGF0YWJhc2UucmVnaXN0ZXJfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBO
b25lLCBjdXJyZW50KQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2Rv
Y2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3Nh
bmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3RfaW52YWxpZF9jb25maWd1cmF0aW9uKHNlbGYsIHJl
ZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CkBAIC0xODYsNyAr
MTg4LDcgQEAgY2xhc3MgQ29uZmlndXJhdGlvbkNvbnRleHRUZXN0KFdhaXRGb3JEbwogCiAgICAg
ICAgIHNlbGYuZGF0YWJhc2UucmVkaXMuZmx1c2hkYigpCiAKLSAgICAgICAgZGF0YWJhc2UgPSBD
b25maWd1cmF0aW9uQ29udGV4dChyZWRpcz1zZWxmLmRhdGFiYXNlLnJlZGlzLCBjYXNzYW5kcmE9
c2VsZi5kYXRhYmFzZS5jYXNzYW5kcmEpCisgICAgICAgIGRhdGFiYXNlID0gQ29uZmlndXJhdGlv
bkNvbnRleHQoQ29tbWl0Q29udGV4dChyZWRpcz1zZWxmLmRhdGFiYXNlLnJlZGlzLCBjYXNzYW5k
cmE9c2VsZi5kYXRhYmFzZS5jYXNzYW5kcmEpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEy
LCBsZW4oZGF0YWJhc2Uuc2VhcmNoX2Zvcl9yZWNlbnRfY29uZmlndXJhdGlvbigpKSkKIAogICAg
IEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtl
U3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQpJbmRleDog
VG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9kZWwucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9kZWwucHkJKHJldmlzaW9u
IDI0OTU3MykKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vZGVsLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIE1vZGVsKG9iamVjdCk6CiAg
ICAgICAgIHNlbGYuY29tbWl0X2NvbnRleHQgPSBDb21taXRDb250ZXh0KHJlZGlzLCBjYXNzYW5k
cmEpCiAgICAgICAgIGZvciByZXBvc2l0b3J5IGluIHJlcG9zaXRvcmllczoKICAgICAgICAgICAg
IHNlbGYuY29tbWl0X2NvbnRleHQucmVnaXN0ZXJfcmVwb3NpdG9yeShyZXBvc2l0b3J5KQotICAg
ICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dCA9IENvbmZpZ3VyYXRpb25Db250ZXh0KHJl
ZGlzLCBjYXNzYW5kcmEpCisgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0ID0gQ29u
ZmlndXJhdGlvbkNvbnRleHQoc2VsZi5jb21taXRfY29udGV4dCkKICAgICAgICAgc2VsZi51cGxv
YWRfY29udGV4dCA9IFVwbG9hZENvbnRleHQoCiAgICAgICAgICAgICBjb25maWd1cmF0aW9uX2Nv
bnRleHQ9c2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQsCiAgICAgICAgICAgICBjb21taXRfY29u
dGV4dD1zZWxmLmNvbW1pdF9jb250ZXh0LApJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvbW9kZWwvdXBsb2FkX2NvbnRleHQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvdXBsb2FkX2NvbnRleHQucHkJKHJldmlzaW9uIDI0OTU3
MykKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3VwbG9hZF9jb250ZXh0
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0Myw5IEBAIGNsYXNzIFVwbG9hZENvbnRleHQo
b2JqZWN0KToKICAgICBNQVhfVEFTS1NfSU5fU0NBTiA9IDEwCiAKICAgICBjbGFzcyBTdWl0ZXNC
eUNvbmZpZ3VyYXRpb24oQ2x1c3RlcmVkQnlDb25maWd1cmF0aW9uKToKLSAgICAgICAgX190YWJs
ZV9uYW1lX18gPSAnc3VpdGVzX2J5X2NvbmZpZ3VyYXRpb24nCisgICAgICAgIF9fdGFibGVfbmFt
ZV9fID0gJ3N1aXRlc19ieV9jb25maWd1cmF0aW9uX2FuZF9icmFuY2gnCiAgICAgICAgIHN1aXRl
ID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisgICAgICAg
IGJyYW5jaCA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQog
CiAgICAgY2xhc3MgVXBsb2Fkc0J5Q29uZmlndXJhdGlvbihDbHVzdGVyZWRCeUNvbmZpZ3VyYXRp
b24pOgogICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICd1cGxvYWRzX2J5X2NvbmZpZ3VyYXRpb25f
MDEnCkBAIC0yMjcsMTEgKzIyOCwxMSBAQCBjbGFzcyBVcGxvYWRDb250ZXh0KG9iamVjdCk6CiAg
ICAgICAgIGJyYW5jaGVzID0gc2VsZi5jb21taXRfY29udGV4dC5icmFuY2hfa2V5c19mb3JfY29t
bWl0cyhjb21taXRzKQogCiAgICAgICAgIHdpdGggc2VsZjoKLSAgICAgICAgICAgIHNlbGYuY29u
ZmlndXJhdGlvbl9jb250ZXh0LnJlZ2lzdGVyX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwg
dGltZXN0YW1wPXRpbWVzdGFtcCkKLQogICAgICAgICAgICAgZm9yIGJyYW5jaCBpbiBicmFuY2hl
czoKKyAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5yZWdpc3Rlcl9j
b25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGJyYW5jaD1icmFuY2gsIHRpbWVzdGFtcD10aW1l
c3RhbXApCisKICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5pbnNl
cnRfcm93X3dpdGhfY29uZmlndXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5TdWl0
ZXNCeUNvbmZpZ3VyYXRpb24uX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb24sIHN1aXRlPXN1
aXRlLAorICAgICAgICAgICAgICAgICAgICBzZWxmLlN1aXRlc0J5Q29uZmlndXJhdGlvbi5fX3Rh
YmxlX25hbWVfXywgY29uZmlndXJhdGlvbiwgc3VpdGU9c3VpdGUsIGJyYW5jaD1icmFuY2gsCiAg
ICAgICAgICAgICAgICAgICAgIHR0bD1pbnQoKHV1aWQgLy8gQ29tbWl0LlRJTUVTVEFNUF9UT19V
VUlEX01VTFRJUExJRVIpICsgc2VsZi50dGxfc2Vjb25kcyAtIHRpbWUudGltZSgpKSBpZiBzZWxm
LnR0bF9zZWNvbmRzIGVsc2UgTm9uZSwKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAg
ICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRp
b24oCkBAIC0yNTgsMTEgKzI1OSwxMSBAQCBjbGFzcyBVcGxvYWRDb250ZXh0KG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgKS5pdGVtcygpfSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAot
ICAgIGRlZiBmaW5kX3N1aXRlcyhzZWxmLCBjb25maWd1cmF0aW9ucywgcmVjZW50PVRydWUsIGxp
bWl0PTEwMCk6CisgICAgZGVmIGZpbmRfc3VpdGVzKHNlbGYsIGNvbmZpZ3VyYXRpb25zLCBicmFu
Y2g9Tm9uZSwgcmVjZW50PVRydWUsIGxpbWl0PTEwMCk6CiAgICAgICAgIHdpdGggc2VsZjoKICAg
ICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgY29uZmlnOiBbcm93LnN1aXRlIGZv
ciByb3cgaW4gcm93c10gZm9yIGNvbmZpZywgcm93cyBpbiBzZWxmLmNvbmZpZ3VyYXRpb25fY29u
dGV4dC5zZWxlY3RfZnJvbV90YWJsZV93aXRoX2NvbmZpZ3VyYXRpb25zKAotICAgICAgICAgICAg
ICAgICAgICBzZWxmLlN1aXRlc0J5Q29uZmlndXJhdGlvbi5fX3RhYmxlX25hbWVfXywgY29uZmln
dXJhdGlvbnM9Y29uZmlndXJhdGlvbnMsIHJlY2VudD1yZWNlbnQsIGxpbWl0PWxpbWl0LAorICAg
ICAgICAgICAgICAgICAgICBzZWxmLlN1aXRlc0J5Q29uZmlndXJhdGlvbi5fX3RhYmxlX25hbWVf
XywgY29uZmlndXJhdGlvbnM9Y29uZmlndXJhdGlvbnMsIGJyYW5jaD1icmFuY2gsIHJlY2VudD1y
ZWNlbnQsIGxpbWl0PWxpbWl0LAogICAgICAgICAgICAgICAgICkuaXRlbXMoKQogICAgICAgICAg
ICAgfQogCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9q
cy9kcmF3ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
dmlldy9zdGF0aWMvanMvZHJhd2VyLmpzCShyZXZpc2lvbiAyNDk1NzMpCisrKyBUb29scy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9qcy9kcmF3ZXIuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTIyLDcgKzIyLDcgQEAKIC8vIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAogaW1wb3J0IHtET00sIFJFRn0gZnJvbSAnL2xpYnJhcnkvanMvUmVmLmpzJzsKLWltcG9ydCB7
UXVlcnlNb2RpZmllcn0gZnJvbSAnL2Fzc2V0cy9qcy9jb21tb24uanMnOworaW1wb3J0IHtxdWVy
eVRvUGFyYW1zLCBwYXJhbXNUb1F1ZXJ5LCBRdWVyeU1vZGlmaWVyLCB9IGZyb20gJy9hc3NldHMv
anMvY29tbW9uLmpzJzsKIGltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSAnL2Fzc2V0cy9qcy9j
b25maWd1cmF0aW9uLmpzJwogCiBmdW5jdGlvbiBzZXRFbmFibGVSZWN1cnNpdmUoZWxlbWVudCwg
c3RhdGUpIHsKQEAgLTExNiw2ICsxMTYsMzAgQEAgZnVuY3Rpb24gRHJhd2VyKGNvbnRyb2xzID0g
W10sIG9uQ29sbGFwcwogICAgICAgICA8L2Rpdj5gOwogfQogCitsZXQgY29uZmlndXJhdGlvbnMg
PSBbXQorbGV0IGNvbmZpZ3VyYXRpb25zRGVmaW5lZENhbGxiYWNrcyA9IFtdOworZnVuY3Rpb24g
cmVmcmVzaENvbmZpZ3VyYXRpb25zKCkgeworICAgIGxldCBwYXJhbXMgPSBxdWVyeVRvUGFyYW1z
KGRvY3VtZW50LlVSTC5zcGxpdCgnPycpWzFdKTsKKyAgICBsZXQgcXVlcnlQYXJhbXMgPSB7fTsK
KyAgICBpZiAocGFyYW1zLmJyYW5jaCkKKyAgICAgICAgcXVlcnlQYXJhbXMuYnJhbmNoID0gcGFy
YW1zLmJyYW5jaDsKKworICAgIGNvbnN0IHF1ZXJ5ID0gcGFyYW1zVG9RdWVyeShxdWVyeVBhcmFt
cyk7CisgICAgZmV0Y2gocXVlcnkgPyAnYXBpL3N1aXRlcz8nICsgcXVlcnk6ICdhcGkvc3VpdGVz
JykudGhlbihyZXNwb25zZSA9PiB7CisgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKGpzb24g
PT4geworICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgPSBbXTsKKyAgICAgICAgICAgIGpzb24u
Zm9yRWFjaChwYWlyID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSBuZXcgQ29u
ZmlndXJhdGlvbihwYWlyWzBdKTsKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy5wdXNo
KGNvbmZpZyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zRGVm
aW5lZENhbGxiYWNrcy5mb3JFYWNoKGNhbGxiYWNrID0+IHtjYWxsYmFjaygpO30pOworICAgICAg
ICB9KTsKKyAgICB9KS5jYXRjaChlcnJvciA9PiB7CisgICAgICAgIC8vIElmIHRoZSBsb2FkIGZh
aWxzLCBsb2cgdGhlIGVycm9yIGFuZCBjb250aW51ZQorICAgICAgICBjb25zb2xlLmVycm9yKEpT
T04uc3RyaW5naWZ5KGVycm9yLCBudWxsLCA0KSk7CisgICAgfSk7Cit9CisKIGZ1bmN0aW9uIEJy
YW5jaFNlbGVjdG9yKGNhbGxiYWNrKSB7CiAgICAgY29uc3QgZGVmYXVsdEJyYW5jaGVzID0gbmV3
IFNldChbJ3RydW5rJywgJ21hc3RlciddKTsKICAgICBjb25zdCBkZWZhdWx0QnJhbmNoS2V5ID0g
Wy4uLmRlZmF1bHRCcmFuY2hlc10uc29ydCgpLmpvaW4oJy8nKTsKQEAgLTEzMCw2ICsxNTQsNyBA
QCBmdW5jdGlvbiBCcmFuY2hTZWxlY3RvcihjYWxsYmFjaykgewogICAgICAgICAgICAgICAgICAg
ICBicmFuY2hNb2RpZmllci5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIGJyYW5jaE1vZGlmaWVyLnJlcGxhY2UoYnJhbmNoKTsKKyAgICAgICAgICAg
ICAgICByZWZyZXNoQ29uZmlndXJhdGlvbnMoKTsKICAgICAgICAgICAgICAgICBjYWxsYmFjaygp
OwogICAgICAgICAgICAgfQogICAgICAgICB9LApAQCAtMjA5LDIxICsyMzQsNyBAQCBmdW5jdGlv
biBMaW1pdFNsaWRlcihjYWxsYmFjaywgbWF4ID0gMTAwCiB9CiAKIGZ1bmN0aW9uIENvbmZpZ3Vy
YXRpb25TZWxlY3RvcnMoY2FsbGJhY2spIHsKLSAgICBsZXQgY29uZmlndXJhdGlvbnMgPSBbXQot
ICAgIGxldCBjb25maWd1cmF0aW9uc0RlZmluZWRDYWxsYmFja3MgPSBbXTsKLSAgICBmZXRjaCgn
YXBpL3N1aXRlcycpLnRoZW4ocmVzcG9uc2UgPT4gewotICAgICAgICByZXNwb25zZS5qc29uKCku
dGhlbihqc29uID0+IHsKLSAgICAgICAgICAgIGpzb24uZm9yRWFjaChwYWlyID0+IHsKLSAgICAg
ICAgICAgICAgICBjb25zdCBjb25maWcgPSBuZXcgQ29uZmlndXJhdGlvbihwYWlyWzBdKTsKLSAg
ICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy5wdXNoKGNvbmZpZyk7Ci0gICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zRGVmaW5lZENhbGxiYWNrcy5mb3JFYWNoKGNh
bGxiYWNrID0+IHtjYWxsYmFjaygpO30pOwotICAgICAgICB9KTsKLSAgICB9KS5jYXRjaChlcnJv
ciA9PiB7Ci0gICAgICAgIC8vIElmIHRoZSBsb2FkIGZhaWxzLCBsb2cgdGhlIGVycm9yIGFuZCBj
b250aW51ZQotICAgICAgICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KGVycm9yLCBudWxs
LCA0KSk7Ci0gICAgfSk7Ci0KKyAgICByZWZyZXNoQ29uZmlndXJhdGlvbnMoKTsKICAgICBjb25z
dCBlbGVtZW50cyA9IFsKICAgICAgICAgeydxdWVyeSc6ICdwbGF0Zm9ybScsICduYW1lJzogJ1Bs
YXRmb3JtJ30sCiAgICAgICAgIHsncXVlcnknOiAndmVyc2lvbl9uYW1lJywgJ25hbWUnOiAnVmVy
c2lvbiBOYW1lJ30sCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3Rl
bXBsYXRlcy9zdWl0ZV9yZXN1bHRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvc3VpdGVfcmVzdWx0cy5odG1sCShyZXZpc2lv
biAyNDk1NzMpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRl
cy9zdWl0ZV9yZXN1bHRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw2ICsxMjAsOCBAQCBj
bGFzcyBNYWluVmlldyB7CiAgICAgICAgICAgICBpZiAocGFyYW1zW21lbWJlcl0pCiAgICAgICAg
ICAgICAgICAgc3VpdGVQYXJhbXNbbWVtYmVyXSA9IHBhcmFtc1ttZW1iZXJdOwogICAgICAgICB9
KTsKKyAgICAgICAgaWYgKHBhcmFtcy5icmFuY2gpCisgICAgICAgICAgICBzdWl0ZVBhcmFtcy5i
cmFuY2ggPSBwYXJhbXMuYnJhbmNoOwogICAgICAgICBsZXQgcXVlcnkgPSBwYXJhbXNUb1F1ZXJ5
KHN1aXRlUGFyYW1zKTsKICAgICAgICAgZmV0Y2gocXVlcnkgPyAnYXBpL3N1aXRlcz8nICsgcXVl
cnk6ICdhcGkvc3VpdGVzJykudGhlbihyZXNwb25zZSA9PiB7CiAgICAgICAgICAgICByZXNwb25z
ZS5qc29uKCkudGhlbihqc29uID0+IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378409</attachid>
            <date>2019-09-09 14:16:45 -0700</date>
            <delta_ts>2019-09-09 15:59:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201561-20190909141644.patch</filename>
            <type>text/plain</type>
            <size>24228</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0OTY1OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM5IEBACisyMDE5LTA5LTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IENvbmZpZ3VyYXRpb25zIHNob3VsZCBi
ZSBicmFuY2ggc3BlY2lmaWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMTU2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFBhcnRpdGlvbiBjb25maWd1cmF0aW9ucyBieSBicmFuY2ggaW4gYm90aCBSZWRp
cyBhbmQgQ2Fzc2FuZHJhLgorCisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29u
dHJvbGxlci91cGxvYWRfY29udHJvbGxlci5weToKKyAgICAgICAgKFVwbG9hZENvbnRyb2xsZXIu
c3VpdGVzKTogQWxsb3cgdGhlIHVzZXIgdG8gc3BlY2lmeSBicmFuY2hlcyB3aGlsZSBsaXN0aW5n
IHN1aXRlcy4KKyAgICAgICAgKiByZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZl
X2NvbnRleHQucHk6CisgICAgICAgIChBcmNoaXZlQ29udGV4dC5yZWdpc3Rlcik6IFJlZ2lzdGVy
IGVhY2ggY29uZmlndXJhdGlvbiB3aXRoIGEgYnJhbmNoLgorICAgICAgICAqIHJlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L21vZGVsL2NvbmZpZ3VyYXRpb25fY29udGV4dC5weToKKyAgICAgICAgKENv
bmZpZ3VyYXRpb25Db250ZXh0LkJ5UGxhdGZvcm0pOiBJbmRleCBieSBicmFuY2guCisgICAgICAg
IChDb25maWd1cmF0aW9uQ29udGV4dC5CeVBsYXRmb3JtQW5kVmVyc2lvbik6IERpdHRvLgorICAg
ICAgICAoQ29uZmlndXJhdGlvbkNvbnRleHQuQnlBcmNoaXRlY3R1cmUpOiBEaXR0by4KKyAgICAg
ICAgKENvbmZpZ3VyYXRpb25Db250ZXh0LkJ5TW9kZWwpOiBEaXR0by4KKyAgICAgICAgKENvbmZp
Z3VyYXRpb25Db250ZXh0Ll9faW5pdF9fKTogUG9wdWxhdGUgUmVkaXMgY2FjaGUgd2l0aCBicmFu
Y2guCisgICAgICAgIChDb25maWd1cmF0aW9uQ29udGV4dC5fY29udmVydF90b19yZWRpc19rZXkp
OiBBY2NlcHQgYnJhbmNoIGluIFJlZGlzIGtleS4KKyAgICAgICAgKENvbmZpZ3VyYXRpb25Db250
ZXh0Ll9yZWdpc3Rlcl9pbl9yZWRpcyk6IFJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24gd2l0aCBicmFu
Y2guCisgICAgICAgIChDb25maWd1cmF0aW9uQ29udGV4dC5yZWdpc3Rlcl9jb25maWd1cmF0aW9u
KTogRGl0dG8uCisgICAgICAgIChDb25maWd1cmF0aW9uQ29udGV4dC5zZWFyY2hfZm9yX2NvbmZp
Z3VyYXRpb24pOiBTZWFyY2ggZm9yIGNvbmZpZ3VyYXRpb24gd2l0aCBicmFuY2guCisgICAgICAg
IChDb25maWd1cmF0aW9uQ29udGV4dC5zZWFyY2hfZm9yX3JlY2VudF9jb25maWd1cmF0aW9uKTog
RGl0dG8uCisgICAgICAgIChDb25maWd1cmF0aW9uQ29udGV4dC5zZWxlY3RfZnJvbV90YWJsZV93
aXRoX2NvbmZpZ3VyYXRpb25zKTogRGl0dG8uCisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvbW9kZWwvY29uZmlndXJhdGlvbl9jb250ZXh0X3VuaXR0ZXN0LnB5OgorICAgICAgICAo
Q29uZmlndXJhdGlvbkNvbnRleHRUZXN0LnJlZ2lzdGVyX2NvbmZpZ3VyYXRpb25zKTogUmVnaXN0
ZXIgd2l0aCBicmFuY2guCisgICAgICAgIChDb25maWd1cmF0aW9uQ29udGV4dFRlc3QudGVzdF9y
ZXBvcHVsYXRlX3JlY2VudCk6IENvbnN0cnVjdCBDb25maWd1cmF0aW9uQ29udGV4dCB3aXRoCisg
ICAgICAgIENvbW1pdENvbnRleHQgb2JqZWN0LgorICAgICAgICAqIHJlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L21vZGVsL3VwbG9hZF9jb250ZXh0LnB5OgorICAgICAgICAoVXBsb2FkQ29udGV4dC5T
dWl0ZXNCeUNvbmZpZ3VyYXRpb24pOiBJbmRleCBieSBicmFuY2guCisgICAgICAgIChVcGxvYWRD
b250ZXh0LnVwbG9hZF90ZXN0X3Jlc3VsdHMpOiBSZWdpc3RlciBlYWNoIGNvbmZpZ3VyYXRpb24g
d2l0aCBhIGJyYW5jaC4KKyAgICAgICAgKFVwbG9hZENvbnRleHQuZmluZF9zdWl0ZXMpOiBQYXNz
IGJyYW5jaCB0byBzZWFyY2ggZm9yIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAqIHJlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pzL2RyYXdlci5qczogQ2hlY2sgZm9yIG5ldyBj
b25maWd1cmF0aW9ucyB3aGVuIHRoZSBicmFuY2ggaXMgY2hhbmdlZC4KKyAgICAgICAgKiByZXN1
bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9zdWl0ZV9yZXN1bHRzLmh0bWw6IEFk
ZCBicmFuY2ggdG8gc3VpdGVzIHF1ZXJ5LgorCiAyMDE5LTA5LTA5ICBEYW5pZWwgQmF0ZXMgIDxk
YWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYWxsIHNlbGVjdGlvbiB2aWV3IGFu
aW1hdGlvbnMgYmVmb3JlIGR1bXBpbmcgcmVzdWx0cwpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlci5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3VwbG9hZF9jb250cm9s
bGVyLnB5CShyZXZpc2lvbiAyNDk2NTgpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250cm9sbGVyL3VwbG9hZF9jb250cm9sbGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNTks
MTMgKzE1OSwxNiBAQCBjbGFzcyBVcGxvYWRDb250cm9sbGVyKEhhc0NvbW1pdENvbnRleHQpCiAK
ICAgICBAcXVlcnlfYXNfa3dhcmdzKCkKICAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQot
ICAgIGRlZiBzdWl0ZXMoc2VsZiwgY29uZmlndXJhdGlvbnM9Tm9uZSwgcmVjZW50PU5vbmUsIHN1
aXRlPU5vbmUsICoqa3dhcmdzKToKKyAgICBkZWYgc3VpdGVzKHNlbGYsIGNvbmZpZ3VyYXRpb25z
PU5vbmUsIHJlY2VudD1Ob25lLCBzdWl0ZT1Ob25lLCBicmFuY2g9Tm9uZSwgKiprd2FyZ3MpOgog
ICAgICAgICBBc3NlcnRSZXF1ZXN0LmlzX3R5cGUoWydHRVQnXSkKICAgICAgICAgQXNzZXJ0UmVx
dWVzdC5xdWVyeV9rd2FyZ3NfZW1wdHkoKiprd2FyZ3MpCiAKICAgICAgICAgd2l0aCBzZWxmLnVw
bG9hZF9jb250ZXh0OgotICAgICAgICAgICAgc3VpdGVzX2J5X2NvbmZpZyA9IHNlbGYudXBsb2Fk
X2NvbnRleHQuZmluZF9zdWl0ZXMoY29uZmlndXJhdGlvbnM9Y29uZmlndXJhdGlvbnMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWNlbnQ9Ym9vbGVhbl9xdWVyeSgqcmVjZW50KVswXSBpZiByZWNlbnQgZWxzZSBUcnVlKQor
ICAgICAgICAgICAgc3VpdGVzX2J5X2NvbmZpZyA9IHNlbGYudXBsb2FkX2NvbnRleHQuZmluZF9z
dWl0ZXMoCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9Y29uZmlndXJhdGlvbnMsCisg
ICAgICAgICAgICAgICAgcmVjZW50PWJvb2xlYW5fcXVlcnkoKnJlY2VudClbMF0gaWYgcmVjZW50
IGVsc2UgVHJ1ZSwKKyAgICAgICAgICAgICAgICBicmFuY2g9YnJhbmNoWzBdIGlmIGJyYW5jaCBl
bHNlIE5vbmUsCisgICAgICAgICAgICApCiAgICAgICAgICAgICByZXN1bHQgPSBbXQogICAgICAg
ICAgICAgZm9yIGNvbmZpZywgY2FuZGlkYXRlX3N1aXRlcyBpbiBzdWl0ZXNfYnlfY29uZmlnLml0
ZW1zKCk6CiAgICAgICAgICAgICAgICAgc3VpdGVzX2Zvcl9jb25maWcgPSBbcyBmb3IgcyBpbiBj
YW5kaWRhdGVfc3VpdGVzIGlmIG5vdCBzdWl0ZSBvciBzIGluIHN1aXRlXQpJbmRleDogVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4
dC5weQkocmV2aXNpb24gMjQ5NjU4KQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
bW9kZWwvYXJjaGl2ZV9jb250ZXh0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC05OCwxMSArOTgsMTEg
QEAgY2xhc3MgQXJjaGl2ZUNvbnRleHQob2JqZWN0KToKICAgICAgICAgICAgIHV1aWQgPSBzZWxm
LmNvbW1pdF9jb250ZXh0LnV1aWRfZm9yX2NvbW1pdHMoY29tbWl0cykKICAgICAgICAgICAgIHR0
bCA9IGludCgodXVpZCAvLyBDb21taXQuVElNRVNUQU1QX1RPX1VVSURfTVVMVElQTElFUikgKyBz
ZWxmLnR0bF9zZWNvbmRzIC0gdGltZS50aW1lKCkpIGlmIHNlbGYudHRsX3NlY29uZHMgZWxzZSBO
b25lCiAKLSAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0LnJlZ2lzdGVyX2Nv
bmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgdGltZXN0YW1wPXRpbWVzdGFtcCkKLQogICAgICAg
ICAgICAgZm9yIGJyYW5jaCBpbiBzZWxmLmNvbW1pdF9jb250ZXh0LmJyYW5jaF9rZXlzX2Zvcl9j
b21taXRzKGNvbW1pdHMpOgorICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250
ZXh0LnJlZ2lzdGVyX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgYnJhbmNoPWJyYW5jaCwg
dGltZXN0YW1wPXRpbWVzdGFtcCkKKwogICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlv
bl9jb250ZXh0Lmluc2VydF9yb3dfd2l0aF9jb25maWd1cmF0aW9uKAotICAgICAgICAgICAgICAg
ICAgICBVcGxvYWRDb250ZXh0LlN1aXRlc0J5Q29uZmlndXJhdGlvbi5fX3RhYmxlX25hbWVfXywg
Y29uZmlndXJhdGlvbiwgc3VpdGU9c3VpdGUsIHR0bD10dGwsCisgICAgICAgICAgICAgICAgICAg
IFVwbG9hZENvbnRleHQuU3VpdGVzQnlDb25maWd1cmF0aW9uLl9fdGFibGVfbmFtZV9fLCBjb25m
aWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwgYnJhbmNoPWJyYW5jaCwgdHRsPXR0bCwKICAgICAgICAg
ICAgICAgICApCiAgICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuaW5z
ZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuQXJj
aGl2ZXNCeUNvbW1pdC5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9u
LCBzdWl0ZT1zdWl0ZSwKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVs
L2NvbmZpZ3VyYXRpb25fY29udGV4dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9tb2RlbC9jb25maWd1cmF0aW9uX2NvbnRleHQucHkJKHJldmlzaW9uIDI0
OTY1OCkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbmZpZ3VyYXRp
b25fY29udGV4dC5weQkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQCBmcm9tIGNhc3Nh
bmRyYS5jcWxlbmdpbmUubW9kZWxzIGltcG9ydCBNCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBJ
dGVyYWJsZSwgT3JkZXJlZERpY3QKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCiBmcm9t
IHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29uZmlndXJhdGlv
bgorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jb21taXRfY29udGV4dCBpbXBvcnQgQ29tbWl0Q29u
dGV4dAogCiAKIGNsYXNzIENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbihNb2RlbCk6CkBAIC02NCw3
ICs2NSw3IEBAIGNsYXNzIENvbmZpZ3VyYXRpb25Db250ZXh0KG9iamVjdCk6CiAgICAgICAgICAg
ICApCiAKICAgICBjbGFzcyBCeVBsYXRmb3JtKE1vZGVsLCBDb25maWd1cmF0aW9uTW9kZWwpOgot
ICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdjb25maWd1cmF0aW9uc19ieV9wbGF0Zm9ybScKKyAg
ICAgICAgX190YWJsZV9uYW1lX18gPSAnY29uZmlndXJhdGlvbnNfYnlfcGxhdGZvcm1fd2l0aF9i
cmFuY2gnCiAgICAgICAgIHBsYXRmb3JtID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1
ZSwgcmVxdWlyZWQ9VHJ1ZSkKICAgICAgICAgc3R5bGUgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9r
ZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCiAgICAgICAgIGZsYXZvciA9IGNvbHVtbnMuVGV4dChw
cmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1GYWxzZSkKQEAgLTcyLDExICs3MywxMiBAQCBjbGFz
cyBDb25maWd1cmF0aW9uQ29udGV4dChvYmplY3QpOgogICAgICAgICBtb2RlbCA9IGNvbHVtbnMu
VGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1GYWxzZSkKICAgICAgICAgaXNfc2ltdWxh
dG9yID0gY29sdW1ucy5Cb29sZWFuKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCiAg
ICAgICAgIHZlcnNpb24gPSBjb2x1bW5zLkludGVnZXIocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWly
ZWQ9VHJ1ZSkKKyAgICAgICAgYnJhbmNoID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUs
IHJlcXVpcmVkPVRydWUpCiAgICAgICAgIHZlcnNpb25fbmFtZSA9IGNvbHVtbnMuVGV4dChwcmlt
YXJ5X2tleT1UcnVlLCByZXF1aXJlZD1GYWxzZSkKICAgICAgICAgbGFzdF9ydW4gPSBjb2x1bW5z
LkRhdGVUaW1lKHJlcXVpcmVkPVRydWUpCiAKICAgICBjbGFzcyBCeVBsYXRmb3JtQW5kVmVyc2lv
bihNb2RlbCwgQ29uZmlndXJhdGlvbk1vZGVsKToKLSAgICAgICAgX190YWJsZV9uYW1lX18gPSAn
Y29uZmlndXJhdGlvbnNfYnlfcGxhdGZvcm1fYW5kX3ZlcnNpb24nCisgICAgICAgIF9fdGFibGVf
bmFtZV9fID0gJ2NvbmZpZ3VyYXRpb25zX2J5X3BsYXRmb3JtX2FuZF92ZXJzaW9uX3dpdGhfYnJh
bmNoJwogICAgICAgICBwbGF0Zm9ybSA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUs
IHJlcXVpcmVkPVRydWUpCiAgICAgICAgIHZlcnNpb24gPSBjb2x1bW5zLkludGVnZXIocGFydGl0
aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQogICAgICAgICBzdHlsZSA9IGNvbHVtbnMuVGV4
dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1GYWxzZSkKQEAgLTg0LDExICs4NiwxMiBAQCBj
bGFzcyBDb25maWd1cmF0aW9uQ29udGV4dChvYmplY3QpOgogICAgICAgICBhcmNoaXRlY3R1cmUg
PSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKICAgICAgICAg
bW9kZWwgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCiAg
ICAgICAgIGlzX3NpbXVsYXRvciA9IGNvbHVtbnMuQm9vbGVhbihwcmltYXJ5X2tleT1UcnVlLCBy
ZXF1aXJlZD1UcnVlKQorICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9
VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKICAgICAgICAgdmVyc2lvbl9uYW1lID0gY29sdW1ucy5UZXh0
KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPUZhbHNlKQogICAgICAgICBsYXN0X3J1biA9IGNv
bHVtbnMuRGF0ZVRpbWUocmVxdWlyZWQ9VHJ1ZSkKIAogICAgIGNsYXNzIEJ5QXJjaGl0ZWN0dXJl
KE1vZGVsLCBDb25maWd1cmF0aW9uTW9kZWwpOgotICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdj
b25maWd1cmF0aW9uc19ieV9hcmNoaXRlY3R1cmUnCisgICAgICAgIF9fdGFibGVfbmFtZV9fID0g
J2NvbmZpZ3VyYXRpb25zX2J5X2FyY2hpdGVjdHVyZV93aXRoX2JyYW5jaCcKICAgICAgICAgYXJj
aGl0ZWN0dXJlID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1
ZSkKICAgICAgICAgc3R5bGUgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWly
ZWQ9RmFsc2UpCiAgICAgICAgIHBsYXRmb3JtID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRy
dWUsIHJlcXVpcmVkPVRydWUpCkBAIC05NiwxMSArOTksMTIgQEAgY2xhc3MgQ29uZmlndXJhdGlv
bkNvbnRleHQob2JqZWN0KToKICAgICAgICAgbW9kZWwgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9r
ZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCiAgICAgICAgIGZsYXZvciA9IGNvbHVtbnMuVGV4dChw
cmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1GYWxzZSkKICAgICAgICAgaXNfc2ltdWxhdG9yID0g
Y29sdW1ucy5Cb29sZWFuKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisgICAgICAg
IGJyYW5jaCA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQog
ICAgICAgICB2ZXJzaW9uX25hbWUgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVx
dWlyZWQ9RmFsc2UpCiAgICAgICAgIGxhc3RfcnVuID0gY29sdW1ucy5EYXRlVGltZShyZXF1aXJl
ZD1UcnVlKQogCiAgICAgY2xhc3MgQnlNb2RlbChNb2RlbCwgQ29uZmlndXJhdGlvbk1vZGVsKToK
LSAgICAgICAgX190YWJsZV9uYW1lX18gPSAnY29uZmlndXJhdGlvbnNfYnlfbW9kZWwnCisgICAg
ICAgIF9fdGFibGVfbmFtZV9fID0gJ2NvbmZpZ3VyYXRpb25zX2J5X21vZGVsX3dpdGhfYnJhbmNo
JwogICAgICAgICBtb2RlbCA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVp
cmVkPVRydWUpCiAgICAgICAgIHZlcnNpb24gPSBjb2x1bW5zLkludGVnZXIocHJpbWFyeV9rZXk9
VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKICAgICAgICAgc3R5bGUgPSBjb2x1bW5zLlRleHQocHJpbWFy
eV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCkBAIC0xMDgsNiArMTEyLDcgQEAgY2xhc3MgQ29u
ZmlndXJhdGlvbkNvbnRleHQob2JqZWN0KToKICAgICAgICAgZmxhdm9yID0gY29sdW1ucy5UZXh0
KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPUZhbHNlKQogICAgICAgICBhcmNoaXRlY3R1cmUg
PSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKICAgICAgICAg
aXNfc2ltdWxhdG9yID0gY29sdW1ucy5Cb29sZWFuKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVk
PVRydWUpCisgICAgICAgIGJyYW5jaCA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCBy
ZXF1aXJlZD1UcnVlKQogICAgICAgICB2ZXJzaW9uX25hbWUgPSBjb2x1bW5zLlRleHQocHJpbWFy
eV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCiAgICAgICAgIGxhc3RfcnVuID0gY29sdW1ucy5E
YXRlVGltZShyZXF1aXJlZD1UcnVlKQogCkBAIC0xMTcsNyArMTIyLDYgQEAgY2xhc3MgQ29uZmln
dXJhdGlvbkNvbnRleHQob2JqZWN0KToKIAogICAgICAgICBzZWxmLnJlZGlzID0gcmVkaXMKICAg
ICAgICAgc2VsZi5jYXNzYW5kcmEgPSBjYXNzYW5kcmEKLSAgICAgICAgc2VsZi5yZXBvc2l0b3Jp
ZXMgPSB7fQogICAgICAgICBzZWxmLmNhY2hlX3RpbWVvdXQgPSBjYWNoZV90aW1lb3V0CiAKICAg
ICAgICAgd2l0aCBzZWxmOgpAQCAtMTI4LDcgKzEzMiw3IEBAIGNsYXNzIENvbmZpZ3VyYXRpb25D
b250ZXh0KG9iamVjdCk6CiAKICAgICAgICAgICAgIGZvciBjb25maWd1cmF0aW9uIGluIHNlbGYu
Y2Fzc2FuZHJhLnNlbGVjdF9mcm9tX3RhYmxlKHNlbGYuQnlQbGF0Zm9ybS5fX3RhYmxlX25hbWVf
Xyk6CiAgICAgICAgICAgICAgICAgaWYgY29uZmlndXJhdGlvbi5sYXN0X3J1biA+PSBkYXRldGlt
ZS51dGNmcm9tdGltZXN0YW1wKGludCh0aW1lLnRpbWUoKSAtIGNhY2hlX3RpbWVvdXQpKToKLSAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fcmVnaXN0ZXJfaW5fcmVkaXMoY29uZmlndXJhdGlvbi50
b19jb25maWd1cmF0aW9uKCksIGNvbmZpZ3VyYXRpb24ubGFzdF9ydW4pCisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3JlZ2lzdGVyX2luX3JlZGlzKGNvbmZpZ3VyYXRpb24udG9fY29uZmlndXJh
dGlvbigpLCBjb25maWd1cmF0aW9uLmJyYW5jaCwgY29uZmlndXJhdGlvbi5sYXN0X3J1bikKIAog
ICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLl9fZW50ZXJf
XygpCkBAIC0xMzcsMTYgKzE0MSwxNyBAQCBjbGFzcyBDb25maWd1cmF0aW9uQ29udGV4dChvYmpl
Y3QpOgogICAgICAgICBzZWxmLmNhc3NhbmRyYS5fX2V4aXRfXygqYXJncywgKiprd2FyZ3MpCiAK
ICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX2NvbnZlcnRfdG9fcmVkaXNfa2V5KGNscywgY29u
ZmlndXJhdGlvbik6Ci0gICAgICAgIHJldHVybiAnY29uZmlndXJhdGlvbnM6e306e306e306e306
e306e306e306e30nLmZvcm1hdCgKKyAgICBkZWYgX2NvbnZlcnRfdG9fcmVkaXNfa2V5KGNscywg
Y29uZmlndXJhdGlvbiwgYnJhbmNoKToKKyAgICAgICAgcmV0dXJuICdjb25maWd1cmF0aW9uc19i
eV9icmFuY2g6e306e306e306e306e306e306e306e306e30nLmZvcm1hdCgKICAgICAgICAgICAg
IGNvbmZpZ3VyYXRpb24ucGxhdGZvcm0gb3IgJyonLCAnKicgaWYgY29uZmlndXJhdGlvbi5pc19z
aW11bGF0b3IgaXMgTm9uZSBlbHNlICgxIGlmIGNvbmZpZ3VyYXRpb24uaXNfc2ltdWxhdG9yIGVs
c2UgMCksCiAgICAgICAgICAgICAnKicgaWYgY29uZmlndXJhdGlvbi52ZXJzaW9uIGlzIE5vbmUg
ZWxzZSBDb25maWd1cmF0aW9uLmludGVnZXJfdG9fdmVyc2lvbihjb25maWd1cmF0aW9uLnZlcnNp
b24pLAogICAgICAgICAgICAgY29uZmlndXJhdGlvbi52ZXJzaW9uX25hbWUgb3IgJyonLAogICAg
ICAgICAgICAgY29uZmlndXJhdGlvbi5hcmNoaXRlY3R1cmUgb3IgJyonLCBjb25maWd1cmF0aW9u
Lm1vZGVsIG9yICcqJywKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uc3R5bGUgb3IgJyonLCBj
b25maWd1cmF0aW9uLmZsYXZvciBvciAnKicsCisgICAgICAgICAgICBicmFuY2gsCiAgICAgICAg
ICkKIAotICAgIGRlZiBfcmVnaXN0ZXJfaW5fcmVkaXMoc2VsZiwgY29uZmlndXJhdGlvbiwgdGlt
ZXN0YW1wKToKKyAgICBkZWYgX3JlZ2lzdGVyX2luX3JlZGlzKHNlbGYsIGNvbmZpZ3VyYXRpb24s
IGJyYW5jaCwgdGltZXN0YW1wKToKICAgICAgICAgaWYgaXNpbnN0YW5jZSh0aW1lc3RhbXAsIGRh
dGV0aW1lKToKICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGNhbGVuZGFyLnRpbWVnbSh0aW1lc3Rh
bXAudGltZXR1cGxlKCkpCiAgICAgICAgIGV4cGlyYXRpb24gPSBpbnQoc2VsZi5jYWNoZV90aW1l
b3V0IC0gKHRpbWUudGltZSgpIC0gaW50KHRpbWVzdGFtcCkpKQpAQCAtMTU0LDExICsxNTksMTEg
QEAgY2xhc3MgQ29uZmlndXJhdGlvbkNvbnRleHQob2JqZWN0KToKICAgICAgICAgICAgIHNkayA9
IGNvbmZpZ3VyYXRpb24uc2RrCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgY29u
ZmlndXJhdGlvbi5zZGsgPSBOb25lCi0gICAgICAgICAgICAgICAgc2VsZi5yZWRpcy5zZXQoc2Vs
Zi5fY29udmVydF90b19yZWRpc19rZXkoY29uZmlndXJhdGlvbiksIGNvbmZpZ3VyYXRpb24udG9f
anNvbigpLCBleD1leHBpcmF0aW9uKQorICAgICAgICAgICAgICAgIHNlbGYucmVkaXMuc2V0KHNl
bGYuX2NvbnZlcnRfdG9fcmVkaXNfa2V5KGNvbmZpZ3VyYXRpb24sIGJyYW5jaCksIGNvbmZpZ3Vy
YXRpb24udG9fanNvbigpLCBleD1leHBpcmF0aW9uKQogICAgICAgICAgICAgZmluYWxseToKICAg
ICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnNkayA9IHNkawogCi0gICAgZGVmIHJlZ2lzdGVy
X2NvbmZpZ3VyYXRpb24oc2VsZiwgY29uZmlndXJhdGlvbiwgdGltZXN0YW1wPXRpbWUudGltZSgp
KToKKyAgICBkZWYgcmVnaXN0ZXJfY29uZmlndXJhdGlvbihzZWxmLCBjb25maWd1cmF0aW9uLCBi
cmFuY2g9Tm9uZSwgdGltZXN0YW1wPXRpbWUudGltZSgpKToKICAgICAgICAgaWYgbm90IGlzaW5z
dGFuY2UoY29uZmlndXJhdGlvbiwgQ29uZmlndXJhdGlvbik6CiAgICAgICAgICAgICByYWlzZSBU
eXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtDb25maWd1cmF0aW9ufSwgZ290IHt0eXBlKGNvbmZp
Z3VyYXRpb24pfScpCiAgICAgICAgIGlmIG5vdCBjb25maWd1cmF0aW9uLmlzX2NvbXBsZXRlKCk6
CkBAIC0xNjYsMTMgKzE3MSwxNSBAQCBjbGFzcyBDb25maWd1cmF0aW9uQ29udGV4dChvYmplY3Qp
OgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0aW1lc3RhbXAsIGRhdGV0aW1lKToKICAgICAg
ICAgICAgIHRpbWVzdGFtcCA9IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoaW50KHRpbWVzdGFt
cCkpCiAKKyAgICAgICAgYnJhbmNoID0gYnJhbmNoIG9yIENvbW1pdENvbnRleHQuREVGQVVMVF9C
UkFOQ0hfS0VZCisKICAgICAgICAgd2l0aCBzZWxmOgogICAgICAgICAgICAgdGFibGVzX3RvX2lu
c2VydF90byA9IFtzZWxmLkJ5UGxhdGZvcm0uX190YWJsZV9uYW1lX18sIHNlbGYuQnlQbGF0Zm9y
bUFuZFZlcnNpb24uX190YWJsZV9uYW1lX18sIHNlbGYuQnlBcmNoaXRlY3R1cmUuX190YWJsZV9u
YW1lX19dCiAgICAgICAgICAgICBpZiBjb25maWd1cmF0aW9uLm1vZGVsIGlzIG5vdCBOb25lOgog
ICAgICAgICAgICAgICAgIHRhYmxlc190b19pbnNlcnRfdG8uYXBwZW5kKHNlbGYuQnlNb2RlbC5f
X3RhYmxlX25hbWVfXykKICAgICAgICAgICAgIGZvciB0YWJsZSBpbiB0YWJsZXNfdG9faW5zZXJ0
X3RvOgogICAgICAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmluc2VydF9yb3coCi0gICAgICAg
ICAgICAgICAgICAgIHRhYmxlLAorICAgICAgICAgICAgICAgICAgICB0YWJsZSwgYnJhbmNoPWJy
YW5jaCwKICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09Y29uZmlndXJhdGlvbi5wbGF0Zm9y
bSwgaXNfc2ltdWxhdG9yPWNvbmZpZ3VyYXRpb24uaXNfc2ltdWxhdG9yLAogICAgICAgICAgICAg
ICAgICAgICB2ZXJzaW9uPWNvbmZpZ3VyYXRpb24udmVyc2lvbiwgdmVyc2lvbl9uYW1lPWNvbmZp
Z3VyYXRpb24udmVyc2lvbl9uYW1lIG9yICcnLAogICAgICAgICAgICAgICAgICAgICBhcmNoaXRl
Y3R1cmU9Y29uZmlndXJhdGlvbi5hcmNoaXRlY3R1cmUsIG1vZGVsPWNvbmZpZ3VyYXRpb24ubW9k
ZWwgb3IgJycsCkBAIC0xODAsMTMgKzE4NywxMyBAQCBjbGFzcyBDb25maWd1cmF0aW9uQ29udGV4
dChvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBsYXN0X3J1bj10aW1lc3RhbXAsCiAgICAg
ICAgICAgICAgICAgKQogCi0gICAgICAgIHNlbGYuX3JlZ2lzdGVyX2luX3JlZGlzKGNvbmZpZ3Vy
YXRpb24sIHRpbWVzdGFtcCkKKyAgICAgICAgc2VsZi5fcmVnaXN0ZXJfaW5fcmVkaXMoY29uZmln
dXJhdGlvbiwgYnJhbmNoLCB0aW1lc3RhbXApCiAKLSAgICBkZWYgc2VhcmNoX2Zvcl9jb25maWd1
cmF0aW9uKHNlbGYsIGNvbmZpZ3VyYXRpb24pOgorICAgIGRlZiBzZWFyY2hfZm9yX2NvbmZpZ3Vy
YXRpb24oc2VsZiwgY29uZmlndXJhdGlvbiwgYnJhbmNoPU5vbmUpOgogICAgICAgICBpZiBub3Qg
aXNpbnN0YW5jZShjb25maWd1cmF0aW9uLCBDb25maWd1cmF0aW9uKToKICAgICAgICAgICAgIHJh
aXNlIFR5cGVFcnJvcihmJ0V4cGVjdGVkIHR5cGUge0NvbmZpZ3VyYXRpb259LCBnb3Qge3R5cGUo
Y29uZmlndXJhdGlvbil9JykKIAotICAgICAgICBrd2FyZ3MgPSB7fQorICAgICAgICBrd2FyZ3Mg
PSBkaWN0KGJyYW5jaD1icmFuY2ggb3IgQ29tbWl0Q29udGV4dC5ERUZBVUxUX0JSQU5DSF9LRVkp
CiAgICAgICAgIGZvciBtZW1iZXIgaW4gQ29uZmlndXJhdGlvbi5SRVFVSVJFRF9NRU1CRVJTICsg
Q29uZmlndXJhdGlvbi5PUFRJT05BTF9NRU1CRVJTOgogICAgICAgICAgICAgaWYgZ2V0YXR0cihj
b25maWd1cmF0aW9uLCBtZW1iZXIpOgogICAgICAgICAgICAgICAgIGt3YXJnc1ttZW1iZXJdID0g
Z2V0YXR0cihjb25maWd1cmF0aW9uLCBtZW1iZXIpCkBAIC0yMDUsMTIgKzIxMiwxMiBAQCBjbGFz
cyBDb25maWd1cmF0aW9uQ29udGV4dChvYmplY3QpOgogICAgICAgICB3aXRoIHNlbGY6CiAgICAg
ICAgICAgICByZXR1cm4gW21vZGVsLnRvX2NvbmZpZ3VyYXRpb24oKSBmb3IgbW9kZWwgaW4gc2Vs
Zi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUodGFibGUuX190YWJsZV9uYW1lX18sICoqa3dh
cmdzKV0KIAotICAgIGRlZiBzZWFyY2hfZm9yX3JlY2VudF9jb25maWd1cmF0aW9uKHNlbGYsIGNv
bmZpZ3VyYXRpb249Q29uZmlndXJhdGlvbigpKToKKyAgICBkZWYgc2VhcmNoX2Zvcl9yZWNlbnRf
Y29uZmlndXJhdGlvbihzZWxmLCBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24oKSwgYnJhbmNo
PU5vbmUpOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb25maWd1cmF0aW9uLCBDb25maWd1
cmF0aW9uKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4cGVjdGVkIHR5cGUge0Nv
bmZpZ3VyYXRpb259LCBnb3Qge3R5cGUoY29uZmlndXJhdGlvbil9JykKIAogICAgICAgICBjb25m
aWd1cmF0aW9ucyA9IFtdCi0gICAgICAgIGZvciBrZXkgaW4gc2VsZi5yZWRpcy5zY2FuX2l0ZXIo
c2VsZi5fY29udmVydF90b19yZWRpc19rZXkoY29uZmlndXJhdGlvbikpOgorICAgICAgICBmb3Ig
a2V5IGluIHNlbGYucmVkaXMuc2Nhbl9pdGVyKHNlbGYuX2NvbnZlcnRfdG9fcmVkaXNfa2V5KGNv
bmZpZ3VyYXRpb24sIGJyYW5jaCBvciBDb21taXRDb250ZXh0LkRFRkFVTFRfQlJBTkNIX0tFWSkp
OgogICAgICAgICAgICAgY2FuZGlkYXRlID0gQ29uZmlndXJhdGlvbi5mcm9tX2pzb24oc2VsZi5y
ZWRpcy5nZXQoa2V5LmRlY29kZSgndXRmLTgnKSkuZGVjb2RlKCd1dGYtOCcpKQogICAgICAgICAg
ICAgaWYgY2FuZGlkYXRlID09IGNvbmZpZ3VyYXRpb246CiAgICAgICAgICAgICAgICAgY29uZmln
dXJhdGlvbnMuYXBwZW5kKGNhbmRpZGF0ZSkKQEAgLTIzNiw3ICsyNDMsNyBAQCBjbGFzcyBDb25m
aWd1cmF0aW9uQ29udGV4dChvYmplY3QpOgogICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM9anNv
bi5kdW1wcyhhdHRyaWJ1dGVzX2RpY3QpLAogICAgICAgICAgICAgICAgICoqa3dhcmdzKQogCi0g
ICAgZGVmIHNlbGVjdF9mcm9tX3RhYmxlX3dpdGhfY29uZmlndXJhdGlvbnMoc2VsZiwgdGFibGVf
bmFtZSwgY29uZmlndXJhdGlvbnM9Tm9uZSwgcmVjZW50PVRydWUsIGxpbWl0PTEwMCwgKiprd2Fy
Z3MpOgorICAgIGRlZiBzZWxlY3RfZnJvbV90YWJsZV93aXRoX2NvbmZpZ3VyYXRpb25zKHNlbGYs
IHRhYmxlX25hbWUsIGNvbmZpZ3VyYXRpb25zPU5vbmUsIGJyYW5jaD1Ob25lLCByZWNlbnQ9VHJ1
ZSwgbGltaXQ9MTAwLCAqKmt3YXJncyk6CiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbmZp
Z3VyYXRpb25zLCBJdGVyYWJsZSk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0V4cGVj
dGVkIGNvbmZpZ3VyYXRpb25zIHRvIGJlIGl0ZXJhYmxlJykKICAgICAgICAgaWYgbm90IGNvbmZp
Z3VyYXRpb25zOgpAQCAtMjUwLDkgKzI1Nyw5IEBAIGNsYXNzIENvbmZpZ3VyYXRpb25Db250ZXh0
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgaWYgY29uZmlnLmlzX2NvbXBsZXRlKCk6CiAgICAg
ICAgICAgICAgICAgICAgIGNvbXBsZXRlX2NvbmZpZ3VyYXRpb25zLmFkZChjb25maWcpCiAgICAg
ICAgICAgICAgICAgZWxpZiByZWNlbnQ6Ci0gICAgICAgICAgICAgICAgICAgIFtjb21wbGV0ZV9j
b25maWd1cmF0aW9ucy5hZGQoZWxlbWVudCkgZm9yIGVsZW1lbnQgaW4gc2VsZi5zZWFyY2hfZm9y
X3JlY2VudF9jb25maWd1cmF0aW9uKGNvbmZpZyldCisgICAgICAgICAgICAgICAgICAgIFtjb21w
bGV0ZV9jb25maWd1cmF0aW9ucy5hZGQoZWxlbWVudCkgZm9yIGVsZW1lbnQgaW4gc2VsZi5zZWFy
Y2hfZm9yX3JlY2VudF9jb25maWd1cmF0aW9uKGNvbmZpZywgYnJhbmNoPWJyYW5jaCldCiAgICAg
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgW2NvbXBsZXRlX2NvbmZpZ3Vy
YXRpb25zLmFkZChlbGVtZW50KSBmb3IgZWxlbWVudCBpbiBzZWxmLnNlYXJjaF9mb3JfY29uZmln
dXJhdGlvbihjb25maWcpXQorICAgICAgICAgICAgICAgICAgICBbY29tcGxldGVfY29uZmlndXJh
dGlvbnMuYWRkKGVsZW1lbnQpIGZvciBlbGVtZW50IGluIHNlbGYuc2VhcmNoX2Zvcl9jb25maWd1
cmF0aW9uKGNvbmZpZywgYnJhbmNoPWJyYW5jaCldCiAKICAgICAgICAgICAgIHJlc3VsdHMgPSB7
fQogICAgICAgICAgICAgZm9yIGNvbmZpZ3VyYXRpb24gaW4gY29tcGxldGVfY29uZmlndXJhdGlv
bnM6CkBAIC0yNjgsNiArMjc1LDcgQEAgY2xhc3MgQ29uZmlndXJhdGlvbkNvbnRleHQob2JqZWN0
KToKICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlPWNvbmZpZ3VyYXRpb24uYXJjaGl0
ZWN0dXJlLAogICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzPWpzb24uZHVtcHMoYXR0cmli
dXRlc19kaWN0KSwKICAgICAgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCisgICAgICAgICAg
ICAgICAgICAgIGJyYW5jaD1icmFuY2ggb3IgQ29tbWl0Q29udGV4dC5ERUZBVUxUX0JSQU5DSF9L
RVksCiAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQogICAgICAgICAgICAgICAgIGlmIGxl
bihyb3dzKSA9PSAwOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQpJbmRleDogVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29uZmlndXJhdGlvbl9jb250ZXh0X3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVs
L2NvbmZpZ3VyYXRpb25fY29udGV4dF91bml0dGVzdC5weQkocmV2aXNpb24gMjQ5NjU4KQorKysg
VG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29uZmlndXJhdGlvbl9jb250ZXh0
X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBAIGZyb20gcmVzdWx0
c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW8KIGZyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtl
U3RyaWN0UmVkaXMKIGZyb20gcmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCiBmcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0Citmcm9t
IHJlc3VsdHNkYnB5Lm1vZGVsLmNvbW1pdF9jb250ZXh0IGltcG9ydCBDb21taXRDb250ZXh0CiBm
cm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNvbmZpZ3VyYXRpb25fY29udGV4dCBpbXBvcnQgQ29uZmln
dXJhdGlvbkNvbnRleHQsIENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbgogZnJvbSByZXN1bHRzZGJw
eS5tb2RlbC5tb2NrX2Nhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2FuZHJhQ29udGV4
dAogZnJvbSByZXN1bHRzZGJweS5tb2RlbC53YWl0X2Zvcl9kb2NrZXJfdGVzdF9jYXNlIGltcG9y
dCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UKQEAgLTc1LDkgKzc2LDkgQEAgY2xhc3MgQ29uZmlndXJh
dGlvbkNvbnRleHRUZXN0KFdhaXRGb3JEbwogICAgICAgICBmb3IgY29uZmlndXJhdGlvbiBpbiBz
ZWxmLkNPTkZJR1VSQVRJT05TOgogICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24ucGxhdGZv
cm0gPT0gJ01hYycgYW5kIGNvbmZpZ3VyYXRpb24udmVyc2lvbiA8PSBDb25maWd1cmF0aW9uLnZl
cnNpb25fdG9faW50ZWdlcignMTAuMTMnKSkgXAogICAgICAgICAgICAgICAgb3IgKGNvbmZpZ3Vy
YXRpb24ucGxhdGZvcm0gPT0gJ2lPUycgYW5kIGNvbmZpZ3VyYXRpb24udmVyc2lvbiA8PSBDb25m
aWd1cmF0aW9uLnZlcnNpb25fdG9faW50ZWdlcignMTEnKSk6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5kYXRhYmFzZS5yZWdpc3Rlcl9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIG9sZCkKKyAg
ICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2NvbmZpZ3VyYXRpb24oY29uZmln
dXJhdGlvbiwgTm9uZSwgb2xkKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBz
ZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgY3VycmVu
dCkKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2NvbmZpZ3VyYXRpb24o
Y29uZmlndXJhdGlvbiwgTm9uZSwgY3VycmVudCkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENh
c2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fz
c2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X2ludmFsaWRfY29uZmln
dXJhdGlvbihzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRl
eHQpOgpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvdXBsb2FkX2Nv
bnRleHQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9k
ZWwvdXBsb2FkX2NvbnRleHQucHkJKHJldmlzaW9uIDI0OTY1OCkKKysrIFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL3VwbG9hZF9jb250ZXh0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC00Myw4ICs0Myw5IEBAIGNsYXNzIFVwbG9hZENvbnRleHQob2JqZWN0KToKICAgICBNQVhfVEFT
S1NfSU5fU0NBTiA9IDEwCiAKICAgICBjbGFzcyBTdWl0ZXNCeUNvbmZpZ3VyYXRpb24oQ2x1c3Rl
cmVkQnlDb25maWd1cmF0aW9uKToKLSAgICAgICAgX190YWJsZV9uYW1lX18gPSAnc3VpdGVzX2J5
X2NvbmZpZ3VyYXRpb24nCisgICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ3N1aXRlc19ieV9jb25m
aWd1cmF0aW9uX2FuZF9icmFuY2gnCiAgICAgICAgIHN1aXRlID0gY29sdW1ucy5UZXh0KHByaW1h
cnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisgICAgICAgIGJyYW5jaCA9IGNvbHVtbnMuVGV4
dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQogCiAgICAgY2xhc3MgVXBsb2Fkc0J5
Q29uZmlndXJhdGlvbihDbHVzdGVyZWRCeUNvbmZpZ3VyYXRpb24pOgogICAgICAgICBfX3RhYmxl
X25hbWVfXyA9ICd1cGxvYWRzX2J5X2NvbmZpZ3VyYXRpb25fMDEnCkBAIC0yMjcsMTEgKzIyOCwx
MSBAQCBjbGFzcyBVcGxvYWRDb250ZXh0KG9iamVjdCk6CiAgICAgICAgIGJyYW5jaGVzID0gc2Vs
Zi5jb21taXRfY29udGV4dC5icmFuY2hfa2V5c19mb3JfY29tbWl0cyhjb21taXRzKQogCiAgICAg
ICAgIHdpdGggc2VsZjoKLSAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0LnJl
Z2lzdGVyX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgdGltZXN0YW1wPXRpbWVzdGFtcCkK
LQogICAgICAgICAgICAgZm9yIGJyYW5jaCBpbiBicmFuY2hlczoKKyAgICAgICAgICAgICAgICBz
ZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5yZWdpc3Rlcl9jb25maWd1cmF0aW9uKGNvbmZpZ3Vy
YXRpb24sIGJyYW5jaD1icmFuY2gsIHRpbWVzdGFtcD10aW1lc3RhbXApCisKICAgICAgICAgICAg
ICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5pbnNlcnRfcm93X3dpdGhfY29uZmlndXJh
dGlvbigKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5TdWl0ZXNCeUNvbmZpZ3VyYXRpb24uX190
YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb24sIHN1aXRlPXN1aXRlLAorICAgICAgICAgICAgICAg
ICAgICBzZWxmLlN1aXRlc0J5Q29uZmlndXJhdGlvbi5fX3RhYmxlX25hbWVfXywgY29uZmlndXJh
dGlvbiwgc3VpdGU9c3VpdGUsIGJyYW5jaD1icmFuY2gsCiAgICAgICAgICAgICAgICAgICAgIHR0
bD1pbnQoKHV1aWQgLy8gQ29tbWl0LlRJTUVTVEFNUF9UT19VVUlEX01VTFRJUExJRVIpICsgc2Vs
Zi50dGxfc2Vjb25kcyAtIHRpbWUudGltZSgpKSBpZiBzZWxmLnR0bF9zZWNvbmRzIGVsc2UgTm9u
ZSwKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9u
X2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCkBAIC0yNTgsMTEgKzI1OSwx
MSBAQCBjbGFzcyBVcGxvYWRDb250ZXh0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgKS5pdGVt
cygpfSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAotICAgIGRlZiBmaW5kX3N1aXRlcyhz
ZWxmLCBjb25maWd1cmF0aW9ucywgcmVjZW50PVRydWUsIGxpbWl0PTEwMCk6CisgICAgZGVmIGZp
bmRfc3VpdGVzKHNlbGYsIGNvbmZpZ3VyYXRpb25zLCBicmFuY2g9Tm9uZSwgcmVjZW50PVRydWUs
IGxpbWl0PTEwMCk6CiAgICAgICAgIHdpdGggc2VsZjoKICAgICAgICAgICAgIHJldHVybiB7CiAg
ICAgICAgICAgICAgICAgY29uZmlnOiBbcm93LnN1aXRlIGZvciByb3cgaW4gcm93c10gZm9yIGNv
bmZpZywgcm93cyBpbiBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5zZWxlY3RfZnJvbV90YWJs
ZV93aXRoX2NvbmZpZ3VyYXRpb25zKAotICAgICAgICAgICAgICAgICAgICBzZWxmLlN1aXRlc0J5
Q29uZmlndXJhdGlvbi5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlvbnM9Y29uZmlndXJhdGlv
bnMsIHJlY2VudD1yZWNlbnQsIGxpbWl0PWxpbWl0LAorICAgICAgICAgICAgICAgICAgICBzZWxm
LlN1aXRlc0J5Q29uZmlndXJhdGlvbi5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlvbnM9Y29u
ZmlndXJhdGlvbnMsIGJyYW5jaD1icmFuY2gsIHJlY2VudD1yZWNlbnQsIGxpbWl0PWxpbWl0LAog
ICAgICAgICAgICAgICAgICkuaXRlbXMoKQogICAgICAgICAgICAgfQogCkluZGV4OiBUb29scy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9qcy9kcmF3ZXIuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMvZHJhd2Vy
LmpzCShyZXZpc2lvbiAyNDk2NTgpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92
aWV3L3N0YXRpYy9qcy9kcmF3ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAK
IC8vIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IHtET00sIFJFRn0g
ZnJvbSAnL2xpYnJhcnkvanMvUmVmLmpzJzsKLWltcG9ydCB7UXVlcnlNb2RpZmllcn0gZnJvbSAn
L2Fzc2V0cy9qcy9jb21tb24uanMnOworaW1wb3J0IHtxdWVyeVRvUGFyYW1zLCBwYXJhbXNUb1F1
ZXJ5LCBRdWVyeU1vZGlmaWVyLCB9IGZyb20gJy9hc3NldHMvanMvY29tbW9uLmpzJzsKIGltcG9y
dCB7Q29uZmlndXJhdGlvbn0gZnJvbSAnL2Fzc2V0cy9qcy9jb25maWd1cmF0aW9uLmpzJwogCiBm
dW5jdGlvbiBzZXRFbmFibGVSZWN1cnNpdmUoZWxlbWVudCwgc3RhdGUpIHsKQEAgLTExNiw2ICsx
MTYsMzAgQEAgZnVuY3Rpb24gRHJhd2VyKGNvbnRyb2xzID0gW10sIG9uQ29sbGFwcwogICAgICAg
ICA8L2Rpdj5gOwogfQogCitsZXQgY29uZmlndXJhdGlvbnMgPSBbXQorbGV0IGNvbmZpZ3VyYXRp
b25zRGVmaW5lZENhbGxiYWNrcyA9IFtdOworZnVuY3Rpb24gcmVmcmVzaENvbmZpZ3VyYXRpb25z
KCkgeworICAgIGxldCBwYXJhbXMgPSBxdWVyeVRvUGFyYW1zKGRvY3VtZW50LlVSTC5zcGxpdCgn
PycpWzFdKTsKKyAgICBsZXQgcXVlcnlQYXJhbXMgPSB7fTsKKyAgICBpZiAocGFyYW1zLmJyYW5j
aCkKKyAgICAgICAgcXVlcnlQYXJhbXMuYnJhbmNoID0gcGFyYW1zLmJyYW5jaDsKKworICAgIGNv
bnN0IHF1ZXJ5ID0gcGFyYW1zVG9RdWVyeShxdWVyeVBhcmFtcyk7CisgICAgZmV0Y2gocXVlcnkg
PyAnYXBpL3N1aXRlcz8nICsgcXVlcnk6ICdhcGkvc3VpdGVzJykudGhlbihyZXNwb25zZSA9PiB7
CisgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKGpzb24gPT4geworICAgICAgICAgICAgY29u
ZmlndXJhdGlvbnMgPSBbXTsKKyAgICAgICAgICAgIGpzb24uZm9yRWFjaChwYWlyID0+IHsKKyAg
ICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSBuZXcgQ29uZmlndXJhdGlvbihwYWlyWzBdKTsK
KyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy5wdXNoKGNvbmZpZyk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zRGVmaW5lZENhbGxiYWNrcy5mb3JFYWNo
KGNhbGxiYWNrID0+IHtjYWxsYmFjaygpO30pOworICAgICAgICB9KTsKKyAgICB9KS5jYXRjaChl
cnJvciA9PiB7CisgICAgICAgIC8vIElmIHRoZSBsb2FkIGZhaWxzLCBsb2cgdGhlIGVycm9yIGFu
ZCBjb250aW51ZQorICAgICAgICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KGVycm9yLCBu
dWxsLCA0KSk7CisgICAgfSk7Cit9CisKIGZ1bmN0aW9uIEJyYW5jaFNlbGVjdG9yKGNhbGxiYWNr
KSB7CiAgICAgY29uc3QgZGVmYXVsdEJyYW5jaGVzID0gbmV3IFNldChbJ3RydW5rJywgJ21hc3Rl
ciddKTsKICAgICBjb25zdCBkZWZhdWx0QnJhbmNoS2V5ID0gWy4uLmRlZmF1bHRCcmFuY2hlc10u
c29ydCgpLmpvaW4oJy8nKTsKQEAgLTEzMCw2ICsxNTQsNyBAQCBmdW5jdGlvbiBCcmFuY2hTZWxl
Y3RvcihjYWxsYmFjaykgewogICAgICAgICAgICAgICAgICAgICBicmFuY2hNb2RpZmllci5yZW1v
dmUoKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGJyYW5jaE1v
ZGlmaWVyLnJlcGxhY2UoYnJhbmNoKTsKKyAgICAgICAgICAgICAgICByZWZyZXNoQ29uZmlndXJh
dGlvbnMoKTsKICAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9LApAQCAtMjA5LDIxICsyMzQsNyBAQCBmdW5jdGlvbiBMaW1pdFNsaWRlcihjYWxsYmFj
aywgbWF4ID0gMTAwCiB9CiAKIGZ1bmN0aW9uIENvbmZpZ3VyYXRpb25TZWxlY3RvcnMoY2FsbGJh
Y2spIHsKLSAgICBsZXQgY29uZmlndXJhdGlvbnMgPSBbXQotICAgIGxldCBjb25maWd1cmF0aW9u
c0RlZmluZWRDYWxsYmFja3MgPSBbXTsKLSAgICBmZXRjaCgnYXBpL3N1aXRlcycpLnRoZW4ocmVz
cG9uc2UgPT4gewotICAgICAgICByZXNwb25zZS5qc29uKCkudGhlbihqc29uID0+IHsKLSAgICAg
ICAgICAgIGpzb24uZm9yRWFjaChwYWlyID0+IHsKLSAgICAgICAgICAgICAgICBjb25zdCBjb25m
aWcgPSBuZXcgQ29uZmlndXJhdGlvbihwYWlyWzBdKTsKLSAgICAgICAgICAgICAgICBjb25maWd1
cmF0aW9ucy5wdXNoKGNvbmZpZyk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb25zRGVmaW5lZENhbGxiYWNrcy5mb3JFYWNoKGNhbGxiYWNrID0+IHtjYWxsYmFjaygp
O30pOwotICAgICAgICB9KTsKLSAgICB9KS5jYXRjaChlcnJvciA9PiB7Ci0gICAgICAgIC8vIElm
IHRoZSBsb2FkIGZhaWxzLCBsb2cgdGhlIGVycm9yIGFuZCBjb250aW51ZQotICAgICAgICBjb25z
b2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KGVycm9yLCBudWxsLCA0KSk7Ci0gICAgfSk7Ci0KKyAg
ICByZWZyZXNoQ29uZmlndXJhdGlvbnMoKTsKICAgICBjb25zdCBlbGVtZW50cyA9IFsKICAgICAg
ICAgeydxdWVyeSc6ICdwbGF0Zm9ybScsICduYW1lJzogJ1BsYXRmb3JtJ30sCiAgICAgICAgIHsn
cXVlcnknOiAndmVyc2lvbl9uYW1lJywgJ25hbWUnOiAnVmVyc2lvbiBOYW1lJ30sCkluZGV4OiBU
b29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9zdWl0ZV9yZXN1bHRz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90
ZW1wbGF0ZXMvc3VpdGVfcmVzdWx0cy5odG1sCShyZXZpc2lvbiAyNDk2NTgpCisrKyBUb29scy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9zdWl0ZV9yZXN1bHRzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMCw2ICsxMjAsOCBAQCBjbGFzcyBNYWluVmlldyB7CiAgICAg
ICAgICAgICBpZiAocGFyYW1zW21lbWJlcl0pCiAgICAgICAgICAgICAgICAgc3VpdGVQYXJhbXNb
bWVtYmVyXSA9IHBhcmFtc1ttZW1iZXJdOwogICAgICAgICB9KTsKKyAgICAgICAgaWYgKHBhcmFt
cy5icmFuY2gpCisgICAgICAgICAgICBzdWl0ZVBhcmFtcy5icmFuY2ggPSBwYXJhbXMuYnJhbmNo
OwogICAgICAgICBsZXQgcXVlcnkgPSBwYXJhbXNUb1F1ZXJ5KHN1aXRlUGFyYW1zKTsKICAgICAg
ICAgZmV0Y2gocXVlcnkgPyAnYXBpL3N1aXRlcz8nICsgcXVlcnk6ICdhcGkvc3VpdGVzJykudGhl
bihyZXNwb25zZSA9PiB7CiAgICAgICAgICAgICByZXNwb25zZS5qc29uKCkudGhlbihqc29uID0+
IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378414</attachid>
            <date>2019-09-09 15:59:03 -0700</date>
            <delta_ts>2019-09-16 10:37:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201561-20190909155903.patch</filename>
            <type>text/plain</type>
            <size>24187</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0OTY3MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM5IEBACisyMDE5LTA5LTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IENvbmZpZ3VyYXRpb25zIHNob3VsZCBi
ZSBicmFuY2ggc3BlY2lmaWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMTU2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFBhcnRpdGlvbiBjb25maWd1cmF0aW9ucyBieSBicmFuY2ggaW4gYm90aCBSZWRp
cyBhbmQgQ2Fzc2FuZHJhLgorCisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29u
dHJvbGxlci91cGxvYWRfY29udHJvbGxlci5weToKKyAgICAgICAgKFVwbG9hZENvbnRyb2xsZXIu
c3VpdGVzKTogQWxsb3cgdGhlIHVzZXIgdG8gc3BlY2lmeSBicmFuY2hlcyB3aGlsZSBsaXN0aW5n
IHN1aXRlcy4KKyAgICAgICAgKiByZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZl
X2NvbnRleHQucHk6CisgICAgICAgIChBcmNoaXZlQ29udGV4dC5yZWdpc3Rlcik6IFJlZ2lzdGVy
IGVhY2ggY29uZmlndXJhdGlvbiB3aXRoIGEgYnJhbmNoLgorICAgICAgICAqIHJlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L21vZGVsL2NvbmZpZ3VyYXRpb25fY29udGV4dC5weToKKyAgICAgICAgKENv
bmZpZ3VyYXRpb25Db250ZXh0LkJ5UGxhdGZvcm0pOiBJbmRleCBieSBicmFuY2guCisgICAgICAg
IChDb25maWd1cmF0aW9uQ29udGV4dC5CeVBsYXRmb3JtQW5kVmVyc2lvbik6IERpdHRvLgorICAg
ICAgICAoQ29uZmlndXJhdGlvbkNvbnRleHQuQnlBcmNoaXRlY3R1cmUpOiBEaXR0by4KKyAgICAg
ICAgKENvbmZpZ3VyYXRpb25Db250ZXh0LkJ5TW9kZWwpOiBEaXR0by4KKyAgICAgICAgKENvbmZp
Z3VyYXRpb25Db250ZXh0Ll9faW5pdF9fKTogUG9wdWxhdGUgUmVkaXMgY2FjaGUgd2l0aCBicmFu
Y2guCisgICAgICAgIChDb25maWd1cmF0aW9uQ29udGV4dC5fY29udmVydF90b19yZWRpc19rZXkp
OiBBY2NlcHQgYnJhbmNoIGluIFJlZGlzIGtleS4KKyAgICAgICAgKENvbmZpZ3VyYXRpb25Db250
ZXh0Ll9yZWdpc3Rlcl9pbl9yZWRpcyk6IFJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24gd2l0aCBicmFu
Y2guCisgICAgICAgIChDb25maWd1cmF0aW9uQ29udGV4dC5yZWdpc3Rlcl9jb25maWd1cmF0aW9u
KTogRGl0dG8uCisgICAgICAgIChDb25maWd1cmF0aW9uQ29udGV4dC5zZWFyY2hfZm9yX2NvbmZp
Z3VyYXRpb24pOiBTZWFyY2ggZm9yIGNvbmZpZ3VyYXRpb24gd2l0aCBicmFuY2guCisgICAgICAg
IChDb25maWd1cmF0aW9uQ29udGV4dC5zZWFyY2hfZm9yX3JlY2VudF9jb25maWd1cmF0aW9uKTog
RGl0dG8uCisgICAgICAgIChDb25maWd1cmF0aW9uQ29udGV4dC5zZWxlY3RfZnJvbV90YWJsZV93
aXRoX2NvbmZpZ3VyYXRpb25zKTogRGl0dG8uCisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvbW9kZWwvY29uZmlndXJhdGlvbl9jb250ZXh0X3VuaXR0ZXN0LnB5OgorICAgICAgICAo
Q29uZmlndXJhdGlvbkNvbnRleHRUZXN0LnJlZ2lzdGVyX2NvbmZpZ3VyYXRpb25zKTogUmVnaXN0
ZXIgd2l0aCBicmFuY2guCisgICAgICAgIChDb25maWd1cmF0aW9uQ29udGV4dFRlc3QudGVzdF9y
ZXBvcHVsYXRlX3JlY2VudCk6IENvbnN0cnVjdCBDb25maWd1cmF0aW9uQ29udGV4dCB3aXRoCisg
ICAgICAgIENvbW1pdENvbnRleHQgb2JqZWN0LgorICAgICAgICAqIHJlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L21vZGVsL3VwbG9hZF9jb250ZXh0LnB5OgorICAgICAgICAoVXBsb2FkQ29udGV4dC5T
dWl0ZXNCeUNvbmZpZ3VyYXRpb24pOiBJbmRleCBieSBicmFuY2guCisgICAgICAgIChVcGxvYWRD
b250ZXh0LnVwbG9hZF90ZXN0X3Jlc3VsdHMpOiBSZWdpc3RlciBlYWNoIGNvbmZpZ3VyYXRpb24g
d2l0aCBhIGJyYW5jaC4KKyAgICAgICAgKFVwbG9hZENvbnRleHQuZmluZF9zdWl0ZXMpOiBQYXNz
IGJyYW5jaCB0byBzZWFyY2ggZm9yIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAqIHJlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pzL2RyYXdlci5qczogQ2hlY2sgZm9yIG5ldyBj
b25maWd1cmF0aW9ucyB3aGVuIHRoZSBicmFuY2ggaXMgY2hhbmdlZC4KKyAgICAgICAgKiByZXN1
bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9zdWl0ZV9yZXN1bHRzLmh0bWw6IEFk
ZCBicmFuY2ggdG8gc3VpdGVzIHF1ZXJ5LgorCiAyMDE5LTA5LTA5ICBBYWthc2ggSmFpbiAgPGFh
a2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBFV1MgdGVzdHR1YmUgZW1vamkgZG9lc24n
dCBleGlzdCBvbiBtYWNPUyBNb2phdmUKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L2NvbnRyb2xsZXIvdXBsb2FkX2NvbnRyb2xsZXIucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlci5weQko
cmV2aXNpb24gMjQ5NjcxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJv
bGxlci91cGxvYWRfY29udHJvbGxlci5weQkod29ya2luZyBjb3B5KQpAQCAtMTU5LDEzICsxNTks
MTYgQEAgY2xhc3MgVXBsb2FkQ29udHJvbGxlcihIYXNDb21taXRDb250ZXh0KQogCiAgICAgQHF1
ZXJ5X2FzX2t3YXJncygpCiAgICAgQGNvbmZpZ3VyYXRpb25fZm9yX3F1ZXJ5KCkKLSAgICBkZWYg
c3VpdGVzKHNlbGYsIGNvbmZpZ3VyYXRpb25zPU5vbmUsIHJlY2VudD1Ob25lLCBzdWl0ZT1Ob25l
LCAqKmt3YXJncyk6CisgICAgZGVmIHN1aXRlcyhzZWxmLCBjb25maWd1cmF0aW9ucz1Ob25lLCBy
ZWNlbnQ9Tm9uZSwgc3VpdGU9Tm9uZSwgYnJhbmNoPU5vbmUsICoqa3dhcmdzKToKICAgICAgICAg
QXNzZXJ0UmVxdWVzdC5pc190eXBlKFsnR0VUJ10pCiAgICAgICAgIEFzc2VydFJlcXVlc3QucXVl
cnlfa3dhcmdzX2VtcHR5KCoqa3dhcmdzKQogCiAgICAgICAgIHdpdGggc2VsZi51cGxvYWRfY29u
dGV4dDoKLSAgICAgICAgICAgIHN1aXRlc19ieV9jb25maWcgPSBzZWxmLnVwbG9hZF9jb250ZXh0
LmZpbmRfc3VpdGVzKGNvbmZpZ3VyYXRpb25zPWNvbmZpZ3VyYXRpb25zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZW50
PWJvb2xlYW5fcXVlcnkoKnJlY2VudClbMF0gaWYgcmVjZW50IGVsc2UgVHJ1ZSkKKyAgICAgICAg
ICAgIHN1aXRlc19ieV9jb25maWcgPSBzZWxmLnVwbG9hZF9jb250ZXh0LmZpbmRfc3VpdGVzKAor
ICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPWNvbmZpZ3VyYXRpb25zLAorICAgICAgICAg
ICAgICAgIHJlY2VudD1ib29sZWFuX3F1ZXJ5KCpyZWNlbnQpWzBdIGlmIHJlY2VudCBlbHNlIFRy
dWUsCisgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaFswXSBpZiBicmFuY2ggZWxzZSBOb25l
LAorICAgICAgICAgICAgKQogICAgICAgICAgICAgcmVzdWx0ID0gW10KICAgICAgICAgICAgIGZv
ciBjb25maWcsIGNhbmRpZGF0ZV9zdWl0ZXMgaW4gc3VpdGVzX2J5X2NvbmZpZy5pdGVtcygpOgog
ICAgICAgICAgICAgICAgIHN1aXRlc19mb3JfY29uZmlnID0gW3MgZm9yIHMgaW4gY2FuZGlkYXRl
X3N1aXRlcyBpZiBub3Qgc3VpdGUgb3IgcyBpbiBzdWl0ZV0KSW5kZXg6IFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4dC5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZlX2NvbnRleHQucHkJKHJl
dmlzaW9uIDI0OTY3MSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2Fy
Y2hpdmVfY29udGV4dC5weQkod29ya2luZyBjb3B5KQpAQCAtOTgsMTEgKzk4LDExIEBAIGNsYXNz
IEFyY2hpdmVDb250ZXh0KG9iamVjdCk6CiAgICAgICAgICAgICB1dWlkID0gc2VsZi5jb21taXRf
Y29udGV4dC51dWlkX2Zvcl9jb21taXRzKGNvbW1pdHMpCiAgICAgICAgICAgICB0dGwgPSBpbnQo
KHV1aWQgLy8gQ29tbWl0LlRJTUVTVEFNUF9UT19VVUlEX01VTFRJUExJRVIpICsgc2VsZi50dGxf
c2Vjb25kcyAtIHRpbWUudGltZSgpKSBpZiBzZWxmLnR0bF9zZWNvbmRzIGVsc2UgTm9uZQogCi0g
ICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5yZWdpc3Rlcl9jb25maWd1cmF0
aW9uKGNvbmZpZ3VyYXRpb24sIHRpbWVzdGFtcD10aW1lc3RhbXApCi0KICAgICAgICAgICAgIGZv
ciBicmFuY2ggaW4gc2VsZi5jb21taXRfY29udGV4dC5icmFuY2hfa2V5c19mb3JfY29tbWl0cyhj
b21taXRzKToKKyAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5yZWdp
c3Rlcl9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGJyYW5jaD1icmFuY2gsIHRpbWVzdGFt
cD10aW1lc3RhbXApCisKICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4
dC5pbnNlcnRfcm93X3dpdGhfY29uZmlndXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgVXBs
b2FkQ29udGV4dC5TdWl0ZXNCeUNvbmZpZ3VyYXRpb24uX190YWJsZV9uYW1lX18sIGNvbmZpZ3Vy
YXRpb24sIHN1aXRlPXN1aXRlLCB0dGw9dHRsLAorICAgICAgICAgICAgICAgICAgICBVcGxvYWRD
b250ZXh0LlN1aXRlc0J5Q29uZmlndXJhdGlvbi5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlv
biwgc3VpdGU9c3VpdGUsIGJyYW5jaD1icmFuY2gsIHR0bD10dGwsCiAgICAgICAgICAgICAgICAg
KQogICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0Lmluc2VydF9yb3df
d2l0aF9jb25maWd1cmF0aW9uKAogICAgICAgICAgICAgICAgICAgICBzZWxmLkFyY2hpdmVzQnlD
b21taXQuX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgc3VpdGU9
c3VpdGUsCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb25maWd1
cmF0aW9uX2NvbnRleHQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvbW9kZWwvY29uZmlndXJhdGlvbl9jb250ZXh0LnB5CShyZXZpc2lvbiAyNDk2NzEpCisr
KyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb25maWd1cmF0aW9uX2NvbnRl
eHQucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAgZnJvbSBjYXNzYW5kcmEuY3Fs
ZW5naW5lLm1vZGVscyBpbXBvcnQgTQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgSXRlcmFibGUs
IE9yZGVyZWREaWN0CiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQogZnJvbSByZXN1bHRz
ZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KK2Zyb20g
cmVzdWx0c2RicHkubW9kZWwuY29tbWl0X2NvbnRleHQgaW1wb3J0IENvbW1pdENvbnRleHQKIAog
CiBjbGFzcyBDbHVzdGVyZWRCeUNvbmZpZ3VyYXRpb24oTW9kZWwpOgpAQCAtNjQsNyArNjUsNyBA
QCBjbGFzcyBDb25maWd1cmF0aW9uQ29udGV4dChvYmplY3QpOgogICAgICAgICAgICAgKQogCiAg
ICAgY2xhc3MgQnlQbGF0Zm9ybShNb2RlbCwgQ29uZmlndXJhdGlvbk1vZGVsKToKLSAgICAgICAg
X190YWJsZV9uYW1lX18gPSAnY29uZmlndXJhdGlvbnNfYnlfcGxhdGZvcm0nCisgICAgICAgIF9f
dGFibGVfbmFtZV9fID0gJ2NvbmZpZ3NfYnlfcGxhdGZvcm1fd2l0aF9icmFuY2gnCiAgICAgICAg
IHBsYXRmb3JtID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1
ZSkKICAgICAgICAgc3R5bGUgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWly
ZWQ9RmFsc2UpCiAgICAgICAgIGZsYXZvciA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVl
LCByZXF1aXJlZD1GYWxzZSkKQEAgLTcyLDExICs3MywxMiBAQCBjbGFzcyBDb25maWd1cmF0aW9u
Q29udGV4dChvYmplY3QpOgogICAgICAgICBtb2RlbCA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tl
eT1UcnVlLCByZXF1aXJlZD1GYWxzZSkKICAgICAgICAgaXNfc2ltdWxhdG9yID0gY29sdW1ucy5C
b29sZWFuKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCiAgICAgICAgIHZlcnNpb24g
PSBjb2x1bW5zLkludGVnZXIocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAg
ICAgYnJhbmNoID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUp
CiAgICAgICAgIHZlcnNpb25fbmFtZSA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCBy
ZXF1aXJlZD1GYWxzZSkKICAgICAgICAgbGFzdF9ydW4gPSBjb2x1bW5zLkRhdGVUaW1lKHJlcXVp
cmVkPVRydWUpCiAKICAgICBjbGFzcyBCeVBsYXRmb3JtQW5kVmVyc2lvbihNb2RlbCwgQ29uZmln
dXJhdGlvbk1vZGVsKToKLSAgICAgICAgX190YWJsZV9uYW1lX18gPSAnY29uZmlndXJhdGlvbnNf
YnlfcGxhdGZvcm1fYW5kX3ZlcnNpb24nCisgICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2NvbmZp
Z3NfYnlfcGxhdGZvcm1fYW5kX3ZlcnNpb25fd2l0aF9icmFuY2gnCiAgICAgICAgIHBsYXRmb3Jt
ID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKICAgICAg
ICAgdmVyc2lvbiA9IGNvbHVtbnMuSW50ZWdlcihwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVk
PVRydWUpCiAgICAgICAgIHN0eWxlID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJl
cXVpcmVkPUZhbHNlKQpAQCAtODQsMTEgKzg2LDEyIEBAIGNsYXNzIENvbmZpZ3VyYXRpb25Db250
ZXh0KG9iamVjdCk6CiAgICAgICAgIGFyY2hpdGVjdHVyZSA9IGNvbHVtbnMuVGV4dChwcmltYXJ5
X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQogICAgICAgICBtb2RlbCA9IGNvbHVtbnMuVGV4dChw
cmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1GYWxzZSkKICAgICAgICAgaXNfc2ltdWxhdG9yID0g
Y29sdW1ucy5Cb29sZWFuKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisgICAgICAg
IGJyYW5jaCA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQog
ICAgICAgICB2ZXJzaW9uX25hbWUgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVx
dWlyZWQ9RmFsc2UpCiAgICAgICAgIGxhc3RfcnVuID0gY29sdW1ucy5EYXRlVGltZShyZXF1aXJl
ZD1UcnVlKQogCiAgICAgY2xhc3MgQnlBcmNoaXRlY3R1cmUoTW9kZWwsIENvbmZpZ3VyYXRpb25N
b2RlbCk6Ci0gICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2NvbmZpZ3VyYXRpb25zX2J5X2FyY2hp
dGVjdHVyZScKKyAgICAgICAgX190YWJsZV9uYW1lX18gPSAnY29uZmlnc19ieV9hcmNoaXRlY3R1
cmVfd2l0aF9icmFuY2gnCiAgICAgICAgIGFyY2hpdGVjdHVyZSA9IGNvbHVtbnMuVGV4dChwYXJ0
aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCiAgICAgICAgIHN0eWxlID0gY29sdW1ucy5U
ZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPUZhbHNlKQogICAgICAgICBwbGF0Zm9ybSA9
IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQpAQCAtOTYsMTEg
Kzk5LDEyIEBAIGNsYXNzIENvbmZpZ3VyYXRpb25Db250ZXh0KG9iamVjdCk6CiAgICAgICAgIG1v
ZGVsID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPUZhbHNlKQogICAg
ICAgICBmbGF2b3IgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFs
c2UpCiAgICAgICAgIGlzX3NpbXVsYXRvciA9IGNvbHVtbnMuQm9vbGVhbihwcmltYXJ5X2tleT1U
cnVlLCByZXF1aXJlZD1UcnVlKQorICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocHJpbWFy
eV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKICAgICAgICAgdmVyc2lvbl9uYW1lID0gY29sdW1u
cy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPUZhbHNlKQogICAgICAgICBsYXN0X3J1
biA9IGNvbHVtbnMuRGF0ZVRpbWUocmVxdWlyZWQ9VHJ1ZSkKIAogICAgIGNsYXNzIEJ5TW9kZWwo
TW9kZWwsIENvbmZpZ3VyYXRpb25Nb2RlbCk6Ci0gICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2Nv
bmZpZ3VyYXRpb25zX2J5X21vZGVsJworICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdjb25maWdz
X2J5X21vZGVsX3dpdGhfYnJhbmNoJwogICAgICAgICBtb2RlbCA9IGNvbHVtbnMuVGV4dChwYXJ0
aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCiAgICAgICAgIHZlcnNpb24gPSBjb2x1bW5z
LkludGVnZXIocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKICAgICAgICAgc3R5bGUg
PSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCkBAIC0xMDgs
NiArMTEyLDcgQEAgY2xhc3MgQ29uZmlndXJhdGlvbkNvbnRleHQob2JqZWN0KToKICAgICAgICAg
Zmxhdm9yID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPUZhbHNlKQog
ICAgICAgICBhcmNoaXRlY3R1cmUgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVx
dWlyZWQ9VHJ1ZSkKICAgICAgICAgaXNfc2ltdWxhdG9yID0gY29sdW1ucy5Cb29sZWFuKHByaW1h
cnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisgICAgICAgIGJyYW5jaCA9IGNvbHVtbnMuVGV4
dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQogICAgICAgICB2ZXJzaW9uX25hbWUg
PSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCiAgICAgICAg
IGxhc3RfcnVuID0gY29sdW1ucy5EYXRlVGltZShyZXF1aXJlZD1UcnVlKQogCkBAIC0xMTcsNyAr
MTIyLDYgQEAgY2xhc3MgQ29uZmlndXJhdGlvbkNvbnRleHQob2JqZWN0KToKIAogICAgICAgICBz
ZWxmLnJlZGlzID0gcmVkaXMKICAgICAgICAgc2VsZi5jYXNzYW5kcmEgPSBjYXNzYW5kcmEKLSAg
ICAgICAgc2VsZi5yZXBvc2l0b3JpZXMgPSB7fQogICAgICAgICBzZWxmLmNhY2hlX3RpbWVvdXQg
PSBjYWNoZV90aW1lb3V0CiAKICAgICAgICAgd2l0aCBzZWxmOgpAQCAtMTI4LDcgKzEzMiw3IEBA
IGNsYXNzIENvbmZpZ3VyYXRpb25Db250ZXh0KG9iamVjdCk6CiAKICAgICAgICAgICAgIGZvciBj
b25maWd1cmF0aW9uIGluIHNlbGYuY2Fzc2FuZHJhLnNlbGVjdF9mcm9tX3RhYmxlKHNlbGYuQnlQ
bGF0Zm9ybS5fX3RhYmxlX25hbWVfXyk6CiAgICAgICAgICAgICAgICAgaWYgY29uZmlndXJhdGlv
bi5sYXN0X3J1biA+PSBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKGludCh0aW1lLnRpbWUoKSAt
IGNhY2hlX3RpbWVvdXQpKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVnaXN0ZXJfaW5f
cmVkaXMoY29uZmlndXJhdGlvbi50b19jb25maWd1cmF0aW9uKCksIGNvbmZpZ3VyYXRpb24ubGFz
dF9ydW4pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlZ2lzdGVyX2luX3JlZGlzKGNvbmZp
Z3VyYXRpb24udG9fY29uZmlndXJhdGlvbigpLCBjb25maWd1cmF0aW9uLmJyYW5jaCwgY29uZmln
dXJhdGlvbi5sYXN0X3J1bikKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgIHNl
bGYuY2Fzc2FuZHJhLl9fZW50ZXJfXygpCkBAIC0xMzcsMTYgKzE0MSwxNyBAQCBjbGFzcyBDb25m
aWd1cmF0aW9uQ29udGV4dChvYmplY3QpOgogICAgICAgICBzZWxmLmNhc3NhbmRyYS5fX2V4aXRf
XygqYXJncywgKiprd2FyZ3MpCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX2NvbnZlcnRf
dG9fcmVkaXNfa2V5KGNscywgY29uZmlndXJhdGlvbik6Ci0gICAgICAgIHJldHVybiAnY29uZmln
dXJhdGlvbnM6e306e306e306e306e306e306e306e30nLmZvcm1hdCgKKyAgICBkZWYgX2NvbnZl
cnRfdG9fcmVkaXNfa2V5KGNscywgY29uZmlndXJhdGlvbiwgYnJhbmNoKToKKyAgICAgICAgcmV0
dXJuICdjb25maWdzX3dpdGhfYnJhbmNoOnt9Ont9Ont9Ont9Ont9Ont9Ont9Ont9Ont9Jy5mb3Jt
YXQoCiAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnBsYXRmb3JtIG9yICcqJywgJyonIGlmIGNv
bmZpZ3VyYXRpb24uaXNfc2ltdWxhdG9yIGlzIE5vbmUgZWxzZSAoMSBpZiBjb25maWd1cmF0aW9u
LmlzX3NpbXVsYXRvciBlbHNlIDApLAogICAgICAgICAgICAgJyonIGlmIGNvbmZpZ3VyYXRpb24u
dmVyc2lvbiBpcyBOb25lIGVsc2UgQ29uZmlndXJhdGlvbi5pbnRlZ2VyX3RvX3ZlcnNpb24oY29u
ZmlndXJhdGlvbi52ZXJzaW9uKSwKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24udmVyc2lvbl9u
YW1lIG9yICcqJywKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uYXJjaGl0ZWN0dXJlIG9yICcq
JywgY29uZmlndXJhdGlvbi5tb2RlbCBvciAnKicsCiAgICAgICAgICAgICBjb25maWd1cmF0aW9u
LnN0eWxlIG9yICcqJywgY29uZmlndXJhdGlvbi5mbGF2b3Igb3IgJyonLAorICAgICAgICAgICAg
YnJhbmNoLAogICAgICAgICApCiAKLSAgICBkZWYgX3JlZ2lzdGVyX2luX3JlZGlzKHNlbGYsIGNv
bmZpZ3VyYXRpb24sIHRpbWVzdGFtcCk6CisgICAgZGVmIF9yZWdpc3Rlcl9pbl9yZWRpcyhzZWxm
LCBjb25maWd1cmF0aW9uLCBicmFuY2gsIHRpbWVzdGFtcCk6CiAgICAgICAgIGlmIGlzaW5zdGFu
Y2UodGltZXN0YW1wLCBkYXRldGltZSk6CiAgICAgICAgICAgICB0aW1lc3RhbXAgPSBjYWxlbmRh
ci50aW1lZ20odGltZXN0YW1wLnRpbWV0dXBsZSgpKQogICAgICAgICBleHBpcmF0aW9uID0gaW50
KHNlbGYuY2FjaGVfdGltZW91dCAtICh0aW1lLnRpbWUoKSAtIGludCh0aW1lc3RhbXApKSkKQEAg
LTE1NCwxMSArMTU5LDExIEBAIGNsYXNzIENvbmZpZ3VyYXRpb25Db250ZXh0KG9iamVjdCk6CiAg
ICAgICAgICAgICBzZGsgPSBjb25maWd1cmF0aW9uLnNkawogICAgICAgICAgICAgdHJ5OgogICAg
ICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uc2RrID0gTm9uZQotICAgICAgICAgICAgICAgIHNl
bGYucmVkaXMuc2V0KHNlbGYuX2NvbnZlcnRfdG9fcmVkaXNfa2V5KGNvbmZpZ3VyYXRpb24pLCBj
b25maWd1cmF0aW9uLnRvX2pzb24oKSwgZXg9ZXhwaXJhdGlvbikKKyAgICAgICAgICAgICAgICBz
ZWxmLnJlZGlzLnNldChzZWxmLl9jb252ZXJ0X3RvX3JlZGlzX2tleShjb25maWd1cmF0aW9uLCBi
cmFuY2gpLCBjb25maWd1cmF0aW9uLnRvX2pzb24oKSwgZXg9ZXhwaXJhdGlvbikKICAgICAgICAg
ICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5zZGsgPSBzZGsKIAot
ICAgIGRlZiByZWdpc3Rlcl9jb25maWd1cmF0aW9uKHNlbGYsIGNvbmZpZ3VyYXRpb24sIHRpbWVz
dGFtcD10aW1lLnRpbWUoKSk6CisgICAgZGVmIHJlZ2lzdGVyX2NvbmZpZ3VyYXRpb24oc2VsZiwg
Y29uZmlndXJhdGlvbiwgYnJhbmNoPU5vbmUsIHRpbWVzdGFtcD10aW1lLnRpbWUoKSk6CiAgICAg
ICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbmZpZ3VyYXRpb24sIENvbmZpZ3VyYXRpb24pOgogICAg
ICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7Q29uZmlndXJhdGlvbn0s
IGdvdCB7dHlwZShjb25maWd1cmF0aW9uKX0nKQogICAgICAgICBpZiBub3QgY29uZmlndXJhdGlv
bi5pc19jb21wbGV0ZSgpOgpAQCAtMTY2LDEzICsxNzEsMTUgQEAgY2xhc3MgQ29uZmlndXJhdGlv
bkNvbnRleHQob2JqZWN0KToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodGltZXN0YW1wLCBk
YXRldGltZSk6CiAgICAgICAgICAgICB0aW1lc3RhbXAgPSBkYXRldGltZS51dGNmcm9tdGltZXN0
YW1wKGludCh0aW1lc3RhbXApKQogCisgICAgICAgIGJyYW5jaCA9IGJyYW5jaCBvciBDb21taXRD
b250ZXh0LkRFRkFVTFRfQlJBTkNIX0tFWQorCiAgICAgICAgIHdpdGggc2VsZjoKICAgICAgICAg
ICAgIHRhYmxlc190b19pbnNlcnRfdG8gPSBbc2VsZi5CeVBsYXRmb3JtLl9fdGFibGVfbmFtZV9f
LCBzZWxmLkJ5UGxhdGZvcm1BbmRWZXJzaW9uLl9fdGFibGVfbmFtZV9fLCBzZWxmLkJ5QXJjaGl0
ZWN0dXJlLl9fdGFibGVfbmFtZV9fXQogICAgICAgICAgICAgaWYgY29uZmlndXJhdGlvbi5tb2Rl
bCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0YWJsZXNfdG9faW5zZXJ0X3RvLmFwcGVu
ZChzZWxmLkJ5TW9kZWwuX190YWJsZV9uYW1lX18pCiAgICAgICAgICAgICBmb3IgdGFibGUgaW4g
dGFibGVzX3RvX2luc2VydF90bzoKICAgICAgICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5pbnNl
cnRfcm93KAotICAgICAgICAgICAgICAgICAgICB0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAg
dGFibGUsIGJyYW5jaD1icmFuY2gsCiAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPWNvbmZp
Z3VyYXRpb24ucGxhdGZvcm0sIGlzX3NpbXVsYXRvcj1jb25maWd1cmF0aW9uLmlzX3NpbXVsYXRv
ciwKICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj1jb25maWd1cmF0aW9uLnZlcnNpb24sIHZl
cnNpb25fbmFtZT1jb25maWd1cmF0aW9uLnZlcnNpb25fbmFtZSBvciAnJywKICAgICAgICAgICAg
ICAgICAgICAgYXJjaGl0ZWN0dXJlPWNvbmZpZ3VyYXRpb24uYXJjaGl0ZWN0dXJlLCBtb2RlbD1j
b25maWd1cmF0aW9uLm1vZGVsIG9yICcnLApAQCAtMTgwLDEzICsxODcsMTMgQEAgY2xhc3MgQ29u
ZmlndXJhdGlvbkNvbnRleHQob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgbGFzdF9ydW49
dGltZXN0YW1wLAogICAgICAgICAgICAgICAgICkKIAotICAgICAgICBzZWxmLl9yZWdpc3Rlcl9p
bl9yZWRpcyhjb25maWd1cmF0aW9uLCB0aW1lc3RhbXApCisgICAgICAgIHNlbGYuX3JlZ2lzdGVy
X2luX3JlZGlzKGNvbmZpZ3VyYXRpb24sIGJyYW5jaCwgdGltZXN0YW1wKQogCi0gICAgZGVmIHNl
YXJjaF9mb3JfY29uZmlndXJhdGlvbihzZWxmLCBjb25maWd1cmF0aW9uKToKKyAgICBkZWYgc2Vh
cmNoX2Zvcl9jb25maWd1cmF0aW9uKHNlbGYsIGNvbmZpZ3VyYXRpb24sIGJyYW5jaD1Ob25lKToK
ICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29uZmlndXJhdGlvbiwgQ29uZmlndXJhdGlvbik6
CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtDb25maWd1cmF0
aW9ufSwgZ290IHt0eXBlKGNvbmZpZ3VyYXRpb24pfScpCiAKLSAgICAgICAga3dhcmdzID0ge30K
KyAgICAgICAga3dhcmdzID0gZGljdChicmFuY2g9YnJhbmNoIG9yIENvbW1pdENvbnRleHQuREVG
QVVMVF9CUkFOQ0hfS0VZKQogICAgICAgICBmb3IgbWVtYmVyIGluIENvbmZpZ3VyYXRpb24uUkVR
VUlSRURfTUVNQkVSUyArIENvbmZpZ3VyYXRpb24uT1BUSU9OQUxfTUVNQkVSUzoKICAgICAgICAg
ICAgIGlmIGdldGF0dHIoY29uZmlndXJhdGlvbiwgbWVtYmVyKToKICAgICAgICAgICAgICAgICBr
d2FyZ3NbbWVtYmVyXSA9IGdldGF0dHIoY29uZmlndXJhdGlvbiwgbWVtYmVyKQpAQCAtMjA1LDEy
ICsyMTIsMTIgQEAgY2xhc3MgQ29uZmlndXJhdGlvbkNvbnRleHQob2JqZWN0KToKICAgICAgICAg
d2l0aCBzZWxmOgogICAgICAgICAgICAgcmV0dXJuIFttb2RlbC50b19jb25maWd1cmF0aW9uKCkg
Zm9yIG1vZGVsIGluIHNlbGYuY2Fzc2FuZHJhLnNlbGVjdF9mcm9tX3RhYmxlKHRhYmxlLl9fdGFi
bGVfbmFtZV9fLCAqKmt3YXJncyldCiAKLSAgICBkZWYgc2VhcmNoX2Zvcl9yZWNlbnRfY29uZmln
dXJhdGlvbihzZWxmLCBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24oKSk6CisgICAgZGVmIHNl
YXJjaF9mb3JfcmVjZW50X2NvbmZpZ3VyYXRpb24oc2VsZiwgY29uZmlndXJhdGlvbj1Db25maWd1
cmF0aW9uKCksIGJyYW5jaD1Ob25lKToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29uZmln
dXJhdGlvbiwgQ29uZmlndXJhdGlvbik6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidF
eHBlY3RlZCB0eXBlIHtDb25maWd1cmF0aW9ufSwgZ290IHt0eXBlKGNvbmZpZ3VyYXRpb24pfScp
CiAKICAgICAgICAgY29uZmlndXJhdGlvbnMgPSBbXQotICAgICAgICBmb3Iga2V5IGluIHNlbGYu
cmVkaXMuc2Nhbl9pdGVyKHNlbGYuX2NvbnZlcnRfdG9fcmVkaXNfa2V5KGNvbmZpZ3VyYXRpb24p
KToKKyAgICAgICAgZm9yIGtleSBpbiBzZWxmLnJlZGlzLnNjYW5faXRlcihzZWxmLl9jb252ZXJ0
X3RvX3JlZGlzX2tleShjb25maWd1cmF0aW9uLCBicmFuY2ggb3IgQ29tbWl0Q29udGV4dC5ERUZB
VUxUX0JSQU5DSF9LRVkpKToKICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IENvbmZpZ3VyYXRpb24u
ZnJvbV9qc29uKHNlbGYucmVkaXMuZ2V0KGtleS5kZWNvZGUoJ3V0Zi04JykpLmRlY29kZSgndXRm
LTgnKSkKICAgICAgICAgICAgIGlmIGNhbmRpZGF0ZSA9PSBjb25maWd1cmF0aW9uOgogICAgICAg
ICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLmFwcGVuZChjYW5kaWRhdGUpCkBAIC0yMzYsNyArMjQz
LDcgQEAgY2xhc3MgQ29uZmlndXJhdGlvbkNvbnRleHQob2JqZWN0KToKICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGVzPWpzb24uZHVtcHMoYXR0cmlidXRlc19kaWN0KSwKICAgICAgICAgICAgICAg
ICAqKmt3YXJncykKIAotICAgIGRlZiBzZWxlY3RfZnJvbV90YWJsZV93aXRoX2NvbmZpZ3VyYXRp
b25zKHNlbGYsIHRhYmxlX25hbWUsIGNvbmZpZ3VyYXRpb25zPU5vbmUsIHJlY2VudD1UcnVlLCBs
aW1pdD0xMDAsICoqa3dhcmdzKToKKyAgICBkZWYgc2VsZWN0X2Zyb21fdGFibGVfd2l0aF9jb25m
aWd1cmF0aW9ucyhzZWxmLCB0YWJsZV9uYW1lLCBjb25maWd1cmF0aW9ucz1Ob25lLCBicmFuY2g9
Tm9uZSwgcmVjZW50PVRydWUsIGxpbWl0PTEwMCwgKiprd2FyZ3MpOgogICAgICAgICBpZiBub3Qg
aXNpbnN0YW5jZShjb25maWd1cmF0aW9ucywgSXRlcmFibGUpOgogICAgICAgICAgICAgcmFpc2Ug
VHlwZUVycm9yKCdFeHBlY3RlZCBjb25maWd1cmF0aW9ucyB0byBiZSBpdGVyYWJsZScpCiAgICAg
ICAgIGlmIG5vdCBjb25maWd1cmF0aW9uczoKQEAgLTI1MCw5ICsyNTcsOSBAQCBjbGFzcyBDb25m
aWd1cmF0aW9uQ29udGV4dChvYmplY3QpOgogICAgICAgICAgICAgICAgIGlmIGNvbmZpZy5pc19j
b21wbGV0ZSgpOgogICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZV9jb25maWd1cmF0aW9ucy5h
ZGQoY29uZmlnKQogICAgICAgICAgICAgICAgIGVsaWYgcmVjZW50OgotICAgICAgICAgICAgICAg
ICAgICBbY29tcGxldGVfY29uZmlndXJhdGlvbnMuYWRkKGVsZW1lbnQpIGZvciBlbGVtZW50IGlu
IHNlbGYuc2VhcmNoX2Zvcl9yZWNlbnRfY29uZmlndXJhdGlvbihjb25maWcpXQorICAgICAgICAg
ICAgICAgICAgICBbY29tcGxldGVfY29uZmlndXJhdGlvbnMuYWRkKGVsZW1lbnQpIGZvciBlbGVt
ZW50IGluIHNlbGYuc2VhcmNoX2Zvcl9yZWNlbnRfY29uZmlndXJhdGlvbihjb25maWcsIGJyYW5j
aD1icmFuY2gpXQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIFtj
b21wbGV0ZV9jb25maWd1cmF0aW9ucy5hZGQoZWxlbWVudCkgZm9yIGVsZW1lbnQgaW4gc2VsZi5z
ZWFyY2hfZm9yX2NvbmZpZ3VyYXRpb24oY29uZmlnKV0KKyAgICAgICAgICAgICAgICAgICAgW2Nv
bXBsZXRlX2NvbmZpZ3VyYXRpb25zLmFkZChlbGVtZW50KSBmb3IgZWxlbWVudCBpbiBzZWxmLnNl
YXJjaF9mb3JfY29uZmlndXJhdGlvbihjb25maWcsIGJyYW5jaD1icmFuY2gpXQogCiAgICAgICAg
ICAgICByZXN1bHRzID0ge30KICAgICAgICAgICAgIGZvciBjb25maWd1cmF0aW9uIGluIGNvbXBs
ZXRlX2NvbmZpZ3VyYXRpb25zOgpAQCAtMjY4LDYgKzI3NSw3IEBAIGNsYXNzIENvbmZpZ3VyYXRp
b25Db250ZXh0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZT1jb25m
aWd1cmF0aW9uLmFyY2hpdGVjdHVyZSwKICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcz1q
c29uLmR1bXBzKGF0dHJpYnV0ZXNfZGljdCksCiAgICAgICAgICAgICAgICAgICAgIGxpbWl0PWxp
bWl0LAorICAgICAgICAgICAgICAgICAgICBicmFuY2g9YnJhbmNoIG9yIENvbW1pdENvbnRleHQu
REVGQVVMVF9CUkFOQ0hfS0VZLAogICAgICAgICAgICAgICAgICAgICAqKmt3YXJncykKICAgICAg
ICAgICAgICAgICBpZiBsZW4ocm93cykgPT0gMDoKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWUKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbmZpZ3VyYXRp
b25fY29udGV4dF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9tb2RlbC9jb25maWd1cmF0aW9uX2NvbnRleHRfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDI0OTY3MSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbmZp
Z3VyYXRpb25fY29udGV4dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQCBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvCiBmcm9tIGZha2Vy
ZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCiBmcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRp
cwogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgQ2Fzc2Fu
ZHJhQ29udGV4dAorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jb21taXRfY29udGV4dCBpbXBvcnQg
Q29tbWl0Q29udGV4dAogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jb25maWd1cmF0aW9uX2NvbnRl
eHQgaW1wb3J0IENvbmZpZ3VyYXRpb25Db250ZXh0LCBDbHVzdGVyZWRCeUNvbmZpZ3VyYXRpb24K
IGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9j
a0Nhc3NhbmRyYUNvbnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2Vy
X3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCkBAIC03NSw5ICs3Niw5IEBA
IGNsYXNzIENvbmZpZ3VyYXRpb25Db250ZXh0VGVzdChXYWl0Rm9yRG8KICAgICAgICAgZm9yIGNv
bmZpZ3VyYXRpb24gaW4gc2VsZi5DT05GSUdVUkFUSU9OUzoKICAgICAgICAgICAgIGlmIChjb25m
aWd1cmF0aW9uLnBsYXRmb3JtID09ICdNYWMnIGFuZCBjb25maWd1cmF0aW9uLnZlcnNpb24gPD0g
Q29uZmlndXJhdGlvbi52ZXJzaW9uX3RvX2ludGVnZXIoJzEwLjEzJykpIFwKICAgICAgICAgICAg
ICAgIG9yIChjb25maWd1cmF0aW9uLnBsYXRmb3JtID09ICdpT1MnIGFuZCBjb25maWd1cmF0aW9u
LnZlcnNpb24gPD0gQ29uZmlndXJhdGlvbi52ZXJzaW9uX3RvX2ludGVnZXIoJzExJykpOgotICAg
ICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UucmVnaXN0ZXJfY29uZmlndXJhdGlvbihjb25maWd1
cmF0aW9uLCBvbGQpCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9jb25m
aWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIE5vbmUsIG9sZCkKICAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9jb25maWd1cmF0aW9uKGNvbmZp
Z3VyYXRpb24sIGN1cnJlbnQpCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rl
cl9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIE5vbmUsIGN1cnJlbnQpCiAKICAgICBAV2Fp
dEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmlj
dFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBkZWYgdGVz
dF9pbnZhbGlkX2NvbmZpZ3VyYXRpb24oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRy
YT1DYXNzYW5kcmFDb250ZXh0KToKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L21vZGVsL3VwbG9hZF9jb250ZXh0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L21vZGVsL3VwbG9hZF9jb250ZXh0LnB5CShyZXZpc2lvbiAyNDk2NzEpCisr
KyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC91cGxvYWRfY29udGV4dC5weQko
d29ya2luZyBjb3B5KQpAQCAtNDMsOCArNDMsOSBAQCBjbGFzcyBVcGxvYWRDb250ZXh0KG9iamVj
dCk6CiAgICAgTUFYX1RBU0tTX0lOX1NDQU4gPSAxMAogCiAgICAgY2xhc3MgU3VpdGVzQnlDb25m
aWd1cmF0aW9uKENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbik6Ci0gICAgICAgIF9fdGFibGVfbmFt
ZV9fID0gJ3N1aXRlc19ieV9jb25maWd1cmF0aW9uJworICAgICAgICBfX3RhYmxlX25hbWVfXyA9
ICdzdWl0ZXNfYnlfY29uZmlndXJhdGlvbl9hbmRfYnJhbmNoJwogICAgICAgICBzdWl0ZSA9IGNv
bHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQorICAgICAgICBicmFu
Y2ggPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKIAogICAg
IGNsYXNzIFVwbG9hZHNCeUNvbmZpZ3VyYXRpb24oQ2x1c3RlcmVkQnlDb25maWd1cmF0aW9uKToK
ICAgICAgICAgX190YWJsZV9uYW1lX18gPSAndXBsb2Fkc19ieV9jb25maWd1cmF0aW9uXzAxJwpA
QCAtMjI3LDExICsyMjgsMTEgQEAgY2xhc3MgVXBsb2FkQ29udGV4dChvYmplY3QpOgogICAgICAg
ICBicmFuY2hlcyA9IHNlbGYuY29tbWl0X2NvbnRleHQuYnJhbmNoX2tleXNfZm9yX2NvbW1pdHMo
Y29tbWl0cykKIAogICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICBzZWxmLmNvbmZpZ3Vy
YXRpb25fY29udGV4dC5yZWdpc3Rlcl9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIHRpbWVz
dGFtcD10aW1lc3RhbXApCi0KICAgICAgICAgICAgIGZvciBicmFuY2ggaW4gYnJhbmNoZXM6Cisg
ICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQucmVnaXN0ZXJfY29uZmln
dXJhdGlvbihjb25maWd1cmF0aW9uLCBicmFuY2g9YnJhbmNoLCB0aW1lc3RhbXA9dGltZXN0YW1w
KQorCiAgICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jv
d193aXRoX2NvbmZpZ3VyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuU3VpdGVzQnlD
b25maWd1cmF0aW9uLl9fdGFibGVfbmFtZV9fLCBjb25maWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5TdWl0ZXNCeUNvbmZpZ3VyYXRpb24uX190YWJsZV9u
YW1lX18sIGNvbmZpZ3VyYXRpb24sIHN1aXRlPXN1aXRlLCBicmFuY2g9YnJhbmNoLAogICAgICAg
ICAgICAgICAgICAgICB0dGw9aW50KCh1dWlkIC8vIENvbW1pdC5USU1FU1RBTVBfVE9fVVVJRF9N
VUxUSVBMSUVSKSArIHNlbGYudHRsX3NlY29uZHMgLSB0aW1lLnRpbWUoKSkgaWYgc2VsZi50dGxf
c2Vjb25kcyBlbHNlIE5vbmUsCiAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgIHNl
bGYuY29uZmlndXJhdGlvbl9jb250ZXh0Lmluc2VydF9yb3dfd2l0aF9jb25maWd1cmF0aW9uKApA
QCAtMjU4LDExICsyNTksMTEgQEAgY2xhc3MgVXBsb2FkQ29udGV4dChvYmplY3QpOgogICAgICAg
ICAgICAgICAgICkuaXRlbXMoKX0pCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKLSAgICBk
ZWYgZmluZF9zdWl0ZXMoc2VsZiwgY29uZmlndXJhdGlvbnMsIHJlY2VudD1UcnVlLCBsaW1pdD0x
MDApOgorICAgIGRlZiBmaW5kX3N1aXRlcyhzZWxmLCBjb25maWd1cmF0aW9ucywgYnJhbmNoPU5v
bmUsIHJlY2VudD1UcnVlLCBsaW1pdD0xMDApOgogICAgICAgICB3aXRoIHNlbGY6CiAgICAgICAg
ICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgIGNvbmZpZzogW3Jvdy5zdWl0ZSBmb3Igcm93
IGluIHJvd3NdIGZvciBjb25maWcsIHJvd3MgaW4gc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQu
c2VsZWN0X2Zyb21fdGFibGVfd2l0aF9jb25maWd1cmF0aW9ucygKLSAgICAgICAgICAgICAgICAg
ICAgc2VsZi5TdWl0ZXNCeUNvbmZpZ3VyYXRpb24uX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRp
b25zPWNvbmZpZ3VyYXRpb25zLCByZWNlbnQ9cmVjZW50LCBsaW1pdD1saW1pdCwKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5TdWl0ZXNCeUNvbmZpZ3VyYXRpb24uX190YWJsZV9uYW1lX18sIGNv
bmZpZ3VyYXRpb25zPWNvbmZpZ3VyYXRpb25zLCBicmFuY2g9YnJhbmNoLCByZWNlbnQ9cmVjZW50
LCBsaW1pdD1saW1pdCwKICAgICAgICAgICAgICAgICApLml0ZW1zKCkKICAgICAgICAgICAgIH0K
IApJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMvZHJh
d2VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcv
c3RhdGljL2pzL2RyYXdlci5qcwkocmV2aXNpb24gMjQ5NjcxKQorKysgVG9vbHMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMvZHJhd2VyLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0yMiw3ICsyMiw3IEBACiAvLyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGlt
cG9ydCB7RE9NLCBSRUZ9IGZyb20gJy9saWJyYXJ5L2pzL1JlZi5qcyc7Ci1pbXBvcnQge1F1ZXJ5
TW9kaWZpZXJ9IGZyb20gJy9hc3NldHMvanMvY29tbW9uLmpzJzsKK2ltcG9ydCB7cXVlcnlUb1Bh
cmFtcywgcGFyYW1zVG9RdWVyeSwgUXVlcnlNb2RpZmllciwgfSBmcm9tICcvYXNzZXRzL2pzL2Nv
bW1vbi5qcyc7CiBpbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy9hc3NldHMvanMvY29uZmln
dXJhdGlvbi5qcycKIAogZnVuY3Rpb24gc2V0RW5hYmxlUmVjdXJzaXZlKGVsZW1lbnQsIHN0YXRl
KSB7CkBAIC0xMTYsNiArMTE2LDMwIEBAIGZ1bmN0aW9uIERyYXdlcihjb250cm9scyA9IFtdLCBv
bkNvbGxhcHMKICAgICAgICAgPC9kaXY+YDsKIH0KIAorbGV0IGNvbmZpZ3VyYXRpb25zID0gW10K
K2xldCBjb25maWd1cmF0aW9uc0RlZmluZWRDYWxsYmFja3MgPSBbXTsKK2Z1bmN0aW9uIHJlZnJl
c2hDb25maWd1cmF0aW9ucygpIHsKKyAgICBsZXQgcGFyYW1zID0gcXVlcnlUb1BhcmFtcyhkb2N1
bWVudC5VUkwuc3BsaXQoJz8nKVsxXSk7CisgICAgbGV0IHF1ZXJ5UGFyYW1zID0ge307CisgICAg
aWYgKHBhcmFtcy5icmFuY2gpCisgICAgICAgIHF1ZXJ5UGFyYW1zLmJyYW5jaCA9IHBhcmFtcy5i
cmFuY2g7CisKKyAgICBjb25zdCBxdWVyeSA9IHBhcmFtc1RvUXVlcnkocXVlcnlQYXJhbXMpOwor
ICAgIGZldGNoKHF1ZXJ5ID8gJ2FwaS9zdWl0ZXM/JyArIHF1ZXJ5OiAnYXBpL3N1aXRlcycpLnRo
ZW4ocmVzcG9uc2UgPT4geworICAgICAgICByZXNwb25zZS5qc29uKCkudGhlbihqc29uID0+IHsK
KyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zID0gW107CisgICAgICAgICAgICBqc29uLmZvckVh
Y2gocGFpciA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgY29uZmlnID0gbmV3IENvbmZpZ3Vy
YXRpb24ocGFpclswXSk7CisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMucHVzaChjb25m
aWcpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBjb25maWd1cmF0aW9uc0RlZmluZWRD
YWxsYmFja3MuZm9yRWFjaChjYWxsYmFjayA9PiB7Y2FsbGJhY2soKTt9KTsKKyAgICAgICAgfSk7
CisgICAgfSkuY2F0Y2goZXJyb3IgPT4geworICAgICAgICAvLyBJZiB0aGUgbG9hZCBmYWlscywg
bG9nIHRoZSBlcnJvciBhbmQgY29udGludWUKKyAgICAgICAgY29uc29sZS5lcnJvcihKU09OLnN0
cmluZ2lmeShlcnJvciwgbnVsbCwgNCkpOworICAgIH0pOworfQorCiBmdW5jdGlvbiBCcmFuY2hT
ZWxlY3RvcihjYWxsYmFjaykgewogICAgIGNvbnN0IGRlZmF1bHRCcmFuY2hlcyA9IG5ldyBTZXQo
Wyd0cnVuaycsICdtYXN0ZXInXSk7CiAgICAgY29uc3QgZGVmYXVsdEJyYW5jaEtleSA9IFsuLi5k
ZWZhdWx0QnJhbmNoZXNdLnNvcnQoKS5qb2luKCcvJyk7CkBAIC0xMzAsNiArMTU0LDcgQEAgZnVu
Y3Rpb24gQnJhbmNoU2VsZWN0b3IoY2FsbGJhY2spIHsKICAgICAgICAgICAgICAgICAgICAgYnJh
bmNoTW9kaWZpZXIucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBicmFuY2hNb2RpZmllci5yZXBsYWNlKGJyYW5jaCk7CisgICAgICAgICAgICAgICAg
cmVmcmVzaENvbmZpZ3VyYXRpb25zKCk7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSwKQEAgLTIwOSwyMSArMjM0LDcgQEAgZnVuY3Rpb24gTGlt
aXRTbGlkZXIoY2FsbGJhY2ssIG1heCA9IDEwMAogfQogCiBmdW5jdGlvbiBDb25maWd1cmF0aW9u
U2VsZWN0b3JzKGNhbGxiYWNrKSB7Ci0gICAgbGV0IGNvbmZpZ3VyYXRpb25zID0gW10KLSAgICBs
ZXQgY29uZmlndXJhdGlvbnNEZWZpbmVkQ2FsbGJhY2tzID0gW107Ci0gICAgZmV0Y2goJ2FwaS9z
dWl0ZXMnKS50aGVuKHJlc3BvbnNlID0+IHsKLSAgICAgICAgcmVzcG9uc2UuanNvbigpLnRoZW4o
anNvbiA9PiB7Ci0gICAgICAgICAgICBqc29uLmZvckVhY2gocGFpciA9PiB7Ci0gICAgICAgICAg
ICAgICAgY29uc3QgY29uZmlnID0gbmV3IENvbmZpZ3VyYXRpb24ocGFpclswXSk7Ci0gICAgICAg
ICAgICAgICAgY29uZmlndXJhdGlvbnMucHVzaChjb25maWcpOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICBjb25maWd1cmF0aW9uc0RlZmluZWRDYWxsYmFja3MuZm9yRWFjaChjYWxsYmFj
ayA9PiB7Y2FsbGJhY2soKTt9KTsKLSAgICAgICAgfSk7Ci0gICAgfSkuY2F0Y2goZXJyb3IgPT4g
ewotICAgICAgICAvLyBJZiB0aGUgbG9hZCBmYWlscywgbG9nIHRoZSBlcnJvciBhbmQgY29udGlu
dWUKLSAgICAgICAgY29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeShlcnJvciwgbnVsbCwgNCkp
OwotICAgIH0pOwotCisgICAgcmVmcmVzaENvbmZpZ3VyYXRpb25zKCk7CiAgICAgY29uc3QgZWxl
bWVudHMgPSBbCiAgICAgICAgIHsncXVlcnknOiAncGxhdGZvcm0nLCAnbmFtZSc6ICdQbGF0Zm9y
bSd9LAogICAgICAgICB7J3F1ZXJ5JzogJ3ZlcnNpb25fbmFtZScsICduYW1lJzogJ1ZlcnNpb24g
TmFtZSd9LApJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0
ZXMvc3VpdGVfcmVzdWx0cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL3N1aXRlX3Jlc3VsdHMuaHRtbAkocmV2aXNpb24gMjQ5
NjcxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvc3Vp
dGVfcmVzdWx0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDggQEAgY2xhc3Mg
TWFpblZpZXcgewogICAgICAgICAgICAgaWYgKHBhcmFtc1ttZW1iZXJdKQogICAgICAgICAgICAg
ICAgIHN1aXRlUGFyYW1zW21lbWJlcl0gPSBwYXJhbXNbbWVtYmVyXTsKICAgICAgICAgfSk7Cisg
ICAgICAgIGlmIChwYXJhbXMuYnJhbmNoKQorICAgICAgICAgICAgc3VpdGVQYXJhbXMuYnJhbmNo
ID0gcGFyYW1zLmJyYW5jaDsKICAgICAgICAgbGV0IHF1ZXJ5ID0gcGFyYW1zVG9RdWVyeShzdWl0
ZVBhcmFtcyk7CiAgICAgICAgIGZldGNoKHF1ZXJ5ID8gJ2FwaS9zdWl0ZXM/JyArIHF1ZXJ5OiAn
YXBpL3N1aXRlcycpLnRoZW4ocmVzcG9uc2UgPT4gewogICAgICAgICAgICAgcmVzcG9uc2UuanNv
bigpLnRoZW4oanNvbiA9PiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378871</attachid>
            <date>2019-09-16 10:37:35 -0700</date>
            <delta_ts>2019-09-16 15:40:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201561-20190916103733.patch</filename>
            <type>text/plain</type>
            <size>24094</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0OTkwMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM5IEBACisyMDE5LTA5LTE2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IENvbmZpZ3VyYXRpb25zIHNob3VsZCBi
ZSBicmFuY2ggc3BlY2lmaWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMTU2MQorCisgICAgICAgIFJldmlld2VkIGJ5IERld2VpIFpodS4KKworICAg
ICAgICBQYXJ0aXRpb24gY29uZmlndXJhdGlvbnMgYnkgYnJhbmNoIGluIGJvdGggUmVkaXMgYW5k
IENhc3NhbmRyYS4KKworICAgICAgICAqIHJlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xs
ZXIvdXBsb2FkX2NvbnRyb2xsZXIucHk6CisgICAgICAgIChVcGxvYWRDb250cm9sbGVyLnN1aXRl
cyk6IEFsbG93IHRoZSB1c2VyIHRvIHNwZWNpZnkgYnJhbmNoZXMgd2hpbGUgbGlzdGluZyBzdWl0
ZXMuCisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250
ZXh0LnB5OgorICAgICAgICAoQXJjaGl2ZUNvbnRleHQucmVnaXN0ZXIpOiBSZWdpc3RlciBlYWNo
IGNvbmZpZ3VyYXRpb24gd2l0aCBhIGJyYW5jaC4KKyAgICAgICAgKiByZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9tb2RlbC9jb25maWd1cmF0aW9uX2NvbnRleHQucHk6CisgICAgICAgIChDb25maWd1
cmF0aW9uQ29udGV4dC5CeVBsYXRmb3JtKTogSW5kZXggYnkgYnJhbmNoLgorICAgICAgICAoQ29u
ZmlndXJhdGlvbkNvbnRleHQuQnlQbGF0Zm9ybUFuZFZlcnNpb24pOiBEaXR0by4KKyAgICAgICAg
KENvbmZpZ3VyYXRpb25Db250ZXh0LkJ5QXJjaGl0ZWN0dXJlKTogRGl0dG8uCisgICAgICAgIChD
b25maWd1cmF0aW9uQ29udGV4dC5CeU1vZGVsKTogRGl0dG8uCisgICAgICAgIChDb25maWd1cmF0
aW9uQ29udGV4dC5fX2luaXRfXyk6IFBvcHVsYXRlIFJlZGlzIGNhY2hlIHdpdGggYnJhbmNoLgor
ICAgICAgICAoQ29uZmlndXJhdGlvbkNvbnRleHQuX2NvbnZlcnRfdG9fcmVkaXNfa2V5KTogQWNj
ZXB0IGJyYW5jaCBpbiBSZWRpcyBrZXkuCisgICAgICAgIChDb25maWd1cmF0aW9uQ29udGV4dC5f
cmVnaXN0ZXJfaW5fcmVkaXMpOiBSZWdpc3RlciBjb25maWd1cmF0aW9uIHdpdGggYnJhbmNoLgor
ICAgICAgICAoQ29uZmlndXJhdGlvbkNvbnRleHQucmVnaXN0ZXJfY29uZmlndXJhdGlvbik6IERp
dHRvLgorICAgICAgICAoQ29uZmlndXJhdGlvbkNvbnRleHQuc2VhcmNoX2Zvcl9jb25maWd1cmF0
aW9uKTogU2VhcmNoIGZvciBjb25maWd1cmF0aW9uIHdpdGggYnJhbmNoLgorICAgICAgICAoQ29u
ZmlndXJhdGlvbkNvbnRleHQuc2VhcmNoX2Zvcl9yZWNlbnRfY29uZmlndXJhdGlvbik6IERpdHRv
LgorICAgICAgICAoQ29uZmlndXJhdGlvbkNvbnRleHQuc2VsZWN0X2Zyb21fdGFibGVfd2l0aF9j
b25maWd1cmF0aW9ucyk6IERpdHRvLgorICAgICAgICAqIHJlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L21vZGVsL2NvbmZpZ3VyYXRpb25fY29udGV4dF91bml0dGVzdC5weToKKyAgICAgICAgKENvbmZp
Z3VyYXRpb25Db250ZXh0VGVzdC5yZWdpc3Rlcl9jb25maWd1cmF0aW9ucyk6IFJlZ2lzdGVyIHdp
dGggYnJhbmNoLgorICAgICAgICAoQ29uZmlndXJhdGlvbkNvbnRleHRUZXN0LnRlc3RfcmVwb3B1
bGF0ZV9yZWNlbnQpOiBDb25zdHJ1Y3QgQ29uZmlndXJhdGlvbkNvbnRleHQgd2l0aAorICAgICAg
ICBDb21taXRDb250ZXh0IG9iamVjdC4KKyAgICAgICAgKiByZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9tb2RlbC91cGxvYWRfY29udGV4dC5weToKKyAgICAgICAgKFVwbG9hZENvbnRleHQuU3VpdGVz
QnlDb25maWd1cmF0aW9uKTogSW5kZXggYnkgYnJhbmNoLgorICAgICAgICAoVXBsb2FkQ29udGV4
dC51cGxvYWRfdGVzdF9yZXN1bHRzKTogUmVnaXN0ZXIgZWFjaCBjb25maWd1cmF0aW9uIHdpdGgg
YSBicmFuY2guCisgICAgICAgIChVcGxvYWRDb250ZXh0LmZpbmRfc3VpdGVzKTogUGFzcyBicmFu
Y2ggdG8gc2VhcmNoIGZvciBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgKiByZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS92aWV3L3N0YXRpYy9qcy9kcmF3ZXIuanM6IENoZWNrIGZvciBuZXcgY29uZmln
dXJhdGlvbnMgd2hlbiB0aGUgYnJhbmNoIGlzIGNoYW5nZWQuCisgICAgICAgICogcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvc3VpdGVfcmVzdWx0cy5odG1sOiBBZGQgYnJh
bmNoIHRvIHN1aXRlcyBxdWVyeS4KKwogMjAxOS0wOS0xNiAgRGF2aWQgS2lsemVyICA8ZGRraWx6
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBsZWFrcyBpbiBEdW1wUmVuZGVyVHJlZSBhbmQg
V2ViS2l0VGVzdFJ1bm5lcgpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29u
dHJvbGxlci91cGxvYWRfY29udHJvbGxlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3VwbG9hZF9jb250cm9sbGVyLnB5CShyZXZpc2lv
biAyNDk5MDIpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3Vw
bG9hZF9jb250cm9sbGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNTksMTMgKzE1OSwxNiBAQCBj
bGFzcyBVcGxvYWRDb250cm9sbGVyKEhhc0NvbW1pdENvbnRleHQpCiAKICAgICBAcXVlcnlfYXNf
a3dhcmdzKCkKICAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQotICAgIGRlZiBzdWl0ZXMo
c2VsZiwgY29uZmlndXJhdGlvbnM9Tm9uZSwgcmVjZW50PU5vbmUsIHN1aXRlPU5vbmUsICoqa3dh
cmdzKToKKyAgICBkZWYgc3VpdGVzKHNlbGYsIGNvbmZpZ3VyYXRpb25zPU5vbmUsIHJlY2VudD1O
b25lLCBzdWl0ZT1Ob25lLCBicmFuY2g9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICBBc3NlcnRS
ZXF1ZXN0LmlzX3R5cGUoWydHRVQnXSkKICAgICAgICAgQXNzZXJ0UmVxdWVzdC5xdWVyeV9rd2Fy
Z3NfZW1wdHkoKiprd2FyZ3MpCiAKICAgICAgICAgd2l0aCBzZWxmLnVwbG9hZF9jb250ZXh0Ogot
ICAgICAgICAgICAgc3VpdGVzX2J5X2NvbmZpZyA9IHNlbGYudXBsb2FkX2NvbnRleHQuZmluZF9z
dWl0ZXMoY29uZmlndXJhdGlvbnM9Y29uZmlndXJhdGlvbnMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlbnQ9Ym9vbGVh
bl9xdWVyeSgqcmVjZW50KVswXSBpZiByZWNlbnQgZWxzZSBUcnVlKQorICAgICAgICAgICAgc3Vp
dGVzX2J5X2NvbmZpZyA9IHNlbGYudXBsb2FkX2NvbnRleHQuZmluZF9zdWl0ZXMoCisgICAgICAg
ICAgICAgICAgY29uZmlndXJhdGlvbnM9Y29uZmlndXJhdGlvbnMsCisgICAgICAgICAgICAgICAg
cmVjZW50PWJvb2xlYW5fcXVlcnkoKnJlY2VudClbMF0gaWYgcmVjZW50IGVsc2UgVHJ1ZSwKKyAg
ICAgICAgICAgICAgICBicmFuY2g9YnJhbmNoWzBdIGlmIGJyYW5jaCBlbHNlIE5vbmUsCisgICAg
ICAgICAgICApCiAgICAgICAgICAgICByZXN1bHQgPSBbXQogICAgICAgICAgICAgZm9yIGNvbmZp
ZywgY2FuZGlkYXRlX3N1aXRlcyBpbiBzdWl0ZXNfYnlfY29uZmlnLml0ZW1zKCk6CiAgICAgICAg
ICAgICAgICAgc3VpdGVzX2Zvcl9jb25maWcgPSBbcyBmb3IgcyBpbiBjYW5kaWRhdGVfc3VpdGVz
IGlmIG5vdCBzdWl0ZSBvciBzIGluIHN1aXRlXQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4dC5weQkocmV2aXNpb24g
MjQ5OTAyKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9j
b250ZXh0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC05OCwxMSArOTgsMTEgQEAgY2xhc3MgQXJjaGl2
ZUNvbnRleHQob2JqZWN0KToKICAgICAgICAgICAgIHV1aWQgPSBzZWxmLmNvbW1pdF9jb250ZXh0
LnV1aWRfZm9yX2NvbW1pdHMoY29tbWl0cykKICAgICAgICAgICAgIHR0bCA9IGludCgodXVpZCAv
LyBDb21taXQuVElNRVNUQU1QX1RPX1VVSURfTVVMVElQTElFUikgKyBzZWxmLnR0bF9zZWNvbmRz
IC0gdGltZS50aW1lKCkpIGlmIHNlbGYudHRsX3NlY29uZHMgZWxzZSBOb25lCiAKLSAgICAgICAg
ICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0LnJlZ2lzdGVyX2NvbmZpZ3VyYXRpb24oY29u
ZmlndXJhdGlvbiwgdGltZXN0YW1wPXRpbWVzdGFtcCkKLQogICAgICAgICAgICAgZm9yIGJyYW5j
aCBpbiBzZWxmLmNvbW1pdF9jb250ZXh0LmJyYW5jaF9rZXlzX2Zvcl9jb21taXRzKGNvbW1pdHMp
OgorICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0LnJlZ2lzdGVyX2Nv
bmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgYnJhbmNoPWJyYW5jaCwgdGltZXN0YW1wPXRpbWVz
dGFtcCkKKwogICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0Lmluc2Vy
dF9yb3dfd2l0aF9jb25maWd1cmF0aW9uKAotICAgICAgICAgICAgICAgICAgICBVcGxvYWRDb250
ZXh0LlN1aXRlc0J5Q29uZmlndXJhdGlvbi5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlvbiwg
c3VpdGU9c3VpdGUsIHR0bD10dGwsCisgICAgICAgICAgICAgICAgICAgIFVwbG9hZENvbnRleHQu
U3VpdGVzQnlDb25maWd1cmF0aW9uLl9fdGFibGVfbmFtZV9fLCBjb25maWd1cmF0aW9uLCBzdWl0
ZT1zdWl0ZSwgYnJhbmNoPWJyYW5jaCwgdHRsPXR0bCwKICAgICAgICAgICAgICAgICApCiAgICAg
ICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2Nv
bmZpZ3VyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuQXJjaGl2ZXNCeUNvbW1pdC5f
X3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwK
SW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbmZpZ3VyYXRpb25f
Y29udGV4dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9t
b2RlbC9jb25maWd1cmF0aW9uX2NvbnRleHQucHkJKHJldmlzaW9uIDI0OTkwMikKKysrIFRvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbmZpZ3VyYXRpb25fY29udGV4dC5weQko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQCBmcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUu
bW9kZWxzIGltcG9ydCBNCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBJdGVyYWJsZSwgT3JkZXJl
ZERpY3QKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCiBmcm9tIHJlc3VsdHNkYnB5LmNv
bnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29uZmlndXJhdGlvbgorZnJvbSByZXN1bHRz
ZGJweS5tb2RlbC5jb21taXRfY29udGV4dCBpbXBvcnQgQ29tbWl0Q29udGV4dAogCiAKIGNsYXNz
IENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbihNb2RlbCk6CkBAIC02NCw3ICs2NSw3IEBAIGNsYXNz
IENvbmZpZ3VyYXRpb25Db250ZXh0KG9iamVjdCk6CiAgICAgICAgICAgICApCiAKICAgICBjbGFz
cyBCeVBsYXRmb3JtKE1vZGVsLCBDb25maWd1cmF0aW9uTW9kZWwpOgotICAgICAgICBfX3RhYmxl
X25hbWVfXyA9ICdjb25maWd1cmF0aW9uc19ieV9wbGF0Zm9ybScKKyAgICAgICAgX190YWJsZV9u
YW1lX18gPSAnY29uZmlnc19ieV9wbGF0Zm9ybV93aXRoX2JyYW5jaCcKICAgICAgICAgcGxhdGZv
cm0gPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQogICAg
ICAgICBzdHlsZSA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1GYWxz
ZSkKICAgICAgICAgZmxhdm9yID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVp
cmVkPUZhbHNlKQpAQCAtNzIsMTEgKzczLDEyIEBAIGNsYXNzIENvbmZpZ3VyYXRpb25Db250ZXh0
KG9iamVjdCk6CiAgICAgICAgIG1vZGVsID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUs
IHJlcXVpcmVkPUZhbHNlKQogICAgICAgICBpc19zaW11bGF0b3IgPSBjb2x1bW5zLkJvb2xlYW4o
cHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKICAgICAgICAgdmVyc2lvbiA9IGNvbHVt
bnMuSW50ZWdlcihwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQorICAgICAgICBicmFu
Y2ggPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKICAgICAg
ICAgdmVyc2lvbl9uYW1lID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVk
PUZhbHNlKQogICAgICAgICBsYXN0X3J1biA9IGNvbHVtbnMuRGF0ZVRpbWUocmVxdWlyZWQ9VHJ1
ZSkKIAogICAgIGNsYXNzIEJ5UGxhdGZvcm1BbmRWZXJzaW9uKE1vZGVsLCBDb25maWd1cmF0aW9u
TW9kZWwpOgotICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdjb25maWd1cmF0aW9uc19ieV9wbGF0
Zm9ybV9hbmRfdmVyc2lvbicKKyAgICAgICAgX190YWJsZV9uYW1lX18gPSAnY29uZmlnc19ieV9w
bGF0Zm9ybV9hbmRfdmVyc2lvbl93aXRoX2JyYW5jaCcKICAgICAgICAgcGxhdGZvcm0gPSBjb2x1
bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQogICAgICAgICB2ZXJz
aW9uID0gY29sdW1ucy5JbnRlZ2VyKHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkK
ICAgICAgICAgc3R5bGUgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9
RmFsc2UpCkBAIC04NCwxMSArODYsMTIgQEAgY2xhc3MgQ29uZmlndXJhdGlvbkNvbnRleHQob2Jq
ZWN0KToKICAgICAgICAgYXJjaGl0ZWN0dXJlID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRy
dWUsIHJlcXVpcmVkPVRydWUpCiAgICAgICAgIG1vZGVsID0gY29sdW1ucy5UZXh0KHByaW1hcnlf
a2V5PVRydWUsIHJlcXVpcmVkPUZhbHNlKQogICAgICAgICBpc19zaW11bGF0b3IgPSBjb2x1bW5z
LkJvb2xlYW4ocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgYnJhbmNo
ID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCiAgICAgICAg
IHZlcnNpb25fbmFtZSA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1G
YWxzZSkKICAgICAgICAgbGFzdF9ydW4gPSBjb2x1bW5zLkRhdGVUaW1lKHJlcXVpcmVkPVRydWUp
CiAKICAgICBjbGFzcyBCeUFyY2hpdGVjdHVyZShNb2RlbCwgQ29uZmlndXJhdGlvbk1vZGVsKToK
LSAgICAgICAgX190YWJsZV9uYW1lX18gPSAnY29uZmlndXJhdGlvbnNfYnlfYXJjaGl0ZWN0dXJl
JworICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdjb25maWdzX2J5X2FyY2hpdGVjdHVyZV93aXRo
X2JyYW5jaCcKICAgICAgICAgYXJjaGl0ZWN0dXJlID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9r
ZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKICAgICAgICAgc3R5bGUgPSBjb2x1bW5zLlRleHQocHJp
bWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCiAgICAgICAgIHBsYXRmb3JtID0gY29sdW1u
cy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCkBAIC05NiwxMSArOTksMTIg
QEAgY2xhc3MgQ29uZmlndXJhdGlvbkNvbnRleHQob2JqZWN0KToKICAgICAgICAgbW9kZWwgPSBj
b2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCiAgICAgICAgIGZs
YXZvciA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1GYWxzZSkKICAg
ICAgICAgaXNfc2ltdWxhdG9yID0gY29sdW1ucy5Cb29sZWFuKHByaW1hcnlfa2V5PVRydWUsIHJl
cXVpcmVkPVRydWUpCisgICAgICAgIGJyYW5jaCA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1U
cnVlLCByZXF1aXJlZD1UcnVlKQogICAgICAgICB2ZXJzaW9uX25hbWUgPSBjb2x1bW5zLlRleHQo
cHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCiAgICAgICAgIGxhc3RfcnVuID0gY29s
dW1ucy5EYXRlVGltZShyZXF1aXJlZD1UcnVlKQogCiAgICAgY2xhc3MgQnlNb2RlbChNb2RlbCwg
Q29uZmlndXJhdGlvbk1vZGVsKToKLSAgICAgICAgX190YWJsZV9uYW1lX18gPSAnY29uZmlndXJh
dGlvbnNfYnlfbW9kZWwnCisgICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2NvbmZpZ3NfYnlfbW9k
ZWxfd2l0aF9icmFuY2gnCiAgICAgICAgIG1vZGVsID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9r
ZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKICAgICAgICAgdmVyc2lvbiA9IGNvbHVtbnMuSW50ZWdl
cihwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQogICAgICAgICBzdHlsZSA9IGNvbHVt
bnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1GYWxzZSkKQEAgLTEwOCw2ICsxMTIs
NyBAQCBjbGFzcyBDb25maWd1cmF0aW9uQ29udGV4dChvYmplY3QpOgogICAgICAgICBmbGF2b3Ig
PSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9RmFsc2UpCiAgICAgICAg
IGFyY2hpdGVjdHVyZSA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1U
cnVlKQogICAgICAgICBpc19zaW11bGF0b3IgPSBjb2x1bW5zLkJvb2xlYW4ocHJpbWFyeV9rZXk9
VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgYnJhbmNoID0gY29sdW1ucy5UZXh0KHByaW1h
cnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCiAgICAgICAgIHZlcnNpb25fbmFtZSA9IGNvbHVt
bnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1GYWxzZSkKICAgICAgICAgbGFzdF9y
dW4gPSBjb2x1bW5zLkRhdGVUaW1lKHJlcXVpcmVkPVRydWUpCiAKQEAgLTExNyw3ICsxMjIsNiBA
QCBjbGFzcyBDb25maWd1cmF0aW9uQ29udGV4dChvYmplY3QpOgogCiAgICAgICAgIHNlbGYucmVk
aXMgPSByZWRpcwogICAgICAgICBzZWxmLmNhc3NhbmRyYSA9IGNhc3NhbmRyYQotICAgICAgICBz
ZWxmLnJlcG9zaXRvcmllcyA9IHt9CiAgICAgICAgIHNlbGYuY2FjaGVfdGltZW91dCA9IGNhY2hl
X3RpbWVvdXQKIAogICAgICAgICB3aXRoIHNlbGY6CkBAIC0xMjgsNyArMTMyLDcgQEAgY2xhc3Mg
Q29uZmlndXJhdGlvbkNvbnRleHQob2JqZWN0KToKIAogICAgICAgICAgICAgZm9yIGNvbmZpZ3Vy
YXRpb24gaW4gc2VsZi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUoc2VsZi5CeVBsYXRmb3Jt
Ll9fdGFibGVfbmFtZV9fKToKICAgICAgICAgICAgICAgICBpZiBjb25maWd1cmF0aW9uLmxhc3Rf
cnVuID49IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoaW50KHRpbWUudGltZSgpIC0gY2FjaGVf
dGltZW91dCkpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWdpc3Rlcl9pbl9yZWRpcyhj
b25maWd1cmF0aW9uLnRvX2NvbmZpZ3VyYXRpb24oKSwgY29uZmlndXJhdGlvbi5sYXN0X3J1bikK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVnaXN0ZXJfaW5fcmVkaXMoY29uZmlndXJhdGlv
bi50b19jb25maWd1cmF0aW9uKCksIGNvbmZpZ3VyYXRpb24uYnJhbmNoLCBjb25maWd1cmF0aW9u
Lmxhc3RfcnVuKQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICAgc2VsZi5jYXNz
YW5kcmEuX19lbnRlcl9fKCkKQEAgLTEzNywxNiArMTQxLDE3IEBAIGNsYXNzIENvbmZpZ3VyYXRp
b25Db250ZXh0KG9iamVjdCk6CiAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLl9fZXhpdF9fKCphcmdz
LCAqKmt3YXJncykKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfY29udmVydF90b19yZWRp
c19rZXkoY2xzLCBjb25maWd1cmF0aW9uKToKLSAgICAgICAgcmV0dXJuICdjb25maWd1cmF0aW9u
czp7fTp7fTp7fTp7fTp7fTp7fTp7fTp7fScuZm9ybWF0KAorICAgIGRlZiBfY29udmVydF90b19y
ZWRpc19rZXkoY2xzLCBjb25maWd1cmF0aW9uLCBicmFuY2gpOgorICAgICAgICByZXR1cm4gJ2Nv
bmZpZ3Nfd2l0aF9icmFuY2g6e306e306e306e306e306e306e306e306e30nLmZvcm1hdCgKICAg
ICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucGxhdGZvcm0gb3IgJyonLCAnKicgaWYgY29uZmlndXJh
dGlvbi5pc19zaW11bGF0b3IgaXMgTm9uZSBlbHNlICgxIGlmIGNvbmZpZ3VyYXRpb24uaXNfc2lt
dWxhdG9yIGVsc2UgMCksCiAgICAgICAgICAgICAnKicgaWYgY29uZmlndXJhdGlvbi52ZXJzaW9u
IGlzIE5vbmUgZWxzZSBDb25maWd1cmF0aW9uLmludGVnZXJfdG9fdmVyc2lvbihjb25maWd1cmF0
aW9uLnZlcnNpb24pLAogICAgICAgICAgICAgY29uZmlndXJhdGlvbi52ZXJzaW9uX25hbWUgb3Ig
JyonLAogICAgICAgICAgICAgY29uZmlndXJhdGlvbi5hcmNoaXRlY3R1cmUgb3IgJyonLCBjb25m
aWd1cmF0aW9uLm1vZGVsIG9yICcqJywKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uc3R5bGUg
b3IgJyonLCBjb25maWd1cmF0aW9uLmZsYXZvciBvciAnKicsCisgICAgICAgICAgICBicmFuY2gs
CiAgICAgICAgICkKIAotICAgIGRlZiBfcmVnaXN0ZXJfaW5fcmVkaXMoc2VsZiwgY29uZmlndXJh
dGlvbiwgdGltZXN0YW1wKToKKyAgICBkZWYgX3JlZ2lzdGVyX2luX3JlZGlzKHNlbGYsIGNvbmZp
Z3VyYXRpb24sIGJyYW5jaCwgdGltZXN0YW1wKToKICAgICAgICAgaWYgaXNpbnN0YW5jZSh0aW1l
c3RhbXAsIGRhdGV0aW1lKToKICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGNhbGVuZGFyLnRpbWVn
bSh0aW1lc3RhbXAudGltZXR1cGxlKCkpCiAgICAgICAgIGV4cGlyYXRpb24gPSBpbnQoc2VsZi5j
YWNoZV90aW1lb3V0IC0gKHRpbWUudGltZSgpIC0gaW50KHRpbWVzdGFtcCkpKQpAQCAtMTU0LDEx
ICsxNTksMTEgQEAgY2xhc3MgQ29uZmlndXJhdGlvbkNvbnRleHQob2JqZWN0KToKICAgICAgICAg
ICAgIHNkayA9IGNvbmZpZ3VyYXRpb24uc2RrCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAg
ICAgICAgY29uZmlndXJhdGlvbi5zZGsgPSBOb25lCi0gICAgICAgICAgICAgICAgc2VsZi5yZWRp
cy5zZXQoc2VsZi5fY29udmVydF90b19yZWRpc19rZXkoY29uZmlndXJhdGlvbiksIGNvbmZpZ3Vy
YXRpb24udG9fanNvbigpLCBleD1leHBpcmF0aW9uKQorICAgICAgICAgICAgICAgIHNlbGYucmVk
aXMuc2V0KHNlbGYuX2NvbnZlcnRfdG9fcmVkaXNfa2V5KGNvbmZpZ3VyYXRpb24sIGJyYW5jaCks
IGNvbmZpZ3VyYXRpb24udG9fanNvbigpLCBleD1leHBpcmF0aW9uKQogICAgICAgICAgICAgZmlu
YWxseToKICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnNkayA9IHNkawogCi0gICAgZGVm
IHJlZ2lzdGVyX2NvbmZpZ3VyYXRpb24oc2VsZiwgY29uZmlndXJhdGlvbiwgdGltZXN0YW1wPXRp
bWUudGltZSgpKToKKyAgICBkZWYgcmVnaXN0ZXJfY29uZmlndXJhdGlvbihzZWxmLCBjb25maWd1
cmF0aW9uLCBicmFuY2g9Tm9uZSwgdGltZXN0YW1wPXRpbWUudGltZSgpKToKICAgICAgICAgaWYg
bm90IGlzaW5zdGFuY2UoY29uZmlndXJhdGlvbiwgQ29uZmlndXJhdGlvbik6CiAgICAgICAgICAg
ICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtDb25maWd1cmF0aW9ufSwgZ290IHt0
eXBlKGNvbmZpZ3VyYXRpb24pfScpCiAgICAgICAgIGlmIG5vdCBjb25maWd1cmF0aW9uLmlzX2Nv
bXBsZXRlKCk6CkBAIC0xNjYsMTMgKzE3MSwxNSBAQCBjbGFzcyBDb25maWd1cmF0aW9uQ29udGV4
dChvYmplY3QpOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0aW1lc3RhbXAsIGRhdGV0aW1l
KToKICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoaW50
KHRpbWVzdGFtcCkpCiAKKyAgICAgICAgYnJhbmNoID0gYnJhbmNoIG9yIENvbW1pdENvbnRleHQu
REVGQVVMVF9CUkFOQ0hfS0VZCisKICAgICAgICAgd2l0aCBzZWxmOgogICAgICAgICAgICAgdGFi
bGVzX3RvX2luc2VydF90byA9IFtzZWxmLkJ5UGxhdGZvcm0uX190YWJsZV9uYW1lX18sIHNlbGYu
QnlQbGF0Zm9ybUFuZFZlcnNpb24uX190YWJsZV9uYW1lX18sIHNlbGYuQnlBcmNoaXRlY3R1cmUu
X190YWJsZV9uYW1lX19dCiAgICAgICAgICAgICBpZiBjb25maWd1cmF0aW9uLm1vZGVsIGlzIG5v
dCBOb25lOgogICAgICAgICAgICAgICAgIHRhYmxlc190b19pbnNlcnRfdG8uYXBwZW5kKHNlbGYu
QnlNb2RlbC5fX3RhYmxlX25hbWVfXykKICAgICAgICAgICAgIGZvciB0YWJsZSBpbiB0YWJsZXNf
dG9faW5zZXJ0X3RvOgogICAgICAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmluc2VydF9yb3co
Ci0gICAgICAgICAgICAgICAgICAgIHRhYmxlLAorICAgICAgICAgICAgICAgICAgICB0YWJsZSwg
YnJhbmNoPWJyYW5jaCwKICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09Y29uZmlndXJhdGlv
bi5wbGF0Zm9ybSwgaXNfc2ltdWxhdG9yPWNvbmZpZ3VyYXRpb24uaXNfc2ltdWxhdG9yLAogICAg
ICAgICAgICAgICAgICAgICB2ZXJzaW9uPWNvbmZpZ3VyYXRpb24udmVyc2lvbiwgdmVyc2lvbl9u
YW1lPWNvbmZpZ3VyYXRpb24udmVyc2lvbl9uYW1lIG9yICcnLAogICAgICAgICAgICAgICAgICAg
ICBhcmNoaXRlY3R1cmU9Y29uZmlndXJhdGlvbi5hcmNoaXRlY3R1cmUsIG1vZGVsPWNvbmZpZ3Vy
YXRpb24ubW9kZWwgb3IgJycsCkBAIC0xODAsMTMgKzE4NywxMyBAQCBjbGFzcyBDb25maWd1cmF0
aW9uQ29udGV4dChvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBsYXN0X3J1bj10aW1lc3Rh
bXAsCiAgICAgICAgICAgICAgICAgKQogCi0gICAgICAgIHNlbGYuX3JlZ2lzdGVyX2luX3JlZGlz
KGNvbmZpZ3VyYXRpb24sIHRpbWVzdGFtcCkKKyAgICAgICAgc2VsZi5fcmVnaXN0ZXJfaW5fcmVk
aXMoY29uZmlndXJhdGlvbiwgYnJhbmNoLCB0aW1lc3RhbXApCiAKLSAgICBkZWYgc2VhcmNoX2Zv
cl9jb25maWd1cmF0aW9uKHNlbGYsIGNvbmZpZ3VyYXRpb24pOgorICAgIGRlZiBzZWFyY2hfZm9y
X2NvbmZpZ3VyYXRpb24oc2VsZiwgY29uZmlndXJhdGlvbiwgYnJhbmNoPU5vbmUpOgogICAgICAg
ICBpZiBub3QgaXNpbnN0YW5jZShjb25maWd1cmF0aW9uLCBDb25maWd1cmF0aW9uKToKICAgICAg
ICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4cGVjdGVkIHR5cGUge0NvbmZpZ3VyYXRpb259LCBn
b3Qge3R5cGUoY29uZmlndXJhdGlvbil9JykKIAotICAgICAgICBrd2FyZ3MgPSB7fQorICAgICAg
ICBrd2FyZ3MgPSBkaWN0KGJyYW5jaD1icmFuY2ggb3IgQ29tbWl0Q29udGV4dC5ERUZBVUxUX0JS
QU5DSF9LRVkpCiAgICAgICAgIGZvciBtZW1iZXIgaW4gQ29uZmlndXJhdGlvbi5SRVFVSVJFRF9N
RU1CRVJTICsgQ29uZmlndXJhdGlvbi5PUFRJT05BTF9NRU1CRVJTOgogICAgICAgICAgICAgaWYg
Z2V0YXR0cihjb25maWd1cmF0aW9uLCBtZW1iZXIpOgogICAgICAgICAgICAgICAgIGt3YXJnc1tt
ZW1iZXJdID0gZ2V0YXR0cihjb25maWd1cmF0aW9uLCBtZW1iZXIpCkBAIC0yMDUsMTIgKzIxMiwx
MiBAQCBjbGFzcyBDb25maWd1cmF0aW9uQ29udGV4dChvYmplY3QpOgogICAgICAgICB3aXRoIHNl
bGY6CiAgICAgICAgICAgICByZXR1cm4gW21vZGVsLnRvX2NvbmZpZ3VyYXRpb24oKSBmb3IgbW9k
ZWwgaW4gc2VsZi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUodGFibGUuX190YWJsZV9uYW1l
X18sICoqa3dhcmdzKV0KIAotICAgIGRlZiBzZWFyY2hfZm9yX3JlY2VudF9jb25maWd1cmF0aW9u
KHNlbGYsIGNvbmZpZ3VyYXRpb249Q29uZmlndXJhdGlvbigpKToKKyAgICBkZWYgc2VhcmNoX2Zv
cl9yZWNlbnRfY29uZmlndXJhdGlvbihzZWxmLCBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24o
KSwgYnJhbmNoPU5vbmUpOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb25maWd1cmF0aW9u
LCBDb25maWd1cmF0aW9uKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4cGVjdGVk
IHR5cGUge0NvbmZpZ3VyYXRpb259LCBnb3Qge3R5cGUoY29uZmlndXJhdGlvbil9JykKIAogICAg
ICAgICBjb25maWd1cmF0aW9ucyA9IFtdCi0gICAgICAgIGZvciBrZXkgaW4gc2VsZi5yZWRpcy5z
Y2FuX2l0ZXIoc2VsZi5fY29udmVydF90b19yZWRpc19rZXkoY29uZmlndXJhdGlvbikpOgorICAg
ICAgICBmb3Iga2V5IGluIHNlbGYucmVkaXMuc2Nhbl9pdGVyKHNlbGYuX2NvbnZlcnRfdG9fcmVk
aXNfa2V5KGNvbmZpZ3VyYXRpb24sIGJyYW5jaCBvciBDb21taXRDb250ZXh0LkRFRkFVTFRfQlJB
TkNIX0tFWSkpOgogICAgICAgICAgICAgY2FuZGlkYXRlID0gQ29uZmlndXJhdGlvbi5mcm9tX2pz
b24oc2VsZi5yZWRpcy5nZXQoa2V5LmRlY29kZSgndXRmLTgnKSkuZGVjb2RlKCd1dGYtOCcpKQog
ICAgICAgICAgICAgaWYgY2FuZGlkYXRlID09IGNvbmZpZ3VyYXRpb246CiAgICAgICAgICAgICAg
ICAgY29uZmlndXJhdGlvbnMuYXBwZW5kKGNhbmRpZGF0ZSkKQEAgLTIzNiw3ICsyNDMsNyBAQCBj
bGFzcyBDb25maWd1cmF0aW9uQ29udGV4dChvYmplY3QpOgogICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZXM9anNvbi5kdW1wcyhhdHRyaWJ1dGVzX2RpY3QpLAogICAgICAgICAgICAgICAgICoqa3dh
cmdzKQogCi0gICAgZGVmIHNlbGVjdF9mcm9tX3RhYmxlX3dpdGhfY29uZmlndXJhdGlvbnMoc2Vs
ZiwgdGFibGVfbmFtZSwgY29uZmlndXJhdGlvbnM9Tm9uZSwgcmVjZW50PVRydWUsIGxpbWl0PTEw
MCwgKiprd2FyZ3MpOgorICAgIGRlZiBzZWxlY3RfZnJvbV90YWJsZV93aXRoX2NvbmZpZ3VyYXRp
b25zKHNlbGYsIHRhYmxlX25hbWUsIGNvbmZpZ3VyYXRpb25zPU5vbmUsIGJyYW5jaD1Ob25lLCBy
ZWNlbnQ9VHJ1ZSwgbGltaXQ9MTAwLCAqKmt3YXJncyk6CiAgICAgICAgIGlmIG5vdCBpc2luc3Rh
bmNlKGNvbmZpZ3VyYXRpb25zLCBJdGVyYWJsZSk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJy
b3IoJ0V4cGVjdGVkIGNvbmZpZ3VyYXRpb25zIHRvIGJlIGl0ZXJhYmxlJykKICAgICAgICAgaWYg
bm90IGNvbmZpZ3VyYXRpb25zOgpAQCAtMjUwLDkgKzI1Nyw5IEBAIGNsYXNzIENvbmZpZ3VyYXRp
b25Db250ZXh0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgaWYgY29uZmlnLmlzX2NvbXBsZXRl
KCk6CiAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlX2NvbmZpZ3VyYXRpb25zLmFkZChjb25m
aWcpCiAgICAgICAgICAgICAgICAgZWxpZiByZWNlbnQ6Ci0gICAgICAgICAgICAgICAgICAgIFtj
b21wbGV0ZV9jb25maWd1cmF0aW9ucy5hZGQoZWxlbWVudCkgZm9yIGVsZW1lbnQgaW4gc2VsZi5z
ZWFyY2hfZm9yX3JlY2VudF9jb25maWd1cmF0aW9uKGNvbmZpZyldCisgICAgICAgICAgICAgICAg
ICAgIFtjb21wbGV0ZV9jb25maWd1cmF0aW9ucy5hZGQoZWxlbWVudCkgZm9yIGVsZW1lbnQgaW4g
c2VsZi5zZWFyY2hfZm9yX3JlY2VudF9jb25maWd1cmF0aW9uKGNvbmZpZywgYnJhbmNoPWJyYW5j
aCldCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgW2NvbXBsZXRl
X2NvbmZpZ3VyYXRpb25zLmFkZChlbGVtZW50KSBmb3IgZWxlbWVudCBpbiBzZWxmLnNlYXJjaF9m
b3JfY29uZmlndXJhdGlvbihjb25maWcpXQorICAgICAgICAgICAgICAgICAgICBbY29tcGxldGVf
Y29uZmlndXJhdGlvbnMuYWRkKGVsZW1lbnQpIGZvciBlbGVtZW50IGluIHNlbGYuc2VhcmNoX2Zv
cl9jb25maWd1cmF0aW9uKGNvbmZpZywgYnJhbmNoPWJyYW5jaCldCiAKICAgICAgICAgICAgIHJl
c3VsdHMgPSB7fQogICAgICAgICAgICAgZm9yIGNvbmZpZ3VyYXRpb24gaW4gY29tcGxldGVfY29u
ZmlndXJhdGlvbnM6CkBAIC0yNjgsNiArMjc1LDcgQEAgY2xhc3MgQ29uZmlndXJhdGlvbkNvbnRl
eHQob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlPWNvbmZpZ3VyYXRp
b24uYXJjaGl0ZWN0dXJlLAogICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzPWpzb24uZHVt
cHMoYXR0cmlidXRlc19kaWN0KSwKICAgICAgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCisg
ICAgICAgICAgICAgICAgICAgIGJyYW5jaD1icmFuY2ggb3IgQ29tbWl0Q29udGV4dC5ERUZBVUxU
X0JSQU5DSF9LRVksCiAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQogICAgICAgICAgICAg
ICAgIGlmIGxlbihyb3dzKSA9PSAwOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQpJbmRl
eDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29uZmlndXJhdGlvbl9jb250
ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L21vZGVsL2NvbmZpZ3VyYXRpb25fY29udGV4dF91bml0dGVzdC5weQkocmV2aXNpb24gMjQ5
OTAyKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29uZmlndXJhdGlv
bl9jb250ZXh0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBAIGZy
b20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW8KIGZyb20gZmFrZXJlZGlzIGlt
cG9ydCBGYWtlU3RyaWN0UmVkaXMKIGZyb20gcmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCiBmcm9t
IHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250
ZXh0Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNvbW1pdF9jb250ZXh0IGltcG9ydCBDb21taXRD
b250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNvbmZpZ3VyYXRpb25fY29udGV4dCBpbXBv
cnQgQ29uZmlndXJhdGlvbkNvbnRleHQsIENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbgogZnJvbSBy
ZXN1bHRzZGJweS5tb2RlbC5tb2NrX2Nhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2Fu
ZHJhQ29udGV4dAogZnJvbSByZXN1bHRzZGJweS5tb2RlbC53YWl0X2Zvcl9kb2NrZXJfdGVzdF9j
YXNlIGltcG9ydCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UKQEAgLTc1LDkgKzc2LDkgQEAgY2xhc3Mg
Q29uZmlndXJhdGlvbkNvbnRleHRUZXN0KFdhaXRGb3JEbwogICAgICAgICBmb3IgY29uZmlndXJh
dGlvbiBpbiBzZWxmLkNPTkZJR1VSQVRJT05TOgogICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRp
b24ucGxhdGZvcm0gPT0gJ01hYycgYW5kIGNvbmZpZ3VyYXRpb24udmVyc2lvbiA8PSBDb25maWd1
cmF0aW9uLnZlcnNpb25fdG9faW50ZWdlcignMTAuMTMnKSkgXAogICAgICAgICAgICAgICAgb3Ig
KGNvbmZpZ3VyYXRpb24ucGxhdGZvcm0gPT0gJ2lPUycgYW5kIGNvbmZpZ3VyYXRpb24udmVyc2lv
biA8PSBDb25maWd1cmF0aW9uLnZlcnNpb25fdG9faW50ZWdlcignMTEnKSk6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24s
IG9sZCkKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2NvbmZpZ3VyYXRp
b24oY29uZmlndXJhdGlvbiwgYnJhbmNoPU5vbmUsIHRpbWVzdGFtcD1vbGQpCiAgICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UucmVnaXN0ZXJfY29uZmlndXJh
dGlvbihjb25maWd1cmF0aW9uLCBjdXJyZW50KQorICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJh
c2UucmVnaXN0ZXJfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBicmFuY2g9Tm9uZSwgdGlt
ZXN0YW1wPWN1cnJlbnQpCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9f
ZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fz
c2FuZHJhQ29udGV4dCkKICAgICBkZWYgdGVzdF9pbnZhbGlkX2NvbmZpZ3VyYXRpb24oc2VsZiwg
cmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKSW5kZXg6IFRv
b2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3VwbG9hZF9jb250ZXh0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3VwbG9hZF9jb250
ZXh0LnB5CShyZXZpc2lvbiAyNDk5MDIpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9tb2RlbC91cGxvYWRfY29udGV4dC5weQkod29ya2luZyBjb3B5KQpAQCAtNDMsOCArNDMsOSBA
QCBjbGFzcyBVcGxvYWRDb250ZXh0KG9iamVjdCk6CiAgICAgTUFYX1RBU0tTX0lOX1NDQU4gPSAx
MAogCiAgICAgY2xhc3MgU3VpdGVzQnlDb25maWd1cmF0aW9uKENsdXN0ZXJlZEJ5Q29uZmlndXJh
dGlvbik6Ci0gICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ3N1aXRlc19ieV9jb25maWd1cmF0aW9u
JworICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdzdWl0ZXNfYnlfY29uZmlndXJhdGlvbl9hbmRf
YnJhbmNoJwogICAgICAgICBzdWl0ZSA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCBy
ZXF1aXJlZD1UcnVlKQorICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9
VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKIAogICAgIGNsYXNzIFVwbG9hZHNCeUNvbmZpZ3VyYXRpb24o
Q2x1c3RlcmVkQnlDb25maWd1cmF0aW9uKToKICAgICAgICAgX190YWJsZV9uYW1lX18gPSAndXBs
b2Fkc19ieV9jb25maWd1cmF0aW9uXzAxJwpAQCAtMjI3LDExICsyMjgsMTEgQEAgY2xhc3MgVXBs
b2FkQ29udGV4dChvYmplY3QpOgogICAgICAgICBicmFuY2hlcyA9IHNlbGYuY29tbWl0X2NvbnRl
eHQuYnJhbmNoX2tleXNfZm9yX2NvbW1pdHMoY29tbWl0cykKIAogICAgICAgICB3aXRoIHNlbGY6
Ci0gICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5yZWdpc3Rlcl9jb25maWd1
cmF0aW9uKGNvbmZpZ3VyYXRpb24sIHRpbWVzdGFtcD10aW1lc3RhbXApCi0KICAgICAgICAgICAg
IGZvciBicmFuY2ggaW4gYnJhbmNoZXM6CisgICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0
aW9uX2NvbnRleHQucmVnaXN0ZXJfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBicmFuY2g9
YnJhbmNoLCB0aW1lc3RhbXA9dGltZXN0YW1wKQorCiAgICAgICAgICAgICAgICAgc2VsZi5jb25m
aWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCi0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuU3VpdGVzQnlDb25maWd1cmF0aW9uLl9fdGFibGVfbmFtZV9fLCBj
b25maWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5TdWl0
ZXNCeUNvbmZpZ3VyYXRpb24uX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb24sIHN1aXRlPXN1
aXRlLCBicmFuY2g9YnJhbmNoLAogICAgICAgICAgICAgICAgICAgICB0dGw9aW50KCh1dWlkIC8v
IENvbW1pdC5USU1FU1RBTVBfVE9fVVVJRF9NVUxUSVBMSUVSKSArIHNlbGYudHRsX3NlY29uZHMg
LSB0aW1lLnRpbWUoKSkgaWYgc2VsZi50dGxfc2Vjb25kcyBlbHNlIE5vbmUsCiAgICAgICAgICAg
ICAgICAgKQogICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0Lmluc2Vy
dF9yb3dfd2l0aF9jb25maWd1cmF0aW9uKApAQCAtMjU4LDExICsyNTksMTEgQEAgY2xhc3MgVXBs
b2FkQ29udGV4dChvYmplY3QpOgogICAgICAgICAgICAgICAgICkuaXRlbXMoKX0pCiAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0CiAKLSAgICBkZWYgZmluZF9zdWl0ZXMoc2VsZiwgY29uZmlndXJh
dGlvbnMsIHJlY2VudD1UcnVlLCBsaW1pdD0xMDApOgorICAgIGRlZiBmaW5kX3N1aXRlcyhzZWxm
LCBjb25maWd1cmF0aW9ucywgYnJhbmNoPU5vbmUsIHJlY2VudD1UcnVlLCBsaW1pdD0xMDApOgog
ICAgICAgICB3aXRoIHNlbGY6CiAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAg
IGNvbmZpZzogW3Jvdy5zdWl0ZSBmb3Igcm93IGluIHJvd3NdIGZvciBjb25maWcsIHJvd3MgaW4g
c2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuc2VsZWN0X2Zyb21fdGFibGVfd2l0aF9jb25maWd1
cmF0aW9ucygKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5TdWl0ZXNCeUNvbmZpZ3VyYXRpb24u
X190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb25zPWNvbmZpZ3VyYXRpb25zLCByZWNlbnQ9cmVj
ZW50LCBsaW1pdD1saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5TdWl0ZXNCeUNvbmZp
Z3VyYXRpb24uX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb25zPWNvbmZpZ3VyYXRpb25zLCBi
cmFuY2g9YnJhbmNoLCByZWNlbnQ9cmVjZW50LCBsaW1pdD1saW1pdCwKICAgICAgICAgICAgICAg
ICApLml0ZW1zKCkKICAgICAgICAgICAgIH0KIApJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvdmlldy9zdGF0aWMvanMvZHJhd2VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2pzL2RyYXdlci5qcwkocmV2aXNpb24g
MjQ5OTAyKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvanMv
ZHJhd2VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAvLyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCB7RE9NLCBSRUZ9IGZyb20gJy9saWJyYXJ5
L2pzL1JlZi5qcyc7Ci1pbXBvcnQge1F1ZXJ5TW9kaWZpZXJ9IGZyb20gJy9hc3NldHMvanMvY29t
bW9uLmpzJzsKK2ltcG9ydCB7cXVlcnlUb1BhcmFtcywgcGFyYW1zVG9RdWVyeSwgUXVlcnlNb2Rp
ZmllciwgfSBmcm9tICcvYXNzZXRzL2pzL2NvbW1vbi5qcyc7CiBpbXBvcnQge0NvbmZpZ3VyYXRp
b259IGZyb20gJy9hc3NldHMvanMvY29uZmlndXJhdGlvbi5qcycKIAogZnVuY3Rpb24gc2V0RW5h
YmxlUmVjdXJzaXZlKGVsZW1lbnQsIHN0YXRlKSB7CkBAIC0xMTYsNiArMTE2LDI2IEBAIGZ1bmN0
aW9uIERyYXdlcihjb250cm9scyA9IFtdLCBvbkNvbGxhcHMKICAgICAgICAgPC9kaXY+YDsKIH0K
IAorbGV0IGNvbmZpZ3VyYXRpb25zID0gW10KK2xldCBjb25maWd1cmF0aW9uc0RlZmluZWRDYWxs
YmFja3MgPSBbXTsKK2Z1bmN0aW9uIHJlZnJlc2hDb25maWd1cmF0aW9ucygpIHsKKyAgICBsZXQg
cGFyYW1zID0gcXVlcnlUb1BhcmFtcyhkb2N1bWVudC5VUkwuc3BsaXQoJz8nKVsxXSk7CisgICAg
bGV0IHF1ZXJ5UGFyYW1zID0ge307CisgICAgaWYgKHBhcmFtcy5icmFuY2gpCisgICAgICAgIHF1
ZXJ5UGFyYW1zLmJyYW5jaCA9IHBhcmFtcy5icmFuY2g7CisKKyAgICBjb25zdCBxdWVyeSA9IHBh
cmFtc1RvUXVlcnkocXVlcnlQYXJhbXMpOworICAgIGZldGNoKHF1ZXJ5ID8gJ2FwaS9zdWl0ZXM/
JyArIHF1ZXJ5OiAnYXBpL3N1aXRlcycpLnRoZW4ocmVzcG9uc2UgPT4geworICAgICAgICByZXNw
b25zZS5qc29uKCkudGhlbihqc29uID0+IHsKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zID0g
anNvbi5tYXAocGFpciA9PiBuZXcgQ29uZmlndXJhdGlvbihwYWlyWzBdKSk7CisgICAgICAgICAg
ICBjb25maWd1cmF0aW9uc0RlZmluZWRDYWxsYmFja3MuZm9yRWFjaChjYWxsYmFjayA9PiBjYWxs
YmFjaygpKTsKKyAgICAgICAgfSk7CisgICAgfSkuY2F0Y2goZXJyb3IgPT4geworICAgICAgICAv
LyBJZiB0aGUgbG9hZCBmYWlscywgbG9nIHRoZSBlcnJvciBhbmQgY29udGludWUKKyAgICAgICAg
Y29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeShlcnJvciwgbnVsbCwgNCkpOworICAgIH0pOwor
fQorCiBmdW5jdGlvbiBCcmFuY2hTZWxlY3RvcihjYWxsYmFjaykgewogICAgIGNvbnN0IGRlZmF1
bHRCcmFuY2hlcyA9IG5ldyBTZXQoWyd0cnVuaycsICdtYXN0ZXInXSk7CiAgICAgY29uc3QgZGVm
YXVsdEJyYW5jaEtleSA9IFsuLi5kZWZhdWx0QnJhbmNoZXNdLnNvcnQoKS5qb2luKCcvJyk7CkBA
IC0xMzAsNiArMTUwLDcgQEAgZnVuY3Rpb24gQnJhbmNoU2VsZWN0b3IoY2FsbGJhY2spIHsKICAg
ICAgICAgICAgICAgICAgICAgYnJhbmNoTW9kaWZpZXIucmVtb3ZlKCk7CiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBicmFuY2hNb2RpZmllci5yZXBsYWNlKGJyYW5j
aCk7CisgICAgICAgICAgICAgICAgcmVmcmVzaENvbmZpZ3VyYXRpb25zKCk7CiAgICAgICAgICAg
ICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKQEAgLTIwOSwyMSAr
MjMwLDcgQEAgZnVuY3Rpb24gTGltaXRTbGlkZXIoY2FsbGJhY2ssIG1heCA9IDEwMAogfQogCiBm
dW5jdGlvbiBDb25maWd1cmF0aW9uU2VsZWN0b3JzKGNhbGxiYWNrKSB7Ci0gICAgbGV0IGNvbmZp
Z3VyYXRpb25zID0gW10KLSAgICBsZXQgY29uZmlndXJhdGlvbnNEZWZpbmVkQ2FsbGJhY2tzID0g
W107Ci0gICAgZmV0Y2goJ2FwaS9zdWl0ZXMnKS50aGVuKHJlc3BvbnNlID0+IHsKLSAgICAgICAg
cmVzcG9uc2UuanNvbigpLnRoZW4oanNvbiA9PiB7Ci0gICAgICAgICAgICBqc29uLmZvckVhY2go
cGFpciA9PiB7Ci0gICAgICAgICAgICAgICAgY29uc3QgY29uZmlnID0gbmV3IENvbmZpZ3VyYXRp
b24ocGFpclswXSk7Ci0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMucHVzaChjb25maWcp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9uc0RlZmluZWRDYWxs
YmFja3MuZm9yRWFjaChjYWxsYmFjayA9PiB7Y2FsbGJhY2soKTt9KTsKLSAgICAgICAgfSk7Ci0g
ICAgfSkuY2F0Y2goZXJyb3IgPT4gewotICAgICAgICAvLyBJZiB0aGUgbG9hZCBmYWlscywgbG9n
IHRoZSBlcnJvciBhbmQgY29udGludWUKLSAgICAgICAgY29uc29sZS5lcnJvcihKU09OLnN0cmlu
Z2lmeShlcnJvciwgbnVsbCwgNCkpOwotICAgIH0pOwotCisgICAgcmVmcmVzaENvbmZpZ3VyYXRp
b25zKCk7CiAgICAgY29uc3QgZWxlbWVudHMgPSBbCiAgICAgICAgIHsncXVlcnknOiAncGxhdGZv
cm0nLCAnbmFtZSc6ICdQbGF0Zm9ybSd9LAogICAgICAgICB7J3F1ZXJ5JzogJ3ZlcnNpb25fbmFt
ZScsICduYW1lJzogJ1ZlcnNpb24gTmFtZSd9LApJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvc3VpdGVfcmVzdWx0cy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL3N1aXRlX3Jlc3Vs
dHMuaHRtbAkocmV2aXNpb24gMjQ5OTAyKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvdmlldy90ZW1wbGF0ZXMvc3VpdGVfcmVzdWx0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjAsNiArMTIwLDggQEAgY2xhc3MgTWFpblZpZXcgewogICAgICAgICAgICAgaWYgKHBhcmFtc1tt
ZW1iZXJdKQogICAgICAgICAgICAgICAgIHN1aXRlUGFyYW1zW21lbWJlcl0gPSBwYXJhbXNbbWVt
YmVyXTsKICAgICAgICAgfSk7CisgICAgICAgIGlmIChwYXJhbXMuYnJhbmNoKQorICAgICAgICAg
ICAgc3VpdGVQYXJhbXMuYnJhbmNoID0gcGFyYW1zLmJyYW5jaDsKICAgICAgICAgbGV0IHF1ZXJ5
ID0gcGFyYW1zVG9RdWVyeShzdWl0ZVBhcmFtcyk7CiAgICAgICAgIGZldGNoKHF1ZXJ5ID8gJ2Fw
aS9zdWl0ZXM/JyArIHF1ZXJ5OiAnYXBpL3N1aXRlcycpLnRoZW4ocmVzcG9uc2UgPT4gewogICAg
ICAgICAgICAgcmVzcG9uc2UuanNvbigpLnRoZW4oanNvbiA9PiB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>