<?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>189663</bug_id>
          
          <creation_ts>2018-09-17 07:34:45 -0700</creation_ts>
          <short_desc>REGRESSION (PSON): White or Black flash occurs when process swapping on navigation on Mac</short_desc>
          <delta_ts>2018-10-26 12:02:19 -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>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=190971</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>jlewis3</cc>
    
    <cc>realdawei</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tsavell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1460158</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-09-17 07:34:45 -0700</bug_when>
    <thetext>Fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460160</commentid>
    <comment_count>1</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-09-17 07:35:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/44184955&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460162</commentid>
    <comment_count>2</comment_count>
      <attachid>349886</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-09-17 08:27:51 -0700</bug_when>
    <thetext>Created attachment 349886
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460191</commentid>
    <comment_count>3</comment_count>
      <attachid>349886</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-09-17 09:55:38 -0700</bug_when>
    <thetext>Comment on attachment 349886
patch

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

r=me

&gt; Source/WebKit/ChangeLog:24
&gt; +        We no longer tear down drawing area (layer tree) for suspended pages automatically. Send an explicit
&gt; +        message for it.

How do we ensure that suspended but not navigated pages tear down their layer trees? I don&apos;t see a call to tearDownDrawingAreaInWebProcess in that case. Is it already covered some other way?

&gt; Source/WebKit/WebProcess/WebPage/WebPage.messages.in:509
&gt; +    TearDownDrawingAreaForSuspended();

Let&apos;s call this TearDownDrawingAreaForSuspend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460204</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-09-17 10:16:07 -0700</bug_when>
    <thetext>&gt; How do we ensure that suspended but not navigated pages tear down their
&gt; layer trees? I don&apos;t see a call to tearDownDrawingAreaInWebProcess in that
&gt; case. Is it already covered some other way?

Currently we always navigate suspended processes to &apos;about:blank&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460205</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-09-17 10:16:38 -0700</bug_when>
    <thetext>/processes/pages/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460207</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-09-17 10:26:16 -0700</bug_when>
    <thetext>Do we have a separate bug for the iOS flavor of this flashing problem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460549</commentid>
    <comment_count>7</comment_count>
      <attachid>350013</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-09-18 04:17:13 -0700</bug_when>
    <thetext>Created attachment 350013
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460550</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-09-18 04:17:40 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #6)
&gt; Do we have a separate bug for the iOS flavor of this flashing problem?

https://bugs.webkit.org/show_bug.cgi?id=189695</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460551</commentid>
    <comment_count>9</comment_count>
      <attachid>350013</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-18 04:46:32 -0700</bug_when>
    <thetext>Comment on attachment 350013
patch

Rejecting attachment 350013 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:
iagnostics /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/Objects-normal/x86_64/WKSyntheticClickTapGestureRecognizer.dia -c /Volumes/Data/EWS/WebKit/Source/WebKit/UIProcess/ios/WKSyntheticClickTapGestureRecognizer.m -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/Objects-normal/x86_64/WKSyntheticClickTapGestureRecognizer.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/Objects-normal/x86_64/WebPage.o WebProcess/WebPage/WebPage.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Failed to run &quot;[&apos;Tools/Scripts/build-webkit&apos;, &apos;--release&apos;]&quot; exit_code: 65
BGPU -DENABLE_WIRELESS_PLAYBACK_TARGET -DENABLE_XSLT -DENABLE_MANUAL_SANDBOXING -DHAVE_CORE_PREDICTION -DU_HIDE_DEPRECATED_API -DU_DISABLE_RENAMING=1 -DU_SHOW_CPLUSPLUS_API=0 -DFRAMEWORK_NAME=WebKit -DOBJC_OLD_DISPATCH_PROTOTYPES=0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -fasm-blocks -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -mmacosx-version-min=10.12 -g -fvisibility=hidden -Wno-sign-conversion -Winfinite-recursion -iquote /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/WebKit-generated-files.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/WebKit-own-target-headers.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/WebKit-all-target-headers.hmap -iquote /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/WebKit-project-headers.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/include -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/WebCore.framework/PrivateHeaders/ForwardingHeaders -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebKit2 -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/WebKitAdditions -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/local/include/WebKitAdditions -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/webrtc -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/local/include/webrtc -I/Volumes/Data/EWS/WebKit/Source/WebKit -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/DerivedSources/x86_64 -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/DerivedSources -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wextra-tokens -Wformat-security -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wno-unused-parameter -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -F/Volumes/Data/EWS/WebKit/WebKitBuild/Release -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/PrivateFrameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/ApplicationServices.framework/Frameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/Carbon.framework/Frameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/Quartz.framework/Frameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/PrivateFrameworks -include /Volumes/Data/EWS/WebKit/WebKitBuild/PrecompiledHeaders/WebKit2Prefix-gxxdgeyqarhvegasvqrycxzmlohu/WebKit2Prefix.h -MMD -MT dependencies -MF /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/Objects-normal/x86_64/WKSyntheticClickTapGestureRecognizer.d --serialize-diagnostics /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/Objects-normal/x86_64/WKSyntheticClickTapGestureRecognizer.dia -c /Volumes/Data/EWS/WebKit/Source/WebKit/UIProcess/ios/WKSyntheticClickTapGestureRecognizer.m -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/Objects-normal/x86_64/WKSyntheticClickTapGestureRecognizer.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/Objects-normal/x86_64/WebPage.o WebProcess/WebPage/WebPage.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: https://webkit-queues.webkit.org/results/9255304</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460588</commentid>
    <comment_count>10</comment_count>
      <attachid>350021</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-09-18 08:04:06 -0700</bug_when>
    <thetext>Created attachment 350021
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460597</commentid>
    <comment_count>11</comment_count>
      <attachid>350021</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-18 08:41:38 -0700</bug_when>
    <thetext>Comment on attachment 350021
patch

Clearing flags on attachment: 350021

Committed r236138: &lt;https://trac.webkit.org/changeset/236138&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460598</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-18 08:41:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460629</commentid>
    <comment_count>13</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-09-18 10:09:17 -0700</bug_when>
    <thetext>This change caused 6 TestWebKitAPI.ProcessSwap failures and 1 timeout on iOS Simulator: 

https://build.webkit.org/builders/Apple%20iOS%2011%20Simulator%20Release%20WK2%20(Tests)/builds/7469</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460630</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-09-18 10:10:27 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #13)
&gt; This change caused 6 TestWebKitAPI.ProcessSwap failures and 1 timeout on iOS
&gt; Simulator: 
&gt; 
&gt; https://build.webkit.org/builders/
&gt; Apple%20iOS%2011%20Simulator%20Release%20WK2%20(Tests)/builds/7469

Chances are it is causing some WebContent crashes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460644</commentid>
    <comment_count>15</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-09-18 10:37:39 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #14)
&gt; (In reply to Ryan Haddad from comment #13)
&gt; &gt; This change caused 6 TestWebKitAPI.ProcessSwap failures and 1 timeout on iOS
&gt; &gt; Simulator: 
&gt; &gt; 
&gt; &gt; https://build.webkit.org/builders/
&gt; &gt; Apple%20iOS%2011%20Simulator%20Release%20WK2%20(Tests)/builds/7469
&gt; 
&gt; Chances are it is causing some WebContent crashes?
Now we have results from a debug bot:
https://build.webkit.org/builders/Apple%20iOS%2011%20Simulator%20Debug%20WK2%20%28Tests%29/builds/6484/steps/run-api-tests/logs/stdio

        ASSERTION FAILED: m_messageReceivers.contains(std::make_pair(messageReceiverName, destinationID))
        /Volumes/Data/slave/ios-simulator-11-debug/build/Source/WebKit/Platform/IPC/MessageReceiverMap.cpp(72) : void IPC::MessageReceiverMap::removeMessageReceiver(IPC::StringReference, uint64_t)
        1   0x10e50b9d9 WTFCrash
        2   0x1148277cb WTFCrashWithInfo(int, char const*, char const*, int)
        3   0x1148b0c50 IPC::MessageReceiverMap::removeMessageReceiver(IPC::StringReference, unsigned long long)
        4   0x114dc6307 WebKit::ChildProcessProxy::removeMessageReceiver(IPC::StringReference, unsigned long long)
        5   0x115085a58 WebKit::SmartMagnificationController::~SmartMagnificationController()
        6   0x115085aa5 WebKit::SmartMagnificationController::~SmartMagnificationController()
        7   0x115085ac9 WebKit::SmartMagnificationController::~SmartMagnificationController()
        8   0x1158ab985 -[WKContentView(WKInteraction) cleanupInteraction]
        9   0x11589e50b -[WKContentView dealloc]
        10  0x113e631b2 (anonymous namespace)::AutoreleasePoolPage::pop(void*)
        11  0x12a019136 _CFAutoreleasePoolPop
        12  0x11383e8bc -[NSAutoreleasePool drain]
        13  0x10db89888 main
        14  0x12a6b1955 start</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460648</commentid>
    <comment_count>16</comment_count>
      <attachid>350021</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-09-18 10:53:37 -0700</bug_when>
    <thetext>Comment on attachment 350021
patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:802
&gt; +        pageClient().didRelaunchProcess();

The crashes are likely caused by not calling pageClient().didRelaunchProcess() anymore in case of process swap. The PageClient needs to be notified that the WebPageProxy&apos;s process has changed. Otherwise, it cannot do the necessary updates and things like SmartMagnificationController keep trying to receive IPC from the old process instead of the new one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460649</commentid>
    <comment_count>17</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-09-18 10:56:34 -0700</bug_when>
    <thetext>Layout test http/tests/navigation/process-swap-window-open.html is also crashing on iOS after this change.

https://build.webkit.org/results/Apple%20iOS%2011%20Simulator%20Release%20WK2%20(Tests)/r236142%20(7470)/http/tests/navigation/process-swap-window-open-crash-log.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460650</commentid>
    <comment_count>18</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-09-18 10:59:51 -0700</bug_when>
    <thetext>Reverted r236138 for reason:

Caused API test and layout test failures on iOS.

Committed r236146: &lt;https://trac.webkit.org/changeset/236146&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460951</commentid>
    <comment_count>19</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-09-19 07:17:11 -0700</bug_when>
    <thetext>&gt; The crashes are likely caused by not calling
&gt; pageClient().didRelaunchProcess() anymore in case of process swap. The
&gt; PageClient needs to be notified that the WebPageProxy&apos;s process has changed.
&gt; Otherwise, it cannot do the necessary updates and things like
&gt; SmartMagnificationController keep trying to receive IPC from the old process
&gt; instead of the new one.

The reason turned out to be that earlier suspend message to web process caused problems on iOS when it tore down the drawing area.

Nevertheless I put processDidExit/didRelaunchProcess calls back using a separate PageClient::processWillSwap path that avoids clearing root layer on but is otherwise the same as processDidExit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460953</commentid>
    <comment_count>20</comment_count>
      <attachid>350112</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-09-19 07:33:32 -0700</bug_when>
    <thetext>Created attachment 350112
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460958</commentid>
    <comment_count>21</comment_count>
      <attachid>350116</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-09-19 07:54:18 -0700</bug_when>
    <thetext>Created attachment 350116
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460983</commentid>
    <comment_count>22</comment_count>
      <attachid>350116</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-09-19 09:18:08 -0700</bug_when>
    <thetext>Comment on attachment 350116
patch

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

r=me with comments.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2454
&gt; +            process().send(Messages::WebPage::SetIsSuspended(true), pageID());

I am wondering if we still need this IPC given that the WebProcess already gets a Policy decision IPC with PolicyAction::Suspend. Also, with your change, SetIsSuspended(true) IPC is sent twice to the process I believe.

&gt; Source/WebKit/mac/postprocess-framework-headers.sh:56
&gt; +        IOS_VERSION=&quot;12.0&quot;

Why this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461006</commentid>
    <comment_count>23</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-09-19 10:00:59 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2454
&gt; &gt; +            process().send(Messages::WebPage::SetIsSuspended(true), pageID());
&gt; 
&gt; I am wondering if we still need this IPC given that the WebProcess already
&gt; gets a Policy decision IPC with PolicyAction::Suspend. Also, with your
&gt; change, SetIsSuspended(true) IPC is sent twice to the process I believe.

The message from SuspendedPageProxy constructor comes too late (trip to runloop puts it after the policy delegate) as the page will have already transitioned to about:blank at that point. We need to tell the process immediately that it suspended so it knows to keep the layer tree frozen.

I didn&apos;t remove the second message as it was harmless but maybe I should.

&gt; &gt; Source/WebKit/mac/postprocess-framework-headers.sh:56
&gt; &gt; +        IOS_VERSION=&quot;12.0&quot;
&gt; 
&gt; Why this change?

Build hack I forgot to remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461089</commentid>
    <comment_count>24</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-09-19 13:00:31 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #23)
&gt; &gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2454
&gt; &gt; &gt; +            process().send(Messages::WebPage::SetIsSuspended(true), pageID());
&gt; &gt; 
&gt; &gt; I am wondering if we still need this IPC given that the WebProcess already
&gt; &gt; gets a Policy decision IPC with PolicyAction::Suspend. Also, with your
&gt; &gt; change, SetIsSuspended(true) IPC is sent twice to the process I believe.
&gt; 
&gt; The message from SuspendedPageProxy constructor comes too late (trip to
&gt; runloop puts it after the policy delegate) as the page will have already
&gt; transitioned to about:blank at that point. We need to tell the process
&gt; immediately that it suspended so it knows to keep the layer tree frozen.
&gt; 
&gt; I didn&apos;t remove the second message as it was harmless but maybe I should.

You misunderstanding my comment. We already send a policy decision IPC to the WebProcesss with PolicyAction::Suspend, in the same method where you now send the 
WebPage::SetIsSuspended(true) IPC. Therefore, the WebProcess, could use the existing IPC as signal that it is suspended.

&gt; 
&gt; &gt; &gt; Source/WebKit/mac/postprocess-framework-headers.sh:56
&gt; &gt; &gt; +        IOS_VERSION=&quot;12.0&quot;
&gt; &gt; 
&gt; &gt; Why this change?
&gt; 
&gt; Build hack I forgot to remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461090</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-09-19 13:01:44 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #24)
&gt; (In reply to Antti Koivisto from comment #23)
&gt; &gt; &gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2454
&gt; &gt; &gt; &gt; +            process().send(Messages::WebPage::SetIsSuspended(true), pageID());
&gt; &gt; &gt; 
&gt; &gt; &gt; I am wondering if we still need this IPC given that the WebProcess already
&gt; &gt; &gt; gets a Policy decision IPC with PolicyAction::Suspend. Also, with your
&gt; &gt; &gt; change, SetIsSuspended(true) IPC is sent twice to the process I believe.
&gt; &gt; 
&gt; &gt; The message from SuspendedPageProxy constructor comes too late (trip to
&gt; &gt; runloop puts it after the policy delegate) as the page will have already
&gt; &gt; transitioned to about:blank at that point. We need to tell the process
&gt; &gt; immediately that it suspended so it knows to keep the layer tree frozen.
&gt; &gt; 
&gt; &gt; I didn&apos;t remove the second message as it was harmless but maybe I should.
&gt; 
&gt; You misunderstanding my comment. We already send a policy decision IPC to
&gt; the WebProcesss with PolicyAction::Suspend, in the same method where you now
&gt; send the 
&gt; WebPage::SetIsSuspended(true) IPC. Therefore, the WebProcess, could use the
&gt; existing IPC as signal that it is suspended.
&gt; 

I am referring to WebPage::didReceivePolicyDecision() which gets called with PolicyAction::Suspend in case of process swap, which we already use as signal to navigate to about:blank.

&gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/mac/postprocess-framework-headers.sh:56
&gt; &gt; &gt; &gt; +        IOS_VERSION=&quot;12.0&quot;
&gt; &gt; &gt; 
&gt; &gt; &gt; Why this change?
&gt; &gt; 
&gt; &gt; Build hack I forgot to remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461288</commentid>
    <comment_count>26</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-09-20 03:46:47 -0700</bug_when>
    <thetext>Ah ok, I&apos;ll set the bit WebPage::didReceivePolicyDecision then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461292</commentid>
    <comment_count>27</comment_count>
      <attachid>350186</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-09-20 04:11:51 -0700</bug_when>
    <thetext>Created attachment 350186
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461293</commentid>
    <comment_count>28</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-09-20 04:13:30 -0700</bug_when>
    <thetext>Maybe the whole SetIsSuspended message is unnecessary and we can manage the state via PolicyActions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461301</commentid>
    <comment_count>29</comment_count>
      <attachid>350186</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-20 04:50:05 -0700</bug_when>
    <thetext>Comment on attachment 350186
patch

Clearing flags on attachment: 350186

Committed r236257: &lt;https://trac.webkit.org/changeset/236257&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461302</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-20 04:50:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349886</attachid>
            <date>2018-09-17 08:27:51 -0700</date>
            <delta_ts>2018-09-18 04:17:13 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pson-no-flash-7.patch</filename>
            <type>text/plain</type>
            <size>18663</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzYwNjMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk2IEBACisyMDE4LTA5LTE3ICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChQU09OKTogV2hp
dGUgb3IgQmxhY2sgZmxhc2ggb2NjdXJzIHdoZW4gcHJvY2VzcyBzd2FwcGluZyBvbiBuYXZpZ2F0
aW9uIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg5NjYzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDE4NDk1NT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBuZWVkIHRvIGtlZXAgdGhl
IGxheWVyIHRyZWUgb2YgdGhlIHByZXZpb3VzIHBhZ2UgYWxpdmUgYW5kIHZpc2libGUgdW50aWwg
d2UgaGF2ZSBzb21ldGhpbmcKKyAgICAgICAgdG8gcmVuZGVyIG9uIHRoZSBuZXcgcGFnZS4gV2l0
aCBQU09OIG9uIE1hYyB0aGlzIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIGtlZXAgZGlzcGxheWluZyB0
aGUKKyAgICAgICAgbGF5ZXIgdHJlZSBmcm9tIHRoZSBwcmV2aXVzIHByb2Nlc3MuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBtb3ZlcyB0aGUgbWFuYWdlbWVudCBvZiAnYXR0YWNoaW5nJyB0aGUgZHJh
d2luZyBhcmVhIChNYWMgb25seSBjb25jZXB0KSBmcm9tIHdlYiBwcm9jZXNzCisgICAgICAgIHRv
IFVJIHByb2Nlc3MuIFRoaXMgaXMgd2hlbiB3ZSBwYXJlbnQgdGhlIGxheWVyIHRyZWUgdG8gdGhl
IHZpZXcgcm9vdCBsYXllci4gSXQgYWxzbyBlbnN1cmVzIHRoYXQKKyAgICAgICAgdGhlIGxheWVy
IHRyZWUgaXMgbm90IGRlbGV0ZWQgdG9vIGVhcmx5IG9uIHByb2Nlc3Mgc3dhcCBhbmQgdGhhdCBp
dCBzdGlsbCBldmVudHVhbGx5IGdldHMgZGVsZXRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9E
cmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk6OmF0
dGFjaEluV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5k
ZWQpOgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OnRlYXJEb3duRHJhd2lu
Z0FyZWFJbldlYlByb2Nlc3MpOgorCisgICAgICAgIFdlIG5vIGxvbmdlciB0ZWFyIGRvd24gZHJh
d2luZyBhcmVhIChsYXllciB0cmVlKSBmb3Igc3VzcGVuZGVkIHBhZ2VzIGF1dG9tYXRpY2FsbHku
IFNlbmQgYW4gZXhwbGljaXQKKyAgICAgICAgbWVzc2FnZSBmb3IgaXQuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dl
YlByb2Nlc3MpOgorCisgICAgICAgIE9ubHkgY2FsbCBkaWRSZWxhdW5jaFByb2Nlc3Mgd2hlbiBw
cm9jZXNzIGFjdHVhbGx5IHJlbGF1bmNoZWQgKG5vdCBuYXZpZ2F0aW9uIHByb2Nlc3MgbGF1bmNo
KSB0bworICAgICAgICBtYXRjaCBub3QgY2FsbGluZyBwcm9jZXNzRGlkRXhpdCBpbiByZXNldFN0
YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbik6CisKKyAgICAgICAgQXR0YWNoIHRoZSBkcmF3aW5n
IGFyZWEgaWYgYXBwcm9wcmlhdGUuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKworICAgICAgICBTZW5kIHN1c3BlbmQg
bWVzc2FnZSB0byBXZWJQYWdlIGltbWVkaWF0ZWx5IGluc3RlYWQgd2FpdGluZyBmb3IgdGhlIHJ1
bmxvb3AgY2FsbGJhY2suIFRoaXMgaXMgbmVlZGVkIHNvIHdlCisgICAgICAgIGNhbiBhdm9pZCBm
bGFzaGluZyB0aGUgaW5pdGlhbCBlbXB0eSBkb2N1bWVudCBsb2FkIHdoZW4gdGhlIG5ldyBQYWdl
IG9iamVjdCBpcyBjcmVhdGVkLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVz
ZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCk6CisKKyAgICAgICAgRG9uJ3QgY2FsbCBwcm9jZXNz
RGlkRXhpdCB3aGVuIHN1c3BlbmRpbmcsIG5vdCBleGl0aW5nIHRoZSBwcm9jZXNzICh0aGlzIGZ1
bmN0aW9uIG5lZWRzIGEgbmV3IG5hbWUgb3IgcmFmYWN0b3JpbmcpLgorICAgICAgICBUaGlzIGF2
b2lkcyBjbGVhcmluZyB0aGUgZHJhd2luZyBhcmVhIGFuZCBmbGFzaGluZyB0byBibGFjay4KKwor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUpOgorCisgICAgICAgIFRoaXMgaXMgY2FsbGVkIHdoZW4gd2UgaGF2ZSBzd2l0Y2hlZCB0
byB0aGUgbmV3IGxheWVyIHRyZWUuCisgICAgICAgIFRlYXIgZG93biB0aGUgZHJhd2luZyBhcmVh
IGluIHRoZSBwcmV2aXVzIHByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
UHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
UHJveHk6OmF0dGFjaEluV2ViUHJvY2Vzcyk6CisKKyAgICAgICAgU2VuZCBhIG1lc3NhZ2UgdG8g
dGhlIHdlYiBwcm9jZXNzIHRvIGF0dGFjaCB0aGUgZHJhd2luZyBhcmVhLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdp
bmdBcmVhOjphdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YXR0YWNoRHJh
d2luZ0FyZWEpOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSB0byBiZSBsZXNzIHJlZHVuZGFu
dC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorCisgICAgICAgIERvbid0IGF0
dGFjaCBkcmF3aW5nIGFyZWEgYXV0b21hdGljYWxseS4gSXQgd2lsbCBiZSBkb25lIGJ5IGEgbWVz
c2FnZSBmcm9tIFVJIHByb2Nlc3MuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0TGF5
ZXJUcmVlU3RhdGVJc0Zyb3plbik6CisKKyAgICAgICAgTGF5ZXIgdHJlZSBpcyBhbHdheXMgZnJv
emVuIGluIGEgc3VzcGVuZGVkIHByb2Nlc3MgKGlmIGl0IGV4aXN0cykuCisKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGlkU3RhcnRQYWdlVHJhbnNpdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24pOgorCisgICAgICAgIE5vdGlmeSBV
SSBwcm9jZXNzIG9mIHRyYW5zaXRpb24gY29tcGxldGlvbi4KKworICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzZXRJc1N1c3BlbmRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRlYXJE
b3duRHJhd2luZ0FyZWFGb3JTdXNwZW5kZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisKKyAg
ICAgICAgRG9uJ3QgYXR0YWNoIGRyYXdpbmcgYXJlYSBhdXRvbWF0aWNhbGx5LiBJdCB3aWxsIGJl
IGRvbmUgYnkgYSBtZXNzYWdlIGZyb20gVUkgcHJvY2Vzcy4KKworICAgICAgICAoV2ViS2l0OjpU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YXR0YWNoKToKKyAgICAgICAgKFdlYktpdDo6
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmF0dGFjaERyYXdpbmdBcmVhKTogRGVsZXRl
ZC4KKwogMjAxOC0wOS0xNyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IGluY29ycmVjdCBXUEUgYnVpbGQgZml4IG1h
ZGUgaW4gcjIzNjAwOQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVh
UHJveHkuaAkocmV2aXNpb24gMjM2MDU4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHZpZXdFeHBvc2VkUmVjdENoYW5nZWRUaW1lckZpcmVkKCk7CiAjZW5kaWYKIAor
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hJbldlYlByb2Nlc3MoKSB7IH0KKwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVEZWJ1Z0luZGljYXRvcigpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHdhaXRG
b3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCkgeyB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAJKHJl
dmlzaW9uIDIzNjA1OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAgc3RhdGljIGNvbnN0IEhh
c2hTZXQ8SVBDOjpTdHJpbmdSZWZlcmVuYwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRk
KCJEaWREZXN0cm95TmF2aWdhdGlvbiIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRk
KCJEaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSIpOwogICAgICAgICBtZXNzYWdlTmFtZXMu
Z2V0KCkuYWRkKCJEaWRGaW5pc2hQcm9ncmVzcyIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKCJEaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9uIik7CiAgICAgICAgIG1lc3NhZ2VOYW1l
cy5nZXQoKS5hZGQoIkRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUiKTsKICAgICAgICAgbWVzc2FnZU5h
bWVzLmdldCgpLmFkZCgiRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUiKTsK
ICAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlv
bkRhdGEiKTsKQEAgLTEwOSw2ICsxMTAsMTEgQEAgdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRl
c3Ryb3lXZWJQYWdlSQogICAgIG1fcGFnZS5zdXNwZW5kZWRQYWdlQ2xvc2VkKCp0aGlzKTsKIH0K
IAordm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OnRlYXJEb3duRHJhd2luZ0FyZWFJbldlYlByb2Nl
c3MoKQoreworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGVhckRvd25E
cmF3aW5nQXJlYUZvclN1c3BlbmRlZCgpLCBtX3BhZ2UucGFnZUlEKCkpOworfQorCiB2b2lkIFN1
c3BlbmRlZFBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZCgpCiB7CiAgICAgQVNTRVJUKG1fcHJvY2Vz
cyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHku
aAkocmV2aXNpb24gMjM2MDU4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVk
UGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCB3ZWJQcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgdm9pZCBk
ZXN0cm95V2ViUGFnZUluV2ViUHJvY2VzcygpOworICAgIHZvaWQgdGVhckRvd25EcmF3aW5nQXJl
YUluV2ViUHJvY2VzcygpOwogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGNvbnN0IGNoYXIqIGxv
Z2dpbmdTdHJpbmcoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkocmV2aXNpb24gMjM2MDU4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsOCArNTYsOCBAQAogI2luY2x1
ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCisjaW5jbHVkZSAiRHJhd2luZ0Fy
ZWFNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKLSNpbmNsdWRlICJE
cmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXJNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEuaCIKICNpbmNsdWRlICJMb2FkUGFyYW1l
dGVycy5oIgpAQCAtNzk4LDcgKzc5OCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRv
V2ViUHJvY2VzcygKIAogICAgIGluaXRpYWxpemVXZWJQYWdlKCk7CiAKLSAgICBwYWdlQ2xpZW50
KCkuZGlkUmVsYXVuY2hQcm9jZXNzKCk7CisgICAgaWYgKCFuYXZpZ2F0aW9uKQorICAgICAgICBw
YWdlQ2xpZW50KCkuZGlkUmVsYXVuY2hQcm9jZXNzKCk7CisKICAgICBtX2RyYXdpbmdBcmVhLT53
YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKIH0KIApAQCAtMzQxNSw2ICsz
NDE3LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hQcm9ncmVzcygpCiAgICAgbV9w
YWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENvbXBsZXRlUGFnZVRyYW5zaXRpb24oYm9vbCBpc0luaXRpYWxFbXB0eURvY3VtZW50KQorewor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIW1fZHJhd2luZ0FyZWEpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIEF0dGFjaCBkcmF3aW5nIGFyZWEgZm9yIHRoZSBpbml0aWFsIGVtcHR5IGRv
Y3VtZW50IG9ubHkgaWYgdGhpcyBpcyBub3QgYSBwcm9jZXNzIHN3YXAuCisgICAgaWYgKGlzSW5p
dGlhbEVtcHR5RG9jdW1lbnQgJiYgbV9zdXNwZW5kZWRQYWdlKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2RyYXdpbmdBcmVhLT5hdHRhY2hJbldlYlByb2Nlc3MoKTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKGlzSW5pdGlhbEVtcHR5RG9jdW1lbnQpOworI2VuZGlmCit9CisKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXROZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKGJvb2wgbmV0d29ya1JlcXVl
c3RzSW5Qcm9ncmVzcykKIHsKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRl
LnRyYW5zYWN0aW9uKCk7CkBAIC00MDUxLDYgKzQwNjksOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhCiAgICAgICAgICAgICBpZiAocHJvcG9zZWRQcm9jZXNzLnB0
cigpICE9ICZwcm9jZXNzKCkpIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uLCBzd2FwcGluZyBwcm9jZXNzICVpIHdpdGggcHJvY2VzcyAlaSBmb3Ig
bmF2aWdhdGlvbiwgcmVhc29uOiAle3B1YmxpY31zIiwgdGhpcywgcHJvY2Vzc0lkZW50aWZpZXIo
KSwgcHJvcG9zZWRQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCByZWFzb24udXRmOCgpLmRh
dGEoKSk7CiAgICAgICAgICAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIihQcm9jZXNzU3dh
cHBpbmcpIFN3aXRjaGluZyBmcm9tIHByb2Nlc3MgJWkgdG8gbmV3IHByb2Nlc3MgKCVpKSBmb3Ig
bmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIiwgcHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvcG9z
ZWRQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQo
KSwgbmF2aWdhdGlvbi0+bG9nZ2luZ1N0cmluZygpKTsKKworICAgICAgICAgICAgICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZCh0cnVlKSwgcGFnZUlE
KCkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIG5h
dmlnYXRpb24gPSBtYWtlUmVmKCpuYXZpZ2F0aW9uKSwgcHJvcG9zZWRQcm9jZXNzID0gV1RGTW92
ZShwcm9wb3NlZFByb2Nlc3MpXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MobmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShwcm9w
b3NlZFByb2Nlc3MpKTsKQEAgLTYxNTgsNyArNjE3OCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXNldFN0YXRlQWZ0ZXJQcm9jZXMKIAogICAgIG1fZWRpdG9yU3RhdGUgPSBFZGl0b3JTdGF0ZSgp
OwogCi0gICAgcGFnZUNsaWVudCgpLnByb2Nlc3NEaWRFeGl0KCk7CisgICAgaWYgKHRlcm1pbmF0
aW9uUmVhc29uICE9IFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6TmF2aWdhdGlvblN3YXApCisg
ICAgICAgIHBhZ2VDbGllbnQoKS5wcm9jZXNzRGlkRXhpdCgpOworCiAgICAgcGFnZUNsaWVudCgp
LmNsZWFyQWxsRWRpdENvbW1hbmRzKCk7CiAKICAgICBhdXRvIHJlc2V0U3RhdGVSZWFzb24gPSB0
ZXJtaW5hdGlvblJlYXNvbiA9PSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25T
d2FwID8gUmVzZXRTdGF0ZVJlYXNvbjo6TmF2aWdhdGlvblN3YXAgOiBSZXNldFN0YXRlUmVhc29u
OjpXZWJQcm9jZXNzRXhpdGVkOwpAQCAtNjI5OSw2ICs2MzIxLDEwIEBAIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKIHZvaWQgV2ViUGFnZVByb3h5OjplbnRlckFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNv
bnRleHQpCiB7CiAgICAgcGFnZUNsaWVudCgpLmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUobGF5ZXJUcmVlQ29udGV4dCk7CisKKyAgICAvLyBXZSBoYXZlIGNvbXBsZXRlZCB0aGUgcGFn
ZSB0cmFuc2l0aW9uIGFuZCBjYW4gdGVhciBkb3duIHRoZSBsYXllcnMgaW4gdGhlIHN1c3BlbmRl
ZCBwcm9jZXNzLgorICAgIGlmIChtX3N1c3BlbmRlZFBhZ2UpCisgICAgICAgIG1fc3VzcGVuZGVk
UGFnZS0+dGVhckRvd25EcmF3aW5nQXJlYUluV2ViUHJvY2VzcygpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMzYwNTgpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxNyw2
ICsxNDE3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFN0YXJ0UHJvZ3Jlc3MoKTsKICAgICB2
b2lkIGRpZENoYW5nZVByb2dyZXNzKGRvdWJsZSk7CiAgICAgdm9pZCBkaWRGaW5pc2hQcm9ncmVz
cygpOworICAgIHZvaWQgZGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbihib29sIGlzSW5pdGlhbEVt
cHR5RG9jdW1lbnQpOwogICAgIHZvaWQgc2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhib29s
KTsKIAogICAgIHZvaWQgaGFzSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6Okhhc0luc2VjdXJlQ29u
dGVudCYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjM2MDU4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3
LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRGaW5pc2hQcm9ncmVzcygp
CiAgICAgRGlkU3RhcnRQcm9ncmVzcygpCiAKKyAgICBEaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9u
KGJvb2wgaXNJbml0aWFsRW1wdHlEb2N1bWVudCkKKwogICAgIFNldE5ldHdvcmtSZXF1ZXN0c0lu
UHJvZ3Jlc3MoYm9vbCBuZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQogCiAgICAgIyBGcmFtZSBs
aWZldGltZSBtZXNzYWdlcwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCShy
ZXZpc2lvbiAyMzYwNTgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBEcmF3aW5nQXJlYVByb3h5CisgICAgdm9p
ZCBhdHRhY2hJbldlYlByb2Nlc3MoKSBvdmVycmlkZTsKKwogICAgIHZvaWQgZGV2aWNlU2NhbGVG
YWN0b3JEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2b2lkIHNpemVEaWRDaGFuZ2UoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGNvbG9yU3BhY2VEaWRDaGFuZ2UoKSBvdmVycmlkZTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVBy
b3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCShyZXZpc2lvbiAyMzYwNTgpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94
eS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsMTEgQEAgVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eTo6flRpbAogICAgIG1fY2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CiB9CiAKK3ZvaWQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6YXR0YWNoSW5XZWJQcm9jZXNzKCkKK3sKKyAgICBt
X3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OkF0dGFj
aCgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Cit9CisKIHZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWFQcm94eTo6ZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKQogewogICAg
IG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6U2V0
RGV2aWNlU2NhbGVGYWN0b3IobV93ZWJQYWdlUHJveHkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIG1f
d2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAkocmV2aXNpb24gMjM2MDU4KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAt
MTUxLDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BsYXlXYXNSZWZyZXNoZWQoKTsK
ICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGF0dGFjaERyYXdpbmdBcmVhKCkgeyB9OworICAg
IHZpcnR1YWwgdm9pZCBhdHRhY2goKSB7IH07CiAKIHByb3RlY3RlZDoKICAgICBEcmF3aW5nQXJl
YShEcmF3aW5nQXJlYVR5cGUsIFdlYlBhZ2UmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCShyZXZp
c2lvbiAyMzYwNTgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsMTEgQEAgbWVzc2Fn
ZXMgLT4gRHJhd2luZ0FyZWEgewogICAgIERlc3Ryb3lOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29t
cG9zaXRpbmcoKSAtPiAoYm9vbCBoYW5kbGVkKQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMp
ICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgQXR0YWNoKCkKKworI2lmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZF
Ul9CTE9DS0lORykKICAgICBEaXNwbGF5V2FzUmVmcmVzaGVkKCkKICNlbmRpZgorI2VuZGlmCiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
cmV2aXNpb24gMjM2MDU4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1Nyw3ICs2NTcsNiBAQCB2b2lkIFdlYlBhZ2U6
OnJlaW5pdGlhbGl6ZVdlYlBhZ2UoV2ViUGFnCiAgICAgICAgIG1fZHJhd2luZ0FyZWEtPnVwZGF0
ZVByZWZlcmVuY2VzKHBhcmFtZXRlcnMuc3RvcmUpOwogICAgICAgICBtX2RyYXdpbmdBcmVhLT5z
ZXRQYWludGluZ0VuYWJsZWQodHJ1ZSk7CiAgICAgfQotICAgIG1fZHJhd2luZ0FyZWEtPmF0dGFj
aERyYXdpbmdBcmVhKCk7CiAKICAgICBpZiAobV9hY3Rpdml0eVN0YXRlICE9IHBhcmFtZXRlcnMu
YWN0aXZpdHlTdGF0ZSkKICAgICAgICAgc2V0QWN0aXZpdHlTdGF0ZShwYXJhbWV0ZXJzLmFjdGl2
aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMsIFZlY3RvcjxDYWxsYmFj
a0lEPigpKTsKQEAgLTIyMTUsNyArMjIxNCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0TGF5ZXJUcmVl
U3RhdGVJc0Zyb3plbigKICAgICBpZiAoIWRyYXdpbmdBcmVhKQogICAgICAgICByZXR1cm47CiAK
LSAgICBkcmF3aW5nQXJlYS0+c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihmcm96ZW4pOworICAg
IGRyYXdpbmdBcmVhLT5zZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGZyb3plbiB8fCBtX2lzU3Vz
cGVuZGVkKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpjYWxsVm9sYXRpbGl0eUNvbXBsZXRpb25IYW5k
bGVycyhib29sIHN1Y2NlZWRlZCkKQEAgLTI4NDYsNyArMjg0NSw3IEBAIHZvaWQgV2ViUGFnZTo6
Y29udGludWVXaWxsU3VibWl0Rm9ybSh1aW4KIAogdm9pZCBXZWJQYWdlOjpkaWRTdGFydFBhZ2VU
cmFuc2l0aW9uKCkKIHsKLSAgICBtX2RyYXdpbmdBcmVhLT5zZXRMYXllclRyZWVTdGF0ZUlzRnJv
emVuKHRydWUpOworICAgIHNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4odHJ1ZSk7CiAKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgYm9vbCBoYXNQcmV2aW91c2x5Rm9jdXNlZER1ZVRvVXNlckludGVy
YWN0aW9uID0gbV9oYXNFdmVyRm9jdXNlZEVsZW1lbnREdWVUb1VzZXJJbnRlcmFjdGlvblNpbmNl
UGFnZVRyYW5zaXRpb247CkBAIC0yODcwLDggKzI4NjksMTEgQEAgdm9pZCBXZWJQYWdlOjpkaWRT
dGFydFBhZ2VUcmFuc2l0aW9uKCkKIAogdm9pZCBXZWJQYWdlOjpkaWRDb21wbGV0ZVBhZ2VUcmFu
c2l0aW9uKCkKIHsKLSAgICBpZiAobV9kcmF3aW5nQXJlYSkKLSAgICAgICAgbV9kcmF3aW5nQXJl
YS0+c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihmYWxzZSk7CisgICAgLy8gRklYTUU6IExheWVy
IHRyZWUgZnJlZXppbmcgc2hvdWxkIGJlIG1hbmFnZWQgZW50aXJlbHkgaW4gdGhlIFVJIHByb2Nl
c3Mgc2lkZS4KKyAgICBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGZhbHNlKTsKKworICAgIGJv
b2wgaXNJbml0aWFsRW1wdHlEb2N1bWVudCA9ICFtX21haW5GcmFtZTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24oaXNJbml0aWFsRW1w
dHlEb2N1bWVudCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNob3coKQpAQCAtNjAwMCw4ICs2MDAy
LDE1IEBAIHZvaWQgV2ViUGFnZTo6c2V0SXNTdXNwZW5kZWQoYm9vbCBzdXNwZW4KICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9pc1N1c3BlbmRlZCA9IHN1c3BlbmRlZDsKLSAgICBpZiAobV9pc1N1
c3BlbmRlZCkKLSAgICAgICAgbV9kcmF3aW5nQXJlYSA9IG51bGxwdHI7CisKKyAgICBzZXRMYXll
clRyZWVTdGF0ZUlzRnJvemVuKHRydWUpOworfQorCit2b2lkIFdlYlBhZ2U6OnRlYXJEb3duRHJh
d2luZ0FyZWFGb3JTdXNwZW5kZWQoKQoreworICAgIGlmICghbV9pc1N1c3BlbmRlZCkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fZHJhd2luZ0FyZWEgPSBudWxscHRyOwogfQogCiB2b2lkIFdlYlBh
Z2U6OmZyYW1lQmVjYW1lUmVtb3RlKHVpbnQ2NF90IGZyYW1lSUQsIEdsb2JhbEZyYW1lSWRlbnRp
ZmllciYmIHJlbW90ZUZyYW1lSWRlbnRpZmllciwgR2xvYmFsV2luZG93SWRlbnRpZmllciYmIHJl
bW90ZVdpbmRvd0lkZW50aWZpZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMzYwNTgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MTQsNiArMTQxNCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkQ29tcGxldGUodWludDY0X3Qg
aGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIHNldElzU3VzcGVuZGVkKGJvb2wpOworICAg
IHZvaWQgdGVhckRvd25EcmF3aW5nQXJlYUZvclN1c3BlbmRlZCgpOwogCiAgICAgUmVmUHRyPFdl
YkltYWdlPiBzbmFwc2hvdEF0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zKTsKICAgICBSZWZQdHI8
V2ViSW1hZ2U+IHNuYXBzaG90Tm9kZShXZWJDb3JlOjpOb2RlJiwgU25hcHNob3RPcHRpb25zLCB1
bnNpZ25lZCBtYXhpbXVtUGl4ZWxDb3VudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIzNjA1OCkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTUwNiw2ICs1MDYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIs
IHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQog
CiAgICAgU2V0SXNTdXNwZW5kZWQoYm9vbCBzdXNwZW5kZWQpCisgICAgVGVhckRvd25EcmF3aW5n
QXJlYUZvclN1c3BlbmRlZCgpOwogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJ
T05JTkcpCiAgICAgU3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRlZCwgdWludDY0
X3QgY29udGV4dElkKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
LmgJKHJldmlzaW9uIDIzNjA1OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJ
RChDYWxsYmFja0lEKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFNob3VsZFNjYWxlVmlld1RvRml0
RG9jdW1lbnQoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGF0dGFjaERyYXdpbmdBcmVhKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBhdHRhY2goKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWRqdXN0
VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBv
dmVycmlkZTsKICAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJD
b3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyMzYwNTgpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTkxLDggKzkxLDYgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OlRpbGVkQ29yZQogCiAgICAgdXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4dCgpOwog
ICAgIHNldENvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKTsKLQotICAgIGF0dGFjaERy
YXdpbmdBcmVhKCk7CiB9CiAKIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp+VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoKQpAQCAtMTAxLDcgKzk5LDcgQEAgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6On5UaWxlZENvcgogfQogCiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OmF0dGFjaERyYXdpbmdBcmVhKCkKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OmF0dGFjaCgpCiB7CiAgICAgTGF5ZXJUcmVlQ29udGV4dCBsYXllclRy
ZWVDb250ZXh0OwogICAgIGxheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9sYXllckhvc3Rp
bmdDb250ZXh0LT5jb250ZXh0SUQoKTsK
</data>
<flag name="review"
          id="367384"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350013</attachid>
            <date>2018-09-18 04:17:13 -0700</date>
            <delta_ts>2018-09-18 08:04:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pson-no-flash-9.patch</filename>
            <type>text/plain</type>
            <size>18721</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk2IEBACisyMDE4LTA5LTE4ICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChQU09OKTogV2hp
dGUgb3IgQmxhY2sgZmxhc2ggb2NjdXJzIHdoZW4gcHJvY2VzcyBzd2FwcGluZyBvbiBuYXZpZ2F0
aW9uIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg5NjYzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDE4NDk1NT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBXZSBuZWVkIHRvIGtlZXAgdGhlIGxh
eWVyIHRyZWUgb2YgdGhlIHByZXZpb3VzIHBhZ2UgYWxpdmUgYW5kIHZpc2libGUgdW50aWwgd2Ug
aGF2ZSBzb21ldGhpbmcKKyAgICAgICAgdG8gcmVuZGVyIG9uIHRoZSBuZXcgcGFnZS4gV2l0aCBQ
U09OIG9uIE1hYyB0aGlzIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIGtlZXAgZGlzcGxheWluZyB0aGUK
KyAgICAgICAgbGF5ZXIgdHJlZSBmcm9tIHRoZSBwcmV2aXVzIHByb2Nlc3MuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBtb3ZlcyB0aGUgbWFuYWdlbWVudCBvZiAnYXR0YWNoaW5nJyB0aGUgZHJhd2lu
ZyBhcmVhIChNYWMgb25seSBjb25jZXB0KSBmcm9tIHdlYiBwcm9jZXNzCisgICAgICAgIHRvIFVJ
IHByb2Nlc3MuIFRoaXMgaXMgd2hlbiB3ZSBwYXJlbnQgdGhlIGxheWVyIHRyZWUgdG8gdGhlIHZp
ZXcgcm9vdCBsYXllci4gSXQgYWxzbyBlbnN1cmVzIHRoYXQKKyAgICAgICAgdGhlIGxheWVyIHRy
ZWUgaXMgbm90IGRlbGV0ZWQgdG9vIGVhcmx5IG9uIHByb2Nlc3Mgc3dhcCBhbmQgdGhhdCBpdCBz
dGlsbCBldmVudHVhbGx5IGdldHMgZGVsZXRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk6OmF0dGFj
aEluV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Om1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQp
OgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OnRlYXJEb3duRHJhd2luZ0Fy
ZWFJbldlYlByb2Nlc3MpOgorCisgICAgICAgIFdlIG5vIGxvbmdlciB0ZWFyIGRvd24gZHJhd2lu
ZyBhcmVhIChsYXllciB0cmVlKSBmb3Igc3VzcGVuZGVkIHBhZ2VzIGF1dG9tYXRpY2FsbHkuIFNl
bmQgYW4gZXhwbGljaXQKKyAgICAgICAgbWVzc2FnZSBmb3IgaXQuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlBy
b2Nlc3MpOgorCisgICAgICAgIE9ubHkgY2FsbCBkaWRSZWxhdW5jaFByb2Nlc3Mgd2hlbiBwcm9j
ZXNzIGFjdHVhbGx5IHJlbGF1bmNoZWQgKG5vdCBuYXZpZ2F0aW9uIHByb2Nlc3MgbGF1bmNoKSB0
bworICAgICAgICBtYXRjaCBub3QgY2FsbGluZyBwcm9jZXNzRGlkRXhpdCBpbiByZXNldFN0YXRl
QWZ0ZXJQcm9jZXNzRXhpdGVkLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
Q29tcGxldGVQYWdlVHJhbnNpdGlvbik6CisKKyAgICAgICAgQXR0YWNoIHRoZSBkcmF3aW5nIGFy
ZWEgaWYgYXBwcm9wcmlhdGUuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKworICAgICAgICBTZW5kIHN1c3BlbmQgbWVz
c2FnZSB0byBXZWJQYWdlIGltbWVkaWF0ZWx5IGluc3RlYWQgd2FpdGluZyBmb3IgdGhlIHJ1bmxv
b3AgY2FsbGJhY2suIFRoaXMgaXMgbmVlZGVkIHNvIHdlCisgICAgICAgIGNhbiBhdm9pZCBmbGFz
aGluZyB0aGUgaW5pdGlhbCBlbXB0eSBkb2N1bWVudCBsb2FkIHdoZW4gdGhlIG5ldyBQYWdlIG9i
amVjdCBpcyBjcmVhdGVkLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRT
dGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCk6CisKKyAgICAgICAgRG9uJ3QgY2FsbCBwcm9jZXNzRGlk
RXhpdCB3aGVuIHN1c3BlbmRpbmcsIG5vdCBleGl0aW5nIHRoZSBwcm9jZXNzICh0aGlzIGZ1bmN0
aW9uIG5lZWRzIGEgbmV3IG5hbWUgb3IgcmFmYWN0b3JpbmcpLgorICAgICAgICBUaGlzIGF2b2lk
cyBjbGVhcmluZyB0aGUgZHJhd2luZyBhcmVhIGFuZCBmbGFzaGluZyB0byBibGFjay4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUpOgorCisgICAgICAgIFRoaXMgaXMgY2FsbGVkIHdoZW4gd2UgaGF2ZSBzd2l0Y2hlZCB0byB0
aGUgbmV3IGxheWVyIHRyZWUuCisgICAgICAgIFRlYXIgZG93biB0aGUgZHJhd2luZyBhcmVhIGlu
IHRoZSBwcmV2aXVzIHByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJv
eHkubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJv
eHk6OmF0dGFjaEluV2ViUHJvY2Vzcyk6CisKKyAgICAgICAgU2VuZCBhIG1lc3NhZ2UgdG8gdGhl
IHdlYiBwcm9jZXNzIHRvIGF0dGFjaCB0aGUgZHJhd2luZyBhcmVhLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdB
cmVhOjphdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YXR0YWNoRHJhd2lu
Z0FyZWEpOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSB0byBiZSBsZXNzIHJlZHVuZGFudC4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorCisgICAgICAgIERvbid0IGF0dGFj
aCBkcmF3aW5nIGFyZWEgYXV0b21hdGljYWxseS4gSXQgd2lsbCBiZSBkb25lIGJ5IGEgbWVzc2Fn
ZSBmcm9tIFVJIHByb2Nlc3MuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0TGF5ZXJU
cmVlU3RhdGVJc0Zyb3plbik6CisKKyAgICAgICAgTGF5ZXIgdHJlZSBpcyBhbHdheXMgZnJvemVu
IGluIGEgc3VzcGVuZGVkIHByb2Nlc3MgKGlmIGl0IGV4aXN0cykuCisKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6ZGlkU3RhcnRQYWdlVHJhbnNpdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24pOgorCisgICAgICAgIE5vdGlmeSBVSSBw
cm9jZXNzIG9mIHRyYW5zaXRpb24gY29tcGxldGlvbi4KKworICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzZXRJc1N1c3BlbmRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRlYXJEb3du
RHJhd2luZ0FyZWFGb3JTdXNwZW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEpOgorCisgICAgICAg
IERvbid0IGF0dGFjaCBkcmF3aW5nIGFyZWEgYXV0b21hdGljYWxseS4gSXQgd2lsbCBiZSBkb25l
IGJ5IGEgbWVzc2FnZSBmcm9tIFVJIHByb2Nlc3MuCisKKyAgICAgICAgKFdlYktpdDo6VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmF0dGFjaCk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphdHRhY2hEcmF3aW5nQXJlYSk6IERlbGV0ZWQuCisK
IDIwMTgtMDktMTcgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIyMzYxMDEuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCShyZXZpc2lvbiAyMzYxMTMpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTgyLDYgKzgyLDggQEAgcHVibGljOgogICAgIHZvaWQgdmlld0V4cG9zZWRSZWN0Q2hhbmdl
ZFRpbWVyRmlyZWQoKTsKICNlbmRpZgogCisgICAgdmlydHVhbCB2b2lkIGF0dGFjaEluV2ViUHJv
Y2VzcygpIHsgfQorCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURlYnVnSW5kaWNhdG9yKCkgeyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZp
dHlTdGF0ZUNoYW5nZUlEKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3Bl
bmRlZFBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NiArNTQsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFNldDxJUEM6OlN0cmluZ1JlZmVyZW5jCiAgICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZERlc3Ryb3lOYXZpZ2F0aW9uIik7CiAgICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
Iik7CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpbmlzaFByb2dyZXNzIik7
CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENvbXBsZXRlUGFnZVRyYW5zaXRp
b24iKTsKICAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmlyc3RMYXlvdXRGb3JG
cmFtZSIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRk
KCJEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSIpOwpAQCAtMTA5LDYgKzExMCwxMSBAQCB2
b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGVzdHJveVdlYlBhZ2VJCiAgICAgbV9wYWdlLnN1c3Bl
bmRlZFBhZ2VDbG9zZWQoKnRoaXMpOwogfQogCit2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6dGVh
ckRvd25EcmF3aW5nQXJlYUluV2ViUHJvY2VzcygpCit7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZWFyRG93bkRyYXdpbmdBcmVhRm9yU3VzcGVuZCgpLCBtX3BhZ2Uu
cGFnZUlEKCkpOworfQorCiB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZCgp
CiB7CiAgICAgQVNTRVJUKG1fcHJvY2Vzcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAkocmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5
LDYgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3ZWJQcm9jZXNzRGlkQ2xvc2UoV2ViUHJv
Y2Vzc1Byb3h5Jik7CiAgICAgdm9pZCBkZXN0cm95V2ViUGFnZUluV2ViUHJvY2VzcygpOworICAg
IHZvaWQgdGVhckRvd25EcmF3aW5nQXJlYUluV2ViUHJvY2VzcygpOwogCiAjaWYgIUxPR19ESVNB
QkxFRAogICAgIGNvbnN0IGNoYXIqIGxvZ2dpbmdTdHJpbmcoKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM2MTEzKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsOCArNTYsOCBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5l
ci5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
LmgiCisjaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRyYXdpbmdB
cmVhUHJveHkuaCIKLSNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJFdmVudERpc3BhdGNoZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEu
aCIKICNpbmNsdWRlICJMb2FkUGFyYW1ldGVycy5oIgpAQCAtNzk4LDcgKzc5OCw5IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcygKIAogICAgIGluaXRpYWxpemVXZWJQ
YWdlKCk7CiAKLSAgICBwYWdlQ2xpZW50KCkuZGlkUmVsYXVuY2hQcm9jZXNzKCk7CisgICAgaWYg
KCFuYXZpZ2F0aW9uKQorICAgICAgICBwYWdlQ2xpZW50KCkuZGlkUmVsYXVuY2hQcm9jZXNzKCk7
CisKICAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFp
bnQoKTsKIH0KIApAQCAtMjQ0OSw2ICsyNDUxLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2Vp
dmVkTmF2aWdhdGlvblBvbAogICAgICAgICBpZiAocHJvcG9zZWRQcm9jZXNzLnB0cigpICE9ICZw
cm9jZXNzKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAiJXAgLSBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24sIHN3YXBwaW5nIHByb2Nlc3MgJWkgd2l0aCBwcm9jZXNzICVpIGZvciBuYXZpZ2F0aW9uLCBy
ZWFzb246ICV7cHVibGljfXMiLCB0aGlzLCBwcm9jZXNzSWRlbnRpZmllcigpLCBwcm9wb3NlZFBy
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICIoUHJvY2Vzc1N3YXBwaW5nKSBTd2l0Y2hpbmcg
ZnJvbSBwcm9jZXNzICVpIHRvIG5ldyBwcm9jZXNzICglaSkgZm9yIG5hdmlnYXRpb24gJSIgUFJJ
dTY0ICIgJyVzJyIsIHByb2Nlc3NJZGVudGlmaWVyKCksIHByb3Bvc2VkUHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24tPmxv
Z2dpbmdTdHJpbmcoKSk7CisKKyAgICAgICAgICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRJc1N1c3BlbmRlZCh0cnVlKSwgcGFnZUlEKCkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgbmF2aWdhdGlvbiA9IG1ha2VSZWYoKm5hdmlnYXRpb24pLCBwcm9w
b3NlZFByb2Nlc3MgPSBXVEZNb3ZlKHByb3Bvc2VkUHJvY2VzcyldKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICAgICAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKG5hdmlnYXRpb24sIFdU
Rk1vdmUocHJvcG9zZWRQcm9jZXNzKSk7CkBAIC0zNDQ1LDYgKzM0NDksMjIgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZpbmlzaFByb2dyZXNzKCkKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0
Q2hhbmdlcygpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tcGxldGVQYWdlVHJhbnNp
dGlvbihib29sIGlzSW5pdGlhbEVtcHR5RG9jdW1lbnQpCit7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGlmICghbV9kcmF3aW5nQXJlYSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQXR0YWNo
IGRyYXdpbmcgYXJlYSBmb3IgdGhlIGluaXRpYWwgZW1wdHkgZG9jdW1lbnQgb25seSBpZiB0aGlz
IGlzIG5vdCBhIHByb2Nlc3Mgc3dhcC4KKyAgICBpZiAoaXNJbml0aWFsRW1wdHlEb2N1bWVudCAm
JiBtX3N1c3BlbmRlZFBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZHJhd2luZ0FyZWEt
PmF0dGFjaEluV2ViUHJvY2VzcygpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaXNJbml0aWFs
RW1wdHlEb2N1bWVudCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnNldE5ldHdv
cmtSZXF1ZXN0c0luUHJvZ3Jlc3MoYm9vbCBuZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQogewog
ICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKQEAg
LTYxNjcsNyArNjE4Nyw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9j
ZXMKIAogICAgIG1fZWRpdG9yU3RhdGUgPSBFZGl0b3JTdGF0ZSgpOwogCi0gICAgcGFnZUNsaWVu
dCgpLnByb2Nlc3NEaWRFeGl0KCk7CisgICAgaWYgKHRlcm1pbmF0aW9uUmVhc29uICE9IFByb2Nl
c3NUZXJtaW5hdGlvblJlYXNvbjo6TmF2aWdhdGlvblN3YXApCisgICAgICAgIHBhZ2VDbGllbnQo
KS5wcm9jZXNzRGlkRXhpdCgpOworCiAgICAgcGFnZUNsaWVudCgpLmNsZWFyQWxsRWRpdENvbW1h
bmRzKCk7CiAKICAgICBhdXRvIHJlc2V0U3RhdGVSZWFzb24gPSB0ZXJtaW5hdGlvblJlYXNvbiA9
PSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwID8gUmVzZXRTdGF0ZVJl
YXNvbjo6TmF2aWdhdGlvblN3YXAgOiBSZXNldFN0YXRlUmVhc29uOjpXZWJQcm9jZXNzRXhpdGVk
OwpAQCAtNjMwOCw2ICs2MzMwLDEwIEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFn
ZVByb3h5OjoKIHZvaWQgV2ViUGFnZVByb3h5OjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCiB7CiAgICAgcGFn
ZUNsaWVudCgpLmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUobGF5ZXJUcmVlQ29udGV4
dCk7CisKKyAgICAvLyBXZSBoYXZlIGNvbXBsZXRlZCB0aGUgcGFnZSB0cmFuc2l0aW9uIGFuZCBj
YW4gdGVhciBkb3duIHRoZSBsYXllcnMgaW4gdGhlIHN1c3BlbmRlZCBwcm9jZXNzLgorICAgIGlm
IChtX3N1c3BlbmRlZFBhZ2UpCisgICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+dGVhckRvd25EcmF3
aW5nQXJlYUluV2ViUHJvY2VzcygpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhpdEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyMyw2ICsxNDIzLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFN0YXJ0UHJvZ3Jlc3MoKTsKICAgICB2b2lkIGRpZENoYW5nZVByb2dy
ZXNzKGRvdWJsZSk7CiAgICAgdm9pZCBkaWRGaW5pc2hQcm9ncmVzcygpOworICAgIHZvaWQgZGlk
Q29tcGxldGVQYWdlVHJhbnNpdGlvbihib29sIGlzSW5pdGlhbEVtcHR5RG9jdW1lbnQpOwogICAg
IHZvaWQgc2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhib29sKTsKIAogICAgIHZvaWQgaGFz
SW5zZWN1cmVDb250ZW50KFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudCYpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDggQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZVByb3h5IHsKICAgICBEaWRGaW5pc2hQcm9ncmVzcygpCiAgICAgRGlkU3RhcnRQcm9n
cmVzcygpCiAKKyAgICBEaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9uKGJvb2wgaXNJbml0aWFsRW1w
dHlEb2N1bWVudCkKKwogICAgIFNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoYm9vbCBuZXR3
b3JrUmVxdWVzdHNJblByb2dyZXNzKQogCiAgICAgIyBGcmFtZSBsaWZldGltZSBtZXNzYWdlcwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCShyZXZpc2lvbiAyMzYxMTMpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWFQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICAvLyBEcmF3aW5nQXJlYVByb3h5CisgICAgdm9pZCBhdHRhY2hJbldlYlByb2Nl
c3MoKSBvdmVycmlkZTsKKwogICAgIHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKSBv
dmVycmlkZTsKICAgICB2b2lkIHNpemVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2b2lkIGNv
bG9yU3BhY2VEaWRDaGFuZ2UoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5Lm1tCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQkod29ya2luZyBjb3B5
KQpAQCAtNTMsNiArNTMsMTEgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6
flRpbAogICAgIG1fY2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3du
ZXJXYXNJbnZhbGlkYXRlZCk7CiB9CiAKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWFQcm94eTo6YXR0YWNoSW5XZWJQcm9jZXNzKCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OkF0dGFjaCgpLCBtX3dlYlBhZ2VQcm94
eS5wYWdlSUQoKSk7Cit9CisKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94
eTo6ZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKQogewogICAgIG1fd2ViUGFnZVByb3h5LnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6U2V0RGV2aWNlU2NhbGVGYWN0b3Io
bV93ZWJQYWdlUHJveHkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIG1fd2ViUGFnZVByb3h5LnBhZ2VJ
RCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEuaAkocmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpc3BsYXlXYXNSZWZyZXNoZWQoKTsKICNlbmRpZgogCi0gICAgdmly
dHVhbCB2b2lkIGF0dGFjaERyYXdpbmdBcmVhKCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCBhdHRh
Y2goKSB7IH07CiAKIHByb3RlY3RlZDoKICAgICBEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGUs
IFdlYlBhZ2UmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzYxMTMpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsMTEgQEAgbWVzc2FnZXMgLT4gRHJhd2luZ0FyZWEg
ewogICAgIERlc3Ryb3lOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcoKSAtPiAoYm9v
bCBoYW5kbGVkKQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9D
RVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyNpZiBQTEFURk9STShNQUMpCisgICAgQXR0YWNo
KCkKKworI2lmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKICAgICBE
aXNwbGF5V2FzUmVmcmVzaGVkKCkKICNlbmRpZgorI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjM2MTEzKQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY1Nyw3ICs2NTcsNiBAQCB2b2lkIFdlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBh
Z2UoV2ViUGFnCiAgICAgICAgIG1fZHJhd2luZ0FyZWEtPnVwZGF0ZVByZWZlcmVuY2VzKHBhcmFt
ZXRlcnMuc3RvcmUpOwogICAgICAgICBtX2RyYXdpbmdBcmVhLT5zZXRQYWludGluZ0VuYWJsZWQo
dHJ1ZSk7CiAgICAgfQotICAgIG1fZHJhd2luZ0FyZWEtPmF0dGFjaERyYXdpbmdBcmVhKCk7CiAK
ICAgICBpZiAobV9hY3Rpdml0eVN0YXRlICE9IHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSkKICAg
ICAgICAgc2V0QWN0aXZpdHlTdGF0ZShwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5
U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMsIFZlY3RvcjxDYWxsYmFja0lEPigpKTsKQEAgLTIyMTUs
NyArMjIxNCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigKICAg
ICBpZiAoIWRyYXdpbmdBcmVhKQogICAgICAgICByZXR1cm47CiAKLSAgICBkcmF3aW5nQXJlYS0+
c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihmcm96ZW4pOworICAgIGRyYXdpbmdBcmVhLT5zZXRM
YXllclRyZWVTdGF0ZUlzRnJvemVuKGZyb3plbiB8fCBtX2lzU3VzcGVuZGVkKTsKIH0KIAogdm9p
ZCBXZWJQYWdlOjpjYWxsVm9sYXRpbGl0eUNvbXBsZXRpb25IYW5kbGVycyhib29sIHN1Y2NlZWRl
ZCkKQEAgLTI4NDYsNyArMjg0NSw3IEBAIHZvaWQgV2ViUGFnZTo6Y29udGludWVXaWxsU3VibWl0
Rm9ybSh1aW4KIAogdm9pZCBXZWJQYWdlOjpkaWRTdGFydFBhZ2VUcmFuc2l0aW9uKCkKIHsKLSAg
ICBtX2RyYXdpbmdBcmVhLT5zZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKHRydWUpOworICAgIHNl
dExheWVyVHJlZVN0YXRlSXNGcm96ZW4odHJ1ZSk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAg
Ym9vbCBoYXNQcmV2aW91c2x5Rm9jdXNlZER1ZVRvVXNlckludGVyYWN0aW9uID0gbV9oYXNFdmVy
Rm9jdXNlZEVsZW1lbnREdWVUb1VzZXJJbnRlcmFjdGlvblNpbmNlUGFnZVRyYW5zaXRpb247CkBA
IC0yODcwLDggKzI4NjksMTEgQEAgdm9pZCBXZWJQYWdlOjpkaWRTdGFydFBhZ2VUcmFuc2l0aW9u
KCkKIAogdm9pZCBXZWJQYWdlOjpkaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9uKCkKIHsKLSAgICBp
ZiAobV9kcmF3aW5nQXJlYSkKLSAgICAgICAgbV9kcmF3aW5nQXJlYS0+c2V0TGF5ZXJUcmVlU3Rh
dGVJc0Zyb3plbihmYWxzZSk7CisgICAgLy8gRklYTUU6IExheWVyIHRyZWUgZnJlZXppbmcgc2hv
dWxkIGJlIG1hbmFnZWQgZW50aXJlbHkgaW4gdGhlIFVJIHByb2Nlc3Mgc2lkZS4KKyAgICBzZXRM
YXllclRyZWVTdGF0ZUlzRnJvemVuKGZhbHNlKTsKKworICAgIGJvb2wgaXNJbml0aWFsRW1wdHlE
b2N1bWVudCA9ICFtX21haW5GcmFtZTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24oaXNJbml0aWFsRW1wdHlEb2N1bWVudCkpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OnNob3coKQpAQCAtNjAwMCw4ICs2MDAyLDIwIEBAIHZvaWQgV2ViUGFn
ZTo6c2V0SXNTdXNwZW5kZWQoYm9vbCBzdXNwZW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9p
c1N1c3BlbmRlZCA9IHN1c3BlbmRlZDsKLSAgICBpZiAobV9pc1N1c3BlbmRlZCkKLSAgICAgICAg
bV9kcmF3aW5nQXJlYSA9IG51bGxwdHI7CisKKyNpZiBQTEFURk9STShNQUMpYAorICAgIC8vIERy
YXdpbmcgYXJlYSBpcyBjbGVhcmVkIGJ5IGEgbWVzc2FnZSBmcm9tIHRoZSBVSSBwcm9jZXNzLgor
ICAgIHNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4odHJ1ZSk7CisjZWxzZQorICAgIHRlYXJEb3du
RHJhd2luZ0FyZWFGb3JTdXNwZW5kKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJQYWdlOjp0ZWFy
RG93bkRyYXdpbmdBcmVhRm9yU3VzcGVuZCgpCit7CisgICAgaWYgKCFtX2lzU3VzcGVuZGVkKQor
ICAgICAgICByZXR1cm47CisgICAgbV9kcmF3aW5nQXJlYSA9IG51bGxwdHI7CiB9CiAKIHZvaWQg
V2ViUGFnZTo6ZnJhbWVCZWNhbWVSZW1vdGUodWludDY0X3QgZnJhbWVJRCwgR2xvYmFsRnJhbWVJ
ZGVudGlmaWVyJiYgcmVtb3RlRnJhbWVJZGVudGlmaWVyLCBHbG9iYWxXaW5kb3dJZGVudGlmaWVy
JiYgcmVtb3RlV2luZG93SWRlbnRpZmllcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIzNjExMykKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxNCw2ICsx
NDE0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50
NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc2V0SXNTdXNwZW5kZWQoYm9vbCk7
CisgICAgdm9pZCB0ZWFyRG93bkRyYXdpbmdBcmVhRm9yU3VzcGVuZCgpOwogCiAgICAgUmVmUHRy
PFdlYkltYWdlPiBzbmFwc2hvdEF0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zKTsKICAgICBSZWZQ
dHI8V2ViSW1hZ2U+IHNuYXBzaG90Tm9kZShXZWJDb3JlOjpOb2RlJiwgU25hcHNob3RPcHRpb25z
LCB1bnNpZ25lZCBtYXhpbXVtUGl4ZWxDb3VudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIzNjExMykKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTUwNiw2ICs1MDYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUodWludDY0X3QgaGFuZGxlcklkZW50aWZp
ZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9y
KQogCiAgICAgU2V0SXNTdXNwZW5kZWQoYm9vbCBzdXNwZW5kZWQpCisgICAgVGVhckRvd25EcmF3
aW5nQXJlYUZvclN1c3BlbmQoKTsKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElU
SU9OSU5HKQogICAgIFN0b3JhZ2VBY2Nlc3NSZXNwb25zZShib29sIHdhc0dyYW50ZWQsIHVpbnQ2
NF90IGNvbnRleHRJZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5oCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAt
MTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNr
SUQoQ2FsbGJhY2tJRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTaG91bGRTY2FsZVZpZXdUb0Zp
dERvY3VtZW50KGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBhdHRhY2hEcmF3aW5nQXJlYSgp
IG92ZXJyaWRlOworICAgIHZvaWQgYXR0YWNoKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFkanVz
dFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2Vi
Q29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQkocmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MSw4ICs5MSw2IEBAIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjpUaWxlZENvcmUKIAogICAgIHVwZGF0ZUxheWVySG9zdGluZ0NvbnRleHQoKTsK
ICAgICBzZXRDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSk7Ci0KLSAgICBhdHRhY2hE
cmF3aW5nQXJlYSgpOwogfQogCiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6flRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKCkKQEAgLTEwMSw3ICs5OSw3IEBAIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjp+VGlsZWRDb3IKIH0KIAogCi12b2lkIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjphdHRhY2hEcmF3aW5nQXJlYSgpCit2b2lkIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjphdHRhY2goKQogewogICAgIExheWVyVHJlZUNvbnRleHQgbGF5ZXJU
cmVlQ29udGV4dDsKICAgICBsYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fbGF5ZXJIb3N0
aW5nQ29udGV4dC0+Y29udGV4dElEKCk7Cg==
</data>
<flag name="commit-queue"
          id="367493"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350021</attachid>
            <date>2018-09-18 08:04:06 -0700</date>
            <delta_ts>2018-09-19 07:33:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pson-no-flash-10.patch</filename>
            <type>text/plain</type>
            <size>18720</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk2IEBACisyMDE4LTA5LTE4ICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChQU09OKTogV2hp
dGUgb3IgQmxhY2sgZmxhc2ggb2NjdXJzIHdoZW4gcHJvY2VzcyBzd2FwcGluZyBvbiBuYXZpZ2F0
aW9uIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg5NjYzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDE4NDk1NT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBXZSBuZWVkIHRvIGtlZXAgdGhlIGxh
eWVyIHRyZWUgb2YgdGhlIHByZXZpb3VzIHBhZ2UgYWxpdmUgYW5kIHZpc2libGUgdW50aWwgd2Ug
aGF2ZSBzb21ldGhpbmcKKyAgICAgICAgdG8gcmVuZGVyIG9uIHRoZSBuZXcgcGFnZS4gV2l0aCBQ
U09OIG9uIE1hYyB0aGlzIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIGtlZXAgZGlzcGxheWluZyB0aGUK
KyAgICAgICAgbGF5ZXIgdHJlZSBmcm9tIHRoZSBwcmV2aXVzIHByb2Nlc3MuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBtb3ZlcyB0aGUgbWFuYWdlbWVudCBvZiAnYXR0YWNoaW5nJyB0aGUgZHJhd2lu
ZyBhcmVhIChNYWMgb25seSBjb25jZXB0KSBmcm9tIHdlYiBwcm9jZXNzCisgICAgICAgIHRvIFVJ
IHByb2Nlc3MuIFRoaXMgaXMgd2hlbiB3ZSBwYXJlbnQgdGhlIGxheWVyIHRyZWUgdG8gdGhlIHZp
ZXcgcm9vdCBsYXllci4gSXQgYWxzbyBlbnN1cmVzIHRoYXQKKyAgICAgICAgdGhlIGxheWVyIHRy
ZWUgaXMgbm90IGRlbGV0ZWQgdG9vIGVhcmx5IG9uIHByb2Nlc3Mgc3dhcCBhbmQgdGhhdCBpdCBz
dGlsbCBldmVudHVhbGx5IGdldHMgZGVsZXRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk6OmF0dGFj
aEluV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Om1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQp
OgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OnRlYXJEb3duRHJhd2luZ0Fy
ZWFJbldlYlByb2Nlc3MpOgorCisgICAgICAgIFdlIG5vIGxvbmdlciB0ZWFyIGRvd24gZHJhd2lu
ZyBhcmVhIChsYXllciB0cmVlKSBmb3Igc3VzcGVuZGVkIHBhZ2VzIGF1dG9tYXRpY2FsbHkuIFNl
bmQgYW4gZXhwbGljaXQKKyAgICAgICAgbWVzc2FnZSBmb3IgaXQuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlBy
b2Nlc3MpOgorCisgICAgICAgIE9ubHkgY2FsbCBkaWRSZWxhdW5jaFByb2Nlc3Mgd2hlbiBwcm9j
ZXNzIGFjdHVhbGx5IHJlbGF1bmNoZWQgKG5vdCBuYXZpZ2F0aW9uIHByb2Nlc3MgbGF1bmNoKSB0
bworICAgICAgICBtYXRjaCBub3QgY2FsbGluZyBwcm9jZXNzRGlkRXhpdCBpbiByZXNldFN0YXRl
QWZ0ZXJQcm9jZXNzRXhpdGVkLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
Q29tcGxldGVQYWdlVHJhbnNpdGlvbik6CisKKyAgICAgICAgQXR0YWNoIHRoZSBkcmF3aW5nIGFy
ZWEgaWYgYXBwcm9wcmlhdGUuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKworICAgICAgICBTZW5kIHN1c3BlbmQgbWVz
c2FnZSB0byBXZWJQYWdlIGltbWVkaWF0ZWx5IGluc3RlYWQgd2FpdGluZyBmb3IgdGhlIHJ1bmxv
b3AgY2FsbGJhY2suIFRoaXMgaXMgbmVlZGVkIHNvIHdlCisgICAgICAgIGNhbiBhdm9pZCBmbGFz
aGluZyB0aGUgaW5pdGlhbCBlbXB0eSBkb2N1bWVudCBsb2FkIHdoZW4gdGhlIG5ldyBQYWdlIG9i
amVjdCBpcyBjcmVhdGVkLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRT
dGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCk6CisKKyAgICAgICAgRG9uJ3QgY2FsbCBwcm9jZXNzRGlk
RXhpdCB3aGVuIHN1c3BlbmRpbmcsIG5vdCBleGl0aW5nIHRoZSBwcm9jZXNzICh0aGlzIGZ1bmN0
aW9uIG5lZWRzIGEgbmV3IG5hbWUgb3IgcmFmYWN0b3JpbmcpLgorICAgICAgICBUaGlzIGF2b2lk
cyBjbGVhcmluZyB0aGUgZHJhd2luZyBhcmVhIGFuZCBmbGFzaGluZyB0byBibGFjay4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUpOgorCisgICAgICAgIFRoaXMgaXMgY2FsbGVkIHdoZW4gd2UgaGF2ZSBzd2l0Y2hlZCB0byB0
aGUgbmV3IGxheWVyIHRyZWUuCisgICAgICAgIFRlYXIgZG93biB0aGUgZHJhd2luZyBhcmVhIGlu
IHRoZSBwcmV2aXVzIHByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJv
eHkubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJv
eHk6OmF0dGFjaEluV2ViUHJvY2Vzcyk6CisKKyAgICAgICAgU2VuZCBhIG1lc3NhZ2UgdG8gdGhl
IHdlYiBwcm9jZXNzIHRvIGF0dGFjaCB0aGUgZHJhd2luZyBhcmVhLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdB
cmVhOjphdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YXR0YWNoRHJhd2lu
Z0FyZWEpOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSB0byBiZSBsZXNzIHJlZHVuZGFudC4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorCisgICAgICAgIERvbid0IGF0dGFj
aCBkcmF3aW5nIGFyZWEgYXV0b21hdGljYWxseS4gSXQgd2lsbCBiZSBkb25lIGJ5IGEgbWVzc2Fn
ZSBmcm9tIFVJIHByb2Nlc3MuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0TGF5ZXJU
cmVlU3RhdGVJc0Zyb3plbik6CisKKyAgICAgICAgTGF5ZXIgdHJlZSBpcyBhbHdheXMgZnJvemVu
IGluIGEgc3VzcGVuZGVkIHByb2Nlc3MgKGlmIGl0IGV4aXN0cykuCisKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6ZGlkU3RhcnRQYWdlVHJhbnNpdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24pOgorCisgICAgICAgIE5vdGlmeSBVSSBw
cm9jZXNzIG9mIHRyYW5zaXRpb24gY29tcGxldGlvbi4KKworICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzZXRJc1N1c3BlbmRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRlYXJEb3du
RHJhd2luZ0FyZWFGb3JTdXNwZW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEpOgorCisgICAgICAg
IERvbid0IGF0dGFjaCBkcmF3aW5nIGFyZWEgYXV0b21hdGljYWxseS4gSXQgd2lsbCBiZSBkb25l
IGJ5IGEgbWVzc2FnZSBmcm9tIFVJIHByb2Nlc3MuCisKKyAgICAgICAgKFdlYktpdDo6VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmF0dGFjaCk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphdHRhY2hEcmF3aW5nQXJlYSk6IERlbGV0ZWQuCisK
IDIwMTgtMDktMTcgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIyMzYxMDEuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCShyZXZpc2lvbiAyMzYxMTMpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTgyLDYgKzgyLDggQEAgcHVibGljOgogICAgIHZvaWQgdmlld0V4cG9zZWRSZWN0Q2hhbmdl
ZFRpbWVyRmlyZWQoKTsKICNlbmRpZgogCisgICAgdmlydHVhbCB2b2lkIGF0dGFjaEluV2ViUHJv
Y2VzcygpIHsgfQorCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURlYnVnSW5kaWNhdG9yKCkgeyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZp
dHlTdGF0ZUNoYW5nZUlEKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3Bl
bmRlZFBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NiArNTQsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFNldDxJUEM6OlN0cmluZ1JlZmVyZW5jCiAgICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZERlc3Ryb3lOYXZpZ2F0aW9uIik7CiAgICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
Iik7CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpbmlzaFByb2dyZXNzIik7
CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENvbXBsZXRlUGFnZVRyYW5zaXRp
b24iKTsKICAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmlyc3RMYXlvdXRGb3JG
cmFtZSIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRk
KCJEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSIpOwpAQCAtMTA5LDYgKzExMCwxMSBAQCB2
b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGVzdHJveVdlYlBhZ2VJCiAgICAgbV9wYWdlLnN1c3Bl
bmRlZFBhZ2VDbG9zZWQoKnRoaXMpOwogfQogCit2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6dGVh
ckRvd25EcmF3aW5nQXJlYUluV2ViUHJvY2VzcygpCit7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZWFyRG93bkRyYXdpbmdBcmVhRm9yU3VzcGVuZCgpLCBtX3BhZ2Uu
cGFnZUlEKCkpOworfQorCiB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZCgp
CiB7CiAgICAgQVNTRVJUKG1fcHJvY2Vzcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAkocmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5
LDYgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3ZWJQcm9jZXNzRGlkQ2xvc2UoV2ViUHJv
Y2Vzc1Byb3h5Jik7CiAgICAgdm9pZCBkZXN0cm95V2ViUGFnZUluV2ViUHJvY2VzcygpOworICAg
IHZvaWQgdGVhckRvd25EcmF3aW5nQXJlYUluV2ViUHJvY2VzcygpOwogCiAjaWYgIUxPR19ESVNB
QkxFRAogICAgIGNvbnN0IGNoYXIqIGxvZ2dpbmdTdHJpbmcoKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM2MTEzKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsOCArNTYsOCBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5l
ci5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
LmgiCisjaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRyYXdpbmdB
cmVhUHJveHkuaCIKLSNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJFdmVudERpc3BhdGNoZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEu
aCIKICNpbmNsdWRlICJMb2FkUGFyYW1ldGVycy5oIgpAQCAtNzk4LDcgKzc5OCw5IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcygKIAogICAgIGluaXRpYWxpemVXZWJQ
YWdlKCk7CiAKLSAgICBwYWdlQ2xpZW50KCkuZGlkUmVsYXVuY2hQcm9jZXNzKCk7CisgICAgaWYg
KCFuYXZpZ2F0aW9uKQorICAgICAgICBwYWdlQ2xpZW50KCkuZGlkUmVsYXVuY2hQcm9jZXNzKCk7
CisKICAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFp
bnQoKTsKIH0KIApAQCAtMjQ0OSw2ICsyNDUxLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2Vp
dmVkTmF2aWdhdGlvblBvbAogICAgICAgICBpZiAocHJvcG9zZWRQcm9jZXNzLnB0cigpICE9ICZw
cm9jZXNzKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAiJXAgLSBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24sIHN3YXBwaW5nIHByb2Nlc3MgJWkgd2l0aCBwcm9jZXNzICVpIGZvciBuYXZpZ2F0aW9uLCBy
ZWFzb246ICV7cHVibGljfXMiLCB0aGlzLCBwcm9jZXNzSWRlbnRpZmllcigpLCBwcm9wb3NlZFBy
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICIoUHJvY2Vzc1N3YXBwaW5nKSBTd2l0Y2hpbmcg
ZnJvbSBwcm9jZXNzICVpIHRvIG5ldyBwcm9jZXNzICglaSkgZm9yIG5hdmlnYXRpb24gJSIgUFJJ
dTY0ICIgJyVzJyIsIHByb2Nlc3NJZGVudGlmaWVyKCksIHByb3Bvc2VkUHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24tPmxv
Z2dpbmdTdHJpbmcoKSk7CisKKyAgICAgICAgICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRJc1N1c3BlbmRlZCh0cnVlKSwgcGFnZUlEKCkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgbmF2aWdhdGlvbiA9IG1ha2VSZWYoKm5hdmlnYXRpb24pLCBwcm9w
b3NlZFByb2Nlc3MgPSBXVEZNb3ZlKHByb3Bvc2VkUHJvY2VzcyldKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICAgICAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKG5hdmlnYXRpb24sIFdU
Rk1vdmUocHJvcG9zZWRQcm9jZXNzKSk7CkBAIC0zNDQ1LDYgKzM0NDksMjIgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZpbmlzaFByb2dyZXNzKCkKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0
Q2hhbmdlcygpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tcGxldGVQYWdlVHJhbnNp
dGlvbihib29sIGlzSW5pdGlhbEVtcHR5RG9jdW1lbnQpCit7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGlmICghbV9kcmF3aW5nQXJlYSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQXR0YWNo
IGRyYXdpbmcgYXJlYSBmb3IgdGhlIGluaXRpYWwgZW1wdHkgZG9jdW1lbnQgb25seSBpZiB0aGlz
IGlzIG5vdCBhIHByb2Nlc3Mgc3dhcC4KKyAgICBpZiAoaXNJbml0aWFsRW1wdHlEb2N1bWVudCAm
JiBtX3N1c3BlbmRlZFBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZHJhd2luZ0FyZWEt
PmF0dGFjaEluV2ViUHJvY2VzcygpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaXNJbml0aWFs
RW1wdHlEb2N1bWVudCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnNldE5ldHdv
cmtSZXF1ZXN0c0luUHJvZ3Jlc3MoYm9vbCBuZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQogewog
ICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKQEAg
LTYxNjcsNyArNjE4Nyw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9j
ZXMKIAogICAgIG1fZWRpdG9yU3RhdGUgPSBFZGl0b3JTdGF0ZSgpOwogCi0gICAgcGFnZUNsaWVu
dCgpLnByb2Nlc3NEaWRFeGl0KCk7CisgICAgaWYgKHRlcm1pbmF0aW9uUmVhc29uICE9IFByb2Nl
c3NUZXJtaW5hdGlvblJlYXNvbjo6TmF2aWdhdGlvblN3YXApCisgICAgICAgIHBhZ2VDbGllbnQo
KS5wcm9jZXNzRGlkRXhpdCgpOworCiAgICAgcGFnZUNsaWVudCgpLmNsZWFyQWxsRWRpdENvbW1h
bmRzKCk7CiAKICAgICBhdXRvIHJlc2V0U3RhdGVSZWFzb24gPSB0ZXJtaW5hdGlvblJlYXNvbiA9
PSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwID8gUmVzZXRTdGF0ZVJl
YXNvbjo6TmF2aWdhdGlvblN3YXAgOiBSZXNldFN0YXRlUmVhc29uOjpXZWJQcm9jZXNzRXhpdGVk
OwpAQCAtNjMwOCw2ICs2MzMwLDEwIEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFn
ZVByb3h5OjoKIHZvaWQgV2ViUGFnZVByb3h5OjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCiB7CiAgICAgcGFn
ZUNsaWVudCgpLmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUobGF5ZXJUcmVlQ29udGV4
dCk7CisKKyAgICAvLyBXZSBoYXZlIGNvbXBsZXRlZCB0aGUgcGFnZSB0cmFuc2l0aW9uIGFuZCBj
YW4gdGVhciBkb3duIHRoZSBsYXllcnMgaW4gdGhlIHN1c3BlbmRlZCBwcm9jZXNzLgorICAgIGlm
IChtX3N1c3BlbmRlZFBhZ2UpCisgICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+dGVhckRvd25EcmF3
aW5nQXJlYUluV2ViUHJvY2VzcygpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhpdEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyMyw2ICsxNDIzLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFN0YXJ0UHJvZ3Jlc3MoKTsKICAgICB2b2lkIGRpZENoYW5nZVByb2dy
ZXNzKGRvdWJsZSk7CiAgICAgdm9pZCBkaWRGaW5pc2hQcm9ncmVzcygpOworICAgIHZvaWQgZGlk
Q29tcGxldGVQYWdlVHJhbnNpdGlvbihib29sIGlzSW5pdGlhbEVtcHR5RG9jdW1lbnQpOwogICAg
IHZvaWQgc2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhib29sKTsKIAogICAgIHZvaWQgaGFz
SW5zZWN1cmVDb250ZW50KFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudCYpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDggQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZVByb3h5IHsKICAgICBEaWRGaW5pc2hQcm9ncmVzcygpCiAgICAgRGlkU3RhcnRQcm9n
cmVzcygpCiAKKyAgICBEaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9uKGJvb2wgaXNJbml0aWFsRW1w
dHlEb2N1bWVudCkKKwogICAgIFNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoYm9vbCBuZXR3
b3JrUmVxdWVzdHNJblByb2dyZXNzKQogCiAgICAgIyBGcmFtZSBsaWZldGltZSBtZXNzYWdlcwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCShyZXZpc2lvbiAyMzYxMTMpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWFQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICAvLyBEcmF3aW5nQXJlYVByb3h5CisgICAgdm9pZCBhdHRhY2hJbldlYlByb2Nl
c3MoKSBvdmVycmlkZTsKKwogICAgIHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKSBv
dmVycmlkZTsKICAgICB2b2lkIHNpemVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2b2lkIGNv
bG9yU3BhY2VEaWRDaGFuZ2UoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5Lm1tCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQkod29ya2luZyBjb3B5
KQpAQCAtNTMsNiArNTMsMTEgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6
flRpbAogICAgIG1fY2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3du
ZXJXYXNJbnZhbGlkYXRlZCk7CiB9CiAKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWFQcm94eTo6YXR0YWNoSW5XZWJQcm9jZXNzKCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OkF0dGFjaCgpLCBtX3dlYlBhZ2VQcm94
eS5wYWdlSUQoKSk7Cit9CisKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94
eTo6ZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKQogewogICAgIG1fd2ViUGFnZVByb3h5LnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6U2V0RGV2aWNlU2NhbGVGYWN0b3Io
bV93ZWJQYWdlUHJveHkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIG1fd2ViUGFnZVByb3h5LnBhZ2VJ
RCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEuaAkocmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpc3BsYXlXYXNSZWZyZXNoZWQoKTsKICNlbmRpZgogCi0gICAgdmly
dHVhbCB2b2lkIGF0dGFjaERyYXdpbmdBcmVhKCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCBhdHRh
Y2goKSB7IH07CiAKIHByb3RlY3RlZDoKICAgICBEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGUs
IFdlYlBhZ2UmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzYxMTMpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsMTEgQEAgbWVzc2FnZXMgLT4gRHJhd2luZ0FyZWEg
ewogICAgIERlc3Ryb3lOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcoKSAtPiAoYm9v
bCBoYW5kbGVkKQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9D
RVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyNpZiBQTEFURk9STShNQUMpCisgICAgQXR0YWNo
KCkKKworI2lmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKICAgICBE
aXNwbGF5V2FzUmVmcmVzaGVkKCkKICNlbmRpZgorI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjM2MTEzKQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY1Nyw3ICs2NTcsNiBAQCB2b2lkIFdlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBh
Z2UoV2ViUGFnCiAgICAgICAgIG1fZHJhd2luZ0FyZWEtPnVwZGF0ZVByZWZlcmVuY2VzKHBhcmFt
ZXRlcnMuc3RvcmUpOwogICAgICAgICBtX2RyYXdpbmdBcmVhLT5zZXRQYWludGluZ0VuYWJsZWQo
dHJ1ZSk7CiAgICAgfQotICAgIG1fZHJhd2luZ0FyZWEtPmF0dGFjaERyYXdpbmdBcmVhKCk7CiAK
ICAgICBpZiAobV9hY3Rpdml0eVN0YXRlICE9IHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSkKICAg
ICAgICAgc2V0QWN0aXZpdHlTdGF0ZShwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5
U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMsIFZlY3RvcjxDYWxsYmFja0lEPigpKTsKQEAgLTIyMTUs
NyArMjIxNCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigKICAg
ICBpZiAoIWRyYXdpbmdBcmVhKQogICAgICAgICByZXR1cm47CiAKLSAgICBkcmF3aW5nQXJlYS0+
c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihmcm96ZW4pOworICAgIGRyYXdpbmdBcmVhLT5zZXRM
YXllclRyZWVTdGF0ZUlzRnJvemVuKGZyb3plbiB8fCBtX2lzU3VzcGVuZGVkKTsKIH0KIAogdm9p
ZCBXZWJQYWdlOjpjYWxsVm9sYXRpbGl0eUNvbXBsZXRpb25IYW5kbGVycyhib29sIHN1Y2NlZWRl
ZCkKQEAgLTI4NDYsNyArMjg0NSw3IEBAIHZvaWQgV2ViUGFnZTo6Y29udGludWVXaWxsU3VibWl0
Rm9ybSh1aW4KIAogdm9pZCBXZWJQYWdlOjpkaWRTdGFydFBhZ2VUcmFuc2l0aW9uKCkKIHsKLSAg
ICBtX2RyYXdpbmdBcmVhLT5zZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKHRydWUpOworICAgIHNl
dExheWVyVHJlZVN0YXRlSXNGcm96ZW4odHJ1ZSk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAg
Ym9vbCBoYXNQcmV2aW91c2x5Rm9jdXNlZER1ZVRvVXNlckludGVyYWN0aW9uID0gbV9oYXNFdmVy
Rm9jdXNlZEVsZW1lbnREdWVUb1VzZXJJbnRlcmFjdGlvblNpbmNlUGFnZVRyYW5zaXRpb247CkBA
IC0yODcwLDggKzI4NjksMTEgQEAgdm9pZCBXZWJQYWdlOjpkaWRTdGFydFBhZ2VUcmFuc2l0aW9u
KCkKIAogdm9pZCBXZWJQYWdlOjpkaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9uKCkKIHsKLSAgICBp
ZiAobV9kcmF3aW5nQXJlYSkKLSAgICAgICAgbV9kcmF3aW5nQXJlYS0+c2V0TGF5ZXJUcmVlU3Rh
dGVJc0Zyb3plbihmYWxzZSk7CisgICAgLy8gRklYTUU6IExheWVyIHRyZWUgZnJlZXppbmcgc2hv
dWxkIGJlIG1hbmFnZWQgZW50aXJlbHkgaW4gdGhlIFVJIHByb2Nlc3Mgc2lkZS4KKyAgICBzZXRM
YXllclRyZWVTdGF0ZUlzRnJvemVuKGZhbHNlKTsKKworICAgIGJvb2wgaXNJbml0aWFsRW1wdHlE
b2N1bWVudCA9ICFtX21haW5GcmFtZTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24oaXNJbml0aWFsRW1wdHlEb2N1bWVudCkpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OnNob3coKQpAQCAtNjAwMCw4ICs2MDAyLDIwIEBAIHZvaWQgV2ViUGFn
ZTo6c2V0SXNTdXNwZW5kZWQoYm9vbCBzdXNwZW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9p
c1N1c3BlbmRlZCA9IHN1c3BlbmRlZDsKLSAgICBpZiAobV9pc1N1c3BlbmRlZCkKLSAgICAgICAg
bV9kcmF3aW5nQXJlYSA9IG51bGxwdHI7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgLy8gRHJh
d2luZyBhcmVhIGlzIGNsZWFyZWQgYnkgYSBtZXNzYWdlIGZyb20gdGhlIFVJIHByb2Nlc3MuCisg
ICAgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbih0cnVlKTsKKyNlbHNlCisgICAgdGVhckRvd25E
cmF3aW5nQXJlYUZvclN1c3BlbmQoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlBhZ2U6OnRlYXJE
b3duRHJhd2luZ0FyZWFGb3JTdXNwZW5kKCkKK3sKKyAgICBpZiAoIW1faXNTdXNwZW5kZWQpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX2RyYXdpbmdBcmVhID0gbnVsbHB0cjsKIH0KIAogdm9pZCBX
ZWJQYWdlOjpmcmFtZUJlY2FtZVJlbW90ZSh1aW50NjRfdCBmcmFtZUlELCBHbG9iYWxGcmFtZUlk
ZW50aWZpZXImJiByZW1vdGVGcmFtZUlkZW50aWZpZXIsIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIm
JiByZW1vdGVXaW5kb3dJZGVudGlmaWVyKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDE0LDYgKzE0
MTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKHVpbnQ2
NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBzZXRJc1N1c3BlbmRlZChib29sKTsK
KyAgICB2b2lkIHRlYXJEb3duRHJhd2luZ0FyZWFGb3JTdXNwZW5kKCk7CiAKICAgICBSZWZQdHI8
V2ViSW1hZ2U+IHNuYXBzaG90QXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMpOwogICAgIFJlZlB0
cjxXZWJJbWFnZT4gc25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmLCBTbmFwc2hvdE9wdGlvbnMs
IHVuc2lnbmVkIG1heGltdW1QaXhlbENvdW50ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtNTA2LDYgKzUwNiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIFVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmll
ciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3Ip
CiAKICAgICBTZXRJc1N1c3BlbmRlZChib29sIHN1c3BlbmRlZCkKKyAgICBUZWFyRG93bkRyYXdp
bmdBcmVhRm9yU3VzcGVuZCgpOwogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJ
T05JTkcpCiAgICAgU3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRlZCwgdWludDY0
X3QgY29udGV4dElkKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
LmgJKHJldmlzaW9uIDIzNjExMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJ
RChDYWxsYmFja0lEKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFNob3VsZFNjYWxlVmlld1RvRml0
RG9jdW1lbnQoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGF0dGFjaERyYXdpbmdBcmVhKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBhdHRhY2goKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWRqdXN0
VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBv
dmVycmlkZTsKICAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJD
b3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTkxLDggKzkxLDYgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OlRpbGVkQ29yZQogCiAgICAgdXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4dCgpOwog
ICAgIHNldENvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKTsKLQotICAgIGF0dGFjaERy
YXdpbmdBcmVhKCk7CiB9CiAKIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp+VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoKQpAQCAtMTAxLDcgKzk5LDcgQEAgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6On5UaWxlZENvcgogfQogCiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OmF0dGFjaERyYXdpbmdBcmVhKCkKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OmF0dGFjaCgpCiB7CiAgICAgTGF5ZXJUcmVlQ29udGV4dCBsYXllclRy
ZWVDb250ZXh0OwogICAgIGxheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9sYXllckhvc3Rp
bmdDb250ZXh0LT5jb250ZXh0SUQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350112</attachid>
            <date>2018-09-19 07:33:32 -0700</date>
            <delta_ts>2018-09-19 07:54:18 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pson-no-flash-13.patch</filename>
            <type>text/plain</type>
            <size>22245</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzYyMDQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBAQAorMjAxOC0wOS0xOSAgQW50dGkgS29p
dmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAoUFNPTik6IFdo
aXRlIG9yIEJsYWNrIGZsYXNoIG9jY3VycyB3aGVuIHByb2Nlc3Mgc3dhcHBpbmcgb24gbmF2aWdh
dGlvbiBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4OTY2MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDQxODQ5NTU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgV2UgbmVlZCB0byBrZWVwIHRoZSBs
YXllciB0cmVlIG9mIHRoZSBwcmV2aW91cyBwYWdlIGFsaXZlIGFuZCB2aXNpYmxlIHVudGlsIHdl
IGhhdmUgc29tZXRoaW5nCisgICAgICAgIHRvIHJlbmRlciBvbiB0aGUgbmV3IHBhZ2UuIFdpdGgg
UFNPTiBvbiBNYWMgdGhpcyBtZWFucyB0aGF0IHdlIHNob3VsZCBrZWVwIGRpc3BsYXlpbmcgdGhl
CisgICAgICAgIGxheWVyIHRyZWUgZnJvbSB0aGUgcHJldml1cyBwcm9jZXNzLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggbW92ZXMgdGhlIG1hbmFnZW1lbnQgb2YgJ2F0dGFjaGluZycgdGhlIGRyYXdp
bmcgYXJlYSAoTWFjIG9ubHkgY29uY2VwdCkgZnJvbSB3ZWIgcHJvY2VzcworICAgICAgICB0byBV
SSBwcm9jZXNzLiBUaGlzIGlzIHdoZW4gd2UgcGFyZW50IHRoZSBsYXllciB0cmVlIHRvIHRoZSB2
aWV3IHJvb3QgbGF5ZXIuIEl0IGFsc28gZW5zdXJlcyB0aGF0CisgICAgICAgIHRoZSBsYXllciB0
cmVlIGlzIG5vdCBkZWxldGVkIHRvbyBlYXJseSBvbiBwcm9jZXNzIHN3YXAgYW5kIHRoYXQgaXQg
c3RpbGwgZXZlbnR1YWxseSBnZXRzIGRlbGV0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5OjphdHRh
Y2hJbldlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjptZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVk
KToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5Ojp0ZWFyRG93bkRyYXdpbmdB
cmVhSW5XZWJQcm9jZXNzKToKKworICAgICAgICBXZSBubyBsb25nZXIgdGVhciBkb3duIGRyYXdp
bmcgYXJlYSAobGF5ZXIgdHJlZSkgZm9yIHN1c3BlbmRlZCBwYWdlcyBhdXRvbWF0aWNhbGx5LiBT
ZW5kIGFuIGV4cGxpY2l0CisgICAgICAgIG1lc3NhZ2UgZm9yIGl0LgorCisgICAgICAgICogVUlQ
cm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENvbXBsZXRlUGFn
ZVRyYW5zaXRpb24pOgorCisgICAgICAgIEF0dGFjaCB0aGUgZHJhd2luZyBhcmVhIGlmIGFwcHJv
cHJpYXRlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisKKyAgICAgICAgU2VuZCBzdXNwZW5kIG1lc3NhZ2UgdG8gV2Vi
UGFnZSBpbW1lZGlhdGVseSBpbnN0ZWFkIHdhaXRpbmcgZm9yIHRoZSBydW5sb29wIGNhbGxiYWNr
LiBUaGlzIGlzIG5lZWRlZCBzbyB3ZQorICAgICAgICBjYW4gYXZvaWQgZmxhc2hpbmcgdGhlIGlu
aXRpYWwgZW1wdHkgZG9jdW1lbnQgbG9hZCB3aGVuIHRoZSBuZXcgUGFnZSBvYmplY3QgaXMgY3Jl
YXRlZC4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclBy
b2Nlc3NFeGl0ZWQpOgorCisgICAgICAgIENhbGwgUGFnZUNsaWVuOjpwcm9jZXNzV2lsbFN3YXAg
aW5zdGVhZCBvZiBwcm9jZXNzRGlkRXhpdCB3aGVuIGFwcHJvcHJpYXRlLgorCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisK
KyAgICAgICAgVGhpcyBpcyBjYWxsZWQgd2hlbiB3ZSBoYXZlIHN3aXRjaGVkIHRvIHRoZSBuZXcg
bGF5ZXIgdHJlZS4KKyAgICAgICAgVGVhciBkb3duIHRoZSBkcmF3aW5nIGFyZWEgaW4gdGhlIHBy
ZXZpdXMgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
cHJvY2Vzc1dpbGxTd2FwKToKKworICAgICAgICBPbiBpT1MgdGhpcyBqdXN0IGNhbGwgcHJvY2Vz
c0RpZEV4aXQgZm9yIG5vdy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cHJvY2Vzc1dpbGxTd2FwKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnByb2Nlc3NEaWRFeGl0KToKKworICAgICAgICBB
ZGQgcHJvY2Vzc1dpbGxTd2FwIHNlcGFyYXRlbHkgZnJvbSBwcm9jZXNzRGlkRXhpdC4gVGhleSBh
cmUgY3VycmVudGx5IHRoZSBzYW1lCisgICAgICAgIGV4Y2VwdCBwcm9jZXNzV2lsbFN3YXAgZG9l
c24ndCBjbGVhciB0aGUgcm9vdCBsYXllci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktp
dDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6YXR0YWNoSW5XZWJQcm9jZXNz
KToKKworICAgICAgICBTZW5kIGEgbWVzc2FnZSB0byB0aGUgd2ViIHByb2Nlc3MgdG8gYXR0YWNo
IHRoZSBkcmF3aW5nIGFyZWEuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmF0dGFjaCk6CisgICAgICAg
IChXZWJLaXQ6OkRyYXdpbmdBcmVhOjphdHRhY2hEcmF3aW5nQXJlYSk6IERlbGV0ZWQuCisKKyAg
ICAgICAgUmVuYW1lIHRvIGJlIGxlc3MgcmVkdW5kYW50LgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVpbml0aWFs
aXplV2ViUGFnZSk6CisKKyAgICAgICAgRG9uJ3QgYXR0YWNoIGRyYXdpbmcgYXJlYSBhdXRvbWF0
aWNhbGx5LiBJdCB3aWxsIGJlIGRvbmUgYnkgYSBtZXNzYWdlIGZyb20gVUkgcHJvY2Vzcy4KKwor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKToKKwor
ICAgICAgICBMYXllciB0cmVlIGlzIGFsd2F5cyBmcm96ZW4gaW4gYSBzdXNwZW5kZWQgcHJvY2Vz
cyAoaWYgaXQgZXhpc3RzKS4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRTdGFydFBh
Z2VUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ29tcGxldGVQYWdl
VHJhbnNpdGlvbik6CisKKyAgICAgICAgTm90aWZ5IFVJIHByb2Nlc3Mgb2YgdHJhbnNpdGlvbiBj
b21wbGV0aW9uLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldElzU3VzcGVuZGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dGVhckRvd25EcmF3aW5nQXJlYUZvclN1c3BlbmQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW06
CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisKKyAgICAgICAgRG9uJ3QgYXR0YWNoIGRyYXdpbmcg
YXJlYSBhdXRvbWF0aWNhbGx5LiBJdCB3aWxsIGJlIGRvbmUgYnkgYSBtZXNzYWdlIGZyb20gVUkg
cHJvY2Vzcy4KKworICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6YXR0YWNoKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmF0dGFjaERyYXdpbmdBcmVhKTogRGVsZXRlZC4KKwogMjAxOC0wOS0xOCAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBbGxvdyBXZWJDb250
ZW50IHByb2Nlc3MgdG8gY2hlY2sgdGhlICJQcm90b2NvbCBDaGFyYWN0ZXJpc3RpY3MiIG9mIGZp
bGVzIHRvIHdoaWNoIGl0IGhhcyBhY2Nlc3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5LmgJKHJldmlzaW9uIDIzNjExMykKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCB2aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXJGaXJlZCgp
OwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoSW5XZWJQcm9jZXNzKCkgeyB9CisK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGVidWdJbmRpY2F0b3IoKSB7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCB3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlQ2hhbmdl
SUQpIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24g
MjM2MTEzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xODQsNiArMTg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5ZXJIb3N0
aW5nTW9kZSB2aWV3TGF5ZXJIb3N0aW5nTW9kZSgpIHsgcmV0dXJuIExheWVySG9zdGluZ01vZGU6
OkluUHJvY2VzczsgfQogCiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRFeGl0KCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzV2lsbFN3YXAoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlbGF1bmNoUHJvY2VzcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGFnZUNsb3NlZCgp
ID0gMDsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdl
UHJveHkuY3BwCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBAIHN0
YXRpYyBjb25zdCBIYXNoU2V0PElQQzo6U3RyaW5nUmVmZXJlbmMKICAgICAgICAgbWVzc2FnZU5h
bWVzLmdldCgpLmFkZCgiRGlkRGVzdHJveU5hdmlnYXRpb24iKTsKICAgICAgICAgbWVzc2FnZU5h
bWVzLmdldCgpLmFkZCgiRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUiKTsKICAgICAgICAg
bWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmluaXNoUHJvZ3Jlc3MiKTsKKyAgICAgICAgbWVz
c2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbiIpOwogICAgICAg
ICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaXJzdExheW91dEZvckZyYW1lIik7CiAgICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZvckZyYW1lIik7CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZE5hdmlnYXRl
V2l0aE5hdmlnYXRpb25EYXRhIik7CkBAIC0xMDksNiArMTEwLDExIEBAIHZvaWQgU3VzcGVuZGVk
UGFnZVByb3h5OjpkZXN0cm95V2ViUGFnZUkKICAgICBtX3BhZ2Uuc3VzcGVuZGVkUGFnZUNsb3Nl
ZCgqdGhpcyk7CiB9CiAKK3ZvaWQgU3VzcGVuZGVkUGFnZVByb3h5Ojp0ZWFyRG93bkRyYXdpbmdB
cmVhSW5XZWJQcm9jZXNzKCkKK3sKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlRlYXJEb3duRHJhd2luZ0FyZWFGb3JTdXNwZW5kKCksIG1fcGFnZS5wYWdlSUQoKSk7Cit9
CisKIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkKCkKIHsKICAgICBBU1NF
UlQobV9wcm9jZXNzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBh
Z2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRl
ZFBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHdlYlByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkmKTsK
ICAgICB2b2lkIGRlc3Ryb3lXZWJQYWdlSW5XZWJQcm9jZXNzKCk7CisgICAgdm9pZCB0ZWFyRG93
bkRyYXdpbmdBcmVhSW5XZWJQcm9jZXNzKCk7CiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgY29u
c3QgY2hhciogbG9nZ2luZ1N0cmluZygpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw4ICs1Niw4
IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNpbmNsdWRl
ICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgot
I2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkV2ZW50RGlz
cGF0Y2hlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRnJhbWVJbmZvRGF0YS5oIgogI2luY2x1ZGUg
IkxvYWRQYXJhbWV0ZXJzLmgiCkBAIC0yNDQ5LDYgKzI0NDksOSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9sCiAgICAgICAgIGlmIChwcm9wb3NlZFByb2Nlc3MucHRy
KCkgIT0gJnByb2Nlc3MoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQ
cm9jZXNzU3dhcHBpbmcsICIlcCAtIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbiwgc3dhcHBpbmcgcHJvY2VzcyAlaSB3aXRoIHByb2Nlc3MgJWkgZm9yIG5hdmln
YXRpb24sIHJlYXNvbjogJXtwdWJsaWN9cyIsIHRoaXMsIHByb2Nlc3NJZGVudGlmaWVyKCksIHBy
b3Bvc2VkUHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcmVhc29uLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIihQcm9jZXNzU3dhcHBpbmcpIFN3
aXRjaGluZyBmcm9tIHByb2Nlc3MgJWkgdG8gbmV3IHByb2Nlc3MgKCVpKSBmb3IgbmF2aWdhdGlv
biAlIiBQUkl1NjQgIiAnJXMnIiwgcHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvcG9zZWRQcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdh
dGlvbi0+bG9nZ2luZ1N0cmluZygpKTsKKworICAgICAgICAgICAgLy8gVGVsbCB0aGUgcHJvY2Vz
cyBpdCBpcyBzdXNwZW5kZWQgaW1tZWRpYXRlbHkgdG8gZnJlZXplIHRoZSBsYXllcnMgYW5kIGF2
b2lkIGZsYXNoaW5nLgorICAgICAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldElzU3VzcGVuZGVkKHRydWUpLCBwYWdlSUQoKSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBuYXZpZ2F0aW9uID0gbWFrZVJlZigqbmF2aWdhdGlvbiksIHByb3Bvc2Vk
UHJvY2VzcyA9IFdURk1vdmUocHJvcG9zZWRQcm9jZXNzKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgICAgICBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MobmF2aWdhdGlvbiwgV1RGTW92
ZShwcm9wb3NlZFByb2Nlc3MpKTsKQEAgLTM0NDUsNiArMzQ0OCwyNCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkRmluaXNoUHJvZ3Jlc3MoKQogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFu
Z2VzKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9u
KGJvb2wgaXNJbml0aWFsRW1wdHlEb2N1bWVudCkKK3sKKyAgICAvLyBBdHRhY2ggZHJhd2luZyBh
cmVhIGZvciB0aGUgaW5pdGlhbCBlbXB0eSBkb2N1bWVudCBvbmx5IGlmIHRoaXMgaXMgbm90IGEg
cHJvY2VzcyBzd2FwLgorICAgIGlmIChpc0luaXRpYWxFbXB0eURvY3VtZW50ICYmIG1fc3VzcGVu
ZGVkUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICgh
bV9kcmF3aW5nQXJlYSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRHJhd2luZyBhcmVhIGZv
ciB0aGUgc3VzcGVuZGVkIHBhZ2Ugd2lsbCBiZSB0b3JuIGRvd24gd2hlbiB0aGUgYXR0YWNoIGNv
bXBsZXRlcy4KKyAgICBtX2RyYXdpbmdBcmVhLT5hdHRhY2hJbldlYlByb2Nlc3MoKTsKKyNlbHNl
CisgICAgaWYgKG1fc3VzcGVuZGVkUGFnZSkKKyAgICAgICAgbV9zdXNwZW5kZWRQYWdlLT50ZWFy
RG93bkRyYXdpbmdBcmVhSW5XZWJQcm9jZXNzKCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQYWdl
UHJveHk6OnNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoYm9vbCBuZXR3b3JrUmVxdWVzdHNJ
blByb2dyZXNzKQogewogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJh
bnNhY3Rpb24oKTsKQEAgLTYxNjcsNyArNjE4OCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVz
ZXRTdGF0ZUFmdGVyUHJvY2VzCiAKICAgICBtX2VkaXRvclN0YXRlID0gRWRpdG9yU3RhdGUoKTsK
IAotICAgIHBhZ2VDbGllbnQoKS5wcm9jZXNzRGlkRXhpdCgpOworICAgIGlmICh0ZXJtaW5hdGlv
blJlYXNvbiA9PSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwKQorICAg
ICAgICBwYWdlQ2xpZW50KCkucHJvY2Vzc1dpbGxTd2FwKCk7CisgICAgZWxzZQorICAgICAgICBw
YWdlQ2xpZW50KCkucHJvY2Vzc0RpZEV4aXQoKTsKKwogICAgIHBhZ2VDbGllbnQoKS5jbGVhckFs
bEVkaXRDb21tYW5kcygpOwogCiAgICAgYXV0byByZXNldFN0YXRlUmVhc29uID0gdGVybWluYXRp
b25SZWFzb24gPT0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpOYXZpZ2F0aW9uU3dhcCA/IFJl
c2V0U3RhdGVSZWFzb246Ok5hdmlnYXRpb25Td2FwIDogUmVzZXRTdGF0ZVJlYXNvbjo6V2ViUHJv
Y2Vzc0V4aXRlZDsKQEAgLTYzMDgsNiArNjMzMywxMCBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzIFdlYlBhZ2VQcm94eTo6CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KQog
ewogICAgIHBhZ2VDbGllbnQoKS5lbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGxheWVy
VHJlZUNvbnRleHQpOworCisgICAgLy8gV2UgaGF2ZSBjb21wbGV0ZWQgdGhlIHBhZ2UgdHJhbnNp
dGlvbiBhbmQgY2FuIHRlYXIgZG93biB0aGUgbGF5ZXJzIGluIHRoZSBzdXNwZW5kZWQgcHJvY2Vz
cy4KKyAgICBpZiAobV9zdXNwZW5kZWRQYWdlKQorICAgICAgICBtX3N1c3BlbmRlZFBhZ2UtPnRl
YXJEb3duRHJhd2luZ0FyZWFJbldlYlByb2Nlc3MoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MjMsNiArMTQyMyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTdGFydFByb2dyZXNzKCk7CiAgICAgdm9pZCBkaWRD
aGFuZ2VQcm9ncmVzcyhkb3VibGUpOwogICAgIHZvaWQgZGlkRmluaXNoUHJvZ3Jlc3MoKTsKKyAg
ICB2b2lkIGRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24oYm9vbCBpc0luaXRpYWxFbXB0eURvY3Vt
ZW50KTsKICAgICB2b2lkIHNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoYm9vbCk7CiAKICAg
ICB2b2lkIGhhc0luc2VjdXJlQ29udGVudChXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQmKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4JKHJldmlzaW9uIDIzNjExMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw4IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkRmluaXNoUHJvZ3Jlc3MoKQogICAgIERp
ZFN0YXJ0UHJvZ3Jlc3MoKQogCisgICAgRGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbihib29sIGlz
SW5pdGlhbEVtcHR5RG9jdW1lbnQpCisKICAgICBTZXROZXR3b3JrUmVxdWVzdHNJblByb2dyZXNz
KGJvb2wgbmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykKIAogICAgICMgRnJhbWUgbGlmZXRpbWUg
bWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ2MCw5ICsxNDYwLDYgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6cHJvY2Vzc0RpZEV4aXQoKQogCiAgICAgbm90aWZ5SW5wdXRDb250ZXh0
QWJvdXREaXNjYXJkZWRDb21wb3NpdGlvbigpOwogCi0gICAgaWYgKG1fbGF5ZXJIb3N0aW5nVmll
dykKLSAgICAgICAgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcihuaWwpOwotCiAg
ICAgdXBkYXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbihmYWxzZSk7CiAgICAgZmx1
c2hQZW5kaW5nTW91c2VFdmVudENhbGxiYWNrcygpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAkocmV2aXNpb24gMjM2MTEzKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzVmlld1Zpc2li
bGVPck9jY2x1ZGVkKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1Zpc3VhbGx5SWRsZSgpIG92ZXJy
aWRlOwogICAgIHZvaWQgcHJvY2Vzc0RpZEV4aXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHByb2Nl
c3NXaWxsU3dhcCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBwYWdlQ2xvc2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwcmVmZXJl
bmNlc0RpZENoYW5nZSgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQkocmV2aXNpb24gMjM2MTEzKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDksNiArMjA5LDEyIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnByb2Nlc3NEaWRF
eGl0KCkKICAgICBbbV93ZWJWaWV3IF9wcm9jZXNzRGlkRXhpdF07CiB9CiAKK3ZvaWQgUGFnZUNs
aWVudEltcGw6OnByb2Nlc3NXaWxsU3dhcCgpCit7CisgICAgLy8gRklYTUU6IEl0IGRpZG4ndCBy
ZWFsbHkgZXhpdC4KKyAgICBwcm9jZXNzRGlkRXhpdCgpOworfQorCiB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpkaWRSZWxhdW5jaFByb2Nlc3MoKQogewogICAgIFttX2NvbnRlbnRWaWV3IF9kaWRSZWxh
dW5jaFByb2Nlc3NdOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLmgJKHJldmlzaW9uIDIzNjExMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3
OSw3IEBAIHByaXZhdGU6CiAgICAgTGF5ZXJPclZpZXcgKmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdS
b290TGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcHJvY2Vzc0RpZEV4aXQoKSBv
dmVycmlkZTsKKyAgICB2b2lkIHByb2Nlc3NXaWxsU3dhcCgpIG92ZXJyaWRlOwogICAgIHZvaWQg
cGFnZUNsb3NlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZSgpIG92ZXJyaWRlOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQko
cmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsOSArMjUzLDE2IEBAIENvbG9yU3Bh
Y2VEYXRhIFBhZ2VDbGllbnRJbXBsOjpjb2xvclNwYWMKICAgICByZXR1cm4gbV9pbXBsLT5jb2xv
clNwYWNlKCk7CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnByb2Nlc3NXaWxsU3dhcCgpCit7
CisgICAgLy8gRklYTUU6IEl0IGRpZG4ndCByZWFsbHkgZXhpdC4KKyAgICBtX2ltcGwtPnByb2Nl
c3NEaWRFeGl0KCk7Cit9CisKIHZvaWQgUGFnZUNsaWVudEltcGw6OnByb2Nlc3NEaWRFeGl0KCkK
IHsKICAgICBtX2ltcGwtPnByb2Nlc3NEaWRFeGl0KCk7CisgICAgbV9pbXBsLT5zZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nUm9vdExheWVyKG5pbCk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6
OnBhZ2VDbG9zZWQoKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCShyZXZp
c2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBEcmF3aW5nQXJlYVByb3h5CisgICAgdm9pZCBh
dHRhY2hJbldlYlByb2Nlc3MoKSBvdmVycmlkZTsKKwogICAgIHZvaWQgZGV2aWNlU2NhbGVGYWN0
b3JEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2b2lkIHNpemVEaWRDaGFuZ2UoKSBvdmVycmlk
ZTsKICAgICB2b2lkIGNvbG9yU3BhY2VEaWRDaGFuZ2UoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsMTEgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWFQcm94eTo6flRpbAogICAgIG1fY2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CiB9CiAKK3ZvaWQgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6YXR0YWNoSW5XZWJQcm9jZXNzKCkKK3sKKyAgICBtX3dl
YlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OkF0dGFjaCgp
LCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Cit9CisKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eTo6ZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKQogewogICAgIG1f
d2ViUGFnZVByb3h5LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6U2V0RGV2
aWNlU2NhbGVGYWN0b3IobV93ZWJQYWdlUHJveHkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIG1fd2Vi
UGFnZVByb3h5LnBhZ2VJRCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAkocmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtMTUx
LDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BsYXlXYXNSZWZyZXNoZWQoKTsKICNl
bmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGF0dGFjaERyYXdpbmdBcmVhKCkgeyB9OworICAgIHZp
cnR1YWwgdm9pZCBhdHRhY2goKSB7IH07CiAKIHByb3RlY3RlZDoKICAgICBEcmF3aW5nQXJlYShE
cmF3aW5nQXJlYVR5cGUsIFdlYlBhZ2UmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCShyZXZpc2lv
biAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsMTEgQEAgbWVzc2FnZXMg
LT4gRHJhd2luZ0FyZWEgewogICAgIERlc3Ryb3lOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9z
aXRpbmcoKSAtPiAoYm9vbCBoYW5kbGVkKQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpICYm
IEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyNpZiBQTEFURk9STShN
QUMpCisgICAgQXR0YWNoKCkKKworI2lmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9C
TE9DS0lORykKICAgICBEaXNwbGF5V2FzUmVmcmVzaGVkKCkKICNlbmRpZgorI2VuZGlmCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2
aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1Nyw3ICs2NTcsNiBAQCB2b2lkIFdlYlBhZ2U6OnJl
aW5pdGlhbGl6ZVdlYlBhZ2UoV2ViUGFnCiAgICAgICAgIG1fZHJhd2luZ0FyZWEtPnVwZGF0ZVBy
ZWZlcmVuY2VzKHBhcmFtZXRlcnMuc3RvcmUpOwogICAgICAgICBtX2RyYXdpbmdBcmVhLT5zZXRQ
YWludGluZ0VuYWJsZWQodHJ1ZSk7CiAgICAgfQotICAgIG1fZHJhd2luZ0FyZWEtPmF0dGFjaERy
YXdpbmdBcmVhKCk7CiAKICAgICBpZiAobV9hY3Rpdml0eVN0YXRlICE9IHBhcmFtZXRlcnMuYWN0
aXZpdHlTdGF0ZSkKICAgICAgICAgc2V0QWN0aXZpdHlTdGF0ZShwYXJhbWV0ZXJzLmFjdGl2aXR5
U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMsIFZlY3RvcjxDYWxsYmFja0lE
PigpKTsKQEAgLTIyMTUsNyArMjIxNCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0TGF5ZXJUcmVlU3Rh
dGVJc0Zyb3plbigKICAgICBpZiAoIWRyYXdpbmdBcmVhKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBkcmF3aW5nQXJlYS0+c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihmcm96ZW4pOworICAgIGRy
YXdpbmdBcmVhLT5zZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGZyb3plbiB8fCBtX2lzU3VzcGVu
ZGVkKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpjYWxsVm9sYXRpbGl0eUNvbXBsZXRpb25IYW5kbGVy
cyhib29sIHN1Y2NlZWRlZCkKQEAgLTI4NDYsNyArMjg0NSw3IEBAIHZvaWQgV2ViUGFnZTo6Y29u
dGludWVXaWxsU3VibWl0Rm9ybSh1aW4KIAogdm9pZCBXZWJQYWdlOjpkaWRTdGFydFBhZ2VUcmFu
c2l0aW9uKCkKIHsKLSAgICBtX2RyYXdpbmdBcmVhLT5zZXRMYXllclRyZWVTdGF0ZUlzRnJvemVu
KHRydWUpOworICAgIHNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4odHJ1ZSk7CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgYm9vbCBoYXNQcmV2aW91c2x5Rm9jdXNlZER1ZVRvVXNlckludGVyYWN0
aW9uID0gbV9oYXNFdmVyRm9jdXNlZEVsZW1lbnREdWVUb1VzZXJJbnRlcmFjdGlvblNpbmNlUGFn
ZVRyYW5zaXRpb247CkBAIC0yODcwLDggKzI4NjksMTEgQEAgdm9pZCBXZWJQYWdlOjpkaWRTdGFy
dFBhZ2VUcmFuc2l0aW9uKCkKIAogdm9pZCBXZWJQYWdlOjpkaWRDb21wbGV0ZVBhZ2VUcmFuc2l0
aW9uKCkKIHsKLSAgICBpZiAobV9kcmF3aW5nQXJlYSkKLSAgICAgICAgbV9kcmF3aW5nQXJlYS0+
c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihmYWxzZSk7CisgICAgLy8gRklYTUU6IExheWVyIHRy
ZWUgZnJlZXppbmcgc2hvdWxkIGJlIG1hbmFnZWQgZW50aXJlbHkgaW4gdGhlIFVJIHByb2Nlc3Mg
c2lkZS4KKyAgICBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGZhbHNlKTsKKworICAgIGJvb2wg
aXNJbml0aWFsRW1wdHlEb2N1bWVudCA9ICFtX21haW5GcmFtZTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24oaXNJbml0aWFsRW1wdHlE
b2N1bWVudCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNob3coKQpAQCAtNjAwMCw4ICs2MDAyLDE1
IEBAIHZvaWQgV2ViUGFnZTo6c2V0SXNTdXNwZW5kZWQoYm9vbCBzdXNwZW4KICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9pc1N1c3BlbmRlZCA9IHN1c3BlbmRlZDsKLSAgICBpZiAobV9pc1N1c3Bl
bmRlZCkKLSAgICAgICAgbV9kcmF3aW5nQXJlYSA9IG51bGxwdHI7CisKKyAgICBzZXRMYXllclRy
ZWVTdGF0ZUlzRnJvemVuKHRydWUpOworfQorCit2b2lkIFdlYlBhZ2U6OnRlYXJEb3duRHJhd2lu
Z0FyZWFGb3JTdXNwZW5kKCkKK3sKKyAgICBpZiAoIW1faXNTdXNwZW5kZWQpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2RyYXdpbmdBcmVhID0gbnVsbHB0cjsKIH0KIAogdm9pZCBXZWJQYWdlOjpm
cmFtZUJlY2FtZVJlbW90ZSh1aW50NjRfdCBmcmFtZUlELCBHbG9iYWxGcmFtZUlkZW50aWZpZXIm
JiByZW1vdGVGcmFtZUlkZW50aWZpZXIsIEdsb2JhbFdpbmRvd0lkZW50aWZpZXImJiByZW1vdGVX
aW5kb3dJZGVudGlmaWVyKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAkocmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDE0LDYgKzE0MTQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IGhhbmRs
ZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBzZXRJc1N1c3BlbmRlZChib29sKTsKKyAgICB2b2lk
IHRlYXJEb3duRHJhd2luZ0FyZWFGb3JTdXNwZW5kKCk7CiAKICAgICBSZWZQdHI8V2ViSW1hZ2U+
IHNuYXBzaG90QXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMpOwogICAgIFJlZlB0cjxXZWJJbWFn
ZT4gc25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmLCBTbmFwc2hvdE9wdGlvbnMsIHVuc2lnbmVk
IG1heGltdW1QaXhlbENvdW50ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTA2
LDYgKzUwNiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFVS
TFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0
X3QgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAKICAgICBT
ZXRJc1N1c3BlbmRlZChib29sIHN1c3BlbmRlZCkKKyAgICBUZWFyRG93bkRyYXdpbmdBcmVhRm9y
U3VzcGVuZCgpOwogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCiAg
ICAgU3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4
dElkKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJKHJldmlz
aW9uIDIzNjExMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAz
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChDYWxsYmFj
a0lEKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQo
Ym9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGF0dGFjaERyYXdpbmdBcmVhKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBhdHRhY2goKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWRqdXN0VHJhbnNpZW50
Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsK
ICAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9h
dFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0JKHdvcmtp
bmcgY29weSkKQEAgLTkxLDggKzkxLDYgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OlRpbGVkQ29yZQogCiAgICAgdXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4dCgpOwogICAgIHNldENv
bG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKTsKLQotICAgIGF0dGFjaERyYXdpbmdBcmVh
KCk7CiB9CiAKIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp+VGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEoKQpAQCAtMTAxLDcgKzk5LDcgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6On5UaWxlZENvcgogfQogCiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OmF0dGFjaERyYXdpbmdBcmVhKCkKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OmF0dGFjaCgpCiB7CiAgICAgTGF5ZXJUcmVlQ29udGV4dCBsYXllclRyZWVDb250ZXh0
OwogICAgIGxheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9sYXllckhvc3RpbmdDb250ZXh0
LT5jb250ZXh0SUQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350116</attachid>
            <date>2018-09-19 07:54:18 -0700</date>
            <delta_ts>2018-09-20 04:11:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pson-no-flash-14.patch</filename>
            <type>text/plain</type>
            <size>22933</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzYyMDQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBAQAorMjAxOC0wOS0xOSAgQW50dGkgS29p
dmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAoUFNPTik6IFdo
aXRlIG9yIEJsYWNrIGZsYXNoIG9jY3VycyB3aGVuIHByb2Nlc3Mgc3dhcHBpbmcgb24gbmF2aWdh
dGlvbiBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4OTY2MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDQxODQ5NTU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgV2UgbmVlZCB0byBrZWVwIHRoZSBs
YXllciB0cmVlIG9mIHRoZSBwcmV2aW91cyBwYWdlIGFsaXZlIGFuZCB2aXNpYmxlIHVudGlsIHdl
IGhhdmUgc29tZXRoaW5nCisgICAgICAgIHRvIHJlbmRlciBvbiB0aGUgbmV3IHBhZ2UuIFdpdGgg
UFNPTiBvbiBNYWMgdGhpcyBtZWFucyB0aGF0IHdlIHNob3VsZCBrZWVwIGRpc3BsYXlpbmcgdGhl
CisgICAgICAgIGxheWVyIHRyZWUgZnJvbSB0aGUgcHJldml1cyBwcm9jZXNzLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggbW92ZXMgdGhlIG1hbmFnZW1lbnQgb2YgJ2F0dGFjaGluZycgdGhlIGRyYXdp
bmcgYXJlYSAoTWFjIG9ubHkgY29uY2VwdCkgZnJvbSB3ZWIgcHJvY2VzcworICAgICAgICB0byBV
SSBwcm9jZXNzLiBUaGlzIGlzIHdoZW4gd2UgcGFyZW50IHRoZSBsYXllciB0cmVlIHRvIHRoZSB2
aWV3IHJvb3QgbGF5ZXIuIEl0IGFsc28gZW5zdXJlcyB0aGF0CisgICAgICAgIHRoZSBsYXllciB0
cmVlIGlzIG5vdCBkZWxldGVkIHRvbyBlYXJseSBvbiBwcm9jZXNzIHN3YXAgYW5kIHRoYXQgaXQg
c3RpbGwgZXZlbnR1YWxseSBnZXRzIGRlbGV0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5OjphdHRh
Y2hJbldlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjptZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVk
KToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5Ojp0ZWFyRG93bkRyYXdpbmdB
cmVhSW5XZWJQcm9jZXNzKToKKworICAgICAgICBXZSBubyBsb25nZXIgdGVhciBkb3duIGRyYXdp
bmcgYXJlYSAobGF5ZXIgdHJlZSkgZm9yIHN1c3BlbmRlZCBwYWdlcyBhdXRvbWF0aWNhbGx5LiBT
ZW5kIGFuIGV4cGxpY2l0CisgICAgICAgIG1lc3NhZ2UgZm9yIGl0LgorCisgICAgICAgICogVUlQ
cm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENvbXBsZXRlUGFn
ZVRyYW5zaXRpb24pOgorCisgICAgICAgIEF0dGFjaCB0aGUgZHJhd2luZyBhcmVhIGlmIGFwcHJv
cHJpYXRlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisKKyAgICAgICAgU2VuZCBzdXNwZW5kIG1lc3NhZ2UgdG8gV2Vi
UGFnZSBpbW1lZGlhdGVseSBpbnN0ZWFkIHdhaXRpbmcgZm9yIHRoZSBydW5sb29wIGNhbGxiYWNr
LiBUaGlzIGlzIG5lZWRlZCBzbyB3ZQorICAgICAgICBjYW4gYXZvaWQgZmxhc2hpbmcgdGhlIGlu
aXRpYWwgZW1wdHkgZG9jdW1lbnQgbG9hZCB3aGVuIHRoZSBuZXcgUGFnZSBvYmplY3QgaXMgY3Jl
YXRlZC4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclBy
b2Nlc3NFeGl0ZWQpOgorCisgICAgICAgIENhbGwgUGFnZUNsaWVuOjpwcm9jZXNzV2lsbFN3YXAg
aW5zdGVhZCBvZiBwcm9jZXNzRGlkRXhpdCB3aGVuIGFwcHJvcHJpYXRlLgorCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisK
KyAgICAgICAgVGhpcyBpcyBjYWxsZWQgd2hlbiB3ZSBoYXZlIHN3aXRjaGVkIHRvIHRoZSBuZXcg
bGF5ZXIgdHJlZS4KKyAgICAgICAgVGVhciBkb3duIHRoZSBkcmF3aW5nIGFyZWEgaW4gdGhlIHBy
ZXZpdXMgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
cHJvY2Vzc1dpbGxTd2FwKToKKworICAgICAgICBPbiBpT1MgdGhpcyBqdXN0IGNhbGwgcHJvY2Vz
c0RpZEV4aXQgZm9yIG5vdy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cHJvY2Vzc1dpbGxTd2FwKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnByb2Nlc3NEaWRFeGl0KToKKworICAgICAgICBB
ZGQgcHJvY2Vzc1dpbGxTd2FwIHNlcGFyYXRlbHkgZnJvbSBwcm9jZXNzRGlkRXhpdC4gVGhleSBh
cmUgY3VycmVudGx5IHRoZSBzYW1lCisgICAgICAgIGV4Y2VwdCBwcm9jZXNzV2lsbFN3YXAgZG9l
c24ndCBjbGVhciB0aGUgcm9vdCBsYXllci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktp
dDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6YXR0YWNoSW5XZWJQcm9jZXNz
KToKKworICAgICAgICBTZW5kIGEgbWVzc2FnZSB0byB0aGUgd2ViIHByb2Nlc3MgdG8gYXR0YWNo
IHRoZSBkcmF3aW5nIGFyZWEuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmF0dGFjaCk6CisgICAgICAg
IChXZWJLaXQ6OkRyYXdpbmdBcmVhOjphdHRhY2hEcmF3aW5nQXJlYSk6IERlbGV0ZWQuCisKKyAg
ICAgICAgUmVuYW1lIHRvIGJlIGxlc3MgcmVkdW5kYW50LgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVpbml0aWFs
aXplV2ViUGFnZSk6CisKKyAgICAgICAgRG9uJ3QgYXR0YWNoIGRyYXdpbmcgYXJlYSBhdXRvbWF0
aWNhbGx5LiBJdCB3aWxsIGJlIGRvbmUgYnkgYSBtZXNzYWdlIGZyb20gVUkgcHJvY2Vzcy4KKwor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKToKKwor
ICAgICAgICBMYXllciB0cmVlIGlzIGFsd2F5cyBmcm96ZW4gaW4gYSBzdXNwZW5kZWQgcHJvY2Vz
cyAoaWYgaXQgZXhpc3RzKS4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRTdGFydFBh
Z2VUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ29tcGxldGVQYWdl
VHJhbnNpdGlvbik6CisKKyAgICAgICAgTm90aWZ5IFVJIHByb2Nlc3Mgb2YgdHJhbnNpdGlvbiBj
b21wbGV0aW9uLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldElzU3VzcGVuZGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dGVhckRvd25EcmF3aW5nQXJlYUZvclN1c3BlbmQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW06
CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisKKyAgICAgICAgRG9uJ3QgYXR0YWNoIGRyYXdpbmcg
YXJlYSBhdXRvbWF0aWNhbGx5LiBJdCB3aWxsIGJlIGRvbmUgYnkgYSBtZXNzYWdlIGZyb20gVUkg
cHJvY2Vzcy4KKworICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6YXR0YWNoKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmF0dGFjaERyYXdpbmdBcmVhKTogRGVsZXRlZC4KKwogMjAxOC0wOS0xOCAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBbGxvdyBXZWJDb250
ZW50IHByb2Nlc3MgdG8gY2hlY2sgdGhlICJQcm90b2NvbCBDaGFyYWN0ZXJpc3RpY3MiIG9mIGZp
bGVzIHRvIHdoaWNoIGl0IGhhcyBhY2Nlc3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5LmgJKHJldmlzaW9uIDIzNjExMykKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCB2aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXJGaXJlZCgp
OwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoSW5XZWJQcm9jZXNzKCkgeyB9CisK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGVidWdJbmRpY2F0b3IoKSB7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCB3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlQ2hhbmdl
SUQpIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24g
MjM2MTEzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xODQsNiArMTg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5ZXJIb3N0
aW5nTW9kZSB2aWV3TGF5ZXJIb3N0aW5nTW9kZSgpIHsgcmV0dXJuIExheWVySG9zdGluZ01vZGU6
OkluUHJvY2VzczsgfQogCiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRFeGl0KCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzV2lsbFN3YXAoKSB7IHByb2Nlc3NEaWRFeGl0KCk7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBwYWdlQ2xvc2VkKCkgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzNjExMykKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDYgKzU0LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8SVBDOjpTdHJpbmdSZWZlcmVuYwog
ICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWREZXN0cm95TmF2aWdhdGlvbiIpOwog
ICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaW5pc2hEb2N1bWVudExvYWRGb3JG
cmFtZSIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaW5pc2hQcm9ncmVz
cyIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDb21wbGV0ZVBhZ2VUcmFu
c2l0aW9uIik7CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpcnN0TGF5b3V0
Rm9yRnJhbWUiKTsKICAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUiKTsKICAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgp
LmFkZCgiRGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEiKTsKQEAgLTEwOSw2ICsxMTAsMTEg
QEAgdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRlc3Ryb3lXZWJQYWdlSQogICAgIG1fcGFnZS5z
dXNwZW5kZWRQYWdlQ2xvc2VkKCp0aGlzKTsKIH0KIAordm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6
OnRlYXJEb3duRHJhd2luZ0FyZWFJbldlYlByb2Nlc3MoKQoreworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VGVhckRvd25EcmF3aW5nQXJlYUZvclN1c3BlbmQoKSwgbV9w
YWdlLnBhZ2VJRCgpKTsKK30KKwogdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZEZpbmlzaExv
YWQoKQogewogICAgIEFTU0VSVChtX3Byb2Nlc3MpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgJKHJldmlzaW9uIDIzNjExMykKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2ViUHJvY2Vzc0RpZENsb3NlKFdl
YlByb2Nlc3NQcm94eSYpOwogICAgIHZvaWQgZGVzdHJveVdlYlBhZ2VJbldlYlByb2Nlc3MoKTsK
KyAgICB2b2lkIHRlYXJEb3duRHJhd2luZ0FyZWFJbldlYlByb2Nlc3MoKTsKIAogI2lmICFMT0df
RElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBsb2dnaW5nU3RyaW5nKCkgY29uc3Q7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzNjExMykK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDggKzU2LDggQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXIuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eS5oIgorI2luY2x1ZGUgIkRyYXdpbmdBcmVhTWVzc2FnZXMuaCIKICNpbmNsdWRlICJEcmF3
aW5nQXJlYVByb3h5LmgiCi0jaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJGcmFtZUluZm9E
YXRhLmgiCiAjaW5jbHVkZSAiTG9hZFBhcmFtZXRlcnMuaCIKQEAgLTI0NDksNiArMjQ0OSw5IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2wKICAgICAgICAgaWYgKHBy
b3Bvc2VkUHJvY2Vzcy5wdHIoKSAhPSAmcHJvY2VzcygpKSB7CiAgICAgICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uLCBzd2FwcGluZyBwcm9jZXNzICVpIHdpdGggcHJv
Y2VzcyAlaSBmb3IgbmF2aWdhdGlvbiwgcmVhc29uOiAle3B1YmxpY31zIiwgdGhpcywgcHJvY2Vz
c0lkZW50aWZpZXIoKSwgcHJvcG9zZWRQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCByZWFz
b24udXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiKFBy
b2Nlc3NTd2FwcGluZykgU3dpdGNoaW5nIGZyb20gcHJvY2VzcyAlaSB0byBuZXcgcHJvY2VzcyAo
JWkpIGZvciBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiICclcyciLCBwcm9jZXNzSWRlbnRpZmllcigp
LCBwcm9wb3NlZFByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG5hdmlnYXRpb24tPm5hdmln
YXRpb25JRCgpLCBuYXZpZ2F0aW9uLT5sb2dnaW5nU3RyaW5nKCkpOworCisgICAgICAgICAgICAv
LyBUZWxsIHRoZSBwcm9jZXNzIGl0IGlzIHN1c3BlbmRlZCBpbW1lZGlhdGVseSB0byBmcmVlemUg
dGhlIGxheWVycyBhbmQgYXZvaWQgZmxhc2hpbmcuCisgICAgICAgICAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SXNTdXNwZW5kZWQodHJ1ZSksIHBhZ2VJRCgpKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5hdmlnYXRpb24gPSBtYWtlUmVmKCpuYXZp
Z2F0aW9uKSwgcHJvcG9zZWRQcm9jZXNzID0gV1RGTW92ZShwcm9wb3NlZFByb2Nlc3MpXSgpIG11
dGFibGUgewogICAgICAgICAgICAgICAgIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzcyhu
YXZpZ2F0aW9uLCBXVEZNb3ZlKHByb3Bvc2VkUHJvY2VzcykpOwpAQCAtMzQ0NSw2ICszNDQ4LDI0
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hQcm9ncmVzcygpCiAgICAgbV9wYWdlTG9h
ZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbXBs
ZXRlUGFnZVRyYW5zaXRpb24oYm9vbCBpc0luaXRpYWxFbXB0eURvY3VtZW50KQoreworICAgIC8v
IEF0dGFjaCBkcmF3aW5nIGFyZWEgZm9yIHRoZSBpbml0aWFsIGVtcHR5IGRvY3VtZW50IG9ubHkg
aWYgdGhpcyBpcyBub3QgYSBwcm9jZXNzIHN3YXAuCisgICAgaWYgKGlzSW5pdGlhbEVtcHR5RG9j
dW1lbnQgJiYgbV9zdXNwZW5kZWRQYWdlKQorICAgICAgICByZXR1cm47CisKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgaWYgKCFtX2RyYXdpbmdBcmVhKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBEcmF3aW5nIGFyZWEgZm9yIHRoZSBzdXNwZW5kZWQgcGFnZSB3aWxsIGJlIHRvcm4gZG93biB3
aGVuIHRoZSBhdHRhY2ggY29tcGxldGVzLgorICAgIG1fZHJhd2luZ0FyZWEtPmF0dGFjaEluV2Vi
UHJvY2VzcygpOworI2Vsc2UKKyAgICBpZiAobV9zdXNwZW5kZWRQYWdlKQorICAgICAgICBtX3N1
c3BlbmRlZFBhZ2UtPnRlYXJEb3duRHJhd2luZ0FyZWFJbldlYlByb2Nlc3MoKTsKKyNlbmRpZgor
fQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhib29s
IG5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCiB7CiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1f
cGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwpAQCAtNjE2Nyw3ICs2MTg4LDExIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXMKIAogICAgIG1fZWRpdG9yU3RhdGUg
PSBFZGl0b3JTdGF0ZSgpOwogCi0gICAgcGFnZUNsaWVudCgpLnByb2Nlc3NEaWRFeGl0KCk7Cisg
ICAgaWYgKHRlcm1pbmF0aW9uUmVhc29uID09IFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6TmF2
aWdhdGlvblN3YXApCisgICAgICAgIHBhZ2VDbGllbnQoKS5wcm9jZXNzV2lsbFN3YXAoKTsKKyAg
ICBlbHNlCisgICAgICAgIHBhZ2VDbGllbnQoKS5wcm9jZXNzRGlkRXhpdCgpOworCiAgICAgcGFn
ZUNsaWVudCgpLmNsZWFyQWxsRWRpdENvbW1hbmRzKCk7CiAKICAgICBhdXRvIHJlc2V0U3RhdGVS
ZWFzb24gPSB0ZXJtaW5hdGlvblJlYXNvbiA9PSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246Ok5h
dmlnYXRpb25Td2FwID8gUmVzZXRTdGF0ZVJlYXNvbjo6TmF2aWdhdGlvblN3YXAgOiBSZXNldFN0
YXRlUmVhc29uOjpXZWJQcm9jZXNzRXhpdGVkOwpAQCAtNjMwOCw2ICs2MzMzLDEwIEBAIFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKIHZvaWQgV2ViUGFnZVByb3h5Ojpl
bnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxh
eWVyVHJlZUNvbnRleHQpCiB7CiAgICAgcGFnZUNsaWVudCgpLmVudGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUobGF5ZXJUcmVlQ29udGV4dCk7CisKKyAgICAvLyBXZSBoYXZlIGNvbXBsZXRl
ZCB0aGUgcGFnZSB0cmFuc2l0aW9uIGFuZCBjYW4gdGVhciBkb3duIHRoZSBsYXllcnMgaW4gdGhl
IHN1c3BlbmRlZCBwcm9jZXNzLgorICAgIGlmIChtX3N1c3BlbmRlZFBhZ2UpCisgICAgICAgIG1f
c3VzcGVuZGVkUGFnZS0+dGVhckRvd25EcmF3aW5nQXJlYUluV2ViUHJvY2VzcygpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMzYxMTMpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtMTQyMyw2ICsxNDIzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFN0YXJ0UHJvZ3Jlc3Mo
KTsKICAgICB2b2lkIGRpZENoYW5nZVByb2dyZXNzKGRvdWJsZSk7CiAgICAgdm9pZCBkaWRGaW5p
c2hQcm9ncmVzcygpOworICAgIHZvaWQgZGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbihib29sIGlz
SW5pdGlhbEVtcHR5RG9jdW1lbnQpOwogICAgIHZvaWQgc2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9n
cmVzcyhib29sKTsKIAogICAgIHZvaWQgaGFzSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudCYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTcsNiArMTE3LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRGaW5pc2hQ
cm9ncmVzcygpCiAgICAgRGlkU3RhcnRQcm9ncmVzcygpCiAKKyAgICBEaWRDb21wbGV0ZVBhZ2VU
cmFuc2l0aW9uKGJvb2wgaXNJbml0aWFsRW1wdHlEb2N1bWVudCkKKwogICAgIFNldE5ldHdvcmtS
ZXF1ZXN0c0luUHJvZ3Jlc3MoYm9vbCBuZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQogCiAgICAg
IyBGcmFtZSBsaWZldGltZSBtZXNzYWdlcwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHJldmlzaW9uIDIzNjExMykKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYw
LDkgKzE0NjAsNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm9jZXNzRGlkRXhpdCgpCiAKICAgICBu
b3RpZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRlZENvbXBvc2l0aW9uKCk7CiAKLSAgICBpZiAo
bV9sYXllckhvc3RpbmdWaWV3KQotICAgICAgICBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9v
dExheWVyKG5pbCk7Ci0KICAgICB1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9u
KGZhbHNlKTsKICAgICBmbHVzaFBlbmRpbmdNb3VzZUV2ZW50Q2FsbGJhY2tzKCk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCShy
ZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNWaWV3VmlzaWJsZU9yT2NjbHVkZWQoKSBvdmVycmlkZTsKICAgICBib29sIGlzVmlz
dWFsbHlJZGxlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwcm9jZXNzRGlkRXhpdCgpIG92ZXJyaWRl
OworICAgIHZvaWQgcHJvY2Vzc1dpbGxTd2FwKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWxh
dW5jaFByb2Nlc3MoKSBvdmVycmlkZTsKICAgICB2b2lkIHBhZ2VDbG9zZWQoKSBvdmVycmlkZTsK
ICAgICB2b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCShyZXZpc2lv
biAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwOSw2ICsyMDksMTIgQEAgdm9pZCBQYWdlQ2xpZW50
SW1wbDo6cHJvY2Vzc0RpZEV4aXQoKQogICAgIFttX3dlYlZpZXcgX3Byb2Nlc3NEaWRFeGl0XTsK
IH0KIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6cHJvY2Vzc1dpbGxTd2FwKCkKK3sKKyAgICAvLyBG
SVhNRTogSXQgZGlkbid0IHJlYWxseSBleGl0LgorICAgIHByb2Nlc3NEaWRFeGl0KCk7Cit9CisK
IHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFJlbGF1bmNoUHJvY2VzcygpCiB7CiAgICAgW21fY29u
dGVudFZpZXcgX2RpZFJlbGF1bmNoUHJvY2Vzc107CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAkocmV2aXNpb24gMjM2MTEzKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc5LDYgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBMYXllck9yVmlldyAqYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBw
cm9jZXNzRGlkRXhpdCgpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvY2Vzc1dpbGxTd2FwKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBwYWdlQ2xvc2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWxh
dW5jaFByb2Nlc3MoKSBvdmVycmlkZTsKICAgICB2b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKCkg
b3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1Myw5ICsy
NTMsMTYgQEAgQ29sb3JTcGFjZURhdGEgUGFnZUNsaWVudEltcGw6OmNvbG9yU3BhYwogICAgIHJl
dHVybiBtX2ltcGwtPmNvbG9yU3BhY2UoKTsKIH0KIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6cHJv
Y2Vzc1dpbGxTd2FwKCkKK3sKKyAgICAvLyBGSVhNRTogSXQgZGlkbid0IHJlYWxseSBleGl0Lgor
ICAgIG1faW1wbC0+cHJvY2Vzc0RpZEV4aXQoKTsKK30KKwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6
cHJvY2Vzc0RpZEV4aXQoKQogewogICAgIG1faW1wbC0+cHJvY2Vzc0RpZEV4aXQoKTsKKyAgICBt
X2ltcGwtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIobmlsKTsKIH0KIAogdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3NlZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5LmgJKHJldmlzaW9uIDIzNjExMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDYgKzM4LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIERyYXdpbmdBcmVh
UHJveHkKKyAgICB2b2lkIGF0dGFjaEluV2ViUHJvY2VzcygpIG92ZXJyaWRlOworCiAgICAgdm9p
ZCBkZXZpY2VTY2FsZUZhY3RvckRpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2l6ZURp
ZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgY29sb3JTcGFjZURpZENoYW5nZSgpIG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0JKHJldmlzaW9uIDIz
NjExMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYVByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1MywxMSBAQCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp+VGlsCiAgICAgbV9jYWxsYmFja3MuaW52
YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKIH0KIAor
dm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjphdHRhY2hJbldlYlByb2Nl
c3MoKQoreworICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpEcmF3
aW5nQXJlYTo6QXR0YWNoKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKK30KKwogdm9pZCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjpkZXZpY2VTY2FsZUZhY3RvckRpZENo
YW5nZSgpCiB7CiAgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OkRy
YXdpbmdBcmVhOjpTZXREZXZpY2VTY2FsZUZhY3RvcihtX3dlYlBhZ2VQcm94eS5kZXZpY2VTY2Fs
ZUZhY3RvcigpKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCShyZXZpc2lvbiAyMzYxMTMp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTEsNyArMTUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGxheVdh
c1JlZnJlc2hlZCgpOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoRHJhd2luZ0Fy
ZWEoKSB7IH07CisgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpIHsgfTsKIAogcHJvdGVjdGVkOgog
ICAgIERyYXdpbmdBcmVhKERyYXdpbmdBcmVhVHlwZSwgV2ViUGFnZSYpOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVz
c2FnZXMuaW4JKHJldmlzaW9uIDIzNjExMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0
NSwxMSBAQCBtZXNzYWdlcyAtPiBEcmF3aW5nQXJlYSB7CiAgICAgRGVzdHJveU5hdGl2ZVN1cmZh
Y2VIYW5kbGVGb3JDb21wb3NpdGluZygpIC0+IChib29sIGhhbmRsZWQpCiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5H
KQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBBdHRhY2goKQorCisjaWYgRU5BQkxFKFdFQlBST0NF
U1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQogICAgIERpc3BsYXlXYXNSZWZyZXNoZWQoKQogI2Vu
ZGlmCisjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU3LDcgKzY1Nyw2IEBA
IHZvaWQgV2ViUGFnZTo6cmVpbml0aWFsaXplV2ViUGFnZShXZWJQYWcKICAgICAgICAgbV9kcmF3
aW5nQXJlYS0+dXBkYXRlUHJlZmVyZW5jZXMocGFyYW1ldGVycy5zdG9yZSk7CiAgICAgICAgIG1f
ZHJhd2luZ0FyZWEtPnNldFBhaW50aW5nRW5hYmxlZCh0cnVlKTsKICAgICB9Ci0gICAgbV9kcmF3
aW5nQXJlYS0+YXR0YWNoRHJhd2luZ0FyZWEoKTsKIAogICAgIGlmIChtX2FjdGl2aXR5U3RhdGUg
IT0gcGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlKQogICAgICAgICBzZXRBY3Rpdml0eVN0YXRlKHBh
cmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cywg
VmVjdG9yPENhbGxiYWNrSUQ+KCkpOwpAQCAtMjIxNSw3ICsyMjE0LDcgQEAgdm9pZCBXZWJQYWdl
OjpzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKAogICAgIGlmICghZHJhd2luZ0FyZWEpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGRyYXdpbmdBcmVhLT5zZXRMYXllclRyZWVTdGF0ZUlzRnJvemVu
KGZyb3plbik7CisgICAgZHJhd2luZ0FyZWEtPnNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oZnJv
emVuIHx8IG1faXNTdXNwZW5kZWQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNhbGxWb2xhdGlsaXR5
Q29tcGxldGlvbkhhbmRsZXJzKGJvb2wgc3VjY2VlZGVkKQpAQCAtMjg0Niw3ICsyODQ1LDcgQEAg
dm9pZCBXZWJQYWdlOjpjb250aW51ZVdpbGxTdWJtaXRGb3JtKHVpbgogCiB2b2lkIFdlYlBhZ2U6
OmRpZFN0YXJ0UGFnZVRyYW5zaXRpb24oKQogewotICAgIG1fZHJhd2luZ0FyZWEtPnNldExheWVy
VHJlZVN0YXRlSXNGcm96ZW4odHJ1ZSk7CisgICAgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbih0
cnVlKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBib29sIGhhc1ByZXZpb3VzbHlGb2N1c2Vk
RHVlVG9Vc2VySW50ZXJhY3Rpb24gPSBtX2hhc0V2ZXJGb2N1c2VkRWxlbWVudER1ZVRvVXNlcklu
dGVyYWN0aW9uU2luY2VQYWdlVHJhbnNpdGlvbjsKQEAgLTI4NzAsOCArMjg2OSwxMSBAQCB2b2lk
IFdlYlBhZ2U6OmRpZFN0YXJ0UGFnZVRyYW5zaXRpb24oKQogCiB2b2lkIFdlYlBhZ2U6OmRpZENv
bXBsZXRlUGFnZVRyYW5zaXRpb24oKQogewotICAgIGlmIChtX2RyYXdpbmdBcmVhKQotICAgICAg
ICBtX2RyYXdpbmdBcmVhLT5zZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGZhbHNlKTsKKyAgICAv
LyBGSVhNRTogTGF5ZXIgdHJlZSBmcmVlemluZyBzaG91bGQgYmUgbWFuYWdlZCBlbnRpcmVseSBp
biB0aGUgVUkgcHJvY2VzcyBzaWRlLgorICAgIHNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oZmFs
c2UpOworCisgICAgYm9vbCBpc0luaXRpYWxFbXB0eURvY3VtZW50ID0gIW1fbWFpbkZyYW1lOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tcGxldGVQYWdlVHJhbnNpdGlv
bihpc0luaXRpYWxFbXB0eURvY3VtZW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2hvdygpCkBA
IC02MDAwLDggKzYwMDIsMTUgQEAgdm9pZCBXZWJQYWdlOjpzZXRJc1N1c3BlbmRlZChib29sIHN1
c3BlbgogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzU3VzcGVuZGVkID0gc3VzcGVuZGVkOwot
ICAgIGlmIChtX2lzU3VzcGVuZGVkKQotICAgICAgICBtX2RyYXdpbmdBcmVhID0gbnVsbHB0cjsK
KworICAgIHNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4odHJ1ZSk7Cit9CisKK3ZvaWQgV2ViUGFn
ZTo6dGVhckRvd25EcmF3aW5nQXJlYUZvclN1c3BlbmQoKQoreworICAgIGlmICghbV9pc1N1c3Bl
bmRlZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZHJhd2luZ0FyZWEgPSBudWxscHRyOwogfQog
CiB2b2lkIFdlYlBhZ2U6OmZyYW1lQmVjYW1lUmVtb3RlKHVpbnQ2NF90IGZyYW1lSUQsIEdsb2Jh
bEZyYW1lSWRlbnRpZmllciYmIHJlbW90ZUZyYW1lSWRlbnRpZmllciwgR2xvYmFsV2luZG93SWRl
bnRpZmllciYmIHJlbW90ZVdpbmRvd0lkZW50aWZpZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0
MTQsNiArMTQxNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkQ29tcGxl
dGUodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIHNldElzU3VzcGVuZGVk
KGJvb2wpOworICAgIHZvaWQgdGVhckRvd25EcmF3aW5nQXJlYUZvclN1c3BlbmQoKTsKIAogICAg
IFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3RBdFNpemUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyk7CiAg
ICAgUmVmUHRyPFdlYkltYWdlPiBzbmFwc2hvdE5vZGUoV2ViQ29yZTo6Tm9kZSYsIFNuYXBzaG90
T3B0aW9ucywgdW5zaWduZWQgbWF4aW11bVBpeGVsQ291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzYxMTMpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDYsNiArNTA2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgVVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IGhhbmRsZXJJ
ZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBlcnJvcikKIAogICAgIFNldElzU3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVkKQorICAgIFRlYXJE
b3duRHJhd2luZ0FyZWFGb3JTdXNwZW5kKCk7CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdF
X1BBUlRJVElPTklORykKICAgICBTdG9yYWdlQWNjZXNzUmVzcG9uc2UoYm9vbCB3YXNHcmFudGVk
LCB1aW50NjRfdCBjb250ZXh0SWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEuaAkocmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25D
YWxsYmFja0lEKENhbGxiYWNrSUQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2hvdWxkU2NhbGVW
aWV3VG9GaXREb2N1bWVudChib29sKSBvdmVycmlkZTsKIAotICAgIHZvaWQgYXR0YWNoRHJhd2lu
Z0FyZWEoKSBvdmVycmlkZTsKKyAgICB2b2lkIGF0dGFjaCgpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBv
cmlnaW4pIG92ZXJyaWRlOwogICAgIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2Nh
bGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0JKHJldmlzaW9uIDIzNjExMykKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5tbQkod29ya2luZyBjb3B5KQpAQCAtOTEsOCArOTEsNiBAQCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlCiAKICAgICB1cGRhdGVMYXllckhvc3RpbmdDb250
ZXh0KCk7CiAgICAgc2V0Q29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpOwotCi0gICAg
YXR0YWNoRHJhd2luZ0FyZWEoKTsKIH0KIAogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
On5UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSgpCkBAIC0xMDEsNyArOTksNyBAQCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6flRpbGVkQ29yCiB9CiAKIAotdm9pZCBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YXR0YWNoRHJhd2luZ0FyZWEoKQordm9pZCBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YXR0YWNoKCkKIHsKICAgICBMYXllclRyZWVDb250ZXh0
IGxheWVyVHJlZUNvbnRleHQ7CiAgICAgbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX2xh
eWVySG9zdGluZ0NvbnRleHQtPmNvbnRleHRJRCgpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
cG9zdHByb2Nlc3MtZnJhbWV3b3JrLWhlYWRlcnMuc2gKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvcG9zdHByb2Nlc3MtZnJhbWV3b3JrLWhlYWRlcnMuc2gJKHJldmlzaW9uIDIzNjEx
MykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL3Bvc3Rwcm9jZXNzLWZyYW1ld29yay1oZWFkZXJzLnNo
CSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIGZ1bmN0aW9uIHJld3JpdGVfaGVhZGVy
cyAoKSB7CiAgICAgICAgIFtbIC1uICR7T1NYX1ZFUlNJT059IF1dIHx8IE9TWF9WRVJTSU9OPSR7
TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUfQogICAgICAgICBbWyAtbiAke0lPU19WRVJTSU9OfSBd
XSB8fCBJT1NfVkVSU0lPTj0iTkEiCiAgICAgZWxpZiBbWyAiJHtXS19QTEFURk9STV9OQU1FfSIg
PX4gImlwaG9uZSIgXV07IHRoZW4KLSAgICAgICAgW1sgLW4gJHtJT1NfVkVSU0lPTn0gXV0gfHwg
SU9TX1ZFUlNJT049JHtJUEhPTkVPU19ERVBMT1lNRU5UX1RBUkdFVH0KKyAgICAgICAgSU9TX1ZF
UlNJT049IjEyLjAiCiAgICAgICAgIFtbIC1uICR7T1NYX1ZFUlNJT059IF1dIHx8IE9TWF9WRVJT
SU9OPSJOQSIKICAgICBmaQogCg==
</data>
<flag name="review"
          id="367596"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350186</attachid>
            <date>2018-09-20 04:11:51 -0700</date>
            <delta_ts>2018-09-20 04:50:05 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pson-no-flash-15.patch</filename>
            <type>text/plain</type>
            <size>21481</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzYyMDQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAxOC0wOS0xOSAgQW50dGkgS29p
dmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAoUFNPTik6IFdo
aXRlIG9yIEJsYWNrIGZsYXNoIG9jY3VycyB3aGVuIHByb2Nlc3Mgc3dhcHBpbmcgb24gbmF2aWdh
dGlvbiBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4OTY2MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDQxODQ5NTU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4gYW5kIENocmlzIER1bWV6LgorCisgICAgICAgIFdlIG5l
ZWQgdG8ga2VlcCB0aGUgbGF5ZXIgdHJlZSBvZiB0aGUgcHJldmlvdXMgcGFnZSBhbGl2ZSBhbmQg
dmlzaWJsZSB1bnRpbCB3ZSBoYXZlIHNvbWV0aGluZworICAgICAgICB0byByZW5kZXIgb24gdGhl
IG5ldyBwYWdlLiBXaXRoIFBTT04gb24gTWFjIHRoaXMgbWVhbnMgdGhhdCB3ZSBzaG91bGQga2Vl
cCBkaXNwbGF5aW5nIHRoZQorICAgICAgICBsYXllciB0cmVlIGZyb20gdGhlIHByZXZpdXMgcHJv
Y2Vzcy4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBtYW5hZ2VtZW50IG9mICdhdHRh
Y2hpbmcnIHRoZSBkcmF3aW5nIGFyZWEgKE1hYyBvbmx5IGNvbmNlcHQpIGZyb20gd2ViIHByb2Nl
c3MKKyAgICAgICAgdG8gVUkgcHJvY2Vzcy4gVGhpcyBpcyB3aGVuIHdlIHBhcmVudCB0aGUgbGF5
ZXIgdHJlZSB0byB0aGUgdmlldyByb290IGxheWVyLiBJdCBhbHNvIGVuc3VyZXMgdGhhdAorICAg
ICAgICB0aGUgbGF5ZXIgdHJlZSBpcyBub3QgZGVsZXRlZCB0b28gZWFybHkgb24gcHJvY2VzcyBz
d2FwIGFuZCB0aGF0IGl0IHN0aWxsIGV2ZW50dWFsbHkgZ2V0cyBkZWxldGVkLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2lu
Z0FyZWFQcm94eTo6YXR0YWNoSW5XZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bWVzc2FnZU5hbWVzVG9JZ25v
cmVXaGlsZVN1c3BlbmRlZCk6CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6
dGVhckRvd25EcmF3aW5nQXJlYUluV2ViUHJvY2Vzcyk6CisKKyAgICAgICAgV2Ugbm8gbG9uZ2Vy
IHRlYXIgZG93biBkcmF3aW5nIGFyZWEgKGxheWVyIHRyZWUpIGZvciBzdXNwZW5kZWQgcGFnZXMg
YXV0b21hdGljYWxseS4gU2VuZCBhbiBleHBsaWNpdAorICAgICAgICBtZXNzYWdlIGZvciBpdC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9uKToKKworICAgICAgICBBdHRhY2ggdGhlIGRyYXdp
bmcgYXJlYSBpZiBhcHByb3ByaWF0ZS4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQpOgorCisgICAgICAgIENhbGwgUGFnZUNsaWVu
Ojpwcm9jZXNzV2lsbFN3YXAgaW5zdGVhZCBvZiBwcm9jZXNzRGlkRXhpdCB3aGVuIGFwcHJvcHJp
YXRlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSk6CisKKyAgICAgICAgVGhpcyBpcyBjYWxsZWQgd2hlbiB3ZSBoYXZlIHN3
aXRjaGVkIHRvIHRoZSBuZXcgbGF5ZXIgdHJlZS4KKyAgICAgICAgVGVhciBkb3duIHRoZSBkcmF3
aW5nIGFyZWEgaW4gdGhlIHByZXZpdXMgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6cHJvY2Vzc1dpbGxTd2FwKToKKworICAgICAgICBPbiBpT1MgdGhp
cyBqdXN0IGNhbGwgcHJvY2Vzc0RpZEV4aXQgZm9yIG5vdy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cHJvY2Vz
c1dpbGxTd2FwKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnByb2Nlc3NEaWRF
eGl0KToKKworICAgICAgICBBZGQgcHJvY2Vzc1dpbGxTd2FwIHNlcGFyYXRlbHkgZnJvbSBwcm9j
ZXNzRGlkRXhpdC4gVGhleSBhcmUgY3VycmVudGx5IHRoZSBzYW1lCisgICAgICAgIGV4Y2VwdCBw
cm9jZXNzV2lsbFN3YXAgZG9lc24ndCBjbGVhciB0aGUgcm9vdCBsYXllci4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5t
bToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6
YXR0YWNoSW5XZWJQcm9jZXNzKToKKworICAgICAgICBTZW5kIGEgbWVzc2FnZSB0byB0aGUgd2Vi
IHByb2Nlc3MgdG8gYXR0YWNoIHRoZSBkcmF3aW5nIGFyZWEuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6
OmF0dGFjaCk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjphdHRhY2hEcmF3aW5nQXJl
YSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVuYW1lIHRvIGJlIGxlc3MgcmVkdW5kYW50LgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cmVpbml0aWFsaXplV2ViUGFnZSk6CisKKyAgICAgICAgRG9uJ3QgYXR0YWNoIGRy
YXdpbmcgYXJlYSBhdXRvbWF0aWNhbGx5LiBJdCB3aWxsIGJlIGRvbmUgYnkgYSBtZXNzYWdlIGZy
b20gVUkgcHJvY2Vzcy4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRMYXllclRyZWVT
dGF0ZUlzRnJvemVuKToKKworICAgICAgICBMYXllciB0cmVlIGlzIGFsd2F5cyBmcm96ZW4gaW4g
YSBzdXNwZW5kZWQgcHJvY2VzcyAoaWYgaXQgZXhpc3RzKS4KKworICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOgorCisgICAgICAgIFN1c3BlbmQgaW1t
ZWRpYXRlbHkgd2hlbiByZWNlaXZpbmcgcG9saWN5IGRlY2lzaW9uIHRvIGF2b2lkIGZsYXNoIG9u
ICdhYm91dDpibGFuaycgbG9hZGluZy4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRT
dGFydFBhZ2VUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ29tcGxl
dGVQYWdlVHJhbnNpdGlvbik6CisKKyAgICAgICAgTm90aWZ5IFVJIHByb2Nlc3Mgb2YgdHJhbnNp
dGlvbiBjb21wbGV0aW9uLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldElzU3VzcGVu
ZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dGVhckRvd25EcmF3aW5nQXJlYUZvclN1
c3BlbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisKKyAgICAgICAgRG9uJ3QgYXR0YWNoIGRy
YXdpbmcgYXJlYSBhdXRvbWF0aWNhbGx5LiBJdCB3aWxsIGJlIGRvbmUgYnkgYSBtZXNzYWdlIGZy
b20gVUkgcHJvY2Vzcy4KKworICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6YXR0YWNoKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OmF0dGFjaERyYXdpbmdBcmVhKTogRGVsZXRlZC4KKwogMjAxOC0wOS0xOCAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBbGxvdyBX
ZWJDb250ZW50IHByb2Nlc3MgdG8gY2hlY2sgdGhlICJQcm90b2NvbCBDaGFyYWN0ZXJpc3RpY3Mi
IG9mIGZpbGVzIHRvIHdoaWNoIGl0IGhhcyBhY2Nlc3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgJKHJldmlzaW9uIDIzNjExMykKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODIs
NiArODIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB2aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXJG
aXJlZCgpOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoSW5XZWJQcm9jZXNzKCkg
eyB9CisKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGVidWdJbmRpY2F0b3IoKSB7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCB3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRl
Q2hhbmdlSUQpIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2
aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xODQsNiArMTg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5
ZXJIb3N0aW5nTW9kZSB2aWV3TGF5ZXJIb3N0aW5nTW9kZSgpIHsgcmV0dXJuIExheWVySG9zdGlu
Z01vZGU6OkluUHJvY2VzczsgfQogCiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRFeGl0KCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzV2lsbFN3YXAoKSB7IHByb2Nlc3NEaWRFeGl0
KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwYWdlQ2xvc2VkKCkgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzNjExMykKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU0LDYgKzU0LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8SVBDOjpTdHJpbmdSZWZl
cmVuYwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWREZXN0cm95TmF2aWdhdGlv
biIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaW5pc2hEb2N1bWVudExv
YWRGb3JGcmFtZSIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaW5pc2hQ
cm9ncmVzcyIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDb21wbGV0ZVBh
Z2VUcmFuc2l0aW9uIik7CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpcnN0
TGF5b3V0Rm9yRnJhbWUiKTsKICAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUiKTsKICAgICAgICAgbWVzc2FnZU5hbWVz
LmdldCgpLmFkZCgiRGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEiKTsKQEAgLTEwOSw2ICsx
MTAsMTEgQEAgdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRlc3Ryb3lXZWJQYWdlSQogICAgIG1f
cGFnZS5zdXNwZW5kZWRQYWdlQ2xvc2VkKCp0aGlzKTsKIH0KIAordm9pZCBTdXNwZW5kZWRQYWdl
UHJveHk6OnRlYXJEb3duRHJhd2luZ0FyZWFJbldlYlByb2Nlc3MoKQoreworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGVhckRvd25EcmF3aW5nQXJlYUZvclN1c3BlbmQo
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKK30KKwogdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZEZp
bmlzaExvYWQoKQogewogICAgIEFTU0VSVChtX3Byb2Nlc3MpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgJKHJldmlzaW9uIDIzNjExMykKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2ViUHJvY2Vzc0RpZENs
b3NlKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIHZvaWQgZGVzdHJveVdlYlBhZ2VJbldlYlByb2Nl
c3MoKTsKKyAgICB2b2lkIHRlYXJEb3duRHJhd2luZ0FyZWFJbldlYlByb2Nlc3MoKTsKIAogI2lm
ICFMT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBsb2dnaW5nU3RyaW5nKCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIz
NjExMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU2LDggKzU2LDggQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkRlY2lz
aW9uTGlzdGVuZXIuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93
bmxvYWRQcm94eS5oIgorI2luY2x1ZGUgIkRyYXdpbmdBcmVhTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJEcmF3aW5nQXJlYVByb3h5LmgiCi0jaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJGcmFt
ZUluZm9EYXRhLmgiCiAjaW5jbHVkZSAiTG9hZFBhcmFtZXRlcnMuaCIKQEAgLTM0NDUsNiArMzQ0
NSwyNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoUHJvZ3Jlc3MoKQogICAgIG1fcGFn
ZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
b21wbGV0ZVBhZ2VUcmFuc2l0aW9uKGJvb2wgaXNJbml0aWFsRW1wdHlEb2N1bWVudCkKK3sKKyAg
ICAvLyBBdHRhY2ggZHJhd2luZyBhcmVhIGZvciB0aGUgaW5pdGlhbCBlbXB0eSBkb2N1bWVudCBv
bmx5IGlmIHRoaXMgaXMgbm90IGEgcHJvY2VzcyBzd2FwLgorICAgIGlmIChpc0luaXRpYWxFbXB0
eURvY3VtZW50ICYmIG1fc3VzcGVuZGVkUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgUExB
VEZPUk0oTUFDKQorICAgIGlmICghbV9kcmF3aW5nQXJlYSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gRHJhd2luZyBhcmVhIGZvciB0aGUgc3VzcGVuZGVkIHBhZ2Ugd2lsbCBiZSB0b3JuIGRv
d24gd2hlbiB0aGUgYXR0YWNoIGNvbXBsZXRlcy4KKyAgICBtX2RyYXdpbmdBcmVhLT5hdHRhY2hJ
bldlYlByb2Nlc3MoKTsKKyNlbHNlCisgICAgaWYgKG1fc3VzcGVuZGVkUGFnZSkKKyAgICAgICAg
bV9zdXNwZW5kZWRQYWdlLT50ZWFyRG93bkRyYXdpbmdBcmVhSW5XZWJQcm9jZXNzKCk7CisjZW5k
aWYKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3Mo
Ym9vbCBuZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQogewogICAgIGF1dG8gdHJhbnNhY3Rpb24g
PSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKQEAgLTYxNjcsNyArNjE4NSwxMSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2VzCiAKICAgICBtX2VkaXRvclN0
YXRlID0gRWRpdG9yU3RhdGUoKTsKIAotICAgIHBhZ2VDbGllbnQoKS5wcm9jZXNzRGlkRXhpdCgp
OworICAgIGlmICh0ZXJtaW5hdGlvblJlYXNvbiA9PSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246
Ok5hdmlnYXRpb25Td2FwKQorICAgICAgICBwYWdlQ2xpZW50KCkucHJvY2Vzc1dpbGxTd2FwKCk7
CisgICAgZWxzZQorICAgICAgICBwYWdlQ2xpZW50KCkucHJvY2Vzc0RpZEV4aXQoKTsKKwogICAg
IHBhZ2VDbGllbnQoKS5jbGVhckFsbEVkaXRDb21tYW5kcygpOwogCiAgICAgYXV0byByZXNldFN0
YXRlUmVhc29uID0gdGVybWluYXRpb25SZWFzb24gPT0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
OjpOYXZpZ2F0aW9uU3dhcCA/IFJlc2V0U3RhdGVSZWFzb246Ok5hdmlnYXRpb25Td2FwIDogUmVz
ZXRTdGF0ZVJlYXNvbjo6V2ViUHJvY2Vzc0V4aXRlZDsKQEAgLTYzMDgsNiArNjMzMCwxMCBAQCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6CiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0
JiBsYXllclRyZWVDb250ZXh0KQogewogICAgIHBhZ2VDbGllbnQoKS5lbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKGxheWVyVHJlZUNvbnRleHQpOworCisgICAgLy8gV2UgaGF2ZSBjb21w
bGV0ZWQgdGhlIHBhZ2UgdHJhbnNpdGlvbiBhbmQgY2FuIHRlYXIgZG93biB0aGUgbGF5ZXJzIGlu
IHRoZSBzdXNwZW5kZWQgcHJvY2Vzcy4KKyAgICBpZiAobV9zdXNwZW5kZWRQYWdlKQorICAgICAg
ICBtX3N1c3BlbmRlZFBhZ2UtPnRlYXJEb3duRHJhd2luZ0FyZWFJbldlYlByb2Nlc3MoKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjM2MTEz
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MjMsNiArMTQyMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTdGFydFByb2dy
ZXNzKCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm9ncmVzcyhkb3VibGUpOwogICAgIHZvaWQgZGlk
RmluaXNoUHJvZ3Jlc3MoKTsKKyAgICB2b2lkIGRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24oYm9v
bCBpc0luaXRpYWxFbXB0eURvY3VtZW50KTsKICAgICB2b2lkIHNldE5ldHdvcmtSZXF1ZXN0c0lu
UHJvZ3Jlc3MoYm9vbCk7CiAKICAgICB2b2lkIGhhc0luc2VjdXJlQ29udGVudChXZWJDb3JlOjpI
YXNJbnNlY3VyZUNvbnRlbnQmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIzNjExMykKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtMTE3LDYgKzExNyw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkRmlu
aXNoUHJvZ3Jlc3MoKQogICAgIERpZFN0YXJ0UHJvZ3Jlc3MoKQogCisgICAgRGlkQ29tcGxldGVQ
YWdlVHJhbnNpdGlvbihib29sIGlzSW5pdGlhbEVtcHR5RG9jdW1lbnQpCisKICAgICBTZXROZXR3
b3JrUmVxdWVzdHNJblByb2dyZXNzKGJvb2wgbmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykKIAog
ICAgICMgRnJhbWUgbGlmZXRpbWUgbWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTQ2MCw5ICsxNDYwLDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvY2Vzc0RpZEV4aXQoKQogCiAg
ICAgbm90aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21wb3NpdGlvbigpOwogCi0gICAg
aWYgKG1fbGF5ZXJIb3N0aW5nVmlldykKLSAgICAgICAgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z1Jvb3RMYXllcihuaWwpOwotCiAgICAgdXBkYXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJh
dGlvbihmYWxzZSk7CiAgICAgZmx1c2hQZW5kaW5nTW91c2VFdmVudENhbGxiYWNrcygpOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aAkocmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGlzVmlld1Zpc2libGVPck9jY2x1ZGVkKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBp
c1Zpc3VhbGx5SWRsZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcHJvY2Vzc0RpZEV4aXQoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHByb2Nlc3NXaWxsU3dhcCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVsYXVuY2hQcm9jZXNzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWdlQ2xvc2VkKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZSgpIG92ZXJyaWRlOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQkocmV2
aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksNiArMjA5LDEyIEBAIHZvaWQgUGFnZUNs
aWVudEltcGw6OnByb2Nlc3NEaWRFeGl0KCkKICAgICBbbV93ZWJWaWV3IF9wcm9jZXNzRGlkRXhp
dF07CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnByb2Nlc3NXaWxsU3dhcCgpCit7CisgICAg
Ly8gRklYTUU6IEl0IGRpZG4ndCByZWFsbHkgZXhpdC4KKyAgICBwcm9jZXNzRGlkRXhpdCgpOwor
fQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZWxhdW5jaFByb2Nlc3MoKQogewogICAgIFtt
X2NvbnRlbnRWaWV3IF9kaWRSZWxhdW5jaFByb2Nlc3NdOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgJKHJldmlzaW9uIDIzNjExMykK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OSw2ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgTGF5ZXJPclZpZXcgKmFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZv
aWQgcHJvY2Vzc0RpZEV4aXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHByb2Nlc3NXaWxsU3dhcCgp
IG92ZXJyaWRlOwogICAgIHZvaWQgcGFnZUNsb3NlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVsYXVuY2hQcm9jZXNzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5n
ZSgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5tbQkocmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMs
OSArMjUzLDE2IEBAIENvbG9yU3BhY2VEYXRhIFBhZ2VDbGllbnRJbXBsOjpjb2xvclNwYWMKICAg
ICByZXR1cm4gbV9pbXBsLT5jb2xvclNwYWNlKCk7CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6
OnByb2Nlc3NXaWxsU3dhcCgpCit7CisgICAgLy8gRklYTUU6IEl0IGRpZG4ndCByZWFsbHkgZXhp
dC4KKyAgICBtX2ltcGwtPnByb2Nlc3NEaWRFeGl0KCk7Cit9CisKIHZvaWQgUGFnZUNsaWVudElt
cGw6OnByb2Nlc3NEaWRFeGl0KCkKIHsKICAgICBtX2ltcGwtPnByb2Nlc3NEaWRFeGl0KCk7Cisg
ICAgbV9pbXBsLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKG5pbCk7CiB9CiAK
IHZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQoKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWFQcm94eS5oCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw2ICszOCw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBEcmF3aW5n
QXJlYVByb3h5CisgICAgdm9pZCBhdHRhY2hJbldlYlByb2Nlc3MoKSBvdmVycmlkZTsKKwogICAg
IHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2b2lkIHNp
emVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbG9yU3BhY2VEaWRDaGFuZ2UoKSBv
dmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCShyZXZpc2lv
biAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWFQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsMTEgQEAg
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6flRpbAogICAgIG1fY2FsbGJhY2tz
LmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CiB9
CiAKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6YXR0YWNoSW5XZWJQ
cm9jZXNzKCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
RHJhd2luZ0FyZWE6OkF0dGFjaCgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Cit9CisKIHZv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6ZGV2aWNlU2NhbGVGYWN0b3JE
aWRDaGFuZ2UoKQogewogICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpEcmF3aW5nQXJlYTo6U2V0RGV2aWNlU2NhbGVGYWN0b3IobV93ZWJQYWdlUHJveHkuZGV2aWNl
U2NhbGVGYWN0b3IoKSksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAkocmV2aXNpb24gMjM2
MTEzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAko
d29ya2luZyBjb3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3Bs
YXlXYXNSZWZyZXNoZWQoKTsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGF0dGFjaERyYXdp
bmdBcmVhKCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKSB7IH07CiAKIHByb3RlY3Rl
ZDoKICAgICBEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGUsIFdlYlBhZ2UmKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDUs
NyArNDUsMTEgQEAgbWVzc2FnZXMgLT4gRHJhd2luZ0FyZWEgewogICAgIERlc3Ryb3lOYXRpdmVT
dXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcoKSAtPiAoYm9vbCBoYW5kbGVkKQogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9D
S0lORykKKyNpZiBQTEFURk9STShNQUMpCisgICAgQXR0YWNoKCkKKworI2lmIEVOQUJMRShXRUJQ
Uk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKICAgICBEaXNwbGF5V2FzUmVmcmVzaGVkKCkK
ICNlbmRpZgorI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjM2MTEzKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1Nyw3ICs2NTcs
NiBAQCB2b2lkIFdlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UoV2ViUGFnCiAgICAgICAgIG1f
ZHJhd2luZ0FyZWEtPnVwZGF0ZVByZWZlcmVuY2VzKHBhcmFtZXRlcnMuc3RvcmUpOwogICAgICAg
ICBtX2RyYXdpbmdBcmVhLT5zZXRQYWludGluZ0VuYWJsZWQodHJ1ZSk7CiAgICAgfQotICAgIG1f
ZHJhd2luZ0FyZWEtPmF0dGFjaERyYXdpbmdBcmVhKCk7CiAKICAgICBpZiAobV9hY3Rpdml0eVN0
YXRlICE9IHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSkKICAgICAgICAgc2V0QWN0aXZpdHlTdGF0
ZShwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25v
dXMsIFZlY3RvcjxDYWxsYmFja0lEPigpKTsKQEAgLTIyMTUsNyArMjIxNCw3IEBAIHZvaWQgV2Vi
UGFnZTo6c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigKICAgICBpZiAoIWRyYXdpbmdBcmVhKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBkcmF3aW5nQXJlYS0+c2V0TGF5ZXJUcmVlU3RhdGVJc0Zy
b3plbihmcm96ZW4pOworICAgIGRyYXdpbmdBcmVhLT5zZXRMYXllclRyZWVTdGF0ZUlzRnJvemVu
KGZyb3plbiB8fCBtX2lzU3VzcGVuZGVkKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpjYWxsVm9sYXRp
bGl0eUNvbXBsZXRpb25IYW5kbGVycyhib29sIHN1Y2NlZWRlZCkKQEAgLTI4MzMsNiArMjgzMiwx
MCBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1CiAgICAgV2ViRnJh
bWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOworICAgIGlmIChwb2xpY3lBY3Rpb24gPT0g
UG9saWN5QWN0aW9uOjpTdXNwZW5kKSB7CisgICAgICAgIEFTU0VSVChmcmFtZSA9PSBtX21haW5G
cmFtZSk7CisgICAgICAgIHNldElzU3VzcGVuZGVkKHRydWUpOworICAgIH0KICAgICBmcmFtZS0+
ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIHBvbGljeUFjdGlvbiwgbmF2aWdh
dGlvbklELCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQogCkBAIC0y
ODQ2LDcgKzI4NDksNyBAQCB2b2lkIFdlYlBhZ2U6OmNvbnRpbnVlV2lsbFN1Ym1pdEZvcm0odWlu
CiAKIHZvaWQgV2ViUGFnZTo6ZGlkU3RhcnRQYWdlVHJhbnNpdGlvbigpCiB7Ci0gICAgbV9kcmF3
aW5nQXJlYS0+c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbih0cnVlKTsKKyAgICBzZXRMYXllclRy
ZWVTdGF0ZUlzRnJvemVuKHRydWUpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgaGFz
UHJldmlvdXNseUZvY3VzZWREdWVUb1VzZXJJbnRlcmFjdGlvbiA9IG1faGFzRXZlckZvY3VzZWRF
bGVtZW50RHVlVG9Vc2VySW50ZXJhY3Rpb25TaW5jZVBhZ2VUcmFuc2l0aW9uOwpAQCAtMjg3MCw4
ICsyODczLDExIEBAIHZvaWQgV2ViUGFnZTo6ZGlkU3RhcnRQYWdlVHJhbnNpdGlvbigpCiAKIHZv
aWQgV2ViUGFnZTo6ZGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbigpCiB7Ci0gICAgaWYgKG1fZHJh
d2luZ0FyZWEpCi0gICAgICAgIG1fZHJhd2luZ0FyZWEtPnNldExheWVyVHJlZVN0YXRlSXNGcm96
ZW4oZmFsc2UpOworICAgIC8vIEZJWE1FOiBMYXllciB0cmVlIGZyZWV6aW5nIHNob3VsZCBiZSBt
YW5hZ2VkIGVudGlyZWx5IGluIHRoZSBVSSBwcm9jZXNzIHNpZGUuCisgICAgc2V0TGF5ZXJUcmVl
U3RhdGVJc0Zyb3plbihmYWxzZSk7CisKKyAgICBib29sIGlzSW5pdGlhbEVtcHR5RG9jdW1lbnQg
PSAhbV9tYWluRnJhbWU7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21w
bGV0ZVBhZ2VUcmFuc2l0aW9uKGlzSW5pdGlhbEVtcHR5RG9jdW1lbnQpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlOjpzaG93KCkKQEAgLTYwMDAsOCArNjAwNiwxNSBAQCB2b2lkIFdlYlBhZ2U6OnNldElz
U3VzcGVuZGVkKGJvb2wgc3VzcGVuCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNTdXNwZW5k
ZWQgPSBzdXNwZW5kZWQ7Ci0gICAgaWYgKG1faXNTdXNwZW5kZWQpCi0gICAgICAgIG1fZHJhd2lu
Z0FyZWEgPSBudWxscHRyOworCisgICAgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbih0cnVlKTsK
K30KKwordm9pZCBXZWJQYWdlOjp0ZWFyRG93bkRyYXdpbmdBcmVhRm9yU3VzcGVuZCgpCit7Cisg
ICAgaWYgKCFtX2lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9kcmF3aW5nQXJl
YSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZnJhbWVCZWNhbWVSZW1vdGUodWludDY0
X3QgZnJhbWVJRCwgR2xvYmFsRnJhbWVJZGVudGlmaWVyJiYgcmVtb3RlRnJhbWVJZGVudGlmaWVy
LCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYgcmVtb3RlV2luZG93SWRlbnRpZmllcikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIz
NjExMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQxNCw2ICsxNDE0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVybFNj
aGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3Qg
dGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZv
aWQgc2V0SXNTdXNwZW5kZWQoYm9vbCk7CisgICAgdm9pZCB0ZWFyRG93bkRyYXdpbmdBcmVhRm9y
U3VzcGVuZCgpOwogCiAgICAgUmVmUHRyPFdlYkltYWdlPiBzbmFwc2hvdEF0U2l6ZShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYml0bWFwU2l6ZSwgU25h
cHNob3RPcHRpb25zKTsKICAgICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90Tm9kZShXZWJDb3Jl
OjpOb2RlJiwgU25hcHNob3RPcHRpb25zLCB1bnNpZ25lZCBtYXhpbXVtUGl4ZWxDb3VudCA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDIzNjExMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTUwNiw2ICs1MDYsNyBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUo
dWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogCiAgICAgU2V0SXNTdXNwZW5kZWQoYm9vbCBzdXNw
ZW5kZWQpCisgICAgVGVhckRvd25EcmF3aW5nQXJlYUZvclN1c3BlbmQoKTsKIAogI2lmIEhBVkUo
Q0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQogICAgIFN0b3JhZ2VBY2Nlc3NSZXNwb25z
ZShib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCShyZXZpc2lvbiAyMzYxMTMpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoQ2FsbGJhY2tJRCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KGJvb2wpIG92ZXJyaWRlOwogCi0gICAg
dm9pZCBhdHRhY2hEcmF3aW5nQXJlYSgpIG92ZXJyaWRlOworICAgIHZvaWQgYXR0YWNoKCkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJD
b3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21taXRUcmFuc2ll
bnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRl
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQkocmV2aXNp
b24gMjM2MTEzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MSw4ICs5MSw2
IEBAIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmUKIAogICAgIHVwZGF0
ZUxheWVySG9zdGluZ0NvbnRleHQoKTsKICAgICBzZXRDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29s
b3JTcGFjZSk7Ci0KLSAgICBhdHRhY2hEcmF3aW5nQXJlYSgpOwogfQogCiBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6flRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKCkKQEAgLTEw
MSw3ICs5OSw3IEBAIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp+VGlsZWRDb3IKIH0K
IAogCi12b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphdHRhY2hEcmF3aW5nQXJl
YSgpCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphdHRhY2goKQogewogICAg
IExheWVyVHJlZUNvbnRleHQgbGF5ZXJUcmVlQ29udGV4dDsKICAgICBsYXllclRyZWVDb250ZXh0
LmNvbnRleHRJRCA9IG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+Y29udGV4dElEKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>