<?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>188754</bug_id>
          
          <creation_ts>2018-08-20 12:07:14 -0700</creation_ts>
          <short_desc>Tool to fix folders that should map to directories in Xcode project files</short_desc>
          <delta_ts>2026-01-12 09:06:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>Safari 10</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=188700</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=188755</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=189072</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>
          <dependson>188851</dependson>
    
    <dependson>189082</dependson>
          <blocked>222054</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>aestes</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>jbedard</cc>
    
    <cc>jer.noble</cc>
    
    <cc>lforschler</cc>
    
    <cc>mitz</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1451666</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-08-20 12:07:14 -0700</bug_when>
    <thetext>In Bug 188700, Andy Estes manually fixed a folder in the WebKit Xcode project to map to an actual directory on disk.

It turns out these changes can be automated, so let&apos;s write a script to do it.

Doing this also exposed inconsistencies where files are located in the WebCore project, and found a strange issue where a group defined both a name and a path in the WebCore project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451703</commentid>
    <comment_count>1</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-08-20 12:51:28 -0700</bug_when>
    <thetext>While writing the script, one thing I noticed was that the `mainGroup` in an Xcode project file sometimes has a name, and sometimes doesn&apos;t.  (See also Bug  Turns out that the `mainGroup` name is controlled by the `productName` setting in the group entry for the `mainGroup`.

Even more interesting is that all of these projects share the exact same unique identifier (`0867D691FE84028FC02AAC07`) for their `mainGroup`:

$ find Source -name project.pbxproj -exec grep -H &apos;mainGroup = &apos; {} \; | grep 0867D691FE84028FC02AAC07 | cut -d: -f1 | sort | uniq 
Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
Source/ThirdParty/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj
Source/ThirdParty/gtest/xcode/gtest.xcodeproj/project.pbxproj
Source/ThirdParty/libwebrtc/Source/third_party/boringssl/src/third_party/googletest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj
Source/ThirdParty/libwebrtc/Source/third_party/boringssl/src/third_party/googletest/xcode/gtest.xcodeproj/project.pbxproj
Source/ThirdParty/libwebrtc/Source/third_party/googletest/googletest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj
Source/ThirdParty/libwebrtc/Source/third_party/googletest/googletest/xcode/gtest.xcodeproj/project.pbxproj
Source/WebCore/WebCore.xcodeproj/project.pbxproj
Source/WebKit/WebKit.xcodeproj/project.pbxproj
Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj

I&apos;d guess that folks on the WebKit project tend to make a copy of an existing Xcode project file and then modify it to create projects.  :)

Also, the `productName` of the WebCore Xcode project was set to `WebKit` ever since it was committed back in &lt;https://trac.webkit.org/r9857&gt;.  I fixed that in these two commits:

&lt;https://trac.webkit.org/r235015&gt;
&lt;https://trac.webkit.org/r235091&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451704</commentid>
    <comment_count>2</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-08-20 12:53:53 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #1)
&gt; While writing the script, one thing I noticed was that the `mainGroup` in an
&gt; Xcode project file sometimes has a name, and sometimes doesn&apos;t.  (See also
&gt; Bug  Turns out that the `mainGroup` name is controlled by the `productName`
&gt; setting in the group entry for the `mainGroup`.

Oops, it&apos;s the `name` setting in the group, not the `productName` setting, that controls the `mainGroup` value.

&gt; Even more interesting is that all of these projects share the exact same
&gt; unique identifier (`0867D691FE84028FC02AAC07`) for their `mainGroup`:
&gt; 
&gt; $ find Source -name project.pbxproj -exec grep -H &apos;mainGroup = &apos; {} \; |
&gt; grep 0867D691FE84028FC02AAC07 | cut -d: -f1 | sort | uniq 
&gt; Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
&gt; Source/ThirdParty/gtest/xcode/Samples/FrameworkSample/WidgetFramework.
&gt; xcodeproj/project.pbxproj
&gt; Source/ThirdParty/gtest/xcode/gtest.xcodeproj/project.pbxproj
&gt; Source/ThirdParty/libwebrtc/Source/third_party/boringssl/src/third_party/
&gt; googletest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.
&gt; pbxproj
&gt; Source/ThirdParty/libwebrtc/Source/third_party/boringssl/src/third_party/
&gt; googletest/xcode/gtest.xcodeproj/project.pbxproj
&gt; Source/ThirdParty/libwebrtc/Source/third_party/googletest/googletest/xcode/
&gt; Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj
&gt; Source/ThirdParty/libwebrtc/Source/third_party/googletest/googletest/xcode/
&gt; gtest.xcodeproj/project.pbxproj
&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj
&gt; Source/WebKit/WebKit.xcodeproj/project.pbxproj
&gt; Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj
&gt; 
&gt; I&apos;d guess that folks on the WebKit project tend to make a copy of an
&gt; existing Xcode project file and then modify it to create projects.  :)
&gt; 
&gt; Also, the `productName` of the WebCore Xcode project was set to `WebKit`
&gt; ever since it was committed back in &lt;https://trac.webkit.org/r9857&gt;.  I
&gt; fixed that in these two commits:

I meant to type &quot;`mainGroup` name&quot; instead of &quot;`productName`&quot; here.

&gt; &lt;https://trac.webkit.org/r235015&gt;
&gt; &lt;https://trac.webkit.org/r235091&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451708</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-08-20 13:05:28 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #0)
&gt; Doing this also exposed inconsistencies where files are located in the
&gt; WebCore project, and found a strange issue where a group defined both a name
&gt; and a path in the WebCore project.

Fixed the last item here:

REGRESSION (r223192): Remove invalid `path` for Modules/geolocation/ios folder
&lt;https://trac.webkit.org/r235092&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451980</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-20 23:06:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/43546353&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452574</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-08-22 04:21:26 -0700</bug_when>
    <thetext>WebCore contained over 80 files (mostly css/js/png resources) that had been deleted from the source repository, but mot from the Xcode project.  These were fixed in:

&lt;https://trac.webkit.org/r235164&gt;

The script will refuse to make any changes if it finds any missing files because it can&apos;t reason about why they&apos;re missing.  (I&apos;ll include a --force switch in case you really know what you&apos;re doing, though.)

--

The last clean-up step before running the script for WebCore (and posting a patch) is to move files within the project to reside in the directories they&apos;re supposed to be in per the Xcode project.  There are 6 files out-of-place currently:

$ ./Tools/Scripts/fix-directory-paths-in-Xcode-project-file --force Source/WebCore/WebCore.xcodeproj/
MOVE: Source/WebCore/LocalizableStrings.pm Source/WebCore/Scripts/LocalizableStrings.pm
MOVE: Source/WebCore/extract-localizable-strings.pl Source/WebCore/Scripts/extract-localizable-strings.pl
MOVE: Source/WebCore/platform/audio/WebAudioBufferList.h Source/WebCore/platform/audio/cocoa/WebAudioBufferList.h
MOVE: Source/WebCore/platform/audio/WebAudioBufferList.cpp Source/WebCore/platform/audio/cocoa/WebAudioBufferList.cpp
MOVE: Source/WebCore/platform/graphics/avfoundation/objc/../MediaSampleAVFObjC.h Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h
MOVE: Source/WebCore/platform/ios/wak/../../WAKViewInternal.h Source/WebCore/platform/ios/wak/WAKViewInternal.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452575</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-08-22 04:22:49 -0700</bug_when>
    <thetext>BTW, the other advantage to mapping Xcode folders to directories on disk is that it&apos;s super-easy to know when then Xcode project is missing files from that directory, such as the Modules/modern-media-controls directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452666</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-08-22 09:35:49 -0700</bug_when>
    <thetext>One thing I should note: This script currently finds directories that exist on disk that match a folder in the Xcode project, then updates the Xcode project to use the directory on disk.

It does not (currently) try to find folders that exist in the Xcode project, but do not exist on disk, and create them.  We can do that as a future enhancement request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452676</commentid>
    <comment_count>8</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-08-22 09:46:19 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #5)
&gt; The last clean-up step before running the script for WebCore (and posting a
&gt; patch) is to move files within the project to reside in the directories
&gt; they&apos;re supposed to be in per the Xcode project.  There are 6 files
&gt; out-of-place currently:

(snip)

&gt; MOVE: Source/WebCore/platform/audio/WebAudioBufferList.h
&gt; Source/WebCore/platform/audio/cocoa/WebAudioBufferList.h
&gt; MOVE: Source/WebCore/platform/audio/WebAudioBufferList.cpp
&gt; Source/WebCore/platform/audio/cocoa/WebAudioBufferList.cpp
&gt; MOVE:
&gt; Source/WebCore/platform/graphics/avfoundation/objc/../MediaSampleAVFObjC.h
&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h

These moves all look correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452737</commentid>
    <comment_count>9</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-08-22 12:08:17 -0700</bug_when>
    <thetext>Thinking about calling this script tidy-Xcode-project or tidy-Xcode-project-file, and folding sort-Xcode-project-file into it (and turning sort-Xcode-project-file into a script that runs the new one).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454517</commentid>
    <comment_count>10</comment_count>
      <attachid>348331</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-08-28 13:30:45 -0700</bug_when>
    <thetext>Created attachment 348331
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454556</commentid>
    <comment_count>11</comment_count>
      <attachid>348344</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-08-28 14:34:22 -0700</bug_when>
    <thetext>Created attachment 348344
Patch v2

Fix some false-positive MISSING warnings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454566</commentid>
    <comment_count>12</comment_count>
      <attachid>348345</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-08-28 15:00:35 -0700</bug_when>
    <thetext>Created attachment 348345
Patch v3

Fix more false-positive MISSING warnings by switching -f tests to -e tests to include folders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454703</commentid>
    <comment_count>13</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-08-28 21:07:09 -0700</bug_when>
    <thetext>Changes to clean up Xcode project files in preparation for this tool:

&lt;https://trac.webkit.org/r235439&gt;
&lt;https://trac.webkit.org/r235443&gt;
&lt;https://trac.webkit.org/r235455&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456036</commentid>
    <comment_count>14</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-09-02 08:46:45 -0700</bug_when>
    <thetext>More changes to clean up Xcode project files in preparation for this tool:

&lt;https://trac.webkit.org/r235541&gt;
&lt;https://trac.webkit.org/r235542&gt;
&lt;https://trac.webkit.org/r235546&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456690</commentid>
    <comment_count>15</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-09-05 07:24:50 -0700</bug_when>
    <thetext>Adding a -m|--missing command-line switch (to validate my understanding of how paths are built while traversing folders) found some more issues that weren&apos;t found by the -g|--convert-groups switch (because the code to check for possible conversions did not see the group or the enclosing group as candidates for conversion, or because of bugs in the conversion code).

&lt;https://trac.webkit.org/r235663&gt;
&lt;https://trac.webkit.org/r235664&gt;
&lt;https://trac.webkit.org/r235665&gt;
&lt;https://trac.webkit.org/r235666&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456873</commentid>
    <comment_count>16</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-09-05 14:58:07 -0700</bug_when>
    <thetext>A few more clean-ups using the -m|--missing command-line switch:

&lt;https://trac.webkit.org/r235672&gt;
&lt;https://trac.webkit.org/r235687&gt;
&lt;https://trac.webkit.org/r235708&gt;
&lt;https://trac.webkit.org/r235709&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730394</commentid>
    <comment_count>17</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-02-17 11:01:58 -0800</bug_when>
    <thetext>Additional fixes since then:

&lt;https://trac.webkit.org/r240196&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1982051</commentid>
    <comment_count>18</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2023-10-03 06:46:25 -0700</bug_when>
    <thetext>This clean-up was done using `tidy-Xcode-project-file --missing --dry-run`:

Clean up libwebrtc Xcode project
https://bugs.webkit.org/show_bug.cgi?id=262527
Committed 268771@main (34ebac9a5f68): &lt;https://commits.webkit.org/268771@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1982052</commentid>
    <comment_count>19</comment_count>
      <attachid>468044</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2023-10-03 06:53:27 -0700</bug_when>
    <thetext>Created attachment 468044
Patch v4

- Fix warnings in later versions of Perl 5 about unescaped left curly brace ({) in a `m##` regular expression.
- Merge patch to commit 268771@main.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1982059</commentid>
    <comment_count>20</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2023-10-03 07:23:45 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #18)
&gt; This clean-up was done using `tidy-Xcode-project-file --map-folders --dry-run`:
&gt; 
&gt; Clean up libwebrtc Xcode project
&gt; https://bugs.webkit.org/show_bug.cgi?id=262527
&gt; Committed 268771@main (34ebac9a5f68): &lt;https://commits.webkit.org/268771@main&gt;

Then committed the automated fixes from the `tidy-Xcode-project-file` tool:

Committed 268773@main (36c3a8590f2b): &lt;https://commits.webkit.org/268773@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348331</attachid>
            <date>2018-08-28 13:30:45 -0700</date>
            <delta_ts>2018-08-28 14:34:21 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-188754-20180828133044.patch</filename>
            <type>text/plain</type>
            <size>42434</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MzM4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTk5OGUzYzJjY2FjNjkwN2ZmOWE0YTM5ODVjNmM1OGVl
OGM0NmZkOS4uZGY5NWQ3N2Q4ZTgzYzA5MjZiYWE1YzBhNjU2ZDA1YzE4NzNhMGVmZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDE4LTA4LTI4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAg
ICAgICAgVG9vbCB0byBmaXggZm9sZGVycyB0aGF0IHNob3VsZCBtYXAgdG8gZGlyZWN0b3JpZXMg
aW4gWGNvZGUgcHJvamVjdCBmaWxlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTg4
NzU0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBuZXcgdGlkeS1YY29kZS1wcm9qZWN0LWZpbGUgc2NyaXB0LiAgVGhlIC1tfC0tbWFwLWZvbGRl
cnMKKyAgICAgICAgc3dpdGNoIHdpbGwgY2xlYW4gdXAgdGhlIFhjb2RlIHByb2plY3QgZmlsZSB0
byBtYXAgZm9sZGVycyB0bworICAgICAgICBkaXJlY3RvcmllcyBvbiBkaXNrLiAgTm90ZSB0aGF0
IHRoZXJlIG1heSBiZSBzb21lIGNsZWFuIHVwCisgICAgICAgIHJlcXVpcmVkIGZvciB0aGUgc2Ny
aXB0IHRvIHVwZGF0ZSB0aGUgcHJvamVjdCBmaWxlLgorCisgICAgICAgICogU2NyaXB0cy90aWR5
LVhjb2RlLXByb2plY3QtZmlsZTogQWRkLgorICAgICAgICAobWFpbik6CisgICAgICAgIChmaW5k
R3JvdXBzVG9Db252ZXJ0VG9EaXJlY3RvcnkpOgorICAgICAgICAobG9hZFhjb2RlUHJvamVjdEZp
bGUpOgorICAgICAgICAobWFwRm9sZGVyc1RvRGlyZWN0b3JpZXMpOgorICAgICAgICAocGFyc2VD
aGlsZHJlbkZyb21Hcm91cCk6CisgICAgICAgIChwYXJzZUZpbGVSZWZlcmVuY2UpOgorICAgICAg
ICAocGFyc2VYY29kZVByb2plY3RGaWxlKToKKyAgICAgICAgKHNhdmVYY29kZVByb2plY3RGaWxl
KToKKyAgICAgICAgKHVwZGF0ZUZvbGRlcnNUb0RpcmVjdG9yaWVzKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHBlcmwvdGlkeS1YY29kZS1wcm9qZWN0LWZpbGVfdW5pdHRlc3QvcGFyc2VDaGls
ZHJlbkZyb21Hcm91cC5wbDogQWRkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC90aWR5
LVhjb2RlLXByb2plY3QtZmlsZV91bml0dGVzdC9wYXJzZUZpbGVSZWZlcmVuY2UucGw6IEFkZC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvdGlkeS1YY29kZS1wcm9qZWN0LWZpbGVfdW5p
dHRlc3QvcGFyc2VYY29kZVByb2plY3RGaWxlLnBsOiBBZGQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OiBJZ25vcmUgdGFicyBpbgorICAgICAgICB0aWR5LVhj
b2RlLXByb2plY3QtZmlsZSB1bml0IHRlc3RzLgorCiAyMDE4LTA4LTI0ICBNeWxlcyBDLiBNYXhm
aWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCB0ZXN0IGZp
eCBhZnRlciByMjM1MjQ5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3RpZHktWGNvZGUtcHJv
amVjdC1maWxlIGIvVG9vbHMvU2NyaXB0cy90aWR5LVhjb2RlLXByb2plY3QtZmlsZQpuZXcgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jMjA2YmYyMGM1NTEwM2VlMWFmM2IzNTg1ZjQwMzJhZTkxMDMyOTUyCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvU2NyaXB0cy90aWR5LVhjb2RlLXByb2plY3QtZmlsZQpAQCAtMCwwICsx
LDQ0OSBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAorCisjIENvcHlyaWdodCAoQykgMjAwNy0yMDE4
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgU2NyaXB0IHRvIHRpZHkgdXAgWGNvZGUgcHJvamVjdC5w
Ynhwcm9qIGZpbGVzLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgRW5nbGlz
aDsKK3VzZSBGaWxlOjpCYXNlbmFtZTsKK3VzZSBGaWxlOjpTcGVjOwordXNlIEZpbGU6OlRlbXAg
cXcodGVtcGZpbGUpOwordXNlIEdldG9wdDo6TG9uZzsKKworc3ViIGZpbmRHcm91cHNUb0NvbnZl
cnRUb0RpcmVjdG9yeSgkJCQkKTsKK3N1YiBsb2FkWGNvZGVQcm9qZWN0RmlsZSgkKTsKK3N1YiBt
YWluKCk7CitzdWIgbWFwRm9sZGVyc1RvRGlyZWN0b3JpZXMoJCQpOworc3ViIHBhcnNlQ2hpbGRy
ZW5Gcm9tR3JvdXAoJCk7CitzdWIgcGFyc2VGaWxlUmVmZXJlbmNlKCQpOworc3ViIHBhcnNlWGNv
ZGVQcm9qZWN0RmlsZSgkKTsKK3N1YiBzYXZlWGNvZGVQcm9qZWN0RmlsZSgkKTsKK3N1YiB1cGRh
dGVGb2xkZXJzVG9EaXJlY3RvcmllcygkKTsKKworZXhpdChtYWluKCkpOworCitzdWIgbWFpbigp
Cit7CisgICAgbXkgJGRyeVJ1biA9IDA7CisgICAgbXkgJGZvcmNlVXBkYXRlID0gMDsKKyAgICBt
eSAkbWFwRm9sZGVycyA9IDA7CisgICAgbXkgJHF1aWV0ID0gMDsKKyAgICBteSAkc2hvd0hlbHA7
CisKKyAgICBteSAkZ2V0T3B0aW9uc1Jlc3VsdCA9IEdldE9wdGlvbnMoCisgICAgICAgICdmfGZv
cmNlIScgICAgICAgPT4gXCRmb3JjZVVwZGF0ZSwKKyAgICAgICAgJ2h8aGVscCcgICAgICAgICA9
PiBcJHNob3dIZWxwLAorICAgICAgICAnbXxtYXAtZm9sZGVycycgID0+IFwkbWFwRm9sZGVycywK
KyAgICAgICAgJ258ZHJ5LXJ1bicgICAgICA9PiBcJGRyeVJ1biwKKyAgICAgICAgJ3F8cXVpZXQn
ICAgICAgICA9PiBcJHF1aWV0LAorICAgICk7CisKKyAgICBpZiAoc2NhbGFyKEBBUkdWKSA9PSAw
ICYmICEkc2hvd0hlbHApIHsKKyAgICAgICAgcHJpbnQgU1RERVJSICJFUlJPUjogTm8gWGNvZGUg
cHJvamVjdCBmaWxlcyAocHJvamVjdC5wYnhwcm9qKSBsaXN0ZWQgb24gY29tbWFuZC1saW5lLlxu
IjsKKyAgICAgICAgdW5kZWYgJGdldE9wdGlvbnNSZXN1bHQ7CisgICAgfQorCisgICAgaWYgKCEk
Z2V0T3B0aW9uc1Jlc3VsdCB8fCAkc2hvd0hlbHApIHsKKyAgICAgICAgcHJpbnQgU1RERVJSIDw8
X19FTkRfXzsKK1VzYWdlOiBAe1sgYmFzZW5hbWUoJDApIF19IFtvcHRpb25zXSBwYXRoL3RvL3By
b2plY3QucGJ4cHJvaiBbcGF0aC90by9wcm9qZWN0LnBieHByb2ogLi4uXQorICAtZnwtLVtuby1d
Zm9yY2UgICBmb3JjZSBwcm9qZWN0IHVwZGF0ZSBldmVuIHdpdGggZXJyb3JzIChkZWZhdWx0OiBu
byBmb3JjZSkKKyAgLWh8LS1oZWxwICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZQorICAt
bXwtLW1hcC1mb2xkZXJzICBtYXAgZm9sZGVycyBpbiBYY29kZSB0byBkaXJlY3RvcmllcyBvbiBk
aXNrIGlmIHRoZXkgZXhpc3QKKyAgLW58LS1kcnktcnVuICAgICAgbWFrZSBjaGFuZ2VzIGJ1dCBk
b24ndCBzYXZlIHRoZW0gYmFjayB0byB0aGUgcHJvamVjdCBmaWxlCisgIC1xfC0tcXVpZXQgICAg
ICAgIGRvIG5vdCBvdXRwdXQgcHJvZ3Jlc3MgbWVzc2FnZXMKK19fRU5EX18KKyAgICAgICAgcmV0
dXJuIDE7CisgICAgfQorCisgICAgZm9yIG15ICRmaWxlIChAQVJHVikgeworICAgICAgICBwcmlu
dCAiUmVhZGluZyBwcm9qZWN0IGZpbGUgJGZpbGUuLi5cbiIgdW5sZXNzICRxdWlldDsKKyAgICAg
ICAgbXkgJHByb2plY3RGaWxlID0gbG9hZFhjb2RlUHJvamVjdEZpbGUoJGZpbGUpOworCisgICAg
ICAgIGlmICgkbWFwRm9sZGVycykgeworICAgICAgICAgICAgcHJpbnQgIkZpeGluZyBmb2xkZXJz
IHRoYXQgY2FuIG1hcCB0byBkaXJlY3Rvcmllcy4uLlxuIiB1bmxlc3MgJHF1aWV0OworICAgICAg
ICAgICAgbWFwRm9sZGVyc1RvRGlyZWN0b3JpZXMoJHByb2plY3RGaWxlLCAkZm9yY2VVcGRhdGUp
OworICAgICAgICAgICAgdXBkYXRlRm9sZGVyc1RvRGlyZWN0b3JpZXMoJHByb2plY3RGaWxlKSBp
ZiAhJGRyeVJ1bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghJGRyeVJ1bikgeworICAgICAg
ICAgICAgcHJpbnQgIlNhdmluZyBwcm9qZWN0IGZpbGUgJGZpbGUuLi5cbiIgdW5sZXNzICRxdWll
dDsKKyAgICAgICAgICAgIHNhdmVYY29kZVByb2plY3RGaWxlKCRwcm9qZWN0RmlsZSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgcHJpbnQgIkRvbmUuXG4iIHVubGVzcyAkcXVpZXQ7CisKKyAgICBy
ZXR1cm4gMDsKK30KKworc3ViIGZpbmRHcm91cHNUb0NvbnZlcnRUb0RpcmVjdG9yeSgkJCQkKQor
eworICAgIG15ICgkZ3JvdXBJRCwgJHBhcmVudFBhdGgsICRwcm9qZWN0UGF0aCwgJHByb2plY3RG
aWxlKSA9IEBfOworICAgIG15ICRlcnJvckNvdW50ID0gMDsKKyAgICBteSAkZmlsZXMgPSAkcHJv
amVjdEZpbGUtPntmaWxlc307CisgICAgbXkgJGdyb3VwcyA9ICRwcm9qZWN0RmlsZS0+e2dyb3Vw
c307CisKKyAgICBteSAkZ3JvdXBTb3VyY2VUcmVlID0gJGdyb3Vwcy0+eyRncm91cElEfXtzb3Vy
Y2VUcmVlfTsKKyAgICBpZiAoJGdyb3VwU291cmNlVHJlZSBlcSAiPGdyb3VwPiIgfHwgJGdyb3Vw
U291cmNlVHJlZSBlcSAiU09VUkNFX1JPT1QiKSB7CisgICAgICAgIG15ICRkaXJlY3RvcnkgPSBG
aWxlOjpTcGVjLT5jYXRkaXIoJHBhcmVudFBhdGgsICRncm91cHMtPnskZ3JvdXBJRH17Z3JvdXBO
YW1lfSk7CisgICAgICAgIGlmICgtZCAkZGlyZWN0b3J5KSB7CisgICAgICAgICAgICAjIE1hcmsg
dGhpcyBncm91cCBhcyBuZWVkaW5nIGFuIHVwZGF0ZSB0byB1c2UgYSBwYXRoLgorICAgICAgICAg
ICAgJGdyb3Vwcy0+eyRncm91cElEfXtfdXBkYXRlR3JvdXBQYXRofSA9ICRkaXJlY3Rvcnk7CisK
KyAgICAgICAgICAgICMgRmluZCBjaGlsZHJlbiAoZmlsZXMgYW5kIGdyb3VwcykgdGhhdCBuZWVk
IGFuIHVwZGF0ZSB0byB1c2UgYSBwYXRoLgorICAgICAgICAgICAgbXkgJWNoaWxkcmVuID0gcGFy
c2VDaGlsZHJlbkZyb21Hcm91cCgkZ3JvdXBzLT57JGdyb3VwSUR9e3RleHR9KTsKKyAgICAgICAg
ICAgIGZvciBteSAkY2hpbGRJRCAoa2V5cyAlY2hpbGRyZW4pIHsKKyAgICAgICAgICAgICAgICBp
ZiAoZXhpc3RzICRmaWxlcy0+eyRjaGlsZElEfSkgeworICAgICAgICAgICAgICAgICAgICBteSAo
JGZpbGVJRCwgJGZpbGVOYW1lLCAkdW51c2VkTmFtZSwgJHBhdGgsICRzb3VyY2VUcmVlKSA9IHBh
cnNlRmlsZVJlZmVyZW5jZSgkZmlsZXMtPnskY2hpbGRJRH17dGV4dH0pOworICAgICAgICAgICAg
ICAgICAgICBteSAkZXhwZWN0ZWRQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkZGlyZWN0b3J5
LCAkZmlsZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBteSAkYWN0dWFsUGF0aDsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCRzb3VyY2VUcmVlIGVxICJTT1VSQ0VfUk9PVCIpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICRhY3R1YWxQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkcHJv
amVjdFBhdGgsICRwYXRoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHNvdXJjZVRy
ZWUgZXEgIjxncm91cD4iKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkYWN0dWFsUGF0aCA9
IEZpbGU6OlNwZWMtPmNhdGZpbGUoJHBhcmVudFBhdGgsICRwYXRoKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSBlbHNpZiAoJHNvdXJjZVRyZWUgZXEgIkJVSUxUX1BST0RVQ1RTX0RJUiIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5leHQ7ICMgU2tpcCB0aGVzZSBhcyB3ZSBjYW4ndCBjaGVj
ayBpZiBmaWxlcyBleGlzdCBpbiB0aGlzIGRpcmVjdG9yeSB1bnRpbCBhZnRlciBidWlsZGluZy4K
KyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRp
ZSAiVW5leHBlY3RlZCBzb3VyY2VUcmVlIFwiJHNvdXJjZVRyZWVcIiBmb3IgY2hpbGQgJGNoaWxk
SUQiOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICghIC1m
ICRleHBlY3RlZFBhdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRlcnJvckNvdW50Kys7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLWYgJGFjdHVhbFBhdGgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcmludCAiTU9WRTogJGFjdHVhbFBhdGggJGV4cGVjdGVkUGF0
aFxuIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJpbnQgIk1JU1NJTkc6ICRhY3R1YWxQYXRoXG4iOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgICAgJGZpbGVzLT57JGNoaWxkSUR9e191cGRhdGVQYXRoV2l0aG91dE5hbWV9ID0g
JGZpbGVOYW1lOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNp
ZiAoZXhpc3RzICRncm91cHMtPnskY2hpbGRJRH0gJiYgJGdyb3Vwcy0+eyRncm91cElEfXtfdXBk
YXRlR3JvdXBQYXRofSkgeworICAgICAgICAgICAgICAgICAgICBteSAkZ3JvdXBOYW1lID0gJGdy
b3Vwcy0+eyRjaGlsZElEfXtncm91cE5hbWV9OworICAgICAgICAgICAgICAgICAgICAkZXJyb3JD
b3VudCArPSBmaW5kR3JvdXBzVG9Db252ZXJ0VG9EaXJlY3RvcnkoJGNoaWxkSUQsICRkaXJlY3Rv
cnksICRwcm9qZWN0UGF0aCwgJHByb2plY3RGaWxlKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoZXhpc3RzICRncm91
cHMtPnskZ3JvdXBJRH17cGF0aFZhbHVlfSkgeworICAgICAgICAgICAgICAgICRwYXJlbnRQYXRo
ID0gRmlsZTo6U3BlYy0+Y2F0ZGlyKCRwYXJlbnRQYXRoLCAkZ3JvdXBzLT57JGdyb3VwSUR9e3Bh
dGhWYWx1ZX0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgIyBGaW5kIGNoaWxkcmVuIHRo
YXQgbWF5IG5lZWQgYW4gdXBkYXRlZCBwYXRoIGluc2lkZSBmb2xkZXJzIHRoYXQgZG9uJ3QgdXNl
IGEgcGF0aCwKKyAgICAgICAgICAgICMgYnV0IHdob3NlIHBhcmVudCBmb2xkZXIocykgbWF5IGhh
dmUgY2hhbmdlZCB0byB1c2UgYSBwYXRoLgorICAgICAgICAgICAgbXkgJWNoaWxkcmVuID0gcGFy
c2VDaGlsZHJlbkZyb21Hcm91cCgkZ3JvdXBzLT57JGdyb3VwSUR9e3RleHR9KTsKKyAgICAgICAg
ICAgIGZvciBteSAkY2hpbGRJRCAoa2V5cyAlY2hpbGRyZW4pIHsKKyAgICAgICAgICAgICAgICBp
ZiAoZXhpc3RzICRmaWxlcy0+eyRjaGlsZElEfSkgeworICAgICAgICAgICAgICAgICAgICBteSAo
JGZpbGVJRCwgJGZpbGVOYW1lLCAkbmFtZSwgJHBhdGgsICRzb3VyY2VUcmVlKSA9IHBhcnNlRmls
ZVJlZmVyZW5jZSgkZmlsZXMtPnskY2hpbGRJRH17dGV4dH0pOworICAgICAgICAgICAgICAgICAg
ICBteSAkZXhwZWN0ZWRQYXRoOworICAgICAgICAgICAgICAgICAgICBpZiAoJHNvdXJjZVRyZWUg
ZXEgIlNPVVJDRV9ST09UIikgeworICAgICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkUGF0
aCA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJHByb2plY3RQYXRoLCAkcGF0aCk7CisgICAgICAgICAg
ICAgICAgICAgIH0gZWxzaWYgKCRzb3VyY2VUcmVlIGVxICI8Z3JvdXA+IikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgbmV4dCBpZiAtZiBGaWxlOjpTcGVjLT5jYXRmaWxlKCRwYXJlbnRQYXRo
LCAkcGF0aCk7ICMgTm90aGluZyB0byBkbyBoZXJlLgorICAgICAgICAgICAgICAgICAgICAgICAg
bXkgQHBhcmVudERpcnMgPSBGaWxlOjpTcGVjLT5zcGxpdGRpcigkcGFyZW50UGF0aCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBteSBAY2hpbGRQYXRoID0gRmlsZTo6U3BlYy0+c3BsaXRkaXIo
JHBhdGgpOworICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHdvcmtzIGJlY2F1c2UgdGhl
IHVwZGF0ZWQgJHBhcmVudFBhdGggY29udGFpbnMgb25lIG9yIG1vcmUgZGlyZWN0b3JpZXMKKyAg
ICAgICAgICAgICAgICAgICAgICAgICMgdGhhdCBkb24ndCBuZWVkIHRvIGJlIGluIHRoZSBjaGls
ZCdzIHBhdGggYW55IGxvbmdlciwgc28gd2UgcG9wIHRoZW0gb2ZmCisgICAgICAgICAgICAgICAg
ICAgICAgICAjIHVudGlsIHRoZXkgbm8gbG9uZ2VyIG1hdGNoLgorICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yIChteSAkaSA9ICQjcGFyZW50RGlyczsgJGkgPj0gMCAmJiAkcGFyZW50RGlyc1sk
aV0gZXEgJGNoaWxkUGF0aFswXTsgLS0kaSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNoaWZ0IEBjaGlsZFBhdGg7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICBteSAkdXBkYXRlZFBhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKEBjaGls
ZFBhdGgpOworICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2UgLWUgaGVyZSBzaW5jZSB0aGlz
ICdmaWxlJyBjb3VsZCBoYXZlICdsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsnLgorICAgICAg
ICAgICAgICAgICAgICAgICAgZGllICJDb3VsZCBub3QgY3JlYXRlIG5ldyBwYXRoIGZvciAkZmls
ZU5hbWUgKCRjaGlsZElEKSIgaWYgISAtZSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRwYXJlbnRQYXRo
LCAkdXBkYXRlZFBhdGgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRmaWxlTmFtZSBl
cSAkdXBkYXRlZFBhdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsZXMtPnsk
Y2hpbGRJRH17X3VwZGF0ZVBhdGhXaXRob3V0TmFtZX0gPSAkdXBkYXRlZFBhdGg7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICRm
aWxlcy0+eyRjaGlsZElEfXtfdXBkYXRlUGF0aFdpdGhOYW1lfSA9ICR1cGRhdGVkUGF0aDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7ICMg
VGhpcyB3aWxsIGJlIHVwZGF0ZWQgaW4gbWFwRm9sZGVyc1RvRGlyZWN0b3JpZXMoKS4KKyAgICAg
ICAgICAgICAgICAgICAgfSBlbHNpZiAoJHNvdXJjZVRyZWUgZXEgIkJVSUxUX1BST0RVQ1RTX0RJ
UiIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7ICMgU2tpcCB0aGVzZSBhcyB3ZSBj
YW4ndCBjaGVjayBpZiBmaWxlcyBleGlzdCBpbiB0aGlzIGRpcmVjdG9yeSB1bnRpbCBhZnRlciBi
dWlsZGluZy4KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHNvdXJjZVRyZWUgZXEgIkRF
VkVMT1BFUl9ESVIiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OyAjIFNraXAgdGhl
c2UgYXMgdGhleSBhcmUgdXN1YWxseSBzeXN0ZW0gZnJhbWV3b3JrcyBvciBzaW1pbGFyLgorICAg
ICAgICAgICAgICAgICAgICB9IGVsc2lmICgkc291cmNlVHJlZSBlcSAiU0RLUk9PVCIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5leHQ7ICMgU2tpcCB0aGVzZSBhcyB0aGV5IGFyZSB1c3Vh
bGx5IHN5c3RlbSBmcmFtZXdvcmtzIG9yIHNpbWlsYXIuCisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzaWYgKCRzb3VyY2VUcmVlIGVxICI8YWJzb2x1dGU+IikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgbmV4dDsgIyBTa2lwIHRoZXNlIGFzIHRoZXkgYXJlIHVzdWFsbHkgc3lzdGVtIGZyYW1l
d29ya3Mgb3Igc2ltaWxhci4KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRpZSAiVW5leHBlY3RlZCBjaGlsZCBzb3VyY2VUcmVlIFwiJHNvdXJj
ZVRyZWVcIiBmb3IgJGNoaWxkSUQiOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGlmICghIC1mICRleHBlY3RlZFBhdGgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICRlcnJvckNvdW50Kys7CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiTUlTU0lO
RzogJGV4cGVjdGVkUGF0aFxuIjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0gZWxzaWYgKGV4aXN0cyAkZ3JvdXBzLT57JGNoaWxkSUR9KSB7CisgICAgICAgICAgICAg
ICAgICAgIG15ICRncm91cE5hbWUgPSAkZ3JvdXBzLT57JGNoaWxkSUR9e2dyb3VwTmFtZX07Cisg
ICAgICAgICAgICAgICAgICAgICRlcnJvckNvdW50ICs9IGZpbmRHcm91cHNUb0NvbnZlcnRUb0Rp
cmVjdG9yeSgkY2hpbGRJRCwgJHBhcmVudFBhdGgsICRwcm9qZWN0UGF0aCwgJHByb2plY3RGaWxl
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVs
c2lmICgkZ3JvdXBTb3VyY2VUcmVlIGVxICJCVUlMVF9QUk9EVUNUU19ESVIiKSB7CisgICAgICAg
ICMgU2tpcCB0aGVzZSBhcyB3ZSBjYW4ndCBjaGVjayBpZiBmaWxlcyBleGlzdCBpbiB0aGlzIGRp
cmVjdG9yeSB1bnRpbCBhZnRlciBidWlsZGluZy4KKyAgICB9IGVsc2UgeworICAgICAgICBkaWUg
IlVuZXhwZWN0ZWQgZ3JvdXAgc291cmNlVHJlZSBcIiRncm91cFNvdXJjZVRyZWVcIiBmb3IgJGdy
b3VwSUQiOworICAgIH0KKworICAgIHJldHVybiAkZXJyb3JDb3VudDsKK30KKworc3ViIGxvYWRY
Y29kZVByb2plY3RGaWxlKCQpCit7CisgICAgbXkgKCRmaWxlKSA9IEBfOworCisgICAgaWYgKGJh
c2VuYW1lKCRmaWxlKSA9fiAvXC54Y29kZXByb2okLykgeworICAgICAgICAkZmlsZSA9IEZpbGU6
OlNwZWMtPmNhdGZpbGUoJGZpbGUsICJwcm9qZWN0LnBieHByb2oiKTsKKyAgICB9CisKKyAgICBp
ZiAoYmFzZW5hbWUoJGZpbGUpIG5lICJwcm9qZWN0LnBieHByb2oiKSB7CisgICAgICAgIGRpZSAi
RkFUQUw6IE5vdCBhbiBYY29kZSBwcm9qZWN0IGZpbGU6ICRmaWxlXG4iOworICAgIH0KKworICAg
IGlmICghIC1mICRmaWxlKSB7CisgICAgICAgIGRpZSAiRkFUQUw6IFhjb2RlIHByb2plY3QgZmls
ZSBkb2VzIG5vdCBleGlzdDogJGZpbGVcbiI7CisgICAgfQorCisgICAgbXkgJHByb2plY3RGaWxl
ID0geworICAgICAgICBmaWxlID0+ICRmaWxlLAorICAgIH07CisKKyAgICB7CisgICAgICAgIGxv
Y2FsICRJTlBVVF9SRUNPUkRfU0VQQVJBVE9SOyAjIFR1cm4gb24gc2x1cnAgbW9kZS4KKyAgICAg
ICAgb3BlbihJTiwgIjwiLCAkZmlsZSkgfHwgZGllICJDb3VsZCBub3Qgb3BlbiAkZmlsZTogJCEi
OworICAgICAgICAkcHJvamVjdEZpbGUtPntjb250ZW50c30gPSA8SU4+OworICAgICAgICBjbG9z
ZShJTik7CisgICAgfQorCisgICAgcGFyc2VYY29kZVByb2plY3RGaWxlKCRwcm9qZWN0RmlsZSk7
CisKKyAgICByZXR1cm4gJHByb2plY3RGaWxlOworfQorCitzdWIgbWFwRm9sZGVyc1RvRGlyZWN0
b3JpZXMoJCQpCit7CisgICAgbXkgKCRwcm9qZWN0RmlsZSwgJGZvcmNlVXBkYXRlKSA9IEBfOwor
CisgICAgIyBSZWN1cnNpdmVseSBpdGVyYXRlIHRocm91Z2ggY2hpbGRyZW4gb2YgbWFpbkdyb3Vw
IHRvIGZpbmQgZ3JvdXBzIHRoYXQgbWFwIHRvIGRpcmVjdG9yaWVzLgorICAgIG15ICRlcnJvckNv
dW50ID0gMDsKKyAgICBteSAkbWFpbkdyb3VwSUQgPSAkcHJvamVjdEZpbGUtPntwcm9qZWN0fXtt
YWluR3JvdXBJRH07CisgICAgbXkgJWNoaWxkcmVuID0gcGFyc2VDaGlsZHJlbkZyb21Hcm91cCgk
cHJvamVjdEZpbGUtPntncm91cHN9eyRtYWluR3JvdXBJRH17dGV4dH0pOworICAgIGZvciBteSAk
Y2hpbGRJRCAoa2V5cyAlY2hpbGRyZW4pIHsKKyAgICAgICAgaWYgKGV4aXN0cyAkcHJvamVjdEZp
bGUtPntncm91cHN9eyRjaGlsZElEfSkgeworICAgICAgICAgICAgbXkgJGdyb3VwTmFtZSA9ICRw
cm9qZWN0RmlsZS0+e2dyb3Vwc317JGNoaWxkSUR9e2dyb3VwTmFtZX07CisgICAgICAgICAgICBt
eSAkcHJvamVjdERpcmVjdG9yeSA9IGRpcm5hbWUoZGlybmFtZSgkcHJvamVjdEZpbGUtPntmaWxl
fSkpOworICAgICAgICAgICAgaWYgKGV4aXN0cyAkcHJvamVjdEZpbGUtPntncm91cHN9eyRtYWlu
R3JvdXBJRH17cGF0aFZhbHVlfSkgeworICAgICAgICAgICAgICAgICRwcm9qZWN0RGlyZWN0b3J5
ID0gRmlsZTo6U3BlYy0+Y2F0ZGlyKCRwcm9qZWN0RGlyZWN0b3J5LCAkcHJvamVjdEZpbGUtPntn
cm91cHN9eyRtYWluR3JvdXBJRH17cGF0aFZhbHVlfSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAkZXJyb3JDb3VudCArPSBmaW5kR3JvdXBzVG9Db252ZXJ0VG9EaXJlY3RvcnkoJGNoaWxk
SUQsICRwcm9qZWN0RGlyZWN0b3J5LCAkcHJvamVjdERpcmVjdG9yeSwgJHByb2plY3RGaWxlKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGRpZSAiRVJST1I6IEZvdW5kICRlcnJvckNvdW50IGlz
c3VlcyB0aGF0IG5lZWQgdG8gYmUgZml4ZWQgZmlyc3QiIGlmICRlcnJvckNvdW50ICE9IDAgJiYg
ISRmb3JjZVVwZGF0ZTsKK30KKworc3ViIHBhcnNlQ2hpbGRyZW5Gcm9tR3JvdXAoJCkKK3sKKyAg
ICBteSAoJHRleHQpID0gQF87CisgICAgbXkgJWNoaWxkcmVuOworCisgICAgbXkgJHBhcnNpbmdD
aGlsZHJlbiA9IDA7CisgICAgZm9yIG15ICRsaW5lIChzcGxpdCgvXi8sICR0ZXh0KSkgeworICAg
ICAgICBpZiAoJGxpbmUgPX4gbSNeXHMqY2hpbGRyZW4gPSBcKCQjKSB7CisgICAgICAgICAgICAk
cGFyc2luZ0NoaWxkcmVuID0gMTsKKyAgICAgICAgICAgIG5leHQ7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKCRwYXJzaW5nQ2hpbGRyZW4gJiYgJGxpbmUgPX4gbSNeXHMqKFswLTlBLUZdezI0fSkg
L1wqICguKykgXCovLCQjKSB7CisgICAgICAgICAgICAkY2hpbGRyZW57JDF9ID0gJDI7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKCRwYXJzaW5nQ2hpbGRyZW4gJiYgJGxpbmUgPX4gbSNeXHMqXCk7
JCMpIHsKKyAgICAgICAgICAgICRwYXJzaW5nQ2hpbGRyZW4gPSAwOworICAgICAgICAgICAgbmV4
dDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAlY2hpbGRyZW47Cit9CisKK3N1YiBw
YXJzZUZpbGVSZWZlcmVuY2UoJCkKK3sKKyAgICBteSAoJGxpbmUpID0gQF87CisgICAgbXkgJGZp
bGVJRDsKKyAgICBteSAkZmlsZU5hbWU7CisgICAgbXkgJG5hbWU7CisgICAgbXkgJHBhdGg7Cisg
ICAgbXkgJHNvdXJjZVRyZWU7CisKKyAgICBpZiAoJGxpbmUgPX4gbSNeXHMqKFswLTlBLUZdezI0
fSkgL1wqICguKykgXCovID0geyMpIHsKKyAgICAgICAgJGZpbGVJRCA9ICQxOworICAgICAgICAk
ZmlsZU5hbWUgPSAkMjsKKyAgICAgICAgaWYgKCRsaW5lID1+IG0jIG5hbWUgPSAoIj8pXFEkZmls
ZU5hbWVcRShcMSk7ICMpIHsKKyAgICAgICAgICAgICRuYW1lID0gJGZpbGVOYW1lOworICAgICAg
ICB9CisgICAgICAgIGlmICgkbGluZSA9fiBtIyBwYXRoID0gKCI/KSguKlxRJGZpbGVOYW1lXEUp
KFwxKTsgIykgeworICAgICAgICAgICAgJHBhdGggPSAkMjsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoJGxpbmUgPX4gbSMgc291cmNlVHJlZSA9ICgiPykoW147XSspKFwxKTsgIykgeworICAgICAg
ICAgICAgJHNvdXJjZVRyZWUgPSAkMjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAo
JGZpbGVJRCwgJGZpbGVOYW1lLCAkbmFtZSwgJHBhdGgsICRzb3VyY2VUcmVlKTsKK30KKworc3Vi
IHBhcnNlWGNvZGVQcm9qZWN0RmlsZSgkKQoreworICAgIG15ICgkcHJvamVjdEZpbGUpID0gQF87
CisKKyAgICBvcGVuKElOLCAiPCIsIFwkcHJvamVjdEZpbGUtPntjb250ZW50c30pOworICAgIHdo
aWxlIChteSAkbGluZSA9IDxJTj4pIHsKKyAgICAgICAgaWYgKCRsaW5lIGVxICIvKiBCZWdpbiBQ
QlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi9cbiIpIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAg
ICAgICAgICAgICAkbGluZSA9IDxJTj47CisgICAgICAgICAgICAgICAgbXkgKCRmaWxlSUQsICRm
aWxlTmFtZSwgJG5hbWUsICR1bnVzZWRQYXRoLCAkdW51c2VkU291cmNlVHJlZSkgPSBwYXJzZUZp
bGVSZWZlcmVuY2UoJGxpbmUpOworICAgICAgICAgICAgICAgICRwcm9qZWN0RmlsZS0+e2ZpbGVz
fXskZmlsZUlEfXt0ZXh0fSA9ICRsaW5lIGlmIGRlZmluZWQgJGZpbGVJRDsKKyAgICAgICAgICAg
IH0gdW50aWwgKCRsaW5lIGVxICIvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovXG4i
KTsKKyAgICAgICAgfSBlbHNpZiAoJGxpbmUgZXEgIi8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24g
Ki9cbiIpIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAkbGluZSA9IDxJTj47
CisgICAgICAgICAgICAgICAgaWYgKCRsaW5lID1+IG0jXihccyspKFswLTktQS1GXXsyNH0pKCAv
XCogKC4rKSBcKi8pPyA9IHtcbiQjKSB7CisgICAgICAgICAgICAgICAgICAgIG15ICRncm91cEVu
ZCA9ICIkMX07XG4iOworICAgICAgICAgICAgICAgICAgICBteSAkZ3JvdXBJRCA9ICQyOworICAg
ICAgICAgICAgICAgICAgICBteSAkZ3JvdXBOYW1lID0gJDQgfHwgIl9fTk9fTkFNRV9fIjsKKyAg
ICAgICAgICAgICAgICAgICAgbXkgJGdyb3VwVGV4dCA9ICRsaW5lOworICAgICAgICAgICAgICAg
ICAgICBteSAkbmFtZVZhbHVlOworICAgICAgICAgICAgICAgICAgICBteSAkcGF0aFZhbHVlOwor
ICAgICAgICAgICAgICAgICAgICBteSAkc291cmNlVHJlZTsKKyAgICAgICAgICAgICAgICAgICAg
ZG8geworICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmUgPSA8SU4+OworICAgICAgICAgICAg
ICAgICAgICAgICAgJG5hbWVWYWx1ZSA9ICQyIGlmICRsaW5lID1+IG0jXlxzKm5hbWUgPSAoIj8p
KC4qKShcMSk7JCM7CisgICAgICAgICAgICAgICAgICAgICAgICAkcGF0aFZhbHVlID0gJDIgaWYg
JGxpbmUgPX4gbSNeXHMqcGF0aCA9ICgiPykoLiopKFwxKTskIzsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICRzb3VyY2VUcmVlID0gJDIgaWYgJGxpbmUgPX4gbSNeXHMqc291cmNlVHJlZSA9ICgi
PykoLiopKFwxKTsjOworICAgICAgICAgICAgICAgICAgICAgICAgJGdyb3VwVGV4dCAuPSAkbGlu
ZTsKKyAgICAgICAgICAgICAgICAgICAgfSB1bnRpbCAoJGxpbmUgZXEgJGdyb3VwRW5kKTsKKyAg
ICAgICAgICAgICAgICAgICAgJHByb2plY3RGaWxlLT57Z3JvdXBzfXskZ3JvdXBJRH0gPSArewor
ICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBOYW1lID0+ICRncm91cE5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICBzb3VyY2VUcmVlID0+ICRzb3VyY2VUcmVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgdGV4dCA9PiAkZ3JvdXBUZXh0LAorICAgICAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgICAgICAkcHJvamVjdEZpbGUtPntncm91cHN9eyRncm91cElEfXtuYW1l
VmFsdWV9ID0gJG5hbWVWYWx1ZSBpZiBkZWZpbmVkICRuYW1lVmFsdWU7CisgICAgICAgICAgICAg
ICAgICAgICRwcm9qZWN0RmlsZS0+e2dyb3Vwc317JGdyb3VwSUR9e3BhdGhWYWx1ZX0gPSAkcGF0
aFZhbHVlIGlmIGRlZmluZWQgJHBhdGhWYWx1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9IHVudGlsICgkbGluZSBlcSAiLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi9cbiIpOwor
ICAgICAgICB9IGVsc2lmICgkbGluZSBlcSAiLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICov
XG4iKSB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgJGxpbmUgPSA8SU4+Owor
ICAgICAgICAgICAgICAgICRwcm9qZWN0RmlsZS0+e3Byb2plY3R9e21haW5Hcm91cElEfSA9ICQy
IGlmICRsaW5lID1+IG0jXihccyopbWFpbkdyb3VwID0gKFswLTlBLUZdezI0fSkoIC9cKiAuKyBc
Ki8pPzskIzsKKyAgICAgICAgICAgICAgICAkcHJvamVjdEZpbGUtPntwcm9qZWN0fXtwcm9qZWN0
RGlyUGF0aH0gPSAkMiBpZiAkbGluZSA9fiBtI14oXHMqKXByb2plY3REaXJQYXRoID0gIihbXiJd
KikiOyQjOworICAgICAgICAgICAgICAgICRwcm9qZWN0RmlsZS0+e3Byb2plY3R9e3Byb2plY3RS
b290fSA9ICQyIGlmICRsaW5lID1+IG0jXihccyopcHJvamVjdFJvb3QgPSAiKFteIl0qKSI7JCM7
CisgICAgICAgICAgICB9IHVudGlsICgkbGluZSBlcSAiLyogRW5kIFBCWFByb2plY3Qgc2VjdGlv
biAqL1xuIik7CisgICAgICAgIH0KKyAgICB9CisgICAgY2xvc2UoSU4pOworfQorCitzdWIgc2F2
ZVhjb2RlUHJvamVjdEZpbGUoJCkKK3sKKyAgICBteSAoJHByb2plY3RGaWxlKSA9IEBfOworCisg
ICAgbXkgKCRPVVQsICR0ZW1wRmlsZU5hbWUpID0gdGVtcGZpbGUoCisgICAgICAgIGJhc2VuYW1l
KCRwcm9qZWN0RmlsZS0+e2ZpbGV9KSAuICItWFhYWFhYWFgiLAorICAgICAgICBESVIgPT4gZGly
bmFtZSgkcHJvamVjdEZpbGUtPntmaWxlfSksCisgICAgICAgIFVOTElOSyA9PiAwLAorICAgICk7
CisKKyAgICAjIENsZWFuIHVwIHRlbXAgZmlsZSBpbiBjYXNlIG9mIGRpZSgpCisgICAgJFNJR3tf
X0RJRV9ffSA9IHN1YiB7CisgICAgICAgIGNsb3NlKElOKTsKKyAgICAgICAgY2xvc2UoJE9VVCk7
CisgICAgICAgIHVubGluaygkdGVtcEZpbGVOYW1lKTsKKyAgICB9OworCisgICAgcHJpbnQgJE9V
VCAkcHJvamVjdEZpbGUtPntjb250ZW50c307CisgICAgY2xvc2UoJE9VVCk7CisKKyAgICB1bmxp
bmsoJHByb2plY3RGaWxlLT57ZmlsZX0pIHx8IGRpZSAiQ291bGQgbm90IGRlbGV0ZSAkcHJvamVj
dEZpbGUtPntmaWxlfTogJCEiOworICAgIHJlbmFtZSgkdGVtcEZpbGVOYW1lLCAkcHJvamVjdEZp
bGUtPntmaWxlfSkgfHwgZGllICJDb3VsZCBub3QgcmVuYW1lICR0ZW1wRmlsZU5hbWUgdG8gJHBy
b2plY3RGaWxlLT57ZmlsZX06ICQhIjsKK30KKworc3ViIHVwZGF0ZUZvbGRlcnNUb0RpcmVjdG9y
aWVzKCQpCit7CisgICAgbXkgKCRwcm9qZWN0RmlsZSkgPSBAXzsKKworICAgIG9wZW4oSU4sICI8
IiwgXCRwcm9qZWN0RmlsZS0+e2NvbnRlbnRzfSk7CisgICAgbXkgJHVwZGF0ZWRDb250ZW50cyA9
ICIiOworICAgIG9wZW4oT1VULCAiPiIsIFwkdXBkYXRlZENvbnRlbnRzKTsKKyAgICB3aGlsZSAo
bXkgJGxpbmUgPSA8SU4+KSB7CisgICAgICAgIGlmICgkbGluZSBlcSAiLyogQmVnaW4gUEJYRmls
ZVJlZmVyZW5jZSBzZWN0aW9uICovXG4iKSB7CisgICAgICAgICAgICBwcmludCBPVVQgJGxpbmU7
CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgJGxpbmUgPSA8SU4+OworICAgICAg
ICAgICAgICAgIG15ICgkZmlsZUlELCAkZmlsZU5hbWUsICRuYW1lLCAkcGF0aCwgJHVudXNlZFNv
dXJjZVRyZWUpID0gcGFyc2VGaWxlUmVmZXJlbmNlKCRsaW5lKTsKKyAgICAgICAgICAgICAgICBp
ZiAoZGVmaW5lZCAkZmlsZUlEKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChleGlzdHMgJHBy
b2plY3RGaWxlLT57ZmlsZXN9eyRmaWxlSUR9e191cGRhdGVQYXRoV2l0aG91dE5hbWV9KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAkbGluZSA9fiBzIyBuYW1lID0gKCI/KVxRJGZpbGVOYW1l
XEUoXDEpOyAjICMgaWYgZGVmaW5lZCAkbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRs
aW5lID1+IHMjIHBhdGggPSAoIj8pLiovXFEkZmlsZU5hbWVcRShcMSk7ICMgcGF0aCA9ICQxJGZp
bGVOYW1lJDE7ICM7CisgICAgICAgICAgICAgICAgICAgICAgICAkbGluZSA9fiBzIyBzb3VyY2VU
cmVlID0gKCI/KS4qKFwxKTsgIyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyAjOworICAgICAgICAg
ICAgICAgICAgICB9IGVsc2lmIChleGlzdHMgJHByb2plY3RGaWxlLT57ZmlsZXN9eyRmaWxlSUR9
e191cGRhdGVQYXRoV2l0aE5hbWV9KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkbGluZSA9
fiBzIyBuYW1lID0gKCI/KVxRJGZpbGVOYW1lXEUoXDEpOyAjICMgaWYgZGVmaW5lZCAkbmFtZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG15ICR1cGRhdGVkUGF0aCA9ICRwcm9qZWN0RmlsZS0+
e2ZpbGVzfXskZmlsZUlEfXtfdXBkYXRlUGF0aFdpdGhOYW1lfTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICRsaW5lID1+IHMjIHBhdGggPSAoIj8pLiovXFEkZmlsZU5hbWVcRShcMSk7ICMgcGF0
aCA9ICQxJHVwZGF0ZWRQYXRoJDE7ICM7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgcHJpbnQgT1VUICRsaW5lOworICAgICAgICAgICAg
fSB1bnRpbCAoJGxpbmUgZXEgIi8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi9cbiIp
OworICAgICAgICB9IGVsc2lmICgkbGluZSBlcSAiLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAq
L1xuIikgeworICAgICAgICAgICAgcHJpbnQgT1VUICRsaW5lOworICAgICAgICAgICAgZG8gewor
ICAgICAgICAgICAgICAgICRsaW5lID0gPElOPjsKKyAgICAgICAgICAgICAgICBpZiAoJGxpbmUg
PX4gbSNeKFxzKykoWzAtOS1BLUZdezI0fSkoIC9cKiAoLispIFwqLyk/ID0ge1xuJCMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbXkgJGdyb3VwRW5kID0gIiQxfTtcbiI7CisgICAgICAgICAgICAg
ICAgICAgIG15ICRncm91cElEID0gJDI7CisgICAgICAgICAgICAgICAgICAgIG15ICRncm91cE5h
bWUgPSAkNCB8fCAiX19OT19OQU1FX18iOworICAgICAgICAgICAgICAgICAgICBteSAkZ3JvdXBU
ZXh0ID0gJGxpbmU7CisgICAgICAgICAgICAgICAgICAgIG15ICRzaG91bGRGaXhQYXRoID0gZXhp
c3RzICRwcm9qZWN0RmlsZS0+e2dyb3Vwc317JGdyb3VwSUR9e191cGRhdGVHcm91cFBhdGh9Owor
ICAgICAgICAgICAgICAgICAgICBteSAkY29udmVydGVkTmFtZVRvUGF0aCA9IDA7CisgICAgICAg
ICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRsaW5lID0gPElOPjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2hvdWxkRml4UGF0aCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgkbGluZSA9fiBzI14oXHMqKW5hbWUgPSAjJDFwYXRoID0g
IykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udmVydGVkTmFtZVRvUGF0
aCA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGNvbnZlcnRlZE5h
bWVUb1BhdGggJiYgJGxpbmUgPX4gbSNeXHMqcGF0aCA9ICMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJGxpbmUgPSAiIjsgIyBPbWl0IGxpbmUgZnJvbSBvdXRwdXQuCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHByb2plY3RGaWxlLT57Z3JvdXBzfXsk
Z3JvdXBJRH17c291cmNlVHJlZX0gbmUgIjxncm91cD4iICYmICRsaW5lID1+IG0jXihccyopc291
cmNlVHJlZSA9ICMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmUgPX4g
cyNeKFxzKilzb3VyY2VUcmVlID0gLio7JCMkMXNvdXJjZVRyZWUgPSAiPGdyb3VwPiJcOyM7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgJGdyb3VwVGV4dCAuPSAkbGluZTsKKyAgICAgICAgICAg
ICAgICAgICAgfSB1bnRpbCAoJGxpbmUgZXEgJGdyb3VwRW5kKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHJpbnQgT1VUICRncm91cFRleHQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgcHJpbnQgT1VUICRsaW5lOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0gdW50aWwgKCRsaW5lIGVxICIvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqL1xuIik7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwcmludCBPVVQgJGxpbmU7CisgICAgICAg
IH0KKyAgICB9CisgICAgY2xvc2UoSU4pOworICAgIGNsb3NlKE9VVCk7CisKKyAgICAkcHJvamVj
dEZpbGUtPntjb250ZW50c30gPSAkdXBkYXRlZENvbnRlbnRzOworfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL3RpZHktWGNvZGUtcHJvamVjdC1maWxlX3VuaXR0ZXN0L3Bh
cnNlQ2hpbGRyZW5Gcm9tR3JvdXAucGwgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvdGlkeS1Y
Y29kZS1wcm9qZWN0LWZpbGVfdW5pdHRlc3QvcGFyc2VDaGlsZHJlbkZyb21Hcm91cC5wbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yZGJiZTMyZTU2NGQxZGIyNTBlMjQyOTAwNjBiNWNmOWFjZmEyOWQ5Ci0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3RpZHktWGNvZGUtcHJvamVjdC1m
aWxlX3VuaXR0ZXN0L3BhcnNlQ2hpbGRyZW5Gcm9tR3JvdXAucGwKQEAgLTAsMCArMSwxNTEgQEAK
KyMhL3Vzci9iaW4vZW52IHBlcmwKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
IyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFRlc3Q6Ok1vcmU7Cit1
c2UgRmluZEJpbjsKK3VzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIu
LiIpOwordXNlIExvYWRBc01vZHVsZSBxdyhUaWR5WGNvZGVQcm9qZWN0RmlsZSB0aWR5LVhjb2Rl
LXByb2plY3QtZmlsZSk7CisKK215IEB0ZXN0Q2FzZUhhc2hSZWZzID0gKAorCit7CisgICAgdGVz
dE5hbWUgPT4gIldlYkNvcmUgbWFpbkdyb3VwIiwKKyAgICBncm91cFRleHQgPT4gPDwnRU5EJywK
KwkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYkNvcmUgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTI4OEU4MkYwMjAzNUQ0RUQwMEIwRENGRiAv
KiBTZXJ2ZXJUaW1pbmdQYXJzZXIuaCAqLywKKwkJCQkyODhFODJFRTIwMzVEMkJFMDBCMERDRkYg
LyogU2VydmVyVGltaW5nUGFyc2VyLmNwcCAqLywKKwkJCQkxQzA5RDA0QjFFMzFDMzI4MDA3MjVG
MTggLyogUEFMLnhjb2RlcHJvaiAqLywKKwkJCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyog
Y29uZmlnLmggKi8sCisJCQkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVm
aXguaCAqLywKKwkJCQk1MzBBNjM0NjFGQTNFMzNEMDAyNkE1NDUgLyogU291cmNlcy50eHQgKi8s
CisJCQkJNTMwQTYzNDIxRkEzRTMzQjAwMjZBNTQ1IC8qIFNvdXJjZXNDb2NvYS50eHQgKi8sCisJ
CQkJOTMwNzA2MTMwOUUwQ0E4MjAwQjE3RkU0IC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8sCisJ
CQkJOTNGMTlCMTkwODI0NUU1OTAwMUU5QUJDIC8qIEluZm8ucGxpc3QgKi8sCisJCQkJOTcxMTQ1
RkUxNEVGMDA2RTAwNjc0RkQ5IC8qIE1vZHVsZXMgKi8sCisJCQkJMjlBODEyMDQwRkJCOUI0MTAw
NTEwMjkzIC8qIGFjY2Vzc2liaWxpdHkgKi8sCisJCQkJNzEwMjVFQzExRjk5RjA5NjAwNEEyNTBD
IC8qIGFuaW1hdGlvbiAqLywKKwkJCQlCQzFBMzc5MDA5N0M2Rjk3MDAxOUYzRDggLyogYmluZGlu
Z3MgKi8sCisJCQkJMUE1NjlDQzQwRDdFMkI2MDAwN0MzOTgzIC8qIGJyaWRnZSAqLywKKwkJCQky
NkYwQzg5MDFBMkQ3OUNCMDAyNzk0RjggLyogY29udGVudGV4dGVuc2lvbnMgKi8sCisJCQkJRTFG
RjhGNUIxODA3MzYyQjAwMTMyNjc0IC8qIGNyeXB0byAqLywKKwkJCQlGNTIzRDE4NDAyREU0MkU4
MDE4NjM1Q0EgLyogY3NzICovLAorCQkJCTI2Qjk5OThEMTgwM0FERkEwMEQwMTEyMSAvKiBjc3Nq
aXQgKi8sCisJCQkJRjUyM0QzMjQwMkRFNDQ3ODAxODYzNUNBIC8qIGRvbSAqLywKKwkJCQlFM0FG
QTk2MzFEQTZFOEFGMDAyODYxQkQgLyogZG9taml0ICovLAorCQkJCTkzMzA5RDg2MDk5RTY0OTEw
MDU2RTU4MSAvKiBlZGl0aW5nICovLAorCQkJCTk3NkQ2QzU3MTIyQjhBMTgwMDFGRDFGNyAvKiBm
aWxlYXBpICovLAorCQkJCTUxNzQxRDA4MEIwNzI1NzAwMEVENDQyQyAvKiBoaXN0b3J5ICovLAor
CQkJCTkzRUVDMUVDMDlDMjg3NzcwMEM1MTVEMSAvKiBodG1sICovLAorCQkJCTFDODFCOTREMEU5
NzMyRDkwMDI2NkUwNyAvKiBpbnNwZWN0b3IgKi8sCisJCQkJMTE1Q0ZBNjYyMDhBRjcyMDAwMUU2
OTkxIC8qIGxheW91dCAqLywKKwkJCQlCQ0IxNkJGQjA5NzlDMzg3MDA0Njc3NDEgLyogbG9hZGVy
ICovLAorCQkJCUZBQkU3MkVDMTA1OUMxRUIwMEQ5OTlERCAvKiBtYXRobWwgKi8sCisJCQkJNjVC
RjAyMTgwOTc0ODA2MzAwQzQzMTk2IC8qIHBhZ2UgKi8sCisJCQkJQkNGMUE1QkEwOTc4MzIwOTAw
NjFBMTIzIC8qIHBsYXRmb3JtICovLAorCQkJCTVEQ0Y4MzY5MEQ1OTE1NzgwMDk1M0JDNiAvKiBw
bHVnaW5zICovLAorCQkJCUY1MjNEMkYzMDJERTQ0M0IwMTg2MzVDQSAvKiByZW5kZXJpbmcgKi8s
CisJCQkJOTlFNDVBMTMxOEEwMjE3NjAwMjZEODhGIC8qIHJlcGxheSAqLywKKwkJCQkxQUU4MkVD
OTBDQUFFMTc3MDAyMjM3QUUgLyogc3RvcmFnZSAqLywKKwkJCQlFNDc2M0Q0QTE3QjI3MDQ5MDBE
MzUyMDYgLyogc3R5bGUgKi8sCisJCQkJQjIyMjc3Q0EwRDAwQkYxRTAwNzFCNzgyIC8qIHN2ZyAq
LywKKwkJCQk0MTdEQTRDRDEzNzM0MjA0MDA3QzU3RkIgLyogdGVzdGluZyAqLywKKwkJCQkyRTQz
NDYzMTBGNTQ2QTY4MDBCMEYxQkEgLyogd29ya2VycyAqLywKKwkJCQlFMUYwNDI0MzA5ODM5Mzg5
MDA2Njk0RUEgLyogeG1sICovLAorCQkJCTY1NjU4MEVDMDlEMTJCMjAwMDBFNjFENyAvKiBEZXJp
dmVkIFNvdXJjZXMgKi8sCisJCQkJMDg5QzE2NjVGRTg0MTE1OEMwMkFBQzA3IC8qIFJlc291cmNl
cyAqLywKKwkJCQkzNzE3RDdFNDE3RUNDMzZDMDAzQzI3NkQgLyogU2NyaXB0cyAqLywKKwkJCQkw
ODY3RDY5QUZFODQwMjhGQzAyQUFDMDcgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkwMzQ3NjhERkZG
MzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi8sCisJCQkJMUNERDQ0NjYwQkE5QzgwMDAwRjkw
MTQ3IC8qIENvbmZpZ3VyYXRpb25zICovLAorCQkJKTsKKwkJCW5hbWUgPSBXZWJDb3JlOworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKK0VORAorICAgIGV4cGVjdGVkUmVzdWx0cyA9
PiB7CisgICAgICAgICcyODhFODJGMDIwMzVENEVEMDBCMERDRkYnID0+ICdTZXJ2ZXJUaW1pbmdQ
YXJzZXIuaCcsCisgICAgICAgICcyODhFODJFRTIwMzVEMkJFMDBCMERDRkYnID0+ICdTZXJ2ZXJU
aW1pbmdQYXJzZXIuY3BwJywKKyAgICAgICAgJzFDMDlEMDRCMUUzMUMzMjgwMDcyNUYxOCcgPT4g
J1BBTC54Y29kZXByb2onLAorICAgICAgICAnNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczJyA9PiAn
Y29uZmlnLmgnLAorICAgICAgICAnRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGJyA9PiAnV2ViQ29y
ZVByZWZpeC5oJywKKyAgICAgICAgJzUzMEE2MzQ2MUZBM0UzM0QwMDI2QTU0NScgPT4gJ1NvdXJj
ZXMudHh0JywKKyAgICAgICAgJzUzMEE2MzQyMUZBM0UzM0IwMDI2QTU0NScgPT4gJ1NvdXJjZXND
b2NvYS50eHQnLAorICAgICAgICAnOTMwNzA2MTMwOUUwQ0E4MjAwQjE3RkU0JyA9PiAnRGVyaXZl
ZFNvdXJjZXMubWFrZScsCisgICAgICAgICc5M0YxOUIxOTA4MjQ1RTU5MDAxRTlBQkMnID0+ICdJ
bmZvLnBsaXN0JywKKyAgICAgICAgJzk3MTE0NUZFMTRFRjAwNkUwMDY3NEZEOScgPT4gJ01vZHVs
ZXMnLAorICAgICAgICAnMjlBODEyMDQwRkJCOUI0MTAwNTEwMjkzJyA9PiAnYWNjZXNzaWJpbGl0
eScsCisgICAgICAgICc3MTAyNUVDMTFGOTlGMDk2MDA0QTI1MEMnID0+ICdhbmltYXRpb24nLAor
ICAgICAgICAnQkMxQTM3OTAwOTdDNkY5NzAwMTlGM0Q4JyA9PiAnYmluZGluZ3MnLAorICAgICAg
ICAnMUE1NjlDQzQwRDdFMkI2MDAwN0MzOTgzJyA9PiAnYnJpZGdlJywKKyAgICAgICAgJzI2RjBD
ODkwMUEyRDc5Q0IwMDI3OTRGOCcgPT4gJ2NvbnRlbnRleHRlbnNpb25zJywKKyAgICAgICAgJ0Ux
RkY4RjVCMTgwNzM2MkIwMDEzMjY3NCcgPT4gJ2NyeXB0bycsCisgICAgICAgICdGNTIzRDE4NDAy
REU0MkU4MDE4NjM1Q0EnID0+ICdjc3MnLAorICAgICAgICAnMjZCOTk5OEQxODAzQURGQTAwRDAx
MTIxJyA9PiAnY3Nzaml0JywKKyAgICAgICAgJ0Y1MjNEMzI0MDJERTQ0NzgwMTg2MzVDQScgPT4g
J2RvbScsCisgICAgICAgICdFM0FGQTk2MzFEQTZFOEFGMDAyODYxQkQnID0+ICdkb21qaXQnLAor
ICAgICAgICAnOTMzMDlEODYwOTlFNjQ5MTAwNTZFNTgxJyA9PiAnZWRpdGluZycsCisgICAgICAg
ICc5NzZENkM1NzEyMkI4QTE4MDAxRkQxRjcnID0+ICdmaWxlYXBpJywKKyAgICAgICAgJzUxNzQx
RDA4MEIwNzI1NzAwMEVENDQyQycgPT4gJ2hpc3RvcnknLAorICAgICAgICAnOTNFRUMxRUMwOUMy
ODc3NzAwQzUxNUQxJyA9PiAnaHRtbCcsCisgICAgICAgICcxQzgxQjk0RDBFOTczMkQ5MDAyNjZF
MDcnID0+ICdpbnNwZWN0b3InLAorICAgICAgICAnMTE1Q0ZBNjYyMDhBRjcyMDAwMUU2OTkxJyA9
PiAnbGF5b3V0JywKKyAgICAgICAgJ0JDQjE2QkZCMDk3OUMzODcwMDQ2Nzc0MScgPT4gJ2xvYWRl
cicsCisgICAgICAgICdGQUJFNzJFQzEwNTlDMUVCMDBEOTk5REQnID0+ICdtYXRobWwnLAorICAg
ICAgICAnNjVCRjAyMTgwOTc0ODA2MzAwQzQzMTk2JyA9PiAncGFnZScsCisgICAgICAgICdCQ0Yx
QTVCQTA5NzgzMjA5MDA2MUExMjMnID0+ICdwbGF0Zm9ybScsCisgICAgICAgICc1RENGODM2OTBE
NTkxNTc4MDA5NTNCQzYnID0+ICdwbHVnaW5zJywKKyAgICAgICAgJ0Y1MjNEMkYzMDJERTQ0M0Iw
MTg2MzVDQScgPT4gJ3JlbmRlcmluZycsCisgICAgICAgICc5OUU0NUExMzE4QTAyMTc2MDAyNkQ4
OEYnID0+ICdyZXBsYXknLAorICAgICAgICAnMUFFODJFQzkwQ0FBRTE3NzAwMjIzN0FFJyA9PiAn
c3RvcmFnZScsCisgICAgICAgICdFNDc2M0Q0QTE3QjI3MDQ5MDBEMzUyMDYnID0+ICdzdHlsZScs
CisgICAgICAgICdCMjIyNzdDQTBEMDBCRjFFMDA3MUI3ODInID0+ICdzdmcnLAorICAgICAgICAn
NDE3REE0Q0QxMzczNDIwNDAwN0M1N0ZCJyA9PiAndGVzdGluZycsCisgICAgICAgICcyRTQzNDYz
MTBGNTQ2QTY4MDBCMEYxQkEnID0+ICd3b3JrZXJzJywKKyAgICAgICAgJ0UxRjA0MjQzMDk4Mzkz
ODkwMDY2OTRFQScgPT4gJ3htbCcsCisgICAgICAgICc2NTY1ODBFQzA5RDEyQjIwMDAwRTYxRDcn
ID0+ICdEZXJpdmVkIFNvdXJjZXMnLAorICAgICAgICAnMDg5QzE2NjVGRTg0MTE1OEMwMkFBQzA3
JyA9PiAnUmVzb3VyY2VzJywKKyAgICAgICAgJzM3MTdEN0U0MTdFQ0MzNkMwMDNDMjc2RCcgPT4g
J1NjcmlwdHMnLAorICAgICAgICAnMDg2N0Q2OUFGRTg0MDI4RkMwMkFBQzA3JyA9PiAnRnJhbWV3
b3JrcycsCisgICAgICAgICcwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEInID0+ICdQcm9kdWN0cycs
CisgICAgICAgICcxQ0RENDQ2NjBCQTlDODAwMDBGOTAxNDcnID0+ICdDb25maWd1cmF0aW9ucycs
CisgICAgfSwKK30sCisKKyk7CisKK215ICR0ZXN0Q2FzZXNDb3VudCA9IHNjYWxhciBAdGVzdENh
c2VIYXNoUmVmczsKK3BsYW4odGVzdHMgPT4gMSAqICR0ZXN0Q2FzZXNDb3VudCk7ICMgVG90YWwg
bnVtYmVyIG9mIGFzc2VydGlvbnMuCisKK2ZvcmVhY2ggbXkgJHRlc3RDYXNlIChAdGVzdENhc2VI
YXNoUmVmcykgeworICAgIG15ICRleHBlY3RlZFJlc3VsdHMgPSAkdGVzdENhc2UtPntleHBlY3Rl
ZFJlc3VsdHN9OworCisgICAgbXkgJHRlc3ROYW1lU3RhcnQgPSAicGFyc2VDaGlsZHJlbkZyb21H
cm91cCgpOiAkdGVzdENhc2UtPnt0ZXN0TmFtZX0iOworICAgIG15ICVhY3R1YWxSZXN1bHRzID0g
VGlkeVhjb2RlUHJvamVjdEZpbGU6OnBhcnNlQ2hpbGRyZW5Gcm9tR3JvdXAoJHRlc3RDYXNlLT57
Z3JvdXBUZXh0fSk7CisgICAgaXNfZGVlcGx5KFwlYWN0dWFsUmVzdWx0cywgJGV4cGVjdGVkUmVz
dWx0cywgJHRlc3ROYW1lU3RhcnQpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRwZXJsL3RpZHktWGNvZGUtcHJvamVjdC1maWxlX3VuaXR0ZXN0L3BhcnNlRmlsZVJlZmVyZW5j
ZS5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC90aWR5LVhjb2RlLXByb2plY3QtZmlsZV91
bml0dGVzdC9wYXJzZUZpbGVSZWZlcmVuY2UucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzM4ZGE5ZGY0OWFjMTky
NWMzNzRiZDI1MzM3ZDM1YmQ0NDAxY2M5NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC90aWR5LVhjb2RlLXByb2plY3QtZmlsZV91bml0dGVzdC9wYXJzZUZpbGVS
ZWZlcmVuY2UucGwKQEAgLTAsMCArMSwxMzAgQEAKKyMhL3Vzci9iaW4vZW52IHBlcmwKKyMKKyMg
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwordXNlIHN0cmljdDsKK3VzZSB3
YXJuaW5nczsKKwordXNlIFRlc3Q6Ok1vcmU7Cit1c2UgRmluZEJpbjsKK3VzZSBsaWIgRmlsZTo6
U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIuLiIpOwordXNlIExvYWRBc01vZHVsZSBxdyhU
aWR5WGNvZGVQcm9qZWN0RmlsZSB0aWR5LVhjb2RlLXByb2plY3QtZmlsZSk7CisKK215IEB0ZXN0
Q2FzZUhhc2hSZWZzID0gKAorCit7CisgICAgdGVzdE5hbWUgPT4gIkF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW0uaCIsCisgICAgZmlsZVRleHQgPT4gPDwnRU5EJywKKwkJMDdENkE0RjYxQkYy
MzA3RDAwMTc0MTQ2IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oOyBw
YXRoID0gcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5o
OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CitFTkQKKyAgICBleHBlY3RlZFJlc3VsdHMg
PT4gK1sKKyAgICAgICAgJzA3RDZBNEY2MUJGMjMwN0QwMDE3NDE0NicsCisgICAgICAgICdBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgnLAorICAgICAgICAnQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbS5oJywKKyAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW0uaCcsCisgICAgICAgICdTT1VSQ0VfUk9PVCcsCisgICAgXSwKK30s
CisKK3sKKyAgICB0ZXN0TmFtZSA9PiAiSURMUGFyc2VyLnBtIiwKKyAgICBmaWxlVGV4dCA9PiA8
PCdFTkQnLAorCQkxNDgxM0JGMzA5RURGODhFMDBGNzU3RTEgLyogSURMUGFyc2VyLnBtICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IElETFBhcnNlci5wbTsgcGF0aCA9IHNjcmlw
dHMvSURMUGFyc2VyLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworRU5ECisgICAgZXhw
ZWN0ZWRSZXN1bHRzID0+ICtbCisgICAgICAgICcxNDgxM0JGMzA5RURGODhFMDBGNzU3RTEnLAor
ICAgICAgICAnSURMUGFyc2VyLnBtJywKKyAgICAgICAgJ0lETFBhcnNlci5wbScsCisgICAgICAg
ICdzY3JpcHRzL0lETFBhcnNlci5wbScsCisgICAgICAgICc8Z3JvdXA+JywKKyAgICBdLAorfSwK
KworeworICAgIHRlc3ROYW1lID0+ICJleHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwiLAor
ICAgIGZpbGVUZXh0ID0+IDw8J0VORCcsCisJCTM3MTdEN0U1MTdFQ0MzQTYwMDNDMjc2RCAvKiBl
eHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gZXh0cmFjdC1s
b2NhbGl6YWJsZS1zdHJpbmdzLnBsOyBwYXRoID0gIlNjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJs
ZS1zdHJpbmdzLnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKK0VORAorICAgIGV4cGVj
dGVkUmVzdWx0cyA9PiArWworICAgICAgICAnMzcxN0Q3RTUxN0VDQzNBNjAwM0MyNzZEJywKKyAg
ICAgICAgJ2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbCcsCisgICAgICAgICdleHRyYWN0
LWxvY2FsaXphYmxlLXN0cmluZ3MucGwnLAorICAgICAgICAnU2NyaXB0cy9leHRyYWN0LWxvY2Fs
aXphYmxlLXN0cmluZ3MucGwnLAorICAgICAgICAnPGdyb3VwPicsCisgICAgXSwKK30sCisKK3sK
KyAgICB0ZXN0TmFtZSA9PiAiZ2VuZXJhdGUtYmluZGluZ3MucGwiLAorICAgIGZpbGVUZXh0ID0+
IDw8J0VORCcsCisJCTkzRjhCMzA3MEEzMDBGRUEwMEY2MUFCOCAvKiBnZW5lcmF0ZS1iaW5kaW5n
cy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSAiZ2VuZXJhdGUtYmluZGlu
Z3MucGwiOyBwYXRoID0gInNjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworRU5ECisgICAgZXhwZWN0ZWRSZXN1bHRzID0+ICtbCisgICAgICAg
ICc5M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjgnLAorICAgICAgICAnZ2VuZXJhdGUtYmluZGluZ3Mu
cGwnLAorICAgICAgICAnZ2VuZXJhdGUtYmluZGluZ3MucGwnLAorICAgICAgICAnc2NyaXB0cy9n
ZW5lcmF0ZS1iaW5kaW5ncy5wbCcsCisgICAgICAgICc8Z3JvdXA+JywKKyAgICBdLAorfSwKKwor
eworICAgIHRlc3ROYW1lID0+ICJSYWRpb0J1dHRvbkdyb3Vwcy5oIiwKKyAgICBmaWxlVGV4dCA9
PiA8PCdFTkQnLAorCQk5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25Hcm91
cHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFkaW9CdXR0b25Hcm91cHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKK0VORAorICAgIGV4cGVjdGVkUmVzdWx0cyA9
PiArWworICAgICAgICAnOTNGOTI1NDEwRjdFRjVCODAwN0UzN0M5JywKKyAgICAgICAgJ1JhZGlv
QnV0dG9uR3JvdXBzLmgnLAorICAgICAgICB1bmRlZiwKKyAgICAgICAgJ1JhZGlvQnV0dG9uR3Jv
dXBzLmgnLAorICAgICAgICAnPGdyb3VwPicsCisgICAgXSwKK30sCisKK3sKKyAgICB0ZXN0TmFt
ZSA9PiAiSW5mby5wbGlzdCIsCisgICAgZmlsZVRleHQgPT4gPDwnRU5EJywKKwkJOTM5ODExMzIw
ODI0QkYwMTAwOERGMDM4IC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBu
YW1lID0gSW5mby5wbGlzdDsgcGF0aCA9IG1hYy9JbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAxOyB9OworRU5ECisgICAgZXhwZWN0
ZWRSZXN1bHRzID0+ICtbCisgICAgICAgICc5Mzk4MTEzMjA4MjRCRjAxMDA4REYwMzgnLAorICAg
ICAgICAnSW5mby5wbGlzdCcsCisgICAgICAgICdJbmZvLnBsaXN0JywKKyAgICAgICAgJ21hYy9J
bmZvLnBsaXN0JywKKyAgICAgICAgJ1NPVVJDRV9ST09UJywKKyAgICBdLAorfSwKKworKTsKKwor
bXkgJHRlc3RDYXNlc0NvdW50ID0gc2NhbGFyIEB0ZXN0Q2FzZUhhc2hSZWZzOworcGxhbih0ZXN0
cyA9PiAxICogJHRlc3RDYXNlc0NvdW50KTsgIyBUb3RhbCBudW1iZXIgb2YgYXNzZXJ0aW9ucy4K
KworZm9yZWFjaCBteSAkdGVzdENhc2UgKEB0ZXN0Q2FzZUhhc2hSZWZzKSB7CisgICAgbXkgJGV4
cGVjdGVkUmVzdWx0cyA9ICR0ZXN0Q2FzZS0+e2V4cGVjdGVkUmVzdWx0c307CisKKyAgICBteSAk
dGVzdE5hbWVTdGFydCA9ICJwYXJzZUZpbGVSZWZlcmVuY2UoKTogJHRlc3RDYXNlLT57dGVzdE5h
bWV9IjsKKyAgICBteSBAYWN0dWFsUmVzdWx0cyA9IFRpZHlYY29kZVByb2plY3RGaWxlOjpwYXJz
ZUZpbGVSZWZlcmVuY2UoJHRlc3RDYXNlLT57ZmlsZVRleHR9KTsKKyAgICBpc19kZWVwbHkoXEBh
Y3R1YWxSZXN1bHRzLCAkZXhwZWN0ZWRSZXN1bHRzLCAkdGVzdE5hbWVTdGFydCk7Cit9CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvdGlkeS1YY29kZS1wcm9qZWN0LWZpbGVf
dW5pdHRlc3QvcGFyc2VYY29kZVByb2plY3RGaWxlLnBsIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL3RpZHktWGNvZGUtcHJvamVjdC1maWxlX3VuaXR0ZXN0L3BhcnNlWGNvZGVQcm9qZWN0Rmls
ZS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lODc2ZmVkNTI2NjA0NmMzYTQ5YjQ2OTFjYTEyOGU5MzQ1NDJmMTUz
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3RpZHktWGNvZGUt
cHJvamVjdC1maWxlX3VuaXR0ZXN0L3BhcnNlWGNvZGVQcm9qZWN0RmlsZS5wbApAQCAtMCwwICsx
LDIzMCBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgVGVzdDo6
TW9yZTsKK3VzZSBGaW5kQmluOwordXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46
OkJpbiwgIi4uIik7Cit1c2UgTG9hZEFzTW9kdWxlIHF3KFRpZHlYY29kZVByb2plY3RGaWxlIHRp
ZHktWGNvZGUtcHJvamVjdC1maWxlKTsKKworbXkgQHRlc3RDYXNlSGFzaFJlZnMgPSAoCisKK3sK
KyAgICB0ZXN0TmFtZSA9PiAiU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIiwKKyAgICBwcm9qZWN0RmlsZSA9PiB7CisgICAgICAgIGNvbnRlbnRzID0+IDw8
J0VORCcsCisvLyAhJCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMg
PSB7CisJfTsKKwlvYmplY3RWZXJzaW9uID0gNDY7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4g
UEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KKy8qIEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQg
c2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworLyogRW5kIFBC
WEJ1aWxkRmlsZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBz
ZWN0aW9uICovCisvKiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KKworLyog
QmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisvKiBFbmQgUEJYQ29weUZp
bGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2Vj
dGlvbiAqLworCQk5OTIwMzk4MDE4Qjk1QkM2MDBCMzlBRjkgLyogVXNlcklucHV0QnJpZGdlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJJbnB1dEJyaWRnZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MjAzOTgxMThCOTVCQzYwMEIzOUFG
OSAvKiBVc2VySW5wdXRCcmlkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VXNlcklucHV0QnJpZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisvKiBFbmQgUEJY
RmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KKy8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICov
CisKKy8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFB
QzA3IC8qIFdlYkNvcmUgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTk5RTQ1QTEzMThBMDIxNzYwMDI2RDg4RiAvKiByZXBsYXkgKi8sCisJCQkpOworCQkJ
bmFtZSA9IFdlYkNvcmU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk5OUU0
NUExMzE4QTAyMTc2MDAyNkQ4OEYgLyogcmVwbGF5ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQk5OTIwMzk4MDE4Qjk1QkM2MDBCMzlBRjkgLyogVXNlcklu
cHV0QnJpZGdlLmNwcCAqLywKKwkJCQk5OTIwMzk4MTE4Qjk1QkM2MDBCMzlBRjkgLyogVXNlcklu
cHV0QnJpZGdlLmggKi8sCisJCQkpOworCQkJcGF0aCA9IHJlcGxheTsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CisvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLworCisvKiBCZWdp
biBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCisvKiBFbmQgUEJYSGVhZGVyc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLwor
LyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFByb2plY3Qg
c2VjdGlvbiAqLworCQkwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3Qg
Ki8gPSB7CisJCQlpc2EgPSBQQlhQcm9qZWN0OworCQkJYXR0cmlidXRlcyA9IHsKKwkJCQlCdWls
ZEluZGVwZW5kZW50VGFyZ2V0c0luUGFyYWxsZWwgPSBZRVM7CisJCQkJTGFzdFN3aWZ0VXBkYXRl
Q2hlY2sgPSAwNzAwOworCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAwNzAwOworCQkJfTsKKwkJCWJ1
aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlDMjg0MzA4OTAyQjExMDA4QTlFRkMgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJXZWJDb3JlIiAqLzsKKwkJCWNvbXBh
dGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDMuMiI7CisJCQlkZXZlbG9wbWVudFJlZ2lvbiA9IEVu
Z2xpc2g7CisJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsKKwkJCWtub3duUmVnaW9ucyA9
ICgKKwkJCQlFbmdsaXNoLAorCQkJCUphcGFuZXNlLAorCQkJCUZyZW5jaCwKKwkJCQlHZXJtYW4s
CisJCQkJU3BhbmlzaCwKKwkJCQlEdXRjaCwKKwkJCQlJdGFsaWFuLAorCQkJKTsKKwkJCW1haW5H
cm91cCA9IDA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJDb3JlICovOworCQkJcHJvZHVj
dFJlZkdyb3VwID0gMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1Y3RzICovOworCQkJ
cHJvamVjdERpclBhdGggPSAiIjsKKwkJCXByb2plY3RSZWZlcmVuY2VzID0gKAorCQkJCXsKKwkJ
CQkJUHJvZHVjdEdyb3VwID0gMUMwOUQwNEMxRTMxQzMyODAwNzI1RjE4IC8qIFByb2R1Y3RzICov
OworCQkJCQlQcm9qZWN0UmVmID0gMUMwOUQwNEIxRTMxQzMyODAwNzI1RjE4IC8qIFBBTC54Y29k
ZXByb2ogKi87CisJCQkJfSwKKwkJCSk7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0
cyA9ICgKKwkJCQk0MTgxNkY3OTEzODU5QzU1MDA1N0FBQTQgLyogQWxsICovLAorCQkJCTkzRjE5
OEE1MDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJDb3JlICovLAorCQkJCTUzNTVFOEQxMUY5NjdFOUQw
MDMxRTA4QyAvKiBHZW5lcmF0ZSBVbmlmaWVkIFNvdXJjZXMgKi8sCisJCQkJREQwNDFGQkUwOUQ5
RERCRTAwMTBBRjJBIC8qIERlcml2ZWQgU291cmNlcyAqLywKKwkJCQk0MTdEQTZDRjEzNzM0RTAy
MDA3QzU3RkIgLyogV2ViQ29yZVRlc3RTdXBwb3J0ICovLAorCQkJCUUxQkE2NkYzMTc0MkJERTAw
MEMyMDI1MSAvKiBXZWJDb3JlVGVzdFNoaW0gKi8sCisJCQkpOworCQl9OworLyogRW5kIFBCWFBy
b2plY3Qgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhSZWZlcmVuY2VQcm94eSBzZWN0aW9uICov
CisvKiBFbmQgUEJYUmVmZXJlbmNlUHJveHkgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhSZXNv
dXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKy8qIEVuZCBQQlhSZXNvdXJjZXNCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24g
Ki8KKy8qIEVuZCBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdp
biBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisvKiBFbmQgUEJYU291cmNlc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24g
Ki8KKy8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJY
VmFyaWFudEdyb3VwIHNlY3Rpb24gKi8KKy8qIEVuZCBQQlhWYXJpYW50R3JvdXAgc2VjdGlvbiAq
LworCisvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisvKiBFbmQgWENC
dWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25M
aXN0IHNlY3Rpb24gKi8KKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9
OworCXJvb3RPYmplY3QgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmpl
Y3QgKi87Cit9CitFTkQKKyAgICB9LAorICAgIGV4cGVjdGVkUmVzdWx0cyA9PiB7CisgICAgICAg
IGZpbGVzID0+IHsKKyAgICAgICAgICAgICc5OTIwMzk4MDE4Qjk1QkM2MDBCMzlBRjknID0+IHsK
KyAgICAgICAgICAgICAgICB0ZXh0ID0+IDw8J0VORCcsCisJCTk5MjAzOTgwMThCOTVCQzYwMEIz
OUFGOSAvKiBVc2VySW5wdXRCcmlkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVXNlcklucHV0QnJpZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
K0VORAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICc5OTIwMzk4MTE4Qjk1QkM2MDBCMzlB
RjknID0+IHsKKyAgICAgICAgICAgICAgICB0ZXh0ID0+IDw8J0VORCcsCisJCTk5MjAzOTgxMThC
OTVCQzYwMEIzOUFGOSAvKiBVc2VySW5wdXRCcmlkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVXNlcklucHV0QnJpZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CitFTkQKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0sCisgICAgICAgIGdyb3VwcyA9PiB7Cisg
ICAgICAgICAgICAnMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3JyA9PiB7CisgICAgICAgICAgICAg
ICAgZ3JvdXBOYW1lID0+ICJXZWJDb3JlIiwKKyAgICAgICAgICAgICAgICBuYW1lVmFsdWUgPT4g
IldlYkNvcmUiLAorICAgICAgICAgICAgICAgIHNvdXJjZVRyZWUgPT4gIjxncm91cD4iLAorICAg
ICAgICAgICAgICAgIHRleHQgPT4gPDwnRU5EJywKKwkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3
IC8qIFdlYkNvcmUgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCTk5RTQ1QTEzMThBMDIxNzYwMDI2RDg4RiAvKiByZXBsYXkgKi8sCisJCQkpOworCQkJbmFt
ZSA9IFdlYkNvcmU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworRU5ECisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgJzk5RTQ1QTEzMThBMDIxNzYwMDI2RDg4RicgPT4gewor
ICAgICAgICAgICAgICAgIGdyb3VwTmFtZSA9PiAicmVwbGF5IiwKKyAgICAgICAgICAgICAgICBw
YXRoVmFsdWUgPT4gInJlcGxheSIsCisgICAgICAgICAgICAgICAgc291cmNlVHJlZSA9PiAiPGdy
b3VwPiIsCisgICAgICAgICAgICAgICAgdGV4dCA9PiA8PCdFTkQnLAorCQk5OUU0NUExMzE4QTAy
MTc2MDAyNkQ4OEYgLyogcmVwbGF5ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQk5OTIwMzk4MDE4Qjk1QkM2MDBCMzlBRjkgLyogVXNlcklucHV0QnJpZGdl
LmNwcCAqLywKKwkJCQk5OTIwMzk4MTE4Qjk1QkM2MDBCMzlBRjkgLyogVXNlcklucHV0QnJpZGdl
LmggKi8sCisJCQkpOworCQkJcGF0aCA9IHJlcGxheTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CitFTkQKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0sCisgICAgICAgIHByb2pl
Y3QgPT4geworICAgICAgICAgICAgbWFpbkdyb3VwSUQgPT4gIjA4NjdENjkxRkU4NDAyOEZDMDJB
QUMwNyIsCisgICAgICAgICAgICBwcm9qZWN0RGlyUGF0aCA9PiAiIiwKKyAgICAgICAgICAgIHBy
b2plY3RSb290ID0+ICIiLAorICAgICAgICB9LAorICAgIH0sCit9LAorCispOworCitteSAkdGVz
dENhc2VzQ291bnQgPSBzY2FsYXIgQHRlc3RDYXNlSGFzaFJlZnM7CitwbGFuKHRlc3RzID0+IDEg
KiAkdGVzdENhc2VzQ291bnQpOyAjIFRvdGFsIG51bWJlciBvZiBhc3NlcnRpb25zLgorCitmb3Jl
YWNoIG15ICR0ZXN0Q2FzZSAoQHRlc3RDYXNlSGFzaFJlZnMpIHsKKyAgICBteSAkZXhwZWN0ZWRS
ZXN1bHRzID0gJHRlc3RDYXNlLT57ZXhwZWN0ZWRSZXN1bHRzfTsKKyAgICAkZXhwZWN0ZWRSZXN1
bHRzLT57Y29udGVudHN9ID0gJHRlc3RDYXNlLT57cHJvamVjdEZpbGV9LT57Y29udGVudHN9Owor
CisgICAgbXkgJHRlc3ROYW1lU3RhcnQgPSAicGFyc2VYY29kZVByb2plY3RGaWxlKCk6ICR0ZXN0
Q2FzZS0+e3Rlc3ROYW1lfSI7CisgICAgbXkgJGFjdHVhbFJlc3VsdHMgPSAkdGVzdENhc2UtPntw
cm9qZWN0RmlsZX07CisgICAgVGlkeVhjb2RlUHJvamVjdEZpbGU6OnBhcnNlWGNvZGVQcm9qZWN0
RmlsZSgkYWN0dWFsUmVzdWx0cyk7CisgICAgaXNfZGVlcGx5KCRhY3R1YWxSZXN1bHRzLCAkZXhw
ZWN0ZWRSZXN1bHRzLCAkdGVzdE5hbWVTdGFydCk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXIucHkKaW5kZXggYTU5MDhlNjAxNmEyMWNhNzZiNmIyYWUzZTU0MTllYTllMWZm
ZDdjYS4uNjliYTA1MDgxZWVkNDcyMzA1ZGZjNGI0NWNiNmYxNGY1NTM4N2QzNSAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtMjYxLDYgKzI2MSwxMCBAQCBfUEFU
SF9SVUxFU19TUEVDSUZJRVIgPSBbCiAgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdUaGly
ZFBhcnR5JywgJ2xpYndlYnJ0YycsICdTb3VyY2UnLCAnd2VicnRjJyksCiAgICAgICBvcy5wYXRo
LmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ1BBTCcsICdwYWwnLCAnc3BpJyldLAogICAgICBb
Ii1yZWFkYWJpbGl0eS9uYW1pbmcvdW5kZXJzY29yZXMiXSksCisKKyAgICAoWyAgIyB0aWR5LVhj
b2RlLXByb2plY3QtZmlsZSB0ZXN0cyB1c2UgdGFicyBiZWNhdXNlIFhjb2RlIHByb2plY3QgZmls
ZXMgdXNlIHRhYnMuCisgICAgICBvcy5wYXRoLmpvaW4oJ1Rvb2xzJywgJ1NjcmlwdHMnLCAnd2Vi
a2l0cGVybCcsICd0aWR5LVhjb2RlLXByb2plY3QtZmlsZV91bml0dGVzdCcpXSwKKyAgICAgWyIt
d2hpdGVzcGFjZS90YWIiXSksCiBdCiAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348344</attachid>
            <date>2018-08-28 14:34:22 -0700</date>
            <delta_ts>2018-08-28 15:00:33 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-188754-20180828143422.patch</filename>
            <type>text/plain</type>
            <size>42711</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NDM5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjQ2NDU3YjQ0MWYwNWQ2ZjU2ZGY2MmE4NmFlNTMxNjNi
MTk3MzkwOC4uOTZhZTI2ZGRjNDlkNTNmMTQ4Y2I4ODhjZGJiNDQwNzgxYjFmOGE5YSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDE4LTA4LTI4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAg
ICAgICAgVG9vbCB0byBmaXggZm9sZGVycyB0aGF0IHNob3VsZCBtYXAgdG8gZGlyZWN0b3JpZXMg
aW4gWGNvZGUgcHJvamVjdCBmaWxlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTg4
NzU0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBuZXcgdGlkeS1YY29kZS1wcm9qZWN0LWZpbGUgc2NyaXB0LiAgVGhlIC1tfC0tbWFwLWZvbGRl
cnMKKyAgICAgICAgc3dpdGNoIHdpbGwgY2xlYW4gdXAgdGhlIFhjb2RlIHByb2plY3QgZmlsZSB0
byBtYXAgZm9sZGVycyB0bworICAgICAgICBkaXJlY3RvcmllcyBvbiBkaXNrLiAgTm90ZSB0aGF0
IHRoZXJlIG1heSBiZSBzb21lIGNsZWFuIHVwCisgICAgICAgIHJlcXVpcmVkIGZvciB0aGUgc2Ny
aXB0IHRvIHVwZGF0ZSB0aGUgcHJvamVjdCBmaWxlLgorCisgICAgICAgICogU2NyaXB0cy90aWR5
LVhjb2RlLXByb2plY3QtZmlsZTogQWRkLgorICAgICAgICAobWFpbik6CisgICAgICAgIChmaW5k
R3JvdXBzVG9Db252ZXJ0VG9EaXJlY3RvcnkpOgorICAgICAgICAobG9hZFhjb2RlUHJvamVjdEZp
bGUpOgorICAgICAgICAobWFwRm9sZGVyc1RvRGlyZWN0b3JpZXMpOgorICAgICAgICAocGFyc2VD
aGlsZHJlbkZyb21Hcm91cCk6CisgICAgICAgIChwYXJzZUZpbGVSZWZlcmVuY2UpOgorICAgICAg
ICAocGFyc2VYY29kZVByb2plY3RGaWxlKToKKyAgICAgICAgKHNhdmVYY29kZVByb2plY3RGaWxl
KToKKyAgICAgICAgKHVwZGF0ZUZvbGRlcnNUb0RpcmVjdG9yaWVzKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHBlcmwvdGlkeS1YY29kZS1wcm9qZWN0LWZpbGVfdW5pdHRlc3QvcGFyc2VDaGls
ZHJlbkZyb21Hcm91cC5wbDogQWRkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC90aWR5
LVhjb2RlLXByb2plY3QtZmlsZV91bml0dGVzdC9wYXJzZUZpbGVSZWZlcmVuY2UucGw6IEFkZC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvdGlkeS1YY29kZS1wcm9qZWN0LWZpbGVfdW5p
dHRlc3QvcGFyc2VYY29kZVByb2plY3RGaWxlLnBsOiBBZGQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OiBJZ25vcmUgdGFicyBpbgorICAgICAgICB0aWR5LVhj
b2RlLXByb2plY3QtZmlsZSB1bml0IHRlc3RzLgorCiAyMDE4LTA4LTI4ICBEYXZpZCBLaWx6ZXIg
IDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGluY29ycmVjdCB1c2Ugb2YgYHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7YCBmb3IgYnVpbHQgcHJvZHVjdHMgYW5kIGZyYW1ld29ya3Mg
aW4gWGNvZGUgcHJvamVjdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvdGlkeS1YY29kZS1w
cm9qZWN0LWZpbGUgYi9Ub29scy9TY3JpcHRzL3RpZHktWGNvZGUtcHJvamVjdC1maWxlCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI4OTgwZjZiMTgyMDUxNWVhNjI3ZmI0MTYxMTljMWNlYjU1YmVkOGMKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3RpZHktWGNvZGUtcHJvamVjdC1maWxlCkBAIC0wLDAg
KzEsNDUzIEBACisjIS91c3IvYmluL2VudiBwZXJsCisKKyMgQ29weXJpZ2h0IChDKSAyMDA3LTIw
MTggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBTY3JpcHQgdG8gdGlkeSB1cCBYY29kZSBwcm9qZWN0
LnBieHByb2ogZmlsZXMuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBFbmds
aXNoOwordXNlIEZpbGU6OkJhc2VuYW1lOwordXNlIEZpbGU6OlNwZWM7Cit1c2UgRmlsZTo6VGVt
cCBxdyh0ZW1wZmlsZSk7Cit1c2UgR2V0b3B0OjpMb25nOworCitzdWIgZmluZEdyb3Vwc1RvQ29u
dmVydFRvRGlyZWN0b3J5KCQkJCQpOworc3ViIGxvYWRYY29kZVByb2plY3RGaWxlKCQpOworc3Vi
IG1haW4oKTsKK3N1YiBtYXBGb2xkZXJzVG9EaXJlY3RvcmllcygkJCk7CitzdWIgcGFyc2VDaGls
ZHJlbkZyb21Hcm91cCgkKTsKK3N1YiBwYXJzZUZpbGVSZWZlcmVuY2UoJCk7CitzdWIgcGFyc2VY
Y29kZVByb2plY3RGaWxlKCQpOworc3ViIHNhdmVYY29kZVByb2plY3RGaWxlKCQpOworc3ViIHVw
ZGF0ZUZvbGRlcnNUb0RpcmVjdG9yaWVzKCQpOworCitleGl0KG1haW4oKSk7CisKK3N1YiBtYWlu
KCkKK3sKKyAgICBteSAkZHJ5UnVuID0gMDsKKyAgICBteSAkZm9yY2VVcGRhdGUgPSAwOworICAg
IG15ICRtYXBGb2xkZXJzID0gMDsKKyAgICBteSAkcXVpZXQgPSAwOworICAgIG15ICRzaG93SGVs
cDsKKworICAgIG15ICRnZXRPcHRpb25zUmVzdWx0ID0gR2V0T3B0aW9ucygKKyAgICAgICAgJ2Z8
Zm9yY2UhJyAgICAgICA9PiBcJGZvcmNlVXBkYXRlLAorICAgICAgICAnaHxoZWxwJyAgICAgICAg
ID0+IFwkc2hvd0hlbHAsCisgICAgICAgICdtfG1hcC1mb2xkZXJzJyAgPT4gXCRtYXBGb2xkZXJz
LAorICAgICAgICAnbnxkcnktcnVuJyAgICAgID0+IFwkZHJ5UnVuLAorICAgICAgICAncXxxdWll
dCcgICAgICAgID0+IFwkcXVpZXQsCisgICAgKTsKKworICAgIGlmIChzY2FsYXIoQEFSR1YpID09
IDAgJiYgISRzaG93SGVscCkgeworICAgICAgICBwcmludCBTVERFUlIgIkVSUk9SOiBObyBYY29k
ZSBwcm9qZWN0IGZpbGVzIChwcm9qZWN0LnBieHByb2opIGxpc3RlZCBvbiBjb21tYW5kLWxpbmUu
XG4iOworICAgICAgICB1bmRlZiAkZ2V0T3B0aW9uc1Jlc3VsdDsKKyAgICB9CisKKyAgICBpZiAo
ISRnZXRPcHRpb25zUmVzdWx0IHx8ICRzaG93SGVscCkgeworICAgICAgICBwcmludCBTVERFUlIg
PDxfX0VORF9fOworVXNhZ2U6IEB7WyBiYXNlbmFtZSgkMCkgXX0gW29wdGlvbnNdIHBhdGgvdG8v
cHJvamVjdC5wYnhwcm9qIFtwYXRoL3RvL3Byb2plY3QucGJ4cHJvaiAuLi5dCisgIC1mfC0tW25v
LV1mb3JjZSAgIGZvcmNlIHByb2plY3QgdXBkYXRlIGV2ZW4gd2l0aCBlcnJvcnMgKGRlZmF1bHQ6
IG5vIGZvcmNlKQorICAtaHwtLWhlbHAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlCisg
IC1tfC0tbWFwLWZvbGRlcnMgIG1hcCBmb2xkZXJzIGluIFhjb2RlIHRvIGRpcmVjdG9yaWVzIG9u
IGRpc2sgaWYgdGhleSBleGlzdAorICAtbnwtLWRyeS1ydW4gICAgICBtYWtlIGNoYW5nZXMgYnV0
IGRvbid0IHNhdmUgdGhlbSBiYWNrIHRvIHRoZSBwcm9qZWN0IGZpbGUKKyAgLXF8LS1xdWlldCAg
ICAgICAgZG8gbm90IG91dHB1dCBwcm9ncmVzcyBtZXNzYWdlcworX19FTkRfXworICAgICAgICBy
ZXR1cm4gMTsKKyAgICB9CisKKyAgICBmb3IgbXkgJGZpbGUgKEBBUkdWKSB7CisgICAgICAgIHBy
aW50ICJSZWFkaW5nIHByb2plY3QgZmlsZSAkZmlsZS4uLlxuIiB1bmxlc3MgJHF1aWV0OworICAg
ICAgICBteSAkcHJvamVjdEZpbGUgPSBsb2FkWGNvZGVQcm9qZWN0RmlsZSgkZmlsZSk7CisKKyAg
ICAgICAgaWYgKCRtYXBGb2xkZXJzKSB7CisgICAgICAgICAgICBwcmludCAiRml4aW5nIGZvbGRl
cnMgdGhhdCBjYW4gbWFwIHRvIGRpcmVjdG9yaWVzLi4uXG4iIHVubGVzcyAkcXVpZXQ7CisgICAg
ICAgICAgICBtYXBGb2xkZXJzVG9EaXJlY3RvcmllcygkcHJvamVjdEZpbGUsICRmb3JjZVVwZGF0
ZSk7CisgICAgICAgICAgICB1cGRhdGVGb2xkZXJzVG9EaXJlY3RvcmllcygkcHJvamVjdEZpbGUp
IGlmICEkZHJ5UnVuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCEkZHJ5UnVuKSB7CisgICAg
ICAgICAgICBwcmludCAiU2F2aW5nIHByb2plY3QgZmlsZSAkZmlsZS4uLlxuIiB1bmxlc3MgJHF1
aWV0OworICAgICAgICAgICAgc2F2ZVhjb2RlUHJvamVjdEZpbGUoJHByb2plY3RGaWxlKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBwcmludCAiRG9uZS5cbiIgdW5sZXNzICRxdWlldDsKKworICAg
IHJldHVybiAwOworfQorCitzdWIgZmluZEdyb3Vwc1RvQ29udmVydFRvRGlyZWN0b3J5KCQkJCQp
Cit7CisgICAgbXkgKCRncm91cElELCAkcGFyZW50UGF0aCwgJHByb2plY3RQYXRoLCAkcHJvamVj
dEZpbGUpID0gQF87CisgICAgbXkgJGVycm9yQ291bnQgPSAwOworICAgIG15ICRmaWxlcyA9ICRw
cm9qZWN0RmlsZS0+e2ZpbGVzfTsKKyAgICBteSAkZ3JvdXBzID0gJHByb2plY3RGaWxlLT57Z3Jv
dXBzfTsKKworICAgIG15ICRncm91cFNvdXJjZVRyZWUgPSAkZ3JvdXBzLT57JGdyb3VwSUR9e3Nv
dXJjZVRyZWV9OworICAgIGlmICgkZ3JvdXBTb3VyY2VUcmVlIGVxICI8Z3JvdXA+IiB8fCAkZ3Jv
dXBTb3VyY2VUcmVlIGVxICJTT1VSQ0VfUk9PVCIpIHsKKyAgICAgICAgbXkgJGRpcmVjdG9yeSA9
IEZpbGU6OlNwZWMtPmNhdGRpcigkcGFyZW50UGF0aCwgJGdyb3Vwcy0+eyRncm91cElEfXtncm91
cE5hbWV9KTsKKyAgICAgICAgaWYgKC1kICRkaXJlY3RvcnkpIHsKKyAgICAgICAgICAgICMgTWFy
ayB0aGlzIGdyb3VwIGFzIG5lZWRpbmcgYW4gdXBkYXRlIHRvIHVzZSBhIHBhdGguCisgICAgICAg
ICAgICAkZ3JvdXBzLT57JGdyb3VwSUR9e191cGRhdGVHcm91cFBhdGh9ID0gJGRpcmVjdG9yeTsK
KworICAgICAgICAgICAgIyBGaW5kIGNoaWxkcmVuIChmaWxlcyBhbmQgZ3JvdXBzKSB0aGF0IG5l
ZWQgYW4gdXBkYXRlIHRvIHVzZSBhIHBhdGguCisgICAgICAgICAgICBteSAlY2hpbGRyZW4gPSBw
YXJzZUNoaWxkcmVuRnJvbUdyb3VwKCRncm91cHMtPnskZ3JvdXBJRH17dGV4dH0pOworICAgICAg
ICAgICAgZm9yIG15ICRjaGlsZElEIChrZXlzICVjaGlsZHJlbikgeworICAgICAgICAgICAgICAg
IGlmIChleGlzdHMgJGZpbGVzLT57JGNoaWxkSUR9KSB7CisgICAgICAgICAgICAgICAgICAgIG15
ICgkZmlsZUlELCAkZmlsZU5hbWUsICR1bnVzZWROYW1lLCAkcGF0aCwgJHNvdXJjZVRyZWUpID0g
cGFyc2VGaWxlUmVmZXJlbmNlKCRmaWxlcy0+eyRjaGlsZElEfXt0ZXh0fSk7CisgICAgICAgICAg
ICAgICAgICAgIG15ICRleHBlY3RlZFBhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRkaXJlY3Rv
cnksICRmaWxlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIG15ICRhY3R1YWxQYXRoOworICAg
ICAgICAgICAgICAgICAgICBpZiAoJHNvdXJjZVRyZWUgZXEgIlNPVVJDRV9ST09UIikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgJGFjdHVhbFBhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRw
cm9qZWN0UGF0aCwgJHBhdGgpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkc291cmNl
VHJlZSBlcSAiPGdyb3VwPiIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleGlzdHMg
JGdyb3Vwcy0+eyRncm91cElEfXtwYXRoVmFsdWV9KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJGFjdHVhbFBhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRkaXJlY3RvcnksICRwYXRo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJGFjdHVhbFBhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRwYXJlbnRQYXRoLCAk
cGF0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzaWYgKCRzb3VyY2VUcmVlIGVxICJCVUlMVF9QUk9EVUNUU19ESVIiKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBuZXh0OyAjIFNraXAgdGhlc2UgYXMgd2UgY2FuJ3QgY2hlY2sgaWYgZmls
ZXMgZXhpc3QgaW4gdGhpcyBkaXJlY3RvcnkgdW50aWwgYWZ0ZXIgYnVpbGRpbmcuCisgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkaWUgIlVuZXhw
ZWN0ZWQgc291cmNlVHJlZSBcIiRzb3VyY2VUcmVlXCIgZm9yIGNoaWxkICRjaGlsZElEIjsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoISAtZiAkZXhwZWN0
ZWRQYXRoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3JDb3VudCsrOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKC1mICRhY3R1YWxQYXRoKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJpbnQgIk1PVkU6ICRhY3R1YWxQYXRoICRleHBlY3RlZFBhdGhcbiI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByaW50ICJNSVNTSU5HOiAkYWN0dWFsUGF0aFxuIjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICRmaWxlcy0+eyRjaGlsZElEfXtfdXBkYXRlUGF0aFdpdGhvdXROYW1lfSA9ICRmaWxlTmFt
ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzaWYgKGV4aXN0
cyAkZ3JvdXBzLT57JGNoaWxkSUR9ICYmICRncm91cHMtPnskZ3JvdXBJRH17X3VwZGF0ZUdyb3Vw
UGF0aH0pIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGdyb3VwTmFtZSA9ICRncm91cHMtPnsk
Y2hpbGRJRH17Z3JvdXBOYW1lfTsKKyAgICAgICAgICAgICAgICAgICAgJGVycm9yQ291bnQgKz0g
ZmluZEdyb3Vwc1RvQ29udmVydFRvRGlyZWN0b3J5KCRjaGlsZElELCAkZGlyZWN0b3J5LCAkcHJv
amVjdFBhdGgsICRwcm9qZWN0RmlsZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGV4aXN0cyAkZ3JvdXBzLT57JGdy
b3VwSUR9e3BhdGhWYWx1ZX0pIHsKKyAgICAgICAgICAgICAgICAkcGFyZW50UGF0aCA9IEZpbGU6
OlNwZWMtPmNhdGRpcigkcGFyZW50UGF0aCwgJGdyb3Vwcy0+eyRncm91cElEfXtwYXRoVmFsdWV9
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICMgRmluZCBjaGlsZHJlbiB0aGF0IG1heSBu
ZWVkIGFuIHVwZGF0ZWQgcGF0aCBpbnNpZGUgZm9sZGVycyB0aGF0IGRvbid0IHVzZSBhIHBhdGgs
CisgICAgICAgICAgICAjIGJ1dCB3aG9zZSBwYXJlbnQgZm9sZGVyKHMpIG1heSBoYXZlIGNoYW5n
ZWQgdG8gdXNlIGEgcGF0aC4KKyAgICAgICAgICAgIG15ICVjaGlsZHJlbiA9IHBhcnNlQ2hpbGRy
ZW5Gcm9tR3JvdXAoJGdyb3Vwcy0+eyRncm91cElEfXt0ZXh0fSk7CisgICAgICAgICAgICBmb3Ig
bXkgJGNoaWxkSUQgKGtleXMgJWNoaWxkcmVuKSB7CisgICAgICAgICAgICAgICAgaWYgKGV4aXN0
cyAkZmlsZXMtPnskY2hpbGRJRH0pIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgKCRmaWxlSUQs
ICRmaWxlTmFtZSwgJG5hbWUsICRwYXRoLCAkc291cmNlVHJlZSkgPSBwYXJzZUZpbGVSZWZlcmVu
Y2UoJGZpbGVzLT57JGNoaWxkSUR9e3RleHR9KTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGV4
cGVjdGVkUGF0aDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRzb3VyY2VUcmVlIGVxICJTT1VS
Q0VfUk9PVCIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRleHBlY3RlZFBhdGggPSBGaWxl
OjpTcGVjLT5jYXRmaWxlKCRwcm9qZWN0UGF0aCwgJHBhdGgpOworICAgICAgICAgICAgICAgICAg
ICB9IGVsc2lmICgkc291cmNlVHJlZSBlcSAiPGdyb3VwPiIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5leHQgaWYgLWYgRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkcGFyZW50UGF0aCwgJHBhdGgp
OyAjIE5vdGhpbmcgdG8gZG8gaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIG15IEBwYXJl
bnREaXJzID0gRmlsZTo6U3BlYy0+c3BsaXRkaXIoJHBhcmVudFBhdGgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbXkgQGNoaWxkUGF0aCA9IEZpbGU6OlNwZWMtPnNwbGl0ZGlyKCRwYXRoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyB3b3JrcyBiZWNhdXNlIHRoZSB1cGRhdGVk
ICRwYXJlbnRQYXRoIGNvbnRhaW5zIG9uZSBvciBtb3JlIGRpcmVjdG9yaWVzCisgICAgICAgICAg
ICAgICAgICAgICAgICAjIHRoYXQgZG9uJ3QgbmVlZCB0byBiZSBpbiB0aGUgY2hpbGQncyBwYXRo
IGFueSBsb25nZXIsIHNvIHdlIHBvcCB0aGVtIG9mZgorICAgICAgICAgICAgICAgICAgICAgICAg
IyB1bnRpbCB0aGV5IG5vIGxvbmdlciBtYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAobXkgJGkgPSAkI3BhcmVudERpcnM7ICRpID49IDAgJiYgJHBhcmVudERpcnNbJGldIGVxICRj
aGlsZFBhdGhbMF07IC0tJGkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdCBA
Y2hpbGRQYXRoOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgbXkgJHVwZGF0ZWRQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZShAY2hpbGRQYXRoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICMgVXNlIC1lIGhlcmUgc2luY2UgdGhpcyAnZmlsZScg
Y291bGQgaGF2ZSAnbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7Jy4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRpZSAiQ291bGQgbm90IGNyZWF0ZSBuZXcgcGF0aCBmb3IgJGZpbGVOYW1lICgk
Y2hpbGRJRCkiIGlmICEgLWUgRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkcGFyZW50UGF0aCwgJHVwZGF0
ZWRQYXRoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZmlsZU5hbWUgZXEgJHVwZGF0
ZWRQYXRoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVzLT57JGNoaWxkSUR9
e191cGRhdGVQYXRoV2l0aG91dE5hbWV9ID0gJHVwZGF0ZWRQYXRoOworICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsZXMtPnsk
Y2hpbGRJRH17X3VwZGF0ZVBhdGhXaXRoTmFtZX0gPSAkdXBkYXRlZFBhdGg7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OyAjIFRoaXMgd2ls
bCBiZSB1cGRhdGVkIGluIG1hcEZvbGRlcnNUb0RpcmVjdG9yaWVzKCkuCisgICAgICAgICAgICAg
ICAgICAgIH0gZWxzaWYgKCRzb3VyY2VUcmVlIGVxICJCVUlMVF9QUk9EVUNUU19ESVIiKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBuZXh0OyAjIFNraXAgdGhlc2UgYXMgd2UgY2FuJ3QgY2hl
Y2sgaWYgZmlsZXMgZXhpc3QgaW4gdGhpcyBkaXJlY3RvcnkgdW50aWwgYWZ0ZXIgYnVpbGRpbmcu
CisgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRzb3VyY2VUcmVlIGVxICJERVZFTE9QRVJf
RElSIikgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDsgIyBTa2lwIHRoZXNlIGFzIHRo
ZXkgYXJlIHVzdWFsbHkgc3lzdGVtIGZyYW1ld29ya3Mgb3Igc2ltaWxhci4KKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNpZiAoJHNvdXJjZVRyZWUgZXEgIlNES1JPT1QiKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBuZXh0OyAjIFNraXAgdGhlc2UgYXMgdGhleSBhcmUgdXN1YWxseSBzeXN0
ZW0gZnJhbWV3b3JrcyBvciBzaW1pbGFyLgorICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgk
c291cmNlVHJlZSBlcSAiPGFic29sdXRlPiIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5l
eHQ7ICMgU2tpcCB0aGVzZSBhcyB0aGV5IGFyZSB1c3VhbGx5IHN5c3RlbSBmcmFtZXdvcmtzIG9y
IHNpbWlsYXIuCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBkaWUgIlVuZXhwZWN0ZWQgY2hpbGQgc291cmNlVHJlZSBcIiRzb3VyY2VUcmVlXCIg
Zm9yICRjaGlsZElEIjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBpZiAoISAtZiAkZXhwZWN0ZWRQYXRoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkZXJy
b3JDb3VudCsrOworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIk1JU1NJTkc6ICRleHBl
Y3RlZFBhdGhcbiI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVs
c2lmIChleGlzdHMgJGdyb3Vwcy0+eyRjaGlsZElEfSkgeworICAgICAgICAgICAgICAgICAgICBt
eSAkZ3JvdXBOYW1lID0gJGdyb3Vwcy0+eyRjaGlsZElEfXtncm91cE5hbWV9OworICAgICAgICAg
ICAgICAgICAgICAkZXJyb3JDb3VudCArPSBmaW5kR3JvdXBzVG9Db252ZXJ0VG9EaXJlY3Rvcnko
JGNoaWxkSUQsICRwYXJlbnRQYXRoLCAkcHJvamVjdFBhdGgsICRwcm9qZWN0RmlsZSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNpZiAoJGdy
b3VwU291cmNlVHJlZSBlcSAiQlVJTFRfUFJPRFVDVFNfRElSIikgeworICAgICAgICAjIFNraXAg
dGhlc2UgYXMgd2UgY2FuJ3QgY2hlY2sgaWYgZmlsZXMgZXhpc3QgaW4gdGhpcyBkaXJlY3Rvcnkg
dW50aWwgYWZ0ZXIgYnVpbGRpbmcuCisgICAgfSBlbHNlIHsKKyAgICAgICAgZGllICJVbmV4cGVj
dGVkIGdyb3VwIHNvdXJjZVRyZWUgXCIkZ3JvdXBTb3VyY2VUcmVlXCIgZm9yICRncm91cElEIjsK
KyAgICB9CisKKyAgICByZXR1cm4gJGVycm9yQ291bnQ7Cit9CisKK3N1YiBsb2FkWGNvZGVQcm9q
ZWN0RmlsZSgkKQoreworICAgIG15ICgkZmlsZSkgPSBAXzsKKworICAgIGlmIChiYXNlbmFtZSgk
ZmlsZSkgPX4gL1wueGNvZGVwcm9qJC8pIHsKKyAgICAgICAgJGZpbGUgPSBGaWxlOjpTcGVjLT5j
YXRmaWxlKCRmaWxlLCAicHJvamVjdC5wYnhwcm9qIik7CisgICAgfQorCisgICAgaWYgKGJhc2Vu
YW1lKCRmaWxlKSBuZSAicHJvamVjdC5wYnhwcm9qIikgeworICAgICAgICBkaWUgIkZBVEFMOiBO
b3QgYW4gWGNvZGUgcHJvamVjdCBmaWxlOiAkZmlsZVxuIjsKKyAgICB9CisKKyAgICBpZiAoISAt
ZiAkZmlsZSkgeworICAgICAgICBkaWUgIkZBVEFMOiBYY29kZSBwcm9qZWN0IGZpbGUgZG9lcyBu
b3QgZXhpc3Q6ICRmaWxlXG4iOworICAgIH0KKworICAgIG15ICRwcm9qZWN0RmlsZSA9IHsKKyAg
ICAgICAgZmlsZSA9PiAkZmlsZSwKKyAgICB9OworCisgICAgeworICAgICAgICBsb2NhbCAkSU5Q
VVRfUkVDT1JEX1NFUEFSQVRPUjsgIyBUdXJuIG9uIHNsdXJwIG1vZGUuCisgICAgICAgIG9wZW4o
SU4sICI8IiwgJGZpbGUpIHx8IGRpZSAiQ291bGQgbm90IG9wZW4gJGZpbGU6ICQhIjsKKyAgICAg
ICAgJHByb2plY3RGaWxlLT57Y29udGVudHN9ID0gPElOPjsKKyAgICAgICAgY2xvc2UoSU4pOwor
ICAgIH0KKworICAgIHBhcnNlWGNvZGVQcm9qZWN0RmlsZSgkcHJvamVjdEZpbGUpOworCisgICAg
cmV0dXJuICRwcm9qZWN0RmlsZTsKK30KKworc3ViIG1hcEZvbGRlcnNUb0RpcmVjdG9yaWVzKCQk
KQoreworICAgIG15ICgkcHJvamVjdEZpbGUsICRmb3JjZVVwZGF0ZSkgPSBAXzsKKworICAgICMg
UmVjdXJzaXZlbHkgaXRlcmF0ZSB0aHJvdWdoIGNoaWxkcmVuIG9mIG1haW5Hcm91cCB0byBmaW5k
IGdyb3VwcyB0aGF0IG1hcCB0byBkaXJlY3Rvcmllcy4KKyAgICBteSAkZXJyb3JDb3VudCA9IDA7
CisgICAgbXkgJG1haW5Hcm91cElEID0gJHByb2plY3RGaWxlLT57cHJvamVjdH17bWFpbkdyb3Vw
SUR9OworICAgIG15ICVjaGlsZHJlbiA9IHBhcnNlQ2hpbGRyZW5Gcm9tR3JvdXAoJHByb2plY3RG
aWxlLT57Z3JvdXBzfXskbWFpbkdyb3VwSUR9e3RleHR9KTsKKyAgICBmb3IgbXkgJGNoaWxkSUQg
KGtleXMgJWNoaWxkcmVuKSB7CisgICAgICAgIGlmIChleGlzdHMgJHByb2plY3RGaWxlLT57Z3Jv
dXBzfXskY2hpbGRJRH0pIHsKKyAgICAgICAgICAgIG15ICRncm91cE5hbWUgPSAkcHJvamVjdEZp
bGUtPntncm91cHN9eyRjaGlsZElEfXtncm91cE5hbWV9OworICAgICAgICAgICAgbXkgJHByb2pl
Y3REaXJlY3RvcnkgPSBkaXJuYW1lKGRpcm5hbWUoJHByb2plY3RGaWxlLT57ZmlsZX0pKTsKKyAg
ICAgICAgICAgIGlmIChleGlzdHMgJHByb2plY3RGaWxlLT57Z3JvdXBzfXskbWFpbkdyb3VwSUR9
e3BhdGhWYWx1ZX0pIHsKKyAgICAgICAgICAgICAgICAkcHJvamVjdERpcmVjdG9yeSA9IEZpbGU6
OlNwZWMtPmNhdGRpcigkcHJvamVjdERpcmVjdG9yeSwgJHByb2plY3RGaWxlLT57Z3JvdXBzfXsk
bWFpbkdyb3VwSUR9e3BhdGhWYWx1ZX0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgJGVy
cm9yQ291bnQgKz0gZmluZEdyb3Vwc1RvQ29udmVydFRvRGlyZWN0b3J5KCRjaGlsZElELCAkcHJv
amVjdERpcmVjdG9yeSwgJHByb2plY3REaXJlY3RvcnksICRwcm9qZWN0RmlsZSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBkaWUgIkVSUk9SOiBGb3VuZCAkZXJyb3JDb3VudCBpc3N1ZXMgdGhh
dCBuZWVkIHRvIGJlIGZpeGVkIGZpcnN0IiBpZiAkZXJyb3JDb3VudCAhPSAwICYmICEkZm9yY2VV
cGRhdGU7Cit9CisKK3N1YiBwYXJzZUNoaWxkcmVuRnJvbUdyb3VwKCQpCit7CisgICAgbXkgKCR0
ZXh0KSA9IEBfOworICAgIG15ICVjaGlsZHJlbjsKKworICAgIG15ICRwYXJzaW5nQ2hpbGRyZW4g
PSAwOworICAgIGZvciBteSAkbGluZSAoc3BsaXQoL14vLCAkdGV4dCkpIHsKKyAgICAgICAgaWYg
KCRsaW5lID1+IG0jXlxzKmNoaWxkcmVuID0gXCgkIykgeworICAgICAgICAgICAgJHBhcnNpbmdD
aGlsZHJlbiA9IDE7CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9CisgICAgICAgIGlmICgk
cGFyc2luZ0NoaWxkcmVuICYmICRsaW5lID1+IG0jXlxzKihbMC05QS1GXXsyNH0pIC9cKiAoLisp
IFwqLywkIykgeworICAgICAgICAgICAgJGNoaWxkcmVueyQxfSA9ICQyOworICAgICAgICB9Cisg
ICAgICAgIGlmICgkcGFyc2luZ0NoaWxkcmVuICYmICRsaW5lID1+IG0jXlxzKlwpOyQjKSB7Cisg
ICAgICAgICAgICAkcGFyc2luZ0NoaWxkcmVuID0gMDsKKyAgICAgICAgICAgIG5leHQ7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gJWNoaWxkcmVuOworfQorCitzdWIgcGFyc2VGaWxl
UmVmZXJlbmNlKCQpCit7CisgICAgbXkgKCRsaW5lKSA9IEBfOworICAgIG15ICRmaWxlSUQ7Cisg
ICAgbXkgJGZpbGVOYW1lOworICAgIG15ICRuYW1lOworICAgIG15ICRwYXRoOworICAgIG15ICRz
b3VyY2VUcmVlOworCisgICAgaWYgKCRsaW5lID1+IG0jXlxzKihbMC05QS1GXXsyNH0pIC9cKiAo
LispIFwqLyA9IHsjKSB7CisgICAgICAgICRmaWxlSUQgPSAkMTsKKyAgICAgICAgJGZpbGVOYW1l
ID0gJDI7CisgICAgICAgIGlmICgkbGluZSA9fiBtIyBuYW1lID0gKCI/KVxRJGZpbGVOYW1lXEUo
XDEpOyAjKSB7CisgICAgICAgICAgICAkbmFtZSA9ICRmaWxlTmFtZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoJGxpbmUgPX4gbSMgcGF0aCA9ICgiPykoLipcUSRmaWxlTmFtZVxFKShcMSk7ICMp
IHsKKyAgICAgICAgICAgICRwYXRoID0gJDI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRsaW5l
ID1+IG0jIHNvdXJjZVRyZWUgPSAoIj8pKFteO10rKShcMSk7ICMpIHsKKyAgICAgICAgICAgICRz
b3VyY2VUcmVlID0gJDI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gKCRmaWxlSUQs
ICRmaWxlTmFtZSwgJG5hbWUsICRwYXRoLCAkc291cmNlVHJlZSk7Cit9CisKK3N1YiBwYXJzZVhj
b2RlUHJvamVjdEZpbGUoJCkKK3sKKyAgICBteSAoJHByb2plY3RGaWxlKSA9IEBfOworCisgICAg
b3BlbihJTiwgIjwiLCBcJHByb2plY3RGaWxlLT57Y29udGVudHN9KTsKKyAgICB3aGlsZSAobXkg
JGxpbmUgPSA8SU4+KSB7CisgICAgICAgIGlmICgkbGluZSBlcSAiLyogQmVnaW4gUEJYRmlsZVJl
ZmVyZW5jZSBzZWN0aW9uICovXG4iKSB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAg
ICAgJGxpbmUgPSA8SU4+OworICAgICAgICAgICAgICAgIG15ICgkZmlsZUlELCAkZmlsZU5hbWUs
ICRuYW1lLCAkdW51c2VkUGF0aCwgJHVudXNlZFNvdXJjZVRyZWUpID0gcGFyc2VGaWxlUmVmZXJl
bmNlKCRsaW5lKTsKKyAgICAgICAgICAgICAgICAkcHJvamVjdEZpbGUtPntmaWxlc317JGZpbGVJ
RH17dGV4dH0gPSAkbGluZSBpZiBkZWZpbmVkICRmaWxlSUQ7CisgICAgICAgICAgICB9IHVudGls
ICgkbGluZSBlcSAiLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqL1xuIik7CisgICAg
ICAgIH0gZWxzaWYgKCRsaW5lIGVxICIvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovXG4iKSB7
CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgJGxpbmUgPSA8SU4+OworICAgICAg
ICAgICAgICAgIGlmICgkbGluZSA9fiBtI14oXHMrKShbMC05LUEtRl17MjR9KSggL1wqICguKykg
XCovKT8gPSB7XG4kIykgeworICAgICAgICAgICAgICAgICAgICBteSAkZ3JvdXBFbmQgPSAiJDF9
O1xuIjsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGdyb3VwSUQgPSAkMjsKKyAgICAgICAgICAg
ICAgICAgICAgbXkgJGdyb3VwTmFtZSA9ICQ0IHx8ICJfX05PX05BTUVfXyI7CisgICAgICAgICAg
ICAgICAgICAgIG15ICRncm91cFRleHQgPSAkbGluZTsKKyAgICAgICAgICAgICAgICAgICAgbXkg
JG5hbWVWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHBhdGhWYWx1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgbXkgJHNvdXJjZVRyZWU7CisgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICRsaW5lID0gPElOPjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICRuYW1lVmFsdWUgPSAkMiBpZiAkbGluZSA9fiBtI15ccypuYW1lID0gKCI/KSguKikoXDEp
OyQjOworICAgICAgICAgICAgICAgICAgICAgICAgJHBhdGhWYWx1ZSA9ICQyIGlmICRsaW5lID1+
IG0jXlxzKnBhdGggPSAoIj8pKC4qKShcMSk7JCM7CisgICAgICAgICAgICAgICAgICAgICAgICAk
c291cmNlVHJlZSA9ICQyIGlmICRsaW5lID1+IG0jXlxzKnNvdXJjZVRyZWUgPSAoIj8pKC4qKShc
MSk7IzsKKyAgICAgICAgICAgICAgICAgICAgICAgICRncm91cFRleHQgLj0gJGxpbmU7CisgICAg
ICAgICAgICAgICAgICAgIH0gdW50aWwgKCRsaW5lIGVxICRncm91cEVuZCk7CisgICAgICAgICAg
ICAgICAgICAgICRwcm9qZWN0RmlsZS0+e2dyb3Vwc317JGdyb3VwSUR9ID0gK3sKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGdyb3VwTmFtZSA9PiAkZ3JvdXBOYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgc291cmNlVHJlZSA9PiAkc291cmNlVHJlZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRleHQgPT4gJGdyb3VwVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICAgICAgJHByb2plY3RGaWxlLT57Z3JvdXBzfXskZ3JvdXBJRH17bmFtZVZhbHVlfSA9
ICRuYW1lVmFsdWUgaWYgZGVmaW5lZCAkbmFtZVZhbHVlOworICAgICAgICAgICAgICAgICAgICAk
cHJvamVjdEZpbGUtPntncm91cHN9eyRncm91cElEfXtwYXRoVmFsdWV9ID0gJHBhdGhWYWx1ZSBp
ZiBkZWZpbmVkICRwYXRoVmFsdWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSB1
bnRpbCAoJGxpbmUgZXEgIi8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovXG4iKTsKKyAgICAgICAg
fSBlbHNpZiAoJGxpbmUgZXEgIi8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqL1xuIikgewor
ICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICRsaW5lID0gPElOPjsKKyAgICAgICAg
ICAgICAgICAkcHJvamVjdEZpbGUtPntwcm9qZWN0fXttYWluR3JvdXBJRH0gPSAkMiBpZiAkbGlu
ZSA9fiBtI14oXHMqKW1haW5Hcm91cCA9IChbMC05QS1GXXsyNH0pKCAvXCogLisgXCovKT87JCM7
CisgICAgICAgICAgICAgICAgJHByb2plY3RGaWxlLT57cHJvamVjdH17cHJvamVjdERpclBhdGh9
ID0gJDIgaWYgJGxpbmUgPX4gbSNeKFxzKilwcm9qZWN0RGlyUGF0aCA9ICIoW14iXSopIjskIzsK
KyAgICAgICAgICAgICAgICAkcHJvamVjdEZpbGUtPntwcm9qZWN0fXtwcm9qZWN0Um9vdH0gPSAk
MiBpZiAkbGluZSA9fiBtI14oXHMqKXByb2plY3RSb290ID0gIihbXiJdKikiOyQjOworICAgICAg
ICAgICAgfSB1bnRpbCAoJGxpbmUgZXEgIi8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi9cbiIp
OworICAgICAgICB9CisgICAgfQorICAgIGNsb3NlKElOKTsKK30KKworc3ViIHNhdmVYY29kZVBy
b2plY3RGaWxlKCQpCit7CisgICAgbXkgKCRwcm9qZWN0RmlsZSkgPSBAXzsKKworICAgIG15ICgk
T1VULCAkdGVtcEZpbGVOYW1lKSA9IHRlbXBmaWxlKAorICAgICAgICBiYXNlbmFtZSgkcHJvamVj
dEZpbGUtPntmaWxlfSkgLiAiLVhYWFhYWFhYIiwKKyAgICAgICAgRElSID0+IGRpcm5hbWUoJHBy
b2plY3RGaWxlLT57ZmlsZX0pLAorICAgICAgICBVTkxJTksgPT4gMCwKKyAgICApOworCisgICAg
IyBDbGVhbiB1cCB0ZW1wIGZpbGUgaW4gY2FzZSBvZiBkaWUoKQorICAgICRTSUd7X19ESUVfX30g
PSBzdWIgeworICAgICAgICBjbG9zZShJTik7CisgICAgICAgIGNsb3NlKCRPVVQpOworICAgICAg
ICB1bmxpbmsoJHRlbXBGaWxlTmFtZSk7CisgICAgfTsKKworICAgIHByaW50ICRPVVQgJHByb2pl
Y3RGaWxlLT57Y29udGVudHN9OworICAgIGNsb3NlKCRPVVQpOworCisgICAgdW5saW5rKCRwcm9q
ZWN0RmlsZS0+e2ZpbGV9KSB8fCBkaWUgIkNvdWxkIG5vdCBkZWxldGUgJHByb2plY3RGaWxlLT57
ZmlsZX06ICQhIjsKKyAgICByZW5hbWUoJHRlbXBGaWxlTmFtZSwgJHByb2plY3RGaWxlLT57Zmls
ZX0pIHx8IGRpZSAiQ291bGQgbm90IHJlbmFtZSAkdGVtcEZpbGVOYW1lIHRvICRwcm9qZWN0Rmls
ZS0+e2ZpbGV9OiAkISI7Cit9CisKK3N1YiB1cGRhdGVGb2xkZXJzVG9EaXJlY3RvcmllcygkKQor
eworICAgIG15ICgkcHJvamVjdEZpbGUpID0gQF87CisKKyAgICBvcGVuKElOLCAiPCIsIFwkcHJv
amVjdEZpbGUtPntjb250ZW50c30pOworICAgIG15ICR1cGRhdGVkQ29udGVudHMgPSAiIjsKKyAg
ICBvcGVuKE9VVCwgIj4iLCBcJHVwZGF0ZWRDb250ZW50cyk7CisgICAgd2hpbGUgKG15ICRsaW5l
ID0gPElOPikgeworICAgICAgICBpZiAoJGxpbmUgZXEgIi8qIEJlZ2luIFBCWEZpbGVSZWZlcmVu
Y2Ugc2VjdGlvbiAqL1xuIikgeworICAgICAgICAgICAgcHJpbnQgT1VUICRsaW5lOworICAgICAg
ICAgICAgZG8geworICAgICAgICAgICAgICAgICRsaW5lID0gPElOPjsKKyAgICAgICAgICAgICAg
ICBteSAoJGZpbGVJRCwgJGZpbGVOYW1lLCAkbmFtZSwgJHBhdGgsICR1bnVzZWRTb3VyY2VUcmVl
KSA9IHBhcnNlRmlsZVJlZmVyZW5jZSgkbGluZSk7CisgICAgICAgICAgICAgICAgaWYgKGRlZmlu
ZWQgJGZpbGVJRCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RzICRwcm9qZWN0Rmls
ZS0+e2ZpbGVzfXskZmlsZUlEfXtfdXBkYXRlUGF0aFdpdGhvdXROYW1lfSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgJGxpbmUgPX4gcyMgbmFtZSA9ICgiPylcUSRmaWxlTmFtZVxFKFwxKTsg
IyAjIGlmIGRlZmluZWQgJG5hbWU7CisgICAgICAgICAgICAgICAgICAgICAgICAkbGluZSA9fiBz
IyBwYXRoID0gKCI/KS4qL1xRJGZpbGVOYW1lXEUoXDEpOyAjIHBhdGggPSAkMSRmaWxlTmFtZSQx
OyAjOworICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmUgPX4gcyMgc291cmNlVHJlZSA9ICgi
PykuKihcMSk7ICMgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgIzsKKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNpZiAoZXhpc3RzICRwcm9qZWN0RmlsZS0+e2ZpbGVzfXskZmlsZUlEfXtfdXBkYXRl
UGF0aFdpdGhOYW1lfSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmUgPX4gcyMgbmFt
ZSA9ICgiPylcUSRmaWxlTmFtZVxFKFwxKTsgIyAjIGlmIGRlZmluZWQgJG5hbWU7CisgICAgICAg
ICAgICAgICAgICAgICAgICBteSAkdXBkYXRlZFBhdGggPSAkcHJvamVjdEZpbGUtPntmaWxlc317
JGZpbGVJRH17X3VwZGF0ZVBhdGhXaXRoTmFtZX07CisgICAgICAgICAgICAgICAgICAgICAgICAk
bGluZSA9fiBzIyBwYXRoID0gKCI/KS4qL1xRJGZpbGVOYW1lXEUoXDEpOyAjIHBhdGggPSAkMSR1
cGRhdGVkUGF0aCQxOyAjOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIHByaW50IE9VVCAkbGluZTsKKyAgICAgICAgICAgIH0gdW50aWwg
KCRsaW5lIGVxICIvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovXG4iKTsKKyAgICAg
ICAgfSBlbHNpZiAoJGxpbmUgZXEgIi8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi9cbiIpIHsK
KyAgICAgICAgICAgIHByaW50IE9VVCAkbGluZTsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAg
ICAgICAgICAkbGluZSA9IDxJTj47CisgICAgICAgICAgICAgICAgaWYgKCRsaW5lID1+IG0jXihc
cyspKFswLTktQS1GXXsyNH0pKCAvXCogKC4rKSBcKi8pPyA9IHtcbiQjKSB7CisgICAgICAgICAg
ICAgICAgICAgIG15ICRncm91cEVuZCA9ICIkMX07XG4iOworICAgICAgICAgICAgICAgICAgICBt
eSAkZ3JvdXBJRCA9ICQyOworICAgICAgICAgICAgICAgICAgICBteSAkZ3JvdXBOYW1lID0gJDQg
fHwgIl9fTk9fTkFNRV9fIjsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGdyb3VwVGV4dCA9ICRs
aW5lOworICAgICAgICAgICAgICAgICAgICBteSAkc2hvdWxkRml4UGF0aCA9IGV4aXN0cyAkcHJv
amVjdEZpbGUtPntncm91cHN9eyRncm91cElEfXtfdXBkYXRlR3JvdXBQYXRofTsKKyAgICAgICAg
ICAgICAgICAgICAgbXkgJGNvbnZlcnRlZE5hbWVUb1BhdGggPSAwOworICAgICAgICAgICAgICAg
ICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICAkbGluZSA9IDxJTj47CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoJHNob3VsZEZpeFBhdGgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoJGxpbmUgPX4gcyNeKFxzKiluYW1lID0gIyQxcGF0aCA9ICMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnZlcnRlZE5hbWVUb1BhdGggPSAxOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRjb252ZXJ0ZWROYW1lVG9QYXRo
ICYmICRsaW5lID1+IG0jXlxzKnBhdGggPSAjKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICRsaW5lID0gIiI7ICMgT21pdCBsaW5lIGZyb20gb3V0cHV0LgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRwcm9qZWN0RmlsZS0+e2dyb3Vwc317JGdyb3VwSUR9
e3NvdXJjZVRyZWV9IG5lICI8Z3JvdXA+IiAmJiAkbGluZSA9fiBtI14oXHMqKXNvdXJjZVRyZWUg
PSAjKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaW5lID1+IHMjXihccyop
c291cmNlVHJlZSA9IC4qOyQjJDFzb3VyY2VUcmVlID0gIjxncm91cD4iXDsjOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICRncm91cFRleHQgLj0gJGxpbmU7CisgICAgICAgICAgICAgICAgICAg
IH0gdW50aWwgKCRsaW5lIGVxICRncm91cEVuZCk7CisgICAgICAgICAgICAgICAgICAgIHByaW50
IE9VVCAkZ3JvdXBUZXh0OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIHByaW50IE9VVCAkbGluZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
IHVudGlsICgkbGluZSBlcSAiLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi9cbiIpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgcHJpbnQgT1VUICRsaW5lOworICAgICAgICB9CisgICAg
fQorICAgIGNsb3NlKElOKTsKKyAgICBjbG9zZShPVVQpOworCisgICAgJHByb2plY3RGaWxlLT57
Y29udGVudHN9ID0gJHVwZGF0ZWRDb250ZW50czsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC90aWR5LVhjb2RlLXByb2plY3QtZmlsZV91bml0dGVzdC9wYXJzZUNoaWxk
cmVuRnJvbUdyb3VwLnBsIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3RpZHktWGNvZGUtcHJv
amVjdC1maWxlX3VuaXR0ZXN0L3BhcnNlQ2hpbGRyZW5Gcm9tR3JvdXAucGwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmRiYmUzMmU1NjRkMWRiMjUwZTI0MjkwMDYwYjVjZjlhY2ZhMjlkOQotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC90aWR5LVhjb2RlLXByb2plY3QtZmlsZV91bml0
dGVzdC9wYXJzZUNoaWxkcmVuRnJvbUdyb3VwLnBsCkBAIC0wLDAgKzEsMTUxIEBACisjIS91c3Iv
YmluL2VudiBwZXJsCisjCisjIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBUZXN0OjpNb3JlOwordXNlIEZpbmRC
aW47Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iKTsKK3Vz
ZSBMb2FkQXNNb2R1bGUgcXcoVGlkeVhjb2RlUHJvamVjdEZpbGUgdGlkeS1YY29kZS1wcm9qZWN0
LWZpbGUpOworCitteSBAdGVzdENhc2VIYXNoUmVmcyA9ICgKKworeworICAgIHRlc3ROYW1lID0+
ICJXZWJDb3JlIG1haW5Hcm91cCIsCisgICAgZ3JvdXBUZXh0ID0+IDw8J0VORCcsCisJCTA4NjdE
NjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJDb3JlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQkyODhFODJGMDIwMzVENEVEMDBCMERDRkYgLyogU2VydmVy
VGltaW5nUGFyc2VyLmggKi8sCisJCQkJMjg4RTgyRUUyMDM1RDJCRTAwQjBEQ0ZGIC8qIFNlcnZl
clRpbWluZ1BhcnNlci5jcHAgKi8sCisJCQkJMUMwOUQwNEIxRTMxQzMyODAwNzI1RjE4IC8qIFBB
TC54Y29kZXByb2ogKi8sCisJCQkJNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5o
ICovLAorCQkJCUVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi8s
CisJCQkJNTMwQTYzNDYxRkEzRTMzRDAwMjZBNTQ1IC8qIFNvdXJjZXMudHh0ICovLAorCQkJCTUz
MEE2MzQyMUZBM0UzM0IwMDI2QTU0NSAvKiBTb3VyY2VzQ29jb2EudHh0ICovLAorCQkJCTkzMDcw
NjEzMDlFMENBODIwMEIxN0ZFNCAvKiBEZXJpdmVkU291cmNlcy5tYWtlICovLAorCQkJCTkzRjE5
QjE5MDgyNDVFNTkwMDFFOUFCQyAvKiBJbmZvLnBsaXN0ICovLAorCQkJCTk3MTE0NUZFMTRFRjAw
NkUwMDY3NEZEOSAvKiBNb2R1bGVzICovLAorCQkJCTI5QTgxMjA0MEZCQjlCNDEwMDUxMDI5MyAv
KiBhY2Nlc3NpYmlsaXR5ICovLAorCQkJCTcxMDI1RUMxMUY5OUYwOTYwMDRBMjUwQyAvKiBhbmlt
YXRpb24gKi8sCisJCQkJQkMxQTM3OTAwOTdDNkY5NzAwMTlGM0Q4IC8qIGJpbmRpbmdzICovLAor
CQkJCTFBNTY5Q0M0MEQ3RTJCNjAwMDdDMzk4MyAvKiBicmlkZ2UgKi8sCisJCQkJMjZGMEM4OTAx
QTJENzlDQjAwMjc5NEY4IC8qIGNvbnRlbnRleHRlbnNpb25zICovLAorCQkJCUUxRkY4RjVCMTgw
NzM2MkIwMDEzMjY3NCAvKiBjcnlwdG8gKi8sCisJCQkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNB
IC8qIGNzcyAqLywKKwkJCQkyNkI5OTk4RDE4MDNBREZBMDBEMDExMjEgLyogY3Nzaml0ICovLAor
CQkJCUY1MjNEMzI0MDJERTQ0NzgwMTg2MzVDQSAvKiBkb20gKi8sCisJCQkJRTNBRkE5NjMxREE2
RThBRjAwMjg2MUJEIC8qIGRvbWppdCAqLywKKwkJCQk5MzMwOUQ4NjA5OUU2NDkxMDA1NkU1ODEg
LyogZWRpdGluZyAqLywKKwkJCQk5NzZENkM1NzEyMkI4QTE4MDAxRkQxRjcgLyogZmlsZWFwaSAq
LywKKwkJCQk1MTc0MUQwODBCMDcyNTcwMDBFRDQ0MkMgLyogaGlzdG9yeSAqLywKKwkJCQk5M0VF
QzFFQzA5QzI4Nzc3MDBDNTE1RDEgLyogaHRtbCAqLywKKwkJCQkxQzgxQjk0RDBFOTczMkQ5MDAy
NjZFMDcgLyogaW5zcGVjdG9yICovLAorCQkJCTExNUNGQTY2MjA4QUY3MjAwMDFFNjk5MSAvKiBs
YXlvdXQgKi8sCisJCQkJQkNCMTZCRkIwOTc5QzM4NzAwNDY3NzQxIC8qIGxvYWRlciAqLywKKwkJ
CQlGQUJFNzJFQzEwNTlDMUVCMDBEOTk5REQgLyogbWF0aG1sICovLAorCQkJCTY1QkYwMjE4MDk3
NDgwNjMwMEM0MzE5NiAvKiBwYWdlICovLAorCQkJCUJDRjFBNUJBMDk3ODMyMDkwMDYxQTEyMyAv
KiBwbGF0Zm9ybSAqLywKKwkJCQk1RENGODM2OTBENTkxNTc4MDA5NTNCQzYgLyogcGx1Z2lucyAq
LywKKwkJCQlGNTIzRDJGMzAyREU0NDNCMDE4NjM1Q0EgLyogcmVuZGVyaW5nICovLAorCQkJCTk5
RTQ1QTEzMThBMDIxNzYwMDI2RDg4RiAvKiByZXBsYXkgKi8sCisJCQkJMUFFODJFQzkwQ0FBRTE3
NzAwMjIzN0FFIC8qIHN0b3JhZ2UgKi8sCisJCQkJRTQ3NjNENEExN0IyNzA0OTAwRDM1MjA2IC8q
IHN0eWxlICovLAorCQkJCUIyMjI3N0NBMEQwMEJGMUUwMDcxQjc4MiAvKiBzdmcgKi8sCisJCQkJ
NDE3REE0Q0QxMzczNDIwNDAwN0M1N0ZCIC8qIHRlc3RpbmcgKi8sCisJCQkJMkU0MzQ2MzEwRjU0
NkE2ODAwQjBGMUJBIC8qIHdvcmtlcnMgKi8sCisJCQkJRTFGMDQyNDMwOTgzOTM4OTAwNjY5NEVB
IC8qIHhtbCAqLywKKwkJCQk2NTY1ODBFQzA5RDEyQjIwMDAwRTYxRDcgLyogRGVyaXZlZCBTb3Vy
Y2VzICovLAorCQkJCTA4OUMxNjY1RkU4NDExNThDMDJBQUMwNyAvKiBSZXNvdXJjZXMgKi8sCisJ
CQkJMzcxN0Q3RTQxN0VDQzM2QzAwM0MyNzZEIC8qIFNjcmlwdHMgKi8sCisJCQkJMDg2N0Q2OUFG
RTg0MDI4RkMwMkFBQzA3IC8qIEZyYW1ld29ya3MgKi8sCisJCQkJMDM0NzY4REZGRjM4QTUwNDEx
REI5QzhCIC8qIFByb2R1Y3RzICovLAorCQkJCTFDREQ0NDY2MEJBOUM4MDAwMEY5MDE0NyAvKiBD
b25maWd1cmF0aW9ucyAqLywKKwkJCSk7CisJCQluYW1lID0gV2ViQ29yZTsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CitFTkQKKyAgICBleHBlY3RlZFJlc3VsdHMgPT4geworICAg
ICAgICAnMjg4RTgyRjAyMDM1RDRFRDAwQjBEQ0ZGJyA9PiAnU2VydmVyVGltaW5nUGFyc2VyLmgn
LAorICAgICAgICAnMjg4RTgyRUUyMDM1RDJCRTAwQjBEQ0ZGJyA9PiAnU2VydmVyVGltaW5nUGFy
c2VyLmNwcCcsCisgICAgICAgICcxQzA5RDA0QjFFMzFDMzI4MDA3MjVGMTgnID0+ICdQQUwueGNv
ZGVwcm9qJywKKyAgICAgICAgJzY1Qzk3QUYyMDhFQTkwODgwMEFDRDI3MycgPT4gJ2NvbmZpZy5o
JywKKyAgICAgICAgJ0VERUM5ODAyMEFFRDdFMTcwMDU5MTM3RicgPT4gJ1dlYkNvcmVQcmVmaXgu
aCcsCisgICAgICAgICc1MzBBNjM0NjFGQTNFMzNEMDAyNkE1NDUnID0+ICdTb3VyY2VzLnR4dCcs
CisgICAgICAgICc1MzBBNjM0MjFGQTNFMzNCMDAyNkE1NDUnID0+ICdTb3VyY2VzQ29jb2EudHh0
JywKKyAgICAgICAgJzkzMDcwNjEzMDlFMENBODIwMEIxN0ZFNCcgPT4gJ0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UnLAorICAgICAgICAnOTNGMTlCMTkwODI0NUU1OTAwMUU5QUJDJyA9PiAnSW5mby5wbGlz
dCcsCisgICAgICAgICc5NzExNDVGRTE0RUYwMDZFMDA2NzRGRDknID0+ICdNb2R1bGVzJywKKyAg
ICAgICAgJzI5QTgxMjA0MEZCQjlCNDEwMDUxMDI5MycgPT4gJ2FjY2Vzc2liaWxpdHknLAorICAg
ICAgICAnNzEwMjVFQzExRjk5RjA5NjAwNEEyNTBDJyA9PiAnYW5pbWF0aW9uJywKKyAgICAgICAg
J0JDMUEzNzkwMDk3QzZGOTcwMDE5RjNEOCcgPT4gJ2JpbmRpbmdzJywKKyAgICAgICAgJzFBNTY5
Q0M0MEQ3RTJCNjAwMDdDMzk4MycgPT4gJ2JyaWRnZScsCisgICAgICAgICcyNkYwQzg5MDFBMkQ3
OUNCMDAyNzk0RjgnID0+ICdjb250ZW50ZXh0ZW5zaW9ucycsCisgICAgICAgICdFMUZGOEY1QjE4
MDczNjJCMDAxMzI2NzQnID0+ICdjcnlwdG8nLAorICAgICAgICAnRjUyM0QxODQwMkRFNDJFODAx
ODYzNUNBJyA9PiAnY3NzJywKKyAgICAgICAgJzI2Qjk5OThEMTgwM0FERkEwMEQwMTEyMScgPT4g
J2Nzc2ppdCcsCisgICAgICAgICdGNTIzRDMyNDAyREU0NDc4MDE4NjM1Q0EnID0+ICdkb20nLAor
ICAgICAgICAnRTNBRkE5NjMxREE2RThBRjAwMjg2MUJEJyA9PiAnZG9taml0JywKKyAgICAgICAg
JzkzMzA5RDg2MDk5RTY0OTEwMDU2RTU4MScgPT4gJ2VkaXRpbmcnLAorICAgICAgICAnOTc2RDZD
NTcxMjJCOEExODAwMUZEMUY3JyA9PiAnZmlsZWFwaScsCisgICAgICAgICc1MTc0MUQwODBCMDcy
NTcwMDBFRDQ0MkMnID0+ICdoaXN0b3J5JywKKyAgICAgICAgJzkzRUVDMUVDMDlDMjg3NzcwMEM1
MTVEMScgPT4gJ2h0bWwnLAorICAgICAgICAnMUM4MUI5NEQwRTk3MzJEOTAwMjY2RTA3JyA9PiAn
aW5zcGVjdG9yJywKKyAgICAgICAgJzExNUNGQTY2MjA4QUY3MjAwMDFFNjk5MScgPT4gJ2xheW91
dCcsCisgICAgICAgICdCQ0IxNkJGQjA5NzlDMzg3MDA0Njc3NDEnID0+ICdsb2FkZXInLAorICAg
ICAgICAnRkFCRTcyRUMxMDU5QzFFQjAwRDk5OUREJyA9PiAnbWF0aG1sJywKKyAgICAgICAgJzY1
QkYwMjE4MDk3NDgwNjMwMEM0MzE5NicgPT4gJ3BhZ2UnLAorICAgICAgICAnQkNGMUE1QkEwOTc4
MzIwOTAwNjFBMTIzJyA9PiAncGxhdGZvcm0nLAorICAgICAgICAnNURDRjgzNjkwRDU5MTU3ODAw
OTUzQkM2JyA9PiAncGx1Z2lucycsCisgICAgICAgICdGNTIzRDJGMzAyREU0NDNCMDE4NjM1Q0En
ID0+ICdyZW5kZXJpbmcnLAorICAgICAgICAnOTlFNDVBMTMxOEEwMjE3NjAwMjZEODhGJyA9PiAn
cmVwbGF5JywKKyAgICAgICAgJzFBRTgyRUM5MENBQUUxNzcwMDIyMzdBRScgPT4gJ3N0b3JhZ2Un
LAorICAgICAgICAnRTQ3NjNENEExN0IyNzA0OTAwRDM1MjA2JyA9PiAnc3R5bGUnLAorICAgICAg
ICAnQjIyMjc3Q0EwRDAwQkYxRTAwNzFCNzgyJyA9PiAnc3ZnJywKKyAgICAgICAgJzQxN0RBNENE
MTM3MzQyMDQwMDdDNTdGQicgPT4gJ3Rlc3RpbmcnLAorICAgICAgICAnMkU0MzQ2MzEwRjU0NkE2
ODAwQjBGMUJBJyA9PiAnd29ya2VycycsCisgICAgICAgICdFMUYwNDI0MzA5ODM5Mzg5MDA2Njk0
RUEnID0+ICd4bWwnLAorICAgICAgICAnNjU2NTgwRUMwOUQxMkIyMDAwMEU2MUQ3JyA9PiAnRGVy
aXZlZCBTb3VyY2VzJywKKyAgICAgICAgJzA4OUMxNjY1RkU4NDExNThDMDJBQUMwNycgPT4gJ1Jl
c291cmNlcycsCisgICAgICAgICczNzE3RDdFNDE3RUNDMzZDMDAzQzI3NkQnID0+ICdTY3JpcHRz
JywKKyAgICAgICAgJzA4NjdENjlBRkU4NDAyOEZDMDJBQUMwNycgPT4gJ0ZyYW1ld29ya3MnLAor
ICAgICAgICAnMDM0NzY4REZGRjM4QTUwNDExREI5QzhCJyA9PiAnUHJvZHVjdHMnLAorICAgICAg
ICAnMUNERDQ0NjYwQkE5QzgwMDAwRjkwMTQ3JyA9PiAnQ29uZmlndXJhdGlvbnMnLAorICAgIH0s
Cit9LAorCispOworCitteSAkdGVzdENhc2VzQ291bnQgPSBzY2FsYXIgQHRlc3RDYXNlSGFzaFJl
ZnM7CitwbGFuKHRlc3RzID0+IDEgKiAkdGVzdENhc2VzQ291bnQpOyAjIFRvdGFsIG51bWJlciBv
ZiBhc3NlcnRpb25zLgorCitmb3JlYWNoIG15ICR0ZXN0Q2FzZSAoQHRlc3RDYXNlSGFzaFJlZnMp
IHsKKyAgICBteSAkZXhwZWN0ZWRSZXN1bHRzID0gJHRlc3RDYXNlLT57ZXhwZWN0ZWRSZXN1bHRz
fTsKKworICAgIG15ICR0ZXN0TmFtZVN0YXJ0ID0gInBhcnNlQ2hpbGRyZW5Gcm9tR3JvdXAoKTog
JHRlc3RDYXNlLT57dGVzdE5hbWV9IjsKKyAgICBteSAlYWN0dWFsUmVzdWx0cyA9IFRpZHlYY29k
ZVByb2plY3RGaWxlOjpwYXJzZUNoaWxkcmVuRnJvbUdyb3VwKCR0ZXN0Q2FzZS0+e2dyb3VwVGV4
dH0pOworICAgIGlzX2RlZXBseShcJWFjdHVhbFJlc3VsdHMsICRleHBlY3RlZFJlc3VsdHMsICR0
ZXN0TmFtZVN0YXJ0KTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC90
aWR5LVhjb2RlLXByb2plY3QtZmlsZV91bml0dGVzdC9wYXJzZUZpbGVSZWZlcmVuY2UucGwgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvdGlkeS1YY29kZS1wcm9qZWN0LWZpbGVfdW5pdHRlc3Qv
cGFyc2VGaWxlUmVmZXJlbmNlLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzOGRhOWRmNDlhYzE5MjVjMzc0YmQy
NTMzN2QzNWJkNDQwMWNjOTYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvdGlkeS1YY29kZS1wcm9qZWN0LWZpbGVfdW5pdHRlc3QvcGFyc2VGaWxlUmVmZXJlbmNl
LnBsCkBAIC0wLDAgKzEsMTMwIEBACisjIS91c3IvYmluL2VudiBwZXJsCisjCisjIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
IyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7
CisKK3VzZSBUZXN0OjpNb3JlOwordXNlIEZpbmRCaW47Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNh
dGRpcigkRmluZEJpbjo6QmluLCAiLi4iKTsKK3VzZSBMb2FkQXNNb2R1bGUgcXcoVGlkeVhjb2Rl
UHJvamVjdEZpbGUgdGlkeS1YY29kZS1wcm9qZWN0LWZpbGUpOworCitteSBAdGVzdENhc2VIYXNo
UmVmcyA9ICgKKworeworICAgIHRlc3ROYW1lID0+ICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtLmgiLAorICAgIGZpbGVUZXh0ID0+IDw8J0VORCcsCisJCTA3RDZBNEY2MUJGMjMwN0QwMDE3
NDE0NiAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaDsgcGF0aCA9IHBs
YXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaDsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OworRU5ECisgICAgZXhwZWN0ZWRSZXN1bHRzID0+ICtbCisg
ICAgICAgICcwN0Q2QTRGNjFCRjIzMDdEMDAxNzQxNDYnLAorICAgICAgICAnQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbS5oJywKKyAgICAgICAgJ0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW0uaCcsCisgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtLmgnLAorICAgICAgICAnU09VUkNFX1JPT1QnLAorICAgIF0sCit9LAorCit7Cisg
ICAgdGVzdE5hbWUgPT4gIklETFBhcnNlci5wbSIsCisgICAgZmlsZVRleHQgPT4gPDwnRU5EJywK
KwkJMTQ4MTNCRjMwOUVERjg4RTAwRjc1N0UxIC8qIElETFBhcnNlci5wbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBJRExQYXJzZXIucG07IHBhdGggPSBzY3JpcHRzL0lETFBh
cnNlci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKK0VORAorICAgIGV4cGVjdGVkUmVz
dWx0cyA9PiArWworICAgICAgICAnMTQ4MTNCRjMwOUVERjg4RTAwRjc1N0UxJywKKyAgICAgICAg
J0lETFBhcnNlci5wbScsCisgICAgICAgICdJRExQYXJzZXIucG0nLAorICAgICAgICAnc2NyaXB0
cy9JRExQYXJzZXIucG0nLAorICAgICAgICAnPGdyb3VwPicsCisgICAgXSwKK30sCisKK3sKKyAg
ICB0ZXN0TmFtZSA9PiAiZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsIiwKKyAgICBmaWxl
VGV4dCA9PiA8PCdFTkQnLAorCQkzNzE3RDdFNTE3RUNDM0E2MDAzQzI3NkQgLyogZXh0cmFjdC1s
b2NhbGl6YWJsZS1zdHJpbmdzLnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IGV4dHJhY3QtbG9jYWxpemFi
bGUtc3RyaW5ncy5wbDsgcGF0aCA9ICJTY3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5n
cy5wbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CitFTkQKKyAgICBleHBlY3RlZFJlc3Vs
dHMgPT4gK1sKKyAgICAgICAgJzM3MTdEN0U1MTdFQ0MzQTYwMDNDMjc2RCcsCisgICAgICAgICdl
eHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwnLAorICAgICAgICAnZXh0cmFjdC1sb2NhbGl6
YWJsZS1zdHJpbmdzLnBsJywKKyAgICAgICAgJ1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1z
dHJpbmdzLnBsJywKKyAgICAgICAgJzxncm91cD4nLAorICAgIF0sCit9LAorCit7CisgICAgdGVz
dE5hbWUgPT4gImdlbmVyYXRlLWJpbmRpbmdzLnBsIiwKKyAgICBmaWxlVGV4dCA9PiA8PCdFTkQn
LAorCQk5M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjggLyogZ2VuZXJhdGUtYmluZGluZ3MucGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gImdlbmVyYXRlLWJpbmRpbmdzLnBsIjsg
cGF0aCA9ICJzY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKK0VORAorICAgIGV4cGVjdGVkUmVzdWx0cyA9PiArWworICAgICAgICAnOTNGOEIz
MDcwQTMwMEZFQTAwRjYxQUI4JywKKyAgICAgICAgJ2dlbmVyYXRlLWJpbmRpbmdzLnBsJywKKyAg
ICAgICAgJ2dlbmVyYXRlLWJpbmRpbmdzLnBsJywKKyAgICAgICAgJ3NjcmlwdHMvZ2VuZXJhdGUt
YmluZGluZ3MucGwnLAorICAgICAgICAnPGdyb3VwPicsCisgICAgXSwKK30sCisKK3sKKyAgICB0
ZXN0TmFtZSA9PiAiUmFkaW9CdXR0b25Hcm91cHMuaCIsCisgICAgZmlsZVRleHQgPT4gPDwnRU5E
JywKKwkJOTNGOTI1NDEwRjdFRjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhZGlvQnV0dG9uR3JvdXBzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CitFTkQKKyAgICBleHBlY3RlZFJlc3VsdHMgPT4gK1sKKyAg
ICAgICAgJzkzRjkyNTQxMEY3RUY1QjgwMDdFMzdDOScsCisgICAgICAgICdSYWRpb0J1dHRvbkdy
b3Vwcy5oJywKKyAgICAgICAgdW5kZWYsCisgICAgICAgICdSYWRpb0J1dHRvbkdyb3Vwcy5oJywK
KyAgICAgICAgJzxncm91cD4nLAorICAgIF0sCit9LAorCit7CisgICAgdGVzdE5hbWUgPT4gIklu
Zm8ucGxpc3QiLAorICAgIGZpbGVUZXh0ID0+IDw8J0VORCcsCisJCTkzOTgxMTMyMDgyNEJGMDEw
MDhERjAzOCAvKiBJbmZvLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgbmFtZSA9IElu
Zm8ucGxpc3Q7IHBhdGggPSBtYWMvSW5mby5wbGlzdDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMTsgfTsKK0VORAorICAgIGV4cGVjdGVkUmVzdWx0
cyA9PiArWworICAgICAgICAnOTM5ODExMzIwODI0QkYwMTAwOERGMDM4JywKKyAgICAgICAgJ0lu
Zm8ucGxpc3QnLAorICAgICAgICAnSW5mby5wbGlzdCcsCisgICAgICAgICdtYWMvSW5mby5wbGlz
dCcsCisgICAgICAgICdTT1VSQ0VfUk9PVCcsCisgICAgXSwKK30sCisKKyk7CisKK215ICR0ZXN0
Q2FzZXNDb3VudCA9IHNjYWxhciBAdGVzdENhc2VIYXNoUmVmczsKK3BsYW4odGVzdHMgPT4gMSAq
ICR0ZXN0Q2FzZXNDb3VudCk7ICMgVG90YWwgbnVtYmVyIG9mIGFzc2VydGlvbnMuCisKK2ZvcmVh
Y2ggbXkgJHRlc3RDYXNlIChAdGVzdENhc2VIYXNoUmVmcykgeworICAgIG15ICRleHBlY3RlZFJl
c3VsdHMgPSAkdGVzdENhc2UtPntleHBlY3RlZFJlc3VsdHN9OworCisgICAgbXkgJHRlc3ROYW1l
U3RhcnQgPSAicGFyc2VGaWxlUmVmZXJlbmNlKCk6ICR0ZXN0Q2FzZS0+e3Rlc3ROYW1lfSI7Cisg
ICAgbXkgQGFjdHVhbFJlc3VsdHMgPSBUaWR5WGNvZGVQcm9qZWN0RmlsZTo6cGFyc2VGaWxlUmVm
ZXJlbmNlKCR0ZXN0Q2FzZS0+e2ZpbGVUZXh0fSk7CisgICAgaXNfZGVlcGx5KFxAYWN0dWFsUmVz
dWx0cywgJGV4cGVjdGVkUmVzdWx0cywgJHRlc3ROYW1lU3RhcnQpOworfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3RpZHktWGNvZGUtcHJvamVjdC1maWxlX3VuaXR0ZXN0
L3BhcnNlWGNvZGVQcm9qZWN0RmlsZS5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC90aWR5
LVhjb2RlLXByb2plY3QtZmlsZV91bml0dGVzdC9wYXJzZVhjb2RlUHJvamVjdEZpbGUucGwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTg3NmZlZDUyNjYwNDZjM2E0OWI0NjkxY2ExMjhlOTM0NTQyZjE1MwotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC90aWR5LVhjb2RlLXByb2plY3Qt
ZmlsZV91bml0dGVzdC9wYXJzZVhjb2RlUHJvamVjdEZpbGUucGwKQEAgLTAsMCArMSwyMzAgQEAK
KyMhL3Vzci9iaW4vZW52IHBlcmwKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
IyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFRlc3Q6Ok1vcmU7Cit1
c2UgRmluZEJpbjsKK3VzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIu
LiIpOwordXNlIExvYWRBc01vZHVsZSBxdyhUaWR5WGNvZGVQcm9qZWN0RmlsZSB0aWR5LVhjb2Rl
LXByb2plY3QtZmlsZSk7CisKK215IEB0ZXN0Q2FzZUhhc2hSZWZzID0gKAorCit7CisgICAgdGVz
dE5hbWUgPT4gIlNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiIsCisgICAgcHJvamVjdEZpbGUgPT4geworICAgICAgICBjb250ZW50cyA9PiA8PCdFTkQnLAor
Ly8gISQqVVRGOCokIQoreworCWFyY2hpdmVWZXJzaW9uID0gMTsKKwljbGFzc2VzID0geworCX07
CisJb2JqZWN0VmVyc2lvbiA9IDQ2OworCW9iamVjdHMgPSB7CisKKy8qIEJlZ2luIFBCWEFnZ3Jl
Z2F0ZVRhcmdldCBzZWN0aW9uICovCisvKiBFbmQgUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24g
Ki8KKworLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKy8qIEVuZCBQQlhCdWlsZEZp
bGUgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAq
LworLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBC
WENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworLyogRW5kIFBCWENvcHlGaWxlc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
KwkJOTkyMDM5ODAxOEI5NUJDNjAwQjM5QUY5IC8qIFVzZXJJbnB1dEJyaWRnZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VySW5wdXRCcmlkZ2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTIwMzk4MTE4Qjk1QkM2MDBCMzlBRjkgLyogVXNl
cklucHV0QnJpZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJJbnB1
dEJyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworLyogRW5kIFBCWEZpbGVSZWZl
cmVuY2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0
aW9uICovCisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBC
ZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJCTA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBX
ZWJDb3JlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk5
OUU0NUExMzE4QTAyMTc2MDAyNkQ4OEYgLyogcmVwbGF5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBX
ZWJDb3JlOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJOTlFNDVBMTMxOEEw
MjE3NjAwMjZEODhGIC8qIHJlcGxheSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJOTkyMDM5ODAxOEI5NUJDNjAwQjM5QUY5IC8qIFVzZXJJbnB1dEJyaWRn
ZS5jcHAgKi8sCisJCQkJOTkyMDM5ODExOEI5NUJDNjAwQjM5QUY5IC8qIFVzZXJJbnB1dEJyaWRn
ZS5oICovLAorCQkJKTsKKwkJCXBhdGggPSByZXBsYXk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OworLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYSGVh
ZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNl
Y3Rpb24gKi8KKworLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKy8qIEVuZCBQ
QlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rpb24g
Ki8KKwkJMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0gewor
CQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJQnVpbGRJbmRlcGVu
ZGVudFRhcmdldHNJblBhcmFsbGVsID0gWUVTOworCQkJCUxhc3RTd2lmdFVwZGF0ZUNoZWNrID0g
MDcwMDsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDcwMDsKKwkJCX07CisJCQlidWlsZENvbmZp
Z3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CisJCQljb21wYXRpYmlsaXR5
VmVyc2lvbiA9ICJYY29kZSAzLjIiOworCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwor
CQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CisJCQlrbm93blJlZ2lvbnMgPSAoCisJCQkJ
RW5nbGlzaCwKKwkJCQlKYXBhbmVzZSwKKwkJCQlGcmVuY2gsCisJCQkJR2VybWFuLAorCQkJCVNw
YW5pc2gsCisJCQkJRHV0Y2gsCisJCQkJSXRhbGlhbiwKKwkJCSk7CisJCQltYWluR3JvdXAgPSAw
ODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViQ29yZSAqLzsKKwkJCXByb2R1Y3RSZWZHcm91
cCA9IDAzNDc2OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAqLzsKKwkJCXByb2plY3RE
aXJQYXRoID0gIiI7CisJCQlwcm9qZWN0UmVmZXJlbmNlcyA9ICgKKwkJCQl7CisJCQkJCVByb2R1
Y3RHcm91cCA9IDFDMDlEMDRDMUUzMUMzMjgwMDcyNUYxOCAvKiBQcm9kdWN0cyAqLzsKKwkJCQkJ
UHJvamVjdFJlZiA9IDFDMDlEMDRCMUUzMUMzMjgwMDcyNUYxOCAvKiBQQUwueGNvZGVwcm9qICov
OworCQkJCX0sCisJCQkpOworCQkJcHJvamVjdFJvb3QgPSAiIjsKKwkJCXRhcmdldHMgPSAoCisJ
CQkJNDE4MTZGNzkxMzg1OUM1NTAwNTdBQUE0IC8qIEFsbCAqLywKKwkJCQk5M0YxOThBNTA4MjQ1
RTU5MDAxRTlBQkMgLyogV2ViQ29yZSAqLywKKwkJCQk1MzU1RThEMTFGOTY3RTlEMDAzMUUwOEMg
LyogR2VuZXJhdGUgVW5pZmllZCBTb3VyY2VzICovLAorCQkJCUREMDQxRkJFMDlEOUREQkUwMDEw
QUYyQSAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCisJCQkJNDE3REE2Q0YxMzczNEUwMjAwN0M1N0ZC
IC8qIFdlYkNvcmVUZXN0U3VwcG9ydCAqLywKKwkJCQlFMUJBNjZGMzE3NDJCREUwMDBDMjAyNTEg
LyogV2ViQ29yZVRlc3RTaGltICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNl
Y3Rpb24gKi8KKworLyogQmVnaW4gUEJYUmVmZXJlbmNlUHJveHkgc2VjdGlvbiAqLworLyogRW5k
IFBCWFJlZmVyZW5jZVByb3h5IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUmVzb3VyY2VzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisvKiBFbmQgUEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCisKKy8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisvKiBF
bmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291
cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNl
Y3Rpb24gKi8KKworLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisvKiBF
bmQgUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFZhcmlhbnRH
cm91cCBzZWN0aW9uICovCisvKiBFbmQgUEJYVmFyaWFudEdyb3VwIHNlY3Rpb24gKi8KKworLyog
QmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworLyogRW5kIFhDQnVpbGRDb25m
aWd1cmF0aW9uIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0
aW9uICovCisvKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJfTsKKwlyb290
T2JqZWN0ID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwor
fQorRU5ECisgICAgfSwKKyAgICBleHBlY3RlZFJlc3VsdHMgPT4geworICAgICAgICBmaWxlcyA9
PiB7CisgICAgICAgICAgICAnOTkyMDM5ODAxOEI5NUJDNjAwQjM5QUY5JyA9PiB7CisgICAgICAg
ICAgICAgICAgdGV4dCA9PiA8PCdFTkQnLAorCQk5OTIwMzk4MDE4Qjk1QkM2MDBCMzlBRjkgLyog
VXNlcklucHV0QnJpZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFVzZXJJbnB1dEJyaWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CitFTkQKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAnOTkyMDM5ODExOEI5NUJDNjAwQjM5QUY5JyA9PiB7
CisgICAgICAgICAgICAgICAgdGV4dCA9PiA8PCdFTkQnLAorCQk5OTIwMzk4MTE4Qjk1QkM2MDBC
MzlBRjkgLyogVXNlcklucHV0QnJpZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVzZXJJbnB1dEJyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworRU5ECisg
ICAgICAgICAgICB9LAorICAgICAgICB9LAorICAgICAgICBncm91cHMgPT4geworICAgICAgICAg
ICAgJzA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNycgPT4geworICAgICAgICAgICAgICAgIGdyb3Vw
TmFtZSA9PiAiV2ViQ29yZSIsCisgICAgICAgICAgICAgICAgbmFtZVZhbHVlID0+ICJXZWJDb3Jl
IiwKKyAgICAgICAgICAgICAgICBzb3VyY2VUcmVlID0+ICI8Z3JvdXA+IiwKKyAgICAgICAgICAg
ICAgICB0ZXh0ID0+IDw8J0VORCcsCisJCTA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJD
b3JlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk5OUU0
NUExMzE4QTAyMTc2MDAyNkQ4OEYgLyogcmVwbGF5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBXZWJD
b3JlOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKK0VORAorICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICc5OUU0NUExMzE4QTAyMTc2MDAyNkQ4OEYnID0+IHsKKyAgICAgICAg
ICAgICAgICBncm91cE5hbWUgPT4gInJlcGxheSIsCisgICAgICAgICAgICAgICAgcGF0aFZhbHVl
ID0+ICJyZXBsYXkiLAorICAgICAgICAgICAgICAgIHNvdXJjZVRyZWUgPT4gIjxncm91cD4iLAor
ICAgICAgICAgICAgICAgIHRleHQgPT4gPDwnRU5EJywKKwkJOTlFNDVBMTMxOEEwMjE3NjAwMjZE
ODhGIC8qIHJlcGxheSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJOTkyMDM5ODAxOEI5NUJDNjAwQjM5QUY5IC8qIFVzZXJJbnB1dEJyaWRnZS5jcHAgKi8s
CisJCQkJOTkyMDM5ODExOEI5NUJDNjAwQjM5QUY5IC8qIFVzZXJJbnB1dEJyaWRnZS5oICovLAor
CQkJKTsKKwkJCXBhdGggPSByZXBsYXk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworRU5ECisgICAgICAgICAgICB9LAorICAgICAgICB9LAorICAgICAgICBwcm9qZWN0ID0+IHsK
KyAgICAgICAgICAgIG1haW5Hcm91cElEID0+ICIwODY3RDY5MUZFODQwMjhGQzAyQUFDMDciLAor
ICAgICAgICAgICAgcHJvamVjdERpclBhdGggPT4gIiIsCisgICAgICAgICAgICBwcm9qZWN0Um9v
dCA9PiAiIiwKKyAgICAgICAgfSwKKyAgICB9LAorfSwKKworKTsKKworbXkgJHRlc3RDYXNlc0Nv
dW50ID0gc2NhbGFyIEB0ZXN0Q2FzZUhhc2hSZWZzOworcGxhbih0ZXN0cyA9PiAxICogJHRlc3RD
YXNlc0NvdW50KTsgIyBUb3RhbCBudW1iZXIgb2YgYXNzZXJ0aW9ucy4KKworZm9yZWFjaCBteSAk
dGVzdENhc2UgKEB0ZXN0Q2FzZUhhc2hSZWZzKSB7CisgICAgbXkgJGV4cGVjdGVkUmVzdWx0cyA9
ICR0ZXN0Q2FzZS0+e2V4cGVjdGVkUmVzdWx0c307CisgICAgJGV4cGVjdGVkUmVzdWx0cy0+e2Nv
bnRlbnRzfSA9ICR0ZXN0Q2FzZS0+e3Byb2plY3RGaWxlfS0+e2NvbnRlbnRzfTsKKworICAgIG15
ICR0ZXN0TmFtZVN0YXJ0ID0gInBhcnNlWGNvZGVQcm9qZWN0RmlsZSgpOiAkdGVzdENhc2UtPnt0
ZXN0TmFtZX0iOworICAgIG15ICRhY3R1YWxSZXN1bHRzID0gJHRlc3RDYXNlLT57cHJvamVjdEZp
bGV9OworICAgIFRpZHlYY29kZVByb2plY3RGaWxlOjpwYXJzZVhjb2RlUHJvamVjdEZpbGUoJGFj
dHVhbFJlc3VsdHMpOworICAgIGlzX2RlZXBseSgkYWN0dWFsUmVzdWx0cywgJGV4cGVjdGVkUmVz
dWx0cywgJHRlc3ROYW1lU3RhcnQpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2VyLnB5CmluZGV4IGE1OTA4ZTYwMTZhMjFjYTc2YjZiMmFlM2U1NDE5ZWE5ZTFmZmQ3Y2EuLjY5
YmEwNTA4MWVlZDQ3MjMwNWRmYzRiNDVjYjZmMTRmNTUzODdkMzUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKQEAgLTI2MSw2ICsyNjEsMTAgQEAgX1BBVEhfUlVMRVNf
U1BFQ0lGSUVSID0gWwogICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnVGhpcmRQYXJ0eScs
ICdsaWJ3ZWJydGMnLCAnU291cmNlJywgJ3dlYnJ0YycpLAogICAgICAgb3MucGF0aC5qb2luKCdT
b3VyY2UnLCAnV2ViQ29yZScsICdQQUwnLCAncGFsJywgJ3NwaScpXSwKICAgICAgWyItcmVhZGFi
aWxpdHkvbmFtaW5nL3VuZGVyc2NvcmVzIl0pLAorCisgICAgKFsgICMgdGlkeS1YY29kZS1wcm9q
ZWN0LWZpbGUgdGVzdHMgdXNlIHRhYnMgYmVjYXVzZSBYY29kZSBwcm9qZWN0IGZpbGVzIHVzZSB0
YWJzLgorICAgICAgb3MucGF0aC5qb2luKCdUb29scycsICdTY3JpcHRzJywgJ3dlYmtpdHBlcmwn
LCAndGlkeS1YY29kZS1wcm9qZWN0LWZpbGVfdW5pdHRlc3QnKV0sCisgICAgIFsiLXdoaXRlc3Bh
Y2UvdGFiIl0pLAogXQogCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348345</attachid>
            <date>2018-08-28 15:00:35 -0700</date>
            <delta_ts>2023-10-03 06:53:27 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-188754-20180828150034.patch</filename>
            <type>text/plain</type>
            <size>42612</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NDM5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjQ2NDU3YjQ0MWYwNWQ2ZjU2ZGY2MmE4NmFlNTMxNjNi
MTk3MzkwOC4uOTZhZTI2ZGRjNDlkNTNmMTQ4Y2I4ODhjZGJiNDQwNzgxYjFmOGE5YSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDE4LTA4LTI4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAg
ICAgICAgVG9vbCB0byBmaXggZm9sZGVycyB0aGF0IHNob3VsZCBtYXAgdG8gZGlyZWN0b3JpZXMg
aW4gWGNvZGUgcHJvamVjdCBmaWxlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTg4
NzU0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBuZXcgdGlkeS1YY29kZS1wcm9qZWN0LWZpbGUgc2NyaXB0LiAgVGhlIC1tfC0tbWFwLWZvbGRl
cnMKKyAgICAgICAgc3dpdGNoIHdpbGwgY2xlYW4gdXAgdGhlIFhjb2RlIHByb2plY3QgZmlsZSB0
byBtYXAgZm9sZGVycyB0bworICAgICAgICBkaXJlY3RvcmllcyBvbiBkaXNrLiAgTm90ZSB0aGF0
IHRoZXJlIG1heSBiZSBzb21lIGNsZWFuIHVwCisgICAgICAgIHJlcXVpcmVkIGZvciB0aGUgc2Ny
aXB0IHRvIHVwZGF0ZSB0aGUgcHJvamVjdCBmaWxlLgorCisgICAgICAgICogU2NyaXB0cy90aWR5
LVhjb2RlLXByb2plY3QtZmlsZTogQWRkLgorICAgICAgICAobWFpbik6CisgICAgICAgIChmaW5k
R3JvdXBzVG9Db252ZXJ0VG9EaXJlY3RvcnkpOgorICAgICAgICAobG9hZFhjb2RlUHJvamVjdEZp
bGUpOgorICAgICAgICAobWFwRm9sZGVyc1RvRGlyZWN0b3JpZXMpOgorICAgICAgICAocGFyc2VD
aGlsZHJlbkZyb21Hcm91cCk6CisgICAgICAgIChwYXJzZUZpbGVSZWZlcmVuY2UpOgorICAgICAg
ICAocGFyc2VYY29kZVByb2plY3RGaWxlKToKKyAgICAgICAgKHNhdmVYY29kZVByb2plY3RGaWxl
KToKKyAgICAgICAgKHVwZGF0ZUZvbGRlcnNUb0RpcmVjdG9yaWVzKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHBlcmwvdGlkeS1YY29kZS1wcm9qZWN0LWZpbGVfdW5pdHRlc3QvcGFyc2VDaGls
ZHJlbkZyb21Hcm91cC5wbDogQWRkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC90aWR5
LVhjb2RlLXByb2plY3QtZmlsZV91bml0dGVzdC9wYXJzZUZpbGVSZWZlcmVuY2UucGw6IEFkZC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvdGlkeS1YY29kZS1wcm9qZWN0LWZpbGVfdW5p
dHRlc3QvcGFyc2VYY29kZVByb2plY3RGaWxlLnBsOiBBZGQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OiBJZ25vcmUgdGFicyBpbgorICAgICAgICB0aWR5LVhj
b2RlLXByb2plY3QtZmlsZSB1bml0IHRlc3RzLgorCiAyMDE4LTA4LTI4ICBEYXZpZCBLaWx6ZXIg
IDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGluY29ycmVjdCB1c2Ugb2YgYHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7YCBmb3IgYnVpbHQgcHJvZHVjdHMgYW5kIGZyYW1ld29ya3Mg
aW4gWGNvZGUgcHJvamVjdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvdGlkeS1YY29kZS1w
cm9qZWN0LWZpbGUgYi9Ub29scy9TY3JpcHRzL3RpZHktWGNvZGUtcHJvamVjdC1maWxlCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZmMmExODA2OGEwNmNhMmI2MDQ5ODk4NWZiYjhjZDZkOWU5YTY0YzAKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3RpZHktWGNvZGUtcHJvamVjdC1maWxlCkBAIC0wLDAg
KzEsNDUyIEBACisjIS91c3IvYmluL2VudiBwZXJsCisKKyMgQ29weXJpZ2h0IChDKSAyMDA3LTIw
MTggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBTY3JpcHQgdG8gdGlkeSB1cCBYY29kZSBwcm9qZWN0
LnBieHByb2ogZmlsZXMuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBFbmds
aXNoOwordXNlIEZpbGU6OkJhc2VuYW1lOwordXNlIEZpbGU6OlNwZWM7Cit1c2UgRmlsZTo6VGVt
cCBxdyh0ZW1wZmlsZSk7Cit1c2UgR2V0b3B0OjpMb25nOworCitzdWIgZmluZEdyb3Vwc1RvQ29u
dmVydFRvRGlyZWN0b3J5KCQkJCQpOworc3ViIGxvYWRYY29kZVByb2plY3RGaWxlKCQpOworc3Vi
IG1haW4oKTsKK3N1YiBtYXBGb2xkZXJzVG9EaXJlY3RvcmllcygkJCk7CitzdWIgcGFyc2VDaGls
ZHJlbkZyb21Hcm91cCgkKTsKK3N1YiBwYXJzZUZpbGVSZWZlcmVuY2UoJCk7CitzdWIgcGFyc2VY
Y29kZVByb2plY3RGaWxlKCQpOworc3ViIHNhdmVYY29kZVByb2plY3RGaWxlKCQpOworc3ViIHVw
ZGF0ZUZvbGRlcnNUb0RpcmVjdG9yaWVzKCQpOworCitleGl0KG1haW4oKSk7CisKK3N1YiBtYWlu
KCkKK3sKKyAgICBteSAkZHJ5UnVuID0gMDsKKyAgICBteSAkZm9yY2VVcGRhdGUgPSAwOworICAg
IG15ICRtYXBGb2xkZXJzID0gMDsKKyAgICBteSAkcXVpZXQgPSAwOworICAgIG15ICRzaG93SGVs
cDsKKworICAgIG15ICRnZXRPcHRpb25zUmVzdWx0ID0gR2V0T3B0aW9ucygKKyAgICAgICAgJ2Z8
Zm9yY2UhJyAgICAgICA9PiBcJGZvcmNlVXBkYXRlLAorICAgICAgICAnaHxoZWxwJyAgICAgICAg
ID0+IFwkc2hvd0hlbHAsCisgICAgICAgICdtfG1hcC1mb2xkZXJzJyAgPT4gXCRtYXBGb2xkZXJz
LAorICAgICAgICAnbnxkcnktcnVuJyAgICAgID0+IFwkZHJ5UnVuLAorICAgICAgICAncXxxdWll
dCcgICAgICAgID0+IFwkcXVpZXQsCisgICAgKTsKKworICAgIGlmIChzY2FsYXIoQEFSR1YpID09
IDAgJiYgISRzaG93SGVscCkgeworICAgICAgICBwcmludCBTVERFUlIgIkVSUk9SOiBObyBYY29k
ZSBwcm9qZWN0IGZpbGVzIChwcm9qZWN0LnBieHByb2opIGxpc3RlZCBvbiBjb21tYW5kLWxpbmUu
XG4iOworICAgICAgICB1bmRlZiAkZ2V0T3B0aW9uc1Jlc3VsdDsKKyAgICB9CisKKyAgICBpZiAo
ISRnZXRPcHRpb25zUmVzdWx0IHx8ICRzaG93SGVscCkgeworICAgICAgICBwcmludCBTVERFUlIg
PDxfX0VORF9fOworVXNhZ2U6IEB7WyBiYXNlbmFtZSgkMCkgXX0gW29wdGlvbnNdIHBhdGgvdG8v
cHJvamVjdC5wYnhwcm9qIFtwYXRoL3RvL3Byb2plY3QucGJ4cHJvaiAuLi5dCisgIC1mfC0tW25v
LV1mb3JjZSAgIGZvcmNlIHByb2plY3QgdXBkYXRlIGV2ZW4gd2l0aCBlcnJvcnMgKGRlZmF1bHQ6
IG5vIGZvcmNlKQorICAtaHwtLWhlbHAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlCisg
IC1tfC0tbWFwLWZvbGRlcnMgIG1hcCBmb2xkZXJzIGluIFhjb2RlIHRvIGRpcmVjdG9yaWVzIG9u
IGRpc2sgaWYgdGhleSBleGlzdAorICAtbnwtLWRyeS1ydW4gICAgICBtYWtlIGNoYW5nZXMgYnV0
IGRvbid0IHNhdmUgdGhlbSBiYWNrIHRvIHRoZSBwcm9qZWN0IGZpbGUKKyAgLXF8LS1xdWlldCAg
ICAgICAgZG8gbm90IG91dHB1dCBwcm9ncmVzcyBtZXNzYWdlcworX19FTkRfXworICAgICAgICBy
ZXR1cm4gMTsKKyAgICB9CisKKyAgICBmb3IgbXkgJGZpbGUgKEBBUkdWKSB7CisgICAgICAgIHBy
aW50ICJSZWFkaW5nIHByb2plY3QgZmlsZSAkZmlsZS4uLlxuIiB1bmxlc3MgJHF1aWV0OworICAg
ICAgICBteSAkcHJvamVjdEZpbGUgPSBsb2FkWGNvZGVQcm9qZWN0RmlsZSgkZmlsZSk7CisKKyAg
ICAgICAgaWYgKCRtYXBGb2xkZXJzKSB7CisgICAgICAgICAgICBwcmludCAiRml4aW5nIGZvbGRl
cnMgdGhhdCBjYW4gbWFwIHRvIGRpcmVjdG9yaWVzLi4uXG4iIHVubGVzcyAkcXVpZXQ7CisgICAg
ICAgICAgICBtYXBGb2xkZXJzVG9EaXJlY3RvcmllcygkcHJvamVjdEZpbGUsICRmb3JjZVVwZGF0
ZSk7CisgICAgICAgICAgICB1cGRhdGVGb2xkZXJzVG9EaXJlY3RvcmllcygkcHJvamVjdEZpbGUp
IGlmICEkZHJ5UnVuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCEkZHJ5UnVuKSB7CisgICAg
ICAgICAgICBwcmludCAiU2F2aW5nIHByb2plY3QgZmlsZSAkZmlsZS4uLlxuIiB1bmxlc3MgJHF1
aWV0OworICAgICAgICAgICAgc2F2ZVhjb2RlUHJvamVjdEZpbGUoJHByb2plY3RGaWxlKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBwcmludCAiRG9uZS5cbiIgdW5sZXNzICRxdWlldDsKKworICAg
IHJldHVybiAwOworfQorCitzdWIgZmluZEdyb3Vwc1RvQ29udmVydFRvRGlyZWN0b3J5KCQkJCQp
Cit7CisgICAgbXkgKCRncm91cElELCAkcGFyZW50UGF0aCwgJHByb2plY3RQYXRoLCAkcHJvamVj
dEZpbGUpID0gQF87CisgICAgbXkgJGVycm9yQ291bnQgPSAwOworICAgIG15ICRmaWxlcyA9ICRw
cm9qZWN0RmlsZS0+e2ZpbGVzfTsKKyAgICBteSAkZ3JvdXBzID0gJHByb2plY3RGaWxlLT57Z3Jv
dXBzfTsKKworICAgIG15ICRncm91cFNvdXJjZVRyZWUgPSAkZ3JvdXBzLT57JGdyb3VwSUR9e3Nv
dXJjZVRyZWV9OworICAgIGlmICgkZ3JvdXBTb3VyY2VUcmVlIGVxICI8Z3JvdXA+IiB8fCAkZ3Jv
dXBTb3VyY2VUcmVlIGVxICJTT1VSQ0VfUk9PVCIpIHsKKyAgICAgICAgbXkgJGRpcmVjdG9yeSA9
IEZpbGU6OlNwZWMtPmNhdGRpcigkcGFyZW50UGF0aCwgJGdyb3Vwcy0+eyRncm91cElEfXtncm91
cE5hbWV9KTsKKyAgICAgICAgaWYgKC1kICRkaXJlY3RvcnkpIHsKKyAgICAgICAgICAgICMgTWFy
ayB0aGlzIGdyb3VwIGFzIG5lZWRpbmcgYW4gdXBkYXRlIHRvIHVzZSBhIHBhdGguCisgICAgICAg
ICAgICAkZ3JvdXBzLT57JGdyb3VwSUR9e191cGRhdGVHcm91cFBhdGh9ID0gJGRpcmVjdG9yeTsK
KworICAgICAgICAgICAgIyBGaW5kIGNoaWxkcmVuIChmaWxlcyBhbmQgZ3JvdXBzKSB0aGF0IG5l
ZWQgYW4gdXBkYXRlIHRvIHVzZSBhIHBhdGguCisgICAgICAgICAgICBteSAlY2hpbGRyZW4gPSBw
YXJzZUNoaWxkcmVuRnJvbUdyb3VwKCRncm91cHMtPnskZ3JvdXBJRH17dGV4dH0pOworICAgICAg
ICAgICAgZm9yIG15ICRjaGlsZElEIChrZXlzICVjaGlsZHJlbikgeworICAgICAgICAgICAgICAg
IGlmIChleGlzdHMgJGZpbGVzLT57JGNoaWxkSUR9KSB7CisgICAgICAgICAgICAgICAgICAgIG15
ICgkZmlsZUlELCAkZmlsZU5hbWUsICR1bnVzZWROYW1lLCAkcGF0aCwgJHNvdXJjZVRyZWUpID0g
cGFyc2VGaWxlUmVmZXJlbmNlKCRmaWxlcy0+eyRjaGlsZElEfXt0ZXh0fSk7CisgICAgICAgICAg
ICAgICAgICAgIG15ICRleHBlY3RlZFBhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRkaXJlY3Rv
cnksICRmaWxlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIG15ICRhY3R1YWxQYXRoOworICAg
ICAgICAgICAgICAgICAgICBpZiAoJHNvdXJjZVRyZWUgZXEgIlNPVVJDRV9ST09UIikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgJGFjdHVhbFBhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRw
cm9qZWN0UGF0aCwgJHBhdGgpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkc291cmNl
VHJlZSBlcSAiPGdyb3VwPiIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleGlzdHMg
JGdyb3Vwcy0+eyRncm91cElEfXtwYXRoVmFsdWV9KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJGFjdHVhbFBhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRkaXJlY3RvcnksICRwYXRo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJGFjdHVhbFBhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRwYXJlbnRQYXRoLCAk
cGF0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzaWYgKCRzb3VyY2VUcmVlIGVxICJCVUlMVF9QUk9EVUNUU19ESVIiKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBuZXh0OyAjIFNraXAgdGhlc2UgYXMgd2UgY2FuJ3QgY2hlY2sgaWYgZmls
ZXMgZXhpc3QgaW4gdGhpcyBkaXJlY3RvcnkgdW50aWwgYWZ0ZXIgYnVpbGRpbmcuCisgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkaWUgIlVuZXhw
ZWN0ZWQgc291cmNlVHJlZSBcIiRzb3VyY2VUcmVlXCIgZm9yIGNoaWxkICRjaGlsZElEIjsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoISAtZSAkZXhwZWN0
ZWRQYXRoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3JDb3VudCsrOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKC1lICRhY3R1YWxQYXRoKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJpbnQgIk1PVkU6ICRhY3R1YWxQYXRoICRleHBlY3RlZFBhdGhcbiI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByaW50ICJNSVNTSU5HOiAkYWN0dWFsUGF0aFxuIjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICRmaWxlcy0+eyRjaGlsZElEfXtfdXBkYXRlUGF0aFdpdGhvdXROYW1lfSA9ICRmaWxlTmFt
ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzaWYgKGV4aXN0
cyAkZ3JvdXBzLT57JGNoaWxkSUR9ICYmICRncm91cHMtPnskZ3JvdXBJRH17X3VwZGF0ZUdyb3Vw
UGF0aH0pIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGdyb3VwTmFtZSA9ICRncm91cHMtPnsk
Y2hpbGRJRH17Z3JvdXBOYW1lfTsKKyAgICAgICAgICAgICAgICAgICAgJGVycm9yQ291bnQgKz0g
ZmluZEdyb3Vwc1RvQ29udmVydFRvRGlyZWN0b3J5KCRjaGlsZElELCAkZGlyZWN0b3J5LCAkcHJv
amVjdFBhdGgsICRwcm9qZWN0RmlsZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGV4aXN0cyAkZ3JvdXBzLT57JGdy
b3VwSUR9e3BhdGhWYWx1ZX0pIHsKKyAgICAgICAgICAgICAgICAkcGFyZW50UGF0aCA9IEZpbGU6
OlNwZWMtPmNhdGRpcigkcGFyZW50UGF0aCwgJGdyb3Vwcy0+eyRncm91cElEfXtwYXRoVmFsdWV9
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICMgRmluZCBjaGlsZHJlbiB0aGF0IG1heSBu
ZWVkIGFuIHVwZGF0ZWQgcGF0aCBpbnNpZGUgZm9sZGVycyB0aGF0IGRvbid0IHVzZSBhIHBhdGgs
CisgICAgICAgICAgICAjIGJ1dCB3aG9zZSBwYXJlbnQgZm9sZGVyKHMpIG1heSBoYXZlIGNoYW5n
ZWQgdG8gdXNlIGEgcGF0aC4KKyAgICAgICAgICAgIG15ICVjaGlsZHJlbiA9IHBhcnNlQ2hpbGRy
ZW5Gcm9tR3JvdXAoJGdyb3Vwcy0+eyRncm91cElEfXt0ZXh0fSk7CisgICAgICAgICAgICBmb3Ig
bXkgJGNoaWxkSUQgKGtleXMgJWNoaWxkcmVuKSB7CisgICAgICAgICAgICAgICAgaWYgKGV4aXN0
cyAkZmlsZXMtPnskY2hpbGRJRH0pIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgKCRmaWxlSUQs
ICRmaWxlTmFtZSwgJG5hbWUsICRwYXRoLCAkc291cmNlVHJlZSkgPSBwYXJzZUZpbGVSZWZlcmVu
Y2UoJGZpbGVzLT57JGNoaWxkSUR9e3RleHR9KTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGV4
cGVjdGVkUGF0aDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRzb3VyY2VUcmVlIGVxICJTT1VS
Q0VfUk9PVCIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRleHBlY3RlZFBhdGggPSBGaWxl
OjpTcGVjLT5jYXRmaWxlKCRwcm9qZWN0UGF0aCwgJHBhdGgpOworICAgICAgICAgICAgICAgICAg
ICB9IGVsc2lmICgkc291cmNlVHJlZSBlcSAiPGdyb3VwPiIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5leHQgaWYgLWUgRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkcGFyZW50UGF0aCwgJHBhdGgp
OyAjIE5vdGhpbmcgdG8gZG8gaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIG15IEBwYXJl
bnREaXJzID0gRmlsZTo6U3BlYy0+c3BsaXRkaXIoJHBhcmVudFBhdGgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbXkgQGNoaWxkUGF0aCA9IEZpbGU6OlNwZWMtPnNwbGl0ZGlyKCRwYXRoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyB3b3JrcyBiZWNhdXNlIHRoZSB1cGRhdGVk
ICRwYXJlbnRQYXRoIGNvbnRhaW5zIG9uZSBvciBtb3JlIGRpcmVjdG9yaWVzCisgICAgICAgICAg
ICAgICAgICAgICAgICAjIHRoYXQgZG9uJ3QgbmVlZCB0byBiZSBpbiB0aGUgY2hpbGQncyBwYXRo
IGFueSBsb25nZXIsIHNvIHdlIHBvcCB0aGVtIG9mZgorICAgICAgICAgICAgICAgICAgICAgICAg
IyB1bnRpbCB0aGV5IG5vIGxvbmdlciBtYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAobXkgJGkgPSAkI3BhcmVudERpcnM7ICRpID49IDAgJiYgJHBhcmVudERpcnNbJGldIGVxICRj
aGlsZFBhdGhbMF07IC0tJGkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdCBA
Y2hpbGRQYXRoOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgbXkgJHVwZGF0ZWRQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZShAY2hpbGRQYXRoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRpZSAiQ291bGQgbm90IGNyZWF0ZSBuZXcgcGF0aCBm
b3IgJGZpbGVOYW1lICgkY2hpbGRJRCkiIGlmICEgLWUgRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkcGFy
ZW50UGF0aCwgJHVwZGF0ZWRQYXRoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZmls
ZU5hbWUgZXEgJHVwZGF0ZWRQYXRoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZp
bGVzLT57JGNoaWxkSUR9e191cGRhdGVQYXRoV2l0aG91dE5hbWV9ID0gJHVwZGF0ZWRQYXRoOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkZmlsZXMtPnskY2hpbGRJRH17X3VwZGF0ZVBhdGhXaXRoTmFtZX0gPSAkdXBkYXRlZFBh
dGg7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBu
ZXh0OyAjIFRoaXMgd2lsbCBiZSB1cGRhdGVkIGluIG1hcEZvbGRlcnNUb0RpcmVjdG9yaWVzKCku
CisgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRzb3VyY2VUcmVlIGVxICJCVUlMVF9QUk9E
VUNUU19ESVIiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OyAjIFNraXAgdGhlc2Ug
YXMgd2UgY2FuJ3QgY2hlY2sgaWYgZmlsZXMgZXhpc3QgaW4gdGhpcyBkaXJlY3RvcnkgdW50aWwg
YWZ0ZXIgYnVpbGRpbmcuCisgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRzb3VyY2VUcmVl
IGVxICJERVZFTE9QRVJfRElSIikgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDsgIyBT
a2lwIHRoZXNlIGFzIHRoZXkgYXJlIHVzdWFsbHkgc3lzdGVtIGZyYW1ld29ya3Mgb3Igc2ltaWxh
ci4KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHNvdXJjZVRyZWUgZXEgIlNES1JPT1Qi
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OyAjIFNraXAgdGhlc2UgYXMgdGhleSBh
cmUgdXN1YWxseSBzeXN0ZW0gZnJhbWV3b3JrcyBvciBzaW1pbGFyLgorICAgICAgICAgICAgICAg
ICAgICB9IGVsc2lmICgkc291cmNlVHJlZSBlcSAiPGFic29sdXRlPiIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG5leHQ7ICMgU2tpcCB0aGVzZSBhcyB0aGV5IGFyZSB1c3VhbGx5IHN5c3Rl
bSBmcmFtZXdvcmtzIG9yIHNpbWlsYXIuCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkaWUgIlVuZXhwZWN0ZWQgY2hpbGQgc291cmNlVHJlZSBc
IiRzb3VyY2VUcmVlXCIgZm9yICRjaGlsZElEIjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBpZiAoISAtZSAkZXhwZWN0ZWRQYXRoKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAkZXJyb3JDb3VudCsrOworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQg
Ik1JU1NJTkc6ICRleHBlY3RlZFBhdGhcbiI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9IGVsc2lmIChleGlzdHMgJGdyb3Vwcy0+eyRjaGlsZElEfSkgeworICAgICAg
ICAgICAgICAgICAgICBteSAkZ3JvdXBOYW1lID0gJGdyb3Vwcy0+eyRjaGlsZElEfXtncm91cE5h
bWV9OworICAgICAgICAgICAgICAgICAgICAkZXJyb3JDb3VudCArPSBmaW5kR3JvdXBzVG9Db252
ZXJ0VG9EaXJlY3RvcnkoJGNoaWxkSUQsICRwYXJlbnRQYXRoLCAkcHJvamVjdFBhdGgsICRwcm9q
ZWN0RmlsZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfSBlbHNpZiAoJGdyb3VwU291cmNlVHJlZSBlcSAiQlVJTFRfUFJPRFVDVFNfRElSIikgewor
ICAgICAgICAjIFNraXAgdGhlc2UgYXMgd2UgY2FuJ3QgY2hlY2sgaWYgZmlsZXMgZXhpc3QgaW4g
dGhpcyBkaXJlY3RvcnkgdW50aWwgYWZ0ZXIgYnVpbGRpbmcuCisgICAgfSBlbHNlIHsKKyAgICAg
ICAgZGllICJVbmV4cGVjdGVkIGdyb3VwIHNvdXJjZVRyZWUgXCIkZ3JvdXBTb3VyY2VUcmVlXCIg
Zm9yICRncm91cElEIjsKKyAgICB9CisKKyAgICByZXR1cm4gJGVycm9yQ291bnQ7Cit9CisKK3N1
YiBsb2FkWGNvZGVQcm9qZWN0RmlsZSgkKQoreworICAgIG15ICgkZmlsZSkgPSBAXzsKKworICAg
IGlmIChiYXNlbmFtZSgkZmlsZSkgPX4gL1wueGNvZGVwcm9qJC8pIHsKKyAgICAgICAgJGZpbGUg
PSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRmaWxlLCAicHJvamVjdC5wYnhwcm9qIik7CisgICAgfQor
CisgICAgaWYgKGJhc2VuYW1lKCRmaWxlKSBuZSAicHJvamVjdC5wYnhwcm9qIikgeworICAgICAg
ICBkaWUgIkZBVEFMOiBOb3QgYW4gWGNvZGUgcHJvamVjdCBmaWxlOiAkZmlsZVxuIjsKKyAgICB9
CisKKyAgICBpZiAoISAtZiAkZmlsZSkgeworICAgICAgICBkaWUgIkZBVEFMOiBYY29kZSBwcm9q
ZWN0IGZpbGUgZG9lcyBub3QgZXhpc3Q6ICRmaWxlXG4iOworICAgIH0KKworICAgIG15ICRwcm9q
ZWN0RmlsZSA9IHsKKyAgICAgICAgZmlsZSA9PiAkZmlsZSwKKyAgICB9OworCisgICAgeworICAg
ICAgICBsb2NhbCAkSU5QVVRfUkVDT1JEX1NFUEFSQVRPUjsgIyBUdXJuIG9uIHNsdXJwIG1vZGUu
CisgICAgICAgIG9wZW4oSU4sICI8IiwgJGZpbGUpIHx8IGRpZSAiQ291bGQgbm90IG9wZW4gJGZp
bGU6ICQhIjsKKyAgICAgICAgJHByb2plY3RGaWxlLT57Y29udGVudHN9ID0gPElOPjsKKyAgICAg
ICAgY2xvc2UoSU4pOworICAgIH0KKworICAgIHBhcnNlWGNvZGVQcm9qZWN0RmlsZSgkcHJvamVj
dEZpbGUpOworCisgICAgcmV0dXJuICRwcm9qZWN0RmlsZTsKK30KKworc3ViIG1hcEZvbGRlcnNU
b0RpcmVjdG9yaWVzKCQkKQoreworICAgIG15ICgkcHJvamVjdEZpbGUsICRmb3JjZVVwZGF0ZSkg
PSBAXzsKKworICAgICMgUmVjdXJzaXZlbHkgaXRlcmF0ZSB0aHJvdWdoIGNoaWxkcmVuIG9mIG1h
aW5Hcm91cCB0byBmaW5kIGdyb3VwcyB0aGF0IG1hcCB0byBkaXJlY3Rvcmllcy4KKyAgICBteSAk
ZXJyb3JDb3VudCA9IDA7CisgICAgbXkgJG1haW5Hcm91cElEID0gJHByb2plY3RGaWxlLT57cHJv
amVjdH17bWFpbkdyb3VwSUR9OworICAgIG15ICVjaGlsZHJlbiA9IHBhcnNlQ2hpbGRyZW5Gcm9t
R3JvdXAoJHByb2plY3RGaWxlLT57Z3JvdXBzfXskbWFpbkdyb3VwSUR9e3RleHR9KTsKKyAgICBm
b3IgbXkgJGNoaWxkSUQgKGtleXMgJWNoaWxkcmVuKSB7CisgICAgICAgIGlmIChleGlzdHMgJHBy
b2plY3RGaWxlLT57Z3JvdXBzfXskY2hpbGRJRH0pIHsKKyAgICAgICAgICAgIG15ICRncm91cE5h
bWUgPSAkcHJvamVjdEZpbGUtPntncm91cHN9eyRjaGlsZElEfXtncm91cE5hbWV9OworICAgICAg
ICAgICAgbXkgJHByb2plY3REaXJlY3RvcnkgPSBkaXJuYW1lKGRpcm5hbWUoJHByb2plY3RGaWxl
LT57ZmlsZX0pKTsKKyAgICAgICAgICAgIGlmIChleGlzdHMgJHByb2plY3RGaWxlLT57Z3JvdXBz
fXskbWFpbkdyb3VwSUR9e3BhdGhWYWx1ZX0pIHsKKyAgICAgICAgICAgICAgICAkcHJvamVjdERp
cmVjdG9yeSA9IEZpbGU6OlNwZWMtPmNhdGRpcigkcHJvamVjdERpcmVjdG9yeSwgJHByb2plY3RG
aWxlLT57Z3JvdXBzfXskbWFpbkdyb3VwSUR9e3BhdGhWYWx1ZX0pOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgJGVycm9yQ291bnQgKz0gZmluZEdyb3Vwc1RvQ29udmVydFRvRGlyZWN0b3J5
KCRjaGlsZElELCAkcHJvamVjdERpcmVjdG9yeSwgJHByb2plY3REaXJlY3RvcnksICRwcm9qZWN0
RmlsZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBkaWUgIkVSUk9SOiBGb3VuZCAkZXJyb3JD
b3VudCBpc3N1ZXMgdGhhdCBuZWVkIHRvIGJlIGZpeGVkIGZpcnN0IiBpZiAkZXJyb3JDb3VudCAh
PSAwICYmICEkZm9yY2VVcGRhdGU7Cit9CisKK3N1YiBwYXJzZUNoaWxkcmVuRnJvbUdyb3VwKCQp
Cit7CisgICAgbXkgKCR0ZXh0KSA9IEBfOworICAgIG15ICVjaGlsZHJlbjsKKworICAgIG15ICRw
YXJzaW5nQ2hpbGRyZW4gPSAwOworICAgIGZvciBteSAkbGluZSAoc3BsaXQoL14vLCAkdGV4dCkp
IHsKKyAgICAgICAgaWYgKCRsaW5lID1+IG0jXlxzKmNoaWxkcmVuID0gXCgkIykgeworICAgICAg
ICAgICAgJHBhcnNpbmdDaGlsZHJlbiA9IDE7CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9
CisgICAgICAgIGlmICgkcGFyc2luZ0NoaWxkcmVuICYmICRsaW5lID1+IG0jXlxzKihbMC05QS1G
XXsyNH0pIC9cKiAoLispIFwqLywkIykgeworICAgICAgICAgICAgJGNoaWxkcmVueyQxfSA9ICQy
OworICAgICAgICB9CisgICAgICAgIGlmICgkcGFyc2luZ0NoaWxkcmVuICYmICRsaW5lID1+IG0j
XlxzKlwpOyQjKSB7CisgICAgICAgICAgICAkcGFyc2luZ0NoaWxkcmVuID0gMDsKKyAgICAgICAg
ICAgIG5leHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gJWNoaWxkcmVuOworfQor
CitzdWIgcGFyc2VGaWxlUmVmZXJlbmNlKCQpCit7CisgICAgbXkgKCRsaW5lKSA9IEBfOworICAg
IG15ICRmaWxlSUQ7CisgICAgbXkgJGZpbGVOYW1lOworICAgIG15ICRuYW1lOworICAgIG15ICRw
YXRoOworICAgIG15ICRzb3VyY2VUcmVlOworCisgICAgaWYgKCRsaW5lID1+IG0jXlxzKihbMC05
QS1GXXsyNH0pIC9cKiAoLispIFwqLyA9IHsjKSB7CisgICAgICAgICRmaWxlSUQgPSAkMTsKKyAg
ICAgICAgJGZpbGVOYW1lID0gJDI7CisgICAgICAgIGlmICgkbGluZSA9fiBtIyBuYW1lID0gKCI/
KVxRJGZpbGVOYW1lXEUoXDEpOyAjKSB7CisgICAgICAgICAgICAkbmFtZSA9ICRmaWxlTmFtZTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoJGxpbmUgPX4gbSMgcGF0aCA9ICgiPykoLipcUSRmaWxl
TmFtZVxFKShcMSk7ICMpIHsKKyAgICAgICAgICAgICRwYXRoID0gJDI7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKCRsaW5lID1+IG0jIHNvdXJjZVRyZWUgPSAoIj8pKFteO10rKShcMSk7ICMpIHsK
KyAgICAgICAgICAgICRzb3VyY2VUcmVlID0gJDI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBy
ZXR1cm4gKCRmaWxlSUQsICRmaWxlTmFtZSwgJG5hbWUsICRwYXRoLCAkc291cmNlVHJlZSk7Cit9
CisKK3N1YiBwYXJzZVhjb2RlUHJvamVjdEZpbGUoJCkKK3sKKyAgICBteSAoJHByb2plY3RGaWxl
KSA9IEBfOworCisgICAgb3BlbihJTiwgIjwiLCBcJHByb2plY3RGaWxlLT57Y29udGVudHN9KTsK
KyAgICB3aGlsZSAobXkgJGxpbmUgPSA8SU4+KSB7CisgICAgICAgIGlmICgkbGluZSBlcSAiLyog
QmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovXG4iKSB7CisgICAgICAgICAgICBkbyB7
CisgICAgICAgICAgICAgICAgJGxpbmUgPSA8SU4+OworICAgICAgICAgICAgICAgIG15ICgkZmls
ZUlELCAkZmlsZU5hbWUsICRuYW1lLCAkdW51c2VkUGF0aCwgJHVudXNlZFNvdXJjZVRyZWUpID0g
cGFyc2VGaWxlUmVmZXJlbmNlKCRsaW5lKTsKKyAgICAgICAgICAgICAgICAkcHJvamVjdEZpbGUt
PntmaWxlc317JGZpbGVJRH17dGV4dH0gPSAkbGluZSBpZiBkZWZpbmVkICRmaWxlSUQ7CisgICAg
ICAgICAgICB9IHVudGlsICgkbGluZSBlcSAiLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlv
biAqL1xuIik7CisgICAgICAgIH0gZWxzaWYgKCRsaW5lIGVxICIvKiBCZWdpbiBQQlhHcm91cCBz
ZWN0aW9uICovXG4iKSB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgJGxpbmUg
PSA8SU4+OworICAgICAgICAgICAgICAgIGlmICgkbGluZSA9fiBtI14oXHMrKShbMC05LUEtRl17
MjR9KSggL1wqICguKykgXCovKT8gPSB7XG4kIykgeworICAgICAgICAgICAgICAgICAgICBteSAk
Z3JvdXBFbmQgPSAiJDF9O1xuIjsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGdyb3VwSUQgPSAk
MjsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGdyb3VwTmFtZSA9ICQ0IHx8ICJfX05PX05BTUVf
XyI7CisgICAgICAgICAgICAgICAgICAgIG15ICRncm91cFRleHQgPSAkbGluZTsKKyAgICAgICAg
ICAgICAgICAgICAgbXkgJG5hbWVWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHBhdGhW
YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHNvdXJjZVRyZWU7CisgICAgICAgICAgICAg
ICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRsaW5lID0gPElOPjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICRuYW1lVmFsdWUgPSAkMiBpZiAkbGluZSA9fiBtI15ccypuYW1l
ID0gKCI/KSguKikoXDEpOyQjOworICAgICAgICAgICAgICAgICAgICAgICAgJHBhdGhWYWx1ZSA9
ICQyIGlmICRsaW5lID1+IG0jXlxzKnBhdGggPSAoIj8pKC4qKShcMSk7JCM7CisgICAgICAgICAg
ICAgICAgICAgICAgICAkc291cmNlVHJlZSA9ICQyIGlmICRsaW5lID1+IG0jXlxzKnNvdXJjZVRy
ZWUgPSAoIj8pKC4qKShcMSk7IzsKKyAgICAgICAgICAgICAgICAgICAgICAgICRncm91cFRleHQg
Lj0gJGxpbmU7CisgICAgICAgICAgICAgICAgICAgIH0gdW50aWwgKCRsaW5lIGVxICRncm91cEVu
ZCk7CisgICAgICAgICAgICAgICAgICAgICRwcm9qZWN0RmlsZS0+e2dyb3Vwc317JGdyb3VwSUR9
ID0gK3sKKyAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwTmFtZSA9PiAkZ3JvdXBOYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlVHJlZSA9PiAkc291cmNlVHJlZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRleHQgPT4gJGdyb3VwVGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgICAgICAgICAgJHByb2plY3RGaWxlLT57Z3JvdXBzfXskZ3JvdXBJ
RH17bmFtZVZhbHVlfSA9ICRuYW1lVmFsdWUgaWYgZGVmaW5lZCAkbmFtZVZhbHVlOworICAgICAg
ICAgICAgICAgICAgICAkcHJvamVjdEZpbGUtPntncm91cHN9eyRncm91cElEfXtwYXRoVmFsdWV9
ID0gJHBhdGhWYWx1ZSBpZiBkZWZpbmVkICRwYXRoVmFsdWU7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfSB1bnRpbCAoJGxpbmUgZXEgIi8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICov
XG4iKTsKKyAgICAgICAgfSBlbHNpZiAoJGxpbmUgZXEgIi8qIEJlZ2luIFBCWFByb2plY3Qgc2Vj
dGlvbiAqL1xuIikgeworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICRsaW5lID0g
PElOPjsKKyAgICAgICAgICAgICAgICAkcHJvamVjdEZpbGUtPntwcm9qZWN0fXttYWluR3JvdXBJ
RH0gPSAkMiBpZiAkbGluZSA9fiBtI14oXHMqKW1haW5Hcm91cCA9IChbMC05QS1GXXsyNH0pKCAv
XCogLisgXCovKT87JCM7CisgICAgICAgICAgICAgICAgJHByb2plY3RGaWxlLT57cHJvamVjdH17
cHJvamVjdERpclBhdGh9ID0gJDIgaWYgJGxpbmUgPX4gbSNeKFxzKilwcm9qZWN0RGlyUGF0aCA9
ICIoW14iXSopIjskIzsKKyAgICAgICAgICAgICAgICAkcHJvamVjdEZpbGUtPntwcm9qZWN0fXtw
cm9qZWN0Um9vdH0gPSAkMiBpZiAkbGluZSA9fiBtI14oXHMqKXByb2plY3RSb290ID0gIihbXiJd
KikiOyQjOworICAgICAgICAgICAgfSB1bnRpbCAoJGxpbmUgZXEgIi8qIEVuZCBQQlhQcm9qZWN0
IHNlY3Rpb24gKi9cbiIpOworICAgICAgICB9CisgICAgfQorICAgIGNsb3NlKElOKTsKK30KKwor
c3ViIHNhdmVYY29kZVByb2plY3RGaWxlKCQpCit7CisgICAgbXkgKCRwcm9qZWN0RmlsZSkgPSBA
XzsKKworICAgIG15ICgkT1VULCAkdGVtcEZpbGVOYW1lKSA9IHRlbXBmaWxlKAorICAgICAgICBi
YXNlbmFtZSgkcHJvamVjdEZpbGUtPntmaWxlfSkgLiAiLVhYWFhYWFhYIiwKKyAgICAgICAgRElS
ID0+IGRpcm5hbWUoJHByb2plY3RGaWxlLT57ZmlsZX0pLAorICAgICAgICBVTkxJTksgPT4gMCwK
KyAgICApOworCisgICAgIyBDbGVhbiB1cCB0ZW1wIGZpbGUgaW4gY2FzZSBvZiBkaWUoKQorICAg
ICRTSUd7X19ESUVfX30gPSBzdWIgeworICAgICAgICBjbG9zZShJTik7CisgICAgICAgIGNsb3Nl
KCRPVVQpOworICAgICAgICB1bmxpbmsoJHRlbXBGaWxlTmFtZSk7CisgICAgfTsKKworICAgIHBy
aW50ICRPVVQgJHByb2plY3RGaWxlLT57Y29udGVudHN9OworICAgIGNsb3NlKCRPVVQpOworCisg
ICAgdW5saW5rKCRwcm9qZWN0RmlsZS0+e2ZpbGV9KSB8fCBkaWUgIkNvdWxkIG5vdCBkZWxldGUg
JHByb2plY3RGaWxlLT57ZmlsZX06ICQhIjsKKyAgICByZW5hbWUoJHRlbXBGaWxlTmFtZSwgJHBy
b2plY3RGaWxlLT57ZmlsZX0pIHx8IGRpZSAiQ291bGQgbm90IHJlbmFtZSAkdGVtcEZpbGVOYW1l
IHRvICRwcm9qZWN0RmlsZS0+e2ZpbGV9OiAkISI7Cit9CisKK3N1YiB1cGRhdGVGb2xkZXJzVG9E
aXJlY3RvcmllcygkKQoreworICAgIG15ICgkcHJvamVjdEZpbGUpID0gQF87CisKKyAgICBvcGVu
KElOLCAiPCIsIFwkcHJvamVjdEZpbGUtPntjb250ZW50c30pOworICAgIG15ICR1cGRhdGVkQ29u
dGVudHMgPSAiIjsKKyAgICBvcGVuKE9VVCwgIj4iLCBcJHVwZGF0ZWRDb250ZW50cyk7CisgICAg
d2hpbGUgKG15ICRsaW5lID0gPElOPikgeworICAgICAgICBpZiAoJGxpbmUgZXEgIi8qIEJlZ2lu
IFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqL1xuIikgeworICAgICAgICAgICAgcHJpbnQgT1VU
ICRsaW5lOworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICRsaW5lID0gPElOPjsK
KyAgICAgICAgICAgICAgICBteSAoJGZpbGVJRCwgJGZpbGVOYW1lLCAkbmFtZSwgJHBhdGgsICR1
bnVzZWRTb3VyY2VUcmVlKSA9IHBhcnNlRmlsZVJlZmVyZW5jZSgkbGluZSk7CisgICAgICAgICAg
ICAgICAgaWYgKGRlZmluZWQgJGZpbGVJRCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZXhp
c3RzICRwcm9qZWN0RmlsZS0+e2ZpbGVzfXskZmlsZUlEfXtfdXBkYXRlUGF0aFdpdGhvdXROYW1l
fSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmUgPX4gcyMgbmFtZSA9ICgiPylcUSRm
aWxlTmFtZVxFKFwxKTsgIyAjIGlmIGRlZmluZWQgJG5hbWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICAkbGluZSA9fiBzIyBwYXRoID0gKCI/KS4qL1xRJGZpbGVOYW1lXEUoXDEpOyAjIHBhdGgg
PSAkMSRmaWxlTmFtZSQxOyAjOworICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmUgPX4gcyMg
c291cmNlVHJlZSA9ICgiPykuKihcMSk7ICMgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgIzsKKyAg
ICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoZXhpc3RzICRwcm9qZWN0RmlsZS0+e2ZpbGVzfXsk
ZmlsZUlEfXtfdXBkYXRlUGF0aFdpdGhOYW1lfSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
JGxpbmUgPX4gcyMgbmFtZSA9ICgiPylcUSRmaWxlTmFtZVxFKFwxKTsgIyAjIGlmIGRlZmluZWQg
JG5hbWU7CisgICAgICAgICAgICAgICAgICAgICAgICBteSAkdXBkYXRlZFBhdGggPSAkcHJvamVj
dEZpbGUtPntmaWxlc317JGZpbGVJRH17X3VwZGF0ZVBhdGhXaXRoTmFtZX07CisgICAgICAgICAg
ICAgICAgICAgICAgICAkbGluZSA9fiBzIyBwYXRoID0gKCI/KS4qL1xRJGZpbGVOYW1lXEUoXDEp
OyAjIHBhdGggPSAkMSR1cGRhdGVkUGF0aCQxOyAjOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHByaW50IE9VVCAkbGluZTsKKyAgICAg
ICAgICAgIH0gdW50aWwgKCRsaW5lIGVxICIvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9u
ICovXG4iKTsKKyAgICAgICAgfSBlbHNpZiAoJGxpbmUgZXEgIi8qIEJlZ2luIFBCWEdyb3VwIHNl
Y3Rpb24gKi9cbiIpIHsKKyAgICAgICAgICAgIHByaW50IE9VVCAkbGluZTsKKyAgICAgICAgICAg
IGRvIHsKKyAgICAgICAgICAgICAgICAkbGluZSA9IDxJTj47CisgICAgICAgICAgICAgICAgaWYg
KCRsaW5lID1+IG0jXihccyspKFswLTktQS1GXXsyNH0pKCAvXCogKC4rKSBcKi8pPyA9IHtcbiQj
KSB7CisgICAgICAgICAgICAgICAgICAgIG15ICRncm91cEVuZCA9ICIkMX07XG4iOworICAgICAg
ICAgICAgICAgICAgICBteSAkZ3JvdXBJRCA9ICQyOworICAgICAgICAgICAgICAgICAgICBteSAk
Z3JvdXBOYW1lID0gJDQgfHwgIl9fTk9fTkFNRV9fIjsKKyAgICAgICAgICAgICAgICAgICAgbXkg
JGdyb3VwVGV4dCA9ICRsaW5lOworICAgICAgICAgICAgICAgICAgICBteSAkc2hvdWxkRml4UGF0
aCA9IGV4aXN0cyAkcHJvamVjdEZpbGUtPntncm91cHN9eyRncm91cElEfXtfdXBkYXRlR3JvdXBQ
YXRofTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGNvbnZlcnRlZE5hbWVUb1BhdGggPSAwOwor
ICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICAkbGluZSA9
IDxJTj47CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNob3VsZEZpeFBhdGgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGxpbmUgPX4gcyNeKFxzKiluYW1lID0gIyQx
cGF0aCA9ICMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnZlcnRlZE5h
bWVUb1BhdGggPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRjb252
ZXJ0ZWROYW1lVG9QYXRoICYmICRsaW5lID1+IG0jXlxzKnBhdGggPSAjKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICRsaW5lID0gIiI7ICMgT21pdCBsaW5lIGZyb20gb3V0cHV0
LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRwcm9qZWN0RmlsZS0+e2dy
b3Vwc317JGdyb3VwSUR9e3NvdXJjZVRyZWV9IG5lICI8Z3JvdXA+IiAmJiAkbGluZSA9fiBtI14o
XHMqKXNvdXJjZVRyZWUgPSAjKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRs
aW5lID1+IHMjXihccyopc291cmNlVHJlZSA9IC4qOyQjJDFzb3VyY2VUcmVlID0gIjxncm91cD4i
XDsjOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICRncm91cFRleHQgLj0gJGxpbmU7CisgICAg
ICAgICAgICAgICAgICAgIH0gdW50aWwgKCRsaW5lIGVxICRncm91cEVuZCk7CisgICAgICAgICAg
ICAgICAgICAgIHByaW50IE9VVCAkZ3JvdXBUZXh0OworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIHByaW50IE9VVCAkbGluZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IHVudGlsICgkbGluZSBlcSAiLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24g
Ki9cbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHJpbnQgT1VUICRsaW5lOwor
ICAgICAgICB9CisgICAgfQorICAgIGNsb3NlKElOKTsKKyAgICBjbG9zZShPVVQpOworCisgICAg
JHByb2plY3RGaWxlLT57Y29udGVudHN9ID0gJHVwZGF0ZWRDb250ZW50czsKK30KZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC90aWR5LVhjb2RlLXByb2plY3QtZmlsZV91bml0
dGVzdC9wYXJzZUNoaWxkcmVuRnJvbUdyb3VwLnBsIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L3RpZHktWGNvZGUtcHJvamVjdC1maWxlX3VuaXR0ZXN0L3BhcnNlQ2hpbGRyZW5Gcm9tR3JvdXAu
cGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmRiYmUzMmU1NjRkMWRiMjUwZTI0MjkwMDYwYjVjZjlhY2ZhMjlkOQot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC90aWR5LVhjb2RlLXBy
b2plY3QtZmlsZV91bml0dGVzdC9wYXJzZUNoaWxkcmVuRnJvbUdyb3VwLnBsCkBAIC0wLDAgKzEs
MTUxIEBACisjIS91c3IvYmluL2VudiBwZXJsCisjCisjIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBUZXN0OjpN
b3JlOwordXNlIEZpbmRCaW47Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6
QmluLCAiLi4iKTsKK3VzZSBMb2FkQXNNb2R1bGUgcXcoVGlkeVhjb2RlUHJvamVjdEZpbGUgdGlk
eS1YY29kZS1wcm9qZWN0LWZpbGUpOworCitteSBAdGVzdENhc2VIYXNoUmVmcyA9ICgKKworewor
ICAgIHRlc3ROYW1lID0+ICJXZWJDb3JlIG1haW5Hcm91cCIsCisgICAgZ3JvdXBUZXh0ID0+IDw8
J0VORCcsCisJCTA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJDb3JlICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkyODhFODJGMDIwMzVENEVEMDBC
MERDRkYgLyogU2VydmVyVGltaW5nUGFyc2VyLmggKi8sCisJCQkJMjg4RTgyRUUyMDM1RDJCRTAw
QjBEQ0ZGIC8qIFNlcnZlclRpbWluZ1BhcnNlci5jcHAgKi8sCisJCQkJMUMwOUQwNEIxRTMxQzMy
ODAwNzI1RjE4IC8qIFBBTC54Y29kZXByb2ogKi8sCisJCQkJNjVDOTdBRjIwOEVBOTA4ODAwQUNE
MjczIC8qIGNvbmZpZy5oICovLAorCQkJCUVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJD
b3JlUHJlZml4LmggKi8sCisJCQkJNTMwQTYzNDYxRkEzRTMzRDAwMjZBNTQ1IC8qIFNvdXJjZXMu
dHh0ICovLAorCQkJCTUzMEE2MzQyMUZBM0UzM0IwMDI2QTU0NSAvKiBTb3VyY2VzQ29jb2EudHh0
ICovLAorCQkJCTkzMDcwNjEzMDlFMENBODIwMEIxN0ZFNCAvKiBEZXJpdmVkU291cmNlcy5tYWtl
ICovLAorCQkJCTkzRjE5QjE5MDgyNDVFNTkwMDFFOUFCQyAvKiBJbmZvLnBsaXN0ICovLAorCQkJ
CTk3MTE0NUZFMTRFRjAwNkUwMDY3NEZEOSAvKiBNb2R1bGVzICovLAorCQkJCTI5QTgxMjA0MEZC
QjlCNDEwMDUxMDI5MyAvKiBhY2Nlc3NpYmlsaXR5ICovLAorCQkJCTcxMDI1RUMxMUY5OUYwOTYw
MDRBMjUwQyAvKiBhbmltYXRpb24gKi8sCisJCQkJQkMxQTM3OTAwOTdDNkY5NzAwMTlGM0Q4IC8q
IGJpbmRpbmdzICovLAorCQkJCTFBNTY5Q0M0MEQ3RTJCNjAwMDdDMzk4MyAvKiBicmlkZ2UgKi8s
CisJCQkJMjZGMEM4OTAxQTJENzlDQjAwMjc5NEY4IC8qIGNvbnRlbnRleHRlbnNpb25zICovLAor
CQkJCUUxRkY4RjVCMTgwNzM2MkIwMDEzMjY3NCAvKiBjcnlwdG8gKi8sCisJCQkJRjUyM0QxODQw
MkRFNDJFODAxODYzNUNBIC8qIGNzcyAqLywKKwkJCQkyNkI5OTk4RDE4MDNBREZBMDBEMDExMjEg
LyogY3Nzaml0ICovLAorCQkJCUY1MjNEMzI0MDJERTQ0NzgwMTg2MzVDQSAvKiBkb20gKi8sCisJ
CQkJRTNBRkE5NjMxREE2RThBRjAwMjg2MUJEIC8qIGRvbWppdCAqLywKKwkJCQk5MzMwOUQ4NjA5
OUU2NDkxMDA1NkU1ODEgLyogZWRpdGluZyAqLywKKwkJCQk5NzZENkM1NzEyMkI4QTE4MDAxRkQx
RjcgLyogZmlsZWFwaSAqLywKKwkJCQk1MTc0MUQwODBCMDcyNTcwMDBFRDQ0MkMgLyogaGlzdG9y
eSAqLywKKwkJCQk5M0VFQzFFQzA5QzI4Nzc3MDBDNTE1RDEgLyogaHRtbCAqLywKKwkJCQkxQzgx
Qjk0RDBFOTczMkQ5MDAyNjZFMDcgLyogaW5zcGVjdG9yICovLAorCQkJCTExNUNGQTY2MjA4QUY3
MjAwMDFFNjk5MSAvKiBsYXlvdXQgKi8sCisJCQkJQkNCMTZCRkIwOTc5QzM4NzAwNDY3NzQxIC8q
IGxvYWRlciAqLywKKwkJCQlGQUJFNzJFQzEwNTlDMUVCMDBEOTk5REQgLyogbWF0aG1sICovLAor
CQkJCTY1QkYwMjE4MDk3NDgwNjMwMEM0MzE5NiAvKiBwYWdlICovLAorCQkJCUJDRjFBNUJBMDk3
ODMyMDkwMDYxQTEyMyAvKiBwbGF0Zm9ybSAqLywKKwkJCQk1RENGODM2OTBENTkxNTc4MDA5NTNC
QzYgLyogcGx1Z2lucyAqLywKKwkJCQlGNTIzRDJGMzAyREU0NDNCMDE4NjM1Q0EgLyogcmVuZGVy
aW5nICovLAorCQkJCTk5RTQ1QTEzMThBMDIxNzYwMDI2RDg4RiAvKiByZXBsYXkgKi8sCisJCQkJ
MUFFODJFQzkwQ0FBRTE3NzAwMjIzN0FFIC8qIHN0b3JhZ2UgKi8sCisJCQkJRTQ3NjNENEExN0Iy
NzA0OTAwRDM1MjA2IC8qIHN0eWxlICovLAorCQkJCUIyMjI3N0NBMEQwMEJGMUUwMDcxQjc4MiAv
KiBzdmcgKi8sCisJCQkJNDE3REE0Q0QxMzczNDIwNDAwN0M1N0ZCIC8qIHRlc3RpbmcgKi8sCisJ
CQkJMkU0MzQ2MzEwRjU0NkE2ODAwQjBGMUJBIC8qIHdvcmtlcnMgKi8sCisJCQkJRTFGMDQyNDMw
OTgzOTM4OTAwNjY5NEVBIC8qIHhtbCAqLywKKwkJCQk2NTY1ODBFQzA5RDEyQjIwMDAwRTYxRDcg
LyogRGVyaXZlZCBTb3VyY2VzICovLAorCQkJCTA4OUMxNjY1RkU4NDExNThDMDJBQUMwNyAvKiBS
ZXNvdXJjZXMgKi8sCisJCQkJMzcxN0Q3RTQxN0VDQzM2QzAwM0MyNzZEIC8qIFNjcmlwdHMgKi8s
CisJCQkJMDg2N0Q2OUFGRTg0MDI4RkMwMkFBQzA3IC8qIEZyYW1ld29ya3MgKi8sCisJCQkJMDM0
NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1Y3RzICovLAorCQkJCTFDREQ0NDY2MEJBOUM4
MDAwMEY5MDE0NyAvKiBDb25maWd1cmF0aW9ucyAqLywKKwkJCSk7CisJCQluYW1lID0gV2ViQ29y
ZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CitFTkQKKyAgICBleHBlY3RlZFJl
c3VsdHMgPT4geworICAgICAgICAnMjg4RTgyRjAyMDM1RDRFRDAwQjBEQ0ZGJyA9PiAnU2VydmVy
VGltaW5nUGFyc2VyLmgnLAorICAgICAgICAnMjg4RTgyRUUyMDM1RDJCRTAwQjBEQ0ZGJyA9PiAn
U2VydmVyVGltaW5nUGFyc2VyLmNwcCcsCisgICAgICAgICcxQzA5RDA0QjFFMzFDMzI4MDA3MjVG
MTgnID0+ICdQQUwueGNvZGVwcm9qJywKKyAgICAgICAgJzY1Qzk3QUYyMDhFQTkwODgwMEFDRDI3
MycgPT4gJ2NvbmZpZy5oJywKKyAgICAgICAgJ0VERUM5ODAyMEFFRDdFMTcwMDU5MTM3RicgPT4g
J1dlYkNvcmVQcmVmaXguaCcsCisgICAgICAgICc1MzBBNjM0NjFGQTNFMzNEMDAyNkE1NDUnID0+
ICdTb3VyY2VzLnR4dCcsCisgICAgICAgICc1MzBBNjM0MjFGQTNFMzNCMDAyNkE1NDUnID0+ICdT
b3VyY2VzQ29jb2EudHh0JywKKyAgICAgICAgJzkzMDcwNjEzMDlFMENBODIwMEIxN0ZFNCcgPT4g
J0Rlcml2ZWRTb3VyY2VzLm1ha2UnLAorICAgICAgICAnOTNGMTlCMTkwODI0NUU1OTAwMUU5QUJD
JyA9PiAnSW5mby5wbGlzdCcsCisgICAgICAgICc5NzExNDVGRTE0RUYwMDZFMDA2NzRGRDknID0+
ICdNb2R1bGVzJywKKyAgICAgICAgJzI5QTgxMjA0MEZCQjlCNDEwMDUxMDI5MycgPT4gJ2FjY2Vz
c2liaWxpdHknLAorICAgICAgICAnNzEwMjVFQzExRjk5RjA5NjAwNEEyNTBDJyA9PiAnYW5pbWF0
aW9uJywKKyAgICAgICAgJ0JDMUEzNzkwMDk3QzZGOTcwMDE5RjNEOCcgPT4gJ2JpbmRpbmdzJywK
KyAgICAgICAgJzFBNTY5Q0M0MEQ3RTJCNjAwMDdDMzk4MycgPT4gJ2JyaWRnZScsCisgICAgICAg
ICcyNkYwQzg5MDFBMkQ3OUNCMDAyNzk0RjgnID0+ICdjb250ZW50ZXh0ZW5zaW9ucycsCisgICAg
ICAgICdFMUZGOEY1QjE4MDczNjJCMDAxMzI2NzQnID0+ICdjcnlwdG8nLAorICAgICAgICAnRjUy
M0QxODQwMkRFNDJFODAxODYzNUNBJyA9PiAnY3NzJywKKyAgICAgICAgJzI2Qjk5OThEMTgwM0FE
RkEwMEQwMTEyMScgPT4gJ2Nzc2ppdCcsCisgICAgICAgICdGNTIzRDMyNDAyREU0NDc4MDE4NjM1
Q0EnID0+ICdkb20nLAorICAgICAgICAnRTNBRkE5NjMxREE2RThBRjAwMjg2MUJEJyA9PiAnZG9t
aml0JywKKyAgICAgICAgJzkzMzA5RDg2MDk5RTY0OTEwMDU2RTU4MScgPT4gJ2VkaXRpbmcnLAor
ICAgICAgICAnOTc2RDZDNTcxMjJCOEExODAwMUZEMUY3JyA9PiAnZmlsZWFwaScsCisgICAgICAg
ICc1MTc0MUQwODBCMDcyNTcwMDBFRDQ0MkMnID0+ICdoaXN0b3J5JywKKyAgICAgICAgJzkzRUVD
MUVDMDlDMjg3NzcwMEM1MTVEMScgPT4gJ2h0bWwnLAorICAgICAgICAnMUM4MUI5NEQwRTk3MzJE
OTAwMjY2RTA3JyA9PiAnaW5zcGVjdG9yJywKKyAgICAgICAgJzExNUNGQTY2MjA4QUY3MjAwMDFF
Njk5MScgPT4gJ2xheW91dCcsCisgICAgICAgICdCQ0IxNkJGQjA5NzlDMzg3MDA0Njc3NDEnID0+
ICdsb2FkZXInLAorICAgICAgICAnRkFCRTcyRUMxMDU5QzFFQjAwRDk5OUREJyA9PiAnbWF0aG1s
JywKKyAgICAgICAgJzY1QkYwMjE4MDk3NDgwNjMwMEM0MzE5NicgPT4gJ3BhZ2UnLAorICAgICAg
ICAnQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIzJyA9PiAncGxhdGZvcm0nLAorICAgICAgICAnNURD
RjgzNjkwRDU5MTU3ODAwOTUzQkM2JyA9PiAncGx1Z2lucycsCisgICAgICAgICdGNTIzRDJGMzAy
REU0NDNCMDE4NjM1Q0EnID0+ICdyZW5kZXJpbmcnLAorICAgICAgICAnOTlFNDVBMTMxOEEwMjE3
NjAwMjZEODhGJyA9PiAncmVwbGF5JywKKyAgICAgICAgJzFBRTgyRUM5MENBQUUxNzcwMDIyMzdB
RScgPT4gJ3N0b3JhZ2UnLAorICAgICAgICAnRTQ3NjNENEExN0IyNzA0OTAwRDM1MjA2JyA9PiAn
c3R5bGUnLAorICAgICAgICAnQjIyMjc3Q0EwRDAwQkYxRTAwNzFCNzgyJyA9PiAnc3ZnJywKKyAg
ICAgICAgJzQxN0RBNENEMTM3MzQyMDQwMDdDNTdGQicgPT4gJ3Rlc3RpbmcnLAorICAgICAgICAn
MkU0MzQ2MzEwRjU0NkE2ODAwQjBGMUJBJyA9PiAnd29ya2VycycsCisgICAgICAgICdFMUYwNDI0
MzA5ODM5Mzg5MDA2Njk0RUEnID0+ICd4bWwnLAorICAgICAgICAnNjU2NTgwRUMwOUQxMkIyMDAw
MEU2MUQ3JyA9PiAnRGVyaXZlZCBTb3VyY2VzJywKKyAgICAgICAgJzA4OUMxNjY1RkU4NDExNThD
MDJBQUMwNycgPT4gJ1Jlc291cmNlcycsCisgICAgICAgICczNzE3RDdFNDE3RUNDMzZDMDAzQzI3
NkQnID0+ICdTY3JpcHRzJywKKyAgICAgICAgJzA4NjdENjlBRkU4NDAyOEZDMDJBQUMwNycgPT4g
J0ZyYW1ld29ya3MnLAorICAgICAgICAnMDM0NzY4REZGRjM4QTUwNDExREI5QzhCJyA9PiAnUHJv
ZHVjdHMnLAorICAgICAgICAnMUNERDQ0NjYwQkE5QzgwMDAwRjkwMTQ3JyA9PiAnQ29uZmlndXJh
dGlvbnMnLAorICAgIH0sCit9LAorCispOworCitteSAkdGVzdENhc2VzQ291bnQgPSBzY2FsYXIg
QHRlc3RDYXNlSGFzaFJlZnM7CitwbGFuKHRlc3RzID0+IDEgKiAkdGVzdENhc2VzQ291bnQpOyAj
IFRvdGFsIG51bWJlciBvZiBhc3NlcnRpb25zLgorCitmb3JlYWNoIG15ICR0ZXN0Q2FzZSAoQHRl
c3RDYXNlSGFzaFJlZnMpIHsKKyAgICBteSAkZXhwZWN0ZWRSZXN1bHRzID0gJHRlc3RDYXNlLT57
ZXhwZWN0ZWRSZXN1bHRzfTsKKworICAgIG15ICR0ZXN0TmFtZVN0YXJ0ID0gInBhcnNlQ2hpbGRy
ZW5Gcm9tR3JvdXAoKTogJHRlc3RDYXNlLT57dGVzdE5hbWV9IjsKKyAgICBteSAlYWN0dWFsUmVz
dWx0cyA9IFRpZHlYY29kZVByb2plY3RGaWxlOjpwYXJzZUNoaWxkcmVuRnJvbUdyb3VwKCR0ZXN0
Q2FzZS0+e2dyb3VwVGV4dH0pOworICAgIGlzX2RlZXBseShcJWFjdHVhbFJlc3VsdHMsICRleHBl
Y3RlZFJlc3VsdHMsICR0ZXN0TmFtZVN0YXJ0KTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC90aWR5LVhjb2RlLXByb2plY3QtZmlsZV91bml0dGVzdC9wYXJzZUZpbGVS
ZWZlcmVuY2UucGwgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvdGlkeS1YY29kZS1wcm9qZWN0
LWZpbGVfdW5pdHRlc3QvcGFyc2VGaWxlUmVmZXJlbmNlLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzOGRhOWRm
NDlhYzE5MjVjMzc0YmQyNTMzN2QzNWJkNDQwMWNjOTYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvdGlkeS1YY29kZS1wcm9qZWN0LWZpbGVfdW5pdHRlc3QvcGFy
c2VGaWxlUmVmZXJlbmNlLnBsCkBAIC0wLDAgKzEsMTMwIEBACisjIS91c3IvYmluL2VudiBwZXJs
CisjCisjIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3VzZSBzdHJpY3Q7
Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBUZXN0OjpNb3JlOwordXNlIEZpbmRCaW47Cit1c2UgbGli
IEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iKTsKK3VzZSBMb2FkQXNNb2R1
bGUgcXcoVGlkeVhjb2RlUHJvamVjdEZpbGUgdGlkeS1YY29kZS1wcm9qZWN0LWZpbGUpOworCitt
eSBAdGVzdENhc2VIYXNoUmVmcyA9ICgKKworeworICAgIHRlc3ROYW1lID0+ICJBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtLmgiLAorICAgIGZpbGVUZXh0ID0+IDw8J0VORCcsCisJCTA3RDZB
NEY2MUJGMjMwN0QwMDE3NDE0NiAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW0uaDsgcGF0aCA9IHBsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW0uaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworRU5ECisgICAgZXhwZWN0ZWRS
ZXN1bHRzID0+ICtbCisgICAgICAgICcwN0Q2QTRGNjFCRjIzMDdEMDAxNzQxNDYnLAorICAgICAg
ICAnQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oJywKKyAgICAgICAgJ0F1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW0uaCcsCisgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgnLAorICAgICAgICAnU09VUkNFX1JPT1QnLAorICAg
IF0sCit9LAorCit7CisgICAgdGVzdE5hbWUgPT4gIklETFBhcnNlci5wbSIsCisgICAgZmlsZVRl
eHQgPT4gPDwnRU5EJywKKwkJMTQ4MTNCRjMwOUVERjg4RTAwRjc1N0UxIC8qIElETFBhcnNlci5w
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBJRExQYXJzZXIucG07IHBhdGgg
PSBzY3JpcHRzL0lETFBhcnNlci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKK0VORAor
ICAgIGV4cGVjdGVkUmVzdWx0cyA9PiArWworICAgICAgICAnMTQ4MTNCRjMwOUVERjg4RTAwRjc1
N0UxJywKKyAgICAgICAgJ0lETFBhcnNlci5wbScsCisgICAgICAgICdJRExQYXJzZXIucG0nLAor
ICAgICAgICAnc2NyaXB0cy9JRExQYXJzZXIucG0nLAorICAgICAgICAnPGdyb3VwPicsCisgICAg
XSwKK30sCisKK3sKKyAgICB0ZXN0TmFtZSA9PiAiZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdz
LnBsIiwKKyAgICBmaWxlVGV4dCA9PiA8PCdFTkQnLAorCQkzNzE3RDdFNTE3RUNDM0E2MDAzQzI3
NkQgLyogZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IGV4
dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbDsgcGF0aCA9ICJTY3JpcHRzL2V4dHJhY3QtbG9j
YWxpemFibGUtc3RyaW5ncy5wbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CitFTkQKKyAg
ICBleHBlY3RlZFJlc3VsdHMgPT4gK1sKKyAgICAgICAgJzM3MTdEN0U1MTdFQ0MzQTYwMDNDMjc2
RCcsCisgICAgICAgICdleHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwnLAorICAgICAgICAn
ZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsJywKKyAgICAgICAgJ1NjcmlwdHMvZXh0cmFj
dC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsJywKKyAgICAgICAgJzxncm91cD4nLAorICAgIF0sCit9
LAorCit7CisgICAgdGVzdE5hbWUgPT4gImdlbmVyYXRlLWJpbmRpbmdzLnBsIiwKKyAgICBmaWxl
VGV4dCA9PiA8PCdFTkQnLAorCQk5M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjggLyogZ2VuZXJhdGUt
YmluZGluZ3MucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gImdlbmVyYXRl
LWJpbmRpbmdzLnBsIjsgcGF0aCA9ICJzY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKK0VORAorICAgIGV4cGVjdGVkUmVzdWx0cyA9PiArWwor
ICAgICAgICAnOTNGOEIzMDcwQTMwMEZFQTAwRjYxQUI4JywKKyAgICAgICAgJ2dlbmVyYXRlLWJp
bmRpbmdzLnBsJywKKyAgICAgICAgJ2dlbmVyYXRlLWJpbmRpbmdzLnBsJywKKyAgICAgICAgJ3Nj
cmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwnLAorICAgICAgICAnPGdyb3VwPicsCisgICAgXSwK
K30sCisKK3sKKyAgICB0ZXN0TmFtZSA9PiAiUmFkaW9CdXR0b25Hcm91cHMuaCIsCisgICAgZmls
ZVRleHQgPT4gPDwnRU5EJywKKwkJOTNGOTI1NDEwRjdFRjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0
dG9uR3JvdXBzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhZGlvQnV0dG9u
R3JvdXBzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CitFTkQKKyAgICBleHBlY3RlZFJl
c3VsdHMgPT4gK1sKKyAgICAgICAgJzkzRjkyNTQxMEY3RUY1QjgwMDdFMzdDOScsCisgICAgICAg
ICdSYWRpb0J1dHRvbkdyb3Vwcy5oJywKKyAgICAgICAgdW5kZWYsCisgICAgICAgICdSYWRpb0J1
dHRvbkdyb3Vwcy5oJywKKyAgICAgICAgJzxncm91cD4nLAorICAgIF0sCit9LAorCit7CisgICAg
dGVzdE5hbWUgPT4gIkluZm8ucGxpc3QiLAorICAgIGZpbGVUZXh0ID0+IDw8J0VORCcsCisJCTkz
OTgxMTMyMDgyNEJGMDEwMDhERjAzOCAvKiBJbmZvLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0
LnhtbDsgbmFtZSA9IEluZm8ucGxpc3Q7IHBhdGggPSBtYWMvSW5mby5wbGlzdDsgc291cmNlVHJl
ZSA9IFNPVVJDRV9ST09UOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMTsgfTsKK0VORAorICAg
IGV4cGVjdGVkUmVzdWx0cyA9PiArWworICAgICAgICAnOTM5ODExMzIwODI0QkYwMTAwOERGMDM4
JywKKyAgICAgICAgJ0luZm8ucGxpc3QnLAorICAgICAgICAnSW5mby5wbGlzdCcsCisgICAgICAg
ICdtYWMvSW5mby5wbGlzdCcsCisgICAgICAgICdTT1VSQ0VfUk9PVCcsCisgICAgXSwKK30sCisK
Kyk7CisKK215ICR0ZXN0Q2FzZXNDb3VudCA9IHNjYWxhciBAdGVzdENhc2VIYXNoUmVmczsKK3Bs
YW4odGVzdHMgPT4gMSAqICR0ZXN0Q2FzZXNDb3VudCk7ICMgVG90YWwgbnVtYmVyIG9mIGFzc2Vy
dGlvbnMuCisKK2ZvcmVhY2ggbXkgJHRlc3RDYXNlIChAdGVzdENhc2VIYXNoUmVmcykgeworICAg
IG15ICRleHBlY3RlZFJlc3VsdHMgPSAkdGVzdENhc2UtPntleHBlY3RlZFJlc3VsdHN9OworCisg
ICAgbXkgJHRlc3ROYW1lU3RhcnQgPSAicGFyc2VGaWxlUmVmZXJlbmNlKCk6ICR0ZXN0Q2FzZS0+
e3Rlc3ROYW1lfSI7CisgICAgbXkgQGFjdHVhbFJlc3VsdHMgPSBUaWR5WGNvZGVQcm9qZWN0Rmls
ZTo6cGFyc2VGaWxlUmVmZXJlbmNlKCR0ZXN0Q2FzZS0+e2ZpbGVUZXh0fSk7CisgICAgaXNfZGVl
cGx5KFxAYWN0dWFsUmVzdWx0cywgJGV4cGVjdGVkUmVzdWx0cywgJHRlc3ROYW1lU3RhcnQpOwor
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3RpZHktWGNvZGUtcHJvamVj
dC1maWxlX3VuaXR0ZXN0L3BhcnNlWGNvZGVQcm9qZWN0RmlsZS5wbCBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC90aWR5LVhjb2RlLXByb2plY3QtZmlsZV91bml0dGVzdC9wYXJzZVhjb2RlUHJv
amVjdEZpbGUucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg3NmZlZDUyNjYwNDZjM2E0OWI0NjkxY2ExMjhlOTM0
NTQyZjE1MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC90aWR5
LVhjb2RlLXByb2plY3QtZmlsZV91bml0dGVzdC9wYXJzZVhjb2RlUHJvamVjdEZpbGUucGwKQEAg
LTAsMCArMSwyMzAgQEAKKyMhL3Vzci9iaW4vZW52IHBlcmwKKyMKKyMgQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNl
IFRlc3Q6Ok1vcmU7Cit1c2UgRmluZEJpbjsKK3VzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRG
aW5kQmluOjpCaW4sICIuLiIpOwordXNlIExvYWRBc01vZHVsZSBxdyhUaWR5WGNvZGVQcm9qZWN0
RmlsZSB0aWR5LVhjb2RlLXByb2plY3QtZmlsZSk7CisKK215IEB0ZXN0Q2FzZUhhc2hSZWZzID0g
KAorCit7CisgICAgdGVzdE5hbWUgPT4gIlNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiIsCisgICAgcHJvamVjdEZpbGUgPT4geworICAgICAgICBjb250ZW50
cyA9PiA8PCdFTkQnLAorLy8gISQqVVRGOCokIQoreworCWFyY2hpdmVWZXJzaW9uID0gMTsKKwlj
bGFzc2VzID0geworCX07CisJb2JqZWN0VmVyc2lvbiA9IDQ2OworCW9iamVjdHMgPSB7CisKKy8q
IEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCisvKiBFbmQgUEJYQWdncmVnYXRl
VGFyZ2V0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKy8q
IEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhDb250YWluZXJJdGVt
UHJveHkgc2VjdGlvbiAqLworLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICov
CisKKy8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworLyogRW5kIFBC
WENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGaWxlUmVmZXJl
bmNlIHNlY3Rpb24gKi8KKwkJOTkyMDM5ODAxOEI5NUJDNjAwQjM5QUY5IC8qIFVzZXJJbnB1dEJy
aWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VySW5wdXRC
cmlkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTIwMzk4MTE4Qjk1QkM2
MDBCMzlBRjkgLyogVXNlcklucHV0QnJpZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFVzZXJJbnB1dEJyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworLyog
RW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtz
QnVpbGRQaGFzZSBzZWN0aW9uICovCisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2Vj
dGlvbiAqLworCisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJCTA4NjdENjkxRkU4NDAy
OEZDMDJBQUMwNyAvKiBXZWJDb3JlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQk5OUU0NUExMzE4QTAyMTc2MDAyNkQ4OEYgLyogcmVwbGF5ICovLAorCQkJ
KTsKKwkJCW5hbWUgPSBXZWJDb3JlOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsK
KwkJOTlFNDVBMTMxOEEwMjE3NjAwMjZEODhGIC8qIHJlcGxheSAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJOTkyMDM5ODAxOEI5NUJDNjAwQjM5QUY5IC8q
IFVzZXJJbnB1dEJyaWRnZS5jcHAgKi8sCisJCQkJOTkyMDM5ODExOEI5NUJDNjAwQjM5QUY5IC8q
IFVzZXJJbnB1dEJyaWRnZS5oICovLAorCQkJKTsKKwkJCXBhdGggPSByZXBsYXk7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OworLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwor
LyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworLyogRW5kIFBCWEhlYWRl
cnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rp
b24gKi8KKy8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQ
cm9qZWN0IHNlY3Rpb24gKi8KKwkJMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qg
b2JqZWN0ICovID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJ
CQkJQnVpbGRJbmRlcGVuZGVudFRhcmdldHNJblBhcmFsbGVsID0gWUVTOworCQkJCUxhc3RTd2lm
dFVwZGF0ZUNoZWNrID0gMDcwMDsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDcwMDsKKwkJCX07
CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CisJ
CQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAzLjIiOworCQkJZGV2ZWxvcG1lbnRSZWdp
b24gPSBFbmdsaXNoOworCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CisJCQlrbm93blJl
Z2lvbnMgPSAoCisJCQkJRW5nbGlzaCwKKwkJCQlKYXBhbmVzZSwKKwkJCQlGcmVuY2gsCisJCQkJ
R2VybWFuLAorCQkJCVNwYW5pc2gsCisJCQkJRHV0Y2gsCisJCQkJSXRhbGlhbiwKKwkJCSk7CisJ
CQltYWluR3JvdXAgPSAwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViQ29yZSAqLzsKKwkJ
CXByb2R1Y3RSZWZHcm91cCA9IDAzNDc2OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAq
LzsKKwkJCXByb2plY3REaXJQYXRoID0gIiI7CisJCQlwcm9qZWN0UmVmZXJlbmNlcyA9ICgKKwkJ
CQl7CisJCQkJCVByb2R1Y3RHcm91cCA9IDFDMDlEMDRDMUUzMUMzMjgwMDcyNUYxOCAvKiBQcm9k
dWN0cyAqLzsKKwkJCQkJUHJvamVjdFJlZiA9IDFDMDlEMDRCMUUzMUMzMjgwMDcyNUYxOCAvKiBQ
QUwueGNvZGVwcm9qICovOworCQkJCX0sCisJCQkpOworCQkJcHJvamVjdFJvb3QgPSAiIjsKKwkJ
CXRhcmdldHMgPSAoCisJCQkJNDE4MTZGNzkxMzg1OUM1NTAwNTdBQUE0IC8qIEFsbCAqLywKKwkJ
CQk5M0YxOThBNTA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZSAqLywKKwkJCQk1MzU1RThEMTFG
OTY3RTlEMDAzMUUwOEMgLyogR2VuZXJhdGUgVW5pZmllZCBTb3VyY2VzICovLAorCQkJCUREMDQx
RkJFMDlEOUREQkUwMDEwQUYyQSAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCisJCQkJNDE3REE2Q0Yx
MzczNEUwMjAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydCAqLywKKwkJCQlFMUJBNjZGMzE3
NDJCREUwMDBDMjAyNTEgLyogV2ViQ29yZVRlc3RTaGltICovLAorCQkJKTsKKwkJfTsKKy8qIEVu
ZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUmVmZXJlbmNlUHJveHkgc2Vj
dGlvbiAqLworLyogRW5kIFBCWFJlZmVyZW5jZVByb3h5IHNlY3Rpb24gKi8KKworLyogQmVnaW4g
UEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisvKiBFbmQgUEJYUmVzb3VyY2VzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBz
ZWN0aW9uICovCisvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwor
LyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworLyogRW5kIFBCWFNvdXJj
ZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBz
ZWN0aW9uICovCisvKiBFbmQgUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisKKy8qIEJl
Z2luIFBCWFZhcmlhbnRHcm91cCBzZWN0aW9uICovCisvKiBFbmQgUEJYVmFyaWFudEdyb3VwIHNl
Y3Rpb24gKi8KKworLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworLyog
RW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENDb25maWd1
cmF0aW9uTGlzdCBzZWN0aW9uICovCisvKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9u
ICovCisJfTsKKwlyb290T2JqZWN0ID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2pl
Y3Qgb2JqZWN0ICovOworfQorRU5ECisgICAgfSwKKyAgICBleHBlY3RlZFJlc3VsdHMgPT4gewor
ICAgICAgICBmaWxlcyA9PiB7CisgICAgICAgICAgICAnOTkyMDM5ODAxOEI5NUJDNjAwQjM5QUY5
JyA9PiB7CisgICAgICAgICAgICAgICAgdGV4dCA9PiA8PCdFTkQnLAorCQk5OTIwMzk4MDE4Qjk1
QkM2MDBCMzlBRjkgLyogVXNlcklucHV0QnJpZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFVzZXJJbnB1dEJyaWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CitFTkQKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAnOTkyMDM5ODExOEI5NUJD
NjAwQjM5QUY5JyA9PiB7CisgICAgICAgICAgICAgICAgdGV4dCA9PiA8PCdFTkQnLAorCQk5OTIw
Mzk4MTE4Qjk1QkM2MDBCMzlBRjkgLyogVXNlcklucHV0QnJpZGdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJJbnB1dEJyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworRU5ECisgICAgICAgICAgICB9LAorICAgICAgICB9LAorICAgICAgICBncm91cHMg
PT4geworICAgICAgICAgICAgJzA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNycgPT4geworICAgICAg
ICAgICAgICAgIGdyb3VwTmFtZSA9PiAiV2ViQ29yZSIsCisgICAgICAgICAgICAgICAgbmFtZVZh
bHVlID0+ICJXZWJDb3JlIiwKKyAgICAgICAgICAgICAgICBzb3VyY2VUcmVlID0+ICI8Z3JvdXA+
IiwKKyAgICAgICAgICAgICAgICB0ZXh0ID0+IDw8J0VORCcsCisJCTA4NjdENjkxRkU4NDAyOEZD
MDJBQUMwNyAvKiBXZWJDb3JlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQk5OUU0NUExMzE4QTAyMTc2MDAyNkQ4OEYgLyogcmVwbGF5ICovLAorCQkJKTsK
KwkJCW5hbWUgPSBXZWJDb3JlOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKK0VO
RAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICc5OUU0NUExMzE4QTAyMTc2MDAyNkQ4OEYn
ID0+IHsKKyAgICAgICAgICAgICAgICBncm91cE5hbWUgPT4gInJlcGxheSIsCisgICAgICAgICAg
ICAgICAgcGF0aFZhbHVlID0+ICJyZXBsYXkiLAorICAgICAgICAgICAgICAgIHNvdXJjZVRyZWUg
PT4gIjxncm91cD4iLAorICAgICAgICAgICAgICAgIHRleHQgPT4gPDwnRU5EJywKKwkJOTlFNDVB
MTMxOEEwMjE3NjAwMjZEODhGIC8qIHJlcGxheSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJOTkyMDM5ODAxOEI5NUJDNjAwQjM5QUY5IC8qIFVzZXJJbnB1
dEJyaWRnZS5jcHAgKi8sCisJCQkJOTkyMDM5ODExOEI5NUJDNjAwQjM5QUY5IC8qIFVzZXJJbnB1
dEJyaWRnZS5oICovLAorCQkJKTsKKwkJCXBhdGggPSByZXBsYXk7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OworRU5ECisgICAgICAgICAgICB9LAorICAgICAgICB9LAorICAgICAg
ICBwcm9qZWN0ID0+IHsKKyAgICAgICAgICAgIG1haW5Hcm91cElEID0+ICIwODY3RDY5MUZFODQw
MjhGQzAyQUFDMDciLAorICAgICAgICAgICAgcHJvamVjdERpclBhdGggPT4gIiIsCisgICAgICAg
ICAgICBwcm9qZWN0Um9vdCA9PiAiIiwKKyAgICAgICAgfSwKKyAgICB9LAorfSwKKworKTsKKwor
bXkgJHRlc3RDYXNlc0NvdW50ID0gc2NhbGFyIEB0ZXN0Q2FzZUhhc2hSZWZzOworcGxhbih0ZXN0
cyA9PiAxICogJHRlc3RDYXNlc0NvdW50KTsgIyBUb3RhbCBudW1iZXIgb2YgYXNzZXJ0aW9ucy4K
KworZm9yZWFjaCBteSAkdGVzdENhc2UgKEB0ZXN0Q2FzZUhhc2hSZWZzKSB7CisgICAgbXkgJGV4
cGVjdGVkUmVzdWx0cyA9ICR0ZXN0Q2FzZS0+e2V4cGVjdGVkUmVzdWx0c307CisgICAgJGV4cGVj
dGVkUmVzdWx0cy0+e2NvbnRlbnRzfSA9ICR0ZXN0Q2FzZS0+e3Byb2plY3RGaWxlfS0+e2NvbnRl
bnRzfTsKKworICAgIG15ICR0ZXN0TmFtZVN0YXJ0ID0gInBhcnNlWGNvZGVQcm9qZWN0RmlsZSgp
OiAkdGVzdENhc2UtPnt0ZXN0TmFtZX0iOworICAgIG15ICRhY3R1YWxSZXN1bHRzID0gJHRlc3RD
YXNlLT57cHJvamVjdEZpbGV9OworICAgIFRpZHlYY29kZVByb2plY3RGaWxlOjpwYXJzZVhjb2Rl
UHJvamVjdEZpbGUoJGFjdHVhbFJlc3VsdHMpOworICAgIGlzX2RlZXBseSgkYWN0dWFsUmVzdWx0
cywgJGV4cGVjdGVkUmVzdWx0cywgJHRlc3ROYW1lU3RhcnQpOworfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2VyLnB5CmluZGV4IGE1OTA4ZTYwMTZhMjFjYTc2YjZiMmFlM2U1NDE5
ZWE5ZTFmZmQ3Y2EuLjY5YmEwNTA4MWVlZDQ3MjMwNWRmYzRiNDVjYjZmMTRmNTUzODdkMzUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKQEAgLTI2MSw2ICsyNjEsMTAg
QEAgX1BBVEhfUlVMRVNfU1BFQ0lGSUVSID0gWwogICAgICAgb3MucGF0aC5qb2luKCdTb3VyY2Un
LCAnVGhpcmRQYXJ0eScsICdsaWJ3ZWJydGMnLCAnU291cmNlJywgJ3dlYnJ0YycpLAogICAgICAg
b3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViQ29yZScsICdQQUwnLCAncGFsJywgJ3NwaScpXSwK
ICAgICAgWyItcmVhZGFiaWxpdHkvbmFtaW5nL3VuZGVyc2NvcmVzIl0pLAorCisgICAgKFsgICMg
dGlkeS1YY29kZS1wcm9qZWN0LWZpbGUgdGVzdHMgdXNlIHRhYnMgYmVjYXVzZSBYY29kZSBwcm9q
ZWN0IGZpbGVzIHVzZSB0YWJzLgorICAgICAgb3MucGF0aC5qb2luKCdUb29scycsICdTY3JpcHRz
JywgJ3dlYmtpdHBlcmwnLCAndGlkeS1YY29kZS1wcm9qZWN0LWZpbGVfdW5pdHRlc3QnKV0sCisg
ICAgIFsiLXdoaXRlc3BhY2UvdGFiIl0pLAogXQogCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>468044</attachid>
            <date>2023-10-03 06:53:27 -0700</date>
            <delta_ts>2023-10-03 06:53:27 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>bug-188754-v4.diff</filename>
            <type>text/plain</type>
            <size>40845</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvdGlkeS1YY29kZS1wcm9qZWN0LWZpbGUgYi9Ub29s
cy9TY3JpcHRzL3RpZHktWGNvZGUtcHJvamVjdC1maWxlCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uOWYxYTE4MjZjODgxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
U2NyaXB0cy90aWR5LVhjb2RlLXByb2plY3QtZmlsZQpAQCAtMCwwICsxLDQ1MiBAQAorIyEvdXNy
L2Jpbi9lbnYgcGVybAorCisjIENvcHlyaWdodCAoQykgMjAwNy0yMDIzIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyMgU2NyaXB0IHRvIHRpZHkgdXAgWGNvZGUgcHJvamVjdC5wYnhwcm9qIGZpbGVzLgor
Cit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgRW5nbGlzaDsKK3VzZSBGaWxlOjpC
YXNlbmFtZTsKK3VzZSBGaWxlOjpTcGVjOwordXNlIEZpbGU6OlRlbXAgcXcodGVtcGZpbGUpOwor
dXNlIEdldG9wdDo6TG9uZzsKKworc3ViIGZpbmRHcm91cHNUb0NvbnZlcnRUb0RpcmVjdG9yeSgk
JCQkKTsKK3N1YiBsb2FkWGNvZGVQcm9qZWN0RmlsZSgkKTsKK3N1YiBtYWluKCk7CitzdWIgbWFw
Rm9sZGVyc1RvRGlyZWN0b3JpZXMoJCQpOworc3ViIHBhcnNlQ2hpbGRyZW5Gcm9tR3JvdXAoJCk7
CitzdWIgcGFyc2VGaWxlUmVmZXJlbmNlKCQpOworc3ViIHBhcnNlWGNvZGVQcm9qZWN0RmlsZSgk
KTsKK3N1YiBzYXZlWGNvZGVQcm9qZWN0RmlsZSgkKTsKK3N1YiB1cGRhdGVGb2xkZXJzVG9EaXJl
Y3RvcmllcygkKTsKKworZXhpdChtYWluKCkpOworCitzdWIgbWFpbigpCit7CisgICAgbXkgJGRy
eVJ1biA9IDA7CisgICAgbXkgJGZvcmNlVXBkYXRlID0gMDsKKyAgICBteSAkbWFwRm9sZGVycyA9
IDA7CisgICAgbXkgJHF1aWV0ID0gMDsKKyAgICBteSAkc2hvd0hlbHA7CisKKyAgICBteSAkZ2V0
T3B0aW9uc1Jlc3VsdCA9IEdldE9wdGlvbnMoCisgICAgICAgICdmfGZvcmNlIScgICAgICAgPT4g
XCRmb3JjZVVwZGF0ZSwKKyAgICAgICAgJ2h8aGVscCcgICAgICAgICA9PiBcJHNob3dIZWxwLAor
ICAgICAgICAnbXxtYXAtZm9sZGVycycgID0+IFwkbWFwRm9sZGVycywKKyAgICAgICAgJ258ZHJ5
LXJ1bicgICAgICA9PiBcJGRyeVJ1biwKKyAgICAgICAgJ3F8cXVpZXQnICAgICAgICA9PiBcJHF1
aWV0LAorICAgICk7CisKKyAgICBpZiAoc2NhbGFyKEBBUkdWKSA9PSAwICYmICEkc2hvd0hlbHAp
IHsKKyAgICAgICAgcHJpbnQgU1RERVJSICJFUlJPUjogTm8gWGNvZGUgcHJvamVjdCBmaWxlcyAo
cHJvamVjdC5wYnhwcm9qKSBsaXN0ZWQgb24gY29tbWFuZC1saW5lLlxuIjsKKyAgICAgICAgdW5k
ZWYgJGdldE9wdGlvbnNSZXN1bHQ7CisgICAgfQorCisgICAgaWYgKCEkZ2V0T3B0aW9uc1Jlc3Vs
dCB8fCAkc2hvd0hlbHApIHsKKyAgICAgICAgcHJpbnQgU1RERVJSIDw8X19FTkRfXzsKK1VzYWdl
OiBAe1sgYmFzZW5hbWUoJDApIF19IFtvcHRpb25zXSBwYXRoL3RvL3Byb2plY3QucGJ4cHJvaiBb
cGF0aC90by9wcm9qZWN0LnBieHByb2ogLi4uXQorICAtZnwtLVtuby1dZm9yY2UgICBmb3JjZSBw
cm9qZWN0IHVwZGF0ZSBldmVuIHdpdGggZXJyb3JzIChkZWZhdWx0OiBubyBmb3JjZSkKKyAgLWh8
LS1oZWxwICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZQorICAtbXwtLW1hcC1mb2xkZXJz
ICBtYXAgZm9sZGVycyBpbiBYY29kZSB0byBkaXJlY3RvcmllcyBvbiBkaXNrIGlmIHRoZXkgZXhp
c3QKKyAgLW58LS1kcnktcnVuICAgICAgbWFrZSBjaGFuZ2VzIGJ1dCBkb24ndCBzYXZlIHRoZW0g
YmFjayB0byB0aGUgcHJvamVjdCBmaWxlCisgIC1xfC0tcXVpZXQgICAgICAgIGRvIG5vdCBvdXRw
dXQgcHJvZ3Jlc3MgbWVzc2FnZXMKK19fRU5EX18KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQor
CisgICAgZm9yIG15ICRmaWxlIChAQVJHVikgeworICAgICAgICBwcmludCAiUmVhZGluZyBwcm9q
ZWN0IGZpbGUgJGZpbGUuLi5cbiIgdW5sZXNzICRxdWlldDsKKyAgICAgICAgbXkgJHByb2plY3RG
aWxlID0gbG9hZFhjb2RlUHJvamVjdEZpbGUoJGZpbGUpOworCisgICAgICAgIGlmICgkbWFwRm9s
ZGVycykgeworICAgICAgICAgICAgcHJpbnQgIkZpeGluZyBmb2xkZXJzIHRoYXQgY2FuIG1hcCB0
byBkaXJlY3Rvcmllcy4uLlxuIiB1bmxlc3MgJHF1aWV0OworICAgICAgICAgICAgbWFwRm9sZGVy
c1RvRGlyZWN0b3JpZXMoJHByb2plY3RGaWxlLCAkZm9yY2VVcGRhdGUpOworICAgICAgICAgICAg
dXBkYXRlRm9sZGVyc1RvRGlyZWN0b3JpZXMoJHByb2plY3RGaWxlKSBpZiAhJGRyeVJ1bjsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghJGRyeVJ1bikgeworICAgICAgICAgICAgcHJpbnQgIlNh
dmluZyBwcm9qZWN0IGZpbGUgJGZpbGUuLi5cbiIgdW5sZXNzICRxdWlldDsKKyAgICAgICAgICAg
IHNhdmVYY29kZVByb2plY3RGaWxlKCRwcm9qZWN0RmlsZSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcHJpbnQgIkRvbmUuXG4iIHVubGVzcyAkcXVpZXQ7CisKKyAgICByZXR1cm4gMDsKK30KKwor
c3ViIGZpbmRHcm91cHNUb0NvbnZlcnRUb0RpcmVjdG9yeSgkJCQkKQoreworICAgIG15ICgkZ3Jv
dXBJRCwgJHBhcmVudFBhdGgsICRwcm9qZWN0UGF0aCwgJHByb2plY3RGaWxlKSA9IEBfOworICAg
IG15ICRlcnJvckNvdW50ID0gMDsKKyAgICBteSAkZmlsZXMgPSAkcHJvamVjdEZpbGUtPntmaWxl
c307CisgICAgbXkgJGdyb3VwcyA9ICRwcm9qZWN0RmlsZS0+e2dyb3Vwc307CisKKyAgICBteSAk
Z3JvdXBTb3VyY2VUcmVlID0gJGdyb3Vwcy0+eyRncm91cElEfXtzb3VyY2VUcmVlfTsKKyAgICBp
ZiAoJGdyb3VwU291cmNlVHJlZSBlcSAiPGdyb3VwPiIgfHwgJGdyb3VwU291cmNlVHJlZSBlcSAi
U09VUkNFX1JPT1QiKSB7CisgICAgICAgIG15ICRkaXJlY3RvcnkgPSBGaWxlOjpTcGVjLT5jYXRk
aXIoJHBhcmVudFBhdGgsICRncm91cHMtPnskZ3JvdXBJRH17Z3JvdXBOYW1lfSk7CisgICAgICAg
IGlmICgtZCAkZGlyZWN0b3J5KSB7CisgICAgICAgICAgICAjIE1hcmsgdGhpcyBncm91cCBhcyBu
ZWVkaW5nIGFuIHVwZGF0ZSB0byB1c2UgYSBwYXRoLgorICAgICAgICAgICAgJGdyb3Vwcy0+eyRn
cm91cElEfXtfdXBkYXRlR3JvdXBQYXRofSA9ICRkaXJlY3Rvcnk7CisKKyAgICAgICAgICAgICMg
RmluZCBjaGlsZHJlbiAoZmlsZXMgYW5kIGdyb3VwcykgdGhhdCBuZWVkIGFuIHVwZGF0ZSB0byB1
c2UgYSBwYXRoLgorICAgICAgICAgICAgbXkgJWNoaWxkcmVuID0gcGFyc2VDaGlsZHJlbkZyb21H
cm91cCgkZ3JvdXBzLT57JGdyb3VwSUR9e3RleHR9KTsKKyAgICAgICAgICAgIGZvciBteSAkY2hp
bGRJRCAoa2V5cyAlY2hpbGRyZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoZXhpc3RzICRmaWxl
cy0+eyRjaGlsZElEfSkgeworICAgICAgICAgICAgICAgICAgICBteSAoJGZpbGVJRCwgJGZpbGVO
YW1lLCAkdW51c2VkTmFtZSwgJHBhdGgsICRzb3VyY2VUcmVlKSA9IHBhcnNlRmlsZVJlZmVyZW5j
ZSgkZmlsZXMtPnskY2hpbGRJRH17dGV4dH0pOworICAgICAgICAgICAgICAgICAgICBteSAkZXhw
ZWN0ZWRQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkZGlyZWN0b3J5LCAkZmlsZU5hbWUpOwor
ICAgICAgICAgICAgICAgICAgICBteSAkYWN0dWFsUGF0aDsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCRzb3VyY2VUcmVlIGVxICJTT1VSQ0VfUk9PVCIpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICRhY3R1YWxQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkcHJvamVjdFBhdGgsICRwYXRo
KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHNvdXJjZVRyZWUgZXEgIjxncm91cD4i
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RzICRncm91cHMtPnskZ3JvdXBJ
RH17cGF0aFZhbHVlfSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhY3R1YWxQYXRo
ID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkZGlyZWN0b3J5LCAkcGF0aCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhY3R1YWxQ
YXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkcGFyZW50UGF0aCwgJHBhdGgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkc291cmNlVHJl
ZSBlcSAiQlVJTFRfUFJPRFVDVFNfRElSIikgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV4
dDsgIyBTa2lwIHRoZXNlIGFzIHdlIGNhbid0IGNoZWNrIGlmIGZpbGVzIGV4aXN0IGluIHRoaXMg
ZGlyZWN0b3J5IHVudGlsIGFmdGVyIGJ1aWxkaW5nLgorICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZGllICJVbmV4cGVjdGVkIHNvdXJjZVRyZWUg
XCIkc291cmNlVHJlZVwiIGZvciBjaGlsZCAkY2hpbGRJRCI7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCEgLWUgJGV4cGVjdGVkUGF0aCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgJGVycm9yQ291bnQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmICgtZSAkYWN0dWFsUGF0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50
ICJNT1ZFOiAkYWN0dWFsUGF0aCAkZXhwZWN0ZWRQYXRoXG4iOworICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiTUlTU0lO
RzogJGFjdHVhbFBhdGhcbiI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkZmlsZXMtPnskY2hp
bGRJRH17X3VwZGF0ZVBhdGhXaXRob3V0TmFtZX0gPSAkZmlsZU5hbWU7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2lmIChleGlzdHMgJGdyb3Vwcy0+eyRjaGls
ZElEfSAmJiAkZ3JvdXBzLT57JGdyb3VwSUR9e191cGRhdGVHcm91cFBhdGh9KSB7CisgICAgICAg
ICAgICAgICAgICAgIG15ICRncm91cE5hbWUgPSAkZ3JvdXBzLT57JGNoaWxkSUR9e2dyb3VwTmFt
ZX07CisgICAgICAgICAgICAgICAgICAgICRlcnJvckNvdW50ICs9IGZpbmRHcm91cHNUb0NvbnZl
cnRUb0RpcmVjdG9yeSgkY2hpbGRJRCwgJGRpcmVjdG9yeSwgJHByb2plY3RQYXRoLCAkcHJvamVj
dEZpbGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGlmIChleGlzdHMgJGdyb3Vwcy0+eyRncm91cElEfXtwYXRoVmFsdWV9
KSB7CisgICAgICAgICAgICAgICAgJHBhcmVudFBhdGggPSBGaWxlOjpTcGVjLT5jYXRkaXIoJHBh
cmVudFBhdGgsICRncm91cHMtPnskZ3JvdXBJRH17cGF0aFZhbHVlfSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAjIEZpbmQgY2hpbGRyZW4gdGhhdCBtYXkgbmVlZCBhbiB1cGRhdGVkIHBh
dGggaW5zaWRlIGZvbGRlcnMgdGhhdCBkb24ndCB1c2UgYSBwYXRoLAorICAgICAgICAgICAgIyBi
dXQgd2hvc2UgcGFyZW50IGZvbGRlcihzKSBtYXkgaGF2ZSBjaGFuZ2VkIHRvIHVzZSBhIHBhdGgu
CisgICAgICAgICAgICBteSAlY2hpbGRyZW4gPSBwYXJzZUNoaWxkcmVuRnJvbUdyb3VwKCRncm91
cHMtPnskZ3JvdXBJRH17dGV4dH0pOworICAgICAgICAgICAgZm9yIG15ICRjaGlsZElEIChrZXlz
ICVjaGlsZHJlbikgeworICAgICAgICAgICAgICAgIGlmIChleGlzdHMgJGZpbGVzLT57JGNoaWxk
SUR9KSB7CisgICAgICAgICAgICAgICAgICAgIG15ICgkZmlsZUlELCAkZmlsZU5hbWUsICRuYW1l
LCAkcGF0aCwgJHNvdXJjZVRyZWUpID0gcGFyc2VGaWxlUmVmZXJlbmNlKCRmaWxlcy0+eyRjaGls
ZElEfXt0ZXh0fSk7CisgICAgICAgICAgICAgICAgICAgIG15ICRleHBlY3RlZFBhdGg7CisgICAg
ICAgICAgICAgICAgICAgIGlmICgkc291cmNlVHJlZSBlcSAiU09VUkNFX1JPT1QiKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWRQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgk
cHJvamVjdFBhdGgsICRwYXRoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHNvdXJj
ZVRyZWUgZXEgIjxncm91cD4iKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IGlmIC1l
IEZpbGU6OlNwZWMtPmNhdGZpbGUoJHBhcmVudFBhdGgsICRwYXRoKTsgIyBOb3RoaW5nIHRvIGRv
IGhlcmUuCisgICAgICAgICAgICAgICAgICAgICAgICBteSBAcGFyZW50RGlycyA9IEZpbGU6OlNw
ZWMtPnNwbGl0ZGlyKCRwYXJlbnRQYXRoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG15IEBj
aGlsZFBhdGggPSBGaWxlOjpTcGVjLT5zcGxpdGRpcigkcGF0aCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAjIFRoaXMgd29ya3MgYmVjYXVzZSB0aGUgdXBkYXRlZCAkcGFyZW50UGF0aCBjb250
YWlucyBvbmUgb3IgbW9yZSBkaXJlY3RvcmllcworICAgICAgICAgICAgICAgICAgICAgICAgIyB0
aGF0IGRvbid0IG5lZWQgdG8gYmUgaW4gdGhlIGNoaWxkJ3MgcGF0aCBhbnkgbG9uZ2VyLCBzbyB3
ZSBwb3AgdGhlbSBvZmYKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdW50aWwgdGhleSBubyBs
b25nZXIgbWF0Y2guCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG15ICRpID0gJCNwYXJl
bnREaXJzOyAkaSA+PSAwICYmICRwYXJlbnREaXJzWyRpXSBlcSAkY2hpbGRQYXRoWzBdOyAtLSRp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQgQGNoaWxkUGF0aDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG15ICR1cGRhdGVk
UGF0aCA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoQGNoaWxkUGF0aCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBkaWUgIkNvdWxkIG5vdCBjcmVhdGUgbmV3IHBhdGggZm9yICRmaWxlTmFtZSAoJGNo
aWxkSUQpIiBpZiAhIC1lIEZpbGU6OlNwZWMtPmNhdGZpbGUoJHBhcmVudFBhdGgsICR1cGRhdGVk
UGF0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGZpbGVOYW1lIGVxICR1cGRhdGVk
UGF0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlcy0+eyRjaGlsZElEfXtf
dXBkYXRlUGF0aFdpdGhvdXROYW1lfSA9ICR1cGRhdGVkUGF0aDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVzLT57JGNo
aWxkSUR9e191cGRhdGVQYXRoV2l0aE5hbWV9ID0gJHVwZGF0ZWRQYXRoOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDsgIyBUaGlzIHdpbGwg
YmUgdXBkYXRlZCBpbiBtYXBGb2xkZXJzVG9EaXJlY3RvcmllcygpLgorICAgICAgICAgICAgICAg
ICAgICB9IGVsc2lmICgkc291cmNlVHJlZSBlcSAiQlVJTFRfUFJPRFVDVFNfRElSIikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgbmV4dDsgIyBTa2lwIHRoZXNlIGFzIHdlIGNhbid0IGNoZWNr
IGlmIGZpbGVzIGV4aXN0IGluIHRoaXMgZGlyZWN0b3J5IHVudGlsIGFmdGVyIGJ1aWxkaW5nLgor
ICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkc291cmNlVHJlZSBlcSAiREVWRUxPUEVSX0RJ
UiIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7ICMgU2tpcCB0aGVzZSBhcyB0aGV5
IGFyZSB1c3VhbGx5IHN5c3RlbSBmcmFtZXdvcmtzIG9yIHNpbWlsYXIuCisgICAgICAgICAgICAg
ICAgICAgIH0gZWxzaWYgKCRzb3VyY2VUcmVlIGVxICJTREtST09UIikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgbmV4dDsgIyBTa2lwIHRoZXNlIGFzIHRoZXkgYXJlIHVzdWFsbHkgc3lzdGVt
IGZyYW1ld29ya3Mgb3Igc2ltaWxhci4KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHNv
dXJjZVRyZWUgZXEgIjxhYnNvbHV0ZT4iKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0
OyAjIFNraXAgdGhlc2UgYXMgdGhleSBhcmUgdXN1YWxseSBzeXN0ZW0gZnJhbWV3b3JrcyBvciBz
aW1pbGFyLgorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZGllICJVbmV4cGVjdGVkIGNoaWxkIHNvdXJjZVRyZWUgXCIkc291cmNlVHJlZVwiIGZv
ciAkY2hpbGRJRCI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
aWYgKCEgLWUgJGV4cGVjdGVkUGF0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgJGVycm9y
Q291bnQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICJNSVNTSU5HOiAkZXhwZWN0
ZWRQYXRoXG4iOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNp
ZiAoZXhpc3RzICRncm91cHMtPnskY2hpbGRJRH0pIHsKKyAgICAgICAgICAgICAgICAgICAgbXkg
JGdyb3VwTmFtZSA9ICRncm91cHMtPnskY2hpbGRJRH17Z3JvdXBOYW1lfTsKKyAgICAgICAgICAg
ICAgICAgICAgJGVycm9yQ291bnQgKz0gZmluZEdyb3Vwc1RvQ29udmVydFRvRGlyZWN0b3J5KCRj
aGlsZElELCAkcGFyZW50UGF0aCwgJHByb2plY3RQYXRoLCAkcHJvamVjdEZpbGUpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzaWYgKCRncm91
cFNvdXJjZVRyZWUgZXEgIkJVSUxUX1BST0RVQ1RTX0RJUiIpIHsKKyAgICAgICAgIyBTa2lwIHRo
ZXNlIGFzIHdlIGNhbid0IGNoZWNrIGlmIGZpbGVzIGV4aXN0IGluIHRoaXMgZGlyZWN0b3J5IHVu
dGlsIGFmdGVyIGJ1aWxkaW5nLgorICAgIH0gZWxzZSB7CisgICAgICAgIGRpZSAiVW5leHBlY3Rl
ZCBncm91cCBzb3VyY2VUcmVlIFwiJGdyb3VwU291cmNlVHJlZVwiIGZvciAkZ3JvdXBJRCI7Cisg
ICAgfQorCisgICAgcmV0dXJuICRlcnJvckNvdW50OworfQorCitzdWIgbG9hZFhjb2RlUHJvamVj
dEZpbGUoJCkKK3sKKyAgICBteSAoJGZpbGUpID0gQF87CisKKyAgICBpZiAoYmFzZW5hbWUoJGZp
bGUpID1+IC9cLnhjb2RlcHJvaiQvKSB7CisgICAgICAgICRmaWxlID0gRmlsZTo6U3BlYy0+Y2F0
ZmlsZSgkZmlsZSwgInByb2plY3QucGJ4cHJvaiIpOworICAgIH0KKworICAgIGlmIChiYXNlbmFt
ZSgkZmlsZSkgbmUgInByb2plY3QucGJ4cHJvaiIpIHsKKyAgICAgICAgZGllICJGQVRBTDogTm90
IGFuIFhjb2RlIHByb2plY3QgZmlsZTogJGZpbGVcbiI7CisgICAgfQorCisgICAgaWYgKCEgLWYg
JGZpbGUpIHsKKyAgICAgICAgZGllICJGQVRBTDogWGNvZGUgcHJvamVjdCBmaWxlIGRvZXMgbm90
IGV4aXN0OiAkZmlsZVxuIjsKKyAgICB9CisKKyAgICBteSAkcHJvamVjdEZpbGUgPSB7CisgICAg
ICAgIGZpbGUgPT4gJGZpbGUsCisgICAgfTsKKworICAgIHsKKyAgICAgICAgbG9jYWwgJElOUFVU
X1JFQ09SRF9TRVBBUkFUT1I7ICMgVHVybiBvbiBzbHVycCBtb2RlLgorICAgICAgICBvcGVuKElO
LCAiPCIsICRmaWxlKSB8fCBkaWUgIkNvdWxkIG5vdCBvcGVuICRmaWxlOiAkISI7CisgICAgICAg
ICRwcm9qZWN0RmlsZS0+e2NvbnRlbnRzfSA9IDxJTj47CisgICAgICAgIGNsb3NlKElOKTsKKyAg
ICB9CisKKyAgICBwYXJzZVhjb2RlUHJvamVjdEZpbGUoJHByb2plY3RGaWxlKTsKKworICAgIHJl
dHVybiAkcHJvamVjdEZpbGU7Cit9CisKK3N1YiBtYXBGb2xkZXJzVG9EaXJlY3RvcmllcygkJCkK
K3sKKyAgICBteSAoJHByb2plY3RGaWxlLCAkZm9yY2VVcGRhdGUpID0gQF87CisKKyAgICAjIFJl
Y3Vyc2l2ZWx5IGl0ZXJhdGUgdGhyb3VnaCBjaGlsZHJlbiBvZiBtYWluR3JvdXAgdG8gZmluZCBn
cm91cHMgdGhhdCBtYXAgdG8gZGlyZWN0b3JpZXMuCisgICAgbXkgJGVycm9yQ291bnQgPSAwOwor
ICAgIG15ICRtYWluR3JvdXBJRCA9ICRwcm9qZWN0RmlsZS0+e3Byb2plY3R9e21haW5Hcm91cElE
fTsKKyAgICBteSAlY2hpbGRyZW4gPSBwYXJzZUNoaWxkcmVuRnJvbUdyb3VwKCRwcm9qZWN0Rmls
ZS0+e2dyb3Vwc317JG1haW5Hcm91cElEfXt0ZXh0fSk7CisgICAgZm9yIG15ICRjaGlsZElEIChr
ZXlzICVjaGlsZHJlbikgeworICAgICAgICBpZiAoZXhpc3RzICRwcm9qZWN0RmlsZS0+e2dyb3Vw
c317JGNoaWxkSUR9KSB7CisgICAgICAgICAgICBteSAkZ3JvdXBOYW1lID0gJHByb2plY3RGaWxl
LT57Z3JvdXBzfXskY2hpbGRJRH17Z3JvdXBOYW1lfTsKKyAgICAgICAgICAgIG15ICRwcm9qZWN0
RGlyZWN0b3J5ID0gZGlybmFtZShkaXJuYW1lKCRwcm9qZWN0RmlsZS0+e2ZpbGV9KSk7CisgICAg
ICAgICAgICBpZiAoZXhpc3RzICRwcm9qZWN0RmlsZS0+e2dyb3Vwc317JG1haW5Hcm91cElEfXtw
YXRoVmFsdWV9KSB7CisgICAgICAgICAgICAgICAgJHByb2plY3REaXJlY3RvcnkgPSBGaWxlOjpT
cGVjLT5jYXRkaXIoJHByb2plY3REaXJlY3RvcnksICRwcm9qZWN0RmlsZS0+e2dyb3Vwc317JG1h
aW5Hcm91cElEfXtwYXRoVmFsdWV9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRlcnJv
ckNvdW50ICs9IGZpbmRHcm91cHNUb0NvbnZlcnRUb0RpcmVjdG9yeSgkY2hpbGRJRCwgJHByb2pl
Y3REaXJlY3RvcnksICRwcm9qZWN0RGlyZWN0b3J5LCAkcHJvamVjdEZpbGUpOworICAgICAgICB9
CisgICAgfQorCisgICAgZGllICJFUlJPUjogRm91bmQgJGVycm9yQ291bnQgaXNzdWVzIHRoYXQg
bmVlZCB0byBiZSBmaXhlZCBmaXJzdCIgaWYgJGVycm9yQ291bnQgIT0gMCAmJiAhJGZvcmNlVXBk
YXRlOworfQorCitzdWIgcGFyc2VDaGlsZHJlbkZyb21Hcm91cCgkKQoreworICAgIG15ICgkdGV4
dCkgPSBAXzsKKyAgICBteSAlY2hpbGRyZW47CisKKyAgICBteSAkcGFyc2luZ0NoaWxkcmVuID0g
MDsKKyAgICBmb3IgbXkgJGxpbmUgKHNwbGl0KC9eLywgJHRleHQpKSB7CisgICAgICAgIGlmICgk
bGluZSA9fiBtI15ccypjaGlsZHJlbiA9IFwoJCMpIHsKKyAgICAgICAgICAgICRwYXJzaW5nQ2hp
bGRyZW4gPSAxOworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorICAgICAgICBpZiAoJHBh
cnNpbmdDaGlsZHJlbiAmJiAkbGluZSA9fiBtI15ccyooWzAtOUEtRl17MjR9KSAvXCogKC4rKSBc
Ki8sJCMpIHsKKyAgICAgICAgICAgICRjaGlsZHJlbnskMX0gPSAkMjsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoJHBhcnNpbmdDaGlsZHJlbiAmJiAkbGluZSA9fiBtI15ccypcKTskIykgeworICAg
ICAgICAgICAgJHBhcnNpbmdDaGlsZHJlbiA9IDA7CisgICAgICAgICAgICBuZXh0OworICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuICVjaGlsZHJlbjsKK30KKworc3ViIHBhcnNlRmlsZVJl
ZmVyZW5jZSgkKQoreworICAgIG15ICgkbGluZSkgPSBAXzsKKyAgICBteSAkZmlsZUlEOworICAg
IG15ICRmaWxlTmFtZTsKKyAgICBteSAkbmFtZTsKKyAgICBteSAkcGF0aDsKKyAgICBteSAkc291
cmNlVHJlZTsKKworICAgIGlmICgkbGluZSA9fiBtI15ccyooWzAtOUEtRl17MjR9KSAvXCogKC4r
KSBcKi8gPSBceyMpIHsKKyAgICAgICAgJGZpbGVJRCA9ICQxOworICAgICAgICAkZmlsZU5hbWUg
PSAkMjsKKyAgICAgICAgaWYgKCRsaW5lID1+IG0jIG5hbWUgPSAoIj8pXFEkZmlsZU5hbWVcRShc
MSk7ICMpIHsKKyAgICAgICAgICAgICRuYW1lID0gJGZpbGVOYW1lOworICAgICAgICB9CisgICAg
ICAgIGlmICgkbGluZSA9fiBtIyBwYXRoID0gKCI/KSguKlxRJGZpbGVOYW1lXEUpKFwxKTsgIykg
eworICAgICAgICAgICAgJHBhdGggPSAkMjsKKyAgICAgICAgfQorICAgICAgICBpZiAoJGxpbmUg
PX4gbSMgc291cmNlVHJlZSA9ICgiPykoW147XSspKFwxKTsgIykgeworICAgICAgICAgICAgJHNv
dXJjZVRyZWUgPSAkMjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAoJGZpbGVJRCwg
JGZpbGVOYW1lLCAkbmFtZSwgJHBhdGgsICRzb3VyY2VUcmVlKTsKK30KKworc3ViIHBhcnNlWGNv
ZGVQcm9qZWN0RmlsZSgkKQoreworICAgIG15ICgkcHJvamVjdEZpbGUpID0gQF87CisKKyAgICBv
cGVuKElOLCAiPCIsIFwkcHJvamVjdEZpbGUtPntjb250ZW50c30pOworICAgIHdoaWxlIChteSAk
bGluZSA9IDxJTj4pIHsKKyAgICAgICAgaWYgKCRsaW5lIGVxICIvKiBCZWdpbiBQQlhGaWxlUmVm
ZXJlbmNlIHNlY3Rpb24gKi9cbiIpIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAg
ICAkbGluZSA9IDxJTj47CisgICAgICAgICAgICAgICAgbXkgKCRmaWxlSUQsICRmaWxlTmFtZSwg
JG5hbWUsICR1bnVzZWRQYXRoLCAkdW51c2VkU291cmNlVHJlZSkgPSBwYXJzZUZpbGVSZWZlcmVu
Y2UoJGxpbmUpOworICAgICAgICAgICAgICAgICRwcm9qZWN0RmlsZS0+e2ZpbGVzfXskZmlsZUlE
fXt0ZXh0fSA9ICRsaW5lIGlmIGRlZmluZWQgJGZpbGVJRDsKKyAgICAgICAgICAgIH0gdW50aWwg
KCRsaW5lIGVxICIvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovXG4iKTsKKyAgICAg
ICAgfSBlbHNpZiAoJGxpbmUgZXEgIi8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi9cbiIpIHsK
KyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAkbGluZSA9IDxJTj47CisgICAgICAg
ICAgICAgICAgaWYgKCRsaW5lID1+IG0jXihccyspKFswLTktQS1GXXsyNH0pKCAvXCogKC4rKSBc
Ki8pPyA9IFx7XG4kIykgeworICAgICAgICAgICAgICAgICAgICBteSAkZ3JvdXBFbmQgPSAiJDF9
O1xuIjsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGdyb3VwSUQgPSAkMjsKKyAgICAgICAgICAg
ICAgICAgICAgbXkgJGdyb3VwTmFtZSA9ICQ0IHx8ICJfX05PX05BTUVfXyI7CisgICAgICAgICAg
ICAgICAgICAgIG15ICRncm91cFRleHQgPSAkbGluZTsKKyAgICAgICAgICAgICAgICAgICAgbXkg
JG5hbWVWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHBhdGhWYWx1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgbXkgJHNvdXJjZVRyZWU7CisgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICRsaW5lID0gPElOPjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICRuYW1lVmFsdWUgPSAkMiBpZiAkbGluZSA9fiBtI15ccypuYW1lID0gKCI/KSguKikoXDEp
OyQjOworICAgICAgICAgICAgICAgICAgICAgICAgJHBhdGhWYWx1ZSA9ICQyIGlmICRsaW5lID1+
IG0jXlxzKnBhdGggPSAoIj8pKC4qKShcMSk7JCM7CisgICAgICAgICAgICAgICAgICAgICAgICAk
c291cmNlVHJlZSA9ICQyIGlmICRsaW5lID1+IG0jXlxzKnNvdXJjZVRyZWUgPSAoIj8pKC4qKShc
MSk7IzsKKyAgICAgICAgICAgICAgICAgICAgICAgICRncm91cFRleHQgLj0gJGxpbmU7CisgICAg
ICAgICAgICAgICAgICAgIH0gdW50aWwgKCRsaW5lIGVxICRncm91cEVuZCk7CisgICAgICAgICAg
ICAgICAgICAgICRwcm9qZWN0RmlsZS0+e2dyb3Vwc317JGdyb3VwSUR9ID0gK3sKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGdyb3VwTmFtZSA9PiAkZ3JvdXBOYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgc291cmNlVHJlZSA9PiAkc291cmNlVHJlZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRleHQgPT4gJGdyb3VwVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICAgICAgJHByb2plY3RGaWxlLT57Z3JvdXBzfXskZ3JvdXBJRH17bmFtZVZhbHVlfSA9
ICRuYW1lVmFsdWUgaWYgZGVmaW5lZCAkbmFtZVZhbHVlOworICAgICAgICAgICAgICAgICAgICAk
cHJvamVjdEZpbGUtPntncm91cHN9eyRncm91cElEfXtwYXRoVmFsdWV9ID0gJHBhdGhWYWx1ZSBp
ZiBkZWZpbmVkICRwYXRoVmFsdWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSB1
bnRpbCAoJGxpbmUgZXEgIi8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovXG4iKTsKKyAgICAgICAg
fSBlbHNpZiAoJGxpbmUgZXEgIi8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqL1xuIikgewor
ICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICRsaW5lID0gPElOPjsKKyAgICAgICAg
ICAgICAgICAkcHJvamVjdEZpbGUtPntwcm9qZWN0fXttYWluR3JvdXBJRH0gPSAkMiBpZiAkbGlu
ZSA9fiBtI14oXHMqKW1haW5Hcm91cCA9IChbMC05QS1GXXsyNH0pKCAvXCogLisgXCovKT87JCM7
CisgICAgICAgICAgICAgICAgJHByb2plY3RGaWxlLT57cHJvamVjdH17cHJvamVjdERpclBhdGh9
ID0gJDIgaWYgJGxpbmUgPX4gbSNeKFxzKilwcm9qZWN0RGlyUGF0aCA9ICIoW14iXSopIjskIzsK
KyAgICAgICAgICAgICAgICAkcHJvamVjdEZpbGUtPntwcm9qZWN0fXtwcm9qZWN0Um9vdH0gPSAk
MiBpZiAkbGluZSA9fiBtI14oXHMqKXByb2plY3RSb290ID0gIihbXiJdKikiOyQjOworICAgICAg
ICAgICAgfSB1bnRpbCAoJGxpbmUgZXEgIi8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi9cbiIp
OworICAgICAgICB9CisgICAgfQorICAgIGNsb3NlKElOKTsKK30KKworc3ViIHNhdmVYY29kZVBy
b2plY3RGaWxlKCQpCit7CisgICAgbXkgKCRwcm9qZWN0RmlsZSkgPSBAXzsKKworICAgIG15ICgk
T1VULCAkdGVtcEZpbGVOYW1lKSA9IHRlbXBmaWxlKAorICAgICAgICBiYXNlbmFtZSgkcHJvamVj
dEZpbGUtPntmaWxlfSkgLiAiLVhYWFhYWFhYIiwKKyAgICAgICAgRElSID0+IGRpcm5hbWUoJHBy
b2plY3RGaWxlLT57ZmlsZX0pLAorICAgICAgICBVTkxJTksgPT4gMCwKKyAgICApOworCisgICAg
IyBDbGVhbiB1cCB0ZW1wIGZpbGUgaW4gY2FzZSBvZiBkaWUoKQorICAgICRTSUd7X19ESUVfX30g
PSBzdWIgeworICAgICAgICBjbG9zZShJTik7CisgICAgICAgIGNsb3NlKCRPVVQpOworICAgICAg
ICB1bmxpbmsoJHRlbXBGaWxlTmFtZSk7CisgICAgfTsKKworICAgIHByaW50ICRPVVQgJHByb2pl
Y3RGaWxlLT57Y29udGVudHN9OworICAgIGNsb3NlKCRPVVQpOworCisgICAgdW5saW5rKCRwcm9q
ZWN0RmlsZS0+e2ZpbGV9KSB8fCBkaWUgIkNvdWxkIG5vdCBkZWxldGUgJHByb2plY3RGaWxlLT57
ZmlsZX06ICQhIjsKKyAgICByZW5hbWUoJHRlbXBGaWxlTmFtZSwgJHByb2plY3RGaWxlLT57Zmls
ZX0pIHx8IGRpZSAiQ291bGQgbm90IHJlbmFtZSAkdGVtcEZpbGVOYW1lIHRvICRwcm9qZWN0Rmls
ZS0+e2ZpbGV9OiAkISI7Cit9CisKK3N1YiB1cGRhdGVGb2xkZXJzVG9EaXJlY3RvcmllcygkKQor
eworICAgIG15ICgkcHJvamVjdEZpbGUpID0gQF87CisKKyAgICBvcGVuKElOLCAiPCIsIFwkcHJv
amVjdEZpbGUtPntjb250ZW50c30pOworICAgIG15ICR1cGRhdGVkQ29udGVudHMgPSAiIjsKKyAg
ICBvcGVuKE9VVCwgIj4iLCBcJHVwZGF0ZWRDb250ZW50cyk7CisgICAgd2hpbGUgKG15ICRsaW5l
ID0gPElOPikgeworICAgICAgICBpZiAoJGxpbmUgZXEgIi8qIEJlZ2luIFBCWEZpbGVSZWZlcmVu
Y2Ugc2VjdGlvbiAqL1xuIikgeworICAgICAgICAgICAgcHJpbnQgT1VUICRsaW5lOworICAgICAg
ICAgICAgZG8geworICAgICAgICAgICAgICAgICRsaW5lID0gPElOPjsKKyAgICAgICAgICAgICAg
ICBteSAoJGZpbGVJRCwgJGZpbGVOYW1lLCAkbmFtZSwgJHBhdGgsICR1bnVzZWRTb3VyY2VUcmVl
KSA9IHBhcnNlRmlsZVJlZmVyZW5jZSgkbGluZSk7CisgICAgICAgICAgICAgICAgaWYgKGRlZmlu
ZWQgJGZpbGVJRCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RzICRwcm9qZWN0Rmls
ZS0+e2ZpbGVzfXskZmlsZUlEfXtfdXBkYXRlUGF0aFdpdGhvdXROYW1lfSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgJGxpbmUgPX4gcyMgbmFtZSA9ICgiPylcUSRmaWxlTmFtZVxFKFwxKTsg
IyAjIGlmIGRlZmluZWQgJG5hbWU7CisgICAgICAgICAgICAgICAgICAgICAgICAkbGluZSA9fiBz
IyBwYXRoID0gKCI/KS4qL1xRJGZpbGVOYW1lXEUoXDEpOyAjIHBhdGggPSAkMSRmaWxlTmFtZSQx
OyAjOworICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmUgPX4gcyMgc291cmNlVHJlZSA9ICgi
PykuKihcMSk7ICMgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgIzsKKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNpZiAoZXhpc3RzICRwcm9qZWN0RmlsZS0+e2ZpbGVzfXskZmlsZUlEfXtfdXBkYXRl
UGF0aFdpdGhOYW1lfSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmUgPX4gcyMgbmFt
ZSA9ICgiPylcUSRmaWxlTmFtZVxFKFwxKTsgIyAjIGlmIGRlZmluZWQgJG5hbWU7CisgICAgICAg
ICAgICAgICAgICAgICAgICBteSAkdXBkYXRlZFBhdGggPSAkcHJvamVjdEZpbGUtPntmaWxlc317
JGZpbGVJRH17X3VwZGF0ZVBhdGhXaXRoTmFtZX07CisgICAgICAgICAgICAgICAgICAgICAgICAk
bGluZSA9fiBzIyBwYXRoID0gKCI/KS4qL1xRJGZpbGVOYW1lXEUoXDEpOyAjIHBhdGggPSAkMSR1
cGRhdGVkUGF0aCQxOyAjOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIHByaW50IE9VVCAkbGluZTsKKyAgICAgICAgICAgIH0gdW50aWwg
KCRsaW5lIGVxICIvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovXG4iKTsKKyAgICAg
ICAgfSBlbHNpZiAoJGxpbmUgZXEgIi8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi9cbiIpIHsK
KyAgICAgICAgICAgIHByaW50IE9VVCAkbGluZTsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAg
ICAgICAgICAkbGluZSA9IDxJTj47CisgICAgICAgICAgICAgICAgaWYgKCRsaW5lID1+IG0jXihc
cyspKFswLTktQS1GXXsyNH0pKCAvXCogKC4rKSBcKi8pPyA9IFx7XG4kIykgeworICAgICAgICAg
ICAgICAgICAgICBteSAkZ3JvdXBFbmQgPSAiJDF9O1xuIjsKKyAgICAgICAgICAgICAgICAgICAg
bXkgJGdyb3VwSUQgPSAkMjsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGdyb3VwTmFtZSA9ICQ0
IHx8ICJfX05PX05BTUVfXyI7CisgICAgICAgICAgICAgICAgICAgIG15ICRncm91cFRleHQgPSAk
bGluZTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHNob3VsZEZpeFBhdGggPSBleGlzdHMgJHBy
b2plY3RGaWxlLT57Z3JvdXBzfXskZ3JvdXBJRH17X3VwZGF0ZUdyb3VwUGF0aH07CisgICAgICAg
ICAgICAgICAgICAgIG15ICRjb252ZXJ0ZWROYW1lVG9QYXRoID0gMDsKKyAgICAgICAgICAgICAg
ICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmUgPSA8SU4+OworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCRzaG91bGRGaXhQYXRoKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCRsaW5lID1+IHMjXihccyopbmFtZSA9ICMkMXBhdGggPSAjKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb252ZXJ0ZWROYW1lVG9QYXRoID0gMTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkY29udmVydGVkTmFtZVRvUGF0
aCAmJiAkbGluZSA9fiBtI15ccypwYXRoID0gIykgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkbGluZSA9ICIiOyAjIE9taXQgbGluZSBmcm9tIG91dHB1dC4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcHJvamVjdEZpbGUtPntncm91cHN9eyRncm91cElE
fXtzb3VyY2VUcmVlfSBuZSAiPGdyb3VwPiIgJiYgJGxpbmUgPX4gbSNeKFxzKilzb3VyY2VUcmVl
ID0gIykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGluZSA9fiBzI14oXHMq
KXNvdXJjZVRyZWUgPSAuKjskIyQxc291cmNlVHJlZSA9ICI8Z3JvdXA+Ilw7IzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAkZ3JvdXBUZXh0IC49ICRsaW5lOworICAgICAgICAgICAgICAgICAg
ICB9IHVudGlsICgkbGluZSBlcSAkZ3JvdXBFbmQpOworICAgICAgICAgICAgICAgICAgICBwcmlu
dCBPVVQgJGdyb3VwVGV4dDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICBwcmludCBPVVQgJGxpbmU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSB1bnRpbCAoJGxpbmUgZXEgIi8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovXG4iKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHByaW50IE9VVCAkbGluZTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBjbG9zZShJTik7CisgICAgY2xvc2UoT1VUKTsKKworICAgICRwcm9qZWN0RmlsZS0+
e2NvbnRlbnRzfSA9ICR1cGRhdGVkQ29udGVudHM7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvdGlkeS1YY29kZS1wcm9qZWN0LWZpbGVfdW5pdHRlc3QvcGFyc2VDaGls
ZHJlbkZyb21Hcm91cC5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC90aWR5LVhjb2RlLXBy
b2plY3QtZmlsZV91bml0dGVzdC9wYXJzZUNoaWxkcmVuRnJvbUdyb3VwLnBsCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmRiYmUzMmU1NjRkCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3RpZHktWGNvZGUtcHJvamVjdC1maWxlX3Vu
aXR0ZXN0L3BhcnNlQ2hpbGRyZW5Gcm9tR3JvdXAucGwKQEAgLTAsMCArMSwxNTEgQEAKKyMhL3Vz
ci9iaW4vZW52IHBlcmwKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFRlc3Q6Ok1vcmU7Cit1c2UgRmlu
ZEJpbjsKK3VzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIuLiIpOwor
dXNlIExvYWRBc01vZHVsZSBxdyhUaWR5WGNvZGVQcm9qZWN0RmlsZSB0aWR5LVhjb2RlLXByb2pl
Y3QtZmlsZSk7CisKK215IEB0ZXN0Q2FzZUhhc2hSZWZzID0gKAorCit7CisgICAgdGVzdE5hbWUg
PT4gIldlYkNvcmUgbWFpbkdyb3VwIiwKKyAgICBncm91cFRleHQgPT4gPDwnRU5EJywKKwkJMDg2
N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYkNvcmUgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTI4OEU4MkYwMjAzNUQ0RUQwMEIwRENGRiAvKiBTZXJ2
ZXJUaW1pbmdQYXJzZXIuaCAqLywKKwkJCQkyODhFODJFRTIwMzVEMkJFMDBCMERDRkYgLyogU2Vy
dmVyVGltaW5nUGFyc2VyLmNwcCAqLywKKwkJCQkxQzA5RDA0QjFFMzFDMzI4MDA3MjVGMTggLyog
UEFMLnhjb2RlcHJvaiAqLywKKwkJCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmln
LmggKi8sCisJCQkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCAq
LywKKwkJCQk1MzBBNjM0NjFGQTNFMzNEMDAyNkE1NDUgLyogU291cmNlcy50eHQgKi8sCisJCQkJ
NTMwQTYzNDIxRkEzRTMzQjAwMjZBNTQ1IC8qIFNvdXJjZXNDb2NvYS50eHQgKi8sCisJCQkJOTMw
NzA2MTMwOUUwQ0E4MjAwQjE3RkU0IC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8sCisJCQkJOTNG
MTlCMTkwODI0NUU1OTAwMUU5QUJDIC8qIEluZm8ucGxpc3QgKi8sCisJCQkJOTcxMTQ1RkUxNEVG
MDA2RTAwNjc0RkQ5IC8qIE1vZHVsZXMgKi8sCisJCQkJMjlBODEyMDQwRkJCOUI0MTAwNTEwMjkz
IC8qIGFjY2Vzc2liaWxpdHkgKi8sCisJCQkJNzEwMjVFQzExRjk5RjA5NjAwNEEyNTBDIC8qIGFu
aW1hdGlvbiAqLywKKwkJCQlCQzFBMzc5MDA5N0M2Rjk3MDAxOUYzRDggLyogYmluZGluZ3MgKi8s
CisJCQkJMUE1NjlDQzQwRDdFMkI2MDAwN0MzOTgzIC8qIGJyaWRnZSAqLywKKwkJCQkyNkYwQzg5
MDFBMkQ3OUNCMDAyNzk0RjggLyogY29udGVudGV4dGVuc2lvbnMgKi8sCisJCQkJRTFGRjhGNUIx
ODA3MzYyQjAwMTMyNjc0IC8qIGNyeXB0byAqLywKKwkJCQlGNTIzRDE4NDAyREU0MkU4MDE4NjM1
Q0EgLyogY3NzICovLAorCQkJCTI2Qjk5OThEMTgwM0FERkEwMEQwMTEyMSAvKiBjc3NqaXQgKi8s
CisJCQkJRjUyM0QzMjQwMkRFNDQ3ODAxODYzNUNBIC8qIGRvbSAqLywKKwkJCQlFM0FGQTk2MzFE
QTZFOEFGMDAyODYxQkQgLyogZG9taml0ICovLAorCQkJCTkzMzA5RDg2MDk5RTY0OTEwMDU2RTU4
MSAvKiBlZGl0aW5nICovLAorCQkJCTk3NkQ2QzU3MTIyQjhBMTgwMDFGRDFGNyAvKiBmaWxlYXBp
ICovLAorCQkJCTUxNzQxRDA4MEIwNzI1NzAwMEVENDQyQyAvKiBoaXN0b3J5ICovLAorCQkJCTkz
RUVDMUVDMDlDMjg3NzcwMEM1MTVEMSAvKiBodG1sICovLAorCQkJCTFDODFCOTREMEU5NzMyRDkw
MDI2NkUwNyAvKiBpbnNwZWN0b3IgKi8sCisJCQkJMTE1Q0ZBNjYyMDhBRjcyMDAwMUU2OTkxIC8q
IGxheW91dCAqLywKKwkJCQlCQ0IxNkJGQjA5NzlDMzg3MDA0Njc3NDEgLyogbG9hZGVyICovLAor
CQkJCUZBQkU3MkVDMTA1OUMxRUIwMEQ5OTlERCAvKiBtYXRobWwgKi8sCisJCQkJNjVCRjAyMTgw
OTc0ODA2MzAwQzQzMTk2IC8qIHBhZ2UgKi8sCisJCQkJQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIz
IC8qIHBsYXRmb3JtICovLAorCQkJCTVEQ0Y4MzY5MEQ1OTE1NzgwMDk1M0JDNiAvKiBwbHVnaW5z
ICovLAorCQkJCUY1MjNEMkYzMDJERTQ0M0IwMTg2MzVDQSAvKiByZW5kZXJpbmcgKi8sCisJCQkJ
OTlFNDVBMTMxOEEwMjE3NjAwMjZEODhGIC8qIHJlcGxheSAqLywKKwkJCQkxQUU4MkVDOTBDQUFF
MTc3MDAyMjM3QUUgLyogc3RvcmFnZSAqLywKKwkJCQlFNDc2M0Q0QTE3QjI3MDQ5MDBEMzUyMDYg
Lyogc3R5bGUgKi8sCisJCQkJQjIyMjc3Q0EwRDAwQkYxRTAwNzFCNzgyIC8qIHN2ZyAqLywKKwkJ
CQk0MTdEQTRDRDEzNzM0MjA0MDA3QzU3RkIgLyogdGVzdGluZyAqLywKKwkJCQkyRTQzNDYzMTBG
NTQ2QTY4MDBCMEYxQkEgLyogd29ya2VycyAqLywKKwkJCQlFMUYwNDI0MzA5ODM5Mzg5MDA2Njk0
RUEgLyogeG1sICovLAorCQkJCTY1NjU4MEVDMDlEMTJCMjAwMDBFNjFENyAvKiBEZXJpdmVkIFNv
dXJjZXMgKi8sCisJCQkJMDg5QzE2NjVGRTg0MTE1OEMwMkFBQzA3IC8qIFJlc291cmNlcyAqLywK
KwkJCQkzNzE3RDdFNDE3RUNDMzZDMDAzQzI3NkQgLyogU2NyaXB0cyAqLywKKwkJCQkwODY3RDY5
QUZFODQwMjhGQzAyQUFDMDcgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkwMzQ3NjhERkZGMzhBNTA0
MTFEQjlDOEIgLyogUHJvZHVjdHMgKi8sCisJCQkJMUNERDQ0NjYwQkE5QzgwMDAwRjkwMTQ3IC8q
IENvbmZpZ3VyYXRpb25zICovLAorCQkJKTsKKwkJCW5hbWUgPSBXZWJDb3JlOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKK0VORAorICAgIGV4cGVjdGVkUmVzdWx0cyA9PiB7Cisg
ICAgICAgICcyODhFODJGMDIwMzVENEVEMDBCMERDRkYnID0+ICdTZXJ2ZXJUaW1pbmdQYXJzZXIu
aCcsCisgICAgICAgICcyODhFODJFRTIwMzVEMkJFMDBCMERDRkYnID0+ICdTZXJ2ZXJUaW1pbmdQ
YXJzZXIuY3BwJywKKyAgICAgICAgJzFDMDlEMDRCMUUzMUMzMjgwMDcyNUYxOCcgPT4gJ1BBTC54
Y29kZXByb2onLAorICAgICAgICAnNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczJyA9PiAnY29uZmln
LmgnLAorICAgICAgICAnRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGJyA9PiAnV2ViQ29yZVByZWZp
eC5oJywKKyAgICAgICAgJzUzMEE2MzQ2MUZBM0UzM0QwMDI2QTU0NScgPT4gJ1NvdXJjZXMudHh0
JywKKyAgICAgICAgJzUzMEE2MzQyMUZBM0UzM0IwMDI2QTU0NScgPT4gJ1NvdXJjZXNDb2NvYS50
eHQnLAorICAgICAgICAnOTMwNzA2MTMwOUUwQ0E4MjAwQjE3RkU0JyA9PiAnRGVyaXZlZFNvdXJj
ZXMubWFrZScsCisgICAgICAgICc5M0YxOUIxOTA4MjQ1RTU5MDAxRTlBQkMnID0+ICdJbmZvLnBs
aXN0JywKKyAgICAgICAgJzk3MTE0NUZFMTRFRjAwNkUwMDY3NEZEOScgPT4gJ01vZHVsZXMnLAor
ICAgICAgICAnMjlBODEyMDQwRkJCOUI0MTAwNTEwMjkzJyA9PiAnYWNjZXNzaWJpbGl0eScsCisg
ICAgICAgICc3MTAyNUVDMTFGOTlGMDk2MDA0QTI1MEMnID0+ICdhbmltYXRpb24nLAorICAgICAg
ICAnQkMxQTM3OTAwOTdDNkY5NzAwMTlGM0Q4JyA9PiAnYmluZGluZ3MnLAorICAgICAgICAnMUE1
NjlDQzQwRDdFMkI2MDAwN0MzOTgzJyA9PiAnYnJpZGdlJywKKyAgICAgICAgJzI2RjBDODkwMUEy
RDc5Q0IwMDI3OTRGOCcgPT4gJ2NvbnRlbnRleHRlbnNpb25zJywKKyAgICAgICAgJ0UxRkY4RjVC
MTgwNzM2MkIwMDEzMjY3NCcgPT4gJ2NyeXB0bycsCisgICAgICAgICdGNTIzRDE4NDAyREU0MkU4
MDE4NjM1Q0EnID0+ICdjc3MnLAorICAgICAgICAnMjZCOTk5OEQxODAzQURGQTAwRDAxMTIxJyA9
PiAnY3Nzaml0JywKKyAgICAgICAgJ0Y1MjNEMzI0MDJERTQ0NzgwMTg2MzVDQScgPT4gJ2RvbScs
CisgICAgICAgICdFM0FGQTk2MzFEQTZFOEFGMDAyODYxQkQnID0+ICdkb21qaXQnLAorICAgICAg
ICAnOTMzMDlEODYwOTlFNjQ5MTAwNTZFNTgxJyA9PiAnZWRpdGluZycsCisgICAgICAgICc5NzZE
NkM1NzEyMkI4QTE4MDAxRkQxRjcnID0+ICdmaWxlYXBpJywKKyAgICAgICAgJzUxNzQxRDA4MEIw
NzI1NzAwMEVENDQyQycgPT4gJ2hpc3RvcnknLAorICAgICAgICAnOTNFRUMxRUMwOUMyODc3NzAw
QzUxNUQxJyA9PiAnaHRtbCcsCisgICAgICAgICcxQzgxQjk0RDBFOTczMkQ5MDAyNjZFMDcnID0+
ICdpbnNwZWN0b3InLAorICAgICAgICAnMTE1Q0ZBNjYyMDhBRjcyMDAwMUU2OTkxJyA9PiAnbGF5
b3V0JywKKyAgICAgICAgJ0JDQjE2QkZCMDk3OUMzODcwMDQ2Nzc0MScgPT4gJ2xvYWRlcicsCisg
ICAgICAgICdGQUJFNzJFQzEwNTlDMUVCMDBEOTk5REQnID0+ICdtYXRobWwnLAorICAgICAgICAn
NjVCRjAyMTgwOTc0ODA2MzAwQzQzMTk2JyA9PiAncGFnZScsCisgICAgICAgICdCQ0YxQTVCQTA5
NzgzMjA5MDA2MUExMjMnID0+ICdwbGF0Zm9ybScsCisgICAgICAgICc1RENGODM2OTBENTkxNTc4
MDA5NTNCQzYnID0+ICdwbHVnaW5zJywKKyAgICAgICAgJ0Y1MjNEMkYzMDJERTQ0M0IwMTg2MzVD
QScgPT4gJ3JlbmRlcmluZycsCisgICAgICAgICc5OUU0NUExMzE4QTAyMTc2MDAyNkQ4OEYnID0+
ICdyZXBsYXknLAorICAgICAgICAnMUFFODJFQzkwQ0FBRTE3NzAwMjIzN0FFJyA9PiAnc3RvcmFn
ZScsCisgICAgICAgICdFNDc2M0Q0QTE3QjI3MDQ5MDBEMzUyMDYnID0+ICdzdHlsZScsCisgICAg
ICAgICdCMjIyNzdDQTBEMDBCRjFFMDA3MUI3ODInID0+ICdzdmcnLAorICAgICAgICAnNDE3REE0
Q0QxMzczNDIwNDAwN0M1N0ZCJyA9PiAndGVzdGluZycsCisgICAgICAgICcyRTQzNDYzMTBGNTQ2
QTY4MDBCMEYxQkEnID0+ICd3b3JrZXJzJywKKyAgICAgICAgJ0UxRjA0MjQzMDk4MzkzODkwMDY2
OTRFQScgPT4gJ3htbCcsCisgICAgICAgICc2NTY1ODBFQzA5RDEyQjIwMDAwRTYxRDcnID0+ICdE
ZXJpdmVkIFNvdXJjZXMnLAorICAgICAgICAnMDg5QzE2NjVGRTg0MTE1OEMwMkFBQzA3JyA9PiAn
UmVzb3VyY2VzJywKKyAgICAgICAgJzM3MTdEN0U0MTdFQ0MzNkMwMDNDMjc2RCcgPT4gJ1Njcmlw
dHMnLAorICAgICAgICAnMDg2N0Q2OUFGRTg0MDI4RkMwMkFBQzA3JyA9PiAnRnJhbWV3b3Jrcycs
CisgICAgICAgICcwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEInID0+ICdQcm9kdWN0cycsCisgICAg
ICAgICcxQ0RENDQ2NjBCQTlDODAwMDBGOTAxNDcnID0+ICdDb25maWd1cmF0aW9ucycsCisgICAg
fSwKK30sCisKKyk7CisKK215ICR0ZXN0Q2FzZXNDb3VudCA9IHNjYWxhciBAdGVzdENhc2VIYXNo
UmVmczsKK3BsYW4odGVzdHMgPT4gMSAqICR0ZXN0Q2FzZXNDb3VudCk7ICMgVG90YWwgbnVtYmVy
IG9mIGFzc2VydGlvbnMuCisKK2ZvcmVhY2ggbXkgJHRlc3RDYXNlIChAdGVzdENhc2VIYXNoUmVm
cykgeworICAgIG15ICRleHBlY3RlZFJlc3VsdHMgPSAkdGVzdENhc2UtPntleHBlY3RlZFJlc3Vs
dHN9OworCisgICAgbXkgJHRlc3ROYW1lU3RhcnQgPSAicGFyc2VDaGlsZHJlbkZyb21Hcm91cCgp
OiAkdGVzdENhc2UtPnt0ZXN0TmFtZX0iOworICAgIG15ICVhY3R1YWxSZXN1bHRzID0gVGlkeVhj
b2RlUHJvamVjdEZpbGU6OnBhcnNlQ2hpbGRyZW5Gcm9tR3JvdXAoJHRlc3RDYXNlLT57Z3JvdXBU
ZXh0fSk7CisgICAgaXNfZGVlcGx5KFwlYWN0dWFsUmVzdWx0cywgJGV4cGVjdGVkUmVzdWx0cywg
JHRlc3ROYW1lU3RhcnQpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L3RpZHktWGNvZGUtcHJvamVjdC1maWxlX3VuaXR0ZXN0L3BhcnNlRmlsZVJlZmVyZW5jZS5wbCBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC90aWR5LVhjb2RlLXByb2plY3QtZmlsZV91bml0dGVz
dC9wYXJzZUZpbGVSZWZlcmVuY2UucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5jMzhkYTlkZjQ5YWMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvdGlkeS1YY29kZS1wcm9qZWN0LWZpbGVfdW5pdHRlc3QvcGFyc2VGaWxlUmVmZXJl
bmNlLnBsCkBAIC0wLDAgKzEsMTMwIEBACisjIS91c3IvYmluL2VudiBwZXJsCisjCisjIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2Fybmlu
Z3M7CisKK3VzZSBUZXN0OjpNb3JlOwordXNlIEZpbmRCaW47Cit1c2UgbGliIEZpbGU6OlNwZWMt
PmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iKTsKK3VzZSBMb2FkQXNNb2R1bGUgcXcoVGlkeVhj
b2RlUHJvamVjdEZpbGUgdGlkeS1YY29kZS1wcm9qZWN0LWZpbGUpOworCitteSBAdGVzdENhc2VI
YXNoUmVmcyA9ICgKKworeworICAgIHRlc3ROYW1lID0+ICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtLmgiLAorICAgIGZpbGVUZXh0ID0+IDw8J0VORCcsCisJCTA3RDZBNEY2MUJGMjMwN0Qw
MDE3NDE0NiAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaDsgcGF0aCA9
IHBsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaDsgc291
cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworRU5ECisgICAgZXhwZWN0ZWRSZXN1bHRzID0+ICtb
CisgICAgICAgICcwN0Q2QTRGNjFCRjIzMDdEMDAxNzQxNDYnLAorICAgICAgICAnQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbS5oJywKKyAgICAgICAgJ0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW0uaCcsCisgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtLmgnLAorICAgICAgICAnU09VUkNFX1JPT1QnLAorICAgIF0sCit9LAorCit7
CisgICAgdGVzdE5hbWUgPT4gIklETFBhcnNlci5wbSIsCisgICAgZmlsZVRleHQgPT4gPDwnRU5E
JywKKwkJMTQ4MTNCRjMwOUVERjg4RTAwRjc1N0UxIC8qIElETFBhcnNlci5wbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBJRExQYXJzZXIucG07IHBhdGggPSBzY3JpcHRzL0lE
TFBhcnNlci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKK0VORAorICAgIGV4cGVjdGVk
UmVzdWx0cyA9PiArWworICAgICAgICAnMTQ4MTNCRjMwOUVERjg4RTAwRjc1N0UxJywKKyAgICAg
ICAgJ0lETFBhcnNlci5wbScsCisgICAgICAgICdJRExQYXJzZXIucG0nLAorICAgICAgICAnc2Ny
aXB0cy9JRExQYXJzZXIucG0nLAorICAgICAgICAnPGdyb3VwPicsCisgICAgXSwKK30sCisKK3sK
KyAgICB0ZXN0TmFtZSA9PiAiZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsIiwKKyAgICBm
aWxlVGV4dCA9PiA8PCdFTkQnLAorCQkzNzE3RDdFNTE3RUNDM0E2MDAzQzI3NkQgLyogZXh0cmFj
dC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IGV4dHJhY3QtbG9jYWxp
emFibGUtc3RyaW5ncy5wbDsgcGF0aCA9ICJTY3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3Ry
aW5ncy5wbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CitFTkQKKyAgICBleHBlY3RlZFJl
c3VsdHMgPT4gK1sKKyAgICAgICAgJzM3MTdEN0U1MTdFQ0MzQTYwMDNDMjc2RCcsCisgICAgICAg
ICdleHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwnLAorICAgICAgICAnZXh0cmFjdC1sb2Nh
bGl6YWJsZS1zdHJpbmdzLnBsJywKKyAgICAgICAgJ1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJs
ZS1zdHJpbmdzLnBsJywKKyAgICAgICAgJzxncm91cD4nLAorICAgIF0sCit9LAorCit7CisgICAg
dGVzdE5hbWUgPT4gImdlbmVyYXRlLWJpbmRpbmdzLnBsIiwKKyAgICBmaWxlVGV4dCA9PiA8PCdF
TkQnLAorCQk5M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjggLyogZ2VuZXJhdGUtYmluZGluZ3MucGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gImdlbmVyYXRlLWJpbmRpbmdzLnBs
IjsgcGF0aCA9ICJzY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKK0VORAorICAgIGV4cGVjdGVkUmVzdWx0cyA9PiArWworICAgICAgICAnOTNG
OEIzMDcwQTMwMEZFQTAwRjYxQUI4JywKKyAgICAgICAgJ2dlbmVyYXRlLWJpbmRpbmdzLnBsJywK
KyAgICAgICAgJ2dlbmVyYXRlLWJpbmRpbmdzLnBsJywKKyAgICAgICAgJ3NjcmlwdHMvZ2VuZXJh
dGUtYmluZGluZ3MucGwnLAorICAgICAgICAnPGdyb3VwPicsCisgICAgXSwKK30sCisKK3sKKyAg
ICB0ZXN0TmFtZSA9PiAiUmFkaW9CdXR0b25Hcm91cHMuaCIsCisgICAgZmlsZVRleHQgPT4gPDwn
RU5EJywKKwkJOTNGOTI1NDEwRjdFRjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhZGlvQnV0dG9uR3JvdXBzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CitFTkQKKyAgICBleHBlY3RlZFJlc3VsdHMgPT4gK1sK
KyAgICAgICAgJzkzRjkyNTQxMEY3RUY1QjgwMDdFMzdDOScsCisgICAgICAgICdSYWRpb0J1dHRv
bkdyb3Vwcy5oJywKKyAgICAgICAgdW5kZWYsCisgICAgICAgICdSYWRpb0J1dHRvbkdyb3Vwcy5o
JywKKyAgICAgICAgJzxncm91cD4nLAorICAgIF0sCit9LAorCit7CisgICAgdGVzdE5hbWUgPT4g
IkluZm8ucGxpc3QiLAorICAgIGZpbGVUZXh0ID0+IDw8J0VORCcsCisJCTkzOTgxMTMyMDgyNEJG
MDEwMDhERjAzOCAvKiBJbmZvLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgbmFtZSA9
IEluZm8ucGxpc3Q7IHBhdGggPSBtYWMvSW5mby5wbGlzdDsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMTsgfTsKK0VORAorICAgIGV4cGVjdGVkUmVz
dWx0cyA9PiArWworICAgICAgICAnOTM5ODExMzIwODI0QkYwMTAwOERGMDM4JywKKyAgICAgICAg
J0luZm8ucGxpc3QnLAorICAgICAgICAnSW5mby5wbGlzdCcsCisgICAgICAgICdtYWMvSW5mby5w
bGlzdCcsCisgICAgICAgICdTT1VSQ0VfUk9PVCcsCisgICAgXSwKK30sCisKKyk7CisKK215ICR0
ZXN0Q2FzZXNDb3VudCA9IHNjYWxhciBAdGVzdENhc2VIYXNoUmVmczsKK3BsYW4odGVzdHMgPT4g
MSAqICR0ZXN0Q2FzZXNDb3VudCk7ICMgVG90YWwgbnVtYmVyIG9mIGFzc2VydGlvbnMuCisKK2Zv
cmVhY2ggbXkgJHRlc3RDYXNlIChAdGVzdENhc2VIYXNoUmVmcykgeworICAgIG15ICRleHBlY3Rl
ZFJlc3VsdHMgPSAkdGVzdENhc2UtPntleHBlY3RlZFJlc3VsdHN9OworCisgICAgbXkgJHRlc3RO
YW1lU3RhcnQgPSAicGFyc2VGaWxlUmVmZXJlbmNlKCk6ICR0ZXN0Q2FzZS0+e3Rlc3ROYW1lfSI7
CisgICAgbXkgQGFjdHVhbFJlc3VsdHMgPSBUaWR5WGNvZGVQcm9qZWN0RmlsZTo6cGFyc2VGaWxl
UmVmZXJlbmNlKCR0ZXN0Q2FzZS0+e2ZpbGVUZXh0fSk7CisgICAgaXNfZGVlcGx5KFxAYWN0dWFs
UmVzdWx0cywgJGV4cGVjdGVkUmVzdWx0cywgJHRlc3ROYW1lU3RhcnQpOworfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3RpZHktWGNvZGUtcHJvamVjdC1maWxlX3VuaXR0
ZXN0L3BhcnNlWGNvZGVQcm9qZWN0RmlsZS5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC90
aWR5LVhjb2RlLXByb2plY3QtZmlsZV91bml0dGVzdC9wYXJzZVhjb2RlUHJvamVjdEZpbGUucGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lODc2ZmVkNTI2NjAKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvdGlkeS1YY29kZS1wcm9q
ZWN0LWZpbGVfdW5pdHRlc3QvcGFyc2VYY29kZVByb2plY3RGaWxlLnBsCkBAIC0wLDAgKzEsMjMw
IEBACisjIS91c3IvYmluL2VudiBwZXJsCisjCisjIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBUZXN0OjpNb3Jl
OwordXNlIEZpbmRCaW47Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6Qmlu
LCAiLi4iKTsKK3VzZSBMb2FkQXNNb2R1bGUgcXcoVGlkeVhjb2RlUHJvamVjdEZpbGUgdGlkeS1Y
Y29kZS1wcm9qZWN0LWZpbGUpOworCitteSBAdGVzdENhc2VIYXNoUmVmcyA9ICgKKworeworICAg
IHRlc3ROYW1lID0+ICJTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oiLAorICAgIHByb2plY3RGaWxlID0+IHsKKyAgICAgICAgY29udGVudHMgPT4gPDwnRU5E
JywKKy8vICEkKlVURjgqJCEKK3sKKwlhcmNoaXZlVmVyc2lvbiA9IDE7CisJY2xhc3NlcyA9IHsK
Kwl9OworCW9iamVjdFZlcnNpb24gPSA0NjsKKwlvYmplY3RzID0geworCisvKiBCZWdpbiBQQlhB
Z2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLworLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0
aW9uICovCisKKy8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisvKiBFbmQgUEJYQnVp
bGRGaWxlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rp
b24gKi8KKy8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLworCisvKiBCZWdp
biBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKy8qIEVuZCBQQlhDb3B5RmlsZXNC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9u
ICovCisJCTk5MjAzOTgwMThCOTVCQzYwMEIzOUFGOSAvKiBVc2VySW5wdXRCcmlkZ2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlcklucHV0QnJpZGdlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkyMDM5ODExOEI5NUJDNjAwQjM5QUY5IC8q
IFVzZXJJbnB1dEJyaWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2Vy
SW5wdXRCcmlkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKy8qIEVuZCBQQlhGaWxl
UmVmZXJlbmNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ug
c2VjdGlvbiAqLworLyogRW5kIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwor
LyogQmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAqLworCQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcg
LyogV2ViQ29yZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJOTlFNDVBMTMxOEEwMjE3NjAwMjZEODhGIC8qIHJlcGxheSAqLywKKwkJCSk7CisJCQluYW1l
ID0gV2ViQ29yZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTk5RTQ1QTEz
MThBMDIxNzYwMDI2RDg4RiAvKiByZXBsYXkgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCTk5MjAzOTgwMThCOTVCQzYwMEIzOUFGOSAvKiBVc2VySW5wdXRC
cmlkZ2UuY3BwICovLAorCQkJCTk5MjAzOTgxMThCOTVCQzYwMEIzOUFGOSAvKiBVc2VySW5wdXRC
cmlkZ2UuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gcmVwbGF5OworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKKy8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBC
WEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKy8qIEVuZCBQQlhIZWFkZXJzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisvKiBF
bmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0
aW9uICovCisJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9
IHsKKwkJCWlzYSA9IFBCWFByb2plY3Q7CisJCQlhdHRyaWJ1dGVzID0geworCQkJCUJ1aWxkSW5k
ZXBlbmRlbnRUYXJnZXRzSW5QYXJhbGxlbCA9IFlFUzsKKwkJCQlMYXN0U3dpZnRVcGRhdGVDaGVj
ayA9IDA3MDA7CisJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDA3MDA7CisJCQl9OworCQkJYnVpbGRD
b25maWd1cmF0aW9uTGlzdCA9IDE0OUMyODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYkNvcmUiICovOworCQkJY29tcGF0aWJp
bGl0eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlz
aDsKKwkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOworCQkJa25vd25SZWdpb25zID0gKAor
CQkJCUVuZ2xpc2gsCisJCQkJSmFwYW5lc2UsCisJCQkJRnJlbmNoLAorCQkJCUdlcm1hbiwKKwkJ
CQlTcGFuaXNoLAorCQkJCUR1dGNoLAorCQkJCUl0YWxpYW4sCisJCQkpOworCQkJbWFpbkdyb3Vw
ID0gMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYkNvcmUgKi87CisJCQlwcm9kdWN0UmVm
R3JvdXAgPSAwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi87CisJCQlwcm9q
ZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVjdFJlZmVyZW5jZXMgPSAoCisJCQkJeworCQkJCQlQ
cm9kdWN0R3JvdXAgPSAxQzA5RDA0QzFFMzFDMzI4MDA3MjVGMTggLyogUHJvZHVjdHMgKi87CisJ
CQkJCVByb2plY3RSZWYgPSAxQzA5RDA0QjFFMzFDMzI4MDA3MjVGMTggLyogUEFMLnhjb2RlcHJv
aiAqLzsKKwkJCQl9LAorCQkJKTsKKwkJCXByb2plY3RSb290ID0gIiI7CisJCQl0YXJnZXRzID0g
KAorCQkJCTQxODE2Rjc5MTM4NTlDNTUwMDU3QUFBNCAvKiBBbGwgKi8sCisJCQkJOTNGMTk4QTUw
ODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmUgKi8sCisJCQkJNTM1NUU4RDExRjk2N0U5RDAwMzFF
MDhDIC8qIEdlbmVyYXRlIFVuaWZpZWQgU291cmNlcyAqLywKKwkJCQlERDA0MUZCRTA5RDlEREJF
MDAxMEFGMkEgLyogRGVyaXZlZCBTb3VyY2VzICovLAorCQkJCTQxN0RBNkNGMTM3MzRFMDIwMDdD
NTdGQiAvKiBXZWJDb3JlVGVzdFN1cHBvcnQgKi8sCisJCQkJRTFCQTY2RjMxNzQyQkRFMDAwQzIw
MjUxIC8qIFdlYkNvcmVUZXN0U2hpbSAqLywKKwkJCSk7CisJCX07CisvKiBFbmQgUEJYUHJvamVj
dCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFJlZmVyZW5jZVByb3h5IHNlY3Rpb24gKi8KKy8q
IEVuZCBQQlhSZWZlcmVuY2VQcm94eSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFJlc291cmNl
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworLyogRW5kIFBCWFJlc291cmNlc0J1aWxkUGhhc2Ugc2Vj
dGlvbiAqLworCisvKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLwor
LyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBC
WFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKy8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwor
LyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhWYXJp
YW50R3JvdXAgc2VjdGlvbiAqLworLyogRW5kIFBCWFZhcmlhbnRHcm91cCBzZWN0aW9uICovCisK
Ky8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKy8qIEVuZCBYQ0J1aWxk
Q29uZmlndXJhdGlvbiBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qg
c2VjdGlvbiAqLworLyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCX07CisJ
cm9vdE9iamVjdCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAq
LzsKK30KK0VORAorICAgIH0sCisgICAgZXhwZWN0ZWRSZXN1bHRzID0+IHsKKyAgICAgICAgZmls
ZXMgPT4geworICAgICAgICAgICAgJzk5MjAzOTgwMThCOTVCQzYwMEIzOUFGOScgPT4geworICAg
ICAgICAgICAgICAgIHRleHQgPT4gPDwnRU5EJywKKwkJOTkyMDM5ODAxOEI5NUJDNjAwQjM5QUY5
IC8qIFVzZXJJbnB1dEJyaWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBVc2VySW5wdXRCcmlkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworRU5E
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgJzk5MjAzOTgxMThCOTVCQzYwMEIzOUFGOScg
PT4geworICAgICAgICAgICAgICAgIHRleHQgPT4gPDwnRU5EJywKKwkJOTkyMDM5ODExOEI5NUJD
NjAwQjM5QUY5IC8qIFVzZXJJbnB1dEJyaWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVc2VySW5wdXRCcmlkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKK0VO
RAorICAgICAgICAgICAgfSwKKyAgICAgICAgfSwKKyAgICAgICAgZ3JvdXBzID0+IHsKKyAgICAg
ICAgICAgICcwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcnID0+IHsKKyAgICAgICAgICAgICAgICBn
cm91cE5hbWUgPT4gIldlYkNvcmUiLAorICAgICAgICAgICAgICAgIG5hbWVWYWx1ZSA9PiAiV2Vi
Q29yZSIsCisgICAgICAgICAgICAgICAgc291cmNlVHJlZSA9PiAiPGdyb3VwPiIsCisgICAgICAg
ICAgICAgICAgdGV4dCA9PiA8PCdFTkQnLAorCQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyog
V2ViQ29yZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
OTlFNDVBMTMxOEEwMjE3NjAwMjZEODhGIC8qIHJlcGxheSAqLywKKwkJCSk7CisJCQluYW1lID0g
V2ViQ29yZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CitFTkQKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAnOTlFNDVBMTMxOEEwMjE3NjAwMjZEODhGJyA9PiB7CisgICAg
ICAgICAgICAgICAgZ3JvdXBOYW1lID0+ICJyZXBsYXkiLAorICAgICAgICAgICAgICAgIHBhdGhW
YWx1ZSA9PiAicmVwbGF5IiwKKyAgICAgICAgICAgICAgICBzb3VyY2VUcmVlID0+ICI8Z3JvdXA+
IiwKKyAgICAgICAgICAgICAgICB0ZXh0ID0+IDw8J0VORCcsCisJCTk5RTQ1QTEzMThBMDIxNzYw
MDI2RDg4RiAvKiByZXBsYXkgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCTk5MjAzOTgwMThCOTVCQzYwMEIzOUFGOSAvKiBVc2VySW5wdXRCcmlkZ2UuY3Bw
ICovLAorCQkJCTk5MjAzOTgxMThCOTVCQzYwMEIzOUFGOSAvKiBVc2VySW5wdXRCcmlkZ2UuaCAq
LywKKwkJCSk7CisJCQlwYXRoID0gcmVwbGF5OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKK0VORAorICAgICAgICAgICAgfSwKKyAgICAgICAgfSwKKyAgICAgICAgcHJvamVjdCA9
PiB7CisgICAgICAgICAgICBtYWluR3JvdXBJRCA9PiAiMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3
IiwKKyAgICAgICAgICAgIHByb2plY3REaXJQYXRoID0+ICIiLAorICAgICAgICAgICAgcHJvamVj
dFJvb3QgPT4gIiIsCisgICAgICAgIH0sCisgICAgfSwKK30sCisKKyk7CisKK215ICR0ZXN0Q2Fz
ZXNDb3VudCA9IHNjYWxhciBAdGVzdENhc2VIYXNoUmVmczsKK3BsYW4odGVzdHMgPT4gMSAqICR0
ZXN0Q2FzZXNDb3VudCk7ICMgVG90YWwgbnVtYmVyIG9mIGFzc2VydGlvbnMuCisKK2ZvcmVhY2gg
bXkgJHRlc3RDYXNlIChAdGVzdENhc2VIYXNoUmVmcykgeworICAgIG15ICRleHBlY3RlZFJlc3Vs
dHMgPSAkdGVzdENhc2UtPntleHBlY3RlZFJlc3VsdHN9OworICAgICRleHBlY3RlZFJlc3VsdHMt
Pntjb250ZW50c30gPSAkdGVzdENhc2UtPntwcm9qZWN0RmlsZX0tPntjb250ZW50c307CisKKyAg
ICBteSAkdGVzdE5hbWVTdGFydCA9ICJwYXJzZVhjb2RlUHJvamVjdEZpbGUoKTogJHRlc3RDYXNl
LT57dGVzdE5hbWV9IjsKKyAgICBteSAkYWN0dWFsUmVzdWx0cyA9ICR0ZXN0Q2FzZS0+e3Byb2pl
Y3RGaWxlfTsKKyAgICBUaWR5WGNvZGVQcm9qZWN0RmlsZTo6cGFyc2VYY29kZVByb2plY3RGaWxl
KCRhY3R1YWxSZXN1bHRzKTsKKyAgICBpc19kZWVwbHkoJGFjdHVhbFJlc3VsdHMsICRleHBlY3Rl
ZFJlc3VsdHMsICR0ZXN0TmFtZVN0YXJ0KTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlci5weQppbmRleCA3YjhmNTVmYjRiNzUuLjA0ZWFhMjEyYjJmNyAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtMzIyLDYgKzMyMiwxMCBAQCBfUEFUSF9S
VUxFU19TUEVDSUZJRVIgPSBbCiAgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3Jl
JywgJ1BBTCcsICdwYWwnLCAnc3BpJyldLAogICAgICBbIi1yZWFkYWJpbGl0eS9uYW1pbmcvdW5k
ZXJzY29yZXMiXSksCiAKKyAgICAoWyAgIyB0aWR5LVhjb2RlLXByb2plY3QtZmlsZSB0ZXN0cyB1
c2UgdGFicyBiZWNhdXNlIFhjb2RlIHByb2plY3QgZmlsZXMgdXNlIHRhYnMuCisgICAgICBvcy5w
YXRoLmpvaW4oJ1Rvb2xzJywgJ1NjcmlwdHMnLCAnd2Via2l0cGVybCcsICd0aWR5LVhjb2RlLXBy
b2plY3QtZmlsZV91bml0dGVzdCcpXSwKKyAgICAgWyItd2hpdGVzcGFjZS90YWIiXSksCisKICAg
ICAoWyAgIyBjIGNvZGUgd2l0aCB1bmRlcnNjb3JlcyBpbiB2YXJpYWJsZSBuYW1lcyBhbmQgdGFi
cyBmb3IgdGhlIE1ha2VmaWxlCiAgICAgIG9zLnBhdGguam9pbignVG9vbHMnLCAnU2NyaXB0cycs
ICd3ZWJraXRweScsICdiaW5hcnlfYnVuZGxpbmcnLCAnZGxvcGVud3JhcCcpXSwKICAgICAgWyIt
cmVhZGFiaWxpdHkvbmFtaW5nL3VuZGVyc2NvcmVzIiwK
</data>

          </attachment>
      

    </bug>

</bugzilla>