<?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>218105</bug_id>
          
          <creation_ts>2020-10-22 16:12:59 -0700</creation_ts>
          <short_desc>[webkitpy] Use webkitcorepy&apos;s autoinstaller for buildbot and twisted</short_desc>
          <delta_ts>2020-11-05 20:09:44 -0800</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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=214950</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=218643</see_also>
          <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>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1700871</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-22 16:12:59 -0700</bug_when>
    <thetext>The way we handle twisted and Buildbot are related, since buildbot requires specific versions of twisted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700873</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-22 16:13:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/70593576&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700900</commentid>
    <comment_count>2</comment_count>
      <attachid>412148</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-22 17:33:42 -0700</bug_when>
    <thetext>Created attachment 412148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700901</commentid>
    <comment_count>3</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-22 17:34:22 -0700</bug_when>
    <thetext>This is also the last change for https://bugs.webkit.org/show_bug.cgi?id=214950, so it removes all the auto-installer code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700905</commentid>
    <comment_count>4</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-22 18:23:15 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #3)
&gt; This is also the last change for
&gt; https://bugs.webkit.org/show_bug.cgi?id=214950, so it removes all the auto-installer code.
Let’s remove the auto-installer code in separate patch, and keep this patch for migrating buildbot and twisted, so that it is easier to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701034</commentid>
    <comment_count>5</comment_count>
      <attachid>412188</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-23 09:14:14 -0700</bug_when>
    <thetext>Created attachment 412188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701036</commentid>
    <comment_count>6</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-23 09:15:52 -0700</bug_when>
    <thetext>(In reply to Aakash Jain from comment #4)
&gt; (In reply to Jonathan Bedard from comment #3)
&gt; &gt; This is also the last change for
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=214950, so it removes all the auto-installer code.
&gt; Let’s remove the auto-installer code in separate patch, and keep this patch
&gt; for migrating buildbot and twisted, so that it is easier to review.

Uploaded a change that does that. Still need to remove the unit tests, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701049</commentid>
    <comment_count>7</comment_count>
      <attachid>412192</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-23 10:03:32 -0700</bug_when>
    <thetext>Created attachment 412192
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701054</commentid>
    <comment_count>8</comment_count>
      <attachid>412192</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-23 10:20:17 -0700</bug_when>
    <thetext>Comment on attachment 412192
Patch

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

rs=me

&gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/autoinstall.py:157
&gt; +                    if element.childNodes[0].data.endswith(&apos;.tar.gz&apos;) or element.childNodes[0].data.endswith(&apos;.tar.bz2&apos;):

str.endswith also accepts a tuple https://docs.python.org/2/library/stdtypes.html#str.endswith , can rewrite this as:

if element.childNodes[0].data.endswith((&apos;.tar.gz&apos;, &apos;.tar.bz2&apos;))

&gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/autoinstall.py:273
&gt; +                location = os.path.join(AutoInstall.directory, self.name.split(&apos;.&apos;)[0])

Please add a comment mentioning the reason to add this logic.

&gt; Tools/Scripts/webkitpy/autoinstalled/buildbot.py:27
&gt; +if sys.version_info[0] &gt; 2:

Maybe make it more explicit that we are referencing python3 here by changing it to: &quot;&gt;= 3&quot;

&gt; Tools/Scripts/webkitpy/autoinstalled/buildbot.py:45
&gt; +    AutoInstall.register(Package(&apos;twisted&apos;, Version(12, 1, 0), pypi_name=&apos;Twisted&apos;))

It&apos;s little confusing that we are installing twisted version 12.1 here and 15.5 in twisted.py, but it was probably like this earlier as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701056</commentid>
    <comment_count>9</comment_count>
      <attachid>412192</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-23 10:26:30 -0700</bug_when>
    <thetext>Comment on attachment 412192
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/autoinstalled/buildbot.py:45
&gt;&gt; +    AutoInstall.register(Package(&apos;twisted&apos;, Version(12, 1, 0), pypi_name=&apos;Twisted&apos;))
&gt; 
&gt; It&apos;s little confusing that we are installing twisted version 12.1 here and 15.5 in twisted.py, but it was probably like this earlier as well.

Agreed. My hope is that moving forward, everything can be version 20.4.1...but we need to qualify performance infrastructure using that, and I&apos;m pretty sure buildbot 0.8 needs a smaller version of twisted. That&apos;s the reason that these are in an autoinstalled directory instead of at the top level, by the way, it allows us to exclude certain packages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701065</commentid>
    <comment_count>10</comment_count>
      <attachid>412196</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-23 10:43:46 -0700</bug_when>
    <thetext>Created attachment 412196
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701079</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-23 11:15:50 -0700</bug_when>
    <thetext>Committed r268930: &lt;https://trac.webkit.org/changeset/268930&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412196.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412148</attachid>
            <date>2020-10-22 17:33:42 -0700</date>
            <delta_ts>2020-10-23 09:14:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218105-20201022173341.patch</filename>
            <type>text/plain</type>
            <size>50093</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2ODg5OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQzIEBACisyMDIwLTEwLTIyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0cHldIFVzZSB3ZWJraXRjb3JlcHkncyBhdXRvaW5zdGFsbGVy
IGZvciBidWlsZGJvdCBhbmQgdHdpc3RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTA1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDU5MzU3
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb21w
bGV0ZSBhZG9wdGlvbiBvZiB0aGUgbmV3IGF1dG9pbnN0YWxsZXIgbWVhbnMgd2UgY2FuIHJlbW92
ZSB0aGUgb2xkIG9uZS4KKworICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3N0ZXBzX3VuaXR0ZXN0LnB5OgorICAgICAgICAoQnVpbGRCb3RDb25maWdM
b2FkZXIuX2FkZF9kZXBlbmRlbnRfbW9kdWxlc190b19zeXNfbW9kdWxlcyk6CisgICAgICAgICog
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weTog
QnVtcCB2ZXJzaW9uLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93
ZWJraXRjb3JlcHkvYXV0b2luc3RhbGwucHk6CisgICAgICAgIChQYWNrYWdlLmFyY2hpdmVzKTog
dGFyLmJ6MiBhcmNoaXZlcyBhcmUgdGFyLmd6IGFyY2hpdmVzLgorICAgICAgICAoUGFja2FnZS5p
bnN0YWxsKTogQWZ0ZXIgcjI2NzA1Niwgd2UgZG9uJ3QgbmVlZCAib2xkLWFuZC11bm1hbmFnZWFi
bGUiIGFuZAorICAgICAgICAic2luZ2xlLXZlcnNpb24tZXh0ZXJuYWxseS1tYW5hZ2VkIiwgaGFu
ZGxlIGNhc2Ugb2YgbmVzdGVkIG1vZHVsZXMgbW9yZSBjb21wbGV0ZWx5LgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvYXV0b2luc3RhbGxlZC9idWlsZGJvdC5weTogQWRkZWQuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9hdXRvaW5zdGFsbGVkL3R3aXN0ZWQucHk6IEFkZGVkLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9odHRwX3NlcnZlcl9kcml2
ZXIvaHR0cF9zZXJ2ZXIvdHdpc3RlZF9odHRwX3NlcnZlci5weToKKyAgICAgICAgSW1wb3J0IG5l
dyBhdXRvIGluc3RhbGxlZCB0d2lzdGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYmVu
Y2htYXJrX3J1bm5lci9odHRwX3NlcnZlcl9kcml2ZXIvc2ltcGxlX2h0dHBfc2VydmVyX2RyaXZl
ci5weToKKyAgICAgICAgKFNpbXBsZUhUVFBTZXJ2ZXJEcml2ZXIuX2Vuc3VyZV9odHRwX3NlcnZl
cl9kZXBlbmRlbmNpZXMpOiBJbXBvcnQgbmV3IGF1dG8gaW5zdGFsbGVkIHR3aXN0ZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2F1dG9pbnN0YWxsLnB5OiBSZW1v
dmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5OgorICAgICAgICAo
VGVzdGVyLl9ydW5fdGVzdHMpOiBSZW1vdmUgb2xkIGF1dG9pbnN0YWxsZXIuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5OgorICAgICAgICAoQXV0b2lu
c3RhbGxJbXBvcnRIb29rKTogRGVsZXRlZC4KKyAgICAgICAgKEF1dG9pbnN0YWxsSW1wb3J0SG9v
ay5fX2luaXRfXyk6IERlbGV0ZWQuCisgICAgICAgIChBdXRvaW5zdGFsbEltcG9ydEhvb2suX2Vu
c3VyZV9hdXRvaW5zdGFsbGVkX2Rpcl9pc19pbl9zeXNfcGF0aCk6IERlbGV0ZWQuCisgICAgICAg
IChBdXRvaW5zdGFsbEltcG9ydEhvb2suZmluZF9tb2R1bGUpOiBEZWxldGVkLgorICAgICAgICAo
QXV0b2luc3RhbGxJbXBvcnRIb29rLl9pbnN0YWxsX2J1aWxkYm90KTogRGVsZXRlZC4KKyAgICAg
ICAgKEF1dG9pbnN0YWxsSW1wb3J0SG9vay5faW5zdGFsbF90d2lzdGVkXzE1XzVfMCk6IERlbGV0
ZWQuCisgICAgICAgIChBdXRvaW5zdGFsbEltcG9ydEhvb2suZ3JlYXRlcl90aGFuX2VxdWFsX3Rv
X3ZlcnNpb24pOiBEZWxldGVkLgorICAgICAgICAoQXV0b2luc3RhbGxJbXBvcnRIb29rLl9pbnN0
YWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEF1dG9pbnN0YWxsSW1wb3J0SG9vay5nZXRfbGF0ZXN0
X3B5cGlfdXJsKTogRGVsZXRlZC4KKyAgICAgICAgKEF1dG9pbnN0YWxsSW1wb3J0SG9vay5pbnN0
YWxsX2JpbmFyeSk6IERlbGV0ZWQuCisgICAgICAgIChhdXRvaW5zdGFsbF9ldmVyeXRoaW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X19f
dW5pdHRlc3QucHk6IFJlbW92ZWQuCisKIDIwMjAtMTAtMjIgIEpvbmF0aGFuIEJlZGFyZCAgPGpi
ZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRweV0gVXNlIHdlYmtpdGNvcmVweSdz
IGF1dG9pbnN0YWxsZXIgZm9yIGNocm9tZSBhbmQgZ2Vja28gZHJpdmVycwpJbmRleDogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvc3RlcHNfdW5pdHRlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvc3RlcHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2ODg5NikKKysrIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzX3VuaXR0ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIEJ1aWxkQm90Q29uZmlnTG9h
ZGVyKG9iamVjdCk6CiAKICAgICBkZWYgX2FkZF9kZXBlbmRlbnRfbW9kdWxlc190b19zeXNfbW9k
dWxlcyhzZWxmKToKICAgICAgICAgc2VsZi5fYWRkX3dlYmtpdHB5X3RvX3N5c19wYXRoKCkKLSAg
ICAgICAgZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQgaW1wb3J0IGJ1aWxk
Ym90CisgICAgICAgIGZyb20gd2Via2l0cHkuYXV0b2luc3RhbGxlZCBpbXBvcnQgYnVpbGRib3QK
ICAgICAgICAgc3lzLm1vZHVsZXNbJ2J1aWxkYm90J10gPSBidWlsZGJvdAogCiAKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18u
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dl
YmtpdGNvcmVweS9fX2luaXRfXy5weQkocmV2aXNpb24gMjY4ODk2KQorKysgVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBmcm9tIHdlYmtpdGNvcmVweS50aW1lb3V0IGltcG9y
dCBUaW1lb3V0CiBmcm9tIHdlYmtpdGNvcmVweS5zdWJwcm9jZXNzX3V0aWxzIGltcG9ydCBUaW1l
b3V0RXhwaXJlZCwgQ29tcGxldGVkUHJvY2VzcywgcnVuCiBmcm9tIHdlYmtpdGNvcmVweS5vdXRw
dXRfY2FwdHVyZSBpbXBvcnQgTG9nZ2VyQ2FwdHVyZSwgT3V0cHV0Q2FwdHVyZSwgT3V0cHV0RHVw
bGljYXRlCiAKLXZlcnNpb24gPSBWZXJzaW9uKDAsIDQsIDE5KQordmVyc2lvbiA9IFZlcnNpb24o
MCwgNCwgMjApCiAKIGZyb20gd2Via2l0Y29yZXB5LmF1dG9pbnN0YWxsIGltcG9ydCBQYWNrYWdl
LCBBdXRvSW5zdGFsbAogaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvYXV0b2luc3RhbGwu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dl
YmtpdGNvcmVweS9hdXRvaW5zdGFsbC5weQkocmV2aXNpb24gMjY4ODk2KQorKysgVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9hdXRvaW5zdGFsbC5weQko
d29ya2luZyBjb3B5KQpAQCAtMTU0LDcgKzE1NCw3IEBAIGNsYXNzIFBhY2thZ2Uob2JqZWN0KToK
ICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gJ3dobCcKIAogICAgICAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGVsZW1lbnQuY2hpbGROb2Rlc1swXS5kYXRh
LmVuZHN3aXRoKCcudGFyLmd6Jyk6CisgICAgICAgICAgICAgICAgICAgIGlmIGVsZW1lbnQuY2hp
bGROb2Rlc1swXS5kYXRhLmVuZHN3aXRoKCcudGFyLmd6Jykgb3IgZWxlbWVudC5jaGlsZE5vZGVz
WzBdLmRhdGEuZW5kc3dpdGgoJy50YXIuYnoyJyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBl
eHRlbnNpb24gPSAndGFyLmd6JwogICAgICAgICAgICAgICAgICAgICBlbGlmIGVsZW1lbnQuY2hp
bGROb2Rlc1swXS5kYXRhLmVuZHN3aXRoKCcuemlwJyk6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBleHRlbnNpb24gPSAnemlwJwpAQCAtMjMzLDEyICsyMzMsOCBAQCBjbGFzcyBQYWNrYWdlKG9i
amVjdCk6CiAgICAgICAgICAgICB0ZW1wX2xvY2F0aW9uID0gb3MucGF0aC5qb2luKHRlbXBmaWxl
LmdldHRlbXBkaXIoKSwgc2VsZi5uYW1lKQogICAgICAgICAgICAgYXJjaGl2ZS51bnBhY2sodGVt
cF9sb2NhdGlvbikKIAotICAgICAgICAgICAgZm9yIGNhbmRpZGF0ZSBpbiBbCi0gICAgICAgICAg
ICAgICAgb3MucGF0aC5qb2luKHRlbXBfbG9jYXRpb24sIHN0cihhcmNoaXZlKSksCi0gICAgICAg
ICAgICAgICAgb3MucGF0aC5qb2luKHRlbXBfbG9jYXRpb24sICd7fS17fS57fScuZm9ybWF0KGFy
Y2hpdmUubmFtZSwgYXJjaGl2ZS52ZXJzaW9uLm1ham9yLCBhcmNoaXZlLnZlcnNpb24ubWlub3Ip
KSwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4odGVtcF9sb2NhdGlvbiwgJ3t9LXt9Lnt9
Lnt9Jy5mb3JtYXQoYXJjaGl2ZS5uYW1lLnJlcGxhY2UoJy0nLCAnXycpLCBhcmNoaXZlLnZlcnNp
b24ubWFqb3IsIGFyY2hpdmUudmVyc2lvbi5taW5vciwgYXJjaGl2ZS52ZXJzaW9uLnRpbnkpKSwK
LSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4odGVtcF9sb2NhdGlvbiwgJ3t9LXt9Jy5mb3Jt
YXQoYXJjaGl2ZS5uYW1lLmNhcGl0YWxpemUoKSwgYXJjaGl2ZS52ZXJzaW9uKSksCi0gICAgICAg
ICAgICBdOgorICAgICAgICAgICAgZm9yIGNhbmRpZGF0ZSBpbiBvcy5saXN0ZGlyKHRlbXBfbG9j
YXRpb24pOgorICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IG9zLnBhdGguam9pbih0ZW1wX2xv
Y2F0aW9uLCBjYW5kaWRhdGUpCiAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3Rz
KG9zLnBhdGguam9pbihjYW5kaWRhdGUsICdzZXR1cC5weScpKToKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKIApAQCAtMjU2LDE0ICsyNTIsMTAgQEAgY2xhc3MgUGFja2FnZShvYmplY3Qp
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWhvbWU9e30nLmZvcm1hdChpbnN0YWxs
X2xvY2F0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1yb290PS8nLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICctLXByZWZpeD0nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICctLXNpbmdsZS12ZXJzaW9uLWV4dGVybmFsbHktbWFuYWdlZCcsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJy0taW5zdGFsbC1saWI9e30nLmZvcm1hdChpbnN0YWxsX2xv
Y2F0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1pbnN0YWxsLXNjcmlwdHM9
e30nLmZvcm1hdChvcy5wYXRoLmpvaW4oaW5zdGFsbF9sb2NhdGlvbiwgJ2JpbicpKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnLS1pbnN0YWxsLWRhdGE9e30nLmZvcm1hdChvcy5wYXRo
LmpvaW4oaW5zdGFsbF9sb2NhdGlvbiwgJ2RhdGEnKSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJy0taW5zdGFsbC1oZWFkZXJzPXt9Jy5mb3JtYXQob3MucGF0aC5qb2luKGluc3RhbGxf
bG9jYXRpb24sICdoZWFkZXJzJykpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRG8g
bm90IGF1dG9tYXRpY2FsbHkgaW5zdGFsbCBwYWNrYWdlIGRlcGVuZGVuY2llcywgZm9yY2Ugc2Ny
aXB0cyB0byBiZSBleHBsaWNpdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRXZlbiB3
aXRob3V0IHRoaXMgZmxhZywgc2V0dXAucHkgaXMgbm90IGNvbnNpc3RlbnQgYWJvdXQgaW5zdGFs
bGluZyBkZXBlbmRlbmNpZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tb2xkLWFu
ZC11bm1hbmFnZWFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIGN3ZD1jYW5kaWRhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9
ZGljdCgKQEAgLTI3OCw2ICsyNzAsMTEgQEAgY2xhc3MgUGFja2FnZShvYmplY3QpOgogICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkZXJyPWRldm51bGwsCiAgICAgICAgICAgICAgICAgICAgICkK
IAorICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gb3MucGF0aC5qb2luKEF1dG9JbnN0YWxsLmRp
cmVjdG9yeSwgc2VsZi5uYW1lLnNwbGl0KCcuJylbMF0pCisgICAgICAgICAgICAgICAgaWYgb3Mu
cGF0aC5pc2Rpcihsb2NhdGlvbikgYW5kICdfX2luaXRfXy5weScgbm90IGluIG9zLmxpc3RkaXIo
bG9jYXRpb24pOgorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGxv
Y2F0aW9uLCAnX19pbml0X18ucHknKSwgJ3cnKSBhcyBpbml0OgorICAgICAgICAgICAgICAgICAg
ICAgICAgaW5pdC53cml0ZSgnXG4nKQorCiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBXZSBtaWdodCBub3QgbmVlZCBzZXR1cC5weSBh
dCBhbGwsIGNoZWNrIGlmIHdlIGhhdmUgZGlzdC1pbmZvIGFuZCB0aGUgbGlicmFyeSBpbiB0aGUg
dGVtcG9yYXJ5IGxvY2F0aW9uCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2F1dG9pbnN0
YWxsZWQvYnVpbGRib3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9h
dXRvaW5zdGFsbGVkL2J1aWxkYm90LnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvYXV0b2luc3RhbGxlZC9idWlsZGJvdC5weQkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ3IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMg
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBz
eXMKKworZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgQXV0b0luc3RhbGwsIFBhY2thZ2UsIFZlcnNp
b24KKworaWYgc3lzLnZlcnNpb25faW5mb1swXSA+IDI6CisgICAgQXV0b0luc3RhbGwucmVnaXN0
ZXIoUGFja2FnZSgnYXV0b2JhaG4nLCBWZXJzaW9uKDIwLCA3LCAxKSkpCisgICAgQXV0b0luc3Rh
bGwucmVnaXN0ZXIoUGFja2FnZSgnYnVpbGRib3QnLCBWZXJzaW9uKDIsIDgsIDQpKSkKKyAgICBB
dXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdkYXRldXRpbCcsIFZlcnNpb24oMiwgOCwgMSks
IHB5cGlfbmFtZT0ncHl0aG9uLWRhdGV1dGlsJykpCisgICAgQXV0b0luc3RhbGwucmVnaXN0ZXIo
UGFja2FnZSgnamluamEyJywgVmVyc2lvbigyLCAxMSwgMiksIHB5cGlfbmFtZT0nSmluamEyJykp
CisgICAgQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnand0JywgVmVyc2lvbigxLCA3LCAx
KSwgcHlwaV9uYW1lPSdQeUpXVCcpKQorICAgIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2Uo
J3B5eWFtbCcsIFZlcnNpb24oNSwgMywgMSksIHB5cGlfbmFtZT0nUHlZQU1MJykpCisgICAgQXV0
b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnc3FsYWxjaGVteScsIFZlcnNpb24oMSwgMywgMjAp
LCBweXBpX25hbWU9J1NRTEFsY2hlbXknKSkKKyAgICBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNr
YWdlKCdzcWxhbGNoZW15LW1pZ3JhdGUnLCBWZXJzaW9uKDAsIDEzLCAwKSkpCisgICAgQXV0b0lu
c3RhbGwucmVnaXN0ZXIoUGFja2FnZSgndHdpc3RlZCcsIFZlcnNpb24oMjAsIDMsIDApLCBweXBp
X25hbWU9J1R3aXN0ZWQnKSkKKyAgICBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCd0eGFp
bycsIFZlcnNpb24oMjAsIDQsIDEpKSkKKworZWxzZToKKyAgICBBdXRvSW5zdGFsbC5yZWdpc3Rl
cihQYWNrYWdlKCdidWlsZGJvdCcsIFZlcnNpb24oMCwgOCwgNikpKQorICAgIEF1dG9JbnN0YWxs
LnJlZ2lzdGVyKFBhY2thZ2UoJ2RhdGV1dGlsJywgVmVyc2lvbigyLCA4LCAxKSwgcHlwaV9uYW1l
PSdweXRob24tZGF0ZXV0aWwnKSkKKyAgICBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdq
aW5qYTInLCBWZXJzaW9uKDIsIDYpLCBweXBpX25hbWU9J0ppbmphMicpKQorICAgIEF1dG9JbnN0
YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ3NxbGFsY2hlbXknLCBWZXJzaW9uKDAsIDcsIDcpLCBweXBp
X25hbWU9J1NRTEFsY2hlbXknKSkKKyAgICBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdz
cWxhbGNoZW15LW1pZ3JhdGUnLCBWZXJzaW9uKDAsIDcsIDIpKSkKKyAgICBBdXRvSW5zdGFsbC5y
ZWdpc3RlcihQYWNrYWdlKCd0d2lzdGVkJywgVmVyc2lvbigxMiwgMSwgMCksIHB5cGlfbmFtZT0n
VHdpc3RlZCcpKQorCitzeXMubW9kdWxlc1tfX25hbWVfX10gPSBfX2ltcG9ydF9fKCdidWlsZGJv
dCcpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2F1dG9pbnN0YWxsZWQvdHdpc3RlZC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2F1dG9pbnN0YWxsZWQvdHdp
c3RlZC5weQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2F1dG9pbnN0
YWxsZWQvdHdpc3RlZC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisjIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
IyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMKKworZnJvbSB3ZWJraXRz
Y21weSBpbXBvcnQgQXV0b0luc3RhbGwsIFBhY2thZ2UsIFZlcnNpb24KKworQXV0b0luc3RhbGwu
cmVnaXN0ZXIoUGFja2FnZSgndHdpc3RlZCcsIFZlcnNpb24oMTUsIDUsIDApLCBweXBpX25hbWU9
J1R3aXN0ZWQnKSkKK3N5cy5tb2R1bGVzW19fbmFtZV9fXSA9IF9faW1wb3J0X18oJ3R3aXN0ZWQn
KQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2h0dHBfc2Vy
dmVyX2RyaXZlci9zaW1wbGVfaHR0cF9zZXJ2ZXJfZHJpdmVyLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9odHRwX3NlcnZlcl9kcml2ZXIv
c2ltcGxlX2h0dHBfc2VydmVyX2RyaXZlci5weQkocmV2aXNpb24gMjY4ODk2KQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2h0dHBfc2VydmVyX2RyaXZlci9zaW1w
bGVfaHR0cF9zZXJ2ZXJfZHJpdmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsMTAgKzEwNSw0
IEBAIGNsYXNzIFNpbXBsZUhUVFBTZXJ2ZXJEcml2ZXIoSFRUUFNlcnZlckQKICAgICBkZWYgX2Vu
c3VyZV9odHRwX3NlcnZlcl9kZXBlbmRlbmNpZXMoc2VsZik6CiAgICAgICAgIF9sb2cuaW5mbygn
RW5zdXJlIGRlcGVuZGVuY2llcyBvZiBodHRwIHNlcnZlciBpcyBzYXRpc2ZpZWQnKQogICAgICAg
ICBmcm9tIHBrZ19yZXNvdXJjZXMgaW1wb3J0IHJlcXVpcmUsIFZlcnNpb25Db25mbGljdCwgRGlz
dHJpYnV0aW9uTm90Rm91bmQKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVxdWlyZSgiVHdp
c3RlZD49MTUuNS4wIikKLSAgICAgICAgICAgIGltcG9ydCB0d2lzdGVkCi0gICAgICAgIGV4Y2Vw
dCAoSW1wb3J0RXJyb3IsIFZlcnNpb25Db25mbGljdCwgRGlzdHJpYnV0aW9uTm90Rm91bmQpOgot
ICAgICAgICAgICAgX2xvZy5pbmZvKCJXaWxsIGluc3RhbGwgdHdpc3RlZCBpbiB3ZWJraXRweSwg
YW5kIHR3aXN0ZWQgd2lsbCBiZSB1c2VkIGJ5IHdlYmtpdHB5IG9ubHkiKQotICAgICAgICAgICAg
c3lzLnBhdGguYXBwZW5kKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJu
YW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpLCAnLi4vLi4vLi4vLi4nKSkpCi0gICAgICAg
ICAgICBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC50d2lzdGVkXzE1XzVf
MCBpbXBvcnQgdHdpc3RlZAorICAgICAgICBmcm9tIHdlYmtpdHB5LmF1dG9pbnN0YWxsZWQgaW1w
b3J0IHR3aXN0ZWQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5l
ci9odHRwX3NlcnZlcl9kcml2ZXIvaHR0cF9zZXJ2ZXIvdHdpc3RlZF9odHRwX3NlcnZlci5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvaHR0
cF9zZXJ2ZXJfZHJpdmVyL2h0dHBfc2VydmVyL3R3aXN0ZWRfaHR0cF9zZXJ2ZXIucHkJKHJldmlz
aW9uIDI2ODg5NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9o
dHRwX3NlcnZlcl9kcml2ZXIvaHR0cF9zZXJ2ZXIvdHdpc3RlZF9odHRwX3NlcnZlci5weQkod29y
a2luZyBjb3B5KQpAQCAtNCwxNCArNCw5IEBAIGltcG9ydCBhcmdwYXJzZQogaW1wb3J0IGxvZ2dp
bmcKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotZnJvbSBwa2dfcmVzb3VyY2VzIGltcG9ydCByZXF1
aXJlLCBWZXJzaW9uQ29uZmxpY3QsIERpc3RyaWJ1dGlvbk5vdEZvdW5kCiAKLXRyeToKLSAgICBy
ZXF1aXJlKCJUd2lzdGVkPj0xNS41LjAiKQotICAgIGltcG9ydCB0d2lzdGVkCi1leGNlcHQgKElt
cG9ydEVycm9yLCBWZXJzaW9uQ29uZmxpY3QsIERpc3RyaWJ1dGlvbk5vdEZvdW5kKToKLSAgICBz
eXMucGF0aC5hcHBlbmQob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5h
bWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSksICcuLi8uLi8uLi8uLicpKSkKLSAgICBmcm9t
IHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC50d2lzdGVkXzE1XzVfMCBpbXBvcnQg
dHdpc3RlZAorZnJvbSBwa2dfcmVzb3VyY2VzIGltcG9ydCByZXF1aXJlLCBWZXJzaW9uQ29uZmxp
Y3QsIERpc3RyaWJ1dGlvbk5vdEZvdW5kCitmcm9tIHdlYmtpdHB5LmF1dG9pbnN0YWxsZWQgaW1w
b3J0IHR3aXN0ZWQKIAogZnJvbSB0d2lzdGVkLndlYiBpbXBvcnQgc3RhdGljLCBzZXJ2ZXIKIGZy
b20gdHdpc3RlZC53ZWIucmVzb3VyY2UgaW1wb3J0IFJlc291cmNlCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vYXV0b2luc3RhbGwucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2F1dG9pbnN0YWxsLnB5CShyZXZp
c2lvbiAyNjg4OTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vYXV0
b2luc3RhbGwucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NDUgKzAsMCBAQAotIyBDb3B5cmlnaHQg
KGMpIDIwMDksIERhbmllbCBLcmVjaCBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBDb3B5cmlnaHQg
KEMpIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNqZXJkb25la0B3ZWJraXQub3JnKQotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMK
LSMgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIHRoZSBEYW5pZWwgS3JlY2ggbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotIiIiU3VwcG9ydCBmb3IgYXV0b21hdGljYWxseSBkb3dubG9hZGluZyBQeXRo
b24gcGFja2FnZXMgZnJvbSBhbiBVUkwuIiIiCi0KLQotaW1wb3J0IGNvZGVjcwotaW1wb3J0IGxv
Z2dpbmcKLWltcG9ydCBvcwotaW1wb3J0IHNodXRpbAotaW1wb3J0IHN0YXQKLWltcG9ydCBzeXMK
LWltcG9ydCB0YXJmaWxlCi1pbXBvcnQgdGVtcGZpbGUKLWltcG9ydCB6aXBmaWxlCi1pbXBvcnQg
cmUKLWZyb20gZGlzdHV0aWxzIGltcG9ydCBkaXJfdXRpbAotZnJvbSBnbG9iIGltcG9ydCBnbG9i
Ci1pbXBvcnQgc3VicHJvY2VzcwotCi1pZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgotICAg
IGZyb20gdXJsbGliLnJlcXVlc3QgaW1wb3J0IHVybG9wZW4KLSAgICBpbXBvcnQgdXJsbGliLnBh
cnNlIGFzIHVybHBhcnNlCi1lbHNlOgotICAgIGZyb20gdXJsbGliMiBpbXBvcnQgdXJsb3Blbgot
ICAgIGltcG9ydCB1cmxwYXJzZQotCi0KLV9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKLWlmIG5vdCBfbG9nLmhhbmRsZXJzOiAgIyBObyBwYXJlbnQgbG9nZ2VycyBzZXR1cC4KLSAg
ICBoYW5kbGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKCkKLSAgICBoYW5kbGVyLnNldExldmVs
KGxvZ2dpbmcuSU5GTykKLSAgICBmb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcignJShhc2N0
aW1lKXMgLSAlKG5hbWUpcyAtICUobGV2ZWxuYW1lKXMgLSAlKG1lc3NhZ2UpcycpCi0gICAgaGFu
ZGxlci5zZXRGb3JtYXR0ZXIoZm9ybWF0dGVyKQotICAgIF9sb2cuYWRkSGFuZGxlcihoYW5kbGVy
KQotCi1fTUlSUk9SX1JFR0VYUyA9IHJlLmNvbXBpbGUoJy4qc291cmNlZm9yZ2UuKicpLCByZS5j
b21waWxlKCcuKnB5cGkuKicpCi1fUFlQSV9FTlZfVkFSID0gJ1BZUElfTUlSUk9SUycKLV9TT1VS
Q0VGT1JHRV9FTlZfVkFSID0gJ1NPVVJDRUZPUkdFX01JUlJPUlMnCi1fQ0FDSEVfRU5WX1ZBUiA9
ICdMT0NBTF9BVVRPSU5TVEFMTF9DQUNIRScKLQotCi1jbGFzcyBBdXRvSW5zdGFsbGVyKG9iamVj
dCk6Ci0KLSAgICAiIiJTdXBwb3J0cyBhdXRvbWF0aWNhbGx5IGluc3RhbGxpbmcgUHl0aG9uIHBh
Y2thZ2VzIGZyb20gYW4gVVJMLgotCi0gICAgU3VwcG9ydHMgdW5jb21wcmVzc2VkIGZpbGVzLCAu
dGFyLmd6LCAudGFyLmJ6MiBhbmQgLnppcCBmb3JtYXRzLgotCi0gICAgQmFzaWMgdXNhZ2U6Ci0K
LSAgICBpbnN0YWxsZXIgPSBBdXRvSW5zdGFsbGVyKCkKLQotICAgIGluc3RhbGxlci5pbnN0YWxs
KHVybD0iaHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvcC9wZXA4L3BlcDgt
MC41LjAudGFyLmd6I21kNT01MTJhODE4YWY5OTc5MjkwY2Q2MTljY2U4ZTljMmUyYiIsCi0gICAg
ICAgICAgICAgICAgICAgICAgdXJsX3N1YnBhdGg9InBlcDgtMC41LjAvcGVwOC5weSIpCi0gICAg
aW5zdGFsbGVyLmluc3RhbGwodXJsPSJodHRwOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3Nv
dXJjZS9tL21lY2hhbml6ZS9tZWNoYW5pemUtMC4yLjQuemlwIiwKLSAgICAgICAgICAgICAgICAg
ICAgICB1cmxfc3VicGF0aD0ibWVjaGFuaXplIikKLQotICAgICIiIgotCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIGFwcGVuZF90b19zZWFyY2hfcGF0aD1GYWxzZSwgcHJlcGVuZF90b19zZWFyY2hf
cGF0aD1GYWxzZSwgbWFrZV9wYWNrYWdlPVRydWUsCi0gICAgICAgICAgICAgICAgIHRhcmdldF9k
aXI9Tm9uZSwgdGVtcF9kaXI9Tm9uZSk6Ci0gICAgICAgICIiIkNyZWF0ZSBhbiBBdXRvSW5zdGFs
bGVyIGluc3RhbmNlLCBhbmQgc2V0IHVwIHRoZSB0YXJnZXQgZGlyZWN0b3J5LgotCi0gICAgICAg
IEFyZ3M6Ci0gICAgICAgICAgYXBwZW5kX3RvX3NlYXJjaF9wYXRoOiBBIGJvb2xlYW4gdmFsdWUg
b2Ygd2hldGhlciB0byBhcHBlbmQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0YXJnZXQgZGlyZWN0b3J5IHRvIHRoZSBzeXMucGF0aCBzZWFyY2ggcGF0aC4KLSAgICAgICAg
ICBwcmVwZW5kX3RvX3NlYXJjaF9wYXRoOiBBIGJvb2xlYW4gdmFsdWUgb2Ygd2hldGhlciB0byBw
cmVwZW5kIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGRpcmVj
dG9yeSB0byB0aGUgc3lzLnBhdGggc2VhcmNoIHBhdGguCi0gICAgICAgICAgbWFrZV9wYWNrYWdl
OiBBIGJvb2xlYW4gdmFsdWUgb2Ygd2hldGhlciB0byBtYWtlIHRoZSB0YXJnZXQKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBhIHBhY2thZ2UuICBUaGlzIGFkZHMgYW4gX19pbml0
X18ucHkgZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHRhcmdldCBkaXJlY3Rv
cnkgLS0gYWxsb3dpbmcgcGFja2FnZXMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2R1
bGVzIHdpdGhpbiB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBiZSBpbXBvcnRlZAotICAgICAgICAg
ICAgICAgICAgICAgICAgZXhwbGljaXRseSB1c2luZyBkb3R0ZWQgbW9kdWxlIG5hbWVzLgotICAg
ICAgICAgIHRhcmdldF9kaXI6IFRoZSBkaXJlY3RvcnkgcGF0aCB0byB3aGljaCBwYWNrYWdlcyBz
aG91bGQgYmUgaW5zdGFsbGVkLgotICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIGEg
c3ViZGlyZWN0b3J5IG9mIHRoZSBmb2xkZXIgY29udGFpbmluZwotICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMgbW9kdWxlIGNhbGxlZCAiYXV0b2luc3RhbGxlZCIuCi0gICAgICAgICAgdGVtcF9k
aXI6IFRoZSBkaXJlY3RvcnkgcGF0aCB0byB1c2UgZm9yIGFueSB0ZW1wb3JhcnkgZmlsZXMKLSAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkIHdoaWxlIGRvd25sb2FkaW5nLCB1bnppcHBpbmcs
IGFuZCBleHRyYWN0aW5nCi0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIHRvIGluc3RhbGwu
ICBEZWZhdWx0cyB0byBhIHN0YW5kYXJkIHRlbXBvcmFyeQotICAgICAgICAgICAgICAgICAgICBs
b2NhdGlvbiBnZW5lcmF0ZWQgYnkgdGhlIHRlbXBmaWxlIG1vZHVsZS4gIFRoaXMKLSAgICAgICAg
ICAgICAgICAgICAgcGFyYW1ldGVyIHNob3VsZCBub3JtYWxseSBiZSB1c2VkIG9ubHkgZm9yIGRl
dmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RpbmcuCi0KLSAgICAgICAgIiIiCi0g
ICAgICAgIGlmIHRhcmdldF9kaXIgaXMgTm9uZToKLSAgICAgICAgICAgIHRoaXNfZGlyID0gb3Mu
cGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgICAgICAgICAgdGFyZ2V0X2RpciA9IG9zLnBhdGgu
am9pbih0aGlzX2RpciwgImF1dG9pbnN0YWxsZWQiKQotCi0gICAgICAgICMgRW5zdXJlIHRoYXQg
dGhlIHRhcmdldCBkaXJlY3RvcnkgZXhpc3RzLgotICAgICAgICBzZWxmLl9zZXRfdXBfdGFyZ2V0
X2Rpcih0YXJnZXRfZGlyLCBhcHBlbmRfdG9fc2VhcmNoX3BhdGgsIHByZXBlbmRfdG9fc2VhcmNo
X3BhdGgsIG1ha2VfcGFja2FnZSkKLQotICAgICAgICBzZWxmLl90YXJnZXRfZGlyID0gdGFyZ2V0
X2RpcgotICAgICAgICBzZWxmLl90ZW1wX2RpciA9IHRlbXBfZGlyCi0KLSAgICBkZWYgX3dyaXRl
X2ZpbGUoc2VsZiwgcGF0aCwgdGV4dCwgZW5jb2RpbmcpOgotICAgICAgICB3aXRoIGNvZGVjcy5v
cGVuKHBhdGgsICJ3IiwgZW5jb2RpbmcpIGFzIGZpbGVoYW5kbGU6Ci0gICAgICAgICAgICBmaWxl
aGFuZGxlLndyaXRlKHRleHQpCi0KLSAgICBkZWYgX3NldF91cF90YXJnZXRfZGlyKHNlbGYsIHRh
cmdldF9kaXIsIGFwcGVuZF90b19zZWFyY2hfcGF0aCwgcHJlcGVuZF90b19zZWFyY2hfcGF0aCwg
bWFrZV9wYWNrYWdlKToKLSAgICAgICAgIiIiU2V0IHVwIGEgdGFyZ2V0IGRpcmVjdG9yeS4KLQot
ICAgICAgICBBcmdzOgotICAgICAgICAgIHRhcmdldF9kaXI6IFRoZSBwYXRoIHRvIHRoZSB0YXJn
ZXQgZGlyZWN0b3J5IHRvIHNldCB1cC4KLSAgICAgICAgICBhcHBlbmRfdG9fc2VhcmNoX3BhdGg6
IEEgYm9vbGVhbiB2YWx1ZSBvZiB3aGV0aGVyIHRvIGFwcGVuZCB0aGUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRhcmdldCBkaXJlY3RvcnkgdG8gdGhlIHN5cy5wYXRoIHNlYXJj
aCBwYXRoLgotICAgICAgICAgIHByZXBlbmRfdG9fc2VhcmNoX3BhdGg6IEEgYm9vbGVhbiB2YWx1
ZSBvZiB3aGV0aGVyIHRvIHByZXBlbmQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0YXJnZXQgZGlyZWN0b3J5IHRvIHRoZSBzeXMucGF0aCBzZWFyY2ggcGF0aC4KLSAgICAg
ICAgICBtYWtlX3BhY2thZ2U6IEEgYm9vbGVhbiB2YWx1ZSBvZiB3aGV0aGVyIHRvIG1ha2UgdGhl
IHRhcmdldAotICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGEgcGFja2FnZS4gIFRo
aXMgYWRkcyBhbiBfX2luaXRfXy5weSBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICB0byB0
aGUgdGFyZ2V0IGRpcmVjdG9yeSAtLSBhbGxvd2luZyBwYWNrYWdlcyBhbmQKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1vZHVsZXMgd2l0aGluIHRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIGJlIGlt
cG9ydGVkCi0gICAgICAgICAgICAgICAgICAgICAgICBleHBsaWNpdGx5IHVzaW5nIGRvdHRlZCBt
b2R1bGUgbmFtZXMuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0
cyh0YXJnZXRfZGlyKToKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKHRhcmdldF9kaXIpCi0KLSAg
ICAgICAgaWYgYXBwZW5kX3RvX3NlYXJjaF9wYXRoOgotICAgICAgICAgICAgc3lzLnBhdGguYXBw
ZW5kKHRhcmdldF9kaXIpCi0KLSAgICAgICAgaWYgcHJlcGVuZF90b19zZWFyY2hfcGF0aDoKLSAg
ICAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCB0YXJnZXRfZGlyKQotCi0gICAgICAgIGlmIG1h
a2VfcGFja2FnZToKLSAgICAgICAgICAgIHNlbGYuX21ha2VfcGFja2FnZSh0YXJnZXRfZGlyKQot
Ci0gICAgZGVmIF9tYWtlX3BhY2thZ2Uoc2VsZiwgdGFyZ2V0X2Rpcik6Ci0gICAgICAgIGluaXRf
cGF0aCA9IG9zLnBhdGguam9pbih0YXJnZXRfZGlyLCAiX19pbml0X18ucHkiKQotICAgICAgICBp
ZiBub3Qgb3MucGF0aC5leGlzdHMoaW5pdF9wYXRoKToKLSAgICAgICAgICAgIHRleHQgPSAoIiMg
VGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgIgotICAgICAg
ICAgICAgICAgICAgICAiZGlyZWN0b3J5IGZvciBtb2R1bGVzLlxuIikKLSAgICAgICAgICAgIHNl
bGYuX3dyaXRlX2ZpbGUoaW5pdF9wYXRoLCB0ZXh0LCAiYXNjaWkiKQotCi0gICAgZGVmIF9jcmVh
dGVfc2NyYXRjaF9kaXJlY3RvcnlfaW5uZXIoc2VsZiwgcHJlZml4KToKLSAgICAgICAgIiIiQ3Jl
YXRlIGEgc2NyYXRjaCBkaXJlY3Rvcnkgd2l0aG91dCBleGNlcHRpb24gaGFuZGxpbmcuCi0KLSAg
ICAgICAgQ3JlYXRlcyBhIHNjcmF0Y2ggZGlyZWN0b3J5IGluc2lkZSB0aGUgQXV0b0luc3RhbGxl
ciB0ZW1wCi0gICAgICAgIGRpcmVjdG9yeSBzZWxmLl90ZW1wX2Rpciwgb3IgaW5zaWRlIGEgcGxh
dGZvcm0tZGVwZW5kZW50IHRlbXAKLSAgICAgICAgZGlyZWN0b3J5IGlmIHNlbGYuX3RlbXBfZGly
IGlzIE5vbmUuICBSZXR1cm5zIHRoZSBwYXRoIHRvIHRoZQotICAgICAgICBjcmVhdGVkIHNjcmF0
Y2ggZGlyZWN0b3J5LgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICBPU0Vycm9yOiBbRXJy
bm8gMl0gaWYgdGhlIGNvbnRhaW5pbmcgdGVtcCBkaXJlY3Rvcnkgc2VsZi5fdGVtcF9kaXIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgbm90IE5vbmUgYW5kIGRvZXMgbm90IGV4aXN0
LgotCi0gICAgICAgICIiIgotICAgICAgICAjIFRoZSB0ZW1wZmlsZS5ta2R0ZW1wKCkgbWV0aG9k
IGZ1bmN0aW9uIHJlcXVpcmVzIHRoYXQgdGhlCi0gICAgICAgICMgZGlyZWN0b3J5IGNvcnJlc3Bv
bmRpbmcgdG8gdGhlICJkaXIiIHBhcmFtZXRlciBhbHJlYWR5IGV4aXN0Ci0gICAgICAgICMgaWYg
aXQgaXMgbm90IE5vbmUuCi0gICAgICAgIHNjcmF0Y2hfZGlyID0gdGVtcGZpbGUubWtkdGVtcChw
cmVmaXg9cHJlZml4LnJlcGxhY2UoJy8nLCAnLicpLCBkaXI9c2VsZi5fdGVtcF9kaXIpCi0gICAg
ICAgIHJldHVybiBzY3JhdGNoX2RpcgotCi0gICAgZGVmIF9jcmVhdGVfc2NyYXRjaF9kaXJlY3Rv
cnkoc2VsZiwgdGFyZ2V0X25hbWUpOgotICAgICAgICAiIiJDcmVhdGUgYSB0ZW1wb3Jhcnkgc2Ny
YXRjaCBkaXJlY3RvcnksIGFuZCByZXR1cm4gaXRzIHBhdGguCi0KLSAgICAgICAgVGhlIHNjcmF0
Y2ggZGlyZWN0b3J5IGlzIGdlbmVyYXRlZCBpbnNpZGUgdGhlIHRlbXAgZGlyZWN0b3J5Ci0gICAg
ICAgIG9mIHRoaXMgQXV0b0luc3RhbGxlciBpbnN0YW5jZS4gIFRoaXMgbWV0aG9kIGFsc28gY3Jl
YXRlcyB0aGUKLSAgICAgICAgdGVtcCBkaXJlY3RvcnkgaWYgaXQgZG9lcyBub3QgYWxyZWFkeSBl
eGlzdC4KLQotICAgICAgICAiIiIKLSAgICAgICAgcHJlZml4ID0gdGFyZ2V0X25hbWUucmVwbGFj
ZShvcy5zZXAsICJfIikgKyAiXyIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2NyYXRjaF9k
aXIgPSBzZWxmLl9jcmVhdGVfc2NyYXRjaF9kaXJlY3RvcnlfaW5uZXIocHJlZml4KQotICAgICAg
ICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICMgSGFuZGxlIGNhc2Ugb2YgY29udGFpbmlu
ZyB0ZW1wIGRpcmVjdG9yeSBub3QgZXhpc3RpbmctLQotICAgICAgICAgICAgIyBPU0Vycm9yOiBb
RXJybm8gMl0gTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeTouLi4KLSAgICAgICAgICAgIHRlbXBf
ZGlyID0gc2VsZi5fdGVtcF9kaXIKLSAgICAgICAgICAgIGlmIHRlbXBfZGlyIGlzIE5vbmUgb3Ig
b3MucGF0aC5leGlzdHModGVtcF9kaXIpOgotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAg
ICAgICAjIEVsc2UgdHJ5IGFnYWluIGFmdGVyIGNyZWF0aW5nIHRoZSB0ZW1wIGRpcmVjdG9yeS4K
LSAgICAgICAgICAgIG9zLm1ha2VkaXJzKHRlbXBfZGlyKQotICAgICAgICAgICAgc2NyYXRjaF9k
aXIgPSBzZWxmLl9jcmVhdGVfc2NyYXRjaF9kaXJlY3RvcnlfaW5uZXIocHJlZml4KQotCi0gICAg
ICAgIHJldHVybiBzY3JhdGNoX2RpcgotCi0gICAgZGVmIF91cmxfZG93bmxvYWRlZF9wYXRoKHNl
bGYsIHRhcmdldF9uYW1lKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLl90YXJn
ZXRfZGlyLCAiLiVzLnVybCIgJSB0YXJnZXRfbmFtZS5yZXBsYWNlKCcvJywgJ18nKSkKLQotICAg
IGRlZiBfaXNfZG93bmxvYWRlZChzZWxmLCB0YXJnZXRfbmFtZSwgdXJsKToKLSAgICAgICAgdmVy
c2lvbl9wYXRoID0gc2VsZi5fdXJsX2Rvd25sb2FkZWRfcGF0aCh0YXJnZXRfbmFtZSkKLQotICAg
ICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModmVyc2lvbl9wYXRoKToKLSAgICAgICAgICAgIHJl
dHVybiBGYWxzZQotCi0gICAgICAgIHdpdGggY29kZWNzLm9wZW4odmVyc2lvbl9wYXRoLCAiciIs
ICJ1dGYtOCIpIGFzIGZpbGVoYW5kbGU6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZWhhbmRsZS5y
ZWFkKCkuc3RyaXAoKSA9PSB1cmwuc3RyaXAoKQotCi0gICAgZGVmIF9yZWNvcmRfdXJsX2Rvd25s
b2FkZWQoc2VsZiwgdGFyZ2V0X25hbWUsIHVybCk6Ci0gICAgICAgIHZlcnNpb25fcGF0aCA9IHNl
bGYuX3VybF9kb3dubG9hZGVkX3BhdGgodGFyZ2V0X25hbWUpCi0gICAgICAgIHNlbGYuX3dyaXRl
X2ZpbGUodmVyc2lvbl9wYXRoLCB1cmwsICJ1dGYtOCIpCi0KLSAgICBkZWYgX2V4dHJhY3RfdGFy
KHNlbGYsIHBhdGgsIHNjcmF0Y2hfZGlyKToKLSAgICAgICAgIyB0YXJmaWxlLmV4dHJhY3RhbGwo
KSBleHRyYWN0cyB0byBhIHBhdGggd2l0aG91dCB0aGUgdHJhaWxpbmcgIi50YXIuZ3oiIG9yICIu
dGFyLmJ6MiIuCi0KLSAgICAgICAgaWYgcGF0aC5lbmRzd2l0aCgiLnRhci5neiIpOgotICAgICAg
ICAgICAgdGFyRmlsZVN1ZmZpeCA9ICIudGFyLmd6IgotICAgICAgICBlbGlmIHBhdGguZW5kc3dp
dGgoIi50YXIuYnoyIik6Ci0gICAgICAgICAgICB0YXJGaWxlU3VmZml4ID0gIi50YXIuYnoyIgot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIuLi4iKQotCi0gICAg
ICAgIHRhcmdldF9iYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUocGF0aFs6LWxlbih0YXJGaWxl
U3VmZml4KV0pCi0gICAgICAgIHRhcmdldF9wYXRoID0gb3MucGF0aC5qb2luKHNjcmF0Y2hfZGly
LCB0YXJnZXRfYmFzZW5hbWUpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGFyX2ZpbGUg
PSB0YXJmaWxlLm9wZW4ocGF0aCkKLSAgICAgICAgZXhjZXB0IHRhcmZpbGUuUmVhZEVycm9yIGFz
IGVycjoKLSAgICAgICAgICAgICMgQXBwZW5kIGV4aXN0aW5nIEVycm9yIG1lc3NhZ2UgdG8gbmV3
IEVycm9yLgotICAgICAgICAgICAgbWVzc2FnZSA9ICgiQ291bGQgbm90IG9wZW4gdGFyIGZpbGU6
ICVzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICIgVGhlIGZpbGUgcHJvYmFibHkgZG9lcyBu
b3QgaGF2ZSB0aGUgY29ycmVjdCBmb3JtYXQuXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICIg
LS0+IElubmVyIG1lc3NhZ2U6ICVzIgotICAgICAgICAgICAgICAgICAgICAgICAlIChwYXRoLCBl
cnIpKQotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKG1lc3NhZ2UpCi0KLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgdGFyX2ZpbGUuZXh0cmFjdGFsbCh0YXJnZXRfcGF0aCkKLSAgICAgICAg
ZmluYWxseToKLSAgICAgICAgICAgIHRhcl9maWxlLmNsb3NlKCkKLQotICAgICAgICByZXR1cm4g
dGFyZ2V0X3BhdGgKLQotICAgICMgVGhpcyBpcyBhIHJlcGxhY2VtZW50IGZvciBaaXBGaWxlLmV4
dHJhY3RhbGwoKSwgd2hpY2ggZG9lc24ndAotICAgICMgc2VlbSB0byB3b3JrIHdpdGggYW55IHNo
aXBwZWQgcHl0aG9uIDIuNy54IHZlcnNpb25zLgotICAgICMgU2VlIDxodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NTE5PiBmb3IgZGV0YWlscy4KLSAgICBkZWYgX2V4
dHJhY3RfYWxsKHNlbGYsIHppcF9maWxlLCB0YXJnZXRfZGlyKToKLSAgICAgICAgZm9yIG5hbWUg
aW4gemlwX2ZpbGUubmFtZWxpc3QoKToKLSAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4o
dGFyZ2V0X2RpciwgbmFtZSkKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmJhc2VuYW1lKHBh
dGgpOgotICAgICAgICAgICAgICAgICMgVGhlbiB0aGUgcGF0aCBlbmRzIGluIGEgc2xhc2gsIHNv
IGl0IGlzIGEgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHBhdGgpCi0g
ICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAg
ICAgICMgV2Ugb3BlbiB0aGlzIGZpbGUgdy9vIGVuY29kaW5nLCBhcyB3ZSdyZSByZWFkaW5nL3dy
aXRpbmcKLSAgICAgICAgICAgICAgICAjIHRoZSByYXcgYnl0ZS1zdHJlYW0gZnJvbSB0aGUgemlw
IGZpbGUuCi0gICAgICAgICAgICAgICAgb3V0ZmlsZSA9IG9wZW4ocGF0aCwgJ3diJykKLSAgICAg
ICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgICAgICMgTm90IGFsbCB6aXAgZmls
ZXMgc2VlbSB0byBsaXN0IHRoZSBkaXJlY3RvcmllcyBleHBsaWNpdGx5LAotICAgICAgICAgICAg
ICAgICMgc28gdHJ5IGFnYWluIGFmdGVyIGNyZWF0aW5nIHRoZSBjb250YWluaW5nIGRpcmVjdG9y
eS4KLSAgICAgICAgICAgICAgICBfbG9nLmRlYnVnKCJHb3QgSU9FcnJvcjogcmV0cnlpbmcgYWZ0
ZXIgY3JlYXRpbmcgZGlyZWN0b3J5Li4uIikKLSAgICAgICAgICAgICAgICBkaXJuYW1lID0gb3Mu
cGF0aC5kaXJuYW1lKHBhdGgpCi0gICAgICAgICAgICAgICAgb3MubWFrZWRpcnMoZGlybmFtZSkK
LSAgICAgICAgICAgICAgICBvdXRmaWxlID0gb3BlbihwYXRoLCAnd2InKQotCi0gICAgICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICAgICAgb3V0ZmlsZS53cml0ZSh6aXBfZmlsZS5yZWFkKG5hbWUp
KQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBvdXRmaWxlLmNsb3NlKCkK
LQotICAgIGRlZiBfdW56aXAoc2VsZiwgcGF0aCwgc2NyYXRjaF9kaXIpOgotICAgICAgICAjIHpp
cGZpbGUuZXh0cmFjdGFsbCgpIGV4dHJhY3RzIHRvIGEgcGF0aCB3aXRob3V0IHRoZSB0cmFpbGlu
ZyAiLnppcCIuCi0gICAgICAgIHRhcmdldF9iYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUocGF0
aFs6LWxlbigiLnppcCIpXSkKLSAgICAgICAgdGFyZ2V0X3BhdGggPSBvcy5wYXRoLmpvaW4oc2Ny
YXRjaF9kaXIsIHRhcmdldF9iYXNlbmFtZSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB6
aXBfZmlsZSA9IHppcGZpbGUuWmlwRmlsZShwYXRoLCAiciIpCi0gICAgICAgIGV4Y2VwdCB6aXBm
aWxlLkJhZFppcGZpbGUgYXMgZXJyOgotICAgICAgICAgICAgbWVzc2FnZSA9ICgiQ291bGQgbm90
IG9wZW4gemlwIGZpbGU6ICVzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICIgLS0+IElubmVy
IG1lc3NhZ2U6ICVzIgotICAgICAgICAgICAgICAgICAgICAgICAlIChwYXRoLCBlcnIpKQotICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKG1lc3NhZ2UpCi0KLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgc2VsZi5fZXh0cmFjdF9hbGwoemlwX2ZpbGUsIHRhcmdldF9wYXRoKQotICAgICAgICBm
aW5hbGx5OgotICAgICAgICAgICAgemlwX2ZpbGUuY2xvc2UoKQotCi0gICAgICAgIHJldHVybiB0
YXJnZXRfcGF0aAotCi0gICAgZGVmIF9jb3B5X3VucGFja2FnZWRfZmlsZXNfZnJvbV9sb2NhbF9j
YWNoZShzZWxmLCBwYXRoLCBzY3JhdGNoX2Rpcik6Ci0KLSAgICAgICAgdGFyZ2V0X2Jhc2VuYW1l
ID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQotICAgICAgICB0YXJnZXRfcGF0aCA9IG9zLnBhdGgu
am9pbihzY3JhdGNoX2RpciwgdGFyZ2V0X2Jhc2VuYW1lKQotCi0gICAgICAgIHNodXRpbC5jb3B5
KHBhdGgsIHRhcmdldF9wYXRoKQotICAgICAgICByZXR1cm4gdGFyZ2V0X3BhdGgKLQotICAgIGRl
ZiBfcHJlcGFyZV9wYWNrYWdlKHNlbGYsIHBhdGgsIHNjcmF0Y2hfZGlyKToKLSAgICAgICAgIiIi
UHJlcGFyZSBhIHBhY2thZ2UgZm9yIHVzZSwgaWYgbmVjZXNzYXJ5LCBhbmQgcmV0dXJuIHRoZSBu
ZXcgcGF0aC4KLQotICAgICAgICBGb3IgZXhhbXBsZSwgdGhpcyBtZXRob2QgdW56aXBzIHppcHBl
ZCBmaWxlcyBhbmQgZXh0cmFjdHMKLSAgICAgICAgdGFyIGZpbGVzLgotCi0gICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgcGF0aDogVGhlIHBhdGggdG8gdGhlIGRvd25sb2FkZWQgVVJMIGNvbnRlbnRz
LgotICAgICAgICAgIHNjcmF0Y2hfZGlyOiBUaGUgc2NyYXRjaCBkaXJlY3RvcnkuICBOb3RlIHRo
YXQgdGhlIHNjcmF0Y2gKLSAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNvbnRhaW5z
IHRoZSBmaWxlIGRlc2lnbmF0ZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIHBhdGgg
cGFyYW1ldGVyLgotCi0gICAgICAgICIiIgotICAgICAgICAjIEZJWE1FOiBBZGQgb3RoZXIgbmF0
dXJhbCBleHRlbnNpb25zLgotICAgICAgICBpZiBwYXRoLmVuZHN3aXRoKCIuemlwIik6Ci0gICAg
ICAgICAgICBuZXdfcGF0aCA9IHNlbGYuX3VuemlwKHBhdGgsIHNjcmF0Y2hfZGlyKQotICAgICAg
ICBlbGlmIHBhdGguZW5kc3dpdGgoIi50YXIuZ3oiKSBvciBwYXRoLmVuZHN3aXRoKCIudGFyLmJ6
MiIpOgotICAgICAgICAgICAgbmV3X3BhdGggPSBzZWxmLl9leHRyYWN0X3RhcihwYXRoLCBzY3Jh
dGNoX2RpcikKLSAgICAgICAgZWxpZiBfQ0FDSEVfRU5WX1ZBUiBpbiBvcy5lbnZpcm9uOgotICAg
ICAgICAgICAgbmV3X3BhdGggPSBwYXRoCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmRpcm5hbWUo
cGF0aCkgPT0gb3MucGF0aC5ub3JtcGF0aChvcy5lbnZpcm9uW19DQUNIRV9FTlZfVkFSXSk6Ci0g
ICAgICAgICAgICAgICAgbmV3X3BhdGggPSBzZWxmLl9jb3B5X3VucGFja2FnZWRfZmlsZXNfZnJv
bV9sb2NhbF9jYWNoZShwYXRoLCBzY3JhdGNoX2RpcikKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICMgTm8gcHJlcGFyYXRpb24gaXMgbmVlZGVkLgotICAgICAgICAgICAgbmV3X3BhdGggPSBw
YXRoCi0KLSAgICAgICAgcmV0dXJuIG5ld19wYXRoCi0KLSAgICBkZWYgX3BhcnNlX2NvbG9uX3Nl
cGFyYXRlZF9taXJyb3JzX2Zyb21fZW52KHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgUHlw
aSBtaXJyb3IgZXhhbWxlOiBQWVBJX01JUlJPUlM9cHlwaS5odXN0dW5pcXVlLmNvbS4uLgotICAg
ICAgICBTb3VyY2Vmb3JnZSBtaXJyb3IgZXhhbXBsZTogU09VUkNFRk9SR0VfTUlSUk9SUz1hYXJu
ZXQuZGwuc291cmNlZm9yZ2UubmV0OmNpdHlsYW4uZGwuc291cmNlZm9yZ2UubmV0Li4uCi0gICAg
ICAgIE1pcnJvciBzb3VyY2VzOiBodHRwOi8vd3d3LnB5cGktbWlycm9ycy5vcmcvLCBodHRwOi8v
c291cmNlZm9yZ2UubmV0L2FwcHMvdHJhYy9zb3VyY2Vmb3JnZS93aWtpL01pcnJvcnMKLSAgICAg
ICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHB5cGlfbWlycm9yc19saXN0ID0gb3Mu
ZW52aXJvbltfUFlQSV9FTlZfVkFSXS5zcGxpdCgnOicpCi0gICAgICAgIGV4Y2VwdChLZXlFcnJv
cik6Ci0gICAgICAgICAgICBweXBpX21pcnJvcnNfbGlzdCA9ICgpCi0KLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgc291cmNlZm9yZ2VfbWlycm9yc19saXN0ID0gb3MuZW52aXJvbltfU09VUkNF
Rk9SR0VfRU5WX1ZBUl0uc3BsaXQoJzonKQotICAgICAgICBleGNlcHQoS2V5RXJyb3IpOgotICAg
ICAgICAgICAgc291cmNlZm9yZ2VfbWlycm9yc19saXN0ID0gKCkKLQotICAgICAgICBtaXJyb3Jp
dGVyYXRvcnMgPSBpdGVyKHNvdXJjZWZvcmdlX21pcnJvcnNfbGlzdCksIGl0ZXIocHlwaV9taXJy
b3JzX2xpc3QpCi0gICAgICAgIHJldHVybiB6aXAoX01JUlJPUl9SRUdFWFMsIG1pcnJvcml0ZXJh
dG9ycykKLQotICAgIGRlZiBfcmVwbGFjZV9kb21haW5fd2l0aF9uZXh0X21pcnJvcihzZWxmLCB1
cmwsIG1pcnJvcnMpOgotICAgICAgICBwYXJzZWRfdXJsID0gbGlzdCh1cmxwYXJzZS51cmxwYXJz
ZSh1cmwpKQotICAgICAgICBuZXdfdXJsID0gTm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBmb3IgcmVnZXgsIGFkZHJlc3NlcyBpbiBtaXJyb3JzOgotICAgICAgICAgICAgICAgIGlmIHJl
Z2V4Lm1hdGNoKHBhcnNlZF91cmxbMV0pOgotICAgICAgICAgICAgICAgICAgICBwYXJzZWRfdXJs
WzFdID0gYWRkcmVzc2VzLm5leHQoKQotICAgICAgICAgICAgICAgICAgICBuZXdfdXJsID0gdXJs
cGFyc2UudXJsdW5wYXJzZShwYXJzZWRfdXJsKQotICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlv
biBhcyBlOgotICAgICAgICAgICAgX2xvZy5pbmZvKCdSYW4gb3V0IG9mIG1pcnJvcnMuJykKLQot
ICAgICAgICByZXR1cm4gbmV3X3VybAotCi0gICAgZGVmIF9kb3dubG9hZF90b19zdHJlYW0oc2Vs
ZiwgdXJsLCBzdHJlYW0pOgotICAgICAgICBtaXJyb3JzID0gc2VsZi5fcGFyc2VfY29sb25fc2Vw
YXJhdGVkX21pcnJvcnNfZnJvbV9lbnYoKQotICAgICAgICBmYWlsdXJlcyA9IDAKLSAgICAgICAg
d2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBuZXRzdHJlYW0g
PSB1cmxvcGVuKHVybCwgdGltZW91dD0zMCkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAg
ICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgICMgVHJ5IG11bHRp
cGxlIHRpbWVzCi0gICAgICAgICAgICAgICAgaWYgZmFpbHVyZXMgPCAyOgotICAgICAgICAgICAg
ICAgICAgICBfbG9nLndhcm5pbmcoIkZhaWxlZCB0byBkb3dubG9hZCAlcywgJXMgcmV0cnlpbmci
ICUgKAotICAgICAgICAgICAgICAgICAgICAgICAgdXJsLCBlcnIpKQotICAgICAgICAgICAgICAg
ICAgICBmYWlsdXJlcyArPSAxCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAg
ICAgICAgICAgICB1cmwgPSBzZWxmLl9yZXBsYWNlX2RvbWFpbl93aXRoX25leHRfbWlycm9yKHVy
bCwgbWlycm9ycykKLSAgICAgICAgICAgICAgICBpZiB1cmw6Ci0gICAgICAgICAgICAgICAgICAg
IGZhaWx1cmVzID0gMAotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAg
ICAgICAgIyBBcHBlbmQgZXhpc3RpbmcgRXJyb3IgbWVzc2FnZSB0byBuZXcgRXJyb3IuCi0gICAg
ICAgICAgICAgICAgbWVzc2FnZSA9ICgnQ291bGQgbm90IGRvd25sb2FkIFB5dGhvbiBtb2R1bGVz
IGZyb20gVVJMICIlcyIuXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiIE1ha2Ugc3Vy
ZSB5b3UgYXJlIGNvbm5lY3RlZCB0byB0aGUgaW50ZXJuZXQuXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAiIFlvdSBtdXN0IGJlIGNvbm5lY3RlZCB0byB0aGUgaW50ZXJuZXQgd2hlbiAi
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAiZG93bmxvYWRpbmcgbmVlZGVkIG1vZHVsZXMg
Zm9yIHRoZSBmaXJzdCB0aW1lLlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAtLT4g
SW5uZXIgbWVzc2FnZTogJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAlICh1cmwsIGVy
cikpCi0gICAgICAgICAgICAgICAgcmFpc2UgSU9FcnJvcihtZXNzYWdlKQotICAgICAgICBjb2Rl
ID0gMjAwCi0gICAgICAgIGlmIG5vdCB1cmwuc3RhcnRzd2l0aCgiZmlsZSIpIGFuZCBoYXNhdHRy
KG5ldHN0cmVhbSwgImdldGNvZGUiKToKLSAgICAgICAgICAgIGNvZGUgPSBuZXRzdHJlYW0uZ2V0
Y29kZSgpCi0gICAgICAgIGlmIG5vdCAyMDAgPD0gY29kZSA8IDMwMDoKLSAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoIkhUVFAgRXJyb3IgY29kZSAlcyIgJSBjb2RlKQotCi0gICAgICAgIEJV
RlNJWkUgPSAyICoqIDEzICAjIDhLQgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAg
ZGF0YSA9IG5ldHN0cmVhbS5yZWFkKEJVRlNJWkUpCi0gICAgICAgICAgICBpZiBub3QgZGF0YToK
LSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgc3RyZWFtLndyaXRlKGRhdGEpCi0g
ICAgICAgIG5ldHN0cmVhbS5jbG9zZSgpCi0KLSAgICBkZWYgX2NoZWNrX3BhY2thZ2VfaW5fbG9j
YWxfYXV0b2luc3RhbGxfY2FjaGUoc2VsZiwgZmlsZW5hbWUpOgotICAgICAgICBpZiBfQ0FDSEVf
RU5WX1ZBUiBub3QgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAg
ICAgICBwYXRoID0gZ2xvYihvcy5wYXRoLmpvaW4ob3MuZW52aXJvbltfQ0FDSEVfRU5WX1ZBUl0s
IGZpbGVuYW1lKSArICcqJykKLSAgICAgICAgaWYgbm90IHBhdGg6Ci0gICAgICAgICAgICByZXR1
cm4gRmFsc2UKLQotICAgICAgICByZXR1cm4gcGF0aFswXQotCi0gICAgZGVmIF9kb3dubG9hZChz
ZWxmLCB1cmwsIHNjcmF0Y2hfZGlyKToKLSAgICAgICAgdXJsX3BhdGggPSB1cmxwYXJzZS51cmxz
cGxpdCh1cmwpWzJdCi0gICAgICAgIHVybF9wYXRoID0gb3MucGF0aC5ub3JtcGF0aCh1cmxfcGF0
aCkgICMgUmVtb3ZlcyB0cmFpbGluZyBzbGFzaC4KLSAgICAgICAgdGFyZ2V0X2ZpbGVuYW1lID0g
b3MucGF0aC5iYXNlbmFtZSh1cmxfcGF0aCkKLQotICAgICAgICBjYWNoZSA9IHNlbGYuX2NoZWNr
X3BhY2thZ2VfaW5fbG9jYWxfYXV0b2luc3RhbGxfY2FjaGUodGFyZ2V0X2ZpbGVuYW1lKQotICAg
ICAgICBpZiBjYWNoZToKLSAgICAgICAgICAgIHJldHVybiBjYWNoZQotCi0gICAgICAgIHRhcmdl
dF9wYXRoID0gb3MucGF0aC5qb2luKHNjcmF0Y2hfZGlyLCB0YXJnZXRfZmlsZW5hbWUpCi0KLSAg
ICAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgICAgIGNvbW1hbmQgPSBbJ2N1cmwnLCB1cmwsICctTCcsICctLW91dHB1dCcsIHRhcmdldF9w
YXRoXQotICAgICAgICAgICAgICAgIHdpdGggb3Blbihvcy5kZXZudWxsLCAndycpIGFzIGRldm51
bGw6Ci0gICAgICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChjb21tYW5kLCBz
dGRvdXQ9ZGV2bnVsbCwgc3RkZXJyPWRldm51bGwpCi0gICAgICAgICAgICBleGNlcHQgc3VicHJv
Y2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBfbG9nLmluZm8o
J0Vycm9yOiBGYWlsZWQgdG8gZG93bmxvYWQge30gdG8ge30uIENvbW1hbmQ6IHt9Jy5mb3JtYXQo
dXJsLCB0YXJnZXRfcGF0aCwgY29tbWFuZCkpCi0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAg
ICAgZWxzZTogICMgV2luZG93cwotICAgICAgICAgICAgd2l0aCBvcGVuKHRhcmdldF9wYXRoLCAi
d2IiKSBhcyBzdHJlYW06Ci0gICAgICAgICAgICAgICAgc2VsZi5fZG93bmxvYWRfdG9fc3RyZWFt
KHVybCwgc3RyZWFtKQotCi0gICAgICAgIGlmIF9DQUNIRV9FTlZfVkFSIGluIG9zLmVudmlyb246
Ci0gICAgICAgICAgICBkaXJfdXRpbC5jb3B5X3RyZWUoc2NyYXRjaF9kaXIsIG9zLmVudmlyb25b
X0NBQ0hFX0VOVl9WQVJdKQotCi0gICAgICAgIHJldHVybiB0YXJnZXRfcGF0aAotCi0gICAgZGVm
IF9pbnN0YWxsKHNlbGYsIHNjcmF0Y2hfZGlyLCBwYWNrYWdlX25hbWUsIHRhcmdldF9wYXRoLCB1
cmwsIHVybF9zdWJwYXRoLCBmaWxlc190b19yZW1vdmUpOgotICAgICAgICAiIiJJbnN0YWxsIGEg
cHl0aG9uIHBhY2thZ2UgZnJvbSBhbiBVUkwuCi0KLSAgICAgICAgVGhpcyBpbnRlcm5hbCBtZXRo
b2Qgb3ZlcndyaXRlcyB0aGUgdGFyZ2V0IHBhdGggaWYgdGhlIHRhcmdldAotICAgICAgICBwYXRo
IGFscmVhZHkgZXhpc3RzLgotCi0gICAgICAgICIiIgotICAgICAgICBwYXRoID0gc2VsZi5fZG93
bmxvYWQodXJsPXVybCwgc2NyYXRjaF9kaXI9c2NyYXRjaF9kaXIpCi0gICAgICAgIHBhdGggPSBz
ZWxmLl9wcmVwYXJlX3BhY2thZ2UocGF0aCwgc2NyYXRjaF9kaXIpCi0KLSAgICAgICAgaWYgdXJs
X3N1YnBhdGggaXMgTm9uZToKLSAgICAgICAgICAgIHNvdXJjZV9wYXRoID0gcGF0aAotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgc291cmNlX3BhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgdXJs
X3N1YnBhdGgpCi0KLSAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVzX3RvX3JlbW92ZToKLSAg
ICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc291cmNlX3BhdGgsIGZpbGVuYW1lLnJlcGxh
Y2UoJy8nLCBvcy5zZXApKQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6Ci0g
ICAgICAgICAgICAgICAgIyBQcmUtZW1wdGl2ZWx5IGNoYW5nZSB0aGUgcGVybWlzc2lvbnMgdG8g
IzA3NzcgdG8gdHJ5IGFuZCB3b3JrIGFyb3VuZCB3aW4zMiBwZXJtaXNzaW9ucyBpc3N1ZXMuCi0g
ICAgICAgICAgICAgICAgb3MuY2htb2QocGF0aCwgc3RhdC5TX0lSV1hVIHwgc3RhdC5TX0lSV1hH
IHwgc3RhdC5TX0lSV1hPKQotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwYXRoKQotCi0gICAg
ICAgIGlmIG9zLnBhdGguZXhpc3RzKHRhcmdldF9wYXRoKToKLSAgICAgICAgICAgIGlmIG9zLnBh
dGguaXNkaXIodGFyZ2V0X3BhdGgpOgotICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodGFy
Z2V0X3BhdGgsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgb3MucmVtb3ZlKHRhcmdldF9wYXRoKQotCi0gICAgICAgICMgc2h1dGlsLm1vdmUo
KSBjb21tYW5kIGNyZWF0ZXMgaW50ZXJtZWRpYXRlIGRpcmVjdG9yaWVzIGlmIHRoZXkgZG8gbm90
IGV4aXN0LgotICAgICAgICBzaHV0aWwubW92ZShzb3VyY2VfcGF0aCwgdGFyZ2V0X3BhdGgpCi0K
LSAgICAgICAgIyBlbnN1cmUgYWxsIHRoZSBuZXcgZGlyZWN0b3JpZXMgYXJlIGltcG9ydGFibGUu
Ci0gICAgICAgIGludGVybWVkaWF0ZV9kaXJzID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGgucmVs
cGF0aCh0YXJnZXRfcGF0aCwgc2VsZi5fdGFyZ2V0X2RpcikpCi0gICAgICAgIHBhcmVudF9kaXJu
YW1lID0gc2VsZi5fdGFyZ2V0X2RpcgotICAgICAgICBmb3IgZGlybmFtZSBpbiBpbnRlcm1lZGlh
dGVfZGlycy5zcGxpdChvcy5zZXApOgotICAgICAgICAgICAgcGFyZW50X2Rpcm5hbWUgPSBvcy5w
YXRoLmpvaW4ocGFyZW50X2Rpcm5hbWUsIGRpcm5hbWUpCi0gICAgICAgICAgICBzZWxmLl9tYWtl
X3BhY2thZ2UocGFyZW50X2Rpcm5hbWUpCi0KLSAgICAgICAgc2VsZi5fcmVjb3JkX3VybF9kb3du
bG9hZGVkKHBhY2thZ2VfbmFtZSwgdXJsKQotCi0gICAgZGVmIGluc3RhbGwoc2VsZiwgdXJsLCBz
aG91bGRfcmVmcmVzaD1GYWxzZSwgdGFyZ2V0X25hbWU9Tm9uZSwKLSAgICAgICAgICAgICAgICB1
cmxfc3VicGF0aD1Ob25lLCBmaWxlc190b19yZW1vdmU9Tm9uZSk6Ci0gICAgICAgICIiIkluc3Rh
bGwgYSBweXRob24gcGFja2FnZSBmcm9tIGFuIFVSTCwgcmV0dXJuIEZhbHNlIGlmIGFscmVhZHkg
aW5zdGFsbGVkLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgdXJsOiBUaGUgVVJMIGZyb20g
d2hpY2ggdG8gZG93bmxvYWQgdGhlIHBhY2thZ2UuCi0KLSAgICAgICAgT3B0aW9uYWwgQXJnczoK
LSAgICAgICAgICBzaG91bGRfcmVmcmVzaDogQSBib29sZWFuIHZhbHVlIG9mIHdoZXRoZXIgdGhl
IHBhY2thZ2Ugc2hvdWxkIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkZWQg
YW5kIHJlaW5zdGFsbGVkIGFnYWluIGV2ZW4gaWYgdGhlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhY2thZ2UgaXMgYWxyZWFkeSBwcmVzZW50LgotICAgICAgICAgIHRhcmdldF9uYW1lOiBU
aGUgbmFtZSBvZiB0aGUgZm9sZGVyIG9yIGZpbGUgaW4gdGhlIGF1dG9pbnN0YWxsZXIKLSAgICAg
ICAgICAgICAgICAgICAgICAgdGFyZ2V0IGRpcmVjdG9yeSBhdCB3aGljaCB0aGUgcGFja2FnZSBz
aG91bGQgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkLiAgRGVmYXVsdHMgdG8g
dGhlIGJhc2UgbmFtZSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgVVJMIHN1Yi1wYXRo
LiAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBwcm92aWRlZCBpZgotICAgICAgICAgICAgICAgICAg
ICAgICB0aGUgVVJMIHN1Yi1wYXRoIGlzIG5vdCBzcGVjaWZpZWQuCi0gICAgICAgICAgdXJsX3N1
YnBhdGg6IFRoZSByZWxhdGl2ZSBwYXRoIG9mIHRoZSBVUkwgZGlyZWN0b3J5IHRoYXQgc2hvdWxk
Ci0gICAgICAgICAgICAgICAgICAgICAgIGJlIGluc3RhbGxlZC4gIERlZmF1bHRzIHRvIHRoZSBm
dWxsIGRpcmVjdG9yeSwgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIGVudGlyZSBVUkwg
Y29udGVudHMuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHRhcmdldF9uYW1lIGlzIE5vbmU6
Ci0gICAgICAgICAgICBpZiBub3QgdXJsX3N1YnBhdGg6Ci0gICAgICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcignVGhlICJ0YXJnZXRfbmFtZSIgcGFyYW1ldGVyIG11c3QgYmUgJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3ZpZGVkIGlmIHRoZSAidXJsX3N1YnBhdGgi
IHBhcmFtZXRlciAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXMgbm90IHBy
b3ZpZGVkLiIpCi0gICAgICAgICAgICAjIFJlbW92ZSBhbnkgdHJhaWxpbmcgc2xhc2hlcy4KLSAg
ICAgICAgICAgIHVybF9zdWJwYXRoID0gb3MucGF0aC5ub3JtcGF0aCh1cmxfc3VicGF0aCkKLSAg
ICAgICAgICAgIHRhcmdldF9uYW1lID0gb3MucGF0aC5iYXNlbmFtZSh1cmxfc3VicGF0aCkKLQot
ICAgICAgICB0YXJnZXRfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl90YXJnZXRfZGlyLCB0YXJn
ZXRfbmFtZS5yZXBsYWNlKCcvJywgb3Muc2VwKSkKLSAgICAgICAgaWYgbm90IHNob3VsZF9yZWZy
ZXNoIGFuZCBzZWxmLl9pc19kb3dubG9hZGVkKHRhcmdldF9uYW1lLCB1cmwpIGFuZCBvcy5wYXRo
LmV4aXN0cyh0YXJnZXRfcGF0aCk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAg
ICBmaWxlc190b19yZW1vdmUgPSBmaWxlc190b19yZW1vdmUgb3IgW10KLSAgICAgICAgcGFja2Fn
ZV9uYW1lID0gdGFyZ2V0X25hbWUucmVwbGFjZShvcy5zZXAsICcuJykKLSAgICAgICAgX2xvZy5p
bmZvKCJBdXRvLWluc3RhbGxpbmcgcGFja2FnZTogJXMiICUgcGFja2FnZV9uYW1lKQotCi0gICAg
ICAgICMgVGhlIHNjcmF0Y2ggZGlyZWN0b3J5IGlzIHdoZXJlIHdlIHdpbGwgZG93bmxvYWQgYW5k
IHByZXBhcmUKLSAgICAgICAgIyBmaWxlcyBzcGVjaWZpYyB0byB0aGlzIGluc3RhbGwgdW50aWwg
dGhleSBhcmUgcmVhZHkgdG8gbW92ZQotICAgICAgICAjIGludG8gcGxhY2UuCi0gICAgICAgIHNj
cmF0Y2hfZGlyID0gc2VsZi5fY3JlYXRlX3NjcmF0Y2hfZGlyZWN0b3J5KHRhcmdldF9uYW1lKQot
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX2luc3RhbGwocGFja2FnZV9uYW1lPXBh
Y2thZ2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3BhdGg9dGFyZ2V0
X3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2hfZGlyPXNjcmF0Y2hfZGly
LAotICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw9dXJsLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICB1cmxfc3VicGF0aD11cmxfc3VicGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmlsZXNfdG9fcmVtb3ZlPWZpbGVzX3RvX3JlbW92ZSkKLSAgICAgICAgZXhjZXB0IEV4Y2Vw
dGlvbiBhcyBlcnI6Ci0gICAgICAgICAgICAjIEFwcGVuZCBleGlzdGluZyBFcnJvciBtZXNzYWdl
IHRvIG5ldyBFcnJvci4KLSAgICAgICAgICAgIG1lc3NhZ2UgPSAoIkVycm9yIGF1dG8taW5zdGFs
bGluZyB0aGUgJXMgcGFja2FnZSB0bzpcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgJyAiJXMi
XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICIgLS0+IElubmVyIG1lc3NhZ2U6ICVzIgotICAg
ICAgICAgICAgICAgICAgICAgICAlICh0YXJnZXRfbmFtZSwgdGFyZ2V0X3BhdGgsIGVycikpCi0g
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24obWVzc2FnZSkKLSAgICAgICAgZmluYWxseToKLSAg
ICAgICAgICAgIHNodXRpbC5ybXRyZWUoc2NyYXRjaF9kaXIsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkK
LSAgICAgICAgX2xvZy5kZWJ1ZygnQXV0by1pbnN0YWxsZWQgJXMgdG86JyAlIHVybCkKLSAgICAg
ICAgX2xvZy5kZWJ1ZygnICAgICIlcyInICUgdGFyZ2V0X3BhdGgpCi0gICAgICAgIHJldHVybiBU
cnVlCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQkocmV2aXNpb24gMjY4ODk2
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkJKHdvcmtpbmcgY29weSkK
QEAgLTE1MSwxMiArMTUxLDYgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAgICAgICAgICMgTWFr
ZSBzdXJlIFBZVEhPTlBBVEggaXMgc2V0IHVwIHByb3Blcmx5LgogICAgICAgICBzeXMucGF0aCA9
IHNlbGYuZmluZGVyLmFkZGl0aW9uYWxfcGF0aHMoc3lzLnBhdGgpICsgc3lzLnBhdGgKIAotICAg
ICAgICAjIFdlIGF1dG9pbnN0YWxsIGV2ZXJ5dGhpbmcgdXAgc28gdGhhdCB3ZSBjYW4gcnVuIHRl
c3RzIGNvbmN1cnJlbnRseQotICAgICAgICAjIGFuZCBub3QgaGF2ZSB0byB3b3JyeSBhYm91dCBh
dXRvaW5zdGFsbGluZyBwYWNrYWdlcyBjb25jdXJyZW50bHkuCi0gICAgICAgIHNlbGYucHJpbnRl
ci53cml0ZV91cGRhdGUoIkNoZWNraW5nIGF1dG9pbnN0YWxsZWQgcGFja2FnZXMgLi4uIikKLSAg
ICAgICAgZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5IGltcG9ydCBhdXRvaW5zdGFsbF9ldmVyeXRo
aW5nCi0gICAgICAgIGF1dG9pbnN0YWxsX2V2ZXJ5dGhpbmcoKQotCiAgICAgICAgIGZyb20gd2Vi
a2l0Y29yZXB5IGltcG9ydCBBdXRvSW5zdGFsbAogICAgICAgICBBdXRvSW5zdGFsbC5pbnN0YWxs
X2V2ZXJ5dGhpbmcoKQogCkBAIC0xNjksNyArMTYzLDYgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6
CiAgICAgICAgICAgICBpbXBvcnQgY292ZXJhZ2UKICAgICAgICAgICAgIGNvdiA9IGNvdmVyYWdl
LmNvdmVyYWdlKG9taXQ9WwogICAgICAgICAgICAgICAgICIvdXNyLyoiLAotICAgICAgICAgICAg
ICAgICIqL3dlYmtpdHB5L3RoaXJkcGFydHkvYXV0b2luc3RhbGxlZC8qIiwKICAgICAgICAgICAg
ICAgICAiKi93ZWJraXRweS90aGlyZHBhcnR5L0JlYXV0aWZ1bFNvdXAucHkiLAogICAgICAgICAg
ICAgICAgICIqL3dlYmtpdHB5L3RoaXJkcGFydHkvQmVhdXRpZnVsU291cF9sZWdhY3kucHkiLAog
ICAgICAgICAgICAgXSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9f
X2luaXRfXy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvX19pbml0X18ucHkJKHJldmlzaW9uIDI2ODg5NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtMSwxNjAgKzEsMjEg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0
Lm9yZykKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogIyBhcmUgbWV0OgogIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgogIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMg
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKICMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLSMgVGhpcyBtb2R1bGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhv
biB0byB0cmVhdCB0aGlzIGRpcmVjdG9yeSBhcyBhIHBhY2thZ2UuCi0KLSIiIkF1dG9pbnN0YWxs
cyB0aGlyZC1wYXJ0eSBjb2RlIHJlcXVpcmVkIGJ5IFdlYktpdC4iIiIKLQotCi1pbXBvcnQgY29k
ZWNzCi1pbXBvcnQganNvbgotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzeXMKLQotaWYg
c3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKLSAgICBmcm9tIHVybGxpYi5yZXF1ZXN0IGltcG9y
dCB1cmxvcGVuCi1lbHNlOgotICAgIGZyb20gdXJsbGliMiBpbXBvcnQgdXJsb3BlbgotCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uYXV0b2luc3RhbGwgaW1wb3J0IEF1dG9JbnN0YWxsZXIK
LWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVt
Ci1mcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgQXV0b0luc3RhbGwKLQotX1RISVJEUEFSVFlfRElS
ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotX0FVVE9JTlNUQUxMRURfRElSID0gb3MucGF0
aC5qb2luKF9USElSRFBBUlRZX0RJUiwgImF1dG9pbnN0YWxsZWQiKQotCi0jIFB1dHRpbmcgdGhl
IGF1dG9pbnN0YWxsIGNvZGUgaW50byB3ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5Ci0j
IGVuc3VyZXMgdGhhdCBubyBhdXRvaW5zdGFsbGluZyBvY2N1cnMgdW50aWwgYSBjYWxsZXIgaW1w
b3J0cyBmcm9tCi0jIHdlYmtpdHB5LnRoaXJkcGFydHkuICBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUg
Y2FsbGVyIHdhbnRzIHRvIGNvbmZpZ3VyZQotIyBsb2dnaW5nIHByaW9yIHRvIGV4ZWN1dGluZyBh
dXRvaW5zdGFsbCBjb2RlLgotCi0jIEZJWE1FOiBJZiBhbnkgb2YgdGhlc2Ugc2VydmVycyBpcyBv
ZmZsaW5lLCB3ZWJraXQtcGF0Y2ggYnJlYWtzIChhbmQgbWF5YmUKLSMgb3RoZXIgc2NyaXB0cyBk
bywgdG9vKS4gU2VlIDxodHRwOi8vd2Via2l0Lm9yZy9iLzQyMDgwPi4KLQotIyBXZSBwdXQgYXV0
by1pbnN0YWxsZWQgdGhpcmQtcGFydHkgbW9kdWxlcyBpbiB0aGlzIGRpcmVjdG9yeS0tCi0jCi0j
ICAgICB3ZWJraXRweS90aGlyZHBhcnR5L2F1dG9pbnN0YWxsZWQKLQotZnMgPSBGaWxlU3lzdGVt
KCkKLWZzLm1heWJlX21ha2VfZGlyZWN0b3J5KF9BVVRPSU5TVEFMTEVEX0RJUikKLQotaW5pdF9w
YXRoID0gZnMuam9pbihfQVVUT0lOU1RBTExFRF9ESVIsICJfX2luaXRfXy5weSIpCi1pZiBub3Qg
ZnMuZXhpc3RzKGluaXRfcGF0aCk6Ci0gICAgZnMud3JpdGVfdGV4dF9maWxlKGluaXRfcGF0aCwg
IiIpCi0KLXJlYWRtZV9wYXRoID0gZnMuam9pbihfQVVUT0lOU1RBTExFRF9ESVIsICJSRUFETUUi
KQotaWYgbm90IGZzLmV4aXN0cyhyZWFkbWVfcGF0aCk6Ci0gICAgZnMud3JpdGVfdGV4dF9maWxl
KHJlYWRtZV9wYXRoLAotICAgICAgICAiVGhpcyBkaXJlY3RvcnkgaXMgYXV0by1nZW5lcmF0ZWQg
YnkgV2ViS2l0IGFuZCBpcyAiCi0gICAgICAgICJzYWZlIHRvIGRlbGV0ZS5cbkl0IGNvbnRhaW5z
IG5lZWRlZCB0aGlyZC1wYXJ0eSBQeXRob24gIgotICAgICAgICAicGFja2FnZXMgYXV0b21hdGlj
YWxseSBkb3dubG9hZGVkIGZyb20gdGhlIHdlYi4iKQotCi0KLWNsYXNzIEF1dG9pbnN0YWxsSW1w
b3J0SG9vayhvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlc3lzdGVtPU5vbmUp
OgotICAgICAgICBzZWxmLl9mcyA9IGZpbGVzeXN0ZW0gb3IgRmlsZVN5c3RlbSgpCi0KLSAgICBk
ZWYgX2Vuc3VyZV9hdXRvaW5zdGFsbGVkX2Rpcl9pc19pbl9zeXNfcGF0aChzZWxmKToKLSAgICAg
ICAgIyBTb21lIHBhY2thZ2VzIHJlcXVpcmUgdGhhdCB0aGUgYXJlIGJlaW5nIHB1dCBzb21ld2hl
cmUgdW5kZXIgYSBkaXJlY3RvcnkgaW4gc3lzLnBhdGguCi0gICAgICAgIGlmIG5vdCBfQVVUT0lO
U1RBTExFRF9ESVIgaW4gc3lzLnBhdGg6Ci0gICAgICAgICAgICBzeXMucGF0aC5pbnNlcnQoc3lz
LnBhdGguaW5kZXgoQXV0b0luc3RhbGwuZGlyZWN0b3J5KSArIDEgaWYgQXV0b0luc3RhbGwuZGly
ZWN0b3J5IGluIHN5cy5wYXRoIGVsc2UgMCwgX0FVVE9JTlNUQUxMRURfRElSKQotCi0gICAgZGVm
IGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgotICAgICAgICAjIFRoaXMg
bWV0aG9kIHdpbGwgcnVuIGJlZm9yZSBlYWNoIGltcG9ydC4gU2VlIGh0dHA6Ly93d3cucHl0aG9u
Lm9yZy9kZXYvcGVwcy9wZXAtMDMwMi8KLSAgICAgICAgaWYgJy5hdXRvaW5zdGFsbGVkJyBub3Qg
aW4gZnVsbG5hbWU6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAjIE5vdGU6IGFsbCBv
ZiB0aGUgbWV0aG9kcyBtdXN0IGZvbGxvdyB0aGUgIl9pbnN0YWxsX1hYWCIgY29udmVudGlvbiBp
bgotICAgICAgICAjIG9yZGVyIGZvciBhdXRvaW5zdGFsbF9ldmVyeXRoaW5nKCksIGJlbG93LCB0
byB3b3JrIHByb3Blcmx5LgotICAgICAgICBpZiAnLmJ1aWxkYm90JyBpbiBmdWxsbmFtZToKLSAg
ICAgICAgICAgIHNlbGYuX2luc3RhbGxfYnVpbGRib3QoKQotICAgICAgICBlbGlmICcudHdpc3Rl
ZF8xNV81XzAnIGluIGZ1bGxuYW1lOgotICAgICAgICAgICAgc2VsZi5faW5zdGFsbF90d2lzdGVk
XzE1XzVfMCgpCi0KLSAgICAjIGF1dG9pbnN0YWxsZWQuYnVpbGRib3QgaXMgdXNlZCBieSBCdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXJjZmdfdW5pdHRlc3Qu
cHkKLSAgICAjIGFuZCBzaG91bGQgaWRlYWxseSBtYXRjaCB0aGUgdmVyc2lvbiBvZiBCdWlsZEJv
dCB1c2VkIGF0IGJ1aWxkLndlYmtpdC5vcmcuCi0gICAgZGVmIF9pbnN0YWxsX2J1aWxkYm90KHNl
bGYpOgotICAgICAgICAjIFRoZSBidWlsZGJvdCBwYWNrYWdlIHVzZXMgamluamEyLCBmb3IgZXhh
bXBsZSwgaW4gYnVpbGRib3Qvc3RhdHVzL3dlYi9iYXNlLnB5LgotICAgICAgICAjIGJ1aWxkYm90
IGltcG9ydHMgamluamEyIGRpcmVjdGx5IChhcyB0aG91Z2ggaXQgd2VyZSBpbnN0YWxsZWQgb24g
dGhlIHN5c3RlbSksCi0gICAgICAgICMgc28gdGhlIHNlYXJjaCBwYXRoIG5lZWRzIHRvIGluY2x1
ZGUgamluamEyLiAgV2UgcHV0IGppbmphMiBpbgotICAgICAgICAjIGl0cyBvd24gZGlyZWN0b3J5
IHNvIHRoYXQgd2UgY2FuIGluY2x1ZGUgaXQgaW4gdGhlIHNlYXJjaCBwYXRoCi0gICAgICAgICMg
d2l0aG91dCBpbmNsdWRpbmcgb3RoZXIgbW9kdWxlcyBhcyBhIHNpZGUgZWZmZWN0LgotICAgICAg
ICBqaW5qYV9kaXIgPSBzZWxmLl9mcy5qb2luKF9BVVRPSU5TVEFMTEVEX0RJUiwgImppbmphMiIp
Ci0gICAgICAgIGluc3RhbGxlciA9IEF1dG9JbnN0YWxsZXIoYXBwZW5kX3RvX3NlYXJjaF9wYXRo
PVRydWUsIHRhcmdldF9kaXI9amluamFfZGlyKQotICAgICAgICBpbnN0YWxsZXIuaW5zdGFsbCh1
cmw9Imh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvSi9KaW5q
YTIvSmluamEyLTIuNi50YXIuZ3oiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdXJsX3N1YnBhdGg9IkppbmphMi0yLjYvamluamEyIikKLQotICAgICAg
ICBTUUxBbGNoZW15X2RpciA9IHNlbGYuX2ZzLmpvaW4oX0FVVE9JTlNUQUxMRURfRElSLCAic3Fs
YWxjaGVteSIpCi0gICAgICAgIGluc3RhbGxlciA9IEF1dG9JbnN0YWxsZXIoYXBwZW5kX3RvX3Nl
YXJjaF9wYXRoPVRydWUsIHRhcmdldF9kaXI9U1FMQWxjaGVteV9kaXIpCi0gICAgICAgIGluc3Rh
bGxlci5pbnN0YWxsKHVybD0iaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2Vz
L3NvdXJjZS9TL1NRTEFsY2hlbXkvU1FMQWxjaGVteS0wLjcuNy50YXIuZ3oiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybF9zdWJwYXRoPSJTUUxB
bGNoZW15LTAuNy43L2xpYi9zcWxhbGNoZW15IikKLQotICAgICAgICB0d2lzdGVkX2RpciA9IHNl
bGYuX2ZzLmpvaW4oX0FVVE9JTlNUQUxMRURfRElSLCAidHdpc3RlZCIpCi0gICAgICAgIGluc3Rh
bGxlciA9IEF1dG9JbnN0YWxsZXIocHJlcGVuZF90b19zZWFyY2hfcGF0aD1UcnVlLCB0YXJnZXRf
ZGlyPXR3aXN0ZWRfZGlyKQotICAgICAgICBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHBzOi8v
ZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvVC9Ud2lzdGVkL1R3aXN0ZWQt
MTIuMS4wLnRhci5iejIiLCB1cmxfc3VicGF0aD0iVHdpc3RlZC0xMi4xLjAvdHdpc3RlZCIpCi0K
LSAgICAgICAgc2VsZi5faW5zdGFsbCgiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3Bh
Y2thZ2VzL3NvdXJjZS9iL2J1aWxkYm90L2J1aWxkYm90LTAuOC42cDEudGFyLmd6IiwgImJ1aWxk
Ym90LTAuOC42cDEvYnVpbGRib3QiKQotCi0gICAgZGVmIF9pbnN0YWxsX3R3aXN0ZWRfMTVfNV8w
KHNlbGYpOgotICAgICAgICB0d2lzdGVkX2RpciA9IHNlbGYuX2ZzLmpvaW4oX0FVVE9JTlNUQUxM
RURfRElSLCAidHdpc3RlZF8xNV81XzAiKQotICAgICAgICBpbnN0YWxsZXIgPSBBdXRvSW5zdGFs
bGVyKHByZXBlbmRfdG9fc2VhcmNoX3BhdGg9VHJ1ZSwgdGFyZ2V0X2Rpcj10d2lzdGVkX2RpcikK
LSAgICAgICAgaW5zdGFsbGVyLmluc3RhbGwodXJsPSJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3Rl
ZC5vcmcvcGFja2FnZXMvc291cmNlL1QvVHdpc3RlZC9Ud2lzdGVkLTE1LjUuMC50YXIuYnoyIiwg
dXJsX3N1YnBhdGg9IlR3aXN0ZWQtMTUuNS4wL3R3aXN0ZWQiKQotICAgICAgICBpbnN0YWxsZXIu
aW5zdGFsbCh1cmw9Imh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3Vy
Y2Uvei96b3BlLmludGVyZmFjZS96b3BlLmludGVyZmFjZS00LjEuMy50YXIuZ3oiLCB1cmxfc3Vi
cGF0aD0iem9wZS5pbnRlcmZhY2UtNC4xLjMvc3JjL3pvcGUiKQotCi0gICAgQHN0YXRpY21ldGhv
ZAotICAgIGRlZiBncmVhdGVyX3RoYW5fZXF1YWxfdG9fdmVyc2lvbihtaW5pbXVtLCB2ZXJzaW9u
KToKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKG1pbmltdW0uc3BsaXQoJy4nKSkpOgotICAg
ICAgICAgICAgaWYgaW50KHZlcnNpb24uc3BsaXQoJy4nKVtpXSkgPiBpbnQobWluaW11bS5zcGxp
dCgnLicpW2ldKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgaWYg
aW50KHZlcnNpb24uc3BsaXQoJy4nKVtpXSkgPCBpbnQobWluaW11bS5zcGxpdCgnLicpW2ldKToK
LSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAg
IGRlZiBfaW5zdGFsbChzZWxmLCB1cmwsIHVybF9zdWJwYXRoPU5vbmUsIHRhcmdldF9uYW1lPU5v
bmUpOgotICAgICAgICBpbnN0YWxsZXIgPSBBdXRvSW5zdGFsbGVyKHRhcmdldF9kaXI9X0FVVE9J
TlNUQUxMRURfRElSKQotICAgICAgICByZXR1cm4gaW5zdGFsbGVyLmluc3RhbGwodXJsPXVybCwg
dXJsX3N1YnBhdGg9dXJsX3N1YnBhdGgsIHRhcmdldF9uYW1lPXRhcmdldF9uYW1lKQotCi0gICAg
ZGVmIGdldF9sYXRlc3RfcHlwaV91cmwoc2VsZiwgcGFja2FnZV9uYW1lLCB1cmxfc3VicGF0aF9m
b3JtYXQ9J3tuYW1lfS17dmVyc2lvbn0ve2xuYW1lfScpOgotICAgICAgICBqc29uX3VybCA9ICJo
dHRwczovL3B5cGkub3JnL3B5cGkvJXMvanNvbiIgJSBwYWNrYWdlX25hbWUKLSAgICAgICAgcmVz
cG9uc2UgPSB1cmxvcGVuKGpzb25fdXJsLCB0aW1lb3V0PTMwKQotICAgICAgICBkYXRhID0ganNv
bi5sb2FkKHJlc3BvbnNlKQotICAgICAgICB1cmwgPSBkYXRhWyd1cmxzJ11bMV1bJ3VybCddCi0g
ICAgICAgIHN1YnBhdGggPSB1cmxfc3VicGF0aF9mb3JtYXQuZm9ybWF0KG5hbWU9cGFja2FnZV9u
YW1lLCB2ZXJzaW9uPWRhdGFbJ2luZm8nXVsndmVyc2lvbiddLCBsbmFtZT1wYWNrYWdlX25hbWUu
bG93ZXIoKSkKLSAgICAgICAgcmV0dXJuICh1cmwsIHN1YnBhdGgpCi0KLSAgICBkZWYgaW5zdGFs
bF9iaW5hcnkoc2VsZiwgdXJsLCBuYW1lKToKLSAgICAgICAgc2VsZi5faW5zdGFsbCh1cmw9dXJs
LCB0YXJnZXRfbmFtZT1uYW1lKQotICAgICAgICBkaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oX0FV
VE9JTlNUQUxMRURfRElSLCBuYW1lKQotICAgICAgICBvcy5jaG1vZChvcy5wYXRoLmpvaW4oZGly
ZWN0b3J5LCBuYW1lKSwgMG83NTUpCi0gICAgICAgIG9wZW4ob3MucGF0aC5qb2luKGRpcmVjdG9y
eSwgJ19faW5pdF9fLnB5JyksICd3KycpLmNsb3NlKCkKLQotCi1faG9vayA9IEF1dG9pbnN0YWxs
SW1wb3J0SG9vaygpCi1zeXMubWV0YV9wYXRoLmluc2VydCgwLCBfaG9vaykKLQotCi1kZWYgYXV0
b2luc3RhbGxfZXZlcnl0aGluZygpOgotICAgIGluc3RhbGxfbWV0aG9kcyA9IFttZXRob2QgZm9y
IG1ldGhvZCBpbiBkaXIoX2hvb2suX19jbGFzc19fKSBpZiBtZXRob2Quc3RhcnRzd2l0aCgnX2lu
c3RhbGxfJyldCi0gICAgZm9yIG1ldGhvZCBpbiBpbnN0YWxsX21ldGhvZHM6Ci0gICAgICAgIGdl
dGF0dHIoX2hvb2ssIG1ldGhvZCkoKQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X19fdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9f
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjg4OTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvX19pbml0X19fdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwzOSAr
MCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJp
YnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci0K
LWZyb20gd2Via2l0cHkudGhpcmRwYXJ0eSBpbXBvcnQgQXV0b2luc3RhbGxJbXBvcnRIb29rCi0K
LQotY2xhc3MgVGhpcmRwYXJ0eVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0
X2ltcG9ydHMoc2VsZik6Ci0gICAgICAgICMgVGhpcyBtZXRob2QgdGVzdHMgdGhhdCB3ZSBjYW4g
YWN0dWFsbHkgaW1wb3J0IGV2ZXJ5dGhpbmcuCi0gICAgICAgICMgdW51c2VkLXZhcmlhYmxlLCBp
bXBvcnQgZmFpbHVyZXMgLSBweWxpbnQ6IGRpc2FibGUtbXNnPVcwNjEyLEUwNjExLEYwNDAxCi0g
ICAgICAgIGltcG9ydCB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQuYnVpbGRib3QK
ClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9f
X2luaXRfX191bml0dGVzdC5weQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMg
LTEgKzAsMCAjIwotTEYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412188</attachid>
            <date>2020-10-23 09:14:14 -0700</date>
            <delta_ts>2020-10-23 10:03:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218105-20201023091413.patch</filename>
            <type>text/plain</type>
            <size>19594</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2ODkyNCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMwIEBACisyMDIwLTEwLTIzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0cHldIFVzZSB3ZWJraXRjb3JlcHkncyBhdXRvaW5zdGFsbGVy
IGZvciBidWlsZGJvdCBhbmQgdHdpc3RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTA1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDU5MzU3
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEJ1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzX3VuaXR0ZXN0LnB5
OgorICAgICAgICAoQnVpbGRCb3RDb25maWdMb2FkZXIuX2FkZF9kZXBlbmRlbnRfbW9kdWxlc190
b19zeXNfbW9kdWxlcyk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5
L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weTogQnVtcCB2ZXJzaW9uLgorICAgICAgICAqIFNjcmlw
dHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvYXV0b2luc3RhbGwucHk6Cisg
ICAgICAgIChQYWNrYWdlLmFyY2hpdmVzKTogdGFyLmJ6MiBhcmNoaXZlcyBhcmUgdGFyLmd6IGFy
Y2hpdmVzLgorICAgICAgICAoUGFja2FnZS5pbnN0YWxsKTogQWZ0ZXIgcjI2NzA1Niwgd2UgZG9u
J3QgbmVlZCAib2xkLWFuZC11bm1hbmFnZWFibGUiIGFuZAorICAgICAgICAic2luZ2xlLXZlcnNp
b24tZXh0ZXJuYWxseS1tYW5hZ2VkIiwgaGFuZGxlIGNhc2Ugb2YgbmVzdGVkIG1vZHVsZXMgbW9y
ZSBjb21wbGV0ZWx5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYXV0b2luc3RhbGxlZC9i
dWlsZGJvdC5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9hdXRvaW5zdGFs
bGVkL3R3aXN0ZWQucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYmVuY2ht
YXJrX3J1bm5lci9odHRwX3NlcnZlcl9kcml2ZXIvaHR0cF9zZXJ2ZXIvdHdpc3RlZF9odHRwX3Nl
cnZlci5weToKKyAgICAgICAgSW1wb3J0IG5ldyBhdXRvIGluc3RhbGxlZCB0d2lzdGVkLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9odHRwX3NlcnZlcl9kcml2
ZXIvc2ltcGxlX2h0dHBfc2VydmVyX2RyaXZlci5weToKKyAgICAgICAgKFNpbXBsZUhUVFBTZXJ2
ZXJEcml2ZXIuX2Vuc3VyZV9odHRwX3NlcnZlcl9kZXBlbmRlbmNpZXMpOiBJbXBvcnQgbmV3IGF1
dG8gaW5zdGFsbGVkIHR3aXN0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBh
cnR5L19faW5pdF9fLnB5OgorICAgICAgICAoQXV0b2luc3RhbGxJbXBvcnRIb29rLmZpbmRfbW9k
dWxlKTogUmVtb3ZlIGFsbCBtb2R1bGVzLgorICAgICAgICAoQXV0b2luc3RhbGxJbXBvcnRIb29r
Ll9pbnN0YWxsX2J1aWxkYm90KTogRGVsZXRlZC4KKyAgICAgICAgKEF1dG9pbnN0YWxsSW1wb3J0
SG9vay5faW5zdGFsbF90d2lzdGVkXzE1XzVfMCk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fX3VuaXR0ZXN0LnB5OiBSZW1vdmVkLgorCiAy
MDIwLTEwLTIyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgTnVsbCBjaGVjayBwbGF0Zm9ybVN0cmF0ZWdpZXMgd2hlbiBtYWtpbmcgYmxvYiBy
ZWFkIHN0cmVhbSBmb3IgYW4gTlNVUkxSZXF1ZXN0CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9zdGVwc191bml0dGVzdC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9zdGVw
c191bml0dGVzdC5weQkocmV2aXNpb24gMjY4ODk2KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvc3RlcHNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgQnVpbGRCb3RDb25maWdMb2FkZXIob2JqZWN0KToK
IAogICAgIGRlZiBfYWRkX2RlcGVuZGVudF9tb2R1bGVzX3RvX3N5c19tb2R1bGVzKHNlbGYpOgog
ICAgICAgICBzZWxmLl9hZGRfd2Via2l0cHlfdG9fc3lzX3BhdGgoKQotICAgICAgICBmcm9tIHdl
YmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZCBpbXBvcnQgYnVpbGRib3QKKyAgICAgICAg
ZnJvbSB3ZWJraXRweS5hdXRvaW5zdGFsbGVkIGltcG9ydCBidWlsZGJvdAogICAgICAgICBzeXMu
bW9kdWxlc1snYnVpbGRib3QnXSA9IGJ1aWxkYm90CiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19f
aW5pdF9fLnB5CShyZXZpc2lvbiAyNjg4OTYpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw3ICszNSw3IEBAIGZyb20gd2Via2l0Y29yZXB5LnRpbWVvdXQgaW1wb3J0IFRpbWVvdXQKIGZy
b20gd2Via2l0Y29yZXB5LnN1YnByb2Nlc3NfdXRpbHMgaW1wb3J0IFRpbWVvdXRFeHBpcmVkLCBD
b21wbGV0ZWRQcm9jZXNzLCBydW4KIGZyb20gd2Via2l0Y29yZXB5Lm91dHB1dF9jYXB0dXJlIGlt
cG9ydCBMb2dnZXJDYXB0dXJlLCBPdXRwdXRDYXB0dXJlLCBPdXRwdXREdXBsaWNhdGUKIAotdmVy
c2lvbiA9IFZlcnNpb24oMCwgNCwgMTkpCit2ZXJzaW9uID0gVmVyc2lvbigwLCA0LCAyMCkKIAog
ZnJvbSB3ZWJraXRjb3JlcHkuYXV0b2luc3RhbGwgaW1wb3J0IFBhY2thZ2UsIEF1dG9JbnN0YWxs
CiBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9hdXRvaW5zdGFsbC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2F1
dG9pbnN0YWxsLnB5CShyZXZpc2lvbiAyNjg4OTYpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2F1dG9pbnN0YWxsLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0xNTQsNyArMTU0LDcgQEAgY2xhc3MgUGFja2FnZShvYmplY3QpOgogICAgICAgICAgICAg
ICAgICAgICBleHRlbnNpb24gPSAnd2hsJwogCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICAgICAgaWYgZWxlbWVudC5jaGlsZE5vZGVzWzBdLmRhdGEuZW5kc3dpdGgoJy50
YXIuZ3onKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZWxlbWVudC5jaGlsZE5vZGVzWzBdLmRh
dGEuZW5kc3dpdGgoJy50YXIuZ3onKSBvciBlbGVtZW50LmNoaWxkTm9kZXNbMF0uZGF0YS5lbmRz
d2l0aCgnLnRhci5iejInKToKICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9ICd0
YXIuZ3onCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgZWxlbWVudC5jaGlsZE5vZGVzWzBdLmRh
dGEuZW5kc3dpdGgoJy56aXAnKToKICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9
ICd6aXAnCkBAIC0yMzMsMTIgKzIzMyw4IEBAIGNsYXNzIFBhY2thZ2Uob2JqZWN0KToKICAgICAg
ICAgICAgIHRlbXBfbG9jYXRpb24gPSBvcy5wYXRoLmpvaW4odGVtcGZpbGUuZ2V0dGVtcGRpcigp
LCBzZWxmLm5hbWUpCiAgICAgICAgICAgICBhcmNoaXZlLnVucGFjayh0ZW1wX2xvY2F0aW9uKQog
Ci0gICAgICAgICAgICBmb3IgY2FuZGlkYXRlIGluIFsKLSAgICAgICAgICAgICAgICBvcy5wYXRo
LmpvaW4odGVtcF9sb2NhdGlvbiwgc3RyKGFyY2hpdmUpKSwKLSAgICAgICAgICAgICAgICBvcy5w
YXRoLmpvaW4odGVtcF9sb2NhdGlvbiwgJ3t9LXt9Lnt9Jy5mb3JtYXQoYXJjaGl2ZS5uYW1lLCBh
cmNoaXZlLnZlcnNpb24ubWFqb3IsIGFyY2hpdmUudmVyc2lvbi5taW5vcikpLAotICAgICAgICAg
ICAgICAgIG9zLnBhdGguam9pbih0ZW1wX2xvY2F0aW9uLCAne30te30ue30ue30nLmZvcm1hdChh
cmNoaXZlLm5hbWUucmVwbGFjZSgnLScsICdfJyksIGFyY2hpdmUudmVyc2lvbi5tYWpvciwgYXJj
aGl2ZS52ZXJzaW9uLm1pbm9yLCBhcmNoaXZlLnZlcnNpb24udGlueSkpLAotICAgICAgICAgICAg
ICAgIG9zLnBhdGguam9pbih0ZW1wX2xvY2F0aW9uLCAne30te30nLmZvcm1hdChhcmNoaXZlLm5h
bWUuY2FwaXRhbGl6ZSgpLCBhcmNoaXZlLnZlcnNpb24pKSwKLSAgICAgICAgICAgIF06CisgICAg
ICAgICAgICBmb3IgY2FuZGlkYXRlIGluIG9zLmxpc3RkaXIodGVtcF9sb2NhdGlvbik6CisgICAg
ICAgICAgICAgICAgY2FuZGlkYXRlID0gb3MucGF0aC5qb2luKHRlbXBfbG9jYXRpb24sIGNhbmRp
ZGF0ZSkKICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2lu
KGNhbmRpZGF0ZSwgJ3NldHVwLnB5JykpOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQog
CkBAIC0yNTYsMTQgKzI1MiwxMCBAQCBjbGFzcyBQYWNrYWdlKG9iamVjdCk6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJy0taG9tZT17fScuZm9ybWF0KGluc3RhbGxfbG9jYXRpb24pLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXJvb3Q9LycsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJy0tcHJlZml4PScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0t
c2luZ2xlLXZlcnNpb24tZXh0ZXJuYWxseS1tYW5hZ2VkJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnLS1pbnN0YWxsLWxpYj17fScuZm9ybWF0KGluc3RhbGxfbG9jYXRpb24pLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICctLWluc3RhbGwtc2NyaXB0cz17fScuZm9ybWF0KG9z
LnBhdGguam9pbihpbnN0YWxsX2xvY2F0aW9uLCAnYmluJykpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICctLWluc3RhbGwtZGF0YT17fScuZm9ybWF0KG9zLnBhdGguam9pbihpbnN0YWxs
X2xvY2F0aW9uLCAnZGF0YScpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1pbnN0
YWxsLWhlYWRlcnM9e30nLmZvcm1hdChvcy5wYXRoLmpvaW4oaW5zdGFsbF9sb2NhdGlvbiwgJ2hl
YWRlcnMnKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBEbyBub3QgYXV0b21hdGlj
YWxseSBpbnN0YWxsIHBhY2thZ2UgZGVwZW5kZW5jaWVzLCBmb3JjZSBzY3JpcHRzIHRvIGJlIGV4
cGxpY2l0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFdmVuIHdpdGhvdXQgdGhpcyBm
bGFnLCBzZXR1cC5weSBpcyBub3QgY29uc2lzdGVudCBhYm91dCBpbnN0YWxsaW5nIGRlcGVuZGVu
Y2llcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1vbGQtYW5kLXVubWFuYWdlYWJs
ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAg
Y3dkPWNhbmRpZGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1kaWN0KApAQCAtMjc4
LDYgKzI3MCwxMSBAQCBjbGFzcyBQYWNrYWdlKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGRlcnI9ZGV2bnVsbCwKICAgICAgICAgICAgICAgICAgICAgKQogCisgICAgICAgICAg
ICAgICAgbG9jYXRpb24gPSBvcy5wYXRoLmpvaW4oQXV0b0luc3RhbGwuZGlyZWN0b3J5LCBzZWxm
Lm5hbWUuc3BsaXQoJy4nKVswXSkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGxv
Y2F0aW9uKSBhbmQgJ19faW5pdF9fLnB5JyBub3QgaW4gb3MubGlzdGRpcihsb2NhdGlvbik6Cisg
ICAgICAgICAgICAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4obG9jYXRpb24sICdfX2lu
aXRfXy5weScpLCAndycpIGFzIGluaXQ6CisgICAgICAgICAgICAgICAgICAgICAgICBpbml0Lndy
aXRlKCdcbicpCisKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgICAgICAjIFdlIG1pZ2h0IG5vdCBuZWVkIHNldHVwLnB5IGF0IGFsbCwgY2hlY2sg
aWYgd2UgaGF2ZSBkaXN0LWluZm8gYW5kIHRoZSBsaWJyYXJ5IGluIHRoZSB0ZW1wb3JhcnkgbG9j
YXRpb24KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYXV0b2luc3RhbGxlZC9idWlsZGJv
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2F1dG9pbnN0YWxsZWQv
YnVpbGRib3QucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9hdXRv
aW5zdGFsbGVkL2J1aWxkYm90LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5cworCitmcm9tIHdl
YmtpdHNjbXB5IGltcG9ydCBBdXRvSW5zdGFsbCwgUGFja2FnZSwgVmVyc2lvbgorCitpZiBzeXMu
dmVyc2lvbl9pbmZvWzBdID4gMjoKKyAgICBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdh
dXRvYmFobicsIFZlcnNpb24oMjAsIDcsIDEpKSkKKyAgICBBdXRvSW5zdGFsbC5yZWdpc3RlcihQ
YWNrYWdlKCdidWlsZGJvdCcsIFZlcnNpb24oMiwgOCwgNCkpKQorICAgIEF1dG9JbnN0YWxsLnJl
Z2lzdGVyKFBhY2thZ2UoJ2RhdGV1dGlsJywgVmVyc2lvbigyLCA4LCAxKSwgcHlwaV9uYW1lPSdw
eXRob24tZGF0ZXV0aWwnKSkKKyAgICBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdqaW5q
YTInLCBWZXJzaW9uKDIsIDExLCAyKSwgcHlwaV9uYW1lPSdKaW5qYTInKSkKKyAgICBBdXRvSW5z
dGFsbC5yZWdpc3RlcihQYWNrYWdlKCdqd3QnLCBWZXJzaW9uKDEsIDcsIDEpLCBweXBpX25hbWU9
J1B5SldUJykpCisgICAgQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgncHl5YW1sJywgVmVy
c2lvbig1LCAzLCAxKSwgcHlwaV9uYW1lPSdQeVlBTUwnKSkKKyAgICBBdXRvSW5zdGFsbC5yZWdp
c3RlcihQYWNrYWdlKCdzcWxhbGNoZW15JywgVmVyc2lvbigxLCAzLCAyMCksIHB5cGlfbmFtZT0n
U1FMQWxjaGVteScpKQorICAgIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ3NxbGFsY2hl
bXktbWlncmF0ZScsIFZlcnNpb24oMCwgMTMsIDApKSkKKyAgICBBdXRvSW5zdGFsbC5yZWdpc3Rl
cihQYWNrYWdlKCd0d2lzdGVkJywgVmVyc2lvbigyMCwgMywgMCksIHB5cGlfbmFtZT0nVHdpc3Rl
ZCcpKQorICAgIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ3R4YWlvJywgVmVyc2lvbigy
MCwgNCwgMSkpKQorCitlbHNlOgorICAgIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2J1
aWxkYm90JywgVmVyc2lvbigwLCA4LCA2KSkpCisgICAgQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFj
a2FnZSgnZGF0ZXV0aWwnLCBWZXJzaW9uKDIsIDgsIDEpLCBweXBpX25hbWU9J3B5dGhvbi1kYXRl
dXRpbCcpKQorICAgIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2ppbmphMicsIFZlcnNp
b24oMiwgNiksIHB5cGlfbmFtZT0nSmluamEyJykpCisgICAgQXV0b0luc3RhbGwucmVnaXN0ZXIo
UGFja2FnZSgnc3FsYWxjaGVteScsIFZlcnNpb24oMCwgNywgNyksIHB5cGlfbmFtZT0nU1FMQWxj
aGVteScpKQorICAgIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ3NxbGFsY2hlbXktbWln
cmF0ZScsIFZlcnNpb24oMCwgNywgMikpKQorICAgIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2th
Z2UoJ3R3aXN0ZWQnLCBWZXJzaW9uKDEyLCAxLCAwKSwgcHlwaV9uYW1lPSdUd2lzdGVkJykpCisK
K3N5cy5tb2R1bGVzW19fbmFtZV9fXSA9IF9faW1wb3J0X18oJ2J1aWxkYm90JykKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvYXV0b2luc3RhbGxlZC90d2lzdGVkLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYXV0b2luc3RhbGxlZC90d2lzdGVkLnB5CShub25l
eGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYXV0b2luc3RhbGxlZC90d2lzdGVk
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisj
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5cworCitmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBB
dXRvSW5zdGFsbCwgUGFja2FnZSwgVmVyc2lvbgorCitBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNr
YWdlKCd0d2lzdGVkJywgVmVyc2lvbigxNSwgNSwgMCksIHB5cGlfbmFtZT0nVHdpc3RlZCcpKQor
c3lzLm1vZHVsZXNbX19uYW1lX19dID0gX19pbXBvcnRfXygndHdpc3RlZCcpCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvaHR0cF9zZXJ2ZXJfZHJpdmVyL3Np
bXBsZV9odHRwX3NlcnZlcl9kcml2ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2h0dHBfc2VydmVyX2RyaXZlci9zaW1wbGVfaHR0cF9z
ZXJ2ZXJfZHJpdmVyLnB5CShyZXZpc2lvbiAyNjg4OTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2JlbmNobWFya19ydW5uZXIvaHR0cF9zZXJ2ZXJfZHJpdmVyL3NpbXBsZV9odHRwX3NlcnZl
cl9kcml2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTEwNSwxMCArMTA1LDQgQEAgY2xhc3MgU2lt
cGxlSFRUUFNlcnZlckRyaXZlcihIVFRQU2VydmVyRAogICAgIGRlZiBfZW5zdXJlX2h0dHBfc2Vy
dmVyX2RlcGVuZGVuY2llcyhzZWxmKToKICAgICAgICAgX2xvZy5pbmZvKCdFbnN1cmUgZGVwZW5k
ZW5jaWVzIG9mIGh0dHAgc2VydmVyIGlzIHNhdGlzZmllZCcpCiAgICAgICAgIGZyb20gcGtnX3Jl
c291cmNlcyBpbXBvcnQgcmVxdWlyZSwgVmVyc2lvbkNvbmZsaWN0LCBEaXN0cmlidXRpb25Ob3RG
b3VuZAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXF1aXJlKCJUd2lzdGVkPj0xNS41LjAi
KQotICAgICAgICAgICAgaW1wb3J0IHR3aXN0ZWQKLSAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJv
ciwgVmVyc2lvbkNvbmZsaWN0LCBEaXN0cmlidXRpb25Ob3RGb3VuZCk6Ci0gICAgICAgICAgICBf
bG9nLmluZm8oIldpbGwgaW5zdGFsbCB0d2lzdGVkIGluIHdlYmtpdHB5LCBhbmQgdHdpc3RlZCB3
aWxsIGJlIHVzZWQgYnkgd2Via2l0cHkgb25seSIpCi0gICAgICAgICAgICBzeXMucGF0aC5hcHBl
bmQob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5h
YnNwYXRoKF9fZmlsZV9fKSksICcuLi8uLi8uLi8uLicpKSkKLSAgICAgICAgICAgIGZyb20gd2Vi
a2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLnR3aXN0ZWRfMTVfNV8wIGltcG9ydCB0d2lz
dGVkCisgICAgICAgIGZyb20gd2Via2l0cHkuYXV0b2luc3RhbGxlZCBpbXBvcnQgdHdpc3RlZApJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2h0dHBfc2VydmVy
X2RyaXZlci9odHRwX3NlcnZlci90d2lzdGVkX2h0dHBfc2VydmVyLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9odHRwX3NlcnZlcl9kcml2
ZXIvaHR0cF9zZXJ2ZXIvdHdpc3RlZF9odHRwX3NlcnZlci5weQkocmV2aXNpb24gMjY4ODk2KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2h0dHBfc2VydmVyX2Ry
aXZlci9odHRwX3NlcnZlci90d2lzdGVkX2h0dHBfc2VydmVyLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC00LDE0ICs0LDkgQEAgaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9z
CiBpbXBvcnQgc3lzCi1mcm9tIHBrZ19yZXNvdXJjZXMgaW1wb3J0IHJlcXVpcmUsIFZlcnNpb25D
b25mbGljdCwgRGlzdHJpYnV0aW9uTm90Rm91bmQKIAotdHJ5OgotICAgIHJlcXVpcmUoIlR3aXN0
ZWQ+PTE1LjUuMCIpCi0gICAgaW1wb3J0IHR3aXN0ZWQKLWV4Y2VwdCAoSW1wb3J0RXJyb3IsIFZl
cnNpb25Db25mbGljdCwgRGlzdHJpYnV0aW9uTm90Rm91bmQpOgotICAgIHN5cy5wYXRoLmFwcGVu
ZChvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFi
c3BhdGgoX19maWxlX18pKSwgJy4uLy4uLy4uLy4uJykpKQotICAgIGZyb20gd2Via2l0cHkudGhp
cmRwYXJ0eS5hdXRvaW5zdGFsbGVkLnR3aXN0ZWRfMTVfNV8wIGltcG9ydCB0d2lzdGVkCitmcm9t
IHBrZ19yZXNvdXJjZXMgaW1wb3J0IHJlcXVpcmUsIFZlcnNpb25Db25mbGljdCwgRGlzdHJpYnV0
aW9uTm90Rm91bmQKK2Zyb20gd2Via2l0cHkuYXV0b2luc3RhbGxlZCBpbXBvcnQgdHdpc3RlZAog
CiBmcm9tIHR3aXN0ZWQud2ViIGltcG9ydCBzdGF0aWMsIHNlcnZlcgogZnJvbSB0d2lzdGVkLndl
Yi5yZXNvdXJjZSBpbXBvcnQgUmVzb3VyY2UKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGhpcmRwYXJ0eS9fX2luaXRfXy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3RoaXJkcGFydHkvX19pbml0X18ucHkJKHJldmlzaW9uIDI2ODg5NikKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAt
MjYsMTAgKzI2LDggQEAKICIiIkF1dG9pbnN0YWxscyB0aGlyZC1wYXJ0eSBjb2RlIHJlcXVpcmVk
IGJ5IFdlYktpdC4iIiIKIAogCi1pbXBvcnQgY29kZWNzCiBpbXBvcnQganNvbgogaW1wb3J0IG9z
Ci1pbXBvcnQgcmUKIGltcG9ydCBzeXMKIAogaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToK
QEAgLTgxLDQ2ICs3OSw3IEBAIGNsYXNzIEF1dG9pbnN0YWxsSW1wb3J0SG9vayhvYmplY3QpOgog
ICAgICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KHN5cy5wYXRoLmluZGV4KEF1dG9JbnN0YWxsLmRp
cmVjdG9yeSkgKyAxIGlmIEF1dG9JbnN0YWxsLmRpcmVjdG9yeSBpbiBzeXMucGF0aCBlbHNlIDAs
IF9BVVRPSU5TVEFMTEVEX0RJUikKIAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFt
ZSwgcGF0aD1Ob25lKToKLSAgICAgICAgIyBUaGlzIG1ldGhvZCB3aWxsIHJ1biBiZWZvcmUgZWFj
aCBpbXBvcnQuIFNlZSBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAzMDIvCi0g
ICAgICAgIGlmICcuYXV0b2luc3RhbGxlZCcgbm90IGluIGZ1bGxuYW1lOgotICAgICAgICAgICAg
cmV0dXJuCi0KLSAgICAgICAgIyBOb3RlOiBhbGwgb2YgdGhlIG1ldGhvZHMgbXVzdCBmb2xsb3cg
dGhlICJfaW5zdGFsbF9YWFgiIGNvbnZlbnRpb24gaW4KLSAgICAgICAgIyBvcmRlciBmb3IgYXV0
b2luc3RhbGxfZXZlcnl0aGluZygpLCBiZWxvdywgdG8gd29yayBwcm9wZXJseS4KLSAgICAgICAg
aWYgJy5idWlsZGJvdCcgaW4gZnVsbG5hbWU6Ci0gICAgICAgICAgICBzZWxmLl9pbnN0YWxsX2J1
aWxkYm90KCkKLSAgICAgICAgZWxpZiAnLnR3aXN0ZWRfMTVfNV8wJyBpbiBmdWxsbmFtZToKLSAg
ICAgICAgICAgIHNlbGYuX2luc3RhbGxfdHdpc3RlZF8xNV81XzAoKQotCi0gICAgIyBhdXRvaW5z
dGFsbGVkLmJ1aWxkYm90IGlzIHVzZWQgYnkgQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvbWFzdGVyY2ZnX3VuaXR0ZXN0LnB5Ci0gICAgIyBhbmQgc2hvdWxkIGlkZWFs
bHkgbWF0Y2ggdGhlIHZlcnNpb24gb2YgQnVpbGRCb3QgdXNlZCBhdCBidWlsZC53ZWJraXQub3Jn
LgotICAgIGRlZiBfaW5zdGFsbF9idWlsZGJvdChzZWxmKToKLSAgICAgICAgIyBUaGUgYnVpbGRi
b3QgcGFja2FnZSB1c2VzIGppbmphMiwgZm9yIGV4YW1wbGUsIGluIGJ1aWxkYm90L3N0YXR1cy93
ZWIvYmFzZS5weS4KLSAgICAgICAgIyBidWlsZGJvdCBpbXBvcnRzIGppbmphMiBkaXJlY3RseSAo
YXMgdGhvdWdoIGl0IHdlcmUgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0pLAotICAgICAgICAjIHNv
IHRoZSBzZWFyY2ggcGF0aCBuZWVkcyB0byBpbmNsdWRlIGppbmphMi4gIFdlIHB1dCBqaW5qYTIg
aW4KLSAgICAgICAgIyBpdHMgb3duIGRpcmVjdG9yeSBzbyB0aGF0IHdlIGNhbiBpbmNsdWRlIGl0
IGluIHRoZSBzZWFyY2ggcGF0aAotICAgICAgICAjIHdpdGhvdXQgaW5jbHVkaW5nIG90aGVyIG1v
ZHVsZXMgYXMgYSBzaWRlIGVmZmVjdC4KLSAgICAgICAgamluamFfZGlyID0gc2VsZi5fZnMuam9p
bihfQVVUT0lOU1RBTExFRF9ESVIsICJqaW5qYTIiKQotICAgICAgICBpbnN0YWxsZXIgPSBBdXRv
SW5zdGFsbGVyKGFwcGVuZF90b19zZWFyY2hfcGF0aD1UcnVlLCB0YXJnZXRfZGlyPWppbmphX2Rp
cikKLSAgICAgICAgaW5zdGFsbGVyLmluc3RhbGwodXJsPSJodHRwczovL2ZpbGVzLnB5dGhvbmhv
c3RlZC5vcmcvcGFja2FnZXMvc291cmNlL0ovSmluamEyL0ppbmphMi0yLjYudGFyLmd6IiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybF9zdWJwYXRo
PSJKaW5qYTItMi42L2ppbmphMiIpCi0KLSAgICAgICAgU1FMQWxjaGVteV9kaXIgPSBzZWxmLl9m
cy5qb2luKF9BVVRPSU5TVEFMTEVEX0RJUiwgInNxbGFsY2hlbXkiKQotICAgICAgICBpbnN0YWxs
ZXIgPSBBdXRvSW5zdGFsbGVyKGFwcGVuZF90b19zZWFyY2hfcGF0aD1UcnVlLCB0YXJnZXRfZGly
PVNRTEFsY2hlbXlfZGlyKQotICAgICAgICBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHBzOi8v
ZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvUy9TUUxBbGNoZW15L1NRTEFs
Y2hlbXktMC43LjcudGFyLmd6IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1cmxfc3VicGF0aD0iU1FMQWxjaGVteS0wLjcuNy9saWIvc3FsYWxjaGVt
eSIpCi0KLSAgICAgICAgdHdpc3RlZF9kaXIgPSBzZWxmLl9mcy5qb2luKF9BVVRPSU5TVEFMTEVE
X0RJUiwgInR3aXN0ZWQiKQotICAgICAgICBpbnN0YWxsZXIgPSBBdXRvSW5zdGFsbGVyKHByZXBl
bmRfdG9fc2VhcmNoX3BhdGg9VHJ1ZSwgdGFyZ2V0X2Rpcj10d2lzdGVkX2RpcikKLSAgICAgICAg
aW5zdGFsbGVyLmluc3RhbGwodXJsPSJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFj
a2FnZXMvc291cmNlL1QvVHdpc3RlZC9Ud2lzdGVkLTEyLjEuMC50YXIuYnoyIiwgdXJsX3N1YnBh
dGg9IlR3aXN0ZWQtMTIuMS4wL3R3aXN0ZWQiKQotCi0gICAgICAgIHNlbGYuX2luc3RhbGwoImh0
dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvYi9idWlsZGJvdC9i
dWlsZGJvdC0wLjguNnAxLnRhci5neiIsICJidWlsZGJvdC0wLjguNnAxL2J1aWxkYm90IikKLQot
ICAgIGRlZiBfaW5zdGFsbF90d2lzdGVkXzE1XzVfMChzZWxmKToKLSAgICAgICAgdHdpc3RlZF9k
aXIgPSBzZWxmLl9mcy5qb2luKF9BVVRPSU5TVEFMTEVEX0RJUiwgInR3aXN0ZWRfMTVfNV8wIikK
LSAgICAgICAgaW5zdGFsbGVyID0gQXV0b0luc3RhbGxlcihwcmVwZW5kX3RvX3NlYXJjaF9wYXRo
PVRydWUsIHRhcmdldF9kaXI9dHdpc3RlZF9kaXIpCi0gICAgICAgIGluc3RhbGxlci5pbnN0YWxs
KHVybD0iaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9UL1R3
aXN0ZWQvVHdpc3RlZC0xNS41LjAudGFyLmJ6MiIsIHVybF9zdWJwYXRoPSJUd2lzdGVkLTE1LjUu
MC90d2lzdGVkIikKLSAgICAgICAgaW5zdGFsbGVyLmluc3RhbGwodXJsPSJodHRwczovL2ZpbGVz
LnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL3ovem9wZS5pbnRlcmZhY2Uvem9wZS5p
bnRlcmZhY2UtNC4xLjMudGFyLmd6IiwgdXJsX3N1YnBhdGg9InpvcGUuaW50ZXJmYWNlLTQuMS4z
L3NyYy96b3BlIikKKyAgICAgICAgcGFzcwogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBn
cmVhdGVyX3RoYW5fZXF1YWxfdG9fdmVyc2lvbihtaW5pbXVtLCB2ZXJzaW9uKToKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfX191bml0dGVzdC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X19fdW5p
dHRlc3QucHkJKHJldmlzaW9uIDI2ODg5NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhp
cmRwYXJ0eS9fX2luaXRfX191bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDM5ICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRp
b24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLQotZnJv
bSB3ZWJraXRweS50aGlyZHBhcnR5IGltcG9ydCBBdXRvaW5zdGFsbEltcG9ydEhvb2sKLQotCi1j
bGFzcyBUaGlyZHBhcnR5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfaW1w
b3J0cyhzZWxmKToKLSAgICAgICAgIyBUaGlzIG1ldGhvZCB0ZXN0cyB0aGF0IHdlIGNhbiBhY3R1
YWxseSBpbXBvcnQgZXZlcnl0aGluZy4KLSAgICAgICAgIyB1bnVzZWQtdmFyaWFibGUsIGltcG9y
dCBmYWlsdXJlcyAtIHB5bGludDogZGlzYWJsZS1tc2c9VzA2MTIsRTA2MTEsRjA0MDEKLSAgICAg
ICAgaW1wb3J0IHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5idWlsZGJvdAoKUHJv
cGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5p
dF9fX3VuaXR0ZXN0LnB5Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSAr
MCwwICMjCi1MRgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412192</attachid>
            <date>2020-10-23 10:03:32 -0700</date>
            <delta_ts>2020-10-23 10:43:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218105-20201023100331.patch</filename>
            <type>text/plain</type>
            <size>20286</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2ODkyNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMwIEBACisyMDIwLTEwLTIzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0cHldIFVzZSB3ZWJraXRjb3JlcHkncyBhdXRvaW5zdGFsbGVy
IGZvciBidWlsZGJvdCBhbmQgdHdpc3RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTA1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDU5MzU3
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEJ1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzX3VuaXR0ZXN0LnB5
OgorICAgICAgICAoQnVpbGRCb3RDb25maWdMb2FkZXIuX2FkZF9kZXBlbmRlbnRfbW9kdWxlc190
b19zeXNfbW9kdWxlcyk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5
L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weTogQnVtcCB2ZXJzaW9uLgorICAgICAgICAqIFNjcmlw
dHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvYXV0b2luc3RhbGwucHk6Cisg
ICAgICAgIChQYWNrYWdlLmFyY2hpdmVzKTogdGFyLmJ6MiBhcmNoaXZlcyBhcmUgdGFyLmd6IGFy
Y2hpdmVzLgorICAgICAgICAoUGFja2FnZS5pbnN0YWxsKTogQWZ0ZXIgcjI2NzA1Niwgd2UgZG9u
J3QgbmVlZCAib2xkLWFuZC11bm1hbmFnZWFibGUiIGFuZAorICAgICAgICAic2luZ2xlLXZlcnNp
b24tZXh0ZXJuYWxseS1tYW5hZ2VkIiwgaGFuZGxlIGNhc2Ugb2YgbmVzdGVkIG1vZHVsZXMgbW9y
ZSBjb21wbGV0ZWx5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYXV0b2luc3RhbGxlZC9i
dWlsZGJvdC5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9hdXRvaW5zdGFs
bGVkL3R3aXN0ZWQucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYmVuY2ht
YXJrX3J1bm5lci9odHRwX3NlcnZlcl9kcml2ZXIvaHR0cF9zZXJ2ZXIvdHdpc3RlZF9odHRwX3Nl
cnZlci5weToKKyAgICAgICAgSW1wb3J0IG5ldyBhdXRvIGluc3RhbGxlZCB0d2lzdGVkLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9odHRwX3NlcnZlcl9kcml2
ZXIvc2ltcGxlX2h0dHBfc2VydmVyX2RyaXZlci5weToKKyAgICAgICAgKFNpbXBsZUhUVFBTZXJ2
ZXJEcml2ZXIuX2Vuc3VyZV9odHRwX3NlcnZlcl9kZXBlbmRlbmNpZXMpOiBJbXBvcnQgbmV3IGF1
dG8gaW5zdGFsbGVkIHR3aXN0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBh
cnR5L19faW5pdF9fLnB5OgorICAgICAgICAoQXV0b2luc3RhbGxJbXBvcnRIb29rLmZpbmRfbW9k
dWxlKTogUmVtb3ZlIGFsbCBtb2R1bGVzLgorICAgICAgICAoQXV0b2luc3RhbGxJbXBvcnRIb29r
Ll9pbnN0YWxsX2J1aWxkYm90KTogRGVsZXRlZC4KKyAgICAgICAgKEF1dG9pbnN0YWxsSW1wb3J0
SG9vay5faW5zdGFsbF90d2lzdGVkXzE1XzVfMCk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fX3VuaXR0ZXN0LnB5OiBSZW1vdmVkLgorCiAy
MDIwLTEwLTIzICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW5hbWUgc2xhdmUgdG8gd29ya2VyIGluIHdlYmtpdHB5CkluZGV4OiBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9zdGVwc191bml0dGVzdC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9zdGVwc191bml0dGVzdC5weQkocmV2aXNpb24gMjY4OTI1KQorKysgVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvc3RlcHNfdW5pdHRlc3QucHkJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgQnVpbGRCb3RDb25maWdMb2FkZXIob2Jq
ZWN0KToKIAogICAgIGRlZiBfYWRkX2RlcGVuZGVudF9tb2R1bGVzX3RvX3N5c19tb2R1bGVzKHNl
bGYpOgogICAgICAgICBzZWxmLl9hZGRfd2Via2l0cHlfdG9fc3lzX3BhdGgoKQotICAgICAgICBm
cm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZCBpbXBvcnQgYnVpbGRib3QKKyAg
ICAgICAgZnJvbSB3ZWJraXRweS5hdXRvaW5zdGFsbGVkIGltcG9ydCBidWlsZGJvdAogICAgICAg
ICBzeXMubW9kdWxlc1snYnVpbGRib3QnXSA9IGJ1aWxkYm90CiAKIApJbmRleDogVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29y
ZXB5L19faW5pdF9fLnB5CShyZXZpc2lvbiAyNjg5MjUpCisrKyBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw3IEBAIGZyb20gd2Via2l0Y29yZXB5LnRpbWVvdXQgaW1wb3J0IFRpbWVv
dXQKIGZyb20gd2Via2l0Y29yZXB5LnN1YnByb2Nlc3NfdXRpbHMgaW1wb3J0IFRpbWVvdXRFeHBp
cmVkLCBDb21wbGV0ZWRQcm9jZXNzLCBydW4KIGZyb20gd2Via2l0Y29yZXB5Lm91dHB1dF9jYXB0
dXJlIGltcG9ydCBMb2dnZXJDYXB0dXJlLCBPdXRwdXRDYXB0dXJlLCBPdXRwdXREdXBsaWNhdGUK
IAotdmVyc2lvbiA9IFZlcnNpb24oMCwgNCwgMTkpCit2ZXJzaW9uID0gVmVyc2lvbigwLCA0LCAy
MCkKIAogZnJvbSB3ZWJraXRjb3JlcHkuYXV0b2luc3RhbGwgaW1wb3J0IFBhY2thZ2UsIEF1dG9J
bnN0YWxsCiBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgpJbmRleDogVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9hdXRvaW5zdGFsbC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29y
ZXB5L2F1dG9pbnN0YWxsLnB5CShyZXZpc2lvbiAyNjg5MjUpCisrKyBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2F1dG9pbnN0YWxsLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgY2xhc3MgUGFja2FnZShvYmplY3QpOgogICAgIGRl
ZiBsb2NhdGlvbihzZWxmKToKICAgICAgICAgaWYgbm90IEF1dG9JbnN0YWxsLmRpcmVjdG9yeToK
ICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ05vIEF1dG9JbnN0YWxsIGRpcmVjdG9yeSwg
UGFja2FnZSBjYW5ub3QgcmVzb2x2ZSBsb2NhdGlvbicpCi0gICAgICAgIHJldHVybiBvcy5wYXRo
LmpvaW4oQXV0b0luc3RhbGwuZGlyZWN0b3J5LCBzZWxmLm5hbWUpCisgICAgICAgIHJldHVybiBv
cy5wYXRoLmpvaW4oQXV0b0luc3RhbGwuZGlyZWN0b3J5LCAqc2VsZi5uYW1lLnNwbGl0KCcuJykp
CiAKICAgICBkZWYgZG9fcG9zdF9pbnN0YWxsKHNlbGYsIGFyY2hpdmVfcGF0aCk6CiAgICAgICAg
IHBhc3MKQEAgLTE1NCw3ICsxNTQsNyBAQCBjbGFzcyBQYWNrYWdlKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgICAgIGV4dGVuc2lvbiA9ICd3aGwnCiAKICAgICAgICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgICAgICBpZiBlbGVtZW50LmNoaWxkTm9kZXNbMF0uZGF0YS5lbmRzd2l0
aCgnLnRhci5neicpOgorICAgICAgICAgICAgICAgICAgICBpZiBlbGVtZW50LmNoaWxkTm9kZXNb
MF0uZGF0YS5lbmRzd2l0aCgnLnRhci5neicpIG9yIGVsZW1lbnQuY2hpbGROb2Rlc1swXS5kYXRh
LmVuZHN3aXRoKCcudGFyLmJ6MicpOgogICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9u
ID0gJ3Rhci5neicKICAgICAgICAgICAgICAgICAgICAgZWxpZiBlbGVtZW50LmNoaWxkTm9kZXNb
MF0uZGF0YS5lbmRzd2l0aCgnLnppcCcpOgogICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5z
aW9uID0gJ3ppcCcKQEAgLTIyNCw3ICsyMjQsNyBAQCBjbGFzcyBQYWNrYWdlKG9iamVjdCk6CiAg
ICAgICAgIGFyY2hpdmUgPSBzZWxmLmFyY2hpdmVzKClbLTFdCiAKICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgaW5zdGFsbF9sb2NhdGlvbiA9IG9zLnBhdGguZGlybmFtZShzZWxmLmxvY2F0aW9u
KQorICAgICAgICAgICAgaW5zdGFsbF9sb2NhdGlvbiA9IEF1dG9JbnN0YWxsLmRpcmVjdG9yeQog
ICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmxvY2F0aW9uLCBpZ25vcmVfZXJyb3JzPVRy
dWUpCiAKICAgICAgICAgICAgIEF1dG9JbnN0YWxsLmxvZygnRG93bmxvYWRpbmcge30uLi4nLmZv
cm1hdChhcmNoaXZlKSkKQEAgLTIzMywxMiArMjMzLDggQEAgY2xhc3MgUGFja2FnZShvYmplY3Qp
OgogICAgICAgICAgICAgdGVtcF9sb2NhdGlvbiA9IG9zLnBhdGguam9pbih0ZW1wZmlsZS5nZXR0
ZW1wZGlyKCksIHNlbGYubmFtZSkKICAgICAgICAgICAgIGFyY2hpdmUudW5wYWNrKHRlbXBfbG9j
YXRpb24pCiAKLSAgICAgICAgICAgIGZvciBjYW5kaWRhdGUgaW4gWwotICAgICAgICAgICAgICAg
IG9zLnBhdGguam9pbih0ZW1wX2xvY2F0aW9uLCBzdHIoYXJjaGl2ZSkpLAotICAgICAgICAgICAg
ICAgIG9zLnBhdGguam9pbih0ZW1wX2xvY2F0aW9uLCAne30te30ue30nLmZvcm1hdChhcmNoaXZl
Lm5hbWUsIGFyY2hpdmUudmVyc2lvbi5tYWpvciwgYXJjaGl2ZS52ZXJzaW9uLm1pbm9yKSksCi0g
ICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHRlbXBfbG9jYXRpb24sICd7fS17fS57fS57fScu
Zm9ybWF0KGFyY2hpdmUubmFtZS5yZXBsYWNlKCctJywgJ18nKSwgYXJjaGl2ZS52ZXJzaW9uLm1h
am9yLCBhcmNoaXZlLnZlcnNpb24ubWlub3IsIGFyY2hpdmUudmVyc2lvbi50aW55KSksCi0gICAg
ICAgICAgICAgICAgb3MucGF0aC5qb2luKHRlbXBfbG9jYXRpb24sICd7fS17fScuZm9ybWF0KGFy
Y2hpdmUubmFtZS5jYXBpdGFsaXplKCksIGFyY2hpdmUudmVyc2lvbikpLAotICAgICAgICAgICAg
XToKKyAgICAgICAgICAgIGZvciBjYW5kaWRhdGUgaW4gb3MubGlzdGRpcih0ZW1wX2xvY2F0aW9u
KToKKyAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBvcy5wYXRoLmpvaW4odGVtcF9sb2NhdGlv
biwgY2FuZGlkYXRlKQogICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5w
YXRoLmpvaW4oY2FuZGlkYXRlLCAnc2V0dXAucHknKSk6CiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlCiAKQEAgLTI1NiwxNCArMjUyLDEwIEBAIGNsYXNzIFBhY2thZ2Uob2JqZWN0KToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ob21lPXt9Jy5mb3JtYXQoaW5zdGFsbF9sb2Nh
dGlvbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tcm9vdD0vJywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnLS1wcmVmaXg9JywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnLS1zaW5nbGUtdmVyc2lvbi1leHRlcm5hbGx5LW1hbmFnZWQnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICctLWluc3RhbGwtbGliPXt9Jy5mb3JtYXQoaW5zdGFsbF9sb2NhdGlv
biksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0taW5zdGFsbC1zY3JpcHRzPXt9Jy5m
b3JtYXQob3MucGF0aC5qb2luKGluc3RhbGxfbG9jYXRpb24sICdiaW4nKSksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJy0taW5zdGFsbC1kYXRhPXt9Jy5mb3JtYXQob3MucGF0aC5qb2lu
KGluc3RhbGxfbG9jYXRpb24sICdkYXRhJykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICctLWluc3RhbGwtaGVhZGVycz17fScuZm9ybWF0KG9zLnBhdGguam9pbihpbnN0YWxsX2xvY2F0
aW9uLCAnaGVhZGVycycpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERvIG5vdCBh
dXRvbWF0aWNhbGx5IGluc3RhbGwgcGFja2FnZSBkZXBlbmRlbmNpZXMsIGZvcmNlIHNjcmlwdHMg
dG8gYmUgZXhwbGljaXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEV2ZW4gd2l0aG91
dCB0aGlzIGZsYWcsIHNldHVwLnB5IGlzIG5vdCBjb25zaXN0ZW50IGFib3V0IGluc3RhbGxpbmcg
ZGVwZW5kZW5jaWVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW9sZC1hbmQtdW5t
YW5hZ2VhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICBjd2Q9Y2FuZGlkYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgZW52PWRpY3Qo
CkBAIC0yNzgsNiArMjcwLDExIEBAIGNsYXNzIFBhY2thZ2Uob2JqZWN0KToKICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZGVycj1kZXZudWxsLAogICAgICAgICAgICAgICAgICAgICApCiAKKyAg
ICAgICAgICAgICAgICBsb2NhdGlvbiA9IG9zLnBhdGguam9pbihBdXRvSW5zdGFsbC5kaXJlY3Rv
cnksIHNlbGYubmFtZS5zcGxpdCgnLicpWzBdKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGgu
aXNkaXIobG9jYXRpb24pIGFuZCAnX19pbml0X18ucHknIG5vdCBpbiBvcy5saXN0ZGlyKGxvY2F0
aW9uKToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihsb2NhdGlv
biwgJ19faW5pdF9fLnB5JyksICd3JykgYXMgaW5pdDoKKyAgICAgICAgICAgICAgICAgICAgICAg
IGluaXQud3JpdGUoJ1xuJykKKwogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBl
bHNlOgogICAgICAgICAgICAgICAgICMgV2UgbWlnaHQgbm90IG5lZWQgc2V0dXAucHkgYXQgYWxs
LCBjaGVjayBpZiB3ZSBoYXZlIGRpc3QtaW5mbyBhbmQgdGhlIGxpYnJhcnkgaW4gdGhlIHRlbXBv
cmFyeSBsb2NhdGlvbgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9hdXRvaW5zdGFsbGVk
L2J1aWxkYm90LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYXV0b2lu
c3RhbGxlZC9idWlsZGJvdC5weQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2F1dG9pbnN0YWxsZWQvYnVpbGRib3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
NyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgc3lzCisK
K2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IEF1dG9JbnN0YWxsLCBQYWNrYWdlLCBWZXJzaW9uCisK
K2lmIHN5cy52ZXJzaW9uX2luZm9bMF0gPiAyOgorICAgIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBh
Y2thZ2UoJ2F1dG9iYWhuJywgVmVyc2lvbigyMCwgNywgMSkpKQorICAgIEF1dG9JbnN0YWxsLnJl
Z2lzdGVyKFBhY2thZ2UoJ2J1aWxkYm90JywgVmVyc2lvbigyLCA4LCA0KSkpCisgICAgQXV0b0lu
c3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnZGF0ZXV0aWwnLCBWZXJzaW9uKDIsIDgsIDEpLCBweXBp
X25hbWU9J3B5dGhvbi1kYXRldXRpbCcpKQorICAgIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2th
Z2UoJ2ppbmphMicsIFZlcnNpb24oMiwgMTEsIDIpLCBweXBpX25hbWU9J0ppbmphMicpKQorICAg
IEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2p3dCcsIFZlcnNpb24oMSwgNywgMSksIHB5
cGlfbmFtZT0nUHlKV1QnKSkKKyAgICBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdweXlh
bWwnLCBWZXJzaW9uKDUsIDMsIDEpLCBweXBpX25hbWU9J1B5WUFNTCcpKQorICAgIEF1dG9JbnN0
YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ3NxbGFsY2hlbXknLCBWZXJzaW9uKDEsIDMsIDIwKSwgcHlw
aV9uYW1lPSdTUUxBbGNoZW15JykpCisgICAgQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgn
c3FsYWxjaGVteS1taWdyYXRlJywgVmVyc2lvbigwLCAxMywgMCkpKQorICAgIEF1dG9JbnN0YWxs
LnJlZ2lzdGVyKFBhY2thZ2UoJ3R3aXN0ZWQnLCBWZXJzaW9uKDIwLCAzLCAwKSwgcHlwaV9uYW1l
PSdUd2lzdGVkJykpCisgICAgQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgndHhhaW8nLCBW
ZXJzaW9uKDIwLCA0LCAxKSkpCisKK2Vsc2U6CisgICAgQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFj
a2FnZSgnYnVpbGRib3QnLCBWZXJzaW9uKDAsIDgsIDYpKSkKKyAgICBBdXRvSW5zdGFsbC5yZWdp
c3RlcihQYWNrYWdlKCdkYXRldXRpbCcsIFZlcnNpb24oMiwgOCwgMSksIHB5cGlfbmFtZT0ncHl0
aG9uLWRhdGV1dGlsJykpCisgICAgQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnamluamEy
JywgVmVyc2lvbigyLCA2KSwgcHlwaV9uYW1lPSdKaW5qYTInKSkKKyAgICBBdXRvSW5zdGFsbC5y
ZWdpc3RlcihQYWNrYWdlKCdzcWxhbGNoZW15JywgVmVyc2lvbigwLCA3LCA3KSwgcHlwaV9uYW1l
PSdTUUxBbGNoZW15JykpCisgICAgQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnc3FsYWxj
aGVteS1taWdyYXRlJywgVmVyc2lvbigwLCA3LCAyKSkpCisgICAgQXV0b0luc3RhbGwucmVnaXN0
ZXIoUGFja2FnZSgndHdpc3RlZCcsIFZlcnNpb24oMTIsIDEsIDApLCBweXBpX25hbWU9J1R3aXN0
ZWQnKSkKKworc3lzLm1vZHVsZXNbX19uYW1lX19dID0gX19pbXBvcnRfXygnYnVpbGRib3QnKQpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9hdXRvaW5zdGFsbGVkL3R3aXN0ZWQucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9hdXRvaW5zdGFsbGVkL3R3aXN0ZWQu
cHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9hdXRvaW5zdGFsbGVk
L3R3aXN0ZWQucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgc3lzCisKK2Zyb20gd2Via2l0c2NtcHkg
aW1wb3J0IEF1dG9JbnN0YWxsLCBQYWNrYWdlLCBWZXJzaW9uCisKK0F1dG9JbnN0YWxsLnJlZ2lz
dGVyKFBhY2thZ2UoJ3R3aXN0ZWQnLCBWZXJzaW9uKDE1LCA1LCAwKSwgcHlwaV9uYW1lPSdUd2lz
dGVkJykpCitzeXMubW9kdWxlc1tfX25hbWVfX10gPSBfX2ltcG9ydF9fKCd0d2lzdGVkJykKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9odHRwX3NlcnZlcl9k
cml2ZXIvc2ltcGxlX2h0dHBfc2VydmVyX2RyaXZlci5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvaHR0cF9zZXJ2ZXJfZHJpdmVyL3NpbXBs
ZV9odHRwX3NlcnZlcl9kcml2ZXIucHkJKHJldmlzaW9uIDI2ODkyNSkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9odHRwX3NlcnZlcl9kcml2ZXIvc2ltcGxlX2h0
dHBfc2VydmVyX2RyaXZlci5weQkod29ya2luZyBjb3B5KQpAQCAtMTA1LDEwICsxMDUsNCBAQCBj
bGFzcyBTaW1wbGVIVFRQU2VydmVyRHJpdmVyKEhUVFBTZXJ2ZXJECiAgICAgZGVmIF9lbnN1cmVf
aHR0cF9zZXJ2ZXJfZGVwZW5kZW5jaWVzKHNlbGYpOgogICAgICAgICBfbG9nLmluZm8oJ0Vuc3Vy
ZSBkZXBlbmRlbmNpZXMgb2YgaHR0cCBzZXJ2ZXIgaXMgc2F0aXNmaWVkJykKICAgICAgICAgZnJv
bSBwa2dfcmVzb3VyY2VzIGltcG9ydCByZXF1aXJlLCBWZXJzaW9uQ29uZmxpY3QsIERpc3RyaWJ1
dGlvbk5vdEZvdW5kCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlcXVpcmUoIlR3aXN0ZWQ+
PTE1LjUuMCIpCi0gICAgICAgICAgICBpbXBvcnQgdHdpc3RlZAotICAgICAgICBleGNlcHQgKElt
cG9ydEVycm9yLCBWZXJzaW9uQ29uZmxpY3QsIERpc3RyaWJ1dGlvbk5vdEZvdW5kKToKLSAgICAg
ICAgICAgIF9sb2cuaW5mbygiV2lsbCBpbnN0YWxsIHR3aXN0ZWQgaW4gd2Via2l0cHksIGFuZCB0
d2lzdGVkIHdpbGwgYmUgdXNlZCBieSB3ZWJraXRweSBvbmx5IikKLSAgICAgICAgICAgIHN5cy5w
YXRoLmFwcGVuZChvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShv
cy5wYXRoLmFic3BhdGgoX19maWxlX18pKSwgJy4uLy4uLy4uLy4uJykpKQotICAgICAgICAgICAg
ZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQudHdpc3RlZF8xNV81XzAgaW1w
b3J0IHR3aXN0ZWQKKyAgICAgICAgZnJvbSB3ZWJraXRweS5hdXRvaW5zdGFsbGVkIGltcG9ydCB0
d2lzdGVkCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvaHR0
cF9zZXJ2ZXJfZHJpdmVyL2h0dHBfc2VydmVyL3R3aXN0ZWRfaHR0cF9zZXJ2ZXIucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2h0dHBfc2Vy
dmVyX2RyaXZlci9odHRwX3NlcnZlci90d2lzdGVkX2h0dHBfc2VydmVyLnB5CShyZXZpc2lvbiAy
Njg5MjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvaHR0cF9z
ZXJ2ZXJfZHJpdmVyL2h0dHBfc2VydmVyL3R3aXN0ZWRfaHR0cF9zZXJ2ZXIucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTQsMTQgKzQsOSBAQCBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBsb2dnaW5nCiBp
bXBvcnQgb3MKIGltcG9ydCBzeXMKLWZyb20gcGtnX3Jlc291cmNlcyBpbXBvcnQgcmVxdWlyZSwg
VmVyc2lvbkNvbmZsaWN0LCBEaXN0cmlidXRpb25Ob3RGb3VuZAogCi10cnk6Ci0gICAgcmVxdWly
ZSgiVHdpc3RlZD49MTUuNS4wIikKLSAgICBpbXBvcnQgdHdpc3RlZAotZXhjZXB0IChJbXBvcnRF
cnJvciwgVmVyc2lvbkNvbmZsaWN0LCBEaXN0cmlidXRpb25Ob3RGb3VuZCk6Ci0gICAgc3lzLnBh
dGguYXBwZW5kKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKG9z
LnBhdGguYWJzcGF0aChfX2ZpbGVfXykpLCAnLi4vLi4vLi4vLi4nKSkpCi0gICAgZnJvbSB3ZWJr
aXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQudHdpc3RlZF8xNV81XzAgaW1wb3J0IHR3aXN0
ZWQKK2Zyb20gcGtnX3Jlc291cmNlcyBpbXBvcnQgcmVxdWlyZSwgVmVyc2lvbkNvbmZsaWN0LCBE
aXN0cmlidXRpb25Ob3RGb3VuZAorZnJvbSB3ZWJraXRweS5hdXRvaW5zdGFsbGVkIGltcG9ydCB0
d2lzdGVkCiAKIGZyb20gdHdpc3RlZC53ZWIgaW1wb3J0IHN0YXRpYywgc2VydmVyCiBmcm9tIHR3
aXN0ZWQud2ViLnJlc291cmNlIGltcG9ydCBSZXNvdXJjZQpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weQkocmV2aXNpb24gMjY4OTI1KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0yNiwxMCArMjYsOCBAQAogIiIiQXV0b2luc3RhbGxzIHRoaXJkLXBhcnR5IGNvZGUg
cmVxdWlyZWQgYnkgV2ViS2l0LiIiIgogCiAKLWltcG9ydCBjb2RlY3MKIGltcG9ydCBqc29uCiBp
bXBvcnQgb3MKLWltcG9ydCByZQogaW1wb3J0IHN5cwogCiBpZiBzeXMudmVyc2lvbl9pbmZvID4g
KDMsIDApOgpAQCAtODEsNDYgKzc5LDcgQEAgY2xhc3MgQXV0b2luc3RhbGxJbXBvcnRIb29rKG9i
amVjdCk6CiAgICAgICAgICAgICBzeXMucGF0aC5pbnNlcnQoc3lzLnBhdGguaW5kZXgoQXV0b0lu
c3RhbGwuZGlyZWN0b3J5KSArIDEgaWYgQXV0b0luc3RhbGwuZGlyZWN0b3J5IGluIHN5cy5wYXRo
IGVsc2UgMCwgX0FVVE9JTlNUQUxMRURfRElSKQogCiAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYs
IGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgotICAgICAgICAjIFRoaXMgbWV0aG9kIHdpbGwgcnVuIGJl
Zm9yZSBlYWNoIGltcG9ydC4gU2VlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAt
MDMwMi8KLSAgICAgICAgaWYgJy5hdXRvaW5zdGFsbGVkJyBub3QgaW4gZnVsbG5hbWU6Ci0gICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICAjIE5vdGU6IGFsbCBvZiB0aGUgbWV0aG9kcyBtdXN0
IGZvbGxvdyB0aGUgIl9pbnN0YWxsX1hYWCIgY29udmVudGlvbiBpbgotICAgICAgICAjIG9yZGVy
IGZvciBhdXRvaW5zdGFsbF9ldmVyeXRoaW5nKCksIGJlbG93LCB0byB3b3JrIHByb3Blcmx5Lgot
ICAgICAgICBpZiAnLmJ1aWxkYm90JyBpbiBmdWxsbmFtZToKLSAgICAgICAgICAgIHNlbGYuX2lu
c3RhbGxfYnVpbGRib3QoKQotICAgICAgICBlbGlmICcudHdpc3RlZF8xNV81XzAnIGluIGZ1bGxu
YW1lOgotICAgICAgICAgICAgc2VsZi5faW5zdGFsbF90d2lzdGVkXzE1XzVfMCgpCi0KLSAgICAj
IGF1dG9pbnN0YWxsZWQuYnVpbGRib3QgaXMgdXNlZCBieSBCdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXJjZmdfdW5pdHRlc3QucHkKLSAgICAjIGFuZCBzaG91
bGQgaWRlYWxseSBtYXRjaCB0aGUgdmVyc2lvbiBvZiBCdWlsZEJvdCB1c2VkIGF0IGJ1aWxkLndl
YmtpdC5vcmcuCi0gICAgZGVmIF9pbnN0YWxsX2J1aWxkYm90KHNlbGYpOgotICAgICAgICAjIFRo
ZSBidWlsZGJvdCBwYWNrYWdlIHVzZXMgamluamEyLCBmb3IgZXhhbXBsZSwgaW4gYnVpbGRib3Qv
c3RhdHVzL3dlYi9iYXNlLnB5LgotICAgICAgICAjIGJ1aWxkYm90IGltcG9ydHMgamluamEyIGRp
cmVjdGx5IChhcyB0aG91Z2ggaXQgd2VyZSBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbSksCi0gICAg
ICAgICMgc28gdGhlIHNlYXJjaCBwYXRoIG5lZWRzIHRvIGluY2x1ZGUgamluamEyLiAgV2UgcHV0
IGppbmphMiBpbgotICAgICAgICAjIGl0cyBvd24gZGlyZWN0b3J5IHNvIHRoYXQgd2UgY2FuIGlu
Y2x1ZGUgaXQgaW4gdGhlIHNlYXJjaCBwYXRoCi0gICAgICAgICMgd2l0aG91dCBpbmNsdWRpbmcg
b3RoZXIgbW9kdWxlcyBhcyBhIHNpZGUgZWZmZWN0LgotICAgICAgICBqaW5qYV9kaXIgPSBzZWxm
Ll9mcy5qb2luKF9BVVRPSU5TVEFMTEVEX0RJUiwgImppbmphMiIpCi0gICAgICAgIGluc3RhbGxl
ciA9IEF1dG9JbnN0YWxsZXIoYXBwZW5kX3RvX3NlYXJjaF9wYXRoPVRydWUsIHRhcmdldF9kaXI9
amluamFfZGlyKQotICAgICAgICBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHBzOi8vZmlsZXMu
cHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvSi9KaW5qYTIvSmluamEyLTIuNi50YXIu
Z3oiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJs
X3N1YnBhdGg9IkppbmphMi0yLjYvamluamEyIikKLQotICAgICAgICBTUUxBbGNoZW15X2RpciA9
IHNlbGYuX2ZzLmpvaW4oX0FVVE9JTlNUQUxMRURfRElSLCAic3FsYWxjaGVteSIpCi0gICAgICAg
IGluc3RhbGxlciA9IEF1dG9JbnN0YWxsZXIoYXBwZW5kX3RvX3NlYXJjaF9wYXRoPVRydWUsIHRh
cmdldF9kaXI9U1FMQWxjaGVteV9kaXIpCi0gICAgICAgIGluc3RhbGxlci5pbnN0YWxsKHVybD0i
aHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9TL1NRTEFsY2hl
bXkvU1FMQWxjaGVteS0wLjcuNy50YXIuZ3oiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVybF9zdWJwYXRoPSJTUUxBbGNoZW15LTAuNy43L2xpYi9z
cWxhbGNoZW15IikKLQotICAgICAgICB0d2lzdGVkX2RpciA9IHNlbGYuX2ZzLmpvaW4oX0FVVE9J
TlNUQUxMRURfRElSLCAidHdpc3RlZCIpCi0gICAgICAgIGluc3RhbGxlciA9IEF1dG9JbnN0YWxs
ZXIocHJlcGVuZF90b19zZWFyY2hfcGF0aD1UcnVlLCB0YXJnZXRfZGlyPXR3aXN0ZWRfZGlyKQot
ICAgICAgICBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVk
Lm9yZy9wYWNrYWdlcy9zb3VyY2UvVC9Ud2lzdGVkL1R3aXN0ZWQtMTIuMS4wLnRhci5iejIiLCB1
cmxfc3VicGF0aD0iVHdpc3RlZC0xMi4xLjAvdHdpc3RlZCIpCi0KLSAgICAgICAgc2VsZi5faW5z
dGFsbCgiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9iL2J1
aWxkYm90L2J1aWxkYm90LTAuOC42cDEudGFyLmd6IiwgImJ1aWxkYm90LTAuOC42cDEvYnVpbGRi
b3QiKQotCi0gICAgZGVmIF9pbnN0YWxsX3R3aXN0ZWRfMTVfNV8wKHNlbGYpOgotICAgICAgICB0
d2lzdGVkX2RpciA9IHNlbGYuX2ZzLmpvaW4oX0FVVE9JTlNUQUxMRURfRElSLCAidHdpc3RlZF8x
NV81XzAiKQotICAgICAgICBpbnN0YWxsZXIgPSBBdXRvSW5zdGFsbGVyKHByZXBlbmRfdG9fc2Vh
cmNoX3BhdGg9VHJ1ZSwgdGFyZ2V0X2Rpcj10d2lzdGVkX2RpcikKLSAgICAgICAgaW5zdGFsbGVy
Lmluc3RhbGwodXJsPSJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291
cmNlL1QvVHdpc3RlZC9Ud2lzdGVkLTE1LjUuMC50YXIuYnoyIiwgdXJsX3N1YnBhdGg9IlR3aXN0
ZWQtMTUuNS4wL3R3aXN0ZWQiKQotICAgICAgICBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHBz
Oi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2Uvei96b3BlLmludGVyZmFj
ZS96b3BlLmludGVyZmFjZS00LjEuMy50YXIuZ3oiLCB1cmxfc3VicGF0aD0iem9wZS5pbnRlcmZh
Y2UtNC4xLjMvc3JjL3pvcGUiKQorICAgICAgICBwYXNzCiAKICAgICBAc3RhdGljbWV0aG9kCiAg
ICAgZGVmIGdyZWF0ZXJfdGhhbl9lcXVhbF90b192ZXJzaW9uKG1pbmltdW0sIHZlcnNpb24pOgpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fX3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2lu
aXRfX191bml0dGVzdC5weQkocmV2aXNpb24gMjY4OTI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90aGlyZHBhcnR5L19faW5pdF9fX3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEs
MzkgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRp
c3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVz
dAotCi1mcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkgaW1wb3J0IEF1dG9pbnN0YWxsSW1wb3J0SG9v
awotCi0KLWNsYXNzIFRoaXJkcGFydHlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYg
dGVzdF9pbXBvcnRzKHNlbGYpOgotICAgICAgICAjIFRoaXMgbWV0aG9kIHRlc3RzIHRoYXQgd2Ug
Y2FuIGFjdHVhbGx5IGltcG9ydCBldmVyeXRoaW5nLgotICAgICAgICAjIHVudXNlZC12YXJpYWJs
ZSwgaW1wb3J0IGZhaWx1cmVzIC0gcHlsaW50OiBkaXNhYmxlLW1zZz1XMDYxMixFMDYxMSxGMDQw
MQotICAgICAgICBpbXBvcnQgd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLmJ1aWxk
Ym90CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvX19pbml0X19fdW5pdHRlc3QucHkKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxl
CiMjIC0xICswLDAgIyMKLUxGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412196</attachid>
            <date>2020-10-23 10:43:46 -0700</date>
            <delta_ts>2020-10-23 11:15:51 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-218105-20201023104345.patch</filename>
            <type>text/plain</type>
            <size>20382</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2ODkyNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMwIEBACisyMDIwLTEwLTIzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0cHldIFVzZSB3ZWJraXRjb3JlcHkncyBhdXRvaW5zdGFsbGVy
IGZvciBidWlsZGJvdCBhbmQgdHdpc3RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTA1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDU5MzU3
Nj4KKworICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBBYWthc2ggSmFpbi4KKworICAgICAgICAq
IEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzX3VuaXR0ZXN0
LnB5OgorICAgICAgICAoQnVpbGRCb3RDb25maWdMb2FkZXIuX2FkZF9kZXBlbmRlbnRfbW9kdWxl
c190b19zeXNfbW9kdWxlcyk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29y
ZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weTogQnVtcCB2ZXJzaW9uLgorICAgICAgICAqIFNj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvYXV0b2luc3RhbGwucHk6
CisgICAgICAgIChQYWNrYWdlLmFyY2hpdmVzKTogdGFyLmJ6MiBhcmNoaXZlcyBhcmUgdGFyLmd6
IGFyY2hpdmVzLgorICAgICAgICAoUGFja2FnZS5pbnN0YWxsKTogQWZ0ZXIgcjI2NzA1Niwgd2Ug
ZG9uJ3QgbmVlZCAib2xkLWFuZC11bm1hbmFnZWFibGUiIGFuZAorICAgICAgICAic2luZ2xlLXZl
cnNpb24tZXh0ZXJuYWxseS1tYW5hZ2VkIiwgaGFuZGxlIGNhc2Ugb2YgbmVzdGVkIG1vZHVsZXMg
bW9yZSBjb21wbGV0ZWx5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYXV0b2luc3RhbGxl
ZC9idWlsZGJvdC5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9hdXRvaW5z
dGFsbGVkL3R3aXN0ZWQucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYmVu
Y2htYXJrX3J1bm5lci9odHRwX3NlcnZlcl9kcml2ZXIvaHR0cF9zZXJ2ZXIvdHdpc3RlZF9odHRw
X3NlcnZlci5weToKKyAgICAgICAgSW1wb3J0IG5ldyBhdXRvIGluc3RhbGxlZCB0d2lzdGVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9odHRwX3NlcnZlcl9k
cml2ZXIvc2ltcGxlX2h0dHBfc2VydmVyX2RyaXZlci5weToKKyAgICAgICAgKFNpbXBsZUhUVFBT
ZXJ2ZXJEcml2ZXIuX2Vuc3VyZV9odHRwX3NlcnZlcl9kZXBlbmRlbmNpZXMpOiBJbXBvcnQgbmV3
IGF1dG8gaW5zdGFsbGVkIHR3aXN0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGly
ZHBhcnR5L19faW5pdF9fLnB5OgorICAgICAgICAoQXV0b2luc3RhbGxJbXBvcnRIb29rLmZpbmRf
bW9kdWxlKTogUmVtb3ZlIGFsbCBtb2R1bGVzLgorICAgICAgICAoQXV0b2luc3RhbGxJbXBvcnRI
b29rLl9pbnN0YWxsX2J1aWxkYm90KTogRGVsZXRlZC4KKyAgICAgICAgKEF1dG9pbnN0YWxsSW1w
b3J0SG9vay5faW5zdGFsbF90d2lzdGVkXzE1XzVfMCk6IERlbGV0ZWQuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fX3VuaXR0ZXN0LnB5OiBSZW1vdmVkLgor
CiAyMDIwLTEwLTIzICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW5hbWUgc2xhdmUgdG8gd29ya2VyIGluIHdlYmtpdHB5CkluZGV4OiBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9zdGVwc191bml0dGVzdC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9zdGVwc191bml0dGVzdC5weQkocmV2aXNpb24gMjY4OTI3KQorKysgVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvc3RlcHNfdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgQnVpbGRCb3RDb25maWdMb2FkZXIo
b2JqZWN0KToKIAogICAgIGRlZiBfYWRkX2RlcGVuZGVudF9tb2R1bGVzX3RvX3N5c19tb2R1bGVz
KHNlbGYpOgogICAgICAgICBzZWxmLl9hZGRfd2Via2l0cHlfdG9fc3lzX3BhdGgoKQotICAgICAg
ICBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZCBpbXBvcnQgYnVpbGRib3QK
KyAgICAgICAgZnJvbSB3ZWJraXRweS5hdXRvaW5zdGFsbGVkIGltcG9ydCBidWlsZGJvdAogICAg
ICAgICBzeXMubW9kdWxlc1snYnVpbGRib3QnXSA9IGJ1aWxkYm90CiAKIApJbmRleDogVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0
Y29yZXB5L19faW5pdF9fLnB5CShyZXZpc2lvbiAyNjg5MjcpCisrKyBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0zNSw3ICszNSw3IEBAIGZyb20gd2Via2l0Y29yZXB5LnRpbWVvdXQgaW1wb3J0IFRp
bWVvdXQKIGZyb20gd2Via2l0Y29yZXB5LnN1YnByb2Nlc3NfdXRpbHMgaW1wb3J0IFRpbWVvdXRF
eHBpcmVkLCBDb21wbGV0ZWRQcm9jZXNzLCBydW4KIGZyb20gd2Via2l0Y29yZXB5Lm91dHB1dF9j
YXB0dXJlIGltcG9ydCBMb2dnZXJDYXB0dXJlLCBPdXRwdXRDYXB0dXJlLCBPdXRwdXREdXBsaWNh
dGUKIAotdmVyc2lvbiA9IFZlcnNpb24oMCwgNCwgMTkpCit2ZXJzaW9uID0gVmVyc2lvbigwLCA0
LCAyMCkKIAogZnJvbSB3ZWJraXRjb3JlcHkuYXV0b2luc3RhbGwgaW1wb3J0IFBhY2thZ2UsIEF1
dG9JbnN0YWxsCiBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgpJbmRleDogVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9hdXRvaW5zdGFsbC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0
Y29yZXB5L2F1dG9pbnN0YWxsLnB5CShyZXZpc2lvbiAyNjg5MjcpCisrKyBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2F1dG9pbnN0YWxsLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgY2xhc3MgUGFja2FnZShvYmplY3QpOgogICAg
IGRlZiBsb2NhdGlvbihzZWxmKToKICAgICAgICAgaWYgbm90IEF1dG9JbnN0YWxsLmRpcmVjdG9y
eToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ05vIEF1dG9JbnN0YWxsIGRpcmVjdG9y
eSwgUGFja2FnZSBjYW5ub3QgcmVzb2x2ZSBsb2NhdGlvbicpCi0gICAgICAgIHJldHVybiBvcy5w
YXRoLmpvaW4oQXV0b0luc3RhbGwuZGlyZWN0b3J5LCBzZWxmLm5hbWUpCisgICAgICAgIHJldHVy
biBvcy5wYXRoLmpvaW4oQXV0b0luc3RhbGwuZGlyZWN0b3J5LCAqc2VsZi5uYW1lLnNwbGl0KCcu
JykpCiAKICAgICBkZWYgZG9fcG9zdF9pbnN0YWxsKHNlbGYsIGFyY2hpdmVfcGF0aCk6CiAgICAg
ICAgIHBhc3MKQEAgLTE1NCw3ICsxNTQsNyBAQCBjbGFzcyBQYWNrYWdlKG9iamVjdCk6CiAgICAg
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9ICd3aGwnCiAKICAgICAgICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgICAgICBpZiBlbGVtZW50LmNoaWxkTm9kZXNbMF0uZGF0YS5lbmRz
d2l0aCgnLnRhci5neicpOgorICAgICAgICAgICAgICAgICAgICBpZiBlbGVtZW50LmNoaWxkTm9k
ZXNbMF0uZGF0YS5lbmRzd2l0aCgoJy50YXIuZ3onLCAnLnRhci5iejInKSk6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBleHRlbnNpb24gPSAndGFyLmd6JwogICAgICAgICAgICAgICAgICAgICBl
bGlmIGVsZW1lbnQuY2hpbGROb2Rlc1swXS5kYXRhLmVuZHN3aXRoKCcuemlwJyk6CiAgICAgICAg
ICAgICAgICAgICAgICAgICBleHRlbnNpb24gPSAnemlwJwpAQCAtMjI0LDcgKzIyNCw3IEBAIGNs
YXNzIFBhY2thZ2Uob2JqZWN0KToKICAgICAgICAgYXJjaGl2ZSA9IHNlbGYuYXJjaGl2ZXMoKVst
MV0KIAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbnN0YWxsX2xvY2F0aW9uID0gb3MucGF0
aC5kaXJuYW1lKHNlbGYubG9jYXRpb24pCisgICAgICAgICAgICBpbnN0YWxsX2xvY2F0aW9uID0g
QXV0b0luc3RhbGwuZGlyZWN0b3J5CiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYubG9j
YXRpb24sIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKIAogICAgICAgICAgICAgQXV0b0luc3RhbGwubG9n
KCdEb3dubG9hZGluZyB7fS4uLicuZm9ybWF0KGFyY2hpdmUpKQpAQCAtMjMzLDEyICsyMzMsOCBA
QCBjbGFzcyBQYWNrYWdlKG9iamVjdCk6CiAgICAgICAgICAgICB0ZW1wX2xvY2F0aW9uID0gb3Mu
cGF0aC5qb2luKHRlbXBmaWxlLmdldHRlbXBkaXIoKSwgc2VsZi5uYW1lKQogICAgICAgICAgICAg
YXJjaGl2ZS51bnBhY2sodGVtcF9sb2NhdGlvbikKIAotICAgICAgICAgICAgZm9yIGNhbmRpZGF0
ZSBpbiBbCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHRlbXBfbG9jYXRpb24sIHN0cihh
cmNoaXZlKSksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHRlbXBfbG9jYXRpb24sICd7
fS17fS57fScuZm9ybWF0KGFyY2hpdmUubmFtZSwgYXJjaGl2ZS52ZXJzaW9uLm1ham9yLCBhcmNo
aXZlLnZlcnNpb24ubWlub3IpKSwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4odGVtcF9s
b2NhdGlvbiwgJ3t9LXt9Lnt9Lnt9Jy5mb3JtYXQoYXJjaGl2ZS5uYW1lLnJlcGxhY2UoJy0nLCAn
XycpLCBhcmNoaXZlLnZlcnNpb24ubWFqb3IsIGFyY2hpdmUudmVyc2lvbi5taW5vciwgYXJjaGl2
ZS52ZXJzaW9uLnRpbnkpKSwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4odGVtcF9sb2Nh
dGlvbiwgJ3t9LXt9Jy5mb3JtYXQoYXJjaGl2ZS5uYW1lLmNhcGl0YWxpemUoKSwgYXJjaGl2ZS52
ZXJzaW9uKSksCi0gICAgICAgICAgICBdOgorICAgICAgICAgICAgZm9yIGNhbmRpZGF0ZSBpbiBv
cy5saXN0ZGlyKHRlbXBfbG9jYXRpb24pOgorICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IG9z
LnBhdGguam9pbih0ZW1wX2xvY2F0aW9uLCBjYW5kaWRhdGUpCiAgICAgICAgICAgICAgICAgaWYg
bm90IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihjYW5kaWRhdGUsICdzZXR1cC5weScpKToK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWUKIApAQCAtMjU2LDE0ICsyNTIsMTAgQEAgY2xh
c3MgUGFja2FnZShvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWhvbWU9
e30nLmZvcm1hdChpbnN0YWxsX2xvY2F0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnLS1yb290PS8nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXByZWZpeD0nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXNpbmdsZS12ZXJzaW9uLWV4dGVybmFsbHkt
bWFuYWdlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0taW5zdGFsbC1saWI9e30n
LmZvcm1hdChpbnN0YWxsX2xvY2F0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
LS1pbnN0YWxsLXNjcmlwdHM9e30nLmZvcm1hdChvcy5wYXRoLmpvaW4oaW5zdGFsbF9sb2NhdGlv
biwgJ2JpbicpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1pbnN0YWxsLWRhdGE9
e30nLmZvcm1hdChvcy5wYXRoLmpvaW4oaW5zdGFsbF9sb2NhdGlvbiwgJ2RhdGEnKSksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJy0taW5zdGFsbC1oZWFkZXJzPXt9Jy5mb3JtYXQob3Mu
cGF0aC5qb2luKGluc3RhbGxfbG9jYXRpb24sICdoZWFkZXJzJykpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMgRG8gbm90IGF1dG9tYXRpY2FsbHkgaW5zdGFsbCBwYWNrYWdlIGRlcGVu
ZGVuY2llcywgZm9yY2Ugc2NyaXB0cyB0byBiZSBleHBsaWNpdAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMgRXZlbiB3aXRob3V0IHRoaXMgZmxhZywgc2V0dXAucHkgaXMgbm90IGNvbnNp
c3RlbnQgYWJvdXQgaW5zdGFsbGluZyBkZXBlbmRlbmNpZXMuCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJy0tb2xkLWFuZC11bm1hbmFnZWFibGUnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1jYW5kaWRhdGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBlbnY9ZGljdCgKQEAgLTI3OCw2ICsyNzAsMTIgQEAgY2xhc3MgUGFja2Fn
ZShvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPWRldm51bGwsCiAgICAg
ICAgICAgICAgICAgICAgICkKIAorICAgICAgICAgICAgICAgICMgSWYgd2UgaGF2ZSBhIHBhY2th
Z2UgaW5zaWRlIGFub3RoZXIgcGFja2FnZSAobGlrZSB6b3BlLmludGVyZmFjZSksIHRoZSB0b3At
bGV2ZWwgcGFja2FnZSBuZWVkcyBhbiBfX2luaXRfXy5weQorICAgICAgICAgICAgICAgIGxvY2F0
aW9uID0gb3MucGF0aC5qb2luKEF1dG9JbnN0YWxsLmRpcmVjdG9yeSwgc2VsZi5uYW1lLnNwbGl0
KCcuJylbMF0pCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihsb2NhdGlvbikgYW5k
ICdfX2luaXRfXy5weScgbm90IGluIG9zLmxpc3RkaXIobG9jYXRpb24pOgorICAgICAgICAgICAg
ICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGxvY2F0aW9uLCAnX19pbml0X18ucHknKSwg
J3cnKSBhcyBpbml0OgorICAgICAgICAgICAgICAgICAgICAgICAgaW5pdC53cml0ZSgnXG4nKQor
CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAg
ICAgIyBXZSBtaWdodCBub3QgbmVlZCBzZXR1cC5weSBhdCBhbGwsIGNoZWNrIGlmIHdlIGhhdmUg
ZGlzdC1pbmZvIGFuZCB0aGUgbGlicmFyeSBpbiB0aGUgdGVtcG9yYXJ5IGxvY2F0aW9uCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2F1dG9pbnN0YWxsZWQvYnVpbGRib3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9hdXRvaW5zdGFsbGVkL2J1aWxkYm90LnB5
CShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYXV0b2luc3RhbGxlZC9i
dWlsZGJvdC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisjIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMKKworZnJvbSB3ZWJraXRzY21weSBp
bXBvcnQgQXV0b0luc3RhbGwsIFBhY2thZ2UsIFZlcnNpb24KKworaWYgc3lzLnZlcnNpb25faW5m
b1swXSA+PSAzOgorICAgIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2F1dG9iYWhuJywg
VmVyc2lvbigyMCwgNywgMSkpKQorICAgIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2J1
aWxkYm90JywgVmVyc2lvbigyLCA4LCA0KSkpCisgICAgQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFj
a2FnZSgnZGF0ZXV0aWwnLCBWZXJzaW9uKDIsIDgsIDEpLCBweXBpX25hbWU9J3B5dGhvbi1kYXRl
dXRpbCcpKQorICAgIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2ppbmphMicsIFZlcnNp
b24oMiwgMTEsIDIpLCBweXBpX25hbWU9J0ppbmphMicpKQorICAgIEF1dG9JbnN0YWxsLnJlZ2lz
dGVyKFBhY2thZ2UoJ2p3dCcsIFZlcnNpb24oMSwgNywgMSksIHB5cGlfbmFtZT0nUHlKV1QnKSkK
KyAgICBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdweXlhbWwnLCBWZXJzaW9uKDUsIDMs
IDEpLCBweXBpX25hbWU9J1B5WUFNTCcpKQorICAgIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2th
Z2UoJ3NxbGFsY2hlbXknLCBWZXJzaW9uKDEsIDMsIDIwKSwgcHlwaV9uYW1lPSdTUUxBbGNoZW15
JykpCisgICAgQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnc3FsYWxjaGVteS1taWdyYXRl
JywgVmVyc2lvbigwLCAxMywgMCkpKQorICAgIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2Uo
J3R3aXN0ZWQnLCBWZXJzaW9uKDIwLCAzLCAwKSwgcHlwaV9uYW1lPSdUd2lzdGVkJykpCisgICAg
QXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgndHhhaW8nLCBWZXJzaW9uKDIwLCA0LCAxKSkp
CisKK2Vsc2U6CisgICAgQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnYnVpbGRib3QnLCBW
ZXJzaW9uKDAsIDgsIDYpKSkKKyAgICBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdkYXRl
dXRpbCcsIFZlcnNpb24oMiwgOCwgMSksIHB5cGlfbmFtZT0ncHl0aG9uLWRhdGV1dGlsJykpCisg
ICAgQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnamluamEyJywgVmVyc2lvbigyLCA2KSwg
cHlwaV9uYW1lPSdKaW5qYTInKSkKKyAgICBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdz
cWxhbGNoZW15JywgVmVyc2lvbigwLCA3LCA3KSwgcHlwaV9uYW1lPSdTUUxBbGNoZW15JykpCisg
ICAgQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnc3FsYWxjaGVteS1taWdyYXRlJywgVmVy
c2lvbigwLCA3LCAyKSkpCisgICAgQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgndHdpc3Rl
ZCcsIFZlcnNpb24oMTIsIDEsIDApLCBweXBpX25hbWU9J1R3aXN0ZWQnKSkKKworc3lzLm1vZHVs
ZXNbX19uYW1lX19dID0gX19pbXBvcnRfXygnYnVpbGRib3QnKQpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9hdXRvaW5zdGFsbGVkL3R3aXN0ZWQucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9hdXRvaW5zdGFsbGVkL3R3aXN0ZWQucHkJKG5vbmV4aXN0ZW50KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9hdXRvaW5zdGFsbGVkL3R3aXN0ZWQucHkJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisj
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitpbXBvcnQgc3lzCisKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IEF1dG9JbnN0YWxs
LCBQYWNrYWdlLCBWZXJzaW9uCisKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ3R3aXN0
ZWQnLCBWZXJzaW9uKDE1LCA1LCAwKSwgcHlwaV9uYW1lPSdUd2lzdGVkJykpCitzeXMubW9kdWxl
c1tfX25hbWVfX10gPSBfX2ltcG9ydF9fKCd0d2lzdGVkJykKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9odHRwX3NlcnZlcl9kcml2ZXIvc2ltcGxlX2h0dHBf
c2VydmVyX2RyaXZlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Jl
bmNobWFya19ydW5uZXIvaHR0cF9zZXJ2ZXJfZHJpdmVyL3NpbXBsZV9odHRwX3NlcnZlcl9kcml2
ZXIucHkJKHJldmlzaW9uIDI2ODkyNykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2ht
YXJrX3J1bm5lci9odHRwX3NlcnZlcl9kcml2ZXIvc2ltcGxlX2h0dHBfc2VydmVyX2RyaXZlci5w
eQkod29ya2luZyBjb3B5KQpAQCAtMTA1LDEwICsxMDUsNCBAQCBjbGFzcyBTaW1wbGVIVFRQU2Vy
dmVyRHJpdmVyKEhUVFBTZXJ2ZXJECiAgICAgZGVmIF9lbnN1cmVfaHR0cF9zZXJ2ZXJfZGVwZW5k
ZW5jaWVzKHNlbGYpOgogICAgICAgICBfbG9nLmluZm8oJ0Vuc3VyZSBkZXBlbmRlbmNpZXMgb2Yg
aHR0cCBzZXJ2ZXIgaXMgc2F0aXNmaWVkJykKICAgICAgICAgZnJvbSBwa2dfcmVzb3VyY2VzIGlt
cG9ydCByZXF1aXJlLCBWZXJzaW9uQ29uZmxpY3QsIERpc3RyaWJ1dGlvbk5vdEZvdW5kCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHJlcXVpcmUoIlR3aXN0ZWQ+PTE1LjUuMCIpCi0gICAgICAg
ICAgICBpbXBvcnQgdHdpc3RlZAotICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBWZXJzaW9u
Q29uZmxpY3QsIERpc3RyaWJ1dGlvbk5vdEZvdW5kKToKLSAgICAgICAgICAgIF9sb2cuaW5mbygi
V2lsbCBpbnN0YWxsIHR3aXN0ZWQgaW4gd2Via2l0cHksIGFuZCB0d2lzdGVkIHdpbGwgYmUgdXNl
ZCBieSB3ZWJraXRweSBvbmx5IikKLSAgICAgICAgICAgIHN5cy5wYXRoLmFwcGVuZChvcy5wYXRo
LmFic3BhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19m
aWxlX18pKSwgJy4uLy4uLy4uLy4uJykpKQotICAgICAgICAgICAgZnJvbSB3ZWJraXRweS50aGly
ZHBhcnR5LmF1dG9pbnN0YWxsZWQudHdpc3RlZF8xNV81XzAgaW1wb3J0IHR3aXN0ZWQKKyAgICAg
ICAgZnJvbSB3ZWJraXRweS5hdXRvaW5zdGFsbGVkIGltcG9ydCB0d2lzdGVkCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvaHR0cF9zZXJ2ZXJfZHJpdmVyL2h0
dHBfc2VydmVyL3R3aXN0ZWRfaHR0cF9zZXJ2ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2h0dHBfc2VydmVyX2RyaXZlci9odHRwX3Nl
cnZlci90d2lzdGVkX2h0dHBfc2VydmVyLnB5CShyZXZpc2lvbiAyNjg5MjcpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvaHR0cF9zZXJ2ZXJfZHJpdmVyL2h0dHBf
c2VydmVyL3R3aXN0ZWRfaHR0cF9zZXJ2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTQsMTQgKzQs
OSBAQCBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCBz
eXMKLWZyb20gcGtnX3Jlc291cmNlcyBpbXBvcnQgcmVxdWlyZSwgVmVyc2lvbkNvbmZsaWN0LCBE
aXN0cmlidXRpb25Ob3RGb3VuZAogCi10cnk6Ci0gICAgcmVxdWlyZSgiVHdpc3RlZD49MTUuNS4w
IikKLSAgICBpbXBvcnQgdHdpc3RlZAotZXhjZXB0IChJbXBvcnRFcnJvciwgVmVyc2lvbkNvbmZs
aWN0LCBEaXN0cmlidXRpb25Ob3RGb3VuZCk6Ci0gICAgc3lzLnBhdGguYXBwZW5kKG9zLnBhdGgu
YWJzcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2Zp
bGVfXykpLCAnLi4vLi4vLi4vLi4nKSkpCi0gICAgZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1
dG9pbnN0YWxsZWQudHdpc3RlZF8xNV81XzAgaW1wb3J0IHR3aXN0ZWQKK2Zyb20gcGtnX3Jlc291
cmNlcyBpbXBvcnQgcmVxdWlyZSwgVmVyc2lvbkNvbmZsaWN0LCBEaXN0cmlidXRpb25Ob3RGb3Vu
ZAorZnJvbSB3ZWJraXRweS5hdXRvaW5zdGFsbGVkIGltcG9ydCB0d2lzdGVkCiAKIGZyb20gdHdp
c3RlZC53ZWIgaW1wb3J0IHN0YXRpYywgc2VydmVyCiBmcm9tIHR3aXN0ZWQud2ViLnJlc291cmNl
IGltcG9ydCBSZXNvdXJjZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5
L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRw
YXJ0eS9fX2luaXRfXy5weQkocmV2aXNpb24gMjY4OTI3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYs
OCBAQAogIiIiQXV0b2luc3RhbGxzIHRoaXJkLXBhcnR5IGNvZGUgcmVxdWlyZWQgYnkgV2ViS2l0
LiIiIgogCiAKLWltcG9ydCBjb2RlY3MKIGltcG9ydCBqc29uCiBpbXBvcnQgb3MKLWltcG9ydCBy
ZQogaW1wb3J0IHN5cwogCiBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgpAQCAtODEsNDYg
Kzc5LDcgQEAgY2xhc3MgQXV0b2luc3RhbGxJbXBvcnRIb29rKG9iamVjdCk6CiAgICAgICAgICAg
ICBzeXMucGF0aC5pbnNlcnQoc3lzLnBhdGguaW5kZXgoQXV0b0luc3RhbGwuZGlyZWN0b3J5KSAr
IDEgaWYgQXV0b0luc3RhbGwuZGlyZWN0b3J5IGluIHN5cy5wYXRoIGVsc2UgMCwgX0FVVE9JTlNU
QUxMRURfRElSKQogCiAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoPU5v
bmUpOgotICAgICAgICAjIFRoaXMgbWV0aG9kIHdpbGwgcnVuIGJlZm9yZSBlYWNoIGltcG9ydC4g
U2VlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDMwMi8KLSAgICAgICAgaWYg
Jy5hdXRvaW5zdGFsbGVkJyBub3QgaW4gZnVsbG5hbWU6Ci0gICAgICAgICAgICByZXR1cm4KLQot
ICAgICAgICAjIE5vdGU6IGFsbCBvZiB0aGUgbWV0aG9kcyBtdXN0IGZvbGxvdyB0aGUgIl9pbnN0
YWxsX1hYWCIgY29udmVudGlvbiBpbgotICAgICAgICAjIG9yZGVyIGZvciBhdXRvaW5zdGFsbF9l
dmVyeXRoaW5nKCksIGJlbG93LCB0byB3b3JrIHByb3Blcmx5LgotICAgICAgICBpZiAnLmJ1aWxk
Ym90JyBpbiBmdWxsbmFtZToKLSAgICAgICAgICAgIHNlbGYuX2luc3RhbGxfYnVpbGRib3QoKQot
ICAgICAgICBlbGlmICcudHdpc3RlZF8xNV81XzAnIGluIGZ1bGxuYW1lOgotICAgICAgICAgICAg
c2VsZi5faW5zdGFsbF90d2lzdGVkXzE1XzVfMCgpCi0KLSAgICAjIGF1dG9pbnN0YWxsZWQuYnVp
bGRib3QgaXMgdXNlZCBieSBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9tYXN0ZXJjZmdfdW5pdHRlc3QucHkKLSAgICAjIGFuZCBzaG91bGQgaWRlYWxseSBtYXRjaCB0
aGUgdmVyc2lvbiBvZiBCdWlsZEJvdCB1c2VkIGF0IGJ1aWxkLndlYmtpdC5vcmcuCi0gICAgZGVm
IF9pbnN0YWxsX2J1aWxkYm90KHNlbGYpOgotICAgICAgICAjIFRoZSBidWlsZGJvdCBwYWNrYWdl
IHVzZXMgamluamEyLCBmb3IgZXhhbXBsZSwgaW4gYnVpbGRib3Qvc3RhdHVzL3dlYi9iYXNlLnB5
LgotICAgICAgICAjIGJ1aWxkYm90IGltcG9ydHMgamluamEyIGRpcmVjdGx5IChhcyB0aG91Z2gg
aXQgd2VyZSBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbSksCi0gICAgICAgICMgc28gdGhlIHNlYXJj
aCBwYXRoIG5lZWRzIHRvIGluY2x1ZGUgamluamEyLiAgV2UgcHV0IGppbmphMiBpbgotICAgICAg
ICAjIGl0cyBvd24gZGlyZWN0b3J5IHNvIHRoYXQgd2UgY2FuIGluY2x1ZGUgaXQgaW4gdGhlIHNl
YXJjaCBwYXRoCi0gICAgICAgICMgd2l0aG91dCBpbmNsdWRpbmcgb3RoZXIgbW9kdWxlcyBhcyBh
IHNpZGUgZWZmZWN0LgotICAgICAgICBqaW5qYV9kaXIgPSBzZWxmLl9mcy5qb2luKF9BVVRPSU5T
VEFMTEVEX0RJUiwgImppbmphMiIpCi0gICAgICAgIGluc3RhbGxlciA9IEF1dG9JbnN0YWxsZXIo
YXBwZW5kX3RvX3NlYXJjaF9wYXRoPVRydWUsIHRhcmdldF9kaXI9amluamFfZGlyKQotICAgICAg
ICBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9w
YWNrYWdlcy9zb3VyY2UvSi9KaW5qYTIvSmluamEyLTIuNi50YXIuZ3oiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsX3N1YnBhdGg9IkppbmphMi0y
LjYvamluamEyIikKLQotICAgICAgICBTUUxBbGNoZW15X2RpciA9IHNlbGYuX2ZzLmpvaW4oX0FV
VE9JTlNUQUxMRURfRElSLCAic3FsYWxjaGVteSIpCi0gICAgICAgIGluc3RhbGxlciA9IEF1dG9J
bnN0YWxsZXIoYXBwZW5kX3RvX3NlYXJjaF9wYXRoPVRydWUsIHRhcmdldF9kaXI9U1FMQWxjaGVt
eV9kaXIpCi0gICAgICAgIGluc3RhbGxlci5pbnN0YWxsKHVybD0iaHR0cHM6Ly9maWxlcy5weXRo
b25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9TL1NRTEFsY2hlbXkvU1FMQWxjaGVteS0wLjcu
Ny50YXIuZ3oiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVybF9zdWJwYXRoPSJTUUxBbGNoZW15LTAuNy43L2xpYi9zcWxhbGNoZW15IikKLQotICAg
ICAgICB0d2lzdGVkX2RpciA9IHNlbGYuX2ZzLmpvaW4oX0FVVE9JTlNUQUxMRURfRElSLCAidHdp
c3RlZCIpCi0gICAgICAgIGluc3RhbGxlciA9IEF1dG9JbnN0YWxsZXIocHJlcGVuZF90b19zZWFy
Y2hfcGF0aD1UcnVlLCB0YXJnZXRfZGlyPXR3aXN0ZWRfZGlyKQotICAgICAgICBpbnN0YWxsZXIu
aW5zdGFsbCh1cmw9Imh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3Vy
Y2UvVC9Ud2lzdGVkL1R3aXN0ZWQtMTIuMS4wLnRhci5iejIiLCB1cmxfc3VicGF0aD0iVHdpc3Rl
ZC0xMi4xLjAvdHdpc3RlZCIpCi0KLSAgICAgICAgc2VsZi5faW5zdGFsbCgiaHR0cHM6Ly9maWxl
cy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9iL2J1aWxkYm90L2J1aWxkYm90LTAu
OC42cDEudGFyLmd6IiwgImJ1aWxkYm90LTAuOC42cDEvYnVpbGRib3QiKQotCi0gICAgZGVmIF9p
bnN0YWxsX3R3aXN0ZWRfMTVfNV8wKHNlbGYpOgotICAgICAgICB0d2lzdGVkX2RpciA9IHNlbGYu
X2ZzLmpvaW4oX0FVVE9JTlNUQUxMRURfRElSLCAidHdpc3RlZF8xNV81XzAiKQotICAgICAgICBp
bnN0YWxsZXIgPSBBdXRvSW5zdGFsbGVyKHByZXBlbmRfdG9fc2VhcmNoX3BhdGg9VHJ1ZSwgdGFy
Z2V0X2Rpcj10d2lzdGVkX2RpcikKLSAgICAgICAgaW5zdGFsbGVyLmluc3RhbGwodXJsPSJodHRw
czovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL1QvVHdpc3RlZC9Ud2lz
dGVkLTE1LjUuMC50YXIuYnoyIiwgdXJsX3N1YnBhdGg9IlR3aXN0ZWQtMTUuNS4wL3R3aXN0ZWQi
KQotICAgICAgICBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHBzOi8vZmlsZXMucHl0aG9uaG9z
dGVkLm9yZy9wYWNrYWdlcy9zb3VyY2Uvei96b3BlLmludGVyZmFjZS96b3BlLmludGVyZmFjZS00
LjEuMy50YXIuZ3oiLCB1cmxfc3VicGF0aD0iem9wZS5pbnRlcmZhY2UtNC4xLjMvc3JjL3pvcGUi
KQorICAgICAgICBwYXNzCiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIGdyZWF0ZXJfdGhh
bl9lcXVhbF90b192ZXJzaW9uKG1pbmltdW0sIHZlcnNpb24pOgpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfX191bml0dGVzdC5weQko
cmV2aXNpb24gMjY4OTI3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19f
aW5pdF9fX3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsMzkgKzAsMCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIHdlYmtpdHB5
LnRoaXJkcGFydHkgaW1wb3J0IEF1dG9pbnN0YWxsSW1wb3J0SG9vawotCi0KLWNsYXNzIFRoaXJk
cGFydHlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9pbXBvcnRzKHNlbGYp
OgotICAgICAgICAjIFRoaXMgbWV0aG9kIHRlc3RzIHRoYXQgd2UgY2FuIGFjdHVhbGx5IGltcG9y
dCBldmVyeXRoaW5nLgotICAgICAgICAjIHVudXNlZC12YXJpYWJsZSwgaW1wb3J0IGZhaWx1cmVz
IC0gcHlsaW50OiBkaXNhYmxlLW1zZz1XMDYxMixFMDYxMSxGMDQwMQotICAgICAgICBpbXBvcnQg
d2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLmJ1aWxkYm90CgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X19fdW5pdHRl
c3QucHkKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLUxG
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
</data>

          </attachment>
      

    </bug>

</bugzilla>