<?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>218516</bug_id>
          
          <creation_ts>2020-11-03 08:09:51 -0800</creation_ts>
          <short_desc>Add helper methods to encode and decode IPC arguments as raw data</short_desc>
          <delta_ts>2020-11-03 12:21:21 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>218406</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>ggaren</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1703988</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-03 08:09:51 -0800</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703990</commentid>
    <comment_count>1</comment_count>
      <attachid>413061</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-03 08:16:40 -0800</bug_when>
    <thetext>Created attachment 413061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704034</commentid>
    <comment_count>2</comment_count>
      <attachid>413061</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-11-03 09:35:15 -0800</bug_when>
    <thetext>Comment on attachment 413061
Patch

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

r=me

&gt; Source/WebKit/Platform/IPC/Encoder.cpp:76
&gt; +    : m_messageName(static_cast&lt;MessageName&gt;(0))

If you just want some initialization, and you don&apos;t have a specific use for 0, &quot;m_messageName()&quot; is probably better here.

&gt; Source/WebKit/Platform/IPC/Encoder.h:104
&gt; +    static RefPtr&lt;WebCore::SharedBuffer&gt; encodeObject(const T&amp; object)

Not sure what distinction &quot;encodeObject&quot; intends to make here, in comparison to Encoder&apos;s &quot;encode&quot; functions. Maybe this should just be called &quot;encode&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704043</commentid>
    <comment_count>3</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-03 09:50:44 -0800</bug_when>
    <thetext>Thanks for the review!

(In reply to Geoffrey Garen from comment #2)
&gt; Comment on attachment 413061 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=413061&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/Encoder.cpp:76
&gt; &gt; +    : m_messageName(static_cast&lt;MessageName&gt;(0))
&gt; 
&gt; If you just want some initialization, and you don&apos;t have a specific use for
&gt; 0, &quot;m_messageName()&quot; is probably better here.

Sounds good — changed to m_messageName().

&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/Encoder.h:104
&gt; &gt; +    static RefPtr&lt;WebCore::SharedBuffer&gt; encodeObject(const T&amp; object)
&gt; 
&gt; Not sure what distinction &quot;encodeObject&quot; intends to make here, in comparison
&gt; to Encoder&apos;s &quot;encode&quot; functions. Maybe this should just be called &quot;encode&quot;?

Hm...so I originally just wanted to call this `encode` as well, but I ran into compilation errors due to ambiguous calls to `encode` (since it&apos;s also defined as an instance method with the same signature :/).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704052</commentid>
    <comment_count>4</comment_count>
      <attachid>413069</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-03 10:02:46 -0800</bug_when>
    <thetext>Created attachment 413069
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704053</commentid>
    <comment_count>5</comment_count>
      <attachid>413069</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-03 10:08:16 -0800</bug_when>
    <thetext>Comment on attachment 413069
For landing

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

&gt; Source/WebKit/Platform/IPC/Decoder.h:178
&gt; +    static Optional&lt;T&gt; decodeObject(const uint8_t* buffer, size_t bufferSize)

I would have called &apos;buffer&apos; &apos;sourceBytes&apos; or &apos;source&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704056</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-11-03 10:11:59 -0800</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebKit/Platform/IPC/Encoder.h:104
&gt; &gt; &gt; +    static RefPtr&lt;WebCore::SharedBuffer&gt; encodeObject(const T&amp; object)
&gt; &gt; 
&gt; &gt; Not sure what distinction &quot;encodeObject&quot; intends to make here, in comparison
&gt; &gt; to Encoder&apos;s &quot;encode&quot; functions. Maybe this should just be called &quot;encode&quot;?
&gt; 
&gt; Hm...so I originally just wanted to call this `encode` as well, but I ran
&gt; into compilation errors due to ambiguous calls to `encode` (since it&apos;s also
&gt; defined as an instance method with the same signature :/).

I guess the distinction is that the static methods encode/decode just one object, and into a standalone buffer without attachments, and without any message name or destination.

Maybe we should call that &quot;encodeSingleObject&quot;.

But also, can we just create a separate class? It&apos;s not clear why this new behavior is a part of a class that also has attachments, message names, destination ID, alignment adjustment, etc. Can we make an object that&apos;s more specific to the task of serializing one object into shared memory, and that doesn&apos;t advertise member functions that would be broken if you called them?

If there really is a significant chunk of code to share, maybe we can do that by making this new simpler class a base class, or by making stand-alone helper functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704070</commentid>
    <comment_count>7</comment_count>
      <attachid>413069</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-03 10:38:28 -0800</bug_when>
    <thetext>Comment on attachment 413069
For landing

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

&gt;&gt; Source/WebKit/Platform/IPC/Decoder.h:178
&gt;&gt; +    static Optional&lt;T&gt; decodeObject(const uint8_t* buffer, size_t bufferSize)
&gt; 
&gt; I would have called &apos;buffer&apos; &apos;sourceBytes&apos; or &apos;source&apos;.

👍🏻 renamed these parameters to `source` and `numberOfBytes`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704082</commentid>
    <comment_count>8</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-03 10:48:44 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #6)
&gt; &gt; &gt; &gt; Source/WebKit/Platform/IPC/Encoder.h:104
&gt; &gt; &gt; &gt; +    static RefPtr&lt;WebCore::SharedBuffer&gt; encodeObject(const T&amp; object)
&gt; &gt; &gt; 
&gt; &gt; &gt; Not sure what distinction &quot;encodeObject&quot; intends to make here, in comparison
&gt; &gt; &gt; to Encoder&apos;s &quot;encode&quot; functions. Maybe this should just be called &quot;encode&quot;?
&gt; &gt; 
&gt; &gt; Hm...so I originally just wanted to call this `encode` as well, but I ran
&gt; &gt; into compilation errors due to ambiguous calls to `encode` (since it&apos;s also
&gt; &gt; defined as an instance method with the same signature :/).
&gt; 
&gt; I guess the distinction is that the static methods encode/decode just one
&gt; object, and into a standalone buffer without attachments, and without any
&gt; message name or destination.
&gt; 
&gt; Maybe we should call that &quot;encodeSingleObject&quot;.
&gt; 
&gt; But also, can we just create a separate class? It&apos;s not clear why this new
&gt; behavior is a part of a class that also has attachments, message names,
&gt; destination ID, alignment adjustment, etc. Can we make an object that&apos;s more
&gt; specific to the task of serializing one object into shared memory, and that
&gt; doesn&apos;t advertise member functions that would be broken if you called them?
&gt; 
&gt; If there really is a significant chunk of code to share, maybe we can do
&gt; that by making this new simpler class a base class, or by making stand-alone
&gt; helper functions.

encodeSingleObject/decodeSingleObject sound good to me — I renamed these new static methods to those. I did consider making separate Encoder/Decoder classes (e.g. RawDataEncoder/RawDataDecoder), but felt that the functionality we require is so close to what&apos;s already in Encoder/Decoder, that exposing a couple of helper methods to encode/decode data using these existing classes would make more sense.

I think some refactoring to either pull IPC::Attachments and IPC header logic out of Encoder/Decoder and into a derived class, or write new DataEncoder/DataDecoder classes  makes sense to me. If possible, I&apos;d like to tackle this separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704105</commentid>
    <comment_count>9</comment_count>
      <attachid>413081</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-03 11:27:47 -0800</bug_when>
    <thetext>Created attachment 413081
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704131</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-11-03 12:12:47 -0800</bug_when>
    <thetext>&gt; encodeSingleObject/decodeSingleObject sound good to me — I renamed these new
&gt; static methods to those. I did consider making separate Encoder/Decoder
&gt; classes (e.g. RawDataEncoder/RawDataDecoder), but felt that the
&gt; functionality we require is so close to what&apos;s already in Encoder/Decoder,
&gt; that exposing a couple of helper methods to encode/decode data using these
&gt; existing classes would make more sense.

👍🏻

&gt; I think some refactoring to either pull IPC::Attachments and IPC header
&gt; logic out of Encoder/Decoder and into a derived class, or write new
&gt; DataEncoder/DataDecoder classes  makes sense to me. If possible, I&apos;d like to
&gt; tackle this separately.

👍🏻</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704135</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-03 12:20:43 -0800</bug_when>
    <thetext>Committed r269327: &lt;https://trac.webkit.org/changeset/269327&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413081.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704136</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-03 12:21:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/71005847&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413061</attachid>
            <date>2020-11-03 08:16:40 -0800</date>
            <delta_ts>2020-11-03 10:02:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218516-20201103081639.patch</filename>
            <type>text/plain</type>
            <size>6022</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkxNTdiNzA4NWU0MmE4Yzk0
N2Q1YTVlNmE5OWNhZDI2ZjMzMDkzYTkuLmIxMmI0MjRlZDljZjg5Y2MxZGNjNzc3ZWI2OWIwZDQw
OTk3OTdlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMTEtMDMgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGhlbHBlciBtZXRo
b2RzIHRvIGVuY29kZSBhbmQgZGVjb2RlIElQQyBhcmd1bWVudHMgYXMgcmF3IGRhdGEKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODUxNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgaGVscGVy
IG1ldGhvZHMgdG8gYElQQzo6RW5jb2RlcmAgYW5kIGBJUEM6OkRlY29kZXJgIHRoYXQgY2FuIGJl
IHVzZWQgdG8gY29udmVydCBhbnl0aGluZyB0aGF0IGNhbiBiZQorICAgICAgICBzZW50IGFzIGFu
IElQQyBhcmd1bWVudCBpbnRvIHJhdyBieXRlcyAoaS5lLiB1c2luZyBgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyYCksIGFzIGxvbmcgYXMgdGhlcmUgYXJlIG5vIElQQworICAgICAgICBhdHRhY2htZW50
cyBpbiB0aGUgZW5jb2RlZCBkYXRhLgorCisgICAgICAgIEZvciBtb3JlIGRldGFpbHMsIHNlZSA8
d2Via2l0Lm9yZy9iLzIxODQwNj4uCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5j
cHA6CisgICAgICAgIChJUEM6OkRlY29kZXI6OkRlY29kZXIpOgorCisgICAgICAgIEFkZCBwcml2
YXRlIHZlcnNpb25zIG9mIHRoZSBFbmNvZGVyIGFuZCBEZWNvZGVyIGNvbnN0cnVjdG9ycyB0aGF0
IGF2b2lkIElQQyBoZWFkZXIgZGF0YS4gVGhlc2UgY29uc3RydWN0b3JzIGFyZQorICAgICAgICBj
YWxsZWQgb25seSBmcm9tIHdpdGhpbiBgZW5jb2RlT2JqZWN0YCBhbmQgYGRlY29kZU9iamVjdGAs
IHJlc3BlY3RpdmVseS4KKworICAgICAgICAoSVBDOjptX2J1ZmZlckRlYWxsb2NhdG9yKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5oOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpk
ZWNvZGVPYmplY3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcDoKKyAgICAg
ICAgKElQQzo6RW5jb2Rlcjo6RW5jb2Rlcik6CisgICAgICAgIChJUEM6OkVuY29kZXI6OnJlbGVh
c2VBdHRhY2htZW50cyk6CisgICAgICAgIChJUEM6OkVuY29kZXI6Omhhc0F0dGFjaG1lbnRzIGNv
bnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5oOgorCiAyMDIwLTEwLTMwICBC
cmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1v
dmUgSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyIHRvIFdlYkNvcmUsIGNsZWFuIHVwIHVz
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggNWNhMjEyN2EzNDZj
ZDJhNDY5Y2EyOTdmNGFiMTM5MDJmNmEwNmY4YS4uNTFiOWZmZDkzMDM0MGJkZmYyZmI3MWQwZTQ2
Y2FjZjQwOTM0NjUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKQEAg
LTc0LDYgKzc0LDE2IEBAIERlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBz
aXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2NhCiAgICAgICAgIHJldHVybjsK
IH0KIAorRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZm
ZXJTaXplLCBDb25zdHJ1Y3RXaXRob3V0SGVhZGVyVGFnKQorICAgIDogbV9idWZmZXIgeyBidWZm
ZXIgfQorICAgICwgbV9idWZmZXJQb3MgeyBtX2J1ZmZlciB9CisgICAgLCBtX2J1ZmZlckVuZCB7
IG1fYnVmZmVyICsgYnVmZmVyU2l6ZSB9CisgICAgLCBtX2J1ZmZlckRlYWxsb2NhdG9yKFtdIChj
b25zdCB1aW50OF90Kiwgc2l6ZV90KSB7IH0pCit7CisgICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90PihtX2J1ZmZlcikgJSBhbGlnbm9mKHVpbnQ2NF90KSkKKyAgICAgICAgbWFya0lu
dmFsaWQoKTsKK30KKwogRGVjb2Rlcjo6fkRlY29kZXIoKQogewogICAgIEFTU0VSVChtX2J1ZmZl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggM2RkMjQ2OTZlZjZjYTdk
Yzk3ZDAxM2EwZmU4NzVkN2JkNDdkZTMwYS4uYTAzZWJiMWIyODM3ZWY2YTM4NzNhMTE1YzRkYmUw
ZmM1OGNkOTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2luY2x1ZGUgIlN0cmluZ1JlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVJdGVtLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0xNzMsNyArMTc0LDIyIEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBjb25zdCBib29sIGlzSVBDRGVjb2RlciA9IHRydWU7CiAKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgT3B0aW9uYWw8VD4gZGVjb2RlT2JqZWN0KGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpCisgICAgeworICAgICAgICBPcHRpb25h
bDxUPiByZXN1bHQ7CisgICAgICAgIERlY29kZXIgZGVjb2RlcihidWZmZXIsIGJ1ZmZlclNpemUs
IENvbnN0cnVjdFdpdGhvdXRIZWFkZXIpOworICAgICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgp
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBkZWNvZGVyID4+
IHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKIHByaXZhdGU6CisgICAg
ZW51bSBDb25zdHJ1Y3RXaXRob3V0SGVhZGVyVGFnIHsgQ29uc3RydWN0V2l0aG91dEhlYWRlciB9
OworICAgIERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwg
Q29uc3RydWN0V2l0aG91dEhlYWRlclRhZyk7CisKICAgICBib29sIGFsaWduQnVmZmVyUG9zaXRp
b24oc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KTsKICAgICBib29sIGJ1ZmZlcklzTGFyZ2VFbm91
Z2hUb0NvbnRhaW4oc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAppbmRleCA4N2ZlOTU1NTJhYzYwNTJkYmNkNzZlNDkw
ZDRhYjZhNjYyZWM4YWQ0Li5iMDU1NjY1N2NiMDZmMjRhNDM3OWJiMzNkNWQ3Zjk3ZTEyMGNkOWNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcApAQCAtNzIsNiArNzIsMTYg
QEAgRW5jb2Rlcjo6RW5jb2RlcihNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCkKICAgICBlbmNvZGVIZWFkZXIoKTsKIH0KIAorRW5jb2Rlcjo6RW5jb2RlcihD
b25zdHJ1Y3RXaXRob3V0SGVhZGVyVGFnKQorICAgIDogbV9tZXNzYWdlTmFtZShzdGF0aWNfY2Fz
dDxNZXNzYWdlTmFtZT4oMCkpCisgICAgLCBtX2Rlc3RpbmF0aW9uSUQoMCkKKyAgICAsIG1fYnVm
ZmVyKG1faW5saW5lQnVmZmVyKQorICAgICwgbV9idWZmZXJQb2ludGVyKG1faW5saW5lQnVmZmVy
KQorICAgICwgbV9idWZmZXJTaXplKDApCisgICAgLCBtX2J1ZmZlckNhcGFjaXR5KHNpemVvZiht
X2lubGluZUJ1ZmZlcikpCit7Cit9CisKIEVuY29kZXI6On5FbmNvZGVyKCkKIHsKICAgICBpZiAo
bV9idWZmZXIgIT0gbV9pbmxpbmVCdWZmZXIpCkBAIC0yMTksNyArMjI5LDEyIEBAIHZvaWQgRW5j
b2Rlcjo6YWRkQXR0YWNobWVudChBdHRhY2htZW50JiYgYXR0YWNobWVudCkKIAogVmVjdG9yPEF0
dGFjaG1lbnQ+IEVuY29kZXI6OnJlbGVhc2VBdHRhY2htZW50cygpCiB7Ci0gICAgcmV0dXJuIFdU
Rk1vdmUobV9hdHRhY2htZW50cyk7CisgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9hdHRhY2ht
ZW50cywgeyB9KTsKK30KKworYm9vbCBFbmNvZGVyOjpoYXNBdHRhY2htZW50cygpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFtX2F0dGFjaG1lbnRzLmlzRW1wdHkoKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKaW5kZXggMzY3OGQ0ZmFlMjkx
NTJkOTkwZjRkM2E0ZjBiN2UwYWY2Y2Y3NDcyYi4uZWZjOTZkNzQ4MjIzOTUyOTVjYjU5OWQ2YWQ2
YTk1OTQxMDlmYWE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5j
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2luY2x1ZGUgIlN0cmluZ1Jl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVJdGVtLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC05OSw3ICsxMDAsMjQgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNJUENFbmNvZGVyID0gdHJ1ZTsKIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGVu
Y29kZU9iamVjdChjb25zdCBUJiBvYmplY3QpCisgICAgeworICAgICAgICBFbmNvZGVyIGVuY29k
ZXIoQ29uc3RydWN0V2l0aG91dEhlYWRlcik7CisgICAgICAgIGVuY29kZXIgPDwgb2JqZWN0Owor
CisgICAgICAgIGlmIChlbmNvZGVyLmhhc0F0dGFjaG1lbnRzKCkpIHsKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rl
ci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIH0KKwogcHJpdmF0ZToKKyAg
ICBlbnVtIENvbnN0cnVjdFdpdGhvdXRIZWFkZXJUYWcgeyBDb25zdHJ1Y3RXaXRob3V0SGVhZGVy
IH07CisgICAgRW5jb2RlcihDb25zdHJ1Y3RXaXRob3V0SGVhZGVyVGFnKTsKKwogICAgIHVpbnQ4
X3QqIGdyb3coc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KTsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0
cj4KQEAgLTEwOSw2ICsxMjcsOCBAQCBwcml2YXRlOgogICAgICAgICBlbmNvZGUoV1RGOjplbnVt
VG9VbmRlcmx5aW5nVHlwZTxFPihlbnVtVmFsdWUpKTsKICAgICB9CiAKKyAgICBib29sIGhhc0F0
dGFjaG1lbnRzKCkgY29uc3Q7CisKICAgICB2b2lkIGVuY29kZUhlYWRlcigpOwogICAgIGNvbnN0
IE9wdGlvblNldDxNZXNzYWdlRmxhZ3M+JiBtZXNzYWdlRmxhZ3MoKSBjb25zdDsKICAgICBPcHRp
b25TZXQ8TWVzc2FnZUZsYWdzPiYgbWVzc2FnZUZsYWdzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413069</attachid>
            <date>2020-11-03 10:02:46 -0800</date>
            <delta_ts>2020-11-03 10:02:46 -0800</delta_ts>
            <desc>For landing</desc>
            <filename>bug-218516-20201103100245.patch</filename>
            <type>text/plain</type>
            <size>5992</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkxNTdiNzA4NWU0MmE4Yzk0
N2Q1YTVlNmE5OWNhZDI2ZjMzMDkzYTkuLmZlMTU0NDI0MzljZWI2MGExMzQ4OTYzNGU3MTMzODRl
Njg1YmNlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMTEtMDMgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGhlbHBlciBtZXRo
b2RzIHRvIGVuY29kZSBhbmQgZGVjb2RlIElQQyBhcmd1bWVudHMgYXMgcmF3IGRhdGEKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODUxNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIEFkZCBuZXcgaGVscGVyIG1l
dGhvZHMgdG8gYElQQzo6RW5jb2RlcmAgYW5kIGBJUEM6OkRlY29kZXJgIHRoYXQgY2FuIGJlIHVz
ZWQgdG8gY29udmVydCBhbnl0aGluZyB0aGF0IGNhbiBiZQorICAgICAgICBzZW50IGFzIGFuIElQ
QyBhcmd1bWVudCBpbnRvIHJhdyBieXRlcyAoaS5lLiB1c2luZyBgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyYCksIGFzIGxvbmcgYXMgdGhlcmUgYXJlIG5vIElQQworICAgICAgICBhdHRhY2htZW50cyBp
biB0aGUgZW5jb2RlZCBkYXRhLgorCisgICAgICAgIEZvciBtb3JlIGRldGFpbHMsIHNlZSA8d2Vi
a2l0Lm9yZy9iLzIxODQwNj4uCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHA6
CisgICAgICAgIChJUEM6OkRlY29kZXI6OkRlY29kZXIpOgorCisgICAgICAgIEFkZCBwcml2YXRl
IHZlcnNpb25zIG9mIHRoZSBFbmNvZGVyIGFuZCBEZWNvZGVyIGNvbnN0cnVjdG9ycyB0aGF0IGF2
b2lkIElQQyBoZWFkZXIgZGF0YS4gVGhlc2UgY29uc3RydWN0b3JzIGFyZQorICAgICAgICBjYWxs
ZWQgb25seSBmcm9tIHdpdGhpbiBgZW5jb2RlT2JqZWN0YCBhbmQgYGRlY29kZU9iamVjdGAsIHJl
c3BlY3RpdmVseS4KKworICAgICAgICAoSVBDOjptX2J1ZmZlckRlYWxsb2NhdG9yKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5oOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNv
ZGVPYmplY3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcDoKKyAgICAgICAg
KElQQzo6RW5jb2Rlcjo6RW5jb2Rlcik6CisgICAgICAgIChJUEM6OkVuY29kZXI6OnJlbGVhc2VB
dHRhY2htZW50cyk6CisgICAgICAgIChJUEM6OkVuY29kZXI6Omhhc0F0dGFjaG1lbnRzIGNvbnN0
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5oOgorCiAyMDIwLTEwLTMwICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1vdmUg
SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyIHRvIFdlYkNvcmUsIGNsZWFuIHVwIHVzZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggNWNhMjEyN2EzNDZjZDJh
NDY5Y2EyOTdmNGFiMTM5MDJmNmEwNmY4YS4uNTFiOWZmZDkzMDM0MGJkZmYyZmI3MWQwZTQ2Y2Fj
ZjQwOTM0NjUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKQEAgLTc0
LDYgKzc0LDE2IEBAIERlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXpl
X3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2NhCiAgICAgICAgIHJldHVybjsKIH0K
IAorRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJT
aXplLCBDb25zdHJ1Y3RXaXRob3V0SGVhZGVyVGFnKQorICAgIDogbV9idWZmZXIgeyBidWZmZXIg
fQorICAgICwgbV9idWZmZXJQb3MgeyBtX2J1ZmZlciB9CisgICAgLCBtX2J1ZmZlckVuZCB7IG1f
YnVmZmVyICsgYnVmZmVyU2l6ZSB9CisgICAgLCBtX2J1ZmZlckRlYWxsb2NhdG9yKFtdIChjb25z
dCB1aW50OF90Kiwgc2l6ZV90KSB7IH0pCit7CisgICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90PihtX2J1ZmZlcikgJSBhbGlnbm9mKHVpbnQ2NF90KSkKKyAgICAgICAgbWFya0ludmFs
aWQoKTsKK30KKwogRGVjb2Rlcjo6fkRlY29kZXIoKQogewogICAgIEFTU0VSVChtX2J1ZmZlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggM2RkMjQ2OTZlZjZjYTdkYzk3
ZDAxM2EwZmU4NzVkN2JkNDdkZTMwYS4uYTAzZWJiMWIyODM3ZWY2YTM4NzNhMTE1YzRkYmUwZmM1
OGNkOTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2luY2x1ZGUgIlN0cmluZ1JlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVJdGVtLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0xNzMsNyArMTc0LDIyIEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBjb25zdCBib29sIGlzSVBDRGVjb2RlciA9IHRydWU7CiAKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KKyAgICBzdGF0aWMgT3B0aW9uYWw8VD4gZGVjb2RlT2JqZWN0KGNvbnN0IHVpbnQ4
X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpCisgICAgeworICAgICAgICBPcHRpb25hbDxU
PiByZXN1bHQ7CisgICAgICAgIERlY29kZXIgZGVjb2RlcihidWZmZXIsIGJ1ZmZlclNpemUsIENv
bnN0cnVjdFdpdGhvdXRIZWFkZXIpOworICAgICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBkZWNvZGVyID4+IHJl
c3VsdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKIHByaXZhdGU6CisgICAgZW51
bSBDb25zdHJ1Y3RXaXRob3V0SGVhZGVyVGFnIHsgQ29uc3RydWN0V2l0aG91dEhlYWRlciB9Owor
ICAgIERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgQ29u
c3RydWN0V2l0aG91dEhlYWRlclRhZyk7CisKICAgICBib29sIGFsaWduQnVmZmVyUG9zaXRpb24o
c2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KTsKICAgICBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hU
b0NvbnRhaW4oc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9FbmNvZGVyLmNwcAppbmRleCA4N2ZlOTU1NTJhYzYwNTJkYmNkNzZlNDkwZDRh
YjZhNjYyZWM4YWQ0Li5mZDQwOTA3NzRiMmJjMmE3NjI5YjljMDJkYzU1NGM0Y2RjOThmNWNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcApAQCAtNzIsNiArNzIsMTYgQEAg
RW5jb2Rlcjo6RW5jb2RlcihNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCkKICAgICBlbmNvZGVIZWFkZXIoKTsKIH0KIAorRW5jb2Rlcjo6RW5jb2RlcihDb25z
dHJ1Y3RXaXRob3V0SGVhZGVyVGFnKQorICAgIDogbV9tZXNzYWdlTmFtZSgpCisgICAgLCBtX2Rl
c3RpbmF0aW9uSUQoMCkKKyAgICAsIG1fYnVmZmVyKG1faW5saW5lQnVmZmVyKQorICAgICwgbV9i
dWZmZXJQb2ludGVyKG1faW5saW5lQnVmZmVyKQorICAgICwgbV9idWZmZXJTaXplKDApCisgICAg
LCBtX2J1ZmZlckNhcGFjaXR5KHNpemVvZihtX2lubGluZUJ1ZmZlcikpCit7Cit9CisKIEVuY29k
ZXI6On5FbmNvZGVyKCkKIHsKICAgICBpZiAobV9idWZmZXIgIT0gbV9pbmxpbmVCdWZmZXIpCkBA
IC0yMTksNyArMjI5LDEyIEBAIHZvaWQgRW5jb2Rlcjo6YWRkQXR0YWNobWVudChBdHRhY2htZW50
JiYgYXR0YWNobWVudCkKIAogVmVjdG9yPEF0dGFjaG1lbnQ+IEVuY29kZXI6OnJlbGVhc2VBdHRh
Y2htZW50cygpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9hdHRhY2htZW50cyk7CisgICAgcmV0
dXJuIHN0ZDo6ZXhjaGFuZ2UobV9hdHRhY2htZW50cywgeyB9KTsKK30KKworYm9vbCBFbmNvZGVy
OjpoYXNBdHRhY2htZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2F0dGFjaG1lbnRzLmlz
RW1wdHkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9F
bmNvZGVyLmgKaW5kZXggMzY3OGQ0ZmFlMjkxNTJkOTkwZjRkM2E0ZjBiN2UwYWY2Y2Y3NDcyYi4u
ZWZjOTZkNzQ4MjIzOTUyOTVjYjU5OWQ2YWQ2YTk1OTQxMDlmYWE5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0VuY29kZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VO
YW1lcy5oIgogI2luY2x1ZGUgIlN0cmluZ1JlZmVyZW5jZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Q29udGV4dE1lbnVJdGVtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNp
bmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC05
OSw3ICsxMDAsMjQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNJUENFbmNv
ZGVyID0gdHJ1ZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGVuY29kZU9iamVjdChjb25zdCBUJiBvYmplY3QpCisg
ICAgeworICAgICAgICBFbmNvZGVyIGVuY29kZXIoQ29uc3RydWN0V2l0aG91dEhlYWRlcik7Cisg
ICAgICAgIGVuY29kZXIgPDwgb2JqZWN0OworCisgICAgICAgIGlmIChlbmNvZGVyLmhhc0F0dGFj
aG1lbnRzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXpl
KCkpOworICAgIH0KKwogcHJpdmF0ZToKKyAgICBlbnVtIENvbnN0cnVjdFdpdGhvdXRIZWFkZXJU
YWcgeyBDb25zdHJ1Y3RXaXRob3V0SGVhZGVyIH07CisgICAgRW5jb2RlcihDb25zdHJ1Y3RXaXRo
b3V0SGVhZGVyVGFnKTsKKwogICAgIHVpbnQ4X3QqIGdyb3coc2l6ZV90IGFsaWdubWVudCwgc2l6
ZV90KTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KQEAgLTEwOSw2ICsxMjcsOCBAQCBwcml2YXRl
OgogICAgICAgICBlbmNvZGUoV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZTxFPihlbnVtVmFsdWUp
KTsKICAgICB9CiAKKyAgICBib29sIGhhc0F0dGFjaG1lbnRzKCkgY29uc3Q7CisKICAgICB2b2lk
IGVuY29kZUhlYWRlcigpOwogICAgIGNvbnN0IE9wdGlvblNldDxNZXNzYWdlRmxhZ3M+JiBtZXNz
YWdlRmxhZ3MoKSBjb25zdDsKICAgICBPcHRpb25TZXQ8TWVzc2FnZUZsYWdzPiYgbWVzc2FnZUZs
YWdzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413081</attachid>
            <date>2020-11-03 11:27:47 -0800</date>
            <delta_ts>2020-11-03 12:20:43 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-218516-20201103112746.patch</filename>
            <type>text/plain</type>
            <size>6017</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDczOTBlMjk0YzdkMTFiNzc3
MGYzNmY5YzhhNTU3NTUwNTVkODlmMjMuLmU4YTZkZDZmYmU2NTM4YTExMDBhMzk5NjAxOGQ5MDBj
YmI4MTU0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMTEtMDMgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGhlbHBlciBtZXRo
b2RzIHRvIGVuY29kZSBhbmQgZGVjb2RlIElQQyBhcmd1bWVudHMgYXMgcmF3IGRhdGEKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODUxNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIEFkZCBuZXcgaGVscGVyIG1l
dGhvZHMgdG8gYElQQzo6RW5jb2RlcmAgYW5kIGBJUEM6OkRlY29kZXJgIHRoYXQgY2FuIGJlIHVz
ZWQgdG8gY29udmVydCBhbnl0aGluZyB0aGF0IGNhbiBiZQorICAgICAgICBzZW50IGFzIGFuIElQ
QyBhcmd1bWVudCBpbnRvIHJhdyBieXRlcyAoaS5lLiB1c2luZyBgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyYCksIGFzIGxvbmcgYXMgdGhlcmUgYXJlIG5vIElQQworICAgICAgICBhdHRhY2htZW50cyBp
biB0aGUgZW5jb2RlZCBkYXRhLgorCisgICAgICAgIEZvciBtb3JlIGRldGFpbHMsIHNlZSA8d2Vi
a2l0Lm9yZy9iLzIxODQwNj4uCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHA6
CisgICAgICAgIChJUEM6OkRlY29kZXI6OkRlY29kZXIpOgorCisgICAgICAgIEFkZCBwcml2YXRl
IHZlcnNpb25zIG9mIHRoZSBFbmNvZGVyIGFuZCBEZWNvZGVyIGNvbnN0cnVjdG9ycyB0aGF0IGF2
b2lkIElQQyBoZWFkZXIgZGF0YS4gVGhlc2UgY29uc3RydWN0b3JzIGFyZQorICAgICAgICBjYWxs
ZWQgb25seSBmcm9tIHdpdGhpbiBgZW5jb2RlU2luZ2xlT2JqZWN0YCBhbmQgYGRlY29kZVNpbmds
ZU9iamVjdGAsIHJlc3BlY3RpdmVseS4KKworICAgICAgICAoSVBDOjptX2J1ZmZlckRlYWxsb2Nh
dG9yKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5oOgorICAgICAgICAoSVBDOjpE
ZWNvZGVyOjpkZWNvZGVTaW5nbGVPYmplY3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9FbmNv
ZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RW5jb2Rlcjo6RW5jb2Rlcik6CisgICAgICAgIChJUEM6
OkVuY29kZXI6OnJlbGVhc2VBdHRhY2htZW50cyk6CisgICAgICAgIChJUEM6OkVuY29kZXI6Omhh
c0F0dGFjaG1lbnRzIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5oOgor
CiAyMDIwLTExLTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlcGxhY2UgRGlzcGxheUxpc3Q6Oml0ZW1Db3VudCB3aXRoIERpc3BsYXlMaXN0Ojpp
c0VtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCmluZGV4IDVjYTIxMjdh
MzQ2Y2QyYTQ2OWNhMjk3ZjRhYjEzOTAyZjZhMDZmOGEuLjUxYjlmZmQ5MzAzNDBiZGZmMmZiNzFk
MGU0NmNhY2Y0MDkzNDY1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
CkBAIC03NCw2ICs3NCwxNiBAQCBEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZl
ciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYQogICAgICAgICByZXR1
cm47CiB9CiAKK0RlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgQ29uc3RydWN0V2l0aG91dEhlYWRlclRhZykKKyAgICA6IG1fYnVmZmVyIHsg
YnVmZmVyIH0KKyAgICAsIG1fYnVmZmVyUG9zIHsgbV9idWZmZXIgfQorICAgICwgbV9idWZmZXJF
bmQgeyBtX2J1ZmZlciArIGJ1ZmZlclNpemUgfQorICAgICwgbV9idWZmZXJEZWFsbG9jYXRvcihb
XSAoY29uc3QgdWludDhfdCosIHNpemVfdCkgeyB9KQoreworICAgIGlmIChyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4obV9idWZmZXIpICUgYWxpZ25vZih1aW50NjRfdCkpCisgICAgICAgIG1h
cmtJbnZhbGlkKCk7Cit9CisKIERlY29kZXI6On5EZWNvZGVyKCkKIHsKICAgICBBU1NFUlQobV9i
dWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4IDNkZDI0Njk2ZWY2
Y2E3ZGM5N2QwMTNhMGZlODc1ZDdiZDQ3ZGUzMGEuLmIwY2FiZWViYjg2OTgyZGI1ZmEzY2E2MDc5
YThlMjMzZGZjZDgxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rl
Y29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKICNpbmNsdWRlICJTdHJpbmdS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51SXRlbS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMTczLDcgKzE3NCwyMiBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0lQQ0RlY29kZXIgPSB0cnVlOwogCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIE9wdGlvbmFsPFQ+IGRlY29kZVNpbmdsZU9iamVj
dChjb25zdCB1aW50OF90KiBzb3VyY2UsIHNpemVfdCBudW1iZXJPZkJ5dGVzKQorICAgIHsKKyAg
ICAgICAgT3B0aW9uYWw8VD4gcmVzdWx0OworICAgICAgICBEZWNvZGVyIGRlY29kZXIoc291cmNl
LCBudW1iZXJPZkJ5dGVzLCBDb25zdHJ1Y3RXaXRob3V0SGVhZGVyKTsKKyAgICAgICAgaWYgKCFk
ZWNvZGVyLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgZGVjb2RlciA+PiByZXN1bHQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
CiBwcml2YXRlOgorICAgIGVudW0gQ29uc3RydWN0V2l0aG91dEhlYWRlclRhZyB7IENvbnN0cnVj
dFdpdGhvdXRIZWFkZXIgfTsKKyAgICBEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6
ZV90IGJ1ZmZlclNpemUsIENvbnN0cnVjdFdpdGhvdXRIZWFkZXJUYWcpOworCiAgICAgYm9vbCBh
bGlnbkJ1ZmZlclBvc2l0aW9uKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCk7CiAgICAgYm9vbCBi
dWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKaW5kZXggODdmZTk1NTUy
YWM2MDUyZGJjZDc2ZTQ5MGQ0YWI2YTY2MmVjOGFkNC4uZmQ0MDkwNzc0YjJiYzJhNzYyOWI5YzAy
ZGM1NTRjNGNkYzk4ZjVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAK
QEAgLTcyLDYgKzcyLDE2IEBAIEVuY29kZXI6OkVuY29kZXIoTWVzc2FnZU5hbWUgbWVzc2FnZU5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCiAgICAgZW5jb2RlSGVhZGVyKCk7CiB9CiAKK0Vu
Y29kZXI6OkVuY29kZXIoQ29uc3RydWN0V2l0aG91dEhlYWRlclRhZykKKyAgICA6IG1fbWVzc2Fn
ZU5hbWUoKQorICAgICwgbV9kZXN0aW5hdGlvbklEKDApCisgICAgLCBtX2J1ZmZlcihtX2lubGlu
ZUJ1ZmZlcikKKyAgICAsIG1fYnVmZmVyUG9pbnRlcihtX2lubGluZUJ1ZmZlcikKKyAgICAsIG1f
YnVmZmVyU2l6ZSgwKQorICAgICwgbV9idWZmZXJDYXBhY2l0eShzaXplb2YobV9pbmxpbmVCdWZm
ZXIpKQoreworfQorCiBFbmNvZGVyOjp+RW5jb2RlcigpCiB7CiAgICAgaWYgKG1fYnVmZmVyICE9
IG1faW5saW5lQnVmZmVyKQpAQCAtMjE5LDcgKzIyOSwxMiBAQCB2b2lkIEVuY29kZXI6OmFkZEF0
dGFjaG1lbnQoQXR0YWNobWVudCYmIGF0dGFjaG1lbnQpCiAKIFZlY3RvcjxBdHRhY2htZW50PiBF
bmNvZGVyOjpyZWxlYXNlQXR0YWNobWVudHMoKQogewotICAgIHJldHVybiBXVEZNb3ZlKG1fYXR0
YWNobWVudHMpOworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fYXR0YWNobWVudHMsIHsgfSk7
Cit9CisKK2Jvb2wgRW5jb2Rlcjo6aGFzQXR0YWNobWVudHMoKSBjb25zdAoreworICAgIHJldHVy
biAhbV9hdHRhY2htZW50cy5pc0VtcHR5KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCmluZGV4IDM2NzhkNGZhZTI5MTUyZDk5MGY0ZDNh
NGYwYjdlMGFmNmNmNzQ3MmIuLjBlY2Y1NDFmNzc4NTg1MzZmMWZjZmE4MzZiNzZmMjQ4MmU0Yzlh
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51SXRlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIApAQCAtOTksNyArMTAwLDI0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBj
b25zdCBib29sIGlzSVBDRW5jb2RlciA9IHRydWU7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBlbmNvZGVTaW5nbGVP
YmplY3QoY29uc3QgVCYgb2JqZWN0KQorICAgIHsKKyAgICAgICAgRW5jb2RlciBlbmNvZGVyKENv
bnN0cnVjdFdpdGhvdXRIZWFkZXIpOworICAgICAgICBlbmNvZGVyIDw8IG9iamVjdDsKKworICAg
ICAgICBpZiAoZW5jb2Rlci5oYXNBdHRhY2htZW50cygpKSB7CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVm
ZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICB9CisKIHByaXZhdGU6CisgICAgZW51
bSBDb25zdHJ1Y3RXaXRob3V0SGVhZGVyVGFnIHsgQ29uc3RydWN0V2l0aG91dEhlYWRlciB9Owor
ICAgIEVuY29kZXIoQ29uc3RydWN0V2l0aG91dEhlYWRlclRhZyk7CisKICAgICB1aW50OF90KiBn
cm93KHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBF
LCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWU+KiA9IG51bGxwdHI+CkBA
IC0xMDksNiArMTI3LDggQEAgcHJpdmF0ZToKICAgICAgICAgZW5jb2RlKFdURjo6ZW51bVRvVW5k
ZXJseWluZ1R5cGU8RT4oZW51bVZhbHVlKSk7CiAgICAgfQogCisgICAgYm9vbCBoYXNBdHRhY2ht
ZW50cygpIGNvbnN0OworCiAgICAgdm9pZCBlbmNvZGVIZWFkZXIoKTsKICAgICBjb25zdCBPcHRp
b25TZXQ8TWVzc2FnZUZsYWdzPiYgbWVzc2FnZUZsYWdzKCkgY29uc3Q7CiAgICAgT3B0aW9uU2V0
PE1lc3NhZ2VGbGFncz4mIG1lc3NhZ2VGbGFncygpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>