<?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>146988</bug_id>
          
          <creation_ts>2015-07-15 15:47:08 -0700</creation_ts>
          <short_desc>REGRESSION(r186088): Crash under WebKit::WebPageProxy::didFailLoadForFrame</short_desc>
          <delta_ts>2015-07-16 10:40:32 -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>All</rep_platform>
          <op_sys>All</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1109749</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-07-15 15:47:08 -0700</bug_when>
    <thetext>REGRESSION(r186088): Crash under WebKit::WebPageProxy::didFailLoadForFrame 

For WKView apps:
This WebPageProxy methods calls m_loaderClient-&gt;didFailLoadWithErrorForFrame(), and inside that callback the embedding app can cause the WKView to go away.
When a WKView goes away, it&apos;s PageClientImpl gets destroyed also.
But then we call into m_pageClient, which was just destroyed...

So we&apos;ll add a refView and derefView method to PageClient, add a RefPtr-style object to manage those, and use it in any method where a loaderClient method is called but is not the last thing to be called in the method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109768</commentid>
    <comment_count>1</comment_count>
      <attachid>256878</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-07-15 16:43:43 -0700</bug_when>
    <thetext>Created attachment 256878
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109770</commentid>
    <comment_count>2</comment_count>
      <attachid>256879</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-07-15 17:07:30 -0700</bug_when>
    <thetext>Created attachment 256879
Patch v2 - Alternate approach came up with Tim while reviewing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109771</commentid>
    <comment_count>3</comment_count>
      <attachid>256878</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-07-15 17:11:29 -0700</bug_when>
    <thetext>Comment on attachment 256878
Patch v1

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

Plz fix iOS.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:277
&gt; +class PageClientViewRefPtr {

Protector</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109772</commentid>
    <comment_count>4</comment_count>
      <attachid>256880</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-07-15 17:23:34 -0700</bug_when>
    <thetext>Created attachment 256880
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109775</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-15 17:24:38 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109776</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-15 17:24:53 -0700</bug_when>
    <thetext>Attachment 256880 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm:744:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm:746:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm:751:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm:753:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit2/UIProcess/ios/PageClientImplIOS.h:189:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 5 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109810</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-07-15 19:10:01 -0700</bug_when>
    <thetext>For GTK the implementation of those functions would be:

void PageClientImpl::refView()
{
  g_object_ref(m_viewWidget);
}

void PageClientImpl::derefView()
{
  g_object_unref(m_viewWidget);
}

For EFL, I will CC Gyuyoung, but the EFL bot will be happy if they&apos;re implemented in WebViewEfl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109822</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-07-15 21:05:05 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/186887</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109890</commentid>
    <comment_count>9</comment_count>
      <attachid>256880</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-07-16 10:23:01 -0700</bug_when>
    <thetext>Comment on attachment 256880
Patch v3

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

&gt; Source/WebKit2/UIProcess/mac/PageClientImpl.mm:848
&gt; +void PageClientImpl::refView()
&gt; +{
&gt; +    [m_wkView retain];
&gt; +}
&gt; +
&gt; +void PageClientImpl::derefView()
&gt; +{
&gt; +    [m_wkView release];
&gt; +}
&gt; +

This is wrong. It should use CFRetain/CFRelease or it will break under GC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109904</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-07-16 10:40:32 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 256880 [details]
&gt; Patch v3
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=256880&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/PageClientImpl.mm:848
&gt; &gt; +void PageClientImpl::refView()
&gt; &gt; +{
&gt; &gt; +    [m_wkView retain];
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +void PageClientImpl::derefView()
&gt; &gt; +{
&gt; &gt; +    [m_wkView release];
&gt; &gt; +}
&gt; &gt; +
&gt; 
&gt; This is wrong. It should use CFRetain/CFRelease or it will break under GC.

Fixed in https://trac.webkit.org/changeset/186897</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256878</attachid>
            <date>2015-07-15 16:43:43 -0700</date>
            <delta_ts>2015-07-15 17:23:34 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>9004</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3OTQwOWU5Li4zMzliODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAg
QEAKKzIwMTUtMDctMTUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFJFR1JFU1NJT04ocjE4NjA4OCk6IENyYXNoIHVuZGVyIFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkaWRGYWlsTG9hZEZvckZyYW1lCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTY5MjIxMj4g
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5ODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgbG9hZGVy
IGRlbGVnYXRlIGNhbGxiYWNrIHJlc3VsdHMgaW4gdGhlIFdLVmlldyBnZXR0aW5nIGRlYWxsb2Nh
dGVkLCB0aGVuIHRoZSBQYWdlQ2xpZW50CisgICAgICAgIGlzIGFsc28gZGVzdHJveWVkLgorCisg
ICAgICAgIFdlYlBhZ2VQcm94eSB0aGVuIChvZnRlbikgdHVybnMgYXJvdW5kIGFuZCB1c2VzIHRo
ZSBQYWdlQ2xpZW50IGFueXdheXMuCisKKyAgICAgICAgVHJpZWQgdG8gd3JpdGUgYSBUZXN0V2Vi
S2l0QVBJIHRlc3QgZm9yIHRoaXMsIGJ1dCBvbmx5IGRpZEZhaWxMb2FkRm9yRnJhbWUgYXBwZWFy
cyB0byBvYnZpb3VzbHkgCisgICAgICAgIGJlIHZ1bG5lcmFibGUsIGFuZCB0aGVyZSBzZWVtcyB0
byBiZSBubyB3YXkgdG8gcmVwcm9kdWNlIHRoYXQgZmFpbHVyZSBjYXNlIHVuZGVyIFRlc3RXZWJL
aXRBUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50Vmll
d1JlZlB0cjo6UGFnZUNsaWVudFZpZXdSZWZQdHIpOiBDYWxscyByZWZWaWV3KCkgb24gdGhlIFBh
Z2VDbGllbnQuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRWaWV3UmVmUHRyOjp+UGFnZUNs
aWVudFZpZXdSZWZQdHIpOiBDYWxscyBkZXJlZlZpZXcoKSBvbiB0aGUgUGFnZUNsaWVudC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUpOiBTaW5jZSB0aGUgY2FsbCBvdXQgdG8gdGhlIGxvYWRlckNsaWVudCBpcworICAgICAgICAg
IG5vdCB0aGUgdmVyeSBsYXN0IHRoaW5nIHRoaXMgbWV0aG9kIGRvZXMsIHVzZSBhIFBhZ2VDbGll
bnRWaWV3UmVmUHRyLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExv
YWRGb3JGcmFtZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZh
aWxMb2FkRm9yRnJhbWUpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpOiBEaXR0by4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5h
dmlnYXRpb25EYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkVXBkYXRlSGlzdG9yeVRpdGxlKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6d3JhcENyeXB0b0tleSk6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnVud3JhcENyeXB0b0tleSk6IERpdHRvLgorCisgICAgICAgICog
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpyZWZW
aWV3KTogW21fd2tWaWV3IHJldGFpbl0KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OmRlcmVmVmlldyk6IFttX3drVmlldyByZWxlYXNlXQorCiAyMDE1LTA3LTE1ICBNaWNoYWVsIENh
dGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSZW5hbWUg
UEFDS0FHRV9MT0NBTEVfRElSIHRvIExPQ0FMRURJUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKaW5kZXggZTVkMDVjYy4uMGY4ZDI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCkBAIC0zMjYsNiArMzI2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlciYgbWVkaWFTZXNzaW9uTWFuYWdlcigpID0gMDsK
ICNlbmRpZgogCisgICAgdmlydHVhbCB2b2lkIHJlZlZpZXcoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRlcmVmVmlldygpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBkODJmNGFkLi41OWUwMzdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjc0LDYg
KzI3NCwyNCBAQCBzdGF0aWMgY29uc3QgY2hhciogd2ViS2V5Ym9hcmRFdmVudFR5cGVTdHJpbmco
V2ViRXZlbnQ6OlR5cGUgdHlwZSkKIH0KICNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECiAKK2NsYXNz
IFBhZ2VDbGllbnRWaWV3UmVmUHRyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlQ2xp
ZW50Vmlld1JlZlB0cik7CitwdWJsaWM6CisgICAgUGFnZUNsaWVudFZpZXdSZWZQdHIoUGFnZUNs
aWVudCYgcGFnZUNsaWVudCkKKyAgICAgICAgOiBtX3BhZ2VDbGllbnQocGFnZUNsaWVudCkKKyAg
ICB7CisgICAgICAgIG1fcGFnZUNsaWVudC5yZWZWaWV3KCk7CisgICAgfQorCisgICAgflBhZ2VD
bGllbnRWaWV3UmVmUHRyKCkKKyAgICB7CisgICAgICAgIG1fcGFnZUNsaWVudC5kZXJlZlZpZXco
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUGFnZUNsaWVudCYgbV9wYWdlQ2xpZW50OworfTsK
KwogUmVmPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUoUGFnZUNsaWVudCYgcGFn
ZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0
IFdlYlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYlBhZ2VQcm94eShwYWdlQ2xpZW50LCBwcm9jZXNzLCBwYWdlSUQsIGNvbmZp
Z3VyYXRpb24pKTsKQEAgLTI4ODAsNiArMjg5OCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
aGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBj
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkws
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7
CisgICAgUGFnZUNsaWVudFZpZXdSZWZQdHIgcGFnZUNsaWVudFJlZihtX3BhZ2VDbGllbnQpOwor
CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQp
OwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCkBAIC0zMDE1LDYgKzMwMzUsOCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbmF2aQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQogeworICAgIFBhZ2VDbGllbnRWaWV3UmVmUHRyIHBhZ2VDbGllbnRS
ZWYobV9wYWdlQ2xpZW50KTsKKwogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNz
LT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIApAQCAtMzA0
NCw2ICszMDY2LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhKQogeworICAgIFBhZ2VDbGllbnRWaWV3UmVmUHRyIHBhZ2VDbGllbnRSZWYobV9wYWdlQ2xp
ZW50KTsKKwogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShm
cmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIApAQCAtMzA3Niw2ICszMTAwLDgg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklELAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgdWludDMyX3Qgb3BhcXVlU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CisgICAgUGFnZUNsaWVu
dFZpZXdSZWZQdHIgcGFnZUNsaWVudFJlZihtX3BhZ2VDbGllbnQpOworCiAgICAgV2ViRnJhbWVQ
cm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0Vf
Q0hFQ0soZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCk7CkBAIC0zMTMzLDYgKzMx
NTksOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBVc2VyRGF0YSYgdXNlcgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQogeworICAgIFBhZ2VDbGllbnRWaWV3UmVmUHRyIHBhZ2VD
bGllbnRSZWYobV9wYWdlQ2xpZW50KTsKKwogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9w
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIApA
QCAtMzM1NSw2ICszMzgzLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRGb3JtKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnMKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRp
b25EYXRhU3RvcmUmIHN0b3JlLCB1aW50NjRfdCBmcmFtZUlEKSAKIHsKKyAgICBQYWdlQ2xpZW50
Vmlld1JlZlB0ciBwYWdlQ2xpZW50UmVmKG1fcGFnZUNsaWVudCk7CisKICAgICBXZWJGcmFtZVBy
b3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9D
SEVDSyhmcmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZS0+cGFnZSgpID09IHRoaXMpOwpA
QCAtMzM2OSw2ICszMzk5LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5h
dmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHMKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgdWludDY0X3QgZnJh
bWVJRCkKIHsKKyAgICBQYWdlQ2xpZW50Vmlld1JlZlB0ciBwYWdlQ2xpZW50UmVmKG1fcGFnZUNs
aWVudCk7CisKICAgICBpZiAoc291cmNlVVJMU3RyaW5nLmlzRW1wdHkoKSB8fCBkZXN0aW5hdGlv
blVSTFN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTMzODksNiAr
MzQyMSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90IGZyYW1lSUQpCiB7Cisg
ICAgUGFnZUNsaWVudFZpZXdSZWZQdHIgcGFnZUNsaWVudFJlZihtX3BhZ2VDbGllbnQpOworCiAg
ICAgaWYgKHNvdXJjZVVSTFN0cmluZy5pc0VtcHR5KCkgfHwgZGVzdGluYXRpb25VUkxTdHJpbmcu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC0zNDA5LDYgKzM0NDMsOCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYg
c291cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkVXBkYXRlSGlz
dG9yeVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRf
dCBmcmFtZUlEKQogeworICAgIFBhZ2VDbGllbnRWaWV3UmVmUHRyIHBhZ2VDbGllbnRSZWYobV9w
YWdlQ2xpZW50KTsKKwogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJG
cmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKICAgICBNRVNTQUdFX0NI
RUNLKGZyYW1lLT5wYWdlKCkgPT0gdGhpcyk7CkBAIC01NjQ2LDYgKzU2ODIsOCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKFdURjo6T3B0aW9uYWw8V2ViQ29y
ZTo6U2Nyb2xsYmFyT3ZlcgogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogdm9pZCBXZWJQYWdl
UHJveHk6OndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGJvb2wmIHN1
Y2NlZWRlZCwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KQogeworICAgIFBhZ2VDbGllbnRW
aWV3UmVmUHRyIHBhZ2VDbGllbnRSZWYobV9wYWdlQ2xpZW50KTsKKwogICAgIFZlY3Rvcjx1aW50
OF90PiBtYXN0ZXJLZXk7CiAKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CkBAIC01NjYz
LDYgKzU3MDEsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0
b3I8dWludDhfdD4mIGtleSwgYm9vbCYgc3VjY2VlZGVkLCBWZQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgYm9v
bCYgc3VjY2VlZGVkLCBWZWN0b3I8dWludDhfdD4mIGtleSkKIHsKKyAgICBQYWdlQ2xpZW50Vmll
d1JlZlB0ciBwYWdlQ2xpZW50UmVmKG1fcGFnZUNsaWVudCk7CisKICAgICBWZWN0b3I8dWludDhf
dD4gbWFzdGVyS2V5OwogCiAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IGNlZTFkZjAuLmMx
ZjZmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
LmgKQEAgLTIxNiw2ICsyMTYsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCiAgICAgdmlydHVhbCBXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
JiBtZWRpYVNlc3Npb25NYW5hZ2VyKCkgb3ZlcnJpZGU7CiAjZW5kaWYKKworICAgIHZpcnR1YWwg
dm9pZCByZWZWaWV3KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRlcmVmVmlldygpIG92
ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQppbmRleCA5YTY1NDY2Li43ZDdmNmE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAg
LTgzNiw2ICs4MzYsMTYgQEAgV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlciYgUGFnZUNs
aWVudEltcGw6Om1lZGlhU2Vzc2lvbk1hbmFnZXIoKQogfQogI2VuZGlmCiAKK3ZvaWQgUGFnZUNs
aWVudEltcGw6OnJlZlZpZXcoKQoreworICAgIFttX3drVmlldyByZXRhaW5dOworfQorCit2b2lk
IFBhZ2VDbGllbnRJbXBsOjpkZXJlZlZpZXcoKQoreworICAgIFttX3drVmlldyByZWxlYXNlXTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCg==
</data>
<flag name="review"
          id="281992"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256879</attachid>
            <date>2015-07-15 17:07:30 -0700</date>
            <delta_ts>2015-07-15 17:23:34 -0700</delta_ts>
            <desc>Patch v2 - Alternate approach came up with Tim while reviewing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>7107</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3OTQwOWU5Li5hNzE5MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTUtMDctMTUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFJFR1JFU1NJT04ocjE4NjA4OCk6IENyYXNoIHVuZGVyIFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkaWRGYWlsTG9hZEZvckZyYW1lCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTY5MjIxMj4g
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5ODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgbG9hZGVy
IGRlbGVnYXRlIGNhbGxiYWNrIHJlc3VsdHMgaW4gdGhlIFdLVmlldyBnZXR0aW5nIGRlYWxsb2Nh
dGVkLCB0aGVuIHRoZSBQYWdlQ2xpZW50CisgICAgICAgIGlzIGFsc28gZGVzdHJveWVkLgorCisg
ICAgICAgIFdlYlBhZ2VQcm94eSB0aGVuIChvZnRlbikgdHVybnMgYXJvdW5kIGFuZCB1c2VzIHRo
ZSBQYWdlQ2xpZW50IGFueXdheXMuCisKKyAgICAgICAgVHJpZWQgdG8gd3JpdGUgYSBUZXN0V2Vi
S2l0QVBJIHRlc3QgZm9yIHRoaXMsIGJ1dCBvbmx5IGRpZEZhaWxMb2FkRm9yRnJhbWUgYXBwZWFy
cyB0byBvYnZpb3VzbHkgCisgICAgICAgIGJlIHZ1bG5lcmFibGUsIGFuZCB0aGVyZSBzZWVtcyB0
byBiZSBubyB3YXkgdG8gcmVwcm9kdWNlIHRoYXQgZmFpbHVyZSBjYXNlIHVuZGVyIFRlc3RXZWJL
aXRBUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudFByb3RlY3Rvcjo6UGFnZUNsaWVudFByb3RlY3Rvcik6IFVuZGVy
IEFwcEtpdCwgcHJvdGVjdHMgdGhlIFdLVmlldyB3aXRoIGEgUmV0YWluUHRyLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6IFNp
bmNlIHRoZSBjYWxsIG91dCB0byB0aGUgbG9hZGVyQ2xpZW50IGlzCisgICAgICAgICAgbm90IHRo
ZSB2ZXJ5IGxhc3QgdGhpbmcgdGhpcyBtZXRob2QgZG9lcywgdXNlIGEgUGFnZUNsaWVudFByb3Rl
Y3Rvci4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJh
bWUpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZv
ckZyYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUpOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9u
RGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1D
bGllbnRSZWRpcmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRpZFVwZGF0ZUhpc3RvcnlUaXRsZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OndyYXBDcnlwdG9LZXkpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp1bndyYXBDcnlwdG9LZXkpOiBEaXR0by4KKwogMjAxNS0wNy0xNSAgTWljaGFl
bCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmVu
YW1lIFBBQ0tBR0VfTE9DQUxFX0RJUiB0byBMT0NBTEVESVIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZDgyZjRhZC4uZGU3YzI1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI3NCw2ICsyNzQsMjIgQEAgc3Rh
dGljIGNvbnN0IGNoYXIqIHdlYktleWJvYXJkRXZlbnRUeXBlU3RyaW5nKFdlYkV2ZW50OjpUeXBl
IHR5cGUpCiB9CiAjZW5kaWYgLy8gIUxPR19ESVNBQkxFRAogCitjbGFzcyBQYWdlQ2xpZW50UHJv
dGVjdG9yIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlQ2xpZW50UHJvdGVjdG9yKTsK
K3B1YmxpYzoKKyAgICBQYWdlQ2xpZW50UHJvdGVjdG9yKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQp
CisjaWYgVVNFKEFQUEtJVCkKKyAgICAgICAgOiBtX3Byb3RlY3RvcihwYWdlQ2xpZW50LndrVmll
dygpKQorI2VuZGlmCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyNpZiBVU0UoQVBQS0lUKQor
ICAgIFJldGFpblB0cjxXS1ZpZXc+IG1fcHJvdGVjdG9yOworI2VuZGlmCit9OworCiBSZWY8V2Vi
UGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNv
bmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViUGFnZVByb3h5KHBhZ2VDbGllbnQsIHByb2Nlc3MsIHBhZ2VJRCwgY29uZmlndXJhdGlvbikp
OwpAQCAtMjg4MCw2ICsyODk2LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVByb3Zp
c2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIGMKIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKKyAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOworCiAgICAgV2ViRnJhbWVQ
cm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0Vf
Q0hFQ0soZnJhbWUpOwogCkBAIC0zMDE1LDYgKzMwMzMsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRh
KQogeworICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CisK
ICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7
CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKQEAgLTMwNDQsNiArMzA2NCw4IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklECiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKKyAgICBQYWdlQ2xp
ZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOworCiAgICAgV2ViRnJhbWVQcm94
eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hF
Q0soZnJhbWUpOwogCkBAIC0zMDc2LDYgKzMwOTgsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBvcGFxdWVT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKIHsKKyAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3Bh
Z2VDbGllbnQpOworCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZy
YW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hF
Q0tfVVJMKHVybCk7CkBAIC0zMTMzLDYgKzMxNTcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Rmlyc3RMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBVc2VyRGF0YSYgdXNl
cgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogeworICAg
IFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CisKICAgICBXZWJG
cmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVT
U0FHRV9DSEVDSyhmcmFtZSk7CiAKQEAgLTMzNTUsNiArMzM4MSw4IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp3aWxsU3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBzb3VyY2VGcmFt
ZUlELCBjb25zCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9u
RGF0YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBzdG9yZSwgdWludDY0X3QgZnJhbWVJ
RCkgCiB7CisgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsK
KwogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlE
KTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lLT5w
YWdlKCkgPT0gdGhpcyk7CkBAIC0zMzY5LDYgKzMzOTcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9y
ZSYgcwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0
IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3Ry
aW5nLCB1aW50NjRfdCBmcmFtZUlEKQogeworICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKG1fcGFnZUNsaWVudCk7CisKICAgICBpZiAoc291cmNlVVJMU3RyaW5nLmlzRW1wdHkoKSB8
fCBkZXN0aW5hdGlvblVSTFN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAK
QEAgLTMzODksNiArMzQxOSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xpZW50
UmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90IGZy
YW1lSUQpCiB7CisgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50
KTsKKwogICAgIGlmIChzb3VyY2VVUkxTdHJpbmcuaXNFbXB0eSgpIHx8IGRlc3RpbmF0aW9uVVJM
U3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIApAQCAtMzQwOSw2ICszNDQx
LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFVw
ZGF0ZUhpc3RvcnlUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwg
dWludDY0X3QgZnJhbWVJRCkKIHsKKyAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rvciht
X3BhZ2VDbGllbnQpOworCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndl
YkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogICAgIE1FU1NBR0Vf
Q0hFQ0soZnJhbWUtPnBhZ2UoKSA9PSB0aGlzKTsKQEAgLTU2NDYsNiArNTY4MCw4IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRPdmVybGF5U2Nyb2xsYmFyU3R5bGUoV1RGOjpPcHRpb25hbDxXZWJD
b3JlOjpTY3JvbGxiYXJPdmVyCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiB2b2lkIFdlYlBh
Z2VQcm94eTo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgYm9vbCYg
c3VjY2VlZGVkLCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXkpCiB7CisgICAgUGFnZUNsaWVu
dFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKKwogICAgIFZlY3Rvcjx1aW50OF90
PiBtYXN0ZXJLZXk7CiAKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CkBAIC01NjYzLDYg
KzU2OTksOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleSwgYm9vbCYgc3VjY2VlZGVkLCBWZQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgYm9vbCYg
c3VjY2VlZGVkLCBWZWN0b3I8dWludDhfdD4mIGtleSkKIHsKKyAgICBQYWdlQ2xpZW50UHJvdGVj
dG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOworCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1hc3Rl
cktleTsKIAogICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256880</attachid>
            <date>2015-07-15 17:23:34 -0700</date>
            <delta_ts>2015-07-15 17:24:47 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25830</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3OTQwOWU5Li4zNDZhYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEg
QEAKKzIwMTUtMDctMTUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFJFR1JFU1NJT04ocjE4NjA4OCk6IENyYXNoIHVuZGVyIFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkaWRGYWlsTG9hZEZvckZyYW1lCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTY5MjIxMj4g
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5ODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgbG9hZGVy
IGRlbGVnYXRlIGNhbGxiYWNrIHJlc3VsdHMgaW4gdGhlIFdLVmlldyBnZXR0aW5nIGRlYWxsb2Nh
dGVkLCB0aGVuIHRoZSBQYWdlQ2xpZW50CisgICAgICAgIGlzIGFsc28gZGVzdHJveWVkLgorCisg
ICAgICAgIFdlYlBhZ2VQcm94eSB0aGVuIChvZnRlbikgdHVybnMgYXJvdW5kIGFuZCB1c2VzIHRo
ZSBQYWdlQ2xpZW50IGFueXdheXMuCisKKyAgICAgICAgVHJpZWQgdG8gd3JpdGUgYSBUZXN0V2Vi
S2l0QVBJIHRlc3QgZm9yIHRoaXMsIGJ1dCBvbmx5IGRpZEZhaWxMb2FkRm9yRnJhbWUgYXBwZWFy
cyB0byBvYnZpb3VzbHkgCisgICAgICAgIGJlIHZ1bG5lcmFibGUsIGFuZCB0aGVyZSBzZWVtcyB0
byBiZSBubyB3YXkgdG8gcmVwcm9kdWNlIHRoYXQgZmFpbHVyZSBjYXNlIHVuZGVyIFRlc3RXZWJL
aXRBUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOiBBZGQgcmVmL2RlcmVm
Vmlldy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmg6IFN0
dWIgdGhlbSBvdXQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OnJlZlZpZXcpOiBbbV93a1ZpZXcgcmV0YWluXQorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGVyZWZWaWV3KTogW21fd2tWaWV3IHJlbGVhc2Vd
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OnJlZlZpZXcpOiBSZXRhaW4gYWxsIDMgdmlld3MuCisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkZXJlZlZpZXcpOiBSZWxlYXNlIGFsbCAzIHZpZXdzLgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRQcm90ZWN0b3I6OlBhZ2VDbGllbnRQcm90ZWN0b3IpOiBDYWxscyByZWZWaWV3
KCkgb24gdGhlIFBhZ2VDbGllbnQuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRQcm90ZWN0
b3I6On5QYWdlQ2xpZW50UHJvdGVjdG9yKTogQ2FsbHMgZGVyZWZWaWV3KCkgb24gdGhlIFBhZ2VD
bGllbnQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFja0Zvcndh
cmRMaXN0KTogQWxsIG1ldGhvZHMgdGhhdCBtYWtlIG1fbG9hZGVyQ2xpZW50IG9yCisgICAgICAg
ICAgbV9wYWdlQ2xpZW50IGNhbGxvdXRzIGdldCBhIHByb3RlY3RvciBhdCB0aGVpciBoZWFkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRl
bSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvdWxkS2VlcEN1cnJlbnRCYWNr
Rm9yd2FyZExpc3RJdGVtSW5MaXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpm
aW5kUGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDcmVhdGVNYWlu
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENyZWF0ZVN1YmZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRTdGFydFByb2dyZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm9ncmVzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoUHJvZ3Jlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
Q2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRMYXlvdXRGb3JD
dXN0b21Db250ZW50UHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVtb3ZlRnJhbWVG
cm9tSGllcmFyY2h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWREaXNwbGF5
SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWREZXRlY3RYU1NGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZnJhbWVEaWRCZWNvbWVGcmFtZVNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1bmFibGVUb0ltcGxlbWVudFBvbGljeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRh
dGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRp
cmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJl
ZGlyZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRVcGRhdGVIaXN0b3J5
VGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndyYXBDcnlwdG9LZXkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVud3JhcENyeXB0b0tleSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bmF2aWdhdGlvbkdlc3R1cmVXaWxsRW5kKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZURpZEVuZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2lsbFJlY29yZE5hdmlnYXRpb25TbmFwc2hv
dCk6CisKIDIwMTUtMDctMTUgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIFJlbmFtZSBQQUNLQUdFX0xPQ0FMRV9ESVIgdG8gTE9DQUxF
RElSCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuaAppbmRleCA5Mjk5NzA4Li43OGY5YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTEsMyArMSw0IEBACisKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgpAQCAtMTM0LDYgKzEzNSw5IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlQmFja2dyb3VuZENvbG9yKCkgb3ZlcnJpZGU7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgcmVmVmlldygpIG92ZXJyaWRlIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZW
aWV3KCkgb3ZlcnJpZGUgeyB9OworCiAgICAgLy8gTWVtYmVycyBvZiBQYWdlQ2xpZW50SW1wbCBj
bGFzcwogICAgIEd0a1dpZGdldCogbV92aWV3V2lkZ2V0OwogICAgIERlZmF1bHRVbmRvQ29udHJv
bGxlciBtX3VuZG9Db250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
aW5kZXggZTVkMDVjYy4uMGY4ZDI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCkBAIC0zMjYsNiArMzI2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6V2Vi
TWVkaWFTZXNzaW9uTWFuYWdlciYgbWVkaWFTZXNzaW9uTWFuYWdlcigpID0gMDsKICNlbmRpZgog
CisgICAgdmlydHVhbCB2b2lkIHJlZlZpZXcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlcmVm
VmlldygpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBkODJmNGFkLi41NDM5YjI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjc0LDYgKzI3NCwyNCBA
QCBzdGF0aWMgY29uc3QgY2hhciogd2ViS2V5Ym9hcmRFdmVudFR5cGVTdHJpbmcoV2ViRXZlbnQ6
OlR5cGUgdHlwZSkKIH0KICNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECiAKK2NsYXNzIFBhZ2VDbGll
bnRQcm90ZWN0b3IgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VDbGllbnRQcm90ZWN0
b3IpOworcHVibGljOgorICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IoUGFnZUNsaWVudCYgcGFnZUNs
aWVudCkKKyAgICAgICAgOiBtX3BhZ2VDbGllbnQocGFnZUNsaWVudCkKKyAgICB7CisgICAgICAg
IG1fcGFnZUNsaWVudC5yZWZWaWV3KCk7CisgICAgfQorCisgICAgflBhZ2VDbGllbnRQcm90ZWN0
b3IoKQorICAgIHsKKyAgICAgICAgbV9wYWdlQ2xpZW50LmRlcmVmVmlldygpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBQYWdlQ2xpZW50JiBtX3BhZ2VDbGllbnQ7Cit9OworCiBSZWY8V2ViUGFn
ZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
UGFnZVByb3h5KHBhZ2VDbGllbnQsIHByb2Nlc3MsIHBhZ2VJRCwgY29uZmlndXJhdGlvbikpOwpA
QCAtMTE0MCw2ICsxMTU4LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRyeVJlc3RvcmVTY3JvbGxQ
b3NpdGlvbigpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3Qo
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogYWRkZWQsIFZlY3RvcjxSZWZQdHI8V2ViQmFja0Zvcndh
cmRMaXN0SXRlbT4+IHJlbW92ZWQpCiB7CisgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0
b3IobV9wYWdlQ2xpZW50KTsKKwogICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRDaGFuZ2VCYWNrRm9y
d2FyZExpc3QoKnRoaXMsIGFkZGVkLCBXVEY6Om1vdmUocmVtb3ZlZCkpOwogCiAgICAgYXV0byB0
cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwpAQCAtMTE1MCwxMiAr
MTE3MCwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVkLCBWZWN0bwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
d2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKHVpbnQ2NF90IGl0ZW1JRCwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhKQogeworICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFn
ZUNsaWVudCk7CisKICAgICBpZiAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IG1fcHJv
Y2Vzcy0+d2ViQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCkpCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50
LT53aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oKnRoaXMsIGl0ZW0sIG1fcHJvY2Vzcy0+dHJh
bnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiBi
b29sIFdlYlBhZ2VQcm94eTo6c2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5M
aXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0pCiB7CisgICAgUGFnZUNsaWVudFByb3Rl
Y3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKKwogICAgIHJldHVybiBtX2xvYWRlckNsaWVu
dC0+c2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0KCp0aGlzLCBpdGVt
KTsKIH0KIApAQCAtMTgyNiw2ICsxODUwLDggQEAgV2ViUHJlZmVyZW5jZXNTdG9yZSBXZWJQYWdl
UHJveHk6OnByZWZlcmVuY2VzU3RvcmUoKSBjb25zdAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQogdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgdWludDMyX3QgcHJvY2Vzc1R5cGUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGJv
b2wgYWxsb3dPbmx5QXBwbGljYXRpb25QbHVnaW5zLCB1aW50NjRfdCYgcGx1Z2luUHJvY2Vzc1Rv
a2VuLCBTdHJpbmcmIG5ld01pbWVUeXBlLCB1aW50MzJfdCYgcGx1Z2luTG9hZFBvbGljeSwgU3Ry
aW5nJiB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uKQogeworICAgIFBhZ2VDbGllbnRQcm90ZWN0
b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CisKICAgICBNRVNTQUdFX0NIRUNLX1VSTCh1cmxT
dHJpbmcpOwogCiAgICAgbmV3TWltZVR5cGUgPSBtaW1lVHlwZS5sb3dlcigpOwpAQCAtMjc0Miw2
ICsyNzY4LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZSh1aW50NjRfdCBmcmFtZUlEKQog
eworICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CisKICAg
ICBNRVNTQUdFX0NIRUNLKCFtX21haW5GcmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nl
c3MtPmNhbkNyZWF0ZUZyYW1lKGZyYW1lSUQpKTsKIApAQCAtMjc1Myw2ICsyNzgxLDggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJhbWUodWludDY0X3QgZnJhbWVJRCkKIHsK
KyAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOworCiAgICAg
TUVTU0FHRV9DSEVDSyhtX21haW5GcmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3Mt
PmNhbkNyZWF0ZUZyYW1lKGZyYW1lSUQpKTsKICAgICAKQEAgLTI3NjksNiArMjc5OSw4IEBAIGRv
dWJsZSBXZWJQYWdlUHJveHk6OmVzdGltYXRlZFByb2dyZXNzKCkgY29uc3QKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFN0YXJ0UHJvZ3Jlc3MoKQogeworICAgIFBhZ2VDbGllbnRQcm90ZWN0b3Ig
cHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CisKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdl
TG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAgICAgbV9wYWdlTG9hZFN0YXRlLmRpZFN0YXJ0UHJv
Z3Jlc3ModHJhbnNhY3Rpb24pOwogCkBAIC0yNzc4LDYgKzI4MTAsOCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkU3RhcnRQcm9ncmVzcygpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQ
cm9ncmVzcyhkb3VibGUgdmFsdWUpCiB7CisgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0
b3IobV9wYWdlQ2xpZW50KTsKKwogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3Rh
dGUudHJhbnNhY3Rpb24oKTsKICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkQ2hhbmdlUHJvZ3Jlc3Mo
dHJhbnNhY3Rpb24sIHZhbHVlKTsKIApAQCAtMjc4Nyw2ICsyODIxLDggQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZENoYW5nZVByb2dyZXNzKGRvdWJsZSB2YWx1ZSkKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEZpbmlzaFByb2dyZXNzKCkKIHsKKyAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3Rl
Y3RvcihtX3BhZ2VDbGllbnQpOworCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRT
dGF0ZS50cmFuc2FjdGlvbigpOwogICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWRGaW5pc2hQcm9ncmVz
cyh0cmFuc2FjdGlvbik7CiAKQEAgLTI4MDIsMTIgKzI4MzgsMTYgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoYm9vbCBuZXR3b3JrUmVxdWVzdHNJblBy
b2dyZXNzKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGVzdHJveU5hdmlnYXRpb24odWludDY0
X3QgbmF2aWdhdGlvbklEKQogeworICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1f
cGFnZUNsaWVudCk7CisKICAgICAvLyBGSVhNRTogTWVzc2FnZSBjaGVjayB0aGUgbmF2aWdhdGlv
bklELgogICAgIG1fbmF2aWdhdGlvblN0YXRlLT5kaWREZXN0cm95TmF2aWdhdGlvbihuYXZpZ2F0
aW9uSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCiB7CisgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xp
ZW50KTsKKwogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rp
b24oKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jbGVhclBlbmRpbmdBUElSZXF1ZXN0VVJMKHRy
YW5zYWN0aW9uKTsKQEAgLTI4MzcsNiArMjg3Nyw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5h
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CisgICAgUGFn
ZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKKwogICAgIFdlYkZyYW1l
UHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdF
X0NIRUNLKGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTCh1cmwpOwpAQCAtMjg2Myw2ICsy
OTA1LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qs
IGNvbnN0IFN0cmluZyYgdXJsKQogeworICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9y
KG1fcGFnZUNsaWVudCk7CisKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+
d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAgICAgTUVTU0FH
RV9DSEVDSyhmcmFtZS0+ZnJhbWVMb2FkU3RhdGUoKS5zdGF0ZSgpID09IEZyYW1lTG9hZFN0YXRl
OjpTdGF0ZTo6UHJvdmlzaW9uYWwpOwpAQCAtMjg4MCw2ICsyOTI0LDggQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QsIGMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92
aXNpb25hbFVSTCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKIHsKKyAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGll
bnQpOworCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZy
YW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCkBAIC0yOTI4LDYgKzI5NzQsOCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCkKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVI
YXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IG9wYXF1ZUZyYW1lTG9hZFR5cGUsIGNv
bnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEpCiB7CisgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9w
YWdlQ2xpZW50KTsKKwogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJG
cmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIApAQCAtMjk5OCw2ICsz
MDQ2LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogeworICAgIFBhZ2VDbGllbnRQ
cm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CisKICAgICBXZWJGcmFtZVByb3h5KiBm
cmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhm
cmFtZSk7CiAKQEAgLTMwMTUsNiArMzA2NSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5p
c2hEb2N1bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpCiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Cisg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKKwogICAgIFdl
YkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBN
RVNTQUdFX0NIRUNLKGZyYW1lKTsKIApAQCAtMzA0NCw2ICszMDk2LDggQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogeworICAgIFBhZ2VDbGllbnRQcm90
ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CisKICAgICBXZWJGcmFtZVByb3h5KiBmcmFt
ZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFt
ZSk7CiAKQEAgLTMwNzYsNiArMzEzMCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVEb2N1
bWVudE5hdmlnYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQogeworICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVu
dCk7CisKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJh
bWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwo
dXJsKTsKQEAgLTMxMDksNiArMzE2NSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKKyAgICBQ
YWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOworCiAgICAgV2ViRnJh
bWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NB
R0VfQ0hFQ0soZnJhbWUpOwogCkBAIC0zMTI1LDYgKzMxODMsOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5n
JiB0aXRsZQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CisgICAgUGFnZUNsaWVu
dFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKKwogICAgIFdlYkZyYW1lUHJveHkq
IGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNL
KGZyYW1lKTsKIApAQCAtMzEzMyw2ICszMTkzLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZp
cnN0TGF5b3V0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVXNlckRhdGEmIHVzZXIK
IAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKKyAgICBQ
YWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOworCiAgICAgV2ViRnJh
bWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NB
R0VfQ0hFQ0soZnJhbWUpOwogCkBAIC0zMTQ0LDYgKzMyMDYsOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgY29ucwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTGF5b3V0Rm9yQ3VzdG9tQ29udGVudFBy
b3ZpZGVyKCkKIHsKKyAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGll
bnQpOworCiAgICAgTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzID0gRGlkRmlyc3RMYXlvdXQg
fCBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgfCBEaWRIaXRSZWxldmFudFJlcGFpbnRl
ZE9iamVjdHNBcmVhVGhyZXNob2xkOwogICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCiAgICAg
ICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoKnRoaXMs
IG1pbGVzdG9uZXMsIG51bGxwdHIpOwpAQCAtMzE1Myw2ICszMjE3LDggQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZExheW91dEZvckN1c3RvbUNvbnRlbnRQcm92aWRlcigpCiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRMYXlvdXQodWludDMyX3QgbGF5b3V0TWlsZXN0b25lcywgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhKQogeworICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFn
ZUNsaWVudCk7CisKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQogICAgICAgICBtX25hdmln
YXRpb25DbGllbnQtPnJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKCp0aGlzLCBzdGF0aWNfY2Fz
dDxMYXlvdXRNaWxlc3RvbmVzPihsYXlvdXRNaWxlc3RvbmVzKSwgbV9wcm9jZXNzLT50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAgICAgZWxzZQpA
QCAtMzE2MSw2ICszMjI3LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZExheW91dCh1aW50MzJf
dCBsYXlvdXRNaWxlc3RvbmVzLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CisgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90
ZWN0b3IobV9wYWdlQ2xpZW50KTsKKwogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9j
ZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIApAQCAt
MzE2OSw2ICszMjM3LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlbW92ZUZyYW1lRnJvbUhp
ZXJhcmNoeSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBVc2VyRGF0YSYKIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CisgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKKwogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9w
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIApA
QCAtMzE4MSw2ICszMjUxLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZERpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBVc2UKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKKyAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHBy
b3RlY3RvcihtX3BhZ2VDbGllbnQpOworCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3By
b2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCkBA
IC0zMTkzLDYgKzMyNjUsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUnVuSW5zZWN1cmVDb250
ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVXNlckRhdAogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRGV0ZWN0WFNTRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQogeworICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1f
cGFnZUNsaWVudCk7CisKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2Vi
RnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKQEAgLTMyMDEsNiAr
MzI3NSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXRlY3RYU1NGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpm
cmFtZURpZEJlY29tZUZyYW1lU2V0KHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgdmFsdWUpCiB7Cisg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKKwogICAgIFdl
YkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBN
RVNTQUdFX0NIRUNLKGZyYW1lKTsKIApAQCAtMzIxMSw2ICszMjg3LDggQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmZyYW1lRGlkQmVjb21lRnJhbWVTZXQodWludDY0X3QgZnJhbWVJRCwgYm9vbCB2YWx1
ZSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5
T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRh
JiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbmF0aW5nRnJhbWVTZWN1cml0eU9yaWdpbiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIG5ld05hdmln
YXRpb25JRCwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2FkSUQpCiB7
CisgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKKwogICAg
IGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIAogICAg
IGlmIChyZXF1ZXN0LnVybCgpICE9IG1fcGFnZUxvYWRTdGF0ZS5wZW5kaW5nQVBJUmVxdWVzdFVS
TCgpKQpAQCAtMzI3NSw2ICszMzUzLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXIKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNv
bnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogeworICAgIFBhZ2VDbGllbnRQ
cm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CisKICAgICBXZWJGcmFtZVByb3h5KiBm
cmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhm
cmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwocmVxdWVzdC51cmwoKSk7CkBAIC0zMjk2LDYg
KzMzNzYsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1F
VHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewor
ICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CisKICAgICBX
ZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAg
TUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwocmVxdWVzdC51cmwo
KSk7CkBAIC0zMzEyLDYgKzMzOTQsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBwb2xp
Y3lBY3Rpb24sIHVpbnQ2NF90JiBkb3dubG9hZElEKQogeworICAgIFBhZ2VDbGllbnRQcm90ZWN0
b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CisKICAgICBBU1NFUlQoIW1faW5EZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZVN5bmMpOwogCiAgICAgbV9pbkRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3lu
YyA9IHRydWU7CkBAIC0zMzMzLDYgKzM0MTcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5Twog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKIHsKKyAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOwor
CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQp
OwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCkBAIC0zMzU1LDYgKzM0NDEsOCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6d2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
c291cmNlRnJhbWVJRCwgY29ucwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRo
TmF2aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUsIHVpbnQ2
NF90IGZyYW1lSUQpIAogeworICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFn
ZUNsaWVudCk7CisKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJh
bWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAgICAgTUVTU0FHRV9DSEVD
SyhmcmFtZS0+cGFnZSgpID09IHRoaXMpOwpAQCAtMzM2OSw2ICszNDU3LDggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRp
b25EYXRhU3RvcmUmIHMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRp
cmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvblVSTFN0cmluZywgdWludDY0X3QgZnJhbWVJRCkKIHsKKyAgICBQYWdlQ2xpZW50UHJvdGVj
dG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOworCiAgICAgaWYgKHNvdXJjZVVSTFN0cmluZy5p
c0VtcHR5KCkgfHwgZGVzdGluYXRpb25VUkxTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAgICAgCkBAIC0zMzg5LDYgKzM0NzksOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVy
Zm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdAog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCB1
aW50NjRfdCBmcmFtZUlEKQogeworICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1f
cGFnZUNsaWVudCk7CisKICAgICBpZiAoc291cmNlVVJMU3RyaW5nLmlzRW1wdHkoKSB8fCBkZXN0
aW5hdGlvblVSTFN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTM0
MDksNiArMzUwMSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJl
Y3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3Ry
aW5nJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCiB7CisgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKKwogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9w
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKICAg
ICBNRVNTQUdFX0NIRUNLKGZyYW1lLT5wYWdlKCkgPT0gdGhpcyk7CkBAIC01NjQ2LDYgKzU3NDAs
OCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKFdURjo6T3B0
aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcgogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQog
dm9pZCBXZWJQYWdlUHJveHk6OndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBr
ZXksIGJvb2wmIHN1Y2NlZWRlZCwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KQogeworICAg
IFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CisKICAgICBWZWN0
b3I8dWludDhfdD4gbWFzdGVyS2V5OwogCiAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewpA
QCAtNTY2Myw2ICs1NzU5LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OndyYXBDcnlwdG9LZXkoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGJvb2wmIHN1Y2NlZWRlZCwgVmUKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRL
ZXksIGJvb2wmIHN1Y2NlZWRlZCwgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpCiB7CisgICAgUGFnZUNs
aWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKKwogICAgIFZlY3Rvcjx1aW50
OF90PiBtYXN0ZXJLZXk7CiAKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CkBAIC01Nzg0
LDYgKzU4ODIsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KEludFJlY3QgcmVj
dCwgSW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbgogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6bmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbigpCiB7CisgICAgUGFnZUNsaWVudFByb3RlY3Rv
ciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKKwogICAgIG1faXNTaG93aW5nTmF2aWdhdGlvbkdl
c3R1cmVTbmFwc2hvdCA9IHRydWU7CiAgICAgbV9wYWdlQ2xpZW50Lm5hdmlnYXRpb25HZXN0dXJl
RGlkQmVnaW4oKTsKICAgICBtX2xvYWRlckNsaWVudC0+bmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdp
bigqdGhpcyk7CkBAIC01NzkxLDIzICs1ODkxLDMxIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZp
Z2F0aW9uR2VzdHVyZURpZEJlZ2luKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25H
ZXN0dXJlV2lsbEVuZChib29sIHdpbGxOYXZpZ2F0ZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYg
aXRlbSkKIHsKKyAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQp
OworCiAgICAgbV9wYWdlQ2xpZW50Lm5hdmlnYXRpb25HZXN0dXJlV2lsbEVuZCh3aWxsTmF2aWdh
dGUsIGl0ZW0pOwogICAgIG1fbG9hZGVyQ2xpZW50LT5uYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQo
KnRoaXMsIHdpbGxOYXZpZ2F0ZSwgaXRlbSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZp
Z2F0aW9uR2VzdHVyZURpZEVuZChib29sIHdpbGxOYXZpZ2F0ZSwgV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYgaXRlbSkKIHsKKyAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VD
bGllbnQpOworCiAgICAgbV9wYWdlQ2xpZW50Lm5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKHdpbGxO
YXZpZ2F0ZSwgaXRlbSk7CiAgICAgbV9sb2FkZXJDbGllbnQtPm5hdmlnYXRpb25HZXN0dXJlRGlk
RW5kKCp0aGlzLCB3aWxsTmF2aWdhdGUsIGl0ZW0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
bmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQoKQogeworICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJv
dGVjdG9yKG1fcGFnZUNsaWVudCk7CisKICAgICBtX3BhZ2VDbGllbnQubmF2aWdhdGlvbkdlc3R1
cmVEaWRFbmQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OndpbGxSZWNvcmROYXZpZ2F0aW9u
U25hcHNob3QoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKIHsKKyAgICBQYWdlQ2xpZW50
UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOworCiAgICAgbV9wYWdlQ2xpZW50Lndp
bGxSZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoaXRlbSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA4MThlZDJlLi5hMjYw
MDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oCkBAIC0xODYsNiArMTg2LDkgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VCYWNrZ3JvdW5kQ29sb3IoKSBvdmVycmlkZTsKIAorCXZpcnR1YWwgdm9pZCByZWZW
aWV3KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRlcmVmVmlldygpIG92ZXJyaWRlOwor
CiAgICAgV0tDb250ZW50VmlldyAqbV9jb250ZW50VmlldzsKICAgICBXS1dlYlZpZXcgKm1fd2Vi
VmlldzsKICAgICBXS1ZpZXcgKm1fd2tWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggNWYwM2YwYi4uYWVmMmFkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CkBAIC03MzksNiArNzM5LDIwIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENoYW5nZUJhY2tn
cm91bmRDb2xvcigpCiAgICAgW21fd2ViVmlldyBfdXBkYXRlU2Nyb2xsVmlld0JhY2tncm91bmRd
OwogfQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWZWaWV3KCkKK3sKKwlbbV9jb250ZW50Vmll
dyByZXRhaW5dOworICAgIFttX3dlYlZpZXcgcmV0YWluXTsKKwlbbV93a1ZpZXcgcmV0YWluXTsK
K30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGVyZWZWaWV3KCkKK3sKKwlbbV9jb250ZW50Vmll
dyByZWxlYXNlXTsKKyAgICBbbV93ZWJWaWV3IHJlbGVhc2VdOworCVttX3drVmlldyByZWxlYXNl
XTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXgg
Y2VlMWRmMC4uYzFmNmZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGwuaApAQCAtMjE2LDYgKzIxNiw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2aXJ0dWFsIFdlYkNvcmU6OldlYk1lZGlhU2Vz
c2lvbk1hbmFnZXImIG1lZGlhU2Vzc2lvbk1hbmFnZXIoKSBvdmVycmlkZTsKICNlbmRpZgorCisg
ICAgdmlydHVhbCB2b2lkIHJlZlZpZXcoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZWaWV3KCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDlhNjU0NjYu
LjdkN2Y2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbC5tbQpAQCAtODM2LDYgKzgzNiwxNiBAQCBXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyJiBQYWdlQ2xpZW50SW1wbDo6bWVkaWFTZXNzaW9uTWFuYWdlcigpCiB9CiAjZW5kaWYKIAor
dm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVmVmlldygpCit7CisgICAgW21fd2tWaWV3IHJldGFpbl07
Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRlcmVmVmlldygpCit7CisgICAgW21fd2tWaWV3
IHJlbGVhc2VdOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRG
T1JNKE1BQykK
</data>
<flag name="review"
          id="281995"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>