<?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>154939</bug_id>
          
          <creation_ts>2016-03-02 16:47:14 -0800</creation_ts>
          <short_desc>Use CredentialStorage with NetworkSession</short_desc>
          <delta_ts>2016-03-03 16:21:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1170012</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-02 16:47:14 -0800</bug_when>
    <thetext>Use CredentialStorage with NetworkSession</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170013</commentid>
    <comment_count>1</comment_count>
      <attachid>272704</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-02 16:47:31 -0800</bug_when>
    <thetext>Created attachment 272704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170014</commentid>
    <comment_count>2</comment_count>
      <attachid>272704</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-02 16:48:17 -0800</bug_when>
    <thetext>Comment on attachment 272704
Patch

First patch is (obviously) WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170037</commentid>
    <comment_count>3</comment_count>
      <attachid>272711</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-02 17:30:52 -0800</bug_when>
    <thetext>Created attachment 272711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170039</commentid>
    <comment_count>4</comment_count>
      <attachid>272712</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-02 17:33:19 -0800</bug_when>
    <thetext>Created attachment 272712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170161</commentid>
    <comment_count>5</comment_count>
      <attachid>272746</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-03 01:57:18 -0800</bug_when>
    <thetext>Created attachment 272746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170230</commentid>
    <comment_count>6</comment_count>
      <attachid>272746</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-03 09:27:15 -0800</bug_when>
    <thetext>Comment on attachment 272746
Patch

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

&gt; Source/WebCore/platform/network/CredentialStorage.h:41
&gt; +class WEBCORE_EXPORT CredentialStorage {

I’ve never seen us use this before. Is this a good pattern? Better than exporting individual functions?

&gt; Source/WebKit2/config.h:80
&gt; +// FIXME: We should work towards not using CredentialStorage in WebKit2.

Confusing comment. Would be less confusing if it said why.

Also confusing because compile-time flags don’t affect just WebKit2. They affect compilation of headers from JavaScriptCore and WebCore as well. So it’s not like we can set these flags completely independently for WebCore and WebKit2. It’s dangerous to start thinking of these flags as framework-specific, when they actually need to be set consistently for the entire suite of WebKit frameworks given how we use them in headers.

&gt; Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:93
&gt; +            ASSERT_NOT_REACHED();

What would we want to do in a release build? Is doing nothing here really OK?

&gt; Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:147
&gt; +        completionHandler(AuthenticationChallengeDisposition::UseCredential, WebCore::Credential());

I think { } is nicer than WebCore::Credential().

&gt; Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:309
&gt; +            ASSERT_NOT_REACHED();

Same question about whether this is really OK in release builds.

&gt; Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm:133
&gt; +                WebCore::Credential webCredential(credential.user(), credential.password(), WebCore::CredentialPersistenceNone);

Name here is unclear. We already have a local variable named &quot;credential&quot; of the same type. I don’t think that webCredential makes it clear what is difference about this second credential.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170292</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-03 11:34:43 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 272746 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=272746&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/CredentialStorage.h:41
&gt; &gt; +class WEBCORE_EXPORT CredentialStorage {
&gt; 
&gt; I’ve never seen us use this before. Is this a good pattern? Better than
&gt; exporting individual functions?
This exports everything in the class.  This is necessary for exporting the vtable, but in this case I&apos;m just being lazy.  I&apos;ll add export macros for exactly what I need.
&gt; 
&gt; &gt; Source/WebKit2/config.h:80
&gt; &gt; +// FIXME: We should work towards not using CredentialStorage in WebKit2.
&gt; 
&gt; Confusing comment. Would be less confusing if it said why.
&gt; 
&gt; Also confusing because compile-time flags don’t affect just WebKit2. They
&gt; affect compilation of headers from JavaScriptCore and WebCore as well. So
&gt; it’s not like we can set these flags completely independently for WebCore
&gt; and WebKit2. It’s dangerous to start thinking of these flags as
&gt; framework-specific, when they actually need to be set consistently for the
&gt; entire suite of WebKit frameworks given how we use them in headers.
This, like USE_NETWORK_SESSION, is only for WebKit2.  I&apos;ll rename it to USE_CREDENTIAL_STORAGE_WITH_NETWORK_SESSION to be more clear.
&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:93
&gt; &gt; +            ASSERT_NOT_REACHED();
&gt; 
&gt; What would we want to do in a release build? Is doing nothing here really OK?
I&apos;ll make it a RELEASE_ASSERT_NOT_REACHED.  This is one of those assertions that should never be hit because if we are doing any loading with a session, that means the session exists.
&gt; Name here is unclear. We already have a local variable named &quot;credential&quot; of
&gt; the same type. I don’t think that webCredential makes it clear what is
&gt; difference about this second credential.
Will rename.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170309</commentid>
    <comment_count>8</comment_count>
      <attachid>272771</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-03 12:53:40 -0800</bug_when>
    <thetext>Created attachment 272771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170318</commentid>
    <comment_count>9</comment_count>
      <attachid>272771</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-03 13:41:58 -0800</bug_when>
    <thetext>Comment on attachment 272771
Patch

Rejecting attachment 272771 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-02&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 500 characters of output:
es/Data/EWS/WebKit/Source/WebKit2/Shared/ChildProcess.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit2.build/Release/WebKit.build/Objects-normal/x86_64/ChildProcess.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit2.build/Release/WebKit.build/Objects-normal/x86_64/AuthenticationManager.mac.o Shared/Authentication/mac/AuthenticationManager.mac.mm normal x86_64 objective-c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: http://webkit-queues.webkit.org/results/917246</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170352</commentid>
    <comment_count>10</comment_count>
      <attachid>272784</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-03 15:55:03 -0800</bug_when>
    <thetext>Created attachment 272784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170371</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-03 16:21:47 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/197526</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272704</attachid>
            <date>2016-03-02 16:47:31 -0800</date>
            <delta_ts>2016-03-02 17:30:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154939-20160302164716.patch</filename>
            <type>text/plain</type>
            <size>21350</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzQ3OSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE2LTAzLTAyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIENyZWRl
bnRpYWxTdG9yYWdlIHdpdGggTmV0d29ya1Nlc3Npb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6cGVuZGluZ0Rvd25sb2FkTG9j
YXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Ok5ldHdvcmtMb2FkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24pOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uOjpzZXNzaW9uSUQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjphcHBseUJhc2ljQXV0aG9yaXph
dGlvbkhlYWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6TmV0d29ya0Rh
dGFUYXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjp3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6c2V0UGVu
ZGluZ0Rvd25sb2FkTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6
OnRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKHRvU3RyaW5nKToKKyAg
ICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIGluaXRXaXRoTmV0d29ya1Nlc3Npb246
XSk6CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6
ZGlkUmVjZWl2ZUNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nl
c3Npb246OmNsZWFyQ3JlZGVudGlhbHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6ZGF0YVRhc2tGb3JJZGVudGlmaWVyKToKKyAgICAgICAgKiBjb25maWcuaDoKKwogMjAxNi0w
My0wMSAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgdGhl
IG1lZGlhIGVsZW1lbnQncyBwcmVzZW50YXRpb24gbW9kZSBwcm9wZXJseSBhZnRlciBnb2luZyBp
biBhbmQgb3V0IG9mIGZ1bGwgc2NyZWVuIHZpYSB0aGUgRnVsbCBTY3JlZW4gQVBJCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9jb25m
aWcuaAkocmV2aXNpb24gMTk3NDA3KQorKysgU291cmNlL1dlYktpdDIvY29uZmlnLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAKICNkZWZpbmUgSEFWRV9XSU5ET1dfU0VSVkVSX09D
Q0xVU0lPTl9OT1RJRklDQVRJT05TIDEKICNlbmRpZgogI2lmbmRlZiBVU0VfTkVUV09SS19TRVNT
SU9OCi0jZGVmaW5lIFVTRV9ORVRXT1JLX1NFU1NJT04gMAorI2RlZmluZSBVU0VfTkVUV09SS19T
RVNTSU9OIDEKICNlbmRpZgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShyZXZpc2lvbiAxOTc0MTMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBOZXR3b3JrRGF0YVRhc2tfaAogCiAjaW5jbHVk
ZSAiU2FuZGJveEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VIYW5kbGVUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJP
cHRpb25zLmg+CkBAIC0xMjIsMTIgKzEyMywxMyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5n
JiBwZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpIHsgcmV0dXJuIG1fcGVuZGluZ0Rvd25sb2FkTG9j
YXRpb247IH0KICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY3VycmVudFJlcXVlc3QoKTsK
ICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKTsKLSAgICBib29sIHRyeVBhc3N3b3JkQmFz
ZWRBdXRoZW50aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYs
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCB0cmFu
c2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2FkJik7CiAgICAgCiBwcml2YXRl
OgogICAgIE5ldHdvcmtEYXRhVGFzayhOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0Ns
aWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzLCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7CisKKyAgICBib29sIHRyeVBhc3N3b3Jk
QmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICAKICAgICBlbnVtIEZhaWx1cmVU
eXBlIHsKICAgICAgICAgTm9GYWlsdXJlLApAQCAtMTQ1LDYgKzE0Nyw3IEBAIHByaXZhdGU6CiAg
ICAgRG93bmxvYWRJRCBtX3BlbmRpbmdEb3dubG9hZElEOwogICAgIFN0cmluZyBtX3VzZXI7CiAg
ICAgU3RyaW5nIG1fcGFzc3dvcmQ7CisgICAgV2ViQ29yZTo6Q3JlZGVudGlhbCBtX2luaXRpYWxD
cmVkZW50aWFsOwogICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzIG1fc3RvcmVkQ3JlZGVu
dGlhbHM7CiAgICAgU3RyaW5nIG1fbGFzdEhUVFBNZXRob2Q7CiAgICAgU3RyaW5nIG1fcGVuZGlu
Z0Rvd25sb2FkTG9jYXRpb247CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAxOTc0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5
LDcgQEAgTmV0d29ya0xvYWQ6Ok5ldHdvcmtMb2FkKE5ldHdvcmtMb2FkQ2xpZQogICAgICwgbV9j
dXJyZW50UmVxdWVzdChwYXJhbWV0ZXJzLnJlcXVlc3QpCiB7CiAjaWYgVVNFKE5FVFdPUktfU0VT
U0lPTikKKyAgICBXVEZMb2dBbHdheXMoIk1BS0lORyBORVRXT1JLIExPQUQgJXMiLCBwYXJhbWV0
ZXJzLnJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgaWYgKHBhcmFt
ZXRlcnMucmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJibG9iIikpIHsKICAgICAgICAgbV9oYW5k
bGUgPSBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKG51bGxwdHIsIHBhcmFtZXRlcnMucmVxdWVzdCwg
dGhpcywgcGFyYW1ldGVycy5kZWZlcnNMb2FkaW5nLCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmlu
Z1BvbGljeSA9PSBTbmlmZkNvbnRlbnQpOwogICAgICAgICByZXR1cm47CkBAIC0xOTksNiArMjAw
LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjbwogICAgIC8vIEhh
bmRsZSBzZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbiBhdCBwbGF0Zm9ybS1sZXZlbCBpZiByZXF1ZXN0
ZWQsIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgogICAgIGlmIChjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlKCkuYXV0aGVudGljYXRpb25TY2hlbWUoKSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50
aWNhdGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZAogICAgICAgICAmJiAh
TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFs
dWF0aW9uKCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2
ZUNoYWxsZW5nZSBSRUpFQ1QiKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlLCBDcmVkZW50
aWFsKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjA3LDEzICsyMDksMTYgQEAgdm9p
ZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjbwogICAgIG1fY2hhbGxlbmdlID0g
Y2hhbGxlbmdlOwogCiAgICAgaWYgKG1fY2xpZW50LmlzU3luY2hyb25vdXMoKSkgeworICAgICAg
ICBXVEZMb2dBbHdheXMoIk5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlIGNvbnRpbnVl
Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSB0cnVlIik7CiAgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgYXNrIHRoZSBXZWJQcm9jZXNzIGxpa2UgdGhlIGFzeW5jaHJvbm91
cyBjYXNlIGJlbG93IGRvZXMuCiAgICAgICAgIC8vIFRoaXMgaXMgY3VycmVudGx5IGltcG9zc2li
bGUgYXMgdGhlIFdlYlByb2Nlc3MgaXMgYmxvY2tlZCB3YWl0aW5nIG9uIHRoaXMgc3luY2hyb25v
dXMgbG9hZC4KICAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHdlIGNhbiBqdW1wIHN0cmFp
Z2h0IHRvIHRoZSBVSSBwcm9jZXNzIHRvIHJlc29sdmUgdGhpcy4KICAgICAgICAgY29udGludWVD
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHRydWUpOwogICAgICAgICByZXR1
cm47Ci0gICAgfSBlbHNlCisgICAgfSBlbHNlIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJOZXR3
b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlQXN5bmMiKTsKICAgICAgICAgbV9jbGllbnQuY2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZUFzeW5jKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7CisgICAg
fQogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lv
bihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciBjb21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkocmV2aXNpb24gMTk3NDEzKQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgTmV0d29ya1Nlc3Npb24oVHlwZSwgV2ViQ29yZTo6
U2Vzc2lvbklELCBDdXN0b21Qcm90b2NvbE1hbmFnZXIqKTsKICAgICB+TmV0d29ya1Nlc3Npb24o
KTsKIAorICAgIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSB7IHJldHVybiBtX3Nlc3Np
b25JRDsgfQogICAgIHN0YXRpYyB2b2lkIHNldEN1c3RvbVByb3RvY29sTWFuYWdlcihDdXN0b21Q
cm90b2NvbE1hbmFnZXIqKTsKICAgICBzdGF0aWMgTmV0d29ya1Nlc3Npb24mIGRlZmF1bHRTZXNz
aW9uKCk7CiAgICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCk7CkBAIC02NCw2ICs2NSw3IEBAIHB1
YmxpYzoKICAgICBEb3dubG9hZElEIHRha2VEb3dubG9hZElEKE5ldHdvcmtEYXRhVGFzazo6VGFz
a0lkZW50aWZpZXIpOwogICAgIAogcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpTZXNzaW9uSUQgbV9z
ZXNzaW9uSUQ7CiAgICAgSGFzaE1hcDxOZXR3b3JrRGF0YVRhc2s6OlRhc2tJZGVudGlmaWVyLCBO
ZXR3b3JrRGF0YVRhc2sqPiBtX2RhdGFUYXNrTWFwV2l0aENyZWRlbnRpYWxzOwogICAgIEhhc2hN
YXA8TmV0d29ya0RhdGFUYXNrOjpUYXNrSWRlbnRpZmllciwgTmV0d29ya0RhdGFUYXNrKj4gbV9k
YXRhVGFza01hcFdpdGhvdXRDcmVkZW50aWFsczsKICAgICBIYXNoTWFwPE5ldHdvcmtEYXRhVGFz
azo6VGFza0lkZW50aWZpZXIsIERvd25sb2FkSUQ+IG1fZG93bmxvYWRNYXA7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbQkocmV2aXNpb24gMTk3NDEzKQorKysgU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTMxLDExICszMSwxNCBAQAogI2ltcG9ydCAiRG93bmxvYWQuaCIKICNpbXBvcnQgIkRvd25s
b2FkUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbXBvcnQg
IlNlc3Npb25UcmFja2VyLmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNp
bXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPFdlYkNv
cmUvQ0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9iYXNlNjQuaD4KIAogQGludGVyZmFjZSBO
U1VSTFNlc3Npb25UYXNrICgpCiBAcHJvcGVydHkgKHJlYWR3cml0ZSwgY29weSkgTlNTdHJpbmcg
Kl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlOwpAQCAtNDMsNiArNDYsMTUgQEAgQGludGVyZmFjZSBO
U1VSTFNlc3Npb25UYXNrICgpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdGF0aWMgdm9pZCBh
cHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCit7CisgICAgV1RG
TG9nQWx3YXlzKCJhcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlciBDQUxMRUQiKTsKKyAgICAv
L1dURlJlcG9ydEJhY2t0cmFjZSgpOworICAgIFN0cmluZyBhdXRoZW50aWNhdGlvbkhlYWRlciA9
ICJCYXNpYyAiICsgYmFzZTY0RW5jb2RlKFN0cmluZyhjcmVkZW50aWFsLnVzZXIoKSArICI6IiAr
IGNyZWRlbnRpYWwucGFzc3dvcmQoKSkudXRmOCgpKTsKKyAgICAKKyAgICByZXF1ZXN0LnNldEhU
VFBIZWFkZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6QXV0aG9yaXphdGlvbiwgYXV0
aGVudGljYXRpb25IZWFkZXIpOworfQorCiBOZXR3b3JrRGF0YVRhc2s6Ok5ldHdvcmtEYXRhVGFz
ayhOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFscywg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMsIFdlYkNvcmU6OkNv
bnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkKICAgICA6IG1fZmFpbHVyZVRpbWVyKCp0aGlz
LCAmTmV0d29ya0RhdGFUYXNrOjpmYWlsdXJlVGltZXJGaXJlZCkKICAgICAsIG1fc2Vzc2lvbihz
ZXNzaW9uKQpAQCAtNTIsNiArNjQsNyBAQCBOZXR3b3JrRGF0YVRhc2s6Ok5ldHdvcmtEYXRhVGFz
ayhOZXR3b3JrCiAgICAgLCBtX2ZpcnN0UmVxdWVzdChyZXF1ZXN0V2l0aENyZWRlbnRpYWxzKQog
ICAgICwgbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KHNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJT
VE9SRUQgQ1JFREVOVElBTFM/ICVzIiwgc3RvcmVkQ3JlZGVudGlhbHMgPT0gV2ViQ29yZTo6QWxs
b3dTdG9yZWRDcmVkZW50aWFscyA/ICJhbGxvd2VkIiA6ICJub3QgYWxsb3dlZCIpOwogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgCiAgICAgaWYgKCFyZXF1ZXN0V2l0aENyZWRlbnRp
YWxzLnVybCgpLmlzVmFsaWQoKSkgewpAQCAtNjUsOSArNzgsMjkgQEAgTmV0d29ya0RhdGFUYXNr
OjpOZXR3b3JrRGF0YVRhc2soTmV0d29yawogICAgIH0KICAgICAKICAgICBhdXRvIHJlcXVlc3Qg
PSByZXF1ZXN0V2l0aENyZWRlbnRpYWxzOwotICAgIG1fdXNlciA9IHJlcXVlc3QudXJsKCkudXNl
cigpOwotICAgIG1fcGFzc3dvcmQgPSByZXF1ZXN0LnVybCgpLnBhc3MoKTsKLSAgICByZXF1ZXN0
LnJlbW92ZUNyZWRlbnRpYWxzKCk7CisgICAgYXV0byB1cmwgPSByZXF1ZXN0LnVybCgpOworICAg
IGlmIChzdG9yZWRDcmVkZW50aWFscyA9PSBXZWJDb3JlOjpBbGxvd1N0b3JlZENyZWRlbnRpYWxz
ICYmIHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKKyAgICAgICAgbV91c2VyID0gdXJs
LnVzZXIoKTsKKyAgICAgICAgbV9wYXNzd29yZCA9IHVybC5wYXNzKCk7CisgICAgICAgIHJlcXVl
c3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKKyAgICAgICAgdXJsID0gcmVxdWVzdC51cmwoKTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6
OnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbi5zZXNzaW9uSUQoKSkpIHsKKyAgICAgICAgICAgIGlm
IChtX3VzZXIuaXNFbXB0eSgpICYmIG1fcGFzc3dvcmQuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICAgICAgbV9pbml0aWFsQ3JlZGVudGlhbCA9IHN0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3Rv
cmFnZSgpLmdldCh1cmwpOworICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiU0VUVElORyBJ
TklUSUFMIENSRURFTlRJQUwgJXAgKCVzKSAoJXMpICglcykiLCBzdG9yYWdlU2Vzc2lvbiwgbV9p
bml0aWFsQ3JlZGVudGlhbC51c2VyKCkudXRmOCgpLmRhdGEoKSwgbV9pbml0aWFsQ3JlZGVudGlh
bC5wYXNzd29yZCgpLnV0ZjgoKS5kYXRhKCksIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJTRVRU
SU5HIENSRURFTlRJQUwgSU4gQ1JFREVOVElBTCBTVE9SQUdFICVwICglcykgKCVzKSAoJXMpIiwg
c3RvcmFnZVNlc3Npb24sIG1fdXNlci51dGY4KCkuZGF0YSgpLCBtX3Bhc3N3b3JkLnV0ZjgoKS5k
YXRhKCksIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBzdG9y
YWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQoV2ViQ29yZTo6Q3JlZGVudGlhbCht
X3VzZXIsIG1fcGFzc3dvcmQsIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpLCB1
cmwpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIGlmICghbV9pbml0aWFsQ3JlZGVudGlhbC5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRGlnZXN0IGF1dGhlbnRpY2F0aW9u
LCBhbmQgUHJveHktQXV0aG9yaXphdGlvbi4KKyAgICAgICAgYXBwbHlCYXNpY0F1dGhvcml6YXRp
b25IZWFkZXIocmVxdWVzdCwgbV9pbml0aWFsQ3JlZGVudGlhbCk7CisgICAgfQogICAgIAogICAg
IE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6
VXBkYXRlSFRUUEJvZHkpOwogICAgIGlmIChzaG91bGRDb250ZW50U25pZmYgPT0gV2ViQ29yZTo6
RG9Ob3RTbmlmZkNvbnRlbnQpIHsKQEAgLTEwOSw2ICsxNDIsMTQgQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2s6OmRpZFNlbmREYXRhKHVpbnQ2NAogCiB2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVj
ZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hh
bGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKIHsK
KyAgICBpZiAoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmlzUHJveHkoKSkgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpV
c2VDcmVkZW50aWFsLCBXZWJDb3JlOjpDcmVkZW50aWFsKCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKHRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjaGFsbGVuZ2Us
IGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fY2xpZW50
KQogICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2UsIGNvbXBs
ZXRpb25IYW5kbGVyKTsKIH0KQEAgLTE2NSw2ICsyMDYsMjMgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2s6OndpbGxQZXJmb3JtSFRUUFJlZAogICAgICAgICAvLyB3ZSB3YW50IHRvIHN0cmlwIGhlcmUg
YmVjYXVzZSB0aGUgcmVkaXJlY3QgaXMgY3Jvc3Mtb3JpZ2luLgogICAgICAgICByZXF1ZXN0LmNs
ZWFySFRUUEF1dGhvcml6YXRpb24oKTsKICAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBPcmlnaW4o
KTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBPbmx5IGNvbnNpZGVyIGFwcGx5aW5nIGF1dGhl
bnRpY2F0aW9uIGNyZWRlbnRpYWxzIGlmIHRoaXMgaXMgYWN0dWFsbHkgYSByZWRpcmVjdCBhbmQg
dGhlIHJlZGlyZWN0CisgICAgICAgIC8vIFVSTCBkaWRuJ3QgaW5jbHVkZSBjcmVkZW50aWFscyBv
ZiBpdHMgb3duLgorICAgICAgICBpZiAobV91c2VyLmlzRW1wdHkoKSAmJiBtX3Bhc3N3b3JkLmlz
RW1wdHkoKSAmJiAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkgeworICAgICAgICAgICAgaWYg
KGF1dG8gc3RvcmFnZVNlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6c3RvcmFnZVNlc3Npb24obV9z
ZXNzaW9uLnNlc3Npb25JRCgpKSkgeworICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiR0VU
VElORyBDUkVERU5USUFMIEZST00gU1RPUkFHRSAoJXMpIiwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGNyZWRlbnRpYWwgPSBzdG9y
YWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocmVxdWVzdC51cmwoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKCFjcmVkZW50aWFsLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAg
ICAgICBXVEZMb2dBbHdheXMoIlNFVFRJTkcgSVQgVE8gSU5JVElBTCBDUkVERU5USUFMIik7Cisg
ICAgICAgICAgICAgICAgICAgIG1faW5pdGlhbENyZWRlbnRpYWwgPSBjcmVkZW50aWFsOworICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQg
RGlnZXN0IGF1dGhlbnRpY2F0aW9uLCBhbmQgUHJveHktQXV0aG9yaXphdGlvbi4KKyAgICAgICAg
ICAgICAgICAgICAgYXBwbHlCYXNpY0F1dGhvcml6YXRpb25IZWFkZXIocmVxdWVzdCwgbV9pbml0
aWFsQ3JlZGVudGlhbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KICAgICB9CiAg
ICAgCiAgICAgaWYgKG1fY2xpZW50KQpAQCAtMjEwLDIxICsyNjgsNTkgQEAgdm9pZCBOZXR3b3Jr
RGF0YVRhc2s6OnNldFBlbmRpbmdEb3dubG9hZAogICAgIG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRp
b24gPSBmaWxlbmFtZTsKICAgICBtX3Rhc2suZ2V0KCkuX3BhdGhUb0Rvd25sb2FkVGFza0ZpbGUg
PSBmaWxlbmFtZTsKIH0KLQorICAgIAogYm9vbCBOZXR3b3JrRGF0YVRhc2s6OnRyeVBhc3N3b3Jk
QmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBpZiAoIWNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5pc1Bhc3N3b3JkQmFz
ZWQoKSkKKyAgICBXVEZMb2dBbHdheXMoInRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbiBj
YWxsZWQiKTsKKyAgICBpZiAoIWNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5pc1Bhc3N3b3Jk
QmFzZWQoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIk5PVCBQQVNTV09SRCBCQVNFRCIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIAogICAgIGlmICghbV91c2VyLmlzTnVs
bCgpICYmICFtX3Bhc3N3b3JkLmlzTnVsbCgpKSB7Ci0gICAgICAgIGF1dG8gcGVyc2lzdGVuY2Ug
PSBtX3N0b3JlZENyZWRlbnRpYWxzID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpBbGxv
d1N0b3JlZENyZWRlbnRpYWxzID8gV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vz
c2lvbiA6IFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmU7Ci0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRl
bnRpYWwsIFdlYkNvcmU6OkNyZWRlbnRpYWwobV91c2VyLCBtX3Bhc3N3b3JkLCBwZXJzaXN0ZW5j
ZSkpOwotICAgICAgICBtX3VzZXIgPSBTdHJpbmcoKTsKLSAgICAgICAgbV9wYXNzd29yZCA9IFN0
cmluZygpOworICAgICAgICBXVEZMb2dBbHdheXMoIlVTSU5HIG1fdXNlciBhbmQgbV9wYXNzd29y
ZCIpOworICAgICAgICBpZiAoYXV0byBzdG9yYWdlU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpz
dG9yYWdlU2Vzc2lvbihtX3Nlc3Npb24uc2Vzc2lvbklEKCkpKSB7CisgICAgICAgICAgICBXZWJD
b3JlOjpDcmVkZW50aWFsIHdlYkNyZWRlbnRpYWwobV91c2VyLCBtX3Bhc3N3b3JkLCBXZWJDb3Jl
OjpDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKKyAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9u
LT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldCh3ZWJDcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVj
dGlvblNwYWNlKCksIGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKSk7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpVc2VDcmVkZW50aWFsLCB3ZWJDcmVkZW50aWFsKTsKKyAgICAgICAgICAgIG1fdXNlciA9IFN0
cmluZygpOworICAgICAgICAgICAgbV9wYXNzd29yZCA9IFN0cmluZygpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CisKKyAgICBpZiAobV9zdG9yZWRDcmVkZW50aWFscyA9PSBXZWJDb3JlOjpBbGxv
d1N0b3JlZENyZWRlbnRpYWxzKSB7CisgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VTZXNzaW9uID0g
U2Vzc2lvblRyYWNrZXI6OnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbi5zZXNzaW9uSUQoKSkpIHsK
KyAgICAgICAgICAgIGlmICghbV9pbml0aWFsQ3JlZGVudGlhbC5pc0VtcHR5KCkgfHwgY2hhbGxl
bmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCkpIHsKKyAgICAgICAgICAgICAgICBXVEZMb2dBbHdh
eXMoIlJFTU9WSU5HIEZST00gQ1JFREVOVElBTCBTVE9SQUdFIik7CisgICAgICAgICAgICAgICAg
Ly8gVGhlIHN0b3JlZCBjcmVkZW50aWFsIHdhc24ndCBhY2NlcHRlZCwgc3RvcCB1c2luZyBpdC4K
KyAgICAgICAgICAgICAgICAvLyBUaGVyZSBpcyBhIHJhY2UgY29uZGl0aW9uIGhlcmUsIHNpbmNl
IGEgZGlmZmVyZW50IGNyZWRlbnRpYWwgbWlnaHQgaGF2ZSBhbHJlYWR5IGJlZW4gc3RvcmVkIGJ5
IGFub3RoZXIgUmVzb3VyY2VIYW5kbGUsCisgICAgICAgICAgICAgICAgLy8gYnV0IHRoZSBvYnNl
cnZhYmxlIGVmZmVjdCBzaG91bGQgYmUgdmVyeSBtaW5vciwgaWYgYW55LgorICAgICAgICAgICAg
ICAgIHN0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLnJlbW92ZShjaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiAoIWNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpKSB7CisgICAgICAgICAg
ICAgICAgV1RGTG9nQWx3YXlzKCJOTyBQUkVWSU9VUyBGQUlMVVJFIENPVU5UMSIpOworICAgICAg
ICAgICAgICAgIGF1dG8gY3JlZGVudGlhbCA9IHN0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3Rv
cmFnZSgpLmdldChjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgICAgICAgICAgICAg
IGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkgJiYgY3JlZGVudGlhbCAhPSBtX2luaXRpYWxDcmVk
ZW50aWFsKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjcmVkZW50aWFsLnBlcnNpc3Rl
bmNlKCkgPT0gV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUo
KSA9PSA0MDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiNDAxIik7
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUgY3JlZGVudGlhbCBiYWNrLCBw
b3NzaWJseSBhZGRpbmcgaXQgYXMgYSBkZWZhdWx0IGZvciB0aGlzIGRpcmVjdG9yeS4KKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNl
dChjcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIGNoYWxsZW5nZS5mYWls
dXJlUmVzcG9uc2UoKS51cmwoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJVU0lORyBDUkVERU5USUFMMiIpOworICAgICAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0
aW9uOjpVc2VDcmVkZW50aWFsLCBjcmVkZW50aWFsKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KICAgICAKICAgICBp
ZiAoIWNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKS5pc0VtcHR5KCkgJiYgIWNoYWxsZW5n
ZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiTk8gUFJF
VklPVVMgRkFJTFVSRSBDT1VOVDIiKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgY2hhbGxlbmdlLnBy
b3Bvc2VkQ3JlZGVudGlhbCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAxOTc0MTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC04Myw2ICs4MywyMCBAQCAtIChpZClpbml0V2l0aE5ldHdvcmtTZXNzaW9uOihXZWJLaXQ6
Ok5lCiAKIEBlbmQKIAorc3RhdGljIGNvbnN0IGNoYXIqIHRvU3RyaW5nKFdlYkNvcmU6OkNyZWRl
bnRpYWxQZXJzaXN0ZW5jZSBwKQoreworICAgIHN3aXRjaChwKQorICAgIHsKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lOgorICAgICAgICAgICAgcmV0dXJu
ICJub25lIjsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2VQZXJt
YW5lbnQ6CisgICAgICAgICAgICByZXR1cm4gInBlcm1hbmVudCI7CisgICAgICAgIGNhc2UgV2Vi
Q29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbjoKKyAgICAgICAgICAgIHJldHVy
biAic2Vzc2lvbiI7CisgICAgfQorICAgIHJldHVybiAidW5rbm93biA9IEVSUk9SIjsKK30KKwog
QGltcGxlbWVudGF0aW9uIFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZQogCiAtIChpZClpbml0V2l0
aE5ldHdvcmtTZXNzaW9uOihXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uJilzZXNzaW9uCkBAIC0xMTks
MTcgKzEzMywyOCBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiB7
CiAgICAgYXV0byBzdG9yZWRDcmVkZW50aWFscyA9IHNlc3Npb24uY29uZmlndXJhdGlvbi5VUkxD
cmVkZW50aWFsU3RvcmFnZSA/IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpBbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkRvTm90QWxsb3dTdG9y
ZWRDcmVkZW50aWFsczsKICAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gX3Nlc3Npb24t
PmRhdGFUYXNrRm9ySWRlbnRpZmllcih0YXNrLnRhc2tJZGVudGlmaWVyLCBzdG9yZWRDcmVkZW50
aWFscykpIHsKKyAgICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKTsKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFu
ZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgYXV0byBj
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlckNvcHldKFdlYktp
dDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3Qg
V2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKKyAgICAgICAgYXV0byBzZXNzaW9uSUQg
PSBfc2Vzc2lvbi0+c2Vzc2lvbklEKCk7CisgICAgICAgIGF1dG8gY2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXJDb3B5LCBzZXNzaW9uSUQsIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlXShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24g
ZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weSh0b05TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlvbiksIGNyZWRlbnRpYWwubnNDcmVkZW50
aWFsKCkpOworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJDQUxMSU5HIENIQUxMRU5HRSBDT01Q
TEVUSU9OIEhBTkRMRVIgKCVzKSwgKCVzKSwgJXMiLCBjcmVkZW50aWFsLnVzZXIoKS51dGY4KCku
ZGF0YSgpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCkudXRmOCgpLmRhdGEoKSwgdG9TdHJpbmcoY3Jl
ZGVudGlhbC5wZXJzaXN0ZW5jZSgpKSk7CisgICAgICAgICAgICBpZiAoY3JlZGVudGlhbC5wZXJz
aXN0ZW5jZSgpID09IFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb24gJiYg
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuYXV0aGVudGljYXRpb25T
Y2hlbWUoKSAhPSBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVNl
cnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZCkgeworCisgICAgICAgICAgICAgICAgV2ViQ29y
ZTo6Q3JlZGVudGlhbCB3ZWJDcmVkZW50aWFsKGNyZWRlbnRpYWwudXNlcigpLCBjcmVkZW50aWFs
LnBhc3N3b3JkKCksIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOworICAgICAg
ICAgICAgICAgIFdlYkNvcmU6OlVSTCB1cmxUb1N0b3JlOworICAgICAgICAgICAgICAgIGlmIChh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgp
ID09IDQwMSkKKyAgICAgICAgICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOworICAgICAgICAgICAgICAgIGlmIChh
dXRvIHN0b3JhZ2VTZXNzaW9uID0gV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6c3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNyZWRl
bnRpYWxTdG9yYWdlKCkuc2V0KHdlYkNyZWRlbnRpYWwsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZSgpLCB1cmxUb1N0b3JlKTsKKworICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyQ29weSh0b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihk
aXNwb3NpdGlvbiksIHdlYkNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpOworICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KHRvTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwgY3JlZGVudGlhbC5uc0Ny
ZWRlbnRpYWwoKSk7CiAgICAgICAgICAgICBCbG9ja19yZWxlYXNlKGNvbXBsZXRpb25IYW5kbGVy
Q29weSk7CiAgICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICBpZiAobmV0d29ya0RhdGFUYXNr
LT50cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY2hhbGxlbmdlLCBjaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlcikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBu
ZXR3b3JrRGF0YVRhc2stPmRpZFJlY2VpdmVDaGFsbGVuZ2UoY2hhbGxlbmdlLCBjaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlcik7CisKKyAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZl
Q2hhbGxlbmdlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlcik7CiAgICAgfQogfQogCkBAIC0yNDMsNiArMjY4LDcgQEAgTmV0d29ya1Nlc3Npb24mIE5l
dHdvcmtTZXNzaW9uOjpkZWZhdWx0UwogfQogCiBOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Np
b24oVHlwZSB0eXBlLCBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDdXN0b21Qcm90b2Nv
bE1hbmFnZXIqIGN1c3RvbVByb3RvY29sTWFuYWdlcikKKyAgICA6IG1fc2Vzc2lvbklEKHNlc3Np
b25JRCkKIHsKICAgICBtX3Nlc3Npb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS05ldHdvcmtTZXNz
aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoTmV0d29ya1Nlc3Npb246KnRoaXNdKTsKIApAQCAt
Mjc0LDEwICszMDAsMTAgQEAgTmV0d29ya1Nlc3Npb246On5OZXR3b3JrU2Vzc2lvbigpCiAKIHZv
aWQgTmV0d29ya1Nlc3Npb246OmNsZWFyQ3JlZGVudGlhbHMoKQogewotICAgIEFTU0VSVChtX2Rh
dGFUYXNrTWFwV2l0aENyZWRlbnRpYWxzLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKG1fZGF0YVRh
c2tNYXBXaXRob3V0Q3JlZGVudGlhbHMuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQobV9kb3dubG9h
ZE1hcC5pc0VtcHR5KCkpOwotICAgIG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZSA9IFtO
U1VSTFNlc3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9uOm1fc2Vzc2lvbldpdGhDcmVkZW50
aWFsU3RvcmFnZS5nZXQoKS5jb25maWd1cmF0aW9uIGRlbGVnYXRlOnN0YXRpY19jYXN0PGlkPiht
X3Nlc3Npb25EZWxlZ2F0ZS5nZXQoKSkgZGVsZWdhdGVRdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBt
YWluUXVldWVdXTsKKyAgICAvL0FTU0VSVChtX2RhdGFUYXNrTWFwV2l0aENyZWRlbnRpYWxzLmlz
RW1wdHkoKSk7CisgICAgLy9BU1NFUlQobV9kYXRhVGFza01hcFdpdGhvdXRDcmVkZW50aWFscy5p
c0VtcHR5KCkpOworICAgIC8vQVNTRVJUKG1fZG93bmxvYWRNYXAuaXNFbXB0eSgpKTsKKyAgICAv
L21fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZSA9IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldp
dGhDb25maWd1cmF0aW9uOm1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5nZXQoKS5jb25m
aWd1cmF0aW9uIGRlbGVnYXRlOnN0YXRpY19jYXN0PGlkPihtX3Nlc3Npb25EZWxlZ2F0ZS5nZXQo
KSkgZGVsZWdhdGVRdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBtYWluUXVldWVdXTsKIH0KIAogTmV0
d29ya0RhdGFUYXNrKiBOZXR3b3JrU2Vzc2lvbjo6ZGF0YVRhc2tGb3JJZGVudGlmaWVyKE5ldHdv
cmtEYXRhVGFzazo6VGFza0lkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272711</attachid>
            <date>2016-03-02 17:30:52 -0800</date>
            <delta_ts>2016-03-02 17:33:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154939-20160302173037.patch</filename>
            <type>text/plain</type>
            <size>21727</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzQ3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTAzLTAyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIENyZWRl
bnRpYWxTdG9yYWdlIHdpdGggTmV0d29ya1Nlc3Npb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgbWFrZXMgdGhlIGNyZWRlbnRpYWwtYmFzZWQg
aHR0cCB0ZXN0cyBwYXNzIHdoZW4gdXNpbmcgTmV0d29ya1Nlc3Npb24uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDcmVk
ZW50aWFsQmFzZTo6ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICBXRUJDT1JFX0VYUE9S
VCBtb3JlIHRoaW5ncyB0aGF0IGFyZSBuZXdseSB1c2VkIGluIFdlYktpdDIuCisKIDIwMTYtMDMt
MDEgIEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHRoZSBt
ZWRpYSBlbGVtZW50J3MgcHJlc2VudGF0aW9uIG1vZGUgcHJvcGVybHkgYWZ0ZXIgZ29pbmcgaW4g
YW5kIG91dCBvZiBmdWxsIHNjcmVlbiB2aWEgdGhlIEZ1bGwgU2NyZWVuIEFQSQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuaAkocmV2
aXNpb24gMTk3NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAKLSAgICBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBD
cmVkZW50aWFsJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgY29tcGFyZShjb25z
dCBDcmVkZW50aWFsJiwgY29uc3QgQ3JlZGVudGlhbCYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VC
Q09SRV9FWFBPUlQgQ3JlZGVudGlhbEJhc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgJKHJldmlzaW9uIDE5NzQw
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTkgKzM4LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFVSTDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIAotY2xhc3MgQ3JlZGVudGlhbFN0
b3JhZ2UgeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgQ3JlZGVudGlhbFN0b3JhZ2UgewogcHVibGlj
OgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDcmVkZW50aWFsU3RvcmFnZSYgZGVmYXVsdENy
ZWRlbnRpYWxTdG9yYWdlKCk7CisgICAgc3RhdGljIENyZWRlbnRpYWxTdG9yYWdlJiBkZWZhdWx0
Q3JlZGVudGlhbFN0b3JhZ2UoKTsKIAogICAgIC8vIFdlYkNvcmUgc2Vzc2lvbiBjcmVkZW50aWFs
IHN0b3JhZ2UuCiAgICAgdm9pZCBzZXQoY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IFByb3RlY3Rp
b25TcGFjZSYsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIENyZWRlbnRpYWwgZ2V0
KGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOworICAgIENyZWRlbnRpYWwgZ2V0KGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYpOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwog
CiAgICAgLy8gT1MgcGVyc2lzdGVudCBzdG9yYWdlLgotICAgIFdFQkNPUkVfRVhQT1JUIENyZWRl
bnRpYWwgZ2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwor
ICAgIENyZWRlbnRpYWwgZ2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCk7Cisg
ICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCk7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgdm9p
ZCBzYXZlVG9QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBD
cmVkZW50aWFsJik7CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGVzZSBtZXRo
b2RzIHdvcmsgZm9yIGF1dGhlbnRpY2F0aW9uIHNjaGVtZXMgdGhhdCBzdXBwb3J0IHNlbmRpbmcg
Y3JlZGVudGlhbHMgd2l0aG91dCB3YWl0aW5nIGZvciBhIHJlcXVlc3QuIEUuZy4sIGZvciBIVFRQ
IEJhc2ljIGF1dGhlbnRpY2F0aW9uIHNjaGVtZQogICAgIC8vIGEgY2xpZW50IHNob3VsZCBhc3N1
bWUgdGhhdCBhbGwgcGF0aHMgYXQgb3IgZGVlcGVyIHRoYW4gdGhlIGRlcHRoIG9mIGEga25vd24g
cHJvdGVjdGVkIHJlc291cmNlIHNoYXJlIGFyZSB3aXRoaW4gdGhlIHNhbWUgcHJvdGVjdGlvbiBz
cGFjZS4KICAgICBib29sIHNldChjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgVVJMJik7IC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgVVJMIGNvcnJlc3BvbmRzIHRvIGEga25vd24gcHJvdGVjdGlvbiBz
cGFjZSwgc28gY3JlZGVudGlhbHMgY291bGQgYmUgdXBkYXRlZC4KLSAgICBXRUJDT1JFX0VYUE9S
VCBDcmVkZW50aWFsIGdldChjb25zdCBVUkwmKTsKKyAgICBDcmVkZW50aWFsIGdldChjb25zdCBV
UkwmKTsKIAogcHJpdmF0ZToKICAgICBIYXNoTWFwPFByb3RlY3Rpb25TcGFjZSwgQ3JlZGVudGlh
bD4gbV9wcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXA7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxOTc0NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw1MSBAQAorMjAxNi0wMy0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBDcmVkZW50aWFsU3RvcmFnZSB3aXRoIE5l
dHdvcmtTZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTQ5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2s6OnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uOjpzZXNzaW9uSUQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjphcHBseUJhc2ljQXV0aG9yaXph
dGlvbkhlYWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6TmV0d29ya0Rh
dGFUYXNrKToKKyAgICAgICAgVXNlIGEgY3JlZGVudGlhbCBzdG9yYWdlIGFuZCBwcmVlbXB0aXZl
bHkgYXBwbHkgYmFzaWMgYXV0aGVudGljYXRpb24gaGVhZGVycyBpZiB3ZSBoYXZlIGNyZWRlbnRp
YWxzIGZyb20gdGhlIHN0b3JhZ2UuCisgICAgICAgIFRoaXMgaXMgYW5hbG9nb3VzIHRvIGNvZGUg
aW4gUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbi4KKyAgICAgICAgCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6CisgICAg
ICAgIE1ha2UgdGhpcyBsb29rIG1vcmUgbGlrZSBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLgorICAgICAgICBUaGUgY2FsbCB0byB0cnlQYXNzd29yZEJh
c2VkQXV0aGVudGljYXRpb24gd2FzIG1vdmVkIGZyb20gdGhlIGRlbGVnYXRlIGNhbGxiYWNrIHRv
IGhlcmUuCisgICAgICAgIAorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OndpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgVXNlIGNyZWRlbnRpYWxzIGZyb20gdGhl
IGNyZWRlbnRpYWwgc3RvcmFnZSBpZiB0aGV5IGV4aXN0LiAgVGhpcyBpcyBhbmFsb2dvdXMgdG8g
Y29kZSBpbiBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0LgorICAgICAgICAKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjp0cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRp
b24pOgorICAgICAgICBVc2UgY3JlZGVudGlhbHMgZnJvbSB0aGUgY3JlZGVudGlhbCBzdG9yYWdl
IGlmIHRoZXkgZXhpc3QuICBUaGlzIGlzIGFuYWxvZ291cyB0byBjb2RlIGluIFJlc291cmNlSGFu
ZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24uCisgICAgICAgIAorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAg
ICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2
ZUNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgSWYgd2UgYXJlIGdpdmVu
IGEgY3JlZGVudGlhbCB3aXRoIENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb24sIHB1dCBp
dCBpbiB0aGUgY3JlZGVudGlhbCBzdG9yYWdlIGFuZCBnaXZlIAorICAgICAgICBDRk5ldHdvcmsg
YSBjcmVkZW50aWFsIHdpdGggQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSBzbyBpdCB3b24ndCBh
dXRvbWF0aWNhbGx5IGJlIHVzZWQgYWdhaW4gdW50aWwgdGhlIGNyZWRlbnRpYWwKKyAgICAgICAg
c3RvcmFnZSBzYXlzIGl0cyBvayB0byB1c2UgYWdhaW4uICBUaGlzIGdpdmVzIHVzIHRoZSBhYmls
aXR5IHRvIGNsZWFyIHNlc3Npb24gY3JlZGVudGlhbHMgd2hlbiBsb2dvdXQgY3JlZGVudGlhbHMg
YXJlIHVzZWQuCisgICAgICAgIFRoaXMgaXMgYW5hbG9nb3VzIHRvIGNvZGUgaW4gUmVzb3VyY2VI
YW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbC4KKyAgICAgICAgCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
Ojp+TmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZGF0
YVRhc2tGb3JJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmNs
ZWFyQ3JlZGVudGlhbHMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNsZWFyQ2FjaGVkQ3JlZGVudGlh
bHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpmb2N1c2VkV2ViUGFnZSk6CisgICAg
ICAgIFdlIG5vIGxvbmdlciBuZWVkIHRvIGNsZWFyIGNyZWRlbnRpYWxzIGZyb20gdGhlIE5TVVJM
U2Vzc2lvbnMgYmVjYXVzZSB3ZSBkb24ndCBzdG9yZSBzZXNzaW9uIGNyZWRlbnRpYWxzIGluIHRo
ZW0uCisgICAgICAgIEluc3RlYWQsIGNhbGxpbmcgQ3JlZGVudGlhbFN0b3JhZ2UuY2xlYXJDcmVk
ZW50aWFscyBpcyBzdWZmaWNpZW50LgorCiAyMDE2LTAzLTAxICBBZGEgQ2hhbiAgPGFkYWNoYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSB0aGUgbWVkaWEgZWxlbWVudCdzIHByZXNlbnRh
dGlvbiBtb2RlIHByb3Blcmx5IGFmdGVyIGdvaW5nIGluIGFuZCBvdXQgb2YgZnVsbCBzY3JlZW4g
dmlhIHRoZSBGdWxsIFNjcmVlbiBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShyZXZpc2lvbiAxOTc0MTMpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBOZXR3b3JrRGF0YVRhc2tfaAogCiAjaW5jbHVkZSAi
U2FuZGJveEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VIYW5kbGVUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJPcHRp
b25zLmg+CkBAIC0xMjIsMTIgKzEyMywxMyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBw
ZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpIHsgcmV0dXJuIG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRp
b247IH0KICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY3VycmVudFJlcXVlc3QoKTsKICAg
ICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKTsKLSAgICBib29sIHRyeVBhc3N3b3JkQmFzZWRB
dXRoZW50aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCB0cmFuc2Zl
clNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2FkJik7CiAgICAgCiBwcml2YXRlOgog
ICAgIE5ldHdvcmtEYXRhVGFzayhOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVu
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzLCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7CisKKyAgICBib29sIHRyeVBhc3N3b3JkQmFz
ZWRBdXRoZW50aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYs
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICAKICAgICBlbnVtIEZhaWx1cmVUeXBl
IHsKICAgICAgICAgTm9GYWlsdXJlLApAQCAtMTQ1LDYgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAg
RG93bmxvYWRJRCBtX3BlbmRpbmdEb3dubG9hZElEOwogICAgIFN0cmluZyBtX3VzZXI7CiAgICAg
U3RyaW5nIG1fcGFzc3dvcmQ7CisgICAgV2ViQ29yZTo6Q3JlZGVudGlhbCBtX2luaXRpYWxDcmVk
ZW50aWFsOwogICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzIG1fc3RvcmVkQ3JlZGVudGlh
bHM7CiAgICAgU3RyaW5nIG1fbGFzdEhUVFBNZXRob2Q7CiAgICAgU3RyaW5nIG1fcGVuZGluZ0Rv
d25sb2FkTG9jYXRpb247CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAxOTc0MDcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
Myw5ICsyNzMsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKCkKIHsKICAgICBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9y
YWdlKCkuY2xlYXJDcmVkZW50aWFscygpOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAg
TmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2xlYXJDcmVkZW50aWFscygpOwotI2Vu
ZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oU2Vzc2lvbklEIHNlc3Npb25JRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkocmV2aXNpb24gMTk3NDEzKQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NTMsOSArNTMsOSBAQCBwdWJsaWM6CiAgICAgTmV0d29ya1Nlc3Npb24oVHlwZSwgV2ViQ29yZTo6
U2Vzc2lvbklELCBDdXN0b21Qcm90b2NvbE1hbmFnZXIqKTsKICAgICB+TmV0d29ya1Nlc3Npb24o
KTsKIAorICAgIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSB7IHJldHVybiBtX3Nlc3Np
b25JRDsgfQogICAgIHN0YXRpYyB2b2lkIHNldEN1c3RvbVByb3RvY29sTWFuYWdlcihDdXN0b21Q
cm90b2NvbE1hbmFnZXIqKTsKICAgICBzdGF0aWMgTmV0d29ya1Nlc3Npb24mIGRlZmF1bHRTZXNz
aW9uKCk7Ci0gICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCk7CiAKICAgICBOZXR3b3JrRGF0YVRh
c2sqIGRhdGFUYXNrRm9ySWRlbnRpZmllcihOZXR3b3JrRGF0YVRhc2s6OlRhc2tJZGVudGlmaWVy
LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFscyk7CiAKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGlj
OgogICAgIERvd25sb2FkSUQgdGFrZURvd25sb2FkSUQoTmV0d29ya0RhdGFUYXNrOjpUYXNrSWRl
bnRpZmllcik7CiAgICAgCiBwcml2YXRlOgorICAgIFdlYkNvcmU6OlNlc3Npb25JRCBtX3Nlc3Np
b25JRDsKICAgICBIYXNoTWFwPE5ldHdvcmtEYXRhVGFzazo6VGFza0lkZW50aWZpZXIsIE5ldHdv
cmtEYXRhVGFzayo+IG1fZGF0YVRhc2tNYXBXaXRoQ3JlZGVudGlhbHM7CiAgICAgSGFzaE1hcDxO
ZXR3b3JrRGF0YVRhc2s6OlRhc2tJZGVudGlmaWVyLCBOZXR3b3JrRGF0YVRhc2sqPiBtX2RhdGFU
YXNrTWFwV2l0aG91dENyZWRlbnRpYWxzOwogICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrOjpU
YXNrSWRlbnRpZmllciwgRG93bmxvYWRJRD4gbV9kb3dubG9hZE1hcDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tCShyZXZpc2lvbiAxOTc0MTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTEgKzMxLDE0IEBACiAjaW1wb3J0ICJEb3dubG9hZC5oIgogI2ltcG9ydCAiRG93bmxvYWRQ
cm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgorI2ltcG9ydCAiU2Vz
c2lvblRyYWNrZXIuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9y
dCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9D
Rk5ldHdvcmtTUEkuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L2Jhc2U2NC5oPgogCiBAaW50ZXJmYWNlIE5TVVJM
U2Vzc2lvblRhc2sgKCkKIEBwcm9wZXJ0eSAocmVhZHdyaXRlLCBjb3B5KSBOU1N0cmluZyAqX3Bh
dGhUb0Rvd25sb2FkVGFza0ZpbGU7CkBAIC00Myw2ICs0NiwxMiBAQCBAaW50ZXJmYWNlIE5TVVJM
U2Vzc2lvblRhc2sgKCkKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRpYyB2b2lkIGFwcGx5
QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3sKKyAgICBTdHJpbmcg
YXV0aGVudGljYXRpb25IZWFkZXIgPSAiQmFzaWMgIiArIGJhc2U2NEVuY29kZShTdHJpbmcoY3Jl
ZGVudGlhbC51c2VyKCkgKyAiOiIgKyBjcmVkZW50aWFsLnBhc3N3b3JkKCkpLnV0ZjgoKSk7Cisg
ICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OkF1
dGhvcml6YXRpb24sIGF1dGhlbnRpY2F0aW9uSGVhZGVyKTsKK30KKwogTmV0d29ya0RhdGFUYXNr
OjpOZXR3b3JrRGF0YVRhc2soTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFz
a0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RX
aXRoQ3JlZGVudGlhbHMsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRp
YWxzLCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBi
b29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpCiAgICAgOiBtX2Zh
aWx1cmVUaW1lcigqdGhpcywgJk5ldHdvcmtEYXRhVGFzazo6ZmFpbHVyZVRpbWVyRmlyZWQpCiAg
ICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKQEAgLTY1LDkgKzc0LDI2IEBAIE5ldHdvcmtEYXRhVGFz
azo6TmV0d29ya0RhdGFUYXNrKE5ldHdvcmsKICAgICB9CiAgICAgCiAgICAgYXV0byByZXF1ZXN0
ID0gcmVxdWVzdFdpdGhDcmVkZW50aWFsczsKLSAgICBtX3VzZXIgPSByZXF1ZXN0LnVybCgpLnVz
ZXIoKTsKLSAgICBtX3Bhc3N3b3JkID0gcmVxdWVzdC51cmwoKS5wYXNzKCk7Ci0gICAgcmVxdWVz
dC5yZW1vdmVDcmVkZW50aWFscygpOworICAgIGF1dG8gdXJsID0gcmVxdWVzdC51cmwoKTsKKyAg
ICBpZiAoc3RvcmVkQ3JlZGVudGlhbHMgPT0gV2ViQ29yZTo6QWxsb3dTdG9yZWRDcmVkZW50aWFs
cyAmJiB1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CisgICAgICAgIG1fdXNlciA9IHVy
bC51c2VyKCk7CisgICAgICAgIG1fcGFzc3dvcmQgPSB1cmwucGFzcygpOworICAgICAgICByZXF1
ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CisgICAgICAgIHVybCA9IHJlcXVlc3QudXJsKCk7Cisg
ICAgICAgIAorICAgICAgICBpZiAoYXV0byBzdG9yYWdlU2Vzc2lvbiA9IFNlc3Npb25UcmFja2Vy
OjpzdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb24uc2Vzc2lvbklEKCkpKSB7CisgICAgICAgICAgICBp
ZiAobV91c2VyLmlzRW1wdHkoKSAmJiBtX3Bhc3N3b3JkLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
ICAgICBtX2luaXRpYWxDcmVkZW50aWFsID0gc3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9y
YWdlKCkuZ2V0KHVybCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3RvcmFn
ZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KFdlYkNvcmU6OkNyZWRlbnRpYWwobV91
c2VyLCBtX3Bhc3N3b3JkLCBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSwgdXJs
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9CisKKyAgICBpZiAoIW1faW5pdGlhbENyZWRlbnRpYWwuaXNFbXB0eSgpKSB7CisgICAgICAg
IC8vIEZJWE1FOiBTdXBwb3J0IERpZ2VzdCBhdXRoZW50aWNhdGlvbiwgYW5kIFByb3h5LUF1dGhv
cml6YXRpb24uCisgICAgICAgIGFwcGx5QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKHJlcXVlc3Qs
IG1faW5pdGlhbENyZWRlbnRpYWwpOworICAgIH0KICAgICAKICAgICBOU1VSTFJlcXVlc3QgKm5z
UmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OlVwZGF0ZUhUVFBCb2R5KTsK
ICAgICBpZiAoc2hvdWxkQ29udGVudFNuaWZmID09IFdlYkNvcmU6OkRvTm90U25pZmZDb250ZW50
KSB7CkBAIC0xMDksNiArMTM1LDE0IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRTZW5kRGF0
YSh1aW50NjQKIAogdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoY29u
c3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgQ2hhbGxlbmdl
Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgaWYgKGNoYWxsZW5n
ZS5wcm90ZWN0aW9uU3BhY2UoKS5pc1Byb3h5KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgV2Vi
Q29yZTo6Q3JlZGVudGlhbCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh0
cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY2hhbGxlbmdlLCBjb21wbGV0aW9uSGFuZGxl
cikpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVDaGFsbGVuZ2UoY2hhbGxlbmdlLCBjb21wbGV0aW9uSGFuZGxlcik7CiB9
CkBAIC0xNjUsNiArMTk5LDIxIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjp3aWxsUGVyZm9ybUhU
VFBSZWQKICAgICAgICAgLy8gd2Ugd2FudCB0byBzdHJpcCBoZXJlIGJlY2F1c2UgdGhlIHJlZGly
ZWN0IGlzIGNyb3NzLW9yaWdpbi4KICAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBBdXRob3JpemF0
aW9uKCk7CiAgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQT3JpZ2luKCk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gT25seSBjb25zaWRlciBhcHBseWluZyBhdXRoZW50aWNhdGlvbiBjcmVkZW50
aWFscyBpZiB0aGlzIGlzIGFjdHVhbGx5IGEgcmVkaXJlY3QgYW5kIHRoZSByZWRpcmVjdAorICAg
ICAgICAvLyBVUkwgZGlkbid0IGluY2x1ZGUgY3JlZGVudGlhbHMgb2YgaXRzIG93bi4KKyAgICAg
ICAgaWYgKG1fdXNlci5pc0VtcHR5KCkgJiYgbV9wYXNzd29yZC5pc0VtcHR5KCkgJiYgIXJlZGly
ZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VTZXNz
aW9uID0gU2Vzc2lvblRyYWNrZXI6OnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbi5zZXNzaW9uSUQo
KSkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGNyZWRlbnRpYWwgPSBzdG9yYWdlU2Vzc2lvbi0+
Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocmVxdWVzdC51cmwoKSk7CisgICAgICAgICAgICAgICAg
aWYgKCFjcmVkZW50aWFsLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICBtX2luaXRp
YWxDcmVkZW50aWFsID0gY3JlZGVudGlhbDsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IERpZ2VzdCBhdXRoZW50aWNhdGlvbiwgYW5k
IFByb3h5LUF1dGhvcml6YXRpb24uCisgICAgICAgICAgICAgICAgICAgIGFwcGx5QmFzaWNBdXRo
b3JpemF0aW9uSGVhZGVyKHJlcXVlc3QsIG1faW5pdGlhbENyZWRlbnRpYWwpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGlmIChtX2NsaWVudCkKQEAg
LTIxNywxMiArMjY2LDQxIEBAIGJvb2wgTmV0d29ya0RhdGFUYXNrOjp0cnlQYXNzd29yZEJhc2Vk
QXUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmICghbV91c2VyLmlzTnVsbCgp
ICYmICFtX3Bhc3N3b3JkLmlzTnVsbCgpKSB7Ci0gICAgICAgIGF1dG8gcGVyc2lzdGVuY2UgPSBt
X3N0b3JlZENyZWRlbnRpYWxzID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpBbGxvd1N0
b3JlZENyZWRlbnRpYWxzID8gV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lv
biA6IFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmU7Ci0gICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRp
YWwsIFdlYkNvcmU6OkNyZWRlbnRpYWwobV91c2VyLCBtX3Bhc3N3b3JkLCBwZXJzaXN0ZW5jZSkp
OwotICAgICAgICBtX3VzZXIgPSBTdHJpbmcoKTsKLSAgICAgICAgbV9wYXNzd29yZCA9IFN0cmlu
ZygpOworICAgICAgICBpZiAoYXV0byBzdG9yYWdlU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpz
dG9yYWdlU2Vzc2lvbihtX3Nlc3Npb24uc2Vzc2lvbklEKCkpKSB7CisgICAgICAgICAgICBXZWJD
b3JlOjpDcmVkZW50aWFsIHdlYkNyZWRlbnRpYWwobV91c2VyLCBtX3Bhc3N3b3JkLCBXZWJDb3Jl
OjpDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKKyAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9u
LT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldCh3ZWJDcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVj
dGlvblNwYWNlKCksIGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKSk7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpVc2VDcmVkZW50aWFsLCB3ZWJDcmVkZW50aWFsKTsKKyAgICAgICAgICAgIG1fdXNlciA9IFN0
cmluZygpOworICAgICAgICAgICAgbV9wYXNzd29yZCA9IFN0cmluZygpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CisKKyAgICBpZiAobV9zdG9yZWRDcmVkZW50aWFscyA9PSBXZWJDb3JlOjpBbGxv
d1N0b3JlZENyZWRlbnRpYWxzKSB7CisgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VTZXNzaW9uID0g
U2Vzc2lvblRyYWNrZXI6OnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbi5zZXNzaW9uSUQoKSkpIHsK
KyAgICAgICAgICAgIGlmICghbV9pbml0aWFsQ3JlZGVudGlhbC5pc0VtcHR5KCkgfHwgY2hhbGxl
bmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgc3Rv
cmVkIGNyZWRlbnRpYWwgd2Fzbid0IGFjY2VwdGVkLCBzdG9wIHVzaW5nIGl0LgorICAgICAgICAg
ICAgICAgIC8vIFRoZXJlIGlzIGEgcmFjZSBjb25kaXRpb24gaGVyZSwgc2luY2UgYSBkaWZmZXJl
bnQgY3JlZGVudGlhbCBtaWdodCBoYXZlIGFscmVhZHkgYmVlbiBzdG9yZWQgYnkgYW5vdGhlciBS
ZXNvdXJjZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAvLyBidXQgdGhlIG9ic2VydmFibGUgZWZm
ZWN0IHNob3VsZCBiZSB2ZXJ5IG1pbm9yLCBpZiBhbnkuCisgICAgICAgICAgICAgICAgc3RvcmFn
ZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkucmVtb3ZlKGNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2UoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgh
Y2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCkpIHsKKyAgICAgICAgICAgICAgICBhdXRv
IGNyZWRlbnRpYWwgPSBzdG9yYWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQoY2hh
bGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNyZWRlbnRp
YWwuaXNFbXB0eSgpICYmIGNyZWRlbnRpYWwgIT0gbV9pbml0aWFsQ3JlZGVudGlhbCkgeworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpID09IFdlYkNv
cmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOworICAgICAgICAgICAgICAgICAgICBpZiAo
Y2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUgY3JlZGVudGlhbCBiYWNrLCBwb3Nz
aWJseSBhZGRpbmcgaXQgYXMgYSBkZWZhdWx0IGZvciB0aGlzIGRpcmVjdG9yeS4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChj
cmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIGNoYWxsZW5nZS5mYWlsdXJl
UmVzcG9uc2UoKS51cmwoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
bjo6VXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAgICAgCiAgICAgaWYg
KCFjaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkuaXNFbXB0eSgpICYmICFjaGFsbGVuZ2Uu
cHJldmlvdXNGYWlsdXJlQ291bnQoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBjaGFsbGVuZ2Uu
cHJvcG9zZWRDcmVkZW50aWFsKCkpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lv
biAxOTc0MTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMTcgKzExOSwyNyBAQCAtICh2
b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiB7CiAgICAgYXV0byBzdG9yZWRD
cmVkZW50aWFscyA9IHNlc3Npb24uY29uZmlndXJhdGlvbi5VUkxDcmVkZW50aWFsU3RvcmFnZSA/
IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkRvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAg
ICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gX3Nlc3Npb24tPmRhdGFUYXNrRm9ySWRlbnRp
Zmllcih0YXNrLnRhc2tJZGVudGlmaWVyLCBzdG9yZWRDcmVkZW50aWFscykpIHsKKyAgICAgICAg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
Y2hhbGxlbmdlKTsKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19j
b3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgYXV0byBjaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlckNvcHldKFdlYktpdDo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlh
bCYgY3JlZGVudGlhbCkKKyAgICAgICAgYXV0byBzZXNzaW9uSUQgPSBfc2Vzc2lvbi0+c2Vzc2lv
bklEKCk7CisgICAgICAgIGF1dG8gY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBbY29tcGxl
dGlvbkhhbmRsZXJDb3B5LCBzZXNzaW9uSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlXShXZWJL
aXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyQ29weSh0b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3Np
dGlvbihkaXNwb3NpdGlvbiksIGNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpOworICAgICAgICAg
ICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBXZWJDb3JlOjpDcmVkZW50aWFsUGVy
c2lzdGVuY2VGb3JTZXNzaW9uICYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZSgpLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkgIT0gV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNl
QXV0aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJUcnVzdEV2YWx1YXRpb25SZXF1ZXN0ZWQpIHsKKwor
ICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNyZWRlbnRpYWwgd2ViQ3JlZGVudGlhbChjcmVkZW50
aWFsLnVzZXIoKSwgY3JlZGVudGlhbC5wYXNzd29yZCgpLCBXZWJDb3JlOjpDcmVkZW50aWFsUGVy
c2lzdGVuY2VOb25lKTsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpVUkwgdXJsVG9TdG9yZTsK
KyAgICAgICAgICAgICAgICBpZiAoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZmFpbHVyZVJlc3Bv
bnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCisgICAgICAgICAgICAgICAgICAgIHVybFRv
U3RvcmUgPSBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsK
KyAgICAgICAgICAgICAgICBpZiAoYXV0byBzdG9yYWdlU2Vzc2lvbiA9IFdlYktpdDo6U2Vzc2lv
blRyYWNrZXI6OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgICAgICAgICAgICAg
IHN0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldCh3ZWJDcmVkZW50aWFsLCBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CisK
KyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkodG9OU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlRGlzcG9zaXRpb24oZGlzcG9zaXRpb24pLCB3ZWJDcmVkZW50aWFsLm5zQ3JlZGVu
dGlhbCgpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyQ29weSh0b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3Np
dGlvbiksIGNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpOwogICAgICAgICAgICAgQmxvY2tfcmVs
ZWFzZShjb21wbGV0aW9uSGFuZGxlckNvcHkpOwogICAgICAgICB9OwotICAgICAgICAKLSAgICAg
ICAgaWYgKG5ldHdvcmtEYXRhVGFzay0+dHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNo
YWxsZW5nZSwgY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAKLSAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlQ2hhbGxlbmdl
KGNoYWxsZW5nZSwgY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpOworCisgICAgICAgIG5ldHdv
cmtEYXRhVGFzay0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwg
Y2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpOwogICAgIH0KIH0KIApAQCAtMjQzLDYgKzI1Myw3
IEBAIE5ldHdvcmtTZXNzaW9uJiBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFMKIH0KIAogTmV0d29y
a1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKFR5cGUgdHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyKiBjdXN0b21Qcm90b2NvbE1hbmFnZXIpCisg
ICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiAgICAgbV9zZXNzaW9uRGVsZWdhdGUgPSBh
ZG9wdE5TKFtbV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aE5ldHdvcmtT
ZXNzaW9uOip0aGlzXSk7CiAKQEAgLTI3MiwxNCArMjgzLDYgQEAgTmV0d29ya1Nlc3Npb246On5O
ZXR3b3JrU2Vzc2lvbigpCiAgICAgW21fc2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZSBp
bnZhbGlkYXRlQW5kQ2FuY2VsXTsKIH0KIAotdm9pZCBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJDcmVk
ZW50aWFscygpCi17Ci0gICAgQVNTRVJUKG1fZGF0YVRhc2tNYXBXaXRoQ3JlZGVudGlhbHMuaXNF
bXB0eSgpKTsKLSAgICBBU1NFUlQobV9kYXRhVGFza01hcFdpdGhvdXRDcmVkZW50aWFscy5pc0Vt
cHR5KCkpOwotICAgIEFTU0VSVChtX2Rvd25sb2FkTWFwLmlzRW1wdHkoKSk7Ci0gICAgbV9zZXNz
aW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlID0gW05TVVJMU2Vzc2lvbiBzZXNzaW9uV2l0aENvbmZp
Z3VyYXRpb246bV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmdldCgpLmNvbmZpZ3VyYXRp
b24gZGVsZWdhdGU6c3RhdGljX2Nhc3Q8aWQ+KG1fc2Vzc2lvbkRlbGVnYXRlLmdldCgpKSBkZWxl
Z2F0ZVF1ZXVlOltOU09wZXJhdGlvblF1ZXVlIG1haW5RdWV1ZV1dOwotfQotCiBOZXR3b3JrRGF0
YVRhc2sqIE5ldHdvcmtTZXNzaW9uOjpkYXRhVGFza0ZvcklkZW50aWZpZXIoTmV0d29ya0RhdGFU
YXNrOjpUYXNrSWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24g
MTk3NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTAwLDkgKzUwMCw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0Q2FjaGVN
b2RlbCh1aW50MzJfdCAKIHZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJDYWNoZWRDcmVkZW50aWFscygp
CiB7CiAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5j
cmVkZW50aWFsU3RvcmFnZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKLSNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQotICAgIE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNsZWFyQ3JlZGVu
dGlhbHMoKTsKLSNlbmRpZgogfQogCiBXZWJQYWdlKiBXZWJQcm9jZXNzOjpmb2N1c2VkV2ViUGFn
ZSgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272712</attachid>
            <date>2016-03-02 17:33:19 -0800</date>
            <delta_ts>2016-03-03 01:57:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154939-20160302173303.patch</filename>
            <type>text/plain</type>
            <size>21727</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzQ3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTAzLTAyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIENyZWRl
bnRpYWxTdG9yYWdlIHdpdGggTmV0d29ya1Nlc3Npb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgbWFrZXMgdGhlIGNyZWRlbnRpYWwtYmFzZWQg
aHR0cCB0ZXN0cyBwYXNzIHdoZW4gdXNpbmcgTmV0d29ya1Nlc3Npb24uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDcmVk
ZW50aWFsQmFzZTo6ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICBXRUJDT1JFX0VYUE9S
VCBtb3JlIHRoaW5ncyB0aGF0IGFyZSBuZXdseSB1c2VkIGluIFdlYktpdDIuCisKIDIwMTYtMDMt
MDEgIEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHRoZSBt
ZWRpYSBlbGVtZW50J3MgcHJlc2VudGF0aW9uIG1vZGUgcHJvcGVybHkgYWZ0ZXIgZ29pbmcgaW4g
YW5kIG91dCBvZiBmdWxsIHNjcmVlbiB2aWEgdGhlIEZ1bGwgU2NyZWVuIEFQSQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuaAkocmV2
aXNpb24gMTk3NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAKLSAgICBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBD
cmVkZW50aWFsJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgY29tcGFyZShjb25z
dCBDcmVkZW50aWFsJiwgY29uc3QgQ3JlZGVudGlhbCYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VC
Q09SRV9FWFBPUlQgQ3JlZGVudGlhbEJhc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgJKHJldmlzaW9uIDE5NzQw
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTkgKzM4LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFVSTDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIAotY2xhc3MgQ3JlZGVudGlhbFN0
b3JhZ2UgeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgQ3JlZGVudGlhbFN0b3JhZ2UgewogcHVibGlj
OgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDcmVkZW50aWFsU3RvcmFnZSYgZGVmYXVsdENy
ZWRlbnRpYWxTdG9yYWdlKCk7CisgICAgc3RhdGljIENyZWRlbnRpYWxTdG9yYWdlJiBkZWZhdWx0
Q3JlZGVudGlhbFN0b3JhZ2UoKTsKIAogICAgIC8vIFdlYkNvcmUgc2Vzc2lvbiBjcmVkZW50aWFs
IHN0b3JhZ2UuCiAgICAgdm9pZCBzZXQoY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IFByb3RlY3Rp
b25TcGFjZSYsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIENyZWRlbnRpYWwgZ2V0
KGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOworICAgIENyZWRlbnRpYWwgZ2V0KGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYpOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwog
CiAgICAgLy8gT1MgcGVyc2lzdGVudCBzdG9yYWdlLgotICAgIFdFQkNPUkVfRVhQT1JUIENyZWRl
bnRpYWwgZ2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwor
ICAgIENyZWRlbnRpYWwgZ2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCk7Cisg
ICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCk7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgdm9p
ZCBzYXZlVG9QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBD
cmVkZW50aWFsJik7CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGVzZSBtZXRo
b2RzIHdvcmsgZm9yIGF1dGhlbnRpY2F0aW9uIHNjaGVtZXMgdGhhdCBzdXBwb3J0IHNlbmRpbmcg
Y3JlZGVudGlhbHMgd2l0aG91dCB3YWl0aW5nIGZvciBhIHJlcXVlc3QuIEUuZy4sIGZvciBIVFRQ
IEJhc2ljIGF1dGhlbnRpY2F0aW9uIHNjaGVtZQogICAgIC8vIGEgY2xpZW50IHNob3VsZCBhc3N1
bWUgdGhhdCBhbGwgcGF0aHMgYXQgb3IgZGVlcGVyIHRoYW4gdGhlIGRlcHRoIG9mIGEga25vd24g
cHJvdGVjdGVkIHJlc291cmNlIHNoYXJlIGFyZSB3aXRoaW4gdGhlIHNhbWUgcHJvdGVjdGlvbiBz
cGFjZS4KICAgICBib29sIHNldChjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgVVJMJik7IC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgVVJMIGNvcnJlc3BvbmRzIHRvIGEga25vd24gcHJvdGVjdGlvbiBz
cGFjZSwgc28gY3JlZGVudGlhbHMgY291bGQgYmUgdXBkYXRlZC4KLSAgICBXRUJDT1JFX0VYUE9S
VCBDcmVkZW50aWFsIGdldChjb25zdCBVUkwmKTsKKyAgICBDcmVkZW50aWFsIGdldChjb25zdCBV
UkwmKTsKIAogcHJpdmF0ZToKICAgICBIYXNoTWFwPFByb3RlY3Rpb25TcGFjZSwgQ3JlZGVudGlh
bD4gbV9wcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXA7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxOTc0NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw1MSBAQAorMjAxNi0wMy0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBDcmVkZW50aWFsU3RvcmFnZSB3aXRoIE5l
dHdvcmtTZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTQ5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2s6OnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uOjpzZXNzaW9uSUQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjphcHBseUJhc2ljQXV0aG9yaXph
dGlvbkhlYWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6TmV0d29ya0Rh
dGFUYXNrKToKKyAgICAgICAgVXNlIGEgY3JlZGVudGlhbCBzdG9yYWdlIGFuZCBwcmVlbXB0aXZl
bHkgYXBwbHkgYmFzaWMgYXV0aGVudGljYXRpb24gaGVhZGVycyBpZiB3ZSBoYXZlIGNyZWRlbnRp
YWxzIGZyb20gdGhlIHN0b3JhZ2UuCisgICAgICAgIFRoaXMgaXMgYW5hbG9nb3VzIHRvIGNvZGUg
aW4gUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbi4KKyAgICAgICAgCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6CisgICAg
ICAgIE1ha2UgdGhpcyBsb29rIG1vcmUgbGlrZSBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLgorICAgICAgICBUaGUgY2FsbCB0byB0cnlQYXNzd29yZEJh
c2VkQXV0aGVudGljYXRpb24gd2FzIG1vdmVkIGZyb20gdGhlIGRlbGVnYXRlIGNhbGxiYWNrIHRv
IGhlcmUuCisgICAgICAgIAorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OndpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgVXNlIGNyZWRlbnRpYWxzIGZyb20gdGhl
IGNyZWRlbnRpYWwgc3RvcmFnZSBpZiB0aGV5IGV4aXN0LiAgVGhpcyBpcyBhbmFsb2dvdXMgdG8g
Y29kZSBpbiBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0LgorICAgICAgICAKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjp0cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRp
b24pOgorICAgICAgICBVc2UgY3JlZGVudGlhbHMgZnJvbSB0aGUgY3JlZGVudGlhbCBzdG9yYWdl
IGlmIHRoZXkgZXhpc3QuICBUaGlzIGlzIGFuYWxvZ291cyB0byBjb2RlIGluIFJlc291cmNlSGFu
ZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24uCisgICAgICAgIAorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAg
ICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2
ZUNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgSWYgd2UgYXJlIGdpdmVu
IGEgY3JlZGVudGlhbCB3aXRoIENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb24sIHB1dCBp
dCBpbiB0aGUgY3JlZGVudGlhbCBzdG9yYWdlIGFuZCBnaXZlIAorICAgICAgICBDRk5ldHdvcmsg
YSBjcmVkZW50aWFsIHdpdGggQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSBzbyBpdCB3b24ndCBh
dXRvbWF0aWNhbGx5IGJlIHVzZWQgYWdhaW4gdW50aWwgdGhlIGNyZWRlbnRpYWwKKyAgICAgICAg
c3RvcmFnZSBzYXlzIGl0cyBvayB0byB1c2UgYWdhaW4uICBUaGlzIGdpdmVzIHVzIHRoZSBhYmls
aXR5IHRvIGNsZWFyIHNlc3Npb24gY3JlZGVudGlhbHMgd2hlbiBsb2dvdXQgY3JlZGVudGlhbHMg
YXJlIHVzZWQuCisgICAgICAgIFRoaXMgaXMgYW5hbG9nb3VzIHRvIGNvZGUgaW4gUmVzb3VyY2VI
YW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbC4KKyAgICAgICAgCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
Ojp+TmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZGF0
YVRhc2tGb3JJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmNs
ZWFyQ3JlZGVudGlhbHMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNsZWFyQ2FjaGVkQ3JlZGVudGlh
bHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpmb2N1c2VkV2ViUGFnZSk6CisgICAg
ICAgIFdlIG5vIGxvbmdlciBuZWVkIHRvIGNsZWFyIGNyZWRlbnRpYWxzIGZyb20gdGhlIE5TVVJM
U2Vzc2lvbnMgYmVjYXVzZSB3ZSBkb24ndCBzdG9yZSBzZXNzaW9uIGNyZWRlbnRpYWxzIGluIHRo
ZW0uCisgICAgICAgIEluc3RlYWQsIGNhbGxpbmcgQ3JlZGVudGlhbFN0b3JhZ2UuY2xlYXJDcmVk
ZW50aWFscyBpcyBzdWZmaWNpZW50LgorCiAyMDE2LTAzLTAxICBBZGEgQ2hhbiAgPGFkYWNoYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSB0aGUgbWVkaWEgZWxlbWVudCdzIHByZXNlbnRh
dGlvbiBtb2RlIHByb3Blcmx5IGFmdGVyIGdvaW5nIGluIGFuZCBvdXQgb2YgZnVsbCBzY3JlZW4g
dmlhIHRoZSBGdWxsIFNjcmVlbiBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShyZXZpc2lvbiAxOTc0MTMpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBOZXR3b3JrRGF0YVRhc2tfaAogCiAjaW5jbHVkZSAi
U2FuZGJveEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VIYW5kbGVUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJPcHRp
b25zLmg+CkBAIC0xMjIsMTIgKzEyMywxMyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBw
ZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpIHsgcmV0dXJuIG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRp
b247IH0KICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY3VycmVudFJlcXVlc3QoKTsKICAg
ICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKTsKLSAgICBib29sIHRyeVBhc3N3b3JkQmFzZWRB
dXRoZW50aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCB0cmFuc2Zl
clNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2FkJik7CiAgICAgCiBwcml2YXRlOgog
ICAgIE5ldHdvcmtEYXRhVGFzayhOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVu
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzLCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7CisKKyAgICBib29sIHRyeVBhc3N3b3JkQmFz
ZWRBdXRoZW50aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYs
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICAKICAgICBlbnVtIEZhaWx1cmVUeXBl
IHsKICAgICAgICAgTm9GYWlsdXJlLApAQCAtMTQ1LDYgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAg
RG93bmxvYWRJRCBtX3BlbmRpbmdEb3dubG9hZElEOwogICAgIFN0cmluZyBtX3VzZXI7CiAgICAg
U3RyaW5nIG1fcGFzc3dvcmQ7CisgICAgV2ViQ29yZTo6Q3JlZGVudGlhbCBtX2luaXRpYWxDcmVk
ZW50aWFsOwogICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzIG1fc3RvcmVkQ3JlZGVudGlh
bHM7CiAgICAgU3RyaW5nIG1fbGFzdEhUVFBNZXRob2Q7CiAgICAgU3RyaW5nIG1fcGVuZGluZ0Rv
d25sb2FkTG9jYXRpb247CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAxOTc0MDcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
Myw5ICsyNzMsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKCkKIHsKICAgICBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9y
YWdlKCkuY2xlYXJDcmVkZW50aWFscygpOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAg
TmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2xlYXJDcmVkZW50aWFscygpOwotI2Vu
ZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oU2Vzc2lvbklEIHNlc3Npb25JRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkocmV2aXNpb24gMTk3NDEzKQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NTMsOSArNTMsOSBAQCBwdWJsaWM6CiAgICAgTmV0d29ya1Nlc3Npb24oVHlwZSwgV2ViQ29yZTo6
U2Vzc2lvbklELCBDdXN0b21Qcm90b2NvbE1hbmFnZXIqKTsKICAgICB+TmV0d29ya1Nlc3Npb24o
KTsKIAorICAgIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSB7IHJldHVybiBtX3Nlc3Np
b25JRDsgfQogICAgIHN0YXRpYyB2b2lkIHNldEN1c3RvbVByb3RvY29sTWFuYWdlcihDdXN0b21Q
cm90b2NvbE1hbmFnZXIqKTsKICAgICBzdGF0aWMgTmV0d29ya1Nlc3Npb24mIGRlZmF1bHRTZXNz
aW9uKCk7Ci0gICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCk7CiAKICAgICBOZXR3b3JrRGF0YVRh
c2sqIGRhdGFUYXNrRm9ySWRlbnRpZmllcihOZXR3b3JrRGF0YVRhc2s6OlRhc2tJZGVudGlmaWVy
LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFscyk7CiAKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGlj
OgogICAgIERvd25sb2FkSUQgdGFrZURvd25sb2FkSUQoTmV0d29ya0RhdGFUYXNrOjpUYXNrSWRl
bnRpZmllcik7CiAgICAgCiBwcml2YXRlOgorICAgIFdlYkNvcmU6OlNlc3Npb25JRCBtX3Nlc3Np
b25JRDsKICAgICBIYXNoTWFwPE5ldHdvcmtEYXRhVGFzazo6VGFza0lkZW50aWZpZXIsIE5ldHdv
cmtEYXRhVGFzayo+IG1fZGF0YVRhc2tNYXBXaXRoQ3JlZGVudGlhbHM7CiAgICAgSGFzaE1hcDxO
ZXR3b3JrRGF0YVRhc2s6OlRhc2tJZGVudGlmaWVyLCBOZXR3b3JrRGF0YVRhc2sqPiBtX2RhdGFU
YXNrTWFwV2l0aG91dENyZWRlbnRpYWxzOwogICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrOjpU
YXNrSWRlbnRpZmllciwgRG93bmxvYWRJRD4gbV9kb3dubG9hZE1hcDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tCShyZXZpc2lvbiAxOTc0MTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTEgKzMxLDE0IEBACiAjaW1wb3J0ICJEb3dubG9hZC5oIgogI2ltcG9ydCAiRG93bmxvYWRQ
cm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgorI2ltcG9ydCAiU2Vz
c2lvblRyYWNrZXIuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9y
dCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9D
Rk5ldHdvcmtTUEkuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBAaW50ZXJmYWNlIE5TVVJM
U2Vzc2lvblRhc2sgKCkKIEBwcm9wZXJ0eSAocmVhZHdyaXRlLCBjb3B5KSBOU1N0cmluZyAqX3Bh
dGhUb0Rvd25sb2FkVGFza0ZpbGU7CkBAIC00Myw2ICs0NiwxMiBAQCBAaW50ZXJmYWNlIE5TVVJM
U2Vzc2lvblRhc2sgKCkKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRpYyB2b2lkIGFwcGx5
QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3sKKyAgICBTdHJpbmcg
YXV0aGVudGljYXRpb25IZWFkZXIgPSAiQmFzaWMgIiArIGJhc2U2NEVuY29kZShTdHJpbmcoY3Jl
ZGVudGlhbC51c2VyKCkgKyAiOiIgKyBjcmVkZW50aWFsLnBhc3N3b3JkKCkpLnV0ZjgoKSk7Cisg
ICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OkF1
dGhvcml6YXRpb24sIGF1dGhlbnRpY2F0aW9uSGVhZGVyKTsKK30KKwogTmV0d29ya0RhdGFUYXNr
OjpOZXR3b3JrRGF0YVRhc2soTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFz
a0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RX
aXRoQ3JlZGVudGlhbHMsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRp
YWxzLCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBi
b29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpCiAgICAgOiBtX2Zh
aWx1cmVUaW1lcigqdGhpcywgJk5ldHdvcmtEYXRhVGFzazo6ZmFpbHVyZVRpbWVyRmlyZWQpCiAg
ICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKQEAgLTY1LDkgKzc0LDI2IEBAIE5ldHdvcmtEYXRhVGFz
azo6TmV0d29ya0RhdGFUYXNrKE5ldHdvcmsKICAgICB9CiAgICAgCiAgICAgYXV0byByZXF1ZXN0
ID0gcmVxdWVzdFdpdGhDcmVkZW50aWFsczsKLSAgICBtX3VzZXIgPSByZXF1ZXN0LnVybCgpLnVz
ZXIoKTsKLSAgICBtX3Bhc3N3b3JkID0gcmVxdWVzdC51cmwoKS5wYXNzKCk7Ci0gICAgcmVxdWVz
dC5yZW1vdmVDcmVkZW50aWFscygpOworICAgIGF1dG8gdXJsID0gcmVxdWVzdC51cmwoKTsKKyAg
ICBpZiAoc3RvcmVkQ3JlZGVudGlhbHMgPT0gV2ViQ29yZTo6QWxsb3dTdG9yZWRDcmVkZW50aWFs
cyAmJiB1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CisgICAgICAgIG1fdXNlciA9IHVy
bC51c2VyKCk7CisgICAgICAgIG1fcGFzc3dvcmQgPSB1cmwucGFzcygpOworICAgICAgICByZXF1
ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CisgICAgICAgIHVybCA9IHJlcXVlc3QudXJsKCk7Cisg
ICAgICAgIAorICAgICAgICBpZiAoYXV0byBzdG9yYWdlU2Vzc2lvbiA9IFNlc3Npb25UcmFja2Vy
OjpzdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb24uc2Vzc2lvbklEKCkpKSB7CisgICAgICAgICAgICBp
ZiAobV91c2VyLmlzRW1wdHkoKSAmJiBtX3Bhc3N3b3JkLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
ICAgICBtX2luaXRpYWxDcmVkZW50aWFsID0gc3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9y
YWdlKCkuZ2V0KHVybCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3RvcmFn
ZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KFdlYkNvcmU6OkNyZWRlbnRpYWwobV91
c2VyLCBtX3Bhc3N3b3JkLCBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSwgdXJs
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9CisKKyAgICBpZiAoIW1faW5pdGlhbENyZWRlbnRpYWwuaXNFbXB0eSgpKSB7CisgICAgICAg
IC8vIEZJWE1FOiBTdXBwb3J0IERpZ2VzdCBhdXRoZW50aWNhdGlvbiwgYW5kIFByb3h5LUF1dGhv
cml6YXRpb24uCisgICAgICAgIGFwcGx5QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKHJlcXVlc3Qs
IG1faW5pdGlhbENyZWRlbnRpYWwpOworICAgIH0KICAgICAKICAgICBOU1VSTFJlcXVlc3QgKm5z
UmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OlVwZGF0ZUhUVFBCb2R5KTsK
ICAgICBpZiAoc2hvdWxkQ29udGVudFNuaWZmID09IFdlYkNvcmU6OkRvTm90U25pZmZDb250ZW50
KSB7CkBAIC0xMDksNiArMTM1LDE0IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRTZW5kRGF0
YSh1aW50NjQKIAogdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoY29u
c3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgQ2hhbGxlbmdl
Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgaWYgKGNoYWxsZW5n
ZS5wcm90ZWN0aW9uU3BhY2UoKS5pc1Byb3h5KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgV2Vi
Q29yZTo6Q3JlZGVudGlhbCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh0
cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY2hhbGxlbmdlLCBjb21wbGV0aW9uSGFuZGxl
cikpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVDaGFsbGVuZ2UoY2hhbGxlbmdlLCBjb21wbGV0aW9uSGFuZGxlcik7CiB9
CkBAIC0xNjUsNiArMTk5LDIxIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjp3aWxsUGVyZm9ybUhU
VFBSZWQKICAgICAgICAgLy8gd2Ugd2FudCB0byBzdHJpcCBoZXJlIGJlY2F1c2UgdGhlIHJlZGly
ZWN0IGlzIGNyb3NzLW9yaWdpbi4KICAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBBdXRob3JpemF0
aW9uKCk7CiAgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQT3JpZ2luKCk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gT25seSBjb25zaWRlciBhcHBseWluZyBhdXRoZW50aWNhdGlvbiBjcmVkZW50
aWFscyBpZiB0aGlzIGlzIGFjdHVhbGx5IGEgcmVkaXJlY3QgYW5kIHRoZSByZWRpcmVjdAorICAg
ICAgICAvLyBVUkwgZGlkbid0IGluY2x1ZGUgY3JlZGVudGlhbHMgb2YgaXRzIG93bi4KKyAgICAg
ICAgaWYgKG1fdXNlci5pc0VtcHR5KCkgJiYgbV9wYXNzd29yZC5pc0VtcHR5KCkgJiYgIXJlZGly
ZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VTZXNz
aW9uID0gU2Vzc2lvblRyYWNrZXI6OnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbi5zZXNzaW9uSUQo
KSkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGNyZWRlbnRpYWwgPSBzdG9yYWdlU2Vzc2lvbi0+
Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocmVxdWVzdC51cmwoKSk7CisgICAgICAgICAgICAgICAg
aWYgKCFjcmVkZW50aWFsLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICBtX2luaXRp
YWxDcmVkZW50aWFsID0gY3JlZGVudGlhbDsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IERpZ2VzdCBhdXRoZW50aWNhdGlvbiwgYW5k
IFByb3h5LUF1dGhvcml6YXRpb24uCisgICAgICAgICAgICAgICAgICAgIGFwcGx5QmFzaWNBdXRo
b3JpemF0aW9uSGVhZGVyKHJlcXVlc3QsIG1faW5pdGlhbENyZWRlbnRpYWwpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGlmIChtX2NsaWVudCkKQEAg
LTIxNywxMiArMjY2LDQxIEBAIGJvb2wgTmV0d29ya0RhdGFUYXNrOjp0cnlQYXNzd29yZEJhc2Vk
QXUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmICghbV91c2VyLmlzTnVsbCgp
ICYmICFtX3Bhc3N3b3JkLmlzTnVsbCgpKSB7Ci0gICAgICAgIGF1dG8gcGVyc2lzdGVuY2UgPSBt
X3N0b3JlZENyZWRlbnRpYWxzID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpBbGxvd1N0
b3JlZENyZWRlbnRpYWxzID8gV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lv
biA6IFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmU7Ci0gICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRp
YWwsIFdlYkNvcmU6OkNyZWRlbnRpYWwobV91c2VyLCBtX3Bhc3N3b3JkLCBwZXJzaXN0ZW5jZSkp
OwotICAgICAgICBtX3VzZXIgPSBTdHJpbmcoKTsKLSAgICAgICAgbV9wYXNzd29yZCA9IFN0cmlu
ZygpOworICAgICAgICBpZiAoYXV0byBzdG9yYWdlU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpz
dG9yYWdlU2Vzc2lvbihtX3Nlc3Npb24uc2Vzc2lvbklEKCkpKSB7CisgICAgICAgICAgICBXZWJD
b3JlOjpDcmVkZW50aWFsIHdlYkNyZWRlbnRpYWwobV91c2VyLCBtX3Bhc3N3b3JkLCBXZWJDb3Jl
OjpDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKKyAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9u
LT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldCh3ZWJDcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVj
dGlvblNwYWNlKCksIGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKSk7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpVc2VDcmVkZW50aWFsLCB3ZWJDcmVkZW50aWFsKTsKKyAgICAgICAgICAgIG1fdXNlciA9IFN0
cmluZygpOworICAgICAgICAgICAgbV9wYXNzd29yZCA9IFN0cmluZygpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CisKKyAgICBpZiAobV9zdG9yZWRDcmVkZW50aWFscyA9PSBXZWJDb3JlOjpBbGxv
d1N0b3JlZENyZWRlbnRpYWxzKSB7CisgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VTZXNzaW9uID0g
U2Vzc2lvblRyYWNrZXI6OnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbi5zZXNzaW9uSUQoKSkpIHsK
KyAgICAgICAgICAgIGlmICghbV9pbml0aWFsQ3JlZGVudGlhbC5pc0VtcHR5KCkgfHwgY2hhbGxl
bmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgc3Rv
cmVkIGNyZWRlbnRpYWwgd2Fzbid0IGFjY2VwdGVkLCBzdG9wIHVzaW5nIGl0LgorICAgICAgICAg
ICAgICAgIC8vIFRoZXJlIGlzIGEgcmFjZSBjb25kaXRpb24gaGVyZSwgc2luY2UgYSBkaWZmZXJl
bnQgY3JlZGVudGlhbCBtaWdodCBoYXZlIGFscmVhZHkgYmVlbiBzdG9yZWQgYnkgYW5vdGhlciBS
ZXNvdXJjZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAvLyBidXQgdGhlIG9ic2VydmFibGUgZWZm
ZWN0IHNob3VsZCBiZSB2ZXJ5IG1pbm9yLCBpZiBhbnkuCisgICAgICAgICAgICAgICAgc3RvcmFn
ZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkucmVtb3ZlKGNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2UoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgh
Y2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCkpIHsKKyAgICAgICAgICAgICAgICBhdXRv
IGNyZWRlbnRpYWwgPSBzdG9yYWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQoY2hh
bGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNyZWRlbnRp
YWwuaXNFbXB0eSgpICYmIGNyZWRlbnRpYWwgIT0gbV9pbml0aWFsQ3JlZGVudGlhbCkgeworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpID09IFdlYkNv
cmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOworICAgICAgICAgICAgICAgICAgICBpZiAo
Y2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUgY3JlZGVudGlhbCBiYWNrLCBwb3Nz
aWJseSBhZGRpbmcgaXQgYXMgYSBkZWZhdWx0IGZvciB0aGlzIGRpcmVjdG9yeS4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChj
cmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIGNoYWxsZW5nZS5mYWlsdXJl
UmVzcG9uc2UoKS51cmwoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
bjo6VXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAgICAgCiAgICAgaWYg
KCFjaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkuaXNFbXB0eSgpICYmICFjaGFsbGVuZ2Uu
cHJldmlvdXNGYWlsdXJlQ291bnQoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBjaGFsbGVuZ2Uu
cHJvcG9zZWRDcmVkZW50aWFsKCkpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lv
biAxOTc0MTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMTcgKzExOSwyNyBAQCAtICh2
b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiB7CiAgICAgYXV0byBzdG9yZWRD
cmVkZW50aWFscyA9IHNlc3Npb24uY29uZmlndXJhdGlvbi5VUkxDcmVkZW50aWFsU3RvcmFnZSA/
IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkRvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAg
ICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gX3Nlc3Npb24tPmRhdGFUYXNrRm9ySWRlbnRp
Zmllcih0YXNrLnRhc2tJZGVudGlmaWVyLCBzdG9yZWRDcmVkZW50aWFscykpIHsKKyAgICAgICAg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
Y2hhbGxlbmdlKTsKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19j
b3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgYXV0byBjaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlckNvcHldKFdlYktpdDo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlh
bCYgY3JlZGVudGlhbCkKKyAgICAgICAgYXV0byBzZXNzaW9uSUQgPSBfc2Vzc2lvbi0+c2Vzc2lv
bklEKCk7CisgICAgICAgIGF1dG8gY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBbY29tcGxl
dGlvbkhhbmRsZXJDb3B5LCBzZXNzaW9uSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlXShXZWJL
aXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyQ29weSh0b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3Np
dGlvbihkaXNwb3NpdGlvbiksIGNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpOworICAgICAgICAg
ICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBXZWJDb3JlOjpDcmVkZW50aWFsUGVy
c2lzdGVuY2VGb3JTZXNzaW9uICYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZSgpLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkgIT0gV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNl
QXV0aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJUcnVzdEV2YWx1YXRpb25SZXF1ZXN0ZWQpIHsKKwor
ICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNyZWRlbnRpYWwgd2ViQ3JlZGVudGlhbChjcmVkZW50
aWFsLnVzZXIoKSwgY3JlZGVudGlhbC5wYXNzd29yZCgpLCBXZWJDb3JlOjpDcmVkZW50aWFsUGVy
c2lzdGVuY2VOb25lKTsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpVUkwgdXJsVG9TdG9yZTsK
KyAgICAgICAgICAgICAgICBpZiAoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZmFpbHVyZVJlc3Bv
bnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCisgICAgICAgICAgICAgICAgICAgIHVybFRv
U3RvcmUgPSBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsK
KyAgICAgICAgICAgICAgICBpZiAoYXV0byBzdG9yYWdlU2Vzc2lvbiA9IFdlYktpdDo6U2Vzc2lv
blRyYWNrZXI6OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgICAgICAgICAgICAg
IHN0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldCh3ZWJDcmVkZW50aWFsLCBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CisK
KyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkodG9OU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlRGlzcG9zaXRpb24oZGlzcG9zaXRpb24pLCB3ZWJDcmVkZW50aWFsLm5zQ3JlZGVu
dGlhbCgpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyQ29weSh0b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3Np
dGlvbiksIGNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpOwogICAgICAgICAgICAgQmxvY2tfcmVs
ZWFzZShjb21wbGV0aW9uSGFuZGxlckNvcHkpOwogICAgICAgICB9OwotICAgICAgICAKLSAgICAg
ICAgaWYgKG5ldHdvcmtEYXRhVGFzay0+dHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNo
YWxsZW5nZSwgY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAKLSAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlQ2hhbGxlbmdl
KGNoYWxsZW5nZSwgY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpOworCisgICAgICAgIG5ldHdv
cmtEYXRhVGFzay0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwg
Y2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpOwogICAgIH0KIH0KIApAQCAtMjQzLDYgKzI1Myw3
IEBAIE5ldHdvcmtTZXNzaW9uJiBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFMKIH0KIAogTmV0d29y
a1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKFR5cGUgdHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyKiBjdXN0b21Qcm90b2NvbE1hbmFnZXIpCisg
ICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiAgICAgbV9zZXNzaW9uRGVsZWdhdGUgPSBh
ZG9wdE5TKFtbV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aE5ldHdvcmtT
ZXNzaW9uOip0aGlzXSk7CiAKQEAgLTI3MiwxNCArMjgzLDYgQEAgTmV0d29ya1Nlc3Npb246On5O
ZXR3b3JrU2Vzc2lvbigpCiAgICAgW21fc2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZSBp
bnZhbGlkYXRlQW5kQ2FuY2VsXTsKIH0KIAotdm9pZCBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJDcmVk
ZW50aWFscygpCi17Ci0gICAgQVNTRVJUKG1fZGF0YVRhc2tNYXBXaXRoQ3JlZGVudGlhbHMuaXNF
bXB0eSgpKTsKLSAgICBBU1NFUlQobV9kYXRhVGFza01hcFdpdGhvdXRDcmVkZW50aWFscy5pc0Vt
cHR5KCkpOwotICAgIEFTU0VSVChtX2Rvd25sb2FkTWFwLmlzRW1wdHkoKSk7Ci0gICAgbV9zZXNz
aW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlID0gW05TVVJMU2Vzc2lvbiBzZXNzaW9uV2l0aENvbmZp
Z3VyYXRpb246bV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmdldCgpLmNvbmZpZ3VyYXRp
b24gZGVsZWdhdGU6c3RhdGljX2Nhc3Q8aWQ+KG1fc2Vzc2lvbkRlbGVnYXRlLmdldCgpKSBkZWxl
Z2F0ZVF1ZXVlOltOU09wZXJhdGlvblF1ZXVlIG1haW5RdWV1ZV1dOwotfQotCiBOZXR3b3JrRGF0
YVRhc2sqIE5ldHdvcmtTZXNzaW9uOjpkYXRhVGFza0ZvcklkZW50aWZpZXIoTmV0d29ya0RhdGFU
YXNrOjpUYXNrSWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24g
MTk3NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTAwLDkgKzUwMCw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0Q2FjaGVN
b2RlbCh1aW50MzJfdCAKIHZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJDYWNoZWRDcmVkZW50aWFscygp
CiB7CiAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5j
cmVkZW50aWFsU3RvcmFnZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKLSNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQotICAgIE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNsZWFyQ3JlZGVu
dGlhbHMoKTsKLSNlbmRpZgogfQogCiBXZWJQYWdlKiBXZWJQcm9jZXNzOjpmb2N1c2VkV2ViUGFn
ZSgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272746</attachid>
            <date>2016-03-03 01:57:18 -0800</date>
            <delta_ts>2016-03-03 12:53:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154939-20160303015702.patch</filename>
            <type>text/plain</type>
            <size>21753</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzQ5OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTAzLTAzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIENyZWRl
bnRpYWxTdG9yYWdlIHdpdGggTmV0d29ya1Nlc3Npb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgbWFrZXMgdGhlIGNyZWRlbnRpYWwtYmFzZWQg
aHR0cCB0ZXN0cyBwYXNzIHdoZW4gdXNpbmcgTmV0d29ya1Nlc3Npb24uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDcmVk
ZW50aWFsQmFzZTo6ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICBXRUJDT1JFX0VYUE9S
VCBtb3JlIHRoaW5ncyB0aGF0IGFyZSBuZXdseSB1c2VkIGluIFdlYktpdDIuCisKIDIwMTYtMDMt
MDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBIVE1MRm9ybUVs
ZW1lbnQncyBuYW1lZCBwcm9wZXJ0eSBnZXR0ZXIgZG9lcyBub3QgcmV0dXJuIGEgUmFkaW9Ob2Rl
bGlzdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFz
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVu
dGlhbEJhc2UuaAkocmV2aXNpb24gMTk3NDk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IENyZWRl
bnRpYWwmLCBjb25zdCBDcmVkZW50aWFsJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJv
b2wgY29tcGFyZShjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgQ3JlZGVudGlhbCYpOwogCiBwcm90
ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgQ3JlZGVudGlhbEJhc2UoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgJ
KHJldmlzaW9uIDE5NzQ5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3Jl
ZGVudGlhbFN0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTkgKzM4LDE5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFVSTDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIAotY2xh
c3MgQ3JlZGVudGlhbFN0b3JhZ2UgeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgQ3JlZGVudGlhbFN0
b3JhZ2UgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDcmVkZW50aWFsU3Rv
cmFnZSYgZGVmYXVsdENyZWRlbnRpYWxTdG9yYWdlKCk7CisgICAgc3RhdGljIENyZWRlbnRpYWxT
dG9yYWdlJiBkZWZhdWx0Q3JlZGVudGlhbFN0b3JhZ2UoKTsKIAogICAgIC8vIFdlYkNvcmUgc2Vz
c2lvbiBjcmVkZW50aWFsIHN0b3JhZ2UuCiAgICAgdm9pZCBzZXQoY29uc3QgQ3JlZGVudGlhbCYs
IGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IENyZWRlbnRpYWwgZ2V0KGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOworICAgIENyZWRlbnRpYWwg
Z2V0KGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYpOwogCiAgICAgLy8gT1MgcGVyc2lzdGVudCBzdG9yYWdlLgotICAgIFdFQkNP
UkVfRVhQT1JUIENyZWRlbnRpYWwgZ2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYpOworICAgIENyZWRlbnRpYWwgZ2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNv
bnN0IFByb3RlY3Rpb25TcGFjZSYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckNy
ZWRlbnRpYWxzKCk7CisgICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCk7CiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgdm9pZCBzYXZlVG9QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0aW9u
U3BhY2UmLCBjb25zdCBDcmVkZW50aWFsJik7CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBUaGVzZSBtZXRob2RzIHdvcmsgZm9yIGF1dGhlbnRpY2F0aW9uIHNjaGVtZXMgdGhhdCBz
dXBwb3J0IHNlbmRpbmcgY3JlZGVudGlhbHMgd2l0aG91dCB3YWl0aW5nIGZvciBhIHJlcXVlc3Qu
IEUuZy4sIGZvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uIHNjaGVtZQogICAgIC8vIGEgY2xp
ZW50IHNob3VsZCBhc3N1bWUgdGhhdCBhbGwgcGF0aHMgYXQgb3IgZGVlcGVyIHRoYW4gdGhlIGRl
cHRoIG9mIGEga25vd24gcHJvdGVjdGVkIHJlc291cmNlIHNoYXJlIGFyZSB3aXRoaW4gdGhlIHNh
bWUgcHJvdGVjdGlvbiBzcGFjZS4KICAgICBib29sIHNldChjb25zdCBDcmVkZW50aWFsJiwgY29u
c3QgVVJMJik7IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgVVJMIGNvcnJlc3BvbmRzIHRvIGEga25v
d24gcHJvdGVjdGlvbiBzcGFjZSwgc28gY3JlZGVudGlhbHMgY291bGQgYmUgdXBkYXRlZC4KLSAg
ICBXRUJDT1JFX0VYUE9SVCBDcmVkZW50aWFsIGdldChjb25zdCBVUkwmKTsKKyAgICBDcmVkZW50
aWFsIGdldChjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICBIYXNoTWFwPFByb3RlY3Rpb25T
cGFjZSwgQ3JlZGVudGlhbD4gbV9wcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXA7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxOTc0OTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MyBAQAorMjAxNi0wMy0wMyAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBDcmVkZW50aWFs
U3RvcmFnZSB3aXRoIE5ldHdvcmtTZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZy5oOgorICAgICAgICBBZGRlZCBjb21waWxlLXRp
bWUgZmxhZyB0byBoZWxwIHVzIGJlIGFibGUgdG8ga2VlcCB0cmFjayBhbmQgcmVtb3ZlIHRoaXMg
Y29kZSB3aGVuIHdlIGNhbi4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2suaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpwZW5kaW5nRG93bmxvYWRM
b2NhdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJDYWNoZWRDcmVkZW50aWFscyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2Vzc2lvbklEKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6YXBwbHlCYXNpY0F1dGhvcml6YXRpb25IZWFkZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrRGF0YVRhc2s6Ok5ldHdvcmtEYXRhVGFzayk6CisgICAgICAgIFVzZSBhIGNyZWRlbnRpYWwg
c3RvcmFnZSBhbmQgcHJlZW1wdGl2ZWx5IGFwcGx5IGJhc2ljIGF1dGhlbnRpY2F0aW9uIGhlYWRl
cnMgaWYgd2UgaGF2ZSBjcmVkZW50aWFscyBmcm9tIHRoZSBzdG9yYWdlLgorICAgICAgICBUaGlz
IGlzIGFuYWxvZ291cyB0byBjb2RlIGluIFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5l
Y3Rpb24uCisgICAgICAgIAorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmRpZFJl
Y2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICBNYWtlIHRoaXMgbG9vayBtb3JlIGxpa2UgUmVzb3Vy
Y2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS4KKyAgICAgICAgVGhl
IGNhbGwgdG8gdHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uIHdhcyBtb3ZlZCBmcm9tIHRo
ZSBkZWxlZ2F0ZSBjYWxsYmFjayB0byBoZXJlLgorICAgICAgICAKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6CisgICAgICAgIFVz
ZSBjcmVkZW50aWFscyBmcm9tIHRoZSBjcmVkZW50aWFsIHN0b3JhZ2UgaWYgdGhleSBleGlzdC4g
IFRoaXMgaXMgYW5hbG9nb3VzIHRvIGNvZGUgaW4gUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVx
dWVzdC4KKyAgICAgICAgCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6dHJ5UGFz
c3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKToKKyAgICAgICAgVXNlIGNyZWRlbnRpYWxzIGZyb20g
dGhlIGNyZWRlbnRpYWwgc3RvcmFnZSBpZiB0aGV5IGV4aXN0LiAgVGhpcyBpcyBhbmFsb2dvdXMg
dG8gY29kZSBpbiBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRp
Y2F0aW9uLgorICAgICAgICAKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJM
U2Vzc2lvbjp0YXNrOmRpZFJlY2VpdmVDaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgIElmIHdlIGFyZSBnaXZlbiBhIGNyZWRlbnRpYWwgd2l0aCBDcmVkZW50aWFsUGVyc2lz
dGVuY2VGb3JTZXNzaW9uLCBwdXQgaXQgaW4gdGhlIGNyZWRlbnRpYWwgc3RvcmFnZSBhbmQgZ2l2
ZSAKKyAgICAgICAgQ0ZOZXR3b3JrIGEgY3JlZGVudGlhbCB3aXRoIENyZWRlbnRpYWxQZXJzaXN0
ZW5jZU5vbmUgc28gaXQgd29uJ3QgYXV0b21hdGljYWxseSBiZSB1c2VkIGFnYWluIHVudGlsIHRo
ZSBjcmVkZW50aWFsCisgICAgICAgIHN0b3JhZ2Ugc2F5cyBpdHMgb2sgdG8gdXNlIGFnYWluLiAg
VGhpcyBnaXZlcyB1cyB0aGUgYWJpbGl0eSB0byBjbGVhciBzZXNzaW9uIGNyZWRlbnRpYWxzIHdo
ZW4gbG9nb3V0IGNyZWRlbnRpYWxzIGFyZSB1c2VkLgorICAgICAgICBUaGlzIGlzIGFuYWxvZ291
cyB0byBjb2RlIGluIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwuCisgICAgICAg
IAorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24pOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24pOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6fk5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OmRhdGFUYXNrRm9ySWRlbnRpZmllcik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uOjpjbGVhckNyZWRlbnRpYWxzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
Zm9jdXNlZFdlYlBhZ2UpOgorICAgICAgICBXZSBubyBsb25nZXIgbmVlZCB0byBjbGVhciBjcmVk
ZW50aWFscyBmcm9tIHRoZSBOU1VSTFNlc3Npb25zIGJlY2F1c2Ugd2UgZG9uJ3Qgc3RvcmUgc2Vz
c2lvbiBjcmVkZW50aWFscyBpbiB0aGVtLgorICAgICAgICBJbnN0ZWFkLCBjYWxsaW5nIENyZWRl
bnRpYWxTdG9yYWdlLmNsZWFyQ3JlZGVudGlhbHMgaXMgc3VmZmljaWVudC4KKwogMjAxNi0wMy0w
MiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFByb3Blcmx5IGNhbmNlbCBkb3dubG9hZHMgd2hlbiB1c2luZyBOZXR3b3JrU2Vzc2lvbgpJbmRl
eDogU291cmNlL1dlYktpdDIvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
Y29uZmlnLmgJKHJldmlzaW9uIDE5NzQ5OSkKKysrIFNvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3NiwxMSBAQAogI2lmbmRlZiBVU0VfTkVUV09SS19TRVNT
SU9OCiAjZGVmaW5lIFVTRV9ORVRXT1JLX1NFU1NJT04gMAogI2VuZGlmCisKKy8vIEZJWE1FOiBX
ZSBzaG91bGQgd29yayB0b3dhcmRzIG5vdCB1c2luZyBDcmVkZW50aWFsU3RvcmFnZSBpbiBXZWJL
aXQyLgorI2lmbmRlZiBVU0VfQ1JFREVOVElBTF9TVE9SQUdFCisjZGVmaW5lIFVTRV9DUkVERU5U
SUFMX1NUT1JBR0UgMQorI2VuZGlmCiAjZW5kaWYKIAogI2lmbmRlZiBIQVZFX1NFQ19BQ0NFU1Nf
Q09OVFJPTApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrLmgJKHJldmlzaW9uIDE5NzQ5OSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiAjZGVmaW5lIE5ldHdvcmtEYXRhVGFza19oCiAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9u
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZVR5cGVz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KQEAgLTEyMiwx
MiArMTIzLDEzIEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHBlbmRpbmdEb3dubG9hZExv
Y2F0aW9uKCkgeyByZXR1cm4gbV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbjsgfQogICAgIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCBjdXJyZW50UmVxdWVzdCgpOwogICAgIFN0cmluZyBzdWdnZXN0
ZWRGaWxlbmFtZSgpOwotICAgIGJvb2wgdHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXIpOwogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRp
cmVjdENvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHRyYW5zZmVyU2FuZGJveEV4dGVuc2lv
blRvRG93bmxvYWQoRG93bmxvYWQmKTsKICAgICAKIHByaXZhdGU6CiAgICAgTmV0d29ya0RhdGFU
YXNrKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHMsIFdlYkNvcmU6
OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0KTsKKworICAgIGJvb2wgdHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9u
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIAogICAgIGVudW0gRmFpbHVyZVR5cGUgewogICAgICAgICBOb0Zh
aWx1cmUsCkBAIC0xNDUsNiArMTQ3LDkgQEAgcHJpdmF0ZToKICAgICBEb3dubG9hZElEIG1fcGVu
ZGluZ0Rvd25sb2FkSUQ7CiAgICAgU3RyaW5nIG1fdXNlcjsKICAgICBTdHJpbmcgbV9wYXNzd29y
ZDsKKyNpZiBVU0UoQ1JFREVOVElBTF9TVE9SQUdFKQorICAgIFdlYkNvcmU6OkNyZWRlbnRpYWwg
bV9pbml0aWFsQ3JlZGVudGlhbDsKKyNlbmRpZgogICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzIG1fc3RvcmVkQ3JlZGVudGlhbHM7CiAgICAgU3RyaW5nIG1fbGFzdEhUVFBNZXRob2Q7CiAg
ICAgU3RyaW5nIG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb247CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAxOTc0
OTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpj
cmVhdGVOZXR3b3JrQ29ubmVjCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRl
bnRpYWxzKCkKIHsKICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vz
c2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuY2xlYXJDcmVkZW50aWFscygpOwotI2lmIFVTRShO
RVRXT1JLX1NFU1NJT04pCisjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikgJiYgIVVTRShDUkVERU5U
SUFMX1NUT1JBR0UpCiAgICAgTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2xlYXJD
cmVkZW50aWFscygpOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgJKHJldmlzaW9uIDE5NzQ5OSkKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUzLDkgKzUzLDEyIEBAIHB1YmxpYzoKICAgICBOZXR3b3JrU2Vzc2lvbihUeXBlLCBXZWJDb3Jl
OjpTZXNzaW9uSUQsIEN1c3RvbVByb3RvY29sTWFuYWdlciopOwogICAgIH5OZXR3b3JrU2Vzc2lv
bigpOwogCisgICAgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIHsgcmV0dXJuIG1fc2Vz
c2lvbklEOyB9CiAgICAgc3RhdGljIHZvaWQgc2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKEN1c3Rv
bVByb3RvY29sTWFuYWdlciopOwogICAgIHN0YXRpYyBOZXR3b3JrU2Vzc2lvbiYgZGVmYXVsdFNl
c3Npb24oKTsKKyNpZiAhVVNFKENSRURFTlRJQUxfU1RPUkFHRSkKICAgICB2b2lkIGNsZWFyQ3Jl
ZGVudGlhbHMoKTsKKyNlbmRpZgogCiAgICAgTmV0d29ya0RhdGFUYXNrKiBkYXRhVGFza0Zvcklk
ZW50aWZpZXIoTmV0d29ya0RhdGFUYXNrOjpUYXNrSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHMpOwogCkBAIC02NCw2ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBEb3dubG9hZElE
IHRha2VEb3dubG9hZElEKE5ldHdvcmtEYXRhVGFzazo6VGFza0lkZW50aWZpZXIpOwogICAgIAog
cHJpdmF0ZToKKyAgICBXZWJDb3JlOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgSGFzaE1h
cDxOZXR3b3JrRGF0YVRhc2s6OlRhc2tJZGVudGlmaWVyLCBOZXR3b3JrRGF0YVRhc2sqPiBtX2Rh
dGFUYXNrTWFwV2l0aENyZWRlbnRpYWxzOwogICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrOjpU
YXNrSWRlbnRpZmllciwgTmV0d29ya0RhdGFUYXNrKj4gbV9kYXRhVGFza01hcFdpdGhvdXRDcmVk
ZW50aWFsczsKICAgICBIYXNoTWFwPE5ldHdvcmtEYXRhVGFzazo6VGFza0lkZW50aWZpZXIsIERv
d25sb2FkSUQ+IG1fZG93bmxvYWRNYXA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2
aXNpb24gMTk3NDk5KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDExICszMSwxNCBAQAog
I2ltcG9ydCAiRG93bmxvYWQuaCIKICNpbXBvcnQgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgog
I2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbXBvcnQgIlNlc3Npb25UcmFja2VyLmgiCiAj
aW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0
IDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogQGludGVyZmFjZSBOU1VSTFNlc3Npb25UYXNrICgpCiBA
cHJvcGVydHkgKHJlYWR3cml0ZSwgY29weSkgTlNTdHJpbmcgKl9wYXRoVG9Eb3dubG9hZFRhc2tG
aWxlOwpAQCAtNDMsNiArNDYsMTQgQEAgQGludGVyZmFjZSBOU1VSTFNlc3Npb25UYXNrICgpCiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCisjaWYgVVNFKENSRURFTlRJQUxfU1RPUkFHRSkKK3N0YXRp
YyB2b2lkIGFwcGx5QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3sK
KyAgICBTdHJpbmcgYXV0aGVudGljYXRpb25IZWFkZXIgPSAiQmFzaWMgIiArIGJhc2U2NEVuY29k
ZShTdHJpbmcoY3JlZGVudGlhbC51c2VyKCkgKyAiOiIgKyBjcmVkZW50aWFsLnBhc3N3b3JkKCkp
LnV0ZjgoKSk7CisgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoV2ViQ29yZTo6SFRUUEhl
YWRlck5hbWU6OkF1dGhvcml6YXRpb24sIGF1dGhlbnRpY2F0aW9uSGVhZGVyKTsKK30KKyNlbmRp
ZgorCiBOZXR3b3JrRGF0YVRhc2s6Ok5ldHdvcmtEYXRhVGFzayhOZXR3b3JrU2Vzc2lvbiYgc2Vz
c2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMsIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBz
aG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCkKICAgICA6IG1fZmFpbHVyZVRpbWVyKCp0aGlzLCAmTmV0d29ya0RhdGFUYXNrOjpm
YWlsdXJlVGltZXJGaXJlZCkKICAgICAsIG1fc2Vzc2lvbihzZXNzaW9uKQpAQCAtNjUsOSArNzYs
MzAgQEAgTmV0d29ya0RhdGFUYXNrOjpOZXR3b3JrRGF0YVRhc2soTmV0d29yawogICAgIH0KICAg
ICAKICAgICBhdXRvIHJlcXVlc3QgPSByZXF1ZXN0V2l0aENyZWRlbnRpYWxzOwotICAgIG1fdXNl
ciA9IHJlcXVlc3QudXJsKCkudXNlcigpOwotICAgIG1fcGFzc3dvcmQgPSByZXF1ZXN0LnVybCgp
LnBhc3MoKTsKLSAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CisgICAgYXV0byB1cmwg
PSByZXF1ZXN0LnVybCgpOworICAgIGlmIChzdG9yZWRDcmVkZW50aWFscyA9PSBXZWJDb3JlOjpB
bGxvd1N0b3JlZENyZWRlbnRpYWxzICYmIHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsK
KyAgICAgICAgbV91c2VyID0gdXJsLnVzZXIoKTsKKyAgICAgICAgbV9wYXNzd29yZCA9IHVybC5w
YXNzKCk7CisgICAgICAgIHJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKKyAgICAgICAgdXJs
ID0gcmVxdWVzdC51cmwoKTsKKyAgICAgICAgCisjaWYgVVNFKENSRURFTlRJQUxfU1RPUkFHRSkK
KyAgICAgICAgaWYgKGF1dG8gc3RvcmFnZVNlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6c3RvcmFn
ZVNlc3Npb24obV9zZXNzaW9uLnNlc3Npb25JRCgpKSkgeworICAgICAgICAgICAgaWYgKG1fdXNl
ci5pc0VtcHR5KCkgJiYgbV9wYXNzd29yZC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgbV9p
bml0aWFsQ3JlZGVudGlhbCA9IHN0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLmdl
dCh1cmwpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9u
LT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChXZWJDb3JlOjpDcmVkZW50aWFsKG1fdXNlciwgbV9w
YXNzd29yZCwgV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSksIHVybCk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAg
ICB9CisKKyNpZiBVU0UoQ1JFREVOVElBTF9TVE9SQUdFKQorICAgIGlmICghbV9pbml0aWFsQ3Jl
ZGVudGlhbC5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRGlnZXN0IGF1
dGhlbnRpY2F0aW9uLCBhbmQgUHJveHktQXV0aG9yaXphdGlvbi4KKyAgICAgICAgYXBwbHlCYXNp
Y0F1dGhvcml6YXRpb25IZWFkZXIocmVxdWVzdCwgbV9pbml0aWFsQ3JlZGVudGlhbCk7CisgICAg
fQorI2VuZGlmCiAgICAgCiAgICAgTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QgPSByZXF1ZXN0Lm5z
VVJMUmVxdWVzdChXZWJDb3JlOjpVcGRhdGVIVFRQQm9keSk7CiAgICAgaWYgKHNob3VsZENvbnRl
bnRTbmlmZiA9PSBXZWJDb3JlOjpEb05vdFNuaWZmQ29udGVudCkgewpAQCAtMTA5LDYgKzE0MSwx
NiBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkU2VuZERhdGEodWludDY0CiAKIHZvaWQgTmV0
d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIGNv
bXBsZXRpb25IYW5kbGVyKQogeworICAgIC8vIFByb3h5IGF1dGhlbnRpY2F0aW9uIGlzIGhhbmRs
ZWQgYnkgQ0ZOZXR3b3JrIGludGVybmFsbHkuIFdlIGNhbiBnZXQgaGVyZSBpZiB0aGUgdXNlciBj
YW5jZWxzCisgICAgLy8gQ0ZOZXR3b3JrIGF1dGhlbnRpY2F0aW9uIGRpYWxvZywgYW5kIHdlIHNo
b3VsZG4ndCBhc2sgdGhlIGNsaWVudCB0byBkaXNwbGF5IGFub3RoZXIgb25lIGluIHRoYXQgY2Fz
ZS4KKyAgICBpZiAoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmlzUHJveHkoKSkgeworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpVc2VDcmVkZW50aWFsLCBXZWJDb3JlOjpDcmVkZW50aWFsKCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKHRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjaGFsbGVu
Z2UsIGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fY2xp
ZW50KQogICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2UsIGNv
bXBsZXRpb25IYW5kbGVyKTsKIH0KQEAgLTE2NSw2ICsyMDcsMjMgQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2s6OndpbGxQZXJmb3JtSFRUUFJlZAogICAgICAgICAvLyB3ZSB3YW50IHRvIHN0cmlwIGhl
cmUgYmVjYXVzZSB0aGUgcmVkaXJlY3QgaXMgY3Jvc3Mtb3JpZ2luLgogICAgICAgICByZXF1ZXN0
LmNsZWFySFRUUEF1dGhvcml6YXRpb24oKTsKICAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBPcmln
aW4oKTsKKyNpZiBVU0UoQ1JFREVOVElBTF9TVE9SQUdFKQorICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIE9ubHkgY29uc2lkZXIgYXBwbHlpbmcgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgaWYg
dGhpcyBpcyBhY3R1YWxseSBhIHJlZGlyZWN0IGFuZCB0aGUgcmVkaXJlY3QKKyAgICAgICAgLy8g
VVJMIGRpZG4ndCBpbmNsdWRlIGNyZWRlbnRpYWxzIG9mIGl0cyBvd24uCisgICAgICAgIGlmICht
X3VzZXIuaXNFbXB0eSgpICYmIG1fcGFzc3dvcmQuaXNFbXB0eSgpICYmICFyZWRpcmVjdFJlc3Bv
bnNlLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBzdG9yYWdlU2Vzc2lvbiA9IFNl
c3Npb25UcmFja2VyOjpzdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb24uc2Vzc2lvbklEKCkpKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byBjcmVkZW50aWFsID0gc3RvcmFnZVNlc3Npb24tPmNyZWRlbnRp
YWxTdG9yYWdlKCkuZ2V0KHJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAgICAgIGlmICghY3Jl
ZGVudGlhbC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9pbml0aWFsQ3JlZGVu
dGlhbCA9IGNyZWRlbnRpYWw7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogU3VwcG9ydCBEaWdlc3QgYXV0aGVudGljYXRpb24sIGFuZCBQcm94eS1B
dXRob3JpemF0aW9uLgorICAgICAgICAgICAgICAgICAgICBhcHBseUJhc2ljQXV0aG9yaXphdGlv
bkhlYWRlcihyZXF1ZXN0LCBtX2luaXRpYWxDcmVkZW50aWFsKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgfQogICAgIAogICAgIGlmIChtX2NsaWVudCkKQEAg
LTIyMyw2ICsyODIsMzMgQEAgYm9vbCBOZXR3b3JrRGF0YVRhc2s6OnRyeVBhc3N3b3JkQmFzZWRB
dQogICAgICAgICBtX3Bhc3N3b3JkID0gU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KKworI2lmIFVTRShDUkVERU5USUFMX1NUT1JBR0UpCisgICAgaWYgKG1fc3RvcmVkQ3Jl
ZGVudGlhbHMgPT0gV2ViQ29yZTo6QWxsb3dTdG9yZWRDcmVkZW50aWFscykgeworICAgICAgICBp
ZiAoYXV0byBzdG9yYWdlU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpzdG9yYWdlU2Vzc2lvbiht
X3Nlc3Npb24uc2Vzc2lvbklEKCkpKSB7CisgICAgICAgICAgICBpZiAoIW1faW5pdGlhbENyZWRl
bnRpYWwuaXNFbXB0eSgpIHx8IGNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gVGhlIHN0b3JlZCBjcmVkZW50aWFsIHdhc24ndCBhY2NlcHRlZCwg
c3RvcCB1c2luZyBpdC4KKyAgICAgICAgICAgICAgICAvLyBUaGVyZSBpcyBhIHJhY2UgY29uZGl0
aW9uIGhlcmUsIHNpbmNlIGEgZGlmZmVyZW50IGNyZWRlbnRpYWwgbWlnaHQgaGF2ZSBhbHJlYWR5
IGJlZW4gc3RvcmVkIGJ5IGFub3RoZXIgUmVzb3VyY2VIYW5kbGUsCisgICAgICAgICAgICAgICAg
Ly8gYnV0IHRoZSBvYnNlcnZhYmxlIGVmZmVjdCBzaG91bGQgYmUgdmVyeSBtaW5vciwgaWYgYW55
LgorICAgICAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLnJl
bW92ZShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAoIWNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgp
KSB7CisgICAgICAgICAgICAgICAgYXV0byBjcmVkZW50aWFsID0gc3RvcmFnZVNlc3Npb24tPmNy
ZWRlbnRpYWxTdG9yYWdlKCkuZ2V0KGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKCFjcmVkZW50aWFsLmlzRW1wdHkoKSAmJiBjcmVkZW50aWFsICE9IG1f
aW5pdGlhbENyZWRlbnRpYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNyZWRlbnRp
YWwucGVyc2lzdGVuY2UoKSA9PSBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRw
U3RhdHVzQ29kZSgpID09IDQwMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUg
dGhlIGNyZWRlbnRpYWwgYmFjaywgcG9zc2libHkgYWRkaW5nIGl0IGFzIGEgZGVmYXVsdCBmb3Ig
dGhpcyBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+
Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQoY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZSgpLCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwsIGNyZWRlbnRpYWwpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQorI2VuZGlmCiAgICAgCiAgICAgaWYgKCFjaGFsbGVuZ2UucHJvcG9zZWRDcmVk
ZW50aWFsKCkuaXNFbXB0eSgpICYmICFjaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSkg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uOjpVc2VDcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAxOTc0OTkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTksMTYgKzExOSwzMCBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vz
c2lvbiAqKXNlc3NpCiB7CiAgICAgYXV0byBzdG9yZWRDcmVkZW50aWFscyA9IHNlc3Npb24uY29u
ZmlndXJhdGlvbi5VUkxDcmVkZW50aWFsU3RvcmFnZSA/IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzOjpBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6
OkRvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAgICBpZiAoYXV0byogbmV0d29ya0RhdGFU
YXNrID0gX3Nlc3Npb24tPmRhdGFUYXNrRm9ySWRlbnRpZmllcih0YXNrLnRhc2tJZGVudGlmaWVy
LCBzdG9yZWRDcmVkZW50aWFscykpIHsKKyAgICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKTsKICAgICAgICAgYXV0
byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsK
LSAgICAgICAgYXV0byBjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciA9IFtjb21wbGV0aW9uSGFu
ZGxlckNvcHldKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNw
b3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKKyAgICAgICAg
YXV0byBzZXNzaW9uSUQgPSBfc2Vzc2lvbi0+c2Vzc2lvbklEKCk7CisgICAgICAgIGF1dG8gY2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXJDb3B5LCBzZXNzaW9u
SUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlXShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNy
ZWRlbnRpYWwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weSh0
b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlvbiksIGNyZWRl
bnRpYWwubnNDcmVkZW50aWFsKCkpOworI2lmICFVU0UoQ1JFREVOVElBTF9TVE9SQUdFKQorICAg
ICAgICAgICAgVU5VU0VEX1BBUkFNKHNlc3Npb25JRCk7CisgICAgICAgICAgICBVTlVTRURfUEFS
QU0oYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOworI2Vsc2UKKyAgICAgICAgICAgIGlmIChjcmVk
ZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0gV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlRm9y
U2Vzc2lvbiAmJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5hdXRo
ZW50aWNhdGlvblNjaGVtZSgpICE9IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0
aW9uU2NoZW1lU2VydmVyVHJ1c3RFdmFsdWF0aW9uUmVxdWVzdGVkKSB7CisKKyAgICAgICAgICAg
ICAgICBXZWJDb3JlOjpDcmVkZW50aWFsIHdlYkNyZWRlbnRpYWwoY3JlZGVudGlhbC51c2VyKCks
IGNyZWRlbnRpYWwucGFzc3dvcmQoKSwgV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9u
ZSk7CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6VVJMIHVybFRvU3RvcmU7CisgICAgICAgICAg
ICAgICAgaWYgKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBT
dGF0dXNDb2RlKCkgPT0gNDAxKQorICAgICAgICAgICAgICAgICAgICB1cmxUb1N0b3JlID0gYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCk7CisgICAgICAgICAg
ICAgICAgaWYgKGF1dG8gc3RvcmFnZVNlc3Npb24gPSBXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpz
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlU2Vz
c2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQod2ViQ3JlZGVudGlhbCwgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIHVybFRvU3RvcmUpOworCisgICAgICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KHRvTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURp
c3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwgd2ViQ3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSk7Cisg
ICAgICAgICAgICB9IGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyQ29weSh0b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlv
biksIGNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpOwogICAgICAgICAgICAgQmxvY2tfcmVsZWFz
ZShjb21wbGV0aW9uSGFuZGxlckNvcHkpOwogICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAg
aWYgKG5ldHdvcmtEYXRhVGFzay0+dHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNoYWxs
ZW5nZSwgY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAKICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlQ2hhbGxlbmdlKGNo
YWxsZW5nZSwgY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpOwogICAgIH0KIH0KQEAgLTI0Myw2
ICsyNTcsNyBAQCBOZXR3b3JrU2Vzc2lvbiYgTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTCiB9CiAK
IE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihUeXBlIHR5cGUsIFdlYkNvcmU6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIEN1c3RvbVByb3RvY29sTWFuYWdlciogY3VzdG9tUHJvdG9jb2xNYW5h
Z2VyKQorICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewogICAgIG1fc2Vzc2lvbkRlbGVn
YXRlID0gYWRvcHROUyhbW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhO
ZXR3b3JrU2Vzc2lvbjoqdGhpc10pOwogCkBAIC0yNzIsNiArMjg3LDcgQEAgTmV0d29ya1Nlc3Np
b246On5OZXR3b3JrU2Vzc2lvbigpCiAgICAgW21fc2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3Rv
cmFnZSBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKIH0KIAorI2lmICFVU0UoQ1JFREVOVElBTF9TVE9S
QUdFKQogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJDcmVkZW50aWFscygpCiB7CiAgICAgQVNT
RVJUKG1fZGF0YVRhc2tNYXBXaXRoQ3JlZGVudGlhbHMuaXNFbXB0eSgpKTsKQEAgLTI3OSw2ICsy
OTUsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpjbGVhckNyZWRlbnRpYWxzKCkKICAgICBBU1NF
UlQobV9kb3dubG9hZE1hcC5pc0VtcHR5KCkpOwogICAgIG1fc2Vzc2lvbldpdGhDcmVkZW50aWFs
U3RvcmFnZSA9IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9uOm1fc2Vzc2lv
bldpdGhDcmVkZW50aWFsU3RvcmFnZS5nZXQoKS5jb25maWd1cmF0aW9uIGRlbGVnYXRlOnN0YXRp
Y19jYXN0PGlkPihtX3Nlc3Npb25EZWxlZ2F0ZS5nZXQoKSkgZGVsZWdhdGVRdWV1ZTpbTlNPcGVy
YXRpb25RdWV1ZSBtYWluUXVldWVdXTsKIH0KKyNlbmRpZgogCiBOZXR3b3JrRGF0YVRhc2sqIE5l
dHdvcmtTZXNzaW9uOjpkYXRhVGFza0ZvcklkZW50aWZpZXIoTmV0d29ya0RhdGFUYXNrOjpUYXNr
SWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHMgc3Rv
cmVkQ3JlZGVudGlhbHMpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAJKHJldmlzaW9uIDE5NzQ5OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMCw3ICs1MDAsNyBAQCB2b2lkIFdl
YlByb2Nlc3M6OnNldENhY2hlTW9kZWwodWludDMyX3QgCiB2b2lkIFdlYlByb2Nlc3M6OmNsZWFy
Q2FjaGVkQ3JlZGVudGlhbHMoKQogewogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5jbGVhckNyZWRlbnRpYWxzKCk7
Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKKyNpZiBVU0UoTkVUV09SS19TRVNTSU9OKSAmJiAh
VVNFKENSRURFTlRJQUxfU1RPUkFHRSkKICAgICBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Np
b24oKS5jbGVhckNyZWRlbnRpYWxzKCk7CiAjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272771</attachid>
            <date>2016-03-03 12:53:40 -0800</date>
            <delta_ts>2016-03-03 15:55:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154939-20160303125325.patch</filename>
            <type>text/plain</type>
            <size>21868</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzQ3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTAzLTAzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIENyZWRl
bnRpYWxTdG9yYWdlIHdpdGggTmV0d29ya1Nlc3Npb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgIFRoaXMgbWFrZXMgdGhlIGNyZWRlbnRpYWwtYmFzZWQgaHR0
cCB0ZXN0cyBwYXNzIHdoZW4gdXNpbmcgTmV0d29ya1Nlc3Npb24uCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50
aWFsQmFzZTo6ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICBXRUJDT1JFX0VYUE9SVCBt
b3JlIHRoaW5ncyB0aGF0IGFyZSBuZXdseSB1c2VkIGluIFdlYktpdDIuCisKIDIwMTYtMDMtMDEg
IEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHRoZSBtZWRp
YSBlbGVtZW50J3MgcHJlc2VudGF0aW9uIG1vZGUgcHJvcGVybHkgYWZ0ZXIgZ29pbmcgaW4gYW5k
IG91dCBvZiBmdWxsIHNjcmVlbiB2aWEgdGhlIEZ1bGwgU2NyZWVuIEFQSQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuaAkocmV2aXNp
b24gMTk3NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFs
QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKLSAgICBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBDcmVk
ZW50aWFsJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgY29tcGFyZShjb25zdCBD
cmVkZW50aWFsJiwgY29uc3QgQ3JlZGVudGlhbCYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09S
RV9FWFBPUlQgQ3JlZGVudGlhbEJhc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgJKHJldmlzaW9uIDE5NzQwNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIENyZWRlbnRpYWxTdG9yYWdlJiBkZWZhdWx0Q3JlZGVudGlhbFN0b3JhZ2UoKTsK
IAogICAgIC8vIFdlYkNvcmUgc2Vzc2lvbiBjcmVkZW50aWFsIHN0b3JhZ2UuCi0gICAgdm9pZCBz
ZXQoY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IFVSTCYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0KGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmLCBjb25zdCBVUkwmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBDcmVkZW50
aWFsIGdldChjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKLSAgICB2b2lkIHJlbW92ZShjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZShjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmKTsKIAogICAgIC8vIE9TIHBlcnNpc3RlbnQgc3RvcmFnZS4KICAgICBX
RUJDT1JFX0VYUE9SVCBDcmVkZW50aWFsIGdldEZyb21QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmKTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhl
c2UgbWV0aG9kcyB3b3JrIGZvciBhdXRoZW50aWNhdGlvbiBzY2hlbWVzIHRoYXQgc3VwcG9ydCBz
ZW5kaW5nIGNyZWRlbnRpYWxzIHdpdGhvdXQgd2FpdGluZyBmb3IgYSByZXF1ZXN0LiBFLmcuLCBm
b3IgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbiBzY2hlbWUKICAgICAvLyBhIGNsaWVudCBzaG91
bGQgYXNzdW1lIHRoYXQgYWxsIHBhdGhzIGF0IG9yIGRlZXBlciB0aGFuIHRoZSBkZXB0aCBvZiBh
IGtub3duIHByb3RlY3RlZCByZXNvdXJjZSBzaGFyZSBhcmUgd2l0aGluIHRoZSBzYW1lIHByb3Rl
Y3Rpb24gc3BhY2UuCi0gICAgYm9vbCBzZXQoY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IFVSTCYp
OyAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIFVSTCBjb3JyZXNwb25kcyB0byBhIGtub3duIHByb3Rl
Y3Rpb24gc3BhY2UsIHNvIGNyZWRlbnRpYWxzIGNvdWxkIGJlIHVwZGF0ZWQuCisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBzZXQoY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IFVSTCYpOyAvLyBSZXR1
cm5zIHRydWUgaWYgdGhlIFVSTCBjb3JyZXNwb25kcyB0byBhIGtub3duIHByb3RlY3Rpb24gc3Bh
Y2UsIHNvIGNyZWRlbnRpYWxzIGNvdWxkIGJlIHVwZGF0ZWQuCiAgICAgV0VCQ09SRV9FWFBPUlQg
Q3JlZGVudGlhbCBnZXQoY29uc3QgVVJMJik7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxOTc1MTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw1MyBAQAorMjAxNi0wMy0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBDcmVkZW50aWFsU3RvcmFnZSB3aXRo
IE5ldHdvcmtTZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTQ5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICAqIGNvbmZpZy5oOgorICAgICAgICBBZGRlZCBjb21waWxlLXRpbWUgZmxhZyB0byBoZWxw
IHVzIGJlIGFibGUgdG8ga2VlcCB0cmFjayBhbmQgcmVtb3ZlIHRoaXMgY29kZSB3aGVuIHdlIGNh
bi4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpwZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJDYWNoZWRDcmVkZW50aWFscyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6c2Vzc2lvbklEKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6YXBwbHlCYXNpY0F1
dGhvcml6YXRpb25IZWFkZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6Ok5l
dHdvcmtEYXRhVGFzayk6CisgICAgICAgIFVzZSBhIGNyZWRlbnRpYWwgc3RvcmFnZSBhbmQgcHJl
ZW1wdGl2ZWx5IGFwcGx5IGJhc2ljIGF1dGhlbnRpY2F0aW9uIGhlYWRlcnMgaWYgd2UgaGF2ZSBj
cmVkZW50aWFscyBmcm9tIHRoZSBzdG9yYWdlLgorICAgICAgICBUaGlzIGlzIGFuYWxvZ291cyB0
byBjb2RlIGluIFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24uCisgICAgICAg
IAorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVDaGFsbGVuZ2Up
OgorICAgICAgICBNYWtlIHRoaXMgbG9vayBtb3JlIGxpa2UgUmVzb3VyY2VIYW5kbGU6OmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS4KKyAgICAgICAgVGhlIGNhbGwgdG8gdHJ5UGFz
c3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uIHdhcyBtb3ZlZCBmcm9tIHRoZSBkZWxlZ2F0ZSBjYWxs
YmFjayB0byBoZXJlLgorICAgICAgICAKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
Ojp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6CisgICAgICAgIFVzZSBjcmVkZW50aWFscyBm
cm9tIHRoZSBjcmVkZW50aWFsIHN0b3JhZ2UgaWYgdGhleSBleGlzdC4gIFRoaXMgaXMgYW5hbG9n
b3VzIHRvIGNvZGUgaW4gUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdC4KKyAgICAgICAg
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6dHJ5UGFzc3dvcmRCYXNlZEF1dGhl
bnRpY2F0aW9uKToKKyAgICAgICAgVXNlIGNyZWRlbnRpYWxzIGZyb20gdGhlIGNyZWRlbnRpYWwg
c3RvcmFnZSBpZiB0aGV5IGV4aXN0LiAgVGhpcyBpcyBhbmFsb2dvdXMgdG8gY29kZSBpbiBSZXNv
dXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uLgorICAgICAg
ICAKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
OgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRp
ZFJlY2VpdmVDaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIElmIHdlIGFy
ZSBnaXZlbiBhIGNyZWRlbnRpYWwgd2l0aCBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9u
LCBwdXQgaXQgaW4gdGhlIGNyZWRlbnRpYWwgc3RvcmFnZSBhbmQgZ2l2ZSAKKyAgICAgICAgQ0ZO
ZXR3b3JrIGEgY3JlZGVudGlhbCB3aXRoIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUgc28gaXQg
d29uJ3QgYXV0b21hdGljYWxseSBiZSB1c2VkIGFnYWluIHVudGlsIHRoZSBjcmVkZW50aWFsCisg
ICAgICAgIHN0b3JhZ2Ugc2F5cyBpdHMgb2sgdG8gdXNlIGFnYWluLiAgVGhpcyBnaXZlcyB1cyB0
aGUgYWJpbGl0eSB0byBjbGVhciBzZXNzaW9uIGNyZWRlbnRpYWxzIHdoZW4gbG9nb3V0IGNyZWRl
bnRpYWxzIGFyZSB1c2VkLgorICAgICAgICBUaGlzIGlzIGFuYWxvZ291cyB0byBjb2RlIGluIFJl
c291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwuCisgICAgICAgIAorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbjo6fk5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Np
b246OmRhdGFUYXNrRm9ySWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNz
aW9uOjpjbGVhckNyZWRlbnRpYWxzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjbGVhckNhY2hlZENy
ZWRlbnRpYWxzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Zm9jdXNlZFdlYlBhZ2Up
OgorICAgICAgICBXZSBubyBsb25nZXIgbmVlZCB0byBjbGVhciBjcmVkZW50aWFscyBmcm9tIHRo
ZSBOU1VSTFNlc3Npb25zIGJlY2F1c2Ugd2UgZG9uJ3Qgc3RvcmUgc2Vzc2lvbiBjcmVkZW50aWFs
cyBpbiB0aGVtLgorICAgICAgICBJbnN0ZWFkLCBjYWxsaW5nIENyZWRlbnRpYWxTdG9yYWdlLmNs
ZWFyQ3JlZGVudGlhbHMgaXMgc3VmZmljaWVudC4KKwogMjAxNi0wMy0wMiAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFByb3Blcmx5IGNhbmNl
bCBkb3dubG9hZHMgd2hlbiB1c2luZyBOZXR3b3JrU2Vzc2lvbgpJbmRleDogU291cmNlL1dlYktp
dDIvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvY29uZmlnLmgJKHJldmlz
aW9uIDE5NzQwNykKKysrIFNvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC03Niw2ICs3NiwxMSBAQAogI2lmbmRlZiBVU0VfTkVUV09SS19TRVNTSU9OCiAjZGVmaW5lIFVT
RV9ORVRXT1JLX1NFU1NJT04gMAogI2VuZGlmCisKKy8vIEZJWE1FOiBXZSBzaG91bGQgd29yayB0
b3dhcmRzIG5vdCB1c2luZyBDcmVkZW50aWFsU3RvcmFnZSBpbiBXZWJLaXQyIHRvIG5vdCBoYXZl
IHByb2JsZW1zIHdpdGggZGlnZXN0IGF1dGhlbnRpY2F0aW9uLgorI2lmbmRlZiBVU0VfQ1JFREVO
VElBTF9TVE9SQUdFX1dJVEhfTkVUV09SS19TRVNTSU9OCisjZGVmaW5lIFVTRV9DUkVERU5USUFM
X1NUT1JBR0VfV0lUSF9ORVRXT1JLX1NFU1NJT04gMRMKKyNlbmRpZgogI2VuZGlmCiAKICNpZm5k
ZWYgSEFWRV9TRUNfQUNDRVNTX0NPTlRST0wKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShyZXZpc2lvbiAxOTc0MTMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBOZXR3b3JrRGF0YVRhc2tfaAogCiAjaW5jbHVk
ZSAiU2FuZGJveEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VIYW5kbGVUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJP
cHRpb25zLmg+CkBAIC0xMjIsMTIgKzEyMywxMyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5n
JiBwZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpIHsgcmV0dXJuIG1fcGVuZGluZ0Rvd25sb2FkTG9j
YXRpb247IH0KICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY3VycmVudFJlcXVlc3QoKTsK
ICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKTsKLSAgICBib29sIHRyeVBhc3N3b3JkQmFz
ZWRBdXRoZW50aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYs
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCB0cmFu
c2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2FkJik7CiAgICAgCiBwcml2YXRl
OgogICAgIE5ldHdvcmtEYXRhVGFzayhOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0Ns
aWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzLCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7CisKKyAgICBib29sIHRyeVBhc3N3b3Jk
QmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICAKICAgICBlbnVtIEZhaWx1cmVU
eXBlIHsKICAgICAgICAgTm9GYWlsdXJlLApAQCAtMTQ1LDYgKzE0Nyw5IEBAIHByaXZhdGU6CiAg
ICAgRG93bmxvYWRJRCBtX3BlbmRpbmdEb3dubG9hZElEOwogICAgIFN0cmluZyBtX3VzZXI7CiAg
ICAgU3RyaW5nIG1fcGFzc3dvcmQ7CisjaWYgVVNFKENSRURFTlRJQUxfU1RPUkFHRV9XSVRIX05F
VFdPUktfU0VTU0lPTikKKyAgICBXZWJDb3JlOjpDcmVkZW50aWFsIG1faW5pdGlhbENyZWRlbnRp
YWw7CisjZW5kaWYKICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFscyBtX3N0b3JlZENyZWRl
bnRpYWxzOwogICAgIFN0cmluZyBtX2xhc3RIVFRQTWV0aG9kOwogICAgIFN0cmluZyBtX3BlbmRp
bmdEb3dubG9hZExvY2F0aW9uOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMTk3NDA3KQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzMsNyArMjczLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5l
Ywogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJDYWNoZWRDcmVkZW50aWFscygpCiB7CiAgICAg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFs
U3RvcmFnZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQor
I2lmIFVTRShORVRXT1JLX1NFU1NJT04pICYmICFVU0UoQ1JFREVOVElBTF9TVE9SQUdFX1dJVEhf
TkVUV09SS19TRVNTSU9OKQogICAgIE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNs
ZWFyQ3JlZGVudGlhbHMoKTsKICNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCShyZXZpc2lvbiAxOTc0MTMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Myw5ICs1MywxMiBAQCBwdWJsaWM6CiAgICAgTmV0d29ya1Nlc3Npb24oVHlwZSwgV2Vi
Q29yZTo6U2Vzc2lvbklELCBDdXN0b21Qcm90b2NvbE1hbmFnZXIqKTsKICAgICB+TmV0d29ya1Nl
c3Npb24oKTsKIAorICAgIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSB7IHJldHVybiBt
X3Nlc3Npb25JRDsgfQogICAgIHN0YXRpYyB2b2lkIHNldEN1c3RvbVByb3RvY29sTWFuYWdlcihD
dXN0b21Qcm90b2NvbE1hbmFnZXIqKTsKICAgICBzdGF0aWMgTmV0d29ya1Nlc3Npb24mIGRlZmF1
bHRTZXNzaW9uKCk7CisjaWYgIVVTRShDUkVERU5USUFMX1NUT1JBR0VfV0lUSF9ORVRXT1JLX1NF
U1NJT04pCiAgICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCk7CisjZW5kaWYKIAogICAgIE5ldHdv
cmtEYXRhVGFzayogZGF0YVRhc2tGb3JJZGVudGlmaWVyKE5ldHdvcmtEYXRhVGFzazo6VGFza0lk
ZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzKTsKIApAQCAtNjQsNiArNjcsNyBA
QCBwdWJsaWM6CiAgICAgRG93bmxvYWRJRCB0YWtlRG93bmxvYWRJRChOZXR3b3JrRGF0YVRhc2s6
OlRhc2tJZGVudGlmaWVyKTsKICAgICAKIHByaXZhdGU6CisgICAgV2ViQ29yZTo6U2Vzc2lvbklE
IG1fc2Vzc2lvbklEOwogICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrOjpUYXNrSWRlbnRpZmll
ciwgTmV0d29ya0RhdGFUYXNrKj4gbV9kYXRhVGFza01hcFdpdGhDcmVkZW50aWFsczsKICAgICBI
YXNoTWFwPE5ldHdvcmtEYXRhVGFzazo6VGFza0lkZW50aWZpZXIsIE5ldHdvcmtEYXRhVGFzayo+
IG1fZGF0YVRhc2tNYXBXaXRob3V0Q3JlZGVudGlhbHM7CiAgICAgSGFzaE1hcDxOZXR3b3JrRGF0
YVRhc2s6OlRhc2tJZGVudGlmaWVyLCBEb3dubG9hZElEPiBtX2Rvd25sb2FkTWFwOwpJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0JKHJldmlzaW9uIDE5NzQxMykKKysrIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSwxMSArMzEsMTQgQEAKICNpbXBvcnQgIkRvd25sb2FkLmgiCiAjaW1wb3J0ICJE
b3dubG9hZFByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW1w
b3J0ICJTZXNzaW9uVHJhY2tlci5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0NGTmV0d29ya1NQSS5oPgorI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDx3
dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIEBpbnRlcmZh
Y2UgTlNVUkxTZXNzaW9uVGFzayAoKQogQHByb3BlcnR5IChyZWFkd3JpdGUsIGNvcHkpIE5TU3Ry
aW5nICpfcGF0aFRvRG93bmxvYWRUYXNrRmlsZTsKQEAgLTQzLDYgKzQ2LDE0IEBAIEBpbnRlcmZh
Y2UgTlNVUkxTZXNzaW9uVGFzayAoKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorI2lmIFVTRShD
UkVERU5USUFMX1NUT1JBR0VfV0lUSF9ORVRXT1JLX1NFU1NJT04pCitzdGF0aWMgdm9pZCBhcHBs
eUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCit7CisgICAgU3RyaW5n
IGF1dGhlbnRpY2F0aW9uSGVhZGVyID0gIkJhc2ljICIgKyBiYXNlNjRFbmNvZGUoU3RyaW5nKGNy
ZWRlbnRpYWwudXNlcigpICsgIjoiICsgY3JlZGVudGlhbC5wYXNzd29yZCgpKS51dGY4KCkpOwor
ICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjpB
dXRob3JpemF0aW9uLCBhdXRoZW50aWNhdGlvbkhlYWRlcik7Cit9CisjZW5kaWYKKwogTmV0d29y
a0RhdGFUYXNrOjpOZXR3b3JrRGF0YVRhc2soTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdv
cmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzIHN0b3Jl
ZENyZWRlbnRpYWxzLCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVu
dFNuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpCiAg
ICAgOiBtX2ZhaWx1cmVUaW1lcigqdGhpcywgJk5ldHdvcmtEYXRhVGFzazo6ZmFpbHVyZVRpbWVy
RmlyZWQpCiAgICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKQEAgLTY1LDkgKzc2LDMwIEBAIE5ldHdv
cmtEYXRhVGFzazo6TmV0d29ya0RhdGFUYXNrKE5ldHdvcmsKICAgICB9CiAgICAgCiAgICAgYXV0
byByZXF1ZXN0ID0gcmVxdWVzdFdpdGhDcmVkZW50aWFsczsKLSAgICBtX3VzZXIgPSByZXF1ZXN0
LnVybCgpLnVzZXIoKTsKLSAgICBtX3Bhc3N3b3JkID0gcmVxdWVzdC51cmwoKS5wYXNzKCk7Ci0g
ICAgcmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygpOworICAgIGF1dG8gdXJsID0gcmVxdWVzdC51
cmwoKTsKKyAgICBpZiAoc3RvcmVkQ3JlZGVudGlhbHMgPT0gV2ViQ29yZTo6QWxsb3dTdG9yZWRD
cmVkZW50aWFscyAmJiB1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CisgICAgICAgIG1f
dXNlciA9IHVybC51c2VyKCk7CisgICAgICAgIG1fcGFzc3dvcmQgPSB1cmwucGFzcygpOworICAg
ICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CisgICAgICAgIHVybCA9IHJlcXVlc3Qu
dXJsKCk7CisgICAgICAgIAorI2lmIFVTRShDUkVERU5USUFMX1NUT1JBR0VfV0lUSF9ORVRXT1JL
X1NFU1NJT04pCisgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VTZXNzaW9uID0gU2Vzc2lvblRyYWNr
ZXI6OnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbi5zZXNzaW9uSUQoKSkpIHsKKyAgICAgICAgICAg
IGlmIChtX3VzZXIuaXNFbXB0eSgpICYmIG1fcGFzc3dvcmQuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgIG1faW5pdGlhbENyZWRlbnRpYWwgPSBzdG9yYWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0
b3JhZ2UoKS5nZXQodXJsKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdG9y
YWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQoV2ViQ29yZTo6Q3JlZGVudGlhbCht
X3VzZXIsIG1fcGFzc3dvcmQsIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpLCB1
cmwpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisjZW5kaWYKKyAgICB9CisKKyNpZiBVU0UoQ1JFREVOVElBTF9TVE9SQUdFX1dJVEhf
TkVUV09SS19TRVNTSU9OKQorICAgIGlmICghbV9pbml0aWFsQ3JlZGVudGlhbC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRGlnZXN0IGF1dGhlbnRpY2F0aW9uLCBhbmQg
UHJveHktQXV0aG9yaXphdGlvbi4KKyAgICAgICAgYXBwbHlCYXNpY0F1dGhvcml6YXRpb25IZWFk
ZXIocmVxdWVzdCwgbV9pbml0aWFsQ3JlZGVudGlhbCk7CisgICAgfQorI2VuZGlmCiAgICAgCiAg
ICAgTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QgPSByZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3Jl
OjpVcGRhdGVIVFRQQm9keSk7CiAgICAgaWYgKHNob3VsZENvbnRlbnRTbmlmZiA9PSBXZWJDb3Jl
OjpEb05vdFNuaWZmQ29udGVudCkgewpAQCAtMTA5LDYgKzE0MSwxNiBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFzazo6ZGlkU2VuZERhdGEodWludDY0CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRS
ZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBj
aGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQog
eworICAgIC8vIFByb3h5IGF1dGhlbnRpY2F0aW9uIGlzIGhhbmRsZWQgYnkgQ0ZOZXR3b3JrIGlu
dGVybmFsbHkuIFdlIGNhbiBnZXQgaGVyZSBpZiB0aGUgdXNlciBjYW5jZWxzCisgICAgLy8gQ0ZO
ZXR3b3JrIGF1dGhlbnRpY2F0aW9uIGRpYWxvZywgYW5kIHdlIHNob3VsZG4ndCBhc2sgdGhlIGNs
aWVudCB0byBkaXNwbGF5IGFub3RoZXIgb25lIGluIHRoYXQgY2FzZS4KKyAgICBpZiAoY2hhbGxl
bmdlLnByb3RlY3Rpb25TcGFjZSgpLmlzUHJveHkoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCB7
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHRyeVBhc3N3b3JkQmFzZWRB
dXRoZW50aWNhdGlvbihjaGFsbGVuZ2UsIGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNo
YWxsZW5nZShjaGFsbGVuZ2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKIH0KQEAgLTE2NSw2ICsyMDcs
MjMgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2s6OndpbGxQZXJmb3JtSFRUUFJlZAogICAgICAgICAv
LyB3ZSB3YW50IHRvIHN0cmlwIGhlcmUgYmVjYXVzZSB0aGUgcmVkaXJlY3QgaXMgY3Jvc3Mtb3Jp
Z2luLgogICAgICAgICByZXF1ZXN0LmNsZWFySFRUUEF1dGhvcml6YXRpb24oKTsKICAgICAgICAg
cmVxdWVzdC5jbGVhckhUVFBPcmlnaW4oKTsKKyNpZiBVU0UoQ1JFREVOVElBTF9TVE9SQUdFX1dJ
VEhfTkVUV09SS19TRVNTSU9OKQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE9ubHkgY29uc2lk
ZXIgYXBwbHlpbmcgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgaWYgdGhpcyBpcyBhY3R1YWxs
eSBhIHJlZGlyZWN0IGFuZCB0aGUgcmVkaXJlY3QKKyAgICAgICAgLy8gVVJMIGRpZG4ndCBpbmNs
dWRlIGNyZWRlbnRpYWxzIG9mIGl0cyBvd24uCisgICAgICAgIGlmIChtX3VzZXIuaXNFbXB0eSgp
ICYmIG1fcGFzc3dvcmQuaXNFbXB0eSgpICYmICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7
CisgICAgICAgICAgICBpZiAoYXV0byBzdG9yYWdlU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpz
dG9yYWdlU2Vzc2lvbihtX3Nlc3Npb24uc2Vzc2lvbklEKCkpKSB7CisgICAgICAgICAgICAgICAg
YXV0byBjcmVkZW50aWFsID0gc3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0
KHJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9pbml0aWFsQ3JlZGVudGlhbCA9IGNyZWRlbnRp
YWw7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
U3VwcG9ydCBEaWdlc3QgYXV0aGVudGljYXRpb24sIGFuZCBQcm94eS1BdXRob3JpemF0aW9uLgor
ICAgICAgICAgICAgICAgICAgICBhcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihyZXF1ZXN0
LCBtX2luaXRpYWxDcmVkZW50aWFsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisjZW5kaWYKICAgICB9CiAgICAgCiAgICAgaWYgKG1fY2xpZW50KQpAQCAtMjIzLDYg
KzI4MiwzMyBAQCBib29sIE5ldHdvcmtEYXRhVGFzazo6dHJ5UGFzc3dvcmRCYXNlZEF1CiAgICAg
ICAgIG1fcGFzc3dvcmQgPSBTdHJpbmcoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQor
CisjaWYgVVNFKENSRURFTlRJQUxfU1RPUkFHRV9XSVRIX05FVFdPUktfU0VTU0lPTikKKyAgICBp
ZiAobV9zdG9yZWRDcmVkZW50aWFscyA9PSBXZWJDb3JlOjpBbGxvd1N0b3JlZENyZWRlbnRpYWxz
KSB7CisgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6OnN0
b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbi5zZXNzaW9uSUQoKSkpIHsKKyAgICAgICAgICAgIGlmICgh
bV9pbml0aWFsQ3JlZGVudGlhbC5pc0VtcHR5KCkgfHwgY2hhbGxlbmdlLnByZXZpb3VzRmFpbHVy
ZUNvdW50KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgc3RvcmVkIGNyZWRlbnRpYWwgd2Fz
bid0IGFjY2VwdGVkLCBzdG9wIHVzaW5nIGl0LgorICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlz
IGEgcmFjZSBjb25kaXRpb24gaGVyZSwgc2luY2UgYSBkaWZmZXJlbnQgY3JlZGVudGlhbCBtaWdo
dCBoYXZlIGFscmVhZHkgYmVlbiBzdG9yZWQgYnkgYW5vdGhlciBSZXNvdXJjZUhhbmRsZSwKKyAg
ICAgICAgICAgICAgICAvLyBidXQgdGhlIG9ic2VydmFibGUgZWZmZWN0IHNob3VsZCBiZSB2ZXJ5
IG1pbm9yLCBpZiBhbnkuCisgICAgICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNyZWRlbnRp
YWxTdG9yYWdlKCkucmVtb3ZlKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghY2hhbGxlbmdlLnByZXZpb3Vz
RmFpbHVyZUNvdW50KCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGNyZWRlbnRpYWwgPSBzdG9y
YWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQoY2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNyZWRlbnRpYWwuaXNFbXB0eSgpICYmIGNy
ZWRlbnRpYWwgIT0gbV9pbml0aWFsQ3JlZGVudGlhbCkgeworICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpID09IFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJz
aXN0ZW5jZU5vbmUpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVS
ZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBTdG9yZSB0aGUgY3JlZGVudGlhbCBiYWNrLCBwb3NzaWJseSBhZGRpbmcgaXQgYXMg
YSBkZWZhdWx0IGZvciB0aGlzIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0
b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChjcmVkZW50aWFsLCBjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlKCksIGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKSk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwg
Y3JlZGVudGlhbCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyNlbmRpZgogICAgIAogICAgIGlmICgh
Y2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLmlzRW1wdHkoKSAmJiAhY2hhbGxlbmdlLnBy
ZXZpb3VzRmFpbHVyZUNvdW50KCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgY2hhbGxlbmdlLnBy
b3Bvc2VkQ3JlZGVudGlhbCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24g
MTk3NDEzKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE5LDE2ICsxMTksMzAgQEAgLSAodm9p
ZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogewogICAgIGF1dG8gc3RvcmVkQ3Jl
ZGVudGlhbHMgPSBzZXNzaW9uLmNvbmZpZ3VyYXRpb24uVVJMQ3JlZGVudGlhbFN0b3JhZ2UgPyBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsczo6QWxsb3dTdG9yZWRDcmVkZW50aWFscyA6IFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzOjpEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7CiAgICAg
aWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IF9zZXNzaW9uLT5kYXRhVGFza0ZvcklkZW50aWZp
ZXIodGFzay50YXNrSWRlbnRpZmllciwgc3RvcmVkQ3JlZGVudGlhbHMpKSB7CisgICAgICAgIFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNo
YWxsZW5nZSk7CiAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29w
eShjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgICAgIGF1dG8gY2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXJDb3B5XShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwm
IGNyZWRlbnRpYWwpCisgICAgICAgIGF1dG8gc2Vzc2lvbklEID0gX3Nlc3Npb24tPnNlc3Npb25J
RCgpOworICAgICAgICBhdXRvIGNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyID0gW2NvbXBsZXRp
b25IYW5kbGVyQ29weSwgc2Vzc2lvbklELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZV0oV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBX
ZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlckNvcHkodG9OU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24oZGlzcG9zaXRpb24pLCBjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpKTsKKyNpZiAhVVNFKENS
RURFTlRJQUxfU1RPUkFHRV9XSVRIX05FVFdPUktfU0VTU0lPTikKKyAgICAgICAgICAgIFVOVVNF
RF9QQVJBTShzZXNzaW9uSUQpOworICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKTsKKyNlbHNlCisgICAgICAgICAgICBpZiAoY3JlZGVudGlhbC5wZXJzaXN0
ZW5jZSgpID09IFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb24gJiYgYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuYXV0aGVudGljYXRpb25TY2hl
bWUoKSAhPSBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVNlcnZl
clRydXN0RXZhbHVhdGlvblJlcXVlc3RlZCkgeworCisgICAgICAgICAgICAgICAgV2ViQ29yZTo6
Q3JlZGVudGlhbCBub25QZXJzaXN0ZW50Q3JlZGVudGlhbChjcmVkZW50aWFsLnVzZXIoKSwgY3Jl
ZGVudGlhbC5wYXNzd29yZCgpLCBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsK
KyAgICAgICAgICAgICAgICBXZWJDb3JlOjpVUkwgdXJsVG9TdG9yZTsKKyAgICAgICAgICAgICAg
ICBpZiAoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1
c0NvZGUoKSA9PSA0MDEpCisgICAgICAgICAgICAgICAgICAgIHVybFRvU3RvcmUgPSBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsKKyAgICAgICAgICAgICAg
ICBpZiAoYXV0byBzdG9yYWdlU2Vzc2lvbiA9IFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OnN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9u
LT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChub25QZXJzaXN0ZW50Q3JlZGVudGlhbCwgYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIHVybFRvU3RvcmUpOworCisgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KHRvTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwgbm9uUGVyc2lzdGVudENyZWRlbnRpYWwubnND
cmVkZW50aWFsKCkpOworICAgICAgICAgICAgfSBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlckNvcHkodG9OU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9z
aXRpb24oZGlzcG9zaXRpb24pLCBjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpKTsKICAgICAgICAg
ICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRsZXJDb3B5KTsKICAgICAgICAgfTsKLSAg
ICAgICAgCi0gICAgICAgIGlmIChuZXR3b3JrRGF0YVRhc2stPnRyeVBhc3N3b3JkQmFzZWRBdXRo
ZW50aWNhdGlvbihjaGFsbGVuZ2UsIGNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgCiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVj
ZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2UsIGNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKICAg
ICB9CiB9CkBAIC0yNDMsNiArMjU3LDcgQEAgTmV0d29ya1Nlc3Npb24mIE5ldHdvcmtTZXNzaW9u
OjpkZWZhdWx0UwogfQogCiBOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oVHlwZSB0eXBl
LCBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDdXN0b21Qcm90b2NvbE1hbmFnZXIqIGN1
c3RvbVByb3RvY29sTWFuYWdlcikKKyAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKIHsKICAg
ICBtX3Nlc3Npb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUg
YWxsb2NdIGluaXRXaXRoTmV0d29ya1Nlc3Npb246KnRoaXNdKTsKIApAQCAtMjcyLDYgKzI4Nyw3
IEBAIE5ldHdvcmtTZXNzaW9uOjp+TmV0d29ya1Nlc3Npb24oKQogICAgIFttX3Nlc3Npb25XaXRo
b3V0Q3JlZGVudGlhbFN0b3JhZ2UgaW52YWxpZGF0ZUFuZENhbmNlbF07CiB9CiAKKyNpZiAhVVNF
KENSRURFTlRJQUxfU1RPUkFHRV9XSVRIX05FVFdPUktfU0VTU0lPTikKIHZvaWQgTmV0d29ya1Nl
c3Npb246OmNsZWFyQ3JlZGVudGlhbHMoKQogewogICAgIEFTU0VSVChtX2RhdGFUYXNrTWFwV2l0
aENyZWRlbnRpYWxzLmlzRW1wdHkoKSk7CkBAIC0yNzksNiArMjk1LDcgQEAgdm9pZCBOZXR3b3Jr
U2Vzc2lvbjo6Y2xlYXJDcmVkZW50aWFscygpCiAgICAgQVNTRVJUKG1fZG93bmxvYWRNYXAuaXNF
bXB0eSgpKTsKICAgICBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UgPSBbTlNVUkxTZXNz
aW9uIHNlc3Npb25XaXRoQ29uZmlndXJhdGlvbjptX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3Jh
Z2UuZ2V0KCkuY29uZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4obV9zZXNzaW9u
RGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVl
XV07CiB9CisjZW5kaWYKIAogTmV0d29ya0RhdGFUYXNrKiBOZXR3b3JrU2Vzc2lvbjo6ZGF0YVRh
c2tGb3JJZGVudGlmaWVyKE5ldHdvcmtEYXRhVGFzazo6VGFza0lkZW50aWZpZXIgdGFza0lkZW50
aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzKQogewpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAx
OTc0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDAsNyArNTAwLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRDYWNoZU1v
ZGVsKHVpbnQzMl90IAogdm9pZCBXZWJQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKCkK
IHsKICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNy
ZWRlbnRpYWxTdG9yYWdlKCkuY2xlYXJDcmVkZW50aWFscygpOwotI2lmIFVTRShORVRXT1JLX1NF
U1NJT04pCisjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikgJiYgIVVTRShDUkVERU5USUFMX1NUT1JB
R0VfV0lUSF9ORVRXT1JLX1NFU1NJT04pCiAgICAgTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNz
aW9uKCkuY2xlYXJDcmVkZW50aWFscygpOwogI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272784</attachid>
            <date>2016-03-03 15:55:03 -0800</date>
            <delta_ts>2016-03-03 15:55:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154939-20160303155448.patch</filename>
            <type>text/plain</type>
            <size>21699</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzUxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTAzLTAzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIENyZWRl
bnRpYWxTdG9yYWdlIHdpdGggTmV0d29ya1Nlc3Npb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgIFRoaXMgbWFrZXMgdGhlIGNyZWRlbnRpYWwtYmFzZWQgaHR0
cCB0ZXN0cyBwYXNzIHdoZW4gdXNpbmcgTmV0d29ya1Nlc3Npb24uCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50
aWFsQmFzZTo6ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICBXRUJDT1JFX0VYUE9SVCBt
b3JlIHRoaW5ncyB0aGF0IGFyZSBuZXdseSB1c2VkIGluIFdlYktpdDIuCisKIDIwMTYtMDMtMDMg
IERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IHRoZSAibGFzdCIgdmFsdWUgb2YgaGFuZ2luZy1wdW5jdHVhdGlvbgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuaAkocmV2aXNpb24g
MTk3NTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
LSAgICBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBDcmVkZW50
aWFsJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgY29tcGFyZShjb25zdCBDcmVk
ZW50aWFsJiwgY29uc3QgQ3JlZGVudGlhbCYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9F
WFBPUlQgQ3JlZGVudGlhbEJhc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgJKHJldmlzaW9uIDE5NzUxOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDMsOSArNDMsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIENyZWRlbnRpYWxTdG9yYWdlJiBkZWZhdWx0Q3JlZGVudGlhbFN0b3JhZ2UoKTsKIAog
ICAgIC8vIFdlYkNvcmUgc2Vzc2lvbiBjcmVkZW50aWFsIHN0b3JhZ2UuCi0gICAgdm9pZCBzZXQo
Y29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IFVSTCYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0KGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBQcm90
ZWN0aW9uU3BhY2UmLCBjb25zdCBVUkwmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBDcmVkZW50aWFs
IGdldChjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKLSAgICB2b2lkIHJlbW92ZShjb25zdCBQcm90
ZWN0aW9uU3BhY2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZShjb25zdCBQcm90
ZWN0aW9uU3BhY2UmKTsKIAogICAgIC8vIE9TIHBlcnNpc3RlbnQgc3RvcmFnZS4KICAgICBXRUJD
T1JFX0VYUE9SVCBDcmVkZW50aWFsIGdldEZyb21QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90
ZWN0aW9uU3BhY2UmKTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2Ug
bWV0aG9kcyB3b3JrIGZvciBhdXRoZW50aWNhdGlvbiBzY2hlbWVzIHRoYXQgc3VwcG9ydCBzZW5k
aW5nIGNyZWRlbnRpYWxzIHdpdGhvdXQgd2FpdGluZyBmb3IgYSByZXF1ZXN0LiBFLmcuLCBmb3Ig
SFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbiBzY2hlbWUKICAgICAvLyBhIGNsaWVudCBzaG91bGQg
YXNzdW1lIHRoYXQgYWxsIHBhdGhzIGF0IG9yIGRlZXBlciB0aGFuIHRoZSBkZXB0aCBvZiBhIGtu
b3duIHByb3RlY3RlZCByZXNvdXJjZSBzaGFyZSBhcmUgd2l0aGluIHRoZSBzYW1lIHByb3RlY3Rp
b24gc3BhY2UuCi0gICAgYm9vbCBzZXQoY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IFVSTCYpOyAv
LyBSZXR1cm5zIHRydWUgaWYgdGhlIFVSTCBjb3JyZXNwb25kcyB0byBhIGtub3duIHByb3RlY3Rp
b24gc3BhY2UsIHNvIGNyZWRlbnRpYWxzIGNvdWxkIGJlIHVwZGF0ZWQuCisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBzZXQoY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IFVSTCYpOyAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlIFVSTCBjb3JyZXNwb25kcyB0byBhIGtub3duIHByb3RlY3Rpb24gc3BhY2Us
IHNvIGNyZWRlbnRpYWxzIGNvdWxkIGJlIHVwZGF0ZWQuCiAgICAgV0VCQ09SRV9FWFBPUlQgQ3Jl
ZGVudGlhbCBnZXQoY29uc3QgVVJMJik7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxOTc1MTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw1MyBAQAorMjAxNi0wMy0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBDcmVkZW50aWFsU3RvcmFnZSB3aXRoIE5l
dHdvcmtTZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTQ5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICAqIGNvbmZpZy5oOgorICAgICAgICBBZGRlZCBjb21waWxlLXRpbWUgZmxhZyB0byBoZWxwIHVz
IGJlIGFibGUgdG8ga2VlcCB0cmFjayBhbmQgcmVtb3ZlIHRoaXMgY29kZSB3aGVuIHdlIGNhbi4K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrOjpwZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6Y2xlYXJDYWNoZWRDcmVkZW50aWFscyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbjo6c2Vzc2lvbklEKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6YXBwbHlCYXNpY0F1dGhv
cml6YXRpb25IZWFkZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6Ok5ldHdv
cmtEYXRhVGFzayk6CisgICAgICAgIFVzZSBhIGNyZWRlbnRpYWwgc3RvcmFnZSBhbmQgcHJlZW1w
dGl2ZWx5IGFwcGx5IGJhc2ljIGF1dGhlbnRpY2F0aW9uIGhlYWRlcnMgaWYgd2UgaGF2ZSBjcmVk
ZW50aWFscyBmcm9tIHRoZSBzdG9yYWdlLgorICAgICAgICBUaGlzIGlzIGFuYWxvZ291cyB0byBj
b2RlIGluIFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24uCisgICAgICAgIAor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgor
ICAgICAgICBNYWtlIHRoaXMgbG9vayBtb3JlIGxpa2UgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS4KKyAgICAgICAgVGhlIGNhbGwgdG8gdHJ5UGFzc3dv
cmRCYXNlZEF1dGhlbnRpY2F0aW9uIHdhcyBtb3ZlZCBmcm9tIHRoZSBkZWxlZ2F0ZSBjYWxsYmFj
ayB0byBoZXJlLgorICAgICAgICAKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjp3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6CisgICAgICAgIFVzZSBjcmVkZW50aWFscyBmcm9t
IHRoZSBjcmVkZW50aWFsIHN0b3JhZ2UgaWYgdGhleSBleGlzdC4gIFRoaXMgaXMgYW5hbG9nb3Vz
IHRvIGNvZGUgaW4gUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdC4KKyAgICAgICAgCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6dHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRp
Y2F0aW9uKToKKyAgICAgICAgVXNlIGNyZWRlbnRpYWxzIGZyb20gdGhlIGNyZWRlbnRpYWwgc3Rv
cmFnZSBpZiB0aGV5IGV4aXN0LiAgVGhpcyBpcyBhbmFsb2dvdXMgdG8gY29kZSBpbiBSZXNvdXJj
ZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uLgorICAgICAgICAK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgor
ICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZFJl
Y2VpdmVDaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIElmIHdlIGFyZSBn
aXZlbiBhIGNyZWRlbnRpYWwgd2l0aCBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uLCBw
dXQgaXQgaW4gdGhlIGNyZWRlbnRpYWwgc3RvcmFnZSBhbmQgZ2l2ZSAKKyAgICAgICAgQ0ZOZXR3
b3JrIGEgY3JlZGVudGlhbCB3aXRoIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUgc28gaXQgd29u
J3QgYXV0b21hdGljYWxseSBiZSB1c2VkIGFnYWluIHVudGlsIHRoZSBjcmVkZW50aWFsCisgICAg
ICAgIHN0b3JhZ2Ugc2F5cyBpdHMgb2sgdG8gdXNlIGFnYWluLiAgVGhpcyBnaXZlcyB1cyB0aGUg
YWJpbGl0eSB0byBjbGVhciBzZXNzaW9uIGNyZWRlbnRpYWxzIHdoZW4gbG9nb3V0IGNyZWRlbnRp
YWxzIGFyZSB1c2VkLgorICAgICAgICBUaGlzIGlzIGFuYWxvZ291cyB0byBjb2RlIGluIFJlc291
cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwuCisgICAgICAgIAorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbjo6fk5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246
OmRhdGFUYXNrRm9ySWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
OjpjbGVhckNyZWRlbnRpYWxzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRl
bnRpYWxzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Zm9jdXNlZFdlYlBhZ2UpOgor
ICAgICAgICBXZSBubyBsb25nZXIgbmVlZCB0byBjbGVhciBjcmVkZW50aWFscyBmcm9tIHRoZSBO
U1VSTFNlc3Npb25zIGJlY2F1c2Ugd2UgZG9uJ3Qgc3RvcmUgc2Vzc2lvbiBjcmVkZW50aWFscyBp
biB0aGVtLgorICAgICAgICBJbnN0ZWFkLCBjYWxsaW5nIENyZWRlbnRpYWxTdG9yYWdlLmNsZWFy
Q3JlZGVudGlhbHMgaXMgc3VmZmljaWVudC4KKwogMjAxNi0wMy0wMyAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQgQ0ZOZXR3b3JrIHN0b3JhZ2UgcGFydGl0
aW9uaW5nIFNQSQpJbmRleDogU291cmNlL1dlYktpdDIvY29uZmlnLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvY29uZmlnLmgJKHJldmlzaW9uIDE5NzUxOSkKKysrIFNvdXJjZS9XZWJL
aXQyL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3NiwxMSBAQAogI2lmbmRlZiBV
U0VfTkVUV09SS19TRVNTSU9OCiAjZGVmaW5lIFVTRV9ORVRXT1JLX1NFU1NJT04gMAogI2VuZGlm
CisKKy8vIEZJWE1FOiBXZSBzaG91bGQgd29yayB0b3dhcmRzIG5vdCB1c2luZyBDcmVkZW50aWFs
U3RvcmFnZSBpbiBXZWJLaXQyIHRvIG5vdCBoYXZlIHByb2JsZW1zIHdpdGggZGlnZXN0IGF1dGhl
bnRpY2F0aW9uLgorI2lmbmRlZiBVU0VfQ1JFREVOVElBTF9TVE9SQUdFX1dJVEhfTkVUV09SS19T
RVNTSU9OCisjZGVmaW5lIFVTRV9DUkVERU5USUFMX1NUT1JBR0VfV0lUSF9ORVRXT1JLX1NFU1NJ
T04gMQorI2VuZGlmCiAjZW5kaWYKIAogI2lmbmRlZiBIQVZFX1NFQ19BQ0NFU1NfQ09OVFJPTApJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
LmgJKHJldmlzaW9uIDE5NzUxOSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFzay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5l
IE5ldHdvcmtEYXRhVGFza19oCiAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRl
clR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZVR5cGVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KQEAgLTEyMiwxMiArMTIzLDEz
IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkg
eyByZXR1cm4gbV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbjsgfQogICAgIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCBjdXJyZW50UmVxdWVzdCgpOwogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFt
ZSgpOwotICAgIGJvb2wgdHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIp
OwogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBs
ZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxv
YWQoRG93bmxvYWQmKTsKICAgICAKIHByaXZhdGU6CiAgICAgTmV0d29ya0RhdGFUYXNrKE5ldHdv
cmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHMsIFdlYkNvcmU6OkNvbnRlbnRT
bmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0KTsKKworICAgIGJvb2wgdHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXIpOwogICAgIAogICAgIGVudW0gRmFpbHVyZVR5cGUgewogICAgICAgICBOb0ZhaWx1cmUsCkBA
IC0xNDUsNiArMTQ3LDkgQEAgcHJpdmF0ZToKICAgICBEb3dubG9hZElEIG1fcGVuZGluZ0Rvd25s
b2FkSUQ7CiAgICAgU3RyaW5nIG1fdXNlcjsKICAgICBTdHJpbmcgbV9wYXNzd29yZDsKKyNpZiBV
U0UoQ1JFREVOVElBTF9TVE9SQUdFX1dJVEhfTkVUV09SS19TRVNTSU9OKQorICAgIFdlYkNvcmU6
OkNyZWRlbnRpYWwgbV9pbml0aWFsQ3JlZGVudGlhbDsKKyNlbmRpZgogICAgIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzIG1fc3RvcmVkQ3JlZGVudGlhbHM7CiAgICAgU3RyaW5nIG1fbGFzdEhU
VFBNZXRob2Q7CiAgICAgU3RyaW5nIG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb247CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShy
ZXZpc2lvbiAxOTc1MTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVh
ckNhY2hlZENyZWRlbnRpYWxzKCkKIHsKICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1
bHRTdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuY2xlYXJDcmVkZW50aWFscygp
OwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikgJiYg
IVVTRShDUkVERU5USUFMX1NUT1JBR0VfV0lUSF9ORVRXT1JLX1NFU1NJT04pCiAgICAgTmV0d29y
a1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2xlYXJDcmVkZW50aWFscygpOwogI2VuZGlmCiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmgJKHJldmlzaW9uIDE5NzUxOSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDkgKzUzLDEyIEBAIHB1YmxpYzoK
ICAgICBOZXR3b3JrU2Vzc2lvbihUeXBlLCBXZWJDb3JlOjpTZXNzaW9uSUQsIEN1c3RvbVByb3Rv
Y29sTWFuYWdlciopOwogICAgIH5OZXR3b3JrU2Vzc2lvbigpOwogCisgICAgV2ViQ29yZTo6U2Vz
c2lvbklEIHNlc3Npb25JRCgpIHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAgICAgc3RhdGljIHZv
aWQgc2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKEN1c3RvbVByb3RvY29sTWFuYWdlciopOwogICAg
IHN0YXRpYyBOZXR3b3JrU2Vzc2lvbiYgZGVmYXVsdFNlc3Npb24oKTsKKyNpZiAhVVNFKENSRURF
TlRJQUxfU1RPUkFHRV9XSVRIX05FVFdPUktfU0VTU0lPTikKICAgICB2b2lkIGNsZWFyQ3JlZGVu
dGlhbHMoKTsKKyNlbmRpZgogCiAgICAgTmV0d29ya0RhdGFUYXNrKiBkYXRhVGFza0ZvcklkZW50
aWZpZXIoTmV0d29ya0RhdGFUYXNrOjpUYXNrSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHMpOwogCkBAIC02NCw2ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBEb3dubG9hZElEIHRh
a2VEb3dubG9hZElEKE5ldHdvcmtEYXRhVGFzazo6VGFza0lkZW50aWZpZXIpOwogICAgIAogcHJp
dmF0ZToKKyAgICBXZWJDb3JlOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgSGFzaE1hcDxO
ZXR3b3JrRGF0YVRhc2s6OlRhc2tJZGVudGlmaWVyLCBOZXR3b3JrRGF0YVRhc2sqPiBtX2RhdGFU
YXNrTWFwV2l0aENyZWRlbnRpYWxzOwogICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrOjpUYXNr
SWRlbnRpZmllciwgTmV0d29ya0RhdGFUYXNrKj4gbV9kYXRhVGFza01hcFdpdGhvdXRDcmVkZW50
aWFsczsKICAgICBIYXNoTWFwPE5ldHdvcmtEYXRhVGFzazo6VGFza0lkZW50aWZpZXIsIERvd25s
b2FkSUQ+IG1fZG93bmxvYWRNYXA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2aXNp
b24gMTk3NTE5KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDE4ICszMSwyNyBAQAogI2lt
cG9ydCAiRG93bmxvYWQuaCIKICNpbXBvcnQgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2lt
cG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbXBvcnQgIlNlc3Npb25UcmFja2VyLmgiCiAjaW1w
b3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
ZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3
dGYvdGV4dC9CYXNlNjQuaD4KIAogQGludGVyZmFjZSBOU1VSTFNlc3Npb25UYXNrICgpCiBAcHJv
cGVydHkgKHJlYWR3cml0ZSwgY29weSkgTlNTdHJpbmcgKl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxl
OwogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKKyNpZiBVU0UoQ1JFREVOVElBTF9TVE9SQUdF
X1dJVEhfTkVUV09SS19TRVNTSU9OKQorc3RhdGljIHZvaWQgYXBwbHlCYXNpY0F1dGhvcml6YXRp
b25IZWFkZXIoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3Jl
OjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKQoreworICAgIFN0cmluZyBhdXRoZW50aWNhdGlvbkhl
YWRlciA9ICJCYXNpYyAiICsgYmFzZTY0RW5jb2RlKFN0cmluZyhjcmVkZW50aWFsLnVzZXIoKSAr
ICI6IiArIGNyZWRlbnRpYWwucGFzc3dvcmQoKSkudXRmOCgpKTsKKyAgICByZXF1ZXN0LnNldEhU
VFBIZWFkZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6QXV0aG9yaXphdGlvbiwgYXV0
aGVudGljYXRpb25IZWFkZXIpOworfQorI2VuZGlmCiAKIE5ldHdvcmtEYXRhVGFzazo6TmV0d29y
a0RhdGFUYXNrKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQm
IGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRl
bnRpYWxzLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgV2Vi
Q29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KQogICAgIDogbV9mYWlsdXJlVGlt
ZXIoKnRoaXMsICZOZXR3b3JrRGF0YVRhc2s6OmZhaWx1cmVUaW1lckZpcmVkKQpAQCAtNjYsOSAr
NzUsMzAgQEAgTmV0d29ya0RhdGFUYXNrOjpOZXR3b3JrRGF0YVRhc2soTmV0d29yawogICAgIH0K
ICAgICAKICAgICBhdXRvIHJlcXVlc3QgPSByZXF1ZXN0V2l0aENyZWRlbnRpYWxzOwotICAgIG1f
dXNlciA9IHJlcXVlc3QudXJsKCkudXNlcigpOwotICAgIG1fcGFzc3dvcmQgPSByZXF1ZXN0LnVy
bCgpLnBhc3MoKTsKLSAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CisgICAgYXV0byB1
cmwgPSByZXF1ZXN0LnVybCgpOworICAgIGlmIChzdG9yZWRDcmVkZW50aWFscyA9PSBXZWJDb3Jl
OjpBbGxvd1N0b3JlZENyZWRlbnRpYWxzICYmIHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkp
IHsKKyAgICAgICAgbV91c2VyID0gdXJsLnVzZXIoKTsKKyAgICAgICAgbV9wYXNzd29yZCA9IHVy
bC5wYXNzKCk7CisgICAgICAgIHJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKKyAgICAgICAg
dXJsID0gcmVxdWVzdC51cmwoKTsKKyAgICAKKyNpZiBVU0UoQ1JFREVOVElBTF9TVE9SQUdFX1dJ
VEhfTkVUV09SS19TRVNTSU9OKQorICAgICAgICBpZiAoYXV0byBzdG9yYWdlU2Vzc2lvbiA9IFNl
c3Npb25UcmFja2VyOjpzdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb24uc2Vzc2lvbklEKCkpKSB7Cisg
ICAgICAgICAgICBpZiAobV91c2VyLmlzRW1wdHkoKSAmJiBtX3Bhc3N3b3JkLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICBtX2luaXRpYWxDcmVkZW50aWFsID0gc3RvcmFnZVNlc3Npb24tPmNy
ZWRlbnRpYWxTdG9yYWdlKCkuZ2V0KHVybCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgc3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KFdlYkNvcmU6OkNy
ZWRlbnRpYWwobV91c2VyLCBtX3Bhc3N3b3JkLCBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVu
Y2VOb25lKSwgdXJsKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgfQorCisjaWYgVVNFKENSRURFTlRJQUxfU1RP
UkFHRV9XSVRIX05FVFdPUktfU0VTU0lPTikKKyAgICBpZiAoIW1faW5pdGlhbENyZWRlbnRpYWwu
aXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IERpZ2VzdCBhdXRoZW50aWNh
dGlvbiwgYW5kIFByb3h5LUF1dGhvcml6YXRpb24uCisgICAgICAgIGFwcGx5QmFzaWNBdXRob3Jp
emF0aW9uSGVhZGVyKHJlcXVlc3QsIG1faW5pdGlhbENyZWRlbnRpYWwpOworICAgIH0KKyNlbmRp
ZgogICAgIAogICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVl
c3QoV2ViQ29yZTo6VXBkYXRlSFRUUEJvZHkpOwogICAgIGlmIChzaG91bGRDb250ZW50U25pZmYg
PT0gV2ViQ29yZTo6RG9Ob3RTbmlmZkNvbnRlbnQpIHsKQEAgLTExNiw2ICsxNDYsMTYgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFNlbmREYXRhKHVpbnQ2NAogCiB2b2lkIE5ldHdvcmtEYXRh
VGFzazo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9u
SGFuZGxlcikKIHsKKyAgICAvLyBQcm94eSBhdXRoZW50aWNhdGlvbiBpcyBoYW5kbGVkIGJ5IENG
TmV0d29yayBpbnRlcm5hbGx5LiBXZSBjYW4gZ2V0IGhlcmUgaWYgdGhlIHVzZXIgY2FuY2Vscwor
ICAgIC8vIENGTmV0d29yayBhdXRoZW50aWNhdGlvbiBkaWFsb2csIGFuZCB3ZSBzaG91bGRuJ3Qg
YXNrIHRoZSBjbGllbnQgdG8gZGlzcGxheSBhbm90aGVyIG9uZSBpbiB0aGF0IGNhc2UuCisgICAg
aWYgKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5pc1Byb3h5KCkpIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3Jl
ZGVudGlhbCwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh0cnlQYXNz
d29yZEJhc2VkQXV0aGVudGljYXRpb24oY2hhbGxlbmdlLCBjb21wbGV0aW9uSGFuZGxlcikpCisg
ICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVDaGFsbGVuZ2UoY2hhbGxlbmdlLCBjb21wbGV0aW9uSGFuZGxlcik7CiB9CkBAIC0x
NzIsNiArMjEyLDIzIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjp3aWxsUGVyZm9ybUhUVFBSZWQK
ICAgICAgICAgLy8gd2Ugd2FudCB0byBzdHJpcCBoZXJlIGJlY2F1c2UgdGhlIHJlZGlyZWN0IGlz
IGNyb3NzLW9yaWdpbi4KICAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBBdXRob3JpemF0aW9uKCk7
CiAgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQT3JpZ2luKCk7CisjaWYgVVNFKENSRURFTlRJQUxf
U1RPUkFHRV9XSVRIX05FVFdPUktfU0VTU0lPTikKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBP
bmx5IGNvbnNpZGVyIGFwcGx5aW5nIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIGlmIHRoaXMg
aXMgYWN0dWFsbHkgYSByZWRpcmVjdCBhbmQgdGhlIHJlZGlyZWN0CisgICAgICAgIC8vIFVSTCBk
aWRuJ3QgaW5jbHVkZSBjcmVkZW50aWFscyBvZiBpdHMgb3duLgorICAgICAgICBpZiAobV91c2Vy
LmlzRW1wdHkoKSAmJiBtX3Bhc3N3b3JkLmlzRW1wdHkoKSAmJiAhcmVkaXJlY3RSZXNwb25zZS5p
c051bGwoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gc3RvcmFnZVNlc3Npb24gPSBTZXNzaW9u
VHJhY2tlcjo6c3RvcmFnZVNlc3Npb24obV9zZXNzaW9uLnNlc3Npb25JRCgpKSkgeworICAgICAg
ICAgICAgICAgIGF1dG8gY3JlZGVudGlhbCA9IHN0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3Rv
cmFnZSgpLmdldChyZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNyZWRlbnRp
YWwuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1faW5pdGlhbENyZWRlbnRpYWwg
PSBjcmVkZW50aWFsOworCisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IERp
Z2VzdCBhdXRoZW50aWNhdGlvbiwgYW5kIFByb3h5LUF1dGhvcml6YXRpb24uCisgICAgICAgICAg
ICAgICAgICAgIGFwcGx5QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKHJlcXVlc3QsIG1faW5pdGlh
bENyZWRlbnRpYWwpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyNl
bmRpZgogICAgIH0KICAgICAKICAgICBpZiAobV9jbGllbnQpCkBAIC0yMzAsNyArMjg3LDM0IEBA
IGJvb2wgTmV0d29ya0RhdGFUYXNrOjp0cnlQYXNzd29yZEJhc2VkQXUKICAgICAgICAgbV9wYXNz
d29yZCA9IFN0cmluZygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgCisKKyNp
ZiBVU0UoQ1JFREVOVElBTF9TVE9SQUdFX1dJVEhfTkVUV09SS19TRVNTSU9OKQorICAgIGlmICht
X3N0b3JlZENyZWRlbnRpYWxzID09IFdlYkNvcmU6OkFsbG93U3RvcmVkQ3JlZGVudGlhbHMpIHsK
KyAgICAgICAgaWYgKGF1dG8gc3RvcmFnZVNlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6c3RvcmFn
ZVNlc3Npb24obV9zZXNzaW9uLnNlc3Npb25JRCgpKSkgeworICAgICAgICAgICAgaWYgKCFtX2lu
aXRpYWxDcmVkZW50aWFsLmlzRW1wdHkoKSB8fCBjaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291
bnQoKSkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBzdG9yZWQgY3JlZGVudGlhbCB3YXNuJ3Qg
YWNjZXB0ZWQsIHN0b3AgdXNpbmcgaXQuCisgICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSBy
YWNlIGNvbmRpdGlvbiBoZXJlLCBzaW5jZSBhIGRpZmZlcmVudCBjcmVkZW50aWFsIG1pZ2h0IGhh
dmUgYWxyZWFkeSBiZWVuIHN0b3JlZCBieSBhbm90aGVyIFJlc291cmNlSGFuZGxlLAorICAgICAg
ICAgICAgICAgIC8vIGJ1dCB0aGUgb2JzZXJ2YWJsZSBlZmZlY3Qgc2hvdWxkIGJlIHZlcnkgbWlu
b3IsIGlmIGFueS4KKyAgICAgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0
b3JhZ2UoKS5yZW1vdmUoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKCFjaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSkg
eworICAgICAgICAgICAgICAgIGF1dG8gY3JlZGVudGlhbCA9IHN0b3JhZ2VTZXNzaW9uLT5jcmVk
ZW50aWFsU3RvcmFnZSgpLmdldChjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgICAg
ICAgICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkgJiYgY3JlZGVudGlhbCAhPSBtX2lu
aXRpYWxDcmVkZW50aWFsKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjcmVkZW50aWFs
LnBlcnNpc3RlbmNlKCkgPT0gV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0
YXR1c0NvZGUoKSA9PSA0MDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRo
ZSBjcmVkZW50aWFsIGJhY2ssIHBvc3NpYmx5IGFkZGluZyBpdCBhcyBhIGRlZmF1bHQgZm9yIHRo
aXMgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNy
ZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2UoKSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBjcmVkZW50aWFsKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorI2VuZGlmCisKICAgICBpZiAoIWNoYWxsZW5nZS5wcm9wb3NlZENy
ZWRlbnRpYWwoKS5pc0VtcHR5KCkgJiYgIWNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgp
KSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb246OlVzZUNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lv
biAxOTc1MTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMTYgKzExOSwzMCBAQCAtICh2
b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiB7CiAgICAgYXV0byBzdG9yZWRD
cmVkZW50aWFscyA9IHNlc3Npb24uY29uZmlndXJhdGlvbi5VUkxDcmVkZW50aWFsU3RvcmFnZSA/
IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkRvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAg
ICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gX3Nlc3Npb24tPmRhdGFUYXNrRm9ySWRlbnRp
Zmllcih0YXNrLnRhc2tJZGVudGlmaWVyLCBzdG9yZWRDcmVkZW50aWFscykpIHsKKyAgICAgICAg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
Y2hhbGxlbmdlKTsKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19j
b3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgYXV0byBjaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlckNvcHldKFdlYktpdDo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlh
bCYgY3JlZGVudGlhbCkKKyAgICAgICAgYXV0byBzZXNzaW9uSUQgPSBfc2Vzc2lvbi0+c2Vzc2lv
bklEKCk7CisgICAgICAgIGF1dG8gY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBbY29tcGxl
dGlvbkhhbmRsZXJDb3B5LCBzZXNzaW9uSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlXShXZWJL
aXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyQ29weSh0b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3Np
dGlvbihkaXNwb3NpdGlvbiksIGNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpOworI2lmICFVU0Uo
Q1JFREVOVElBTF9TVE9SQUdFX1dJVEhfTkVUV09SS19TRVNTSU9OKQorICAgICAgICAgICAgVU5V
U0VEX1BBUkFNKHNlc3Npb25JRCk7CisgICAgICAgICAgICBVTlVTRURfUEFSQU0oYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpOworI2Vsc2UKKyAgICAgICAgICAgIGlmIChjcmVkZW50aWFsLnBlcnNp
c3RlbmNlKCkgPT0gV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbiAmJiBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5hdXRoZW50aWNhdGlvblNj
aGVtZSgpICE9IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lU2Vy
dmVyVHJ1c3RFdmFsdWF0aW9uUmVxdWVzdGVkKSB7CisKKyAgICAgICAgICAgICAgICBXZWJDb3Jl
OjpDcmVkZW50aWFsIG5vblBlcnNpc3RlbnRDcmVkZW50aWFsKGNyZWRlbnRpYWwudXNlcigpLCBj
cmVkZW50aWFsLnBhc3N3b3JkKCksIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUp
OworICAgICAgICAgICAgICAgIFdlYkNvcmU6OlVSTCB1cmxUb1N0b3JlOworICAgICAgICAgICAg
ICAgIGlmIChhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3Rh
dHVzQ29kZSgpID09IDQwMSkKKyAgICAgICAgICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOworICAgICAgICAgICAg
ICAgIGlmIChhdXRvIHN0b3JhZ2VTZXNzaW9uID0gV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6c3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZVNlc3Np
b24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KG5vblBlcnNpc3RlbnRDcmVkZW50aWFsLCBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CisKKyAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkodG9OU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlRGlzcG9zaXRpb24oZGlzcG9zaXRpb24pLCBub25QZXJzaXN0ZW50Q3JlZGVudGlhbC5u
c0NyZWRlbnRpYWwoKSk7CisgICAgICAgICAgICB9IGVsc2UKKyNlbmRpZgorICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weSh0b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNw
b3NpdGlvbihkaXNwb3NpdGlvbiksIGNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpOwogICAgICAg
ICAgICAgQmxvY2tfcmVsZWFzZShjb21wbGV0aW9uSGFuZGxlckNvcHkpOwogICAgICAgICB9Owot
ICAgICAgICAKLSAgICAgICAgaWYgKG5ldHdvcmtEYXRhVGFzay0+dHJ5UGFzc3dvcmRCYXNlZEF1
dGhlbnRpY2F0aW9uKGNoYWxsZW5nZSwgY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAKICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRS
ZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSwgY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpOwog
ICAgIH0KIH0KQEAgLTI0Myw2ICsyNTcsNyBAQCBOZXR3b3JrU2Vzc2lvbiYgTmV0d29ya1Nlc3Np
b246OmRlZmF1bHRTCiB9CiAKIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihUeXBlIHR5
cGUsIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEN1c3RvbVByb3RvY29sTWFuYWdlciog
Y3VzdG9tUHJvdG9jb2xNYW5hZ2VyKQorICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewog
ICAgIG1fc2Vzc2lvbkRlbGVnYXRlID0gYWRvcHROUyhbW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhOZXR3b3JrU2Vzc2lvbjoqdGhpc10pOwogCkBAIC0yNzIsNiArMjg3
LDcgQEAgTmV0d29ya1Nlc3Npb246On5OZXR3b3JrU2Vzc2lvbigpCiAgICAgW21fc2Vzc2lvbldp
dGhvdXRDcmVkZW50aWFsU3RvcmFnZSBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKIH0KIAorI2lmICFV
U0UoQ1JFREVOVElBTF9TVE9SQUdFX1dJVEhfTkVUV09SS19TRVNTSU9OKQogdm9pZCBOZXR3b3Jr
U2Vzc2lvbjo6Y2xlYXJDcmVkZW50aWFscygpCiB7CiAgICAgQVNTRVJUKG1fZGF0YVRhc2tNYXBX
aXRoQ3JlZGVudGlhbHMuaXNFbXB0eSgpKTsKQEAgLTI3OSw2ICsyOTUsNyBAQCB2b2lkIE5ldHdv
cmtTZXNzaW9uOjpjbGVhckNyZWRlbnRpYWxzKCkKICAgICBBU1NFUlQobV9kb3dubG9hZE1hcC5p
c0VtcHR5KCkpOwogICAgIG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZSA9IFtOU1VSTFNl
c3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9uOm1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3Rv
cmFnZS5nZXQoKS5jb25maWd1cmF0aW9uIGRlbGVnYXRlOnN0YXRpY19jYXN0PGlkPihtX3Nlc3Np
b25EZWxlZ2F0ZS5nZXQoKSkgZGVsZWdhdGVRdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBtYWluUXVl
dWVdXTsKIH0KKyNlbmRpZgogCiBOZXR3b3JrRGF0YVRhc2sqIE5ldHdvcmtTZXNzaW9uOjpkYXRh
VGFza0ZvcklkZW50aWZpZXIoTmV0d29ya0RhdGFUYXNrOjpUYXNrSWRlbnRpZmllciB0YXNrSWRl
bnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMpCiB7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9u
IDE5NzUxOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldENhY2hl
TW9kZWwodWludDMyX3QgCiB2b2lkIFdlYlByb2Nlc3M6OmNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMo
KQogewogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCku
Y3JlZGVudGlhbFN0b3JhZ2UoKS5jbGVhckNyZWRlbnRpYWxzKCk7Ci0jaWYgVVNFKE5FVFdPUktf
U0VTU0lPTikKKyNpZiBVU0UoTkVUV09SS19TRVNTSU9OKSAmJiAhVVNFKENSRURFTlRJQUxfU1RP
UkFHRV9XSVRIX05FVFdPUktfU0VTU0lPTikKICAgICBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNl
c3Npb24oKS5jbGVhckNyZWRlbnRpYWxzKCk7CiAjZW5kaWYKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>