<?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>137507</bug_id>
          
          <creation_ts>2014-10-07 16:41:24 -0700</creation_ts>
          <short_desc>WKContext needs to provide an API to resume a download</short_desc>
          <delta_ts>2014-10-21 10:46:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeff Miller">jeffm</reporter>
          <assigned_to name="Jeff Miller">jeffm</assigned_to>
          <cc>andersca</cc>
    
    <cc>jeffm</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1040158</commentid>
    <comment_count>0</comment_count>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2014-10-07 16:41:24 -0700</bug_when>
    <thetext>We currently have an API to start a new download:

WK_EXPORT WKDownloadRef WKContextDownloadURLRequest(WKContextRef context, const WKURLRequestRef request);

but there&apos;s no API to resume a partially completed download. Presumably, such an API would take the data returned by WKDownloadGetResumeData() as well as a path which can be used by NSURLDownload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040160</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-10-07 16:42:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/18576259&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040412</commentid>
    <comment_count>2</comment_count>
      <attachid>239494</attachid>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2014-10-08 13:48:08 -0700</bug_when>
    <thetext>Created attachment 239494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041750</commentid>
    <comment_count>3</comment_count>
      <attachid>239494</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-10-14 18:08:08 -0700</bug_when>
    <thetext>Comment on attachment 239494
Patch

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

&gt; Source/WebKit2/Shared/Downloads/mac/DownloadMac.mm:99
&gt; +    m_nsURLDownload = [[NSURLDownload alloc] initWithResumeData:nsData.get() delegate:m_delegate.get() path:path];

Nit: Needs adoptNS(...) here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041874</commentid>
    <comment_count>4</comment_count>
      <attachid>239494</attachid>
    <who name="Conrad Shultz">conrad_shultz</who>
    <bug_when>2014-10-15 09:46:14 -0700</bug_when>
    <thetext>Comment on attachment 239494
Patch

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

&gt; Source/WebKit2/WebProcess/WebProcess.messages.in:64
&gt; +    # three messages.

There are other messages files with fewer messages; since you&apos;re having to change the comment I wonder whether this would be an opportune time to spin off a Download.messages.in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041895</commentid>
    <comment_count>5</comment_count>
      <attachid>239494</attachid>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2014-10-15 10:46:47 -0700</bug_when>
    <thetext>Comment on attachment 239494
Patch

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

&gt;&gt; Source/WebKit2/Shared/Downloads/mac/DownloadMac.mm:99
&gt;&gt; +    m_nsURLDownload = [[NSURLDownload alloc] initWithResumeData:nsData.get() delegate:m_delegate.get() path:path];
&gt; 
&gt; Nit: Needs adoptNS(...) here.

I&apos;ll fix this.

&gt;&gt; Source/WebKit2/WebProcess/WebProcess.messages.in:64
&gt;&gt; +    # three messages.
&gt; 
&gt; There are other messages files with fewer messages; since you&apos;re having to change the comment I wonder whether this would be an opportune time to spin off a Download.messages.in.

Fair point. I&apos;ll do that with a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041898</commentid>
    <comment_count>6</comment_count>
      <attachid>239494</attachid>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2014-10-15 10:49:42 -0700</bug_when>
    <thetext>Comment on attachment 239494
Patch

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

&gt;&gt;&gt; Source/WebKit2/WebProcess/WebProcess.messages.in:64
&gt;&gt;&gt; +    # three messages.
&gt;&gt; 
&gt;&gt; There are other messages files with fewer messages; since you&apos;re having to change the comment I wonder whether this would be an opportune time to spin off a Download.messages.in.
&gt; 
&gt; Fair point. I&apos;ll do that with a separate bug.

I filed bug 137744 to track this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041943</commentid>
    <comment_count>7</comment_count>
      <attachid>239891</attachid>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2014-10-15 13:30:31 -0700</bug_when>
    <thetext>Created attachment 239891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042877</commentid>
    <comment_count>8</comment_count>
      <attachid>239494</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-10-20 10:47:14 -0700</bug_when>
    <thetext>Comment on attachment 239494
Patch

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

&gt; Source/WebKit2/Shared/Downloads/mac/DownloadMac.mm:98
&gt; +    RetainPtr&lt;NSData&gt; nsData = adoptNS([[NSData alloc] initWithBytes:resumeData.data() length:resumeData.size()]);

Can use auto nsData =

&gt; Source/WebKit2/UIProcess/API/C/WKContext.cpp:285
&gt; +WKDownloadRef WKContextResumeDownload(WKContextRef contextRef, WKDataRef resumeData, WKStringRef path)

I&apos;m not in love with this name, since it reads like a getter. I don&apos;t have a better idea though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042912</commentid>
    <comment_count>9</comment_count>
      <attachid>239494</attachid>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2014-10-20 12:00:01 -0700</bug_when>
    <thetext>Comment on attachment 239494
Patch

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

&gt;&gt; Source/WebKit2/Shared/Downloads/mac/DownloadMac.mm:98
&gt;&gt; +    RetainPtr&lt;NSData&gt; nsData = adoptNS([[NSData alloc] initWithBytes:resumeData.data() length:resumeData.size()]);
&gt; 
&gt; Can use auto nsData =

Fixed.

&gt;&gt; Source/WebKit2/UIProcess/API/C/WKContext.cpp:285
&gt;&gt; +WKDownloadRef WKContextResumeDownload(WKContextRef contextRef, WKDataRef resumeData, WKStringRef path)
&gt; 
&gt; I&apos;m not in love with this name, since it reads like a getter. I don&apos;t have a better idea though.

I don&apos;t, either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042913</commentid>
    <comment_count>10</comment_count>
      <attachid>240135</attachid>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2014-10-20 12:01:00 -0700</bug_when>
    <thetext>Created attachment 240135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043033</commentid>
    <comment_count>11</comment_count>
      <attachid>240135</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-20 17:46:03 -0700</bug_when>
    <thetext>Comment on attachment 240135
Patch

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

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.h:36
&gt; +#include &quot;SandboxExtension.h&quot;

Not needed, because DownloadManager.h now includes this header too.

&gt; Source/WebKit2/Shared/Downloads/mac/DownloadMac.mm:102
&gt; +    auto nsData = adoptNS([[NSData alloc] initWithBytes:resumeData.data() length:resumeData.size()]);

Is this always how we turn an IPC::DataReference into an NSData? I would have expected a more streamlined idiom.

&gt; Source/WebKit2/Shared/Downloads/mac/DownloadMac.mm:105
&gt; +    m_request = ResourceRequest([m_nsURLDownload request]);

Is the explicit constructor needed here?

&gt; Source/WebKit2/UIProcess/API/C/WKContext.h:113
&gt;  WK_EXPORT WKDownloadRef WKContextDownloadURLRequest(WKContextRef context, const WKURLRequestRef request);

Not new to this patch: This const is a mistake.

&gt; Source/WebKit2/UIProcess/WebContext.cpp:908
&gt; +

Should leave out this blank line, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043222</commentid>
    <comment_count>12</comment_count>
      <attachid>240135</attachid>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2014-10-21 10:42:39 -0700</bug_when>
    <thetext>Comment on attachment 240135
Patch

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

&gt;&gt; Source/WebKit2/NetworkProcess/NetworkProcess.h:36
&gt;&gt; +#include &quot;SandboxExtension.h&quot;
&gt; 
&gt; Not needed, because DownloadManager.h now includes this header too.

Removed.

&gt;&gt; Source/WebKit2/Shared/Downloads/mac/DownloadMac.mm:102
&gt;&gt; +    auto nsData = adoptNS([[NSData alloc] initWithBytes:resumeData.data() length:resumeData.size()]);
&gt; 
&gt; Is this always how we turn an IPC::DataReference into an NSData? I would have expected a more streamlined idiom.

As far as I can tell, yes. I see this idiom used in other places.

&gt;&gt; Source/WebKit2/Shared/Downloads/mac/DownloadMac.mm:105
&gt;&gt; +    m_request = ResourceRequest([m_nsURLDownload request]);
&gt; 
&gt; Is the explicit constructor needed here?

It isn&apos;t. I&apos;ll remove the explicit constructor.

&gt;&gt; Source/WebKit2/UIProcess/API/C/WKContext.h:113
&gt;&gt;  WK_EXPORT WKDownloadRef WKContextDownloadURLRequest(WKContextRef context, const WKURLRequestRef request);
&gt; 
&gt; Not new to this patch: This const is a mistake.

I&apos;ll fix this in a separate patch.

&gt;&gt; Source/WebKit2/UIProcess/WebContext.cpp:908
&gt;&gt; +
&gt; 
&gt; Should leave out this blank line, I think.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043224</commentid>
    <comment_count>13</comment_count>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2014-10-21 10:46:07 -0700</bug_when>
    <thetext>Committed r174987: &lt;http://trac.webkit.org/changeset/174987&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239494</attachid>
            <date>2014-10-08 13:48:08 -0700</date>
            <delta_ts>2014-10-15 13:30:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137507-20141008134811.patch</filename>
            <type>text/plain</type>
            <size>18283</size>
            <attacher name="Jeff Miller">jeffm</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODE2NDc0ZWI2NzQ4OGY2
ZGVjNDQ1ZTVmZjlkYTYwYTg1NDJjYTQ4OC4uYWQ1ZWY3NzZjMjcyYTE5MTY5NGJmYjdmOThlZTdi
YWI4YjM0ODkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE0LTEwLTA4ICBKZWZm
IE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KKworICAgICAgICBXS0NvbnRleHQgbmVlZHMgdG8g
cHJvdmlkZSBhbiBBUEkgdG8gcmVzdW1lIGEgZG93bmxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzUwNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBXS0NvbnRleHRSZXN1
bWVEb3dubG9hZCgpLCB3aGljaCBpcyBvbmx5IHN1cHBvcnRlZCBvbiB0aGUgTWFjLCBhbmQgcmVx
dWlyZXMgdGhlCisgICAgICAgIHJlc3VtZSBkYXRhIGZyb20gV0tEb3dubG9hZEdldFJlc3VtZURh
dGEoKS4KKworICAgICAgICBXZSBoYXZlIHRvIGNyZWF0ZSBhIHNhbmRib3ggZXh0ZW5zaW9uIGZv
ciB0aGUgcGFydGlhbGx5IGRvd25sb2FkZWQgZmlsZSBpbiB0aGUgVUkgcHJvY2VzcyBzbyB0aGUK
KyAgICAgICAgbmV0d29yayBvciB3ZWIgcHJvY2VzcyBjYW4gcmVzdW1lIHdyaXRpbmcgdG8gaXQu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgIEFkZGVk
LCBjYWxscyB0aHJvdWdoIHRvIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoKS4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgIEFkZGVk
IHJlc3VtZURvd25sb2FkKCkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgQWRkZWQgUmVzdW1lRG93bmxvYWQgbWVzc2FnZS4K
KworICAgICAgICAqIFNoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAgICAgICAgQWRkZWQg
cmVzdW1lKCkuCisKKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQpOgor
ICAgICAgICBBZGRlZC4gVGhlIFVSTCBiZWluZyBkb3dubG9hZGVkIGlzIHBhcnQgb2YgdGhlIG9w
YXF1ZSByZXN1bWVEYXRhLCBzbyB3ZSBjYW4ndCBzcGVjaWZ5IGl0IHdoZW4gdGhlCisgICAgICAg
IERvd25sb2FkIGlzIGNvbnN0cnVjdGVkLgorCisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAgQWRkZWQgcmVzdW1lRG93bmxvYWQoKS4KKworICAg
ICAgICAqIFNoYXJlZC9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZDo6cmVzdW1lKToKKyAgICAgICAgQWRkZWQsIG5vdCBpbXBsZW1lbnRlZCBv
biB0aGlzIHBsYXRmb3JtLgorCisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxv
YWRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpyZXN1bWUpOgorICAgICAgICBB
ZGRlZC4gQ29uc3VtZXMgdGhlIHNhbmRib3ggZXh0ZW5zaW9uLCByZXN1bWVzIHRoZSBkb3dubG9h
ZCwgYW5kIHNldHMgbV9yZXF1ZXN0IGFmdGVyIHRoZQorICAgICAgICBOU1VSTERvd25sb2FkIGhh
cyBiZWVuIGNyZWF0ZWQuIE5vdGUgdGhhdCB3ZSBhbHJlYWR5IGhhdmUgY29kZSB0byByZXZva2Ug
dGhlIHNhbmRib3ggZXh0ZW5zaW9uIHdoZW4KKyAgICAgICAgdGhlIGRvd25sb2FkIGlzIGZpbmlz
aGVkLCBjYW5jZWxlZCwgb3IgZmFpbHMuCisKKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL3Nv
dXAvRG93bmxvYWRTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnJlc3VtZSk6
CisgICAgICAgIEFkZGVkLCBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0
UmVzdW1lRG93bmxvYWQpOgorICAgICAgICBBZGRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgQWRkZWQgV0tDb250ZXh0UmVzdW1lRG93bmxvYWQo
KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICBBZGRlZC4gQ3JlYXRlcyBh
IHNhbmRib3ggZXh0ZW5zaW9uIGZvciB0aGUgZXhpc3RpbmcgZmlsZSBhbmQgaW5jbHVkZXMgaXQg
aW4gdGhlIG1lc3NhZ2UgdG8gdGhlCisgICAgICAgIG5ldHdvcmsgb3Igd2ViIHByb2Nlc3MuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICBBZGRlZCByZXN1bWVE
b3dubG9hZCgpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICBBZGRlZCwg
Y2FsbHMgdGhyb3VnaCB0byBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKCkuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgQWRkZWQgcmVzdW1lRG93
bmxvYWQoKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoK
KyAgICAgICAgQWRkZWQgUmVzdW1lRG93bmxvYWQgbWVzc2FnZS4KKwogMjAxNC0xMC0wOCAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW0Nv
b3JkaW5hdGVkR3JhcGhpY3NdIEFsbCBFRkwgbGF5b3V0IHRlc3RzIGFyZSBicm9rZW4gc2luY2Ug
cjE3NDIzMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCmluZGV4IDEzZTY0YzU2NjAwZjFiZTUwY2QxNDJlMTIyYjkxMTY4MzAxMGQ2YjYuLmFm
N2U0YWU2MDIyMjdlMjFlYmMyNjVmNWQ5OGM5ZTU1YWM4ZjEyMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIzOCw2ICsyMzgs
MTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25s
b2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICBkb3dubG9hZE1hbmFnZXIoKS5zdGFy
dERvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVlc3QpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNz
OjpyZXN1bWVEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit7CisgICAgZG93
bmxvYWRNYW5hZ2VyKCkucmVzdW1lRG93bmxvYWQoZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwgcGF0
aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNh
bmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpCiB7CiAgICAgZG93bmxvYWRNYW5hZ2Vy
KCkuY2FuY2VsRG93bmxvYWQoZG93bmxvYWRJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAxMTU5OTk5NmQwOWYxZWQ4YjcyN2ViOWRh
OGNhYmExNTUyY2NmZjkzLi42ZWYxNDI3YjJlM2ZjOGUxZjkzZjQ5ZWVlMTEzMTIzNTczMWU5MmFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmgiCisjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CkBAIC0xMTMsNiArMTE0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKICAgICB2b2lkIGRlc3Ryb3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBkb3dubG9h
ZFJlcXVlc3QodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7CisgICAgdm9pZCByZXN1bWVEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZCh1
aW50NjRfdCBkb3dubG9hZElEKTsKICAgICB2b2lkIHNldENhY2hlTW9kZWwodWludDMyX3QpOwog
ICAgIHZvaWQgYWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbyYsIGNvbnN0IFN0cmluZyYgaG9zdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CmluZGV4IDFjMjZjM2ExM2VmYWQ0MWQ5MTg5MzlhODU5OThiOTg2YmE5MTk4NTIuLjU1MDNkOGI1
YmVjYTQyNjZkM2NmNTA0MGVjODE1ZTQzMmE3ZDczYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0z
OCw2ICszOCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQogCiAgICAgRG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2FkSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQorICAgIFJlc3VtZURvd25sb2FkKHVpbnQ2NF90
IGRvd25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwg
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkK
ICAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQogCiAgICAgU2V0UHJvY2Vz
c1N1cHByZXNzaW9uRW5hYmxlZChib29sIGZsYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93
bmxvYWRzL0Rvd25sb2FkLmgKaW5kZXggZjBmZjcxODZkNjQ1ZWQ0MDZjNzVhNjE0NjUxZDc2NDM1
ZTEyMTY5OS4uNzUwMzcyYzkwYTAxYmU2N2YxNGM2MzYzMWI4MjE4MGQzMGU4NjE2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaApAQCAtMjcsNiArMjcsNyBA
QAogI2RlZmluZSBEb3dubG9hZF9oCiAKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5j
bHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKQEAgLTYzLDcgKzY0LDYgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIERvd25sb2FkQXV0aGVudGljYXRpb25DbGllbnQ7
CiBjbGFzcyBEb3dubG9hZE1hbmFnZXI7Ci1jbGFzcyBTYW5kYm94RXh0ZW5zaW9uOwogY2xhc3Mg
V2ViUGFnZTsKIAogY2xhc3MgRG93bmxvYWQgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsK
QEAgLTc0LDYgKzc0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydCgpOwogICAgIHZvaWQg
c3RhcnRXaXRoSGFuZGxlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgcmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmKTsKICAgICB2b2lkIGNhbmNlbCgpOwogCiAgICAgdWludDY0X3QgZG93bmxv
YWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRJRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IDY3YWI3NGJh
ODlhMzkwYWQ1Y2ZiZDhhZGRhZTc1MzdhMzQ5NzY4ZWUuLjc0ZTAzNzU2MGJjMDc3YTMyYWYxNjA1
OTIzNTYwZmNjZmEwNDNjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTU2LDYgKzU2LDE2IEBAIHZvaWQgRG93bmxv
YWRNYW5hZ2VyOjpjb252ZXJ0SGFuZGxlVG9Eb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBS
ZXNvdXJjZUhhbmRsCiAgICAgbV9kb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIFdURjo6bW92ZShk
b3dubG9hZCkpOwogfQogCit2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQodWlu
dDY0X3QgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSkKK3sKKyAgICAvLyBEb3dubG9hZDo6cmVzdW1lKCkgaXMgcmVzcG9u
c2libGUgZm9yIHNldHRpbmcgdGhlIERvd25sb2FkJ3MgcmVzb3VyY2UgcmVxdWVzdC4KKyAgICBh
dXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2Fk
SUQsIFJlc291cmNlUmVxdWVzdCgpKTsKKworICAgIGRvd25sb2FkLT5yZXN1bWUocmVzdW1lRGF0
YSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgQVNTRVJUKCFtX2Rvd25sb2Fk
cy5jb250YWlucyhkb3dubG9hZElEKSk7CisgICAgbV9kb3dubG9hZHMuYWRkKGRvd25sb2FkSUQs
IFdURjo6bW92ZShkb3dubG9hZCkpOworfQorCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y2FuY2Vs
RG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCkKIHsKICAgICBEb3dubG9hZCogZG93bmxvYWQg
PSBtX2Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAppbmRleCAyYTE2OTRlOTI1ZTgwN2M0NDFh
ZjEyNTM5MDU0MzVlZWZmNTU0NTM1Li42MjQ5ZjcxYWRkMzllYzc3YzRkNzcyNjI5YzNmMmU0YWRh
OTRjMzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgRG93bmxvYWRNYW5hZ2VyX2gK
ICNkZWZpbmUgRG93bmxvYWRNYW5hZ2VyX2gKIAorI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24u
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC0zOCw2ICszOSw3IEBAIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNz
IERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjUsNiArNjcsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY29udmVydEhhbmRsZVRv
RG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7CiAKKyAgICB2b2lkIHJlc3VtZURvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKwogICAgIHZvaWQgY2FuY2VsRG93
bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCk7CiAKICAgICB2b2lkIGRvd25sb2FkRmluaXNoZWQo
RG93bmxvYWQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMv
aW9zL0Rvd25sb2FkSU9TLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9pb3Mv
RG93bmxvYWRJT1MubW0KaW5kZXggODhlMDRhMDRjY2ZiNTIzMmJlZWYwZWQyZGIwOGYwNzZkMTcw
MGIzNS4uMDE0NzMwOGFjYjYwNWZmOTU5MTdjZDRjZjNmZTMwYTdlN2ZkZTZhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0KQEAg
LTEyNyw2ICsxMjcsMTEgQEAgdm9pZCBEb3dubG9hZDo6c3RhcnQoKQogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKK3ZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgRG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRs
ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKICAgICBDRlVSTERvd25sb2FkQ2xpZW50IGNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KaW5kZXggYTM5ODMwNzkw
NDZhMDliNjQ3ZWI3MmUxNmNlYmVjZjQyY2M2OWJkOS4uZDRmM2E4MjRkMTYxNjI0N2YxM2U4Nzlh
NGZjMGFlNDMyOTQ3YzM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25s
b2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25s
b2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KQEAgLTg0LDYgKzg0LDI2IEBAIHZvaWQgRG93bmxvYWQ6
OnN0YXJ0V2l0aEhhbmRsZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByCiAgICAgW21fbnNVUkxEb3dubG9hZCBzZXREZWxldGVzRmlsZVVwb25GYWlsdXJl
Ok5PXTsKIH0KIAordm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit7CisgICAgQVNTRVJUKCFtX25zVVJM
RG93bmxvYWQpOworICAgIEFTU0VSVCghbV9kZWxlZ2F0ZSk7CisKKyAgICBtX3NhbmRib3hFeHRl
bnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7
CisgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikKKyAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9u
LT5jb25zdW1lKCk7CisKKyAgICBtX2RlbGVnYXRlID0gYWRvcHROUyhbW1dLRG93bmxvYWRBc0Rl
bGVnYXRlIGFsbG9jXSBpbml0V2l0aERvd25sb2FkOnRoaXNdKTsKKworICAgIFJldGFpblB0cjxO
U0RhdGE+IG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6cmVz
dW1lRGF0YS5kYXRhKCkgbGVuZ3RoOnJlc3VtZURhdGEuc2l6ZSgpXSk7CisgICAgbV9uc1VSTERv
d25sb2FkID0gW1tOU1VSTERvd25sb2FkIGFsbG9jXSBpbml0V2l0aFJlc3VtZURhdGE6bnNEYXRh
LmdldCgpIGRlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCkgcGF0aDpwYXRoXTsKKworICAgIG1fcmVx
dWVzdCA9IFJlc291cmNlUmVxdWVzdChbbV9uc1VSTERvd25sb2FkIHJlcXVlc3RdKTsKKworICAg
IC8vIEZJWE1FOiBBbGxvdyB0aGlzIHRvIGJlIGNoYW5nZWQgYnkgdGhlIGNsaWVudC4KKyAgICBb
bV9uc1VSTERvd25sb2FkIHNldERlbGV0ZXNGaWxlVXBvbkZhaWx1cmU6Tk9dOworfQorCiB2b2lk
IERvd25sb2FkOjpjYW5jZWwoKQogewogICAgIFttX25zVVJMRG93bmxvYWQgY2FuY2VsXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNv
dXAuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291
cC5jcHAKaW5kZXggZGVmNjQ0NDQyOTljMzIzN2YyNDg3MDVjYjc2ZmQwNjMzMzYxMmY2NS4uOTk3
N2M3YzYzZmMzZTk1MDhiZTAzNmQ5OWRjY2MwOTNlZDgwM2EyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKQEAgLTIz
Niw2ICsyMzYsMTEgQEAgdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFJlc291cmNlSGFu
ZGxlKiByZXNvdXJjZUhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXMKICAgICBzdGF0aWNfY2FzdDxE
b3dubG9hZENsaWVudCo+KG1fZG93bmxvYWRDbGllbnQuZ2V0KCkpLT5oYW5kbGVSZXNwb25zZUxh
dGVyKHJlc3BvbnNlKTsKIH0KIAordm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBEb3dubG9hZDo6Y2FuY2Vs
KCkKIHsKICAgICBpZiAoIW1fcmVzb3VyY2VIYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IDc0MzExMDk3MGExZTNhNzFmOGUyOTgwOWM3
NTAwMDhmNjUyOWQwYjUuLjdkMTYzYmUwMGM1MjUwOGNlODdjZmU5ZWRjM2ZiMmNhZGViZjA5MjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC0y
ODIsNiArMjgyLDExIEBAIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0
KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS1VSTFJlCiAgICAgcmV0dXJuIHRvQVBJ
KHRvSW1wbChjb250ZXh0UmVmKS0+ZG93bmxvYWQoMCwgdG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNv
dXJjZVJlcXVlc3QoKSkpOwogfQogCitXS0Rvd25sb2FkUmVmIFdLQ29udGV4dFJlc3VtZURvd25s
b2FkKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS0RhdGFSZWYgcmVzdW1lRGF0YSwgV0tTdHJp
bmdSZWYgcGF0aCkKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5yZXN1
bWVEb3dubG9hZCh0b0ltcGwocmVzdW1lRGF0YSksIHRvV1RGU3RyaW5nKHBhdGgpKSk7Cit9CisK
IHZvaWQgV0tDb250ZXh0U2V0SW5pdGlhbGl6YXRpb25Vc2VyRGF0YUZvckluamVjdGVkQnVuZGxl
KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCAgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogewogICAg
IHRvSW1wbChjb250ZXh0UmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJE
YXRhKHRvSW1wbCh1c2VyRGF0YVJlZikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5oCmluZGV4IGM4ZDUyYTVjOTJlNzlhYzQ3YzgyZWE3YTNkNzQ5MTk0Y2MyNTQx
NzguLmMxMGFlNDIzNmM4OTI4NWE0YmQ5YWY3ZWRjNWVmYjAyYWIxMGQ5YTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKQEAgLTExMSw2ICsxMTEsNyBAQCBX
S19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChXS0NvbnRleHRSZWYgY29u
dGV4dCwgY29uc3QgV0tDb250ZXh0RAogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Q29ubmVj
dGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlv
bkNsaWVudEJhc2UqIGNsaWVudCk7CiAKIFdLX0VYUE9SVCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4
dERvd25sb2FkVVJMUmVxdWVzdChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tVUkxSZXF1
ZXN0UmVmIHJlcXVlc3QpOworV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0UmVzdW1l
RG93bmxvYWQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRGF0YVJlZiByZXN1bWVEYXRhLCBXS1N0
cmluZ1JlZiBwYXRoKTsKIAogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SW5pdGlhbGl6YXRp
b25Vc2VyRGF0YUZvckluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1R5cGVS
ZWYgdXNlckRhdGEpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVj
dGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwg
V0tUeXBlUmVmIG1lc3NhZ2VCb2R5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmNwcAppbmRleCBiNGQ1Yzc4NzMzZTVkMTRhNzU3ZThiZTNjOTI4MDQ4Yzg3ZmE1NGQwLi5jZjJl
YWM5MzcxMTI1YWIzMjJjNmVhNGVlYzFkODE3YzI5MzA5MWE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC05MDAsNiArOTAwLDI2IEBAIERvd25sb2FkUHJveHkq
IFdlYkNvbnRleHQ6OmRvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0
IFJlc291cmNlCiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiB9CiAKK0Rvd25sb2FkUHJveHkq
IFdlYkNvbnRleHQ6OnJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0YSogcmVzdW1lRGF0YSwg
Y29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkg
PSBjcmVhdGVEb3dubG9hZFByb3h5KFJlc291cmNlUmVxdWVzdCgpKTsKKworICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOworICAgIGlmICghcGF0aC5p
c0VtcHR5KCkpCisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBT
YW5kYm94RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworCisj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkg
JiYgbmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoZG93bmxvYWRQcm94eS0+ZG93
bmxvYWRJRCgpLCByZXN1bWVEYXRhLT5kYXRhUmVmZXJlbmNlKCksIHBhdGgsIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUpLCAwKTsKKyAgICAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CisgICAgfQor
I2VuZGlmCisKKyAgICBtX3Byb2Nlc3Nlc1swXS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6
UmVzdW1lRG93bmxvYWQoZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCByZXN1bWVEYXRhLT5k
YXRhUmVmZXJlbmNlKCksIHBhdGgsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCAwKTsKKworICAg
IHJldHVybiBkb3dubG9hZFByb3h5OworfQorCiB2b2lkIFdlYkNvbnRleHQ6OnBvc3RNZXNzYWdl
VG9JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCog
bWVzc2FnZUJvZHkpCiB7CiAgICAgaWYgKG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggOWUyMzQwYWJmODU0NGNiMWY5ZWIxZmMx
NGQzYWNlYzgzZTA0Y2U2Yi4uODk4NzU0ZDQ0ZTRiZTQ2YTNiZmM4NmY4ZmYwYTJhODQ3ODM3MTVm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC0xNzksNiArMTc5LDcg
QEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29uc3Qg
eyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZVBhdGg7IH0KIAogICAgIERvd25sb2FkUHJveHkqIGRv
d25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpOworICAgIERvd25sb2FkUHJveHkqIHJlc3VtZURvd25sb2FkKGNvbnN0IEFQ
STo6RGF0YSogcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogICAgIHZvaWQgc2V0
SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKFBhc3NSZWZQdHI8QVBJOjpPYmpl
Y3Q+IHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0g
dXNlckRhdGE7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggN2MxNzBiMDk5OWY0NDVhYmJhZjUxZDJmMjA2ZTQ0NmMzNDA0YzQ3Ny4uYmFhZWFjYzZmYzgy
ZmVjMGQwYzQ2NzI2ZGM5MzljNDdlZjAxOGMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCkBAIC0xMDY5LDYgKzEwNjksMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpk
b3dubG9hZFJlcXVlc3QodWludDY0X3QgZG93bmxvYWRJRCwgdWludDY0X3QgaW5pdGlhdGluZ1Bh
Z2VJRCwKICAgICBkb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKGRvd25sb2FkSUQsIHJl
cXVlc3RXaXRoT3JpZ2luYWxVUkwpOwogfQogCit2b2lkIFdlYlByb2Nlc3M6OnJlc3VtZURvd25s
b2FkKHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1l
RGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3sKKyAgICBkb3dubG9hZE1hbmFnZXIo
KS5yZXN1bWVEb3dubG9hZChkb3dubG9hZElELCByZXN1bWVEYXRhLCBwYXRoLCBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzOjpjYW5jZWxEb3dubG9hZCh1aW50
NjRfdCBkb3dubG9hZElEKQogewogICAgIGRvd25sb2FkTWFuYWdlcigpLmNhbmNlbERvd25sb2Fk
KGRvd25sb2FkSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA1
OGZlYmJjOWRiOThmNzIwMDZmMGVlNTQ1MzIxZGQ2M2FlZTQ3NTJmLi4yMTI1MWMwNThhYzkwYzAx
N2FmYWYzZTgwNzE5NDJlM2JkZjhjNzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaApAQCAtMjM2LDYgKzIzNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wTWVtb3J5
U2FtcGxlcigpOwogCiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QodWludDY0X3QgZG93bmxvYWRJ
RCwgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7CisgICAgdm9pZCByZXN1bWVEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZCh1
aW50NjRfdCBkb3dubG9hZElEKTsKIAogICAgIHZvaWQgc2V0VGV4dENoZWNrZXJTdGF0ZShjb25z
dCBUZXh0Q2hlY2tlclN0YXRlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZmY3MTE2ZmExNzJlM2ZiMmFjOTZkYzNhODg5N2Vh
MmJhMzBjZDUzZi4uYzk2MzUzMjg4ZmMwZTcyYTVjMzZmZTZkMmRkZmZkZGJjOTE1YTZkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpA
QCAtNjEsOCArNjEsOSBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICB2b2lkIFN0b3BNZW1vcnlTYW1wbGVyKCk7CiAKICAgICAjIERvd25sb2Fkcy4gVGhpcyBz
aG91bGQgcmVhbGx5IGJlIGluIGEgRG93bmxvYWQubWVzc2FnZXMuaW4sIGJ1dCBpdCBzZWVtZWQg
dW5uZWNlc3NhcnkgdG8gY3JlYXRlIGEgbmV3IGZpbGUganVzdCBmb3IKLSAgICAjIHR3byBtZXNz
YWdlcy4KKyAgICAjIHRocmVlIG1lc3NhZ2VzLgogICAgIERvd25sb2FkUmVxdWVzdCh1aW50NjRf
dCBkb3dubG9hZElELCB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCkKKyAgICBSZXN1bWVEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElE
LCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiAgICAgQ2FuY2Vs
RG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCkKIAogICAgIFNldFRleHRDaGVja2VyU3RhdGUo
V2ViS2l0OjpUZXh0Q2hlY2tlclN0YXRlIHRleHRDaGVja2VyU3RhdGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239891</attachid>
            <date>2014-10-15 13:30:31 -0700</date>
            <delta_ts>2014-10-20 12:00:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137507-20141015133036.patch</filename>
            <type>text/plain</type>
            <size>18284</size>
            <attacher name="Jeff Miller">jeffm</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmEwMDRiOGQxMjA5NmRi
MDNmY2RjNGIyOWIyZDJmYzgwNjM0ZGY5MC4uODk5NzRkOWUwY2UzM2FjOGM1ZWVlZTc1N2JkZGFl
M2U1YjYwNDVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE0LTEwLTE1ICBKZWZm
IE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KKworICAgICAgICBXS0NvbnRleHQgbmVlZHMgdG8g
cHJvdmlkZSBhbiBBUEkgdG8gcmVzdW1lIGEgZG93bmxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzUwNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBXS0NvbnRleHRSZXN1
bWVEb3dubG9hZCgpLCB3aGljaCBpcyBvbmx5IHN1cHBvcnRlZCBvbiB0aGUgTWFjLCBhbmQgcmVx
dWlyZXMgdGhlCisgICAgICAgIHJlc3VtZSBkYXRhIGZyb20gV0tEb3dubG9hZEdldFJlc3VtZURh
dGEoKS4KKworICAgICAgICBXZSBoYXZlIHRvIGNyZWF0ZSBhIHNhbmRib3ggZXh0ZW5zaW9uIGZv
ciB0aGUgcGFydGlhbGx5IGRvd25sb2FkZWQgZmlsZSBpbiB0aGUgVUkgcHJvY2VzcyBzbyB0aGUK
KyAgICAgICAgbmV0d29yayBvciB3ZWIgcHJvY2VzcyBjYW4gcmVzdW1lIHdyaXRpbmcgdG8gaXQu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgIEFkZGVk
LCBjYWxscyB0aHJvdWdoIHRvIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoKS4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgIEFkZGVk
IHJlc3VtZURvd25sb2FkKCkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgQWRkZWQgUmVzdW1lRG93bmxvYWQgbWVzc2FnZS4K
KworICAgICAgICAqIFNoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAgICAgICAgQWRkZWQg
cmVzdW1lKCkuCisKKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQpOgor
ICAgICAgICBBZGRlZC4gVGhlIFVSTCBiZWluZyBkb3dubG9hZGVkIGlzIHBhcnQgb2YgdGhlIG9w
YXF1ZSByZXN1bWVEYXRhLCBzbyB3ZSBjYW4ndCBzcGVjaWZ5IGl0IHdoZW4gdGhlCisgICAgICAg
IERvd25sb2FkIGlzIGNvbnN0cnVjdGVkLgorCisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAgQWRkZWQgcmVzdW1lRG93bmxvYWQoKS4KKworICAg
ICAgICAqIFNoYXJlZC9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZDo6cmVzdW1lKToKKyAgICAgICAgQWRkZWQsIG5vdCBpbXBsZW1lbnRlZCBv
biB0aGlzIHBsYXRmb3JtLgorCisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxv
YWRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpyZXN1bWUpOgorICAgICAgICBB
ZGRlZC4gQ29uc3VtZXMgdGhlIHNhbmRib3ggZXh0ZW5zaW9uLCByZXN1bWVzIHRoZSBkb3dubG9h
ZCwgYW5kIHNldHMgbV9yZXF1ZXN0IGFmdGVyIHRoZQorICAgICAgICBOU1VSTERvd25sb2FkIGhh
cyBiZWVuIGNyZWF0ZWQuIE5vdGUgdGhhdCB3ZSBhbHJlYWR5IGhhdmUgY29kZSB0byByZXZva2Ug
dGhlIHNhbmRib3ggZXh0ZW5zaW9uIHdoZW4KKyAgICAgICAgdGhlIGRvd25sb2FkIGlzIGZpbmlz
aGVkLCBjYW5jZWxlZCwgb3IgZmFpbHMuCisKKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL3Nv
dXAvRG93bmxvYWRTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnJlc3VtZSk6
CisgICAgICAgIEFkZGVkLCBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0
UmVzdW1lRG93bmxvYWQpOgorICAgICAgICBBZGRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgQWRkZWQgV0tDb250ZXh0UmVzdW1lRG93bmxvYWQo
KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICBBZGRlZC4gQ3JlYXRlcyBh
IHNhbmRib3ggZXh0ZW5zaW9uIGZvciB0aGUgZXhpc3RpbmcgZmlsZSBhbmQgaW5jbHVkZXMgaXQg
aW4gdGhlIG1lc3NhZ2UgdG8gdGhlCisgICAgICAgIG5ldHdvcmsgb3Igd2ViIHByb2Nlc3MuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICBBZGRlZCByZXN1bWVE
b3dubG9hZCgpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICBBZGRlZCwg
Y2FsbHMgdGhyb3VnaCB0byBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKCkuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgQWRkZWQgcmVzdW1lRG93
bmxvYWQoKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoK
KyAgICAgICAgQWRkZWQgUmVzdW1lRG93bmxvYWQgbWVzc2FnZS4KKwogMjAxNC0xMC0xNSAgRGFu
IEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gIlBsdWctaW4g
d2lsbCBoYW5kbGUgbG9hZCIgZXJyb3IgaXNuJ3QgZGVjbGFyZWQgaW4gdGhlIG1vZGVybiBBUEkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApp
bmRleCAxM2U2NGM1NjYwMGYxYmU1MGNkMTQyZTEyMmI5MTE2ODMwMTBkNmI2Li5hZjdlNGFlNjAy
MjI3ZTIxZWJjMjY1ZjVkOThjOWU1NWFjOGYxMjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMzgsNiArMjM4LDExIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9h
ZChkb3dubG9hZElELCByZXF1ZXN0KTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1l
RG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBy
ZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQoreworICAgIGRvd25sb2FkTWFu
YWdlcigpLnJlc3VtZURvd25sb2FkKGRvd25sb2FkSUQsIHJlc3VtZURhdGEsIHBhdGgsIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEb3du
bG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQogewogICAgIGRvd25sb2FkTWFuYWdlcigpLmNhbmNl
bERvd25sb2FkKGRvd25sb2FkSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMTE1OTk5OTZkMDlmMWVkOGI3MjdlYjlkYThjYWJhMTU1
MmNjZmY5My4uNmVmMTQyN2IyZTNmYzhlMWY5M2Y0OWVlZTExMzEyMzU3MzFlOTJhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5o
IgorI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Np
b25JRC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAt
MTEzLDYgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0
KHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwor
ICAgIHZvaWQgcmVzdW1lRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYpOwogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQodWludDY0X3Qg
ZG93bmxvYWRJRCk7CiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKHVpbnQzMl90KTsKICAgICB2b2lk
IGFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8mLCBjb25zdCBTdHJpbmcmIGhvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAx
YzI2YzNhMTNlZmFkNDFkOTE4OTM5YTg1OTk4Yjk4NmJhOTE5ODUyLi41NTAzZDhiNWJlY2E0MjY2
ZDNjZjUwNDBlYzgxNWU0MzJhN2Q3M2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzgsNiArMzgs
NyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGVz
dHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
IAogICAgIERvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCkKKyAgICBSZXN1bWVEb3dubG9hZCh1aW50NjRfdCBkb3dubG9h
ZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiAgICAgQ2Fu
Y2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCkKIAogICAgIFNldFByb2Nlc3NTdXBwcmVz
c2lvbkVuYWJsZWQoYm9vbCBmbGFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9E
b3dubG9hZC5oCmluZGV4IGYwZmY3MTg2ZDY0NWVkNDA2Yzc1YTYxNDY1MWQ3NjQzNWUxMjE2OTku
Ljc1MDM3MmM5MGEwMWJlNjdmMTRjNjM2MzFiODIxODBkMzBlODYxNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZp
bmUgRG93bmxvYWRfaAogCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlNh
bmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC02Myw3ICs2NCw2IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBEb3dubG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50OwogY2xhc3Mg
RG93bmxvYWRNYW5hZ2VyOwotY2xhc3MgU2FuZGJveEV4dGVuc2lvbjsKIGNsYXNzIFdlYlBhZ2U7
CiAKIGNsYXNzIERvd25sb2FkIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciB7CkBAIC03NCw2
ICs3NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIHN0YXJ0V2l0
aEhhbmRsZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKKyAgICB2b2lkIHJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJl
c3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJik7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIHVpbnQ2NF90IGRvd25sb2FkSUQoKSBj
b25zdCB7IHJldHVybiBtX2Rvd25sb2FkSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCA2N2FiNzRiYTg5YTM5MGFk
NWNmYmQ4YWRkYWU3NTM3YTM0OTc2OGVlLi43NGUwMzc1NjBiYzA3N2EzMmFmMTYwNTkyMzU2MGZj
Y2ZhMDQzYzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwCkBAIC01Niw2ICs1NiwxNiBAQCB2b2lkIERvd25sb2FkTWFuYWdl
cjo6Y29udmVydEhhbmRsZVRvRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgUmVzb3VyY2VI
YW5kbAogICAgIG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEY6Om1vdmUoZG93bmxvYWQp
KTsKIH0KIAordm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKHVpbnQ2NF90IGRv
d25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpCit7CisgICAgLy8gRG93bmxvYWQ6OnJlc3VtZSgpIGlzIHJlc3BvbnNpYmxlIGZv
ciBzZXR0aW5nIHRoZSBEb3dubG9hZCdzIHJlc291cmNlIHJlcXVlc3QuCisgICAgYXV0byBkb3du
bG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBSZXNv
dXJjZVJlcXVlc3QoKSk7CisKKyAgICBkb3dubG9hZC0+cmVzdW1lKHJlc3VtZURhdGEsIHBhdGgs
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIEFTU0VSVCghbV9kb3dubG9hZHMuY29udGFp
bnMoZG93bmxvYWRJRCkpOworICAgIG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEY6Om1v
dmUoZG93bmxvYWQpKTsKK30KKwogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNhbmNlbERvd25sb2Fk
KHVpbnQ2NF90IGRvd25sb2FkSUQpCiB7CiAgICAgRG93bmxvYWQqIGRvd25sb2FkID0gbV9kb3du
bG9hZHMuZ2V0KGRvd25sb2FkSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKaW5kZXggMmExNjk0ZTkyNWU4MDdjNDQxYWYxMjUzOTA1
NDM1ZWVmZjU1NDUzNS4uNjI0OWY3MWFkZDM5ZWM3N2M0ZDc3MjYyOWMzZjJlNGFkYTk0YzM4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIERvd25sb2FkTWFuYWdlcl9oCiAjZGVmaW5l
IERvd25sb2FkTWFuYWdlcl9oCiAKKyNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtMzgsNiArMzksNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEYXRhUmVm
ZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY1LDYgKzY3LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc3RhcnREb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGNvbnZlcnRIYW5kbGVUb0Rvd25sb2Fk
KHVpbnQ2NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
OwogCisgICAgdm9pZCByZXN1bWVEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKHVp
bnQ2NF90IGRvd25sb2FkSUQpOwogCiAgICAgdm9pZCBkb3dubG9hZEZpbmlzaGVkKERvd25sb2Fk
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL2lvcy9Eb3du
bG9hZElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvaW9zL0Rvd25sb2Fk
SU9TLm1tCmluZGV4IGY0ZmY2MmZjYThhMzA2MzRlYzM2ZTJhMmU3Y2I1NzIwNTc5NWJlZjQuLjYx
NDM4ZTYwYjQxMDE2NzdhOTFjZDQzNzNjMzNhOGI2MjIzNDBiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tCkBAIC0xMjcsNiAr
MTI3LDExIEBAIHZvaWQgRG93bmxvYWQ6OnN0YXJ0KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCit2b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCiB2b2lkIERvd25sb2FkOjpzdGFydFdpdGhIYW5kbGUoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAg
ICAgQ0ZVUkxEb3dubG9hZENsaWVudCBjbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCmluZGV4IGEzOTgzMDc5MDQ2YTA5YjY0
N2ViNzJlMTZjZWJlY2Y0MmNjNjliZDkuLjAxYTM0ZjRmNTY2MDI3ZjQ0OTlhNGU0MWU4OGY3OGVh
OTkzZjVjNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvbWFj
L0Rvd25sb2FkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvbWFj
L0Rvd25sb2FkTWFjLm1tCkBAIC04NCw2ICs4NCwyNiBAQCB2b2lkIERvd25sb2FkOjpzdGFydFdp
dGhIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cgogICAgIFttX25zVVJMRG93bmxvYWQgc2V0RGVsZXRlc0ZpbGVVcG9uRmFpbHVyZTpOT107CiB9
CiAKK3ZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3Vt
ZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQoreworICAgIEFTU0VSVCghbV9uc1VSTERvd25sb2Fk
KTsKKyAgICBBU1NFUlQoIW1fZGVsZWdhdGUpOworCisgICAgbV9zYW5kYm94RXh0ZW5zaW9uID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIGlm
IChtX3NhbmRib3hFeHRlbnNpb24pCisgICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3Vt
ZSgpOworCisgICAgbV9kZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS0Rvd25sb2FkQXNEZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhEb3dubG9hZDp0aGlzXSk7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBu
c0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnJlc3VtZURhdGEu
ZGF0YSgpIGxlbmd0aDpyZXN1bWVEYXRhLnNpemUoKV0pOworICAgIG1fbnNVUkxEb3dubG9hZCA9
IGFkb3B0TlMoW1tOU1VSTERvd25sb2FkIGFsbG9jXSBpbml0V2l0aFJlc3VtZURhdGE6bnNEYXRh
LmdldCgpIGRlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCkgcGF0aDpwYXRoXSk7CisKKyAgICBtX3Jl
cXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoW21fbnNVUkxEb3dubG9hZCByZXF1ZXN0XSk7CisKKyAg
ICAvLyBGSVhNRTogQWxsb3cgdGhpcyB0byBiZSBjaGFuZ2VkIGJ5IHRoZSBjbGllbnQuCisgICAg
W21fbnNVUkxEb3dubG9hZCBzZXREZWxldGVzRmlsZVVwb25GYWlsdXJlOk5PXTsKK30KKwogdm9p
ZCBEb3dubG9hZDo6Y2FuY2VsKCkKIHsKICAgICBbbV9uc1VSTERvd25sb2FkIGNhbmNlbF07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRT
b3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNv
dXAuY3BwCmluZGV4IGRlZjY0NDQ0Mjk5YzMyMzdmMjQ4NzA1Y2I3NmZkMDYzMzM2MTJmNjUuLjk5
NzdjN2M2M2ZjM2U5NTA4YmUwMzZkOTlkY2NjMDkzZWQ4MDNhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCkBAIC0y
MzYsNiArMjM2LDExIEBAIHZvaWQgRG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZShSZXNvdXJjZUhh
bmRsZSogcmVzb3VyY2VIYW5kbGUsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgc3RhdGljX2Nhc3Q8
RG93bmxvYWRDbGllbnQqPihtX2Rvd25sb2FkQ2xpZW50LmdldCgpKS0+aGFuZGxlUmVzcG9uc2VM
YXRlcihyZXNwb25zZSk7CiB9CiAKK3ZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgRG93bmxvYWQ6OmNhbmNl
bCgpCiB7CiAgICAgaWYgKCFtX3Jlc291cmNlSGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCA3NDMxMTA5NzBhMWUzYTcxZjhlMjk4MDlj
NzUwMDA4ZjY1MjlkMGI1Li43ZDE2M2JlMDBjNTI1MDhjZTg3Y2ZlOWVkYzNmYjJjYWRlYmYwOTI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAt
MjgyLDYgKzI4MiwxMSBAQCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4dERvd25sb2FkVVJMUmVxdWVz
dChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tVUkxSZQogICAgIHJldHVybiB0b0FQ
SSh0b0ltcGwoY29udGV4dFJlZiktPmRvd25sb2FkKDAsIHRvSW1wbChyZXF1ZXN0UmVmKS0+cmVz
b3VyY2VSZXF1ZXN0KCkpKTsKIH0KIAorV0tEb3dubG9hZFJlZiBXS0NvbnRleHRSZXN1bWVEb3du
bG9hZChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3Ry
aW5nUmVmIHBhdGgpCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+cmVz
dW1lRG93bmxvYWQodG9JbXBsKHJlc3VtZURhdGEpLCB0b1dURlN0cmluZyhwYXRoKSkpOworfQor
CiB2b2lkIFdLQ29udGV4dFNldEluaXRpYWxpemF0aW9uVXNlckRhdGFGb3JJbmplY3RlZEJ1bmRs
ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKICAg
ICB0b0ltcGwoY29udGV4dFJlZiktPnNldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YSh0b0ltcGwodXNlckRhdGFSZWYpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuaAppbmRleCBjOGQ1MmE1YzkyZTc5YWM0N2M4MmVhN2EzZDc0OTE5NGNjMjU0
MTc4Li5jMTBhZTQyMzZjODkyODVhNGJkOWFmN2VkYzVlZmIwMmFiMTBkOWE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCkBAIC0xMTEsNiArMTExLDcgQEAg
V0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNv
bnRleHQsIGNvbnN0IFdLQ29udGV4dEQKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldENvbm5l
Y3Rpb25DbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dENvbm5lY3Rp
b25DbGllbnRCYXNlKiBjbGllbnQpOwogCiBXS19FWFBPUlQgV0tEb3dubG9hZFJlZiBXS0NvbnRl
eHREb3dubG9hZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLVVJMUmVx
dWVzdFJlZiByZXF1ZXN0KTsKK1dLX0VYUE9SVCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4dFJlc3Vt
ZURvd25sb2FkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0RhdGFSZWYgcmVzdW1lRGF0YSwgV0tT
dHJpbmdSZWYgcGF0aCk7CiAKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEluaXRpYWxpemF0
aW9uVXNlckRhdGFGb3JJbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tUeXBl
UmVmIHVzZXJEYXRhKTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9Jbmpl
Y3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUs
IFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHAKaW5kZXggMTgyYTlhY2U2ZDZiYmZmOGRjMjJiNDkxMWE1MWRiNWFhYjI4NTY3OS4uNmMw
MWQyZjJkNGExM2FjOGVkNjlkNGUwOWUzODdiODg4NmZkOTI3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtODkyLDYgKzg5MiwyNiBAQCBEb3dubG9hZFByb3h5
KiBXZWJDb250ZXh0Ojpkb3dubG9hZChXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25z
dCBSZXNvdXJjZQogICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQogCitEb3dubG9hZFByb3h5
KiBXZWJDb250ZXh0OjpyZXN1bWVEb3dubG9hZChjb25zdCBBUEk6OkRhdGEqIHJlc3VtZURhdGEs
IGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5
ID0gY3JlYXRlRG93bmxvYWRQcm94eShSZXNvdXJjZVJlcXVlc3QoKSk7CisKKyAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKKyAgICBpZiAoIXBhdGgu
aXNFbXB0eSgpKQorICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKwor
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisgICAgaWYgKHVzZXNOZXR3b3JrUHJvY2Vzcygp
ICYmIG5ldHdvcmtQcm9jZXNzKCkpIHsKKyAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc3VtZURvd25sb2FkKGRvd25sb2FkUHJveHktPmRv
d25sb2FkSUQoKSwgcmVzdW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKSwgMCk7CisgICAgICAgIHJldHVybiBkb3dubG9hZFByb3h5OworICAgIH0K
KyNlbmRpZgorCisgICAgbV9wcm9jZXNzZXNbMF0tPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OlJlc3VtZURvd25sb2FkKGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgcmVzdW1lRGF0YS0+
ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgMCk7CisKKyAg
ICByZXR1cm4gZG93bmxvYWRQcm94eTsKK30KKwogdm9pZCBXZWJDb250ZXh0Ojpwb3N0TWVzc2Fn
ZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3Qq
IG1lc3NhZ2VCb2R5KQogewogICAgIGlmIChtX3Byb2Nlc3Nlcy5pc0VtcHR5KCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4IDllMjM0MGFiZjg1NDRjYjFmOWViMWZj
MTRkM2FjZWM4M2UwNGNlNmIuLjg5ODc1NGQ0NGU0YmU0NmEzYmZjODZmOGZmMGEyYTg0NzgzNzE1
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAtMTc5LDYgKzE3OSw3
IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGVQYXRoOyB9CiAKICAgICBEb3dubG9hZFByb3h5KiBk
b3dubG9hZChXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKKyAgICBEb3dubG9hZFByb3h5KiByZXN1bWVEb3dubG9hZChjb25zdCBB
UEk6OkRhdGEqIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKICAgICB2b2lkIHNl
dEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShQYXNzUmVmUHRyPEFQSTo6T2Jq
ZWN0PiB1c2VyRGF0YSkgeyBtX2luamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9
IHVzZXJEYXRhOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IGE0NDU4OTQwOTNjN2M0OGI1ZTBlMGFiMzM4NTUwMjg4M2Q2NGJkZjIuLjg2Zjk1ZTcyYTk3
Nzc4ZjM5Y2UyZDhhZmMxN2RkNzY3MDA3NTllNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcApAQCAtMTA2Miw2ICsxMDYyLDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6
ZG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2FkSUQsIHVpbnQ2NF90IGluaXRpYXRpbmdQ
YWdlSUQsCiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChkb3dubG9hZElELCBy
ZXF1ZXN0V2l0aE9yaWdpbmFsVVJMKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzOjpyZXN1bWVEb3du
bG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3Vt
ZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit7CisgICAgZG93bmxvYWRNYW5hZ2Vy
KCkucmVzdW1lRG93bmxvYWQoZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwgcGF0aCwgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQodWlu
dDY0X3QgZG93bmxvYWRJRCkKIHsKICAgICBkb3dubG9hZE1hbmFnZXIoKS5jYW5jZWxEb3dubG9h
ZChkb3dubG9hZElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXgg
NThmZWJiYzlkYjk4ZjcyMDA2ZjBlZTU0NTMyMWRkNjNhZWU0NzUyZi4uMjEyNTFjMDU4YWM5MGMw
MTdhZmFmM2U4MDcxOTQyZTNiZGY4YzcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKQEAgLTIzNiw2ICsyMzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcE1lbW9y
eVNhbXBsZXIoKTsKIAogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2Fk
SUQsIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOworICAgIHZvaWQgcmVzdW1lRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQo
dWludDY0X3QgZG93bmxvYWRJRCk7CiAKICAgICB2b2lkIHNldFRleHRDaGVja2VyU3RhdGUoY29u
c3QgVGV4dENoZWNrZXJTdGF0ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGZmNzExNmZhMTcyZTNmYjJhYzk2ZGMzYTg4OTdl
YTJiYTMwY2Q1M2YuLmM5NjM1MzI4OGZjMGU3MmE1YzM2ZmU2ZDJkZGZmZGRiYzkxNWE2ZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTYxLDggKzYxLDkgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7
CiAgICAgdm9pZCBTdG9wTWVtb3J5U2FtcGxlcigpOwogCiAgICAgIyBEb3dubG9hZHMuIFRoaXMg
c2hvdWxkIHJlYWxseSBiZSBpbiBhIERvd25sb2FkLm1lc3NhZ2VzLmluLCBidXQgaXQgc2VlbWVk
IHVubmVjZXNzYXJ5IHRvIGNyZWF0ZSBhIG5ldyBmaWxlIGp1c3QgZm9yCi0gICAgIyB0d28gbWVz
c2FnZXMuCisgICAgIyB0aHJlZSBtZXNzYWdlcy4KICAgICBEb3dubG9hZFJlcXVlc3QodWludDY0
X3QgZG93bmxvYWRJRCwgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QpCisgICAgUmVzdW1lRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJ
RCwgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogICAgIENhbmNl
bERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpCiAKICAgICBTZXRUZXh0Q2hlY2tlclN0YXRl
KFdlYktpdDo6VGV4dENoZWNrZXJTdGF0ZSB0ZXh0Q2hlY2tlclN0YXRlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240135</attachid>
            <date>2014-10-20 12:01:00 -0700</date>
            <delta_ts>2014-10-20 17:46:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137507-20141020120106.patch</filename>
            <type>text/plain</type>
            <size>18326</size>
            <attacher name="Jeff Miller">jeffm</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0ODkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGQyYjU5NjAxNzA3MTNi
MjFkYzA3OGYzMTQzMDNmMTk5ZDM3NzRhOC4uYTU2OGQ5ZTk0YWQyZmJmYTZhOWNhNDllZWVjNzJi
NmFjMTUzOGU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE0LTEwLTIwICBKZWZm
IE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KKworICAgICAgICBXS0NvbnRleHQgbmVlZHMgdG8g
cHJvdmlkZSBhbiBBUEkgdG8gcmVzdW1lIGEgZG93bmxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzUwNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBXS0NvbnRleHRSZXN1
bWVEb3dubG9hZCgpLCB3aGljaCBpcyBvbmx5IHN1cHBvcnRlZCBvbiB0aGUgTWFjLCBhbmQgcmVx
dWlyZXMgdGhlCisgICAgICAgIHJlc3VtZSBkYXRhIGZyb20gV0tEb3dubG9hZEdldFJlc3VtZURh
dGEoKS4KKworICAgICAgICBXZSBoYXZlIHRvIGNyZWF0ZSBhIHNhbmRib3ggZXh0ZW5zaW9uIGZv
ciB0aGUgcGFydGlhbGx5IGRvd25sb2FkZWQgZmlsZSBpbiB0aGUgVUkgcHJvY2VzcyBzbyB0aGUK
KyAgICAgICAgbmV0d29yayBvciB3ZWIgcHJvY2VzcyBjYW4gcmVzdW1lIHdyaXRpbmcgdG8gaXQu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgIEFkZGVk
LCBjYWxscyB0aHJvdWdoIHRvIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoKS4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgIEFkZGVk
IHJlc3VtZURvd25sb2FkKCkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgQWRkZWQgUmVzdW1lRG93bmxvYWQgbWVzc2FnZS4K
KworICAgICAgICAqIFNoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAgICAgICAgQWRkZWQg
cmVzdW1lKCkuCisKKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQpOgor
ICAgICAgICBBZGRlZC4gVGhlIFVSTCBiZWluZyBkb3dubG9hZGVkIGlzIHBhcnQgb2YgdGhlIG9w
YXF1ZSByZXN1bWVEYXRhLCBzbyB3ZSBjYW4ndCBzcGVjaWZ5IGl0IHdoZW4gdGhlCisgICAgICAg
IERvd25sb2FkIGlzIGNvbnN0cnVjdGVkLgorCisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAgQWRkZWQgcmVzdW1lRG93bmxvYWQoKS4KKworICAg
ICAgICAqIFNoYXJlZC9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZDo6cmVzdW1lKToKKyAgICAgICAgQWRkZWQsIG5vdCBpbXBsZW1lbnRlZCBv
biB0aGlzIHBsYXRmb3JtLgorCisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxv
YWRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpyZXN1bWUpOgorICAgICAgICBB
ZGRlZC4gQ29uc3VtZXMgdGhlIHNhbmRib3ggZXh0ZW5zaW9uLCByZXN1bWVzIHRoZSBkb3dubG9h
ZCwgYW5kIHNldHMgbV9yZXF1ZXN0IGFmdGVyIHRoZQorICAgICAgICBOU1VSTERvd25sb2FkIGhh
cyBiZWVuIGNyZWF0ZWQuIE5vdGUgdGhhdCB3ZSBhbHJlYWR5IGhhdmUgY29kZSB0byByZXZva2Ug
dGhlIHNhbmRib3ggZXh0ZW5zaW9uIHdoZW4KKyAgICAgICAgdGhlIGRvd25sb2FkIGlzIGZpbmlz
aGVkLCBjYW5jZWxlZCwgb3IgZmFpbHMuCisKKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL3Nv
dXAvRG93bmxvYWRTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnJlc3VtZSk6
CisgICAgICAgIEFkZGVkLCBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0
UmVzdW1lRG93bmxvYWQpOgorICAgICAgICBBZGRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgQWRkZWQgV0tDb250ZXh0UmVzdW1lRG93bmxvYWQo
KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICBBZGRlZC4gQ3JlYXRlcyBh
IHNhbmRib3ggZXh0ZW5zaW9uIGZvciB0aGUgZXhpc3RpbmcgZmlsZSBhbmQgaW5jbHVkZXMgaXQg
aW4gdGhlIG1lc3NhZ2UgdG8gdGhlCisgICAgICAgIG5ldHdvcmsgb3Igd2ViIHByb2Nlc3MuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICBBZGRlZCByZXN1bWVE
b3dubG9hZCgpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICBBZGRlZCwg
Y2FsbHMgdGhyb3VnaCB0byBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKCkuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgQWRkZWQgcmVzdW1lRG93
bmxvYWQoKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoK
KyAgICAgICAgQWRkZWQgUmVzdW1lRG93bmxvYWQgbWVzc2FnZS4KKwogMjAxNC0xMC0xOSAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQgdW5uZWNlc3Nh
cnkgTlNVUkxSZXNwb25zZSBjb25zdHJ1Y3Rpb24gZm9yIFF1aWNrTG9vayBvbiBpT1MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBh
OGRkNzhiMTI5MDRjNDJkYjQ2OTlhYjY0NjBkOGUwMzIxZWM1ODA5Li4yZTVkN2YxYTc5NGQ5ODI1
MDEzMDNkOTFmMTBhMWUyOWE0YTg3OWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMzYsNiArMjM2LDExIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmCiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChkb3du
bG9hZElELCByZXF1ZXN0KTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxv
YWQodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVE
YXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQoreworICAgIGRvd25sb2FkTWFuYWdlcigp
LnJlc3VtZURvd25sb2FkKGRvd25sb2FkSUQsIHJlc3VtZURhdGEsIHBhdGgsIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEb3dubG9hZCh1
aW50NjRfdCBkb3dubG9hZElEKQogewogICAgIGRvd25sb2FkTWFuYWdlcigpLmNhbmNlbERvd25s
b2FkKGRvd25sb2FkSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmgKaW5kZXggMTE1OTk5OTZkMDlmMWVkOGI3MjdlYjlkYThjYWJhMTU1MmNjZmY5
My4uNmVmMTQyN2IyZTNmYzhlMWY5M2Y0OWVlZTExMzEyMzU3MzFlOTJhZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyTWFwLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5oIgorI2lu
Y2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5o
PgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMTEzLDYg
KzExNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KFdlYkNvcmU6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KHVpbnQ2
NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZv
aWQgcmVzdW1lRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYpOwogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxv
YWRJRCk7CiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKHVpbnQzMl90KTsKICAgICB2b2lkIGFsbG93
U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8mLCBjb25zdCBTdHJpbmcmIGhvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAxYzI2YzNh
MTNlZmFkNDFkOTE4OTM5YTg1OTk4Yjk4NmJhOTE5ODUyLi41NTAzZDhiNWJlY2E0MjY2ZDNjZjUw
NDBlYzgxNWU0MzJhN2Q3M2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzgsNiArMzgsNyBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGVzdHJveVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAogICAg
IERvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCkKKyAgICBSZXN1bWVEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBJ
UEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiAgICAgQ2FuY2VsRG93
bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCkKIAogICAgIFNldFByb2Nlc3NTdXBwcmVzc2lvbkVu
YWJsZWQoYm9vbCBmbGFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25s
b2Fkcy9Eb3dubG9hZC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5oCmluZGV4IGYwZmY3MTg2ZDY0NWVkNDA2Yzc1YTYxNDY1MWQ3NjQzNWUxMjE2OTkuLjc1MDM3
MmM5MGEwMWJlNjdmMTRjNjM2MzFiODIxODBkMzBlODYxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRG93
bmxvYWRfaAogCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlNhbmRib3hF
eHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC02Myw3ICs2NCw2IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBEb3dubG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50OwogY2xhc3MgRG93bmxv
YWRNYW5hZ2VyOwotY2xhc3MgU2FuZGJveEV4dGVuc2lvbjsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNs
YXNzIERvd25sb2FkIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciB7CkBAIC03NCw2ICs3NCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIHN0YXJ0V2l0aEhhbmRs
ZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKKyAgICB2b2lkIHJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURh
dGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7
CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIHVpbnQ2NF90IGRvd25sb2FkSUQoKSBjb25zdCB7
IHJldHVybiBtX2Rvd25sb2FkSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCA2N2FiNzRiYTg5YTM5MGFkNWNmYmQ4
YWRkYWU3NTM3YTM0OTc2OGVlLi43NGUwMzc1NjBiYzA3N2EzMmFmMTYwNTkyMzU2MGZjY2ZhMDQz
YzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCkBAIC01Niw2ICs1NiwxNiBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29u
dmVydEhhbmRsZVRvRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgUmVzb3VyY2VIYW5kbAog
ICAgIG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEY6Om1vdmUoZG93bmxvYWQpKTsKIH0K
IAordm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKHVpbnQ2NF90IGRvd25sb2Fk
SUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpCit7CisgICAgLy8gRG93bmxvYWQ6OnJlc3VtZSgpIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0
aW5nIHRoZSBEb3dubG9hZCdzIHJlc291cmNlIHJlcXVlc3QuCisgICAgYXV0byBkb3dubG9hZCA9
IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBSZXNvdXJjZVJl
cXVlc3QoKSk7CisKKyAgICBkb3dubG9hZC0+cmVzdW1lKHJlc3VtZURhdGEsIHBhdGgsIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpOworICAgIEFTU0VSVCghbV9kb3dubG9hZHMuY29udGFpbnMoZG93
bmxvYWRJRCkpOworICAgIG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEY6Om1vdmUoZG93
bmxvYWQpKTsKK30KKwogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNhbmNlbERvd25sb2FkKHVpbnQ2
NF90IGRvd25sb2FkSUQpCiB7CiAgICAgRG93bmxvYWQqIGRvd25sb2FkID0gbV9kb3dubG9hZHMu
Z2V0KGRvd25sb2FkSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMv
RG93bmxvYWRNYW5hZ2VyLmgKaW5kZXggMmExNjk0ZTkyNWU4MDdjNDQxYWYxMjUzOTA1NDM1ZWVm
ZjU1NDUzNS4uNjI0OWY3MWFkZDM5ZWM3N2M0ZDc3MjYyOWMzZjJlNGFkYTk0YzM4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIERvd25sb2FkTWFuYWdlcl9oCiAjZGVmaW5lIERvd25s
b2FkTWFuYWdlcl9oCiAKKyNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgpAQCAtMzgsNiArMzksNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEYXRhUmVmZXJlbmNl
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY1LDYgKzY3LDggQEAgcHVibGljOgogICAg
IHZvaWQgc3RhcnREb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKHVpbnQ2
NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCisg
ICAgdm9pZCByZXN1bWVEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJik7CisKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKHVpbnQ2NF90
IGRvd25sb2FkSUQpOwogCiAgICAgdm9pZCBkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1t
CmluZGV4IGFmZWNlNmJkOGYwNDcxNjdjNzhhNjFlYzkwMTA0OTM5ZmFiZDMxOWQuLjI3NjI5MTMy
MWVkYzE4ODM4YWUyZGE1MDM5ODhlZDliMWY2ZTJlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tCkBAIC0xMjcsNiArMTI3LDEx
IEBAIHZvaWQgRG93bmxvYWQ6OnN0YXJ0KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2
b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCiB2b2lkIERvd25sb2FkOjpzdGFydFdpdGhIYW5kbGUoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgLy8g
RklYTUU6IEZvciBzb21lIHJlYXNvbiB0aGUgZmlsZW5hbWUgbmVlZHMgdG8gYmUgYWNjZXNzZWQg
b3IgaXQgbWF5IGJlIGluY29ycmVjdCBhZnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQppbmRleCBiNzQ1ZGVjNmNhMDE4ZmRjMThm
YTcwMmQ1NmVkNmZjMGNiNGUzOTAyLi4wZmJkZmEyMWY1NjRkOGQ1NWI1ZjNiNDEzYjQyMGVmNzAz
NDY2OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9E
b3dubG9hZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9E
b3dubG9hZE1hYy5tbQpAQCAtODgsNiArODgsMjYgQEAgdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRo
SGFuZGxlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIK
ICAgICBbbV9uc1VSTERvd25sb2FkIHNldERlbGV0ZXNGaWxlVXBvbkZhaWx1cmU6Tk9dOwogfQog
Cit2b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVE
YXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3sKKyAgICBBU1NFUlQoIW1fbnNVUkxEb3dubG9hZCk7
CisgICAgQVNTRVJUKCFtX2RlbGVnYXRlKTsKKworICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAo
bV9zYW5kYm94RXh0ZW5zaW9uKQorICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUo
KTsKKworICAgIG1fZGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tEb3dubG9hZEFzRGVsZWdhdGUgYWxs
b2NdIGluaXRXaXRoRG93bmxvYWQ6dGhpc10pOworCisgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnJlc3VtZURhdGEuZGF0YSgpIGxlbmd0aDpy
ZXN1bWVEYXRhLnNpemUoKV0pOworICAgIG1fbnNVUkxEb3dubG9hZCA9IGFkb3B0TlMoW1tOU1VS
TERvd25sb2FkIGFsbG9jXSBpbml0V2l0aFJlc3VtZURhdGE6bnNEYXRhLmdldCgpIGRlbGVnYXRl
Om1fZGVsZWdhdGUuZ2V0KCkgcGF0aDpwYXRoXSk7CisKKyAgICBtX3JlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QoW21fbnNVUkxEb3dubG9hZCByZXF1ZXN0XSk7CisKKyAgICAvLyBGSVhNRTogQWxs
b3cgdGhpcyB0byBiZSBjaGFuZ2VkIGJ5IHRoZSBjbGllbnQuCisgICAgW21fbnNVUkxEb3dubG9h
ZCBzZXREZWxldGVzRmlsZVVwb25GYWlsdXJlOk5PXTsKK30KKwogdm9pZCBEb3dubG9hZDo6Y2Fu
Y2VsKCkKIHsKICAgICBbbV9uc1VSTERvd25sb2FkIGNhbmNlbF07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCmluZGV4IGRl
ZjY0NDQ0Mjk5YzMyMzdmMjQ4NzA1Y2I3NmZkMDYzMzM2MTJmNjUuLjk5NzdjN2M2M2ZjM2U5NTA4
YmUwMzZkOTlkY2NjMDkzZWQ4MDNhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCkBAIC0yMzYsNiArMjM2LDExIEBA
IHZvaWQgRG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZShSZXNvdXJjZUhhbmRsZSogcmVzb3VyY2VI
YW5kbGUsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgc3RhdGljX2Nhc3Q8RG93bmxvYWRDbGllbnQq
PihtX2Rvd25sb2FkQ2xpZW50LmdldCgpKS0+aGFuZGxlUmVzcG9uc2VMYXRlcihyZXNwb25zZSk7
CiB9CiAKK3ZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgRG93bmxvYWQ6OmNhbmNlbCgpCiB7CiAgICAgaWYg
KCFtX3Jlc291cmNlSGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmNwcAppbmRleCA3NDMxMTA5NzBhMWUzYTcxZjhlMjk4MDljNzUwMDA4ZjY1MjlkMGI1
Li43ZDE2M2JlMDBjNTI1MDhjZTg3Y2ZlOWVkYzNmYjJjYWRlYmYwOTI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtMjgyLDYgKzI4MiwxMSBA
QCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4dERvd25sb2FkVVJMUmVxdWVzdChXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgY29uc3QgV0tVUkxSZQogICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4
dFJlZiktPmRvd25sb2FkKDAsIHRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkp
KTsKIH0KIAorV0tEb3dubG9hZFJlZiBXS0NvbnRleHRSZXN1bWVEb3dubG9hZChXS0NvbnRleHRS
ZWYgY29udGV4dFJlZiwgV0tEYXRhUmVmIHJlc3VtZURhdGEsIFdLU3RyaW5nUmVmIHBhdGgpCit7
CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+cmVzdW1lRG93bmxvYWQodG9J
bXBsKHJlc3VtZURhdGEpLCB0b1dURlN0cmluZyhwYXRoKSkpOworfQorCiB2b2lkIFdLQ29udGV4
dFNldEluaXRpYWxpemF0aW9uVXNlckRhdGFGb3JJbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKICAgICB0b0ltcGwoY29udGV4
dFJlZiktPnNldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSh0b0ltcGwodXNl
ckRhdGFSZWYpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaApp
bmRleCBjOGQ1MmE1YzkyZTc5YWM0N2M4MmVhN2EzZDc0OTE5NGNjMjU0MTc4Li5jMTBhZTQyMzZj
ODkyODVhNGJkOWFmN2VkYzVlZmIwMmFiMTBkOWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5oCkBAIC0xMTEsNiArMTExLDcgQEAgV0tfRVhQT1JUIHZvaWQg
V0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdL
Q29udGV4dEQKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldENvbm5lY3Rpb25DbGllbnQoV0tD
b250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnRCYXNlKiBj
bGllbnQpOwogCiBXS19FWFBPUlQgV0tEb3dubG9hZFJlZiBXS0NvbnRleHREb3dubG9hZFVSTFJl
cXVlc3QoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0
KTsKK1dLX0VYUE9SVCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4dFJlc3VtZURvd25sb2FkKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS0RhdGFSZWYgcmVzdW1lRGF0YSwgV0tTdHJpbmdSZWYgcGF0aCk7
CiAKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEluaXRpYWxpemF0aW9uVXNlckRhdGFGb3JJ
bmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tUeXBlUmVmIHVzZXJEYXRhKTsK
IFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShXS0Nv
bnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNz
YWdlQm9keSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggM2Ix
MmMxOGQ5YWZlYmE1ZWUxN2NhYjVjYmExNDNmMzNjMzgyM2MyNS4uMmI2MmNhMWZlNDkwZTAxZmM4
ZDc3MTc1ZTczNzY4NGM2NGE0NTBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcApAQCAtODg5LDYgKzg4OSwyNiBAQCBEb3dubG9hZFByb3h5KiBXZWJDb250ZXh0Ojpk
b3dubG9hZChXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBSZXNvdXJjZQogICAg
IHJldHVybiBkb3dubG9hZFByb3h5OwogfQogCitEb3dubG9hZFByb3h5KiBXZWJDb250ZXh0Ojpy
ZXN1bWVEb3dubG9hZChjb25zdCBBUEk6OkRhdGEqIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYg
cGF0aCkKK3sKKyAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxv
YWRQcm94eShSZXNvdXJjZVJlcXVlc3QoKSk7CisKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKKyAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQorICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKworI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCisgICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9j
ZXNzKCkpIHsKKyAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlJlc3VtZURvd25sb2FkKGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgcmVz
dW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwg
MCk7CisgICAgICAgIHJldHVybiBkb3dubG9hZFByb3h5OworICAgIH0KKyNlbmRpZgorCisgICAg
bV9wcm9jZXNzZXNbMF0tPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlc3VtZURvd25sb2Fk
KGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgcmVzdW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgp
LCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgMCk7CisKKyAgICByZXR1cm4gZG93bmxv
YWRQcm94eTsKK30KKwogdm9pZCBXZWJDb250ZXh0Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5k
bGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5KQog
ewogICAgIGlmIChtX3Byb2Nlc3Nlcy5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5oCmluZGV4IGZkYTRkZmE1YmRjZjNmYmJkODkxNzFiNjczODZjMDgxZTgxYjY2
NTIuLjA2ZDI1NGU1MmUwODllZjYwNGUyNTJiNzk0YjAzZTJiZjBlYWFhOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAtMTc5LDYgKzE3OSw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW5q
ZWN0ZWRCdW5kbGVQYXRoOyB9CiAKICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZChXZWJQYWdl
UHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
KyAgICBEb3dubG9hZFByb3h5KiByZXN1bWVEb3dubG9hZChjb25zdCBBUEk6OkRhdGEqIHJlc3Vt
ZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKICAgICB2b2lkIHNldEluamVjdGVkQnVuZGxl
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YShQYXNzUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YSkg
eyBtX2luamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9IHVzZXJEYXRhOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDVhMmFmYzA5NGFh
YTg3MWQ4YjA3ZGNiNDA3MTA4NTc3NWViMDQ3OWUuLjIzNjNhM2JlYjg3MzYwYzBmZWU4N2E5MWMw
M2ZmZjdlMjhmZjgzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cApAQCAtMTA1Nyw2ICsxMDU3LDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0
KHVpbnQ2NF90IGRvd25sb2FkSUQsIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQsCiAgICAgZG93
bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChkb3dubG9hZElELCByZXF1ZXN0V2l0aE9yaWdp
bmFsVVJMKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzOjpyZXN1bWVEb3dubG9hZCh1aW50NjRfdCBk
b3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpCit7CisgICAgZG93bmxvYWRNYW5hZ2VyKCkucmVzdW1lRG93bmxv
YWQoZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7
Cit9CisKIHZvaWQgV2ViUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJ
RCkKIHsKICAgICBkb3dubG9hZE1hbmFnZXIoKS5jYW5jZWxEb3dubG9hZChkb3dubG9hZElEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggNThmZWJiYzlkYjk4Zjcy
MDA2ZjBlZTU0NTMyMWRkNjNhZWU0NzUyZi4uMjEyNTFjMDU4YWM5MGMwMTdhZmFmM2U4MDcxOTQy
ZTNiZGY4YzcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTIz
Niw2ICsyMzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcE1lbW9yeVNhbXBsZXIoKTsKIAog
ICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2FkSUQsIHVpbnQ2NF90IGlu
aXRpYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZv
aWQgcmVzdW1lRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYpOwogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxv
YWRJRCk7CiAKICAgICB2b2lkIHNldFRleHRDaGVja2VyU3RhdGUoY29uc3QgVGV4dENoZWNrZXJT
dGF0ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IGZmNzExNmZhMTcyZTNmYjJhYzk2ZGMzYTg4OTdlYTJiYTMwY2Q1M2YuLmM5
NjM1MzI4OGZjMGU3MmE1YzM2ZmU2ZDJkZGZmZGRiYzkxNWE2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTYxLDggKzYxLDkg
QEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgdm9pZCBTdG9w
TWVtb3J5U2FtcGxlcigpOwogCiAgICAgIyBEb3dubG9hZHMuIFRoaXMgc2hvdWxkIHJlYWxseSBi
ZSBpbiBhIERvd25sb2FkLm1lc3NhZ2VzLmluLCBidXQgaXQgc2VlbWVkIHVubmVjZXNzYXJ5IHRv
IGNyZWF0ZSBhIG5ldyBmaWxlIGp1c3QgZm9yCi0gICAgIyB0d28gbWVzc2FnZXMuCisgICAgIyB0
aHJlZSBtZXNzYWdlcy4KICAgICBEb3dubG9hZFJlcXVlc3QodWludDY0X3QgZG93bmxvYWRJRCwg
dWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QpCisgICAgUmVzdW1lRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgSVBDOjpEYXRhUmVm
ZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogICAgIENhbmNlbERvd25sb2FkKHVpbnQ2
NF90IGRvd25sb2FkSUQpCiAKICAgICBTZXRUZXh0Q2hlY2tlclN0YXRlKFdlYktpdDo6VGV4dENo
ZWNrZXJTdGF0ZSB0ZXh0Q2hlY2tlclN0YXRlKQo=
</data>
<flag name="review"
          id="264902"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>