<?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>176884</bug_id>
          
          <creation_ts>2017-09-13 17:18:29 -0700</creation_ts>
          <short_desc>WebContentReader::readWebArchive doesn&apos;t need to handle image MIME type</short_desc>
          <delta_ts>2017-09-27 12:31:39 -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>HTML Editing</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>176772</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1348581</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-13 17:18:29 -0700</bug_when>
    <thetext>Right now, WebContentReader::readWebArchive for Mac supports having image MIME type but this doesn&apos;t seem be ever used in practice.
We have an explicit code path to handle image files/content in the pasteboard as well.

Remove this code so that iOS &amp; Mac can share code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348584</commentid>
    <comment_count>1</comment_count>
      <attachid>320713</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-13 17:24:18 -0700</bug_when>
    <thetext>Created attachment 320713
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348605</commentid>
    <comment_count>2</comment_count>
      <attachid>320722</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-13 18:40:18 -0700</bug_when>
    <thetext>Created attachment 320722
Added missing includes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348643</commentid>
    <comment_count>3</comment_count>
      <attachid>320722</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-13 21:46:22 -0700</bug_when>
    <thetext>Comment on attachment 320722
Added missing includes

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

&gt; Source/WebCore/editing/WebContentReader.h:55
&gt; +#if PLATFORM(COCOA)
&gt;      void addFragment(RefPtr&lt;DocumentFragment&gt;&amp;&amp;);
&gt;  #endif

I still think this could be available to all platforms. There really isn&apos;t anything cocoa specific about it.

&gt; Source/WebCore/editing/WebContentReader.h:59
&gt;      bool readWebArchive(SharedBuffer*) override;

Perhaps this should be in a #if ENABLE(LEGACY_WEB_ARCHIVE).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348668</commentid>
    <comment_count>4</comment_count>
      <attachid>320722</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-13 23:45:13 -0700</bug_when>
    <thetext>Comment on attachment 320722
Added missing includes

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

&gt;&gt; Source/WebCore/editing/WebContentReader.h:55
&gt;&gt;  #endif
&gt; 
&gt; I still think this could be available to all platforms. There really isn&apos;t anything cocoa specific about it.

Yeah, let&apos;s just do that.

&gt;&gt; Source/WebCore/editing/WebContentReader.h:59
&gt;&gt;      bool readWebArchive(SharedBuffer*) override;
&gt; 
&gt; Perhaps this should be in a #if ENABLE(LEGACY_WEB_ARCHIVE).

Perhaps. I think Darin&apos;s intention was implementing these functions on all platforms.
I&apos;m gonna leave them alone for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348674</commentid>
    <comment_count>5</comment_count>
      <attachid>320736</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-14 00:00:40 -0700</bug_when>
    <thetext>Created attachment 320736
Refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348687</commentid>
    <comment_count>6</comment_count>
      <attachid>320742</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-14 00:48:28 -0700</bug_when>
    <thetext>Created attachment 320742
Fixed API tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348793</commentid>
    <comment_count>7</comment_count>
      <attachid>320742</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-14 09:15:53 -0700</bug_when>
    <thetext>Comment on attachment 320742
Fixed API tests

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

&gt; Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm:119
&gt; +    const String&amp; type = mainResource-&gt;mimeType();

auto?

&gt; Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm:125
&gt; +    if (DocumentLoader* loader = frame.loader().documentLoader())

auto?

&gt; Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm:128
&gt; +    String markupString = String::fromUTF8(mainResource-&gt;data().data(), mainResource-&gt;data().size());

auto?

&gt; Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm:164
&gt; +    addFragment(createFragmentFromText(context, [text precomposedStringWithCanonicalMapping]));

Should use dot notation since precomposedStringWithCanonicalMapping is a property.

&gt; Source/WebCore/editing/ios/WebContentReaderIOS.mm:102
&gt; -    auto newFragment = frame.document()-&gt;createDocumentFragment();
&gt; +    Ref&lt;DocumentFragment&gt; newFragment = frame.document()-&gt;createDocumentFragment();

Why remove the auto?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348991</commentid>
    <comment_count>8</comment_count>
      <attachid>320816</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-14 13:55:06 -0700</bug_when>
    <thetext>Created attachment 320816
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348992</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-14 13:55:10 -0700</bug_when>
    <thetext>Thanks for the review. Fixed them all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348993</commentid>
    <comment_count>10</comment_count>
      <attachid>320816</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-14 13:55:25 -0700</bug_when>
    <thetext>Comment on attachment 320816
Patch for landing

Wait for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349020</commentid>
    <comment_count>11</comment_count>
      <attachid>320826</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-14 14:33:10 -0700</bug_when>
    <thetext>Created attachment 320826
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349021</commentid>
    <comment_count>12</comment_count>
      <attachid>320826</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-14 14:33:22 -0700</bug_when>
    <thetext>Comment on attachment 320826
Patch for landing

Wait for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349035</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-14 15:10:14 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #7)
&gt; Comment on attachment 320742 [details]
&gt; Fixed API tests
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=320742&amp;action=review
&gt;
&gt; &gt; Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm:164
&gt; &gt; +    addFragment(createFragmentFromText(context, [text precomposedStringWithCanonicalMapping]));
&gt; 
&gt; Should use dot notation since precomposedStringWithCanonicalMapping is a
&gt; property.

Ugh... apparently text is a String instances. I&apos;d leave square brackets for now instead of explicitly casing it to NSString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349036</commentid>
    <comment_count>14</comment_count>
      <attachid>320830</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-14 15:11:13 -0700</bug_when>
    <thetext>Created attachment 320830
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349087</commentid>
    <comment_count>15</comment_count>
      <attachid>320830</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-14 16:43:59 -0700</bug_when>
    <thetext>Comment on attachment 320830
Patch for landing

Clearing flags on attachment: 320830

Committed r222062: &lt;http://trac.webkit.org/changeset/222062&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349088</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-14 16:44:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353448</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:31:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693428&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320713</attachid>
            <date>2017-09-13 17:24:18 -0700</date>
            <delta_ts>2017-09-13 18:40:17 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-176884-20170913172418.patch</filename>
            <type>text/plain</type>
            <size>7508</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjAwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA5LTEzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlIGRvZXNuJ3QgbmVlZCB0byBoYW5kbGUgaW1hZ2UgTUlNRSB0eXBlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY4ODQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGNv
ZGUgdG8gaGFuZGxlIGltYWdlIE1JTUUgdHlwZXMgaW4gdGhlIHdlYiBhcmNoaXZlIG9uIG1hY09T
IHNpbmNlIHdlIGhhdmUgYSBzZXBhcmF0ZSBjb2RlIHBhdGgKKyAgICAgICAgdG8gaGFuZGxlIGlt
YWdlcyBpbiB0aGUgcGFzdGVib2FyZCBkaXJlY3RseS4gQXMgZmFyIGFzIEkgY2FuIHRlbGwsIHRo
aXMgY29kZSBpcyBuZXZlciB1c2VkIGluIHByYWN0aWNlLgorCisgICAgICAgIFRoaXMgYWxsb3dz
IG1lcmdpbmcgaU9TIGFuZCBtYWNPUyBjb2RlIHRvIHJlYWQgd2ViIGFyY2hpdmUgZnJvbSB0aGUg
cGFzdGVib2FyZC4KKworICAgICAgICAqIGVkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29udGVudFJlYWRlcjo6YWRkRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL1dl
YkNvbnRlbnRSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVy
OjphZGRGcmFnbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9tYWMvV2ViQ29udGVu
dFJlYWRlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRX
ZWJBcmNoaXZlKTogRGVsZXRlZC4KKwogMjAxNy0wOS0xMyAgRGV2aW4gUm91c3NvICA8d2Via2l0
QGRldmlucm91c3NvLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBFdmVudCBMaXN0ZW5l
cnMgc2VjdGlvbiBkb2VzIG5vdCB1cGRhdGUgd2hlbiBsaXN0ZW5lcnMgYXJlIGFkZGVkL3JlbW92
ZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCShyZXZp
c2lvbiAyMjE5ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTIgKzUwLDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAg
fQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgYWRk
RnJhZ21lbnQoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYpOwogI2VuZGlmCiAKIHByaXZhdGU6
Ci0jaWYgIShQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpCisjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKICAg
ICBib29sIHJlYWRGaWxlbmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAg
ICBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwpAQCAtNzUsNSArNzUsNSBA
QCBzdHJ1Y3QgRnJhZ21lbnRBbmRSZXNvdXJjZXMgewogCiBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoRnJhbWUmLCBOU0F0dHJpYnV0ZWRTdHJp
bmcqKTsKICNlbmRpZgotICAgIAorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQkocmV2aXNpb24gMjIxOTg4
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTYzLDMzICs2Myw4MSBAQCBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gY3JlYXRlRnJhZ21lbnRBCiB7CiAgICAgaWYgKCFmcmFtZS5wYWdlKCkgfHwgIWZyYW1l
LmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAgYXV0byYg
ZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50LmlzSFRNTERv
Y3VtZW50KCkgfHwgIXN0cmluZykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAg
ICBib29sIHdhc0RlZmVycmluZ0NhbGxiYWNrcyA9IGZyYW1lLnBhZ2UoKS0+ZGVmZXJzTG9hZGlu
ZygpOwogICAgIGlmICghd2FzRGVmZXJyaW5nQ2FsbGJhY2tzKQogICAgICAgICBmcmFtZS5wYWdl
KCktPnNldERlZmVyc0xvYWRpbmcodHJ1ZSk7Ci0gICAgCisKICAgICBhdXRvJiBjYWNoZWRSZXNv
dXJjZUxvYWRlciA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiAgICAgYm9vbCB3
YXNJbWFnZXNFbmFibGVkID0gY2FjaGVkUmVzb3VyY2VMb2FkZXIuaW1hZ2VzRW5hYmxlZCgpOwog
ICAgIGlmICh3YXNJbWFnZXNFbmFibGVkKQogICAgICAgICBjYWNoZWRSZXNvdXJjZUxvYWRlci5z
ZXRJbWFnZXNFbmFibGVkKGZhbHNlKTsKLSAgICAKKwogICAgIGF1dG8gZnJhZ21lbnRBbmRSZXNv
dXJjZXMgPSBjcmVhdGVGcmFnbWVudChmcmFtZSwgc3RyaW5nKTsKLSAgICAKICAgICBpZiAoYXV0
byogbG9hZGVyID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkgewogICAgICAgICBm
b3IgKGF1dG8mIHJlc291cmNlIDogZnJhZ21lbnRBbmRSZXNvdXJjZXMucmVzb3VyY2VzKQogICAg
ICAgICAgICAgbG9hZGVyLT5hZGRBcmNoaXZlUmVzb3VyY2UoV1RGTW92ZShyZXNvdXJjZSkpOwog
ICAgIH0KLSAgICAKKwogICAgIGlmICh3YXNJbWFnZXNFbmFibGVkKQogICAgICAgICBjYWNoZWRS
ZXNvdXJjZUxvYWRlci5zZXRJbWFnZXNFbmFibGVkKHRydWUpOwogICAgIGlmICghd2FzRGVmZXJy
aW5nQ2FsbGJhY2tzKQogICAgICAgICBmcmFtZS5wYWdlKCktPnNldERlZmVyc0xvYWRpbmcoZmFs
c2UpOwotICAgIAorCiAgICAgcmV0dXJuIFdURk1vdmUoZnJhZ21lbnRBbmRSZXNvdXJjZXMuZnJh
Z21lbnQpOwogfQogCit2b2lkIFdlYkNvbnRlbnRSZWFkZXI6OmFkZEZyYWdtZW50KFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiYmIG5ld0ZyYWdtZW50KQoreworICAgIGlmICghbmV3RnJhZ21lbnQp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZnJhZ21lbnQpIHsKKyAgICAgICAgZnJhZ21l
bnQgPSBXVEZNb3ZlKG5ld0ZyYWdtZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHdoaWxlIChhdXRvKiBmaXJzdENoaWxkID0gbmV3RnJhZ21lbnQtPmZpcnN0Q2hpbGQoKSkgewor
ICAgICAgICBpZiAoZnJhZ21lbnQtPmFwcGVuZENoaWxkKCpmaXJzdENoaWxkKS5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKworYm9vbCBXZWJDb250ZW50UmVh
ZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBpZiAoZnJh
bWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRv
IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksICpidWZmZXIpOworICAg
IGlmICghYXJjaGl2ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gbWFpblJlc291cmNlID0gYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7CisgICAg
aWYgKCFtYWluUmVzb3VyY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IFN0
cmluZyYgdHlwZSA9IG1haW5SZXNvdXJjZS0+bWltZVR5cGUoKTsKKworICAgIGlmICghZnJhbWUu
bG9hZGVyKCkuY2xpZW50KCkuY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogVGhlIGNvZGUgaW4gY3JlYXRlRnJhZ21lbnRB
bmRBZGRSZXNvdXJjZXMgY2FsbHMgc2V0RGVmZXJzTG9hZGluZyh0cnVlKS4gRG9uJ3Qgd2UgbmVl
ZCB0aGF0IGhlcmU/CisgICAgaWYgKERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS5sb2Fk
ZXIoKS5kb2N1bWVudExvYWRlcigpKQorICAgICAgICBsb2FkZXItPmFkZEFsbEFyY2hpdmVSZXNv
dXJjZXMoKmFyY2hpdmUpOworCisgICAgU3RyaW5nIG1hcmt1cFN0cmluZyA9IFN0cmluZzo6ZnJv
bVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5z
aXplKCkpOworICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgbWFya3VwU3RyaW5nLCBtYWluUmVzb3VyY2UtPnVybCgpLCBEaXNhbGxvd1Nj
cmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpKTsKKyAgICByZXR1cm4gZnJhZ21lbnQ7Cit9CisKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL1dlYkNvbnRlbnRSZWFkZXJJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvV2ViQ29udGVudFJlYWRl
cklPUy5tbQkocmV2aXNpb24gMjIxOTg4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
V2ViQ29udGVudFJlYWRlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTAsMjIgKzUwLDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFdlYkNvbnRlbnRSZWFkZXI6OmFkZEZyYWdt
ZW50KFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIG5ld0ZyYWdtZW50KQotewotICAgIGlmICgh
bmV3RnJhZ21lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghZnJhZ21lbnQpIHsKLSAg
ICAgICAgZnJhZ21lbnQgPSBXVEZNb3ZlKG5ld0ZyYWdtZW50KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIHdoaWxlIChhdXRvKiBmaXJzdENoaWxkID0gbmV3RnJhZ21lbnQtPmZpcnN0
Q2hpbGQoKSkgewotICAgICAgICBpZiAoZnJhZ21lbnQtPmFwcGVuZENoaWxkKCpmaXJzdENoaWxk
KS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQogYm9vbCBX
ZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsK
ICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9XZWJDb250ZW50UmVhZGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL1dlYkNvbnRlbnRSZWFkZXJNYWMubW0JKHJldmlzaW9uIDIyMTk4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1dlYkNvbnRlbnRSZWFkZXJNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQ4LDQ1ICs0OCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9v
bCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikK
LXsKLSAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCks
ICpidWZmZXIpOwotICAgIGlmICghYXJjaGl2ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gbWFpblJlc291cmNlID0gYXJjaGl2ZS0+bWFpblJl
c291cmNlKCk7Ci0gICAgaWYgKCFtYWluUmVzb3VyY2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGNvbnN0IFN0cmluZyYgdHlwZSA9IG1haW5SZXNvdXJjZS0+bWltZVR5cGUoKTsKLQot
ICAgIGlmIChmcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5TaG93TUlNRVR5cGVBc0hUTUwodHlw
ZSkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoZSBjb2RlIGluIGNyZWF0ZUZyYWdtZW50QW5kQWRk
UmVzb3VyY2VzIGNhbGxzIHNldERlZmVyc0xvYWRpbmcodHJ1ZSkuIERvbid0IHdlIG5lZWQgdGhh
dCBoZXJlPwotICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1lLmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgICAgICBsb2FkZXItPmFkZEFsbEFyY2hpdmVS
ZXNvdXJjZXMoKmFyY2hpdmUpOwotCi0gICAgICAgIFN0cmluZyBtYXJrdXBTdHJpbmcgPSBTdHJp
bmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5k
YXRhKCkuc2l6ZSgpKTsKLSAgICAgICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJr
dXAoKmZyYW1lLmRvY3VtZW50KCksIG1hcmt1cFN0cmluZywgbWFpblJlc291cmNlLT51cmwoKSwg
RGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZSh0eXBlKSkgewotICAgICAgICBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VS
ZXNvdXJjZUFuZEFkZFJlc291cmNlKGZyYW1lLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwo
KSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQogYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZW5hbWVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXRocykKIHsKICAgICBpZiAocGF0aHMuaXNFbXB0eSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320722</attachid>
            <date>2017-09-13 18:40:18 -0700</date>
            <delta_ts>2017-09-14 00:00:38 -0700</delta_ts>
            <desc>Added missing includes</desc>
            <filename>bug-176884-20170913184018.patch</filename>
            <type>text/plain</type>
            <size>7810</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjAwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA5LTEzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlIGRvZXNuJ3QgbmVlZCB0byBoYW5kbGUgaW1hZ2UgTUlNRSB0eXBlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY4ODQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGNv
ZGUgdG8gaGFuZGxlIGltYWdlIE1JTUUgdHlwZXMgaW4gdGhlIHdlYiBhcmNoaXZlIG9uIG1hY09T
IHNpbmNlIHdlIGhhdmUgYSBzZXBhcmF0ZSBjb2RlIHBhdGgKKyAgICAgICAgdG8gaGFuZGxlIGlt
YWdlcyBpbiB0aGUgcGFzdGVib2FyZCBkaXJlY3RseS4gQXMgZmFyIGFzIEkgY2FuIHRlbGwsIHRo
aXMgY29kZSBpcyBuZXZlciB1c2VkIGluIHByYWN0aWNlLgorCisgICAgICAgIFRoaXMgYWxsb3dz
IG1lcmdpbmcgaU9TIGFuZCBtYWNPUyBjb2RlIHRvIHJlYWQgd2ViIGFyY2hpdmUgZnJvbSB0aGUg
cGFzdGVib2FyZC4KKworICAgICAgICAqIGVkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29udGVudFJlYWRlcjo6YWRkRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL1dl
YkNvbnRlbnRSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVy
OjphZGRGcmFnbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9tYWMvV2ViQ29udGVu
dFJlYWRlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRX
ZWJBcmNoaXZlKTogRGVsZXRlZC4KKwogMjAxNy0wOS0xMyAgRGV2aW4gUm91c3NvICA8d2Via2l0
QGRldmlucm91c3NvLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBFdmVudCBMaXN0ZW5l
cnMgc2VjdGlvbiBkb2VzIG5vdCB1cGRhdGUgd2hlbiBsaXN0ZW5lcnMgYXJlIGFkZGVkL3JlbW92
ZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCShyZXZp
c2lvbiAyMjE5ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTIgKzUwLDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAg
fQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgYWRk
RnJhZ21lbnQoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYpOwogI2VuZGlmCiAKIHByaXZhdGU6
Ci0jaWYgIShQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpCisjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKICAg
ICBib29sIHJlYWRGaWxlbmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAg
ICBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwpAQCAtNzUsNSArNzUsNSBA
QCBzdHJ1Y3QgRnJhZ21lbnRBbmRSZXNvdXJjZXMgewogCiBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoRnJhbWUmLCBOU0F0dHJpYnV0ZWRTdHJp
bmcqKTsKICNlbmRpZgotICAgIAorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQkocmV2aXNpb24gMjIxOTg4
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDEyIEBACiAjaW5jbHVkZSAiRG9jdW1lbnRM
b2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisj
aW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50
LmgiCisjaW5jbHVkZSAiTGVnYWN5V2ViQXJjaGl2ZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHd0Zi9T
b2Z0TGlua2luZy5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNjMsMzMgKzY3LDgxIEBAIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEEKIHsKICAgICBpZiAoIWZyYW1l
LnBhZ2UoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgCisKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwogICAgIGlmICgh
ZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSB8fCAhc3RyaW5nKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAKKwogICAgIGJvb2wgd2FzRGVmZXJyaW5nQ2FsbGJhY2tzID0gZnJhbWUucGFn
ZSgpLT5kZWZlcnNMb2FkaW5nKCk7CiAgICAgaWYgKCF3YXNEZWZlcnJpbmdDYWxsYmFja3MpCiAg
ICAgICAgIGZyYW1lLnBhZ2UoKS0+c2V0RGVmZXJzTG9hZGluZyh0cnVlKTsKLSAgICAKKwogICAg
IGF1dG8mIGNhY2hlZFJlc291cmNlTG9hZGVyID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKTsKICAgICBib29sIHdhc0ltYWdlc0VuYWJsZWQgPSBjYWNoZWRSZXNvdXJjZUxvYWRlci5p
bWFnZXNFbmFibGVkKCk7CiAgICAgaWYgKHdhc0ltYWdlc0VuYWJsZWQpCiAgICAgICAgIGNhY2hl
ZFJlc291cmNlTG9hZGVyLnNldEltYWdlc0VuYWJsZWQoZmFsc2UpOwotICAgIAorCiAgICAgYXV0
byBmcmFnbWVudEFuZFJlc291cmNlcyA9IGNyZWF0ZUZyYWdtZW50KGZyYW1lLCBzdHJpbmcpOwot
ICAgIAogICAgIGlmIChhdXRvKiBsb2FkZXIgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpKSB7CiAgICAgICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291cmNl
cy5yZXNvdXJjZXMpCiAgICAgICAgICAgICBsb2FkZXItPmFkZEFyY2hpdmVSZXNvdXJjZShXVEZN
b3ZlKHJlc291cmNlKSk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHdhc0ltYWdlc0VuYWJsZWQp
CiAgICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLnNldEltYWdlc0VuYWJsZWQodHJ1ZSk7CiAg
ICAgaWYgKCF3YXNEZWZlcnJpbmdDYWxsYmFja3MpCiAgICAgICAgIGZyYW1lLnBhZ2UoKS0+c2V0
RGVmZXJzTG9hZGluZyhmYWxzZSk7Ci0gICAgCisKICAgICByZXR1cm4gV1RGTW92ZShmcmFnbWVu
dEFuZFJlc291cmNlcy5mcmFnbWVudCk7CiB9CiAKK3ZvaWQgV2ViQ29udGVudFJlYWRlcjo6YWRk
RnJhZ21lbnQoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgbmV3RnJhZ21lbnQpCit7CisgICAg
aWYgKCFuZXdGcmFnbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFmcmFnbWVudCkg
eworICAgICAgICBmcmFnbWVudCA9IFdURk1vdmUobmV3RnJhZ21lbnQpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgd2hpbGUgKGF1dG8qIGZpcnN0Q2hpbGQgPSBuZXdGcmFnbWVudC0+
Zmlyc3RDaGlsZCgpKSB7CisgICAgICAgIGlmIChmcmFnbWVudC0+YXBwZW5kQ2hpbGQoKmZpcnN0
Q2hpbGQpLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiti
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQoreworICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShVUkwo
KSwgKmJ1ZmZlcik7CisgICAgaWYgKCFhcmNoaXZlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UgPSBhcmNoaXZlLT5tYWlu
UmVzb3VyY2UoKTsKKyAgICBpZiAoIW1haW5SZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgY29uc3QgU3RyaW5nJiB0eXBlID0gbWFpblJlc291cmNlLT5taW1lVHlwZSgpOwor
CisgICAgaWYgKCFmcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5TaG93TUlNRVR5cGVBc0hUTUwo
dHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBUaGUgY29kZSBp
biBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyBjYWxscyBzZXREZWZlcnNMb2FkaW5nKHRy
dWUpLiBEb24ndCB3ZSBuZWVkIHRoYXQgaGVyZT8KKyAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCisgICAgICAgIGxvYWRlci0+
YWRkQWxsQXJjaGl2ZVJlc291cmNlcygqYXJjaGl2ZSk7CisKKyAgICBTdHJpbmcgbWFya3VwU3Ry
aW5nID0gU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5S
ZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRG
cm9tTWFya3VwKCpmcmFtZS5kb2N1bWVudCgpLCBtYXJrdXBTdHJpbmcsIG1haW5SZXNvdXJjZS0+
dXJsKCksIERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIHJldHVybiBm
cmFnbWVudDsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvV2ViQ29u
dGVudFJlYWRlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lv
cy9XZWJDb250ZW50UmVhZGVySU9TLm1tCShyZXZpc2lvbiAyMjE5ODgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2lvcy9XZWJDb250ZW50UmVhZGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01MCwyMiArNTAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgV2ViQ29udGVu
dFJlYWRlcjo6YWRkRnJhZ21lbnQoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgbmV3RnJhZ21l
bnQpCi17Ci0gICAgaWYgKCFuZXdGcmFnbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KCFmcmFnbWVudCkgewotICAgICAgICBmcmFnbWVudCA9IFdURk1vdmUobmV3RnJhZ21lbnQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgd2hpbGUgKGF1dG8qIGZpcnN0Q2hpbGQgPSBu
ZXdGcmFnbWVudC0+Zmlyc3RDaGlsZCgpKSB7Ci0gICAgICAgIGlmIChmcmFnbWVudC0+YXBwZW5k
Q2hpbGQoKmZpcnN0Q2hpbGQpLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgfQotfQotCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1
ZmZlciogYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1dlYkNvbnRlbnRSZWFkZXJNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvV2ViQ29udGVudFJlYWRlck1hYy5tbQkocmV2
aXNpb24gMjIxOTg4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvV2ViQ29udGVudFJl
YWRlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDgsNDUgKzQ4LDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJl
ZEJ1ZmZlciogYnVmZmVyKQotewotICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVU
eXBlRm9ySW1hZ2VzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZnJhbWUu
ZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFidWZmZXIpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZShVUkwoKSwgKmJ1ZmZlcik7Ci0gICAgaWYgKCFhcmNoaXZlKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2Ug
PSBhcmNoaXZlLT5tYWluUmVzb3VyY2UoKTsKLSAgICBpZiAoIW1haW5SZXNvdXJjZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgY29uc3QgU3RyaW5nJiB0eXBlID0gbWFpblJlc291cmNl
LT5taW1lVHlwZSgpOwotCi0gICAgaWYgKGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhblNob3dN
SU1FVHlwZUFzSFRNTCh0eXBlKSkgewotICAgICAgICAvLyBGSVhNRTogVGhlIGNvZGUgaW4gY3Jl
YXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMgY2FsbHMgc2V0RGVmZXJzTG9hZGluZyh0cnVlKS4g
RG9uJ3Qgd2UgbmVlZCB0aGF0IGhlcmU/Ci0gICAgICAgIGlmIChEb2N1bWVudExvYWRlciogbG9h
ZGVyID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgICAgIGxvYWRl
ci0+YWRkQWxsQXJjaGl2ZVJlc291cmNlcygqYXJjaGl2ZSk7Ci0KLSAgICAgICAgU3RyaW5nIG1h
cmt1cFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgp
LCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOwotICAgICAgICBmcmFnbWVudCA9IGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwU3RyaW5nLCBtYWlu
UmVzb3VyY2UtPnVybCgpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNT
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlKHR5cGUpKSB7Ci0gICAgICAgIGZyYWdtZW50ID0gY3JlYXRl
RnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRkUmVzb3VyY2UoZnJhbWUsIG1haW5SZXNvdXJj
ZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGZhbHNlOwotfQotCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRGaWxlbmFtZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogewogICAgIGlmIChwYXRocy5pc0VtcHR5KCkp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320736</attachid>
            <date>2017-09-14 00:00:40 -0700</date>
            <delta_ts>2017-09-14 00:48:26 -0700</delta_ts>
            <desc>Refactoring</desc>
            <filename>bug-176884-20170914000039.patch</filename>
            <type>text/plain</type>
            <size>21900</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg0YWVjYmMzMTQyZmNj
OWExM2MwZjQzYzM0YWVjMjgzMWYxNGM3Ni4uODg3OTk3YzQ4NmIxMzJkMTRhYWNlOWI3NWE0YTdj
MjIxZTgwYzNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE3LTA5LTEzICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFdlYkNvbnRlbnRSZWFkZXI6
OnJlYWRXZWJBcmNoaXZlIGRvZXNuJ3QgbmVlZCB0byBoYW5kbGUgaW1hZ2UgTUlNRSB0eXBlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY4ODQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhl
IGNvZGUgdG8gaGFuZGxlIGltYWdlIE1JTUUgdHlwZXMgaW4gdGhlIHdlYiBhcmNoaXZlIG9uIG1h
Y09TIHNpbmNlIHdlIGhhdmUgYSBzZXBhcmF0ZSBjb2RlIHBhdGgKKyAgICAgICAgdG8gaGFuZGxl
IGltYWdlcyBpbiB0aGUgcGFzdGVib2FyZCBkaXJlY3RseS4gQXMgZmFyIGFzIEkgY2FuIHRlbGws
IHRoaXMgY29kZSBpcyBuZXZlciB1c2VkIGluIHByYWN0aWNlLgorCisgICAgICAgIFRoaXMgYWxs
b3dzIG1lcmdpbmcgaU9TIGFuZCBtYWNPUyBjb2RlIHRvIHJlYWQgd2ViIGFyY2hpdmUgZnJvbSB0
aGUgcGFzdGVib2FyZC4gQWxzbyBtZXJnZWQgbWVtYmVyIGZ1bmN0aW9ucworICAgICAgICBmb3Ig
aGFuZGxpbmcgUlRGRCBhbmQgUlRGIGluIGlPUyBhbmQgbWFjT1MgaW4gV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29udGVu
dFJlYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6
YWRkRnJhZ21lbnQpOiBNb3ZlZCBmcm9tIFdlYkNvbnRlbnRSZWFkZXJJT1MubW0gYW5kIHNpbXBs
aWZpZWQgc2luY2UgYXBwZW5kQ2hpbGQKKyAgICAgICAga25vd3MgaG93IHRvIGFkZCBhIERvY3Vt
ZW50RnJhZ21lbnQuCisgICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6CisgICAg
ICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZSk6IE1lcmdlZCBpT1MgLyBtYWNPUyBj
b2RlIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFBsYWluVGV4dCk6
IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZCk6CisgICAgICAgICogZWRpdGluZy9p
b3MvV2ViQ29udGVudFJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpy
ZWFkVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNo
aXZlKTogTW92ZWQgdG8gV2ViQ29udGVudFJlYWRlckNvY29hLm1tLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5n
L21hYy9XZWJDb250ZW50UmVhZGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
bnRlbnRSZWFkZXI6OnJlYWRSVEZEKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJDb250
ZW50UmVhZGVyOjpyZWFkUlRGKTogRGl0dG8uCisKIDIwMTctMDktMTMgIERldmluIFJvdXNzbyAg
PHdlYmtpdEBkZXZpbnJvdXNzby5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRXZlbnQg
TGlzdGVuZXJzIHNlY3Rpb24gZG9lcyBub3QgdXBkYXRlIHdoZW4gbGlzdGVuZXJzIGFyZSBhZGRl
ZC9yZW1vdmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDFjYjdlN2JkMWJhN2E3Mjk1Y2I1MjUz
NDM4NWE4NjcwYWFmMzMyNzMuLjRlNjAyZmRkYmZkODkwZDEwZGQzNmVjMjUzZjI2NTE5NmI2ODg4
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNzgxLDYgKzE3ODEsNyBAQCBzZXQoV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCiAgICAgZWRpdGluZy9W
aXNpYmxlU2VsZWN0aW9uLmNwcAogICAgIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorICAgIGVk
aXRpbmcvV2ViQ29udGVudFJlYWRlci5jcHAKICAgICBlZGl0aW5nL1dyYXBDb250ZW50c0luRHVt
bXlTcGFuQ29tbWFuZC5jcHAKICAgICBlZGl0aW5nL21hcmt1cC5jcHAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQwMDZlYmY5
MTFkZDk5NjNjZjUzMDdkYThiNWIzNzEyNjIwNGVlN2UuLmY3MDM4MTdlMzFlOWVlOGMzMzNiNTQy
MmIyNDQ0YWFkYmQ2OWJlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQzMjgsNiArNDMyOCw3IEBACiAJCTlCNTMyRUE0MUJB
OTI4NTcwMDM4QTgyNyAvKiBTbG90QXNzaWdubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1MzJFQTIxQkE5Mjg1NzAwMzhBODI3IC8qIFNsb3RB
c3NpZ25tZW50LmggKi87IH07CiAJCTlCNTVFRUU5MUIzRTg4OTgwMDUzNDJCQyAvKiBFZGl0b3JD
b2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlC
NTVFRUU4MUIzRTg4OTgwMDUzNDJCQyAvKiBFZGl0b3JDb2NvYS5tbSAqLzsgfTsKIAkJOUI1NkM5
QUExQzg5MzI5QTAwQzQ1NkRGIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNTZDOUE5MUM4OTMy
OUEwMEM0NTZERiAvKiBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAgKi87IH07CisJCTlC
NjExNjRBMUY2QTU5MzMwMEU5MjNCOCAvKiBXZWJDb250ZW50UmVhZGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNjExNjQ5MUY2QTU5MzMwMEU5
MjNCOCAvKiBXZWJDb250ZW50UmVhZGVyLmNwcCAqLzsgfTsKIAkJOUI2OUQzQjQxQjk4RkZFOTAw
RTM1MTJCIC8qIEhUTUxTbG90RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QjY5RDNCMjFCOThGRkU5MDBFMzUxMkIgLyogSFRNTFNsb3RF
bGVtZW50LmNwcCAqLzsgfTsKIAkJOUI2OUQzQjUxQjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxTbG90
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUI2OUQzQjMxQjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxTbG90RWxlbWVudC5oICovOyB9OwogCQk5
QjY5RDNCODFCOTkxMDA3MDBFMzUxMkIgLyogSlNIVE1MU2xvdEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI2OUQzQjYxQjk5MTAwNzAw
RTM1MTJCIC8qIEpTSFRNTFNsb3RFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTEyNzc5LDYgKzEyNzgw
LDcgQEAKIAkJOUI1NUVFRTgxQjNFODg5ODAwNTM0MkJDIC8qIEVkaXRvckNvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRWRpdG9yQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNTZDOUE4MUM4OTMxMjgwMEM0NTZERiAvKiBDdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjU2QzlBOTFDODkz
MjlBMDBDNDU2REYgLyogQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjYxMTY0OTFGNkE1OTMzMDBFOTIzQjgg
LyogV2ViQ29udGVudFJlYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZW50UmVh
ZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI2OUQzQjExQjk4RkYwQTAw
RTM1MTJCIC8qIEhUTUxTbG90RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRN
TFNsb3RFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI2OUQzQjIx
Qjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxTbG90RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MU2xvdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5QjY5RDNCMzFCOThGRkU5MDBFMzUxMkIgLyogSFRNTFNsb3RFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxTbG90RWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA2MzIsNiArMjA2MzQsNyBAQAogCQkJCUE4
ODNERjI2MEYzRDA0NUQwMEYxOUJGNiAvKiBWaXNpYmxlU2VsZWN0aW9uLmggKi8sCiAJCQkJOTMz
MDlEQ0UwOTlFNjQ5MTAwNTZFNTgxIC8qIFZpc2libGVVbml0cy5jcHAgKi8sCiAJCQkJOTMzMDlE
Q0YwOTlFNjQ5MTAwNTZFNTgxIC8qIFZpc2libGVVbml0cy5oICovLAorCQkJCTlCNjExNjQ5MUY2
QTU5MzMwMEU5MjNCOCAvKiBXZWJDb250ZW50UmVhZGVyLmNwcCAqLywKIAkJCQk5QkY0MzM3NjFG
Njc2MTlCMDBFMUZENzEgLyogV2ViQ29udGVudFJlYWRlci5oICovLAogCQkJCTkzMzA5REQ0MDk5
RTY0OTEwMDU2RTU4MSAvKiBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwICovLAog
CQkJCTkzMzA5REQ1MDk5RTY0OTEwMDU2RTU4MSAvKiBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNv
bW1hbmQuaCAqLywKQEAgLTM0NDczLDYgKzM0NDc2LDcgQEAKIAkJCQlDREEyOUEzMTFDQkY3NERB
MDA5MDFDQ0YgLyogV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUYzNkVBOUQxRTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUE1NkM1QjlBMTg5RjM0NTcwMDgyRDEzQyAvKiBXZWJDb25z
b2xlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOUI2MTE2NEExRjZBNTkzMzAwRTkyM0I4
IC8qIFdlYkNvbnRlbnRSZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUI5Mjk5QjIxRjY3
OTZBNDAwNjcyM0MyIC8qIFdlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTlCMDgxMTI0MUY2N0NEQzAwMDc0QkRFMiAvKiBXZWJDb250ZW50UmVhZGVySU9TLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOUI5Mjk5QUUxRjY3ODY1QjAwNjcyM0MyIC8qIFdlYkNvbnRlbnRS
ZWFkZXJNYWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvV2ViQ29udGVudFJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
bnRlbnRSZWFkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2NTlmZTRkOGI2ZWU1MTkxOTZkYjgyMWU0NDFj
ZDkyNTI0ZmQ3NjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvbnRlbnRSZWFkZXIuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJDb250ZW50UmVhZGVyLmgiCisKKyNpbmNs
dWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBX
ZWJDb250ZW50UmVhZGVyOjphZGRGcmFnbWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBuZXdG
cmFnbWVudCkKK3sKKyAgICBpZiAoIWZyYWdtZW50KQorICAgICAgICBmcmFnbWVudCA9IFdURk1v
dmUobmV3RnJhZ21lbnQpOworICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChuZXdGcmFnbWVudC5n
ZXQoKSk7Cit9CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJD
b250ZW50UmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIu
aAppbmRleCAxMWFjZTIwMzg5ZDdkYzg2NDE3ZTY0NmIxODYxYzM4YmQ4ODcyNTRkLi5kMGE4YTUy
NTRlZDFhNDg3MTZiZDM0NjJjMGQzNzM1ZTljMTc4ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvbnRlbnRSZWFkZXIuaApAQCAtNTAsMTIgKzUwLDEwIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgYWRkRnJhZ21lbnQoUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+JiYpOwotI2VuZGlmCisgICAgdm9pZCBhZGRGcmFnbWVudChSZWY8
RG9jdW1lbnRGcmFnbWVudD4mJik7CiAKIHByaXZhdGU6Ci0jaWYgIShQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKFdJTikpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCByZWFkV2ViQXJj
aGl2ZShTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRGaWxlbmFtZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRIVE1MKGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwpAQCAtNjcsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVh
ZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIH07CiAKLSNpZiBQTEFURk9STShD
T0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgZGVmaW5lZChfX09CSkNfXykKIHN0cnVjdCBG
cmFnbWVudEFuZFJlc291cmNlcyB7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdt
ZW50OwogICAgIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4gcmVzb3VyY2VzOwpAQCAtNzUs
NSArNzMsNSBAQCBzdHJ1Y3QgRnJhZ21lbnRBbmRSZXNvdXJjZXMgewogCiBSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoRnJhbWUmLCBOU0F0dHJp
YnV0ZWRTdHJpbmcqKTsKICNlbmRpZgotICAgIAorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IGZiYWVmNzFi
YTljNjdiMjkxOTkxZTQxNDVjYzg5MDhiMTcxY2RiYTguLjI1NzBiMWIzZGU3ZTJkMGEyYzFhNzM2
ZWYyMWMyZDRjMmRmOWNiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0zMyw4ICszMywxNCBAQAogI2luY2x1
ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFt
ZUxvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSFRN
TEltYWdlRWxlbWVudC5oIgorI2luY2x1ZGUgIkxlZ2FjeVdlYkFyY2hpdmUuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJOU0F0dHJpYnV0
ZWRTdHJpbmdFeHRyYXMuaCIKKyNpbmNsdWRlICJtYXJrdXAuaCIKKyNpbmNsdWRlIDxwYWwvc3Bp
L2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNjMsMzMgKzY5LDEwMiBAQCBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoRnJhbWUmIGZyYW1l
LCBOU0F0dHJpYnV0ZQogewogICAgIGlmICghZnJhbWUucGFnZSgpIHx8ICFmcmFtZS5kb2N1bWVu
dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIGF1dG8mIGRvY3VtZW50
ID0gKmZyYW1lLmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudC5pc0hUTUxEb2N1bWVudCgp
IHx8ICFzdHJpbmcpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAgYm9vbCB3
YXNEZWZlcnJpbmdDYWxsYmFja3MgPSBmcmFtZS5wYWdlKCktPmRlZmVyc0xvYWRpbmcoKTsKICAg
ICBpZiAoIXdhc0RlZmVycmluZ0NhbGxiYWNrcykKICAgICAgICAgZnJhbWUucGFnZSgpLT5zZXRE
ZWZlcnNMb2FkaW5nKHRydWUpOwotICAgIAorCiAgICAgYXV0byYgY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIgPSBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwogICAgIGJvb2wgd2FzSW1hZ2Vz
RW5hYmxlZCA9IGNhY2hlZFJlc291cmNlTG9hZGVyLmltYWdlc0VuYWJsZWQoKTsKICAgICBpZiAo
d2FzSW1hZ2VzRW5hYmxlZCkKICAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXIuc2V0SW1hZ2Vz
RW5hYmxlZChmYWxzZSk7Ci0gICAgCisKICAgICBhdXRvIGZyYWdtZW50QW5kUmVzb3VyY2VzID0g
Y3JlYXRlRnJhZ21lbnQoZnJhbWUsIHN0cmluZyk7Ci0gICAgCiAgICAgaWYgKGF1dG8qIGxvYWRl
ciA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpIHsKICAgICAgICAgZm9yIChhdXRv
JiByZXNvdXJjZSA6IGZyYWdtZW50QW5kUmVzb3VyY2VzLnJlc291cmNlcykKICAgICAgICAgICAg
IGxvYWRlci0+YWRkQXJjaGl2ZVJlc291cmNlKFdURk1vdmUocmVzb3VyY2UpKTsKICAgICB9Ci0g
ICAgCisKICAgICBpZiAod2FzSW1hZ2VzRW5hYmxlZCkKICAgICAgICAgY2FjaGVkUmVzb3VyY2VM
b2FkZXIuc2V0SW1hZ2VzRW5hYmxlZCh0cnVlKTsKICAgICBpZiAoIXdhc0RlZmVycmluZ0NhbGxi
YWNrcykKICAgICAgICAgZnJhbWUucGFnZSgpLT5zZXREZWZlcnNMb2FkaW5nKGZhbHNlKTsKLSAg
ICAKKwogICAgIHJldHVybiBXVEZNb3ZlKGZyYWdtZW50QW5kUmVzb3VyY2VzLmZyYWdtZW50KTsK
IH0KIAorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXIq
IGJ1ZmZlcikKK3sKKyAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvcklt
YWdlcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWZyYW1lLmRvY3VtZW50
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghYnVmZmVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoVVJMKCksICpidWZmZXIpOworICAgIGlmICghYXJjaGl2ZSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gbWFpblJlc291cmNlID0gYXJjaGl2
ZS0+bWFpblJlc291cmNlKCk7CisgICAgaWYgKCFtYWluUmVzb3VyY2UpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGNvbnN0IFN0cmluZyYgdHlwZSA9IG1haW5SZXNvdXJjZS0+bWltZVR5
cGUoKTsKKworICAgIGlmICghZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuY2FuU2hvd01JTUVUeXBl
QXNIVE1MKHR5cGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogVGhl
IGNvZGUgaW4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMgY2FsbHMgc2V0RGVmZXJzTG9h
ZGluZyh0cnVlKS4gRG9uJ3Qgd2UgbmVlZCB0aGF0IGhlcmU/CisgICAgaWYgKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQorICAgICAgICBs
b2FkZXItPmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKmFyY2hpdmUpOworCisgICAgU3RyaW5nIG1h
cmt1cFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgp
LCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZy
YWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwU3RyaW5nLCBtYWluUmVz
b3VyY2UtPnVybCgpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK3sKKyAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlw
ZUZvckltYWdlcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGZyYWdtZW50
ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIGFkb3B0TlMoW1tOU0F0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKS5nZXQoKSk7CisgICAgaWYgKCFmcmFnbWVu
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkZEZyYWdtZW50KGZyYWdtZW50LnJlbGVh
c2VOb25OdWxsKCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViQ29udGVudFJl
YWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBpZiAoZnJhbWUuc2V0
dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJh
bWUsIGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZl
ci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pLmdldCgp
KTsKKyAgICBpZiAoIWZyYWdtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWRkRnJh
Z21lbnQoZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4
dCkKK3sKKyAgICBpZiAoIWFsbG93UGxhaW5UZXh0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21UZXh0KGNvbnRleHQsIFt0ZXh0IHBy
ZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddKSk7CisKKyAgICBtYWRlRnJhZ21l
bnRGcm9tUGxhaW5UZXh0ID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IDNkZGQzYzM2ODE1MzUxOWU5ZDky
OGZlZDgyMjNmYjk5YzYxNDc3YjYuLjMyNTI5N2U1ZTg1NWI4MjFjYmMyNzQyZTg3MjA4M2ZiZWJj
M2UwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTIzMyw4
ICsyMzMsNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBw
YXN0ZWJvYXJkLCBib29sIGFsbG93UGxhaW5UZXh0LCBNYQogICAgICAgICBSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjbGllbnQoKS0+ZG9jdW1lbnRGcmFnbWVudEZyb21EZWxl
Z2F0ZShpKTsKICAgICAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgIHJlYWRlci5hZGRGcmFnbWVudChXVEZNb3ZlKGZyYWdtZW50KSk7CisgICAgICAg
IHJlYWRlci5hZGRGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAK
ICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSByZWFkZXIuZnJhZ21lbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9XZWJDb250ZW50UmVhZGVy
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvV2ViQ29udGVudFJlYWRlcklPUy5t
bQppbmRleCBiYzY0NjEzYjI2OGM0MDJmZjAxM2Y2MTMzMGMzNDJhMTRlZTllOTU2Li5mOWExNjBj
NDI5OTYzZjJhZWM3MDY4ODI5ZGRhOTM0OTJjYmExZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2lvcy9XZWJDb250ZW50UmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL1dlYkNvbnRlbnRSZWFkZXJJT1MubW0KQEAgLTQyLDU5ICs0MiwxMiBA
QAogI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2ltcG9ydCAiVGV4dC5oIgogI2ltcG9y
dCAiVVRJVXRpbGl0aWVzLmgiCi0jaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMu
aCIKICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmls
ZUNvcmVTZXJ2aWNlcy5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJp
bmdTUEkuaD4KICNpbXBvcnQgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBXZWJDb250ZW50UmVhZGVyOjphZGRGcmFnbWVudChSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4mJiBuZXdGcmFnbWVudCkKLXsKLSAgICBpZiAoIW5ld0ZyYWdt
ZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWZyYWdtZW50KSB7Ci0gICAgICAgIGZy
YWdtZW50ID0gV1RGTW92ZShuZXdGcmFnbWVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICB3aGlsZSAoYXV0byogZmlyc3RDaGlsZCA9IG5ld0ZyYWdtZW50LT5maXJzdENoaWxkKCkp
IHsKLSAgICAgICAgaWYgKGZyYWdtZW50LT5hcHBlbmRDaGlsZCgqZmlyc3RDaGlsZCkuaGFzRXhj
ZXB0aW9uKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLWJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyKiBidWZmZXIpCi17Ci0gICAgaWYg
KCFmcmFtZS5kb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWJ1
ZmZlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBhcmNoaXZlID0gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCAqYnVmZmVyKTsKLSAgICBpZiAoIWFyY2hpdmUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8qIG1haW5SZXNvdXJjZSA9IGFyY2hpdmUt
Pm1haW5SZXNvdXJjZSgpOwotICAgIGlmICghbWFpblJlc291cmNlKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBhdXRvJiB0eXBlID0gbWFpblJlc291cmNlLT5taW1lVHlwZSgpOwotICAg
IGlmICghZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBGSVhNRTogVGhlIGNvZGUgaW4gY3Jl
YXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMgY2FsbHMgc2V0RGVmZXJzTG9hZGluZyh0cnVlKS4g
RG9uJ3Qgd2UgbmVlZCB0aGF0IGhlcmU/Ci0gICAgaWYgKGF1dG8qIGxvYWRlciA9IGZyYW1lLmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgIGxvYWRlci0+YWRkQWxsQXJjaGl2ZVJl
c291cmNlcygqYXJjaGl2ZSk7Ci0KLSAgICBhdXRvIG1hcmt1cFN0cmluZyA9IFN0cmluZzo6ZnJv
bVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5z
aXplKCkpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgbWFya3VwU3RyaW5nLCBtYWluUmVzb3VyY2UtPnVybCgpLCBEaXNhbGxvd1Nj
cmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogYm9vbCBX
ZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZW5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKIHsK
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDksMTggKzYyLDYgQEAgYm9vbCBXZWJDb250ZW50UmVh
ZGVyOjpyZWFkSFRNTChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
LXsKLSAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwg
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pLmdldCgpKSk7
Ci0gICAgcmV0dXJuIGZyYWdtZW50OwotfQotCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRS
VEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCi17Ci0gICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21l
bnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJp
YnV0ZXM6bnVsbHB0cl0pLmdldCgpKSk7Ci0gICAgcmV0dXJuIGZyYWdtZW50OwotfQotCiBib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5n
VHlwZSA9IHR5cGUuY3JlYXRlQ0ZTdHJpbmcoKTsKQEAgLTEzMSw4ICs3MiwxMSBAQCBib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiB0eXBlKQogICAgIC8vIEZJWE1FOiBVc2UgYSBibG9iIFVSTCBpbnN0ZWFkLgog
ICAgIGF1dG8gYXJjaGl2ZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFdURk1vdmUoYnVmZmVy
KSwgVVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChyZWxhdGl2ZVVSTFBhcnQpLCBtaW1lVHlw
ZSwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgQVNTRVJUKGFyY2hpdmUpOwot
ICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VSZXNvdXJjZUFuZEFkZFJlc291
cmNlKGZyYW1lLCAqYXJjaGl2ZSkpOwotICAgIHJldHVybiBmcmFnbWVudDsKKyAgICBhdXRvIGZy
YWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRkUmVzb3VyY2UoZnJh
bWUsICphcmNoaXZlKTsKKyAgICBpZiAoIWZyYWdtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgYWRkRnJhZ21lbnQoZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKQEAgLTE1NSw3ICs5OSw3IEBAIGJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAg
ICBTdHJpbmcgbGlua1RleHQgPSB0aXRsZS5sZW5ndGgoKSA/IHRpdGxlIDogU3RyaW5nKFtbKE5T
VVJMICopdXJsIGFic29sdXRlU3RyaW5nXSBwcmVjb21wb3NlZFN0cmluZ1dpdGhDYW5vbmljYWxN
YXBwaW5nXSk7CiAgICAgYW5jaG9yLT5hcHBlbmRDaGlsZChmcmFtZS5kb2N1bWVudCgpLT5jcmVh
dGVUZXh0Tm9kZShsaW5rVGV4dCkpOwogCi0gICAgYXV0byBuZXdGcmFnbWVudCA9IGZyYW1lLmRv
Y3VtZW50KCktPmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICBSZWY8RG9jdW1lbnRGcmFn
bWVudD4gbmV3RnJhZ21lbnQgPSBmcmFtZS5kb2N1bWVudCgpLT5jcmVhdGVEb2N1bWVudEZyYWdt
ZW50KCk7CiAgICAgaWYgKGZyYWdtZW50KQogICAgICAgICBuZXdGcmFnbWVudC0+YXBwZW5kQ2hp
bGQoVGV4dDo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCB7ICZzcGFjZSwgMSB9KSk7CiAgICAg
bmV3RnJhZ21lbnQtPmFwcGVuZENoaWxkKGFuY2hvcik7CkBAIC0xNjMsMTcgKzEwNyw0IEBAIGJv
b2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB0aXRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKLXsKLSAgICBpZiAoIWFsbG93UGxhaW5U
ZXh0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFn
bWVudEZyb21UZXh0KGNvbnRleHQsIFt0ZXh0IHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNh
bE1hcHBpbmddKSk7Ci0gICAgaWYgKCFmcmFnbWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgbWFkZUZyYWdtZW50RnJvbVBsYWluVGV4dCA9IHRydWU7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1dlYkNvbnRl
bnRSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9XZWJDb250ZW50UmVh
ZGVyTWFjLm1tCmluZGV4IGFlYzE3YjNiNWMwNTBhYWUyMmQ3MTNmYjQ2M2MwYWVmYmUxNmY3MTEu
LmZjNDcwODQxNTVhM2ExNDMzMDlkMDVmOTBjNjQ0ZDhlYjkzMjQ0ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1dlYkNvbnRlbnRSZWFkZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvV2ViQ29udGVudFJlYWRlck1hYy5tbQpAQCAtNDMsNTAg
KzQzLDEwIEBACiAjaW1wb3J0ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW1wb3J0ICJT
ZXR0aW5ncy5oIgogI2ltcG9ydCAiVGV4dC5oIgotI2ltcG9ydCAiV2ViTlNBdHRyaWJ1dGVkU3Ry
aW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKQotewotICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2Vz
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShV
UkwoKSwgKmJ1ZmZlcik7Ci0gICAgaWYgKCFhcmNoaXZlKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UgPSBhcmNoaXZlLT5t
YWluUmVzb3VyY2UoKTsKLSAgICBpZiAoIW1haW5SZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgY29uc3QgU3RyaW5nJiB0eXBlID0gbWFpblJlc291cmNlLT5taW1lVHlwZSgp
OwotCi0gICAgaWYgKGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhblNob3dNSU1FVHlwZUFzSFRN
TCh0eXBlKSkgewotICAgICAgICAvLyBGSVhNRTogVGhlIGNvZGUgaW4gY3JlYXRlRnJhZ21lbnRB
bmRBZGRSZXNvdXJjZXMgY2FsbHMgc2V0RGVmZXJzTG9hZGluZyh0cnVlKS4gRG9uJ3Qgd2UgbmVl
ZCB0aGF0IGhlcmU/Ci0gICAgICAgIGlmIChEb2N1bWVudExvYWRlciogbG9hZGVyID0gZnJhbWUu
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgICAgIGxvYWRlci0+YWRkQWxsQXJj
aGl2ZVJlc291cmNlcygqYXJjaGl2ZSk7Ci0KLSAgICAgICAgU3RyaW5nIG1hcmt1cFN0cmluZyA9
IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3Vy
Y2UtPmRhdGEoKS5zaXplKCkpOwotICAgICAgICBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJv
bU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwU3RyaW5nLCBtYWluUmVzb3VyY2UtPnVy
bCgpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlKHR5cGUpKSB7Ci0gICAgICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGb3JJ
bWFnZVJlc291cmNlQW5kQWRkUmVzb3VyY2UoZnJhbWUsIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRGaWxlbmFtZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhdGhzKQogewogICAgIGlmIChwYXRocy5pc0VtcHR5KCkpCkBAIC0xNDAsMjQg
KzEwMCw2IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEhUTUwoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6
OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotewotICAgIGlmIChmcmFtZS5zZXR0aW5n
cygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKS5nZXQoKSk7Ci0gICAg
cmV0dXJuIGZyYWdtZW50OwotfQotCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCi17Ci0gICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlN
RVR5cGVGb3JJbWFnZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZnJhZ21lbnQg
PSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgYWRvcHROUyhbW05TQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSkuZ2V0KCkpOwotICAgIHJldHVybiBmcmFnbWVu
dDsKLX0KLQogYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBBU1NFUlQodHlwZS5jb250
YWlucygnLycpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320742</attachid>
            <date>2017-09-14 00:48:28 -0700</date>
            <delta_ts>2017-09-14 13:55:03 -0700</delta_ts>
            <desc>Fixed API tests</desc>
            <filename>bug-176884-20170914004827.patch</filename>
            <type>text/plain</type>
            <size>22347</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg0YWVjYmMzMTQyZmNj
OWExM2MwZjQzYzM0YWVjMjgzMWYxNGM3Ni4uODg3OTk3YzQ4NmIxMzJkMTRhYWNlOWI3NWE0YTdj
MjIxZTgwYzNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE3LTA5LTEzICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFdlYkNvbnRlbnRSZWFkZXI6
OnJlYWRXZWJBcmNoaXZlIGRvZXNuJ3QgbmVlZCB0byBoYW5kbGUgaW1hZ2UgTUlNRSB0eXBlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY4ODQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhl
IGNvZGUgdG8gaGFuZGxlIGltYWdlIE1JTUUgdHlwZXMgaW4gdGhlIHdlYiBhcmNoaXZlIG9uIG1h
Y09TIHNpbmNlIHdlIGhhdmUgYSBzZXBhcmF0ZSBjb2RlIHBhdGgKKyAgICAgICAgdG8gaGFuZGxl
IGltYWdlcyBpbiB0aGUgcGFzdGVib2FyZCBkaXJlY3RseS4gQXMgZmFyIGFzIEkgY2FuIHRlbGws
IHRoaXMgY29kZSBpcyBuZXZlciB1c2VkIGluIHByYWN0aWNlLgorCisgICAgICAgIFRoaXMgYWxs
b3dzIG1lcmdpbmcgaU9TIGFuZCBtYWNPUyBjb2RlIHRvIHJlYWQgd2ViIGFyY2hpdmUgZnJvbSB0
aGUgcGFzdGVib2FyZC4gQWxzbyBtZXJnZWQgbWVtYmVyIGZ1bmN0aW9ucworICAgICAgICBmb3Ig
aGFuZGxpbmcgUlRGRCBhbmQgUlRGIGluIGlPUyBhbmQgbWFjT1MgaW4gV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29udGVu
dFJlYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6
YWRkRnJhZ21lbnQpOiBNb3ZlZCBmcm9tIFdlYkNvbnRlbnRSZWFkZXJJT1MubW0gYW5kIHNpbXBs
aWZpZWQgc2luY2UgYXBwZW5kQ2hpbGQKKyAgICAgICAga25vd3MgaG93IHRvIGFkZCBhIERvY3Vt
ZW50RnJhZ21lbnQuCisgICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6CisgICAg
ICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZSk6IE1lcmdlZCBpT1MgLyBtYWNPUyBj
b2RlIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFBsYWluVGV4dCk6
IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZCk6CisgICAgICAgICogZWRpdGluZy9p
b3MvV2ViQ29udGVudFJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpy
ZWFkVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNo
aXZlKTogTW92ZWQgdG8gV2ViQ29udGVudFJlYWRlckNvY29hLm1tLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5n
L21hYy9XZWJDb250ZW50UmVhZGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
bnRlbnRSZWFkZXI6OnJlYWRSVEZEKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJDb250
ZW50UmVhZGVyOjpyZWFkUlRGKTogRGl0dG8uCisKIDIwMTctMDktMTMgIERldmluIFJvdXNzbyAg
PHdlYmtpdEBkZXZpbnJvdXNzby5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRXZlbnQg
TGlzdGVuZXJzIHNlY3Rpb24gZG9lcyBub3QgdXBkYXRlIHdoZW4gbGlzdGVuZXJzIGFyZSBhZGRl
ZC9yZW1vdmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDFjYjdlN2JkMWJhN2E3Mjk1Y2I1MjUz
NDM4NWE4NjcwYWFmMzMyNzMuLjRlNjAyZmRkYmZkODkwZDEwZGQzNmVjMjUzZjI2NTE5NmI2ODg4
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNzgxLDYgKzE3ODEsNyBAQCBzZXQoV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCiAgICAgZWRpdGluZy9W
aXNpYmxlU2VsZWN0aW9uLmNwcAogICAgIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorICAgIGVk
aXRpbmcvV2ViQ29udGVudFJlYWRlci5jcHAKICAgICBlZGl0aW5nL1dyYXBDb250ZW50c0luRHVt
bXlTcGFuQ29tbWFuZC5jcHAKICAgICBlZGl0aW5nL21hcmt1cC5jcHAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQwMDZlYmY5
MTFkZDk5NjNjZjUzMDdkYThiNWIzNzEyNjIwNGVlN2UuLmY3MDM4MTdlMzFlOWVlOGMzMzNiNTQy
MmIyNDQ0YWFkYmQ2OWJlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQzMjgsNiArNDMyOCw3IEBACiAJCTlCNTMyRUE0MUJB
OTI4NTcwMDM4QTgyNyAvKiBTbG90QXNzaWdubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1MzJFQTIxQkE5Mjg1NzAwMzhBODI3IC8qIFNsb3RB
c3NpZ25tZW50LmggKi87IH07CiAJCTlCNTVFRUU5MUIzRTg4OTgwMDUzNDJCQyAvKiBFZGl0b3JD
b2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlC
NTVFRUU4MUIzRTg4OTgwMDUzNDJCQyAvKiBFZGl0b3JDb2NvYS5tbSAqLzsgfTsKIAkJOUI1NkM5
QUExQzg5MzI5QTAwQzQ1NkRGIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNTZDOUE5MUM4OTMy
OUEwMEM0NTZERiAvKiBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAgKi87IH07CisJCTlC
NjExNjRBMUY2QTU5MzMwMEU5MjNCOCAvKiBXZWJDb250ZW50UmVhZGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNjExNjQ5MUY2QTU5MzMwMEU5
MjNCOCAvKiBXZWJDb250ZW50UmVhZGVyLmNwcCAqLzsgfTsKIAkJOUI2OUQzQjQxQjk4RkZFOTAw
RTM1MTJCIC8qIEhUTUxTbG90RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QjY5RDNCMjFCOThGRkU5MDBFMzUxMkIgLyogSFRNTFNsb3RF
bGVtZW50LmNwcCAqLzsgfTsKIAkJOUI2OUQzQjUxQjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxTbG90
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUI2OUQzQjMxQjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxTbG90RWxlbWVudC5oICovOyB9OwogCQk5
QjY5RDNCODFCOTkxMDA3MDBFMzUxMkIgLyogSlNIVE1MU2xvdEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI2OUQzQjYxQjk5MTAwNzAw
RTM1MTJCIC8qIEpTSFRNTFNsb3RFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTEyNzc5LDYgKzEyNzgw
LDcgQEAKIAkJOUI1NUVFRTgxQjNFODg5ODAwNTM0MkJDIC8qIEVkaXRvckNvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRWRpdG9yQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNTZDOUE4MUM4OTMxMjgwMEM0NTZERiAvKiBDdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjU2QzlBOTFDODkz
MjlBMDBDNDU2REYgLyogQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjYxMTY0OTFGNkE1OTMzMDBFOTIzQjgg
LyogV2ViQ29udGVudFJlYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZW50UmVh
ZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI2OUQzQjExQjk4RkYwQTAw
RTM1MTJCIC8qIEhUTUxTbG90RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRN
TFNsb3RFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI2OUQzQjIx
Qjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxTbG90RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MU2xvdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5QjY5RDNCMzFCOThGRkU5MDBFMzUxMkIgLyogSFRNTFNsb3RFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxTbG90RWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA2MzIsNiArMjA2MzQsNyBAQAogCQkJCUE4
ODNERjI2MEYzRDA0NUQwMEYxOUJGNiAvKiBWaXNpYmxlU2VsZWN0aW9uLmggKi8sCiAJCQkJOTMz
MDlEQ0UwOTlFNjQ5MTAwNTZFNTgxIC8qIFZpc2libGVVbml0cy5jcHAgKi8sCiAJCQkJOTMzMDlE
Q0YwOTlFNjQ5MTAwNTZFNTgxIC8qIFZpc2libGVVbml0cy5oICovLAorCQkJCTlCNjExNjQ5MUY2
QTU5MzMwMEU5MjNCOCAvKiBXZWJDb250ZW50UmVhZGVyLmNwcCAqLywKIAkJCQk5QkY0MzM3NjFG
Njc2MTlCMDBFMUZENzEgLyogV2ViQ29udGVudFJlYWRlci5oICovLAogCQkJCTkzMzA5REQ0MDk5
RTY0OTEwMDU2RTU4MSAvKiBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwICovLAog
CQkJCTkzMzA5REQ1MDk5RTY0OTEwMDU2RTU4MSAvKiBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNv
bW1hbmQuaCAqLywKQEAgLTM0NDczLDYgKzM0NDc2LDcgQEAKIAkJCQlDREEyOUEzMTFDQkY3NERB
MDA5MDFDQ0YgLyogV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUYzNkVBOUQxRTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUE1NkM1QjlBMTg5RjM0NTcwMDgyRDEzQyAvKiBXZWJDb25z
b2xlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOUI2MTE2NEExRjZBNTkzMzAwRTkyM0I4
IC8qIFdlYkNvbnRlbnRSZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUI5Mjk5QjIxRjY3
OTZBNDAwNjcyM0MyIC8qIFdlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTlCMDgxMTI0MUY2N0NEQzAwMDc0QkRFMiAvKiBXZWJDb250ZW50UmVhZGVySU9TLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOUI5Mjk5QUUxRjY3ODY1QjAwNjcyM0MyIC8qIFdlYkNvbnRlbnRS
ZWFkZXJNYWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvV2ViQ29udGVudFJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
bnRlbnRSZWFkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyYzY3OWE1MmFjYzNlMzc1NTNkZDVkMzUyNTg1
MTM1OGQ1ZjU1NTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvbnRlbnRSZWFkZXIuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJDb250ZW50UmVhZGVyLmgiCisKKyNpbmNs
dWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBX
ZWJDb250ZW50UmVhZGVyOjphZGRGcmFnbWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBuZXdG
cmFnbWVudCkKK3sKKyAgICBpZiAoIWZyYWdtZW50KQorICAgICAgICBmcmFnbWVudCA9IFdURk1v
dmUobmV3RnJhZ21lbnQpOworICAgIGVsc2UKKyAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxk
KG5ld0ZyYWdtZW50LmdldCgpKTsKK30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29udGVudFJlYWRlci5oCmluZGV4IDExYWNlMjAzODlkN2RjODY0MTdlNjQ2YjE4NjFjMzhiZDg4
NzI1NGQuLmQwYThhNTI1NGVkMWE0ODcxNmJkMzQ2MmMwZDM3MzVlOWMxNzhmZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCkBAIC01MCwxMiArNTAsMTAgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1MpCi0gICAgdm9pZCBhZGRG
cmFnbWVudChSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJik7Ci0jZW5kaWYKKyAgICB2b2lkIGFk
ZEZyYWdtZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmKTsKIAogcHJpdmF0ZToKLSNpZiAhKFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBi
b29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciopIG92ZXJyaWRlOwogICAgIGJvb2wgcmVh
ZEZpbGVuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVh
ZEhUTUwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CkBAIC02Nyw3ICs2NSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogfTsKIAot
I2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBkZWZpbmVkKF9fT0JK
Q19fKQogc3RydWN0IEZyYWdtZW50QW5kUmVzb3VyY2VzIHsKICAgICBSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gZnJhZ21lbnQ7CiAgICAgVmVjdG9yPFJlZjxBcmNoaXZlUmVzb3VyY2U+PiByZXNv
dXJjZXM7CkBAIC03NSw1ICs3Myw1IEBAIHN0cnVjdCBGcmFnbWVudEFuZFJlc291cmNlcyB7CiAK
IFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhG
cmFtZSYsIE5TQXR0cmlidXRlZFN0cmluZyopOwogI2VuZGlmCi0gICAgCisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0K
aW5kZXggZmJhZWY3MWJhOWM2N2IyOTE5OTFlNDE0NWNjODkwOGIxNzFjZGJhOC4uMjU3MGIxYjNk
ZTdlMmQwYTJjMWE3MzZlZjIxYzJkNGMyZGY5Y2I1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTMzLDggKzMz
LDE0IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCisjaW5jbHVkZSAiTGVnYWN5V2ViQXJjaGl2
ZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUg
IldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgorI2lu
Y2x1ZGUgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CiAjaW5jbHVkZSA8
d3RmL1NvZnRMaW5raW5nLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC02MywzMyArNjksMTAy
IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNl
cyhGcmFtZSYgZnJhbWUsIE5TQXR0cmlidXRlCiB7CiAgICAgaWYgKCFmcmFtZS5wYWdlKCkgfHwg
IWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAg
YXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50Lmlz
SFRNTERvY3VtZW50KCkgfHwgIXN0cmluZykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
CisKICAgICBib29sIHdhc0RlZmVycmluZ0NhbGxiYWNrcyA9IGZyYW1lLnBhZ2UoKS0+ZGVmZXJz
TG9hZGluZygpOwogICAgIGlmICghd2FzRGVmZXJyaW5nQ2FsbGJhY2tzKQogICAgICAgICBmcmFt
ZS5wYWdlKCktPnNldERlZmVyc0xvYWRpbmcodHJ1ZSk7Ci0gICAgCisKICAgICBhdXRvJiBjYWNo
ZWRSZXNvdXJjZUxvYWRlciA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiAgICAg
Ym9vbCB3YXNJbWFnZXNFbmFibGVkID0gY2FjaGVkUmVzb3VyY2VMb2FkZXIuaW1hZ2VzRW5hYmxl
ZCgpOwogICAgIGlmICh3YXNJbWFnZXNFbmFibGVkKQogICAgICAgICBjYWNoZWRSZXNvdXJjZUxv
YWRlci5zZXRJbWFnZXNFbmFibGVkKGZhbHNlKTsKLSAgICAKKwogICAgIGF1dG8gZnJhZ21lbnRB
bmRSZXNvdXJjZXMgPSBjcmVhdGVGcmFnbWVudChmcmFtZSwgc3RyaW5nKTsKLSAgICAKICAgICBp
ZiAoYXV0byogbG9hZGVyID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkgewogICAg
ICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogZnJhZ21lbnRBbmRSZXNvdXJjZXMucmVzb3VyY2Vz
KQogICAgICAgICAgICAgbG9hZGVyLT5hZGRBcmNoaXZlUmVzb3VyY2UoV1RGTW92ZShyZXNvdXJj
ZSkpOwogICAgIH0KLSAgICAKKwogICAgIGlmICh3YXNJbWFnZXNFbmFibGVkKQogICAgICAgICBj
YWNoZWRSZXNvdXJjZUxvYWRlci5zZXRJbWFnZXNFbmFibGVkKHRydWUpOwogICAgIGlmICghd2Fz
RGVmZXJyaW5nQ2FsbGJhY2tzKQogICAgICAgICBmcmFtZS5wYWdlKCktPnNldERlZmVyc0xvYWRp
bmcoZmFsc2UpOwotICAgIAorCiAgICAgcmV0dXJuIFdURk1vdmUoZnJhZ21lbnRBbmRSZXNvdXJj
ZXMuZnJhZ21lbnQpOwogfQogCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZl
KFNoYXJlZEJ1ZmZlciogYnVmZmVyKQoreworICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZl
ck1JTUVUeXBlRm9ySW1hZ2VzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgh
ZnJhbWUuZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFidWZm
ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZShVUkwoKSwgKmJ1ZmZlcik7CisgICAgaWYgKCFhcmNoaXZlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBtYWluUmVz
b3VyY2UgPSBhcmNoaXZlLT5tYWluUmVzb3VyY2UoKTsKKyAgICBpZiAoIW1haW5SZXNvdXJjZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgU3RyaW5nJiB0eXBlID0gbWFpblJl
c291cmNlLT5taW1lVHlwZSgpOworCisgICAgaWYgKCFmcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5j
YW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIEZJWE1FOiBUaGUgY29kZSBpbiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyBjYWxs
cyBzZXREZWZlcnNMb2FkaW5nKHRydWUpLiBEb24ndCB3ZSBuZWVkIHRoYXQgaGVyZT8KKyAgICBp
ZiAoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCkpCisgICAgICAgIGxvYWRlci0+YWRkQWxsQXJjaGl2ZVJlc291cmNlcygqYXJjaGl2ZSk7CisK
KyAgICBTdHJpbmcgbWFya3VwU3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2Ut
PmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYWRkRnJh
Z21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVudCgpLCBtYXJrdXBT
dHJpbmcsIG1haW5SZXNvdXJjZS0+dXJsKCksIERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29u
dGVudCkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIGlmIChmcmFtZS5zZXR0aW5ncygp
LnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgYWRv
cHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pLmdldCgpKTsKKyAg
ICBpZiAoIWZyYWdtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWRkRnJhZ21lbnQo
ZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAg
IGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFk
ZFJlc291cmNlcyhmcmFtZSwgYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpu
dWxscHRyXSkuZ2V0KCkpOworICAgIGlmICghZnJhZ21lbnQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBhZGRGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29u
c3QgU3RyaW5nJiB0ZXh0KQoreworICAgIGlmICghYWxsb3dQbGFpblRleHQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29u
dGV4dCwgW3RleHQgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ10pKTsKKwor
ICAgIG1hZGVGcmFnbWVudEZyb21QbGFpblRleHQgPSB0cnVlOworICAgIHJldHVybiB0cnVlOwor
fQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggM2RkZDNj
MzY4MTUzNTE5ZTlkOTI4ZmVkODIyM2ZiOTljNjE0NzdiNi4uMzI1Mjk3ZTVlODU1YjgyMWNiYzI3
NDJlODcyMDgzZmJlYmMzZTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9p
b3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbQpAQCAtMjMzLDggKzIzMyw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJk
KFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRleHQsIE1hCiAgICAgICAg
IFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNsaWVudCgpLT5kb2N1bWVudEZy
YWdtZW50RnJvbURlbGVnYXRlKGkpOwogICAgICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgcmVhZGVyLmFkZEZyYWdtZW50KFdURk1vdmUoZnJhZ21l
bnQpKTsKKyAgICAgICAgcmVhZGVyLmFkZEZyYWdtZW50KGZyYWdtZW50LnJlbGVhc2VOb25OdWxs
KCkpOwogICAgIH0KIAogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHJl
YWRlci5mcmFnbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL1dl
YkNvbnRlbnRSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9XZWJDb250
ZW50UmVhZGVySU9TLm1tCmluZGV4IGJjNjQ2MTNiMjY4YzQwMmZmMDEzZjYxMzMwYzM0MmExNGVl
OWU5NTYuLmY5YTE2MGM0Mjk5NjNmMmFlYzcwNjg4MjlkZGE5MzQ5MmNiYTFkNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL1dlYkNvbnRlbnRSZWFkZXJJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvV2ViQ29udGVudFJlYWRlcklPUy5tbQpAQCAt
NDIsNTkgKzQyLDEyIEBACiAjaW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJU
ZXh0LmgiCiAjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKLSNpbXBvcnQgIldlYk5TQXR0cmlidXRl
ZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAibWFya3VwLmgiCiAjaW1wb3J0IDxNb2JpbGVDb3Jl
U2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL05T
QXR0cmlidXRlZFN0cmluZ1NQSS5oPgogI2ltcG9ydCA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFt
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFdlYkNvbnRlbnRSZWFkZXI6OmFk
ZEZyYWdtZW50KFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIG5ld0ZyYWdtZW50KQotewotICAg
IGlmICghbmV3RnJhZ21lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghZnJhZ21lbnQp
IHsKLSAgICAgICAgZnJhZ21lbnQgPSBXVEZNb3ZlKG5ld0ZyYWdtZW50KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIHdoaWxlIChhdXRvKiBmaXJzdENoaWxkID0gbmV3RnJhZ21lbnQt
PmZpcnN0Q2hpbGQoKSkgewotICAgICAgICBpZiAoZnJhZ21lbnQtPmFwcGVuZENoaWxkKCpmaXJz
dENoaWxkKS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQot
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXIqIGJ1ZmZl
cikKLXsKLSAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGFy
Y2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksICpidWZmZXIpOwotICAgIGlm
ICghYXJjaGl2ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byogbWFpblJlc291
cmNlID0gYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgaWYgKCFtYWluUmVzb3VyY2UpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIHR5cGUgPSBtYWluUmVzb3VyY2UtPm1p
bWVUeXBlKCk7Ci0gICAgaWYgKCFmcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5TaG93TUlNRVR5
cGVBc0hUTUwodHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEZJWE1FOiBU
aGUgY29kZSBpbiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyBjYWxscyBzZXREZWZlcnNM
b2FkaW5nKHRydWUpLiBEb24ndCB3ZSBuZWVkIHRoYXQgaGVyZT8KLSAgICBpZiAoYXV0byogbG9h
ZGVyID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgbG9hZGVyLT5h
ZGRBbGxBcmNoaXZlUmVzb3VyY2VzKCphcmNoaXZlKTsKLQotICAgIGF1dG8gbWFya3VwU3RyaW5n
ID0gU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNv
dXJjZS0+ZGF0YSgpLnNpemUoKSk7Ci0gICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9t
TWFya3VwKCpmcmFtZS5kb2N1bWVudCgpLCBtYXJrdXBTdHJpbmcsIG1haW5SZXNvdXJjZS0+dXJs
KCksIERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOwotICAgIHJldHVybiB0cnVl
OwotfQotCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRGaWxlbmFtZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mKQogewogICAgIHJldHVybiBmYWxzZTsKQEAgLTEwOSwxOCArNjIsNiBAQCBib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRIVE1MKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQotewotICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVz
b3VyY2VzKGZyYW1lLCBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxs
cHRyXSkuZ2V0KCkpKTsKLSAgICByZXR1cm4gZnJhZ21lbnQ7Ci19Ci0KLWJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLXsKLSAgICBhZGRGcmFnbWVu
dChjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgYWRvcHROUyhbW05TQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSkuZ2V0KCkpKTsKLSAgICByZXR1cm4gZnJhZ21l
bnQ7Ci19Ci0KIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBzdHJpbmdUeXBlID0gdHlwZS5jcmVhdGVDRlN0cmluZygpOwpAQCAtMTMxLDggKzcy
LDExIEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgLy8gRklYTUU6IFVzZSBhIGJsb2Ig
VVJMIGluc3RlYWQuCiAgICAgYXV0byBhcmNoaXZlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpLCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KHJlbGF0aXZlVVJM
UGFydCksIG1pbWVUeXBlLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpKTsKICAgICBBU1NF
UlQoYXJjaGl2ZSk7Ci0gICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291
cmNlQW5kQWRkUmVzb3VyY2UoZnJhbWUsICphcmNoaXZlKSk7Ci0gICAgcmV0dXJuIGZyYWdtZW50
OworICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRB
ZGRSZXNvdXJjZShmcmFtZSwgKmFyY2hpdmUpOworICAgIGlmICghZnJhZ21lbnQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBhZGRGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgp
KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJM
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQpAQCAtMTU1LDcgKzk5LDcgQEAg
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHRpdGxlKQogICAgIFN0cmluZyBsaW5rVGV4dCA9IHRpdGxlLmxlbmd0aCgpID8gdGl0bGUg
OiBTdHJpbmcoW1soTlNVUkwgKil1cmwgYWJzb2x1dGVTdHJpbmddIHByZWNvbXBvc2VkU3RyaW5n
V2l0aENhbm9uaWNhbE1hcHBpbmddKTsKICAgICBhbmNob3ItPmFwcGVuZENoaWxkKGZyYW1lLmRv
Y3VtZW50KCktPmNyZWF0ZVRleHROb2RlKGxpbmtUZXh0KSk7CiAKLSAgICBhdXRvIG5ld0ZyYWdt
ZW50ID0gZnJhbWUuZG9jdW1lbnQoKS0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgIFJl
ZjxEb2N1bWVudEZyYWdtZW50PiBuZXdGcmFnbWVudCA9IGZyYW1lLmRvY3VtZW50KCktPmNyZWF0
ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICBpZiAoZnJhZ21lbnQpCiAgICAgICAgIG5ld0ZyYWdt
ZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHsgJnNwYWNl
LCAxIH0pKTsKICAgICBuZXdGcmFnbWVudC0+YXBwZW5kQ2hpbGQoYW5jaG9yKTsKQEAgLTE2Mywx
NyArMTA3LDQgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQotewotICAgIGlm
ICghYWxsb3dQbGFpblRleHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGFkZEZyYWdt
ZW50KGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29udGV4dCwgW3RleHQgcHJlY29tcG9zZWRTdHJp
bmdXaXRoQ2Fub25pY2FsTWFwcGluZ10pKTsKLSAgICBpZiAoIWZyYWdtZW50KQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBtYWRlRnJhZ21lbnRGcm9tUGxhaW5UZXh0ID0gdHJ1ZTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvV2ViQ29udGVudFJlYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L1dlYkNvbnRlbnRSZWFkZXJNYWMubW0KaW5kZXggYWVjMTdiM2I1YzA1MGFhZTIyZDcxM2ZiNDYz
YzBhZWZiZTE2ZjcxMS4uZTZkZWQzNzgyN2YwZTAxYjY4NWI2Y2VjM2RjMzYxNDc1Y2I5MTUyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvV2ViQ29udGVudFJlYWRlck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9XZWJDb250ZW50UmVhZGVyTWFj
Lm1tCkBAIC00Myw1MCArNDMsMTAgQEAKICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aCIKICNpbXBvcnQgIlNldHRpbmdzLmgiCiAjaW1wb3J0ICJUZXh0LmgiCi0jaW1wb3J0ICJXZWJO
U0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hh
cmVkQnVmZmVyKiBidWZmZXIpCi17Ci0gICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlN
RVR5cGVGb3JJbWFnZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFmcmFt
ZS5kb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWJ1ZmZlcikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlKFVSTCgpLCAqYnVmZmVyKTsKLSAgICBpZiAoIWFyY2hpdmUpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IG1haW5SZXNvdXJj
ZSA9IGFyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIGlmICghbWFpblJlc291cmNlKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjb25zdCBTdHJpbmcmIHR5cGUgPSBtYWluUmVzb3Vy
Y2UtPm1pbWVUeXBlKCk7Ci0KLSAgICBpZiAoZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuY2FuU2hv
d01JTUVUeXBlQXNIVE1MKHR5cGUpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGUgY29kZSBpbiBj
cmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyBjYWxscyBzZXREZWZlcnNMb2FkaW5nKHRydWUp
LiBEb24ndCB3ZSBuZWVkIHRoYXQgaGVyZT8KLSAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBs
b2FkZXIgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQotICAgICAgICAgICAgbG9h
ZGVyLT5hZGRBbGxBcmNoaXZlUmVzb3VyY2VzKCphcmNoaXZlKTsKLQotICAgICAgICBTdHJpbmcg
bWFya3VwU3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRh
KCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7Ci0gICAgICAgIGZyYWdtZW50ID0gY3Jl
YXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVudCgpLCBtYXJrdXBTdHJpbmcsIG1h
aW5SZXNvdXJjZS0+dXJsKCksIERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCk7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1N1cHBvcnRlZEltYWdlTUlNRVR5cGUodHlwZSkpIHsKLSAgICAgICAgZnJhZ21lbnQgPSBjcmVh
dGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJjZShmcmFtZSwgbWFpblJlc291
cmNlLnJlbGVhc2VOb25OdWxsKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVuYW1l
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiB7CiAgICAgaWYgKHBhdGhzLmlzRW1wdHko
KSkKQEAgLTE0MCwyNCArMTAwLDYgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSFRNTChj
b25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gZnJhZ21lbnQ7CiB9CiAKLWJvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCi17Ci0gICAgaWYg
KGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNl
cyhmcmFtZSwgYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZE
OmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0p
LmdldCgpKTsKLSAgICByZXR1cm4gZnJhZ21lbnQ7Ci19Ci0KLWJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLXsKLSAgICBpZiAoZnJhbWUuc2V0dGlu
Z3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKS5nZXQoKSk7Ci0gICAg
cmV0dXJuIGZyYWdtZW50OwotfQotCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIEFT
U0VSVCh0eXBlLmNvbnRhaW5zKCcvJykpOwpAQCAtMTg5LDE3ICsxMzEsNCBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFBsYWlu
VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCi17Ci0gICAgaWYgKCFhbGxvd1BsYWluVGV4dCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21U
ZXh0KGNvbnRleHQsIFt0ZXh0IHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmdd
KTsKLSAgICBpZiAoIWZyYWdtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtYWRl
RnJhZ21lbnRGcm9tUGxhaW5UZXh0ID0gdHJ1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSAgICAK
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320816</attachid>
            <date>2017-09-14 13:55:06 -0700</date>
            <delta_ts>2017-09-14 14:33:07 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-176884-20170914135504.patch</filename>
            <type>text/plain</type>
            <size>21046</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE3LTA5LTE0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlIGRvZXNuJ3QgbmVlZCB0byBoYW5kbGUgaW1hZ2UgTUlNRSB0eXBlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY4ODQKKworICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIFJlbW92ZSB0aGUgY29kZSB0
byBoYW5kbGUgaW1hZ2UgTUlNRSB0eXBlcyBpbiB0aGUgd2ViIGFyY2hpdmUgb24gbWFjT1Mgc2lu
Y2Ugd2UgaGF2ZSBhIHNlcGFyYXRlIGNvZGUgcGF0aAorICAgICAgICB0byBoYW5kbGUgaW1hZ2Vz
IGluIHRoZSBwYXN0ZWJvYXJkIGRpcmVjdGx5LiBBcyBmYXIgYXMgSSBjYW4gdGVsbCwgdGhpcyBj
b2RlIGlzIG5ldmVyIHVzZWQgaW4gcHJhY3RpY2UuCisKKyAgICAgICAgVGhpcyBhbGxvd3MgbWVy
Z2luZyBpT1MgYW5kIG1hY09TIGNvZGUgdG8gcmVhZCB3ZWIgYXJjaGl2ZSBmcm9tIHRoZSBwYXN0
ZWJvYXJkLiBBbHNvIG1lcmdlZCBtZW1iZXIgZnVuY3Rpb25zCisgICAgICAgIGZvciBoYW5kbGlu
ZyBSVEZEIGFuZCBSVEYgaW4gaU9TIGFuZCBtYWNPUyBpbiBXZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjphZGRGcmFn
bWVudCk6IE1vdmVkIGZyb20gV2ViQ29udGVudFJlYWRlcklPUy5tbSBhbmQgc2ltcGxpZmllZCBz
aW5jZSBhcHBlbmRDaGlsZAorICAgICAgICBrbm93cyBob3cgdG8gYWRkIGEgRG9jdW1lbnRGcmFn
bWVudC4KKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
bnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKTogTWVyZ2VkIGlPUyAvIG1hY09TIGNvZGUgaGVy
ZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KTogRGl0dG8u
CisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9XZWJD
b250ZW50UmVhZGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUpOiBN
b3ZlZCB0byBXZWJDb250ZW50UmVhZGVyQ29jb2EubW0uCisgICAgICAgIChXZWJDb3JlOjpXZWJD
b250ZW50UmVhZGVyOjpyZWFkUlRGRCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29u
dGVudFJlYWRlcjo6cmVhZFJURik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZFBsYWluVGV4dCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvbWFjL1dl
YkNvbnRlbnRSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVy
OjpyZWFkV2ViQXJjaGl2ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJl
YWRlcjo6cmVhZFJURkQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRSVEYpOiBEaXR0by4KKwogMjAxNy0wOS0xNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUlRDRGF0YUNoYW5uZWwgY29ubmVjdGl2aXR5IGlzc3Vl
cyBpbiBTYWZhcmkgMTEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjIwNTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTc4
MSw2ICsxNzgxLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGVkaXRpbmcvVmlzaWJsZVBv
c2l0aW9uLmNwcAogICAgIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKICAgICBlZGl0aW5n
L1Zpc2libGVVbml0cy5jcHAKKyAgICBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuY3BwCiAgICAg
ZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwCiAgICAgZWRpdGluZy9t
YXJrdXAuY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMjA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDMyOCw2
ICs0MzI4LDcgQEAKIAkJOUI1MzJFQTQxQkE5Mjg1NzAwMzhBODI3IC8qIFNsb3RBc3NpZ25tZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjUzMkVB
MjFCQTkyODU3MDAzOEE4MjcgLyogU2xvdEFzc2lnbm1lbnQuaCAqLzsgfTsKIAkJOUI1NUVFRTkx
QjNFODg5ODAwNTM0MkJDIC8qIEVkaXRvckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1NUVFRTgxQjNFODg5ODAwNTM0MkJDIC8qIEVkaXRv
ckNvY29hLm1tICovOyB9OwogCQk5QjU2QzlBQTFDODkzMjlBMDBDNDU2REYgLyogQ3VzdG9tRWxl
bWVudFJlYWN0aW9uUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUI1NkM5QTkxQzg5MzI5QTAwQzQ1NkRGIC8qIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblF1ZXVlLmNwcCAqLzsgfTsKKwkJOUI2MTE2NEExRjZBNTkzMzAwRTkyM0I4IC8qIFdlYkNv
bnRlbnRSZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUI2MTE2NDkxRjZBNTkzMzAwRTkyM0I4IC8qIFdlYkNvbnRlbnRSZWFkZXIuY3BwICov
OyB9OwogCQk5QjY5RDNCNDFCOThGRkU5MDBFMzUxMkIgLyogSFRNTFNsb3RFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNjlEM0IyMUI5
OEZGRTkwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuY3BwICovOyB9OwogCQk5QjY5RDNCNTFC
OThGRkU5MDBFMzUxMkIgLyogSFRNTFNsb3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjY5RDNCMzFCOThGRkU5MDBFMzUxMkIgLyogSFRN
TFNsb3RFbGVtZW50LmggKi87IH07CiAJCTlCNjlEM0I4MUI5OTEwMDcwMEUzNTEyQiAvKiBKU0hU
TUxTbG90RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QjY5RDNCNjFCOTkxMDA3MDBFMzUxMkIgLyogSlNIVE1MU2xvdEVsZW1lbnQuY3Bw
ICovOyB9OwpAQCAtMTI3NzksNiArMTI3ODAsNyBAQAogCQk5QjU1RUVFODFCM0U4ODk4MDA1MzQy
QkMgLyogRWRpdG9yQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBFZGl0b3JDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI1NkM5
QTgxQzg5MzEyODAwQzQ1NkRGIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCNTZDOUE5MUM4OTMyOUEwMEM0NTZERiAvKiBDdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTlCNjExNjQ5MUY2QTU5MzMwMEU5MjNCOCAvKiBXZWJDb250ZW50UmVhZGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkNvbnRlbnRSZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5QjY5RDNCMTFCOThGRjBBMDBFMzUxMkIgLyogSFRNTFNsb3RFbGVtZW50LmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MU2xvdEVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5QjY5RDNCMjFCOThGRkU5MDBFMzUxMkIgLyogSFRNTFNsb3RFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxTbG90RWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNjlEM0IzMUI5OEZGRTkw
MEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSFRNTFNsb3RFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MDYzMiw2ICsyMDYzNCw3IEBACiAJCQkJQTg4M0RGMjYwRjNEMDQ1RDAwRjE5QkY2IC8qIFZpc2li
bGVTZWxlY3Rpb24uaCAqLywKIAkJCQk5MzMwOURDRTA5OUU2NDkxMDA1NkU1ODEgLyogVmlzaWJs
ZVVuaXRzLmNwcCAqLywKIAkJCQk5MzMwOURDRjA5OUU2NDkxMDA1NkU1ODEgLyogVmlzaWJsZVVu
aXRzLmggKi8sCisJCQkJOUI2MTE2NDkxRjZBNTkzMzAwRTkyM0I4IC8qIFdlYkNvbnRlbnRSZWFk
ZXIuY3BwICovLAogCQkJCTlCRjQzMzc2MUY2NzYxOUIwMEUxRkQ3MSAvKiBXZWJDb250ZW50UmVh
ZGVyLmggKi8sCiAJCQkJOTMzMDlERDQwOTlFNjQ5MTAwNTZFNTgxIC8qIFdyYXBDb250ZW50c0lu
RHVtbXlTcGFuQ29tbWFuZC5jcHAgKi8sCiAJCQkJOTMzMDlERDUwOTlFNjQ5MTAwNTZFNTgxIC8q
IFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oICovLApAQCAtMzQ0NzMsNiArMzQ0NzYs
NyBAQAogCQkJCUNEQTI5QTMxMUNCRjc0REEwMDkwMUNDRiAvKiBXZWJBVlBsYXllckNvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkxRjM2RUE5RDFFMjFCQTE3MDA2MjFFMjUgLyogV2Vi
QmFja2dyb3VuZFRhc2tDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU2QzVCOUEx
ODlGMzQ1NzAwODJEMTNDIC8qIFdlYkNvbnNvbGVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk5QjYxMTY0QTFGNkE1OTMzMDBFOTIzQjggLyogV2ViQ29udGVudFJlYWRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5QjkyOTlCMjFGNjc5NkE0MDA2NzIzQzIgLyogV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUIwODExMjQxRjY3Q0RDMDAwNzRCREUyIC8q
IFdlYkNvbnRlbnRSZWFkZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk5QjkyOTlBRTFGNjc4
NjVCMDA2NzIzQzIgLyogV2ViQ29udGVudFJlYWRlck1hYy5tbSBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvbnRlbnRSZWFkZXIuaCIKKworI2luY2x1ZGUgIkRv
Y3VtZW50RnJhZ21lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFdlYkNvbnRl
bnRSZWFkZXI6OmFkZEZyYWdtZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIG5ld0ZyYWdtZW50
KQoreworICAgIGlmICghZnJhZ21lbnQpCisgICAgICAgIGZyYWdtZW50ID0gV1RGTW92ZShuZXdG
cmFnbWVudCk7CisgICAgZWxzZQorICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQobmV3RnJh
Z21lbnQuZ2V0KCkpOworfQorCit9CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29udGVudFJlYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29udGVudFJlYWRlci5oCShyZXZpc2lvbiAyMjIwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTIgKzUwLDEwIEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgYWRk
RnJhZ21lbnQoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYpOwotI2VuZGlmCisgICAgdm9pZCBh
ZGRGcmFnbWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJik7CiAKIHByaXZhdGU6Ci0jaWYgIShQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
Ym9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKICAgICBib29sIHJl
YWRGaWxlbmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAgICBib29sIHJl
YWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwpAQCAtNjcsNyArNjUsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIH07CiAK
LSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgZGVmaW5lZChfX09C
SkNfXykKIHN0cnVjdCBGcmFnbWVudEFuZFJlc291cmNlcyB7CiAgICAgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50OwogICAgIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4gcmVz
b3VyY2VzOwpAQCAtNzUsNSArNzMsNSBAQCBzdHJ1Y3QgRnJhZ21lbnRBbmRSZXNvdXJjZXMgewog
CiBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMo
RnJhbWUmLCBOU0F0dHJpYnV0ZWRTdHJpbmcqKTsKICNlbmRpZgotICAgIAorCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbQkocmV2aXNpb24gMjIyMDUxKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDE0
IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCisjaW5jbHVkZSAiTGVnYWN5V2ViQXJjaGl2ZS5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldl
Yk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1
ZGUgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CiAjaW5jbHVkZSA8d3Rm
L1NvZnRMaW5raW5nLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC02MywzMyArNjksMTAxIEBA
IFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEEKIHsKICAgICBpZiAoIWZy
YW1lLnBhZ2UoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgCisKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwogICAgIGlm
ICghZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSB8fCAhc3RyaW5nKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAKKwogICAgIGJvb2wgd2FzRGVmZXJyaW5nQ2FsbGJhY2tzID0gZnJhbWUu
cGFnZSgpLT5kZWZlcnNMb2FkaW5nKCk7CiAgICAgaWYgKCF3YXNEZWZlcnJpbmdDYWxsYmFja3Mp
CiAgICAgICAgIGZyYW1lLnBhZ2UoKS0+c2V0RGVmZXJzTG9hZGluZyh0cnVlKTsKLSAgICAKKwog
ICAgIGF1dG8mIGNhY2hlZFJlc291cmNlTG9hZGVyID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VM
b2FkZXIoKTsKICAgICBib29sIHdhc0ltYWdlc0VuYWJsZWQgPSBjYWNoZWRSZXNvdXJjZUxvYWRl
ci5pbWFnZXNFbmFibGVkKCk7CiAgICAgaWYgKHdhc0ltYWdlc0VuYWJsZWQpCiAgICAgICAgIGNh
Y2hlZFJlc291cmNlTG9hZGVyLnNldEltYWdlc0VuYWJsZWQoZmFsc2UpOwotICAgIAorCiAgICAg
YXV0byBmcmFnbWVudEFuZFJlc291cmNlcyA9IGNyZWF0ZUZyYWdtZW50KGZyYW1lLCBzdHJpbmcp
OwotICAgIAogICAgIGlmIChhdXRvKiBsb2FkZXIgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpKSB7CiAgICAgICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291
cmNlcy5yZXNvdXJjZXMpCiAgICAgICAgICAgICBsb2FkZXItPmFkZEFyY2hpdmVSZXNvdXJjZShX
VEZNb3ZlKHJlc291cmNlKSk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHdhc0ltYWdlc0VuYWJs
ZWQpCiAgICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLnNldEltYWdlc0VuYWJsZWQodHJ1ZSk7
CiAgICAgaWYgKCF3YXNEZWZlcnJpbmdDYWxsYmFja3MpCiAgICAgICAgIGZyYW1lLnBhZ2UoKS0+
c2V0RGVmZXJzTG9hZGluZyhmYWxzZSk7Ci0gICAgCisKICAgICByZXR1cm4gV1RGTW92ZShmcmFn
bWVudEFuZFJlc291cmNlcy5mcmFnbWVudCk7CiB9CiAKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyKiBidWZmZXIpCit7CisgICAgaWYgKGZyYW1lLnNl
dHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBhcmNo
aXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCAqYnVmZmVyKTsKKyAgICBpZiAo
IWFyY2hpdmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxBcmNoaXZlUmVz
b3VyY2U+IG1haW5SZXNvdXJjZSA9IGFyY2hpdmUtPm1haW5SZXNvdXJjZSgpOworICAgIGlmICgh
bWFpblJlc291cmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHR5cGUgPSBt
YWluUmVzb3VyY2UtPm1pbWV0eXBlKCk7CisgICAgaWYgKCFmcmFtZS5sb2FkZXIoKS5jbGllbnQo
KS5jYW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIC8vIEZJWE1FOiBUaGUgY29kZSBpbiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyBj
YWxscyBzZXREZWZlcnNMb2FkaW5nKHRydWUpLiBEb24ndCB3ZSBuZWVkIHRoYXQgaGVyZT8KKyAg
ICBpZiAoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCkpCisgICAgICAgIGxvYWRlci0+YWRkQWxsQXJjaGl2ZVJlc291cmNlcygqYXJjaGl2ZSk7
CisKKyAgICBhdXRvIG1hcmt1cFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNl
LT5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGFkZEZy
YWdtZW50KGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3Vw
U3RyaW5nLCBtYWluUmVzb3VyY2UtPnVybCgpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNv
bnRlbnQpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBpZiAoZnJhbWUuc2V0dGluZ3Mo
KS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKS5nZXQoKSk7Cisg
ICAgaWYgKCFmcmFnbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkZEZyYWdtZW50
KGZyYWdtZW50LnJlbGVhc2VOb25OdWxsKCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sKKyAg
ICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRB
ZGRSZXNvdXJjZXMoZnJhbWUsIGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bnVsbHB0cl0pLmdldCgpKTsKKyAgICBpZiAoIWZyYWdtZW50KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgYWRkRnJhZ21lbnQoZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBpZiAoIWFsbG93UGxhaW5UZXh0KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21UZXh0KGNv
bnRleHQsIHRleHQucHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZykpOworCisg
ICAgbWFkZUZyYWdtZW50RnJvbVBsYWluVGV4dCA9IHRydWU7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0JKHJldmlz
aW9uIDIyMjA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjMzLDggKzIzMyw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQ
YXN0ZWJvYXJkKFBhc3RlYm8KICAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdt
ZW50ID0gY2xpZW50KCktPmRvY3VtZW50RnJhZ21lbnRGcm9tRGVsZWdhdGUoaSk7CiAgICAgICAg
IGlmICghZnJhZ21lbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICByZWFkZXIu
YWRkRnJhZ21lbnQoV1RGTW92ZShmcmFnbWVudCkpOworICAgICAgICByZWFkZXIuYWRkRnJhZ21l
bnQoZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gcmVhZGVyLmZyYWdtZW50OwpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvV2ViQ29udGVudFJlYWRlcklPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9XZWJDb250ZW50UmVhZGVySU9TLm1tCShyZXZpc2lv
biAyMjIwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9XZWJDb250ZW50UmVhZGVy
SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Miw1OSArNDIsMTIgQEAKICNpbXBvcnQgIk1JTUVU
eXBlUmVnaXN0cnkuaCIKICNpbXBvcnQgIlRleHQuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5o
IgotI2ltcG9ydCAiV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJtYXJr
dXAuaCIKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4K
LSNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CiAjaW1wb3J0
IDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXZvaWQgV2ViQ29udGVudFJlYWRlcjo6YWRkRnJhZ21lbnQoUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+JiYgbmV3RnJhZ21lbnQpCi17Ci0gICAgaWYgKCFuZXdGcmFnbWVudCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKCFmcmFnbWVudCkgewotICAgICAgICBmcmFnbWVudCA9IFdURk1vdmUo
bmV3RnJhZ21lbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgd2hpbGUgKGF1dG8q
IGZpcnN0Q2hpbGQgPSBuZXdGcmFnbWVudC0+Zmlyc3RDaGlsZCgpKSB7Ci0gICAgICAgIGlmIChm
cmFnbWVudC0+YXBwZW5kQ2hpbGQoKmZpcnN0Q2hpbGQpLmhhc0V4Y2VwdGlvbigpKQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJB
cmNoaXZlKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQotewotICAgIGlmICghZnJhbWUuZG9jdW1lbnQo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShVUkwoKSwgKmJ1ZmZlcik7Ci0gICAgaWYgKCFhcmNoaXZlKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBhdXRvKiBtYWluUmVzb3VyY2UgPSBhcmNoaXZlLT5tYWluUmVzb3VyY2UoKTsK
LSAgICBpZiAoIW1haW5SZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0
byYgdHlwZSA9IG1haW5SZXNvdXJjZS0+bWltZVR5cGUoKTsKLSAgICBpZiAoIWZyYW1lLmxvYWRl
cigpLmNsaWVudCgpLmNhblNob3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgLy8gRklYTUU6IFRoZSBjb2RlIGluIGNyZWF0ZUZyYWdtZW50QW5kQWRk
UmVzb3VyY2VzIGNhbGxzIHNldERlZmVyc0xvYWRpbmcodHJ1ZSkuIERvbid0IHdlIG5lZWQgdGhh
dCBoZXJlPwotICAgIGlmIChhdXRvKiBsb2FkZXIgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpKQotICAgICAgICBsb2FkZXItPmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKmFyY2hpdmUp
OwotCi0gICAgYXV0byBtYXJrdXBTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJj
ZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKLSAgICBhZGRG
cmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCksIG1hcmt1
cFN0cmluZywgbWFpblJlc291cmNlLT51cmwoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5D
b250ZW50KSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZEZpbGVuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7CiAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTA5LDE4ICs2Miw2IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEhUTUwoY29u
c3QgU3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
UlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLXsKLSAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFn
bWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0
dHJpYnV0ZXM6bnVsbHB0cl0pLmdldCgpKSk7Ci0gICAgcmV0dXJuIGZyYWdtZW50OwotfQotCi1i
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCi17Ci0g
ICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pLmdldCgpKSk7Ci0gICAg
cmV0dXJuIGZyYWdtZW50OwotfQotCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nVHlwZSA9IHR5cGUuY3JlYXRlQ0ZTdHJpbmcoKTsK
QEAgLTEzMSw4ICs3MiwxMSBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8
U2hhCiAgICAgLy8gRklYTUU6IFVzZSBhIGJsb2IgVVJMIGluc3RlYWQuCiAgICAgYXV0byBhcmNo
aXZlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpLCBVUkw6OmZha2VV
UkxXaXRoUmVsYXRpdmVQYXJ0KHJlbGF0aXZlVVJMUGFydCksIG1pbWVUeXBlLCBlbXB0eVN0cmlu
ZygpLCBlbXB0eVN0cmluZygpKTsKICAgICBBU1NFUlQoYXJjaGl2ZSk7Ci0gICAgYWRkRnJhZ21l
bnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRkUmVzb3VyY2UoZnJhbWUsICph
cmNoaXZlKSk7Ci0gICAgcmV0dXJuIGZyYWdtZW50OworICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVh
dGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJjZShmcmFtZSwgKmFyY2hpdmUp
OworICAgIGlmICghZnJhZ21lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZGRGcmFn
bWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHRpdGxlKQpAQCAtMTYzLDE3ICsxMDcsNCBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRVUkwoY29uc3QgVVJMCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJl
YWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCi17Ci0gICAgaWYgKCFhbGxv
d1BsYWluVGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYWRkRnJhZ21lbnQoY3Jl
YXRlRnJhZ21lbnRGcm9tVGV4dChjb250ZXh0LCBbdGV4dCBwcmVjb21wb3NlZFN0cmluZ1dpdGhD
YW5vbmljYWxNYXBwaW5nXSkpOwotICAgIGlmICghZnJhZ21lbnQpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIG1hZGVGcmFnbWVudEZyb21QbGFpblRleHQgPSB0cnVlOwotICAgIHJldHVy
biB0cnVlOwotfQotCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9XZWJDb250
ZW50UmVhZGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L1dlYkNvbnRlbnRSZWFkZXJNYWMubW0JKHJldmlzaW9uIDIyMjA1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL1dlYkNvbnRlbnRSZWFkZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQzLDUwICs0MywxMCBAQAogI2ltcG9ydCAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2lt
cG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQgIlRleHQuaCIKLSNpbXBvcnQgIldlYk5TQXR0cmli
dXRlZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAibWFya3VwLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcikKLXsKLSAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZv
ckltYWdlcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWZyYW1lLmRvY3Vt
ZW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghYnVmZmVyKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUoVVJMKCksICpidWZmZXIpOwotICAgIGlmICghYXJjaGl2ZSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gbWFpblJlc291cmNlID0gYXJj
aGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgaWYgKCFtYWluUmVzb3VyY2UpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGNvbnN0IFN0cmluZyYgdHlwZSA9IG1haW5SZXNvdXJjZS0+bWlt
ZVR5cGUoKTsKLQotICAgIGlmIChmcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5TaG93TUlNRVR5
cGVBc0hUTUwodHlwZSkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoZSBjb2RlIGluIGNyZWF0ZUZy
YWdtZW50QW5kQWRkUmVzb3VyY2VzIGNhbGxzIHNldERlZmVyc0xvYWRpbmcodHJ1ZSkuIERvbid0
IHdlIG5lZWQgdGhhdCBoZXJlPwotICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9
IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgICAgICBsb2FkZXItPmFk
ZEFsbEFyY2hpdmVSZXNvdXJjZXMoKmFyY2hpdmUpOwotCi0gICAgICAgIFN0cmluZyBtYXJrdXBT
dHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFp
blJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKLSAgICAgICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFn
bWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCksIG1hcmt1cFN0cmluZywgbWFpblJlc291
cmNlLT51cmwoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZSh0eXBlKSkgewotICAgICAgICBmcmFnbWVudCA9IGNyZWF0ZUZyYWdt
ZW50Rm9ySW1hZ2VSZXNvdXJjZUFuZEFkZFJlc291cmNlKGZyYW1lLCBtYWluUmVzb3VyY2UucmVs
ZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVy
biBmYWxzZTsKLX0KLQogYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZW5hbWVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKIHsKICAgICBpZiAocGF0aHMuaXNFbXB0eSgpKQpAQCAt
MTQwLDI0ICsxMDAsNiBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRIVE1MKGNvbnN0IFN0
CiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRS
VEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotewotICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnBy
ZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZy
YWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKS5nZXQoKSk7Ci0gICAgcmV0dXJu
IGZyYWdtZW50OwotfQotCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCi17Ci0gICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVG
b3JJbWFnZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZnJhZ21lbnQgPSBjcmVh
dGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgYWRvcHROUyhbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3Vt
ZW50QXR0cmlidXRlczpudWxscHRyXSkuZ2V0KCkpOwotICAgIHJldHVybiBmcmFnbWVudDsKLX0K
LQogYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBBU1NFUlQodHlwZS5jb250YWlucygn
LycpKTsKQEAgLTE4OSwxNyArMTMxLDQgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJM
KGNvbnN0IFVSTAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6
OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQotewotICAgIGlmICghYWxsb3dQbGFp
blRleHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZyYWdtZW50ID0gY3JlYXRlRnJh
Z21lbnRGcm9tVGV4dChjb250ZXh0LCBbdGV4dCBwcmVjb21wb3NlZFN0cmluZ1dpdGhDYW5vbmlj
YWxNYXBwaW5nXSk7Ci0gICAgaWYgKCFmcmFnbWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgbWFkZUZyYWdtZW50RnJvbVBsYWluVGV4dCA9IHRydWU7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0gICAgCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320826</attachid>
            <date>2017-09-14 14:33:10 -0700</date>
            <delta_ts>2017-09-14 15:11:10 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-176884-20170914143308.patch</filename>
            <type>text/plain</type>
            <size>21046</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE3LTA5LTE0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlIGRvZXNuJ3QgbmVlZCB0byBoYW5kbGUgaW1hZ2UgTUlNRSB0eXBlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY4ODQKKworICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIFJlbW92ZSB0aGUgY29kZSB0
byBoYW5kbGUgaW1hZ2UgTUlNRSB0eXBlcyBpbiB0aGUgd2ViIGFyY2hpdmUgb24gbWFjT1Mgc2lu
Y2Ugd2UgaGF2ZSBhIHNlcGFyYXRlIGNvZGUgcGF0aAorICAgICAgICB0byBoYW5kbGUgaW1hZ2Vz
IGluIHRoZSBwYXN0ZWJvYXJkIGRpcmVjdGx5LiBBcyBmYXIgYXMgSSBjYW4gdGVsbCwgdGhpcyBj
b2RlIGlzIG5ldmVyIHVzZWQgaW4gcHJhY3RpY2UuCisKKyAgICAgICAgVGhpcyBhbGxvd3MgbWVy
Z2luZyBpT1MgYW5kIG1hY09TIGNvZGUgdG8gcmVhZCB3ZWIgYXJjaGl2ZSBmcm9tIHRoZSBwYXN0
ZWJvYXJkLiBBbHNvIG1lcmdlZCBtZW1iZXIgZnVuY3Rpb25zCisgICAgICAgIGZvciBoYW5kbGlu
ZyBSVEZEIGFuZCBSVEYgaW4gaU9TIGFuZCBtYWNPUyBpbiBXZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjphZGRGcmFn
bWVudCk6IE1vdmVkIGZyb20gV2ViQ29udGVudFJlYWRlcklPUy5tbSBhbmQgc2ltcGxpZmllZCBz
aW5jZSBhcHBlbmRDaGlsZAorICAgICAgICBrbm93cyBob3cgdG8gYWRkIGEgRG9jdW1lbnRGcmFn
bWVudC4KKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
bnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKTogTWVyZ2VkIGlPUyAvIG1hY09TIGNvZGUgaGVy
ZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KTogRGl0dG8u
CisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9XZWJD
b250ZW50UmVhZGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUpOiBN
b3ZlZCB0byBXZWJDb250ZW50UmVhZGVyQ29jb2EubW0uCisgICAgICAgIChXZWJDb3JlOjpXZWJD
b250ZW50UmVhZGVyOjpyZWFkUlRGRCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29u
dGVudFJlYWRlcjo6cmVhZFJURik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZFBsYWluVGV4dCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvbWFjL1dl
YkNvbnRlbnRSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVy
OjpyZWFkV2ViQXJjaGl2ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJl
YWRlcjo6cmVhZFJURkQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRSVEYpOiBEaXR0by4KKwogMjAxNy0wOS0xNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUlRDRGF0YUNoYW5uZWwgY29ubmVjdGl2aXR5IGlzc3Vl
cyBpbiBTYWZhcmkgMTEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjIwNTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTc4
MSw2ICsxNzgxLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGVkaXRpbmcvVmlzaWJsZVBv
c2l0aW9uLmNwcAogICAgIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKICAgICBlZGl0aW5n
L1Zpc2libGVVbml0cy5jcHAKKyAgICBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuY3BwCiAgICAg
ZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwCiAgICAgZWRpdGluZy9t
YXJrdXAuY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMjA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDMyOCw2
ICs0MzI4LDcgQEAKIAkJOUI1MzJFQTQxQkE5Mjg1NzAwMzhBODI3IC8qIFNsb3RBc3NpZ25tZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjUzMkVB
MjFCQTkyODU3MDAzOEE4MjcgLyogU2xvdEFzc2lnbm1lbnQuaCAqLzsgfTsKIAkJOUI1NUVFRTkx
QjNFODg5ODAwNTM0MkJDIC8qIEVkaXRvckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1NUVFRTgxQjNFODg5ODAwNTM0MkJDIC8qIEVkaXRv
ckNvY29hLm1tICovOyB9OwogCQk5QjU2QzlBQTFDODkzMjlBMDBDNDU2REYgLyogQ3VzdG9tRWxl
bWVudFJlYWN0aW9uUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUI1NkM5QTkxQzg5MzI5QTAwQzQ1NkRGIC8qIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblF1ZXVlLmNwcCAqLzsgfTsKKwkJOUI2MTE2NEExRjZBNTkzMzAwRTkyM0I4IC8qIFdlYkNv
bnRlbnRSZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUI2MTE2NDkxRjZBNTkzMzAwRTkyM0I4IC8qIFdlYkNvbnRlbnRSZWFkZXIuY3BwICov
OyB9OwogCQk5QjY5RDNCNDFCOThGRkU5MDBFMzUxMkIgLyogSFRNTFNsb3RFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNjlEM0IyMUI5
OEZGRTkwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuY3BwICovOyB9OwogCQk5QjY5RDNCNTFC
OThGRkU5MDBFMzUxMkIgLyogSFRNTFNsb3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjY5RDNCMzFCOThGRkU5MDBFMzUxMkIgLyogSFRN
TFNsb3RFbGVtZW50LmggKi87IH07CiAJCTlCNjlEM0I4MUI5OTEwMDcwMEUzNTEyQiAvKiBKU0hU
TUxTbG90RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QjY5RDNCNjFCOTkxMDA3MDBFMzUxMkIgLyogSlNIVE1MU2xvdEVsZW1lbnQuY3Bw
ICovOyB9OwpAQCAtMTI3NzksNiArMTI3ODAsNyBAQAogCQk5QjU1RUVFODFCM0U4ODk4MDA1MzQy
QkMgLyogRWRpdG9yQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBFZGl0b3JDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI1NkM5
QTgxQzg5MzEyODAwQzQ1NkRGIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCNTZDOUE5MUM4OTMyOUEwMEM0NTZERiAvKiBDdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTlCNjExNjQ5MUY2QTU5MzMwMEU5MjNCOCAvKiBXZWJDb250ZW50UmVhZGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkNvbnRlbnRSZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5QjY5RDNCMTFCOThGRjBBMDBFMzUxMkIgLyogSFRNTFNsb3RFbGVtZW50LmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MU2xvdEVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5QjY5RDNCMjFCOThGRkU5MDBFMzUxMkIgLyogSFRNTFNsb3RFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxTbG90RWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNjlEM0IzMUI5OEZGRTkw
MEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSFRNTFNsb3RFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MDYzMiw2ICsyMDYzNCw3IEBACiAJCQkJQTg4M0RGMjYwRjNEMDQ1RDAwRjE5QkY2IC8qIFZpc2li
bGVTZWxlY3Rpb24uaCAqLywKIAkJCQk5MzMwOURDRTA5OUU2NDkxMDA1NkU1ODEgLyogVmlzaWJs
ZVVuaXRzLmNwcCAqLywKIAkJCQk5MzMwOURDRjA5OUU2NDkxMDA1NkU1ODEgLyogVmlzaWJsZVVu
aXRzLmggKi8sCisJCQkJOUI2MTE2NDkxRjZBNTkzMzAwRTkyM0I4IC8qIFdlYkNvbnRlbnRSZWFk
ZXIuY3BwICovLAogCQkJCTlCRjQzMzc2MUY2NzYxOUIwMEUxRkQ3MSAvKiBXZWJDb250ZW50UmVh
ZGVyLmggKi8sCiAJCQkJOTMzMDlERDQwOTlFNjQ5MTAwNTZFNTgxIC8qIFdyYXBDb250ZW50c0lu
RHVtbXlTcGFuQ29tbWFuZC5jcHAgKi8sCiAJCQkJOTMzMDlERDUwOTlFNjQ5MTAwNTZFNTgxIC8q
IFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oICovLApAQCAtMzQ0NzMsNiArMzQ0NzYs
NyBAQAogCQkJCUNEQTI5QTMxMUNCRjc0REEwMDkwMUNDRiAvKiBXZWJBVlBsYXllckNvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkxRjM2RUE5RDFFMjFCQTE3MDA2MjFFMjUgLyogV2Vi
QmFja2dyb3VuZFRhc2tDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU2QzVCOUEx
ODlGMzQ1NzAwODJEMTNDIC8qIFdlYkNvbnNvbGVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk5QjYxMTY0QTFGNkE1OTMzMDBFOTIzQjggLyogV2ViQ29udGVudFJlYWRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5QjkyOTlCMjFGNjc5NkE0MDA2NzIzQzIgLyogV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUIwODExMjQxRjY3Q0RDMDAwNzRCREUyIC8q
IFdlYkNvbnRlbnRSZWFkZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk5QjkyOTlBRTFGNjc4
NjVCMDA2NzIzQzIgLyogV2ViQ29udGVudFJlYWRlck1hYy5tbSBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvbnRlbnRSZWFkZXIuaCIKKworI2luY2x1ZGUgIkRv
Y3VtZW50RnJhZ21lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFdlYkNvbnRl
bnRSZWFkZXI6OmFkZEZyYWdtZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIG5ld0ZyYWdtZW50
KQoreworICAgIGlmICghZnJhZ21lbnQpCisgICAgICAgIGZyYWdtZW50ID0gV1RGTW92ZShuZXdG
cmFnbWVudCk7CisgICAgZWxzZQorICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQobmV3RnJh
Z21lbnQuZ2V0KCkpOworfQorCit9CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29udGVudFJlYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29udGVudFJlYWRlci5oCShyZXZpc2lvbiAyMjIwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTIgKzUwLDEwIEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgYWRk
RnJhZ21lbnQoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYpOwotI2VuZGlmCisgICAgdm9pZCBh
ZGRGcmFnbWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJik7CiAKIHByaXZhdGU6Ci0jaWYgIShQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
Ym9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKICAgICBib29sIHJl
YWRGaWxlbmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAgICBib29sIHJl
YWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwpAQCAtNjcsNyArNjUsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIH07CiAK
LSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgZGVmaW5lZChfX09C
SkNfXykKIHN0cnVjdCBGcmFnbWVudEFuZFJlc291cmNlcyB7CiAgICAgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50OwogICAgIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4gcmVz
b3VyY2VzOwpAQCAtNzUsNSArNzMsNSBAQCBzdHJ1Y3QgRnJhZ21lbnRBbmRSZXNvdXJjZXMgewog
CiBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMo
RnJhbWUmLCBOU0F0dHJpYnV0ZWRTdHJpbmcqKTsKICNlbmRpZgotICAgIAorCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbQkocmV2aXNpb24gMjIyMDUxKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDE0
IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCisjaW5jbHVkZSAiTGVnYWN5V2ViQXJjaGl2ZS5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldl
Yk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1
ZGUgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CiAjaW5jbHVkZSA8d3Rm
L1NvZnRMaW5raW5nLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC02MywzMyArNjksMTAxIEBA
IFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEEKIHsKICAgICBpZiAoIWZy
YW1lLnBhZ2UoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgCisKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwogICAgIGlm
ICghZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSB8fCAhc3RyaW5nKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAKKwogICAgIGJvb2wgd2FzRGVmZXJyaW5nQ2FsbGJhY2tzID0gZnJhbWUu
cGFnZSgpLT5kZWZlcnNMb2FkaW5nKCk7CiAgICAgaWYgKCF3YXNEZWZlcnJpbmdDYWxsYmFja3Mp
CiAgICAgICAgIGZyYW1lLnBhZ2UoKS0+c2V0RGVmZXJzTG9hZGluZyh0cnVlKTsKLSAgICAKKwog
ICAgIGF1dG8mIGNhY2hlZFJlc291cmNlTG9hZGVyID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VM
b2FkZXIoKTsKICAgICBib29sIHdhc0ltYWdlc0VuYWJsZWQgPSBjYWNoZWRSZXNvdXJjZUxvYWRl
ci5pbWFnZXNFbmFibGVkKCk7CiAgICAgaWYgKHdhc0ltYWdlc0VuYWJsZWQpCiAgICAgICAgIGNh
Y2hlZFJlc291cmNlTG9hZGVyLnNldEltYWdlc0VuYWJsZWQoZmFsc2UpOwotICAgIAorCiAgICAg
YXV0byBmcmFnbWVudEFuZFJlc291cmNlcyA9IGNyZWF0ZUZyYWdtZW50KGZyYW1lLCBzdHJpbmcp
OwotICAgIAogICAgIGlmIChhdXRvKiBsb2FkZXIgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpKSB7CiAgICAgICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291
cmNlcy5yZXNvdXJjZXMpCiAgICAgICAgICAgICBsb2FkZXItPmFkZEFyY2hpdmVSZXNvdXJjZShX
VEZNb3ZlKHJlc291cmNlKSk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHdhc0ltYWdlc0VuYWJs
ZWQpCiAgICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLnNldEltYWdlc0VuYWJsZWQodHJ1ZSk7
CiAgICAgaWYgKCF3YXNEZWZlcnJpbmdDYWxsYmFja3MpCiAgICAgICAgIGZyYW1lLnBhZ2UoKS0+
c2V0RGVmZXJzTG9hZGluZyhmYWxzZSk7Ci0gICAgCisKICAgICByZXR1cm4gV1RGTW92ZShmcmFn
bWVudEFuZFJlc291cmNlcy5mcmFnbWVudCk7CiB9CiAKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyKiBidWZmZXIpCit7CisgICAgaWYgKGZyYW1lLnNl
dHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBhcmNo
aXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCAqYnVmZmVyKTsKKyAgICBpZiAo
IWFyY2hpdmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxBcmNoaXZlUmVz
b3VyY2U+IG1haW5SZXNvdXJjZSA9IGFyY2hpdmUtPm1haW5SZXNvdXJjZSgpOworICAgIGlmICgh
bWFpblJlc291cmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHR5cGUgPSBt
YWluUmVzb3VyY2UtPm1pbWVUeXBlKCk7CisgICAgaWYgKCFmcmFtZS5sb2FkZXIoKS5jbGllbnQo
KS5jYW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIC8vIEZJWE1FOiBUaGUgY29kZSBpbiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyBj
YWxscyBzZXREZWZlcnNMb2FkaW5nKHRydWUpLiBEb24ndCB3ZSBuZWVkIHRoYXQgaGVyZT8KKyAg
ICBpZiAoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCkpCisgICAgICAgIGxvYWRlci0+YWRkQWxsQXJjaGl2ZVJlc291cmNlcygqYXJjaGl2ZSk7
CisKKyAgICBhdXRvIG1hcmt1cFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNl
LT5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGFkZEZy
YWdtZW50KGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3Vw
U3RyaW5nLCBtYWluUmVzb3VyY2UtPnVybCgpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNv
bnRlbnQpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBpZiAoZnJhbWUuc2V0dGluZ3Mo
KS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKS5nZXQoKSk7Cisg
ICAgaWYgKCFmcmFnbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkZEZyYWdtZW50
KGZyYWdtZW50LnJlbGVhc2VOb25OdWxsKCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sKKyAg
ICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRB
ZGRSZXNvdXJjZXMoZnJhbWUsIGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bnVsbHB0cl0pLmdldCgpKTsKKyAgICBpZiAoIWZyYWdtZW50KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgYWRkRnJhZ21lbnQoZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBpZiAoIWFsbG93UGxhaW5UZXh0KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21UZXh0KGNv
bnRleHQsIHRleHQucHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZykpOworCisg
ICAgbWFkZUZyYWdtZW50RnJvbVBsYWluVGV4dCA9IHRydWU7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0JKHJldmlz
aW9uIDIyMjA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjMzLDggKzIzMyw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQ
YXN0ZWJvYXJkKFBhc3RlYm8KICAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdt
ZW50ID0gY2xpZW50KCktPmRvY3VtZW50RnJhZ21lbnRGcm9tRGVsZWdhdGUoaSk7CiAgICAgICAg
IGlmICghZnJhZ21lbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICByZWFkZXIu
YWRkRnJhZ21lbnQoV1RGTW92ZShmcmFnbWVudCkpOworICAgICAgICByZWFkZXIuYWRkRnJhZ21l
bnQoZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gcmVhZGVyLmZyYWdtZW50OwpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvV2ViQ29udGVudFJlYWRlcklPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9XZWJDb250ZW50UmVhZGVySU9TLm1tCShyZXZpc2lv
biAyMjIwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9XZWJDb250ZW50UmVhZGVy
SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Miw1OSArNDIsMTIgQEAKICNpbXBvcnQgIk1JTUVU
eXBlUmVnaXN0cnkuaCIKICNpbXBvcnQgIlRleHQuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5o
IgotI2ltcG9ydCAiV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJtYXJr
dXAuaCIKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4K
LSNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CiAjaW1wb3J0
IDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXZvaWQgV2ViQ29udGVudFJlYWRlcjo6YWRkRnJhZ21lbnQoUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+JiYgbmV3RnJhZ21lbnQpCi17Ci0gICAgaWYgKCFuZXdGcmFnbWVudCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKCFmcmFnbWVudCkgewotICAgICAgICBmcmFnbWVudCA9IFdURk1vdmUo
bmV3RnJhZ21lbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgd2hpbGUgKGF1dG8q
IGZpcnN0Q2hpbGQgPSBuZXdGcmFnbWVudC0+Zmlyc3RDaGlsZCgpKSB7Ci0gICAgICAgIGlmIChm
cmFnbWVudC0+YXBwZW5kQ2hpbGQoKmZpcnN0Q2hpbGQpLmhhc0V4Y2VwdGlvbigpKQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJB
cmNoaXZlKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQotewotICAgIGlmICghZnJhbWUuZG9jdW1lbnQo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShVUkwoKSwgKmJ1ZmZlcik7Ci0gICAgaWYgKCFhcmNoaXZlKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBhdXRvKiBtYWluUmVzb3VyY2UgPSBhcmNoaXZlLT5tYWluUmVzb3VyY2UoKTsK
LSAgICBpZiAoIW1haW5SZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0
byYgdHlwZSA9IG1haW5SZXNvdXJjZS0+bWltZVR5cGUoKTsKLSAgICBpZiAoIWZyYW1lLmxvYWRl
cigpLmNsaWVudCgpLmNhblNob3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgLy8gRklYTUU6IFRoZSBjb2RlIGluIGNyZWF0ZUZyYWdtZW50QW5kQWRk
UmVzb3VyY2VzIGNhbGxzIHNldERlZmVyc0xvYWRpbmcodHJ1ZSkuIERvbid0IHdlIG5lZWQgdGhh
dCBoZXJlPwotICAgIGlmIChhdXRvKiBsb2FkZXIgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpKQotICAgICAgICBsb2FkZXItPmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKmFyY2hpdmUp
OwotCi0gICAgYXV0byBtYXJrdXBTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJj
ZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKLSAgICBhZGRG
cmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCksIG1hcmt1
cFN0cmluZywgbWFpblJlc291cmNlLT51cmwoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5D
b250ZW50KSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZEZpbGVuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7CiAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTA5LDE4ICs2Miw2IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEhUTUwoY29u
c3QgU3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
UlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLXsKLSAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFn
bWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0
dHJpYnV0ZXM6bnVsbHB0cl0pLmdldCgpKSk7Ci0gICAgcmV0dXJuIGZyYWdtZW50OwotfQotCi1i
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCi17Ci0g
ICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pLmdldCgpKSk7Ci0gICAg
cmV0dXJuIGZyYWdtZW50OwotfQotCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nVHlwZSA9IHR5cGUuY3JlYXRlQ0ZTdHJpbmcoKTsK
QEAgLTEzMSw4ICs3MiwxMSBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8
U2hhCiAgICAgLy8gRklYTUU6IFVzZSBhIGJsb2IgVVJMIGluc3RlYWQuCiAgICAgYXV0byBhcmNo
aXZlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpLCBVUkw6OmZha2VV
UkxXaXRoUmVsYXRpdmVQYXJ0KHJlbGF0aXZlVVJMUGFydCksIG1pbWVUeXBlLCBlbXB0eVN0cmlu
ZygpLCBlbXB0eVN0cmluZygpKTsKICAgICBBU1NFUlQoYXJjaGl2ZSk7Ci0gICAgYWRkRnJhZ21l
bnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRkUmVzb3VyY2UoZnJhbWUsICph
cmNoaXZlKSk7Ci0gICAgcmV0dXJuIGZyYWdtZW50OworICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVh
dGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJjZShmcmFtZSwgKmFyY2hpdmUp
OworICAgIGlmICghZnJhZ21lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZGRGcmFn
bWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHRpdGxlKQpAQCAtMTYzLDE3ICsxMDcsNCBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRVUkwoY29uc3QgVVJMCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJl
YWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCi17Ci0gICAgaWYgKCFhbGxv
d1BsYWluVGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYWRkRnJhZ21lbnQoY3Jl
YXRlRnJhZ21lbnRGcm9tVGV4dChjb250ZXh0LCBbdGV4dCBwcmVjb21wb3NlZFN0cmluZ1dpdGhD
YW5vbmljYWxNYXBwaW5nXSkpOwotICAgIGlmICghZnJhZ21lbnQpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIG1hZGVGcmFnbWVudEZyb21QbGFpblRleHQgPSB0cnVlOwotICAgIHJldHVy
biB0cnVlOwotfQotCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9XZWJDb250
ZW50UmVhZGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L1dlYkNvbnRlbnRSZWFkZXJNYWMubW0JKHJldmlzaW9uIDIyMjA1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL1dlYkNvbnRlbnRSZWFkZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQzLDUwICs0MywxMCBAQAogI2ltcG9ydCAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2lt
cG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQgIlRleHQuaCIKLSNpbXBvcnQgIldlYk5TQXR0cmli
dXRlZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAibWFya3VwLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcikKLXsKLSAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZv
ckltYWdlcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWZyYW1lLmRvY3Vt
ZW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghYnVmZmVyKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUoVVJMKCksICpidWZmZXIpOwotICAgIGlmICghYXJjaGl2ZSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gbWFpblJlc291cmNlID0gYXJj
aGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgaWYgKCFtYWluUmVzb3VyY2UpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGNvbnN0IFN0cmluZyYgdHlwZSA9IG1haW5SZXNvdXJjZS0+bWlt
ZVR5cGUoKTsKLQotICAgIGlmIChmcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5TaG93TUlNRVR5
cGVBc0hUTUwodHlwZSkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoZSBjb2RlIGluIGNyZWF0ZUZy
YWdtZW50QW5kQWRkUmVzb3VyY2VzIGNhbGxzIHNldERlZmVyc0xvYWRpbmcodHJ1ZSkuIERvbid0
IHdlIG5lZWQgdGhhdCBoZXJlPwotICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9
IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgICAgICBsb2FkZXItPmFk
ZEFsbEFyY2hpdmVSZXNvdXJjZXMoKmFyY2hpdmUpOwotCi0gICAgICAgIFN0cmluZyBtYXJrdXBT
dHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFp
blJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKLSAgICAgICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFn
bWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCksIG1hcmt1cFN0cmluZywgbWFpblJlc291
cmNlLT51cmwoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZSh0eXBlKSkgewotICAgICAgICBmcmFnbWVudCA9IGNyZWF0ZUZyYWdt
ZW50Rm9ySW1hZ2VSZXNvdXJjZUFuZEFkZFJlc291cmNlKGZyYW1lLCBtYWluUmVzb3VyY2UucmVs
ZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVy
biBmYWxzZTsKLX0KLQogYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZW5hbWVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKIHsKICAgICBpZiAocGF0aHMuaXNFbXB0eSgpKQpAQCAt
MTQwLDI0ICsxMDAsNiBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRIVE1MKGNvbnN0IFN0
CiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRS
VEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotewotICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnBy
ZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZy
YWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKS5nZXQoKSk7Ci0gICAgcmV0dXJu
IGZyYWdtZW50OwotfQotCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCi17Ci0gICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVG
b3JJbWFnZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZnJhZ21lbnQgPSBjcmVh
dGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgYWRvcHROUyhbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3Vt
ZW50QXR0cmlidXRlczpudWxscHRyXSkuZ2V0KCkpOwotICAgIHJldHVybiBmcmFnbWVudDsKLX0K
LQogYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBBU1NFUlQodHlwZS5jb250YWlucygn
LycpKTsKQEAgLTE4OSwxNyArMTMxLDQgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJM
KGNvbnN0IFVSTAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6
OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQotewotICAgIGlmICghYWxsb3dQbGFp
blRleHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZyYWdtZW50ID0gY3JlYXRlRnJh
Z21lbnRGcm9tVGV4dChjb250ZXh0LCBbdGV4dCBwcmVjb21wb3NlZFN0cmluZ1dpdGhDYW5vbmlj
YWxNYXBwaW5nXSk7Ci0gICAgaWYgKCFmcmFnbWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgbWFkZUZyYWdtZW50RnJvbVBsYWluVGV4dCA9IHRydWU7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0gICAgCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320830</attachid>
            <date>2017-09-14 15:11:13 -0700</date>
            <delta_ts>2017-09-14 16:43:59 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-176884-20170914151110.patch</filename>
            <type>text/plain</type>
            <size>21048</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE3LTA5LTE0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlIGRvZXNuJ3QgbmVlZCB0byBoYW5kbGUgaW1hZ2UgTUlNRSB0eXBlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY4ODQKKworICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIFJlbW92ZSB0aGUgY29kZSB0
byBoYW5kbGUgaW1hZ2UgTUlNRSB0eXBlcyBpbiB0aGUgd2ViIGFyY2hpdmUgb24gbWFjT1Mgc2lu
Y2Ugd2UgaGF2ZSBhIHNlcGFyYXRlIGNvZGUgcGF0aAorICAgICAgICB0byBoYW5kbGUgaW1hZ2Vz
IGluIHRoZSBwYXN0ZWJvYXJkIGRpcmVjdGx5LiBBcyBmYXIgYXMgSSBjYW4gdGVsbCwgdGhpcyBj
b2RlIGlzIG5ldmVyIHVzZWQgaW4gcHJhY3RpY2UuCisKKyAgICAgICAgVGhpcyBhbGxvd3MgbWVy
Z2luZyBpT1MgYW5kIG1hY09TIGNvZGUgdG8gcmVhZCB3ZWIgYXJjaGl2ZSBmcm9tIHRoZSBwYXN0
ZWJvYXJkLiBBbHNvIG1lcmdlZCBtZW1iZXIgZnVuY3Rpb25zCisgICAgICAgIGZvciBoYW5kbGlu
ZyBSVEZEIGFuZCBSVEYgaW4gaU9TIGFuZCBtYWNPUyBpbiBXZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjphZGRGcmFn
bWVudCk6IE1vdmVkIGZyb20gV2ViQ29udGVudFJlYWRlcklPUy5tbSBhbmQgc2ltcGxpZmllZCBz
aW5jZSBhcHBlbmRDaGlsZAorICAgICAgICBrbm93cyBob3cgdG8gYWRkIGEgRG9jdW1lbnRGcmFn
bWVudC4KKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
bnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKTogTWVyZ2VkIGlPUyAvIG1hY09TIGNvZGUgaGVy
ZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KTogRGl0dG8u
CisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9XZWJD
b250ZW50UmVhZGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUpOiBN
b3ZlZCB0byBXZWJDb250ZW50UmVhZGVyQ29jb2EubW0uCisgICAgICAgIChXZWJDb3JlOjpXZWJD
b250ZW50UmVhZGVyOjpyZWFkUlRGRCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29u
dGVudFJlYWRlcjo6cmVhZFJURik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZFBsYWluVGV4dCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvbWFjL1dl
YkNvbnRlbnRSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVy
OjpyZWFkV2ViQXJjaGl2ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJl
YWRlcjo6cmVhZFJURkQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRSVEYpOiBEaXR0by4KKwogMjAxNy0wOS0xNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUlRDRGF0YUNoYW5uZWwgY29ubmVjdGl2aXR5IGlzc3Vl
cyBpbiBTYWZhcmkgMTEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjIwNTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTc4
MSw2ICsxNzgxLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGVkaXRpbmcvVmlzaWJsZVBv
c2l0aW9uLmNwcAogICAgIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKICAgICBlZGl0aW5n
L1Zpc2libGVVbml0cy5jcHAKKyAgICBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuY3BwCiAgICAg
ZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwCiAgICAgZWRpdGluZy9t
YXJrdXAuY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMjA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDMyOCw2
ICs0MzI4LDcgQEAKIAkJOUI1MzJFQTQxQkE5Mjg1NzAwMzhBODI3IC8qIFNsb3RBc3NpZ25tZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjUzMkVB
MjFCQTkyODU3MDAzOEE4MjcgLyogU2xvdEFzc2lnbm1lbnQuaCAqLzsgfTsKIAkJOUI1NUVFRTkx
QjNFODg5ODAwNTM0MkJDIC8qIEVkaXRvckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1NUVFRTgxQjNFODg5ODAwNTM0MkJDIC8qIEVkaXRv
ckNvY29hLm1tICovOyB9OwogCQk5QjU2QzlBQTFDODkzMjlBMDBDNDU2REYgLyogQ3VzdG9tRWxl
bWVudFJlYWN0aW9uUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUI1NkM5QTkxQzg5MzI5QTAwQzQ1NkRGIC8qIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblF1ZXVlLmNwcCAqLzsgfTsKKwkJOUI2MTE2NEExRjZBNTkzMzAwRTkyM0I4IC8qIFdlYkNv
bnRlbnRSZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUI2MTE2NDkxRjZBNTkzMzAwRTkyM0I4IC8qIFdlYkNvbnRlbnRSZWFkZXIuY3BwICov
OyB9OwogCQk5QjY5RDNCNDFCOThGRkU5MDBFMzUxMkIgLyogSFRNTFNsb3RFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNjlEM0IyMUI5
OEZGRTkwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuY3BwICovOyB9OwogCQk5QjY5RDNCNTFC
OThGRkU5MDBFMzUxMkIgLyogSFRNTFNsb3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjY5RDNCMzFCOThGRkU5MDBFMzUxMkIgLyogSFRN
TFNsb3RFbGVtZW50LmggKi87IH07CiAJCTlCNjlEM0I4MUI5OTEwMDcwMEUzNTEyQiAvKiBKU0hU
TUxTbG90RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QjY5RDNCNjFCOTkxMDA3MDBFMzUxMkIgLyogSlNIVE1MU2xvdEVsZW1lbnQuY3Bw
ICovOyB9OwpAQCAtMTI3NzksNiArMTI3ODAsNyBAQAogCQk5QjU1RUVFODFCM0U4ODk4MDA1MzQy
QkMgLyogRWRpdG9yQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBFZGl0b3JDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI1NkM5
QTgxQzg5MzEyODAwQzQ1NkRGIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCNTZDOUE5MUM4OTMyOUEwMEM0NTZERiAvKiBDdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTlCNjExNjQ5MUY2QTU5MzMwMEU5MjNCOCAvKiBXZWJDb250ZW50UmVhZGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkNvbnRlbnRSZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5QjY5RDNCMTFCOThGRjBBMDBFMzUxMkIgLyogSFRNTFNsb3RFbGVtZW50LmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MU2xvdEVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5QjY5RDNCMjFCOThGRkU5MDBFMzUxMkIgLyogSFRNTFNsb3RFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxTbG90RWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNjlEM0IzMUI5OEZGRTkw
MEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSFRNTFNsb3RFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MDYzMiw2ICsyMDYzNCw3IEBACiAJCQkJQTg4M0RGMjYwRjNEMDQ1RDAwRjE5QkY2IC8qIFZpc2li
bGVTZWxlY3Rpb24uaCAqLywKIAkJCQk5MzMwOURDRTA5OUU2NDkxMDA1NkU1ODEgLyogVmlzaWJs
ZVVuaXRzLmNwcCAqLywKIAkJCQk5MzMwOURDRjA5OUU2NDkxMDA1NkU1ODEgLyogVmlzaWJsZVVu
aXRzLmggKi8sCisJCQkJOUI2MTE2NDkxRjZBNTkzMzAwRTkyM0I4IC8qIFdlYkNvbnRlbnRSZWFk
ZXIuY3BwICovLAogCQkJCTlCRjQzMzc2MUY2NzYxOUIwMEUxRkQ3MSAvKiBXZWJDb250ZW50UmVh
ZGVyLmggKi8sCiAJCQkJOTMzMDlERDQwOTlFNjQ5MTAwNTZFNTgxIC8qIFdyYXBDb250ZW50c0lu
RHVtbXlTcGFuQ29tbWFuZC5jcHAgKi8sCiAJCQkJOTMzMDlERDUwOTlFNjQ5MTAwNTZFNTgxIC8q
IFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oICovLApAQCAtMzQ0NzMsNiArMzQ0NzYs
NyBAQAogCQkJCUNEQTI5QTMxMUNCRjc0REEwMDkwMUNDRiAvKiBXZWJBVlBsYXllckNvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkxRjM2RUE5RDFFMjFCQTE3MDA2MjFFMjUgLyogV2Vi
QmFja2dyb3VuZFRhc2tDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU2QzVCOUEx
ODlGMzQ1NzAwODJEMTNDIC8qIFdlYkNvbnNvbGVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk5QjYxMTY0QTFGNkE1OTMzMDBFOTIzQjggLyogV2ViQ29udGVudFJlYWRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5QjkyOTlCMjFGNjc5NkE0MDA2NzIzQzIgLyogV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUIwODExMjQxRjY3Q0RDMDAwNzRCREUyIC8q
IFdlYkNvbnRlbnRSZWFkZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk5QjkyOTlBRTFGNjc4
NjVCMDA2NzIzQzIgLyogV2ViQ29udGVudFJlYWRlck1hYy5tbSBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvbnRlbnRSZWFkZXIuaCIKKworI2luY2x1ZGUgIkRv
Y3VtZW50RnJhZ21lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFdlYkNvbnRl
bnRSZWFkZXI6OmFkZEZyYWdtZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIG5ld0ZyYWdtZW50
KQoreworICAgIGlmICghZnJhZ21lbnQpCisgICAgICAgIGZyYWdtZW50ID0gV1RGTW92ZShuZXdG
cmFnbWVudCk7CisgICAgZWxzZQorICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQobmV3RnJh
Z21lbnQuZ2V0KCkpOworfQorCit9CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29udGVudFJlYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29udGVudFJlYWRlci5oCShyZXZpc2lvbiAyMjIwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTIgKzUwLDEwIEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgYWRk
RnJhZ21lbnQoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYpOwotI2VuZGlmCisgICAgdm9pZCBh
ZGRGcmFnbWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJik7CiAKIHByaXZhdGU6Ci0jaWYgIShQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
Ym9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKICAgICBib29sIHJl
YWRGaWxlbmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAgICBib29sIHJl
YWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwpAQCAtNjcsNyArNjUsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIH07CiAK
LSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgZGVmaW5lZChfX09C
SkNfXykKIHN0cnVjdCBGcmFnbWVudEFuZFJlc291cmNlcyB7CiAgICAgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50OwogICAgIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4gcmVz
b3VyY2VzOwpAQCAtNzUsNSArNzMsNSBAQCBzdHJ1Y3QgRnJhZ21lbnRBbmRSZXNvdXJjZXMgewog
CiBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMo
RnJhbWUmLCBOU0F0dHJpYnV0ZWRTdHJpbmcqKTsKICNlbmRpZgotICAgIAorCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbQkocmV2aXNpb24gMjIyMDUxKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDE0
IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCisjaW5jbHVkZSAiTGVnYWN5V2ViQXJjaGl2ZS5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldl
Yk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1
ZGUgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CiAjaW5jbHVkZSA8d3Rm
L1NvZnRMaW5raW5nLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC02MywzMyArNjksMTAxIEBA
IFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEEKIHsKICAgICBpZiAoIWZy
YW1lLnBhZ2UoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgCisKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwogICAgIGlm
ICghZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSB8fCAhc3RyaW5nKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAKKwogICAgIGJvb2wgd2FzRGVmZXJyaW5nQ2FsbGJhY2tzID0gZnJhbWUu
cGFnZSgpLT5kZWZlcnNMb2FkaW5nKCk7CiAgICAgaWYgKCF3YXNEZWZlcnJpbmdDYWxsYmFja3Mp
CiAgICAgICAgIGZyYW1lLnBhZ2UoKS0+c2V0RGVmZXJzTG9hZGluZyh0cnVlKTsKLSAgICAKKwog
ICAgIGF1dG8mIGNhY2hlZFJlc291cmNlTG9hZGVyID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VM
b2FkZXIoKTsKICAgICBib29sIHdhc0ltYWdlc0VuYWJsZWQgPSBjYWNoZWRSZXNvdXJjZUxvYWRl
ci5pbWFnZXNFbmFibGVkKCk7CiAgICAgaWYgKHdhc0ltYWdlc0VuYWJsZWQpCiAgICAgICAgIGNh
Y2hlZFJlc291cmNlTG9hZGVyLnNldEltYWdlc0VuYWJsZWQoZmFsc2UpOwotICAgIAorCiAgICAg
YXV0byBmcmFnbWVudEFuZFJlc291cmNlcyA9IGNyZWF0ZUZyYWdtZW50KGZyYW1lLCBzdHJpbmcp
OwotICAgIAogICAgIGlmIChhdXRvKiBsb2FkZXIgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpKSB7CiAgICAgICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291
cmNlcy5yZXNvdXJjZXMpCiAgICAgICAgICAgICBsb2FkZXItPmFkZEFyY2hpdmVSZXNvdXJjZShX
VEZNb3ZlKHJlc291cmNlKSk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHdhc0ltYWdlc0VuYWJs
ZWQpCiAgICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLnNldEltYWdlc0VuYWJsZWQodHJ1ZSk7
CiAgICAgaWYgKCF3YXNEZWZlcnJpbmdDYWxsYmFja3MpCiAgICAgICAgIGZyYW1lLnBhZ2UoKS0+
c2V0RGVmZXJzTG9hZGluZyhmYWxzZSk7Ci0gICAgCisKICAgICByZXR1cm4gV1RGTW92ZShmcmFn
bWVudEFuZFJlc291cmNlcy5mcmFnbWVudCk7CiB9CiAKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyKiBidWZmZXIpCit7CisgICAgaWYgKGZyYW1lLnNl
dHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBhcmNo
aXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCAqYnVmZmVyKTsKKyAgICBpZiAo
IWFyY2hpdmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxBcmNoaXZlUmVz
b3VyY2U+IG1haW5SZXNvdXJjZSA9IGFyY2hpdmUtPm1haW5SZXNvdXJjZSgpOworICAgIGlmICgh
bWFpblJlc291cmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHR5cGUgPSBt
YWluUmVzb3VyY2UtPm1pbWVUeXBlKCk7CisgICAgaWYgKCFmcmFtZS5sb2FkZXIoKS5jbGllbnQo
KS5jYW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIC8vIEZJWE1FOiBUaGUgY29kZSBpbiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyBj
YWxscyBzZXREZWZlcnNMb2FkaW5nKHRydWUpLiBEb24ndCB3ZSBuZWVkIHRoYXQgaGVyZT8KKyAg
ICBpZiAoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCkpCisgICAgICAgIGxvYWRlci0+YWRkQWxsQXJjaGl2ZVJlc291cmNlcygqYXJjaGl2ZSk7
CisKKyAgICBhdXRvIG1hcmt1cFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNl
LT5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGFkZEZy
YWdtZW50KGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3Vw
U3RyaW5nLCBtYWluUmVzb3VyY2UtPnVybCgpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNv
bnRlbnQpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBpZiAoZnJhbWUuc2V0dGluZ3Mo
KS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKS5nZXQoKSk7Cisg
ICAgaWYgKCFmcmFnbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkZEZyYWdtZW50
KGZyYWdtZW50LnJlbGVhc2VOb25OdWxsKCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sKKyAg
ICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRB
ZGRSZXNvdXJjZXMoZnJhbWUsIGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bnVsbHB0cl0pLmdldCgpKTsKKyAgICBpZiAoIWZyYWdtZW50KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgYWRkRnJhZ21lbnQoZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBpZiAoIWFsbG93UGxhaW5UZXh0KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21UZXh0KGNv
bnRleHQsIFt0ZXh0IHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddKSk7CisK
KyAgICBtYWRlRnJhZ21lbnRGcm9tUGxhaW5UZXh0ID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQkocmV2
aXNpb24gMjIyMDUxKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsOCArMjMzLDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlV2l0
aFBhc3RlYm9hcmQoUGFzdGVibwogICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJh
Z21lbnQgPSBjbGllbnQoKS0+ZG9jdW1lbnRGcmFnbWVudEZyb21EZWxlZ2F0ZShpKTsKICAgICAg
ICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHJlYWRl
ci5hZGRGcmFnbWVudChXVEZNb3ZlKGZyYWdtZW50KSk7CisgICAgICAgIHJlYWRlci5hZGRGcmFn
bWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAKICAgICBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSByZWFkZXIuZnJhZ21lbnQ7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2lvcy9XZWJDb250ZW50UmVhZGVySU9TLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL1dlYkNvbnRlbnRSZWFkZXJJT1MubW0JKHJldmlz
aW9uIDIyMjA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL1dlYkNvbnRlbnRSZWFk
ZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDU5ICs0MiwxMiBAQAogI2ltcG9ydCAiTUlN
RVR5cGVSZWdpc3RyeS5oIgogI2ltcG9ydCAiVGV4dC5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVz
LmgiCi0jaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIm1h
cmt1cC5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5o
PgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaD4KICNpbXBv
cnQgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdm9pZCBXZWJDb250ZW50UmVhZGVyOjphZGRGcmFnbWVudChSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4mJiBuZXdGcmFnbWVudCkKLXsKLSAgICBpZiAoIW5ld0ZyYWdtZW50KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoIWZyYWdtZW50KSB7Ci0gICAgICAgIGZyYWdtZW50ID0gV1RGTW92
ZShuZXdGcmFnbWVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB3aGlsZSAoYXV0
byogZmlyc3RDaGlsZCA9IG5ld0ZyYWdtZW50LT5maXJzdENoaWxkKCkpIHsKLSAgICAgICAgaWYg
KGZyYWdtZW50LT5hcHBlbmRDaGlsZCgqZmlyc3RDaGlsZCkuaGFzRXhjZXB0aW9uKCkpCi0gICAg
ICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdl
YkFyY2hpdmUoU2hhcmVkQnVmZmVyKiBidWZmZXIpCi17Ci0gICAgaWYgKCFmcmFtZS5kb2N1bWVu
dCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKFVSTCgpLCAqYnVmZmVyKTsKLSAgICBpZiAoIWFyY2hpdmUpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGF1dG8qIG1haW5SZXNvdXJjZSA9IGFyY2hpdmUtPm1haW5SZXNvdXJjZSgp
OwotICAgIGlmICghbWFpblJlc291cmNlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBh
dXRvJiB0eXBlID0gbWFpblJlc291cmNlLT5taW1lVHlwZSgpOwotICAgIGlmICghZnJhbWUubG9h
ZGVyKCkuY2xpZW50KCkuY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAvLyBGSVhNRTogVGhlIGNvZGUgaW4gY3JlYXRlRnJhZ21lbnRBbmRB
ZGRSZXNvdXJjZXMgY2FsbHMgc2V0RGVmZXJzTG9hZGluZyh0cnVlKS4gRG9uJ3Qgd2UgbmVlZCB0
aGF0IGhlcmU/Ci0gICAgaWYgKGF1dG8qIGxvYWRlciA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCkpCi0gICAgICAgIGxvYWRlci0+YWRkQWxsQXJjaGl2ZVJlc291cmNlcygqYXJjaGl2
ZSk7Ci0KLSAgICBhdXRvIG1hcmt1cFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291
cmNlLT5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOwotICAgIGFk
ZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFy
a3VwU3RyaW5nLCBtYWluUmVzb3VyY2UtPnVybCgpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdp
bkNvbnRlbnQpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkRmlsZW5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKIHsKICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMDksMTggKzYyLDYgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSFRNTChj
b25zdCBTdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotewotICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZy
YWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50
QXR0cmlidXRlczpudWxscHRyXSkuZ2V0KCkpKTsKLSAgICByZXR1cm4gZnJhZ21lbnQ7Ci19Ci0K
LWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLXsK
LSAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgYWRv
cHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSkuZ2V0KCkpKTsKLSAg
ICByZXR1cm4gZnJhZ21lbnQ7Ci19Ci0KIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdl
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmdUeXBlID0gdHlwZS5jcmVhdGVDRlN0cmluZygp
OwpAQCAtMTMxLDggKzcyLDExIEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJl
ZjxTaGEKICAgICAvLyBGSVhNRTogVXNlIGEgYmxvYiBVUkwgaW5zdGVhZC4KICAgICBhdXRvIGFy
Y2hpdmUgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIFVSTDo6ZmFr
ZVVSTFdpdGhSZWxhdGl2ZVBhcnQocmVsYXRpdmVVUkxQYXJ0KSwgbWltZVR5cGUsIGVtcHR5U3Ry
aW5nKCksIGVtcHR5U3RyaW5nKCkpOwogICAgIEFTU0VSVChhcmNoaXZlKTsKLSAgICBhZGRGcmFn
bWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJjZShmcmFtZSwg
KmFyY2hpdmUpKTsKLSAgICByZXR1cm4gZnJhZ21lbnQ7CisgICAgYXV0byBmcmFnbWVudCA9IGNy
ZWF0ZUZyYWdtZW50Rm9ySW1hZ2VSZXNvdXJjZUFuZEFkZFJlc291cmNlKGZyYW1lLCAqYXJjaGl2
ZSk7CisgICAgaWYgKCFmcmFnbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkZEZy
YWdtZW50KGZyYWdtZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiB0cnVlOwogfQog
CiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdGl0bGUpCkBAIC0xNjMsMTcgKzEwNyw0IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZFVSTChjb25zdCBVUkwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50
UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKLXsKLSAgICBpZiAoIWFs
bG93UGxhaW5UZXh0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhZGRGcmFnbWVudChj
cmVhdGVGcmFnbWVudEZyb21UZXh0KGNvbnRleHQsIFt0ZXh0IHByZWNvbXBvc2VkU3RyaW5nV2l0
aENhbm9uaWNhbE1hcHBpbmddKSk7Ci0gICAgaWYgKCFmcmFnbWVudCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgbWFkZUZyYWdtZW50RnJvbVBsYWluVGV4dCA9IHRydWU7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1dlYkNv
bnRlbnRSZWFkZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvV2ViQ29udGVudFJlYWRlck1hYy5tbQkocmV2aXNpb24gMjIyMDUxKQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvV2ViQ29udGVudFJlYWRlck1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNDMsNTAgKzQzLDEwIEBACiAjaW1wb3J0ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAj
aW1wb3J0ICJTZXR0aW5ncy5oIgogI2ltcG9ydCAiVGV4dC5oIgotI2ltcG9ydCAiV2ViTlNBdHRy
aWJ1dGVkU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1
ZmZlciogYnVmZmVyKQotewotICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBl
Rm9ySW1hZ2VzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZnJhbWUuZG9j
dW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFidWZmZXIpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShVUkwoKSwgKmJ1ZmZlcik7Ci0gICAgaWYgKCFhcmNoaXZlKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UgPSBh
cmNoaXZlLT5tYWluUmVzb3VyY2UoKTsKLSAgICBpZiAoIW1haW5SZXNvdXJjZSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgY29uc3QgU3RyaW5nJiB0eXBlID0gbWFpblJlc291cmNlLT5t
aW1lVHlwZSgpOwotCi0gICAgaWYgKGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhblNob3dNSU1F
VHlwZUFzSFRNTCh0eXBlKSkgewotICAgICAgICAvLyBGSVhNRTogVGhlIGNvZGUgaW4gY3JlYXRl
RnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMgY2FsbHMgc2V0RGVmZXJzTG9hZGluZyh0cnVlKS4gRG9u
J3Qgd2UgbmVlZCB0aGF0IGhlcmU/Ci0gICAgICAgIGlmIChEb2N1bWVudExvYWRlciogbG9hZGVy
ID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgICAgIGxvYWRlci0+
YWRkQWxsQXJjaGl2ZVJlc291cmNlcygqYXJjaGl2ZSk7Ci0KLSAgICAgICAgU3RyaW5nIG1hcmt1
cFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBt
YWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOwotICAgICAgICBmcmFnbWVudCA9IGNyZWF0ZUZy
YWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwU3RyaW5nLCBtYWluUmVz
b3VyY2UtPnVybCgpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlKHR5cGUpKSB7Ci0gICAgICAgIGZyYWdtZW50ID0gY3JlYXRlRnJh
Z21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRkUmVzb3VyY2UoZnJhbWUsIG1haW5SZXNvdXJjZS5y
ZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0
dXJuIGZhbHNlOwotfQotCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRGaWxlbmFtZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogewogICAgIGlmIChwYXRocy5pc0VtcHR5KCkpCkBA
IC0xNDAsMjQgKzEwMCw2IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEhUTUwoY29uc3Qg
U3QKICAgICByZXR1cm4gZnJhZ21lbnQ7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVh
ZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCi17Ci0gICAgaWYgKGZyYW1lLnNldHRpbmdzKCku
cHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgYWRvcHROUyhb
W05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pLmdldCgpKTsKLSAgICByZXR1
cm4gZnJhZ21lbnQ7Ci19Ci0KLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKLXsKLSAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlw
ZUZvckltYWdlcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmcmFnbWVudCA9IGNy
ZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9j
dW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKS5nZXQoKSk7Ci0gICAgcmV0dXJuIGZyYWdtZW50Owot
fQotCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIEFTU0VSVCh0eXBlLmNvbnRhaW5z
KCcvJykpOwpAQCAtMTg5LDE3ICsxMzEsNCBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRV
UkwoY29uc3QgVVJMCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCi17Ci0gICAgaWYgKCFhbGxvd1Bs
YWluVGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZnJhZ21lbnQgPSBjcmVhdGVG
cmFnbWVudEZyb21UZXh0KGNvbnRleHQsIFt0ZXh0IHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9u
aWNhbE1hcHBpbmddKTsKLSAgICBpZiAoIWZyYWdtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBtYWRlRnJhZ21lbnRGcm9tUGxhaW5UZXh0ID0gdHJ1ZTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLSAgICAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>