<?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>198997</bug_id>
          
          <creation_ts>2019-06-19 06:10:41 -0700</creation_ts>
          <short_desc>Add StringBuilder member function which allows makeString() style variadic argument construction</short_desc>
          <delta_ts>2019-07-17 14:18:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1546042</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-06-19 06:10:41 -0700</bug_when>
    <thetext>We should consider adding a new StringBuilder member function which allows makeString() style variadic argument appending. Allowing calls like:

stringBuilder.appendMakeString(&quot;hello&quot;, 7, stringVariable, &quot;world&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546043</commentid>
    <comment_count>1</comment_count>
      <attachid>372457</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-06-19 06:12:10 -0700</bug_when>
    <thetext>Created attachment 372457
Basic Sketch of the implementation (not tested)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546044</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-06-19 06:12:53 -0700</bug_when>
    <thetext>Attached the basic sketch of the idea. Goal is to reuse as much of the makeString infrastructure as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546045</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-06-19 06:14:18 -0700</bug_when>
    <thetext>I&apos;m not wedded to the name. Perhaps a better name would be appendStrings(...).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546097</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-19 09:54:46 -0700</bug_when>
    <thetext>Since it can be used to append lots of different things, I like the idea of just calling it &quot;append&quot;. Separate append functions that take specific types can have separate names, but usually you wouldn’t need to call them!

Unfortunately, I suppose the current function named &quot;append&quot; appends a string specifically. I wonder if we can make the new thing compatible enough that it can just take over the name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546098</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-19 09:55:57 -0700</bug_when>
    <thetext>The name should be like &quot;flexibleAppend&quot; and then we can rename the old one and then just make the new one inherit the append name. I assume there would be no runtime cost to calling it with exactly one argument and so the only issue would be if there’s difficulty disambiguating different handling of the same types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546229</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-06-19 13:48:56 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; The name should be like &quot;flexibleAppend&quot; and then we can rename the old one
&gt; and then just make the new one inherit the append name. I assume there would
&gt; be no runtime cost to calling it with exactly one argument and so the only
&gt; issue would be if there’s difficulty disambiguating different handling of
&gt; the same types.

Yeah, I&apos;d like to ensure there is no overhead to calling with a single argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551270</commentid>
    <comment_count>7</comment_count>
      <attachid>373727</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-07-09 09:56:24 -0700</bug_when>
    <thetext>Created attachment 373727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551458</commentid>
    <comment_count>8</comment_count>
      <attachid>373774</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-07-09 15:08:58 -0700</bug_when>
    <thetext>Created attachment 373774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551468</commentid>
    <comment_count>9</comment_count>
      <attachid>373774</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-07-09 15:18:53 -0700</bug_when>
    <thetext>Comment on attachment 373774
Patch

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

&gt; Source/WTF/wtf/text/StringBuilder.h:235
&gt; +    template&lt;typename... StringTypes&gt;
&gt; +    void flexibleAppend(StringTypes ...strings);

// FIXME: Rename to append after renaming any overloads of append that take more than one argument.

Also, consider doing in a single line? Also, can we omit the argument name &quot;strings&quot; here? I don’t think it adds anything.

&gt; Source/WTF/wtf/text/StringBuilder.h:356
&gt; +    template &lt;typename CharType&gt; void reallocateBuffer(unsigned requiredLength);

My preferred formatting for this:

    template&lt;typename CharacterType&gt; void reallocationBuffer(unsigned requiredLength);

(similar for below)

&gt; Source/WTF/wtf/text/StringBuilder.h:369
&gt; +    template&lt;typename... StringTypeAdapters&gt;
&gt; +    void flexibleAppendFromAdapters(StringTypeAdapters ...adapters);

Consider doing in a single line? Also, can we omit the argument name &quot;adapters&quot; here? I don’t think it adds anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551480</commentid>
    <comment_count>10</comment_count>
      <attachid>373782</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-07-09 15:31:42 -0700</bug_when>
    <thetext>Created attachment 373782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551481</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-07-09 15:32:49 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; Comment on attachment 373774 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=373774&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/text/StringBuilder.h:235
&gt; &gt; +    template&lt;typename... StringTypes&gt;
&gt; &gt; +    void flexibleAppend(StringTypes ...strings);
&gt; 
&gt; // FIXME: Rename to append after renaming any overloads of append that take
&gt; more than one argument.
&gt; 

Done.

&gt; Also, consider doing in a single line? Also, can we omit the argument name
&gt; &quot;strings&quot; here? I don’t think it adds anything.

All done.

&gt; 
&gt; &gt; Source/WTF/wtf/text/StringBuilder.h:356
&gt; &gt; +    template &lt;typename CharType&gt; void reallocateBuffer(unsigned requiredLength);
&gt; 
&gt; My preferred formatting for this:
&gt; 
&gt;     template&lt;typename CharacterType&gt; void reallocationBuffer(unsigned
&gt; requiredLength);
&gt; 
&gt; (similar for below)

Did this for all the template functions in the file.

&gt; 
&gt; &gt; Source/WTF/wtf/text/StringBuilder.h:369
&gt; &gt; +    template&lt;typename... StringTypeAdapters&gt;
&gt; &gt; +    void flexibleAppendFromAdapters(StringTypeAdapters ...adapters);
&gt; 
&gt; Consider doing in a single line? Also, can we omit the argument name
&gt; &quot;adapters&quot; here? I don’t think it adds anything.

All done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551523</commentid>
    <comment_count>12</comment_count>
      <attachid>373782</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-09 16:54:14 -0700</bug_when>
    <thetext>Comment on attachment 373782
Patch

Clearing flags on attachment: 373782

Committed r247286: &lt;https://trac.webkit.org/changeset/247286&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551524</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-09 16:54:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551526</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-09 16:58:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/52859522&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551700</commentid>
    <comment_count>15</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-07-10 09:47:18 -0700</bug_when>
    <thetext>This change has caused TestWTF.WTF.StringOperators to fail on debug bots:
        
        /Volumes/Data/slave/mojave-debug/build/Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp:56
        Expected equality of these values:
          2
          wtfStringCopyCount
            Which is: 0
        string + string
        
        
        /Volumes/Data/slave/mojave-debug/build/Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp:57
        Expected equality of these values:
          2
          wtfStringCopyCount
            Which is: 0
        string + atomString
        
        
        /Volumes/Data/slave/mojave-debug/build/Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp:58
        Expected equality of these values:
          2
          wtfStringCopyCount
            Which is: 0
        atomString + string


The full diff is here:
https://build.webkit.org/builders/Apple%20Mojave%20Debug%20WK1%20%28Tests%29/builds/4384/steps/run-api-tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551702</commentid>
    <comment_count>16</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-07-10 09:56:44 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #15)
&gt; This change has caused TestWTF.WTF.StringOperators to fail on debug bots:
&gt;         
&gt;        
&gt; /Volumes/Data/slave/mojave-debug/build/Tools/TestWebKitAPI/Tests/WTF/
&gt; StringOperators.cpp:56
&gt;         Expected equality of these values:
&gt;           2
&gt;           wtfStringCopyCount
&gt;             Which is: 0
&gt;         string + string
&gt;         
&gt;         
&gt;        
&gt; /Volumes/Data/slave/mojave-debug/build/Tools/TestWebKitAPI/Tests/WTF/
&gt; StringOperators.cpp:57
&gt;         Expected equality of these values:
&gt;           2
&gt;           wtfStringCopyCount
&gt;             Which is: 0
&gt;         string + atomString
&gt;         
&gt;         
&gt;        
&gt; /Volumes/Data/slave/mojave-debug/build/Tools/TestWebKitAPI/Tests/WTF/
&gt; StringOperators.cpp:58
&gt;         Expected equality of these values:
&gt;           2
&gt;           wtfStringCopyCount
&gt;             Which is: 0
&gt;         atomString + string
&gt; 
&gt; 
&gt; The full diff is here:
&gt; https://build.webkit.org/builders/Apple%20Mojave%20Debug%20WK1%20%28Tests%29/
&gt; builds/4384/steps/run-api-tests/logs/stdio

Thanks for letting me know. If you could roll it out, I would appreciate it. I can&apos;t take a look at the failure until later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551709</commentid>
    <comment_count>17</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-07-10 10:09:11 -0700</bug_when>
    <thetext>Reverted r247286 for reason:

Caused TestWTF.WTF.StringOperators to fail on debug bots

Committed r247307: &lt;https://trac.webkit.org/changeset/247307&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553554</commentid>
    <comment_count>18</comment_count>
      <attachid>374303</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-07-17 10:07:28 -0700</bug_when>
    <thetext>Created attachment 374303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553556</commentid>
    <comment_count>19</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-17 10:09:16 -0700</bug_when>
    <thetext>Attachment 374303 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:119:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:119:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:120:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:121:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:122:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:123:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:124:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:125:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:126:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:127:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:128:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:129:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:130:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:131:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:133:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:134:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:135:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:136:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:137:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:138:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:139:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp:140:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/WTFStringUtilities.cpp:28:  You should not add a blank line before implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 23 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553576</commentid>
    <comment_count>20</comment_count>
      <attachid>374303</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-17 10:58:57 -0700</bug_when>
    <thetext>Comment on attachment 374303
Patch

Rejecting attachment 374303 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 5000 characters of output:
/Library/PrivateFrameworks -F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks --system-header-prefix=WebKit/ -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/PrivateFrameworks -ftemplate-depth=256 -MMD -MT dependencies -MF /Volumes/Data/EWS/WebKit/WebKitBuild/TestWebKitAPI.build/Release/TestWebKitAPI.build/Objects-normal/x86_64/TransformationMatrix.d --serialize-diagnostics /Volumes/Data/EWS/WebKit/WebKitBuild/TestWebKitAPI.build/Release/TestWebKitAPI.build/Objects-normal/x86_64/TransformationMatrix.dia -c /Volumes/Data/EWS/WebKit/Tools/TestWebKitAPI/Tests/WebCore/TransformationMatrix.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/TestWebKitAPI.build/Release/TestWebKitAPI.build/Objects-normal/x86_64/TransformationMatrix.o

Ld /Volumes/Data/EWS/WebKit/WebKitBuild/Release/TestWebKitAPI normal x86_64
    cd /Volumes/Data/EWS/WebKit/Tools/TestWebKitAPI
    export MACOSX_DEPLOYMENT_TARGET=10.13
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -L/Volumes/Data/EWS/WebKit/WebKitBuild/Release -F/Volumes/Data/EWS/WebKit/WebKitBuild/Release -F/Volumes/Data/EWS/WebKit/Tools/TestWebKitAPI/../../WebKitLibraries/WebKitPrivateFrameworkStubs/Mac/101300 -F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/PrivateFrameworks -F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks -filelist /Volumes/Data/EWS/WebKit/WebKitBuild/TestWebKitAPI.build/Release/TestWebKitAPI.build/Objects-normal/x86_64/TestWebKitAPI.LinkFileList -Xlinker -rpath -Xlinker @loader_path -mmacosx-version-min=10.13 -Xlinker -object_path_lto -Xlinker /Volumes/Data/EWS/WebKit/WebKitBuild/TestWebKitAPI.build/Release/TestWebKitAPI.build/Objects-normal/x86_64/TestWebKitAPI_lto.o -stdlib=libc++ -fobjc-link-runtime -Wl,-unexported_symbol -Wl,__ZN7testing4Test16TearDownTestCaseEv -Wl,-unexported_symbol -Wl,__ZN7testing4Test13SetUpTestCaseEv -lgtest -force_load /Volumes/Data/EWS/WebKit/WebKitBuild/Release/libTestWebKitAPI.a -framework JavaScriptCore -framework WebKit -lWebCoreTestSupport -framework Cocoa -framework Carbon -framework CoreGraphics -framework CoreLocation -framework CoreText -framework IOKit -lboringssl -licucore -framework LocalAuthentication -framework QuartzCore -framework Security -Xlinker -dependency_info -Xlinker /Volumes/Data/EWS/WebKit/WebKitBuild/TestWebKitAPI.build/Release/TestWebKitAPI.build/Objects-normal/x86_64/TestWebKitAPI_dependency_info.dat -o /Volumes/Data/EWS/WebKit/WebKitBuild/Release/TestWebKitAPI
ld: warning: directory not found for option &apos;-F/Volumes/Data/EWS/WebKit/Tools/TestWebKitAPI/../../WebKitLibraries/WebKitPrivateFrameworkStubs/Mac/101300&apos;
Undefined symbols for architecture x86_64:
  &quot;_wtfStringCopyCount&quot;, referenced from:
      WTF::String WTF::tryMakeStringFromAdapters&lt;WTF::StringTypeAdapter&lt;char const*, void&gt;, WTF::StringTypeAdapter&lt;WTF::String, void&gt; &gt;(WTF::StringTypeAdapter&lt;char const*, void&gt;, WTF::StringTypeAdapter&lt;WTF::String, void&gt;) in libTestWebKitAPI.a(SecurityOrigin.o)
      void WTF::StringTypeAdapter&lt;WTF::String, void&gt;::writeTo&lt;unsigned short&gt;(unsigned short*) const in libTestWebKitAPI.a(SecurityOrigin.o)
      WTF::String WTF::tryMakeStringFromAdapters&lt;WTF::StringTypeAdapter&lt;WTF::String, void&gt;, WTF::StringTypeAdapter&lt;char const*, void&gt;, WTF::StringTypeAdapter&lt;WTF::String, void&gt; &gt;(WTF::StringTypeAdapter&lt;WTF::String, void&gt;, WTF::StringTypeAdapter&lt;char const*, void&gt;, WTF::StringTypeAdapter&lt;WTF::String, void&gt;) in libTestWebKitAPI.a(URLParserTextEncoding.o)
      void WTF::StringTypeAdapter&lt;WTF::String, void&gt;::writeTo&lt;unsigned short&gt;(unsigned short*) const in libTestWebKitAPI.a(URLParserTextEncoding.o)
      WTF::String WTF::tryMakeStringFromAdapters&lt;WTF::StringTypeAdapter&lt;char const*, void&gt;, WTF::StringTypeAdapter&lt;WTF::String, void&gt; &gt;(WTF::StringTypeAdapter&lt;char const*, void&gt;, WTF::StringTypeAdapter&lt;WTF::String, void&gt;) in libTestWebKitAPI.a(URLParserTextEncoding.o)
      WTF::String WTF::tryMakeStringFromAdapters&lt;WTF::StringTypeAdapter&lt;char const*, void&gt;, WTF::StringTypeAdapter&lt;WTF::String, void&gt;, WTF::StringTypeAdapter&lt;char const*, void&gt; &gt;(WTF::StringTypeAdapter&lt;char const*, void&gt;, WTF::StringTypeAdapter&lt;WTF::String, void&gt;, WTF::StringTypeAdapter&lt;char const*, void&gt;) in libTestWebKitAPI.a(URLParserTextEncoding.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

** BUILD FAILED **


The following build commands failed:
	Ld /Volumes/Data/EWS/WebKit/WebKitBuild/Release/TestWebKitAPI normal x86_64
(1 failure)

Full output: https://webkit-queues.webkit.org/results/12759414</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553612</commentid>
    <comment_count>21</comment_count>
      <attachid>374303</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-17 12:08:31 -0700</bug_when>
    <thetext>Comment on attachment 374303
Patch

Attachment 374303 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/12759489

New failing tests:
mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-ftl-eager-no-cjit-validate-phases
apiTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553622</commentid>
    <comment_count>22</comment_count>
      <attachid>374315</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-07-17 12:31:23 -0700</bug_when>
    <thetext>Created attachment 374315
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553650</commentid>
    <comment_count>23</comment_count>
      <attachid>374321</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-07-17 13:24:02 -0700</bug_when>
    <thetext>Created attachment 374321
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553682</commentid>
    <comment_count>24</comment_count>
      <attachid>374321</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-17 14:18:36 -0700</bug_when>
    <thetext>Comment on attachment 374321
Patch

Clearing flags on attachment: 374321

Committed r247537: &lt;https://trac.webkit.org/changeset/247537&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553683</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-17 14:18:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372457</attachid>
            <date>2019-06-19 06:12:10 -0700</date>
            <delta_ts>2019-07-09 09:56:21 -0700</delta_ts>
            <desc>Basic Sketch of the implementation (not tested)</desc>
            <filename>basic_sketch.diff</filename>
            <type>text/plain</type>
            <size>2983</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiAyNDY1ODYpCisr
KyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAt
MjE2LDYgKzIxNyw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJD
b3VudD4KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kTGl0ZXJhbChjb25zdCBjaGFyICgm
Y2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKSB7IGFwcGVuZChjaGFyYWN0ZXJzLCBjaGFyYWN0
ZXJDb3VudCAtIDEpOyB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4K
KyAgICB2b2lkIGFwcGVuZE1ha2VTdHJpbmcoU3RyaW5nVHlwZXMuLi4gc3RyaW5ncyk7CisKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIoaW50KTsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIodW5zaWduZWQpOwogICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcihsb25nKTsKQEAgLTM1OSw2ICszNjMsOSBAQCBwcml2
YXRlOgogICAgIEFMV0FZU19JTkxJTkUgQ2hhclR5cGUgKiBnZXRCdWZmZXJDaGFyYWN0ZXJzKCk7
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVpZnlTdHJpbmcoKSBjb25zdDsKIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGVBZGFwdGVyLCB0eXBlbmFtZS4uLiBTdHJpbmdU
eXBlQWRhcHRlcnM+CisgICAgdm9pZCBhcHBlbmRNYWtlU3RyaW5nRnJvbUFkYXB0ZXJzKFN0cmlu
Z1R5cGVBZGFwdGVyIGFkYXB0ZXIsIFN0cmluZ1R5cGVBZGFwdGVycyAuLi5hZGFwdGVycykKKwog
ICAgIG11dGFibGUgU3RyaW5nIG1fc3RyaW5nOwogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBtX2J1
ZmZlcjsKICAgICB1bmlvbiB7CkBAIC0zODcsNiArMzk0LDQ5IEBAIEFMV0FZU19JTkxJTkUgVUNo
YXIqIFN0cmluZ0J1aWxkZXI6OmdldEIKICAgICByZXR1cm4gbV9idWZmZXJDaGFyYWN0ZXJzMTY7
CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGVBZGFwdGVyLCB0eXBlbmFtZS4uLiBT
dHJpbmdUeXBlQWRhcHRlcnM+Cit2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE1ha2VTdHJpbmdG
cm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFkYXB0ZXIgYWRhcHRlciwgU3RyaW5nVHlwZUFkYXB0ZXJz
IC4uLmFkYXB0ZXJzKQoreworICAgIHN0YXRpY19hc3NlcnQoU3RyaW5nOjpNYXhMZW5ndGggPT0g
c3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCksICIiKTsKKyAgICBhdXRvIHN1bSA9
IGNoZWNrZWRTdW08aW50MzJfdD4oYWRhcHRlci5sZW5ndGgoKSwgYWRhcHRlcnMubGVuZ3RoKCku
Li4pOworICAgIGlmIChzdW0uaGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgICAgIGRpZE92ZXJmbG93
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBzdW0u
dW5zYWZlR2V0KCk7CisgICAgQVNTRVJUKGxlbmd0aCA8PSBTdHJpbmc6Ok1heExlbmd0aCk7Cisg
ICAgaWYgKGFyZThCaXQoYWRhcHRlciwgYWRhcHRlcnMuLi4pKSB7CisgICAgICAgIC8vIEZJWE1F
OiBXZSBjYW4gY2hlY2sgb3ZlcmZsb3cgcHJpb3IgdG8gYXBwZW5kVW5pbml0aWFsaXplZCBieSBh
ZGRpbmcgY3VycmVudCBsZW5ndGggdG8gdGhlIGNoZWNrZWRTdW0KKyAgICAgICAgLy8gY29tcHV0
YXRpb24gYXQgZnVuY3Rpb24gc3RhcnQuCisgICAgICAgIExDaGFyKiBkZXN0ID0gYXBwZW5kVW5p
bml0aWFsaXplZDxMQ2hhcj4obGVuZ3RoKTsKKyAgICAgICAgaWYgKCFkZXN0KSB7CisgICAgICAg
ICAgICBBU1NFUlQoaGFzT3ZlcmZsb3dlZCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisKKyAgICAgICAgbWFrZVN0cmluZ0FjY3VtdWxhdG9yKGRlc3QsIGFkYXB0ZXIsIGFk
YXB0ZXJzLi4uKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGNoZWNr
IG92ZXJmbG93IHByaW9yIHRvIGFwcGVuZFVuaW5pdGlhbGl6ZWQgYnkgYWRkaW5nIGN1cnJlbnQg
bGVuZ3RoIHRvIHRoZSBjaGVja2VkU3VtCisgICAgICAgIC8vIGNvbXB1dGF0aW9uIGF0IGZ1bmN0
aW9uIHN0YXJ0LgorICAgICAgICBVQ2hhciogZGVzdCA9IGFwcGVuZFVuaW5pdGlhbGl6ZWQ8VUNo
YXI+KGxlbmd0aCk7CisgICAgICAgIGlmICghZGVzdCkgeworICAgICAgICAgICAgQVNTRVJUKGhh
c092ZXJmbG93ZWQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBtYWtlU3RyaW5nQWNjdW11bGF0b3IoZGVzdCwgYWRhcHRlciwgYWRhcHRlcnMuLi4pOworICAg
IH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5nVHlwZXM+Cit2b2lkIFN0cmluZ0J1
aWxkZXI6OmFwcGVuZE1ha2VTdHJpbmcoU3RyaW5nVHlwZXMuLi4gc3RyaW5ncykKK3sKKyAgICBh
cHBlbmRNYWtlU3RyaW5nRnJvbUFkYXB0ZXJzKFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGVz
PihzdHJpbmdzKS4uLik7Cit9CisKKwogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogYm9v
bCBlcXVhbChjb25zdCBTdHJpbmdCdWlsZGVyJiBzLCBjb25zdCBDaGFyVHlwZSogYnVmZmVyLCB1
bnNpZ25lZCBsZW5ndGgpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373727</attachid>
            <date>2019-07-09 09:56:24 -0700</date>
            <delta_ts>2019-07-09 15:08:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198997-20190709095623.patch</filename>
            <type>text/plain</type>
            <size>13647</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDcyNTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE5LTA3LTA5ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU3RyaW5nQnVpbGRlciBtZW1iZXIgZnVuY3Rpb24g
d2hpY2ggYWxsb3dzIG1ha2VTdHJpbmcoKSBzdHlsZSB2YXJpYWRpYyBhcmd1bWVudCBjb25zdHJ1
Y3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODk5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZHMgbmV3IFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgbWVtYmVyIGZ1bmN0aW9u
IHdoaWNoIGFsbG93cyBwYXNzaW5nIG9uZSBvciBtb3JlIAorICAgICAgICBzdHJpbmctYWRhcHRh
YmxlIChpbiB0aGUgc2Vuc2UgdGhhdCB0aGVyZSBpcyBTdHJpbmdUeXBlQWRhcHRlciBzcGVjaWFs
aXphdGlvbiBmb3IgdGhlIAorICAgICAgICB0eXBlKSBwYXJhbWV0ZXJzLiBUaGlzIHJlLXVzdXNl
cyB0aGUgdmFyaWFkaWMgdGVtcGxhdGUgaW5mcmFzdHJ1Y3R1cmUgaW4gU3RyaW5nQ29uY2F0ZW5h
dGUuaAorICAgICAgICB0aGF0IGlzIHVzZWQgZm9yIG1ha2VTdHJpbmcoLi4uKSBhbGxvd2luZyBm
b3IgaW1wcm92ZW1lbnRzIGluIG9uZSB0byBiZW5lZml0IHRoZSBvdGhlci4KKworICAgICAgICBU
aGUgYWR2YW50YWdlIG9mIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgb3ZlciBj
YWxsaW5nIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pCisgICAgICAgIG11bHRpcGxlIHRpbWVz
IChiZXlvbmQgdGhlIGNvZGUgc2hhcmluZyB3aXRoIG1ha2VTdHJpbmcoLi4uKSBpcyB0aGF0IGl0
IGNhbiBhdm9pZCB1bm5lY2Vzc2FyeQorICAgICAgICBhZGRpdGlvbmFsIHJlLWFsbG9jYXRpb25z
IHdoZW4gdGhlIFN0cmluZ0J1aWxkZXIgbmVlZHMgdG8gZXhwYW5kIGl0J3MgY2FwYWNpdHkuIEl0
IGRvZXMgdGhpcworICAgICAgICBieSBjb21wdXRpbmcgdGhlIGNvbXBsZXRlIHJlcXVpcmVkIGxl
bmd0aCBmb3IgYWxsIHRoZSBwYXNzZWQgYXJndW1lbnRzIGFuZCB0aGVuIGVuc3VyaW5nIGVub3Vn
aAorICAgICAgICBjYXBhY2l0eSBpcyBhdmFpbGFibGUuIEl0IGFsc28gcmVkdWNlcyB0aGUgYWxs
b2NhdGlvbiBvdmVyaGVhZCB2ZXJzdXMgdGhlIGFudGktcGF0dGVybiBvZgorICAgICAgICBidWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKC4uLikpLgorCisgICAgICAgIElkZWFsbHksIHRoaXMgbWVt
YmVyIGZ1bmN0aW9uIHNob3VsZCBldmVudHVhbGx5IGp1c3QgYmUgY2FsbGVkIFN0cmluZ0J1aWxk
ZXI6OmFwcGVuZCguLi4pLCBidXQKKyAgICAgICAgdGhlIGN1cnJlbnQgb3ZlcmxvYWQgc2V0IGZv
ciBTdHJpbmdCdWlsZGVyOjphcHBlbmQoLi4uKSBtYWtlcyB0aGlzIGNvbXBsaWNhdGVkIGR1ZSB0
byBvdmVybG9hZHMKKyAgICAgICAgdGhhdCB0YWtlIHR3byBhcmd1bWVudHMgc3VjaCBhcyBTdHJp
bmdCdWlsZGVyOjphcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCkuIEdvaW5nIGZvcndhcmQs
IHdlCisgICAgICAgIHNob3VsZCByZW5hbWUgb3IgcmVtb3ZlIHRob3NlIG92ZXJsb2FkcyBhbmQg
bW92ZSB0byBhIHN0YW5kYXJkIGludGVyZmFjZS4gCisKKyAgICAgICAgKiB3dGYvcG9zaXgvRmls
ZVN5c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudHMpOgorICAgICAgICBBZG9wdCBTdHJpbmdCdWlsZGVyOjpmbGV4aWJs
ZUFwcGVuZCwgdXNpbmcgdG8gY29tYmluZSB0aGUgYXBwZW5kIG9mICcvJyBhbmQgY29tcG9uZW50
LgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHA6CisgICAgICAgIChXVEY6
OlN0cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoV1RGOjpTdHJp
bmdCdWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2spOgorICAg
ICAgICBFeHRyYWN0IHRoZSBwYXJ0IG9mIGFwcGVuZFVuaXRpYWxpemVkIHRoYXQgZG9lc24ndCBk
byB0aGUgb3ZlcmZsb3cgY2hlY2sKKyAgICAgICAgaW50byBpdCdzIG93biBtZW1iZXIgZnVuY3Rp
b24gdG8gYWxsb3cgY2FsbGVycyB0aGF0IGhhdmUgYWxyZWFkeSBkb25lIHRoZQorICAgICAgICBv
dmVyZmxvdyBjaGVjayB0byBieXBhc3MgaXQuCisKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRl
cjo6YXBwZW5kVW5pbml0aWFsaXplZFdpdGhvdXRPdmVyZmxvd0NoZWNrRm9yVUNoYXIpOgorICAg
ICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJm
bG93Q2hlY2tGb3JMQ2hhcik6CisgICAgICAgIEFkZGVkIHRvIGFsbG93IHRlbXBsYXRlIG1lbWJl
ciBmdW5jdGlvbiBmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyB0byBjYWxsCisgICAgICAgIGFw
cGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVjayB3aXRob3V0IG1vdmluZyBpdCB0
byB0aGUgaGVhZGVyLgorICAgICAgICAKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kRnJvbUFkYXB0
ZXJzKToKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmQpOgorICAg
ICAgICBNb2RlbGVkIG9uIHRyeU1ha2VTdHJpbmdGcm9tQWRhcHRlcnMgaW4gU3RyaW5nQ29uY2F0
ZW5hdGUuaCwgdGhlc2UKKyAgICAgICAgZWFnZXJseSBjb21wdXRlIHRoZSByZXF1aXJlZCBsZW5n
dGgsIGV4cGFuZCB0aGUgYnVmZmVyIGFuZCB0aGVuIHVzZQorICAgICAgICB0aGUgZXhpc3Rpbmcg
c3RyaW5nIHR5cGUgYWRhcHRvciBhY2N1bXVsYXRpb24gZnVuY3Rpb25zIHVzZWQgYnkgbWFrZVN0
cmluZy4gCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oOgorICAgICAg
ICAoV1RGOjpzdHJpbmdUeXBlQWRhcHRlckFjY3VtdWxhdG9yKToKKyAgICAgICAgKFdURjo6dHJ5
TWFrZVN0cmluZ0Zyb21BZGFwdGVycyk6CisgICAgICAgIChXVEY6Om1ha2VTdHJpbmdBY2N1bXVs
YXRvcik6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZXMgbWFrZVN0cmluZ0FjY3VtdWxhdG9yIHRv
IHN0cmluZ1R5cGVBZGFwdGVyQWNjdW11bGF0b3Igbm93IHRoYXQgaXQgaXMgdXNlZAorICAgICAg
ICBieSBtb3JlIHRoYW4ganVzdCBtYWtlU3RyaW5nLgorCiAyMDE5LTA3LTA4ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFdlYWtIYXNoU2V0IGZvciBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bV9wcm9jZXNzZXMKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAkocmV2aXNpb24gMjQ3MjU4KQorKysgU291cmNl
L1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAx
LDEwICszMDEsOCBAQCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWCiB7
CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGgpOwot
ICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykgewotICAgICAgICBidWlsZGVy
LmFwcGVuZCgnLycpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChjb21wb25lbnQpOwotICAgIH0K
KyAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHMpCisgICAgICAgIGJ1aWxkZXIu
ZmxleGlibGVBcHBlbmQoJy8nLCBjb21wb25lbnQpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcAkocmV2
aXNpb24gMjQ3MjU4KQorKysgU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjMxLDIxICsyMzEsMjkgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjpy
ZXNlcnZlQ2FwYWNpdHkodW5zaQogICAgIEFTU0VSVChoYXNPdmVyZmxvd2VkKCkgfHwgIW5ld0Nh
cGFjaXR5IHx8IG1fYnVmZmVyLT5sZW5ndGgoKSA+PSBuZXdDYXBhY2l0eSk7CiB9CiAKLS8vIE1h
a2UgJ2xlbmd0aCcgYWRkaXRpb25hbCBjYXBhY2l0eSBiZSBhdmFpbGFibGUgaW4gbV9idWZmZXIs
IHVwZGF0ZSBtX3N0cmluZyAmIG1fbGVuZ3RoLAorLy8gTWFrZSAnYWRkaXRpb25hbExlbmd0aCcg
YWRkaXRpb25hbCBjYXBhY2l0eSBiZSBhdmFpbGFibGUgaW4gbV9idWZmZXIsIHVwZGF0ZSBtX3N0
cmluZyAmIG1fbGVuZ3RoLAogLy8gcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgbmV3bHkgYWxsb2Nh
dGVkIHN0b3JhZ2UuCiAvLyBSZXR1cm5zIG51bGxwdHIgaWYgdGhlIHNpemUgb2YgdGhlIG5ldyBi
dWlsZGVyIHdvdWxkIGhhdmUgb3ZlcmZsb3dlZAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBl
PgotQUxXQVlTX0lOTElORSBDaGFyVHlwZSogU3RyaW5nQnVpbGRlcjo6YXBwZW5kVW5pbml0aWFs
aXplZCh1bnNpZ25lZCBsZW5ndGgpCitBTFdBWVNfSU5MSU5FIENoYXJUeXBlKiBTdHJpbmdCdWls
ZGVyOjphcHBlbmRVbmluaXRpYWxpemVkKHVuc2lnbmVkIGFkZGl0aW9uYWxMZW5ndGgpCiB7Ci0g
ICAgQVNTRVJUKGxlbmd0aCk7CisgICAgQVNTRVJUKGFkZGl0aW9uYWxMZW5ndGgpOwogCiAgICAg
Ly8gQ2FsY3VsYXRlIHRoZSBuZXcgc2l6ZSBvZiB0aGUgYnVpbGRlciBhZnRlciBhcHBlbmRpbmcu
Ci0gICAgQ2hlY2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoID0gbV9sZW5ndGggKyBsZW5ndGg7Cisg
ICAgQ2hlY2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoID0gbV9sZW5ndGggKyBhZGRpdGlvbmFsTGVu
Z3RoOwogICAgIGlmIChyZXF1aXJlZExlbmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKICAgICAgICAg
ZGlkT3ZlcmZsb3coKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgcmV0
dXJuIGFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVjazxDaGFyVHlwZT4ocmVx
dWlyZWRMZW5ndGgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitBTFdBWVNf
SU5MSU5FIENoYXJUeXBlKiBTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91
dE92ZXJmbG93Q2hlY2soQ2hlY2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoKQoreworICAgIEFTU0VS
VCghcmVxdWlyZWRMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKTsKKwogICAgIGlmIChtX2J1ZmZlciAm
JiAocmVxdWlyZWRMZW5ndGgudW5zYWZlR2V0PHVuc2lnbmVkPigpIDw9IG1fYnVmZmVyLT5sZW5n
dGgoKSkpIHsKICAgICAgICAgLy8gSWYgdGhlIGJ1ZmZlciBpcyB2YWxpZCBpdCBtdXN0IGJlIGF0
IGxlYXN0IGFzIGxvbmcgYXMgdGhlIGN1cnJlbnQgYnVpbGRlciBjb250ZW50cyEKICAgICAgICAg
QVNTRVJUKG1fYnVmZmVyLT5sZW5ndGgoKSA+PSBtX2xlbmd0aC51bnNhZmVHZXQ8dW5zaWduZWQ+
KCkpOwpAQCAtMjU4LDcgKzI2NiwxNyBAQCBBTFdBWVNfSU5MSU5FIENoYXJUeXBlKiBTdHJpbmdC
dWlsZGVyOjphCiAgICAgcmV0dXJuIGFwcGVuZFVuaW5pdGlhbGl6ZWRTbG93PENoYXJUeXBlPihy
ZXF1aXJlZExlbmd0aC51bnNhZmVHZXQoKSk7CiB9CiAKLS8vIE1ha2UgJ2xlbmd0aCcgYWRkaXRp
b25hbCBjYXBhY2l0eSBiZSBhdmFpbGFibGUgaW4gbV9idWZmZXIsIHVwZGF0ZSBtX3N0cmluZyAm
IG1fbGVuZ3RoLAorVUNoYXIqIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRo
b3V0T3ZlcmZsb3dDaGVja0ZvclVDaGFyKENoZWNrZWRJbnQzMiByZXF1aXJlZExlbmd0aCkKK3sK
KyAgICByZXR1cm4gYXBwZW5kVW5pbml0aWFsaXplZFdpdGhvdXRPdmVyZmxvd0NoZWNrPFVDaGFy
PihyZXF1aXJlZExlbmd0aCk7Cit9CisKK0xDaGFyKiBTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmlu
aXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2tGb3JMQ2hhcihDaGVja2VkSW50MzIgcmVxdWly
ZWRMZW5ndGgpCit7CisgICAgcmV0dXJuIGFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZs
b3dDaGVjazxMQ2hhcj4ocmVxdWlyZWRMZW5ndGgpOworfQorCisvLyBNYWtlICdyZXF1aXJlZExl
bmd0aCcgY2FwYWNpdHkgYmUgYXZhaWxhYmxlIGluIG1fYnVmZmVyLCB1cGRhdGUgbV9zdHJpbmcg
JiBtX2xlbmd0aCwKIC8vIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIG5ld2x5IGFsbG9jYXRlZCBz
dG9yYWdlLgogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogQ2hhclR5cGUqIFN0cmluZ0J1
aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWRTbG93KHVuc2lnbmVkIHJlcXVpcmVkTGVuZ3RoKQpJ
bmRleDogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgJKHJldmlzaW9uIDI0NzI1OCkKKysr
IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzEsNiArMjMxLDkgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVu
ZEZpeGVkV2lkdGhOdW1iZXIoZmxvYXQsIHVuc2lnbmVkIGRlY2ltYWxQbGFjZXMpOwogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoZG91YmxlLCB1bnNp
Z25lZCBkZWNpbWFsUGxhY2VzKTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5
cGVzPgorICAgIHZvaWQgZmxleGlibGVBcHBlbmQoU3RyaW5nVHlwZXMgLi4uc3RyaW5ncyk7CisK
ICAgICBTdHJpbmcgdG9TdHJpbmcoKQogICAgIHsKICAgICAgICAgaWYgKCFtX3N0cmluZy5pc051
bGwoKSkgewpAQCAtMzUwLDE2ICszNTMsMjEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFsbG9jYXRl
QnVmZmVyKGNvbnN0IExDaGFyKiBjdXJyZW50Q2hhcmFjdGVycywgdW5zaWduZWQgcmVxdWlyZWRM
ZW5ndGgpOwogICAgIHZvaWQgYWxsb2NhdGVCdWZmZXIoY29uc3QgVUNoYXIqIGN1cnJlbnRDaGFy
YWN0ZXJzLCB1bnNpZ25lZCByZXF1aXJlZExlbmd0aCk7CiAgICAgdm9pZCBhbGxvY2F0ZUJ1ZmZl
clVwQ29udmVydChjb25zdCBMQ2hhciogY3VycmVudENoYXJhY3RlcnMsIHVuc2lnbmVkIHJlcXVp
cmVkTGVuZ3RoKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHZvaWQgcmVhbGxv
Y2F0ZUJ1ZmZlcih1bnNpZ25lZCByZXF1aXJlZExlbmd0aCk7CisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJUeXBlPiBBTFdBWVNfSU5MSU5FIENoYXJUeXBlKiBhcHBlbmRVbmluaXRpYWxpemVk
KHVuc2lnbmVkIGFkZGl0aW9uYWxMZW5ndGgpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
VHlwZT4gQUxXQVlTX0lOTElORSBDaGFyVHlwZSogYXBwZW5kVW5pbml0aWFsaXplZFdpdGhvdXRP
dmVyZmxvd0NoZWNrKENoZWNrZWRJbnQzMiByZXF1aXJlZExlbmd0aCk7CisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJUeXBlPiBDaGFyVHlwZSogYXBwZW5kVW5pbml0aWFsaXplZFNsb3codW5z
aWduZWQgcmVxdWlyZWRMZW5ndGgpOworICAgIAorICAgIFVDaGFyKiBhcHBlbmRVbmluaXRpYWxp
emVkV2l0aG91dE92ZXJmbG93Q2hlY2tGb3JVQ2hhcihDaGVja2VkSW50MzIgcmVxdWlyZWRMZW5n
dGgpOworICAgIExDaGFyKiBhcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2tG
b3JMQ2hhcihDaGVja2VkSW50MzIgcmVxdWlyZWRMZW5ndGgpOworICAgIAogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICB2b2lkIHJlYWxsb2NhdGVCdWZmZXIodW5zaWduZWQg
cmVxdWlyZWRMZW5ndGgpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBB
TFdBWVNfSU5MSU5FIENoYXJUeXBlKiBhcHBlbmRVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIENoYXJUeXBlKiBhcHBl
bmRVbmluaXRpYWxpemVkU2xvdyh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyVHlwZT4KLSAgICBBTFdBWVNfSU5MSU5FIENoYXJUeXBlICogZ2V0QnVmZmVyQ2hh
cmFjdGVycygpOworICAgIEFMV0FZU19JTkxJTkUgQ2hhclR5cGUqIGdldEJ1ZmZlckNoYXJhY3Rl
cnMoKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWlmeVN0cmluZygpIGNvbnN0Owog
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5nVHlwZUFkYXB0ZXJzPgorICAgIHZvaWQg
ZmxleGlibGVBcHBlbmRGcm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFkYXB0ZXJzIC4uLmFkYXB0ZXJz
KTsKKwogICAgIG11dGFibGUgU3RyaW5nIG1fc3RyaW5nOwogICAgIFJlZlB0cjxTdHJpbmdJbXBs
PiBtX2J1ZmZlcjsKICAgICB1bmlvbiB7CkBAIC0zODgsNiArMzk2LDM4IEBAIEFMV0FZU19JTkxJ
TkUgVUNoYXIqIFN0cmluZ0J1aWxkZXI6OmdldEIKICAgICByZXR1cm4gbV9idWZmZXJDaGFyYWN0
ZXJzMTY7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVBZGFwdGVycz4KK3Zv
aWQgU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmRGcm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFk
YXB0ZXJzIC4uLmFkYXB0ZXJzKQoreworICAgIGF1dG8gcmVxdWlyZWRMZW5ndGggPSBjaGVja2Vk
U3VtPGludDMyX3Q+KG1fbGVuZ3RoLCBhZGFwdGVycy5sZW5ndGgoKS4uLik7CisgICAgaWYgKHJl
cXVpcmVkTGVuZ3RoLmhhc092ZXJmbG93ZWQoKSkgeworICAgICAgICBkaWRPdmVyZmxvdygpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1faXM4Qml0ICYmIGFyZThCaXQoYWRh
cHRlcnMuLi4pKSB7CisgICAgICAgIExDaGFyKiBkZXN0ID0gYXBwZW5kVW5pbml0aWFsaXplZFdp
dGhvdXRPdmVyZmxvd0NoZWNrRm9yTENoYXIocmVxdWlyZWRMZW5ndGgpOworICAgICAgICBpZiAo
IWRlc3QpIHsKKyAgICAgICAgICAgIEFTU0VSVChoYXNPdmVyZmxvd2VkKCkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHN0cmluZ1R5cGVBZGFwdGVyQWNjdW11bGF0
b3IoZGVzdCwgYWRhcHRlcnMuLi4pOworICAgIH0gZWxzZSB7CisgICAgICAgIFVDaGFyKiBkZXN0
ID0gYXBwZW5kVW5pbml0aWFsaXplZFdpdGhvdXRPdmVyZmxvd0NoZWNrRm9yVUNoYXIocmVxdWly
ZWRMZW5ndGgpOworICAgICAgICBpZiAoIWRlc3QpIHsKKyAgICAgICAgICAgIEFTU0VSVChoYXNP
dmVyZmxvd2VkKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHN0
cmluZ1R5cGVBZGFwdGVyQWNjdW11bGF0b3IoZGVzdCwgYWRhcHRlcnMuLi4pOworICAgIH0KK30K
KwordGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5nVHlwZXM+Cit2b2lkIFN0cmluZ0J1aWxkZXI6
OmZsZXhpYmxlQXBwZW5kKFN0cmluZ1R5cGVzLi4uIHN0cmluZ3MpCit7CisgICAgZmxleGlibGVB
cHBlbmRGcm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZXM+KHN0cmluZ3Mp
Li4uKTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogYm9vbCBlcXVhbChjb25z
dCBTdHJpbmdCdWlsZGVyJiBzLCBjb25zdCBDaGFyVHlwZSogYnVmZmVyLCB1bnNpZ25lZCBsZW5n
dGgpCiB7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCShyZXZp
c2lvbiAyNDcyNTgpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI0OCwxNiArMjQ4LDE2IEBAIGlubGluZSBib29sIGFyZThCaXQo
QWRhcHRlciBhZGFwdGVyLCBBZGEKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZSwg
dHlwZW5hbWUgQWRhcHRlcj4KLWlubGluZSB2b2lkIG1ha2VTdHJpbmdBY2N1bXVsYXRvcihSZXN1
bHRUeXBlKiByZXN1bHQsIEFkYXB0ZXIgYWRhcHRlcikKK2lubGluZSB2b2lkIHN0cmluZ1R5cGVB
ZGFwdGVyQWNjdW11bGF0b3IoUmVzdWx0VHlwZSogcmVzdWx0LCBBZGFwdGVyIGFkYXB0ZXIpCiB7
CiAgICAgYWRhcHRlci53cml0ZVRvKHJlc3VsdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJl
c3VsdFR5cGUsIHR5cGVuYW1lIEFkYXB0ZXIsIHR5cGVuYW1lLi4uIEFkYXB0ZXJzPgotaW5saW5l
IHZvaWQgbWFrZVN0cmluZ0FjY3VtdWxhdG9yKFJlc3VsdFR5cGUqIHJlc3VsdCwgQWRhcHRlciBh
ZGFwdGVyLCBBZGFwdGVycyAuLi5hZGFwdGVycykKK2lubGluZSB2b2lkIHN0cmluZ1R5cGVBZGFw
dGVyQWNjdW11bGF0b3IoUmVzdWx0VHlwZSogcmVzdWx0LCBBZGFwdGVyIGFkYXB0ZXIsIEFkYXB0
ZXJzIC4uLmFkYXB0ZXJzKQogewogICAgIGFkYXB0ZXIud3JpdGVUbyhyZXN1bHQpOwotICAgIG1h
a2VTdHJpbmdBY2N1bXVsYXRvcihyZXN1bHQgKyBhZGFwdGVyLmxlbmd0aCgpLCBhZGFwdGVycy4u
Lik7CisgICAgc3RyaW5nVHlwZUFkYXB0ZXJBY2N1bXVsYXRvcihyZXN1bHQgKyBhZGFwdGVyLmxl
bmd0aCgpLCBhZGFwdGVycy4uLik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGVB
ZGFwdGVyLCB0eXBlbmFtZS4uLiBTdHJpbmdUeXBlQWRhcHRlcnM+CkBAIC0yNzYsNyArMjc2LDcg
QEAgU3RyaW5nIHRyeU1ha2VTdHJpbmdGcm9tQWRhcHRlcnMoU3RyaW5nVAogICAgICAgICBpZiAo
IXJlc3VsdEltcGwpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICAgICAgbWFr
ZVN0cmluZ0FjY3VtdWxhdG9yKGJ1ZmZlciwgYWRhcHRlciwgYWRhcHRlcnMuLi4pOworICAgICAg
ICBzdHJpbmdUeXBlQWRhcHRlckFjY3VtdWxhdG9yKGJ1ZmZlciwgYWRhcHRlciwgYWRhcHRlcnMu
Li4pOwogCiAgICAgICAgIHJldHVybiByZXN1bHRJbXBsOwogICAgIH0KQEAgLTI4Niw3ICsyODYs
NyBAQCBTdHJpbmcgdHJ5TWFrZVN0cmluZ0Zyb21BZGFwdGVycyhTdHJpbmdUCiAgICAgaWYgKCFy
ZXN1bHRJbXBsKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBtYWtlU3RyaW5nQWNj
dW11bGF0b3IoYnVmZmVyLCBhZGFwdGVyLCBhZGFwdGVycy4uLik7CisgICAgc3RyaW5nVHlwZUFk
YXB0ZXJBY2N1bXVsYXRvcihidWZmZXIsIGFkYXB0ZXIsIGFkYXB0ZXJzLi4uKTsKIAogICAgIHJl
dHVybiByZXN1bHRJbXBsOwogfQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ3MjU4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDctMDkgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTdHJpbmdCdWlsZGVyIG1lbWJlciBmdW5j
dGlvbiB3aGljaCBhbGxvd3MgbWFrZVN0cmluZygpIHN0eWxlIHZhcmlhZGljIGFyZ3VtZW50IGNv
bnN0cnVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk4OTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAg
QWRkIGJhc2ljIHRlc3Qgc2hvd2luZyB0aGF0IFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5k
IGNhbiBiZSB1c2VkIHRvIAorICAgICAgICBhcHBlbmQgb25lIG9yIG1vcmUgc3RyaW5nIGFkYXB0
YWJsZSB0eXBlcy4gCisKIDIwMTktMDctMDggIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtld3MtYnVpbGRdIERvIG5vdCBydW4gdW5peCBjb21tYW5kcyBm
b3Igd2luZG93cyBpbiBQcmludENvbmZpZ3VyYXRpb24KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCShyZXZpc2lvbiAyNDcyNTgpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE2LDYgKzExNiwyOSBAQCBURVNUKFN0cmluZ0J1aWxkZXJUZXN0LCBBcHBl
bmQpCiAgICAgfQogfQogCitURVNUKFN0cmluZ0J1aWxkZXJUZXN0LCBGbGV4aWJsZUFwcGVuZCkK
K3sKKyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRl
ci5mbGV4aWJsZUFwcGVuZChTdHJpbmcoIjAxMjM0NTY3ODkiKSk7CisgICAgICAgIGV4cGVjdEJ1
aWxkZXJDb250ZW50KCIwMTIzNDU2Nzg5IiwgYnVpbGRlcik7CisgICAgICAgIGJ1aWxkZXIuZmxl
eGlibGVBcHBlbmQoImFiY2QiKTsKKyAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0
NTY3ODlhYmNkIiwgYnVpbGRlcik7CisgICAgICAgIGJ1aWxkZXIuZmxleGlibGVBcHBlbmQoJ2Un
KTsKKyAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZSIsIGJ1aWxk
ZXIpOworICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIiKTsKKyAgICAgICAgZXhwZWN0
QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZSIsIGJ1aWxkZXIpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmZsZXhp
YmxlQXBwZW5kKFN0cmluZygiMDEyMzQ1Njc4OSIpLCAiYWJjZCIsICdlJywgIiIpOworICAgICAg
ICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OWFiY2RlIiwgYnVpbGRlcik7CisgICAg
ICAgIGJ1aWxkZXIuZmxleGlibGVBcHBlbmQoU3RyaW5nKCJBIiksICJCIiwgJ0MnLCAiIik7Cisg
ICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50KCIwMTIzNDU2Nzg5YWJjZGVBQkMiLCBidWlsZGVy
KTsKKyAgICB9Cit9CisKIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIFRvU3RyaW5nKQogewogICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373774</attachid>
            <date>2019-07-09 15:08:58 -0700</date>
            <delta_ts>2019-07-09 15:31:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198997-20190709150857.patch</filename>
            <type>text/plain</type>
            <size>13754</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDcyODEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE5LTA3LTA5ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU3RyaW5nQnVpbGRlciBtZW1iZXIgZnVuY3Rpb24g
d2hpY2ggYWxsb3dzIG1ha2VTdHJpbmcoKSBzdHlsZSB2YXJpYWRpYyBhcmd1bWVudCBjb25zdHJ1
Y3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODk5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZHMgbmV3IFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgbWVtYmVyIGZ1bmN0aW9u
IHdoaWNoIGFsbG93cyBwYXNzaW5nIG9uZSBvciBtb3JlIAorICAgICAgICBzdHJpbmctYWRhcHRh
YmxlIChpbiB0aGUgc2Vuc2UgdGhhdCB0aGVyZSBpcyBTdHJpbmdUeXBlQWRhcHRlciBzcGVjaWFs
aXphdGlvbiBmb3IgdGhlIAorICAgICAgICB0eXBlKSBwYXJhbWV0ZXJzLiBUaGlzIHJlLXVzdXNl
cyB0aGUgdmFyaWFkaWMgdGVtcGxhdGUgaW5mcmFzdHJ1Y3R1cmUgaW4gU3RyaW5nQ29uY2F0ZW5h
dGUuaAorICAgICAgICB0aGF0IGlzIHVzZWQgZm9yIG1ha2VTdHJpbmcoLi4uKSBhbGxvd2luZyBm
b3IgaW1wcm92ZW1lbnRzIGluIG9uZSB0byBiZW5lZml0IHRoZSBvdGhlci4KKworICAgICAgICBU
aGUgYWR2YW50YWdlIG9mIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgb3ZlciBj
YWxsaW5nIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pCisgICAgICAgIG11bHRpcGxlIHRpbWVz
IChiZXlvbmQgdGhlIGNvZGUgc2hhcmluZyB3aXRoIG1ha2VTdHJpbmcoLi4uKSBpcyB0aGF0IGl0
IGNhbiBhdm9pZCB1bm5lY2Vzc2FyeQorICAgICAgICBhZGRpdGlvbmFsIHJlLWFsbG9jYXRpb25z
IHdoZW4gdGhlIFN0cmluZ0J1aWxkZXIgbmVlZHMgdG8gZXhwYW5kIGl0J3MgY2FwYWNpdHkuIEl0
IGRvZXMgdGhpcworICAgICAgICBieSBjb21wdXRpbmcgdGhlIGNvbXBsZXRlIHJlcXVpcmVkIGxl
bmd0aCBmb3IgYWxsIHRoZSBwYXNzZWQgYXJndW1lbnRzIGFuZCB0aGVuIGVuc3VyaW5nIGVub3Vn
aAorICAgICAgICBjYXBhY2l0eSBpcyBhdmFpbGFibGUuIEl0IGFsc28gcmVkdWNlcyB0aGUgYWxs
b2NhdGlvbiBvdmVyaGVhZCB2ZXJzdXMgdGhlIGFudGktcGF0dGVybiBvZgorICAgICAgICBidWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKC4uLikpLgorCisgICAgICAgIElkZWFsbHksIHRoaXMgbWVt
YmVyIGZ1bmN0aW9uIHNob3VsZCBldmVudHVhbGx5IGp1c3QgYmUgY2FsbGVkIFN0cmluZ0J1aWxk
ZXI6OmFwcGVuZCguLi4pLCBidXQKKyAgICAgICAgdGhlIGN1cnJlbnQgb3ZlcmxvYWQgc2V0IGZv
ciBTdHJpbmdCdWlsZGVyOjphcHBlbmQoLi4uKSBtYWtlcyB0aGlzIGNvbXBsaWNhdGVkIGR1ZSB0
byBvdmVybG9hZHMKKyAgICAgICAgdGhhdCB0YWtlIHR3byBhcmd1bWVudHMgc3VjaCBhcyBTdHJp
bmdCdWlsZGVyOjphcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCkuIEdvaW5nIGZvcndhcmQs
IHdlCisgICAgICAgIHNob3VsZCByZW5hbWUgb3IgcmVtb3ZlIHRob3NlIG92ZXJsb2FkcyBhbmQg
bW92ZSB0byBhIHN0YW5kYXJkIGludGVyZmFjZS4gCisKKyAgICAgICAgKiB3dGYvcG9zaXgvRmls
ZVN5c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudHMpOgorICAgICAgICBBZG9wdCBTdHJpbmdCdWlsZGVyOjpmbGV4aWJs
ZUFwcGVuZCwgdXNpbmcgdG8gY29tYmluZSB0aGUgYXBwZW5kIG9mICcvJyBhbmQgY29tcG9uZW50
LgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHA6CisgICAgICAgIChXVEY6
OlN0cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoV1RGOjpTdHJp
bmdCdWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2spOgorICAg
ICAgICBFeHRyYWN0IHRoZSBwYXJ0IG9mIGFwcGVuZFVuaXRpYWxpemVkIHRoYXQgZG9lc24ndCBk
byB0aGUgb3ZlcmZsb3cgY2hlY2sKKyAgICAgICAgaW50byBpdCdzIG93biBtZW1iZXIgZnVuY3Rp
b24gdG8gYWxsb3cgY2FsbGVycyB0aGF0IGhhdmUgYWxyZWFkeSBkb25lIHRoZQorICAgICAgICBv
dmVyZmxvdyBjaGVjayB0byBieXBhc3MgaXQuCisKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRl
cjo6YXBwZW5kVW5pbml0aWFsaXplZFdpdGhvdXRPdmVyZmxvd0NoZWNrRm9yVUNoYXIpOgorICAg
ICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJm
bG93Q2hlY2tGb3JMQ2hhcik6CisgICAgICAgIEFkZGVkIHRvIGFsbG93IHRlbXBsYXRlIG1lbWJl
ciBmdW5jdGlvbiBmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyB0byBjYWxsCisgICAgICAgIGFw
cGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVjayB3aXRob3V0IG1vdmluZyBpdCB0
byB0aGUgaGVhZGVyLgorICAgICAgICAKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kRnJvbUFkYXB0
ZXJzKToKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmQpOgorICAg
ICAgICBNb2RlbGVkIG9uIHRyeU1ha2VTdHJpbmdGcm9tQWRhcHRlcnMgaW4gU3RyaW5nQ29uY2F0
ZW5hdGUuaCwgdGhlc2UKKyAgICAgICAgZWFnZXJseSBjb21wdXRlIHRoZSByZXF1aXJlZCBsZW5n
dGgsIGV4cGFuZCB0aGUgYnVmZmVyIGFuZCB0aGVuIHVzZQorICAgICAgICB0aGUgZXhpc3Rpbmcg
c3RyaW5nIHR5cGUgYWRhcHRvciBhY2N1bXVsYXRpb24gZnVuY3Rpb25zIHVzZWQgYnkgbWFrZVN0
cmluZy4gCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oOgorICAgICAg
ICAoV1RGOjpzdHJpbmdUeXBlQWRhcHRlckFjY3VtdWxhdG9yKToKKyAgICAgICAgKFdURjo6dHJ5
TWFrZVN0cmluZ0Zyb21BZGFwdGVycyk6CisgICAgICAgIChXVEY6Om1ha2VTdHJpbmdBY2N1bXVs
YXRvcik6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZXMgbWFrZVN0cmluZ0FjY3VtdWxhdG9yIHRv
IHN0cmluZ1R5cGVBZGFwdGVyQWNjdW11bGF0b3Igbm93IHRoYXQgaXQgaXMgdXNlZAorICAgICAg
ICBieSBtb3JlIHRoYW4ganVzdCBtYWtlU3RyaW5nLgorCiAyMDE5LTA3LTA5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgV2hlbiBwYXJzaW5n
IGFuIElQdjQgYWRkcmVzcywgd2FpdCB1bnRpbCBhZnRlciBkZWNpZGluZyBpdCBpcyBpbmRlZWQg
YW4gSVB2NCBhZGRyZXNzIGJlZm9yZSByZXBvcnRpbmcgc3ludGF4IHZpb2xhdGlvbnMKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAkocmV2aXNpb24gMjQ3Mjgx
KQorKysgU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAxLDEwICszMDEsOCBAQCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
cyhTdHJpbmdWCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGJ1aWxkZXIuYXBw
ZW5kKHBhdGgpOwotICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykgewotICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnLycpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChjb21wb25l
bnQpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHMpCisgICAg
ICAgIGJ1aWxkZXIuZmxleGlibGVBcHBlbmQoJy8nLCBjb21wb25lbnQpOwogICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
QnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmNwcAkocmV2aXNpb24gMjQ3MjgxKQorKysgU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMxLDIxICsyMzEsMjkgQEAgdm9pZCBTdHJp
bmdCdWlsZGVyOjpyZXNlcnZlQ2FwYWNpdHkodW5zaQogICAgIEFTU0VSVChoYXNPdmVyZmxvd2Vk
KCkgfHwgIW5ld0NhcGFjaXR5IHx8IG1fYnVmZmVyLT5sZW5ndGgoKSA+PSBuZXdDYXBhY2l0eSk7
CiB9CiAKLS8vIE1ha2UgJ2xlbmd0aCcgYWRkaXRpb25hbCBjYXBhY2l0eSBiZSBhdmFpbGFibGUg
aW4gbV9idWZmZXIsIHVwZGF0ZSBtX3N0cmluZyAmIG1fbGVuZ3RoLAorLy8gTWFrZSAnYWRkaXRp
b25hbExlbmd0aCcgYWRkaXRpb25hbCBjYXBhY2l0eSBiZSBhdmFpbGFibGUgaW4gbV9idWZmZXIs
IHVwZGF0ZSBtX3N0cmluZyAmIG1fbGVuZ3RoLAogLy8gcmV0dXJuIGEgcG9pbnRlciB0byB0aGUg
bmV3bHkgYWxsb2NhdGVkIHN0b3JhZ2UuCiAvLyBSZXR1cm5zIG51bGxwdHIgaWYgdGhlIHNpemUg
b2YgdGhlIG5ldyBidWlsZGVyIHdvdWxkIGhhdmUgb3ZlcmZsb3dlZAogdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJUeXBlPgotQUxXQVlTX0lOTElORSBDaGFyVHlwZSogU3RyaW5nQnVpbGRlcjo6YXBw
ZW5kVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitBTFdBWVNfSU5MSU5FIENoYXJUeXBl
KiBTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkKHVuc2lnbmVkIGFkZGl0aW9uYWxM
ZW5ndGgpCiB7Ci0gICAgQVNTRVJUKGxlbmd0aCk7CisgICAgQVNTRVJUKGFkZGl0aW9uYWxMZW5n
dGgpOwogCiAgICAgLy8gQ2FsY3VsYXRlIHRoZSBuZXcgc2l6ZSBvZiB0aGUgYnVpbGRlciBhZnRl
ciBhcHBlbmRpbmcuCi0gICAgQ2hlY2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoID0gbV9sZW5ndGgg
KyBsZW5ndGg7CisgICAgQ2hlY2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoID0gbV9sZW5ndGggKyBh
ZGRpdGlvbmFsTGVuZ3RoOwogICAgIGlmIChyZXF1aXJlZExlbmd0aC5oYXNPdmVyZmxvd2VkKCkp
IHsKICAgICAgICAgZGlkT3ZlcmZsb3coKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCisgICAgcmV0dXJuIGFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVjazxD
aGFyVHlwZT4ocmVxdWlyZWRMZW5ndGgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5
cGU+CitBTFdBWVNfSU5MSU5FIENoYXJUeXBlKiBTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRp
YWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2soQ2hlY2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoKQor
eworICAgIEFTU0VSVCghcmVxdWlyZWRMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKTsKKwogICAgIGlm
IChtX2J1ZmZlciAmJiAocmVxdWlyZWRMZW5ndGgudW5zYWZlR2V0PHVuc2lnbmVkPigpIDw9IG1f
YnVmZmVyLT5sZW5ndGgoKSkpIHsKICAgICAgICAgLy8gSWYgdGhlIGJ1ZmZlciBpcyB2YWxpZCBp
dCBtdXN0IGJlIGF0IGxlYXN0IGFzIGxvbmcgYXMgdGhlIGN1cnJlbnQgYnVpbGRlciBjb250ZW50
cyEKICAgICAgICAgQVNTRVJUKG1fYnVmZmVyLT5sZW5ndGgoKSA+PSBtX2xlbmd0aC51bnNhZmVH
ZXQ8dW5zaWduZWQ+KCkpOwpAQCAtMjU4LDcgKzI2NiwxNyBAQCBBTFdBWVNfSU5MSU5FIENoYXJU
eXBlKiBTdHJpbmdCdWlsZGVyOjphCiAgICAgcmV0dXJuIGFwcGVuZFVuaW5pdGlhbGl6ZWRTbG93
PENoYXJUeXBlPihyZXF1aXJlZExlbmd0aC51bnNhZmVHZXQoKSk7CiB9CiAKLS8vIE1ha2UgJ2xl
bmd0aCcgYWRkaXRpb25hbCBjYXBhY2l0eSBiZSBhdmFpbGFibGUgaW4gbV9idWZmZXIsIHVwZGF0
ZSBtX3N0cmluZyAmIG1fbGVuZ3RoLAorVUNoYXIqIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5p
dGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVja0ZvclVDaGFyKENoZWNrZWRJbnQzMiByZXF1aXJl
ZExlbmd0aCkKK3sKKyAgICByZXR1cm4gYXBwZW5kVW5pbml0aWFsaXplZFdpdGhvdXRPdmVyZmxv
d0NoZWNrPFVDaGFyPihyZXF1aXJlZExlbmd0aCk7Cit9CisKK0xDaGFyKiBTdHJpbmdCdWlsZGVy
OjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2tGb3JMQ2hhcihDaGVja2Vk
SW50MzIgcmVxdWlyZWRMZW5ndGgpCit7CisgICAgcmV0dXJuIGFwcGVuZFVuaW5pdGlhbGl6ZWRX
aXRob3V0T3ZlcmZsb3dDaGVjazxMQ2hhcj4ocmVxdWlyZWRMZW5ndGgpOworfQorCisvLyBNYWtl
ICdyZXF1aXJlZExlbmd0aCcgY2FwYWNpdHkgYmUgYXZhaWxhYmxlIGluIG1fYnVmZmVyLCB1cGRh
dGUgbV9zdHJpbmcgJiBtX2xlbmd0aCwKIC8vIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIG5ld2x5
IGFsbG9jYXRlZCBzdG9yYWdlLgogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogQ2hhclR5
cGUqIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWRTbG93KHVuc2lnbmVkIHJlcXVp
cmVkTGVuZ3RoKQpJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgJKHJldmlzaW9u
IDI0NzI4MSkKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzEsNiArMjMxLDkgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoZmxvYXQsIHVuc2lnbmVkIGRlY2ltYWxQbGFj
ZXMpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZEZpeGVkV2lkdGhOdW1iZXIo
ZG91YmxlLCB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzKTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIFN0cmluZ1R5cGVzPgorICAgIHZvaWQgZmxleGlibGVBcHBlbmQoU3RyaW5nVHlwZXMgLi4u
c3RyaW5ncyk7CisKICAgICBTdHJpbmcgdG9TdHJpbmcoKQogICAgIHsKICAgICAgICAgaWYgKCFt
X3N0cmluZy5pc051bGwoKSkgewpAQCAtMzUwLDE2ICszNTMsMjEgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGFsbG9jYXRlQnVmZmVyKGNvbnN0IExDaGFyKiBjdXJyZW50Q2hhcmFjdGVycywgdW5zaWdu
ZWQgcmVxdWlyZWRMZW5ndGgpOwogICAgIHZvaWQgYWxsb2NhdGVCdWZmZXIoY29uc3QgVUNoYXIq
IGN1cnJlbnRDaGFyYWN0ZXJzLCB1bnNpZ25lZCByZXF1aXJlZExlbmd0aCk7CiAgICAgdm9pZCBh
bGxvY2F0ZUJ1ZmZlclVwQ29udmVydChjb25zdCBMQ2hhciogY3VycmVudENoYXJhY3RlcnMsIHVu
c2lnbmVkIHJlcXVpcmVkTGVuZ3RoKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+
IHZvaWQgcmVhbGxvY2F0ZUJ1ZmZlcih1bnNpZ25lZCByZXF1aXJlZExlbmd0aCk7CisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBBTFdBWVNfSU5MSU5FIENoYXJUeXBlKiBhcHBlbmRV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGFkZGl0aW9uYWxMZW5ndGgpOworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyVHlwZT4gQUxXQVlTX0lOTElORSBDaGFyVHlwZSogYXBwZW5kVW5pbml0aWFs
aXplZFdpdGhvdXRPdmVyZmxvd0NoZWNrKENoZWNrZWRJbnQzMiByZXF1aXJlZExlbmd0aCk7Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBDaGFyVHlwZSogYXBwZW5kVW5pbml0aWFs
aXplZFNsb3codW5zaWduZWQgcmVxdWlyZWRMZW5ndGgpOworICAgIAorICAgIFdURl9FWFBPUlRf
UFJJVkFURSBVQ2hhciogYXBwZW5kVW5pbml0aWFsaXplZFdpdGhvdXRPdmVyZmxvd0NoZWNrRm9y
VUNoYXIoQ2hlY2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgTENoYXIqIGFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVja0ZvckxDaGFy
KENoZWNrZWRJbnQzMiByZXF1aXJlZExlbmd0aCk7CisgICAgCiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJUeXBlPgotICAgIHZvaWQgcmVhbGxvY2F0ZUJ1ZmZlcih1bnNpZ25lZCByZXF1aXJl
ZExlbmd0aCk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIEFMV0FZU19J
TkxJTkUgQ2hhclR5cGUqIGFwcGVuZFVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgQ2hhclR5cGUqIGFwcGVuZFVuaW5p
dGlhbGl6ZWRTbG93KHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJUeXBlPgotICAgIEFMV0FZU19JTkxJTkUgQ2hhclR5cGUgKiBnZXRCdWZmZXJDaGFyYWN0ZXJz
KCk7CisgICAgQUxXQVlTX0lOTElORSBDaGFyVHlwZSogZ2V0QnVmZmVyQ2hhcmFjdGVycygpOwog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlaWZ5U3RyaW5nKCkgY29uc3Q7CiAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlQWRhcHRlcnM+CisgICAgdm9pZCBmbGV4aWJs
ZUFwcGVuZEZyb21BZGFwdGVycyhTdHJpbmdUeXBlQWRhcHRlcnMgLi4uYWRhcHRlcnMpOworCiAg
ICAgbXV0YWJsZSBTdHJpbmcgbV9zdHJpbmc7CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1fYnVm
ZmVyOwogICAgIHVuaW9uIHsKQEAgLTM4OCw2ICszOTYsMzggQEAgQUxXQVlTX0lOTElORSBVQ2hh
ciogU3RyaW5nQnVpbGRlcjo6Z2V0QgogICAgIHJldHVybiBtX2J1ZmZlckNoYXJhY3RlcnMxNjsK
IH0KIAordGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5nVHlwZUFkYXB0ZXJzPgordm9pZCBTdHJp
bmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyhTdHJpbmdUeXBlQWRhcHRlcnMg
Li4uYWRhcHRlcnMpCit7CisgICAgYXV0byByZXF1aXJlZExlbmd0aCA9IGNoZWNrZWRTdW08aW50
MzJfdD4obV9sZW5ndGgsIGFkYXB0ZXJzLmxlbmd0aCgpLi4uKTsKKyAgICBpZiAocmVxdWlyZWRM
ZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgICAgIGRpZE92ZXJmbG93KCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9pczhCaXQgJiYgYXJlOEJpdChhZGFwdGVycy4u
LikpIHsKKyAgICAgICAgTENoYXIqIGRlc3QgPSBhcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92
ZXJmbG93Q2hlY2tGb3JMQ2hhcihyZXF1aXJlZExlbmd0aCk7CisgICAgICAgIGlmICghZGVzdCkg
eworICAgICAgICAgICAgQVNTRVJUKGhhc092ZXJmbG93ZWQoKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgc3RyaW5nVHlwZUFkYXB0ZXJBY2N1bXVsYXRvcihkZXN0
LCBhZGFwdGVycy4uLik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgVUNoYXIqIGRlc3QgPSBhcHBl
bmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2tGb3JVQ2hhcihyZXF1aXJlZExlbmd0
aCk7CisgICAgICAgIGlmICghZGVzdCkgeworICAgICAgICAgICAgQVNTRVJUKGhhc092ZXJmbG93
ZWQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc3RyaW5nVHlw
ZUFkYXB0ZXJBY2N1bXVsYXRvcihkZXN0LCBhZGFwdGVycy4uLik7CisgICAgfQorfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4KK3ZvaWQgU3RyaW5nQnVpbGRlcjo6ZmxleGli
bGVBcHBlbmQoU3RyaW5nVHlwZXMuLi4gc3RyaW5ncykKK3sKKyAgICBmbGV4aWJsZUFwcGVuZEZy
b21BZGFwdGVycyhTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlcz4oc3RyaW5ncykuLi4pOwor
fQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiBib29sIGVxdWFsKGNvbnN0IFN0cmlu
Z0J1aWxkZXImIHMsIGNvbnN0IENoYXJUeXBlKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkKIHsK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgJKHJldmlzaW9uIDI0
NzI4MSkKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ4LDE2ICsyNDgsMTYgQEAgaW5saW5lIGJvb2wgYXJlOEJpdChBZGFwdGVy
IGFkYXB0ZXIsIEFkYQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBlbmFt
ZSBBZGFwdGVyPgotaW5saW5lIHZvaWQgbWFrZVN0cmluZ0FjY3VtdWxhdG9yKFJlc3VsdFR5cGUq
IHJlc3VsdCwgQWRhcHRlciBhZGFwdGVyKQoraW5saW5lIHZvaWQgc3RyaW5nVHlwZUFkYXB0ZXJB
Y2N1bXVsYXRvcihSZXN1bHRUeXBlKiByZXN1bHQsIEFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBh
ZGFwdGVyLndyaXRlVG8ocmVzdWx0KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlw
ZSwgdHlwZW5hbWUgQWRhcHRlciwgdHlwZW5hbWUuLi4gQWRhcHRlcnM+Ci1pbmxpbmUgdm9pZCBt
YWtlU3RyaW5nQWNjdW11bGF0b3IoUmVzdWx0VHlwZSogcmVzdWx0LCBBZGFwdGVyIGFkYXB0ZXIs
IEFkYXB0ZXJzIC4uLmFkYXB0ZXJzKQoraW5saW5lIHZvaWQgc3RyaW5nVHlwZUFkYXB0ZXJBY2N1
bXVsYXRvcihSZXN1bHRUeXBlKiByZXN1bHQsIEFkYXB0ZXIgYWRhcHRlciwgQWRhcHRlcnMgLi4u
YWRhcHRlcnMpCiB7CiAgICAgYWRhcHRlci53cml0ZVRvKHJlc3VsdCk7Ci0gICAgbWFrZVN0cmlu
Z0FjY3VtdWxhdG9yKHJlc3VsdCArIGFkYXB0ZXIubGVuZ3RoKCksIGFkYXB0ZXJzLi4uKTsKKyAg
ICBzdHJpbmdUeXBlQWRhcHRlckFjY3VtdWxhdG9yKHJlc3VsdCArIGFkYXB0ZXIubGVuZ3RoKCks
IGFkYXB0ZXJzLi4uKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZUFkYXB0ZXIs
IHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVBZGFwdGVycz4KQEAgLTI3Niw3ICsyNzYsNyBAQCBTdHJp
bmcgdHJ5TWFrZVN0cmluZ0Zyb21BZGFwdGVycyhTdHJpbmdUCiAgICAgICAgIGlmICghcmVzdWx0
SW1wbCkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgICAgICBtYWtlU3RyaW5n
QWNjdW11bGF0b3IoYnVmZmVyLCBhZGFwdGVyLCBhZGFwdGVycy4uLik7CisgICAgICAgIHN0cmlu
Z1R5cGVBZGFwdGVyQWNjdW11bGF0b3IoYnVmZmVyLCBhZGFwdGVyLCBhZGFwdGVycy4uLik7CiAK
ICAgICAgICAgcmV0dXJuIHJlc3VsdEltcGw7CiAgICAgfQpAQCAtMjg2LDcgKzI4Niw3IEBAIFN0
cmluZyB0cnlNYWtlU3RyaW5nRnJvbUFkYXB0ZXJzKFN0cmluZ1QKICAgICBpZiAoIXJlc3VsdElt
cGwpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIG1ha2VTdHJpbmdBY2N1bXVsYXRv
cihidWZmZXIsIGFkYXB0ZXIsIGFkYXB0ZXJzLi4uKTsKKyAgICBzdHJpbmdUeXBlQWRhcHRlckFj
Y3VtdWxhdG9yKGJ1ZmZlciwgYWRhcHRlciwgYWRhcHRlcnMuLi4pOwogCiAgICAgcmV0dXJuIHJl
c3VsdEltcGw7CiB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNDcyODEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wNy0wOSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIFN0cmluZ0J1aWxkZXIgbWVtYmVyIGZ1bmN0aW9uIHdo
aWNoIGFsbG93cyBtYWtlU3RyaW5nKCkgc3R5bGUgdmFyaWFkaWMgYXJndW1lbnQgY29uc3RydWN0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg5
OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwOgorICAgICAgICBBZGQgYmFz
aWMgdGVzdCBzaG93aW5nIHRoYXQgU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmQgY2FuIGJl
IHVzZWQgdG8gCisgICAgICAgIGFwcGVuZCBvbmUgb3IgbW9yZSBzdHJpbmcgYWRhcHRhYmxlIHR5
cGVzLiAKKwogMjAxOS0wNy0wOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAog
ICAgICAgICBPbmx5IGFsbG93IGZldGNoaW5nIGFuZCByZW1vdmluZyBzZXNzaW9uIGNyZWRlbnRp
YWxzIGZyb20gV2Vic2l0ZURhdGFTdG9yZQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9uIDI0NzI4MSkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTYsNiArMTE2LDI5IEBAIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIEFwcGVuZCkKICAg
ICB9CiB9CiAKK1RFU1QoU3RyaW5nQnVpbGRlclRlc3QsIEZsZXhpYmxlQXBwZW5kKQoreworICAg
IHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmZsZXhp
YmxlQXBwZW5kKFN0cmluZygiMDEyMzQ1Njc4OSIpKTsKKyAgICAgICAgZXhwZWN0QnVpbGRlckNv
bnRlbnQoIjAxMjM0NTY3ODkiLCBidWlsZGVyKTsKKyAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgiYWJjZCIpOworICAgICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OWFi
Y2QiLCBidWlsZGVyKTsKKyAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnZScpOworICAg
ICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OWFiY2RlIiwgYnVpbGRlcik7Cisg
ICAgICAgIGJ1aWxkZXIuZmxleGlibGVBcHBlbmQoIiIpOworICAgICAgICBleHBlY3RCdWlsZGVy
Q29udGVudCgiMDEyMzQ1Njc4OWFiY2RlIiwgYnVpbGRlcik7CisgICAgfQorCisgICAgeworICAg
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuZmxleGlibGVBcHBl
bmQoU3RyaW5nKCIwMTIzNDU2Nzg5IiksICJhYmNkIiwgJ2UnLCAiIik7CisgICAgICAgIGV4cGVj
dEJ1aWxkZXJDb250ZW50KCIwMTIzNDU2Nzg5YWJjZGUiLCBidWlsZGVyKTsKKyAgICAgICAgYnVp
bGRlci5mbGV4aWJsZUFwcGVuZChTdHJpbmcoIkEiKSwgIkIiLCAnQycsICIiKTsKKyAgICAgICAg
ZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZUFCQyIsIGJ1aWxkZXIpOworICAg
IH0KK30KKwogVEVTVChTdHJpbmdCdWlsZGVyVGVzdCwgVG9TdHJpbmcpCiB7CiAgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373782</attachid>
            <date>2019-07-09 15:31:42 -0700</date>
            <delta_ts>2019-07-17 10:07:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198997-20190709153141.patch</filename>
            <type>text/plain</type>
            <size>16848</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDcyODEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE5LTA3LTA5ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU3RyaW5nQnVpbGRlciBtZW1iZXIgZnVuY3Rpb24g
d2hpY2ggYWxsb3dzIG1ha2VTdHJpbmcoKSBzdHlsZSB2YXJpYWRpYyBhcmd1bWVudCBjb25zdHJ1
Y3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODk5NworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZHMg
bmV3IFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgbWVtYmVyIGZ1bmN0aW9uIHdo
aWNoIGFsbG93cyBwYXNzaW5nIG9uZSBvciBtb3JlIAorICAgICAgICBzdHJpbmctYWRhcHRhYmxl
IChpbiB0aGUgc2Vuc2UgdGhhdCB0aGVyZSBpcyBTdHJpbmdUeXBlQWRhcHRlciBzcGVjaWFsaXph
dGlvbiBmb3IgdGhlIAorICAgICAgICB0eXBlKSBwYXJhbWV0ZXJzLiBUaGlzIHJlLXVzdXNlcyB0
aGUgdmFyaWFkaWMgdGVtcGxhdGUgaW5mcmFzdHJ1Y3R1cmUgaW4gU3RyaW5nQ29uY2F0ZW5hdGUu
aAorICAgICAgICB0aGF0IGlzIHVzZWQgZm9yIG1ha2VTdHJpbmcoLi4uKSBhbGxvd2luZyBmb3Ig
aW1wcm92ZW1lbnRzIGluIG9uZSB0byBiZW5lZml0IHRoZSBvdGhlci4KKworICAgICAgICBUaGUg
YWR2YW50YWdlIG9mIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgb3ZlciBjYWxs
aW5nIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pCisgICAgICAgIG11bHRpcGxlIHRpbWVzIChi
ZXlvbmQgdGhlIGNvZGUgc2hhcmluZyB3aXRoIG1ha2VTdHJpbmcoLi4uKSBpcyB0aGF0IGl0IGNh
biBhdm9pZCB1bm5lY2Vzc2FyeQorICAgICAgICBhZGRpdGlvbmFsIHJlLWFsbG9jYXRpb25zIHdo
ZW4gdGhlIFN0cmluZ0J1aWxkZXIgbmVlZHMgdG8gZXhwYW5kIGl0J3MgY2FwYWNpdHkuIEl0IGRv
ZXMgdGhpcworICAgICAgICBieSBjb21wdXRpbmcgdGhlIGNvbXBsZXRlIHJlcXVpcmVkIGxlbmd0
aCBmb3IgYWxsIHRoZSBwYXNzZWQgYXJndW1lbnRzIGFuZCB0aGVuIGVuc3VyaW5nIGVub3VnaAor
ICAgICAgICBjYXBhY2l0eSBpcyBhdmFpbGFibGUuIEl0IGFsc28gcmVkdWNlcyB0aGUgYWxsb2Nh
dGlvbiBvdmVyaGVhZCB2ZXJzdXMgdGhlIGFudGktcGF0dGVybiBvZgorICAgICAgICBidWlsZGVy
LmFwcGVuZChtYWtlU3RyaW5nKC4uLikpLgorCisgICAgICAgIElkZWFsbHksIHRoaXMgbWVtYmVy
IGZ1bmN0aW9uIHNob3VsZCBldmVudHVhbGx5IGp1c3QgYmUgY2FsbGVkIFN0cmluZ0J1aWxkZXI6
OmFwcGVuZCguLi4pLCBidXQKKyAgICAgICAgdGhlIGN1cnJlbnQgb3ZlcmxvYWQgc2V0IGZvciBT
dHJpbmdCdWlsZGVyOjphcHBlbmQoLi4uKSBtYWtlcyB0aGlzIGNvbXBsaWNhdGVkIGR1ZSB0byBv
dmVybG9hZHMKKyAgICAgICAgdGhhdCB0YWtlIHR3byBhcmd1bWVudHMgc3VjaCBhcyBTdHJpbmdC
dWlsZGVyOjphcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCkuIEdvaW5nIGZvcndhcmQsIHdl
CisgICAgICAgIHNob3VsZCByZW5hbWUgb3IgcmVtb3ZlIHRob3NlIG92ZXJsb2FkcyBhbmQgbW92
ZSB0byBhIHN0YW5kYXJkIGludGVyZmFjZS4gCisKKyAgICAgICAgKiB3dGYvcG9zaXgvRmlsZVN5
c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHMpOgorICAgICAgICBBZG9wdCBTdHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFw
cGVuZCwgdXNpbmcgdG8gY29tYmluZSB0aGUgYXBwZW5kIG9mICcvJyBhbmQgY29tcG9uZW50Lgor
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHA6CisgICAgICAgIChXVEY6OlN0
cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoV1RGOjpTdHJpbmdC
dWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2spOgorICAgICAg
ICBFeHRyYWN0IHRoZSBwYXJ0IG9mIGFwcGVuZFVuaXRpYWxpemVkIHRoYXQgZG9lc24ndCBkbyB0
aGUgb3ZlcmZsb3cgY2hlY2sKKyAgICAgICAgaW50byBpdCdzIG93biBtZW1iZXIgZnVuY3Rpb24g
dG8gYWxsb3cgY2FsbGVycyB0aGF0IGhhdmUgYWxyZWFkeSBkb25lIHRoZQorICAgICAgICBvdmVy
ZmxvdyBjaGVjayB0byBieXBhc3MgaXQuCisKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6
YXBwZW5kVW5pbml0aWFsaXplZFdpdGhvdXRPdmVyZmxvd0NoZWNrRm9yVUNoYXIpOgorICAgICAg
ICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93
Q2hlY2tGb3JMQ2hhcik6CisgICAgICAgIEFkZGVkIHRvIGFsbG93IHRlbXBsYXRlIG1lbWJlciBm
dW5jdGlvbiBmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyB0byBjYWxsCisgICAgICAgIGFwcGVu
ZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVjayB3aXRob3V0IG1vdmluZyBpdCB0byB0
aGUgaGVhZGVyLgorICAgICAgICAKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6
CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kRnJvbUFkYXB0ZXJz
KToKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmQpOgorICAgICAg
ICBNb2RlbGVkIG9uIHRyeU1ha2VTdHJpbmdGcm9tQWRhcHRlcnMgaW4gU3RyaW5nQ29uY2F0ZW5h
dGUuaCwgdGhlc2UKKyAgICAgICAgZWFnZXJseSBjb21wdXRlIHRoZSByZXF1aXJlZCBsZW5ndGgs
IGV4cGFuZCB0aGUgYnVmZmVyIGFuZCB0aGVuIHVzZQorICAgICAgICB0aGUgZXhpc3Rpbmcgc3Ry
aW5nIHR5cGUgYWRhcHRvciBhY2N1bXVsYXRpb24gZnVuY3Rpb25zIHVzZWQgYnkgbWFrZVN0cmlu
Zy4gCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oOgorICAgICAgICAo
V1RGOjpzdHJpbmdUeXBlQWRhcHRlckFjY3VtdWxhdG9yKToKKyAgICAgICAgKFdURjo6dHJ5TWFr
ZVN0cmluZ0Zyb21BZGFwdGVycyk6CisgICAgICAgIChXVEY6Om1ha2VTdHJpbmdBY2N1bXVsYXRv
cik6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZXMgbWFrZVN0cmluZ0FjY3VtdWxhdG9yIHRvIHN0
cmluZ1R5cGVBZGFwdGVyQWNjdW11bGF0b3Igbm93IHRoYXQgaXQgaXMgdXNlZAorICAgICAgICBi
eSBtb3JlIHRoYW4ganVzdCBtYWtlU3RyaW5nLgorCiAyMDE5LTA3LTA5ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgV2hlbiBwYXJzaW5nIGFu
IElQdjQgYWRkcmVzcywgd2FpdCB1bnRpbCBhZnRlciBkZWNpZGluZyBpdCBpcyBpbmRlZWQgYW4g
SVB2NCBhZGRyZXNzIGJlZm9yZSByZXBvcnRpbmcgc3ludGF4IHZpb2xhdGlvbnMKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAkocmV2aXNpb24gMjQ3MjgxKQor
KysgU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAxLDEwICszMDEsOCBAQCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhT
dHJpbmdWCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGJ1aWxkZXIuYXBwZW5k
KHBhdGgpOwotICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykgewotICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnLycpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChjb21wb25lbnQp
OwotICAgIH0KKyAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHMpCisgICAgICAg
IGJ1aWxkZXIuZmxleGlibGVBcHBlbmQoJy8nLCBjb21wb25lbnQpOwogICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVy
LmNwcAkocmV2aXNpb24gMjQ3MjgxKQorKysgU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgU3RyaW5nQnVp
bGRlcjo6YWxsb2NhdGVCdWZmZXJVcENvbnYKICAgICBBU1NFUlQobV9idWZmZXItPmxlbmd0aCgp
ID09IHJlcXVpcmVkTGVuZ3RoKTsKIH0KIAotdGVtcGxhdGUgPD4KK3RlbXBsYXRlPD4KIHZvaWQg
U3RyaW5nQnVpbGRlcjo6cmVhbGxvY2F0ZUJ1ZmZlcjxMQ2hhcj4odW5zaWduZWQgcmVxdWlyZWRM
ZW5ndGgpCiB7CiAgICAgLy8gSWYgdGhlIGJ1ZmZlciBoYXMgb25seSBvbmUgcmVmIChieSB0aGlz
IFN0cmluZ0J1aWxkZXIpLCByZWFsbG9jYXRlIGl0LApAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQg
U3RyaW5nQnVpbGRlcjo6cmVhbGxvY2F0ZUJ1ZmZlcjxMQ2gKICAgICBBU1NFUlQoaGFzT3ZlcmZs
b3dlZCgpIHx8IG1fYnVmZmVyLT5sZW5ndGgoKSA9PSByZXF1aXJlZExlbmd0aCk7CiB9CiAKLXRl
bXBsYXRlIDw+Cit0ZW1wbGF0ZTw+CiB2b2lkIFN0cmluZ0J1aWxkZXI6OnJlYWxsb2NhdGVCdWZm
ZXI8VUNoYXI+KHVuc2lnbmVkIHJlcXVpcmVkTGVuZ3RoKQogewogICAgIC8vIElmIHRoZSBidWZm
ZXIgaGFzIG9ubHkgb25lIHJlZiAoYnkgdGhpcyBTdHJpbmdCdWlsZGVyKSwgcmVhbGxvY2F0ZSBp
dCwKQEAgLTIzMSwzNyArMjMxLDU1IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6cmVzZXJ2ZUNhcGFj
aXR5KHVuc2kKICAgICBBU1NFUlQoaGFzT3ZlcmZsb3dlZCgpIHx8ICFuZXdDYXBhY2l0eSB8fCBt
X2J1ZmZlci0+bGVuZ3RoKCkgPj0gbmV3Q2FwYWNpdHkpOwogfQogCi0vLyBNYWtlICdsZW5ndGgn
IGFkZGl0aW9uYWwgY2FwYWNpdHkgYmUgYXZhaWxhYmxlIGluIG1fYnVmZmVyLCB1cGRhdGUgbV9z
dHJpbmcgJiBtX2xlbmd0aCwKKy8vIE1ha2UgJ2FkZGl0aW9uYWxMZW5ndGgnIGFkZGl0aW9uYWwg
Y2FwYWNpdHkgYmUgYXZhaWxhYmxlIGluIG1fYnVmZmVyLCB1cGRhdGUgbV9zdHJpbmcgJiBtX2xl
bmd0aCwKIC8vIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIG5ld2x5IGFsbG9jYXRlZCBzdG9yYWdl
LgogLy8gUmV0dXJucyBudWxscHRyIGlmIHRoZSBzaXplIG9mIHRoZSBuZXcgYnVpbGRlciB3b3Vs
ZCBoYXZlIG92ZXJmbG93ZWQKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUFMV0FZU19J
TkxJTkUgQ2hhclR5cGUqIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJ
TkUgQ2hhcmFjdGVyVHlwZSogU3RyaW5nQnVpbGRlcjo6YXBwZW5kVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBhZGRpdGlvbmFsTGVuZ3RoKQogewotICAgIEFTU0VSVChsZW5ndGgpOworICAgIEFTU0VS
VChhZGRpdGlvbmFsTGVuZ3RoKTsKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgbmV3IHNpemUgb2Yg
dGhlIGJ1aWxkZXIgYWZ0ZXIgYXBwZW5kaW5nLgotICAgIENoZWNrZWRJbnQzMiByZXF1aXJlZExl
bmd0aCA9IG1fbGVuZ3RoICsgbGVuZ3RoOworICAgIENoZWNrZWRJbnQzMiByZXF1aXJlZExlbmd0
aCA9IG1fbGVuZ3RoICsgYWRkaXRpb25hbExlbmd0aDsKICAgICBpZiAocmVxdWlyZWRMZW5ndGgu
aGFzT3ZlcmZsb3dlZCgpKSB7CiAgICAgICAgIGRpZE92ZXJmbG93KCk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAorICAgIHJldHVybiBhcHBlbmRVbmluaXRpYWxpemVkV2l0aG91
dE92ZXJmbG93Q2hlY2s8Q2hhcmFjdGVyVHlwZT4ocmVxdWlyZWRMZW5ndGgpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElORSBDaGFyYWN0ZXJUeXBl
KiBTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2so
Q2hlY2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoKQoreworICAgIEFTU0VSVCghcmVxdWlyZWRMZW5n
dGguaGFzT3ZlcmZsb3dlZCgpKTsKKwogICAgIGlmIChtX2J1ZmZlciAmJiAocmVxdWlyZWRMZW5n
dGgudW5zYWZlR2V0PHVuc2lnbmVkPigpIDw9IG1fYnVmZmVyLT5sZW5ndGgoKSkpIHsKICAgICAg
ICAgLy8gSWYgdGhlIGJ1ZmZlciBpcyB2YWxpZCBpdCBtdXN0IGJlIGF0IGxlYXN0IGFzIGxvbmcg
YXMgdGhlIGN1cnJlbnQgYnVpbGRlciBjb250ZW50cyEKICAgICAgICAgQVNTRVJUKG1fYnVmZmVy
LT5sZW5ndGgoKSA+PSBtX2xlbmd0aC51bnNhZmVHZXQ8dW5zaWduZWQ+KCkpOwogICAgICAgICB1
bnNpZ25lZCBjdXJyZW50TGVuZ3RoID0gbV9sZW5ndGgudW5zYWZlR2V0KCk7CiAgICAgICAgIG1f
c3RyaW5nID0gU3RyaW5nKCk7CiAgICAgICAgIG1fbGVuZ3RoID0gcmVxdWlyZWRMZW5ndGg7Ci0g
ICAgICAgIHJldHVybiBnZXRCdWZmZXJDaGFyYWN0ZXJzPENoYXJUeXBlPigpICsgY3VycmVudExl
bmd0aDsKKyAgICAgICAgcmV0dXJuIGdldEJ1ZmZlckNoYXJhY3RlcnM8Q2hhcmFjdGVyVHlwZT4o
KSArIGN1cnJlbnRMZW5ndGg7CiAgICAgfQogICAgIAotICAgIHJldHVybiBhcHBlbmRVbmluaXRp
YWxpemVkU2xvdzxDaGFyVHlwZT4ocmVxdWlyZWRMZW5ndGgudW5zYWZlR2V0KCkpOworICAgIHJl
dHVybiBhcHBlbmRVbmluaXRpYWxpemVkU2xvdzxDaGFyYWN0ZXJUeXBlPihyZXF1aXJlZExlbmd0
aC51bnNhZmVHZXQoKSk7Cit9CisKK1VDaGFyKiBTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRp
YWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2tGb3JVQ2hhcihDaGVja2VkSW50MzIgcmVxdWlyZWRM
ZW5ndGgpCit7CisgICAgcmV0dXJuIGFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dD
aGVjazxVQ2hhcj4ocmVxdWlyZWRMZW5ndGgpOworfQorCitMQ2hhciogU3RyaW5nQnVpbGRlcjo6
YXBwZW5kVW5pbml0aWFsaXplZFdpdGhvdXRPdmVyZmxvd0NoZWNrRm9yTENoYXIoQ2hlY2tlZElu
dDMyIHJlcXVpcmVkTGVuZ3RoKQoreworICAgIHJldHVybiBhcHBlbmRVbmluaXRpYWxpemVkV2l0
aG91dE92ZXJmbG93Q2hlY2s8TENoYXI+KHJlcXVpcmVkTGVuZ3RoKTsKIH0KIAotLy8gTWFrZSAn
bGVuZ3RoJyBhZGRpdGlvbmFsIGNhcGFjaXR5IGJlIGF2YWlsYWJsZSBpbiBtX2J1ZmZlciwgdXBk
YXRlIG1fc3RyaW5nICYgbV9sZW5ndGgsCisvLyBNYWtlICdyZXF1aXJlZExlbmd0aCcgY2FwYWNp
dHkgYmUgYXZhaWxhYmxlIGluIG1fYnVmZmVyLCB1cGRhdGUgbV9zdHJpbmcgJiBtX2xlbmd0aCwK
IC8vIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIG5ld2x5IGFsbG9jYXRlZCBzdG9yYWdlLgotdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotQ2hhclR5cGUqIFN0cmluZ0J1aWxkZXI6OmFwcGVu
ZFVuaW5pdGlhbGl6ZWRTbG93KHVuc2lnbmVkIHJlcXVpcmVkTGVuZ3RoKQordGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0NoYXJhY3RlclR5cGUqIFN0cmluZ0J1aWxkZXI6OmFwcGVu
ZFVuaW5pdGlhbGl6ZWRTbG93KHVuc2lnbmVkIHJlcXVpcmVkTGVuZ3RoKQogewogICAgIEFTU0VS
VCghaGFzT3ZlcmZsb3dlZCgpKTsKICAgICBBU1NFUlQocmVxdWlyZWRMZW5ndGgpOwpAQCAtMjcw
LDE1ICsyODgsMTUgQEAgQ2hhclR5cGUqIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbAog
ICAgICAgICAvLyBJZiB0aGUgYnVmZmVyIGlzIHZhbGlkIGl0IG11c3QgYmUgYXQgbGVhc3QgYXMg
bG9uZyBhcyB0aGUgY3VycmVudCBidWlsZGVyIGNvbnRlbnRzIQogICAgICAgICBBU1NFUlQobV9i
dWZmZXItPmxlbmd0aCgpID49IG1fbGVuZ3RoLnVuc2FmZUdldDx1bnNpZ25lZD4oKSk7CiAgICAg
ICAgIAotICAgICAgICByZWFsbG9jYXRlQnVmZmVyPENoYXJUeXBlPihleHBhbmRlZENhcGFjaXR5
KGNhcGFjaXR5KCksIHJlcXVpcmVkTGVuZ3RoKSk7CisgICAgICAgIHJlYWxsb2NhdGVCdWZmZXI8
Q2hhcmFjdGVyVHlwZT4oZXhwYW5kZWRDYXBhY2l0eShjYXBhY2l0eSgpLCByZXF1aXJlZExlbmd0
aCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChtX3N0cmluZy5sZW5ndGgoKSA9PSBt
X2xlbmd0aC51bnNhZmVHZXQ8dW5zaWduZWQ+KCkpOwotICAgICAgICBhbGxvY2F0ZUJ1ZmZlciht
X2xlbmd0aCA/IG1fc3RyaW5nLmNoYXJhY3RlcnM8Q2hhclR5cGU+KCkgOiBudWxscHRyLCBleHBh
bmRlZENhcGFjaXR5KGNhcGFjaXR5KCksIHJlcXVpcmVkTGVuZ3RoKSk7CisgICAgICAgIGFsbG9j
YXRlQnVmZmVyKG1fbGVuZ3RoID8gbV9zdHJpbmcuY2hhcmFjdGVyczxDaGFyYWN0ZXJUeXBlPigp
IDogbnVsbHB0ciwgZXhwYW5kZWRDYXBhY2l0eShjYXBhY2l0eSgpLCByZXF1aXJlZExlbmd0aCkp
OwogICAgIH0KICAgICBpZiAoVU5MSUtFTFkoaGFzT3ZlcmZsb3dlZCgpKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBDaGFyVHlwZSogcmVzdWx0ID0gZ2V0QnVmZmVyQ2hhcmFjdGVy
czxDaGFyVHlwZT4oKSArIG1fbGVuZ3RoLnVuc2FmZUdldCgpOworICAgIENoYXJhY3RlclR5cGUq
IHJlc3VsdCA9IGdldEJ1ZmZlckNoYXJhY3RlcnM8Q2hhcmFjdGVyVHlwZT4oKSArIG1fbGVuZ3Ro
LnVuc2FmZUdldCgpOwogICAgIG1fbGVuZ3RoID0gcmVxdWlyZWRMZW5ndGg7CiAgICAgQVNTRVJU
KCFoYXNPdmVyZmxvd2VkKCkpOwogICAgIEFTU0VSVChtX2J1ZmZlci0+bGVuZ3RoKCkgPj0gbV9s
ZW5ndGgudW5zYWZlR2V0PHVuc2lnbmVkPigpKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oCShyZXZpc2lvbiAyNDcyODEpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMxLDYgKzIzMSw5IEBAIHB1YmxpYzoKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGZsb2F0LCB1
bnNpZ25lZCBkZWNpbWFsUGxhY2VzKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBl
bmRGaXhlZFdpZHRoTnVtYmVyKGRvdWJsZSwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcyk7CiAKKyAg
ICAvLyBGSVhNRTogUmVuYW1lIHRvIGFwcGVuZCguLi4pIGFmdGVyIHJlbmFtaW5nIGFueSBvdmVy
bG9hZHMgb2YgYXBwZW5kIHRoYXQgdGFrZSBtb3JlIHRoYW4gb25lIGFyZ3VtZW50LgorICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVzPiB2b2lkIGZsZXhpYmxlQXBwZW5kKFN0cmlu
Z1R5cGVzLi4uKTsKKwogICAgIFN0cmluZyB0b1N0cmluZygpCiAgICAgewogICAgICAgICBpZiAo
IW1fc3RyaW5nLmlzTnVsbCgpKSB7CkBAIC0zNTAsMTYgKzM1MywxOSBAQCBwcml2YXRlOgogICAg
IHZvaWQgYWxsb2NhdGVCdWZmZXIoY29uc3QgTENoYXIqIGN1cnJlbnRDaGFyYWN0ZXJzLCB1bnNp
Z25lZCByZXF1aXJlZExlbmd0aCk7CiAgICAgdm9pZCBhbGxvY2F0ZUJ1ZmZlcihjb25zdCBVQ2hh
ciogY3VycmVudENoYXJhY3RlcnMsIHVuc2lnbmVkIHJlcXVpcmVkTGVuZ3RoKTsKICAgICB2b2lk
IGFsbG9jYXRlQnVmZmVyVXBDb252ZXJ0KGNvbnN0IExDaGFyKiBjdXJyZW50Q2hhcmFjdGVycywg
dW5zaWduZWQgcmVxdWlyZWRMZW5ndGgpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlw
ZT4KLSAgICB2b2lkIHJlYWxsb2NhdGVCdWZmZXIodW5zaWduZWQgcmVxdWlyZWRMZW5ndGgpOwot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBBTFdBWVNfSU5MSU5FIENoYXJU
eXBlKiBhcHBlbmRVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJUeXBlPgotICAgIENoYXJUeXBlKiBhcHBlbmRVbmluaXRpYWxpemVkU2xv
dyh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAg
ICBBTFdBWVNfSU5MSU5FIENoYXJUeXBlICogZ2V0QnVmZmVyQ2hhcmFjdGVycygpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcmVhbGxvY2F0ZUJ1ZmZlcih1bnNp
Z25lZCByZXF1aXJlZExlbmd0aCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gQUxXQVlTX0lOTElORSBDaGFyYWN0ZXJUeXBlKiBhcHBlbmRVbmluaXRpYWxpemVkKHVuc2ln
bmVkIGFkZGl0aW9uYWxMZW5ndGgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IEFMV0FZU19JTkxJTkUgQ2hhcmFjdGVyVHlwZSogYXBwZW5kVW5pbml0aWFsaXplZFdpdGhv
dXRPdmVyZmxvd0NoZWNrKENoZWNrZWRJbnQzMiByZXF1aXJlZExlbmd0aCk7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQ2hhcmFjdGVyVHlwZSogYXBwZW5kVW5pbml0aWFs
aXplZFNsb3codW5zaWduZWQgcmVxdWlyZWRMZW5ndGgpOworICAgIAorICAgIFdURl9FWFBPUlRf
UFJJVkFURSBVQ2hhciogYXBwZW5kVW5pbml0aWFsaXplZFdpdGhvdXRPdmVyZmxvd0NoZWNrRm9y
VUNoYXIoQ2hlY2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgTENoYXIqIGFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVja0ZvckxDaGFy
KENoZWNrZWRJbnQzMiByZXF1aXJlZExlbmd0aCk7CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBDaGFyYWN0ZXJUeXBlKiBnZXRCdWZmZXJD
aGFyYWN0ZXJzKCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVpZnlTdHJpbmcoKSBj
b25zdDsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVBZGFwdGVycz4gdm9p
ZCBmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyhTdHJpbmdUeXBlQWRhcHRlcnMuLi4pOworCiAg
ICAgbXV0YWJsZSBTdHJpbmcgbV9zdHJpbmc7CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1fYnVm
ZmVyOwogICAgIHVuaW9uIHsKQEAgLTM3NCwyMiArMzgwLDU0IEBAIHByaXZhdGU6CiAjZW5kaWYK
IH07CiAKLXRlbXBsYXRlIDw+Cit0ZW1wbGF0ZTw+CiBBTFdBWVNfSU5MSU5FIExDaGFyKiBTdHJp
bmdCdWlsZGVyOjpnZXRCdWZmZXJDaGFyYWN0ZXJzPExDaGFyPigpCiB7CiAgICAgQVNTRVJUKG1f
aXM4Qml0KTsKICAgICByZXR1cm4gbV9idWZmZXJDaGFyYWN0ZXJzODsKIH0KIAotdGVtcGxhdGUg
PD4KK3RlbXBsYXRlPD4KIEFMV0FZU19JTkxJTkUgVUNoYXIqIFN0cmluZ0J1aWxkZXI6OmdldEJ1
ZmZlckNoYXJhY3RlcnM8VUNoYXI+KCkKIHsKICAgICBBU1NFUlQoIW1faXM4Qml0KTsKICAgICBy
ZXR1cm4gbV9idWZmZXJDaGFyYWN0ZXJzMTY7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
VHlwZT4KLWJvb2wgZXF1YWwoY29uc3QgU3RyaW5nQnVpbGRlciYgcywgY29uc3QgQ2hhclR5cGUq
IGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKQordGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5nVHlw
ZUFkYXB0ZXJzPgordm9pZCBTdHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVy
cyhTdHJpbmdUeXBlQWRhcHRlcnMuLi4gYWRhcHRlcnMpCit7CisgICAgYXV0byByZXF1aXJlZExl
bmd0aCA9IGNoZWNrZWRTdW08aW50MzJfdD4obV9sZW5ndGgsIGFkYXB0ZXJzLmxlbmd0aCgpLi4u
KTsKKyAgICBpZiAocmVxdWlyZWRMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgICAgIGRp
ZE92ZXJmbG93KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9pczhCaXQg
JiYgYXJlOEJpdChhZGFwdGVycy4uLikpIHsKKyAgICAgICAgTENoYXIqIGRlc3QgPSBhcHBlbmRV
bmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2tGb3JMQ2hhcihyZXF1aXJlZExlbmd0aCk7
CisgICAgICAgIGlmICghZGVzdCkgeworICAgICAgICAgICAgQVNTRVJUKGhhc092ZXJmbG93ZWQo
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc3RyaW5nVHlwZUFk
YXB0ZXJBY2N1bXVsYXRvcihkZXN0LCBhZGFwdGVycy4uLik7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgVUNoYXIqIGRlc3QgPSBhcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2tG
b3JVQ2hhcihyZXF1aXJlZExlbmd0aCk7CisgICAgICAgIGlmICghZGVzdCkgeworICAgICAgICAg
ICAgQVNTRVJUKGhhc092ZXJmbG93ZWQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgc3RyaW5nVHlwZUFkYXB0ZXJBY2N1bXVsYXRvcihkZXN0LCBhZGFwdGVycy4u
Lik7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4KK3ZvaWQg
U3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmQoU3RyaW5nVHlwZXMuLi4gc3RyaW5ncykKK3sK
KyAgICBmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyhTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdU
eXBlcz4oc3RyaW5ncykuLi4pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PgorYm9vbCBlcXVhbChjb25zdCBTdHJpbmdCdWlsZGVyJiBzLCBjb25zdCBDaGFyYWN0ZXJUeXBl
KiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAocy5sZW5ndGgoKSAhPSBsZW5n
dGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQwMCw3ICs0MzgsNyBAQCBib29sIGVxdWFs
KGNvbnN0IFN0cmluZ0J1aWxkZXImIHMsIGNvbnN0CiAgICAgcmV0dXJuIGVxdWFsKHMuY2hhcmFj
dGVyczE2KCksIGJ1ZmZlciwgbGVuZ3RoKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFN0cmlu
Z1R5cGU+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlPgogYm9vbCBlcXVhbChjb25zdCBT
dHJpbmdCdWlsZGVyJiBhLCBjb25zdCBTdHJpbmdUeXBlJiBiKQogewogICAgIGlmIChhLmxlbmd0
aCgpICE9IGIubGVuZ3RoKCkpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZS5oCShyZXZpc2lvbiAyNDcyODEpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0OCwxNiArMjQ4LDE2IEBAIGlubGluZSBi
b29sIGFyZThCaXQoQWRhcHRlciBhZGFwdGVyLCBBZGEKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
UmVzdWx0VHlwZSwgdHlwZW5hbWUgQWRhcHRlcj4KLWlubGluZSB2b2lkIG1ha2VTdHJpbmdBY2N1
bXVsYXRvcihSZXN1bHRUeXBlKiByZXN1bHQsIEFkYXB0ZXIgYWRhcHRlcikKK2lubGluZSB2b2lk
IHN0cmluZ1R5cGVBZGFwdGVyQWNjdW11bGF0b3IoUmVzdWx0VHlwZSogcmVzdWx0LCBBZGFwdGVy
IGFkYXB0ZXIpCiB7CiAgICAgYWRhcHRlci53cml0ZVRvKHJlc3VsdCk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lIEFkYXB0ZXIsIHR5cGVuYW1lLi4uIEFkYXB0
ZXJzPgotaW5saW5lIHZvaWQgbWFrZVN0cmluZ0FjY3VtdWxhdG9yKFJlc3VsdFR5cGUqIHJlc3Vs
dCwgQWRhcHRlciBhZGFwdGVyLCBBZGFwdGVycyAuLi5hZGFwdGVycykKK2lubGluZSB2b2lkIHN0
cmluZ1R5cGVBZGFwdGVyQWNjdW11bGF0b3IoUmVzdWx0VHlwZSogcmVzdWx0LCBBZGFwdGVyIGFk
YXB0ZXIsIEFkYXB0ZXJzIC4uLmFkYXB0ZXJzKQogewogICAgIGFkYXB0ZXIud3JpdGVUbyhyZXN1
bHQpOwotICAgIG1ha2VTdHJpbmdBY2N1bXVsYXRvcihyZXN1bHQgKyBhZGFwdGVyLmxlbmd0aCgp
LCBhZGFwdGVycy4uLik7CisgICAgc3RyaW5nVHlwZUFkYXB0ZXJBY2N1bXVsYXRvcihyZXN1bHQg
KyBhZGFwdGVyLmxlbmd0aCgpLCBhZGFwdGVycy4uLik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFN0cmluZ1R5cGVBZGFwdGVyLCB0eXBlbmFtZS4uLiBTdHJpbmdUeXBlQWRhcHRlcnM+CkBAIC0y
NzYsNyArMjc2LDcgQEAgU3RyaW5nIHRyeU1ha2VTdHJpbmdGcm9tQWRhcHRlcnMoU3RyaW5nVAog
ICAgICAgICBpZiAoIXJlc3VsdEltcGwpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
LSAgICAgICAgbWFrZVN0cmluZ0FjY3VtdWxhdG9yKGJ1ZmZlciwgYWRhcHRlciwgYWRhcHRlcnMu
Li4pOworICAgICAgICBzdHJpbmdUeXBlQWRhcHRlckFjY3VtdWxhdG9yKGJ1ZmZlciwgYWRhcHRl
ciwgYWRhcHRlcnMuLi4pOwogCiAgICAgICAgIHJldHVybiByZXN1bHRJbXBsOwogICAgIH0KQEAg
LTI4Niw3ICsyODYsNyBAQCBTdHJpbmcgdHJ5TWFrZVN0cmluZ0Zyb21BZGFwdGVycyhTdHJpbmdU
CiAgICAgaWYgKCFyZXN1bHRJbXBsKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBt
YWtlU3RyaW5nQWNjdW11bGF0b3IoYnVmZmVyLCBhZGFwdGVyLCBhZGFwdGVycy4uLik7CisgICAg
c3RyaW5nVHlwZUFkYXB0ZXJBY2N1bXVsYXRvcihidWZmZXIsIGFkYXB0ZXIsIGFkYXB0ZXJzLi4u
KTsKIAogICAgIHJldHVybiByZXN1bHRJbXBsOwogfQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ3MjgxKQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDctMDkgIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTdHJpbmdCdWlsZGVy
IG1lbWJlciBmdW5jdGlvbiB3aGljaCBhbGxvd3MgbWFrZVN0cmluZygpIHN0eWxlIHZhcmlhZGlj
IGFyZ3VtZW50IGNvbnN0cnVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk4OTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcDoK
KyAgICAgICAgQWRkIGJhc2ljIHRlc3Qgc2hvd2luZyB0aGF0IFN0cmluZ0J1aWxkZXI6OmZsZXhp
YmxlQXBwZW5kIGNhbiBiZSB1c2VkIHRvIAorICAgICAgICBhcHBlbmQgb25lIG9yIG1vcmUgc3Ry
aW5nIGFkYXB0YWJsZSB0eXBlcy4gCisKIDIwMTktMDctMDkgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CiAKICAgICAgICAgT25seSBhbGxvdyBmZXRjaGluZyBhbmQgcmVtb3Zpbmcg
c2Vzc2lvbiBjcmVkZW50aWFscyBmcm9tIFdlYnNpdGVEYXRhU3RvcmUKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCShyZXZpc2lvbiAy
NDcyODEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiwyOSBAQCBURVNUKFN0cmluZ0J1aWxkZXJU
ZXN0LCBBcHBlbmQpCiAgICAgfQogfQogCitURVNUKFN0cmluZ0J1aWxkZXJUZXN0LCBGbGV4aWJs
ZUFwcGVuZCkKK3sKKyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAg
ICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZChTdHJpbmcoIjAxMjM0NTY3ODkiKSk7CisgICAgICAg
IGV4cGVjdEJ1aWxkZXJDb250ZW50KCIwMTIzNDU2Nzg5IiwgYnVpbGRlcik7CisgICAgICAgIGJ1
aWxkZXIuZmxleGlibGVBcHBlbmQoImFiY2QiKTsKKyAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRl
bnQoIjAxMjM0NTY3ODlhYmNkIiwgYnVpbGRlcik7CisgICAgICAgIGJ1aWxkZXIuZmxleGlibGVB
cHBlbmQoJ2UnKTsKKyAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNk
ZSIsIGJ1aWxkZXIpOworICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIiKTsKKyAgICAg
ICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZSIsIGJ1aWxkZXIpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWls
ZGVyLmZsZXhpYmxlQXBwZW5kKFN0cmluZygiMDEyMzQ1Njc4OSIpLCAiYWJjZCIsICdlJywgIiIp
OworICAgICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OWFiY2RlIiwgYnVpbGRl
cik7CisgICAgICAgIGJ1aWxkZXIuZmxleGlibGVBcHBlbmQoU3RyaW5nKCJBIiksICJCIiwgJ0Mn
LCAiIik7CisgICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50KCIwMTIzNDU2Nzg5YWJjZGVBQkMi
LCBidWlsZGVyKTsKKyAgICB9Cit9CisKIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIFRvU3RyaW5n
KQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374303</attachid>
            <date>2019-07-17 10:07:28 -0700</date>
            <delta_ts>2019-07-17 12:31:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198997-20190717100727.patch</filename>
            <type>text/plain</type>
            <size>24245</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDc1MTYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE5LTA3LTE2ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU3RyaW5nQnVpbGRlciBtZW1iZXIgZnVuY3Rpb24g
d2hpY2ggYWxsb3dzIG1ha2VTdHJpbmcoKSBzdHlsZSB2YXJpYWRpYyBhcmd1bWVudCBjb25zdHJ1
Y3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODk5NworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZHMg
bmV3IFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgbWVtYmVyIGZ1bmN0aW9uIHdo
aWNoIGFsbG93cyBwYXNzaW5nIG9uZSBvciBtb3JlIAorICAgICAgICBzdHJpbmctYWRhcHRhYmxl
IChpbiB0aGUgc2Vuc2UgdGhhdCB0aGVyZSBpcyBTdHJpbmdUeXBlQWRhcHRlciBzcGVjaWFsaXph
dGlvbiBmb3IgdGhlIAorICAgICAgICB0eXBlKSBwYXJhbWV0ZXJzLiBUaGlzIHJlLXVzdXNlcyB0
aGUgdmFyaWFkaWMgdGVtcGxhdGUgaW5mcmFzdHJ1Y3R1cmUgaW4gU3RyaW5nQ29uY2F0ZW5hdGUu
aAorICAgICAgICB0aGF0IGlzIHVzZWQgZm9yIG1ha2VTdHJpbmcoLi4uKSBhbGxvd2luZyBmb3Ig
aW1wcm92ZW1lbnRzIGluIG9uZSB0byBiZW5lZml0IHRoZSBvdGhlci4KKworICAgICAgICBUaGUg
YWR2YW50YWdlIG9mIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgb3ZlciBjYWxs
aW5nIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pCisgICAgICAgIG11bHRpcGxlIHRpbWVzIChi
ZXlvbmQgdGhlIGNvZGUgc2hhcmluZyB3aXRoIG1ha2VTdHJpbmcoLi4uKSBpcyB0aGF0IGl0IGNh
biBhdm9pZCB1bm5lY2Vzc2FyeQorICAgICAgICBhZGRpdGlvbmFsIHJlLWFsbG9jYXRpb25zIHdo
ZW4gdGhlIFN0cmluZ0J1aWxkZXIgbmVlZHMgdG8gZXhwYW5kIGl0J3MgY2FwYWNpdHkuIEl0IGRv
ZXMgdGhpcworICAgICAgICBieSBjb21wdXRpbmcgdGhlIGNvbXBsZXRlIHJlcXVpcmVkIGxlbmd0
aCBmb3IgYWxsIHRoZSBwYXNzZWQgYXJndW1lbnRzIGFuZCB0aGVuIGVuc3VyaW5nIGVub3VnaAor
ICAgICAgICBjYXBhY2l0eSBpcyBhdmFpbGFibGUuIEl0IGFsc28gcmVkdWNlcyB0aGUgYWxsb2Nh
dGlvbiBvdmVyaGVhZCB2ZXJzdXMgdGhlIGFudGktcGF0dGVybiBvZgorICAgICAgICBidWlsZGVy
LmFwcGVuZChtYWtlU3RyaW5nKC4uLikpLgorCisgICAgICAgIElkZWFsbHksIHRoaXMgbWVtYmVy
IGZ1bmN0aW9uIHNob3VsZCBldmVudHVhbGx5IGp1c3QgYmUgY2FsbGVkIFN0cmluZ0J1aWxkZXI6
OmFwcGVuZCguLi4pLCBidXQKKyAgICAgICAgdGhlIGN1cnJlbnQgb3ZlcmxvYWQgc2V0IGZvciBT
dHJpbmdCdWlsZGVyOjphcHBlbmQoLi4uKSBtYWtlcyB0aGlzIGNvbXBsaWNhdGVkIGR1ZSB0byBv
dmVybG9hZHMKKyAgICAgICAgdGhhdCB0YWtlIHR3byBhcmd1bWVudHMgc3VjaCBhcyBTdHJpbmdC
dWlsZGVyOjphcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCkuIEdvaW5nIGZvcndhcmQsIHdl
CisgICAgICAgIHNob3VsZCByZW5hbWUgb3IgcmVtb3ZlIHRob3NlIG92ZXJsb2FkcyBhbmQgbW92
ZSB0byBhIHN0YW5kYXJkIGludGVyZmFjZS4gCisKKyAgICAgICAgKiB3dGYvcG9zaXgvRmlsZVN5
c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHMpOgorICAgICAgICBBZG9wdCBTdHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFw
cGVuZCwgdXNpbmcgdG8gY29tYmluZSB0aGUgYXBwZW5kIG9mICcvJyBhbmQgY29tcG9uZW50Lgor
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHA6CisgICAgICAgIChXVEY6OlN0
cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoV1RGOjpTdHJpbmdC
dWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2spOgorICAgICAg
ICBFeHRyYWN0IHRoZSBwYXJ0IG9mIGFwcGVuZFVuaXRpYWxpemVkIHRoYXQgZG9lc24ndCBkbyB0
aGUgb3ZlcmZsb3cgY2hlY2sKKyAgICAgICAgaW50byBpdCdzIG93biBtZW1iZXIgZnVuY3Rpb24g
dG8gYWxsb3cgY2FsbGVycyB0aGF0IGhhdmUgYWxyZWFkeSBkb25lIHRoZQorICAgICAgICBvdmVy
ZmxvdyBjaGVjayB0byBieXBhc3MgaXQuCisKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6
YXBwZW5kVW5pbml0aWFsaXplZFdpdGhvdXRPdmVyZmxvd0NoZWNrRm9yVUNoYXIpOgorICAgICAg
ICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93
Q2hlY2tGb3JMQ2hhcik6CisgICAgICAgIEFkZGVkIHRvIGFsbG93IHRlbXBsYXRlIG1lbWJlciBm
dW5jdGlvbiBmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyB0byBjYWxsCisgICAgICAgIGFwcGVu
ZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVjayB3aXRob3V0IG1vdmluZyBpdCB0byB0
aGUgaGVhZGVyLgorICAgICAgICAKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6
CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kRnJvbUFkYXB0ZXJz
KToKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmQpOgorICAgICAg
ICBNb2RlbGVkIG9uIHRyeU1ha2VTdHJpbmdGcm9tQWRhcHRlcnMgaW4gU3RyaW5nQ29uY2F0ZW5h
dGUuaCwgdGhlc2UKKyAgICAgICAgZWFnZXJseSBjb21wdXRlIHRoZSByZXF1aXJlZCBsZW5ndGgs
IGV4cGFuZCB0aGUgYnVmZmVyIGFuZCB0aGVuIHVzZQorICAgICAgICB0aGUgZXhpc3Rpbmcgc3Ry
aW5nIHR5cGUgYWRhcHRvciBhY2N1bXVsYXRpb24gZnVuY3Rpb25zIHVzZWQgYnkgbWFrZVN0cmlu
Zy4gCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oOgorICAgICAgICAo
V1RGOjpzdHJpbmdUeXBlQWRhcHRlckFjY3VtdWxhdG9yKToKKyAgICAgICAgKFdURjo6dHJ5TWFr
ZVN0cmluZ0Zyb21BZGFwdGVycyk6CisgICAgICAgIChXVEY6Om1ha2VTdHJpbmdBY2N1bXVsYXRv
cik6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZXMgbWFrZVN0cmluZ0FjY3VtdWxhdG9yIHRvIHN0
cmluZ1R5cGVBZGFwdGVyQWNjdW11bGF0b3Igbm93IHRoYXQgaXQgaXMgdXNlZAorICAgICAgICBi
eSBtb3JlIHRoYW4ganVzdCBtYWtlU3RyaW5nLgorCiAyMDE5LTA3LTE2ICBDaHJpc3RvcGhlciBS
ZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KIAogICAgICAgICBCeXRlY29kZSBjYWNoZSBzaG91
bGQgdXNlIEZpbGVTeXN0ZW0KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1Q
T1NJWC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBP
U0lYLmNwcAkocmV2aXNpb24gMjQ3NTE2KQorKysgU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5
c3RlbVBPU0lYLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDEwICszMDEsOCBAQCBTdHJpbmcg
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWCiB7CiAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwogICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGgpOwotICAgIGZvciAoYXV0byYgY29tcG9u
ZW50IDogY29tcG9uZW50cykgewotICAgICAgICBidWlsZGVyLmFwcGVuZCgnLycpOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZChjb21wb25lbnQpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIGNvbXBv
bmVudCA6IGNvbXBvbmVudHMpCisgICAgICAgIGJ1aWxkZXIuZmxleGlibGVBcHBlbmQoJy8nLCBj
b21wb25lbnQpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcAkocmV2aXNpb24gMjQ3NTE2KQorKysgU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYz
LDcgKzE2Myw3IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6YWxsb2NhdGVCdWZmZXJVcENvbnYKICAg
ICBBU1NFUlQobV9idWZmZXItPmxlbmd0aCgpID09IHJlcXVpcmVkTGVuZ3RoKTsKIH0KIAotdGVt
cGxhdGUgPD4KK3RlbXBsYXRlPD4KIHZvaWQgU3RyaW5nQnVpbGRlcjo6cmVhbGxvY2F0ZUJ1ZmZl
cjxMQ2hhcj4odW5zaWduZWQgcmVxdWlyZWRMZW5ndGgpCiB7CiAgICAgLy8gSWYgdGhlIGJ1ZmZl
ciBoYXMgb25seSBvbmUgcmVmIChieSB0aGlzIFN0cmluZ0J1aWxkZXIpLCByZWFsbG9jYXRlIGl0
LApAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6cmVhbGxvY2F0ZUJ1ZmZl
cjxMQ2gKICAgICBBU1NFUlQoaGFzT3ZlcmZsb3dlZCgpIHx8IG1fYnVmZmVyLT5sZW5ndGgoKSA9
PSByZXF1aXJlZExlbmd0aCk7CiB9CiAKLXRlbXBsYXRlIDw+Cit0ZW1wbGF0ZTw+CiB2b2lkIFN0
cmluZ0J1aWxkZXI6OnJlYWxsb2NhdGVCdWZmZXI8VUNoYXI+KHVuc2lnbmVkIHJlcXVpcmVkTGVu
Z3RoKQogewogICAgIC8vIElmIHRoZSBidWZmZXIgaGFzIG9ubHkgb25lIHJlZiAoYnkgdGhpcyBT
dHJpbmdCdWlsZGVyKSwgcmVhbGxvY2F0ZSBpdCwKQEAgLTIzMSwzNyArMjMxLDU1IEBAIHZvaWQg
U3RyaW5nQnVpbGRlcjo6cmVzZXJ2ZUNhcGFjaXR5KHVuc2kKICAgICBBU1NFUlQoaGFzT3ZlcmZs
b3dlZCgpIHx8ICFuZXdDYXBhY2l0eSB8fCBtX2J1ZmZlci0+bGVuZ3RoKCkgPj0gbmV3Q2FwYWNp
dHkpOwogfQogCi0vLyBNYWtlICdsZW5ndGgnIGFkZGl0aW9uYWwgY2FwYWNpdHkgYmUgYXZhaWxh
YmxlIGluIG1fYnVmZmVyLCB1cGRhdGUgbV9zdHJpbmcgJiBtX2xlbmd0aCwKKy8vIE1ha2UgJ2Fk
ZGl0aW9uYWxMZW5ndGgnIGFkZGl0aW9uYWwgY2FwYWNpdHkgYmUgYXZhaWxhYmxlIGluIG1fYnVm
ZmVyLCB1cGRhdGUgbV9zdHJpbmcgJiBtX2xlbmd0aCwKIC8vIHJldHVybiBhIHBvaW50ZXIgdG8g
dGhlIG5ld2x5IGFsbG9jYXRlZCBzdG9yYWdlLgogLy8gUmV0dXJucyBudWxscHRyIGlmIHRoZSBz
aXplIG9mIHRoZSBuZXcgYnVpbGRlciB3b3VsZCBoYXZlIG92ZXJmbG93ZWQKLXRlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyVHlwZT4KLUFMV0FZU19JTkxJTkUgQ2hhclR5cGUqIFN0cmluZ0J1aWxkZXI6
OmFwcGVuZFVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgQ2hhcmFjdGVyVHlwZSogU3RyaW5nQnVpbGRl
cjo6YXBwZW5kVW5pbml0aWFsaXplZCh1bnNpZ25lZCBhZGRpdGlvbmFsTGVuZ3RoKQogewotICAg
IEFTU0VSVChsZW5ndGgpOworICAgIEFTU0VSVChhZGRpdGlvbmFsTGVuZ3RoKTsKIAogICAgIC8v
IENhbGN1bGF0ZSB0aGUgbmV3IHNpemUgb2YgdGhlIGJ1aWxkZXIgYWZ0ZXIgYXBwZW5kaW5nLgot
ICAgIENoZWNrZWRJbnQzMiByZXF1aXJlZExlbmd0aCA9IG1fbGVuZ3RoICsgbGVuZ3RoOworICAg
IENoZWNrZWRJbnQzMiByZXF1aXJlZExlbmd0aCA9IG1fbGVuZ3RoICsgYWRkaXRpb25hbExlbmd0
aDsKICAgICBpZiAocmVxdWlyZWRMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7CiAgICAgICAgIGRp
ZE92ZXJmbG93KCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIHJldHVy
biBhcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2s8Q2hhcmFjdGVyVHlwZT4o
cmVxdWlyZWRMZW5ndGgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgor
QUxXQVlTX0lOTElORSBDaGFyYWN0ZXJUeXBlKiBTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRp
YWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2soQ2hlY2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoKQor
eworICAgIEFTU0VSVCghcmVxdWlyZWRMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKTsKKwogICAgIGlm
IChtX2J1ZmZlciAmJiAocmVxdWlyZWRMZW5ndGgudW5zYWZlR2V0PHVuc2lnbmVkPigpIDw9IG1f
YnVmZmVyLT5sZW5ndGgoKSkpIHsKICAgICAgICAgLy8gSWYgdGhlIGJ1ZmZlciBpcyB2YWxpZCBp
dCBtdXN0IGJlIGF0IGxlYXN0IGFzIGxvbmcgYXMgdGhlIGN1cnJlbnQgYnVpbGRlciBjb250ZW50
cyEKICAgICAgICAgQVNTRVJUKG1fYnVmZmVyLT5sZW5ndGgoKSA+PSBtX2xlbmd0aC51bnNhZmVH
ZXQ8dW5zaWduZWQ+KCkpOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50TGVuZ3RoID0gbV9sZW5n
dGgudW5zYWZlR2V0KCk7CiAgICAgICAgIG1fc3RyaW5nID0gU3RyaW5nKCk7CiAgICAgICAgIG1f
bGVuZ3RoID0gcmVxdWlyZWRMZW5ndGg7Ci0gICAgICAgIHJldHVybiBnZXRCdWZmZXJDaGFyYWN0
ZXJzPENoYXJUeXBlPigpICsgY3VycmVudExlbmd0aDsKKyAgICAgICAgcmV0dXJuIGdldEJ1ZmZl
ckNoYXJhY3RlcnM8Q2hhcmFjdGVyVHlwZT4oKSArIGN1cnJlbnRMZW5ndGg7CiAgICAgfQogICAg
IAotICAgIHJldHVybiBhcHBlbmRVbmluaXRpYWxpemVkU2xvdzxDaGFyVHlwZT4ocmVxdWlyZWRM
ZW5ndGgudW5zYWZlR2V0KCkpOworICAgIHJldHVybiBhcHBlbmRVbmluaXRpYWxpemVkU2xvdzxD
aGFyYWN0ZXJUeXBlPihyZXF1aXJlZExlbmd0aC51bnNhZmVHZXQoKSk7Cit9CisKK1VDaGFyKiBT
dHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2tGb3JV
Q2hhcihDaGVja2VkSW50MzIgcmVxdWlyZWRMZW5ndGgpCit7CisgICAgcmV0dXJuIGFwcGVuZFVu
aW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVjazxVQ2hhcj4ocmVxdWlyZWRMZW5ndGgpOwor
fQorCitMQ2hhciogU3RyaW5nQnVpbGRlcjo6YXBwZW5kVW5pbml0aWFsaXplZFdpdGhvdXRPdmVy
Zmxvd0NoZWNrRm9yTENoYXIoQ2hlY2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoKQoreworICAgIHJl
dHVybiBhcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2s8TENoYXI+KHJlcXVp
cmVkTGVuZ3RoKTsKIH0KIAotLy8gTWFrZSAnbGVuZ3RoJyBhZGRpdGlvbmFsIGNhcGFjaXR5IGJl
IGF2YWlsYWJsZSBpbiBtX2J1ZmZlciwgdXBkYXRlIG1fc3RyaW5nICYgbV9sZW5ndGgsCisvLyBN
YWtlICdyZXF1aXJlZExlbmd0aCcgY2FwYWNpdHkgYmUgYXZhaWxhYmxlIGluIG1fYnVmZmVyLCB1
cGRhdGUgbV9zdHJpbmcgJiBtX2xlbmd0aCwKIC8vIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIG5l
d2x5IGFsbG9jYXRlZCBzdG9yYWdlLgotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotQ2hh
clR5cGUqIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWRTbG93KHVuc2lnbmVkIHJl
cXVpcmVkTGVuZ3RoKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0NoYXJhY3Rl
clR5cGUqIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWRTbG93KHVuc2lnbmVkIHJl
cXVpcmVkTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzT3ZlcmZsb3dlZCgpKTsKICAgICBBU1NF
UlQocmVxdWlyZWRMZW5ndGgpOwpAQCAtMjcwLDE1ICsyODgsMTUgQEAgQ2hhclR5cGUqIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbAogICAgICAgICAvLyBJZiB0aGUgYnVmZmVyIGlzIHZh
bGlkIGl0IG11c3QgYmUgYXQgbGVhc3QgYXMgbG9uZyBhcyB0aGUgY3VycmVudCBidWlsZGVyIGNv
bnRlbnRzIQogICAgICAgICBBU1NFUlQobV9idWZmZXItPmxlbmd0aCgpID49IG1fbGVuZ3RoLnVu
c2FmZUdldDx1bnNpZ25lZD4oKSk7CiAgICAgICAgIAotICAgICAgICByZWFsbG9jYXRlQnVmZmVy
PENoYXJUeXBlPihleHBhbmRlZENhcGFjaXR5KGNhcGFjaXR5KCksIHJlcXVpcmVkTGVuZ3RoKSk7
CisgICAgICAgIHJlYWxsb2NhdGVCdWZmZXI8Q2hhcmFjdGVyVHlwZT4oZXhwYW5kZWRDYXBhY2l0
eShjYXBhY2l0eSgpLCByZXF1aXJlZExlbmd0aCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFT
U0VSVChtX3N0cmluZy5sZW5ndGgoKSA9PSBtX2xlbmd0aC51bnNhZmVHZXQ8dW5zaWduZWQ+KCkp
OwotICAgICAgICBhbGxvY2F0ZUJ1ZmZlcihtX2xlbmd0aCA/IG1fc3RyaW5nLmNoYXJhY3RlcnM8
Q2hhclR5cGU+KCkgOiBudWxscHRyLCBleHBhbmRlZENhcGFjaXR5KGNhcGFjaXR5KCksIHJlcXVp
cmVkTGVuZ3RoKSk7CisgICAgICAgIGFsbG9jYXRlQnVmZmVyKG1fbGVuZ3RoID8gbV9zdHJpbmcu
Y2hhcmFjdGVyczxDaGFyYWN0ZXJUeXBlPigpIDogbnVsbHB0ciwgZXhwYW5kZWRDYXBhY2l0eShj
YXBhY2l0eSgpLCByZXF1aXJlZExlbmd0aCkpOwogICAgIH0KICAgICBpZiAoVU5MSUtFTFkoaGFz
T3ZlcmZsb3dlZCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBDaGFyVHlwZSog
cmVzdWx0ID0gZ2V0QnVmZmVyQ2hhcmFjdGVyczxDaGFyVHlwZT4oKSArIG1fbGVuZ3RoLnVuc2Fm
ZUdldCgpOworICAgIENoYXJhY3RlclR5cGUqIHJlc3VsdCA9IGdldEJ1ZmZlckNoYXJhY3RlcnM8
Q2hhcmFjdGVyVHlwZT4oKSArIG1fbGVuZ3RoLnVuc2FmZUdldCgpOwogICAgIG1fbGVuZ3RoID0g
cmVxdWlyZWRMZW5ndGg7CiAgICAgQVNTRVJUKCFoYXNPdmVyZmxvd2VkKCkpOwogICAgIEFTU0VS
VChtX2J1ZmZlci0+bGVuZ3RoKCkgPj0gbV9sZW5ndGgudW5zYWZlR2V0PHVuc2lnbmVkPigpKTsK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiAyNDc1MTYpCisr
KyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMxLDYgKzIzMSw5IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBl
bmRGaXhlZFdpZHRoTnVtYmVyKGZsb2F0LCB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzKTsKICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGRvdWJsZSwgdW5z
aWduZWQgZGVjaW1hbFBsYWNlcyk7CiAKKyAgICAvLyBGSVhNRTogUmVuYW1lIHRvIGFwcGVuZCgu
Li4pIGFmdGVyIHJlbmFtaW5nIGFueSBvdmVybG9hZHMgb2YgYXBwZW5kIHRoYXQgdGFrZSBtb3Jl
IHRoYW4gb25lIGFyZ3VtZW50LgorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVz
PiB2b2lkIGZsZXhpYmxlQXBwZW5kKFN0cmluZ1R5cGVzLi4uKTsKKwogICAgIFN0cmluZyB0b1N0
cmluZygpCiAgICAgewogICAgICAgICBpZiAoIW1fc3RyaW5nLmlzTnVsbCgpKSB7CkBAIC0zNTAs
MTYgKzM1MywxOSBAQCBwcml2YXRlOgogICAgIHZvaWQgYWxsb2NhdGVCdWZmZXIoY29uc3QgTENo
YXIqIGN1cnJlbnRDaGFyYWN0ZXJzLCB1bnNpZ25lZCByZXF1aXJlZExlbmd0aCk7CiAgICAgdm9p
ZCBhbGxvY2F0ZUJ1ZmZlcihjb25zdCBVQ2hhciogY3VycmVudENoYXJhY3RlcnMsIHVuc2lnbmVk
IHJlcXVpcmVkTGVuZ3RoKTsKICAgICB2b2lkIGFsbG9jYXRlQnVmZmVyVXBDb252ZXJ0KGNvbnN0
IExDaGFyKiBjdXJyZW50Q2hhcmFjdGVycywgdW5zaWduZWQgcmVxdWlyZWRMZW5ndGgpOwotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICB2b2lkIHJlYWxsb2NhdGVCdWZmZXIo
dW5zaWduZWQgcmVxdWlyZWRMZW5ndGgpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlw
ZT4KLSAgICBBTFdBWVNfSU5MSU5FIENoYXJUeXBlKiBhcHBlbmRVbmluaXRpYWxpemVkKHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIENoYXJU
eXBlKiBhcHBlbmRVbmluaXRpYWxpemVkU2xvdyh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBBTFdBWVNfSU5MSU5FIENoYXJUeXBlICogZ2V0
QnVmZmVyQ2hhcmFjdGVycygpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHZvaWQgcmVhbGxvY2F0ZUJ1ZmZlcih1bnNpZ25lZCByZXF1aXJlZExlbmd0aCk7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBDaGFyYWN0ZXJUeXBl
KiBhcHBlbmRVbmluaXRpYWxpemVkKHVuc2lnbmVkIGFkZGl0aW9uYWxMZW5ndGgpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgQ2hhcmFjdGVyVHlw
ZSogYXBwZW5kVW5pbml0aWFsaXplZFdpdGhvdXRPdmVyZmxvd0NoZWNrKENoZWNrZWRJbnQzMiBy
ZXF1aXJlZExlbmd0aCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQ2hh
cmFjdGVyVHlwZSogYXBwZW5kVW5pbml0aWFsaXplZFNsb3codW5zaWduZWQgcmVxdWlyZWRMZW5n
dGgpOworICAgIAorICAgIFdURl9FWFBPUlRfUFJJVkFURSBVQ2hhciogYXBwZW5kVW5pbml0aWFs
aXplZFdpdGhvdXRPdmVyZmxvd0NoZWNrRm9yVUNoYXIoQ2hlY2tlZEludDMyIHJlcXVpcmVkTGVu
Z3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTENoYXIqIGFwcGVuZFVuaW5pdGlhbGl6ZWRX
aXRob3V0T3ZlcmZsb3dDaGVja0ZvckxDaGFyKENoZWNrZWRJbnQzMiByZXF1aXJlZExlbmd0aCk7
CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElO
RSBDaGFyYWN0ZXJUeXBlKiBnZXRCdWZmZXJDaGFyYWN0ZXJzKCk7CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgcmVpZnlTdHJpbmcoKSBjb25zdDsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIFN0cmluZ1R5cGVBZGFwdGVycz4gdm9pZCBmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyhT
dHJpbmdUeXBlQWRhcHRlcnMuLi4pOworCiAgICAgbXV0YWJsZSBTdHJpbmcgbV9zdHJpbmc7CiAg
ICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1fYnVmZmVyOwogICAgIHVuaW9uIHsKQEAgLTM3NCwyMiAr
MzgwLDU0IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLXRlbXBsYXRlIDw+Cit0ZW1wbGF0ZTw+
CiBBTFdBWVNfSU5MSU5FIExDaGFyKiBTdHJpbmdCdWlsZGVyOjpnZXRCdWZmZXJDaGFyYWN0ZXJz
PExDaGFyPigpCiB7CiAgICAgQVNTRVJUKG1faXM4Qml0KTsKICAgICByZXR1cm4gbV9idWZmZXJD
aGFyYWN0ZXJzODsKIH0KIAotdGVtcGxhdGUgPD4KK3RlbXBsYXRlPD4KIEFMV0FZU19JTkxJTkUg
VUNoYXIqIFN0cmluZ0J1aWxkZXI6OmdldEJ1ZmZlckNoYXJhY3RlcnM8VUNoYXI+KCkKIHsKICAg
ICBBU1NFUlQoIW1faXM4Qml0KTsKICAgICByZXR1cm4gbV9idWZmZXJDaGFyYWN0ZXJzMTY7CiB9
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLWJvb2wgZXF1YWwoY29uc3QgU3RyaW5n
QnVpbGRlciYgcywgY29uc3QgQ2hhclR5cGUqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKQordGVt
cGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5nVHlwZUFkYXB0ZXJzPgordm9pZCBTdHJpbmdCdWlsZGVy
OjpmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyhTdHJpbmdUeXBlQWRhcHRlcnMuLi4gYWRhcHRl
cnMpCit7CisgICAgYXV0byByZXF1aXJlZExlbmd0aCA9IGNoZWNrZWRTdW08aW50MzJfdD4obV9s
ZW5ndGgsIGFkYXB0ZXJzLmxlbmd0aCgpLi4uKTsKKyAgICBpZiAocmVxdWlyZWRMZW5ndGguaGFz
T3ZlcmZsb3dlZCgpKSB7CisgICAgICAgIGRpZE92ZXJmbG93KCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAobV9pczhCaXQgJiYgYXJlOEJpdChhZGFwdGVycy4uLikpIHsKKyAg
ICAgICAgTENoYXIqIGRlc3QgPSBhcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hl
Y2tGb3JMQ2hhcihyZXF1aXJlZExlbmd0aCk7CisgICAgICAgIGlmICghZGVzdCkgeworICAgICAg
ICAgICAgQVNTRVJUKGhhc092ZXJmbG93ZWQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgc3RyaW5nVHlwZUFkYXB0ZXJBY2N1bXVsYXRvcihkZXN0LCBhZGFwdGVy
cy4uLik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgVUNoYXIqIGRlc3QgPSBhcHBlbmRVbmluaXRp
YWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2tGb3JVQ2hhcihyZXF1aXJlZExlbmd0aCk7CisgICAg
ICAgIGlmICghZGVzdCkgeworICAgICAgICAgICAgQVNTRVJUKGhhc092ZXJmbG93ZWQoKSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc3RyaW5nVHlwZUFkYXB0ZXJB
Y2N1bXVsYXRvcihkZXN0LCBhZGFwdGVycy4uLik7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBTdHJpbmdUeXBlcz4KK3ZvaWQgU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmQo
U3RyaW5nVHlwZXMuLi4gc3RyaW5ncykKK3sKKyAgICBmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVy
cyhTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlcz4oc3RyaW5ncykuLi4pOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorYm9vbCBlcXVhbChjb25zdCBTdHJpbmdCdWls
ZGVyJiBzLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkKIHsK
ICAgICBpZiAocy5sZW5ndGgoKSAhPSBsZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTQwMCw3ICs0MzgsNyBAQCBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0J1aWxkZXImIHMsIGNvbnN0
CiAgICAgcmV0dXJuIGVxdWFsKHMuY2hhcmFjdGVyczE2KCksIGJ1ZmZlciwgbGVuZ3RoKTsKIH0K
IAotdGVtcGxhdGUgPHR5cGVuYW1lIFN0cmluZ1R5cGU+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJp
bmdUeXBlPgogYm9vbCBlcXVhbChjb25zdCBTdHJpbmdCdWlsZGVyJiBhLCBjb25zdCBTdHJpbmdU
eXBlJiBiKQogewogICAgIGlmIChhLmxlbmd0aCgpICE9IGIubGVuZ3RoKCkpCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCShyZXZpc2lvbiAyNDc1MTYpCisrKyBT
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0OCwxNiArMjQ4LDE2IEBAIGlubGluZSBib29sIGFyZThCaXQoQWRhcHRlciBhZGFwdGVyLCBB
ZGEKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUgQWRhcHRlcj4K
LWlubGluZSB2b2lkIG1ha2VTdHJpbmdBY2N1bXVsYXRvcihSZXN1bHRUeXBlKiByZXN1bHQsIEFk
YXB0ZXIgYWRhcHRlcikKK2lubGluZSB2b2lkIHN0cmluZ1R5cGVBZGFwdGVyQWNjdW11bGF0b3Io
UmVzdWx0VHlwZSogcmVzdWx0LCBBZGFwdGVyIGFkYXB0ZXIpCiB7CiAgICAgYWRhcHRlci53cml0
ZVRvKHJlc3VsdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1l
IEFkYXB0ZXIsIHR5cGVuYW1lLi4uIEFkYXB0ZXJzPgotaW5saW5lIHZvaWQgbWFrZVN0cmluZ0Fj
Y3VtdWxhdG9yKFJlc3VsdFR5cGUqIHJlc3VsdCwgQWRhcHRlciBhZGFwdGVyLCBBZGFwdGVycyAu
Li5hZGFwdGVycykKK2lubGluZSB2b2lkIHN0cmluZ1R5cGVBZGFwdGVyQWNjdW11bGF0b3IoUmVz
dWx0VHlwZSogcmVzdWx0LCBBZGFwdGVyIGFkYXB0ZXIsIEFkYXB0ZXJzIC4uLmFkYXB0ZXJzKQog
ewogICAgIGFkYXB0ZXIud3JpdGVUbyhyZXN1bHQpOwotICAgIG1ha2VTdHJpbmdBY2N1bXVsYXRv
cihyZXN1bHQgKyBhZGFwdGVyLmxlbmd0aCgpLCBhZGFwdGVycy4uLik7CisgICAgc3RyaW5nVHlw
ZUFkYXB0ZXJBY2N1bXVsYXRvcihyZXN1bHQgKyBhZGFwdGVyLmxlbmd0aCgpLCBhZGFwdGVycy4u
Lik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGVBZGFwdGVyLCB0eXBlbmFtZS4u
LiBTdHJpbmdUeXBlQWRhcHRlcnM+CkBAIC0yNzYsNyArMjc2LDcgQEAgU3RyaW5nIHRyeU1ha2VT
dHJpbmdGcm9tQWRhcHRlcnMoU3RyaW5nVAogICAgICAgICBpZiAoIXJlc3VsdEltcGwpCiAgICAg
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICAgICAgbWFrZVN0cmluZ0FjY3VtdWxhdG9y
KGJ1ZmZlciwgYWRhcHRlciwgYWRhcHRlcnMuLi4pOworICAgICAgICBzdHJpbmdUeXBlQWRhcHRl
ckFjY3VtdWxhdG9yKGJ1ZmZlciwgYWRhcHRlciwgYWRhcHRlcnMuLi4pOwogCiAgICAgICAgIHJl
dHVybiByZXN1bHRJbXBsOwogICAgIH0KQEAgLTI4Niw3ICsyODYsNyBAQCBTdHJpbmcgdHJ5TWFr
ZVN0cmluZ0Zyb21BZGFwdGVycyhTdHJpbmdUCiAgICAgaWYgKCFyZXN1bHRJbXBsKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBtYWtlU3RyaW5nQWNjdW11bGF0b3IoYnVmZmVyLCBh
ZGFwdGVyLCBhZGFwdGVycy4uLik7CisgICAgc3RyaW5nVHlwZUFkYXB0ZXJBY2N1bXVsYXRvcihi
dWZmZXIsIGFkYXB0ZXIsIGFkYXB0ZXJzLi4uKTsKIAogICAgIHJldHVybiByZXN1bHRJbXBsOwog
fQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjQ3NTE2KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjggQEAKKzIwMTktMDctMTYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBTdHJpbmdCdWlsZGVyIG1lbWJlciBmdW5jdGlvbiB3aGljaCBhbGxvd3Mg
bWFrZVN0cmluZygpIHN0eWxlIHZhcmlhZGljIGFyZ3VtZW50IGNvbnN0cnVjdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4OTk3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgQWRkIGJhc2ljIHRlc3Qgc2hvd2lu
ZyB0aGF0IFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kIGNhbiBiZSB1c2VkIHRvIAorICAg
ICAgICBhcHBlbmQgb25lIG9yIG1vcmUgc3RyaW5nIGFkYXB0YWJsZSB0eXBlcy4gCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQg
V1RGU3RyaW5nVXRpbGl0aWVzLmNwcAorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvU3RyaW5nQnVpbGRlci5jcHA6CisgICAgICAgIEFkZCBiYXNpYyB0ZXN0IHNob3dpbmcgdGhh
dCBTdHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZCBjYW4gYmUgdXNlZCB0byAKKyAgICAgICAg
YXBwZW5kIG9uZSBvciBtb3JlIHN0cmluZyBhZGFwdGFibGUgdHlwZXMuIAorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1dURlN0cmluZ1V0aWxpdGllcy5jcHA6IEFkZGVkLgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvV1RGU3RyaW5nVXRpbGl0aWVzLmg6CisgICAgICAgIE1vdmUgV1RGX1NUUklO
R1RZUEVBREFQVEVSX0NPUElFRF9XVEZfU1RSSU5HKCkgYW5kIHd0ZlN0cmluZ0NvcHlDb3VudCB0
byBXVEZTdHJpbmdVdGlsaXRpZXMuaC9jcHAKKyAgICAgICAgdG8gYWxsb3cgZm9yIGEgc2luZ2xl
IGRlZmluaXRpb24gb2YgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nLCB2b2lkPiB3aGljaCBpcyBy
ZXF1aXJlZCBmb3IgT0RSLgorCiAyMDE5LTA3LTE3ICBSdXNzZWxsIEVwc3RlaW4gIDxydXNzZWxs
X2VAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZGluZyBzZWxmIHRvIGNvbnRyaWJ1dG9ycy5qc29u
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI0NzUxNikKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDYgKzIzLDcgQEAgZW5kbWFjcm8oKQogc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIENvdW50ZXJz
LmNwcAogICAgIFRlc3RzQ29udHJvbGxlci5jcHAKKyAgICBXVEZTdHJpbmdVdGlsaXRpZXMuY3Bw
CiAKICAgICBUZXN0cy9XVEYvQXRvbVN0cmluZy5jcHAKICAgICBUZXN0cy9XVEYvQmxvb21GaWx0
ZXIuY3BwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1dURlN0cmluZ1V0aWxpdGllcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9XVEZTdHJpbmdVdGlsaXRpZXMuY3Bw
CShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvV1RGU3RyaW5nVXRpbGl0aWVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCisKK2ludCB3
dGZTdHJpbmdDb3B5Q291bnQ7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1dURlN0cmluZ1V0
aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvV1RGU3RyaW5nVXRp
bGl0aWVzLmgJKHJldmlzaW9uIDI0NzUxNikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvV1RGU3Ry
aW5nVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDEwIEBACiAKICNwcmFn
bWEgb25jZQogCisjZGVmaW5lIFdURl9TVFJJTkdUWVBFQURBUFRFUl9DT1BJRURfV1RGX1NUUklO
RygpICgrK3d0ZlN0cmluZ0NvcHlDb3VudCkKKworZXh0ZXJuIGludCB3dGZTdHJpbmdDb3B5Q291
bnQ7CisKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQ3NTE2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTUwOCw2ICs1MDgsNyBAQAogCQk3Qzg5RDJBQzFBNjlCODBEMDAzQTVGREUgLyogV0tQYWdl
Q29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3Qzg5RDJBQTFBNjlCODBEMDAzQTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlvbi5j
cHAgKi87IH07CiAJCTdDOUVEOThCMTdBMTlGNEIwMEU0REMzMyAvKiBhdHRyaWJ1dGVkU3RyaW5n
U3RyaWtldGhyb3VnaC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDOUVEOThBMTdBMTlEMDYwMEU0REMzMyAvKiBhdHRyaWJ1dGVkU3Ry
aW5nU3RyaWtldGhyb3VnaC5odG1sICovOyB9OwogCQk3Q0IxODRDNjFBQTNGMjEwMDA2NkVERkQg
LyogQ29udGVudEV4dGVuc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0NCMTg0QzQxQUEzRjIxMDAwNjZFREZEIC8qIENvbnRlbnRFeHRlbnNp
b25zLmNwcCAqLzsgfTsKKwkJN0NCRDVBMjMyMkRFNDJBNjAwNEE5RTMyIC8qIFdURlN0cmluZ1V0
aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3Q0JENUEyMjIyREU0MkE2MDA0QTlFMzIgLyogV1RGU3RyaW5nVXRpbGl0aWVzLmNwcCAqLzsg
fTsKIAkJN0NDQjREQTkxQzgzQUU3MzAwQ0M2OTE4IC8qIFBhZ2VHcm91cC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0NCNERBNzFDODNBRTczMDBD
QzY5MTggLyogUGFnZUdyb3VwLmNwcCAqLzsgfTsKIAkJN0NDQjk5MjExRDNCNDFGNjAwMzkyMkY2
IC8qIFVzZXJJbml0aWF0ZWRBY3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0NCOTkyMDFEM0I0MUY2MDAzOTIy
RjYgLyogVXNlckluaXRpYXRlZEFjdGlvbkluTmF2aWdhdGlvbkFjdGlvbi5tbSAqLzsgfTsKIAkJ
N0NDQjk5MjMxRDNCNEE0NjAwMzkyMkY2IC8qIG9wZW4tbXVsdGlwbGUtZXh0ZXJuYWwtdXJsLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0NDQjk5MjIxRDNCNDRFNzAwMzkyMkY2IC8qIG9wZW4tbXVsdGlwbGUtZXh0ZXJuYWwtdXJsLmh0
bWwgKi87IH07CkBAIC0xOTI1LDYgKzE5MjYsNyBAQAogCQk3QzlFRDk4QTE3QTE5RDA2MDBFNERD
MzMgLyogYXR0cmlidXRlZFN0cmluZ1N0cmlrZXRocm91Z2guaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IGF0dHJp
YnV0ZWRTdHJpbmdTdHJpa2V0aHJvdWdoLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDQjE4NEM0MUFBM0YyMTAwMDY2RURGRCAvKiBDb250ZW50RXh0ZW5zaW9ucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQkJBMDc2MTlCQjhBOTEwMEJCRjAyNSAv
KiBPU09iamVjdFB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBP
U09iamVjdFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQkQ1QTIyMjJE
RTQyQTYwMDRBOUUzMiAvKiBXVEZTdHJpbmdVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV1RGU3RyaW5nVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0NDM0UxRkExOTdFMjM0MTAwQkU2MjUyIC8qIFVzZXJDb250ZW50Q29udHJvbGxlci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJDb250ZW50Q29udHJvbGxl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NDQjREQTcxQzgzQUU3MzAwQ0M2
OTE4IC8qIFBhZ2VHcm91cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQYWdlR3JvdXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0NCOTkyMDFE
M0I0MUY2MDAzOTIyRjYgLyogVXNlckluaXRpYXRlZEFjdGlvbkluTmF2aWdhdGlvbkFjdGlvbi5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJJbml0aWF0ZWRB
Y3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yNTYwLDYgKzI1NjIsNyBAQAogCQkJCUJDQjlFN0M3MTEyMzRFM0EwMEExMzdFMCAvKiBUZXN0
c0NvbnRyb2xsZXIuaCAqLywKIAkJCQk3QzgzRTAzNjFEMEE1RjcwMDBGRUJDRjMgLyogVXRpbGl0
aWVzLmggKi8sCiAJCQkJNDRBNjIyQzExNEEwRTJCNjAwNDg1MTVCIC8qIFdURlN0cmluZ1V0aWxp
dGllcy5oICovLAorCQkJCTdDQkQ1QTIyMjJERTQyQTYwMDRBOUUzMiAvKiBXVEZTdHJpbmdVdGls
aXRpZXMuY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBTb3VyY2U7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtNDEyNyw2ICs0MTMwLDcgQEAKIAkJCWZpbGVzID0gKAogCQkJCTdDODNE
RTk5MUQwQTU5MEMwMEZFQkNGMyAvKiBBdG9tU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBREFEMTUwMUQ3N0E5RjYwMDIxMjU4NiAvKiBCbG9ja1B0ci5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTdDQkQ1QTIzMjJERTQyQTYwMDRBOUUzMiAvKiBXVEZTdHJpbmdVdGlsaXRpZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFOUMxRDBBNTkwQzAwRkVCQ0YzIC8qIEJsb29tRmlsdGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUEwMUQwQTU5MEMwMEZFQkNGMyAvKiBDaGVj
a2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzMENCNUMx
RkNFMTc5NjAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICov
LApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRl
ci5jcHAJKHJldmlzaW9uIDI0NzUxNikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1N0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDI5IEBAIFRF
U1QoU3RyaW5nQnVpbGRlclRlc3QsIEFwcGVuZCkKICAgICB9CiB9CiAKKyBURVNUKFN0cmluZ0J1
aWxkZXJUZXN0LCBGbGV4aWJsZUFwcGVuZCkKKyB7CisgICAgIHsKKyAgICAgICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgIGJ1aWxkZXIuZmxleGlibGVBcHBlbmQoU3RyaW5nKCIw
MTIzNDU2Nzg5IikpOworICAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODki
LCBidWlsZGVyKTsKKyAgICAgICAgIGJ1aWxkZXIuZmxleGlibGVBcHBlbmQoImFiY2QiKTsKKyAg
ICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50KCIwMTIzNDU2Nzg5YWJjZCIsIGJ1aWxkZXIpOwor
ICAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnZScpOworICAgICAgICAgZXhwZWN0QnVp
bGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZSIsIGJ1aWxkZXIpOworICAgICAgICAgYnVpbGRl
ci5mbGV4aWJsZUFwcGVuZCgiIik7CisgICAgICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDEy
MzQ1Njc4OWFiY2RlIiwgYnVpbGRlcik7CisgICAgIH0KKworICAgICB7CisgICAgICAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKFN0cmlu
ZygiMDEyMzQ1Njc4OSIpLCAiYWJjZCIsICdlJywgIiIpOworICAgICAgICAgZXhwZWN0QnVpbGRl
ckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZSIsIGJ1aWxkZXIpOworICAgICAgICAgYnVpbGRlci5m
bGV4aWJsZUFwcGVuZChTdHJpbmcoIkEiKSwgIkIiLCAnQycsICIiKTsKKyAgICAgICAgIGV4cGVj
dEJ1aWxkZXJDb250ZW50KCIwMTIzNDU2Nzg5YWJjZGVBQkMiLCBidWlsZGVyKTsKKyAgICAgfQor
IH0KKwogVEVTVChTdHJpbmdCdWlsZGVyVGVzdCwgVG9TdHJpbmcpCiB7CiAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5n
T3BlcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9TdHJpbmdPcGVyYXRvcnMuY3BwCShyZXZpc2lvbiAyNDc1MTYpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw5ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2RlZmluZSBXVEZfU1RSSU5H
VFlQRUFEQVBURVJfQ09QSUVEX1dURl9TVFJJTkcoKSAoKyt3dGZTdHJpbmdDb3B5Q291bnQpCi0K
LXN0YXRpYyBpbnQgd3RmU3RyaW5nQ29weUNvdW50OworI2luY2x1ZGUgIldURlN0cmluZ1V0aWxp
dGllcy5oIgogCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374315</attachid>
            <date>2019-07-17 12:31:23 -0700</date>
            <delta_ts>2019-07-17 13:24:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198997-20190717123122.patch</filename>
            <type>text/plain</type>
            <size>25064</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDc1MjYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE5LTA3LTE2ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU3RyaW5nQnVpbGRlciBtZW1iZXIgZnVuY3Rpb24g
d2hpY2ggYWxsb3dzIG1ha2VTdHJpbmcoKSBzdHlsZSB2YXJpYWRpYyBhcmd1bWVudCBjb25zdHJ1
Y3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODk5NworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZHMg
bmV3IFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgbWVtYmVyIGZ1bmN0aW9uIHdo
aWNoIGFsbG93cyBwYXNzaW5nIG9uZSBvciBtb3JlIAorICAgICAgICBzdHJpbmctYWRhcHRhYmxl
IChpbiB0aGUgc2Vuc2UgdGhhdCB0aGVyZSBpcyBTdHJpbmdUeXBlQWRhcHRlciBzcGVjaWFsaXph
dGlvbiBmb3IgdGhlIAorICAgICAgICB0eXBlKSBwYXJhbWV0ZXJzLiBUaGlzIHJlLXVzdXNlcyB0
aGUgdmFyaWFkaWMgdGVtcGxhdGUgaW5mcmFzdHJ1Y3R1cmUgaW4gU3RyaW5nQ29uY2F0ZW5hdGUu
aAorICAgICAgICB0aGF0IGlzIHVzZWQgZm9yIG1ha2VTdHJpbmcoLi4uKSBhbGxvd2luZyBmb3Ig
aW1wcm92ZW1lbnRzIGluIG9uZSB0byBiZW5lZml0IHRoZSBvdGhlci4KKworICAgICAgICBUaGUg
YWR2YW50YWdlIG9mIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgb3ZlciBjYWxs
aW5nIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pCisgICAgICAgIG11bHRpcGxlIHRpbWVzIChi
ZXlvbmQgdGhlIGNvZGUgc2hhcmluZyB3aXRoIG1ha2VTdHJpbmcoLi4uKSBpcyB0aGF0IGl0IGNh
biBhdm9pZCB1bm5lY2Vzc2FyeQorICAgICAgICBhZGRpdGlvbmFsIHJlLWFsbG9jYXRpb25zIHdo
ZW4gdGhlIFN0cmluZ0J1aWxkZXIgbmVlZHMgdG8gZXhwYW5kIGl0J3MgY2FwYWNpdHkuIEl0IGRv
ZXMgdGhpcworICAgICAgICBieSBjb21wdXRpbmcgdGhlIGNvbXBsZXRlIHJlcXVpcmVkIGxlbmd0
aCBmb3IgYWxsIHRoZSBwYXNzZWQgYXJndW1lbnRzIGFuZCB0aGVuIGVuc3VyaW5nIGVub3VnaAor
ICAgICAgICBjYXBhY2l0eSBpcyBhdmFpbGFibGUuIEl0IGFsc28gcmVkdWNlcyB0aGUgYWxsb2Nh
dGlvbiBvdmVyaGVhZCB2ZXJzdXMgdGhlIGFudGktcGF0dGVybiBvZgorICAgICAgICBidWlsZGVy
LmFwcGVuZChtYWtlU3RyaW5nKC4uLikpLgorCisgICAgICAgIElkZWFsbHksIHRoaXMgbWVtYmVy
IGZ1bmN0aW9uIHNob3VsZCBldmVudHVhbGx5IGp1c3QgYmUgY2FsbGVkIFN0cmluZ0J1aWxkZXI6
OmFwcGVuZCguLi4pLCBidXQKKyAgICAgICAgdGhlIGN1cnJlbnQgb3ZlcmxvYWQgc2V0IGZvciBT
dHJpbmdCdWlsZGVyOjphcHBlbmQoLi4uKSBtYWtlcyB0aGlzIGNvbXBsaWNhdGVkIGR1ZSB0byBv
dmVybG9hZHMKKyAgICAgICAgdGhhdCB0YWtlIHR3byBhcmd1bWVudHMgc3VjaCBhcyBTdHJpbmdC
dWlsZGVyOjphcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCkuIEdvaW5nIGZvcndhcmQsIHdl
CisgICAgICAgIHNob3VsZCByZW5hbWUgb3IgcmVtb3ZlIHRob3NlIG92ZXJsb2FkcyBhbmQgbW92
ZSB0byBhIHN0YW5kYXJkIGludGVyZmFjZS4gCisKKyAgICAgICAgKiB3dGYvcG9zaXgvRmlsZVN5
c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHMpOgorICAgICAgICBBZG9wdCBTdHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFw
cGVuZCwgdXNpbmcgdG8gY29tYmluZSB0aGUgYXBwZW5kIG9mICcvJyBhbmQgY29tcG9uZW50Lgor
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHA6CisgICAgICAgIChXVEY6OlN0
cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoV1RGOjpTdHJpbmdC
dWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2spOgorICAgICAg
ICBFeHRyYWN0IHRoZSBwYXJ0IG9mIGFwcGVuZFVuaXRpYWxpemVkIHRoYXQgZG9lc24ndCBkbyB0
aGUgb3ZlcmZsb3cgY2hlY2sKKyAgICAgICAgaW50byBpdCdzIG93biBtZW1iZXIgZnVuY3Rpb24g
dG8gYWxsb3cgY2FsbGVycyB0aGF0IGhhdmUgYWxyZWFkeSBkb25lIHRoZQorICAgICAgICBvdmVy
ZmxvdyBjaGVjayB0byBieXBhc3MgaXQuCisKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6
YXBwZW5kVW5pbml0aWFsaXplZFdpdGhvdXRPdmVyZmxvd0NoZWNrRm9yVUNoYXIpOgorICAgICAg
ICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93
Q2hlY2tGb3JMQ2hhcik6CisgICAgICAgIEFkZGVkIHRvIGFsbG93IHRlbXBsYXRlIG1lbWJlciBm
dW5jdGlvbiBmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyB0byBjYWxsCisgICAgICAgIGFwcGVu
ZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVjayB3aXRob3V0IG1vdmluZyBpdCB0byB0
aGUgaGVhZGVyLgorICAgICAgICAKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6
CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kRnJvbUFkYXB0ZXJz
KToKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmQpOgorICAgICAg
ICBNb2RlbGVkIG9uIHRyeU1ha2VTdHJpbmdGcm9tQWRhcHRlcnMgaW4gU3RyaW5nQ29uY2F0ZW5h
dGUuaCwgdGhlc2UKKyAgICAgICAgZWFnZXJseSBjb21wdXRlIHRoZSByZXF1aXJlZCBsZW5ndGgs
IGV4cGFuZCB0aGUgYnVmZmVyIGFuZCB0aGVuIHVzZQorICAgICAgICB0aGUgZXhpc3Rpbmcgc3Ry
aW5nIHR5cGUgYWRhcHRvciBhY2N1bXVsYXRpb24gZnVuY3Rpb25zIHVzZWQgYnkgbWFrZVN0cmlu
Zy4gCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oOgorICAgICAgICAo
V1RGOjpzdHJpbmdUeXBlQWRhcHRlckFjY3VtdWxhdG9yKToKKyAgICAgICAgKFdURjo6dHJ5TWFr
ZVN0cmluZ0Zyb21BZGFwdGVycyk6CisgICAgICAgIChXVEY6Om1ha2VTdHJpbmdBY2N1bXVsYXRv
cik6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZXMgbWFrZVN0cmluZ0FjY3VtdWxhdG9yIHRvIHN0
cmluZ1R5cGVBZGFwdGVyQWNjdW11bGF0b3Igbm93IHRoYXQgaXQgaXMgdXNlZAorICAgICAgICBi
eSBtb3JlIHRoYW4ganVzdCBtYWtlU3RyaW5nLgorCiAyMDE5LTA3LTE3ICBDb21taXQgUXVldWUg
IDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMjQ3NTA1LgpJbmRleDogU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lY
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwCShyZXZpc2lvbiAyNDc1MjYpCisrKyBTb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVt
UE9TSVguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsMTAgKzMwMSw4IEBAIFN0cmluZyBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1YKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CiAgICAgYnVpbGRlci5hcHBlbmQocGF0aCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQg
OiBjb21wb25lbnRzKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcvJyk7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGNvbXBvbmVudCk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgY29tcG9uZW50
IDogY29tcG9uZW50cykKKyAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnLycsIGNvbXBv
bmVudCk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIApJbmRleDogU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCShyZXZpc2lvbiAyNDc1MjYpCisrKyBTb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNyAr
MTYzLDcgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjphbGxvY2F0ZUJ1ZmZlclVwQ29udgogICAgIEFT
U0VSVChtX2J1ZmZlci0+bGVuZ3RoKCkgPT0gcmVxdWlyZWRMZW5ndGgpOwogfQogCi10ZW1wbGF0
ZSA8PgordGVtcGxhdGU8Pgogdm9pZCBTdHJpbmdCdWlsZGVyOjpyZWFsbG9jYXRlQnVmZmVyPExD
aGFyPih1bnNpZ25lZCByZXF1aXJlZExlbmd0aCkKIHsKICAgICAvLyBJZiB0aGUgYnVmZmVyIGhh
cyBvbmx5IG9uZSByZWYgKGJ5IHRoaXMgU3RyaW5nQnVpbGRlciksIHJlYWxsb2NhdGUgaXQsCkBA
IC0xODMsNyArMTgzLDcgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjpyZWFsbG9jYXRlQnVmZmVyPExD
aAogICAgIEFTU0VSVChoYXNPdmVyZmxvd2VkKCkgfHwgbV9idWZmZXItPmxlbmd0aCgpID09IHJl
cXVpcmVkTGVuZ3RoKTsKIH0KIAotdGVtcGxhdGUgPD4KK3RlbXBsYXRlPD4KIHZvaWQgU3RyaW5n
QnVpbGRlcjo6cmVhbGxvY2F0ZUJ1ZmZlcjxVQ2hhcj4odW5zaWduZWQgcmVxdWlyZWRMZW5ndGgp
CiB7CiAgICAgLy8gSWYgdGhlIGJ1ZmZlciBoYXMgb25seSBvbmUgcmVmIChieSB0aGlzIFN0cmlu
Z0J1aWxkZXIpLCByZWFsbG9jYXRlIGl0LApAQCAtMjMxLDM3ICsyMzEsNTUgQEAgdm9pZCBTdHJp
bmdCdWlsZGVyOjpyZXNlcnZlQ2FwYWNpdHkodW5zaQogICAgIEFTU0VSVChoYXNPdmVyZmxvd2Vk
KCkgfHwgIW5ld0NhcGFjaXR5IHx8IG1fYnVmZmVyLT5sZW5ndGgoKSA+PSBuZXdDYXBhY2l0eSk7
CiB9CiAKLS8vIE1ha2UgJ2xlbmd0aCcgYWRkaXRpb25hbCBjYXBhY2l0eSBiZSBhdmFpbGFibGUg
aW4gbV9idWZmZXIsIHVwZGF0ZSBtX3N0cmluZyAmIG1fbGVuZ3RoLAorLy8gTWFrZSAnYWRkaXRp
b25hbExlbmd0aCcgYWRkaXRpb25hbCBjYXBhY2l0eSBiZSBhdmFpbGFibGUgaW4gbV9idWZmZXIs
IHVwZGF0ZSBtX3N0cmluZyAmIG1fbGVuZ3RoLAogLy8gcmV0dXJuIGEgcG9pbnRlciB0byB0aGUg
bmV3bHkgYWxsb2NhdGVkIHN0b3JhZ2UuCiAvLyBSZXR1cm5zIG51bGxwdHIgaWYgdGhlIHNpemUg
b2YgdGhlIG5ldyBidWlsZGVyIHdvdWxkIGhhdmUgb3ZlcmZsb3dlZAotdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJUeXBlPgotQUxXQVlTX0lOTElORSBDaGFyVHlwZSogU3RyaW5nQnVpbGRlcjo6YXBw
ZW5kVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgorQUxXQVlTX0lOTElORSBDaGFyYWN0ZXJUeXBlKiBTdHJpbmdCdWlsZGVyOjph
cHBlbmRVbmluaXRpYWxpemVkKHVuc2lnbmVkIGFkZGl0aW9uYWxMZW5ndGgpCiB7Ci0gICAgQVNT
RVJUKGxlbmd0aCk7CisgICAgQVNTRVJUKGFkZGl0aW9uYWxMZW5ndGgpOwogCiAgICAgLy8gQ2Fs
Y3VsYXRlIHRoZSBuZXcgc2l6ZSBvZiB0aGUgYnVpbGRlciBhZnRlciBhcHBlbmRpbmcuCi0gICAg
Q2hlY2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoID0gbV9sZW5ndGggKyBsZW5ndGg7CisgICAgQ2hl
Y2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoID0gbV9sZW5ndGggKyBhZGRpdGlvbmFsTGVuZ3RoOwog
ICAgIGlmIChyZXF1aXJlZExlbmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKICAgICAgICAgZGlkT3Zl
cmZsb3coKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgcmV0dXJuIGFw
cGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVjazxDaGFyYWN0ZXJUeXBlPihyZXF1
aXJlZExlbmd0aCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitBTFdB
WVNfSU5MSU5FIENoYXJhY3RlclR5cGUqIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6
ZWRXaXRob3V0T3ZlcmZsb3dDaGVjayhDaGVja2VkSW50MzIgcmVxdWlyZWRMZW5ndGgpCit7Cisg
ICAgQVNTRVJUKCFyZXF1aXJlZExlbmd0aC5oYXNPdmVyZmxvd2VkKCkpOworCiAgICAgaWYgKG1f
YnVmZmVyICYmIChyZXF1aXJlZExlbmd0aC51bnNhZmVHZXQ8dW5zaWduZWQ+KCkgPD0gbV9idWZm
ZXItPmxlbmd0aCgpKSkgewogICAgICAgICAvLyBJZiB0aGUgYnVmZmVyIGlzIHZhbGlkIGl0IG11
c3QgYmUgYXQgbGVhc3QgYXMgbG9uZyBhcyB0aGUgY3VycmVudCBidWlsZGVyIGNvbnRlbnRzIQog
ICAgICAgICBBU1NFUlQobV9idWZmZXItPmxlbmd0aCgpID49IG1fbGVuZ3RoLnVuc2FmZUdldDx1
bnNpZ25lZD4oKSk7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGggPSBtX2xlbmd0aC51
bnNhZmVHZXQoKTsKICAgICAgICAgbV9zdHJpbmcgPSBTdHJpbmcoKTsKICAgICAgICAgbV9sZW5n
dGggPSByZXF1aXJlZExlbmd0aDsKLSAgICAgICAgcmV0dXJuIGdldEJ1ZmZlckNoYXJhY3RlcnM8
Q2hhclR5cGU+KCkgKyBjdXJyZW50TGVuZ3RoOworICAgICAgICByZXR1cm4gZ2V0QnVmZmVyQ2hh
cmFjdGVyczxDaGFyYWN0ZXJUeXBlPigpICsgY3VycmVudExlbmd0aDsKICAgICB9CiAgICAgCi0g
ICAgcmV0dXJuIGFwcGVuZFVuaW5pdGlhbGl6ZWRTbG93PENoYXJUeXBlPihyZXF1aXJlZExlbmd0
aC51bnNhZmVHZXQoKSk7CisgICAgcmV0dXJuIGFwcGVuZFVuaW5pdGlhbGl6ZWRTbG93PENoYXJh
Y3RlclR5cGU+KHJlcXVpcmVkTGVuZ3RoLnVuc2FmZUdldCgpKTsKK30KKworVUNoYXIqIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVja0ZvclVDaGFy
KENoZWNrZWRJbnQzMiByZXF1aXJlZExlbmd0aCkKK3sKKyAgICByZXR1cm4gYXBwZW5kVW5pbml0
aWFsaXplZFdpdGhvdXRPdmVyZmxvd0NoZWNrPFVDaGFyPihyZXF1aXJlZExlbmd0aCk7Cit9CisK
K0xDaGFyKiBTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93
Q2hlY2tGb3JMQ2hhcihDaGVja2VkSW50MzIgcmVxdWlyZWRMZW5ndGgpCit7CisgICAgcmV0dXJu
IGFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVjazxMQ2hhcj4ocmVxdWlyZWRM
ZW5ndGgpOwogfQogCi0vLyBNYWtlICdsZW5ndGgnIGFkZGl0aW9uYWwgY2FwYWNpdHkgYmUgYXZh
aWxhYmxlIGluIG1fYnVmZmVyLCB1cGRhdGUgbV9zdHJpbmcgJiBtX2xlbmd0aCwKKy8vIE1ha2Ug
J3JlcXVpcmVkTGVuZ3RoJyBjYXBhY2l0eSBiZSBhdmFpbGFibGUgaW4gbV9idWZmZXIsIHVwZGF0
ZSBtX3N0cmluZyAmIG1fbGVuZ3RoLAogLy8gcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgbmV3bHkg
YWxsb2NhdGVkIHN0b3JhZ2UuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1DaGFyVHlw
ZSogU3RyaW5nQnVpbGRlcjo6YXBwZW5kVW5pbml0aWFsaXplZFNsb3codW5zaWduZWQgcmVxdWly
ZWRMZW5ndGgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQ2hhcmFjdGVyVHlw
ZSogU3RyaW5nQnVpbGRlcjo6YXBwZW5kVW5pbml0aWFsaXplZFNsb3codW5zaWduZWQgcmVxdWly
ZWRMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNPdmVyZmxvd2VkKCkpOwogICAgIEFTU0VSVChy
ZXF1aXJlZExlbmd0aCk7CkBAIC0yNzAsMTUgKzI4OCwxNSBAQCBDaGFyVHlwZSogU3RyaW5nQnVp
bGRlcjo6YXBwZW5kVW5pbml0aWFsCiAgICAgICAgIC8vIElmIHRoZSBidWZmZXIgaXMgdmFsaWQg
aXQgbXVzdCBiZSBhdCBsZWFzdCBhcyBsb25nIGFzIHRoZSBjdXJyZW50IGJ1aWxkZXIgY29udGVu
dHMhCiAgICAgICAgIEFTU0VSVChtX2J1ZmZlci0+bGVuZ3RoKCkgPj0gbV9sZW5ndGgudW5zYWZl
R2V0PHVuc2lnbmVkPigpKTsKICAgICAgICAgCi0gICAgICAgIHJlYWxsb2NhdGVCdWZmZXI8Q2hh
clR5cGU+KGV4cGFuZGVkQ2FwYWNpdHkoY2FwYWNpdHkoKSwgcmVxdWlyZWRMZW5ndGgpKTsKKyAg
ICAgICAgcmVhbGxvY2F0ZUJ1ZmZlcjxDaGFyYWN0ZXJUeXBlPihleHBhbmRlZENhcGFjaXR5KGNh
cGFjaXR5KCksIHJlcXVpcmVkTGVuZ3RoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJU
KG1fc3RyaW5nLmxlbmd0aCgpID09IG1fbGVuZ3RoLnVuc2FmZUdldDx1bnNpZ25lZD4oKSk7Ci0g
ICAgICAgIGFsbG9jYXRlQnVmZmVyKG1fbGVuZ3RoID8gbV9zdHJpbmcuY2hhcmFjdGVyczxDaGFy
VHlwZT4oKSA6IG51bGxwdHIsIGV4cGFuZGVkQ2FwYWNpdHkoY2FwYWNpdHkoKSwgcmVxdWlyZWRM
ZW5ndGgpKTsKKyAgICAgICAgYWxsb2NhdGVCdWZmZXIobV9sZW5ndGggPyBtX3N0cmluZy5jaGFy
YWN0ZXJzPENoYXJhY3RlclR5cGU+KCkgOiBudWxscHRyLCBleHBhbmRlZENhcGFjaXR5KGNhcGFj
aXR5KCksIHJlcXVpcmVkTGVuZ3RoKSk7CiAgICAgfQogICAgIGlmIChVTkxJS0VMWShoYXNPdmVy
Zmxvd2VkKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIENoYXJUeXBlKiByZXN1
bHQgPSBnZXRCdWZmZXJDaGFyYWN0ZXJzPENoYXJUeXBlPigpICsgbV9sZW5ndGgudW5zYWZlR2V0
KCk7CisgICAgQ2hhcmFjdGVyVHlwZSogcmVzdWx0ID0gZ2V0QnVmZmVyQ2hhcmFjdGVyczxDaGFy
YWN0ZXJUeXBlPigpICsgbV9sZW5ndGgudW5zYWZlR2V0KCk7CiAgICAgbV9sZW5ndGggPSByZXF1
aXJlZExlbmd0aDsKICAgICBBU1NFUlQoIWhhc092ZXJmbG93ZWQoKSk7CiAgICAgQVNTRVJUKG1f
YnVmZmVyLT5sZW5ndGgoKSA+PSBtX2xlbmd0aC51bnNhZmVHZXQ8dW5zaWduZWQ+KCkpOwpJbmRl
eDogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgJKHJldmlzaW9uIDI0NzUyNikKKysrIFNv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEs
NiArMjMxLDkgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZEZp
eGVkV2lkdGhOdW1iZXIoZmxvYXQsIHVuc2lnbmVkIGRlY2ltYWxQbGFjZXMpOwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoZG91YmxlLCB1bnNpZ25l
ZCBkZWNpbWFsUGxhY2VzKTsKIAorICAgIC8vIEZJWE1FOiBSZW5hbWUgdG8gYXBwZW5kKC4uLikg
YWZ0ZXIgcmVuYW1pbmcgYW55IG92ZXJsb2FkcyBvZiBhcHBlbmQgdGhhdCB0YWtlIG1vcmUgdGhh
biBvbmUgYXJndW1lbnQuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5nVHlwZXM+IHZv
aWQgZmxleGlibGVBcHBlbmQoU3RyaW5nVHlwZXMuLi4pOworCiAgICAgU3RyaW5nIHRvU3RyaW5n
KCkKICAgICB7CiAgICAgICAgIGlmICghbV9zdHJpbmcuaXNOdWxsKCkpIHsKQEAgLTM1MCwxNiAr
MzUzLDE5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhbGxvY2F0ZUJ1ZmZlcihjb25zdCBMQ2hhciog
Y3VycmVudENoYXJhY3RlcnMsIHVuc2lnbmVkIHJlcXVpcmVkTGVuZ3RoKTsKICAgICB2b2lkIGFs
bG9jYXRlQnVmZmVyKGNvbnN0IFVDaGFyKiBjdXJyZW50Q2hhcmFjdGVycywgdW5zaWduZWQgcmVx
dWlyZWRMZW5ndGgpOwogICAgIHZvaWQgYWxsb2NhdGVCdWZmZXJVcENvbnZlcnQoY29uc3QgTENo
YXIqIGN1cnJlbnRDaGFyYWN0ZXJzLCB1bnNpZ25lZCByZXF1aXJlZExlbmd0aCk7Ci0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIHZvaWQgcmVhbGxvY2F0ZUJ1ZmZlcih1bnNp
Z25lZCByZXF1aXJlZExlbmd0aCk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgot
ICAgIEFMV0FZU19JTkxJTkUgQ2hhclR5cGUqIGFwcGVuZFVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bGVuZ3RoKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgQ2hhclR5cGUq
IGFwcGVuZFVuaW5pdGlhbGl6ZWRTbG93KHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJUeXBlPgotICAgIEFMV0FZU19JTkxJTkUgQ2hhclR5cGUgKiBnZXRCdWZm
ZXJDaGFyYWN0ZXJzKCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9p
ZCByZWFsbG9jYXRlQnVmZmVyKHVuc2lnbmVkIHJlcXVpcmVkTGVuZ3RoKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIENoYXJhY3RlclR5cGUqIGFw
cGVuZFVuaW5pdGlhbGl6ZWQodW5zaWduZWQgYWRkaXRpb25hbExlbmd0aCk7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBDaGFyYWN0ZXJUeXBlKiBh
cHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2soQ2hlY2tlZEludDMyIHJlcXVp
cmVkTGVuZ3RoKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBDaGFyYWN0
ZXJUeXBlKiBhcHBlbmRVbmluaXRpYWxpemVkU2xvdyh1bnNpZ25lZCByZXF1aXJlZExlbmd0aCk7
CisgICAgCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVDaGFyKiBhcHBlbmRVbmluaXRpYWxpemVk
V2l0aG91dE92ZXJmbG93Q2hlY2tGb3JVQ2hhcihDaGVja2VkSW50MzIgcmVxdWlyZWRMZW5ndGgp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBMQ2hhciogYXBwZW5kVW5pbml0aWFsaXplZFdpdGhv
dXRPdmVyZmxvd0NoZWNrRm9yTENoYXIoQ2hlY2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoKTsKKyAg
ICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIENo
YXJhY3RlclR5cGUqIGdldEJ1ZmZlckNoYXJhY3RlcnMoKTsKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCByZWlmeVN0cmluZygpIGNvbnN0OwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
U3RyaW5nVHlwZUFkYXB0ZXJzPiB2b2lkIGZsZXhpYmxlQXBwZW5kRnJvbUFkYXB0ZXJzKFN0cmlu
Z1R5cGVBZGFwdGVycy4uLik7CisKICAgICBtdXRhYmxlIFN0cmluZyBtX3N0cmluZzsKICAgICBS
ZWZQdHI8U3RyaW5nSW1wbD4gbV9idWZmZXI7CiAgICAgdW5pb24gewpAQCAtMzc0LDIyICszODAs
NTQgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotdGVtcGxhdGUgPD4KK3RlbXBsYXRlPD4KIEFM
V0FZU19JTkxJTkUgTENoYXIqIFN0cmluZ0J1aWxkZXI6OmdldEJ1ZmZlckNoYXJhY3RlcnM8TENo
YXI+KCkKIHsKICAgICBBU1NFUlQobV9pczhCaXQpOwogICAgIHJldHVybiBtX2J1ZmZlckNoYXJh
Y3RlcnM4OwogfQogCi10ZW1wbGF0ZSA8PgordGVtcGxhdGU8PgogQUxXQVlTX0lOTElORSBVQ2hh
ciogU3RyaW5nQnVpbGRlcjo6Z2V0QnVmZmVyQ2hhcmFjdGVyczxVQ2hhcj4oKQogewogICAgIEFT
U0VSVCghbV9pczhCaXQpOwogICAgIHJldHVybiBtX2J1ZmZlckNoYXJhY3RlcnMxNjsKIH0KIAot
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotYm9vbCBlcXVhbChjb25zdCBTdHJpbmdCdWls
ZGVyJiBzLCBjb25zdCBDaGFyVHlwZSogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpCit0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlQWRhcHRlcnM+Cit2b2lkIFN0cmluZ0J1aWxkZXI6OmZs
ZXhpYmxlQXBwZW5kRnJvbUFkYXB0ZXJzKFN0cmluZ1R5cGVBZGFwdGVycy4uLiBhZGFwdGVycykK
K3sKKyAgICBhdXRvIHJlcXVpcmVkTGVuZ3RoID0gY2hlY2tlZFN1bTxpbnQzMl90PihtX2xlbmd0
aCwgYWRhcHRlcnMubGVuZ3RoKCkuLi4pOworICAgIGlmIChyZXF1aXJlZExlbmd0aC5oYXNPdmVy
Zmxvd2VkKCkpIHsKKyAgICAgICAgZGlkT3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChtX2lzOEJpdCAmJiBhcmU4Qml0KGFkYXB0ZXJzLi4uKSkgeworICAgICAg
ICBMQ2hhciogZGVzdCA9IGFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVja0Zv
ckxDaGFyKHJlcXVpcmVkTGVuZ3RoKTsKKyAgICAgICAgaWYgKCFkZXN0KSB7CisgICAgICAgICAg
ICBBU1NFUlQoaGFzT3ZlcmZsb3dlZCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBzdHJpbmdUeXBlQWRhcHRlckFjY3VtdWxhdG9yKGRlc3QsIGFkYXB0ZXJzLi4u
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBVQ2hhciogZGVzdCA9IGFwcGVuZFVuaW5pdGlhbGl6
ZWRXaXRob3V0T3ZlcmZsb3dDaGVja0ZvclVDaGFyKHJlcXVpcmVkTGVuZ3RoKTsKKyAgICAgICAg
aWYgKCFkZXN0KSB7CisgICAgICAgICAgICBBU1NFUlQoaGFzT3ZlcmZsb3dlZCgpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBzdHJpbmdUeXBlQWRhcHRlckFjY3Vt
dWxhdG9yKGRlc3QsIGFkYXB0ZXJzLi4uKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
Li4uIFN0cmluZ1R5cGVzPgordm9pZCBTdHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZChTdHJp
bmdUeXBlcy4uLiBzdHJpbmdzKQoreworICAgIGZsZXhpYmxlQXBwZW5kRnJvbUFkYXB0ZXJzKFN0
cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGVzPihzdHJpbmdzKS4uLik7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIGVxdWFsKGNvbnN0IFN0cmluZ0J1aWxkZXIm
IHMsIGNvbnN0IENoYXJhY3RlclR5cGUqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IGlmIChzLmxlbmd0aCgpICE9IGxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDAw
LDcgKzQzOCw3IEBAIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nQnVpbGRlciYgcywgY29uc3QKICAg
ICByZXR1cm4gZXF1YWwocy5jaGFyYWN0ZXJzMTYoKSwgYnVmZmVyLCBsZW5ndGgpOwogfQogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyaW5nVHlwZT4KK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5
cGU+CiBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0J1aWxkZXImIGEsIGNvbnN0IFN0cmluZ1R5cGUm
IGIpCiB7CiAgICAgaWYgKGEubGVuZ3RoKCkgIT0gYi5sZW5ndGgoKSkKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgJKHJldmlzaW9uIDI0NzUyNikKKysrIFNvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ4
LDE2ICsyNDgsMTYgQEAgaW5saW5lIGJvb2wgYXJlOEJpdChBZGFwdGVyIGFkYXB0ZXIsIEFkYQog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBlbmFtZSBBZGFwdGVyPgotaW5s
aW5lIHZvaWQgbWFrZVN0cmluZ0FjY3VtdWxhdG9yKFJlc3VsdFR5cGUqIHJlc3VsdCwgQWRhcHRl
ciBhZGFwdGVyKQoraW5saW5lIHZvaWQgc3RyaW5nVHlwZUFkYXB0ZXJBY2N1bXVsYXRvcihSZXN1
bHRUeXBlKiByZXN1bHQsIEFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBhZGFwdGVyLndyaXRlVG8o
cmVzdWx0KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUgQWRh
cHRlciwgdHlwZW5hbWUuLi4gQWRhcHRlcnM+Ci1pbmxpbmUgdm9pZCBtYWtlU3RyaW5nQWNjdW11
bGF0b3IoUmVzdWx0VHlwZSogcmVzdWx0LCBBZGFwdGVyIGFkYXB0ZXIsIEFkYXB0ZXJzIC4uLmFk
YXB0ZXJzKQoraW5saW5lIHZvaWQgc3RyaW5nVHlwZUFkYXB0ZXJBY2N1bXVsYXRvcihSZXN1bHRU
eXBlKiByZXN1bHQsIEFkYXB0ZXIgYWRhcHRlciwgQWRhcHRlcnMgLi4uYWRhcHRlcnMpCiB7CiAg
ICAgYWRhcHRlci53cml0ZVRvKHJlc3VsdCk7Ci0gICAgbWFrZVN0cmluZ0FjY3VtdWxhdG9yKHJl
c3VsdCArIGFkYXB0ZXIubGVuZ3RoKCksIGFkYXB0ZXJzLi4uKTsKKyAgICBzdHJpbmdUeXBlQWRh
cHRlckFjY3VtdWxhdG9yKHJlc3VsdCArIGFkYXB0ZXIubGVuZ3RoKCksIGFkYXB0ZXJzLi4uKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZUFkYXB0ZXIsIHR5cGVuYW1lLi4uIFN0
cmluZ1R5cGVBZGFwdGVycz4KQEAgLTI3Niw3ICsyNzYsNyBAQCBTdHJpbmcgdHJ5TWFrZVN0cmlu
Z0Zyb21BZGFwdGVycyhTdHJpbmdUCiAgICAgICAgIGlmICghcmVzdWx0SW1wbCkKICAgICAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgICAgICBtYWtlU3RyaW5nQWNjdW11bGF0b3IoYnVm
ZmVyLCBhZGFwdGVyLCBhZGFwdGVycy4uLik7CisgICAgICAgIHN0cmluZ1R5cGVBZGFwdGVyQWNj
dW11bGF0b3IoYnVmZmVyLCBhZGFwdGVyLCBhZGFwdGVycy4uLik7CiAKICAgICAgICAgcmV0dXJu
IHJlc3VsdEltcGw7CiAgICAgfQpAQCAtMjg2LDcgKzI4Niw3IEBAIFN0cmluZyB0cnlNYWtlU3Ry
aW5nRnJvbUFkYXB0ZXJzKFN0cmluZ1QKICAgICBpZiAoIXJlc3VsdEltcGwpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAotICAgIG1ha2VTdHJpbmdBY2N1bXVsYXRvcihidWZmZXIsIGFkYXB0
ZXIsIGFkYXB0ZXJzLi4uKTsKKyAgICBzdHJpbmdUeXBlQWRhcHRlckFjY3VtdWxhdG9yKGJ1ZmZl
ciwgYWRhcHRlciwgYWRhcHRlcnMuLi4pOwogCiAgICAgcmV0dXJuIHJlc3VsdEltcGw7CiB9Cklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNDc1MjYpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyOCBAQAorMjAxOS0wNy0xNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIFN0cmluZ0J1aWxkZXIgbWVtYmVyIGZ1bmN0aW9uIHdoaWNoIGFsbG93cyBtYWtl
U3RyaW5nKCkgc3R5bGUgdmFyaWFkaWMgYXJndW1lbnQgY29uc3RydWN0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg5OTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1N0cmluZ0J1aWxkZXIuY3BwOgorICAgICAgICBBZGQgYmFzaWMgdGVzdCBzaG93aW5nIHRo
YXQgU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmQgY2FuIGJlIHVzZWQgdG8gCisgICAgICAg
IGFwcGVuZCBvbmUgb3IgbW9yZSBzdHJpbmcgYWRhcHRhYmxlIHR5cGVzLiAKKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBXVEZT
dHJpbmdVdGlsaXRpZXMuY3BwCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgQWRkIGJhc2ljIHRlc3Qgc2hvd2luZyB0aGF0IFN0
cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kIGNhbiBiZSB1c2VkIHRvIAorICAgICAgICBhcHBl
bmQgb25lIG9yIG1vcmUgc3RyaW5nIGFkYXB0YWJsZSB0eXBlcy4gCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvV1RGU3RyaW5nVXRpbGl0aWVzLmNwcDogQWRkZWQuCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9XVEZTdHJpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgTW92ZSBXVEZfU1RSSU5HVFlQ
RUFEQVBURVJfQ09QSUVEX1dURl9TVFJJTkcoKSBhbmQgd3RmU3RyaW5nQ29weUNvdW50IHRvIFdU
RlN0cmluZ1V0aWxpdGllcy5oL2NwcAorICAgICAgICB0byBhbGxvdyBmb3IgYSBzaW5nbGUgZGVm
aW5pdGlvbiBvZiBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmcsIHZvaWQ+IHdoaWNoIGlzIHJlcXVp
cmVkIGZvciBPRFIuCisKIDIwMTktMDctMTcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW2lPU10gT3B0aW9uICsgVXAgb3IgRG93biBBcnJvdyBrZXkgZG9lc27i
gJl0IG1vdmUgY3Vyc29yIHBhc3QgcGFyYWdyYXBoIGJvdW5kYXJpZXMgaW4gV2ViS2l0MgpJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNDc1MjYpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsy
Myw3IEBAIGVuZG1hY3JvKCkKIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBDb3VudGVycy5jcHAK
ICAgICBUZXN0c0NvbnRyb2xsZXIuY3BwCisgICAgV1RGU3RyaW5nVXRpbGl0aWVzLmNwcAogCiAg
ICAgVGVzdHMvV1RGL0F0b21TdHJpbmcuY3BwCiAgICAgVGVzdHMvV1RGL0Jsb29tRmlsdGVyLmNw
cApAQCAtMTE2LDYgKzExNyw3IEBAIFdFQktJVF9FWEVDVVRBQkxFX0RFQ0xBUkUoVGVzdFdURikK
IGlmIChFTkFCTEVfV0VCQ09SRSkKICAgICBzZXQoVGVzdFdlYkNvcmVfU09VUkNFUwogICAgICAg
ICBUZXN0c0NvbnRyb2xsZXIuY3BwCisgICAgICAgIFdURlN0cmluZ1V0aWxpdGllcy5jcHAKIAog
ICAgICAgICBUZXN0cy9XZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5jcHAKICAgICAgICAgVGVzdHMv
V2ViQ29yZS9DU1NQYXJzZXIuY3BwCkBAIC0xNjUsNiArMTY3LDcgQEAgZW5kaWYgKCkKIGlmIChF
TkFCTEVfV0VCS0lUX0xFR0FDWSkKICAgICBzZXQoVGVzdFdlYktpdExlZ2FjeV9TT1VSQ0VTCiAg
ICAgICAgIFRlc3RzQ29udHJvbGxlci5jcHAKKyAgICAgICAgV1RGU3RyaW5nVXRpbGl0aWVzLmNw
cAogICAgICkKIAogICAgIHNldChUZXN0V2ViS2l0TGVnYWN5X0xJQlJBUklFUwpAQCAtMjY2LDYg
KzI2OSw3IEBAIGlmIChFTkFCTEVfV0VCS0lUKQogICAgICAgICBKYXZhU2NyaXB0VGVzdC5jcHAK
ICAgICAgICAgUGxhdGZvcm1VdGlsaXRpZXMuY3BwCiAgICAgICAgIFRlc3RzQ29udHJvbGxlci5j
cHAKKyAgICAgICAgV1RGU3RyaW5nVXRpbGl0aWVzLmNwcAogICAgICkKICAgICB0YXJnZXRfY29t
cGlsZV9kZWZpbml0aW9ucyhUZXN0V2ViS2l0QVBJQmFzZSBQUklWQVRFIEJVSUxESU5HX1Rlc3RX
ZWJLaXQpCiAgICAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoVGVzdFdlYktpdEFQSUJhc2Ug
UFJJVkFURSAke1Rlc3RXZWJLaXRfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTfSkKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvV1RGU3RyaW5nVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1dURlN0cmluZ1V0aWxpdGllcy5jcHAJKG5vbmV4aXN0ZW50
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9XVEZTdHJpbmdVdGlsaXRpZXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCisKK2ludCB3dGZTdHJpbmdDb3B5Q291
bnQ7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1dURlN0cmluZ1V0aWxpdGllcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvV1RGU3RyaW5nVXRpbGl0aWVzLmgJKHJldmlz
aW9uIDI0NzUyNikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvV1RGU3RyaW5nVXRpbGl0aWVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDEwIEBACiAKICNwcmFnbWEgb25jZQogCisjZGVm
aW5lIFdURl9TVFJJTkdUWVBFQURBUFRFUl9DT1BJRURfV1RGX1NUUklORygpICgrK3d0ZlN0cmlu
Z0NvcHlDb3VudCkKKworZXh0ZXJuIGludCB3dGZTdHJpbmdDb3B5Q291bnQ7CisKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjQ3NTI2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUwOCw2ICs1MDgs
NyBAQAogCQk3Qzg5RDJBQzFBNjlCODBEMDAzQTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg5RDJB
QTFBNjlCODBEMDAzQTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlvbi5jcHAgKi87IH07CiAJCTdD
OUVEOThCMTdBMTlGNEIwMEU0REMzMyAvKiBhdHRyaWJ1dGVkU3RyaW5nU3RyaWtldGhyb3VnaC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDOUVEOThBMTdBMTlEMDYwMEU0REMzMyAvKiBhdHRyaWJ1dGVkU3RyaW5nU3RyaWtldGhyb3Vn
aC5odG1sICovOyB9OwogCQk3Q0IxODRDNjFBQTNGMjEwMDA2NkVERkQgLyogQ29udGVudEV4dGVu
c2lvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0NCMTg0QzQxQUEzRjIxMDAwNjZFREZEIC8qIENvbnRlbnRFeHRlbnNpb25zLmNwcCAqLzsgfTsK
KwkJN0NCRDVBMjMyMkRFNDJBNjAwNEE5RTMyIC8qIFdURlN0cmluZ1V0aWxpdGllcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0JENUEyMjIyREU0
MkE2MDA0QTlFMzIgLyogV1RGU3RyaW5nVXRpbGl0aWVzLmNwcCAqLzsgfTsKIAkJN0NDQjREQTkx
QzgzQUU3MzAwQ0M2OTE4IC8qIFBhZ2VHcm91cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0NCNERBNzFDODNBRTczMDBDQzY5MTggLyogUGFnZUdy
b3VwLmNwcCAqLzsgfTsKIAkJN0NDQjk5MjExRDNCNDFGNjAwMzkyMkY2IC8qIFVzZXJJbml0aWF0
ZWRBY3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0NCOTkyMDFEM0I0MUY2MDAzOTIyRjYgLyogVXNlckluaXRp
YXRlZEFjdGlvbkluTmF2aWdhdGlvbkFjdGlvbi5tbSAqLzsgfTsKIAkJN0NDQjk5MjMxRDNCNEE0
NjAwMzkyMkY2IC8qIG9wZW4tbXVsdGlwbGUtZXh0ZXJuYWwtdXJsLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NDQjk5MjIxRDNCNDRF
NzAwMzkyMkY2IC8qIG9wZW4tbXVsdGlwbGUtZXh0ZXJuYWwtdXJsLmh0bWwgKi87IH07CkBAIC0x
OTI2LDYgKzE5MjcsNyBAQAogCQk3QzlFRDk4QTE3QTE5RDA2MDBFNERDMzMgLyogYXR0cmlidXRl
ZFN0cmluZ1N0cmlrZXRocm91Z2guaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IGF0dHJpYnV0ZWRTdHJpbmdTdHJp
a2V0aHJvdWdoLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQjE4NEM0MUFB
M0YyMTAwMDY2RURGRCAvKiBDb250ZW50RXh0ZW5zaW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDQkJBMDc2MTlCQjhBOTEwMEJCRjAyNSAvKiBPU09iamVjdFB0ci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPU09iamVjdFB0ci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQkQ1QTIyMjJERTQyQTYwMDRBOUUzMiAv
KiBXVEZTdHJpbmdVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV1RGU3RyaW5nVXRp
bGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NDM0UxRkExOTdFMjM0
MTAwQkU2MjUyIC8qIFVzZXJDb250ZW50Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJDb250ZW50Q29udHJvbGxlci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NDQjREQTcxQzgzQUU3MzAwQ0M2OTE4IC8qIFBhZ2VHcm91
cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlR3JvdXAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0NCOTkyMDFEM0I0MUY2MDAzOTIyRjYg
LyogVXNlckluaXRpYXRlZEFjdGlvbkluTmF2aWdhdGlvbkFjdGlvbi5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJJbml0aWF0ZWRBY3Rpb25Jbk5hdmlnYXRp
b25BY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTYyLDYgKzI1NjQs
NyBAQAogCQkJCUJDQjlFN0M3MTEyMzRFM0EwMEExMzdFMCAvKiBUZXN0c0NvbnRyb2xsZXIuaCAq
LywKIAkJCQk3QzgzRTAzNjFEMEE1RjcwMDBGRUJDRjMgLyogVXRpbGl0aWVzLmggKi8sCiAJCQkJ
NDRBNjIyQzExNEEwRTJCNjAwNDg1MTVCIC8qIFdURlN0cmluZ1V0aWxpdGllcy5oICovLAorCQkJ
CTdDQkQ1QTIyMjJERTQyQTYwMDRBOUUzMiAvKiBXVEZTdHJpbmdVdGlsaXRpZXMuY3BwICovLAog
CQkJKTsKIAkJCW5hbWUgPSBTb3VyY2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAt
NDEzMCw2ICs0MTMzLDcgQEAKIAkJCWZpbGVzID0gKAogCQkJCTdDODNERTk5MUQwQTU5MEMwMEZF
QkNGMyAvKiBBdG9tU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBREFEMTUwMUQ3N0E5
RjYwMDIxMjU4NiAvKiBCbG9ja1B0ci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdDQkQ1QTIzMjJE
RTQyQTYwMDRBOUUzMiAvKiBXVEZTdHJpbmdVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0RFOUMxRDBBNTkwQzAwRkVCQ0YzIC8qIEJsb29tRmlsdGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDODNERUEwMUQwQTU5MEMwMEZFQkNGMyAvKiBDaGVja2VkQXJpdGhtZXRpY09w
ZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzMENCNUMxRkNFMTc5NjAwNEI1MzIz
IC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9u
IDI0NzUyNikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDI5IEBAIFRFU1QoU3RyaW5nQnVpbGRl
clRlc3QsIEFwcGVuZCkKICAgICB9CiB9CiAKK1RFU1QoU3RyaW5nQnVpbGRlclRlc3QsIEZsZXhp
YmxlQXBwZW5kKQoreworICAgIHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
ICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKFN0cmluZygiMDEyMzQ1Njc4OSIpKTsKKyAgICAg
ICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODkiLCBidWlsZGVyKTsKKyAgICAgICAg
YnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiYWJjZCIpOworICAgICAgICBleHBlY3RCdWlsZGVyQ29u
dGVudCgiMDEyMzQ1Njc4OWFiY2QiLCBidWlsZGVyKTsKKyAgICAgICAgYnVpbGRlci5mbGV4aWJs
ZUFwcGVuZCgnZScpOworICAgICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OWFi
Y2RlIiwgYnVpbGRlcik7CisgICAgICAgIGJ1aWxkZXIuZmxleGlibGVBcHBlbmQoIiIpOworICAg
ICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OWFiY2RlIiwgYnVpbGRlcik7Cisg
ICAgfQorCisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1
aWxkZXIuZmxleGlibGVBcHBlbmQoU3RyaW5nKCIwMTIzNDU2Nzg5IiksICJhYmNkIiwgJ2UnLCAi
Iik7CisgICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50KCIwMTIzNDU2Nzg5YWJjZGUiLCBidWls
ZGVyKTsKKyAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZChTdHJpbmcoIkEiKSwgIkIiLCAn
QycsICIiKTsKKyAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZUFC
QyIsIGJ1aWxkZXIpOworICAgIH0KK30KKwogVEVTVChTdHJpbmdCdWlsZGVyVGVzdCwgVG9TdHJp
bmcpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCShyZXZpc2lvbiAyNDc1
MjYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw5ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIK
IAotI2RlZmluZSBXVEZfU1RSSU5HVFlQRUFEQVBURVJfQ09QSUVEX1dURl9TVFJJTkcoKSAoKyt3
dGZTdHJpbmdDb3B5Q291bnQpCi0KLXN0YXRpYyBpbnQgd3RmU3RyaW5nQ29weUNvdW50OworI2lu
Y2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgogCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Vmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374321</attachid>
            <date>2019-07-17 13:24:02 -0700</date>
            <delta_ts>2019-07-17 14:18:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198997-20190717132401.patch</filename>
            <type>text/plain</type>
            <size>26693</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDc1MjYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE5LTA3LTE2ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU3RyaW5nQnVpbGRlciBtZW1iZXIgZnVuY3Rpb24g
d2hpY2ggYWxsb3dzIG1ha2VTdHJpbmcoKSBzdHlsZSB2YXJpYWRpYyBhcmd1bWVudCBjb25zdHJ1
Y3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODk5NworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZHMg
bmV3IFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgbWVtYmVyIGZ1bmN0aW9uIHdo
aWNoIGFsbG93cyBwYXNzaW5nIG9uZSBvciBtb3JlIAorICAgICAgICBzdHJpbmctYWRhcHRhYmxl
IChpbiB0aGUgc2Vuc2UgdGhhdCB0aGVyZSBpcyBTdHJpbmdUeXBlQWRhcHRlciBzcGVjaWFsaXph
dGlvbiBmb3IgdGhlIAorICAgICAgICB0eXBlKSBwYXJhbWV0ZXJzLiBUaGlzIHJlLXVzdXNlcyB0
aGUgdmFyaWFkaWMgdGVtcGxhdGUgaW5mcmFzdHJ1Y3R1cmUgaW4gU3RyaW5nQ29uY2F0ZW5hdGUu
aAorICAgICAgICB0aGF0IGlzIHVzZWQgZm9yIG1ha2VTdHJpbmcoLi4uKSBhbGxvd2luZyBmb3Ig
aW1wcm92ZW1lbnRzIGluIG9uZSB0byBiZW5lZml0IHRoZSBvdGhlci4KKworICAgICAgICBUaGUg
YWR2YW50YWdlIG9mIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgb3ZlciBjYWxs
aW5nIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pCisgICAgICAgIG11bHRpcGxlIHRpbWVzIChi
ZXlvbmQgdGhlIGNvZGUgc2hhcmluZyB3aXRoIG1ha2VTdHJpbmcoLi4uKSBpcyB0aGF0IGl0IGNh
biBhdm9pZCB1bm5lY2Vzc2FyeQorICAgICAgICBhZGRpdGlvbmFsIHJlLWFsbG9jYXRpb25zIHdo
ZW4gdGhlIFN0cmluZ0J1aWxkZXIgbmVlZHMgdG8gZXhwYW5kIGl0J3MgY2FwYWNpdHkuIEl0IGRv
ZXMgdGhpcworICAgICAgICBieSBjb21wdXRpbmcgdGhlIGNvbXBsZXRlIHJlcXVpcmVkIGxlbmd0
aCBmb3IgYWxsIHRoZSBwYXNzZWQgYXJndW1lbnRzIGFuZCB0aGVuIGVuc3VyaW5nIGVub3VnaAor
ICAgICAgICBjYXBhY2l0eSBpcyBhdmFpbGFibGUuIEl0IGFsc28gcmVkdWNlcyB0aGUgYWxsb2Nh
dGlvbiBvdmVyaGVhZCB2ZXJzdXMgdGhlIGFudGktcGF0dGVybiBvZgorICAgICAgICBidWlsZGVy
LmFwcGVuZChtYWtlU3RyaW5nKC4uLikpLgorCisgICAgICAgIElkZWFsbHksIHRoaXMgbWVtYmVy
IGZ1bmN0aW9uIHNob3VsZCBldmVudHVhbGx5IGp1c3QgYmUgY2FsbGVkIFN0cmluZ0J1aWxkZXI6
OmFwcGVuZCguLi4pLCBidXQKKyAgICAgICAgdGhlIGN1cnJlbnQgb3ZlcmxvYWQgc2V0IGZvciBT
dHJpbmdCdWlsZGVyOjphcHBlbmQoLi4uKSBtYWtlcyB0aGlzIGNvbXBsaWNhdGVkIGR1ZSB0byBv
dmVybG9hZHMKKyAgICAgICAgdGhhdCB0YWtlIHR3byBhcmd1bWVudHMgc3VjaCBhcyBTdHJpbmdC
dWlsZGVyOjphcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCkuIEdvaW5nIGZvcndhcmQsIHdl
CisgICAgICAgIHNob3VsZCByZW5hbWUgb3IgcmVtb3ZlIHRob3NlIG92ZXJsb2FkcyBhbmQgbW92
ZSB0byBhIHN0YW5kYXJkIGludGVyZmFjZS4gCisKKyAgICAgICAgKiB3dGYvcG9zaXgvRmlsZVN5
c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHMpOgorICAgICAgICBBZG9wdCBTdHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFw
cGVuZCwgdXNpbmcgdG8gY29tYmluZSB0aGUgYXBwZW5kIG9mICcvJyBhbmQgY29tcG9uZW50Lgor
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHA6CisgICAgICAgIChXVEY6OlN0
cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoV1RGOjpTdHJpbmdC
dWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2spOgorICAgICAg
ICBFeHRyYWN0IHRoZSBwYXJ0IG9mIGFwcGVuZFVuaXRpYWxpemVkIHRoYXQgZG9lc24ndCBkbyB0
aGUgb3ZlcmZsb3cgY2hlY2sKKyAgICAgICAgaW50byBpdCdzIG93biBtZW1iZXIgZnVuY3Rpb24g
dG8gYWxsb3cgY2FsbGVycyB0aGF0IGhhdmUgYWxyZWFkeSBkb25lIHRoZQorICAgICAgICBvdmVy
ZmxvdyBjaGVjayB0byBieXBhc3MgaXQuCisKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6
YXBwZW5kVW5pbml0aWFsaXplZFdpdGhvdXRPdmVyZmxvd0NoZWNrRm9yVUNoYXIpOgorICAgICAg
ICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93
Q2hlY2tGb3JMQ2hhcik6CisgICAgICAgIEFkZGVkIHRvIGFsbG93IHRlbXBsYXRlIG1lbWJlciBm
dW5jdGlvbiBmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyB0byBjYWxsCisgICAgICAgIGFwcGVu
ZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVjayB3aXRob3V0IG1vdmluZyBpdCB0byB0
aGUgaGVhZGVyLgorICAgICAgICAKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6
CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kRnJvbUFkYXB0ZXJz
KToKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmQpOgorICAgICAg
ICBNb2RlbGVkIG9uIHRyeU1ha2VTdHJpbmdGcm9tQWRhcHRlcnMgaW4gU3RyaW5nQ29uY2F0ZW5h
dGUuaCwgdGhlc2UKKyAgICAgICAgZWFnZXJseSBjb21wdXRlIHRoZSByZXF1aXJlZCBsZW5ndGgs
IGV4cGFuZCB0aGUgYnVmZmVyIGFuZCB0aGVuIHVzZQorICAgICAgICB0aGUgZXhpc3Rpbmcgc3Ry
aW5nIHR5cGUgYWRhcHRvciBhY2N1bXVsYXRpb24gZnVuY3Rpb25zIHVzZWQgYnkgbWFrZVN0cmlu
Zy4gCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oOgorICAgICAgICAo
V1RGOjpzdHJpbmdUeXBlQWRhcHRlckFjY3VtdWxhdG9yKToKKyAgICAgICAgKFdURjo6dHJ5TWFr
ZVN0cmluZ0Zyb21BZGFwdGVycyk6CisgICAgICAgIChXVEY6Om1ha2VTdHJpbmdBY2N1bXVsYXRv
cik6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZXMgbWFrZVN0cmluZ0FjY3VtdWxhdG9yIHRvIHN0
cmluZ1R5cGVBZGFwdGVyQWNjdW11bGF0b3Igbm93IHRoYXQgaXQgaXMgdXNlZAorICAgICAgICBi
eSBtb3JlIHRoYW4ganVzdCBtYWtlU3RyaW5nLgorCiAyMDE5LTA3LTE3ICBDb21taXQgUXVldWUg
IDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMjQ3NTA1LgpJbmRleDogU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lY
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwCShyZXZpc2lvbiAyNDc1MjYpCisrKyBTb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVt
UE9TSVguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsMTAgKzMwMSw4IEBAIFN0cmluZyBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1YKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CiAgICAgYnVpbGRlci5hcHBlbmQocGF0aCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQg
OiBjb21wb25lbnRzKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcvJyk7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGNvbXBvbmVudCk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgY29tcG9uZW50
IDogY29tcG9uZW50cykKKyAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnLycsIGNvbXBv
bmVudCk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIApJbmRleDogU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCShyZXZpc2lvbiAyNDc1MjYpCisrKyBTb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNyAr
MTYzLDcgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjphbGxvY2F0ZUJ1ZmZlclVwQ29udgogICAgIEFT
U0VSVChtX2J1ZmZlci0+bGVuZ3RoKCkgPT0gcmVxdWlyZWRMZW5ndGgpOwogfQogCi10ZW1wbGF0
ZSA8PgordGVtcGxhdGU8Pgogdm9pZCBTdHJpbmdCdWlsZGVyOjpyZWFsbG9jYXRlQnVmZmVyPExD
aGFyPih1bnNpZ25lZCByZXF1aXJlZExlbmd0aCkKIHsKICAgICAvLyBJZiB0aGUgYnVmZmVyIGhh
cyBvbmx5IG9uZSByZWYgKGJ5IHRoaXMgU3RyaW5nQnVpbGRlciksIHJlYWxsb2NhdGUgaXQsCkBA
IC0xODMsNyArMTgzLDcgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjpyZWFsbG9jYXRlQnVmZmVyPExD
aAogICAgIEFTU0VSVChoYXNPdmVyZmxvd2VkKCkgfHwgbV9idWZmZXItPmxlbmd0aCgpID09IHJl
cXVpcmVkTGVuZ3RoKTsKIH0KIAotdGVtcGxhdGUgPD4KK3RlbXBsYXRlPD4KIHZvaWQgU3RyaW5n
QnVpbGRlcjo6cmVhbGxvY2F0ZUJ1ZmZlcjxVQ2hhcj4odW5zaWduZWQgcmVxdWlyZWRMZW5ndGgp
CiB7CiAgICAgLy8gSWYgdGhlIGJ1ZmZlciBoYXMgb25seSBvbmUgcmVmIChieSB0aGlzIFN0cmlu
Z0J1aWxkZXIpLCByZWFsbG9jYXRlIGl0LApAQCAtMjMxLDM3ICsyMzEsNTUgQEAgdm9pZCBTdHJp
bmdCdWlsZGVyOjpyZXNlcnZlQ2FwYWNpdHkodW5zaQogICAgIEFTU0VSVChoYXNPdmVyZmxvd2Vk
KCkgfHwgIW5ld0NhcGFjaXR5IHx8IG1fYnVmZmVyLT5sZW5ndGgoKSA+PSBuZXdDYXBhY2l0eSk7
CiB9CiAKLS8vIE1ha2UgJ2xlbmd0aCcgYWRkaXRpb25hbCBjYXBhY2l0eSBiZSBhdmFpbGFibGUg
aW4gbV9idWZmZXIsIHVwZGF0ZSBtX3N0cmluZyAmIG1fbGVuZ3RoLAorLy8gTWFrZSAnYWRkaXRp
b25hbExlbmd0aCcgYWRkaXRpb25hbCBjYXBhY2l0eSBiZSBhdmFpbGFibGUgaW4gbV9idWZmZXIs
IHVwZGF0ZSBtX3N0cmluZyAmIG1fbGVuZ3RoLAogLy8gcmV0dXJuIGEgcG9pbnRlciB0byB0aGUg
bmV3bHkgYWxsb2NhdGVkIHN0b3JhZ2UuCiAvLyBSZXR1cm5zIG51bGxwdHIgaWYgdGhlIHNpemUg
b2YgdGhlIG5ldyBidWlsZGVyIHdvdWxkIGhhdmUgb3ZlcmZsb3dlZAotdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJUeXBlPgotQUxXQVlTX0lOTElORSBDaGFyVHlwZSogU3RyaW5nQnVpbGRlcjo6YXBw
ZW5kVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgorQUxXQVlTX0lOTElORSBDaGFyYWN0ZXJUeXBlKiBTdHJpbmdCdWlsZGVyOjph
cHBlbmRVbmluaXRpYWxpemVkKHVuc2lnbmVkIGFkZGl0aW9uYWxMZW5ndGgpCiB7Ci0gICAgQVNT
RVJUKGxlbmd0aCk7CisgICAgQVNTRVJUKGFkZGl0aW9uYWxMZW5ndGgpOwogCiAgICAgLy8gQ2Fs
Y3VsYXRlIHRoZSBuZXcgc2l6ZSBvZiB0aGUgYnVpbGRlciBhZnRlciBhcHBlbmRpbmcuCi0gICAg
Q2hlY2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoID0gbV9sZW5ndGggKyBsZW5ndGg7CisgICAgQ2hl
Y2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoID0gbV9sZW5ndGggKyBhZGRpdGlvbmFsTGVuZ3RoOwog
ICAgIGlmIChyZXF1aXJlZExlbmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKICAgICAgICAgZGlkT3Zl
cmZsb3coKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgcmV0dXJuIGFw
cGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVjazxDaGFyYWN0ZXJUeXBlPihyZXF1
aXJlZExlbmd0aCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitBTFdB
WVNfSU5MSU5FIENoYXJhY3RlclR5cGUqIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6
ZWRXaXRob3V0T3ZlcmZsb3dDaGVjayhDaGVja2VkSW50MzIgcmVxdWlyZWRMZW5ndGgpCit7Cisg
ICAgQVNTRVJUKCFyZXF1aXJlZExlbmd0aC5oYXNPdmVyZmxvd2VkKCkpOworCiAgICAgaWYgKG1f
YnVmZmVyICYmIChyZXF1aXJlZExlbmd0aC51bnNhZmVHZXQ8dW5zaWduZWQ+KCkgPD0gbV9idWZm
ZXItPmxlbmd0aCgpKSkgewogICAgICAgICAvLyBJZiB0aGUgYnVmZmVyIGlzIHZhbGlkIGl0IG11
c3QgYmUgYXQgbGVhc3QgYXMgbG9uZyBhcyB0aGUgY3VycmVudCBidWlsZGVyIGNvbnRlbnRzIQog
ICAgICAgICBBU1NFUlQobV9idWZmZXItPmxlbmd0aCgpID49IG1fbGVuZ3RoLnVuc2FmZUdldDx1
bnNpZ25lZD4oKSk7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGggPSBtX2xlbmd0aC51
bnNhZmVHZXQoKTsKICAgICAgICAgbV9zdHJpbmcgPSBTdHJpbmcoKTsKICAgICAgICAgbV9sZW5n
dGggPSByZXF1aXJlZExlbmd0aDsKLSAgICAgICAgcmV0dXJuIGdldEJ1ZmZlckNoYXJhY3RlcnM8
Q2hhclR5cGU+KCkgKyBjdXJyZW50TGVuZ3RoOworICAgICAgICByZXR1cm4gZ2V0QnVmZmVyQ2hh
cmFjdGVyczxDaGFyYWN0ZXJUeXBlPigpICsgY3VycmVudExlbmd0aDsKICAgICB9CiAgICAgCi0g
ICAgcmV0dXJuIGFwcGVuZFVuaW5pdGlhbGl6ZWRTbG93PENoYXJUeXBlPihyZXF1aXJlZExlbmd0
aC51bnNhZmVHZXQoKSk7CisgICAgcmV0dXJuIGFwcGVuZFVuaW5pdGlhbGl6ZWRTbG93PENoYXJh
Y3RlclR5cGU+KHJlcXVpcmVkTGVuZ3RoLnVuc2FmZUdldCgpKTsKK30KKworVUNoYXIqIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVja0ZvclVDaGFy
KENoZWNrZWRJbnQzMiByZXF1aXJlZExlbmd0aCkKK3sKKyAgICByZXR1cm4gYXBwZW5kVW5pbml0
aWFsaXplZFdpdGhvdXRPdmVyZmxvd0NoZWNrPFVDaGFyPihyZXF1aXJlZExlbmd0aCk7Cit9CisK
K0xDaGFyKiBTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93
Q2hlY2tGb3JMQ2hhcihDaGVja2VkSW50MzIgcmVxdWlyZWRMZW5ndGgpCit7CisgICAgcmV0dXJu
IGFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVjazxMQ2hhcj4ocmVxdWlyZWRM
ZW5ndGgpOwogfQogCi0vLyBNYWtlICdsZW5ndGgnIGFkZGl0aW9uYWwgY2FwYWNpdHkgYmUgYXZh
aWxhYmxlIGluIG1fYnVmZmVyLCB1cGRhdGUgbV9zdHJpbmcgJiBtX2xlbmd0aCwKKy8vIE1ha2Ug
J3JlcXVpcmVkTGVuZ3RoJyBjYXBhY2l0eSBiZSBhdmFpbGFibGUgaW4gbV9idWZmZXIsIHVwZGF0
ZSBtX3N0cmluZyAmIG1fbGVuZ3RoLAogLy8gcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgbmV3bHkg
YWxsb2NhdGVkIHN0b3JhZ2UuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1DaGFyVHlw
ZSogU3RyaW5nQnVpbGRlcjo6YXBwZW5kVW5pbml0aWFsaXplZFNsb3codW5zaWduZWQgcmVxdWly
ZWRMZW5ndGgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQ2hhcmFjdGVyVHlw
ZSogU3RyaW5nQnVpbGRlcjo6YXBwZW5kVW5pbml0aWFsaXplZFNsb3codW5zaWduZWQgcmVxdWly
ZWRMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNPdmVyZmxvd2VkKCkpOwogICAgIEFTU0VSVChy
ZXF1aXJlZExlbmd0aCk7CkBAIC0yNzAsMTUgKzI4OCwxNSBAQCBDaGFyVHlwZSogU3RyaW5nQnVp
bGRlcjo6YXBwZW5kVW5pbml0aWFsCiAgICAgICAgIC8vIElmIHRoZSBidWZmZXIgaXMgdmFsaWQg
aXQgbXVzdCBiZSBhdCBsZWFzdCBhcyBsb25nIGFzIHRoZSBjdXJyZW50IGJ1aWxkZXIgY29udGVu
dHMhCiAgICAgICAgIEFTU0VSVChtX2J1ZmZlci0+bGVuZ3RoKCkgPj0gbV9sZW5ndGgudW5zYWZl
R2V0PHVuc2lnbmVkPigpKTsKICAgICAgICAgCi0gICAgICAgIHJlYWxsb2NhdGVCdWZmZXI8Q2hh
clR5cGU+KGV4cGFuZGVkQ2FwYWNpdHkoY2FwYWNpdHkoKSwgcmVxdWlyZWRMZW5ndGgpKTsKKyAg
ICAgICAgcmVhbGxvY2F0ZUJ1ZmZlcjxDaGFyYWN0ZXJUeXBlPihleHBhbmRlZENhcGFjaXR5KGNh
cGFjaXR5KCksIHJlcXVpcmVkTGVuZ3RoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJU
KG1fc3RyaW5nLmxlbmd0aCgpID09IG1fbGVuZ3RoLnVuc2FmZUdldDx1bnNpZ25lZD4oKSk7Ci0g
ICAgICAgIGFsbG9jYXRlQnVmZmVyKG1fbGVuZ3RoID8gbV9zdHJpbmcuY2hhcmFjdGVyczxDaGFy
VHlwZT4oKSA6IG51bGxwdHIsIGV4cGFuZGVkQ2FwYWNpdHkoY2FwYWNpdHkoKSwgcmVxdWlyZWRM
ZW5ndGgpKTsKKyAgICAgICAgYWxsb2NhdGVCdWZmZXIobV9sZW5ndGggPyBtX3N0cmluZy5jaGFy
YWN0ZXJzPENoYXJhY3RlclR5cGU+KCkgOiBudWxscHRyLCBleHBhbmRlZENhcGFjaXR5KGNhcGFj
aXR5KCksIHJlcXVpcmVkTGVuZ3RoKSk7CiAgICAgfQogICAgIGlmIChVTkxJS0VMWShoYXNPdmVy
Zmxvd2VkKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIENoYXJUeXBlKiByZXN1
bHQgPSBnZXRCdWZmZXJDaGFyYWN0ZXJzPENoYXJUeXBlPigpICsgbV9sZW5ndGgudW5zYWZlR2V0
KCk7CisgICAgQ2hhcmFjdGVyVHlwZSogcmVzdWx0ID0gZ2V0QnVmZmVyQ2hhcmFjdGVyczxDaGFy
YWN0ZXJUeXBlPigpICsgbV9sZW5ndGgudW5zYWZlR2V0KCk7CiAgICAgbV9sZW5ndGggPSByZXF1
aXJlZExlbmd0aDsKICAgICBBU1NFUlQoIWhhc092ZXJmbG93ZWQoKSk7CiAgICAgQVNTRVJUKG1f
YnVmZmVyLT5sZW5ndGgoKSA+PSBtX2xlbmd0aC51bnNhZmVHZXQ8dW5zaWduZWQ+KCkpOwpJbmRl
eDogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgJKHJldmlzaW9uIDI0NzUyNikKKysrIFNv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEs
NiArMjMxLDkgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZEZp
eGVkV2lkdGhOdW1iZXIoZmxvYXQsIHVuc2lnbmVkIGRlY2ltYWxQbGFjZXMpOwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoZG91YmxlLCB1bnNpZ25l
ZCBkZWNpbWFsUGxhY2VzKTsKIAorICAgIC8vIEZJWE1FOiBSZW5hbWUgdG8gYXBwZW5kKC4uLikg
YWZ0ZXIgcmVuYW1pbmcgYW55IG92ZXJsb2FkcyBvZiBhcHBlbmQgdGhhdCB0YWtlIG1vcmUgdGhh
biBvbmUgYXJndW1lbnQuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5nVHlwZXM+IHZv
aWQgZmxleGlibGVBcHBlbmQoU3RyaW5nVHlwZXMuLi4pOworCiAgICAgU3RyaW5nIHRvU3RyaW5n
KCkKICAgICB7CiAgICAgICAgIGlmICghbV9zdHJpbmcuaXNOdWxsKCkpIHsKQEAgLTM1MCwxNiAr
MzUzLDE5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhbGxvY2F0ZUJ1ZmZlcihjb25zdCBMQ2hhciog
Y3VycmVudENoYXJhY3RlcnMsIHVuc2lnbmVkIHJlcXVpcmVkTGVuZ3RoKTsKICAgICB2b2lkIGFs
bG9jYXRlQnVmZmVyKGNvbnN0IFVDaGFyKiBjdXJyZW50Q2hhcmFjdGVycywgdW5zaWduZWQgcmVx
dWlyZWRMZW5ndGgpOwogICAgIHZvaWQgYWxsb2NhdGVCdWZmZXJVcENvbnZlcnQoY29uc3QgTENo
YXIqIGN1cnJlbnRDaGFyYWN0ZXJzLCB1bnNpZ25lZCByZXF1aXJlZExlbmd0aCk7Ci0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIHZvaWQgcmVhbGxvY2F0ZUJ1ZmZlcih1bnNp
Z25lZCByZXF1aXJlZExlbmd0aCk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgot
ICAgIEFMV0FZU19JTkxJTkUgQ2hhclR5cGUqIGFwcGVuZFVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bGVuZ3RoKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgQ2hhclR5cGUq
IGFwcGVuZFVuaW5pdGlhbGl6ZWRTbG93KHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJUeXBlPgotICAgIEFMV0FZU19JTkxJTkUgQ2hhclR5cGUgKiBnZXRCdWZm
ZXJDaGFyYWN0ZXJzKCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9p
ZCByZWFsbG9jYXRlQnVmZmVyKHVuc2lnbmVkIHJlcXVpcmVkTGVuZ3RoKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIENoYXJhY3RlclR5cGUqIGFw
cGVuZFVuaW5pdGlhbGl6ZWQodW5zaWduZWQgYWRkaXRpb25hbExlbmd0aCk7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBDaGFyYWN0ZXJUeXBlKiBh
cHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2soQ2hlY2tlZEludDMyIHJlcXVp
cmVkTGVuZ3RoKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBDaGFyYWN0
ZXJUeXBlKiBhcHBlbmRVbmluaXRpYWxpemVkU2xvdyh1bnNpZ25lZCByZXF1aXJlZExlbmd0aCk7
CisgICAgCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVDaGFyKiBhcHBlbmRVbmluaXRpYWxpemVk
V2l0aG91dE92ZXJmbG93Q2hlY2tGb3JVQ2hhcihDaGVja2VkSW50MzIgcmVxdWlyZWRMZW5ndGgp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBMQ2hhciogYXBwZW5kVW5pbml0aWFsaXplZFdpdGhv
dXRPdmVyZmxvd0NoZWNrRm9yTENoYXIoQ2hlY2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoKTsKKyAg
ICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIENo
YXJhY3RlclR5cGUqIGdldEJ1ZmZlckNoYXJhY3RlcnMoKTsKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCByZWlmeVN0cmluZygpIGNvbnN0OwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
U3RyaW5nVHlwZUFkYXB0ZXJzPiB2b2lkIGZsZXhpYmxlQXBwZW5kRnJvbUFkYXB0ZXJzKFN0cmlu
Z1R5cGVBZGFwdGVycy4uLik7CisKICAgICBtdXRhYmxlIFN0cmluZyBtX3N0cmluZzsKICAgICBS
ZWZQdHI8U3RyaW5nSW1wbD4gbV9idWZmZXI7CiAgICAgdW5pb24gewpAQCAtMzc0LDIyICszODAs
NTQgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotdGVtcGxhdGUgPD4KK3RlbXBsYXRlPD4KIEFM
V0FZU19JTkxJTkUgTENoYXIqIFN0cmluZ0J1aWxkZXI6OmdldEJ1ZmZlckNoYXJhY3RlcnM8TENo
YXI+KCkKIHsKICAgICBBU1NFUlQobV9pczhCaXQpOwogICAgIHJldHVybiBtX2J1ZmZlckNoYXJh
Y3RlcnM4OwogfQogCi10ZW1wbGF0ZSA8PgordGVtcGxhdGU8PgogQUxXQVlTX0lOTElORSBVQ2hh
ciogU3RyaW5nQnVpbGRlcjo6Z2V0QnVmZmVyQ2hhcmFjdGVyczxVQ2hhcj4oKQogewogICAgIEFT
U0VSVCghbV9pczhCaXQpOwogICAgIHJldHVybiBtX2J1ZmZlckNoYXJhY3RlcnMxNjsKIH0KIAot
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotYm9vbCBlcXVhbChjb25zdCBTdHJpbmdCdWls
ZGVyJiBzLCBjb25zdCBDaGFyVHlwZSogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpCit0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlQWRhcHRlcnM+Cit2b2lkIFN0cmluZ0J1aWxkZXI6OmZs
ZXhpYmxlQXBwZW5kRnJvbUFkYXB0ZXJzKFN0cmluZ1R5cGVBZGFwdGVycy4uLiBhZGFwdGVycykK
K3sKKyAgICBhdXRvIHJlcXVpcmVkTGVuZ3RoID0gY2hlY2tlZFN1bTxpbnQzMl90PihtX2xlbmd0
aCwgYWRhcHRlcnMubGVuZ3RoKCkuLi4pOworICAgIGlmIChyZXF1aXJlZExlbmd0aC5oYXNPdmVy
Zmxvd2VkKCkpIHsKKyAgICAgICAgZGlkT3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChtX2lzOEJpdCAmJiBhcmU4Qml0KGFkYXB0ZXJzLi4uKSkgeworICAgICAg
ICBMQ2hhciogZGVzdCA9IGFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVja0Zv
ckxDaGFyKHJlcXVpcmVkTGVuZ3RoKTsKKyAgICAgICAgaWYgKCFkZXN0KSB7CisgICAgICAgICAg
ICBBU1NFUlQoaGFzT3ZlcmZsb3dlZCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBzdHJpbmdUeXBlQWRhcHRlckFjY3VtdWxhdG9yKGRlc3QsIGFkYXB0ZXJzLi4u
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBVQ2hhciogZGVzdCA9IGFwcGVuZFVuaW5pdGlhbGl6
ZWRXaXRob3V0T3ZlcmZsb3dDaGVja0ZvclVDaGFyKHJlcXVpcmVkTGVuZ3RoKTsKKyAgICAgICAg
aWYgKCFkZXN0KSB7CisgICAgICAgICAgICBBU1NFUlQoaGFzT3ZlcmZsb3dlZCgpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBzdHJpbmdUeXBlQWRhcHRlckFjY3Vt
dWxhdG9yKGRlc3QsIGFkYXB0ZXJzLi4uKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
Li4uIFN0cmluZ1R5cGVzPgordm9pZCBTdHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZChTdHJp
bmdUeXBlcy4uLiBzdHJpbmdzKQoreworICAgIGZsZXhpYmxlQXBwZW5kRnJvbUFkYXB0ZXJzKFN0
cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGVzPihzdHJpbmdzKS4uLik7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIGVxdWFsKGNvbnN0IFN0cmluZ0J1aWxkZXIm
IHMsIGNvbnN0IENoYXJhY3RlclR5cGUqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IGlmIChzLmxlbmd0aCgpICE9IGxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDAw
LDcgKzQzOCw3IEBAIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nQnVpbGRlciYgcywgY29uc3QKICAg
ICByZXR1cm4gZXF1YWwocy5jaGFyYWN0ZXJzMTYoKSwgYnVmZmVyLCBsZW5ndGgpOwogfQogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyaW5nVHlwZT4KK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5
cGU+CiBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0J1aWxkZXImIGEsIGNvbnN0IFN0cmluZ1R5cGUm
IGIpCiB7CiAgICAgaWYgKGEubGVuZ3RoKCkgIT0gYi5sZW5ndGgoKSkKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgJKHJldmlzaW9uIDI0NzUyNikKKysrIFNvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ4
LDE2ICsyNDgsMTYgQEAgaW5saW5lIGJvb2wgYXJlOEJpdChBZGFwdGVyIGFkYXB0ZXIsIEFkYQog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBlbmFtZSBBZGFwdGVyPgotaW5s
aW5lIHZvaWQgbWFrZVN0cmluZ0FjY3VtdWxhdG9yKFJlc3VsdFR5cGUqIHJlc3VsdCwgQWRhcHRl
ciBhZGFwdGVyKQoraW5saW5lIHZvaWQgc3RyaW5nVHlwZUFkYXB0ZXJBY2N1bXVsYXRvcihSZXN1
bHRUeXBlKiByZXN1bHQsIEFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBhZGFwdGVyLndyaXRlVG8o
cmVzdWx0KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUgQWRh
cHRlciwgdHlwZW5hbWUuLi4gQWRhcHRlcnM+Ci1pbmxpbmUgdm9pZCBtYWtlU3RyaW5nQWNjdW11
bGF0b3IoUmVzdWx0VHlwZSogcmVzdWx0LCBBZGFwdGVyIGFkYXB0ZXIsIEFkYXB0ZXJzIC4uLmFk
YXB0ZXJzKQoraW5saW5lIHZvaWQgc3RyaW5nVHlwZUFkYXB0ZXJBY2N1bXVsYXRvcihSZXN1bHRU
eXBlKiByZXN1bHQsIEFkYXB0ZXIgYWRhcHRlciwgQWRhcHRlcnMgLi4uYWRhcHRlcnMpCiB7CiAg
ICAgYWRhcHRlci53cml0ZVRvKHJlc3VsdCk7Ci0gICAgbWFrZVN0cmluZ0FjY3VtdWxhdG9yKHJl
c3VsdCArIGFkYXB0ZXIubGVuZ3RoKCksIGFkYXB0ZXJzLi4uKTsKKyAgICBzdHJpbmdUeXBlQWRh
cHRlckFjY3VtdWxhdG9yKHJlc3VsdCArIGFkYXB0ZXIubGVuZ3RoKCksIGFkYXB0ZXJzLi4uKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZUFkYXB0ZXIsIHR5cGVuYW1lLi4uIFN0
cmluZ1R5cGVBZGFwdGVycz4KQEAgLTI3Niw3ICsyNzYsNyBAQCBTdHJpbmcgdHJ5TWFrZVN0cmlu
Z0Zyb21BZGFwdGVycyhTdHJpbmdUCiAgICAgICAgIGlmICghcmVzdWx0SW1wbCkKICAgICAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgICAgICBtYWtlU3RyaW5nQWNjdW11bGF0b3IoYnVm
ZmVyLCBhZGFwdGVyLCBhZGFwdGVycy4uLik7CisgICAgICAgIHN0cmluZ1R5cGVBZGFwdGVyQWNj
dW11bGF0b3IoYnVmZmVyLCBhZGFwdGVyLCBhZGFwdGVycy4uLik7CiAKICAgICAgICAgcmV0dXJu
IHJlc3VsdEltcGw7CiAgICAgfQpAQCAtMjg2LDcgKzI4Niw3IEBAIFN0cmluZyB0cnlNYWtlU3Ry
aW5nRnJvbUFkYXB0ZXJzKFN0cmluZ1QKICAgICBpZiAoIXJlc3VsdEltcGwpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAotICAgIG1ha2VTdHJpbmdBY2N1bXVsYXRvcihidWZmZXIsIGFkYXB0
ZXIsIGFkYXB0ZXJzLi4uKTsKKyAgICBzdHJpbmdUeXBlQWRhcHRlckFjY3VtdWxhdG9yKGJ1ZmZl
ciwgYWRhcHRlciwgYWRhcHRlcnMuLi4pOwogCiAgICAgcmV0dXJuIHJlc3VsdEltcGw7CiB9Cklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNDc1MjYpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyOCBAQAorMjAxOS0wNy0xNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIFN0cmluZ0J1aWxkZXIgbWVtYmVyIGZ1bmN0aW9uIHdoaWNoIGFsbG93cyBtYWtl
U3RyaW5nKCkgc3R5bGUgdmFyaWFkaWMgYXJndW1lbnQgY29uc3RydWN0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg5OTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1N0cmluZ0J1aWxkZXIuY3BwOgorICAgICAgICBBZGQgYmFzaWMgdGVzdCBzaG93aW5nIHRo
YXQgU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmQgY2FuIGJlIHVzZWQgdG8gCisgICAgICAg
IGFwcGVuZCBvbmUgb3IgbW9yZSBzdHJpbmcgYWRhcHRhYmxlIHR5cGVzLiAKKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBXVEZT
dHJpbmdVdGlsaXRpZXMuY3BwCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgQWRkIGJhc2ljIHRlc3Qgc2hvd2luZyB0aGF0IFN0
cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kIGNhbiBiZSB1c2VkIHRvIAorICAgICAgICBhcHBl
bmQgb25lIG9yIG1vcmUgc3RyaW5nIGFkYXB0YWJsZSB0eXBlcy4gCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvV1RGU3RyaW5nVXRpbGl0aWVzLmNwcDogQWRkZWQuCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9XVEZTdHJpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgTW92ZSBXVEZfU1RSSU5HVFlQ
RUFEQVBURVJfQ09QSUVEX1dURl9TVFJJTkcoKSBhbmQgd3RmU3RyaW5nQ29weUNvdW50IHRvIFdU
RlN0cmluZ1V0aWxpdGllcy5oL2NwcAorICAgICAgICB0byBhbGxvdyBmb3IgYSBzaW5nbGUgZGVm
aW5pdGlvbiBvZiBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmcsIHZvaWQ+IHdoaWNoIGlzIHJlcXVp
cmVkIGZvciBPRFIuCisKIDIwMTktMDctMTcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW2lPU10gT3B0aW9uICsgVXAgb3IgRG93biBBcnJvdyBrZXkgZG9lc27i
gJl0IG1vdmUgY3Vyc29yIHBhc3QgcGFyYWdyYXBoIGJvdW5kYXJpZXMgaW4gV2ViS2l0MgpJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNDc1MjYpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsy
Myw3IEBAIGVuZG1hY3JvKCkKIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBDb3VudGVycy5jcHAK
ICAgICBUZXN0c0NvbnRyb2xsZXIuY3BwCisgICAgV1RGU3RyaW5nVXRpbGl0aWVzLmNwcAogCiAg
ICAgVGVzdHMvV1RGL0F0b21TdHJpbmcuY3BwCiAgICAgVGVzdHMvV1RGL0Jsb29tRmlsdGVyLmNw
cApAQCAtMTE2LDYgKzExNyw3IEBAIFdFQktJVF9FWEVDVVRBQkxFX0RFQ0xBUkUoVGVzdFdURikK
IGlmIChFTkFCTEVfV0VCQ09SRSkKICAgICBzZXQoVGVzdFdlYkNvcmVfU09VUkNFUwogICAgICAg
ICBUZXN0c0NvbnRyb2xsZXIuY3BwCisgICAgICAgIFdURlN0cmluZ1V0aWxpdGllcy5jcHAKIAog
ICAgICAgICBUZXN0cy9XZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5jcHAKICAgICAgICAgVGVzdHMv
V2ViQ29yZS9DU1NQYXJzZXIuY3BwCkBAIC0xNjUsNiArMTY3LDcgQEAgZW5kaWYgKCkKIGlmIChF
TkFCTEVfV0VCS0lUX0xFR0FDWSkKICAgICBzZXQoVGVzdFdlYktpdExlZ2FjeV9TT1VSQ0VTCiAg
ICAgICAgIFRlc3RzQ29udHJvbGxlci5jcHAKKyAgICAgICAgV1RGU3RyaW5nVXRpbGl0aWVzLmNw
cAogICAgICkKIAogICAgIHNldChUZXN0V2ViS2l0TGVnYWN5X0xJQlJBUklFUwpAQCAtMjY2LDYg
KzI2OSw3IEBAIGlmIChFTkFCTEVfV0VCS0lUKQogICAgICAgICBKYXZhU2NyaXB0VGVzdC5jcHAK
ICAgICAgICAgUGxhdGZvcm1VdGlsaXRpZXMuY3BwCiAgICAgICAgIFRlc3RzQ29udHJvbGxlci5j
cHAKKyAgICAgICAgV1RGU3RyaW5nVXRpbGl0aWVzLmNwcAogICAgICkKICAgICB0YXJnZXRfY29t
cGlsZV9kZWZpbml0aW9ucyhUZXN0V2ViS2l0QVBJQmFzZSBQUklWQVRFIEJVSUxESU5HX1Rlc3RX
ZWJLaXQpCiAgICAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoVGVzdFdlYktpdEFQSUJhc2Ug
UFJJVkFURSAke1Rlc3RXZWJLaXRfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTfSkKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvV1RGU3RyaW5nVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1dURlN0cmluZ1V0aWxpdGllcy5jcHAJKG5vbmV4aXN0ZW50
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9XVEZTdHJpbmdVdGlsaXRpZXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCisKK2ludCB3dGZTdHJpbmdDb3B5Q291
bnQ7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1dURlN0cmluZ1V0aWxpdGllcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvV1RGU3RyaW5nVXRpbGl0aWVzLmgJKHJldmlz
aW9uIDI0NzUyNikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvV1RGU3RyaW5nVXRpbGl0aWVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDEwIEBACiAKICNwcmFnbWEgb25jZQogCisjZGVm
aW5lIFdURl9TVFJJTkdUWVBFQURBUFRFUl9DT1BJRURfV1RGX1NUUklORygpICgrK3d0ZlN0cmlu
Z0NvcHlDb3VudCkKKworZXh0ZXJuIGludCB3dGZTdHJpbmdDb3B5Q291bnQ7CisKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjQ3NTI2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQyNyw2ICs0Mjcs
NyBAQAogCQk3QzNEQjhFNDFEMTIxMjlCMDBBRThDQzMgLyogQ29tbWFuZEJhY2tGb3J3YXJkLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzREI4RTIx
RDEyMTI5QjAwQUU4Q0MzIC8qIENvbW1hbmRCYWNrRm9yd2FyZC5tbSAqLzsgfTsKIAkJN0M0MTdG
MzMxRDE5RTE0ODAwQjhFRjUzIC8qIFdLV2ViVmlld0RlZmF1bHROYXZpZ2F0aW9uRGVsZWdhdGUu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzQxN0Yz
MTFEMTlFMTQ4MDBCOEVGNTMgLyogV0tXZWJWaWV3RGVmYXVsdE5hdmlnYXRpb25EZWxlZ2F0ZS5t
bSAqLzsgfTsKIAkJN0M0ODZCQTExQUExMjU2NzAwM0Y2RjlCIC8qIGJ1bmRsZS1maWxlLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M0
ODZCQTAxQUExMjU0QjAwM0Y2RjlCIC8qIGJ1bmRsZS1maWxlLmh0bWwgKi87IH07CisJCTdDNzRD
OEZBMjJERkJBOTYwMERBMkRBQiAvKiBXVEZTdHJpbmdVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCRDVBMjIyMkRFNDJBNjAwNEE5
RTMyIC8qIFdURlN0cmluZ1V0aWxpdGllcy5jcHAgKi87IH07CiAJCTdDODNERTk5MUQwQTU5MEMw
MEZFQkNGMyAvKiBBdG9tU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI2RjFCNDQyMTVDQTQzNEYwMEQxRTRCRiAvKiBBdG9tU3RyaW5nLmNw
cCAqLzsgfTsKIAkJN0M4M0RFOUMxRDBBNTkwQzAwRkVCQ0YzIC8qIEJsb29tRmlsdGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MDAxOTMwMUFD
RTlCNUMwMDFCMEEyQSAvKiBCbG9vbUZpbHRlci5jcHAgKi87IH07CiAJCTdDODNERUEwMUQwQTU5
MEMwMEZFQkNGMyAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOTY2REExNDBFQ0NDODAwNUVG
OUI0IC8qIENoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgKi87IH07CkBAIC01MDgsNiAr
NTA5LDcgQEAKIAkJN0M4OUQyQUMxQTY5QjgwRDAwM0E1RkRFIC8qIFdLUGFnZUNvbmZpZ3VyYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4
OUQyQUExQTY5QjgwRDAwM0E1RkRFIC8qIFdLUGFnZUNvbmZpZ3VyYXRpb24uY3BwICovOyB9Owog
CQk3QzlFRDk4QjE3QTE5RjRCMDBFNERDMzMgLyogYXR0cmlidXRlZFN0cmluZ1N0cmlrZXRocm91
Z2guaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzlFRDk4QTE3QTE5RDA2MDBFNERDMzMgLyogYXR0cmlidXRlZFN0cmluZ1N0cmlrZXRo
cm91Z2guaHRtbCAqLzsgfTsKIAkJN0NCMTg0QzYxQUEzRjIxMDAwNjZFREZEIC8qIENvbnRlbnRF
eHRlbnNpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDQjE4NEM0MUFBM0YyMTAwMDY2RURGRCAvKiBDb250ZW50RXh0ZW5zaW9ucy5jcHAgKi87
IH07CisJCTdDQkQ1QTIzMjJERTQyQTYwMDRBOUUzMiAvKiBXVEZTdHJpbmdVdGlsaXRpZXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCRDVBMjIy
MkRFNDJBNjAwNEE5RTMyIC8qIFdURlN0cmluZ1V0aWxpdGllcy5jcHAgKi87IH07CiAJCTdDQ0I0
REE5MUM4M0FFNzMwMENDNjkxOCAvKiBQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NDQjREQTcxQzgzQUU3MzAwQ0M2OTE4IC8qIFBh
Z2VHcm91cC5jcHAgKi87IH07CiAJCTdDQ0I5OTIxMUQzQjQxRjYwMDM5MjJGNiAvKiBVc2VySW5p
dGlhdGVkQWN0aW9uSW5OYXZpZ2F0aW9uQWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NDQjk5MjAxRDNCNDFGNjAwMzkyMkY2IC8qIFVzZXJJ
bml0aWF0ZWRBY3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW0gKi87IH07CiAJCTdDQ0I5OTIzMUQz
QjRBNDYwMDM5MjJGNiAvKiBvcGVuLW11bHRpcGxlLWV4dGVybmFsLXVybC5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQ0I5OTIyMUQz
QjQ0RTcwMDM5MjJGNiAvKiBvcGVuLW11bHRpcGxlLWV4dGVybmFsLXVybC5odG1sICovOyB9OwpA
QCAtMTkyNiw2ICsxOTI4LDcgQEAKIAkJN0M5RUQ5OEExN0ExOUQwNjAwRTREQzMzIC8qIGF0dHJp
YnV0ZWRTdHJpbmdTdHJpa2V0aHJvdWdoLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBhdHRyaWJ1dGVkU3RyaW5n
U3RyaWtldGhyb3VnaC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0IxODRD
NDFBQTNGMjEwMDA2NkVERkQgLyogQ29udGVudEV4dGVuc2lvbnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudEV4dGVuc2lvbnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3Q0JCQTA3NjE5QkI4QTkxMDBCQkYwMjUgLyogT1NPYmplY3RQ
dHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT1NPYmplY3RQdHIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0JENUEyMjIyREU0MkE2MDA0QTlF
MzIgLyogV1RGU3RyaW5nVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdURlN0cmlu
Z1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQzNFMUZBMTk3
RTIzNDEwMEJFNjI1MiAvKiBVc2VyQ29udGVudENvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVc2VyQ29udGVudENvbnRyb2xsZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQ0I0REE3MUM4M0FFNzMwMENDNjkxOCAvKiBQYWdl
R3JvdXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUdyb3Vw
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NDQjk5MjAxRDNCNDFGNjAwMzky
MkY2IC8qIFVzZXJJbml0aWF0ZWRBY3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVc2VySW5pdGlhdGVkQWN0aW9uSW5OYXZp
Z2F0aW9uQWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU2Miw2ICsy
NTY1LDcgQEAKIAkJCQlCQ0I5RTdDNzExMjM0RTNBMDBBMTM3RTAgLyogVGVzdHNDb250cm9sbGVy
LmggKi8sCiAJCQkJN0M4M0UwMzYxRDBBNUY3MDAwRkVCQ0YzIC8qIFV0aWxpdGllcy5oICovLAog
CQkJCTQ0QTYyMkMxMTRBMEUyQjYwMDQ4NTE1QiAvKiBXVEZTdHJpbmdVdGlsaXRpZXMuaCAqLywK
KwkJCQk3Q0JENUEyMjIyREU0MkE2MDA0QTlFMzIgLyogV1RGU3RyaW5nVXRpbGl0aWVzLmNwcCAq
LywKIAkJCSk7CiAJCQluYW1lID0gU291cmNlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTQxMzAsNiArNDEzNCw3IEBACiAJCQlmaWxlcyA9ICgKIAkJCQk3QzgzREU5OTFEMEE1OTBD
MDBGRUJDRjMgLyogQXRvbVN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQURBRDE1MDFE
NzdBOUY2MDAyMTI1ODYgLyogQmxvY2tQdHIubW0gaW4gU291cmNlcyAqLywKKwkJCQk3Q0JENUEy
MzIyREU0MkE2MDA0QTlFMzIgLyogV1RGU3RyaW5nVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDODNERTlDMUQwQTU5MEMwMEZFQkNGMyAvKiBCbG9vbUZpbHRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3QzgzREVBMDFEMEE1OTBDMDBGRUJDRjMgLyogQ2hlY2tlZEFyaXRobWV0
aWNPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzBDQjVDMUZDRTE3OTYwMDRC
NTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTQyODUs
NiArNDI5MCw3IEBACiAJCQkJNUMzQjFEMjYyMkE3NEY2NzAwQkNGNEQwIC8qIENvbnRleHRNZW51
cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMjkzNjkzMUQ1QkY3MEQwMERFQUIxRSAvKiBDb29r
aWVBY2NlcHRQb2xpY3kubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUQxMjQ5QjFFNzg1NDI1MDAy
QjI4MjAgLyogQ29va2llTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3Qzc0QzhGQTIy
REZCQTk2MDBEQTJEQUIgLyogV1RGU3RyaW5nVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVDMTlBNTI0MUZEMEY2MDEwMEVFQTMyMyAvKiBDb29raWVQcml2YXRlQnJvd3NpbmcubW0g
aW4gU291cmNlcyAqLywKIAkJCQk5QjFGNkY3ODFGOTA1NTg0MDBCNTU3NDQgLyogQ29weUhUTUwu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk5OTk5MTA4QjFGMzkzQzk2MDA4QUQ0NTUgLyogQ29weWlu
Zy5tbSBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
U3RyaW5nQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9uIDI0NzUyNikKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTYsNiArMTE2LDI5IEBAIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIEFwcGVuZCkKICAgICB9CiB9
CiAKK1RFU1QoU3RyaW5nQnVpbGRlclRlc3QsIEZsZXhpYmxlQXBwZW5kKQoreworICAgIHsKKyAg
ICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKFN0cmluZygiMDEyMzQ1Njc4OSIpKTsKKyAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQo
IjAxMjM0NTY3ODkiLCBidWlsZGVyKTsKKyAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZCgi
YWJjZCIpOworICAgICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OWFiY2QiLCBi
dWlsZGVyKTsKKyAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnZScpOworICAgICAgICBl
eHBlY3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OWFiY2RlIiwgYnVpbGRlcik7CisgICAgICAg
IGJ1aWxkZXIuZmxleGlibGVBcHBlbmQoIiIpOworICAgICAgICBleHBlY3RCdWlsZGVyQ29udGVu
dCgiMDEyMzQ1Njc4OWFiY2RlIiwgYnVpbGRlcik7CisgICAgfQorCisgICAgeworICAgICAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuZmxleGlibGVBcHBlbmQoU3Ry
aW5nKCIwMTIzNDU2Nzg5IiksICJhYmNkIiwgJ2UnLCAiIik7CisgICAgICAgIGV4cGVjdEJ1aWxk
ZXJDb250ZW50KCIwMTIzNDU2Nzg5YWJjZGUiLCBidWlsZGVyKTsKKyAgICAgICAgYnVpbGRlci5m
bGV4aWJsZUFwcGVuZChTdHJpbmcoIkEiKSwgIkIiLCAnQycsICIiKTsKKyAgICAgICAgZXhwZWN0
QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZUFCQyIsIGJ1aWxkZXIpOworICAgIH0KK30K
KwogVEVTVChTdHJpbmdCdWlsZGVyVGVzdCwgVG9TdHJpbmcpCiB7CiAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3Bl
cmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdPcGVyYXRvcnMuY3BwCShyZXZpc2lvbiAyNDc1MjYpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw5
ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2RlZmluZSBXVEZfU1RSSU5HVFlQ
RUFEQVBURVJfQ09QSUVEX1dURl9TVFJJTkcoKSAoKyt3dGZTdHJpbmdDb3B5Q291bnQpCi0KLXN0
YXRpYyBpbnQgd3RmU3RyaW5nQ29weUNvdW50OworI2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGll
cy5oIgogCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>