<?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>192906</bug_id>
          
          <creation_ts>2018-12-19 17:47:46 -0800</creation_ts>
          <short_desc>Add diagnostic logging for safe browsing provider and action</short_desc>
          <delta_ts>2019-04-01 16:38:37 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1489642</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-19 17:47:46 -0800</bug_when>
    <thetext>Add diagnostic logging for safe browsing provider and action</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489647</commentid>
    <comment_count>1</comment_count>
      <attachid>357767</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-19 17:51:41 -0800</bug_when>
    <thetext>Created attachment 357767
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489666</commentid>
    <comment_count>2</comment_count>
      <attachid>357767</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-19 19:19:11 -0800</bug_when>
    <thetext>Comment on attachment 357767
Patch

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

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:1635
&gt; +            weakThis-&gt;m_page-&gt;logDiagnosticMessageWithResult(WebCore::DiagnosticLoggingKeys::safeBrowsingAction(), emptyString(), *action, WebCore::ShouldSample::No);

I am not convinced this works, the 3rd parameter to logDiagnosticMessageWithResult() is a DiagnosticLoggingResultType, you&apos;re passing it a uint32_t. We should try to match whatever logging you&apos;re replacing (make sure the underlying logging method called is the same, and ideally even the key / value).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489675</commentid>
    <comment_count>3</comment_count>
      <attachid>357767</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-19 19:33:24 -0800</bug_when>
    <thetext>Comment on attachment 357767
Patch

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

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:1627
&gt; +        m_page-&gt;logDiagnosticMessageWithResult(WebCore::DiagnosticLoggingKeys::safeBrowsingProvider(), emptyString(), *identifier, WebCore::ShouldSample::No);

E.g., to try and match previous code, I think we should pass &quot;SafeBrowsing&quot; as key (first parameter).
Then the second parameter should be &quot;Showed Warning&quot;.
Then the third parameter would be the provider name as a String.

We would call WebPageProxy::logDiagnosticMessageWithValue() instead of logDiagnosticMessageWithResult(). We&apos;d need to add an WebPageProxy::logDiagnosticMessageWithValue() overload which takes a 3 String parameters though but that no big deal since those are the types used internally.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:1635
&gt;&gt; +            weakThis-&gt;m_page-&gt;logDiagnosticMessageWithResult(WebCore::DiagnosticLoggingKeys::safeBrowsingAction(), emptyString(), *action, WebCore::ShouldSample::No);
&gt; 
&gt; I am not convinced this works, the 3rd parameter to logDiagnosticMessageWithResult() is a DiagnosticLoggingResultType, you&apos;re passing it a uint32_t. We should try to match whatever logging you&apos;re replacing (make sure the underlying logging method called is the same, and ideally even the key / value).

E.g., to try and match previous code, I think we should pass &quot;SafeBrowsing&quot; as key (first parameter).
Then the second parameter should be &quot;User Ignored Warning&quot; / &quot;User Went Back&quot; / &quot;User Closed Page&quot;.
And we&apos;d call logDiagnosticMessage() instead of logDiagnosticMessageWithResult().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489679</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-19 19:42:59 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; Comment on attachment 357767 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=357767&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:1627
&gt; &gt; +        m_page-&gt;logDiagnosticMessageWithResult(WebCore::DiagnosticLoggingKeys::safeBrowsingProvider(), emptyString(), *identifier, WebCore::ShouldSample::No);
&gt; 
&gt; E.g., to try and match previous code, I think we should pass &quot;SafeBrowsing&quot;
&gt; as key (first parameter).
&gt; Then the second parameter should be &quot;Showed Warning&quot;.
&gt; Then the third parameter would be the provider name as a String.
&gt; 
&gt; We would call WebPageProxy::logDiagnosticMessageWithValue() instead of
&gt; logDiagnosticMessageWithResult(). We&apos;d need to add an
&gt; WebPageProxy::logDiagnosticMessageWithValue() overload which takes a 3
&gt; String parameters though but that no big deal since those are the types used
&gt; internally.
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:1635
&gt; &gt;&gt; +            weakThis-&gt;m_page-&gt;logDiagnosticMessageWithResult(WebCore::DiagnosticLoggingKeys::safeBrowsingAction(), emptyString(), *action, WebCore::ShouldSample::No);
&gt; &gt; 
&gt; &gt; I am not convinced this works, the 3rd parameter to logDiagnosticMessageWithResult() is a DiagnosticLoggingResultType, you&apos;re passing it a uint32_t. We should try to match whatever logging you&apos;re replacing (make sure the underlying logging method called is the same, and ideally even the key / value).
&gt; 
&gt; E.g., to try and match previous code, I think we should pass &quot;SafeBrowsing&quot;
&gt; as key (first parameter).
&gt; Then the second parameter should be &quot;User Ignored Warning&quot; / &quot;User Went
&gt; Back&quot; / &quot;User Closed Page&quot;.
&gt; And we&apos;d call logDiagnosticMessage() instead of
&gt; logDiagnosticMessageWithResult().

Posted some comments on the radar as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523126</commentid>
    <comment_count>5</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2019-04-01 16:38:37 -0700</bug_when>
    <thetext>rdar://problem/46287888</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357767</attachid>
            <date>2018-12-19 17:51:41 -0800</date>
            <delta_ts>2018-12-21 15:44:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192906-20181219175141.patch</filename>
            <type>text/plain</type>
            <size>17088</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzOTQwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE4LTEyLTE5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGRpYWdu
b3N0aWMgbG9nZ2luZyBmb3Igc2FmZSBicm93c2luZyBwcm92aWRlciBhbmQgYWN0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI5MDYKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQ2Mjg3ODg4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpzYWZlQnJvd3NpbmdBY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpzYWZlQnJvd3Np
bmdQcm92aWRlcik6CisgICAgICAgICogcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaDoKKwog
MjAxOC0xMi0xOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBT
VkdVc2VFbGVtZW50OjpmaW5kVGFyZ2V0IHNob3VsZCByZXR1cm4gbnVsbHB0ciB3aGVuIHRoZXJl
IGlzIGEgY3ljbGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dn
aW5nS2V5cy5jcHAJKHJldmlzaW9uIDIzOTQwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIwLDYgKzUyMCwxNiBA
QCBTdHJpbmcgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZWxvYWRSZXZhCiAgICAgcmV0dXJuICJy
ZWxvYWRSZXZhbGlkYXRpbmdFeHBpcmVkIl9zOwogfQogCitTdHJpbmcgRGlhZ25vc3RpY0xvZ2dp
bmdLZXlzOjpzYWZlQnJvd3NpbmdBY3Rpb24oKQoreworICAgIHJldHVybiAic2FmZUJyb3dzaW5n
QWN0aW9uIl9zOworfQorCitTdHJpbmcgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpzYWZlQnJvd3Np
bmdQcm92aWRlcigpCit7CisgICAgcmV0dXJuICJzYWZlQnJvd3NpbmdQcm92aWRlciJfczsKK30K
KwogU3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5czo6c2FtZUxvYWRLZXkoKQogewogICAgIHJl
dHVybiAic2FtZUxvYWQiX3M7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNM
b2dnaW5nS2V5cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzLmgJKHJldmlzaW9uIDIzOTQwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYsOCBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyByZXRyaWV2YWxLZXko
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHJldHJpZXZhbFJlcXVlc3RLZXko
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHJldmFsaWRhdGluZ0tleSgpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgc2FmZUJyb3dzaW5nQWN0aW9uKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBzYWZlQnJvd3NpbmdQcm92aWRlcigpOwog
ICAgIHN0YXRpYyBTdHJpbmcgc2FtZUxvYWRLZXkoKTsKICAgICBzdGF0aWMgU3RyaW5nIHNjcmlw
dEtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgc2VydmljZVdvcmtlcktleSgpOwpJbmRleDogU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIzOTQxOCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTgtMTItMTkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgZGlhZ25vc3RpYyBsb2dnaW5n
IGZvciBzYWZlIGJyb3dzaW5nIHByb3ZpZGVyIGFuZCBhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjkwNgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNDYyODc4ODg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9zaG93U2FmZUJyb3dzaW5nV2FybmluZzpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhUaXRsZTp3
YXJuaW5nOmRldGFpbHM6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOnByb3ZpZGVyRGlhZ25vc3RpY0lEOnRp
dGxlOndhcm5pbmc6ZGV0YWlsczpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhVUkw6dGl0bGU6d2FybmluZzpkZXRh
aWxzOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9T
YWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OnByb3ZpZGVyRGlh
Z25vc3RpY0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpTYWZlQnJvd3NpbmdXYXJuaW5n
OjpTYWZlQnJvd3NpbmdXYXJuaW5nKToKKyAgICAgICAgKFdlYktpdDo6U2FmZUJyb3dzaW5nV2Fy
bmluZzo6YWN0aW9uRGlhZ25vc3RpY0lEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzaG93U2FmZUJyb3dz
aW5nV2FybmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1NhZmVCcm93c2luZ1dhcm5pbmcuaDoK
KyAgICAgICAgKFdlYktpdDo6U2FmZUJyb3dzaW5nV2FybmluZzo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6U2FmZUJyb3dzaW5nV2FybmluZzo6cHJvdmlkZXJEaWFnbm9zdGljSUQgY29uc3Qp
OgorCiAyMDE4LTEyLTE5ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgog
CiAgICAgICAgIFVzZSBkZWxlZ2F0ZSBpbnN0ZWFkIG9mIGRyYXdpbmdEZWxlZ2F0ZSBpbiBXS0Ry
YXdpbmdWaWV3CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdXYXJu
aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2FmZUJyb3dzaW5n
V2FybmluZy5oCShyZXZpc2lvbiAyMzk0MDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
YWZlQnJvd3NpbmdXYXJuaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAgT0JK
Q19DTEFTUyBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
ZW51bSBjbGFzcyBDb250aW51ZVVuc2FmZUxvYWQgOiBib29sOworCiBjbGFzcyBTYWZlQnJvd3Np
bmdXYXJuaW5nIDogcHVibGljIFJlZkNvdW50ZWQ8U2FmZUJyb3dzaW5nV2FybmluZz4gewogcHVi
bGljOgogI2lmIEhBVkUoU0FGRV9CUk9XU0lORykKQEAgLTQ1LDkgKzQ3LDkgQEAgcHVibGljOgog
ICAgIH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHN0YXRpYyBSZWY8U2FmZUJy
b3dzaW5nV2FybmluZz4gY3JlYXRlKFVSTCYmIHVybCwgU3RyaW5nJiYgdGl0bGUsIFN0cmluZyYm
IHdhcm5pbmcsIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+JiYgZGV0YWlscykKKyAgICBz
dGF0aWMgUmVmPFNhZmVCcm93c2luZ1dhcm5pbmc+IGNyZWF0ZShVUkwmJiB1cmwsIFN0cmluZyYm
IHRpdGxlLCBTdHJpbmcmJiB3YXJuaW5nLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiYmIHByb3Zp
ZGVyRGlhZ25vc3RpY0lELCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiYmIGRldGFpbHMp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTYWZlQnJvd3NpbmdXYXJuaW5n
KFdURk1vdmUodXJsKSwgV1RGTW92ZSh0aXRsZSksIFdURk1vdmUod2FybmluZyksIFdURk1vdmUo
ZGV0YWlscykpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2FmZUJyb3dzaW5nV2Fy
bmluZyhXVEZNb3ZlKHVybCksIFdURk1vdmUodGl0bGUpLCBXVEZNb3ZlKHdhcm5pbmcpLCBXVEZN
b3ZlKHByb3ZpZGVyRGlhZ25vc3RpY0lEKSwgV1RGTW92ZShkZXRhaWxzKSkpOwogICAgIH0KICNl
bmRpZgogCkBAIC01NSw5ICs1NywxMSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiB0aXRs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KICAgICBjb25zdCBTdHJpbmcmIHdhcm5pbmco
KSBjb25zdCB7IHJldHVybiBtX3dhcm5pbmc7IH0KICAgICBib29sIGZvck1haW5GcmFtZU5hdmln
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Zvck1haW5GcmFtZU5hdmlnYXRpb247IH0KKyAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwcm92aWRlckRpYWdub3N0aWNJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvdmlkZXJEaWFnbm9zdGljSUQ7IH0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICBS
ZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBkZXRhaWxzKCkgY29uc3QgeyByZXR1cm4gbV9k
ZXRhaWxzOyB9CiAjZW5kaWYKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gYWN0
aW9uRGlhZ25vc3RpY0lEKGNvbnN0IFZhcmlhbnQ8Q29udGludWVVbnNhZmVMb2FkLCBVUkw+Jik7
CiAKICAgICBzdGF0aWMgTlNVUkwgKnZpc2l0VW5zYWZlV2Vic2l0ZVNlbnRpbmVsKCk7CiAgICAg
c3RhdGljIE5TVVJMICpjb25maXJtTWFsd2FyZVNlbnRpbmVsKCk7CkBAIC02NywxMyArNzEsMTQg
QEAgcHJpdmF0ZToKICAgICBTYWZlQnJvd3NpbmdXYXJuaW5nKGNvbnN0IFVSTCYsIGJvb2wsIFNT
QlNlcnZpY2VMb29rdXBSZXN1bHQgKik7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICBTYWZlQnJvd3NpbmdXYXJuaW5nKFVSTCYmLCBTdHJpbmcmJiwgU3RyaW5nJiYsIFJldGFpblB0
cjxOU0F0dHJpYnV0ZWRTdHJpbmc+JiYpOworICAgIFNhZmVCcm93c2luZ1dhcm5pbmcoVVJMJiYs
IFN0cmluZyYmLCBTdHJpbmcmJiwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4mJiwgUmV0YWluUHRy
PE5TQXR0cmlidXRlZFN0cmluZz4mJik7CiAjZW5kaWYKIAogICAgIFVSTCBtX3VybDsKICAgICBT
dHJpbmcgbV90aXRsZTsKICAgICBTdHJpbmcgbV93YXJuaW5nOwogICAgIGJvb2wgbV9mb3JNYWlu
RnJhbWVOYXZpZ2F0aW9uIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBt
X3Byb3ZpZGVyRGlhZ25vc3RpY0lEOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0
cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IG1fZGV0YWlsczsKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMzk0
MDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw3IEBACiAjaW1wb3J0ICJfV0tTZXNzaW9uU3RhdGVJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVmlzaXRlZExpbmtTdG9yZUludGVybmFsLmgiCiAjaW1w
b3J0ICJfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9EaWFn
bm9zdGljTG9nZ2luZ0tleXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRE9N
QmluZGluZy5oPgpAQCAtMTI3OCwxMSArMTI3OSwxOCBAQCAtICh2b2lkKV9kaWRDaGFuZ2VFZGl0
b3JTdGF0ZQogCiAtICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2FybmluZzooY29uc3QgV2ViS2l0
OjpTYWZlQnJvd3NpbmdXYXJuaW5nJil3YXJuaW5nIGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZhcmlhbnQ8V2ViS2l0OjpDb250aW51ZVVuc2FmZUxvYWQsIFVSTD4m
Jik+JiYpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBpZiAoYXV0byBpZGVudGlmaWVyID0gd2Fy
bmluZy5wcm92aWRlckRpYWdub3N0aWNJRCgpKQorICAgICAgICBfcGFnZS0+bG9nRGlhZ25vc3Rp
Y01lc3NhZ2VXaXRoUmVzdWx0KFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6c2FmZUJy
b3dzaW5nUHJvdmlkZXIoKSwgZW1wdHlTdHJpbmcoKSwgKmlkZW50aWZpZXIsIFdlYkNvcmU6OlNo
b3VsZFNhbXBsZTo6Tm8pOworCiAgICAgX3NhZmVCcm93c2luZ1dhcm5pbmcgPSBhZG9wdE5TKFtb
V0tTYWZlQnJvd3NpbmdXYXJuaW5nIGFsbG9jXSBpbml0V2l0aEZyYW1lOnNlbGYuYm91bmRzIHNh
ZmVCcm93c2luZ1dhcm5pbmc6d2FybmluZyBjb21wbGV0aW9uSGFuZGxlcjpbd2Vha1NlbGYgPSBX
ZWFrT2JqQ1B0cjxXS1dlYlZpZXc+KHNlbGYpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgIGF1dG8gc3Ryb25nU2Vs
ZiA9IHdlYWtTZWxmLmdldCgpOwogICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpCiAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKGF1dG8gYWN0aW9uID0gV2ViS2l0OjpTYWZlQnJvd3Np
bmdXYXJuaW5nOjphY3Rpb25EaWFnbm9zdGljSUQocmVzdWx0KSkKKyAgICAgICAgICAgIHN0cm9u
Z1NlbGYtPl9wYWdlLT5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjpzYWZlQnJvd3NpbmdBY3Rpb24oKSwgZW1wdHlTdHJpbmcoKSwg
KmFjdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CisKICAgICAgICAgYm9vbCBuYXZp
Z2F0ZXNNYWluRnJhbWUgPSBXVEY6OnN3aXRjaE9uKHJlc3VsdCwKICAgICAgICAgICAgIFtdIChX
ZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCBjb250aW51ZVVuc2FmZUxvYWQpIHsgcmV0dXJuIGNv
bnRpbnVlVW5zYWZlTG9hZCA9PSBXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZDo6WWVzOyB9LAog
ICAgICAgICAgICAgW10gKGNvbnN0IFVSTCYpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTQ4MTUsMTIg
KzQ4MjMsMTIgQEAgKyAoQk9PTClfaGFuZGxlc1NhZmVCcm93c2luZwogLSAodm9pZClfc2hvd1Nh
ZmVCcm93c2luZ1dhcm5pbmdXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgd2FybmluZzooTlNT
dHJpbmcgKil3YXJuaW5nIGRldGFpbHM6KE5TQXR0cmlidXRlZFN0cmluZyAqKWRldGFpbHMgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICAv
LyBGSVhNRTogQWRvcHQgX3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nV2l0aFVSTCBhbmQgcmVtb3Zl
IHRoaXMgZnVuY3Rpb24uCi0gICAgW3NlbGYgX3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nV2l0aFVS
TDpuaWwgdGl0bGU6dGl0bGUgd2FybmluZzp3YXJuaW5nIGRldGFpbHM6ZGV0YWlscyBjb21wbGV0
aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisgICAgW3NlbGYgX3Nob3dTYWZlQnJvd3Np
bmdXYXJuaW5nV2l0aFVSTDpuaWwgcHJvdmlkZXJEaWFnbm9zdGljSUQ6MCB0aXRsZTp0aXRsZSB3
YXJuaW5nOndhcm5pbmcgZGV0YWlsczpkZXRhaWxzIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRp
b25IYW5kbGVyXTsKIH0KIAotLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJM
OihOU1VSTCAqKXVybCB0aXRsZTooTlNTdHJpbmcgKil0aXRsZSB3YXJuaW5nOihOU1N0cmluZyAq
KXdhcm5pbmcgZGV0YWlsczooTlNBdHRyaWJ1dGVkU3RyaW5nICopZGV0YWlscyBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClfc2hvd1Nh
ZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOihOU1VSTCAqKXVybCBwcm92aWRlckRpYWdub3N0aWNJ
RDoodWludDMyX3QpaWRlbnRpZmllciB0aXRsZTooTlNTdHJpbmcgKil0aXRsZSB3YXJuaW5nOihO
U1N0cmluZyAqKXdhcm5pbmcgZGV0YWlsczooTlNBdHRyaWJ1dGVkU3RyaW5nICopZGV0YWlscyBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogewotICAg
IGF1dG8gc2FmZUJyb3dzaW5nV2FybmluZyA9IFdlYktpdDo6U2FmZUJyb3dzaW5nV2FybmluZzo6
Y3JlYXRlKHVybCwgdGl0bGUsIHdhcm5pbmcsIGRldGFpbHMpOworICAgIGF1dG8gc2FmZUJyb3dz
aW5nV2FybmluZyA9IFdlYktpdDo6U2FmZUJyb3dzaW5nV2FybmluZzo6Y3JlYXRlKHVybCwgdGl0
bGUsIHdhcm5pbmcsIGlkZW50aWZpZXIgPyBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PihpZGVudGlm
aWVyKSA6IHN0ZDo6bnVsbG9wdCwgZGV0YWlscyk7CiAgICAgYXV0byB3cmFwcGVyID0gW2NvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFZhcmlhbnQ8
V2ViS2l0OjpDb250aW51ZVVuc2FmZUxvYWQsIFVSTD4mJiB2YXJpYW50KSB7CiAgICAgICAgIHN3
aXRjaE9uKHZhcmlhbnQsIFsmXSAoV2ViS2l0OjpDb250aW51ZVVuc2FmZUxvYWQgY29udGludWVV
bnNhZmVMb2FkKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRpbnVlVW5zYWZlTG9hZCkgewpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oCShyZXZpc2lvbiAyMzk0MDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNyAr
MTk0LDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZAogKyAoTlNV
UkwgKilfY29uZmlybU1hbHdhcmVTZW50aW5lbCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKICsgKE5TVVJMICopX3Zpc2l0VW5zYWZlV2Vic2l0
ZVNlbnRpbmVsIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVGl0bGU6KE5TU3Ry
aW5nICopdGl0bGUgd2FybmluZzooTlNTdHJpbmcgKil3YXJuaW5nIGRldGFpbHM6KE5TQXR0cmli
dXRlZFN0cmluZyAqKWRldGFpbHMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7Ci0tICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhVUkw6KE5T
VVJMICopdXJsIHRpdGxlOihOU1N0cmluZyAqKXRpdGxlIHdhcm5pbmc6KE5TU3RyaW5nICopd2Fy
bmluZyBkZXRhaWxzOihOU0F0dHJpYnV0ZWRTdHJpbmcgKilkZXRhaWxzIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfc2hvd1NhZmVCcm93
c2luZ1dhcm5pbmdXaXRoVVJMOihOU1VSTCAqKXVybCBwcm92aWRlckRpYWdub3N0aWNJRDoodWlu
dDMyX3QpaWRlbnRpZmllciB0aXRsZTooTlNTdHJpbmcgKil0aXRsZSB3YXJuaW5nOihOU1N0cmlu
ZyAqKXdhcm5pbmcgZGV0YWlsczooTlNBdHRyaWJ1dGVkU3RyaW5nICopZGV0YWlscyBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxB
QkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogLSAodm9pZClfaXNK
SVRFbmFibGVkOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfcmVtb3Zl
RGF0YURldGVjdGVkTGlua3M6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbiBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJu
aW5nQ29jb2EubW0JKHJldmlzaW9uIDIzOTQwOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJTYWZlQnJvd3NpbmdXYXJu
aW5nLmgiCiAKKyNpbXBvcnQgIlBhZ2VDbGllbnQuaCIKICNpbXBvcnQgIlNhZmVCcm93c2luZ1NQ
SS5oIgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxwYWwv
c3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oPgpAQCAtNjUsNiArNjYsMTUgQEAgc3Rh
dGljIFN0cmluZyBsb2NhbGl6ZWRQcm92aWRlcihTU0JTZXJ2aQogICAgIHJldHVybiBXRUJfVUlf
TlNTVFJJTkcoQCJHb29nbGUgU2FmZSBCcm93c2luZyIsICJHb29nbGUgU2FmZSBCcm93c2luZyIp
OwogfQogCitzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcHJvdmlkZXJEaWFnbm9zdGlj
SWRlbnRpZmllcihTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCit7CisgICAgaWYgKFty
ZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCisgICAg
ICAgIHJldHVybiAxOworICAgIGlmIChbcmVzdWx0LnByb3ZpZGVyIGlzRXF1YWxUb1N0cmluZzpT
U0JQcm92aWRlckdvb2dsZV0pCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Cit9CisKIAogc3RhdGljIHZvaWQgcmVwbGFjZShOU011dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nICpzdHJpbmcsIE5TU3RyaW5nICp0b1JlcGxhY2UsIE5TU3RyaW5nICpyZXBsYWNlV2l0aCkK
IHsKQEAgLTE1NCwxNSArMTY0LDE3IEBAIFNhZmVCcm93c2luZ1dhcm5pbmc6OlNhZmVCcm93c2lu
Z1dhcm5pbmcKICAgICAsIG1fdGl0bGUoc2FmZUJyb3dzaW5nVGl0bGVUZXh0KHJlc3VsdCkpCiAg
ICAgLCBtX3dhcm5pbmcoc2FmZUJyb3dzaW5nV2FybmluZ1RleHQocmVzdWx0KSkKICAgICAsIG1f
Zm9yTWFpbkZyYW1lTmF2aWdhdGlvbihmb3JNYWluRnJhbWVOYXZpZ2F0aW9uKQorICAgICwgbV9w
cm92aWRlckRpYWdub3N0aWNJRChwcm92aWRlckRpYWdub3N0aWNJZGVudGlmaWVyKHJlc3VsdCkp
CiAgICAgLCBtX2RldGFpbHMoc2FmZUJyb3dzaW5nRGV0YWlsc1RleHQodXJsLCByZXN1bHQpKQog
ewogfQogI2VuZGlmCiAKLVNhZmVCcm93c2luZ1dhcm5pbmc6OlNhZmVCcm93c2luZ1dhcm5pbmco
VVJMJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSwgU3RyaW5nJiYgd2FybmluZywgUmV0YWluUHRyPE5T
QXR0cmlidXRlZFN0cmluZz4mJiBkZXRhaWxzKQorU2FmZUJyb3dzaW5nV2FybmluZzo6U2FmZUJy
b3dzaW5nV2FybmluZyhVUkwmJiB1cmwsIFN0cmluZyYmIHRpdGxlLCBTdHJpbmcmJiB3YXJuaW5n
LCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiYmIHByb3ZpZGVySUQsIFJldGFpblB0cjxOU0F0dHJp
YnV0ZWRTdHJpbmc+JiYgZGV0YWlscykKICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkKICAgICAs
IG1fdGl0bGUoV1RGTW92ZSh0aXRsZSkpCiAgICAgLCBtX3dhcm5pbmcoV1RGTW92ZSh3YXJuaW5n
KSkKKyAgICAsIG1fcHJvdmlkZXJEaWFnbm9zdGljSUQoV1RGTW92ZShwcm92aWRlcklEKSkKICAg
ICAsIG1fZGV0YWlscyhXVEZNb3ZlKGRldGFpbHMpKQogewogfQpAQCAtMTc3LDQgKzE4OSwyMCBA
QCBOU1VSTCAqU2FmZUJyb3dzaW5nV2FybmluZzo6Y29uZmlybU1hbHdhCiAgICAgcmV0dXJuIFtO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiV0tDb25maXJtTWFsd2FyZVNlbnRpbmVsIl07CiB9CiAKK3N0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IFNhZmVCcm93c2luZ1dhcm5pbmc6OmFjdGlvbkRpYWdub3N0
aWNJRChjb25zdCBWYXJpYW50PENvbnRpbnVlVW5zYWZlTG9hZCwgVVJMPiYgcmVzdWx0KQorewor
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKHJlc3VsdCwKKyAgICAgICAgW10gKENvbnRpbnVlVW5z
YWZlTG9hZCBjb250aW51ZVVuc2FmZUxvYWQpIC0+IHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHsK
KyAgICAgICAgICAgIHN3aXRjaCAoY29udGludWVVbnNhZmVMb2FkKSB7CisgICAgICAgICAgICBj
YXNlIENvbnRpbnVlVW5zYWZlTG9hZDo6WWVzOgorICAgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgY2FzZSBDb250aW51ZVVuc2FmZUxvYWQ6Ok5vOgorICAgICAgICAgICAgICAg
IHJldHVybiAxOworICAgICAgICAgICAgfQorICAgICAgICB9LCBbXSAoY29uc3QgVVJMJikgewor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgICk7Cit9CisK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CShyZXZpc2lvbiAyMzk0MDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogI2ltcG9ydCAiUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIgogI2ltcG9ydCAiUmVtb3RlT2JqZWN0UmVn
aXN0cnkuaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCIKKyNpbXBv
cnQgIlNhZmVCcm93c2luZ1dhcm5pbmcuaCIKICNpbXBvcnQgIlN0cmluZ1V0aWxpdGllcy5oIgog
I2ltcG9ydCAiVGV4dENoZWNrZXIuaCIKICNpbXBvcnQgIlRleHRDaGVja2VyU3RhdGUuaCIKQEAg
LTc5LDYgKzgwLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CkBAIC0xNjIxLDEwICsxNjIzLDE3IEBAIHZvaWQg
V2ViVmlld0ltcGw6OnNob3dTYWZlQnJvd3NpbmdXYXJuaW4KICAgICBpZiAoIW1fdmlldykKICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKENvbnRpbnVlVW5zYWZlTG9hZDo6WWVzKTsK
IAorICAgIGlmIChhdXRvIGlkZW50aWZpZXIgPSB3YXJuaW5nLnByb3ZpZGVyRGlhZ25vc3RpY0lE
KCkpCisgICAgICAgIG1fcGFnZS0+bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFdlYkNv
cmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6c2FmZUJyb3dzaW5nUHJvdmlkZXIoKSwgZW1wdHlT
dHJpbmcoKSwgKmlkZW50aWZpZXIsIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOworCiAgICAg
bV9zYWZlQnJvd3NpbmdXYXJuaW5nID0gYWRvcHROUyhbW1dLU2FmZUJyb3dzaW5nV2FybmluZyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpbbV92aWV3IGJvdW5kc10gc2FmZUJyb3dzaW5nV2FybmluZzp3
YXJuaW5nIGNvbXBsZXRpb25IYW5kbGVyOlt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3Vs
dCkpOwogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAKKyAgICAgICAgaWYgKGF1dG8gYWN0aW9uID0gU2FmZUJyb3dzaW5nV2FybmluZzo6YWN0aW9u
RGlhZ25vc3RpY0lEKHJlc3VsdCkpCisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9wYWdlLT5sb2dE
aWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlz
OjpzYWZlQnJvd3NpbmdBY3Rpb24oKSwgZW1wdHlTdHJpbmcoKSwgKmFjdGlvbiwgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlOjpObyk7CisKICAgICAgICAgYm9vbCBuYXZpZ2F0ZXNNYWluRnJhbWUgPSBX
VEY6OnN3aXRjaE9uKHJlc3VsdCwKICAgICAgICAgICAgIFtdIChDb250aW51ZVVuc2FmZUxvYWQg
Y29udGludWVVbnNhZmVMb2FkKSB7IHJldHVybiBjb250aW51ZVVuc2FmZUxvYWQgPT0gQ29udGlu
dWVVbnNhZmVMb2FkOjpZZXM7IH0sCiAgICAgICAgICAgICBbXSAoY29uc3QgVVJMJikgeyByZXR1
cm4gdHJ1ZTsgfQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMjM5NDE4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMTItMTkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgZGlhZ25vc3RpYyBsb2dnaW5nIGZv
ciBzYWZlIGJyb3dzaW5nIHByb3ZpZGVyIGFuZCBhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjkwNgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDYyODc4ODg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhZmVCcm93c2luZy5tbToK
KyAgICAgICAgKFRFU1QpOgorCiAyMDE4LTEyLTE5ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFt
aW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDYxOTQzMTU+IG1hY09T
OiBXZWJLaXQxIGRvZXMgbm90IGhhbmRsZSBvY2NsdXNpb24gY2hhbmdlcwpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYWZlQnJvd3NpbmcubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYWZlQnJvd3Npbmcu
bW0JKHJldmlzaW9uIDIzOTQwOCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvU2FmZUJyb3dzaW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNyArMjYwLDcgQEAg
VEVTVChTYWZlQnJvd3NpbmcsIFNob3dXYXJuaW5nU1BJKQogICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAgICBhdXRvIHNob3dXYXJuaW5nID0gXnsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXJDYWxsZWQgPSBmYWxzZTsKLSAgICAgICAgW3dlYlZpZXcgX3No
b3dTYWZlQnJvd3NpbmdXYXJuaW5nV2l0aFVSTDpuaWwgdGl0bGU6QCJ0ZXN0IHRpdGxlIiB3YXJu
aW5nOkAidGVzdCB3YXJuaW5nIiBkZXRhaWxzOltbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdFdpdGhTdHJpbmc6QCJ0ZXN0IGRldGFpbHMiXSBhdXRvcmVsZWFzZV0gY29tcGxldGlvbkhh
bmRsZXI6XihCT09MIHNob3VsZENvbnRpbnVlKSB7CisgICAgICAgIFt3ZWJWaWV3IF9zaG93U2Fm
ZUJyb3dzaW5nV2FybmluZ1dpdGhVUkw6bmlsIHByb3ZpZGVyRGlhZ25vc3RpY0lEOjQyIHRpdGxl
OkAidGVzdCB0aXRsZSIgd2FybmluZzpAInRlc3Qgd2FybmluZyIgZGV0YWlsczpbW1tOU0F0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAidGVzdCBkZXRhaWxzIl0gYXV0b3Jl
bGVhc2VdIGNvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCBzaG91bGRDb250aW51ZSkgewogICAgICAg
ICAgICAgc2hvdWxkQ29udGludWVWYWx1ZSA9IHNob3VsZENvbnRpbnVlOwogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXJDYWxsZWQgPSB0cnVlOwogICAgICAgICB9XTsK
</data>
<flag name="review"
          id="374639"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>