<?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>207043</bug_id>
          
          <creation_ts>2020-01-31 07:12:38 -0800</creation_ts>
          <short_desc>Generalize configure-xcode-for-ios-development</short_desc>
          <delta_ts>2020-09-22 08:42:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=212718</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=216825</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>ap</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>krollin</cc>
    
    <cc>pancfmiaomiao</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1613345</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-31 07:12:38 -0800</bug_when>
    <thetext>This script needs to be generalized to serve watchOS and tvOS as well as iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613349</commentid>
    <comment_count>1</comment_count>
      <attachid>389347</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-31 07:20:19 -0800</bug_when>
    <thetext>Created attachment 389347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613350</commentid>
    <comment_count>2</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-31 07:21:11 -0800</bug_when>
    <thetext>Verified that this works on a customer install. Haven&apos;t totally gotten tvOS and watchOS working with this, but it&apos;s the first step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613558</commentid>
    <comment_count>3</comment_count>
      <attachid>389347</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2020-01-31 13:34:41 -0800</bug_when>
    <thetext>Comment on attachment 389347
Patch

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

&gt; Source/WebKit/UIProcess/WKImagePreviewViewController.mm:102
&gt;  {

Why use direct pragmas rather than adding ALLOW_DEPRECATED_IMPLEMENTATIONS_BEGIN/ALLOW_DEPRECATED_IMPLEMENTATIONS_END? Is this necessary to get the compile to work, given our discussion on my having added those macros and still not getting the compile to work?

&gt; Tools/Scripts/configure-xcode-for-embedded-development:4
&gt; +#

Copyright 2020.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613561</commentid>
    <comment_count>4</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2020-01-31 13:37:03 -0800</bug_when>
    <thetext>I confirm that applying the patch to an isolated copy of the WebKit checkout, running the script on a public version of Xcode, and running `build-webkit --sdk iphoneos` works for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656952</commentid>
    <comment_count>5</comment_count>
      <attachid>400491</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-05-28 12:10:28 -0700</bug_when>
    <thetext>Created attachment 400491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656953</commentid>
    <comment_count>6</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-05-28 12:11:45 -0700</bug_when>
    <thetext>Reviving this bug. I&apos;ve made some edits to this script so it is compatible with the new build system (at least for tvOS). I think we are in a place where we should land the script, we need to edit some documentation before removing the old one, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658887</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-03 15:15:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/63946933&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659147</commentid>
    <comment_count>8</comment_count>
      <attachid>401036</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-06-04 10:17:46 -0700</bug_when>
    <thetext>Created attachment 401036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659229</commentid>
    <comment_count>9</comment_count>
      <attachid>401059</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-06-04 12:01:10 -0700</bug_when>
    <thetext>Created attachment 401059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659763</commentid>
    <comment_count>10</comment_count>
      <attachid>401059</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-05 13:05:03 -0700</bug_when>
    <thetext>Comment on attachment 401059
Patch

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

rs=me

I did not try to compare logic from the old script to the new one.  The best test would be to run each script and verify output is identical (equivalent) for a given SDK.

&gt; Tools/Scripts/configure-xcode-for-embedded-development:1
&gt; +#!/usr/bin/env python3

We aren&apos;t supporting Python 2.7 in new scripts anymore?

&gt; Tools/Scripts/configure-xcode-for-embedded-development:3
&gt; +# Copyright (C) 2020 Apple Inc.  All rights reserved.

Nit:  Since this is based on the Perl script, should the copyright be from 2014-2020?

# Copyright (C) 2014, 2015 Apple Inc. All rights reserved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659774</commentid>
    <comment_count>11</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-06-05 13:43:28 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #10)
&gt; Comment on attachment 401059 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401059&amp;action=review
&gt; 
&gt; rs=me
&gt; 
&gt; I did not try to compare logic from the old script to the new one.  The best
&gt; test would be to run each script and verify output is identical (equivalent)
&gt; for a given SDK.

It&apos;s not exactly identical (since we are adding the watchOS architectures), and there are a few old bits that were removed. The most important piece is ensuring that the new script puts an external SDK in a state that it can build WebKit for iOS, which it does do.

&gt; 
&gt; &gt; Tools/Scripts/configure-xcode-for-embedded-development:1
&gt; &gt; +#!/usr/bin/env python3
&gt; 
&gt; We aren&apos;t supporting Python 2.7 in new scripts anymore?

Our motivation for supporting Python 2.7 is to keep supporting Mojave. However, our embedded builds only support the latest Xcode and latest macOS, so while many scripts need to support Python 2.7, this script is guaranteed to be used on Catalina, which has Python 3.

&gt; 
&gt; &gt; Tools/Scripts/configure-xcode-for-embedded-development:3
&gt; &gt; +# Copyright (C) 2020 Apple Inc.  All rights reserved.
&gt; 
&gt; Nit:  Since this is based on the Perl script, should the copyright be from
&gt; 2014-2020?
&gt; 
&gt; # Copyright (C) 2014, 2015 Apple Inc. All rights reserved.

Good point, updating the copyright.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659779</commentid>
    <comment_count>12</comment_count>
      <attachid>401193</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-06-05 13:48:36 -0700</bug_when>
    <thetext>Created attachment 401193
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659786</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-05 14:15:21 -0700</bug_when>
    <thetext>Committed r262653: &lt;https://trac.webkit.org/changeset/262653&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401193.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659790</commentid>
    <comment_count>14</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-06-05 14:24:53 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659791</commentid>
    <comment_count>15</comment_count>
      <attachid>401197</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-06-05 14:24:54 -0700</bug_when>
    <thetext>Created attachment 401197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659805</commentid>
    <comment_count>16</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2020-06-05 14:43:27 -0700</bug_when>
    <thetext>I would expect to see a comment in the ChangeLog on what this patch is for. I guess it&apos;s to &quot;switch to the new script and remove the old script&quot;?

&gt; Nit:  Since this is based on the Perl script, should the copyright be from
&gt; 2014-2020?

I&apos;m wondering if this is the case. I&apos;m certainly no copyright lawyer. But the new script was a rewrite. It wasn&apos;t a transliteration or anything. It was written using the old script as a checklist. It doesn&apos;t bring over any of the previous approaches or algorithms.

One thing I&apos;m thinking of here is a story Audible suggested to me. It&apos;s a modern take on Dr. Jekyll and Mr. Hyde. It&apos;s based on the original and takes the central idea, but I don&apos;t think it&apos;s copyright 1886-2020.

Again, just my two bits. I don&apos;t know what I&apos;m talking about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661248</commentid>
    <comment_count>17</comment_count>
      <attachid>401197</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-10 11:29:09 -0700</bug_when>
    <thetext>Comment on attachment 401197
Patch

Why do we need a separate script for this? Is it critical that these steps *not* be done for someone who only intends to develop for Mac? I think it’s better if there are the minimum number of separate scripts for each person to run. Ideally after installing tools if you wish to work on WebKit there is only one script invocation needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661450</commentid>
    <comment_count>18</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-06-10 17:13:32 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #17)
&gt; Comment on attachment 401197 [details]
&gt; Patch
&gt; 
&gt; Why do we need a separate script for this? Is it critical that these steps
&gt; *not* be done for someone who only intends to develop for Mac? I think it’s
&gt; better if there are the minimum number of separate scripts for each person
&gt; to run. Ideally after installing tools if you wish to work on WebKit there
&gt; is only one script invocation needed.

There isn&apos;t a similar script for Mac, if there was one, I would agree. But Mac just works with &apos;build-webkit&apos; right out of the box.

It&apos;s also worth noting that this script modifies your Xcode install, I don&apos;t think we want folks doing that unless they actually need to.

If we really wanted to, we could probably integrate this script into build-webkit, but I haven&apos;t seen a need to do that so far. The instructions on https://webkit.org/building-webkit/ seem to have served us well so far.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661459</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-10 17:41:36 -0700</bug_when>
    <thetext>Committed r262884: &lt;https://trac.webkit.org/changeset/262884&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401197.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690637</commentid>
    <comment_count>20</comment_count>
    <who name="Chenfeng Pan">pancfmiaomiao</who>
    <bug_when>2020-09-22 00:06:25 -0700</bug_when>
    <thetext>Hi, when I build WebKit for iOS according to https://github.com/WebKit/webkit/blob/master/ReadMe.md#building-ios-port I find there is no Tools/Scripts/configure-xcode-for-ios-development. Until searching in trac.webkit.org I find it has been replaced with Tools/Scripts/configure-xcode-for-embedded-development. 
So ReadMe.md needs to be updated now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690641</commentid>
    <comment_count>21</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2020-09-22 00:28:15 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #18)
&gt; (In reply to Darin Adler from comment #17)
&gt; &gt; Comment on attachment 401197 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Why do we need a separate script for this? Is it critical that these steps
&gt; &gt; *not* be done for someone who only intends to develop for Mac? I think it’s
&gt; &gt; better if there are the minimum number of separate scripts for each person
&gt; &gt; to run. Ideally after installing tools if you wish to work on WebKit there
&gt; &gt; is only one script invocation needed.
&gt; 
&gt; There isn&apos;t a similar script for Mac, if there was one, I would agree. But
&gt; Mac just works with &apos;build-webkit&apos; right out of the box.
&gt; 
&gt; It&apos;s also worth noting that this script modifies your Xcode install, I don&apos;t
&gt; think we want folks doing that unless they actually need to.
&gt; 
&gt; If we really wanted to, we could probably integrate this script into
&gt; build-webkit, but I haven&apos;t seen a need to do that so far. The instructions
&gt; on https://webkit.org/building-webkit/ seem to have served us well so far.

Perhaps, when a developer tries to build for iOS, we can detect if the modifications haven&apos;t been made. If they haven&apos;t, present the developer with a confirmation request (which explains the liberties we&apos;ll be taking with Xcode), and then invoke configure-code-for-embedded-development for them. If we take this route, then our update to the ReadMe.md would be to remove any reference to such a script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690700</commentid>
    <comment_count>22</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-09-22 08:28:11 -0700</bug_when>
    <thetext>(In reply to Keith Rollin from comment #21)
&gt; ....
&gt; 
&gt; Perhaps, when a developer tries to build for iOS, we can detect if the
&gt; modifications haven&apos;t been made. If they haven&apos;t, present the developer with
&gt; a confirmation request (which explains the liberties we&apos;ll be taking with
&gt; Xcode), and then invoke configure-code-for-embedded-development for them. If
&gt; we take this route, then our update to the ReadMe.md would be to remove any
&gt; reference to such a script.

Might be harder than you expect, we could easily do that for build-webkit, but not sure how we we do it for Xcode builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690702</commentid>
    <comment_count>23</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-09-22 08:28:53 -0700</bug_when>
    <thetext>(In reply to Chenfeng Pan from comment #20)
&gt; Hi, when I build WebKit for iOS according to
&gt; https://github.com/WebKit/webkit/blob/master/ReadMe.md#building-ios-port I
&gt; find there is no Tools/Scripts/configure-xcode-for-ios-development. Until
&gt; searching in trac.webkit.org I find it has been replaced with
&gt; Tools/Scripts/configure-xcode-for-embedded-development. 
&gt; So ReadMe.md needs to be updated now.

Oops! Didn&apos;t realize we had a ReadMe there! I updated https://webkit.org/building-webkit/, but not the ReadMe....doing so now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389347</attachid>
            <date>2020-01-31 07:20:19 -0800</date>
            <delta_ts>2020-05-28 12:10:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207043-20200131072018.patch</filename>
            <type>text/plain</type>
            <size>31701</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTU0ODMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTAxLTMxICBKb25hdGhhbiBC
ZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmFsaXplIGNvbmZpZ3Vy
ZS14Y29kZS1mb3ItaW9zLWRldmVsb3BtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHVuaXQgdGVzdHMuCisKKyAg
ICAgICAgUGF0Y2ggYnkgS2VpdGggUm9sbGluLgorCisgICAgICAgICogVUlQcm9jZXNzL1dLSW1h
Z2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLSW1hZ2VQcmV2aWV3Vmll
d0NvbnRyb2xsZXIgcHJldmlld0FjdGlvbkl0ZW1zXSk6CisgICAgICAgICgtW1dLSW1hZ2VQcmV2
aWV3Vmlld0NvbnRyb2xsZXIgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EXSk6
IERlbGV0ZWQuCisKIDIwMjAtMDEtMzAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgbG9nZ2luZyB0byBzaG93IHRoZSBmbG93IG9mIEFwcFNTTwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV0tJbWFnZVByZXZpZXdWaWV3Q29udHJvbGxlci5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XS0ltYWdlUHJldmlld1Zp
ZXdDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyNTU0ODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XS0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05
Myw5ICs5MywxMiBAQCBzdGF0aWMgQ0dTaXplIF9zY2FsZVNpemVXaXRoaW5TaXplKENHU2l6CiB9
CiAKICNpZiBIQVZFKExJTktfUFJFVklFVykKLUFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0JFR0lOCisKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKyNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtaW1wbGVtZW50YXRpb25zIgor
CiAtIChOU0FycmF5PFVJUHJldmlld0FjdGlvbiAqPiAqKXByZXZpZXdBY3Rpb25JdGVtcwotQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiB7CiAgICAgTlNNdXRhYmxlQXJyYXk8
VUlQcmV2aWV3QWN0aW9uICo+ICpwcmV2aWV3QWN0aW9ucyA9IFtOU011dGFibGVBcnJheSBhcnJh
eV07CiAgICAgZm9yIChfV0tFbGVtZW50QWN0aW9uICppbWFnZUFjdGlvbiBpbiBfaW1hZ2VBY3Rp
b25zLmdldCgpKSB7CkBAIC0xMDksNiArMTEyLDkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5ECiAKICAgICByZXR1cm4gcHJldmlld0FjdGlvbnM7CiB9CisKKyNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwb3AKKwogI2VuZGlmCiAKIEBlbmQKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTQ5MykKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAx
LTMxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBHZW5l
cmFsaXplIGNvbmZpZ3VyZS14Y29kZS1mb3ItaW9zLWRldmVsb3BtZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBieSBLZWl0aCBSb2xsaW4u
CisKKyAgICAgICAgKiBTY3JpcHRzL2NvbmZpZ3VyZS14Y29kZS1mb3ItZW1iZWRkZWQtZGV2ZWxv
cG1lbnQ6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvY29uZmlndXJlLXhjb2RlLWZvci1pb3Mt
ZGV2ZWxvcG1lbnQ6IFJlbW92ZWQuCisKIDIwMjAtMDEtMzAgIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBhbm90aGVyIHNwZWN1bGF0aXZl
IHRlc3QgZml4IGFmdGVyIHIyNTUwNDEKSW5kZXg6IFRvb2xzL1NjcmlwdHMvY29uZmlndXJlLXhj
b2RlLWZvci1lbWJlZGRlZC1kZXZlbG9wbWVudAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L2NvbmZpZ3VyZS14Y29kZS1mb3ItZW1iZWRkZWQtZGV2ZWxvcG1lbnQJKG5vbmV4aXN0ZW50KQor
KysgVG9vbHMvU2NyaXB0cy9jb25maWd1cmUteGNvZGUtZm9yLWVtYmVkZGVkLWRldmVsb3BtZW50
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAyIEBACisjIS91c3IvYmluL2VudiBweXRob24z
CisjCisjIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisjIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
IyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisjIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGVycm5vCitpbXBvcnQgb3MKK2ltcG9ydCBw
YXRobGliCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBv
cnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0cmFjZWJhY2sKKworZnJvbSB4bWwuZXRy
ZWUgaW1wb3J0IEVsZW1lbnRUcmVlIGFzIEVUCisKK01JU1NJTkdfSEVBREVSUyA9IFsKKyAgICAi
dXNyL2luY2x1ZGUvbGlieHNsdCIsCisgICAgInVzci9pbmNsdWRlL21hY2gvbWFjaF90eXBlcy5k
ZWZzIiwKKyAgICAidXNyL2luY2x1ZGUvbWFjaC9tYWNoaW5lL21hY2hpbmVfdHlwZXMuZGVmcyIs
CisgICAgInVzci9pbmNsdWRlL21hY2gvc3RkX3R5cGVzLmRlZnMiLAorICAgICJ1c3IvaW5jbHVk
ZS9vYmpjL1Byb3RvY29sLmgiLAorICAgICJ1c3IvaW5jbHVkZS9vYmpjL29iamMtY2xhc3MuaCIs
CisgICAgInVzci9pbmNsdWRlL29iamMvb2JqYy1ydW50aW1lLmgiLAorICAgICJ1c3IvaW5jbHVk
ZS9yZWFkbGluZS9oaXN0b3J5LmgiLAorICAgICJ1c3IvaW5jbHVkZS9yZWFkbGluZS9yZWFkbGlu
ZS5oIiwKK10KKworTUlTU0lOR19GUkFNRVdPUktTID0gWworICAgICgiQVZLaXQuZnJhbWV3b3Jr
IiwgRmFsc2UpLAorICAgICgiQXVkaW9Ub29sYm94LmZyYW1ld29yayIsIEZhbHNlKSwKKyAgICAo
IkF1ZGlvVW5pdC5mcmFtZXdvcmsiLCBGYWxzZSksCisgICAgKCJDRk5ldHdvcmsuZnJhbWV3b3Jr
IiwgVHJ1ZSksCisgICAgKCJDb3JlSW1hZ2UuZnJhbWV3b3JrIiwgRmFsc2UpLAorICAgICgiSU9T
dXJmYWNlLmZyYW1ld29yayIsIEZhbHNlKSwKKyAgICAoIk1lZGlhQWNjZXNzaWJpbGl0eS5mcmFt
ZXdvcmsiLCBGYWxzZSksCisgICAgKCJNZWRpYVRvb2xib3guZnJhbWV3b3JrIiwgRmFsc2UpLAor
ICAgICgiTWV0YWwuZnJhbWV3b3JrIiwgRmFsc2UpLAorICAgICgiT3BlbkdMRVMuZnJhbWV3b3Jr
IiwgRmFsc2UpLAorICAgICgiUXVhcnR6Q29yZS5mcmFtZXdvcmsiLCBGYWxzZSksCisgICAgKCJV
SUtpdC5mcmFtZXdvcmsiLCBUcnVlKSwKKyAgICAoIlZpZGVvVG9vbGJveC5mcmFtZXdvcmsiLCBG
YWxzZSksCitdCisKK1hDU1BFQ19JTkZPID0gWworICAgIHsKKyAgICAgICAgImlkIjogICAgICAg
ImNvbS5hcHBsZS5wYWNrYWdlLXR5cGUubWFjaC1vLWV4ZWN1dGFibGUiLAorICAgICAgICAic291
cmNlIjogICAiUGxhdGZvcm1zL01hY09TWC5wbGF0Zm9ybS9EZXZlbG9wZXIvTGlicmFyeS9YY29k
ZS9TcGVjaWZpY2F0aW9ucy9NYWNPU1ggUGFja2FnZSBUeXBlcy54Y3NwZWMiLAorICAgICAgICAi
ZGVzdCI6ICAgICAiLi4vUGx1Z0lucy9JREVpT1NTdXBwb3J0Q29yZS5pZGVwbHVnaW4vQ29udGVu
dHMvUmVzb3VyY2VzL0VtYmVkZGVkLVNoYXJlZC54Y3NwZWMiCisgICAgfSwKKyAgICB7CisgICAg
ICAgICJpZCI6ICAgICAgICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiLAorICAgICAgICAi
c291cmNlIjogICAiUGxhdGZvcm1zL01hY09TWC5wbGF0Zm9ybS9EZXZlbG9wZXIvTGlicmFyeS9Y
Y29kZS9TcGVjaWZpY2F0aW9ucy9NYWNPU1ggUHJvZHVjdCBUeXBlcy54Y3NwZWMiLAorICAgICAg
ICAiZGVzdCI6ICAgICAiLi4vUGx1Z0lucy9JREVpT1NTdXBwb3J0Q29yZS5pZGVwbHVnaW4vQ29u
dGVudHMvUmVzb3VyY2VzL0VtYmVkZGVkLVNoYXJlZC54Y3NwZWMiCisgICAgfSwKK10KKworQVZB
SUxBQklMSVRZX0ZJTEUgPSBwYXRobGliLlBhdGgoInVzci9sb2NhbC9pbmNsdWRlL0F2YWlsYWJp
bGl0eVByb2hpYml0ZWRJbnRlcm5hbC5oIikKKworIyBUaGVyZSBhcmUgZnVuY3Rpb25zIG1hcmtl
ZCB3aXRoIF9fVFZPU19QUk9ISUJJVEVEIGFuZCBfX1dBVENIT1NfUFJPSElCSVRFRC4KKyMgVGhl
c2UgZXZhbHVhdGUgdG8sIGZvciBleGFtcGxlLCBfX09TX0FWQUlMQUJJTElUWSh3YXRjaG9zLHVu
YXZhaWxhYmxlKSwgd2hpY2gKKyMgaW4gdHVybiB0cmFuc2xhdGVzIGludG8gX19hdHRyaWJ1dGVf
XygoYXZhaWxhYmlsaXR5KF90YXJnZXQsX2F2YWlsYWJpbGl0eSkpKS4KKyMgVG8gdHVybiB0aGlz
IG9mZiwganVzdCBkZWZpbmUgX19PU19BVkFJTEFCSUxJVFkgdG8gZG8gbm90aGluZy4KKyMKKyMg
VGhlcmUgYXJlIHNvbWUgb3RoZXIgZnVuY3Rpb25zIHRoYXQgYXJlIG1hcmtlZCBhcyBhdmFpbGFi
bGUgaW50ZXJuYWxseSwgYnV0CisjIGFyZSBtYXJrZWQgYXMgQVBJX1VOQVZBSUxBQkxFIGluIHB1
YmxpYyBTREtzLiBUaG9zZSBhbHNvIG5lZWQgdG8gYmUgYWRkcmVzc2VkCisjIGJ5IG1ha2luZyB0
aGUgbWFjcm8gZG8gbm90aGluZy4KKworI3VuZGVmIEFQSV9VTkFWQUlMQUJMRQorI2RlZmluZSBB
UElfVU5BVkFJTEFCTEUoLi4uKQorI2RlZmluZSBTUElfQVZBSUxBQkxFKC4uLikgQVBJX0FWQUlM
QUJMRShfX1ZBX0FSR1NfXykKKyMgSGFuZGxlIGNhc2VzIHdoZXJlIGZ1bmN0aW9ucy9jbGFzc2Vz
IGFyZSBub3QgbWFya2VkIGFzIGF2YWlsYWJsZSBmb3IgdGhlIHBsYXRmb3JtIHdlIHdhbnQgYnkg
bWFya2luZyB0aGVtIGFzIGF2YWlsYWJsZSBmb3IgYWxsIHBsYXRmb3Jtcy4KKyN1bmRlZiBBUElf
QVZBSUxBQkxFCisjZGVmaW5lIEFQSV9BVkFJTEFCTEUoLi4uKSBBUElfQVZBSUxBQkxFMihtYWNv
cygxMC4xKSwgaW9zKDEuMCksIHdhdGNob3MoMS4wKSwgdHZvcygxLjApKQorI2RlZmluZSBBUElf
QVZBSUxBQkxFMiguLi4pIF9fQVBJX0FWQUlMQUJMRV9HRVRfTUFDUk8oX19WQV9BUkdTX18sX19B
UElfQVZBSUxBQkxFNywgX19BUElfQVZBSUxBQkxFNiwgX19BUElfQVZBSUxBQkxFNSwgX19BUElf
QVZBSUxBQkxFNCwgX19BUElfQVZBSUxBQkxFMywgX19BUElfQVZBSUxBQkxFMiwgX19BUElfQVZB
SUxBQkxFMSwgMCkoX19WQV9BUkdTX18pCisKKyN1bmRlZiBBUElfQVZBSUxBQkxFCisjdW5kZWYg
QVBJX0FWQUlMQUJMRV9CRUdJTgorI3VuZGVmIEFQSV9BVkFJTEFCTEVfRU5ECisjdW5kZWYgQVBJ
X0RFUFJFQ0FURUQKKyN1bmRlZiBBUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UCisjdW5k
ZWYgQVBJX0RFUFJFQ0FURURfQkVHSU4KKyN1bmRlZiBBUElfREVQUkVDQVRFRF9FTkQKKyN1bmRl
ZiBBUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UX0JFR0lOCisjdW5kZWYgQVBJX0RFUFJF
Q0FURURfV0lUSF9SRVBMQUNFTUVOVF9FTkQKKyN1bmRlZiBBUElfVU5BVkFJTEFCTEUKKyN1bmRl
ZiBBUElfVU5BVkFJTEFCTEVfQkVHSU4KKyN1bmRlZiBBUElfVU5BVkFJTEFCTEVfRU5ECisKKyN1
bmRlZiBTUElfQVZBSUxBQkxFCisjdW5kZWYgU1BJX0RFUFJFQ0FURUQKKyN1bmRlZiBTUElfREVQ
UkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UCisKKyMgLy8gVGFrZW4gZnJvbSB0aGUgInVuc3VwcG9y
dGVkIiBicmFuY2ggb2YgL3Vzci9pbmNsdWRlL29zL2F2YWlsYWJpbGl0eS5oCisjZGVmaW5lIEFQ
SV9BVkFJTEFCTEUoLi4uKQorI2RlZmluZSBBUElfQVZBSUxBQkxFX0JFR0lOKC4uLikKKyNkZWZp
bmUgQVBJX0FWQUlMQUJMRV9FTkQKKyNkZWZpbmUgQVBJX0RFUFJFQ0FURUQoLi4uKQorI2RlZmlu
ZSBBUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKC4uLikKKyNkZWZpbmUgQVBJX0RFUFJF
Q0FURURfQkVHSU4oLi4uKQorI2RlZmluZSBBUElfREVQUkVDQVRFRF9FTkQKKyNkZWZpbmUgQVBJ
X0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVF9CRUdJTiguLi4pCisjZGVmaW5lIEFQSV9ERVBS
RUNBVEVEX1dJVEhfUkVQTEFDRU1FTlRfRU5ECisjZGVmaW5lIEFQSV9VTkFWQUlMQUJMRSguLi4p
CisjZGVmaW5lIEFQSV9VTkFWQUlMQUJMRV9CRUdJTiguLi4pCisjZGVmaW5lIEFQSV9VTkFWQUlM
QUJMRV9FTkQKKworI2RlZmluZSBTUElfQVZBSUxBQkxFKC4uLikKKyNkZWZpbmUgU1BJX0RFUFJF
Q0FURUQoLi4uKQorI2RlZmluZSBTUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKC4uLikK
KworCitBVkFJTEFCSUxUWV9URVhUID0gIiIiXAorLy8gSGFuZGxlIF9fSU9TX1BST0hJQklURUQg
YW5kIGZyaWVuZHMuCisjdW5kZWYgX19PU19BVkFJTEFCSUxJVFkKKyNkZWZpbmUgX19PU19BVkFJ
TEFCSUxJVFkoLi4uKQorCisvLyBUYWtlIGNhcmUgb2Yge0EsU31QSV9BVkFJTEFCTEV7LF9CRUdJ
TixfRU5EfQorI3VuZGVmIF9fQVBJX0FWQUlMQUJMRV9HRVRfTUFDUk8KKyNkZWZpbmUgX19BUElf
QVZBSUxBQkxFX0dFVF9NQUNSTyguLi4pIF9fTlVMTF9BVkFJTEFCSUxJVFkKKworLy8gVGFrZSBj
YXJlIG9mIHtBLFN9UElfREVQUkVDQVRFRHssV0lUSF9SRVBMQUNFTUVOVH17LF9CRUdJTixfRU5E
fQorI3VuZGVmIF9fQVBJX0RFUFJFQ0FURURfTVNHX0dFVF9NQUNSTworI2RlZmluZSBfX0FQSV9E
RVBSRUNBVEVEX01TR19HRVRfTUFDUk8oLi4uKSBfX05VTExfQVZBSUxBQklMSVRZCisKKy8vIFRh
a2UgY2FyZSBvZiBBUElfVU5BVkFJTEFCTEV7LF9CRUdJTixfRU5EfQorI3VuZGVmIF9fQVBJX1VO
QVZBSUxBQkxFX0dFVF9NQUNSTworI2RlZmluZSBfX0FQSV9VTkFWQUlMQUJMRV9HRVRfTUFDUk8o
Li4uKSBfX05VTExfQVZBSUxBQklMSVRZCisKKyNkZWZpbmUgX19OVUxMX0FWQUlMQUJJTElUWSgu
Li4pCisiIiIKKworU0RLU19UT19VUERBVEUgPSBbCisgICAgImlwaG9uZW9zIiwKKyAgICAiaXBo
b25lc2ltdWxhdG9yIiwKKyAgICAiYXBwbGV0dm9zIiwKKyAgICAiYXBwbGV0dnNpbXVsYXRvciIs
CisgICAgIndhdGNob3MiLAorICAgICJ3YXRjaHNpbXVsYXRvciIsCitdCisKK1BMSVNUX0JVRERZ
X1BBVEggPSBwYXRobGliLlBhdGgoIi91c3IvbGliZXhlYy9QbGlzdEJ1ZGR5IikKKworCitkZWYg
eGNvZGVfY2FuX2JlX3VwZGF0ZWRfYnlfdXNlcigpOgorICAgICIiIlJldHVybiB3aGV0aGVyIG9y
IG5vdCB0aGUgY3VycmVudCB1c2VyIGhhcyBSL1cgcGVybWlzc2lvbiB0byB0aGUgWGNvZGUKKyAg
ICBkaXJlY3RvcnkuIiIiCisgICAgcmV0dXJuIG9zLmFjY2Vzcyh4Y29kZV9kZXZlbG9wZXJfZGly
KCksIG9zLlJfT0sgfCBvcy5XX09LIHwgb3MuWF9PSywgZWZmZWN0aXZlX2lkcz1UcnVlKQorCisK
K2RlZiBydW5uaW5nX2FzX3Jvb3QoKToKKyAgICByZXR1cm4gb3MuZ2V0ZXVpZCgpID09IDAKKwor
CitkZWYgcnVuX2NvbW1hbmQoKmNvbW1hbmRfbGluZSwgKiprd2FyZ3MpOgorICAgICIiIlNpbXBs
ZSB3cmFwcGVyIGZvciBzdWJwcm9jZXNzLnJ1biB0aGF0IGludm9rZXMgdGhlIHNwZWNpZmllZCB0
b29sIHdpdGggYQorICAgIHNldCBvZiBwYXJhbWV0ZXJzIHdlIGxpa2UsIGFuZCB0aGF0IGFsbG93
cyB1cyB0byBzcGVjaWZ5IHRoZSB0b29sIGFuZCBpdHMKKyAgICBvcHRpb25zIHdpdGhvdXQgaGF2
aW5nIHRvIHJlbWVtYmVyIHRvIHB1dCB0aGVtIGluIHRoZWlyIG93biBhcnJheS4iIiIKKworICAg
IHJldHVybiBzdWJwcm9jZXNzLnJ1bihjb21tYW5kX2xpbmUsIGNhcHR1cmVfb3V0cHV0PVRydWUs
IGVuY29kaW5nPSJ1dGYtOCIsIGNoZWNrPVRydWUsICoqa3dhcmdzKQorCisKK2RlZiB4Y29kZV9k
ZXZlbG9wZXJfZGlyKCk6CisgICAgIiIiUmV0dXJuIHRoZSAiRGV2ZWxvcGVyIiBkaXJlY3Rvcnkg
Zm9yIHRoZSBjdXJyZW50bHktc2VsZWN0ZWQgWGNvZGUgKGUuZy4sCisgICAgL1hjb2RlLmFwcC9D
b250ZW50cy9EZXZlbG9wZXIpLiIiIgorCisgICAgcmVzdWx0ID0gcnVuX2NvbW1hbmQoInhjb2Rl
LXNlbGVjdCIsICItcCIpCisgICAgcmV0dXJuIHBhdGhsaWIuUGF0aChyZXN1bHQuc3Rkb3V0LnN0
cmlwKCkpCisKKworZGVmIHNka19kaXJlY3Rvcnkoc2RrKToKKyAgICAiIiJSZXR1cm4gdGhlIGRp
cmVjdG9yeSBmb3IgdGhlIGdpdmVuIFNESyAoZS5nLiwKKyAgICAvWGNvZGUuYXBwL0NvbnRlbnRz
L0RldmVsb3Blci9QbGF0Zm9ybXMvTWFjT1NYLnBsYXRmb3JtL0RldmVsb3Blci9TREtzL01hY09T
WDEwLjE1LnNkaykuIiIiCisKKyAgICByZXN1bHQgPSBydW5fY29tbWFuZCgieGNydW4iLCAiLS1z
ZGsiLCBzZGssICItLXNob3ctc2RrLXBhdGgiKQorICAgIHJldHVybiBwYXRobGliLlBhdGgocmVz
dWx0LnN0ZG91dC5zdHJpcCgpKQorCisKK2RlZiBnZXRfYW5kX2NoZWNrX3Nka19kaXJlY3Rvcmll
cyhzb3VyY2Vfc2RrLCBkZXN0X3Nkayk6CisgICAgc291cmNlX3Nka19wYXRoID0gc2RrX2RpcmVj
dG9yeShzb3VyY2Vfc2RrKQorICAgIGRlc3Rfc2RrX3BhdGggPSBzZGtfZGlyZWN0b3J5KGRlc3Rf
c2RrKQorCisgICAgaWYgbm90IHNvdXJjZV9zZGtfcGF0aDoKKyAgICAgICAgcmFpc2UgUnVudGlt
ZUVycm9yKGYiQ291bGQgbm90IGZpbmQgU0RLOiB7c291cmNlX3Nka30iKQorCisgICAgaWYgbm90
IGRlc3Rfc2RrX3BhdGg6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihmIkNvdWxkIG5vdCBm
aW5kIFNESzoge2Rlc3Rfc2RrfSIpCisKKyAgICByZXR1cm4gc291cmNlX3Nka19wYXRoLCBkZXN0
X3Nka19wYXRoCisKKworZGVmIGRvX2NvcHkoc291cmNlX3BhdGgsIGRlc3RfcGF0aCk6CisKKyAg
ICBkZWYgZW5zdXJlX3BhcmVudF9leGlzdHMocGF0aCk6CisgICAgICAgIG9zLm1ha2VkaXJzKHBh
dGgucGFyZW50LCBleGlzdF9vaz1UcnVlKQorCisgICAgZGVmIGNvcHlfZmlsZShzb3VyY2VfcGF0
aCwgZGVzdF9wYXRoKToKKyAgICAgICAgcHJpbnQoZiJDb3B5aW5nIGZpbGUiKQorICAgICAgICBw
cmludChmIkZyb206IHtzb3VyY2VfcGF0aH0iKQorICAgICAgICBwcmludChmIlRvOiAgIHtkZXN0
X3BhdGh9IikKKyAgICAgICAgaWYgZGVzdF9wYXRoLmV4aXN0cygpOgorICAgICAgICAgICAgZGVz
dF9wYXRoLnVubGluaygpCisgICAgICAgIGVuc3VyZV9wYXJlbnRfZXhpc3RzKGRlc3RfcGF0aCkK
KyAgICAgICAgc2h1dGlsLmNvcHkyKHNvdXJjZV9wYXRoLCBkZXN0X3BhdGgpCisKKyAgICBkZWYg
Y29weV9kaXJlY3Rvcnkoc291cmNlX3BhdGgsIGRlc3RfcGF0aCk6CisgICAgICAgIHByaW50KGYi
Q29weWluZyBkaXJlY3RvcnkiKQorICAgICAgICBwcmludChmIkZyb206IHtzb3VyY2VfcGF0aH0i
KQorICAgICAgICBwcmludChmIlRvOiAgIHtkZXN0X3BhdGh9IikKKyAgICAgICAgaWYgZGVzdF9w
YXRoLmV4aXN0cygpOgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkZXN0X3BhdGgpCisgICAg
ICAgIGVuc3VyZV9wYXJlbnRfZXhpc3RzKGRlc3RfcGF0aCkKKyAgICAgICAgc2h1dGlsLmNvcHl0
cmVlKHNvdXJjZV9wYXRoLCBkZXN0X3BhdGgpCisKKyAgICBpZiBzb3VyY2VfcGF0aC5pc19maWxl
KCk6CisgICAgICAgIGNvcHlfZmlsZShzb3VyY2VfcGF0aCwgZGVzdF9wYXRoKQorICAgICAgICBy
ZXR1cm4KKworICAgIGlmIHNvdXJjZV9wYXRoLmlzX2RpcigpOgorICAgICAgICBjb3B5X2RpcmVj
dG9yeShzb3VyY2VfcGF0aCwgZGVzdF9wYXRoKQorICAgICAgICByZXR1cm4KKworICAgIHJhaXNl
IFJ1bnRpbWVFcnJvcihmIntzb3VyY2VfcGF0aH0gZG9lcyBub3QgZXhpc3QiKQorCisKKyMgLnRi
ZCBmaWxlcyBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBsaW5rIGEgcHJvZHVjdCB0
byBhCisjIGxpYnJhcnkvZnJhbWV3b3JrLiBUaGlzIGluZm9ybWF0aW9uIGluY2x1ZGVzIHRoZSBh
cmNoaXRlY3R1cmUgdGhhdCB0aGUKKyMgbGlicmFyeSBpcyBidWlsdCBmb3IuIElmIHdlJ3JlIGNv
cHlpbmcgZnJvbSBhbiBTREsgdGhhdCBzdXBwb3J0cyBvbmUgc2V0IG9mCisjIGFyY2hpdGVjdHVy
ZXMgdG8gYW4gU0RLIHRoYXQgc3VwcG9ydHMgYW5vdGhlciBzZXQgb2YgYXJjaGl0ZWN0dXJlcywg
d2UgbmVlZAorIyB0byBhZGp1c3QgdGhhdCBpbmZvcm1hdGlvbiBpbiB0aGUgLnRiZCBmaWxlLgor
IworIyBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBiZSB0b28gcGFydGljdWxhciBhYm91dCB0
aGlzLiBXZSBvbmx5IG5lZWQgdG8KKyMgbGluazsgd2UgZG9uJ3QgbmVlZCB0byBydW4uIFRoaXMg
YWxsb3dzIHVzIHRvIHNpbXBseSBzcGVjaWZ5IHRoZSBmdWxsIHNldCBvZgorIyBhcmNoaXRlY3R1
cmVzIGZvciB3aGljaCBXZWJLaXQgaXMgYnVpbHQsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUg
YXNzb2NpYXRlZAorIyBsaWJyYXJ5L2ZyYW1ld29yayB3YXMgYWN0dWFsbHkgYnVpbHQgZm9yIGFs
bCB0aG9zZSBhcmNoaXRlY3R1cmVzLgorCitkZWYgcGF0Y2hfdGJkX2FyY2hpdGVjdHVyZShmcmFt
ZXdvcmtfcGF0aCk6CisgICAgZm9yIHRiZF9wYXRoIGluIGZyYW1ld29ya19wYXRoLmdsb2IoIiou
dGJkIik6CisgICAgICAgIHdpdGggb3Blbih0YmRfcGF0aCwgInIiKSBhcyBmOgorICAgICAgICAg
ICAgbGluZXMgPSBmLnJlYWRsaW5lcygpCisKKyAgICAgICAgbW9kaWZpZWRfbGluZXMgPSBbXQor
ICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgIGlmIHJlLm1hdGNoKCIuKmFy
Y2hzOiArXFsuKlxdIiwgbGluZSkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgbGluZSA9
IHJlLnN1YigiXFsuKlxdIiwgIlsgeDg2XzY0LCBhcm02NCwgYXJtNjRlLCBhcm02NF8zMiwgYXJt
djdrIF0iLCBsaW5lKQorICAgICAgICAgICAgbW9kaWZpZWRfbGluZXMuYXBwZW5kKGxpbmUpCisK
KyAgICAgICAgd2l0aCBvcGVuKHRiZF9wYXRoLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndy
aXRlbGluZXMobW9kaWZpZWRfbGluZXMpCisKKworIyBYY29kZSBpcyBkcml2ZW4gYnkgLnhjc3Bl
YyBmaWxlcy4gVGhlc2UgZGVzY3JpYmUgbWFueSBhc3BlY3RzIG9mIHRoZSBzeXN0ZW0sCisjIGlu
Y2x1ZGluZyB3aGF0IHRvIGJ1aWxkIGFuZCBob3cgdG8gYnVpbGQgaXQuIFRoZXNlIC54Y3NwZWMg
ZmlsZXMgY2FuIGJlCisjIGdsb2JhbCBvciB0aGV5IGNhbiBiZSBwbGF0Zm9ybS0gb3IgU0RLLXNw
ZWNpZmljLiBJbiB0aGUgY2FzZSBvZiBidWlsZGluZworIyBwcm9kdWN0cyBmb3IgdGhlIGVtYmVk
ZGVkIHN5c3RlbXMsIHRoZXJlIGlzIHNvbWUgaW5mb3JtYXRpb24gaW4gc29tZSBtYWNPUworIyAu
eGNzcGVjIGZpbGVzIHRoYXQgbmVlZCB0byBiZSB0cmFuc2ZlcnJlZCB0byB0aGUgZW1iZWRkZWQg
cGxhdGZvcm1zLiBUaGlzCisjIGZ1bmN0aW9uIGZpbmRzIHRoYXQgaW5mb3JtYXRpb24sIGV4dHJh
Y3RzIGl0IGZyb20gdGhlIG1hY09TIGZpbGVzLCBhbmQgY29waWVzCisjIGl0IHRvIHRoZSBlbWJl
ZGRlZCBmaWxlcy4KKworZGVmIHVwZGF0ZV94Y3NwZWNfZmlsZXMoKToKKworICAgIGRlZiBlbnN1
cmVfZXhpc3RzKHBhdGgpOgorICAgICAgICAiIiJSYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGdp
dmVuIGZpbGUgb3IgZGlyZWN0b3J5IGRvZXNuJ3QgZXhpc3QuIiIiCisKKyAgICAgICAgaWYgbm90
IHBhdGguZXhpc3RzKCk6CisgICAgICAgICAgICByYWlzZSBGaWxlTm90Rm91bmRFcnJvcihlcnJu
by5FTk9FTlQsIG9zLnN0cmVycm9yKGVycm5vLkVOT0VOVCksIHBhdGgpCisKKyAgICBkZWYgcmVh
ZF9zcGVjKHNwZWNfcGF0aCk6CisgICAgICAgICIiIlJlYWQgYSAueGNzcGVjIGZpbGUgYW5kIHJl
dHVybiBpdHMgY29udGVudHMgYXMgYW4gWE1MIERPTSBvYmplY3QuIiIiCisKKyAgICAgICAgcmVz
dWx0ID0gcnVuX2NvbW1hbmQoUExJU1RfQlVERFlfUEFUSCwgIi14IiwgIi1jIiwgIlByaW50Iiwg
c3BlY19wYXRoKQorICAgICAgICByZXR1cm4gRVQuZnJvbXN0cmluZyhyZXN1bHQuc3Rkb3V0LnN0
cmlwKCkpCisKKyAgICBkZWYgZmluZF9zcGVjX2VudHJ5X2luZGV4KHNwZWMsIGlkZW50aWZpZXIp
OgorICAgICAgICAiIiJHaXZlbiBhbiBYTUwgRE9NIG9iamVjdCByZXByZXNlbnRpbmcgYW4gLnhj
c3BlYyBmaWxlLCBsb29rIGZvciBhbgorICAgICAgICBlbnRyeSB0aGF0IGhhcyBhIGtleSBvZiAi
SWRlbnRpZmllciIgYW5kIGEgdmFsdWUgZXF1YWwgdG8gdGhlIGdpdmVuCisgICAgICAgIHZhbHVl
LiBJZiBmb3VuZCwgcmV0dXJuIGl0cyBpbmRleCBpbiB0aGUgYXJyYXkgb2Ygc3VjaCBlbnRyaWVz
LiIiIgorCisgICAgICAgIGZvciBpbmRleCwgc3BlY19lbnRyeSBpbiBlbnVtZXJhdGUoc3BlYy5m
aW5kYWxsKCIuL2FycmF5L2RpY3QiKSk6CisgICAgICAgICAgICBzcGVjX2VudHJ5X2l0ZXIgPSBp
dGVyKHNwZWNfZW50cnkpCisgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiB6aXAoc3BlY19l
bnRyeV9pdGVyLCBzcGVjX2VudHJ5X2l0ZXIpOgorICAgICAgICAgICAgICAgIGlmIGtleS50YWcg
PT0gImtleSIgYW5kIGtleS50ZXh0ID09ICJJZGVudGlmaWVyIiBhbmQgdmFsdWUudGFnID09ICJz
dHJpbmciIGFuZCB2YWx1ZS50ZXh0ID09IGlkZW50aWZpZXI6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBpbmRleAorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZm9yIHNwZWNfaW5mbyBp
biBYQ1NQRUNfSU5GTzoKKyAgICAgICAgaWRlbnRpZmllciA9IHNwZWNfaW5mb1siaWQiXQorICAg
ICAgICBzb3VyY2Vfc3BlY19wYXRoID0geGNvZGVfZGV2ZWxvcGVyX2RpcigpIC8gc3BlY19pbmZv
WyJzb3VyY2UiXQorICAgICAgICBkZXN0X3NwZWNfcGF0aCA9IHhjb2RlX2RldmVsb3Blcl9kaXIo
KSAvIHNwZWNfaW5mb1siZGVzdCJdCisKKyAgICAgICAgZW5zdXJlX2V4aXN0cyhzb3VyY2Vfc3Bl
Y19wYXRoKQorICAgICAgICBlbnN1cmVfZXhpc3RzKGRlc3Rfc3BlY19wYXRoKQorCisgICAgICAg
IHNvdXJjZV9zcGVjX2VudHJ5X2luZGV4ID0gZmluZF9zcGVjX2VudHJ5X2luZGV4KHJlYWRfc3Bl
Yyhzb3VyY2Vfc3BlY19wYXRoKSwgaWRlbnRpZmllcikKKyAgICAgICAgZGVzdF9zcGVjX2VudHJ5
X2luZGV4ID0gZmluZF9zcGVjX2VudHJ5X2luZGV4KHJlYWRfc3BlYyhkZXN0X3NwZWNfcGF0aCks
IGlkZW50aWZpZXIpCisKKyAgICAgICAgaWYgc291cmNlX3NwZWNfZW50cnlfaW5kZXggaXMgTm9u
ZToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihmIlVuYWJsZSB0byBmaW5kIHhjc3Bl
YyBlbnRyeSBmb3Ige2lkZW50aWZpZXJ9IGluIHtzb3VyY2Vfc3BlY19wYXRofSIpCisKKyAgICAg
ICAgaWYgZGVzdF9zcGVjX2VudHJ5X2luZGV4IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcHJp
bnQoZiJ4Y3NwZWMgZW50cnkgZm9yIHtpZGVudGlmaWVyfSBhbHJlYWR5IGV4aXN0cyBpbiB7ZGVz
dF9zcGVjX3BhdGh9LCBza2lwcGluZyIpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBy
ZXN1bHQgPSBydW5fY29tbWFuZChQTElTVF9CVUREWV9QQVRILCAiLXgiLCAiLWMiLCBmIlByaW50
IHtzb3VyY2Vfc3BlY19lbnRyeV9pbmRleH0iLCBzb3VyY2Vfc3BlY19wYXRoKQorICAgICAgICBz
cGVjX2FzX3htbF9zbmlwcGV0ID0gcmVzdWx0LnN0ZG91dC5zdHJpcCgpCisKKyAgICAgICAgd2l0
aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUobW9kZT0idyIsIGVuY29kaW5nPSJ1dGYtOCIp
IGFzIHRlbXA6CisgICAgICAgICAgICB0ZW1wLndyaXRlKHNwZWNfYXNfeG1sX3NuaXBwZXQpCisg
ICAgICAgICAgICB0ZW1wLmZsdXNoKCkgIyBJdCdzIGFtYXppbmcgaG93IGltcG9ydGFudCB0aGlz
IGxpbmUgaXMuCisgICAgICAgICAgICBpZiBub3QgZGVzdF9zcGVjX3BhdGguZXhpc3RzKCk6Cisg
ICAgICAgICAgICAgICAgcHJpbnQoZiJDcmVhdGluZzoge2Rlc3Rfc3BlY19wYXRofSIpCisgICAg
ICAgICAgICAgICAgcnVuX2NvbW1hbmQoUExJU1RfQlVERFlfUEFUSCwgIi1jIiwgImNsZWFyIGFy
cmF5IiwgZGVzdF9zcGVjX3BhdGgpCisgICAgICAgICAgICBwcmludChmIkNvcHlpbmc6ICB7aWRl
bnRpZmllcn0iKQorICAgICAgICAgICAgcHJpbnQoZiJGcm9tOiAgICAge3NvdXJjZV9zcGVjX3Bh
dGh9IikKKyAgICAgICAgICAgIHByaW50KGYiVG86ICAgICAgIHtkZXN0X3NwZWNfcGF0aH0iKQor
ICAgICAgICAgICAgcnVuX2NvbW1hbmQoUExJU1RfQlVERFlfUEFUSCwgIi1jIiwgImFkZCAwIGRp
Y3QiLCBkZXN0X3NwZWNfcGF0aCkKKyAgICAgICAgICAgIHJ1bl9jb21tYW5kKFBMSVNUX0JVRERZ
X1BBVEgsICItYyIsIGYibWVyZ2Uge3RlbXAubmFtZX0gMCIsIGRlc3Rfc3BlY19wYXRoKQorCisK
KyMgV2ViS2l0IG5lZWRzIHNvbWUgZmlsZXMgZnJvbSB0aGUgbWFjT1MgU0RLIGluIG9yZGVyIHRv
IGJ1aWxkIG9uIHRoZSBlbWJlZGRlZAorIyBwbGF0Zm9ybXMuIENvcHkgdGhvc2UgaGVhZGVycyBm
cm9tIHRoZSBtYWNPUyBTREsgdG8gdGhlIG90aGVyIFNES3MuIE5vdGUgdGhhdAorIyB0aGVyZSdz
IG5vIGd1YXJhbnRlZSB0aGF0IHRoZSByZXN1bHRpbmcgcHJvZHVjdCBjYW4gcnVuIC0tIHdlIGp1
c3Qgd2FudCB0bworIyBidWlsZC4KKworZGVmIGNvcHlfbWlzc2luZ19oZWFkZXJzKHNvdXJjZV9z
ZGssIGRlc3Rfc2RrKToKKyAgICBpZiBzb3VyY2Vfc2RrID09IGRlc3Rfc2RrOgorICAgICAgICBy
ZXR1cm4KKyAgICBzb3VyY2Vfc2RrX3BhdGgsIGRlc3Rfc2RrX3BhdGggPSBnZXRfYW5kX2NoZWNr
X3Nka19kaXJlY3Rvcmllcyhzb3VyY2Vfc2RrLCBkZXN0X3NkaykKKyAgICBmb3IgbWlzc2luZ19o
ZWFkZXIgaW4gTUlTU0lOR19IRUFERVJTOgorICAgICAgICBkb19jb3B5KHNvdXJjZV9zZGtfcGF0
aCAvIG1pc3NpbmdfaGVhZGVyLCBkZXN0X3Nka19wYXRoIC8gbWlzc2luZ19oZWFkZXIpCisKKwor
ZGVmIGNvcHlfbWlzc2luZ19mcmFtZXdvcmtzKHNvdXJjZV9zZGssIGRlc3Rfc2RrKToKKyAgICBp
ZiBzb3VyY2Vfc2RrID09IGRlc3Rfc2RrOgorICAgICAgICByZXR1cm4KKyAgICBzb3VyY2Vfc2Rr
X3BhdGgsIGRlc3Rfc2RrX3BhdGggPSBnZXRfYW5kX2NoZWNrX3Nka19kaXJlY3Rvcmllcyhzb3Vy
Y2Vfc2RrLCBkZXN0X3NkaykKKyAgICBzb3VyY2VfZnJhbWV3b3Jrc19wYXRoID0gc291cmNlX3Nk
a19wYXRoIC8gIlN5c3RlbSIgLyAiTGlicmFyeSIgLyAiRnJhbWV3b3JrcyIKKyAgICBkZXN0X2Zy
YW1ld29ya3NfcGF0aCA9IGRlc3Rfc2RrX3BhdGggLyAiU3lzdGVtIiAvICJMaWJyYXJ5IiAvICJG
cmFtZXdvcmtzIgorICAgIGZvciBtaXNzaW5nX2ZyYW1ld29yaywgZm9yY2UgaW4gTUlTU0lOR19G
UkFNRVdPUktTOgorICAgICAgICBzb3VyY2VfZnJhbWV3b3JrX3BhdGggPSBzb3VyY2VfZnJhbWV3
b3Jrc19wYXRoIC8gbWlzc2luZ19mcmFtZXdvcmsKKyAgICAgICAgZGVzdF9mcmFtZXdvcmtfcGF0
aCA9IGRlc3RfZnJhbWV3b3Jrc19wYXRoIC8gbWlzc2luZ19mcmFtZXdvcmsKKyAgICAgICAgaWYg
Zm9yY2Ugb3Igbm90IGRlc3RfZnJhbWV3b3JrX3BhdGguZXhpc3RzKCk6CisgICAgICAgICAgICBk
b19jb3B5KHNvdXJjZV9mcmFtZXdvcmtfcGF0aCwgZGVzdF9mcmFtZXdvcmtfcGF0aCkKKyAgICAg
ICAgICAgIHBhdGNoX3RiZF9hcmNoaXRlY3R1cmUoZGVzdF9mcmFtZXdvcmtfcGF0aCkKKworCisj
IFNvbWUgZnVuY3Rpb25zIHRoYXQgV2ViS2l0IG5lZWRzIHRvIGNhbGwgYXJlIG1hcmtlZCBhcyAi
dW5hdmFpbGFibGUiIG9uIHRoZQorIyBlbWJlZGRlZCBwbGF0Zm9ybXMuIENyZWF0ZSBhIHN0dWIg
aGVhZGVyIHRoYXQgd2lsbCBudWxsaWZ5IHRoZSBlZmZlY3Qgb2YgdGhlCisjIGFubm90YXRpb25z
IG9uIHRob3NlIGZ1bmN0aW9ucy4gTm90ZSB0aGF0IHRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQg
dGhlCisjIHJlc3VsdGluZyBwcm9kdWN0IGNhbiBydW4gLS0gd2UganVzdCB3YW50IHRvIGJ1aWxk
LgorCitkZWYgY3JlYXRlX2F2YWlsYWJpbGl0eV9oZWFkZXIoc2RrKToKKyAgICBzZGtfcGF0aCA9
IHNka19kaXJlY3Rvcnkoc2RrKQorICAgIGF2YWlsYWJpbGl0eV9oZWFkZXJfcGF0aCA9IHNka19w
YXRoIC8gQVZBSUxBQklMSVRZX0ZJTEUKKyAgICBwcmludChmIkNyZWF0aW5nL3VwZGF0aW5nIHth
dmFpbGFiaWxpdHlfaGVhZGVyX3BhdGh9IikKKyAgICBvcy5tYWtlZGlycyhhdmFpbGFiaWxpdHlf
aGVhZGVyX3BhdGgucGFyZW50LCBleGlzdF9vaz1UcnVlKQorICAgIHdpdGggb3BlbihhdmFpbGFi
aWxpdHlfaGVhZGVyX3BhdGgsICJ3IikgYXMgZjoKKyAgICAgICAgZi53cml0ZShBVkFJTEFCSUxU
WV9URVhUKQorCisKK2RlZiBtYWluKCk6CisgICAgaWYgbm90IHJ1bm5pbmdfYXNfcm9vdCgpIGFu
ZCBub3QgeGNvZGVfY2FuX2JlX3VwZGF0ZWRfYnlfdXNlcigpOgorICAgICAgICByYWlzZSBSdW50
aW1lRXJyb3IoZiJ7X19maWxlX199IG11c3QgYmUgcnVuIGFzIHJvb3QiKQorCisgICAgdXBkYXRl
X3hjc3BlY19maWxlcygpCisKKyAgICBmb3Igc2RrIGluIFNES1NfVE9fVVBEQVRFOgorICAgICAg
ICBjb3B5X21pc3NpbmdfaGVhZGVycygibWFjb3N4Iiwgc2RrKQorICAgICAgICBjb3B5X21pc3Np
bmdfZnJhbWV3b3JrcygiaXBob25lb3MiLCBzZGspCisgICAgICAgIGNyZWF0ZV9hdmFpbGFiaWxp
dHlfaGVhZGVyKHNkaykKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRyeToK
KyAgICAgICAgbWFpbigpCisgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9y
IGFzIGU6CisgICAgICAgICMgQ2F0Y2ggdGhpcyBlcnJvciBzbyB0aGF0IHdlIGNhbiBwcmludCB0
aGUgc3Rkb3V0IGVycm9yIG1lc3NhZ2UgYW5kCisgICAgICAgICMgc2VlIHdoYXQgdGhlIGNhbGxl
ZCB0b29sIGlzIHdoaW5naW5nIGFib3V0LgorICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkK
KyAgICAgICAgcHJpbnQoZiJ7ZS5zdGRlcnJ9IikKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xz
L1NjcmlwdHMvY29uZmlndXJlLXhjb2RlLWZvci1lbWJlZGRlZC1kZXZlbG9wbWVudApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvY29uZmlndXJlLXhjb2RlLWZv
ci1pb3MtZGV2ZWxvcG1lbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9jb25maWd1cmUt
eGNvZGUtZm9yLWlvcy1kZXZlbG9wbWVudAkocmV2aXNpb24gMjU1NDgzKQorKysgVG9vbHMvU2Ny
aXB0cy9jb25maWd1cmUteGNvZGUtZm9yLWlvcy1kZXZlbG9wbWVudAkobm9uZXhpc3RlbnQpCkBA
IC0xLDI4NiArMCwwIEBACi0jIS91c3IvYmluL2VudiBwZXJsCi0KLSMgQ29weXJpZ2h0IChDKSAy
MDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0j
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotIyBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUwotIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIyBDaGVja3MgaWYgWGNvZGUgc3VwcG9ydHMg
YnVpbGRpbmcgYSBjb21tYW5kIGxpbmUgdG9vbCBmb3IgdGhlIGlPUyBTaW11bGF0b3IuCi0jIElm
IG5vdCwgdGhlbiB1cGRhdGVzL2NyZWF0ZXMgeGNzcGVjIGZpbGVzIGluIHRoZSBpT1MgU0RLIGZv
ciBhIGNvbW1hbmQgbGluZQotIyB0b29sIHByb2R1Y3QtIGFuZCBwYWNrYWdlLSB0eXBlIHVzaW5n
IHRoZSBkZWZpbml0aW9ucyBpbiB0aGUgT1MgWCBTREsgZm9yIHRoZQotIyBzYW1lIHR5cGVzLgot
Ci11c2Ugc3RyaWN0OwotdXNlIHdhcm5pbmdzOwotCi11c2UgQ3dkIHF3KHJlYWxwYXRoKTsKLXVz
ZSBFbmdsaXNoOwotdXNlIEZpbGU6OkJhc2VuYW1lOwotdXNlIEZpbGU6OkZpbmQ7Ci11c2UgRmls
ZTo6U3BlYzsKLXVzZSBGaWxlOjpUZW1wIHF3KHRlbXBmaWxlKTsKLXVzZSBGaW5kQmluOwotdXNl
IGxpYiAkRmluZEJpbjo6QmluOwotdXNlIHdlYmtpdGRpcnM7Ci0KLXN1YiBjb3B5TWlzc2luZ0hl
YWRlcnNGcm9tU0RLVG9TREtJZk5lZWRlZCgkJCk7Ci1zdWIgY29weU1pc3NpbmdYU0xUSGVhZGVy
c1RvU0RLSWZOZWVkZWQoJCk7Ci1zdWIgY3JlYXRlTGVnYWN5WGNvZGVTcGVjaWZpY2F0aW9uRmls
ZXNGb3JTREtJZk5lZWRlZCgkKTsKLXN1YiBtZXJnZVhjb2RlU3BlY2lmaWNhdGlvbldpdGhTcGVj
aWZpY2F0aW9uQW5kSWQoJCQkKTsKLXN1YiByZWFkWGNvZGVTcGVjaWZpY2F0aW9uQnlJZCgkJCk7
Ci1zdWIgdXBkYXRlWGNvZGU3U3BlY2lmaWNhdGlvbkZpbGUoJCk7Ci1zdWIgdXBkYXRlWGNvZGVT
cGVjaWZpY2F0aW9uRmlsZXNGb3JTREtJZk5lZWRlZCgkKTsKLXN1YiB4Y29kZVNES1NwZWNpZmlj
YXRpb25zUGF0aCgkKTsKLQotdXNlIGNvbnN0YW50IENPTU1BTkRfTElORV9QQUNLQUdFX1RZUEUg
PT4gImNvbS5hcHBsZS5wYWNrYWdlLXR5cGUubWFjaC1vLWV4ZWN1dGFibGUiOwotdXNlIGNvbnN0
YW50IENPTU1BTkRfTElORV9QUk9EVUNUX1RZUEUgPT4gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUu
dG9vbCI7Ci11c2UgY29uc3RhbnQgU0RLX1RPX1hDU1BFQ19OQU1FX01BUCA9PiAreyAiaXBob25l
b3MiID0+ICJpUGhvbmVPUyIsICJpcGhvbmVzaW11bGF0b3IiID0+ICJpUGhvbmUgU2ltdWxhdG9y
ICIgfTsKLXVzZSBjb25zdGFudCBTREtfVE9fUExVR0lOX1hDU1BFQ19OQU1FX01BUCA9PiAreyAi
aXBob25lb3MiID0+ICJFbWJlZGRlZC1EZXZpY2UueGNzcGVjIiwgImlwaG9uZXNpbXVsYXRvciIg
PT4gIkVtYmVkZGVkLVNpbXVsYXRvci54Y3NwZWMiIH07Ci0KLSMgRklYTUU6IFdlIHNob3VsZCBv
bmx5IHJlcXVpcmUgcnVubmluZyBhcyByb290IGlmIG5lZWRlZC4gSXQncyBub3QgbmVjZXNzYXJ5
IHRvIHJ1biBhcyByb290IGlmCi0jICAgICAgICBYY29kZSB3YXMgaW5zdGFsbGVkIGJ5IHRoZSB1
c2VyLCBzYXkgdmlhIGEgZG93bmxvYWQgZnJvbSA8aHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20+
LgotaWYgKCRFRkZFQ1RJVkVfVVNFUl9JRCkgewotICAgIHByaW50IFNUREVSUiBiYXNlbmFtZSgk
MCkgLiAiIG11c3QgYmUgcnVuIGFzIHJvb3QuXG4iOwotICAgIGV4aXQgMTsKLX0KLQotZm9yIG15
ICRzZGsgKHF3KGlwaG9uZW9zIGlwaG9uZXNpbXVsYXRvcikpIHsKLSAgICB1cGRhdGVYY29kZVNw
ZWNpZmljYXRpb25GaWxlc0ZvclNES0lmTmVlZGVkKCRzZGspOwotICAgIGNvcHlNaXNzaW5nWFNM
VEhlYWRlcnNUb1NES0lmTmVlZGVkKCRzZGspOwotfQotCi1jb3B5TWlzc2luZ0hlYWRlcnNGcm9t
U0RLVG9TREtJZk5lZWRlZCgibWFjb3N4IiwgImlwaG9uZXNpbXVsYXRvciIpOwotY29weU1pc3Np
bmdIZWFkZXJzRnJvbVNES1RvU0RLSWZOZWVkZWQoImlwaG9uZXNpbXVsYXRvciIsICJpcGhvbmVv
cyIpOwotCi1leGl0IDA7Ci0KLXN1YiBjb3B5TWlzc2luZ0hlYWRlcnNGcm9tU0RLVG9TREtJZk5l
ZWRlZCgkJCkKLXsKLSAgICBteSBAbWlzc2luZ0hlYWRlcnMgPSBxdygKLSAgICAgICAgL3Vzci9p
bmNsdWRlL2NydF9leHRlcm5zLmgKLSAgICAgICAgL3Vzci9pbmNsdWRlL2xhdW5jaC5oCi0gICAg
ICAgIC91c3IvaW5jbHVkZS9NYWNFcnJvcnMuaAotICAgICAgICAvdXNyL2luY2x1ZGUvbWFjaC9t
YWNoX3R5cGVzLmRlZnMKLSAgICAgICAgL3Vzci9pbmNsdWRlL21hY2gvbWFjaGluZS9tYWNoaW5l
X3R5cGVzLmRlZnMKLSAgICAgICAgL3Vzci9pbmNsdWRlL21hY2gvc3RkX3R5cGVzLmRlZnMKLSAg
ICAgICAgL3Vzci9pbmNsdWRlL29iamMvb2JqYy1jbGFzcy5oCi0gICAgICAgIC91c3IvaW5jbHVk
ZS9vYmpjL29iamMtcnVudGltZS5oCi0gICAgICAgIC91c3IvaW5jbHVkZS9vYmpjL1Byb3RvY29s
LmgKLSAgICAgICAgL3Vzci9pbmNsdWRlL3JlYWRsaW5lL2hpc3RvcnkuaAotICAgICAgICAvdXNy
L2luY2x1ZGUvcmVhZGxpbmUvcmVhZGxpbmUuaAotICAgICAgICAvdXNyL2luY2x1ZGUvc3FsaXRl
M19wcml2YXRlLmgKLSAgICApOwotCi0gICAgbXkgKCRzb3VyY2VTREssICRkZXN0aW5hdGlvblNE
SykgPSBAXzsKLSAgICBteSAkc291cmNlRGlyZWN0b3J5ID0gc2RrRGlyZWN0b3J5KCRzb3VyY2VT
REspOwotICAgIG15ICRkZXN0aW5hdGlvbkRpcmVjdG9yeSA9IHNka0RpcmVjdG9yeSgkZGVzdGlu
YXRpb25TREspOwotCi0gICAgZm9yIG15ICRoZWFkZXIgKEBtaXNzaW5nSGVhZGVycykgewotICAg
ICAgICBteSAkc291cmNlUGF0aCA9IEZpbGU6OlNwZWMtPmNhbm9ucGF0aChGaWxlOjpTcGVjLT5j
YXRmaWxlKCRzb3VyY2VEaXJlY3RvcnksICRoZWFkZXIpKTsKLSAgICAgICAgbXkgJGRlc3RpbmF0
aW9uUGF0aCA9IEZpbGU6OlNwZWMtPmNhbm9ucGF0aChGaWxlOjpTcGVjLT5jYXRmaWxlKCRkZXN0
aW5hdGlvbkRpcmVjdG9yeSwgJGhlYWRlcikpOwotICAgICAgICBuZXh0IGlmICgtZiAkZGVzdGlu
YXRpb25QYXRoKTsKLSAgICAgICAgbmV4dCBpZiAoIS1mICRzb3VyY2VQYXRoKTsKLQotICAgICAg
ICBzeXN0ZW0oIi91c3IvYmluL2RpdHRvIiwgJHNvdXJjZVBhdGgsICRkZXN0aW5hdGlvblBhdGgp
OwotICAgICAgICBkaWUgIkNvdWxkIG5vdCBjb3B5ICRzb3VyY2VQYXRoIHRvICRkZXN0aW5hdGlv
blBhdGg6ICQhIiBpZiBleGl0U3RhdHVzKCQ/KTsKLSAgICAgICAgcHJpbnQgIlN1Y2Nlc3NmdWxs
eSBjb3BpZWQgJHNvdXJjZVBhdGggdG8gJGRlc3RpbmF0aW9uUGF0aC5cbiI7Ci0gICAgfQotfQot
Ci1zdWIgY29weU1pc3NpbmdYU0xUSGVhZGVyc1RvU0RLSWZOZWVkZWQoJCkKLXsKLSAgICBteSAo
JHNka05hbWUpID0gQF87Ci0gICAgbXkgJHNka1hTTFRIZWFkZXJEaXJlY3RvcnkgPSBGaWxlOjpT
cGVjLT5jYW5vbnBhdGgoRmlsZTo6U3BlYy0+Y2F0ZGlyKHNka0RpcmVjdG9yeSgkc2RrTmFtZSks
ICJ1c3IiLCAiaW5jbHVkZSIsICJsaWJ4c2x0IikpOwotICAgIHJldHVybiBpZiAtZCAkc2RrWFNM
VEhlYWRlckRpcmVjdG9yeTsKLQotICAgIG15ICRtYWNvc3hYU0xUSGVhZGVyRGlyZWN0b3J5ID0g
RmlsZTo6U3BlYy0+Y2Fub25wYXRoKEZpbGU6OlNwZWMtPmNhdGRpcihzZGtEaXJlY3RvcnkoIm1h
Y29zeCIpLCAidXNyIiwgImluY2x1ZGUiLCAibGlieHNsdCIpKTsKLSAgICBzeXN0ZW0oIi91c3Iv
YmluL2RpdHRvIiwgJG1hY29zeFhTTFRIZWFkZXJEaXJlY3RvcnksICRzZGtYU0xUSGVhZGVyRGly
ZWN0b3J5KTsKLSAgICBkaWUgIkNvdWxkIG5vdCBjb3B5ICRtYWNvc3hYU0xUSGVhZGVyRGlyZWN0
b3J5IHRvICRzZGtYU0xUSGVhZGVyRGlyZWN0b3J5OiAkISIgaWYgZXhpdFN0YXR1cygkPyk7Ci0g
ICAgcHJpbnQgIlN1Y2Nlc3NmdWxseSBjb3BpZWQgJG1hY29zeFhTTFRIZWFkZXJEaXJlY3Rvcnkg
dG8gJHNka1hTTFRIZWFkZXJEaXJlY3RvcnkuXG4iOwotfQotCi1zdWIgdXBkYXRlWGNvZGVTcGVj
aWZpY2F0aW9uRmlsZXNGb3JTREtJZk5lZWRlZCgkKQotewotICAgIG15ICgkc2RrTmFtZSkgPSBA
XzsKLSAgICBteSAkeGNvZGU3U3BlY2lmaWNhdGlvbkZpbGUgPSByZWFscGF0aChGaWxlOjpTcGVj
LT5jYXRmaWxlKHNka1BsYXRmb3JtRGlyZWN0b3J5KCRzZGtOYW1lKSwgIi4uIiwgIi4uIiwgIi4u
IiwgIlBsdWdJbnMiLCAiSURFaU9TU3VwcG9ydENvcmUuaWRlcGx1Z2luIiwgIkNvbnRlbnRzIiwg
IlJlc291cmNlcyIsIFNES19UT19QTFVHSU5fWENTUEVDX05BTUVfTUFQLT57JHNka05hbWV9KSk7
Ci0gICAgaWYgKC1mICR4Y29kZTdTcGVjaWZpY2F0aW9uRmlsZSkgewotICAgICAgICB1cGRhdGVY
Y29kZTdTcGVjaWZpY2F0aW9uRmlsZSgkeGNvZGU3U3BlY2lmaWNhdGlvbkZpbGUpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGNyZWF0ZUxlZ2FjeVhjb2RlU3BlY2lmaWNhdGlvbkZpbGVzRm9yU0RL
SWZOZWVkZWQoJHNka05hbWUpOwotICAgIH0KLX0KLQotc3ViIHVwZGF0ZVhjb2RlN1NwZWNpZmlj
YXRpb25GaWxlKCQpCi17Ci0gICAgbXkgKCRzcGVjaWZpY2F0aW9uRmlsZSkgPSBAXzsKLQotICAg
IG15ICRoYXNQYWNrYWdlVHlwZUZvckNvbW1hbmRMaW5lVG9vbCA9ICEhcmVhZFhjb2RlU3BlY2lm
aWNhdGlvbkJ5SWQoJHNwZWNpZmljYXRpb25GaWxlLCBDT01NQU5EX0xJTkVfUEFDS0FHRV9UWVBF
KTsKLSAgICBteSAkaGFzUHJvZHVjdFR5cGVGb3JDb21tYW5kTGluZVRvb2wgPSAhIXJlYWRYY29k
ZVNwZWNpZmljYXRpb25CeUlkKCRzcGVjaWZpY2F0aW9uRmlsZSwgQ09NTUFORF9MSU5FX1BST0RV
Q1RfVFlQRSk7Ci0gICAgaWYgKCRoYXNQYWNrYWdlVHlwZUZvckNvbW1hbmRMaW5lVG9vbCAmJiAk
aGFzUHJvZHVjdFR5cGVGb3JDb21tYW5kTGluZVRvb2wpIHsKLSAgICAgICAgcmV0dXJuOyAjIFhj
b2RlIGtub3dzIGhvdyB0byBidWlsZCBhIGNvbW1hbmQgbGluZSB0b29sIGZvciAkc2RrTmFtZS4K
LSAgICB9Ci0KLSAgICBteSAkbWFjb3N4U0RLU3BlY2lmaWNhdGlvbnNQYXRoID0geGNvZGVTREtT
cGVjaWZpY2F0aW9uc1BhdGgoIm1hY29zeCIpOwotICAgIGlmICghJGhhc1BhY2thZ2VUeXBlRm9y
Q29tbWFuZExpbmVUb29sKSB7Ci0gICAgICAgIG15ICRwYWNrYWdlVHlwZXNGb3JNYWNPU1hQYXRo
ID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkbWFjb3N4U0RLU3BlY2lmaWNhdGlvbnNQYXRoLCAiTWFj
T1NYIFBhY2thZ2UgVHlwZXMueGNzcGVjIik7Ci0gICAgICAgIG1lcmdlWGNvZGVTcGVjaWZpY2F0
aW9uV2l0aFNwZWNpZmljYXRpb25BbmRJZCgkc3BlY2lmaWNhdGlvbkZpbGUsICRwYWNrYWdlVHlw
ZXNGb3JNYWNPU1hQYXRoLCBDT01NQU5EX0xJTkVfUEFDS0FHRV9UWVBFKTsKLSAgICB9Ci0KLSAg
ICBpZiAoISRoYXNQcm9kdWN0VHlwZUZvckNvbW1hbmRMaW5lVG9vbCkgewotICAgICAgICBteSAk
cHJvZHVjdFR5cGVzRm9yTWFjT1NYUGF0aCA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJG1hY29zeFNE
S1NwZWNpZmljYXRpb25zUGF0aCwgIk1hY09TWCBQcm9kdWN0IFR5cGVzLnhjc3BlYyIpOwotICAg
ICAgICBtZXJnZVhjb2RlU3BlY2lmaWNhdGlvbldpdGhTcGVjaWZpY2F0aW9uQW5kSWQoJHNwZWNp
ZmljYXRpb25GaWxlLCAkcHJvZHVjdFR5cGVzRm9yTWFjT1NYUGF0aCwgQ09NTUFORF9MSU5FX1BS
T0RVQ1RfVFlQRSk7Ci0gICAgfQotICAgIHByaW50ICJTdWNjZXNzZnVsbHkgdXBkYXRlZCAnJHNw
ZWNpZmljYXRpb25GaWxlJy5cbiI7Ci19Ci0KLXN1YiBjcmVhdGVMZWdhY3lYY29kZVNwZWNpZmlj
YXRpb25GaWxlc0ZvclNES0lmTmVlZGVkKCQpCi17Ci0gICAgbXkgKCRzZGspID0gQF87Ci0gICAg
bXkgJHNka1NwZWNpZmljYXRpb25zUGF0aCA9IHhjb2RlU0RLU3BlY2lmaWNhdGlvbnNQYXRoKCRz
ZGspOwotCi0gICAgbG9jYWwgQDo6eGNvZGVTcGVjaWZpY2F0aW9uRmlsZXM7Ci0gICAgc3ViIHdh
bnRlZAotICAgIHsKLSAgICAgICAgbXkgJGZpbGUgPSAkXzsKLQotICAgICAgICAjIElnbm9yZSBo
aWRkZW4gZmlsZXMvZGlyZWN0b3JpZXMuCi0gICAgICAgIGlmICgkZmlsZSA9fiAvXlwuLi8pIHsK
LSAgICAgICAgICAgICRGaWxlOjpGaW5kOjpwcnVuZSA9IDE7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIS1mICRmaWxlIHx8ICRmaWxlICF+IC9cLnhjc3Bl
YyQvKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBwdXNoIEA6
Onhjb2RlU3BlY2lmaWNhdGlvbkZpbGVzLCAkRmlsZTo6RmluZDo6bmFtZTsKLSAgICB9Ci0KLSAg
ICBmaW5kKFwmd2FudGVkLCAkc2RrU3BlY2lmaWNhdGlvbnNQYXRoKTsKLQotICAgIG15ICRoYXNQ
YWNrYWdlVHlwZUZvckNvbW1hbmRMaW5lVG9vbDsKLSAgICBteSAkaGFzUHJvZHVjdFR5cGVGb3JD
b21tYW5kTGluZVRvb2w7Ci0gICAgZm9yZWFjaCBteSAkc3BlY2lmaWNhdGlvbkZpbGUgKEA6Onhj
b2RlU3BlY2lmaWNhdGlvbkZpbGVzKSB7Ci0gICAgICAgIGxhc3QgaWYgJGhhc1BhY2thZ2VUeXBl
Rm9yQ29tbWFuZExpbmVUb29sICYmICRoYXNQcm9kdWN0VHlwZUZvckNvbW1hbmRMaW5lVG9vbDsK
LSAgICAgICAgaWYgKCEkaGFzUGFja2FnZVR5cGVGb3JDb21tYW5kTGluZVRvb2wgJiYgcmVhZFhj
b2RlU3BlY2lmaWNhdGlvbkJ5SWQoJHNwZWNpZmljYXRpb25GaWxlLCBDT01NQU5EX0xJTkVfUEFD
S0FHRV9UWVBFKSkgewotICAgICAgICAgICAgJGhhc1BhY2thZ2VUeXBlRm9yQ29tbWFuZExpbmVU
b29sID0gMTsKLSAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCEkaGFz
UHJvZHVjdFR5cGVGb3JDb21tYW5kTGluZVRvb2wgJiYgcmVhZFhjb2RlU3BlY2lmaWNhdGlvbkJ5
SWQoJHNwZWNpZmljYXRpb25GaWxlLCBDT01NQU5EX0xJTkVfUFJPRFVDVF9UWVBFKSkgewotICAg
ICAgICAgICAgJGhhc1Byb2R1Y3RUeXBlRm9yQ29tbWFuZExpbmVUb29sID0gMTsKLSAgICAgICAg
ICAgIG5leHQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoJGhhc1BhY2thZ2VUeXBlRm9y
Q29tbWFuZExpbmVUb29sICYmICRoYXNQcm9kdWN0VHlwZUZvckNvbW1hbmRMaW5lVG9vbCkgewot
ICAgICAgICByZXR1cm47ICMgWGNvZGUga25vd3MgaG93IHRvIGJ1aWxkIGEgY29tbWFuZCBsaW5l
IHRvb2wgZm9yICRzZGsuCi0gICAgfQotCi0gICAgbXkgJGZpbGVOYW1lUHJlZml4ID0gU0RLX1RP
X1hDU1BFQ19OQU1FX01BUC0+eyRzZGt9OwotCi0gICAgbXkgJG1hY29zeFNES1NwZWNpZmljYXRp
b25zUGF0aCA9IHhjb2RlU0RLU3BlY2lmaWNhdGlvbnNQYXRoKCJtYWNvc3giKTsKLSAgICBpZiAo
ISRoYXNQYWNrYWdlVHlwZUZvckNvbW1hbmRMaW5lVG9vbCkgewotICAgICAgICBteSAkcGFja2Fn
ZVR5cGVzRm9yTWFjT1NYUGF0aCA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJG1hY29zeFNES1NwZWNp
ZmljYXRpb25zUGF0aCwgIk1hY09TWCBQYWNrYWdlIFR5cGVzLnhjc3BlYyIpOwotICAgICAgICBt
eSAkcGFja2FnZVR5cGVzRm9yV2ViS2l0RGV2ZWxvcG1lbnRQYXRoID0gRmlsZTo6U3BlYy0+Y2F0
ZmlsZSgkc2RrU3BlY2lmaWNhdGlvbnNQYXRoLCAiJHtmaWxlTmFtZVByZWZpeH1QYWNrYWdlVHlw
ZXMgRm9yIFdlYktpdCBEZXZlbG9wbWVudC54Y3NwZWMiKTsKLSAgICAgICAgbWVyZ2VYY29kZVNw
ZWNpZmljYXRpb25XaXRoU3BlY2lmaWNhdGlvbkFuZElkKCRwYWNrYWdlVHlwZXNGb3JXZWJLaXRE
ZXZlbG9wbWVudFBhdGgsICRwYWNrYWdlVHlwZXNGb3JNYWNPU1hQYXRoLCBDT01NQU5EX0xJTkVf
UEFDS0FHRV9UWVBFKTsKLSAgICAgICAgcHJpbnQgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkICckcGFj
a2FnZVR5cGVzRm9yV2ViS2l0RGV2ZWxvcG1lbnRQYXRoJy5cbiI7Ci0gICAgfQotCi0gICAgaWYg
KCEkaGFzUHJvZHVjdFR5cGVGb3JDb21tYW5kTGluZVRvb2wpIHsKLSAgICAgICAgbXkgJHByb2R1
Y3RUeXBlc0Zvck1hY09TWFBhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRtYWNvc3hTREtTcGVj
aWZpY2F0aW9uc1BhdGgsICJNYWNPU1ggUHJvZHVjdCBUeXBlcy54Y3NwZWMiKTsKLSAgICAgICAg
bXkgJHByb2R1Y3RUeXBlc0ZvcldlYktpdERldmVsb3BtZW50UGF0aCA9IEZpbGU6OlNwZWMtPmNh
dGZpbGUoJHNka1NwZWNpZmljYXRpb25zUGF0aCwgIiR7ZmlsZU5hbWVQcmVmaXh9UHJvZHVjdFR5
cGVzIEZvciBXZWJLaXQgRGV2ZWxvcG1lbnQueGNzcGVjIik7Ci0gICAgICAgIG1lcmdlWGNvZGVT
cGVjaWZpY2F0aW9uV2l0aFNwZWNpZmljYXRpb25BbmRJZCgkcHJvZHVjdFR5cGVzRm9yV2ViS2l0
RGV2ZWxvcG1lbnRQYXRoLCAkcHJvZHVjdFR5cGVzRm9yTWFjT1NYUGF0aCwgQ09NTUFORF9MSU5F
X1BST0RVQ1RfVFlQRSk7Ci0gICAgICAgIHByaW50ICJTdWNjZXNzZnVsbHkgY3JlYXRlZCAnJHBy
b2R1Y3RUeXBlc0ZvcldlYktpdERldmVsb3BtZW50UGF0aCcuXG4iOwotICAgIH0KLX0KLQotc3Vi
IHdyaXRlWGNvZGVTcGVjaWZpY2F0aW9uKCQkKQotewotICAgIG15ICgkeGNvZGVTcGVjaWZpY2F0
aW9uRmlsZSwgJHNwZWNpZmljYXRpb24pID0gQF87Ci0gICAgbXkgKCR0ZW1wRmlsZUhhbmRsZSwg
JHRlbXBGaWxlbmFtZSkgPSB0ZW1wZmlsZSgid2Via2l0LXhjc3BlY1hYWFhYWFgiLCBVTkxJTksg
PT4gMSk7Ci0gICAgcHJpbnQgJHRlbXBGaWxlSGFuZGxlICRzcGVjaWZpY2F0aW9uOwotICAgIGNs
b3NlKCR0ZW1wRmlsZUhhbmRsZSk7Ci0gICAgaWYgKCEtZiAkeGNvZGVTcGVjaWZpY2F0aW9uRmls
ZSkgewotICAgICAgICBzeXN0ZW0oIi91c3IvbGliZXhlYy9QbGlzdEJ1ZGR5IC14IC1jICdjbGVh
ciBhcnJheScgJyR4Y29kZVNwZWNpZmljYXRpb25GaWxlJyA+IC9kZXYvbnVsbCIpID09IDAgb3Ig
ZGllICJQbGlzdEJ1ZGR5IGV4aXRlZCB3aXRoICQ/OiAkISI7Ci0gICAgfQotICAgIHN5c3RlbSgi
L3Vzci9saWJleGVjL1BsaXN0QnVkZHkgLXggLWMgJ2FkZCAwIGRpY3QnICckeGNvZGVTcGVjaWZp
Y2F0aW9uRmlsZScgPiAvZGV2L251bGwiKSA9PSAwIG9yIGRpZSAiUGxpc3RCdWRkeSBleGl0ZWQg
d2l0aCAkPzogJCEiOwotICAgIHN5c3RlbSgiL3Vzci9saWJleGVjL1BsaXN0QnVkZHkgLXggLWMg
J21lcmdlICR0ZW1wRmlsZW5hbWUgMCcgJyR4Y29kZVNwZWNpZmljYXRpb25GaWxlJyA+IC9kZXYv
bnVsbCIpID09IDAgb3IgZGllICJQbGlzdEJ1ZGR5IGV4aXRlZCB3aXRoICQ/OiAkISI7Ci19Ci0K
LXN1YiByZWFkWGNvZGVTcGVjaWZpY2F0aW9uQnlJZCgkJCkKLXsKLSAgICBteSAoJHhjb2RlU3Bl
Y2lmaWNhdGlvbkZpbGUsICRpZCkgPSBAXzsKLSAgICBvcGVuKFBMSVNUX0JVRERZLCAiLXwiLCAi
L3Vzci9saWJleGVjL1BsaXN0QnVkZHkiLCAiLXgiLCAiLWMiLCAiUHJpbnQiLCAkeGNvZGVTcGVj
aWZpY2F0aW9uRmlsZSkgb3IgZGllICJGYWlsZWQgdG8gcnVuIFBsaXN0QnVkZHk6ICQhIjsKLSAg
ICBteSAkZm91bmRTdGFydE9mU3BlY2lmaWNhdGlvbnNBcnJheTsKLSAgICB3aGlsZSAoPFBMSVNU
X0JVRERZPikgewotICAgICAgICBpZiAoL148YXJyYXk+JC8pIHsKLSAgICAgICAgICAgICRmb3Vu
ZFN0YXJ0T2ZTcGVjaWZpY2F0aW9uc0FycmF5ID0gMTsKLSAgICAgICAgICAgIGxhc3Q7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgaWYgKCEkZm91bmRTdGFydE9mU3BlY2lmaWNhdGlvbnNBcnJheSkg
ewotICAgICAgIHJldHVybiAiIjsgIyBOb3QgYSBYY29kZSBzcGVjaWZpY2F0aW9uIGZpbGUuCi0g
ICAgfQotICAgIG15ICRwb3NpdGlvbiA9IC0xOwotICAgIG15ICRmb3VuZElkZW50ZmllcktleSA9
IDA7Ci0gICAgbXkgJGZvdW5kU3BlY2lmaWNhdGlvbiA9IDA7Ci0gICAgd2hpbGUgKDxQTElTVF9C
VUREWT4pIHsKLSAgICAgICAgaWYgKC9eXHM8ZGljdD4kLykgewotICAgICAgICAgICAgKyskcG9z
aXRpb247Ci0gICAgICAgICAgICBuZXh0OwotICAgICAgICB9Ci0gICAgICAgIGlmICghJGZvdW5k
SWRlbnRmaWVyS2V5ICYmIC9eXHNcczxrZXk+SWRlbnRpZmllcjxcL2tleT4kLykgewotICAgICAg
ICAgICAgJGZvdW5kSWRlbnRmaWVyS2V5ID0gMTsKLSAgICAgICAgICAgIG5leHQ7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKCRmb3VuZElkZW50ZmllcktleSAmJiAvXlxzXHM8c3RyaW5nPihbXjxd
Kyk8XC9zdHJpbmc+JC8pIHsKLSAgICAgICAgICAgIGlmICgkMSBlcSAkaWQpIHsKLSAgICAgICAg
ICAgICAgICAkZm91bmRTcGVjaWZpY2F0aW9uID0gMTsKLSAgICAgICAgICAgICAgICBsYXN0Owot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgJGZvdW5kSWRlbnRmaWVyS2V5ID0gMDsKLSAgICAg
ICAgICAgIG5leHQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2xvc2UoUExJU1RfQlVERFkpOwot
ICAgIGlmICgkZm91bmRTcGVjaWZpY2F0aW9uICYmICRwb3NpdGlvbiA+PSAwKSB7Ci0gICAgICAg
IGNob21wKG15ICRyZXN1bHQgPSBgL3Vzci9saWJleGVjL1BsaXN0QnVkZHkgLXggLWMgJ1ByaW50
ICRwb3NpdGlvbicgJyR4Y29kZVNwZWNpZmljYXRpb25GaWxlJ2ApOwotICAgICAgICBkaWUgIkZh
aWxlZCB0byBydW4gUGxpc3RCdWRkeSIgaWYgJD87Ci0gICAgICAgIHJldHVybiAkcmVzdWx0Owot
ICAgIH0KLSAgICByZXR1cm4gIiI7ICMgRGlkIG5vdCBmaW5kIGlkLgotfQotCi1zdWIgeGNvZGVT
REtTcGVjaWZpY2F0aW9uc1BhdGgoJCkKLXsKLSAgICBteSAoJHNka05hbWUpID0gQF87Ci0KLSAg
ICByZXR1cm4gRmlsZTo6U3BlYy0+Y2F0ZGlyKHNka1BsYXRmb3JtRGlyZWN0b3J5KCRzZGtOYW1l
KSwgIkRldmVsb3BlciIsICJMaWJyYXJ5IiwgIlhjb2RlIiwgIlNwZWNpZmljYXRpb25zIik7Ci19
Ci0KLXN1YiBtZXJnZVhjb2RlU3BlY2lmaWNhdGlvbldpdGhTcGVjaWZpY2F0aW9uQW5kSWQoJCQk
KQotewotICAgIG15ICgkdGFyZ2V0WGNvZGVTcGVjaWZpY2F0aW9uRmlsZSwgJHNvdXJjZVhjb2Rl
U3BlY2lmaWNhdGlvbkZpbGUsICRpZCkgPSBAXzsKLSAgICBteSAkc3BlY2lmaWNhdGlvbiA9IHJl
YWRYY29kZVNwZWNpZmljYXRpb25CeUlkKCRzb3VyY2VYY29kZVNwZWNpZmljYXRpb25GaWxlLCAk
aWQpOwotICAgIGlmICghJHNwZWNpZmljYXRpb24pIHsKLSAgICAgICAgZGllICJGYWlsZWQgdG8g
ZmluZCAnJGlkJyBpbiAnJHNvdXJjZVhjb2RlU3BlY2lmaWNhdGlvbkZpbGUnLlxuIjsKLSAgICB9
Ci0gICAgd3JpdGVYY29kZVNwZWNpZmljYXRpb24oJHRhcmdldFhjb2RlU3BlY2lmaWNhdGlvbkZp
bGUsICRzcGVjaWZpY2F0aW9uKTsKLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1Njcmlw
dHMvY29uZmlndXJlLXhjb2RlLWZvci1pb3MtZGV2ZWxvcG1lbnQKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVk
OiBzdm46ZXhlY3V0YWJsZQojIyAtMSArMCwwICMjCi0qClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400491</attachid>
            <date>2020-05-28 12:10:28 -0700</date>
            <delta_ts>2020-06-04 10:17:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207043-20200528121027.patch</filename>
            <type>text/plain</type>
            <size>14322</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MjI1MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDIwLTA1LTI4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBHZW5lcmFsaXplIGNvbmZpZ3VyZS14Y29kZS1mb3ItaW9zLWRldmVsb3Bt
ZW50IChQYXJ0IDEpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDcwNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQYXRjaCBieSBLZWl0aCBSb2xsaW4gYW5kIEpvbmF0aGFuIEJlZGFyZC4KKworICAgICAg
ICBSZXBsYWNlIGNvbmZpZ3VyZS14Y29kZS1mb3ItaW9zLWRldmVsb3BtZW50IHdpdGggYSBQeXRo
b24gc2NyaXB0IHRoYXQgd29ya3MgZm9yIGlPUywKKyAgICAgICAgd2F0Y2hPUyBhbmQgdHZPUy4K
KworICAgICAgICAqIFNjcmlwdHMvY29uZmlndXJlLXhjb2RlLWZvci1lbWJlZGRlZC1kZXZlbG9w
bWVudDogQWRkZWQuCisKIDIwMjAtMDUtMjggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgbWFrZVZhbHVlUmVmRm9yVmFsdWUgc2hvdWxkIGJlIHJvYnVz
dCBhZ2FpbnN0IHRoZSB0eXBlIGVuY29kaW5nIG9mIGEgTlNOdW1iZXIgYmFja2VkIGJ5IGEgYm9v
bGVhbgpJbmRleDogVG9vbHMvU2NyaXB0cy9jb25maWd1cmUteGNvZGUtZm9yLWVtYmVkZGVkLWRl
dmVsb3BtZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvY29uZmlndXJlLXhjb2RlLWZv
ci1lbWJlZGRlZC1kZXZlbG9wbWVudAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL2Nv
bmZpZ3VyZS14Y29kZS1mb3ItZW1iZWRkZWQtZGV2ZWxvcG1lbnQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwzMjkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyMKKyMgQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisjIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitpbXBvcnQgZXJybm8KK2ltcG9ydCBvcworaW1wb3J0IHBhdGhsaWIKK2ltcG9ydCByZQor
aW1wb3J0IHNodXRpbAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZW1w
ZmlsZQorCitmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUgYXMgRVQKKworTUlTU0lO
R19IRUFERVJTID0gWworICAgICJ1c3IvaW5jbHVkZS9saWJ4c2x0IiwKKyAgICAidXNyL2luY2x1
ZGUvbWFjaC9tYWNoX3R5cGVzLmRlZnMiLAorICAgICJ1c3IvaW5jbHVkZS9tYWNoL21hY2hpbmUv
bWFjaGluZV90eXBlcy5kZWZzIiwKKyAgICAidXNyL2luY2x1ZGUvbWFjaC9zdGRfdHlwZXMuZGVm
cyIsCisgICAgInVzci9pbmNsdWRlL29iamMvUHJvdG9jb2wuaCIsCisgICAgInVzci9pbmNsdWRl
L29iamMvb2JqYy1jbGFzcy5oIiwKKyAgICAidXNyL2luY2x1ZGUvb2JqYy9vYmpjLXJ1bnRpbWUu
aCIsCisgICAgInVzci9pbmNsdWRlL3JlYWRsaW5lL2hpc3RvcnkuaCIsCisgICAgInVzci9pbmNs
dWRlL3JlYWRsaW5lL3JlYWRsaW5lLmgiLAorXQorCitNSVNTSU5HX0ZSQU1FV09SS1MgPSBbCisg
ICAgKCJBVktpdC5mcmFtZXdvcmsiLCBGYWxzZSksCisgICAgKCJBdWRpb1Rvb2xib3guZnJhbWV3
b3JrIiwgRmFsc2UpLAorICAgICgiQXVkaW9Vbml0LmZyYW1ld29yayIsIEZhbHNlKSwKKyAgICAo
IkNGTmV0d29yay5mcmFtZXdvcmsiLCBUcnVlKSwKKyAgICAoIkNvcmVJbWFnZS5mcmFtZXdvcmsi
LCBGYWxzZSksCisgICAgKCJJT0tpdC5mcmFtZXdvcmsiLCBGYWxzZSksCisgICAgKCJJT1N1cmZh
Y2UuZnJhbWV3b3JrIiwgRmFsc2UpLAorICAgICgiTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdv
cmsiLCBGYWxzZSksCisgICAgKCJNZWRpYUFjY2Vzc2liaWxpdHkuZnJhbWV3b3JrIiwgRmFsc2Up
LAorICAgICgiTWVkaWFUb29sYm94LmZyYW1ld29yayIsIEZhbHNlKSwKKyAgICAoIk1ldGFsLmZy
YW1ld29yayIsIEZhbHNlKSwKKyAgICAoIk9wZW5HTEVTLmZyYW1ld29yayIsIEZhbHNlKSwKKyAg
ICAoIlF1YXJ0ekNvcmUuZnJhbWV3b3JrIiwgRmFsc2UpLAorICAgICgiVUlLaXQuZnJhbWV3b3Jr
IiwgVHJ1ZSksCisgICAgKCJWaWRlb1Rvb2xib3guZnJhbWV3b3JrIiwgRmFsc2UpLAorXQorCitY
Q1NQRUNfSU5GTyA9IFsKKyAgICB7CisgICAgICAgICJpZCI6ICAgICAgICJjb20uYXBwbGUucGFj
a2FnZS10eXBlLm1hY2gtby1leGVjdXRhYmxlIiwKKyAgICAgICAgInNvdXJjZSI6ICAgIlBsYXRm
b3Jtcy9NYWNPU1gucGxhdGZvcm0vRGV2ZWxvcGVyL0xpYnJhcnkvWGNvZGUvU3BlY2lmaWNhdGlv
bnMvTWFjT1NYIFBhY2thZ2UgVHlwZXMueGNzcGVjIiwKKyAgICAgICAgImRlc3QiOiAgICAgIi4u
L1BsdWdJbnMvSURFaU9TU3VwcG9ydENvcmUuaWRlcGx1Z2luL0NvbnRlbnRzL1Jlc291cmNlcy9F
bWJlZGRlZC1TaGFyZWQueGNzcGVjIgorICAgIH0sCisgICAgeworICAgICAgICAiaWQiOiAgICAg
ICAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIiwKKyAgICAgICAgInNvdXJjZSI6ICAgIlBs
YXRmb3Jtcy9NYWNPU1gucGxhdGZvcm0vRGV2ZWxvcGVyL0xpYnJhcnkvWGNvZGUvU3BlY2lmaWNh
dGlvbnMvTWFjT1NYIFByb2R1Y3QgVHlwZXMueGNzcGVjIiwKKyAgICAgICAgImRlc3QiOiAgICAg
Ii4uL1BsdWdJbnMvSURFaU9TU3VwcG9ydENvcmUuaWRlcGx1Z2luL0NvbnRlbnRzL1Jlc291cmNl
cy9FbWJlZGRlZC1TaGFyZWQueGNzcGVjIgorICAgIH0sCitdCisKK0FWQUlMQUJJTElUWV9GSUxF
ID0gcGF0aGxpYi5QYXRoKCJ1c3IvbG9jYWwvaW5jbHVkZS9BdmFpbGFiaWxpdHlQcm9oaWJpdGVk
SW50ZXJuYWwuaCIpCitBVkFJTEFCSUxUWV9URVhUID0gIiIiXAorLy8gSGFuZGxlIF9fSU9TX1BS
T0hJQklURUQgYW5kIGZyaWVuZHMuCisjdW5kZWYgX19PU19BVkFJTEFCSUxJVFkKKyNkZWZpbmUg
X19PU19BVkFJTEFCSUxJVFkoLi4uKQorCisvLyBUYWtlIGNhcmUgb2Yge0EsU31QSV9BVkFJTEFC
TEV7LF9CRUdJTixfRU5EfQorI3VuZGVmIF9fQVBJX0FWQUlMQUJMRV9HRVRfTUFDUk8KKyNkZWZp
bmUgX19BUElfQVZBSUxBQkxFX0dFVF9NQUNSTyguLi4pIF9fTlVMTF9BVkFJTEFCSUxJVFkKKwor
Ly8gVGFrZSBjYXJlIG9mIHtBLFN9UElfREVQUkVDQVRFRHssV0lUSF9SRVBMQUNFTUVOVH17LF9C
RUdJTixfRU5EfQorI3VuZGVmIF9fQVBJX0RFUFJFQ0FURURfTVNHX0dFVF9NQUNSTworI2RlZmlu
ZSBfX0FQSV9ERVBSRUNBVEVEX01TR19HRVRfTUFDUk8oLi4uKSBfX05VTExfQVZBSUxBQklMSVRZ
CisKKy8vIFRha2UgY2FyZSBvZiBBUElfVU5BVkFJTEFCTEV7LF9CRUdJTixfRU5EfQorI3VuZGVm
IF9fQVBJX1VOQVZBSUxBQkxFX0dFVF9NQUNSTworI2RlZmluZSBfX0FQSV9VTkFWQUlMQUJMRV9H
RVRfTUFDUk8oLi4uKSBfX05VTExfQVZBSUxBQklMSVRZCisKKyNkZWZpbmUgX19OVUxMX0FWQUlM
QUJJTElUWSguLi4pCisiIiIKKworU0RLU19UT19VUERBVEUgPSBbCisgICAgImlwaG9uZW9zIiwK
KyAgICAiaXBob25lc2ltdWxhdG9yIiwKKyAgICAiYXBwbGV0dm9zIiwKKyAgICAiYXBwbGV0dnNp
bXVsYXRvciIsCisgICAgIndhdGNob3MiLAorICAgICJ3YXRjaHNpbXVsYXRvciIsCitdCisKK1BM
SVNUX0JVRERZX1BBVEggPSBwYXRobGliLlBhdGgoIi91c3IvbGliZXhlYy9QbGlzdEJ1ZGR5IikK
KworCitkZWYgeGNvZGVfZGV2ZWxvcGVyX2RpcigpOgorICAgIHJlc3VsdCA9IHN1YnByb2Nlc3Mu
cnVuKAorICAgICAgICBbInhjb2RlLXNlbGVjdCIsICItcCJdLAorICAgICAgICBjYXB0dXJlX291
dHB1dD1UcnVlLCBlbmNvZGluZz0idXRmLTgiLCBjaGVjaz1UcnVlLAorICAgICkKKyAgICByZXR1
cm4gcGF0aGxpYi5QYXRoKHJlc3VsdC5zdGRvdXQuc3RyaXAoKSkKKworCitkZWYgc2RrX2RpcmVj
dG9yeShzZGspOgorICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MucnVuKAorICAgICAgICBbInhjcnVu
IiwgIi0tc2RrIiwgc2RrLCAiLS1zaG93LXNkay1wYXRoIl0sCisgICAgICAgIGNhcHR1cmVfb3V0
cHV0PVRydWUsIGVuY29kaW5nPSJ1dGYtOCIsIGNoZWNrPVRydWUsCisgICAgKQorICAgIHJldHVy
biBwYXRobGliLlBhdGgocmVzdWx0LnN0ZG91dC5zdHJpcCgpKQorCisKK2RlZiBnZXRfYW5kX2No
ZWNrX3Nka19kaXJlY3Rvcmllcyhzb3VyY2Vfc2RrLCBkZXN0X3Nkayk6CisgICAgc291cmNlX3Nk
a19wYXRoID0gc2RrX2RpcmVjdG9yeShzb3VyY2Vfc2RrKQorICAgIGRlc3Rfc2RrX3BhdGggPSBz
ZGtfZGlyZWN0b3J5KGRlc3Rfc2RrKQorCisgICAgaWYgbm90IHNvdXJjZV9zZGtfcGF0aDoKKyAg
ICAgICAgcmFpc2UgUnVudGltZUVycm9yKGYiQ291bGQgbm90IGZpbmQgU0RLOiB7c291cmNlX3Nk
a30iKQorCisgICAgaWYgbm90IGRlc3Rfc2RrX3BhdGg6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVF
cnJvcihmIkNvdWxkIG5vdCBmaW5kIFNESzoge2Rlc3Rfc2RrfSIpCisKKyAgICBwcmludChzb3Vy
Y2Vfc2RrX3BhdGgpCisgICAgcHJpbnQoZGVzdF9zZGtfcGF0aCkKKyAgICByZXR1cm4gc291cmNl
X3Nka19wYXRoLCBkZXN0X3Nka19wYXRoCisKKworZGVmIGRvX2NvcHkoc291cmNlX3BhdGgsIGRl
c3RfcGF0aCk6CisKKyAgICBkZWYgZW5zdXJlX3BhcmVudF9leGlzdHMocGF0aCk6CisgICAgICAg
IG9zLm1ha2VkaXJzKHBhdGgucGFyZW50LCBleGlzdF9vaz1UcnVlKQorCisgICAgZGVmIGNvcHlf
ZmlsZShzb3VyY2VfcGF0aCwgZGVzdF9wYXRoKToKKyAgICAgICAgcHJpbnQoZiJDb3B5aW5nIGZp
bGUiKQorICAgICAgICBwcmludChmIkZyb206IHtzb3VyY2VfcGF0aH0iKQorICAgICAgICBwcmlu
dChmIlRvOiAgIHtkZXN0X3BhdGh9IikKKyAgICAgICAgaWYgZGVzdF9wYXRoLmV4aXN0cygpOgor
ICAgICAgICAgICAgZGVzdF9wYXRoLnVubGluaygpCisgICAgICAgIGVuc3VyZV9wYXJlbnRfZXhp
c3RzKGRlc3RfcGF0aCkKKyAgICAgICAgc2h1dGlsLmNvcHkyKHNvdXJjZV9wYXRoLCBkZXN0X3Bh
dGgpCisKKyAgICBkZWYgY29weV9kaXJlY3Rvcnkoc291cmNlX3BhdGgsIGRlc3RfcGF0aCk6Cisg
ICAgICAgIHByaW50KGYiQ29weWluZyBkaXJlY3RvcnkiKQorICAgICAgICBwcmludChmIkZyb206
IHtzb3VyY2VfcGF0aH0iKQorICAgICAgICBwcmludChmIlRvOiAgIHtkZXN0X3BhdGh9IikKKyAg
ICAgICAgaWYgZGVzdF9wYXRoLmV4aXN0cygpOgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShk
ZXN0X3BhdGgpCisgICAgICAgIGVuc3VyZV9wYXJlbnRfZXhpc3RzKGRlc3RfcGF0aCkKKyAgICAg
ICAgc2h1dGlsLmNvcHl0cmVlKHNvdXJjZV9wYXRoLCBkZXN0X3BhdGgpCisKKyAgICBpZiBzb3Vy
Y2VfcGF0aC5pc19maWxlKCk6CisgICAgICAgIGNvcHlfZmlsZShzb3VyY2VfcGF0aCwgZGVzdF9w
YXRoKQorICAgICAgICByZXR1cm4KKworICAgIGlmIHNvdXJjZV9wYXRoLmlzX2RpcigpOgorICAg
ICAgICBjb3B5X2RpcmVjdG9yeShzb3VyY2VfcGF0aCwgZGVzdF9wYXRoKQorICAgICAgICByZXR1
cm4KKworICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihmIntzb3VyY2VfcGF0aH0gZG9lcyBub3QgZXhp
c3QiKQorCisKKyMgLnRiZCBmaWxlcyBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBs
aW5rIGEgcHJvZHVjdCB0byBhCisjIGxpYnJhcnkvZnJhbWV3b3JrLiBUaGlzIGluZm9ybWF0aW9u
IGluY2x1ZGVzIHRoZSBhcmNoaXRlY3R1cmUgdGhhdCB0aGUKKyMgbGlicmFyeSBpcyBidWlsdCBm
b3IuIElmIHdlJ3JlIGNvcHlpbmcgZnJvbSBhbiBTREsgdGhhdCBzdXBwb3J0cyBvbmUgc2V0IG9m
CisjIGFyY2hpdGVjdHVyZXMgdG8gYW4gU0RLIHRoYXQgc3VwcG9ydHMgYW5vdGhlciBzZXQgb2Yg
YXJjaGl0ZWN0dXJlcywgd2UgbmVlZAorIyB0byBhZGp1c3QgdGhhdCBpbmZvcm1hdGlvbiBpbiB0
aGUgLnRiZCBmaWxlLgorIworIyBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBiZSB0b28gcGFy
dGljdWxhciBhYm91dCB0aGlzLiBXZSBvbmx5IG5lZWQgdG8KKyMgbGluazsgd2UgZG9uJ3QgbmVl
ZCB0byBydW4uIFRoaXMgYWxsb3dzIHVzIHRvIHNpbXBseSBzcGVjaWZ5IHRoZSBmdWxsIHNldCBv
ZgorIyBhcmNoaXRlY3R1cmVzIGZvciB3aGljaCBXZWJLaXQgaXMgYnVpbHQsIHJlZ2FyZGxlc3Mg
b2Ygd2hldGhlciB0aGUgYXNzb2NpYXRlZAorIyBsaWJyYXJ5L2ZyYW1ld29yayB3YXMgYWN0dWFs
bHkgYnVpbHQgZm9yIGFsbCB0aG9zZSBhcmNoaXRlY3R1cmVzLgorCitkZWYgcGF0Y2hfdGJkX2Fy
Y2hpdGVjdHVyZShmcmFtZXdvcmtfcGF0aCk6CisgICAgZm9yIHRiZF9wYXRoIGluIGZyYW1ld29y
a19wYXRoLmdsb2IoIioudGJkIik6CisgICAgICAgIHdpdGggb3Blbih0YmRfcGF0aCwgInIiKSBh
cyBmOgorICAgICAgICAgICAgbGluZXMgPSBmLnJlYWRsaW5lcygpCisKKyAgICAgICAgbW9kaWZp
ZWRfbGluZXMgPSBbXQorICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgIGlm
IHJlLm1hdGNoKCIuKmFyY2hzOiArXFsuKlxdIiwgbGluZSkgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICAgICAgbGluZSA9IHJlLnN1YigiXFsuKlxdIiwgIlsgeDg2XzY0LCBhcm02NCwgYXJtNjRl
LCBhcm02NF8zMiwgYXJtdjdrIF0iLCBsaW5lKQorICAgICAgICAgICAgbW9kaWZpZWRfbGluZXMu
YXBwZW5kKGxpbmUpCisKKyAgICAgICAgd2l0aCBvcGVuKHRiZF9wYXRoLCAidyIpIGFzIGY6Cisg
ICAgICAgICAgICBmLndyaXRlbGluZXMobW9kaWZpZWRfbGluZXMpCisKKworIyBYY29kZSBpcyBk
cml2ZW4gYnkgLnhjc3BlYyBmaWxlcy4gVGhlc2UgZGVzY3JpYmUgbWFueSBhc3BlY3RzIG9mIHRo
ZSBzeXN0ZW0sCisjIGluY2x1ZGluZyB3aGF0IHRvIGJ1aWxkIGFuZCBob3cgdG8gYnVpbGQgaXQu
IFRoZXNlIC54Y3NwZWMgZmlsZXMgY2FuIGJlCisjIGdsb2JhbCBvciB0aGV5IGNhbiBiZSBwbGF0
Zm9ybS0gb3IgU0RLLXNwZWNpZmljLiBJbiB0aGUgY2FzZSBvZiBidWlsZGluZworIyBwcm9kdWN0
cyBmb3IgdGhlIGVtYmVkZGVkIHN5c3RlbXMsIHRoZXJlIGlzIHNvbWUgaW5mb3JtYXRpb24gaW4g
c29tZSBtYWNPUworIyAueGNzcGVjIGZpbGVzIHRoYXQgbmVlZCB0byBiZSB0cmFuc2ZlcnJlZCB0
byB0aGUgZW1iZWRkZWQgcGxhdGZvcm1zLiBUaGlzCisjIGZ1bmN0aW9uIGZpbmRzIHRoYXQgaW5m
b3JtYXRpb24sIGV4dHJhY3RzIGl0IGZyb20gdGhlIG1hY09TIGZpbGVzLCBhbmQgY29waWVzCisj
IGl0IHRvIHRoZSBlbWJlZGRlZCBmaWxlcy4KKworZGVmIHVwZGF0ZV94Y3NwZWNfZmlsZXMoKToK
KworICAgIGRlZiByZWFkX3NwZWMoc3BlY19wYXRoKToKKyAgICAgICAgIiIiUmVhZCBhIC54Y3Nw
ZWMgZmlsZSBhbmQgcmV0dXJuIGl0cyBjb250ZW50cyBhcyBhbiBYTUwgRE9NIG9iamVjdC4iIiIK
KworICAgICAgICByZXN1bHQgPSBzdWJwcm9jZXNzLnJ1bigKKyAgICAgICAgICAgIFtQTElTVF9C
VUREWV9QQVRILCAiLXgiLCAiLWMiLCAiUHJpbnQiLCBzcGVjX3BhdGhdLAorICAgICAgICAgICAg
Y2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9InV0Zi04IiwgY2hlY2s9VHJ1ZSwKKyAgICAg
ICAgKQorICAgICAgICByZXR1cm4gRVQuZnJvbXN0cmluZyhyZXN1bHQuc3Rkb3V0LnN0cmlwKCkp
CisKKyAgICBkZWYgZmluZF9zcGVjX2VudHJ5X2luZGV4KHNwZWMsIGlkZW50aWZpZXIpOgorICAg
ICAgICAiIiJHaXZlbiBhbiBYTUwgRE9NIG9iamVjdCByZXByZXNlbnRpbmcgYW4gLnhjc3BlYyBm
aWxlLCBsb29rIGZvciBhbgorICAgICAgICBlbnRyeSB0aGF0IGhhcyBhIGtleSBvZiAiSWRlbnRp
ZmllciIgYW5kIGEgdmFsdWUgZXF1YWwgdG8gdGhlIGdpdmVuCisgICAgICAgIHZhbHVlLiBJZiBm
b3VuZCwgcmV0dXJuIGl0cyBpbmRleCBpbiB0aGUgYXJyYXkgb2Ygc3VjaCBlbnRyaWVzLiIiIgor
CisgICAgICAgIGZvciBpbmRleCwgc3BlY19lbnRyeSBpbiBlbnVtZXJhdGUoc3BlYy5maW5kYWxs
KCIuL2FycmF5L2RpY3QiKSk6CisgICAgICAgICAgICBzcGVjX2VudHJ5X2l0ZXIgPSBpdGVyKHNw
ZWNfZW50cnkpCisgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiB6aXAoc3BlY19lbnRyeV9p
dGVyLCBzcGVjX2VudHJ5X2l0ZXIpOgorICAgICAgICAgICAgICAgIGlmIGtleS50YWcgPT0gImtl
eSIgYW5kIGtleS50ZXh0ID09ICJJZGVudGlmaWVyIiBhbmQgdmFsdWUudGFnID09ICJzdHJpbmci
IGFuZCB2YWx1ZS50ZXh0ID09IGlkZW50aWZpZXI6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBpbmRleAorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZm9yIHNwZWNfaW5mbyBpbiBYQ1NQ
RUNfSU5GTzoKKyAgICAgICAgaWRlbnRpZmllciA9IHNwZWNfaW5mb1siaWQiXQorICAgICAgICBz
b3VyY2Vfc3BlY19wYXRoID0geGNvZGVfZGV2ZWxvcGVyX2RpcigpIC8gc3BlY19pbmZvWyJzb3Vy
Y2UiXQorICAgICAgICBkZXN0X3NwZWNfcGF0aCA9IHhjb2RlX2RldmVsb3Blcl9kaXIoKSAvIHNw
ZWNfaW5mb1siZGVzdCJdCisKKyAgICAgICAgZm9yIHBhdGggaW4gW3NvdXJjZV9zcGVjX3BhdGgs
IGRlc3Rfc3BlY19wYXRoXToKKyAgICAgICAgICAgIGlmIG5vdCBwYXRoLmV4aXN0cygpOgorICAg
ICAgICAgICAgICAgIHJhaXNlIEZpbGVOb3RGb3VuZEVycm9yKGVycm5vLkVOT0VOVCwgb3Muc3Ry
ZXJyb3IoZXJybm8uRU5PRU5UKSwgcGF0aCkKKworICAgICAgICBzb3VyY2Vfc3BlY19lbnRyeV9p
bmRleCA9IGZpbmRfc3BlY19lbnRyeV9pbmRleChyZWFkX3NwZWMoc291cmNlX3NwZWNfcGF0aCks
IGlkZW50aWZpZXIpCisgICAgICAgIGRlc3Rfc3BlY19lbnRyeV9pbmRleCA9IGZpbmRfc3BlY19l
bnRyeV9pbmRleChyZWFkX3NwZWMoZGVzdF9zcGVjX3BhdGgpLCBpZGVudGlmaWVyKQorCisgICAg
ICAgIGlmIHNvdXJjZV9zcGVjX2VudHJ5X2luZGV4IGlzIE5vbmU6CisgICAgICAgICAgICByYWlz
ZSBSdW50aW1lRXJyb3IoZiJVbmFibGUgdG8gZmluZCB4Y3NwZWMgZW50cnkgZm9yIHtpZGVudGlm
aWVyfSBpbiB7c291cmNlX3NwZWNfcGF0aH0iKQorCisgICAgICAgIGlmIGRlc3Rfc3BlY19lbnRy
eV9pbmRleCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHByaW50KGYieGNzcGVjIGVudHJ5IGZv
ciB7aWRlbnRpZmllcn0gYWxyZWFkeSBleGlzdHMgaW4ge2Rlc3Rfc3BlY19wYXRofSwgc2tpcHBp
bmciKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5y
dW4oCisgICAgICAgICAgICBbUExJU1RfQlVERFlfUEFUSCwgIi14IiwgIi1jIiwgZiJQcmludCB7
c291cmNlX3NwZWNfZW50cnlfaW5kZXh9Iiwgc291cmNlX3NwZWNfcGF0aF0sCisgICAgICAgICAg
ICBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0idXRmLTgiLCBjaGVjaz1UcnVlLAorICAg
ICAgICApCisgICAgICAgIHNwZWNfYXNfeG1sX3NuaXBwZXQgPSByZXN1bHQuc3Rkb3V0LnN0cmlw
KCkKKworICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShtb2RlPSJ3Iiwg
ZW5jb2Rpbmc9InV0Zi04IikgYXMgdGVtcDoKKyAgICAgICAgICAgIHRlbXAud3JpdGUoc3BlY19h
c194bWxfc25pcHBldCkKKyAgICAgICAgICAgIHRlbXAuZmx1c2goKSAjIEl0J3MgYW1hemluZyBo
b3cgaW1wb3J0YW50IHRoaXMgbGluZSBpcy4KKyAgICAgICAgICAgIGlmIG5vdCBkZXN0X3NwZWNf
cGF0aC5leGlzdHMoKToKKyAgICAgICAgICAgICAgICBwcmludChmIkNyZWF0aW5nOiB7ZGVzdF9z
cGVjX3BhdGh9IikKKyAgICAgICAgICAgICAgICBzdWJwcm9jZXNzLnJ1bihbUExJU1RfQlVERFlf
UEFUSCwgIi1jIiwgImNsZWFyIGFycmF5IiwgZGVzdF9zcGVjX3BhdGhdLCBjYXB0dXJlX291dHB1
dD1UcnVlLCBjaGVjaz1UcnVlKQorICAgICAgICAgICAgcHJpbnQoZiJDb3B5aW5nOiAge2lkZW50
aWZpZXJ9IikKKyAgICAgICAgICAgIHByaW50KGYiRnJvbTogICAgIHtzb3VyY2Vfc3BlY19wYXRo
fSIpCisgICAgICAgICAgICBwcmludChmIlRvOiAgICAgICB7ZGVzdF9zcGVjX3BhdGh9IikKKyAg
ICAgICAgICAgIHN1YnByb2Nlc3MucnVuKFtQTElTVF9CVUREWV9QQVRILCAiLWMiLCAiYWRkIDAg
ZGljdCIsIGRlc3Rfc3BlY19wYXRoXSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY2hlY2s9VHJ1ZSkK
KyAgICAgICAgICAgIHN1YnByb2Nlc3MucnVuKFtQTElTVF9CVUREWV9QQVRILCAiLWMiLCBmIm1l
cmdlIHt0ZW1wLm5hbWV9IDAiLCBkZXN0X3NwZWNfcGF0aF0sIGNhcHR1cmVfb3V0cHV0PVRydWUs
IGNoZWNrPVRydWUpCisKKworIyBXZWJLaXQgbmVlZHMgc29tZSBmaWxlcyBmcm9tIHRoZSBtYWNP
UyBTREsgaW4gb3JkZXIgdG8gYnVpbGQgb24gdGhlIGVtYmVkZGVkCisjIHBsYXRmb3Jtcy4gQ29w
eSB0aG9zZSBoZWFkZXJzIGZyb20gdGhlIG1hY09TIFNESyB0byB0aGUgb3RoZXIgU0RLcy4gTm90
ZSB0aGF0CisjIHRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIHJlc3VsdGluZyBwcm9kdWN0
IGNhbiBydW4gLS0gd2UganVzdCB3YW50IHRvCisjIGJ1aWxkLgorCitkZWYgY29weV9taXNzaW5n
X2hlYWRlcnMoc291cmNlX3NkaywgZGVzdF9zZGspOgorICAgIGlmIHNvdXJjZV9zZGsgPT0gZGVz
dF9zZGs6CisgICAgICAgIHJldHVybgorICAgIHNvdXJjZV9zZGtfcGF0aCwgZGVzdF9zZGtfcGF0
aCA9IGdldF9hbmRfY2hlY2tfc2RrX2RpcmVjdG9yaWVzKHNvdXJjZV9zZGssIGRlc3Rfc2RrKQor
ICAgIGZvciBtaXNzaW5nX2hlYWRlciBpbiBNSVNTSU5HX0hFQURFUlM6CisgICAgICAgIGRvX2Nv
cHkoc291cmNlX3Nka19wYXRoIC8gbWlzc2luZ19oZWFkZXIsIGRlc3Rfc2RrX3BhdGggLyBtaXNz
aW5nX2hlYWRlcikKKworCitkZWYgY29weV9taXNzaW5nX2ZyYW1ld29ya3Moc291cmNlX3Nkaywg
ZGVzdF9zZGspOgorICAgIGlmIHNvdXJjZV9zZGsgPT0gZGVzdF9zZGs6CisgICAgICAgIHJldHVy
bgorICAgIHNvdXJjZV9zZGtfcGF0aCwgZGVzdF9zZGtfcGF0aCA9IGdldF9hbmRfY2hlY2tfc2Rr
X2RpcmVjdG9yaWVzKHNvdXJjZV9zZGssIGRlc3Rfc2RrKQorICAgIHNvdXJjZV9mcmFtZXdvcmtz
X3BhdGggPSBzb3VyY2Vfc2RrX3BhdGggLyAiU3lzdGVtIiAvICJMaWJyYXJ5IiAvICJGcmFtZXdv
cmtzIgorICAgIGRlc3RfZnJhbWV3b3Jrc19wYXRoID0gZGVzdF9zZGtfcGF0aCAvICJTeXN0ZW0i
IC8gIkxpYnJhcnkiIC8gIkZyYW1ld29ya3MiCisgICAgZm9yIG1pc3NpbmdfZnJhbWV3b3JrLCBm
b3JjZSBpbiBNSVNTSU5HX0ZSQU1FV09SS1M6CisgICAgICAgIHNvdXJjZV9mcmFtZXdvcmtfcGF0
aCA9IHNvdXJjZV9mcmFtZXdvcmtzX3BhdGggLyBtaXNzaW5nX2ZyYW1ld29yaworICAgICAgICBk
ZXN0X2ZyYW1ld29ya19wYXRoID0gZGVzdF9mcmFtZXdvcmtzX3BhdGggLyBtaXNzaW5nX2ZyYW1l
d29yaworICAgICAgICBpZiBmb3JjZSBvciBub3QgZGVzdF9mcmFtZXdvcmtfcGF0aC5leGlzdHMo
KToKKyAgICAgICAgICAgIGRvX2NvcHkoc291cmNlX2ZyYW1ld29ya19wYXRoLCBkZXN0X2ZyYW1l
d29ya19wYXRoKQorICAgICAgICAgICAgcGF0Y2hfdGJkX2FyY2hpdGVjdHVyZShkZXN0X2ZyYW1l
d29ya19wYXRoKQorCisKKyMgU29tZSBmdW5jdGlvbnMgdGhhdCBXZWJLaXQgbmVlZHMgdG8gY2Fs
bCBhcmUgbWFya2VkIGFzICJ1bmF2YWlsYWJsZSIgb24gdGhlCisjIGVtYmVkZGVkIHBsYXRmb3Jt
cy4gQ3JlYXRlIGEgc3R1YiBoZWFkZXIgdGhhdCB3aWxsIG51bGxpZnkgdGhlIGVmZmVjdCBvZiB0
aGUKKyMgYW5ub3RhdGlvbnMgb24gdGhvc2UgZnVuY3Rpb25zLiBOb3RlIHRoYXQgdGhlcmUncyBu
byBndWFyYW50ZWUgdGhhdCB0aGUKKyMgcmVzdWx0aW5nIHByb2R1Y3QgY2FuIHJ1biAtLSB3ZSBq
dXN0IHdhbnQgdG8gYnVpbGQuCisKK2RlZiBjcmVhdGVfYXZhaWxhYmlsaXR5X2hlYWRlcihzZGsp
OgorICAgIHNka19wYXRoID0gc2RrX2RpcmVjdG9yeShzZGspCisgICAgYXZhaWxhYmlsaXR5X2hl
YWRlcl9wYXRoID0gc2RrX3BhdGggLyBBVkFJTEFCSUxJVFlfRklMRQorICAgIHByaW50KGYiQ3Jl
YXRpbmcvdXBkYXRpbmcge2F2YWlsYWJpbGl0eV9oZWFkZXJfcGF0aH0iKQorICAgIG9zLm1ha2Vk
aXJzKGF2YWlsYWJpbGl0eV9oZWFkZXJfcGF0aC5wYXJlbnQsIGV4aXN0X29rPVRydWUpCisgICAg
d2l0aCBvcGVuKGF2YWlsYWJpbGl0eV9oZWFkZXJfcGF0aCwgInciKSBhcyBmOgorICAgICAgICBm
LndyaXRlKEFWQUlMQUJJTFRZX1RFWFQpCisKKworZGVmIG1haW4oKToKKyAgICBpZiBub3Qgb3Mu
Z2V0ZXVpZCgpID09IDAgYW5kIG5vdCBvcy5hY2Nlc3MoeGNvZGVfZGV2ZWxvcGVyX2RpcigpLCBv
cy5SX09LIHwgb3MuV19PSyB8IG9zLlhfT0ssIGVmZmVjdGl2ZV9pZHM9VHJ1ZSk6CisgICAgICAg
IHJhaXNlIFJ1bnRpbWVFcnJvcihmIntfX2ZpbGVfX30gbXVzdCBiZSBydW4gYXMgcm9vdCIpCisK
KyAgICB1cGRhdGVfeGNzcGVjX2ZpbGVzKCkKKworICAgIGZvciBzZGsgaW4gU0RLU19UT19VUERB
VEU6CisgICAgICAgIGNvcHlfbWlzc2luZ19oZWFkZXJzKCJtYWNvc3giLCBzZGspCisgICAgICAg
IGNvcHlfbWlzc2luZ19mcmFtZXdvcmtzKCJpcGhvbmVvcyIsIHNkaykKKyAgICAgICAgY3JlYXRl
X2F2YWlsYWJpbGl0eV9oZWFkZXIoc2RrKQorICAgIHJldHVybiAwCisKKworaWYgX19uYW1lX18g
PT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKCkKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1Nj
cmlwdHMvY29uZmlndXJlLXhjb2RlLWZvci1lbWJlZGRlZC1kZXZlbG9wbWVudApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401036</attachid>
            <date>2020-06-04 10:17:46 -0700</date>
            <delta_ts>2020-06-04 12:01:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207043-20200604101745.patch</filename>
            <type>text/plain</type>
            <size>14264</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MjU0MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDIwLTA2LTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBHZW5lcmFsaXplIGNvbmZpZ3VyZS14Y29kZS1mb3ItaW9zLWRldmVsb3Bt
ZW50IChQYXJ0IDEpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDcwNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQYXRjaCBieSBLZWl0aCBSb2xsaW4gYW5kIEpvbmF0aGFuIEJlZGFyZC4KKworICAgICAg
ICBSZXBsYWNlIGNvbmZpZ3VyZS14Y29kZS1mb3ItaW9zLWRldmVsb3BtZW50IHdpdGggYSBQeXRo
b24gc2NyaXB0IHRoYXQgd29ya3MgZm9yIGlPUywKKyAgICAgICAgd2F0Y2hPUyBhbmQgdHZPUy4K
KworICAgICAgICAqIFNjcmlwdHMvY29uZmlndXJlLXhjb2RlLWZvci1lbWJlZGRlZC1kZXZlbG9w
bWVudDogQWRkZWQuCisKIDIwMjAtMDYtMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgV29yayBhcm91bmQgYnJva2VuIHN5c3RlbSB2ZXJzaW9uIG1h
Y3JvCkluZGV4OiBUb29scy9TY3JpcHRzL2NvbmZpZ3VyZS14Y29kZS1mb3ItZW1iZWRkZWQtZGV2
ZWxvcG1lbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9jb25maWd1cmUteGNvZGUtZm9y
LWVtYmVkZGVkLWRldmVsb3BtZW50CShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvY29u
ZmlndXJlLXhjb2RlLWZvci1lbWJlZGRlZC1kZXZlbG9wbWVudAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMyOSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIworIyBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK2ltcG9ydCBlcnJubworaW1wb3J0IG9zCitpbXBvcnQgcGF0aGxpYgoraW1wb3J0IHJlCitp
bXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRlbXBm
aWxlCisKK2Zyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZSBhcyBFVAorCitNSVNTSU5H
X0hFQURFUlMgPSBbCisgICAgInVzci9pbmNsdWRlL2xpYnhzbHQiLAorICAgICJ1c3IvaW5jbHVk
ZS9tYWNoL21hY2hfdHlwZXMuZGVmcyIsCisgICAgInVzci9pbmNsdWRlL21hY2gvbWFjaGluZS9t
YWNoaW5lX3R5cGVzLmRlZnMiLAorICAgICJ1c3IvaW5jbHVkZS9tYWNoL3N0ZF90eXBlcy5kZWZz
IiwKKyAgICAidXNyL2luY2x1ZGUvb2JqYy9Qcm90b2NvbC5oIiwKKyAgICAidXNyL2luY2x1ZGUv
b2JqYy9vYmpjLWNsYXNzLmgiLAorICAgICJ1c3IvaW5jbHVkZS9vYmpjL29iamMtcnVudGltZS5o
IiwKKyAgICAidXNyL2luY2x1ZGUvcmVhZGxpbmUvaGlzdG9yeS5oIiwKKyAgICAidXNyL2luY2x1
ZGUvcmVhZGxpbmUvcmVhZGxpbmUuaCIsCitdCisKK01JU1NJTkdfRlJBTUVXT1JLUyA9IFsKKyAg
ICAoIkFWS2l0LmZyYW1ld29yayIsIEZhbHNlKSwKKyAgICAoIkF1ZGlvVG9vbGJveC5mcmFtZXdv
cmsiLCBUcnVlKSwKKyAgICAoIkF1ZGlvVW5pdC5mcmFtZXdvcmsiLCBGYWxzZSksCisgICAgKCJD
Rk5ldHdvcmsuZnJhbWV3b3JrIiwgVHJ1ZSksCisgICAgKCJDb3JlSW1hZ2UuZnJhbWV3b3JrIiwg
RmFsc2UpLAorICAgICgiSU9LaXQuZnJhbWV3b3JrIiwgVHJ1ZSksCisgICAgKCJJT1N1cmZhY2Uu
ZnJhbWV3b3JrIiwgVHJ1ZSksCisgICAgKCJMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayIs
IEZhbHNlKSwKKyAgICAoIk1lZGlhQWNjZXNzaWJpbGl0eS5mcmFtZXdvcmsiLCBGYWxzZSksCisg
ICAgKCJNZWRpYVRvb2xib3guZnJhbWV3b3JrIiwgRmFsc2UpLAorICAgICgiTWV0YWwuZnJhbWV3
b3JrIiwgVHJ1ZSksCisgICAgKCJPcGVuR0xFUy5mcmFtZXdvcmsiLCBUcnVlKSwKKyAgICAoIlF1
YXJ0ekNvcmUuZnJhbWV3b3JrIiwgVHJ1ZSksCisgICAgKCJVSUtpdC5mcmFtZXdvcmsiLCBUcnVl
KSwKKyAgICAoIlZpZGVvVG9vbGJveC5mcmFtZXdvcmsiLCBGYWxzZSksCitdCisKK1hDU1BFQ19J
TkZPID0gWworICAgIHsKKyAgICAgICAgImlkIjogICAgICAgImNvbS5hcHBsZS5wYWNrYWdlLXR5
cGUubWFjaC1vLWV4ZWN1dGFibGUiLAorICAgICAgICAic291cmNlIjogICAiUGxhdGZvcm1zL01h
Y09TWC5wbGF0Zm9ybS9EZXZlbG9wZXIvTGlicmFyeS9YY29kZS9TcGVjaWZpY2F0aW9ucy9NYWNP
U1ggUGFja2FnZSBUeXBlcy54Y3NwZWMiLAorICAgICAgICAiZGVzdCI6ICAgICAiLi4vUGx1Z0lu
cy9JREVpT1NTdXBwb3J0Q29yZS5pZGVwbHVnaW4vQ29udGVudHMvUmVzb3VyY2VzL0VtYmVkZGVk
LVNoYXJlZC54Y3NwZWMiCisgICAgfSwKKyAgICB7CisgICAgICAgICJpZCI6ICAgICAgICJjb20u
YXBwbGUucHJvZHVjdC10eXBlLnRvb2wiLAorICAgICAgICAic291cmNlIjogICAiUGxhdGZvcm1z
L01hY09TWC5wbGF0Zm9ybS9EZXZlbG9wZXIvTGlicmFyeS9YY29kZS9TcGVjaWZpY2F0aW9ucy9N
YWNPU1ggUHJvZHVjdCBUeXBlcy54Y3NwZWMiLAorICAgICAgICAiZGVzdCI6ICAgICAiLi4vUGx1
Z0lucy9JREVpT1NTdXBwb3J0Q29yZS5pZGVwbHVnaW4vQ29udGVudHMvUmVzb3VyY2VzL0VtYmVk
ZGVkLVNoYXJlZC54Y3NwZWMiCisgICAgfSwKK10KKworQVZBSUxBQklMSVRZX0ZJTEUgPSBwYXRo
bGliLlBhdGgoInVzci9sb2NhbC9pbmNsdWRlL0F2YWlsYWJpbGl0eVByb2hpYml0ZWRJbnRlcm5h
bC5oIikKK0FWQUlMQUJJTFRZX1RFWFQgPSAiIiJcCisvLyBIYW5kbGUgX19JT1NfUFJPSElCSVRF
RCBhbmQgZnJpZW5kcy4KKyN1bmRlZiBfX09TX0FWQUlMQUJJTElUWQorI2RlZmluZSBfX09TX0FW
QUlMQUJJTElUWSguLi4pCisKKy8vIFRha2UgY2FyZSBvZiB7QSxTfVBJX0FWQUlMQUJMRXssX0JF
R0lOLF9FTkR9CisjdW5kZWYgX19BUElfQVZBSUxBQkxFX0dFVF9NQUNSTworI2RlZmluZSBfX0FQ
SV9BVkFJTEFCTEVfR0VUX01BQ1JPKC4uLikgX19OVUxMX0FWQUlMQUJJTElUWQorCisvLyBUYWtl
IGNhcmUgb2Yge0EsU31QSV9ERVBSRUNBVEVEeyxXSVRIX1JFUExBQ0VNRU5UfXssX0JFR0lOLF9F
TkR9CisjdW5kZWYgX19BUElfREVQUkVDQVRFRF9NU0dfR0VUX01BQ1JPCisjZGVmaW5lIF9fQVBJ
X0RFUFJFQ0FURURfTVNHX0dFVF9NQUNSTyguLi4pIF9fTlVMTF9BVkFJTEFCSUxJVFkKKworLy8g
VGFrZSBjYXJlIG9mIEFQSV9VTkFWQUlMQUJMRXssX0JFR0lOLF9FTkR9CisjdW5kZWYgX19BUElf
VU5BVkFJTEFCTEVfR0VUX01BQ1JPCisjZGVmaW5lIF9fQVBJX1VOQVZBSUxBQkxFX0dFVF9NQUNS
TyguLi4pIF9fTlVMTF9BVkFJTEFCSUxJVFkKKworI2RlZmluZSBfX05VTExfQVZBSUxBQklMSVRZ
KC4uLikKKyIiIgorCitTREtTX1RPX1VQREFURSA9IFsKKyAgICAiaXBob25lb3MiLAorICAgICJp
cGhvbmVzaW11bGF0b3IiLAorICAgICJhcHBsZXR2b3MiLAorICAgICJhcHBsZXR2c2ltdWxhdG9y
IiwKKyAgICAid2F0Y2hvcyIsCisgICAgIndhdGNoc2ltdWxhdG9yIiwKK10KKworUExJU1RfQlVE
RFlfUEFUSCA9IHBhdGhsaWIuUGF0aCgiL3Vzci9saWJleGVjL1BsaXN0QnVkZHkiKQorCisKK2Rl
ZiB4Y29kZV9kZXZlbG9wZXJfZGlyKCk6CisgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oCisg
ICAgICAgIFsieGNvZGUtc2VsZWN0IiwgIi1wIl0sCisgICAgICAgIGNhcHR1cmVfb3V0cHV0PVRy
dWUsIGVuY29kaW5nPSJ1dGYtOCIsIGNoZWNrPVRydWUsCisgICAgKQorICAgIHJldHVybiBwYXRo
bGliLlBhdGgocmVzdWx0LnN0ZG91dC5zdHJpcCgpKQorCisKK2RlZiBzZGtfZGlyZWN0b3J5KHNk
ayk6CisgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oCisgICAgICAgIFsieGNydW4iLCAiLS1z
ZGsiLCBzZGssICItLXNob3ctc2RrLXBhdGgiXSwKKyAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1
ZSwgZW5jb2Rpbmc9InV0Zi04IiwgY2hlY2s9VHJ1ZSwKKyAgICApCisgICAgcmV0dXJuIHBhdGhs
aWIuUGF0aChyZXN1bHQuc3Rkb3V0LnN0cmlwKCkpCisKKworZGVmIGdldF9hbmRfY2hlY2tfc2Rr
X2RpcmVjdG9yaWVzKHNvdXJjZV9zZGssIGRlc3Rfc2RrKToKKyAgICBzb3VyY2Vfc2RrX3BhdGgg
PSBzZGtfZGlyZWN0b3J5KHNvdXJjZV9zZGspCisgICAgZGVzdF9zZGtfcGF0aCA9IHNka19kaXJl
Y3RvcnkoZGVzdF9zZGspCisKKyAgICBpZiBub3Qgc291cmNlX3Nka19wYXRoOgorICAgICAgICBy
YWlzZSBSdW50aW1lRXJyb3IoZiJDb3VsZCBub3QgZmluZCBTREs6IHtzb3VyY2Vfc2RrfSIpCisK
KyAgICBpZiBub3QgZGVzdF9zZGtfcGF0aDoKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKGYi
Q291bGQgbm90IGZpbmQgU0RLOiB7ZGVzdF9zZGt9IikKKworICAgIHByaW50KHNvdXJjZV9zZGtf
cGF0aCkKKyAgICBwcmludChkZXN0X3Nka19wYXRoKQorICAgIHJldHVybiBzb3VyY2Vfc2RrX3Bh
dGgsIGRlc3Rfc2RrX3BhdGgKKworCitkZWYgZG9fY29weShzb3VyY2VfcGF0aCwgZGVzdF9wYXRo
KToKKworICAgIGRlZiBlbnN1cmVfcGFyZW50X2V4aXN0cyhwYXRoKToKKyAgICAgICAgb3MubWFr
ZWRpcnMocGF0aC5wYXJlbnQsIGV4aXN0X29rPVRydWUpCisKKyAgICBkZWYgY29weV9maWxlKHNv
dXJjZV9wYXRoLCBkZXN0X3BhdGgpOgorICAgICAgICBwcmludChmIkNvcHlpbmcgZmlsZSIpCisg
ICAgICAgIHByaW50KGYiRnJvbToge3NvdXJjZV9wYXRofSIpCisgICAgICAgIHByaW50KGYiVG86
ICAge2Rlc3RfcGF0aH0iKQorICAgICAgICBpZiBkZXN0X3BhdGguZXhpc3RzKCk6CisgICAgICAg
ICAgICBkZXN0X3BhdGgudW5saW5rKCkKKyAgICAgICAgZW5zdXJlX3BhcmVudF9leGlzdHMoZGVz
dF9wYXRoKQorICAgICAgICBzaHV0aWwuY29weTIoc291cmNlX3BhdGgsIGRlc3RfcGF0aCkKKwor
ICAgIGRlZiBjb3B5X2RpcmVjdG9yeShzb3VyY2VfcGF0aCwgZGVzdF9wYXRoKToKKyAgICAgICAg
cHJpbnQoZiJDb3B5aW5nIGRpcmVjdG9yeSIpCisgICAgICAgIHByaW50KGYiRnJvbToge3NvdXJj
ZV9wYXRofSIpCisgICAgICAgIHByaW50KGYiVG86ICAge2Rlc3RfcGF0aH0iKQorICAgICAgICBp
ZiBkZXN0X3BhdGguZXhpc3RzKCk6CisgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRlc3RfcGF0
aCkKKyAgICAgICAgZW5zdXJlX3BhcmVudF9leGlzdHMoZGVzdF9wYXRoKQorICAgICAgICBzaHV0
aWwuY29weXRyZWUoc291cmNlX3BhdGgsIGRlc3RfcGF0aCkKKworICAgIGlmIHNvdXJjZV9wYXRo
LmlzX2ZpbGUoKToKKyAgICAgICAgY29weV9maWxlKHNvdXJjZV9wYXRoLCBkZXN0X3BhdGgpCisg
ICAgICAgIHJldHVybgorCisgICAgaWYgc291cmNlX3BhdGguaXNfZGlyKCk6CisgICAgICAgIGNv
cHlfZGlyZWN0b3J5KHNvdXJjZV9wYXRoLCBkZXN0X3BhdGgpCisgICAgICAgIHJldHVybgorCisg
ICAgcmFpc2UgUnVudGltZUVycm9yKGYie3NvdXJjZV9wYXRofSBkb2VzIG5vdCBleGlzdCIpCisK
KworIyAudGJkIGZpbGVzIGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIGxpbmsgYSBw
cm9kdWN0IHRvIGEKKyMgbGlicmFyeS9mcmFtZXdvcmsuIFRoaXMgaW5mb3JtYXRpb24gaW5jbHVk
ZXMgdGhlIGFyY2hpdGVjdHVyZSB0aGF0IHRoZQorIyBsaWJyYXJ5IGlzIGJ1aWx0IGZvci4gSWYg
d2UncmUgY29weWluZyBmcm9tIGFuIFNESyB0aGF0IHN1cHBvcnRzIG9uZSBzZXQgb2YKKyMgYXJj
aGl0ZWN0dXJlcyB0byBhbiBTREsgdGhhdCBzdXBwb3J0cyBhbm90aGVyIHNldCBvZiBhcmNoaXRl
Y3R1cmVzLCB3ZSBuZWVkCisjIHRvIGFkanVzdCB0aGF0IGluZm9ybWF0aW9uIGluIHRoZSAudGJk
IGZpbGUuCisjCisjIE5vdGUgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIGJlIHRvbyBwYXJ0aWN1bGFy
IGFib3V0IHRoaXMuIFdlIG9ubHkgbmVlZCB0bworIyBsaW5rOyB3ZSBkb24ndCBuZWVkIHRvIHJ1
bi4gVGhpcyBhbGxvd3MgdXMgdG8gc2ltcGx5IHNwZWNpZnkgdGhlIGZ1bGwgc2V0IG9mCisjIGFy
Y2hpdGVjdHVyZXMgZm9yIHdoaWNoIFdlYktpdCBpcyBidWlsdCwgcmVnYXJkbGVzcyBvZiB3aGV0
aGVyIHRoZSBhc3NvY2lhdGVkCisjIGxpYnJhcnkvZnJhbWV3b3JrIHdhcyBhY3R1YWxseSBidWls
dCBmb3IgYWxsIHRob3NlIGFyY2hpdGVjdHVyZXMuCisKK2RlZiBwYXRjaF90YmRfYXJjaGl0ZWN0
dXJlKGZyYW1ld29ya19wYXRoKToKKyAgICBmb3IgdGJkX3BhdGggaW4gZnJhbWV3b3JrX3BhdGgu
Z2xvYigiKi50YmQiKToKKyAgICAgICAgd2l0aCBvcGVuKHRiZF9wYXRoLCAiciIpIGFzIGY6Cisg
ICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKworICAgICAgICBtb2RpZmllZF9saW5l
cyA9IFtdCisgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAgaWYgcmUubWF0
Y2goIi4qYXJjaHM6ICtcWy4qXF0iLCBsaW5lKSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg
ICBsaW5lID0gcmUuc3ViKCJcWy4qXF0iLCAiWyBpMzg2LCB4ODZfNjQsIGFybTY0LCBhcm02NGUs
IGFybTY0XzMyLCBhcm12N2sgXSIsIGxpbmUpCisgICAgICAgICAgICBtb2RpZmllZF9saW5lcy5h
cHBlbmQobGluZSkKKworICAgICAgICB3aXRoIG9wZW4odGJkX3BhdGgsICJ3IikgYXMgZjoKKyAg
ICAgICAgICAgIGYud3JpdGVsaW5lcyhtb2RpZmllZF9saW5lcykKKworCisjIFhjb2RlIGlzIGRy
aXZlbiBieSAueGNzcGVjIGZpbGVzLiBUaGVzZSBkZXNjcmliZSBtYW55IGFzcGVjdHMgb2YgdGhl
IHN5c3RlbSwKKyMgaW5jbHVkaW5nIHdoYXQgdG8gYnVpbGQgYW5kIGhvdyB0byBidWlsZCBpdC4g
VGhlc2UgLnhjc3BlYyBmaWxlcyBjYW4gYmUKKyMgZ2xvYmFsIG9yIHRoZXkgY2FuIGJlIHBsYXRm
b3JtLSBvciBTREstc3BlY2lmaWMuIEluIHRoZSBjYXNlIG9mIGJ1aWxkaW5nCisjIHByb2R1Y3Rz
IGZvciB0aGUgZW1iZWRkZWQgc3lzdGVtcywgdGhlcmUgaXMgc29tZSBpbmZvcm1hdGlvbiBpbiBz
b21lIG1hY09TCisjIC54Y3NwZWMgZmlsZXMgdGhhdCBuZWVkIHRvIGJlIHRyYW5zZmVycmVkIHRv
IHRoZSBlbWJlZGRlZCBwbGF0Zm9ybXMuIFRoaXMKKyMgZnVuY3Rpb24gZmluZHMgdGhhdCBpbmZv
cm1hdGlvbiwgZXh0cmFjdHMgaXQgZnJvbSB0aGUgbWFjT1MgZmlsZXMsIGFuZCBjb3BpZXMKKyMg
aXQgdG8gdGhlIGVtYmVkZGVkIGZpbGVzLgorCitkZWYgdXBkYXRlX3hjc3BlY19maWxlcygpOgor
CisgICAgZGVmIHJlYWRfc3BlYyhzcGVjX3BhdGgpOgorICAgICAgICAiIiJSZWFkIGEgLnhjc3Bl
YyBmaWxlIGFuZCByZXR1cm4gaXRzIGNvbnRlbnRzIGFzIGFuIFhNTCBET00gb2JqZWN0LiIiIgor
CisgICAgICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MucnVuKAorICAgICAgICAgICAgW1BMSVNUX0JV
RERZX1BBVEgsICIteCIsICItYyIsICJQcmludCIsIHNwZWNfcGF0aF0sCisgICAgICAgICAgICBj
YXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0idXRmLTgiLCBjaGVjaz1UcnVlLAorICAgICAg
ICApCisgICAgICAgIHJldHVybiBFVC5mcm9tc3RyaW5nKHJlc3VsdC5zdGRvdXQuc3RyaXAoKSkK
KworICAgIGRlZiBmaW5kX3NwZWNfZW50cnlfaW5kZXgoc3BlYywgaWRlbnRpZmllcik6CisgICAg
ICAgICIiIkdpdmVuIGFuIFhNTCBET00gb2JqZWN0IHJlcHJlc2VudGluZyBhbiAueGNzcGVjIGZp
bGUsIGxvb2sgZm9yIGFuCisgICAgICAgIGVudHJ5IHRoYXQgaGFzIGEga2V5IG9mICJJZGVudGlm
aWVyIiBhbmQgYSB2YWx1ZSBlcXVhbCB0byB0aGUgZ2l2ZW4KKyAgICAgICAgdmFsdWUuIElmIGZv
dW5kLCByZXR1cm4gaXRzIGluZGV4IGluIHRoZSBhcnJheSBvZiBzdWNoIGVudHJpZXMuIiIiCisK
KyAgICAgICAgZm9yIGluZGV4LCBzcGVjX2VudHJ5IGluIGVudW1lcmF0ZShzcGVjLmZpbmRhbGwo
Ii4vYXJyYXkvZGljdCIpKToKKyAgICAgICAgICAgIHNwZWNfZW50cnlfaXRlciA9IGl0ZXIoc3Bl
Y19lbnRyeSkKKyAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHppcChzcGVjX2VudHJ5X2l0
ZXIsIHNwZWNfZW50cnlfaXRlcik6CisgICAgICAgICAgICAgICAgaWYga2V5LnRhZyA9PSAia2V5
IiBhbmQga2V5LnRleHQgPT0gIklkZW50aWZpZXIiIGFuZCB2YWx1ZS50YWcgPT0gInN0cmluZyIg
YW5kIHZhbHVlLnRleHQgPT0gaWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGluZGV4CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBmb3Igc3BlY19pbmZvIGluIFhDU1BF
Q19JTkZPOgorICAgICAgICBpZGVudGlmaWVyID0gc3BlY19pbmZvWyJpZCJdCisgICAgICAgIHNv
dXJjZV9zcGVjX3BhdGggPSB4Y29kZV9kZXZlbG9wZXJfZGlyKCkgLyBzcGVjX2luZm9bInNvdXJj
ZSJdCisgICAgICAgIGRlc3Rfc3BlY19wYXRoID0geGNvZGVfZGV2ZWxvcGVyX2RpcigpIC8gc3Bl
Y19pbmZvWyJkZXN0Il0KKworICAgICAgICBmb3IgcGF0aCBpbiBbc291cmNlX3NwZWNfcGF0aCwg
ZGVzdF9zcGVjX3BhdGhdOgorICAgICAgICAgICAgaWYgbm90IHBhdGguZXhpc3RzKCk6CisgICAg
ICAgICAgICAgICAgcmFpc2UgRmlsZU5vdEZvdW5kRXJyb3IoZXJybm8uRU5PRU5ULCBvcy5zdHJl
cnJvcihlcnJuby5FTk9FTlQpLCBwYXRoKQorCisgICAgICAgIHNvdXJjZV9zcGVjX2VudHJ5X2lu
ZGV4ID0gZmluZF9zcGVjX2VudHJ5X2luZGV4KHJlYWRfc3BlYyhzb3VyY2Vfc3BlY19wYXRoKSwg
aWRlbnRpZmllcikKKyAgICAgICAgZGVzdF9zcGVjX2VudHJ5X2luZGV4ID0gZmluZF9zcGVjX2Vu
dHJ5X2luZGV4KHJlYWRfc3BlYyhkZXN0X3NwZWNfcGF0aCksIGlkZW50aWZpZXIpCisKKyAgICAg
ICAgaWYgc291cmNlX3NwZWNfZW50cnlfaW5kZXggaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNl
IFJ1bnRpbWVFcnJvcihmIlVuYWJsZSB0byBmaW5kIHhjc3BlYyBlbnRyeSBmb3Ige2lkZW50aWZp
ZXJ9IGluIHtzb3VyY2Vfc3BlY19wYXRofSIpCisKKyAgICAgICAgaWYgZGVzdF9zcGVjX2VudHJ5
X2luZGV4IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcHJpbnQoZiJ4Y3NwZWMgZW50cnkgZm9y
IHtpZGVudGlmaWVyfSBhbHJlYWR5IGV4aXN0cyBpbiB7ZGVzdF9zcGVjX3BhdGh9LCBza2lwcGlu
ZyIpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICByZXN1bHQgPSBzdWJwcm9jZXNzLnJ1
bigKKyAgICAgICAgICAgIFtQTElTVF9CVUREWV9QQVRILCAiLXgiLCAiLWMiLCBmIlByaW50IHtz
b3VyY2Vfc3BlY19lbnRyeV9pbmRleH0iLCBzb3VyY2Vfc3BlY19wYXRoXSwKKyAgICAgICAgICAg
IGNhcHR1cmVfb3V0cHV0PVRydWUsIGVuY29kaW5nPSJ1dGYtOCIsIGNoZWNrPVRydWUsCisgICAg
ICAgICkKKyAgICAgICAgc3BlY19hc194bWxfc25pcHBldCA9IHJlc3VsdC5zdGRvdXQuc3RyaXAo
KQorCisgICAgICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKG1vZGU9InciLCBl
bmNvZGluZz0idXRmLTgiKSBhcyB0ZW1wOgorICAgICAgICAgICAgdGVtcC53cml0ZShzcGVjX2Fz
X3htbF9zbmlwcGV0KQorICAgICAgICAgICAgdGVtcC5mbHVzaCgpICMgSXQncyBhbWF6aW5nIGhv
dyBpbXBvcnRhbnQgdGhpcyBsaW5lIGlzLgorICAgICAgICAgICAgaWYgbm90IGRlc3Rfc3BlY19w
YXRoLmV4aXN0cygpOgorICAgICAgICAgICAgICAgIHByaW50KGYiQ3JlYXRpbmc6IHtkZXN0X3Nw
ZWNfcGF0aH0iKQorICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MucnVuKFtQTElTVF9CVUREWV9Q
QVRILCAiLWMiLCAiY2xlYXIgYXJyYXkiLCBkZXN0X3NwZWNfcGF0aF0sIGNhcHR1cmVfb3V0cHV0
PVRydWUsIGNoZWNrPVRydWUpCisgICAgICAgICAgICBwcmludChmIkNvcHlpbmc6ICB7aWRlbnRp
Zmllcn0iKQorICAgICAgICAgICAgcHJpbnQoZiJGcm9tOiAgICAge3NvdXJjZV9zcGVjX3BhdGh9
IikKKyAgICAgICAgICAgIHByaW50KGYiVG86ICAgICAgIHtkZXN0X3NwZWNfcGF0aH0iKQorICAg
ICAgICAgICAgc3VicHJvY2Vzcy5ydW4oW1BMSVNUX0JVRERZX1BBVEgsICItYyIsICJhZGQgMCBk
aWN0IiwgZGVzdF9zcGVjX3BhdGhdLCBjYXB0dXJlX291dHB1dD1UcnVlLCBjaGVjaz1UcnVlKQor
ICAgICAgICAgICAgc3VicHJvY2Vzcy5ydW4oW1BMSVNUX0JVRERZX1BBVEgsICItYyIsIGYibWVy
Z2Uge3RlbXAubmFtZX0gMCIsIGRlc3Rfc3BlY19wYXRoXSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwg
Y2hlY2s9VHJ1ZSkKKworCisjIFdlYktpdCBuZWVkcyBzb21lIGZpbGVzIGZyb20gdGhlIG1hY09T
IFNESyBpbiBvcmRlciB0byBidWlsZCBvbiB0aGUgZW1iZWRkZWQKKyMgcGxhdGZvcm1zLiBDb3B5
IHRob3NlIGhlYWRlcnMgZnJvbSB0aGUgbWFjT1MgU0RLIHRvIHRoZSBvdGhlciBTREtzLiBOb3Rl
IHRoYXQKKyMgdGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCB0aGUgcmVzdWx0aW5nIHByb2R1Y3Qg
Y2FuIHJ1biAtLSB3ZSBqdXN0IHdhbnQgdG8KKyMgYnVpbGQuCisKK2RlZiBjb3B5X21pc3Npbmdf
aGVhZGVycyhzb3VyY2Vfc2RrLCBkZXN0X3Nkayk6CisgICAgaWYgc291cmNlX3NkayA9PSBkZXN0
X3NkazoKKyAgICAgICAgcmV0dXJuCisgICAgc291cmNlX3Nka19wYXRoLCBkZXN0X3Nka19wYXRo
ID0gZ2V0X2FuZF9jaGVja19zZGtfZGlyZWN0b3JpZXMoc291cmNlX3NkaywgZGVzdF9zZGspCisg
ICAgZm9yIG1pc3NpbmdfaGVhZGVyIGluIE1JU1NJTkdfSEVBREVSUzoKKyAgICAgICAgZG9fY29w
eShzb3VyY2Vfc2RrX3BhdGggLyBtaXNzaW5nX2hlYWRlciwgZGVzdF9zZGtfcGF0aCAvIG1pc3Np
bmdfaGVhZGVyKQorCisKK2RlZiBjb3B5X21pc3NpbmdfZnJhbWV3b3Jrcyhzb3VyY2Vfc2RrLCBk
ZXN0X3Nkayk6CisgICAgaWYgc291cmNlX3NkayA9PSBkZXN0X3NkazoKKyAgICAgICAgcmV0dXJu
CisgICAgc291cmNlX3Nka19wYXRoLCBkZXN0X3Nka19wYXRoID0gZ2V0X2FuZF9jaGVja19zZGtf
ZGlyZWN0b3JpZXMoc291cmNlX3NkaywgZGVzdF9zZGspCisgICAgc291cmNlX2ZyYW1ld29ya3Nf
cGF0aCA9IHNvdXJjZV9zZGtfcGF0aCAvICJTeXN0ZW0iIC8gIkxpYnJhcnkiIC8gIkZyYW1ld29y
a3MiCisgICAgZGVzdF9mcmFtZXdvcmtzX3BhdGggPSBkZXN0X3Nka19wYXRoIC8gIlN5c3RlbSIg
LyAiTGlicmFyeSIgLyAiRnJhbWV3b3JrcyIKKyAgICBmb3IgbWlzc2luZ19mcmFtZXdvcmssIGZv
cmNlIGluIE1JU1NJTkdfRlJBTUVXT1JLUzoKKyAgICAgICAgc291cmNlX2ZyYW1ld29ya19wYXRo
ID0gc291cmNlX2ZyYW1ld29ya3NfcGF0aCAvIG1pc3NpbmdfZnJhbWV3b3JrCisgICAgICAgIGRl
c3RfZnJhbWV3b3JrX3BhdGggPSBkZXN0X2ZyYW1ld29ya3NfcGF0aCAvIG1pc3NpbmdfZnJhbWV3
b3JrCisgICAgICAgIGlmIGZvcmNlIG9yIG5vdCBkZXN0X2ZyYW1ld29ya19wYXRoLmV4aXN0cygp
OgorICAgICAgICAgICAgZG9fY29weShzb3VyY2VfZnJhbWV3b3JrX3BhdGgsIGRlc3RfZnJhbWV3
b3JrX3BhdGgpCisgICAgICAgICAgICBwYXRjaF90YmRfYXJjaGl0ZWN0dXJlKGRlc3RfZnJhbWV3
b3JrX3BhdGgpCisKKworIyBTb21lIGZ1bmN0aW9ucyB0aGF0IFdlYktpdCBuZWVkcyB0byBjYWxs
IGFyZSBtYXJrZWQgYXMgInVuYXZhaWxhYmxlIiBvbiB0aGUKKyMgZW1iZWRkZWQgcGxhdGZvcm1z
LiBDcmVhdGUgYSBzdHViIGhlYWRlciB0aGF0IHdpbGwgbnVsbGlmeSB0aGUgZWZmZWN0IG9mIHRo
ZQorIyBhbm5vdGF0aW9ucyBvbiB0aG9zZSBmdW5jdGlvbnMuIE5vdGUgdGhhdCB0aGVyZSdzIG5v
IGd1YXJhbnRlZSB0aGF0IHRoZQorIyByZXN1bHRpbmcgcHJvZHVjdCBjYW4gcnVuIC0tIHdlIGp1
c3Qgd2FudCB0byBidWlsZC4KKworZGVmIGNyZWF0ZV9hdmFpbGFiaWxpdHlfaGVhZGVyKHNkayk6
CisgICAgc2RrX3BhdGggPSBzZGtfZGlyZWN0b3J5KHNkaykKKyAgICBhdmFpbGFiaWxpdHlfaGVh
ZGVyX3BhdGggPSBzZGtfcGF0aCAvIEFWQUlMQUJJTElUWV9GSUxFCisgICAgcHJpbnQoZiJDcmVh
dGluZy91cGRhdGluZyB7YXZhaWxhYmlsaXR5X2hlYWRlcl9wYXRofSIpCisgICAgb3MubWFrZWRp
cnMoYXZhaWxhYmlsaXR5X2hlYWRlcl9wYXRoLnBhcmVudCwgZXhpc3Rfb2s9VHJ1ZSkKKyAgICB3
aXRoIG9wZW4oYXZhaWxhYmlsaXR5X2hlYWRlcl9wYXRoLCAidyIpIGFzIGY6CisgICAgICAgIGYu
d3JpdGUoQVZBSUxBQklMVFlfVEVYVCkKKworCitkZWYgbWFpbigpOgorICAgIGlmIG5vdCBvcy5n
ZXRldWlkKCkgPT0gMCBhbmQgbm90IG9zLmFjY2Vzcyh4Y29kZV9kZXZlbG9wZXJfZGlyKCksIG9z
LlJfT0sgfCBvcy5XX09LIHwgb3MuWF9PSywgZWZmZWN0aXZlX2lkcz1UcnVlKToKKyAgICAgICAg
cmFpc2UgUnVudGltZUVycm9yKGYie19fZmlsZV9ffSBtdXN0IGJlIHJ1biBhcyByb290IikKKwor
ICAgIHVwZGF0ZV94Y3NwZWNfZmlsZXMoKQorCisgICAgZm9yIHNkayBpbiBTREtTX1RPX1VQREFU
RToKKyAgICAgICAgY29weV9taXNzaW5nX2hlYWRlcnMoIm1hY29zeCIsIHNkaykKKyAgICAgICAg
Y29weV9taXNzaW5nX2ZyYW1ld29ya3MoImlwaG9uZW9zIiwgc2RrKQorICAgICAgICBjcmVhdGVf
YXZhaWxhYmlsaXR5X2hlYWRlcihzZGspCisgICAgcmV0dXJuIDAKKworCitpZiBfX25hbWVfXyA9
PSAiX19tYWluX18iOgorICAgIG1haW4oKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2Ny
aXB0cy9jb25maWd1cmUteGNvZGUtZm9yLWVtYmVkZGVkLWRldmVsb3BtZW50Cl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
QWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBwcm9wZXJ0eQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401059</attachid>
            <date>2020-06-04 12:01:10 -0700</date>
            <delta_ts>2020-06-05 13:48:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207043-20200604120109.patch</filename>
            <type>text/plain</type>
            <size>14013</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MjU0OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDIwLTA2LTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBHZW5lcmFsaXplIGNvbmZpZ3VyZS14Y29kZS1mb3ItaW9zLWRldmVsb3Bt
ZW50IChQYXJ0IDEpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDcwNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQYXRjaCBieSBLZWl0aCBSb2xsaW4gYW5kIEpvbmF0aGFuIEJlZGFyZC4KKworICAgICAg
ICBSZXBsYWNlIGNvbmZpZ3VyZS14Y29kZS1mb3ItaW9zLWRldmVsb3BtZW50IHdpdGggYSBQeXRo
b24gc2NyaXB0IHRoYXQgd29ya3MgZm9yIGlPUywKKyAgICAgICAgd2F0Y2hPUyBhbmQgdHZPUy4K
KworICAgICAgICAqIFNjcmlwdHMvY29uZmlndXJlLXhjb2RlLWZvci1lbWJlZGRlZC1kZXZlbG9w
bWVudDogQWRkZWQuCisKIDIwMjAtMDYtMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgV29yayBhcm91bmQgYnJva2VuIHN5c3RlbSB2ZXJzaW9uIG1h
Y3JvCkluZGV4OiBUb29scy9TY3JpcHRzL2NvbmZpZ3VyZS14Y29kZS1mb3ItZW1iZWRkZWQtZGV2
ZWxvcG1lbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9jb25maWd1cmUteGNvZGUtZm9y
LWVtYmVkZGVkLWRldmVsb3BtZW50CShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvY29u
ZmlndXJlLXhjb2RlLWZvci1lbWJlZGRlZC1kZXZlbG9wbWVudAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMyNCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIworIyBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK2ltcG9ydCBlcnJubworaW1wb3J0IG9zCitpbXBvcnQgcGF0aGxpYgoraW1wb3J0IHJlCitp
bXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRlbXBm
aWxlCisKK2Zyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZSBhcyBFVAorCitNSVNTSU5H
X0hFQURFUlMgPSBbCisgICAgInVzci9pbmNsdWRlL2xpYnhzbHQiLAorICAgICJ1c3IvaW5jbHVk
ZS9tYWNoL21hY2hfdHlwZXMuZGVmcyIsCisgICAgInVzci9pbmNsdWRlL21hY2gvbWFjaGluZS9t
YWNoaW5lX3R5cGVzLmRlZnMiLAorICAgICJ1c3IvaW5jbHVkZS9tYWNoL3N0ZF90eXBlcy5kZWZz
IiwKKyAgICAidXNyL2luY2x1ZGUvb2JqYy9Qcm90b2NvbC5oIiwKKyAgICAidXNyL2luY2x1ZGUv
b2JqYy9vYmpjLWNsYXNzLmgiLAorICAgICJ1c3IvaW5jbHVkZS9vYmpjL29iamMtcnVudGltZS5o
IiwKKyAgICAidXNyL2luY2x1ZGUvcmVhZGxpbmUvaGlzdG9yeS5oIiwKKyAgICAidXNyL2luY2x1
ZGUvcmVhZGxpbmUvcmVhZGxpbmUuaCIsCitdCisKK01JU1NJTkdfRlJBTUVXT1JLUyA9IFsKKyAg
ICAoIkFWS2l0LmZyYW1ld29yayIsIEZhbHNlKSwKKyAgICAoIkF1ZGlvVG9vbGJveC5mcmFtZXdv
cmsiLCBUcnVlKSwKKyAgICAoIkF1ZGlvVW5pdC5mcmFtZXdvcmsiLCBGYWxzZSksCisgICAgKCJD
Rk5ldHdvcmsuZnJhbWV3b3JrIiwgVHJ1ZSksCisgICAgKCJDb3JlSW1hZ2UuZnJhbWV3b3JrIiwg
RmFsc2UpLAorICAgICgiSU9LaXQuZnJhbWV3b3JrIiwgVHJ1ZSksCisgICAgKCJJT1N1cmZhY2Uu
ZnJhbWV3b3JrIiwgVHJ1ZSksCisgICAgKCJMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayIs
IEZhbHNlKSwKKyAgICAoIk1lZGlhQWNjZXNzaWJpbGl0eS5mcmFtZXdvcmsiLCBGYWxzZSksCisg
ICAgKCJNZWRpYVRvb2xib3guZnJhbWV3b3JrIiwgRmFsc2UpLAorICAgICgiTWV0YWwuZnJhbWV3
b3JrIiwgVHJ1ZSksCisgICAgKCJPcGVuR0xFUy5mcmFtZXdvcmsiLCBUcnVlKSwKKyAgICAoIlF1
YXJ0ekNvcmUuZnJhbWV3b3JrIiwgVHJ1ZSksCisgICAgKCJVSUtpdC5mcmFtZXdvcmsiLCBUcnVl
KSwKKyAgICAoIlZpZGVvVG9vbGJveC5mcmFtZXdvcmsiLCBGYWxzZSksCitdCisKK1hDU1BFQ19J
TkZPID0gWworICAgIHsKKyAgICAgICAgImlkIjogICAgICAgImNvbS5hcHBsZS5wYWNrYWdlLXR5
cGUubWFjaC1vLWV4ZWN1dGFibGUiLAorICAgICAgICAic291cmNlIjogICAiUGxhdGZvcm1zL01h
Y09TWC5wbGF0Zm9ybS9EZXZlbG9wZXIvTGlicmFyeS9YY29kZS9TcGVjaWZpY2F0aW9ucy9NYWNP
U1ggUGFja2FnZSBUeXBlcy54Y3NwZWMiLAorICAgICAgICAiZGVzdCI6ICAgICAiLi4vUGx1Z0lu
cy9JREVpT1NTdXBwb3J0Q29yZS5pZGVwbHVnaW4vQ29udGVudHMvUmVzb3VyY2VzL0VtYmVkZGVk
LVNoYXJlZC54Y3NwZWMiCisgICAgfSwKKyAgICB7CisgICAgICAgICJpZCI6ICAgICAgICJjb20u
YXBwbGUucHJvZHVjdC10eXBlLnRvb2wiLAorICAgICAgICAic291cmNlIjogICAiUGxhdGZvcm1z
L01hY09TWC5wbGF0Zm9ybS9EZXZlbG9wZXIvTGlicmFyeS9YY29kZS9TcGVjaWZpY2F0aW9ucy9N
YWNPU1ggUHJvZHVjdCBUeXBlcy54Y3NwZWMiLAorICAgICAgICAiZGVzdCI6ICAgICAiLi4vUGx1
Z0lucy9JREVpT1NTdXBwb3J0Q29yZS5pZGVwbHVnaW4vQ29udGVudHMvUmVzb3VyY2VzL0VtYmVk
ZGVkLVNoYXJlZC54Y3NwZWMiCisgICAgfSwKK10KKworQVZBSUxBQklMSVRZX0ZJTEUgPSBwYXRo
bGliLlBhdGgoInVzci9sb2NhbC9pbmNsdWRlL0F2YWlsYWJpbGl0eVByb2hpYml0ZWRJbnRlcm5h
bC5oIikKK0FWQUlMQUJJTFRZX1RFWFQgPSAiIiJcCisvLyBIYW5kbGUgX19JT1NfUFJPSElCSVRF
RCBhbmQgZnJpZW5kcy4KKyN1bmRlZiBfX09TX0FWQUlMQUJJTElUWQorI2RlZmluZSBfX09TX0FW
QUlMQUJJTElUWSguLi4pCisKKy8vIFRha2UgY2FyZSBvZiB7QSxTfVBJX0FWQUlMQUJMRXssX0JF
R0lOLF9FTkR9CisjdW5kZWYgX19BUElfQVZBSUxBQkxFX0dFVF9NQUNSTworI2RlZmluZSBfX0FQ
SV9BVkFJTEFCTEVfR0VUX01BQ1JPKC4uLikgX19OVUxMX0FWQUlMQUJJTElUWQorCisvLyBUYWtl
IGNhcmUgb2Yge0EsU31QSV9ERVBSRUNBVEVEeyxXSVRIX1JFUExBQ0VNRU5UfXssX0JFR0lOLF9F
TkR9CisjdW5kZWYgX19BUElfREVQUkVDQVRFRF9NU0dfR0VUX01BQ1JPCisjZGVmaW5lIF9fQVBJ
X0RFUFJFQ0FURURfTVNHX0dFVF9NQUNSTyguLi4pIF9fTlVMTF9BVkFJTEFCSUxJVFkKKworLy8g
VGFrZSBjYXJlIG9mIEFQSV9VTkFWQUlMQUJMRXssX0JFR0lOLF9FTkR9CisjdW5kZWYgX19BUElf
VU5BVkFJTEFCTEVfR0VUX01BQ1JPCisjZGVmaW5lIF9fQVBJX1VOQVZBSUxBQkxFX0dFVF9NQUNS
TyguLi4pIF9fTlVMTF9BVkFJTEFCSUxJVFkKKworI2RlZmluZSBfX05VTExfQVZBSUxBQklMSVRZ
KC4uLikKKyIiIgorCitTREtTX1RPX1VQREFURSA9IFsKKyAgICAiaXBob25lb3MiLAorICAgICJp
cGhvbmVzaW11bGF0b3IiLAorICAgICJhcHBsZXR2b3MiLAorICAgICJhcHBsZXR2c2ltdWxhdG9y
IiwKKyAgICAid2F0Y2hvcyIsCisgICAgIndhdGNoc2ltdWxhdG9yIiwKK10KKworUExJU1RfQlVE
RFlfUEFUSCA9IHBhdGhsaWIuUGF0aCgiL3Vzci9saWJleGVjL1BsaXN0QnVkZHkiKQorCisKK2Rl
ZiB4Y29kZV9kZXZlbG9wZXJfZGlyKCk6CisgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oCisg
ICAgICAgIFsieGNvZGUtc2VsZWN0IiwgIi1wIl0sCisgICAgICAgIGNhcHR1cmVfb3V0cHV0PVRy
dWUsIGVuY29kaW5nPSJ1dGYtOCIsIGNoZWNrPVRydWUsCisgICAgKQorICAgIHJldHVybiBwYXRo
bGliLlBhdGgocmVzdWx0LnN0ZG91dC5zdHJpcCgpKQorCisKK2RlZiBzZGtfZGlyZWN0b3J5KHNk
ayk6CisgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oCisgICAgICAgIFsieGNydW4iLCAiLS1z
ZGsiLCBzZGssICItLXNob3ctc2RrLXBhdGgiXSwKKyAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1
ZSwgZW5jb2Rpbmc9InV0Zi04IiwgY2hlY2s9VHJ1ZSwKKyAgICApCisgICAgcmV0dXJuIHBhdGhs
aWIuUGF0aChyZXN1bHQuc3Rkb3V0LnN0cmlwKCkpCisKKworZGVmIGdldF9hbmRfY2hlY2tfc2Rr
X2RpcmVjdG9yaWVzKHNvdXJjZV9zZGssIGRlc3Rfc2RrKToKKyAgICBzb3VyY2Vfc2RrX3BhdGgg
PSBzZGtfZGlyZWN0b3J5KHNvdXJjZV9zZGspCisgICAgZGVzdF9zZGtfcGF0aCA9IHNka19kaXJl
Y3RvcnkoZGVzdF9zZGspCisKKyAgICBpZiBub3Qgc291cmNlX3Nka19wYXRoOgorICAgICAgICBy
YWlzZSBSdW50aW1lRXJyb3IoZiJDb3VsZCBub3QgZmluZCBTREs6IHtzb3VyY2Vfc2RrfSIpCisK
KyAgICBpZiBub3QgZGVzdF9zZGtfcGF0aDoKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKGYi
Q291bGQgbm90IGZpbmQgU0RLOiB7ZGVzdF9zZGt9IikKKworICAgIHByaW50KHNvdXJjZV9zZGtf
cGF0aCkKKyAgICBwcmludChkZXN0X3Nka19wYXRoKQorICAgIHJldHVybiBzb3VyY2Vfc2RrX3Bh
dGgsIGRlc3Rfc2RrX3BhdGgKKworCitkZWYgZG9fY29weShzb3VyY2VfcGF0aCwgZGVzdF9wYXRo
KToKKworICAgIGRlZiBlbnN1cmVfcGFyZW50X2V4aXN0cyhwYXRoKToKKyAgICAgICAgb3MubWFr
ZWRpcnMocGF0aC5wYXJlbnQsIGV4aXN0X29rPVRydWUpCisKKyAgICBkZWYgY29weV9maWxlKHNv
dXJjZV9wYXRoLCBkZXN0X3BhdGgpOgorICAgICAgICBwcmludChmIkNvcHlpbmcgZmlsZSIpCisg
ICAgICAgIHByaW50KGYiRnJvbToge3NvdXJjZV9wYXRofSIpCisgICAgICAgIHByaW50KGYiVG86
ICAge2Rlc3RfcGF0aH0iKQorICAgICAgICBpZiBkZXN0X3BhdGguZXhpc3RzKCk6CisgICAgICAg
ICAgICBkZXN0X3BhdGgudW5saW5rKCkKKyAgICAgICAgZW5zdXJlX3BhcmVudF9leGlzdHMoZGVz
dF9wYXRoKQorICAgICAgICBzaHV0aWwuY29weTIoc291cmNlX3BhdGgsIGRlc3RfcGF0aCkKKwor
ICAgIGRlZiBjb3B5X2RpcmVjdG9yeShzb3VyY2VfcGF0aCwgZGVzdF9wYXRoKToKKyAgICAgICAg
cHJpbnQoZiJDb3B5aW5nIGRpcmVjdG9yeSIpCisgICAgICAgIHByaW50KGYiRnJvbToge3NvdXJj
ZV9wYXRofSIpCisgICAgICAgIHByaW50KGYiVG86ICAge2Rlc3RfcGF0aH0iKQorICAgICAgICBp
ZiBkZXN0X3BhdGguZXhpc3RzKCk6CisgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRlc3RfcGF0
aCkKKyAgICAgICAgZW5zdXJlX3BhcmVudF9leGlzdHMoZGVzdF9wYXRoKQorICAgICAgICBzaHV0
aWwuY29weXRyZWUoc291cmNlX3BhdGgsIGRlc3RfcGF0aCkKKworICAgIGlmIHNvdXJjZV9wYXRo
LmlzX2ZpbGUoKToKKyAgICAgICAgY29weV9maWxlKHNvdXJjZV9wYXRoLCBkZXN0X3BhdGgpCisg
ICAgICAgIHJldHVybgorCisgICAgaWYgc291cmNlX3BhdGguaXNfZGlyKCk6CisgICAgICAgIGNv
cHlfZGlyZWN0b3J5KHNvdXJjZV9wYXRoLCBkZXN0X3BhdGgpCisgICAgICAgIHJldHVybgorCisg
ICAgcmFpc2UgUnVudGltZUVycm9yKGYie3NvdXJjZV9wYXRofSBkb2VzIG5vdCBleGlzdCIpCisK
KworIyAudGJkIGZpbGVzIGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIGxpbmsgYSBw
cm9kdWN0IHRvIGEKKyMgbGlicmFyeS9mcmFtZXdvcmsuIFRoaXMgaW5mb3JtYXRpb24gaW5jbHVk
ZXMgdGhlIGFyY2hpdGVjdHVyZSB0aGF0IHRoZQorIyBsaWJyYXJ5IGlzIGJ1aWx0IGZvci4gSWYg
d2UncmUgY29weWluZyBmcm9tIGFuIFNESyB0aGF0IHN1cHBvcnRzIG9uZSBzZXQgb2YKKyMgYXJj
aGl0ZWN0dXJlcyB0byBhbiBTREsgdGhhdCBzdXBwb3J0cyBhbm90aGVyIHNldCBvZiBhcmNoaXRl
Y3R1cmVzLCB3ZSBuZWVkCisjIHRvIGFkanVzdCB0aGF0IGluZm9ybWF0aW9uIGluIHRoZSAudGJk
IGZpbGUuCisjCisjIE5vdGUgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIGJlIHRvbyBwYXJ0aWN1bGFy
IGFib3V0IHRoaXMuIFdlIG9ubHkgbmVlZCB0bworIyBsaW5rOyB3ZSBkb24ndCBuZWVkIHRvIHJ1
bi4gVGhpcyBhbGxvd3MgdXMgdG8gc2ltcGx5IHNwZWNpZnkgdGhlIGZ1bGwgc2V0IG9mCisjIGFy
Y2hpdGVjdHVyZXMgZm9yIHdoaWNoIFdlYktpdCBpcyBidWlsdCwgcmVnYXJkbGVzcyBvZiB3aGV0
aGVyIHRoZSBhc3NvY2lhdGVkCisjIGxpYnJhcnkvZnJhbWV3b3JrIHdhcyBhY3R1YWxseSBidWls
dCBmb3IgYWxsIHRob3NlIGFyY2hpdGVjdHVyZXMuCisKK2RlZiBwYXRjaF90YmRfYXJjaGl0ZWN0
dXJlKGZyYW1ld29ya19wYXRoKToKKyAgICBmb3IgdGJkX3BhdGggaW4gZnJhbWV3b3JrX3BhdGgu
Z2xvYigiKi50YmQiKToKKyAgICAgICAgd2l0aCBvcGVuKHRiZF9wYXRoLCAiciIpIGFzIGY6Cisg
ICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKworICAgICAgICBtb2RpZmllZF9saW5l
cyA9IFtdCisgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAgaWYgcmUubWF0
Y2goIi4qYXJjaHM6ICtcWy4qXF0iLCBsaW5lKSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg
ICBsaW5lID0gcmUuc3ViKCJcWy4qXF0iLCAiWyBpMzg2LCB4ODZfNjQsIGFybTY0LCBhcm02NGUs
IGFybTY0XzMyLCBhcm12N2sgXSIsIGxpbmUpCisgICAgICAgICAgICBtb2RpZmllZF9saW5lcy5h
cHBlbmQobGluZSkKKworICAgICAgICB3aXRoIG9wZW4odGJkX3BhdGgsICJ3IikgYXMgZjoKKyAg
ICAgICAgICAgIGYud3JpdGVsaW5lcyhtb2RpZmllZF9saW5lcykKKworCisjIFhjb2RlIGlzIGRy
aXZlbiBieSAueGNzcGVjIGZpbGVzLiBUaGVzZSBkZXNjcmliZSBtYW55IGFzcGVjdHMgb2YgdGhl
IHN5c3RlbSwKKyMgaW5jbHVkaW5nIHdoYXQgdG8gYnVpbGQgYW5kIGhvdyB0byBidWlsZCBpdC4g
VGhlc2UgLnhjc3BlYyBmaWxlcyBjYW4gYmUKKyMgZ2xvYmFsIG9yIHRoZXkgY2FuIGJlIHBsYXRm
b3JtLSBvciBTREstc3BlY2lmaWMuIEluIHRoZSBjYXNlIG9mIGJ1aWxkaW5nCisjIHByb2R1Y3Rz
IGZvciB0aGUgZW1iZWRkZWQgc3lzdGVtcywgdGhlcmUgaXMgc29tZSBpbmZvcm1hdGlvbiBpbiBz
b21lIG1hY09TCisjIC54Y3NwZWMgZmlsZXMgdGhhdCBuZWVkIHRvIGJlIHRyYW5zZmVycmVkIHRv
IHRoZSBlbWJlZGRlZCBwbGF0Zm9ybXMuIFRoaXMKKyMgZnVuY3Rpb24gZmluZHMgdGhhdCBpbmZv
cm1hdGlvbiwgZXh0cmFjdHMgaXQgZnJvbSB0aGUgbWFjT1MgZmlsZXMsIGFuZCBjb3BpZXMKKyMg
aXQgdG8gdGhlIGVtYmVkZGVkIGZpbGVzLgorCitkZWYgdXBkYXRlX3hjc3BlY19maWxlcygpOgor
CisgICAgZGVmIHJlYWRfc3BlYyhzcGVjX3BhdGgpOgorICAgICAgICAiIiJSZWFkIGEgLnhjc3Bl
YyBmaWxlIGFuZCByZXR1cm4gaXRzIGNvbnRlbnRzIGFzIGFuIFhNTCBET00gb2JqZWN0LiIiIgor
CisgICAgICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MucnVuKAorICAgICAgICAgICAgW1BMSVNUX0JV
RERZX1BBVEgsICIteCIsICItYyIsICJQcmludCIsIHNwZWNfcGF0aF0sCisgICAgICAgICAgICBj
YXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0idXRmLTgiLCBjaGVjaz1UcnVlLAorICAgICAg
ICApCisgICAgICAgIHJldHVybiBFVC5mcm9tc3RyaW5nKHJlc3VsdC5zdGRvdXQuc3RyaXAoKSkK
KworICAgIGRlZiBmaW5kX3NwZWNfZW50cnlfaW5kZXgoc3BlYywgaWRlbnRpZmllcik6CisgICAg
ICAgICIiIkdpdmVuIGFuIFhNTCBET00gb2JqZWN0IHJlcHJlc2VudGluZyBhbiAueGNzcGVjIGZp
bGUsIGxvb2sgZm9yIGFuCisgICAgICAgIGVudHJ5IHRoYXQgaGFzIGEga2V5IG9mICJJZGVudGlm
aWVyIiBhbmQgYSB2YWx1ZSBlcXVhbCB0byB0aGUgZ2l2ZW4KKyAgICAgICAgdmFsdWUuIElmIGZv
dW5kLCByZXR1cm4gaXRzIGluZGV4IGluIHRoZSBhcnJheSBvZiBzdWNoIGVudHJpZXMuIiIiCisK
KyAgICAgICAgZm9yIGluZGV4LCBzcGVjX2VudHJ5IGluIGVudW1lcmF0ZShzcGVjLmZpbmRhbGwo
Ii4vYXJyYXkvZGljdCIpKToKKyAgICAgICAgICAgIHNwZWNfZW50cnlfaXRlciA9IGl0ZXIoc3Bl
Y19lbnRyeSkKKyAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHppcChzcGVjX2VudHJ5X2l0
ZXIsIHNwZWNfZW50cnlfaXRlcik6CisgICAgICAgICAgICAgICAgaWYga2V5LnRhZyA9PSAia2V5
IiBhbmQga2V5LnRleHQgPT0gIklkZW50aWZpZXIiIGFuZCB2YWx1ZS50YWcgPT0gInN0cmluZyIg
YW5kIHZhbHVlLnRleHQgPT0gaWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGluZGV4CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBmb3Igc3BlY19pbmZvIGluIFhDU1BF
Q19JTkZPOgorICAgICAgICBpZGVudGlmaWVyID0gc3BlY19pbmZvWyJpZCJdCisgICAgICAgIHNv
dXJjZV9zcGVjX3BhdGggPSB4Y29kZV9kZXZlbG9wZXJfZGlyKCkgLyBzcGVjX2luZm9bInNvdXJj
ZSJdCisgICAgICAgIGRlc3Rfc3BlY19wYXRoID0geGNvZGVfZGV2ZWxvcGVyX2RpcigpIC8gc3Bl
Y19pbmZvWyJkZXN0Il0KKworICAgICAgICBmb3IgcGF0aCBpbiBbc291cmNlX3NwZWNfcGF0aCwg
ZGVzdF9zcGVjX3BhdGhdOgorICAgICAgICAgICAgaWYgbm90IHBhdGguZXhpc3RzKCk6CisgICAg
ICAgICAgICAgICAgcmFpc2UgRmlsZU5vdEZvdW5kRXJyb3IoZXJybm8uRU5PRU5ULCBvcy5zdHJl
cnJvcihlcnJuby5FTk9FTlQpLCBwYXRoKQorCisgICAgICAgIHNvdXJjZV9zcGVjX2VudHJ5X2lu
ZGV4ID0gZmluZF9zcGVjX2VudHJ5X2luZGV4KHJlYWRfc3BlYyhzb3VyY2Vfc3BlY19wYXRoKSwg
aWRlbnRpZmllcikKKyAgICAgICAgZGVzdF9zcGVjX2VudHJ5X2luZGV4ID0gZmluZF9zcGVjX2Vu
dHJ5X2luZGV4KHJlYWRfc3BlYyhkZXN0X3NwZWNfcGF0aCksIGlkZW50aWZpZXIpCisKKyAgICAg
ICAgaWYgc291cmNlX3NwZWNfZW50cnlfaW5kZXggaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNl
IFJ1bnRpbWVFcnJvcihmIlVuYWJsZSB0byBmaW5kIHhjc3BlYyBlbnRyeSBmb3Ige2lkZW50aWZp
ZXJ9IGluIHtzb3VyY2Vfc3BlY19wYXRofSIpCisKKyAgICAgICAgaWYgZGVzdF9zcGVjX2VudHJ5
X2luZGV4IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcHJpbnQoZiJ4Y3NwZWMgZW50cnkgZm9y
IHtpZGVudGlmaWVyfSBhbHJlYWR5IGV4aXN0cyBpbiB7ZGVzdF9zcGVjX3BhdGh9LCBza2lwcGlu
ZyIpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICByZXN1bHQgPSBzdWJwcm9jZXNzLnJ1
bigKKyAgICAgICAgICAgIFtQTElTVF9CVUREWV9QQVRILCAiLXgiLCAiLWMiLCBmIlByaW50IHtz
b3VyY2Vfc3BlY19lbnRyeV9pbmRleH0iLCBzb3VyY2Vfc3BlY19wYXRoXSwKKyAgICAgICAgICAg
IGNhcHR1cmVfb3V0cHV0PVRydWUsIGVuY29kaW5nPSJ1dGYtOCIsIGNoZWNrPVRydWUsCisgICAg
ICAgICkKKyAgICAgICAgc3BlY19hc194bWxfc25pcHBldCA9IHJlc3VsdC5zdGRvdXQuc3RyaXAo
KQorCisgICAgICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKG1vZGU9InciLCBl
bmNvZGluZz0idXRmLTgiKSBhcyB0ZW1wOgorICAgICAgICAgICAgdGVtcC53cml0ZShzcGVjX2Fz
X3htbF9zbmlwcGV0KQorICAgICAgICAgICAgdGVtcC5mbHVzaCgpICMgSXQncyBhbWF6aW5nIGhv
dyBpbXBvcnRhbnQgdGhpcyBsaW5lIGlzLgorICAgICAgICAgICAgaWYgbm90IGRlc3Rfc3BlY19w
YXRoLmV4aXN0cygpOgorICAgICAgICAgICAgICAgIHByaW50KGYiQ3JlYXRpbmc6IHtkZXN0X3Nw
ZWNfcGF0aH0iKQorICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MucnVuKFtQTElTVF9CVUREWV9Q
QVRILCAiLWMiLCAiY2xlYXIgYXJyYXkiLCBkZXN0X3NwZWNfcGF0aF0sIGNhcHR1cmVfb3V0cHV0
PVRydWUsIGNoZWNrPVRydWUpCisgICAgICAgICAgICBwcmludChmIkNvcHlpbmc6ICB7aWRlbnRp
Zmllcn0iKQorICAgICAgICAgICAgcHJpbnQoZiJGcm9tOiAgICAge3NvdXJjZV9zcGVjX3BhdGh9
IikKKyAgICAgICAgICAgIHByaW50KGYiVG86ICAgICAgIHtkZXN0X3NwZWNfcGF0aH0iKQorICAg
ICAgICAgICAgc3VicHJvY2Vzcy5ydW4oW1BMSVNUX0JVRERZX1BBVEgsICItYyIsICJhZGQgMCBk
aWN0IiwgZGVzdF9zcGVjX3BhdGhdLCBjYXB0dXJlX291dHB1dD1UcnVlLCBjaGVjaz1UcnVlKQor
ICAgICAgICAgICAgc3VicHJvY2Vzcy5ydW4oW1BMSVNUX0JVRERZX1BBVEgsICItYyIsIGYibWVy
Z2Uge3RlbXAubmFtZX0gMCIsIGRlc3Rfc3BlY19wYXRoXSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwg
Y2hlY2s9VHJ1ZSkKKworCitkZWYgY29weV9taXNzaW5nX2hlYWRlcnMoc291cmNlX3NkaywgZGVz
dF9zZGspOgorICAgIGlmIHNvdXJjZV9zZGsgPT0gZGVzdF9zZGs6CisgICAgICAgIHJldHVybgor
ICAgIHNvdXJjZV9zZGtfcGF0aCwgZGVzdF9zZGtfcGF0aCA9IGdldF9hbmRfY2hlY2tfc2RrX2Rp
cmVjdG9yaWVzKHNvdXJjZV9zZGssIGRlc3Rfc2RrKQorICAgIGZvciBtaXNzaW5nX2hlYWRlciBp
biBNSVNTSU5HX0hFQURFUlM6CisgICAgICAgIGRvX2NvcHkoc291cmNlX3Nka19wYXRoIC8gbWlz
c2luZ19oZWFkZXIsIGRlc3Rfc2RrX3BhdGggLyBtaXNzaW5nX2hlYWRlcikKKworCitkZWYgY29w
eV9taXNzaW5nX2ZyYW1ld29ya3Moc291cmNlX3NkaywgZGVzdF9zZGspOgorICAgIGlmIHNvdXJj
ZV9zZGsgPT0gZGVzdF9zZGs6CisgICAgICAgIHJldHVybgorICAgIHNvdXJjZV9zZGtfcGF0aCwg
ZGVzdF9zZGtfcGF0aCA9IGdldF9hbmRfY2hlY2tfc2RrX2RpcmVjdG9yaWVzKHNvdXJjZV9zZGss
IGRlc3Rfc2RrKQorICAgIHNvdXJjZV9mcmFtZXdvcmtzX3BhdGggPSBzb3VyY2Vfc2RrX3BhdGgg
LyAiU3lzdGVtIiAvICJMaWJyYXJ5IiAvICJGcmFtZXdvcmtzIgorICAgIGRlc3RfZnJhbWV3b3Jr
c19wYXRoID0gZGVzdF9zZGtfcGF0aCAvICJTeXN0ZW0iIC8gIkxpYnJhcnkiIC8gIkZyYW1ld29y
a3MiCisgICAgZm9yIG1pc3NpbmdfZnJhbWV3b3JrLCBmb3JjZSBpbiBNSVNTSU5HX0ZSQU1FV09S
S1M6CisgICAgICAgIHNvdXJjZV9mcmFtZXdvcmtfcGF0aCA9IHNvdXJjZV9mcmFtZXdvcmtzX3Bh
dGggLyBtaXNzaW5nX2ZyYW1ld29yaworICAgICAgICBkZXN0X2ZyYW1ld29ya19wYXRoID0gZGVz
dF9mcmFtZXdvcmtzX3BhdGggLyBtaXNzaW5nX2ZyYW1ld29yaworICAgICAgICBpZiBmb3JjZSBv
ciBub3QgZGVzdF9mcmFtZXdvcmtfcGF0aC5leGlzdHMoKToKKyAgICAgICAgICAgIGRvX2NvcHko
c291cmNlX2ZyYW1ld29ya19wYXRoLCBkZXN0X2ZyYW1ld29ya19wYXRoKQorICAgICAgICAgICAg
cGF0Y2hfdGJkX2FyY2hpdGVjdHVyZShkZXN0X2ZyYW1ld29ya19wYXRoKQorCisKKyMgU29tZSBm
dW5jdGlvbnMgdGhhdCBXZWJLaXQgbmVlZHMgdG8gY2FsbCBhcmUgbWFya2VkIGFzICJ1bmF2YWls
YWJsZSIgb24gdGhlCisjIGVtYmVkZGVkIHBsYXRmb3Jtcy4gQ3JlYXRlIGEgc3R1YiBoZWFkZXIg
dGhhdCB3aWxsIG51bGxpZnkgdGhlIGVmZmVjdCBvZiB0aGUKKyMgYW5ub3RhdGlvbnMgb24gdGhv
c2UgZnVuY3Rpb25zLiBOb3RlIHRoYXQgdGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCB0aGUKKyMg
cmVzdWx0aW5nIHByb2R1Y3QgY2FuIHJ1biAtLSB3ZSBqdXN0IHdhbnQgdG8gYnVpbGQuCisKK2Rl
ZiBjcmVhdGVfYXZhaWxhYmlsaXR5X2hlYWRlcihzZGspOgorICAgIHNka19wYXRoID0gc2RrX2Rp
cmVjdG9yeShzZGspCisgICAgYXZhaWxhYmlsaXR5X2hlYWRlcl9wYXRoID0gc2RrX3BhdGggLyBB
VkFJTEFCSUxJVFlfRklMRQorICAgIHByaW50KGYiQ3JlYXRpbmcvdXBkYXRpbmcge2F2YWlsYWJp
bGl0eV9oZWFkZXJfcGF0aH0iKQorICAgIG9zLm1ha2VkaXJzKGF2YWlsYWJpbGl0eV9oZWFkZXJf
cGF0aC5wYXJlbnQsIGV4aXN0X29rPVRydWUpCisgICAgd2l0aCBvcGVuKGF2YWlsYWJpbGl0eV9o
ZWFkZXJfcGF0aCwgInciKSBhcyBmOgorICAgICAgICBmLndyaXRlKEFWQUlMQUJJTFRZX1RFWFQp
CisKKworZGVmIG1haW4oKToKKyAgICBpZiBub3Qgb3MuZ2V0ZXVpZCgpID09IDAgYW5kIG5vdCBv
cy5hY2Nlc3MoeGNvZGVfZGV2ZWxvcGVyX2RpcigpLCBvcy5SX09LIHwgb3MuV19PSyB8IG9zLlhf
T0ssIGVmZmVjdGl2ZV9pZHM9VHJ1ZSk6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihmIntf
X2ZpbGVfX30gbXVzdCBiZSBydW4gYXMgcm9vdCIpCisKKyAgICB1cGRhdGVfeGNzcGVjX2ZpbGVz
KCkKKworICAgIGZvciBzZGsgaW4gU0RLU19UT19VUERBVEU6CisgICAgICAgIGNvcHlfbWlzc2lu
Z19oZWFkZXJzKCJtYWNvc3giLCBzZGspCisgICAgICAgIGNvcHlfbWlzc2luZ19mcmFtZXdvcmtz
KCJpcGhvbmVvcyIsIHNkaykKKyAgICAgICAgY3JlYXRlX2F2YWlsYWJpbGl0eV9oZWFkZXIoc2Rr
KQorICAgIHJldHVybiAwCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBtYWlu
KCkKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1NjcmlwdHMvY29uZmlndXJlLXhjb2RlLWZv
ci1lbWJlZGRlZC1kZXZlbG9wbWVudApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQoj
IyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401193</attachid>
            <date>2020-06-05 13:48:36 -0700</date>
            <delta_ts>2020-06-05 14:24:49 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-207043-20200605134835.patch</filename>
            <type>text/plain</type>
            <size>14066</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MjY1MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDIwLTA2LTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBHZW5lcmFsaXplIGNvbmZpZ3VyZS14Y29kZS1mb3ItaW9zLWRldmVsb3Bt
ZW50IChQYXJ0IDEpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDcwNDMKKworICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBEYXZpZCBLaWx6ZXIuCisK
KyAgICAgICAgUGF0Y2ggYnkgS2VpdGggUm9sbGluIGFuZCBKb25hdGhhbiBCZWRhcmQuCisKKyAg
ICAgICAgUmVwbGFjZSBjb25maWd1cmUteGNvZGUtZm9yLWlvcy1kZXZlbG9wbWVudCB3aXRoIGEg
UHl0aG9uIHNjcmlwdCB0aGF0IHdvcmtzIGZvciBpT1MsCisgICAgICAgIHdhdGNoT1MgYW5kIHR2
T1MuCisKKyAgICAgICAgKiBTY3JpcHRzL2NvbmZpZ3VyZS14Y29kZS1mb3ItZW1iZWRkZWQtZGV2
ZWxvcG1lbnQ6IEFkZGVkLgorCiAyMDIwLTA2LTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFRleHQgbWFuaXB1bGF0aW9uIHNob3VsZCBleGNsdWRl
IGNoYXJhY3RlcnMgb3V0c2lkZSBvZiB0aGUgdW5pY29kZSBwcml2YXRlIHVzZSBhcmVhCkluZGV4
OiBUb29scy9TY3JpcHRzL2NvbmZpZ3VyZS14Y29kZS1mb3ItZW1iZWRkZWQtZGV2ZWxvcG1lbnQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9jb25maWd1cmUteGNvZGUtZm9yLWVtYmVkZGVk
LWRldmVsb3BtZW50CShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvY29uZmlndXJlLXhj
b2RlLWZvci1lbWJlZGRlZC1kZXZlbG9wbWVudAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMy
NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIworIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAy
MCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisjIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisjIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
aW1wb3J0IGVycm5vCitpbXBvcnQgb3MKK2ltcG9ydCBwYXRobGliCitpbXBvcnQgcmUKK2ltcG9y
dCBzaHV0aWwKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUK
KworZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRUcmVlIGFzIEVUCisKK01JU1NJTkdfSEVB
REVSUyA9IFsKKyAgICAidXNyL2luY2x1ZGUvbGlieHNsdCIsCisgICAgInVzci9pbmNsdWRlL21h
Y2gvbWFjaF90eXBlcy5kZWZzIiwKKyAgICAidXNyL2luY2x1ZGUvbWFjaC9tYWNoaW5lL21hY2hp
bmVfdHlwZXMuZGVmcyIsCisgICAgInVzci9pbmNsdWRlL21hY2gvc3RkX3R5cGVzLmRlZnMiLAor
ICAgICJ1c3IvaW5jbHVkZS9vYmpjL1Byb3RvY29sLmgiLAorICAgICJ1c3IvaW5jbHVkZS9vYmpj
L29iamMtY2xhc3MuaCIsCisgICAgInVzci9pbmNsdWRlL29iamMvb2JqYy1ydW50aW1lLmgiLAor
ICAgICJ1c3IvaW5jbHVkZS9yZWFkbGluZS9oaXN0b3J5LmgiLAorICAgICJ1c3IvaW5jbHVkZS9y
ZWFkbGluZS9yZWFkbGluZS5oIiwKK10KKworTUlTU0lOR19GUkFNRVdPUktTID0gWworICAgICgi
QVZLaXQuZnJhbWV3b3JrIiwgRmFsc2UpLAorICAgICgiQXVkaW9Ub29sYm94LmZyYW1ld29yayIs
IFRydWUpLAorICAgICgiQXVkaW9Vbml0LmZyYW1ld29yayIsIEZhbHNlKSwKKyAgICAoIkNGTmV0
d29yay5mcmFtZXdvcmsiLCBUcnVlKSwKKyAgICAoIkNvcmVJbWFnZS5mcmFtZXdvcmsiLCBGYWxz
ZSksCisgICAgKCJJT0tpdC5mcmFtZXdvcmsiLCBUcnVlKSwKKyAgICAoIklPU3VyZmFjZS5mcmFt
ZXdvcmsiLCBUcnVlKSwKKyAgICAoIkxvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrIiwgRmFs
c2UpLAorICAgICgiTWVkaWFBY2Nlc3NpYmlsaXR5LmZyYW1ld29yayIsIEZhbHNlKSwKKyAgICAo
Ik1lZGlhVG9vbGJveC5mcmFtZXdvcmsiLCBGYWxzZSksCisgICAgKCJNZXRhbC5mcmFtZXdvcmsi
LCBUcnVlKSwKKyAgICAoIk9wZW5HTEVTLmZyYW1ld29yayIsIFRydWUpLAorICAgICgiUXVhcnR6
Q29yZS5mcmFtZXdvcmsiLCBUcnVlKSwKKyAgICAoIlVJS2l0LmZyYW1ld29yayIsIFRydWUpLAor
ICAgICgiVmlkZW9Ub29sYm94LmZyYW1ld29yayIsIEZhbHNlKSwKK10KKworWENTUEVDX0lORk8g
PSBbCisgICAgeworICAgICAgICAiaWQiOiAgICAgICAiY29tLmFwcGxlLnBhY2thZ2UtdHlwZS5t
YWNoLW8tZXhlY3V0YWJsZSIsCisgICAgICAgICJzb3VyY2UiOiAgICJQbGF0Zm9ybXMvTWFjT1NY
LnBsYXRmb3JtL0RldmVsb3Blci9MaWJyYXJ5L1hjb2RlL1NwZWNpZmljYXRpb25zL01hY09TWCBQ
YWNrYWdlIFR5cGVzLnhjc3BlYyIsCisgICAgICAgICJkZXN0IjogICAgICIuLi9QbHVnSW5zL0lE
RWlPU1N1cHBvcnRDb3JlLmlkZXBsdWdpbi9Db250ZW50cy9SZXNvdXJjZXMvRW1iZWRkZWQtU2hh
cmVkLnhjc3BlYyIKKyAgICB9LAorICAgIHsKKyAgICAgICAgImlkIjogICAgICAgImNvbS5hcHBs
ZS5wcm9kdWN0LXR5cGUudG9vbCIsCisgICAgICAgICJzb3VyY2UiOiAgICJQbGF0Zm9ybXMvTWFj
T1NYLnBsYXRmb3JtL0RldmVsb3Blci9MaWJyYXJ5L1hjb2RlL1NwZWNpZmljYXRpb25zL01hY09T
WCBQcm9kdWN0IFR5cGVzLnhjc3BlYyIsCisgICAgICAgICJkZXN0IjogICAgICIuLi9QbHVnSW5z
L0lERWlPU1N1cHBvcnRDb3JlLmlkZXBsdWdpbi9Db250ZW50cy9SZXNvdXJjZXMvRW1iZWRkZWQt
U2hhcmVkLnhjc3BlYyIKKyAgICB9LAorXQorCitBVkFJTEFCSUxJVFlfRklMRSA9IHBhdGhsaWIu
UGF0aCgidXNyL2xvY2FsL2luY2x1ZGUvQXZhaWxhYmlsaXR5UHJvaGliaXRlZEludGVybmFsLmgi
KQorQVZBSUxBQklMVFlfVEVYVCA9ICIiIlwKKy8vIEhhbmRsZSBfX0lPU19QUk9ISUJJVEVEIGFu
ZCBmcmllbmRzLgorI3VuZGVmIF9fT1NfQVZBSUxBQklMSVRZCisjZGVmaW5lIF9fT1NfQVZBSUxB
QklMSVRZKC4uLikKKworLy8gVGFrZSBjYXJlIG9mIHtBLFN9UElfQVZBSUxBQkxFeyxfQkVHSU4s
X0VORH0KKyN1bmRlZiBfX0FQSV9BVkFJTEFCTEVfR0VUX01BQ1JPCisjZGVmaW5lIF9fQVBJX0FW
QUlMQUJMRV9HRVRfTUFDUk8oLi4uKSBfX05VTExfQVZBSUxBQklMSVRZCisKKy8vIFRha2UgY2Fy
ZSBvZiB7QSxTfVBJX0RFUFJFQ0FURUR7LFdJVEhfUkVQTEFDRU1FTlR9eyxfQkVHSU4sX0VORH0K
KyN1bmRlZiBfX0FQSV9ERVBSRUNBVEVEX01TR19HRVRfTUFDUk8KKyNkZWZpbmUgX19BUElfREVQ
UkVDQVRFRF9NU0dfR0VUX01BQ1JPKC4uLikgX19OVUxMX0FWQUlMQUJJTElUWQorCisvLyBUYWtl
IGNhcmUgb2YgQVBJX1VOQVZBSUxBQkxFeyxfQkVHSU4sX0VORH0KKyN1bmRlZiBfX0FQSV9VTkFW
QUlMQUJMRV9HRVRfTUFDUk8KKyNkZWZpbmUgX19BUElfVU5BVkFJTEFCTEVfR0VUX01BQ1JPKC4u
LikgX19OVUxMX0FWQUlMQUJJTElUWQorCisjZGVmaW5lIF9fTlVMTF9BVkFJTEFCSUxJVFkoLi4u
KQorIiIiCisKK1NES1NfVE9fVVBEQVRFID0gWworICAgICJpcGhvbmVvcyIsCisgICAgImlwaG9u
ZXNpbXVsYXRvciIsCisgICAgImFwcGxldHZvcyIsCisgICAgImFwcGxldHZzaW11bGF0b3IiLAor
ICAgICJ3YXRjaG9zIiwKKyAgICAid2F0Y2hzaW11bGF0b3IiLAorXQorCitQTElTVF9CVUREWV9Q
QVRIID0gcGF0aGxpYi5QYXRoKCIvdXNyL2xpYmV4ZWMvUGxpc3RCdWRkeSIpCisKKworZGVmIHhj
b2RlX2RldmVsb3Blcl9kaXIoKToKKyAgICByZXN1bHQgPSBzdWJwcm9jZXNzLnJ1bigKKyAgICAg
ICAgWyJ4Y29kZS1zZWxlY3QiLCAiLXAiXSwKKyAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwg
ZW5jb2Rpbmc9InV0Zi04IiwgY2hlY2s9VHJ1ZSwKKyAgICApCisgICAgcmV0dXJuIHBhdGhsaWIu
UGF0aChyZXN1bHQuc3Rkb3V0LnN0cmlwKCkpCisKKworZGVmIHNka19kaXJlY3Rvcnkoc2RrKToK
KyAgICByZXN1bHQgPSBzdWJwcm9jZXNzLnJ1bigKKyAgICAgICAgWyJ4Y3J1biIsICItLXNkayIs
IHNkaywgIi0tc2hvdy1zZGstcGF0aCJdLAorICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLCBl
bmNvZGluZz0idXRmLTgiLCBjaGVjaz1UcnVlLAorICAgICkKKyAgICByZXR1cm4gcGF0aGxpYi5Q
YXRoKHJlc3VsdC5zdGRvdXQuc3RyaXAoKSkKKworCitkZWYgZ2V0X2FuZF9jaGVja19zZGtfZGly
ZWN0b3JpZXMoc291cmNlX3NkaywgZGVzdF9zZGspOgorICAgIHNvdXJjZV9zZGtfcGF0aCA9IHNk
a19kaXJlY3Rvcnkoc291cmNlX3NkaykKKyAgICBkZXN0X3Nka19wYXRoID0gc2RrX2RpcmVjdG9y
eShkZXN0X3NkaykKKworICAgIGlmIG5vdCBzb3VyY2Vfc2RrX3BhdGg6CisgICAgICAgIHJhaXNl
IFJ1bnRpbWVFcnJvcihmIkNvdWxkIG5vdCBmaW5kIFNESzoge3NvdXJjZV9zZGt9IikKKworICAg
IGlmIG5vdCBkZXN0X3Nka19wYXRoOgorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoZiJDb3Vs
ZCBub3QgZmluZCBTREs6IHtkZXN0X3Nka30iKQorCisgICAgcHJpbnQoc291cmNlX3Nka19wYXRo
KQorICAgIHByaW50KGRlc3Rfc2RrX3BhdGgpCisgICAgcmV0dXJuIHNvdXJjZV9zZGtfcGF0aCwg
ZGVzdF9zZGtfcGF0aAorCisKK2RlZiBkb19jb3B5KHNvdXJjZV9wYXRoLCBkZXN0X3BhdGgpOgor
CisgICAgZGVmIGVuc3VyZV9wYXJlbnRfZXhpc3RzKHBhdGgpOgorICAgICAgICBvcy5tYWtlZGly
cyhwYXRoLnBhcmVudCwgZXhpc3Rfb2s9VHJ1ZSkKKworICAgIGRlZiBjb3B5X2ZpbGUoc291cmNl
X3BhdGgsIGRlc3RfcGF0aCk6CisgICAgICAgIHByaW50KGYiQ29weWluZyBmaWxlIikKKyAgICAg
ICAgcHJpbnQoZiJGcm9tOiB7c291cmNlX3BhdGh9IikKKyAgICAgICAgcHJpbnQoZiJUbzogICB7
ZGVzdF9wYXRofSIpCisgICAgICAgIGlmIGRlc3RfcGF0aC5leGlzdHMoKToKKyAgICAgICAgICAg
IGRlc3RfcGF0aC51bmxpbmsoKQorICAgICAgICBlbnN1cmVfcGFyZW50X2V4aXN0cyhkZXN0X3Bh
dGgpCisgICAgICAgIHNodXRpbC5jb3B5Mihzb3VyY2VfcGF0aCwgZGVzdF9wYXRoKQorCisgICAg
ZGVmIGNvcHlfZGlyZWN0b3J5KHNvdXJjZV9wYXRoLCBkZXN0X3BhdGgpOgorICAgICAgICBwcmlu
dChmIkNvcHlpbmcgZGlyZWN0b3J5IikKKyAgICAgICAgcHJpbnQoZiJGcm9tOiB7c291cmNlX3Bh
dGh9IikKKyAgICAgICAgcHJpbnQoZiJUbzogICB7ZGVzdF9wYXRofSIpCisgICAgICAgIGlmIGRl
c3RfcGF0aC5leGlzdHMoKToKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZGVzdF9wYXRoKQor
ICAgICAgICBlbnN1cmVfcGFyZW50X2V4aXN0cyhkZXN0X3BhdGgpCisgICAgICAgIHNodXRpbC5j
b3B5dHJlZShzb3VyY2VfcGF0aCwgZGVzdF9wYXRoKQorCisgICAgaWYgc291cmNlX3BhdGguaXNf
ZmlsZSgpOgorICAgICAgICBjb3B5X2ZpbGUoc291cmNlX3BhdGgsIGRlc3RfcGF0aCkKKyAgICAg
ICAgcmV0dXJuCisKKyAgICBpZiBzb3VyY2VfcGF0aC5pc19kaXIoKToKKyAgICAgICAgY29weV9k
aXJlY3Rvcnkoc291cmNlX3BhdGgsIGRlc3RfcGF0aCkKKyAgICAgICAgcmV0dXJuCisKKyAgICBy
YWlzZSBSdW50aW1lRXJyb3IoZiJ7c291cmNlX3BhdGh9IGRvZXMgbm90IGV4aXN0IikKKworCisj
IC50YmQgZmlsZXMgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gbGluayBhIHByb2R1
Y3QgdG8gYQorIyBsaWJyYXJ5L2ZyYW1ld29yay4gVGhpcyBpbmZvcm1hdGlvbiBpbmNsdWRlcyB0
aGUgYXJjaGl0ZWN0dXJlIHRoYXQgdGhlCisjIGxpYnJhcnkgaXMgYnVpbHQgZm9yLiBJZiB3ZSdy
ZSBjb3B5aW5nIGZyb20gYW4gU0RLIHRoYXQgc3VwcG9ydHMgb25lIHNldCBvZgorIyBhcmNoaXRl
Y3R1cmVzIHRvIGFuIFNESyB0aGF0IHN1cHBvcnRzIGFub3RoZXIgc2V0IG9mIGFyY2hpdGVjdHVy
ZXMsIHdlIG5lZWQKKyMgdG8gYWRqdXN0IHRoYXQgaW5mb3JtYXRpb24gaW4gdGhlIC50YmQgZmls
ZS4KKyMKKyMgTm90ZSB0aGF0IHdlIGRvbid0IG5lZWQgdG8gYmUgdG9vIHBhcnRpY3VsYXIgYWJv
dXQgdGhpcy4gV2Ugb25seSBuZWVkIHRvCisjIGxpbms7IHdlIGRvbid0IG5lZWQgdG8gcnVuLiBU
aGlzIGFsbG93cyB1cyB0byBzaW1wbHkgc3BlY2lmeSB0aGUgZnVsbCBzZXQgb2YKKyMgYXJjaGl0
ZWN0dXJlcyBmb3Igd2hpY2ggV2ViS2l0IGlzIGJ1aWx0LCByZWdhcmRsZXNzIG9mIHdoZXRoZXIg
dGhlIGFzc29jaWF0ZWQKKyMgbGlicmFyeS9mcmFtZXdvcmsgd2FzIGFjdHVhbGx5IGJ1aWx0IGZv
ciBhbGwgdGhvc2UgYXJjaGl0ZWN0dXJlcy4KKworZGVmIHBhdGNoX3RiZF9hcmNoaXRlY3R1cmUo
ZnJhbWV3b3JrX3BhdGgpOgorICAgIGZvciB0YmRfcGF0aCBpbiBmcmFtZXdvcmtfcGF0aC5nbG9i
KCIqLnRiZCIpOgorICAgICAgICB3aXRoIG9wZW4odGJkX3BhdGgsICJyIikgYXMgZjoKKyAgICAg
ICAgICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQorCisgICAgICAgIG1vZGlmaWVkX2xpbmVzID0g
W10KKyAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICBpZiByZS5tYXRjaCgi
LiphcmNoczogK1xbLipcXSIsIGxpbmUpIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGxp
bmUgPSByZS5zdWIoIlxbLipcXSIsICJbIGkzODYsIHg4Nl82NCwgYXJtNjQsIGFybTY0ZSwgYXJt
NjRfMzIsIGFybXY3ayBdIiwgbGluZSkKKyAgICAgICAgICAgIG1vZGlmaWVkX2xpbmVzLmFwcGVu
ZChsaW5lKQorCisgICAgICAgIHdpdGggb3Blbih0YmRfcGF0aCwgInciKSBhcyBmOgorICAgICAg
ICAgICAgZi53cml0ZWxpbmVzKG1vZGlmaWVkX2xpbmVzKQorCisKKyMgWGNvZGUgaXMgZHJpdmVu
IGJ5IC54Y3NwZWMgZmlsZXMuIFRoZXNlIGRlc2NyaWJlIG1hbnkgYXNwZWN0cyBvZiB0aGUgc3lz
dGVtLAorIyBpbmNsdWRpbmcgd2hhdCB0byBidWlsZCBhbmQgaG93IHRvIGJ1aWxkIGl0LiBUaGVz
ZSAueGNzcGVjIGZpbGVzIGNhbiBiZQorIyBnbG9iYWwgb3IgdGhleSBjYW4gYmUgcGxhdGZvcm0t
IG9yIFNESy1zcGVjaWZpYy4gSW4gdGhlIGNhc2Ugb2YgYnVpbGRpbmcKKyMgcHJvZHVjdHMgZm9y
IHRoZSBlbWJlZGRlZCBzeXN0ZW1zLCB0aGVyZSBpcyBzb21lIGluZm9ybWF0aW9uIGluIHNvbWUg
bWFjT1MKKyMgLnhjc3BlYyBmaWxlcyB0aGF0IG5lZWQgdG8gYmUgdHJhbnNmZXJyZWQgdG8gdGhl
IGVtYmVkZGVkIHBsYXRmb3Jtcy4gVGhpcworIyBmdW5jdGlvbiBmaW5kcyB0aGF0IGluZm9ybWF0
aW9uLCBleHRyYWN0cyBpdCBmcm9tIHRoZSBtYWNPUyBmaWxlcywgYW5kIGNvcGllcworIyBpdCB0
byB0aGUgZW1iZWRkZWQgZmlsZXMuCisKK2RlZiB1cGRhdGVfeGNzcGVjX2ZpbGVzKCk6CisKKyAg
ICBkZWYgcmVhZF9zcGVjKHNwZWNfcGF0aCk6CisgICAgICAgICIiIlJlYWQgYSAueGNzcGVjIGZp
bGUgYW5kIHJldHVybiBpdHMgY29udGVudHMgYXMgYW4gWE1MIERPTSBvYmplY3QuIiIiCisKKyAg
ICAgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oCisgICAgICAgICAgICBbUExJU1RfQlVERFlf
UEFUSCwgIi14IiwgIi1jIiwgIlByaW50Iiwgc3BlY19wYXRoXSwKKyAgICAgICAgICAgIGNhcHR1
cmVfb3V0cHV0PVRydWUsIGVuY29kaW5nPSJ1dGYtOCIsIGNoZWNrPVRydWUsCisgICAgICAgICkK
KyAgICAgICAgcmV0dXJuIEVULmZyb21zdHJpbmcocmVzdWx0LnN0ZG91dC5zdHJpcCgpKQorCisg
ICAgZGVmIGZpbmRfc3BlY19lbnRyeV9pbmRleChzcGVjLCBpZGVudGlmaWVyKToKKyAgICAgICAg
IiIiR2l2ZW4gYW4gWE1MIERPTSBvYmplY3QgcmVwcmVzZW50aW5nIGFuIC54Y3NwZWMgZmlsZSwg
bG9vayBmb3IgYW4KKyAgICAgICAgZW50cnkgdGhhdCBoYXMgYSBrZXkgb2YgIklkZW50aWZpZXIi
IGFuZCBhIHZhbHVlIGVxdWFsIHRvIHRoZSBnaXZlbgorICAgICAgICB2YWx1ZS4gSWYgZm91bmQs
IHJldHVybiBpdHMgaW5kZXggaW4gdGhlIGFycmF5IG9mIHN1Y2ggZW50cmllcy4iIiIKKworICAg
ICAgICBmb3IgaW5kZXgsIHNwZWNfZW50cnkgaW4gZW51bWVyYXRlKHNwZWMuZmluZGFsbCgiLi9h
cnJheS9kaWN0IikpOgorICAgICAgICAgICAgc3BlY19lbnRyeV9pdGVyID0gaXRlcihzcGVjX2Vu
dHJ5KQorICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gemlwKHNwZWNfZW50cnlfaXRlciwg
c3BlY19lbnRyeV9pdGVyKToKKyAgICAgICAgICAgICAgICBpZiBrZXkudGFnID09ICJrZXkiIGFu
ZCBrZXkudGV4dCA9PSAiSWRlbnRpZmllciIgYW5kIHZhbHVlLnRhZyA9PSAic3RyaW5nIiBhbmQg
dmFsdWUudGV4dCA9PSBpZGVudGlmaWVyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5k
ZXgKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGZvciBzcGVjX2luZm8gaW4gWENTUEVDX0lO
Rk86CisgICAgICAgIGlkZW50aWZpZXIgPSBzcGVjX2luZm9bImlkIl0KKyAgICAgICAgc291cmNl
X3NwZWNfcGF0aCA9IHhjb2RlX2RldmVsb3Blcl9kaXIoKSAvIHNwZWNfaW5mb1sic291cmNlIl0K
KyAgICAgICAgZGVzdF9zcGVjX3BhdGggPSB4Y29kZV9kZXZlbG9wZXJfZGlyKCkgLyBzcGVjX2lu
Zm9bImRlc3QiXQorCisgICAgICAgIGZvciBwYXRoIGluIFtzb3VyY2Vfc3BlY19wYXRoLCBkZXN0
X3NwZWNfcGF0aF06CisgICAgICAgICAgICBpZiBub3QgcGF0aC5leGlzdHMoKToKKyAgICAgICAg
ICAgICAgICByYWlzZSBGaWxlTm90Rm91bmRFcnJvcihlcnJuby5FTk9FTlQsIG9zLnN0cmVycm9y
KGVycm5vLkVOT0VOVCksIHBhdGgpCisKKyAgICAgICAgc291cmNlX3NwZWNfZW50cnlfaW5kZXgg
PSBmaW5kX3NwZWNfZW50cnlfaW5kZXgocmVhZF9zcGVjKHNvdXJjZV9zcGVjX3BhdGgpLCBpZGVu
dGlmaWVyKQorICAgICAgICBkZXN0X3NwZWNfZW50cnlfaW5kZXggPSBmaW5kX3NwZWNfZW50cnlf
aW5kZXgocmVhZF9zcGVjKGRlc3Rfc3BlY19wYXRoKSwgaWRlbnRpZmllcikKKworICAgICAgICBp
ZiBzb3VyY2Vfc3BlY19lbnRyeV9pbmRleCBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgUnVu
dGltZUVycm9yKGYiVW5hYmxlIHRvIGZpbmQgeGNzcGVjIGVudHJ5IGZvciB7aWRlbnRpZmllcn0g
aW4ge3NvdXJjZV9zcGVjX3BhdGh9IikKKworICAgICAgICBpZiBkZXN0X3NwZWNfZW50cnlfaW5k
ZXggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwcmludChmInhjc3BlYyBlbnRyeSBmb3Ige2lk
ZW50aWZpZXJ9IGFscmVhZHkgZXhpc3RzIGluIHtkZXN0X3NwZWNfcGF0aH0sIHNraXBwaW5nIikK
KyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MucnVuKAor
ICAgICAgICAgICAgW1BMSVNUX0JVRERZX1BBVEgsICIteCIsICItYyIsIGYiUHJpbnQge3NvdXJj
ZV9zcGVjX2VudHJ5X2luZGV4fSIsIHNvdXJjZV9zcGVjX3BhdGhdLAorICAgICAgICAgICAgY2Fw
dHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9InV0Zi04IiwgY2hlY2s9VHJ1ZSwKKyAgICAgICAg
KQorICAgICAgICBzcGVjX2FzX3htbF9zbmlwcGV0ID0gcmVzdWx0LnN0ZG91dC5zdHJpcCgpCisK
KyAgICAgICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUobW9kZT0idyIsIGVuY29k
aW5nPSJ1dGYtOCIpIGFzIHRlbXA6CisgICAgICAgICAgICB0ZW1wLndyaXRlKHNwZWNfYXNfeG1s
X3NuaXBwZXQpCisgICAgICAgICAgICB0ZW1wLmZsdXNoKCkgIyBJdCdzIGFtYXppbmcgaG93IGlt
cG9ydGFudCB0aGlzIGxpbmUgaXMuCisgICAgICAgICAgICBpZiBub3QgZGVzdF9zcGVjX3BhdGgu
ZXhpc3RzKCk6CisgICAgICAgICAgICAgICAgcHJpbnQoZiJDcmVhdGluZzoge2Rlc3Rfc3BlY19w
YXRofSIpCisgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5ydW4oW1BMSVNUX0JVRERZX1BBVEgs
ICItYyIsICJjbGVhciBhcnJheSIsIGRlc3Rfc3BlY19wYXRoXSwgY2FwdHVyZV9vdXRwdXQ9VHJ1
ZSwgY2hlY2s9VHJ1ZSkKKyAgICAgICAgICAgIHByaW50KGYiQ29weWluZzogIHtpZGVudGlmaWVy
fSIpCisgICAgICAgICAgICBwcmludChmIkZyb206ICAgICB7c291cmNlX3NwZWNfcGF0aH0iKQor
ICAgICAgICAgICAgcHJpbnQoZiJUbzogICAgICAge2Rlc3Rfc3BlY19wYXRofSIpCisgICAgICAg
ICAgICBzdWJwcm9jZXNzLnJ1bihbUExJU1RfQlVERFlfUEFUSCwgIi1jIiwgImFkZCAwIGRpY3Qi
LCBkZXN0X3NwZWNfcGF0aF0sIGNhcHR1cmVfb3V0cHV0PVRydWUsIGNoZWNrPVRydWUpCisgICAg
ICAgICAgICBzdWJwcm9jZXNzLnJ1bihbUExJU1RfQlVERFlfUEFUSCwgIi1jIiwgZiJtZXJnZSB7
dGVtcC5uYW1lfSAwIiwgZGVzdF9zcGVjX3BhdGhdLCBjYXB0dXJlX291dHB1dD1UcnVlLCBjaGVj
az1UcnVlKQorCisKK2RlZiBjb3B5X21pc3NpbmdfaGVhZGVycyhzb3VyY2Vfc2RrLCBkZXN0X3Nk
ayk6CisgICAgaWYgc291cmNlX3NkayA9PSBkZXN0X3NkazoKKyAgICAgICAgcmV0dXJuCisgICAg
c291cmNlX3Nka19wYXRoLCBkZXN0X3Nka19wYXRoID0gZ2V0X2FuZF9jaGVja19zZGtfZGlyZWN0
b3JpZXMoc291cmNlX3NkaywgZGVzdF9zZGspCisgICAgZm9yIG1pc3NpbmdfaGVhZGVyIGluIE1J
U1NJTkdfSEVBREVSUzoKKyAgICAgICAgZG9fY29weShzb3VyY2Vfc2RrX3BhdGggLyBtaXNzaW5n
X2hlYWRlciwgZGVzdF9zZGtfcGF0aCAvIG1pc3NpbmdfaGVhZGVyKQorCisKK2RlZiBjb3B5X21p
c3NpbmdfZnJhbWV3b3Jrcyhzb3VyY2Vfc2RrLCBkZXN0X3Nkayk6CisgICAgaWYgc291cmNlX3Nk
ayA9PSBkZXN0X3NkazoKKyAgICAgICAgcmV0dXJuCisgICAgc291cmNlX3Nka19wYXRoLCBkZXN0
X3Nka19wYXRoID0gZ2V0X2FuZF9jaGVja19zZGtfZGlyZWN0b3JpZXMoc291cmNlX3NkaywgZGVz
dF9zZGspCisgICAgc291cmNlX2ZyYW1ld29ya3NfcGF0aCA9IHNvdXJjZV9zZGtfcGF0aCAvICJT
eXN0ZW0iIC8gIkxpYnJhcnkiIC8gIkZyYW1ld29ya3MiCisgICAgZGVzdF9mcmFtZXdvcmtzX3Bh
dGggPSBkZXN0X3Nka19wYXRoIC8gIlN5c3RlbSIgLyAiTGlicmFyeSIgLyAiRnJhbWV3b3JrcyIK
KyAgICBmb3IgbWlzc2luZ19mcmFtZXdvcmssIGZvcmNlIGluIE1JU1NJTkdfRlJBTUVXT1JLUzoK
KyAgICAgICAgc291cmNlX2ZyYW1ld29ya19wYXRoID0gc291cmNlX2ZyYW1ld29ya3NfcGF0aCAv
IG1pc3NpbmdfZnJhbWV3b3JrCisgICAgICAgIGRlc3RfZnJhbWV3b3JrX3BhdGggPSBkZXN0X2Zy
YW1ld29ya3NfcGF0aCAvIG1pc3NpbmdfZnJhbWV3b3JrCisgICAgICAgIGlmIGZvcmNlIG9yIG5v
dCBkZXN0X2ZyYW1ld29ya19wYXRoLmV4aXN0cygpOgorICAgICAgICAgICAgZG9fY29weShzb3Vy
Y2VfZnJhbWV3b3JrX3BhdGgsIGRlc3RfZnJhbWV3b3JrX3BhdGgpCisgICAgICAgICAgICBwYXRj
aF90YmRfYXJjaGl0ZWN0dXJlKGRlc3RfZnJhbWV3b3JrX3BhdGgpCisKKworIyBTb21lIGZ1bmN0
aW9ucyB0aGF0IFdlYktpdCBuZWVkcyB0byBjYWxsIGFyZSBtYXJrZWQgYXMgInVuYXZhaWxhYmxl
IiBvbiB0aGUKKyMgZW1iZWRkZWQgcGxhdGZvcm1zLiBDcmVhdGUgYSBzdHViIGhlYWRlciB0aGF0
IHdpbGwgbnVsbGlmeSB0aGUgZWZmZWN0IG9mIHRoZQorIyBhbm5vdGF0aW9ucyBvbiB0aG9zZSBm
dW5jdGlvbnMuIE5vdGUgdGhhdCB0aGVyZSdzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZQorIyByZXN1
bHRpbmcgcHJvZHVjdCBjYW4gcnVuIC0tIHdlIGp1c3Qgd2FudCB0byBidWlsZC4KKworZGVmIGNy
ZWF0ZV9hdmFpbGFiaWxpdHlfaGVhZGVyKHNkayk6CisgICAgc2RrX3BhdGggPSBzZGtfZGlyZWN0
b3J5KHNkaykKKyAgICBhdmFpbGFiaWxpdHlfaGVhZGVyX3BhdGggPSBzZGtfcGF0aCAvIEFWQUlM
QUJJTElUWV9GSUxFCisgICAgcHJpbnQoZiJDcmVhdGluZy91cGRhdGluZyB7YXZhaWxhYmlsaXR5
X2hlYWRlcl9wYXRofSIpCisgICAgb3MubWFrZWRpcnMoYXZhaWxhYmlsaXR5X2hlYWRlcl9wYXRo
LnBhcmVudCwgZXhpc3Rfb2s9VHJ1ZSkKKyAgICB3aXRoIG9wZW4oYXZhaWxhYmlsaXR5X2hlYWRl
cl9wYXRoLCAidyIpIGFzIGY6CisgICAgICAgIGYud3JpdGUoQVZBSUxBQklMVFlfVEVYVCkKKwor
CitkZWYgbWFpbigpOgorICAgIGlmIG5vdCBvcy5nZXRldWlkKCkgPT0gMCBhbmQgbm90IG9zLmFj
Y2Vzcyh4Y29kZV9kZXZlbG9wZXJfZGlyKCksIG9zLlJfT0sgfCBvcy5XX09LIHwgb3MuWF9PSywg
ZWZmZWN0aXZlX2lkcz1UcnVlKToKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKGYie19fZmls
ZV9ffSBtdXN0IGJlIHJ1biBhcyByb290IikKKworICAgIHVwZGF0ZV94Y3NwZWNfZmlsZXMoKQor
CisgICAgZm9yIHNkayBpbiBTREtTX1RPX1VQREFURToKKyAgICAgICAgY29weV9taXNzaW5nX2hl
YWRlcnMoIm1hY29zeCIsIHNkaykKKyAgICAgICAgY29weV9taXNzaW5nX2ZyYW1ld29ya3MoImlw
aG9uZW9zIiwgc2RrKQorICAgICAgICBjcmVhdGVfYXZhaWxhYmlsaXR5X2hlYWRlcihzZGspCisg
ICAgcmV0dXJuIDAKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIG1haW4oKQoK
UHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2NyaXB0cy9jb25maWd1cmUteGNvZGUtZm9yLWVt
YmVkZGVkLWRldmVsb3BtZW50Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0w
LDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401197</attachid>
            <date>2020-06-05 14:24:54 -0700</date>
            <delta_ts>2020-06-10 17:41:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207043-20200605142453.patch</filename>
            <type>text/plain</type>
            <size>14345</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MjY1MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDIwLTA2LTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBHZW5lcmFsaXplIGNvbmZpZ3VyZS14Y29kZS1mb3ItaW9zLWRldmVsb3Bt
ZW50IChQYXJ0IDIpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDcwNDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzOTQ2OTMzPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRVdTVG9vbHMvc3RhcnQt
cXVldWUtbWFjLnNoOiBVc2UgY29uZmlndXJlLXhjb2RlLWZvci1lbWJlZGRlZC1kZXZlbG9wbWVu
dCBvdmVyIGNvbmZpZ3VyZS14Y29kZS1mb3ItaW9zLWRldmVsb3BtZW50LgorICAgICAgICAqIFNj
cmlwdHMvY29uZmlndXJlLXhjb2RlLWZvci1pb3MtZGV2ZWxvcG1lbnQ6IFJlbW92ZWQuCisKIDIw
MjAtMDYtMDUgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAg
IEdlbmVyYWxpemUgY29uZmlndXJlLXhjb2RlLWZvci1pb3MtZGV2ZWxvcG1lbnQgKFBhcnQgMSkK
SW5kZXg6IFRvb2xzL0VXU1Rvb2xzL3N0YXJ0LXF1ZXVlLW1hYy5zaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9FV1NUb29scy9zdGFydC1xdWV1ZS1tYWMuc2gJKHJldmlzaW9uIDI2MjY1MSkKKysrIFRv
b2xzL0VXU1Rvb2xzL3N0YXJ0LXF1ZXVlLW1hYy5zaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyAr
NDksNyBAQCBmaQogCiAjIElmIGJ1aWxkaW5nIGZvciBpT1MsIG1ha2Ugc3VyZSB3ZSBydW4gdGhp
cyBzY3JpcHQgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCBmcmFtZXdvcmtzLgogaWYgWyAi
JFFVRVVFX05BTUUiID09ICJpb3MtZXdzIiBdOyB0aGVuCi0gICAgKGNkICRXRUJLSVRfSE9NRTsg
c3VkbyAuL1Rvb2xzL1NjcmlwdHMvY29uZmlndXJlLXhjb2RlLWZvci1pb3MtZGV2ZWxvcG1lbnQp
CisgICAgKGNkICRXRUJLSVRfSE9NRTsgc3VkbyAuL1Rvb2xzL1NjcmlwdHMvY29uZmlndXJlLXhj
b2RlLWZvci1lbWJlZGRlZC1kZXZlbG9wbWVudCkKIGZpCiAKICMgRGVsZXRlIGxvZyBmaWxlcyBv
bGRlciB0aGFuIDMwIGRheXMsIG1vdmUgYXNpZGUgdGhlIG1haW4gJFFVRVVFX05BTUUtZXdzLmxv
ZyBmaWxlIHRvIHByZXZlbnQgaXQgZnJvbSBncm93aW5nIGV4dHJhIGxhcmdlLgpJbmRleDogVG9v
bHMvU2NyaXB0cy9jb25maWd1cmUteGNvZGUtZm9yLWlvcy1kZXZlbG9wbWVudAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL2NvbmZpZ3VyZS14Y29kZS1mb3ItaW9zLWRldmVsb3BtZW50CShy
ZXZpc2lvbiAyNjI2NTEpCisrKyBUb29scy9TY3JpcHRzL2NvbmZpZ3VyZS14Y29kZS1mb3ItaW9z
LWRldmVsb3BtZW50CShub25leGlzdGVudCkKQEAgLTEsMjg2ICswLDAgQEAKLSMhL3Vzci9iaW4v
ZW52IHBlcmwKLQotIyBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0j
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotIyBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCi0jIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0jIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ci0jIENoZWNrcyBpZiBYY29kZSBzdXBwb3J0cyBidWlsZGluZyBhIGNvbW1hbmQgbGluZSB0b29s
IGZvciB0aGUgaU9TIFNpbXVsYXRvci4KLSMgSWYgbm90LCB0aGVuIHVwZGF0ZXMvY3JlYXRlcyB4
Y3NwZWMgZmlsZXMgaW4gdGhlIGlPUyBTREsgZm9yIGEgY29tbWFuZCBsaW5lCi0jIHRvb2wgcHJv
ZHVjdC0gYW5kIHBhY2thZ2UtIHR5cGUgdXNpbmcgdGhlIGRlZmluaXRpb25zIGluIHRoZSBPUyBY
IFNESyBmb3IgdGhlCi0jIHNhbWUgdHlwZXMuCi0KLXVzZSBzdHJpY3Q7Ci11c2Ugd2FybmluZ3M7
Ci0KLXVzZSBDd2QgcXcocmVhbHBhdGgpOwotdXNlIEVuZ2xpc2g7Ci11c2UgRmlsZTo6QmFzZW5h
bWU7Ci11c2UgRmlsZTo6RmluZDsKLXVzZSBGaWxlOjpTcGVjOwotdXNlIEZpbGU6OlRlbXAgcXco
dGVtcGZpbGUpOwotdXNlIEZpbmRCaW47Ci11c2UgbGliICRGaW5kQmluOjpCaW47Ci11c2Ugd2Vi
a2l0ZGlyczsKLQotc3ViIGNvcHlNaXNzaW5nSGVhZGVyc0Zyb21TREtUb1NES0lmTmVlZGVkKCQk
KTsKLXN1YiBjb3B5TWlzc2luZ1hTTFRIZWFkZXJzVG9TREtJZk5lZWRlZCgkKTsKLXN1YiBjcmVh
dGVMZWdhY3lYY29kZVNwZWNpZmljYXRpb25GaWxlc0ZvclNES0lmTmVlZGVkKCQpOwotc3ViIG1l
cmdlWGNvZGVTcGVjaWZpY2F0aW9uV2l0aFNwZWNpZmljYXRpb25BbmRJZCgkJCQpOwotc3ViIHJl
YWRYY29kZVNwZWNpZmljYXRpb25CeUlkKCQkKTsKLXN1YiB1cGRhdGVYY29kZTdTcGVjaWZpY2F0
aW9uRmlsZSgkKTsKLXN1YiB1cGRhdGVYY29kZVNwZWNpZmljYXRpb25GaWxlc0ZvclNES0lmTmVl
ZGVkKCQpOwotc3ViIHhjb2RlU0RLU3BlY2lmaWNhdGlvbnNQYXRoKCQpOwotCi11c2UgY29uc3Rh
bnQgQ09NTUFORF9MSU5FX1BBQ0tBR0VfVFlQRSA9PiAiY29tLmFwcGxlLnBhY2thZ2UtdHlwZS5t
YWNoLW8tZXhlY3V0YWJsZSI7Ci11c2UgY29uc3RhbnQgQ09NTUFORF9MSU5FX1BST0RVQ1RfVFlQ
RSA9PiAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKLXVzZSBjb25zdGFudCBTREtfVE9f
WENTUEVDX05BTUVfTUFQID0+ICt7ICJpcGhvbmVvcyIgPT4gImlQaG9uZU9TIiwgImlwaG9uZXNp
bXVsYXRvciIgPT4gImlQaG9uZSBTaW11bGF0b3IgIiB9OwotdXNlIGNvbnN0YW50IFNES19UT19Q
TFVHSU5fWENTUEVDX05BTUVfTUFQID0+ICt7ICJpcGhvbmVvcyIgPT4gIkVtYmVkZGVkLURldmlj
ZS54Y3NwZWMiLCAiaXBob25lc2ltdWxhdG9yIiA9PiAiRW1iZWRkZWQtU2ltdWxhdG9yLnhjc3Bl
YyIgfTsKLQotIyBGSVhNRTogV2Ugc2hvdWxkIG9ubHkgcmVxdWlyZSBydW5uaW5nIGFzIHJvb3Qg
aWYgbmVlZGVkLiBJdCdzIG5vdCBuZWNlc3NhcnkgdG8gcnVuIGFzIHJvb3QgaWYKLSMgICAgICAg
IFhjb2RlIHdhcyBpbnN0YWxsZWQgYnkgdGhlIHVzZXIsIHNheSB2aWEgYSBkb3dubG9hZCBmcm9t
IDxodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbT4uCi1pZiAoJEVGRkVDVElWRV9VU0VSX0lEKSB7
Ci0gICAgcHJpbnQgU1RERVJSIGJhc2VuYW1lKCQwKSAuICIgbXVzdCBiZSBydW4gYXMgcm9vdC5c
biI7Ci0gICAgZXhpdCAxOwotfQotCi1mb3IgbXkgJHNkayAocXcoaXBob25lb3MgaXBob25lc2lt
dWxhdG9yKSkgewotICAgIHVwZGF0ZVhjb2RlU3BlY2lmaWNhdGlvbkZpbGVzRm9yU0RLSWZOZWVk
ZWQoJHNkayk7Ci0gICAgY29weU1pc3NpbmdYU0xUSGVhZGVyc1RvU0RLSWZOZWVkZWQoJHNkayk7
Ci19Ci0KLWNvcHlNaXNzaW5nSGVhZGVyc0Zyb21TREtUb1NES0lmTmVlZGVkKCJtYWNvc3giLCAi
aXBob25lc2ltdWxhdG9yIik7Ci1jb3B5TWlzc2luZ0hlYWRlcnNGcm9tU0RLVG9TREtJZk5lZWRl
ZCgiaXBob25lc2ltdWxhdG9yIiwgImlwaG9uZW9zIik7Ci0KLWV4aXQgMDsKLQotc3ViIGNvcHlN
aXNzaW5nSGVhZGVyc0Zyb21TREtUb1NES0lmTmVlZGVkKCQkKQotewotICAgIG15IEBtaXNzaW5n
SGVhZGVycyA9IHF3KAotICAgICAgICAvdXNyL2luY2x1ZGUvY3J0X2V4dGVybnMuaAotICAgICAg
ICAvdXNyL2luY2x1ZGUvbGF1bmNoLmgKLSAgICAgICAgL3Vzci9pbmNsdWRlL01hY0Vycm9ycy5o
Ci0gICAgICAgIC91c3IvaW5jbHVkZS9tYWNoL21hY2hfdHlwZXMuZGVmcwotICAgICAgICAvdXNy
L2luY2x1ZGUvbWFjaC9tYWNoaW5lL21hY2hpbmVfdHlwZXMuZGVmcwotICAgICAgICAvdXNyL2lu
Y2x1ZGUvbWFjaC9zdGRfdHlwZXMuZGVmcwotICAgICAgICAvdXNyL2luY2x1ZGUvb2JqYy9vYmpj
LWNsYXNzLmgKLSAgICAgICAgL3Vzci9pbmNsdWRlL29iamMvb2JqYy1ydW50aW1lLmgKLSAgICAg
ICAgL3Vzci9pbmNsdWRlL29iamMvUHJvdG9jb2wuaAotICAgICAgICAvdXNyL2luY2x1ZGUvcmVh
ZGxpbmUvaGlzdG9yeS5oCi0gICAgICAgIC91c3IvaW5jbHVkZS9yZWFkbGluZS9yZWFkbGluZS5o
Ci0gICAgICAgIC91c3IvaW5jbHVkZS9zcWxpdGUzX3ByaXZhdGUuaAotICAgICk7Ci0KLSAgICBt
eSAoJHNvdXJjZVNESywgJGRlc3RpbmF0aW9uU0RLKSA9IEBfOwotICAgIG15ICRzb3VyY2VEaXJl
Y3RvcnkgPSBzZGtEaXJlY3RvcnkoJHNvdXJjZVNESyk7Ci0gICAgbXkgJGRlc3RpbmF0aW9uRGly
ZWN0b3J5ID0gc2RrRGlyZWN0b3J5KCRkZXN0aW5hdGlvblNESyk7Ci0KLSAgICBmb3IgbXkgJGhl
YWRlciAoQG1pc3NpbmdIZWFkZXJzKSB7Ci0gICAgICAgIG15ICRzb3VyY2VQYXRoID0gRmlsZTo6
U3BlYy0+Y2Fub25wYXRoKEZpbGU6OlNwZWMtPmNhdGZpbGUoJHNvdXJjZURpcmVjdG9yeSwgJGhl
YWRlcikpOwotICAgICAgICBteSAkZGVzdGluYXRpb25QYXRoID0gRmlsZTo6U3BlYy0+Y2Fub25w
YXRoKEZpbGU6OlNwZWMtPmNhdGZpbGUoJGRlc3RpbmF0aW9uRGlyZWN0b3J5LCAkaGVhZGVyKSk7
Ci0gICAgICAgIG5leHQgaWYgKC1mICRkZXN0aW5hdGlvblBhdGgpOwotICAgICAgICBuZXh0IGlm
ICghLWYgJHNvdXJjZVBhdGgpOwotCi0gICAgICAgIHN5c3RlbSgiL3Vzci9iaW4vZGl0dG8iLCAk
c291cmNlUGF0aCwgJGRlc3RpbmF0aW9uUGF0aCk7Ci0gICAgICAgIGRpZSAiQ291bGQgbm90IGNv
cHkgJHNvdXJjZVBhdGggdG8gJGRlc3RpbmF0aW9uUGF0aDogJCEiIGlmIGV4aXRTdGF0dXMoJD8p
OwotICAgICAgICBwcmludCAiU3VjY2Vzc2Z1bGx5IGNvcGllZCAkc291cmNlUGF0aCB0byAkZGVz
dGluYXRpb25QYXRoLlxuIjsKLSAgICB9Ci19Ci0KLXN1YiBjb3B5TWlzc2luZ1hTTFRIZWFkZXJz
VG9TREtJZk5lZWRlZCgkKQotewotICAgIG15ICgkc2RrTmFtZSkgPSBAXzsKLSAgICBteSAkc2Rr
WFNMVEhlYWRlckRpcmVjdG9yeSA9IEZpbGU6OlNwZWMtPmNhbm9ucGF0aChGaWxlOjpTcGVjLT5j
YXRkaXIoc2RrRGlyZWN0b3J5KCRzZGtOYW1lKSwgInVzciIsICJpbmNsdWRlIiwgImxpYnhzbHQi
KSk7Ci0gICAgcmV0dXJuIGlmIC1kICRzZGtYU0xUSGVhZGVyRGlyZWN0b3J5OwotCi0gICAgbXkg
JG1hY29zeFhTTFRIZWFkZXJEaXJlY3RvcnkgPSBGaWxlOjpTcGVjLT5jYW5vbnBhdGgoRmlsZTo6
U3BlYy0+Y2F0ZGlyKHNka0RpcmVjdG9yeSgibWFjb3N4IiksICJ1c3IiLCAiaW5jbHVkZSIsICJs
aWJ4c2x0IikpOwotICAgIHN5c3RlbSgiL3Vzci9iaW4vZGl0dG8iLCAkbWFjb3N4WFNMVEhlYWRl
ckRpcmVjdG9yeSwgJHNka1hTTFRIZWFkZXJEaXJlY3RvcnkpOwotICAgIGRpZSAiQ291bGQgbm90
IGNvcHkgJG1hY29zeFhTTFRIZWFkZXJEaXJlY3RvcnkgdG8gJHNka1hTTFRIZWFkZXJEaXJlY3Rv
cnk6ICQhIiBpZiBleGl0U3RhdHVzKCQ/KTsKLSAgICBwcmludCAiU3VjY2Vzc2Z1bGx5IGNvcGll
ZCAkbWFjb3N4WFNMVEhlYWRlckRpcmVjdG9yeSB0byAkc2RrWFNMVEhlYWRlckRpcmVjdG9yeS5c
biI7Ci19Ci0KLXN1YiB1cGRhdGVYY29kZVNwZWNpZmljYXRpb25GaWxlc0ZvclNES0lmTmVlZGVk
KCQpCi17Ci0gICAgbXkgKCRzZGtOYW1lKSA9IEBfOwotICAgIG15ICR4Y29kZTdTcGVjaWZpY2F0
aW9uRmlsZSA9IHJlYWxwYXRoKEZpbGU6OlNwZWMtPmNhdGZpbGUoc2RrUGxhdGZvcm1EaXJlY3Rv
cnkoJHNka05hbWUpLCAiLi4iLCAiLi4iLCAiLi4iLCAiUGx1Z0lucyIsICJJREVpT1NTdXBwb3J0
Q29yZS5pZGVwbHVnaW4iLCAiQ29udGVudHMiLCAiUmVzb3VyY2VzIiwgU0RLX1RPX1BMVUdJTl9Y
Q1NQRUNfTkFNRV9NQVAtPnskc2RrTmFtZX0pKTsKLSAgICBpZiAoLWYgJHhjb2RlN1NwZWNpZmlj
YXRpb25GaWxlKSB7Ci0gICAgICAgIHVwZGF0ZVhjb2RlN1NwZWNpZmljYXRpb25GaWxlKCR4Y29k
ZTdTcGVjaWZpY2F0aW9uRmlsZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY3JlYXRlTGVnYWN5
WGNvZGVTcGVjaWZpY2F0aW9uRmlsZXNGb3JTREtJZk5lZWRlZCgkc2RrTmFtZSk7Ci0gICAgfQot
fQotCi1zdWIgdXBkYXRlWGNvZGU3U3BlY2lmaWNhdGlvbkZpbGUoJCkKLXsKLSAgICBteSAoJHNw
ZWNpZmljYXRpb25GaWxlKSA9IEBfOwotCi0gICAgbXkgJGhhc1BhY2thZ2VUeXBlRm9yQ29tbWFu
ZExpbmVUb29sID0gISFyZWFkWGNvZGVTcGVjaWZpY2F0aW9uQnlJZCgkc3BlY2lmaWNhdGlvbkZp
bGUsIENPTU1BTkRfTElORV9QQUNLQUdFX1RZUEUpOwotICAgIG15ICRoYXNQcm9kdWN0VHlwZUZv
ckNvbW1hbmRMaW5lVG9vbCA9ICEhcmVhZFhjb2RlU3BlY2lmaWNhdGlvbkJ5SWQoJHNwZWNpZmlj
YXRpb25GaWxlLCBDT01NQU5EX0xJTkVfUFJPRFVDVF9UWVBFKTsKLSAgICBpZiAoJGhhc1BhY2th
Z2VUeXBlRm9yQ29tbWFuZExpbmVUb29sICYmICRoYXNQcm9kdWN0VHlwZUZvckNvbW1hbmRMaW5l
VG9vbCkgewotICAgICAgICByZXR1cm47ICMgWGNvZGUga25vd3MgaG93IHRvIGJ1aWxkIGEgY29t
bWFuZCBsaW5lIHRvb2wgZm9yICRzZGtOYW1lLgotICAgIH0KLQotICAgIG15ICRtYWNvc3hTREtT
cGVjaWZpY2F0aW9uc1BhdGggPSB4Y29kZVNES1NwZWNpZmljYXRpb25zUGF0aCgibWFjb3N4Iik7
Ci0gICAgaWYgKCEkaGFzUGFja2FnZVR5cGVGb3JDb21tYW5kTGluZVRvb2wpIHsKLSAgICAgICAg
bXkgJHBhY2thZ2VUeXBlc0Zvck1hY09TWFBhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRtYWNv
c3hTREtTcGVjaWZpY2F0aW9uc1BhdGgsICJNYWNPU1ggUGFja2FnZSBUeXBlcy54Y3NwZWMiKTsK
LSAgICAgICAgbWVyZ2VYY29kZVNwZWNpZmljYXRpb25XaXRoU3BlY2lmaWNhdGlvbkFuZElkKCRz
cGVjaWZpY2F0aW9uRmlsZSwgJHBhY2thZ2VUeXBlc0Zvck1hY09TWFBhdGgsIENPTU1BTkRfTElO
RV9QQUNLQUdFX1RZUEUpOwotICAgIH0KLQotICAgIGlmICghJGhhc1Byb2R1Y3RUeXBlRm9yQ29t
bWFuZExpbmVUb29sKSB7Ci0gICAgICAgIG15ICRwcm9kdWN0VHlwZXNGb3JNYWNPU1hQYXRoID0g
RmlsZTo6U3BlYy0+Y2F0ZmlsZSgkbWFjb3N4U0RLU3BlY2lmaWNhdGlvbnNQYXRoLCAiTWFjT1NY
IFByb2R1Y3QgVHlwZXMueGNzcGVjIik7Ci0gICAgICAgIG1lcmdlWGNvZGVTcGVjaWZpY2F0aW9u
V2l0aFNwZWNpZmljYXRpb25BbmRJZCgkc3BlY2lmaWNhdGlvbkZpbGUsICRwcm9kdWN0VHlwZXNG
b3JNYWNPU1hQYXRoLCBDT01NQU5EX0xJTkVfUFJPRFVDVF9UWVBFKTsKLSAgICB9Ci0gICAgcHJp
bnQgIlN1Y2Nlc3NmdWxseSB1cGRhdGVkICckc3BlY2lmaWNhdGlvbkZpbGUnLlxuIjsKLX0KLQot
c3ViIGNyZWF0ZUxlZ2FjeVhjb2RlU3BlY2lmaWNhdGlvbkZpbGVzRm9yU0RLSWZOZWVkZWQoJCkK
LXsKLSAgICBteSAoJHNkaykgPSBAXzsKLSAgICBteSAkc2RrU3BlY2lmaWNhdGlvbnNQYXRoID0g
eGNvZGVTREtTcGVjaWZpY2F0aW9uc1BhdGgoJHNkayk7Ci0KLSAgICBsb2NhbCBAOjp4Y29kZVNw
ZWNpZmljYXRpb25GaWxlczsKLSAgICBzdWIgd2FudGVkCi0gICAgewotICAgICAgICBteSAkZmls
ZSA9ICRfOwotCi0gICAgICAgICMgSWdub3JlIGhpZGRlbiBmaWxlcy9kaXJlY3Rvcmllcy4KLSAg
ICAgICAgaWYgKCRmaWxlID1+IC9eXC4uLykgewotICAgICAgICAgICAgJEZpbGU6OkZpbmQ6OnBy
dW5lID0gMTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgh
LWYgJGZpbGUgfHwgJGZpbGUgIX4gL1wueGNzcGVjJC8pIHsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIHB1c2ggQDo6eGNvZGVTcGVjaWZpY2F0aW9uRmlsZXMsICRG
aWxlOjpGaW5kOjpuYW1lOwotICAgIH0KLQotICAgIGZpbmQoXCZ3YW50ZWQsICRzZGtTcGVjaWZp
Y2F0aW9uc1BhdGgpOwotCi0gICAgbXkgJGhhc1BhY2thZ2VUeXBlRm9yQ29tbWFuZExpbmVUb29s
OwotICAgIG15ICRoYXNQcm9kdWN0VHlwZUZvckNvbW1hbmRMaW5lVG9vbDsKLSAgICBmb3JlYWNo
IG15ICRzcGVjaWZpY2F0aW9uRmlsZSAoQDo6eGNvZGVTcGVjaWZpY2F0aW9uRmlsZXMpIHsKLSAg
ICAgICAgbGFzdCBpZiAkaGFzUGFja2FnZVR5cGVGb3JDb21tYW5kTGluZVRvb2wgJiYgJGhhc1By
b2R1Y3RUeXBlRm9yQ29tbWFuZExpbmVUb29sOwotICAgICAgICBpZiAoISRoYXNQYWNrYWdlVHlw
ZUZvckNvbW1hbmRMaW5lVG9vbCAmJiByZWFkWGNvZGVTcGVjaWZpY2F0aW9uQnlJZCgkc3BlY2lm
aWNhdGlvbkZpbGUsIENPTU1BTkRfTElORV9QQUNLQUdFX1RZUEUpKSB7Ci0gICAgICAgICAgICAk
aGFzUGFja2FnZVR5cGVGb3JDb21tYW5kTGluZVRvb2wgPSAxOwotICAgICAgICAgICAgbmV4dDsK
LSAgICAgICAgfQotICAgICAgICBpZiAoISRoYXNQcm9kdWN0VHlwZUZvckNvbW1hbmRMaW5lVG9v
bCAmJiByZWFkWGNvZGVTcGVjaWZpY2F0aW9uQnlJZCgkc3BlY2lmaWNhdGlvbkZpbGUsIENPTU1B
TkRfTElORV9QUk9EVUNUX1RZUEUpKSB7Ci0gICAgICAgICAgICAkaGFzUHJvZHVjdFR5cGVGb3JD
b21tYW5kTGluZVRvb2wgPSAxOwotICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIGlmICgkaGFzUGFja2FnZVR5cGVGb3JDb21tYW5kTGluZVRvb2wgJiYgJGhhc1Byb2R1
Y3RUeXBlRm9yQ29tbWFuZExpbmVUb29sKSB7Ci0gICAgICAgIHJldHVybjsgIyBYY29kZSBrbm93
cyBob3cgdG8gYnVpbGQgYSBjb21tYW5kIGxpbmUgdG9vbCBmb3IgJHNkay4KLSAgICB9Ci0KLSAg
ICBteSAkZmlsZU5hbWVQcmVmaXggPSBTREtfVE9fWENTUEVDX05BTUVfTUFQLT57JHNka307Ci0K
LSAgICBteSAkbWFjb3N4U0RLU3BlY2lmaWNhdGlvbnNQYXRoID0geGNvZGVTREtTcGVjaWZpY2F0
aW9uc1BhdGgoIm1hY29zeCIpOwotICAgIGlmICghJGhhc1BhY2thZ2VUeXBlRm9yQ29tbWFuZExp
bmVUb29sKSB7Ci0gICAgICAgIG15ICRwYWNrYWdlVHlwZXNGb3JNYWNPU1hQYXRoID0gRmlsZTo6
U3BlYy0+Y2F0ZmlsZSgkbWFjb3N4U0RLU3BlY2lmaWNhdGlvbnNQYXRoLCAiTWFjT1NYIFBhY2th
Z2UgVHlwZXMueGNzcGVjIik7Ci0gICAgICAgIG15ICRwYWNrYWdlVHlwZXNGb3JXZWJLaXREZXZl
bG9wbWVudFBhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRzZGtTcGVjaWZpY2F0aW9uc1BhdGgs
ICIke2ZpbGVOYW1lUHJlZml4fVBhY2thZ2VUeXBlcyBGb3IgV2ViS2l0IERldmVsb3BtZW50Lnhj
c3BlYyIpOwotICAgICAgICBtZXJnZVhjb2RlU3BlY2lmaWNhdGlvbldpdGhTcGVjaWZpY2F0aW9u
QW5kSWQoJHBhY2thZ2VUeXBlc0ZvcldlYktpdERldmVsb3BtZW50UGF0aCwgJHBhY2thZ2VUeXBl
c0Zvck1hY09TWFBhdGgsIENPTU1BTkRfTElORV9QQUNLQUdFX1RZUEUpOwotICAgICAgICBwcmlu
dCAiU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgJyRwYWNrYWdlVHlwZXNGb3JXZWJLaXREZXZlbG9wbWVu
dFBhdGgnLlxuIjsKLSAgICB9Ci0KLSAgICBpZiAoISRoYXNQcm9kdWN0VHlwZUZvckNvbW1hbmRM
aW5lVG9vbCkgewotICAgICAgICBteSAkcHJvZHVjdFR5cGVzRm9yTWFjT1NYUGF0aCA9IEZpbGU6
OlNwZWMtPmNhdGZpbGUoJG1hY29zeFNES1NwZWNpZmljYXRpb25zUGF0aCwgIk1hY09TWCBQcm9k
dWN0IFR5cGVzLnhjc3BlYyIpOwotICAgICAgICBteSAkcHJvZHVjdFR5cGVzRm9yV2ViS2l0RGV2
ZWxvcG1lbnRQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkc2RrU3BlY2lmaWNhdGlvbnNQYXRo
LCAiJHtmaWxlTmFtZVByZWZpeH1Qcm9kdWN0VHlwZXMgRm9yIFdlYktpdCBEZXZlbG9wbWVudC54
Y3NwZWMiKTsKLSAgICAgICAgbWVyZ2VYY29kZVNwZWNpZmljYXRpb25XaXRoU3BlY2lmaWNhdGlv
bkFuZElkKCRwcm9kdWN0VHlwZXNGb3JXZWJLaXREZXZlbG9wbWVudFBhdGgsICRwcm9kdWN0VHlw
ZXNGb3JNYWNPU1hQYXRoLCBDT01NQU5EX0xJTkVfUFJPRFVDVF9UWVBFKTsKLSAgICAgICAgcHJp
bnQgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkICckcHJvZHVjdFR5cGVzRm9yV2ViS2l0RGV2ZWxvcG1l
bnRQYXRoJy5cbiI7Ci0gICAgfQotfQotCi1zdWIgd3JpdGVYY29kZVNwZWNpZmljYXRpb24oJCQp
Ci17Ci0gICAgbXkgKCR4Y29kZVNwZWNpZmljYXRpb25GaWxlLCAkc3BlY2lmaWNhdGlvbikgPSBA
XzsKLSAgICBteSAoJHRlbXBGaWxlSGFuZGxlLCAkdGVtcEZpbGVuYW1lKSA9IHRlbXBmaWxlKCJ3
ZWJraXQteGNzcGVjWFhYWFhYWCIsIFVOTElOSyA9PiAxKTsKLSAgICBwcmludCAkdGVtcEZpbGVI
YW5kbGUgJHNwZWNpZmljYXRpb247Ci0gICAgY2xvc2UoJHRlbXBGaWxlSGFuZGxlKTsKLSAgICBp
ZiAoIS1mICR4Y29kZVNwZWNpZmljYXRpb25GaWxlKSB7Ci0gICAgICAgIHN5c3RlbSgiL3Vzci9s
aWJleGVjL1BsaXN0QnVkZHkgLXggLWMgJ2NsZWFyIGFycmF5JyAnJHhjb2RlU3BlY2lmaWNhdGlv
bkZpbGUnID4gL2Rldi9udWxsIikgPT0gMCBvciBkaWUgIlBsaXN0QnVkZHkgZXhpdGVkIHdpdGgg
JD86ICQhIjsKLSAgICB9Ci0gICAgc3lzdGVtKCIvdXNyL2xpYmV4ZWMvUGxpc3RCdWRkeSAteCAt
YyAnYWRkIDAgZGljdCcgJyR4Y29kZVNwZWNpZmljYXRpb25GaWxlJyA+IC9kZXYvbnVsbCIpID09
IDAgb3IgZGllICJQbGlzdEJ1ZGR5IGV4aXRlZCB3aXRoICQ/OiAkISI7Ci0gICAgc3lzdGVtKCIv
dXNyL2xpYmV4ZWMvUGxpc3RCdWRkeSAteCAtYyAnbWVyZ2UgJHRlbXBGaWxlbmFtZSAwJyAnJHhj
b2RlU3BlY2lmaWNhdGlvbkZpbGUnID4gL2Rldi9udWxsIikgPT0gMCBvciBkaWUgIlBsaXN0QnVk
ZHkgZXhpdGVkIHdpdGggJD86ICQhIjsKLX0KLQotc3ViIHJlYWRYY29kZVNwZWNpZmljYXRpb25C
eUlkKCQkKQotewotICAgIG15ICgkeGNvZGVTcGVjaWZpY2F0aW9uRmlsZSwgJGlkKSA9IEBfOwot
ICAgIG9wZW4oUExJU1RfQlVERFksICItfCIsICIvdXNyL2xpYmV4ZWMvUGxpc3RCdWRkeSIsICIt
eCIsICItYyIsICJQcmludCIsICR4Y29kZVNwZWNpZmljYXRpb25GaWxlKSBvciBkaWUgIkZhaWxl
ZCB0byBydW4gUGxpc3RCdWRkeTogJCEiOwotICAgIG15ICRmb3VuZFN0YXJ0T2ZTcGVjaWZpY2F0
aW9uc0FycmF5OwotICAgIHdoaWxlICg8UExJU1RfQlVERFk+KSB7Ci0gICAgICAgIGlmICgvXjxh
cnJheT4kLykgewotICAgICAgICAgICAgJGZvdW5kU3RhcnRPZlNwZWNpZmljYXRpb25zQXJyYXkg
PSAxOwotICAgICAgICAgICAgbGFzdDsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoISRmb3Vu
ZFN0YXJ0T2ZTcGVjaWZpY2F0aW9uc0FycmF5KSB7Ci0gICAgICAgcmV0dXJuICIiOyAjIE5vdCBh
IFhjb2RlIHNwZWNpZmljYXRpb24gZmlsZS4KLSAgICB9Ci0gICAgbXkgJHBvc2l0aW9uID0gLTE7
Ci0gICAgbXkgJGZvdW5kSWRlbnRmaWVyS2V5ID0gMDsKLSAgICBteSAkZm91bmRTcGVjaWZpY2F0
aW9uID0gMDsKLSAgICB3aGlsZSAoPFBMSVNUX0JVRERZPikgewotICAgICAgICBpZiAoL15cczxk
aWN0PiQvKSB7Ci0gICAgICAgICAgICArKyRwb3NpdGlvbjsKLSAgICAgICAgICAgIG5leHQ7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKCEkZm91bmRJZGVudGZpZXJLZXkgJiYgL15cc1xzPGtleT5J
ZGVudGlmaWVyPFwva2V5PiQvKSB7Ci0gICAgICAgICAgICAkZm91bmRJZGVudGZpZXJLZXkgPSAx
OwotICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgfQotICAgICAgICBpZiAoJGZvdW5kSWRlbnRm
aWVyS2V5ICYmIC9eXHNcczxzdHJpbmc+KFtePF0rKTxcL3N0cmluZz4kLykgewotICAgICAgICAg
ICAgaWYgKCQxIGVxICRpZCkgewotICAgICAgICAgICAgICAgICRmb3VuZFNwZWNpZmljYXRpb24g
PSAxOwotICAgICAgICAgICAgICAgIGxhc3Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAk
Zm91bmRJZGVudGZpZXJLZXkgPSAwOwotICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgfQotICAg
IH0KLSAgICBjbG9zZShQTElTVF9CVUREWSk7Ci0gICAgaWYgKCRmb3VuZFNwZWNpZmljYXRpb24g
JiYgJHBvc2l0aW9uID49IDApIHsKLSAgICAgICAgY2hvbXAobXkgJHJlc3VsdCA9IGAvdXNyL2xp
YmV4ZWMvUGxpc3RCdWRkeSAteCAtYyAnUHJpbnQgJHBvc2l0aW9uJyAnJHhjb2RlU3BlY2lmaWNh
dGlvbkZpbGUnYCk7Ci0gICAgICAgIGRpZSAiRmFpbGVkIHRvIHJ1biBQbGlzdEJ1ZGR5IiBpZiAk
PzsKLSAgICAgICAgcmV0dXJuICRyZXN1bHQ7Ci0gICAgfQotICAgIHJldHVybiAiIjsgIyBEaWQg
bm90IGZpbmQgaWQuCi19Ci0KLXN1YiB4Y29kZVNES1NwZWNpZmljYXRpb25zUGF0aCgkKQotewot
ICAgIG15ICgkc2RrTmFtZSkgPSBAXzsKLQotICAgIHJldHVybiBGaWxlOjpTcGVjLT5jYXRkaXIo
c2RrUGxhdGZvcm1EaXJlY3RvcnkoJHNka05hbWUpLCAiRGV2ZWxvcGVyIiwgIkxpYnJhcnkiLCAi
WGNvZGUiLCAiU3BlY2lmaWNhdGlvbnMiKTsKLX0KLQotc3ViIG1lcmdlWGNvZGVTcGVjaWZpY2F0
aW9uV2l0aFNwZWNpZmljYXRpb25BbmRJZCgkJCQpCi17Ci0gICAgbXkgKCR0YXJnZXRYY29kZVNw
ZWNpZmljYXRpb25GaWxlLCAkc291cmNlWGNvZGVTcGVjaWZpY2F0aW9uRmlsZSwgJGlkKSA9IEBf
OwotICAgIG15ICRzcGVjaWZpY2F0aW9uID0gcmVhZFhjb2RlU3BlY2lmaWNhdGlvbkJ5SWQoJHNv
dXJjZVhjb2RlU3BlY2lmaWNhdGlvbkZpbGUsICRpZCk7Ci0gICAgaWYgKCEkc3BlY2lmaWNhdGlv
bikgewotICAgICAgICBkaWUgIkZhaWxlZCB0byBmaW5kICckaWQnIGluICckc291cmNlWGNvZGVT
cGVjaWZpY2F0aW9uRmlsZScuXG4iOwotICAgIH0KLSAgICB3cml0ZVhjb2RlU3BlY2lmaWNhdGlv
bigkdGFyZ2V0WGNvZGVTcGVjaWZpY2F0aW9uRmlsZSwgJHNwZWNpZmljYXRpb24pOwotfQoKUHJv
cGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2NyaXB0cy9jb25maWd1cmUteGNvZGUtZm9yLWlvcy1k
ZXZlbG9wbWVudApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0xICswLDAg
IyMKLSoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>