<?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>237110</bug_id>
          
          <creation_ts>2022-02-23 14:06:01 -0800</creation_ts>
          <short_desc>Web Inspector: [Cocoa] Split remote inspector message data into smaller chunks for large messages</short_desc>
          <delta_ts>2022-02-25 08:33:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick Angle">pangle</reporter>
          <assigned_to name="Patrick Angle">pangle</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1845308</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-02-23 14:06:01 -0800</bug_when>
    <thetext>&lt;rdar://89364487&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845423</commentid>
    <comment_count>1</comment_count>
      <attachid>453054</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-02-23 16:48:10 -0800</bug_when>
    <thetext>Created attachment 453054
Patch v1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845450</commentid>
    <comment_count>2</comment_count>
      <attachid>453054</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-23 17:30:18 -0800</bug_when>
    <thetext>Comment on attachment 453054
Patch v1.0

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

&gt; Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:209
&gt; +    NSUInteger const chunkSize = 2 * 1024 * 1024; // 2 Mebibytes

Style: `const NSUInteger`
NIT: How about `maxChunkSize`?

&gt; Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:222
&gt; +        NSUInteger currentChunkSize = (messageLength - offset &gt; chunkSize) ? chunkSize : messageLength - offset;

How about this?
```
NSUInteger currentChunkSize = std::min(messageLength - offset, maxChunkSize);
```
Or if not `std::min` some other similar method?

&gt; Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:548
&gt; +    NSNumber *chunkedMessageDataSupportedNumber = userInfo[WIRMessageDataTypeChunkSupportedKey];

NIT: Should we name this (and the member variable) `[m_]messageDataTypeChunkSupported[Number]` instead so that it matches the key?

&gt; Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:551
&gt; +    m_chunkedMessageDataSupported = !!chunkedMessageDataSupportedNumber &amp;&amp; chunkedMessageDataSupportedNumber.boolValue;

NIT: Is the `!!` needed?  Some of the other `BOOL` seem to just directly consult `.boolValue`, so do we even need the part before the `&amp;&amp;`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845467</commentid>
    <comment_count>3</comment_count>
      <attachid>453054</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-23 17:46:17 -0800</bug_when>
    <thetext>Comment on attachment 453054
Patch v1.0

oops, forgot to r=mews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845549</commentid>
    <comment_count>4</comment_count>
      <attachid>453054</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2022-02-24 01:19:22 -0800</bug_when>
    <thetext>Comment on attachment 453054
Patch v1.0

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

&gt; Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:208
&gt; +    NSUInteger messageLength = [messageData length];

I think we&apos;d generally use the property style here `messageData.length`.

&gt; Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:221
&gt; +    for (NSUInteger offset = 0; offset &lt; messageLength; offset += chunkSize) {

Would it be worth adding an `@autoreleasepool {}` block inside this loop? I don&apos;t know if `subdataWithRange` keeps around chunks of data in 2MB sizes or not. I suspect it doesn&apos;t though.

&gt;&gt; Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:551
&gt;&gt; +    m_chunkedMessageDataSupported = !!chunkedMessageDataSupportedNumber &amp;&amp; chunkedMessageDataSupportedNumber.boolValue;
&gt; 
&gt; NIT: Is the `!!` needed?  Some of the other `BOOL` seem to just directly consult `.boolValue`, so do we even need the part before the `&amp;&amp;`?

I believe technically this line could just be like the one above it:

     m_chunkedMessageDataSupported = chunkedMessageDataSupportedNumber.boolValue;

Because `chunkedMessageDataSupportedNumber.boolValue` is `[chunkedMessageDataSupportedNumber boolValue]` and if `chunkedMessageDataSupportedNumber` is `nil` the result would be `0` which is `NO`.

But I&apos;m fine if you think being more explicit may be more readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845550</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2022-02-24 01:25:40 -0800</bug_when>
    <thetext>Seems some of my comments double posted. Sry about that!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845625</commentid>
    <comment_count>6</comment_count>
      <attachid>453054</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-02-24 08:56:22 -0800</bug_when>
    <thetext>Comment on attachment 453054
Patch v1.0

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

&gt;&gt; Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:221
&gt;&gt; +    for (NSUInteger offset = 0; offset &lt; messageLength; offset += chunkSize) {
&gt; 
&gt; Would it be worth adding an `@autoreleasepool {}` block inside this loop? I don&apos;t know if `subdataWithRange` keeps around chunks of data in 2MB sizes or not. I suspect it doesn&apos;t though.

`subdataWithRange` does not appear to guarantee a no-copy operation, so an `autoreleasepool` is probably a good idea here.

&gt;&gt; Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:222
&gt;&gt; +        NSUInteger currentChunkSize = (messageLength - offset &gt; chunkSize) ? chunkSize : messageLength - offset;
&gt; 
&gt; How about this?
&gt; ```
&gt; NSUInteger currentChunkSize = std::min(messageLength - offset, maxChunkSize);
&gt; ```
&gt; Or if not `std::min` some other similar method?

🤦

&gt;&gt;&gt; Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:551
&gt;&gt;&gt; +    m_chunkedMessageDataSupported = !!chunkedMessageDataSupportedNumber &amp;&amp; chunkedMessageDataSupportedNumber.boolValue;
&gt;&gt; 
&gt;&gt; NIT: Is the `!!` needed?  Some of the other `BOOL` seem to just directly consult `.boolValue`, so do we even need the part before the `&amp;&amp;`?
&gt; 
&gt; I believe technically this line could just be like the one above it:
&gt; 
&gt;      m_chunkedMessageDataSupported = chunkedMessageDataSupportedNumber.boolValue;
&gt; 
&gt; Because `chunkedMessageDataSupportedNumber.boolValue` is `[chunkedMessageDataSupportedNumber boolValue]` and if `chunkedMessageDataSupportedNumber` is `nil` the result would be `0` which is `NO`.
&gt; 
&gt; But I&apos;m fine if you think being more explicit may be more readable.

I kinda forgot about the behavior of sending messages to nil objects in ObjC when I wrote this - it can absolutely be reduced down to your suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845797</commentid>
    <comment_count>7</comment_count>
      <attachid>453144</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-02-24 15:23:54 -0800</bug_when>
    <thetext>Created attachment 453144
Patch v1.1 - Address review notes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846024</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-25 08:33:37 -0800</bug_when>
    <thetext>Committed r290510 (247795@main): &lt;https://commits.webkit.org/247795@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453144.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453054</attachid>
            <date>2022-02-23 16:48:10 -0800</date>
            <delta_ts>2022-02-24 15:23:52 -0800</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-237110-20220223164810.patch</filename>
            <type>text/plain</type>
            <size>7039</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YzkwOTUwYmY4MzJhNTY2NDhiN2IxOTBkYjM2NmQ1MmVkYWFkZDdmLi5hMjc5MWUxNzcyMjFkMWNl
YTQ4ZGFkNDA0ZDU2MjJhMjk4NjQ4Y2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAyMi0wMi0yMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW0NvY29hXSBTcGxpdCByZW1vdGUgaW5zcGVjdG9y
IG1lc3NhZ2UgZGF0YSBpbnRvIHNtYWxsZXIgY2h1bmtzIGZvciBsYXJnZSBtZXNzYWdlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MTEwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVzc2FnZXMgb3Zl
ciAyIE1pQiB3aWxsIG5vdyBiZSBzcGxpdCBpbnRvIG11bHRpcGxlIGNodW5rcywgd2hpY2ggYWxs
b3dzIHVzIHRvIG5vdCBleGNlZWQgYW55IHJlY2VpdmluZyBkYWVtb24KKyAgICAgICAgcHJvY2Vz
cycgbWVtb3J5IGxpbWl0IHVuZGVyIG90aGVyd2lzZSBub3JtYWwgY29uZGl0aW9ucy4gMiBNaUIg
d2FzIGNob3NlbiBhcyBhIGJhbGFuY2UgYmV0d2VlbiBub3QgaGF2aW5nIHRvCisgICAgICAgIHNw
bGl0IG1vc3QgbWVzc2FnZXMgYXQgYWxsIGFuZCBtYWtpbmcgc3VyZSB0aGF0IHRoZSBtZXNzYWdl
cyAoYW5kIGFueSBjb3BpZXMgbWFkZSBkdXJpbmcgdGhlIHJlbGF5aW5nIG9mIHRoZQorICAgICAg
ICBtZXNzYWdlcykgZG8gbm90IGV4Y2VlZCB0aGUgbWVtb3J5IGxpbWl0cyBvZiB0aGUgcmVjZWl2
aW5nIGRhZW1vbiBwcm9jZXNzLgorCisgICAgICAgIEluIG9yZGVyIHRvIHByZXZlbnQgdXMgZnJv
bSBzZW5kaW5nIGNodW5rZWQgbWVzc2FnZXMgdG8gYSBwcm9jZXNzIHRoYXQgZG9lc24ndCBzdXBw
b3J0IHRoZW0gd2UgY2hlY2sgZm9yIGEgZmxhZworICAgICAgICB0byBlbmFibGUgdGhpcyBmdW5j
dGlvbmFsaXR5IGR1cmluZyBjb25uZWN0aW9uIHNldHVwLgorCisgICAgICAgICogaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvckNvbnN0YW50cy5oOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvY29j
b2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW06CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUlu
c3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UpOgorCiAyMDIyLTAyLTE4ICBKb3NlcGgg
R3JpZWdvICA8amdyaWVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIEVuYWJsZSBTaGFk
b3cgUmVhbG1zIHN1cHBvcnQgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAppbmRleCA2ODJjOWZi
OTM4ZWM2NWFiNDMyNTkzZDMzMzViYzZiMzdlMmVkZWNkLi4xYTRlYzkyNjI1ZmJjNWIwN2I5MTg1
ZGQyYTFiN2M4MzQwYzg3ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaApAQCAtMjkwLDYgKzI5MCw3IEBA
IHByaXZhdGU6CiAgICAgUHJvY2Vzc0lEIG1fcGFyZW50UHJvY2Vzc0lkZW50aWZpZXIgeyAwIH07
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9wYXJlbnRQ
cm9jZXNzQXVkaXREYXRhOworICAgIGJvb2wgbV9jaHVua2VkTWVzc2FnZURhdGFTdXBwb3J0ZWQg
eyBmYWxzZSB9OwogI2VuZGlmCiAgICAgYm9vbCBtX3Nob3VsZFNlbmRQYXJlbnRQcm9jZXNzSW5m
b3JtYXRpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9hdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxl
ZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oCmluZGV4IGU2Mjc0
MmJlOWY1NDlhZjdlYjJiOTg3Y2I1YzJlMDk0ZDU5NDg1MzQuLjNmMGViZGI1NjdhYjMzZTkyNDQ0
ZmY5MWZjODQ2M2RhMDA3NmEyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5o
CkBAIC01Niw2ICs1Niw3IEBACiAjZGVmaW5lIFdJUlVzZXJJbmZvS2V5ICAgICAgICAgICAgICAg
ICAgICAgICAgICBAIldJUlVzZXJJbmZvS2V5IgogI2RlZmluZSBXSVJBcHBsaWNhdGlvbkRpY3Rp
b25hcnlLZXkgICAgICAgICAgICAgQCJXSVJBcHBsaWNhdGlvbkRpY3Rpb25hcnlLZXkiCiAjZGVm
aW5lIFdJUk1lc3NhZ2VEYXRhS2V5ICAgICAgICAgICAgICAgICAgICAgICBAIldJUk1lc3NhZ2VE
YXRhS2V5IgorI2RlZmluZSBXSVJNZXNzYWdlRGF0YVR5cGVLZXkgICAgICAgICAgICAgICAgICAg
QCJXSVJNZXNzYWdlRGF0YVR5cGVLZXkiCiAjZGVmaW5lIFdJUkFwcGxpY2F0aW9uR2V0TGlzdGlu
Z01lc3NhZ2UgICAgICAgICBAIldJUkFwcGxpY2F0aW9uR2V0TGlzdGluZ01lc3NhZ2UiCiAjZGVm
aW5lIFdJUkFwcGxpY2F0aW9uV2FrZVVwRGVidWdnYWJsZXNNZXNzYWdlICBAIldJUkFwcGxpY2F0
aW9uV2FrZVVwRGVidWdnYWJsZXNNZXNzYWdlIgogI2RlZmluZSBXSVJJbmRpY2F0ZU1lc3NhZ2Ug
ICAgICAgICAgICAgICAgICAgICAgQCJXSVJJbmRpY2F0ZU1lc3NhZ2UiCkBAIC04Miw2ICs4Mywx
MiBAQAogI2RlZmluZSBXSVJUeXBlV2ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCJX
SVJUeXBlV2ViIiAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMpOiAiV2ViIiB3YXMgc3BsaXQgaW50
byAiUGFnZSIgKFdlYkNvcmU6OlBhZ2UpIGFuZCAiV2ViUGFnZSIgKFdlYktpdDo6V2ViUGFnZVBy
b3h5KS4KICNkZWZpbmUgV0lSVHlwZVdlYlBhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgIEAi
V0lSVHlwZVdlYlBhZ2UiCiAjZGVmaW5lIFdJUkF1dG9tYXRpY2FsbHlQYXVzZSAgICAgICAgICAg
ICAgICAgICBAIldJUkF1dG9tYXRpY2FsbHlQYXVzZSIKKyNkZWZpbmUgV0lSTWVzc2FnZURhdGFU
eXBlQ2h1bmtTdXBwb3J0ZWRLZXkgICAgIEAiV0lSTWVzc2FnZURhdGFUeXBlQ2h1bmtTdXBwb3J0
ZWRLZXkiCisKKy8vIEFsbG93ZWQgdmFsdWVzIGZvciBXSVJNZXNzYWdlRGF0YVR5cGVLZXkuCisj
ZGVmaW5lIFdJUk1lc3NhZ2VEYXRhVHlwZUZ1bGwgICAgICAgICAgICAgICAgICBAIldJUk1lc3Nh
Z2VEYXRhVHlwZUZ1bGwiCisjZGVmaW5lIFdJUk1lc3NhZ2VEYXRhVHlwZUNodW5rICAgICAgICAg
ICAgICAgICBAIldJUk1lc3NhZ2VEYXRhVHlwZUNodW5rUGFydGlhbCIKKyNkZWZpbmUgV0lSTWVz
c2FnZURhdGFUeXBlRmluYWxDaHVuayAgICAgICAgICAgIEAiV0lSTWVzc2FnZURhdGFUeXBlRmlu
YWxDaHVuayIKIAogLy8gQWxsb3dlZCB2YWx1ZXMgZm9yIFdJUkF1dG9tYXRpb25BdmFpbGFiaWxp
dHlLZXkuCiAjZGVmaW5lIFdJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlOb3RBdmFpbGFibGUgICAg
IEAiV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eU5vdEF2YWlsYWJsZSIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3Rv
ckNvY29hLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2Ev
UmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KaW5kZXggMDg4OTc3NGIxZjhhYzEyMjYzYmNmOThlNTU5
ZGRiY2E4NWZhZTUwNS4uYjhlNzJhZDllNzU1YmUxMmM0NWUyODk2MjEwNDk3Y2M1ZDkzYTk1MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2Ev
UmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KQEAgLTIwNCwxMyArMjA0
LDMxIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlKFRhcmdldElE
IHRhcmdldElkZW50aWZpZXIsIGNvbnN0IFN0cmluCiAgICAgaWYgKCF0YXJnZXRDb25uZWN0aW9u
KQogICAgICAgICByZXR1cm47CiAKLSAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gQHsKLSAg
ICAgICAgV0lSUmF3RGF0YUtleTogW3N0YXRpY19jYXN0PE5TU3RyaW5nICo+KG1lc3NhZ2UpIGRh
dGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwKLSAgICAgICAgV0lSQ29ubmVj
dGlvbklkZW50aWZpZXJLZXk6IHRhcmdldENvbm5lY3Rpb24tPmNvbm5lY3Rpb25JZGVudGlmaWVy
KCksCi0gICAgICAgIFdJUkRlc3RpbmF0aW9uS2V5OiB0YXJnZXRDb25uZWN0aW9uLT5kZXN0aW5h
dGlvbigpCi0gICAgfTsKKyAgICBOU0RhdGEgKm1lc3NhZ2VEYXRhID0gW3N0YXRpY19jYXN0PE5T
U3RyaW5nICo+KG1lc3NhZ2UpIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XTsKKyAgICBOU1VJbnRlZ2VyIG1lc3NhZ2VMZW5ndGggPSBbbWVzc2FnZURhdGEgbGVuZ3RoXTsK
KyAgICBOU1VJbnRlZ2VyIGNvbnN0IGNodW5rU2l6ZSA9IDIgKiAxMDI0ICogMTAyNDsgLy8gMiBN
ZWJpYnl0ZXMKKworICAgIGlmICghbV9jaHVua2VkTWVzc2FnZURhdGFTdXBwb3J0ZWQgfHwgbWVz
c2FnZUxlbmd0aCA8IGNodW5rU2l6ZSkgeworICAgICAgICBtX3JlbGF5Q29ubmVjdGlvbi0+c2Vu
ZE1lc3NhZ2UoV0lSUmF3RGF0YU1lc3NhZ2UsIEB7CisgICAgICAgICAgICBXSVJSYXdEYXRhS2V5
OiBtZXNzYWdlRGF0YSwKKyAgICAgICAgICAgIFdJUk1lc3NhZ2VEYXRhVHlwZUtleTogV0lSTWVz
c2FnZURhdGFUeXBlRnVsbCwKKyAgICAgICAgICAgIFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5
OiB0YXJnZXRDb25uZWN0aW9uLT5jb25uZWN0aW9uSWRlbnRpZmllcigpLAorICAgICAgICAgICAg
V0lSRGVzdGluYXRpb25LZXk6IHRhcmdldENvbm5lY3Rpb24tPmRlc3RpbmF0aW9uKCkKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKE5TVUludGVnZXIgb2Zm
c2V0ID0gMDsgb2Zmc2V0IDwgbWVzc2FnZUxlbmd0aDsgb2Zmc2V0ICs9IGNodW5rU2l6ZSkgewor
ICAgICAgICBOU1VJbnRlZ2VyIGN1cnJlbnRDaHVua1NpemUgPSAobWVzc2FnZUxlbmd0aCAtIG9m
ZnNldCA+IGNodW5rU2l6ZSkgPyBjaHVua1NpemUgOiBtZXNzYWdlTGVuZ3RoIC0gb2Zmc2V0Owor
ICAgICAgICBOU1N0cmluZyAqdHlwZSA9IG9mZnNldCArIGN1cnJlbnRDaHVua1NpemUgPT0gbWVz
c2FnZUxlbmd0aCA/IFdJUk1lc3NhZ2VEYXRhVHlwZUZpbmFsQ2h1bmsgOiBXSVJNZXNzYWdlRGF0
YVR5cGVDaHVuazsKIAotICAgIG1fcmVsYXlDb25uZWN0aW9uLT5zZW5kTWVzc2FnZShXSVJSYXdE
YXRhTWVzc2FnZSwgdXNlckluZm8pOworICAgICAgICBtX3JlbGF5Q29ubmVjdGlvbi0+c2VuZE1l
c3NhZ2UoV0lSUmF3RGF0YU1lc3NhZ2UsIEB7CisgICAgICAgICAgICBXSVJSYXdEYXRhS2V5OiBb
bWVzc2FnZURhdGEgc3ViZGF0YVdpdGhSYW5nZTpOU01ha2VSYW5nZShvZmZzZXQsIGN1cnJlbnRD
aHVua1NpemUpXSwKKyAgICAgICAgICAgIFdJUk1lc3NhZ2VEYXRhVHlwZUtleTogdHlwZSwKKyAg
ICAgICAgICAgIFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5OiB0YXJnZXRDb25uZWN0aW9uLT5j
b25uZWN0aW9uSWRlbnRpZmllcigpLAorICAgICAgICAgICAgV0lSRGVzdGluYXRpb25LZXk6IHRh
cmdldENvbm5lY3Rpb24tPmRlc3RpbmF0aW9uKCkKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQpAQCAtNTI3LDYgKzU0NSwxMSBAQCB2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5m
bykKICAgICBCQUlMX0lGX1VORVhQRUNURURfVFlQRV9BTExPV0lOR19OSUwoYXV0b21hdGljYWxs
eVBhdXNlTnVtYmVyLCBbTlNOdW1iZXIgY2xhc3NdKTsKICAgICBCT09MIGF1dG9tYXRpY2FsbHlQ
YXVzZSA9IGF1dG9tYXRpY2FsbHlQYXVzZU51bWJlci5ib29sVmFsdWU7CiAKKyAgICBOU051bWJl
ciAqY2h1bmtlZE1lc3NhZ2VEYXRhU3VwcG9ydGVkTnVtYmVyID0gdXNlckluZm9bV0lSTWVzc2Fn
ZURhdGFUeXBlQ2h1bmtTdXBwb3J0ZWRLZXldOworICAgIGNvbnZlcnROU051bGxUb05pbChjaHVu
a2VkTWVzc2FnZURhdGFTdXBwb3J0ZWROdW1iZXIpOworICAgIEJBSUxfSUZfVU5FWFBFQ1RFRF9U
WVBFX0FMTE9XSU5HX05JTChjaHVua2VkTWVzc2FnZURhdGFTdXBwb3J0ZWROdW1iZXIsIFtOU051
bWJlciBjbGFzc10pOworICAgIG1fY2h1bmtlZE1lc3NhZ2VEYXRhU3VwcG9ydGVkID0gISFjaHVu
a2VkTWVzc2FnZURhdGFTdXBwb3J0ZWROdW1iZXIgJiYgY2h1bmtlZE1lc3NhZ2VEYXRhU3VwcG9y
dGVkTnVtYmVyLmJvb2xWYWx1ZTsKKwogICAgIFRhcmdldElEIHRhcmdldElkZW50aWZpZXIgPSB0
YXJnZXRJZGVudGlmaWVyTnVtYmVyLnVuc2lnbmVkSW50VmFsdWU7CiAgICAgaWYgKCF0YXJnZXRJ
ZGVudGlmaWVyKQogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453144</attachid>
            <date>2022-02-24 15:23:54 -0800</date>
            <delta_ts>2022-02-25 08:33:40 -0800</delta_ts>
            <desc>Patch v1.1 - Address review notes</desc>
            <filename>bug-237110-20220224152354.patch</filename>
            <type>text/plain</type>
            <size>7083</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YzkwOTUwYmY4MzJhNTY2NDhiN2IxOTBkYjM2NmQ1MmVkYWFkZDdmLi45ZjQxMWY4YmRhMGVkZjQ4
MzY4MmI0Y2E0M2NlMjM4M2QwZTBlMTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAyMi0wMi0yMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW0NvY29hXSBTcGxpdCByZW1vdGUgaW5zcGVjdG9y
IG1lc3NhZ2UgZGF0YSBpbnRvIHNtYWxsZXIgY2h1bmtzIGZvciBsYXJnZSBtZXNzYWdlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MTEwCisgICAg
ICAgIDxyZGFyOi8vODkzNjQ0ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3Nv
LgorCisgICAgICAgIE1lc3NhZ2VzIG92ZXIgMiBNaUIgd2lsbCBub3cgYmUgc3BsaXQgaW50byBt
dWx0aXBsZSBjaHVua3MsIHdoaWNoIGFsbG93cyB1cyB0byBub3QgZXhjZWVkIGFueSByZWNlaXZp
bmcgZGFlbW9uCisgICAgICAgIHByb2Nlc3MnIG1lbW9yeSBsaW1pdCB1bmRlciBvdGhlcndpc2Ug
bm9ybWFsIGNvbmRpdGlvbnMuIDIgTWlCIHdhcyBjaG9zZW4gYXMgYSBiYWxhbmNlIGJldHdlZW4g
bm90IGhhdmluZyB0bworICAgICAgICBzcGxpdCBtb3N0IG1lc3NhZ2VzIGF0IGFsbCBhbmQgbWFr
aW5nIHN1cmUgdGhhdCB0aGUgbWVzc2FnZXMgKGFuZCBhbnkgY29waWVzIG1hZGUgZHVyaW5nIHRo
ZSByZWxheWluZyBvZiB0aGUKKyAgICAgICAgbWVzc2FnZXMpIGRvIG5vdCBleGNlZWQgdGhlIG1l
bW9yeSBsaW1pdHMgb2YgdGhlIHJlY2VpdmluZyBkYWVtb24gcHJvY2Vzcy4KKworICAgICAgICBJ
biBvcmRlciB0byBwcmV2ZW50IHVzIGZyb20gc2VuZGluZyBjaHVua2VkIG1lc3NhZ2VzIHRvIGEg
cHJvY2VzcyB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCB0aGVtIHdlIGNoZWNrIGZvciBhIGZsYWcKKyAg
ICAgICAgdG8gZW5hYmxlIHRoaXMgZnVuY3Rpb25hbGl0eSBkdXJpbmcgY29ubmVjdGlvbiBzZXR1
cC4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGUpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdl
KToKKwogMjAyMi0wMi0xOCAgSm9zZXBoIEdyaWVnbyAgPGpncmllZ29AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbSlNDXSBFbmFibGUgU2hhZG93IFJlYWxtcyBzdXBwb3J0IGJ5IGRlZmF1bHQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yLmgKaW5kZXggNjgyYzlmYjkzOGVjNjVhYjQzMjU5M2QzMzM1YmM2YjM3ZTJlZGVj
ZC4uOGU4MWJkZmUwNjIzODVlNTJmNTEyZWNhZTEyNTM5ZGI3Yzg5OGE5MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yLmgKQEAgLTI5MCw2ICsyOTAsNyBAQCBwcml2YXRlOgogICAgIFByb2Nlc3NJRCBtX3BhcmVu
dFByb2Nlc3NJZGVudGlmaWVyIHsgMCB9OwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IG1fcGFyZW50UHJvY2Vzc0F1ZGl0RGF0YTsKKyAgICBib29sIG1fbWVz
c2FnZURhdGFUeXBlQ2h1bmtTdXBwb3J0ZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgYm9vbCBt
X3Nob3VsZFNlbmRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24geyBmYWxzZSB9OwogICAgIGJvb2wg
bV9hdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFu
dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3Bl
Y3RvckNvbnN0YW50cy5oCmluZGV4IGU2Mjc0MmJlOWY1NDlhZjdlYjJiOTg3Y2I1YzJlMDk0ZDU5
NDg1MzQuLjVkNmMyMTI1MzY5ZGZiZjlmMTk1ZWZlNzQxZDQxNmQ4YjhmYWRiZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ckNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oCkBAIC01Niw2ICs1Niw3IEBACiAjZGVmaW5lIFdJ
UlVzZXJJbmZvS2V5ICAgICAgICAgICAgICAgICAgICAgICAgICBAIldJUlVzZXJJbmZvS2V5Igog
I2RlZmluZSBXSVJBcHBsaWNhdGlvbkRpY3Rpb25hcnlLZXkgICAgICAgICAgICAgQCJXSVJBcHBs
aWNhdGlvbkRpY3Rpb25hcnlLZXkiCiAjZGVmaW5lIFdJUk1lc3NhZ2VEYXRhS2V5ICAgICAgICAg
ICAgICAgICAgICAgICBAIldJUk1lc3NhZ2VEYXRhS2V5IgorI2RlZmluZSBXSVJNZXNzYWdlRGF0
YVR5cGVLZXkgICAgICAgICAgICAgICAgICAgQCJXSVJNZXNzYWdlRGF0YVR5cGVLZXkiCiAjZGVm
aW5lIFdJUkFwcGxpY2F0aW9uR2V0TGlzdGluZ01lc3NhZ2UgICAgICAgICBAIldJUkFwcGxpY2F0
aW9uR2V0TGlzdGluZ01lc3NhZ2UiCiAjZGVmaW5lIFdJUkFwcGxpY2F0aW9uV2FrZVVwRGVidWdn
YWJsZXNNZXNzYWdlICBAIldJUkFwcGxpY2F0aW9uV2FrZVVwRGVidWdnYWJsZXNNZXNzYWdlIgog
I2RlZmluZSBXSVJJbmRpY2F0ZU1lc3NhZ2UgICAgICAgICAgICAgICAgICAgICAgQCJXSVJJbmRp
Y2F0ZU1lc3NhZ2UiCkBAIC04Miw2ICs4MywxMiBAQAogI2RlZmluZSBXSVJUeXBlV2ViICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJUeXBlV2ViIiAvLyBDT01QQVRJQklMSVRZIChp
T1MgMTMpOiAiV2ViIiB3YXMgc3BsaXQgaW50byAiUGFnZSIgKFdlYkNvcmU6OlBhZ2UpIGFuZCAi
V2ViUGFnZSIgKFdlYktpdDo6V2ViUGFnZVByb3h5KS4KICNkZWZpbmUgV0lSVHlwZVdlYlBhZ2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSVHlwZVdlYlBhZ2UiCiAjZGVmaW5lIFdJUkF1
dG9tYXRpY2FsbHlQYXVzZSAgICAgICAgICAgICAgICAgICBAIldJUkF1dG9tYXRpY2FsbHlQYXVz
ZSIKKyNkZWZpbmUgV0lSTWVzc2FnZURhdGFUeXBlQ2h1bmtTdXBwb3J0ZWRLZXkgICAgIEAiV0lS
TWVzc2FnZURhdGFUeXBlQ2h1bmtTdXBwb3J0ZWRLZXkiCisKKy8vIEFsbG93ZWQgdmFsdWVzIGZv
ciBXSVJNZXNzYWdlRGF0YVR5cGVLZXkuCisjZGVmaW5lIFdJUk1lc3NhZ2VEYXRhVHlwZUZ1bGwg
ICAgICAgICAgICAgICAgICBAIldJUk1lc3NhZ2VEYXRhVHlwZUZ1bGwiCisjZGVmaW5lIFdJUk1l
c3NhZ2VEYXRhVHlwZUNodW5rICAgICAgICAgICAgICAgICBAIldJUk1lc3NhZ2VEYXRhVHlwZUNo
dW5rIgorI2RlZmluZSBXSVJNZXNzYWdlRGF0YVR5cGVGaW5hbENodW5rICAgICAgICAgICAgQCJX
SVJNZXNzYWdlRGF0YVR5cGVGaW5hbENodW5rIgogCiAvLyBBbGxvd2VkIHZhbHVlcyBmb3IgV0lS
QXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleS4KICNkZWZpbmUgV0lSQXV0b21hdGlvbkF2YWlsYWJp
bGl0eU5vdEF2YWlsYWJsZSAgICAgQCJXSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5Tm90QXZhaWxh
YmxlIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
Y29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQppbmRleCAwODg5Nzc0
YjFmOGFjMTIyNjNiY2Y5OGU1NTlkZGJjYTg1ZmFlNTA1Li4yODUwNDdlMmQ2OGUyZmIzYTBhOGQ2
ZjZkMDBiOGE4M2JiZDI5OTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2Nv
YS5tbQpAQCAtMjA0LDEzICsyMDQsMzMgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNz
YWdlVG9SZW1vdGUoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllciwgY29uc3QgU3RyaW4KICAgICBp
ZiAoIXRhcmdldENvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TRGljdGlvbmFy
eSAqdXNlckluZm8gPSBAewotICAgICAgICBXSVJSYXdEYXRhS2V5OiBbc3RhdGljX2Nhc3Q8TlNT
dHJpbmcgKj4obWVzc2FnZSkgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
LAotICAgICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTogdGFyZ2V0Q29ubmVjdGlvbi0+
Y29ubmVjdGlvbklkZW50aWZpZXIoKSwKLSAgICAgICAgV0lSRGVzdGluYXRpb25LZXk6IHRhcmdl
dENvbm5lY3Rpb24tPmRlc3RpbmF0aW9uKCkKLSAgICB9OworICAgIE5TRGF0YSAqbWVzc2FnZURh
dGEgPSBbc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4obWVzc2FnZSkgZGF0YVVzaW5nRW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgIE5TVUludGVnZXIgbWVzc2FnZUxlbmd0aCA9IG1l
c3NhZ2VEYXRhLmxlbmd0aDsKKyAgICBjb25zdCBOU1VJbnRlZ2VyIG1heENodW5rU2l6ZSA9IDIg
KiAxMDI0ICogMTAyNDsgLy8gMiBNZWJpYnl0ZXMKKworICAgIGlmICghbV9tZXNzYWdlRGF0YVR5
cGVDaHVua1N1cHBvcnRlZCB8fCBtZXNzYWdlTGVuZ3RoIDwgbWF4Q2h1bmtTaXplKSB7CisgICAg
ICAgIG1fcmVsYXlDb25uZWN0aW9uLT5zZW5kTWVzc2FnZShXSVJSYXdEYXRhTWVzc2FnZSwgQHsK
KyAgICAgICAgICAgIFdJUlJhd0RhdGFLZXk6IG1lc3NhZ2VEYXRhLAorICAgICAgICAgICAgV0lS
TWVzc2FnZURhdGFUeXBlS2V5OiBXSVJNZXNzYWdlRGF0YVR5cGVGdWxsLAorICAgICAgICAgICAg
V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IHRhcmdldENvbm5lY3Rpb24tPmNvbm5lY3Rpb25J
ZGVudGlmaWVyKCksCisgICAgICAgICAgICBXSVJEZXN0aW5hdGlvbktleTogdGFyZ2V0Q29ubmVj
dGlvbi0+ZGVzdGluYXRpb24oKQorICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAotICAgIG1fcmVsYXlDb25uZWN0aW9uLT5zZW5kTWVzc2FnZShXSVJSYXdEYXRhTWVzc2FnZSwg
dXNlckluZm8pOworICAgIGZvciAoTlNVSW50ZWdlciBvZmZzZXQgPSAwOyBvZmZzZXQgPCBtZXNz
YWdlTGVuZ3RoOyBvZmZzZXQgKz0gbWF4Q2h1bmtTaXplKSB7CisgICAgICAgIEBhdXRvcmVsZWFz
ZXBvb2wgeworICAgICAgICAgICAgTlNVSW50ZWdlciBjdXJyZW50Q2h1bmtTaXplID0gc3RkOjpt
aW4obWVzc2FnZUxlbmd0aCAtIG9mZnNldCwgbWF4Q2h1bmtTaXplKTsKKyAgICAgICAgICAgIE5T
U3RyaW5nICp0eXBlID0gb2Zmc2V0ICsgY3VycmVudENodW5rU2l6ZSA9PSBtZXNzYWdlTGVuZ3Ro
ID8gV0lSTWVzc2FnZURhdGFUeXBlRmluYWxDaHVuayA6IFdJUk1lc3NhZ2VEYXRhVHlwZUNodW5r
OworCisgICAgICAgICAgICBtX3JlbGF5Q29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV0lSUmF3RGF0
YU1lc3NhZ2UsIEB7CisgICAgICAgICAgICAgICAgV0lSUmF3RGF0YUtleTogW21lc3NhZ2VEYXRh
IHN1YmRhdGFXaXRoUmFuZ2U6TlNNYWtlUmFuZ2Uob2Zmc2V0LCBjdXJyZW50Q2h1bmtTaXplKV0s
CisgICAgICAgICAgICAgICAgV0lSTWVzc2FnZURhdGFUeXBlS2V5OiB0eXBlLAorICAgICAgICAg
ICAgICAgIFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5OiB0YXJnZXRDb25uZWN0aW9uLT5jb25u
ZWN0aW9uSWRlbnRpZmllcigpLAorICAgICAgICAgICAgICAgIFdJUkRlc3RpbmF0aW9uS2V5OiB0
YXJnZXRDb25uZWN0aW9uLT5kZXN0aW5hdGlvbigpCisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fQorICAgIH0KIH0KIAogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KCkKQEAgLTUyNyw2ICs1
NDcsMTEgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKE5TRGlj
dGlvbmFyeSAqdXNlckluZm8pCiAgICAgQkFJTF9JRl9VTkVYUEVDVEVEX1RZUEVfQUxMT1dJTkdf
TklMKGF1dG9tYXRpY2FsbHlQYXVzZU51bWJlciwgW05TTnVtYmVyIGNsYXNzXSk7CiAgICAgQk9P
TCBhdXRvbWF0aWNhbGx5UGF1c2UgPSBhdXRvbWF0aWNhbGx5UGF1c2VOdW1iZXIuYm9vbFZhbHVl
OwogCisgICAgTlNOdW1iZXIgKm1lc3NhZ2VEYXRhVHlwZUNodW5rU3VwcG9ydGVkTnVtYmVyID0g
dXNlckluZm9bV0lSTWVzc2FnZURhdGFUeXBlQ2h1bmtTdXBwb3J0ZWRLZXldOworICAgIGNvbnZl
cnROU051bGxUb05pbChtZXNzYWdlRGF0YVR5cGVDaHVua1N1cHBvcnRlZE51bWJlcik7CisgICAg
QkFJTF9JRl9VTkVYUEVDVEVEX1RZUEVfQUxMT1dJTkdfTklMKG1lc3NhZ2VEYXRhVHlwZUNodW5r
U3VwcG9ydGVkTnVtYmVyLCBbTlNOdW1iZXIgY2xhc3NdKTsKKyAgICBtX21lc3NhZ2VEYXRhVHlw
ZUNodW5rU3VwcG9ydGVkID0gbWVzc2FnZURhdGFUeXBlQ2h1bmtTdXBwb3J0ZWROdW1iZXIuYm9v
bFZhbHVlOworCiAgICAgVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllciA9IHRhcmdldElkZW50aWZp
ZXJOdW1iZXIudW5zaWduZWRJbnRWYWx1ZTsKICAgICBpZiAoIXRhcmdldElkZW50aWZpZXIpCiAg
ICAgICAgIHJldHVybjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>