<?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>213986</bug_id>
          
          <creation_ts>2020-07-06 00:54:03 -0700</creation_ts>
          <short_desc>[Win] Implement Pasteboard::writeCustomData for Web Inspector Console tab</short_desc>
          <delta_ts>2020-07-07 04:32:14 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 10</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tomoki Imai">tomoki.imai</reporter>
          <assigned_to name="Tomoki Imai">tomoki.imai</assigned_to>
          <cc>don.olmstead</cc>
    
    <cc>fujii</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1668988</commentid>
    <comment_count>0</comment_count>
    <who name="Tomoki Imai">tomoki.imai</who>
    <bug_when>2020-07-06 00:54:03 -0700</bug_when>
    <thetext>Like GTK bug 177633, Windows should have Pasteboard::writeCustomData implemented.

Pasteboard::writeCustomData is required to support &quot;copy&quot; or &quot;Ctrl-C&quot; in web inspector Console tab.
Currently, &quot;Ctrl-C&quot; in Console tab doesn&apos;t have any effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668989</commentid>
    <comment_count>1</comment_count>
      <attachid>403577</attachid>
    <who name="Tomoki Imai">tomoki.imai</who>
    <bug_when>2020-07-06 01:06:34 -0700</bug_when>
    <thetext>Created attachment 403577
patch

Patch to implement Pasteboard::writeCustomData for Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668994</commentid>
    <comment_count>2</comment_count>
      <attachid>403580</attachid>
    <who name="Tomoki Imai">tomoki.imai</who>
    <bug_when>2020-07-06 01:19:46 -0700</bug_when>
    <thetext>Created attachment 403580
patch

Fixed style check error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668996</commentid>
    <comment_count>3</comment_count>
      <attachid>403581</attachid>
    <who name="Tomoki Imai">tomoki.imai</who>
    <bug_when>2020-07-06 01:33:45 -0700</bug_when>
    <thetext>Created attachment 403581
Where we failed to copy in WebInspector

How to reproduce the web inspector copy issue.

1. Open MiniBrowser, with arbitrarily URL.
2. Go to Console tab
3. Input some JS statement and execute
4. Try to copy the output or previous input by select the cell and Ctrl-C.

Actual result:
Nothing is copied

Expected result:
The previous input or output should be copied to the pasteboard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669167</commentid>
    <comment_count>4</comment_count>
      <attachid>403580</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-07-06 14:36:24 -0700</bug_when>
    <thetext>Comment on attachment 403580
patch

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

&gt; Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp:207
&gt; +HGLOBAL createGlobalData(const Vector&lt;T&gt;&amp; vector)

I think createGlobalData should take (uint8_t* data, size_t length) as the arguments.
Then, I don&apos;t need to add PasteboardCustomData::createBuffer().

&gt; Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp:209
&gt;      HGLOBAL vm = ::GlobalAlloc(GPTR, vector.size() + 1);

According to SetClipboardData spec, it should be GMEM_MOVEABLE .
Do you know the reason why GMEM_MOVEABLE isn&apos;t given?

SetClipboardData function (winuser.h) - Win32 apps | Microsoft Docs
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setclipboarddata

&gt; If the hMem parameter identifies a memory object, the object must
&gt; have been allocated using the function with the GMEM_MOVEABLE
&gt; flag.

&gt; Source/WebCore/platform/win/PasteboardWin.cpp:257
&gt; +            return PasteboardCustomData::fromBuffer(vector);

This vector is used temporarily. I think it&apos;s better to use PasteboardCustomData::fromPersistenceDecoder.
&gt; auto customData = PasteboardCustomData::fromPersistenceDecoder({ data, size });
&gt; (...)
&gt; return curtomData;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669182</commentid>
    <comment_count>5</comment_count>
      <attachid>403580</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-07-06 14:53:49 -0700</bug_when>
    <thetext>Comment on attachment 403580
patch

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

&gt; Source/WebCore/platform/win/PasteboardWin.cpp:1160
&gt; +            HGLOBAL cbData = createGlobalData(customData.createBuffer());

If you remove PasteboardCustomData::createBuffer() and change the arguments of createGlobalData, this code would look like:

auto sharedBuffer = customData.createSharedBuffer();
HGLOBAL cbData = createGlobalData(sharedBuffer.data(), sharedBuffer.size());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669184</commentid>
    <comment_count>6</comment_count>
      <attachid>403580</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-07-06 14:56:41 -0700</bug_when>
    <thetext>Comment on attachment 403580
patch

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

&gt; Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp:212
&gt; +    T* buffer = static_cast&lt;T*&gt;(GlobalLock(vm));

Ditto.

&gt; Source/WebCore/platform/win/PasteboardWin.cpp:250
&gt; +            uint8_t* data = static_cast&lt;uint8_t*&gt;(GlobalLock(cbData));

uint8_t* data = static_cast&lt;uint8_t*&gt;(...);
I think these code seems redundant because there are the same types both sides.
auto data = static_cast&lt;uint8_t*&gt;(...);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669200</commentid>
    <comment_count>7</comment_count>
      <attachid>403580</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-07-06 15:39:24 -0700</bug_when>
    <thetext>Comment on attachment 403580
patch

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        * platform/PasteboardCustomData.cpp: Currently Windows ports don&apos;t use SharedBuffer, because PasteboardWin uses the native APIs in WebProcess.

IIUC, WebCore::SharedBuffer is a platform specifc data backed segmented ref-counted buffer. It doens&apos;t imply multi-process shared memory like WebKit::SharedMemory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669334</commentid>
    <comment_count>8</comment_count>
      <attachid>403668</attachid>
    <who name="Tomoki Imai">tomoki.imai</who>
    <bug_when>2020-07-06 23:18:44 -0700</bug_when>
    <thetext>Created attachment 403668
patch

Applied Fujii -san&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669335</commentid>
    <comment_count>9</comment_count>
    <who name="Tomoki Imai">tomoki.imai</who>
    <bug_when>2020-07-06 23:35:25 -0700</bug_when>
    <thetext>Thanks for your review!

(In reply to Fujii Hironori from comment #4)
&gt; Comment on attachment 403580 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403580&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp:207
&gt; &gt; +HGLOBAL createGlobalData(const Vector&lt;T&gt;&amp; vector)
&gt; 
&gt; I think createGlobalData should take (uint8_t* data, size_t length) as the
&gt; arguments.
&gt; Then, I don&apos;t need to add PasteboardCustomData::createBuffer().

I agree, fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp:209
&gt; &gt;      HGLOBAL vm = ::GlobalAlloc(GPTR, vector.size() + 1);
&gt; 
&gt; According to SetClipboardData spec, it should be GMEM_MOVEABLE .
&gt; Do you know the reason why GMEM_MOVEABLE isn&apos;t given?
&gt; 
&gt; SetClipboardData function (winuser.h) - Win32 apps | Microsoft Docs
&gt; https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-
&gt; setclipboarddata
&gt; 
&gt; &gt; If the hMem parameter identifies a memory object, the object must
&gt; &gt; have been allocated using the function with the GMEM_MOVEABLE
&gt; &gt; flag.
&gt; 

Good point, but I don&apos;t know.
Existing code also has the same issue. `createGlobalData` variants called GlobalAlloc with argument GPTR.
GPTR is equal to GMEM_FIXED | GMEM_ZEROINIT according to https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-globalalloc.

&gt; &gt; Source/WebCore/platform/win/PasteboardWin.cpp:257
&gt; &gt; +            return PasteboardCustomData::fromBuffer(vector);
&gt; 
&gt; This vector is used temporarily. I think it&apos;s better to use
&gt; PasteboardCustomData::fromPersistenceDecoder.
&gt; &gt; auto customData = PasteboardCustomData::fromPersistenceDecoder({ data, size });
&gt; &gt; (...)
&gt; &gt; return curtomData;

Replaced with your suggestion.
The reason why I created a vector temporarily was to minimize the duration between GlobalLock and GlobalUnlock.
But I don&apos;t think decoding PasteboardCustomData takes so long.

(In reply to Fujii Hironori from comment #5)
&gt; Comment on attachment 403580 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403580&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/win/PasteboardWin.cpp:1160
&gt; &gt; +            HGLOBAL cbData = createGlobalData(customData.createBuffer());
&gt; 
&gt; If you remove PasteboardCustomData::createBuffer() and change the arguments
&gt; of createGlobalData, this code would look like:
&gt; 
&gt; auto sharedBuffer = customData.createSharedBuffer();
&gt; HGLOBAL cbData = createGlobalData(sharedBuffer.data(), sharedBuffer.size());

Thanks, I had to reinterpret_cast sharedBuffer.data() because it returns char*.
Doing reinterpret_cast looks safe because SharedBuffer::decoder() also does.

(In reply to Fujii Hironori from comment #7)
&gt; Comment on attachment 403580 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403580&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:14
&gt; &gt; +        * platform/PasteboardCustomData.cpp: Currently Windows ports don&apos;t use SharedBuffer, because PasteboardWin uses the native APIs in WebProcess.
&gt; 
&gt; IIUC, WebCore::SharedBuffer is a platform specifc data backed segmented
&gt; ref-counted buffer. It doens&apos;t imply multi-process shared memory like
&gt; WebKit::SharedMemory.

Thanks, it has helper functions, for example decoder(), but not limited to shared memory usage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669363</commentid>
    <comment_count>10</comment_count>
    <who name="Tomoki Imai">tomoki.imai</who>
    <bug_when>2020-07-07 03:54:14 -0700</bug_when>
    <thetext>Thanks for your review!

I&apos;ll cq+.
I see some test failures on Win about webanimations according to EWS, but I believe they are not related to this patch.
GTK and WPE reported the same issue in following bugs.
- bug 211948 
- bug 212020 
- bug 213783</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669365</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-07 04:31:31 -0700</bug_when>
    <thetext>Committed r264014: &lt;https://trac.webkit.org/changeset/264014&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403668.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669366</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-07 04:32:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/65171948&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403577</attachid>
            <date>2020-07-06 01:06:34 -0700</date>
            <delta_ts>2020-07-06 01:19:46 -0700</delta_ts>
            <desc>patch</desc>
            <filename>support-customdata-1.patch</filename>
            <type>text/plain</type>
            <size>15538</size>
            <attacher name="Tomoki Imai">tomoki.imai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZDJmYWVlNGE0ZDAuLjk1ZTFiMzYwYWMxMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIwLTA3LTAzICBUb21va2kgSW1haSAgPFRvbW9raS5JbWFpQHNvbnkuY29tPgorCisgICAg
ICAgIFtXaW5dIEltcGxlbWVudCBQYXN0ZWJvYXJkOjp3cml0ZUN1c3RvbURhdGEgZm9yIFdlYiBJ
bnNwZWN0b3IgQ29uc29sZSB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMzk4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vdyBwYXN0ZWJvYXJkIHRlc3RzIHJlbGF0ZWQgdG8gY3VzdG9tIGRhdGEg
cGFzcy4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIw
LTA3LTAyICBLYXJsIFJhY2tsZXIgIDxyYWNrbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbIG1h
Y09TIHdrMSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94
L292ZXJmbG93LWF1dG8tMDA4Lmh0bWwgaXMgZmxha3kgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjMTA2OTIyMzA4MjcuLjVjNTgzMWRjNTMw
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTExODYs
OCArMTE4Niw2IEBAIGVkaXRpbmcvcGFzdGVib2FyZC9kb20tcGFzdGUvIFsgU2tpcCBdCiBbIERl
YnVnIF0gZWRpdGluZy9zZWxlY3Rpb24vNDk4Mzg1OC5odG1sIFsgU2tpcCBdICMgRGVidWcgQXNz
ZXJ0aW9uCiBbIERlYnVnIF0gZWRpdGluZy9zZWxlY3Rpb24vNDk3NTEyMC5odG1sIFsgU2tpcCBd
ICMgRGVidWcgQXNzZXJ0aW9uCiAKLSMgQ3VzdG9tIHBhc3RlYm9hcmQgZGF0YSBpcyBub3Qgc3Vw
cG9ydGVkIG9uIFdpbmRvd3MuCi1lZGl0aW5nL3Bhc3RlYm9hcmQvY2xpcGJvYXJkLWN1c3RvbURh
dGEuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY29weS1wYXN0
ZS11cmwtYWNyb3NzLW9yaWdpbi1zYW5pdGl6ZXMtdXJsLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVz
dHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NvcHktcGFzdGUtaHRtbC1hY3Jvc3Mtb3JpZ2luLXNhbml0
aXplcy1odG1sLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2Nv
cHktcGFzdGUtaHRtbC1jcm9zcy1vcmlnaW4taWZyYW1lLWFjcm9zcy1vcmlnaW4uaHRtbCBbIFNr
aXAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDM3N2JmNDdmYmMyNi4uZGFkZTE1Mjc2MjEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzQgQEAKKzIwMjAtMDctMDMgIFRvbW9raSBJbWFpICA8VG9tb2tpLkltYWlA
c29ueS5jb20+CisKKyAgICAgICAgW1dpbl0gSW1wbGVtZW50IFBhc3RlYm9hcmQ6OndyaXRlQ3Vz
dG9tRGF0YSBmb3IgV2ViIEluc3BlY3RvciBDb25zb2xlIHRhYgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzOTg2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IFBhc3RlYm9hcmQ6OndyaXRl
Q3VzdG9tRGF0YSBhbmQgUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yQmluZGluZ3MuCisgICAgICAg
IFRoaXMgZml4ZXMgdGhlIGlzc3VlIHdoaWNoIHdlIGNhbm5vdCBjb3B5IHRleHQgaW4gV2ViSW5z
cGVjdG9yJ3MgQ29uc29sZSB0YWIuCisKKyAgICAgICAgV2UgZW5hYmxlIHNvbWUgZXhpc3Rpbmcg
dGVzdGNhc2VzIGZvciBwYXN0ZWJvYXJkLgorCisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDogQ3VycmVu
dGx5IFdpbmRvd3MgcG9ydHMgZG9uJ3QgdXNlIFNoYXJlZEJ1ZmZlciwgYmVjYXVzZSBQYXN0ZWJv
YXJkV2luIHVzZXMgdGhlIG5hdGl2ZSBBUElzIGluIFdlYlByb2Nlc3MuCisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KTogVXNl
IGNyZWF0ZUJ1ZmZlciB0byBpbXBsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y3JlYXRlQnVmZmVyIGNvbnN0KTogVmVjdG9yPHVpbnQ4X3Q+IHZhcmlhbnQg
b2YgZnJvbVNoYXJlZEJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKTogSGVscGVyIGZ1bmN0aW9uIGZvciBmcm9tU2hh
cmVkQnVmZmVyIGFuZCBmcm9tQnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOiBVc2UgZnJvbVBlcnNpc3RlbmNlRGVjb2RlciB0
byBpbXBsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bUJ1ZmZlcik6IFZlY3Rvcjx1aW50OF90PiB2YXJpYW50IG9mIGZyb21TaGFyZWRCdWZmZXIuCisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUdsb2JhbERhdGEpOiBBZGQgdWludDhfdCB2YXJpYW50IGZvciBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y3JlYXRlQnVmZmVyLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGls
aXRpZXNXaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpmaW5pc2hDcmVhdGluZ1Bhc3RlYm9hcmQpOiBS
ZWdpc3RlciBuZXcgY2xpcGJvYXJkIGZvcm1hdCBDdXN0b21EYXRhQ2xpcGJvYXJkRm9ybWF0Lgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKTog
SGVscGVyIGZ1bmN0aW9uIHRvIHJlYWQgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbSB0aGUgcGFz
dGVib2FyZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckJpbmRp
bmdzKTogSW1wbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZE9yaWdp
bik6IEltcGxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJ
bkN1c3RvbURhdGEpOiBJbXBsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3
cml0ZUN1c3RvbURhdGEpOiBJbXBsZW1lbnQuCisKIDIwMjAtMDctMDIgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVcGRhdGUgTWFjIENNYWtl
IGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggZTg0ZWQxZTkyMDYw
Li45ZTJiMzU4YWRiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTMx
NSw2ICszMTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVSYW5nZVRvRGF0YU9iamVjdChS
YW5nZSYsIEZyYW1lJik7IC8vIEZJWE1FOiBMYXllcmluZyB2aW9sYXRpb24uCiAgICAgdm9pZCB3
cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IHdyaXRlUGxhaW5UZXh0VG9EYXRhT2JqZWN0KGNvbnN0IFN0cmluZyYsIFNtYXJ0UmVwbGFjZU9w
dGlvbik7CisgICAgT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+IHJlYWRQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSgpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCBkYzY5NWZk
NzVlMWUuLjI0ZmY2YmZiM2JmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmNwcApAQCAtODEsNiArODEsMTEgQEAgUGFzdGVib2FyZEN1c3Rv
bURhdGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5
PiYmIGRhdGEKIH0KIAogUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGNyZWF0ZUJ1ZmZlcigpKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpjcmVhdGVCdWZmZXIoKSBjb25zdAogewogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBj
dXJyZW50Q3VzdG9tRGF0YVNlcmlhbGl6YXRpb25WZXJzaW9uID0gMTsKIApAQCAtODksMTUgKzk0
LDE4IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFy
ZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAgICAgZW5jb2RlciA8
PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5
cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCks
IGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7Cisg
ICAgdmVjdG9yLmFwcGVuZChlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7
CisKKyAgICByZXR1cm4gdmVjdG9yOwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lz
dGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQogewogICAg
IGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhTdXBwb3J0ZWREYXRhU2VyaWFsaXphdGlvblZlcnNpb25O
dW1iZXIgPSAxOwogCiAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgcmVzdWx0OwotICAgIGF1dG8g
ZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHZlcnNp
b247CiAgICAgZGVjb2RlciA+PiB2ZXJzaW9uOwogICAgIGlmICghdmVyc2lvbiB8fCAqdmVyc2lv
biA+IG1heFN1cHBvcnRlZERhdGFTZXJpYWxpemF0aW9uVmVyc2lvbk51bWJlcikKQEAgLTEyNSw2
ICsxMzMsMTYgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJgogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKK1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVk
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIHJldHVybiBmcm9tUGVy
c2lzdGVuY2VEZWNvZGVyKGJ1ZmZlci5kZWNvZGVyKCkpOworfQorCitQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbUJ1ZmZlcihjb25zdCBWZWN0b3I8dWludDhf
dD4mIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gZnJvbVBlcnNpc3RlbmNlRGVjb2Rlcih7IGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfSk7Cit9CisKIHZvaWQgUGFzdGVib2FyZEN1c3RvbURh
dGE6OndyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICBhZGRPck1vdmVFbnRyeVRvRW5kKHR5cGUpLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmlu
ZGV4IGNmODlhNjBjY2ZmMS4uY2QxNDQ1NWNlNDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFu
dC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KQEAgLTYyLDYgKzYzLDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNyZWF0
ZUJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBmcm9tQnVmZmVyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworCiAgICAgU3RyaW5n
IHJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAgICAgU3RyaW5n
IHJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKQEAgLTk2
LDYgKzEwMCw4IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gc2FtZU9y
aWdpbkN1c3RvbVN0cmluZ0RhdGEoKSBjb25zdDsKICAgICBFbnRyeSYgYWRkT3JNb3ZlRW50cnlU
b0VuZChjb25zdCBTdHJpbmcmKTsKIAorICAgIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBm
cm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJik7CisKICAg
ICBTdHJpbmcgbV9vcmlnaW47CiAgICAgVmVjdG9yPEVudHJ5PiBtX2RhdGE7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNw
cAppbmRleCBmM2E4NmQ3YTg5MzEuLjdjMmY4NTVjMjhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKQEAgLTIwMywx
MiArMjAzLDEzIEBAIEhHTE9CQUwgY3JlYXRlR2xvYmFsRGF0YShjb25zdCBTdHJpbmcmIHN0cikK
ICAgICByZXR1cm4gdm07CiB9CiAKLUhHTE9CQUwgY3JlYXRlR2xvYmFsRGF0YShjb25zdCBWZWN0
b3I8Y2hhcj4mIHZlY3RvcikKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorSEdMT0JBTCBjcmVhdGVH
bG9iYWxEYXRhKGNvbnN0IFZlY3RvcjxUPiYgdmVjdG9yKQogewogICAgIEhHTE9CQUwgdm0gPSA6
Okdsb2JhbEFsbG9jKEdQVFIsIHZlY3Rvci5zaXplKCkgKyAxKTsKICAgICBpZiAoIXZtKQogICAg
ICAgICByZXR1cm4gMDsKLSAgICBjaGFyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oR2xv
YmFsTG9jayh2bSkpOworICAgIFQqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFQqPihHbG9iYWxMb2Nr
KHZtKSk7CiAgICAgbWVtY3B5KGJ1ZmZlciwgdmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSk7
CiAgICAgYnVmZmVyW3ZlY3Rvci5zaXplKCldID0gMDsKICAgICBHbG9iYWxVbmxvY2sodm0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dp
bi5oCmluZGV4IGMzN2YzZTJkZTE5Ni4uYWZjZDU0M2MyN2I4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCkBAIC0zNiw5ICsz
NiwxMyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiAKIEhHTE9C
QUwgY3JlYXRlR2xvYmFsRGF0YShjb25zdCBTdHJpbmcmKTsKLUhHTE9CQUwgY3JlYXRlR2xvYmFs
RGF0YShjb25zdCBWZWN0b3I8Y2hhcj4mKTsKIEhHTE9CQUwgY3JlYXRlR2xvYmFsRGF0YShjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PgorSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFZlY3RvcjxUPiYpOwordGVtcGxhdGUg
SEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwordGVtcGxhdGUg
SEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworCiBGT1JN
QVRFVEMqIHVybFdGb3JtYXQoKTsKIEZPUk1BVEVUQyogdXJsRm9ybWF0KCk7CiBGT1JNQVRFVEMq
IHBsYWluVGV4dFdGb3JtYXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcAppbmRleCBmM2NiNjY4OTliZGEuLmEzMDFhZTA3MWVhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtNjQsNiArNjQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgVUlOVCBIVE1MQ2xpcGJvYXJkRm9ybWF0
ID0gMDsKIHN0YXRpYyBVSU5UIEJvb2ttYXJrQ2xpcGJvYXJkRm9ybWF0ID0gMDsKIHN0YXRpYyBV
SU5UIFdlYlNtYXJ0UGFzdGVGb3JtYXQgPSAwOworc3RhdGljIFVJTlQgQ3VzdG9tRGF0YUNsaXBi
b2FyZEZvcm1hdCA9IDA7CiAKIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFBhc3RlYm9hcmRPd25l
clduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBs
UGFyYW0pCiB7CkBAIC0xMzUsNiArMTM2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpmaW5pc2hDcmVh
dGluZ1Bhc3RlYm9hcmQoKQogICAgIEhUTUxDbGlwYm9hcmRGb3JtYXQgPSA6OlJlZ2lzdGVyQ2xp
cGJvYXJkRm9ybWF0KEwiSFRNTCBGb3JtYXQiKTsKICAgICBCb29rbWFya0NsaXBib2FyZEZvcm1h
dCA9IDo6UmVnaXN0ZXJDbGlwYm9hcmRGb3JtYXQoTCJVbmlmb3JtUmVzb3VyY2VMb2NhdG9yVyIp
OwogICAgIFdlYlNtYXJ0UGFzdGVGb3JtYXQgPSA6OlJlZ2lzdGVyQ2xpcGJvYXJkRm9ybWF0KEwi
V2ViS2l0IFNtYXJ0IFBhc3RlIEZvcm1hdCIpOworICAgIEN1c3RvbURhdGFDbGlwYm9hcmRGb3Jt
YXQgPSA6OlJlZ2lzdGVyQ2xpcGJvYXJkRm9ybWF0KEwiV2ViS2l0IEN1c3RvbSBEYXRhIEZvcm1h
dCIpOwogfQogCiBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKCkKQEAgLTI0MCwxMCArMjQyLDQyIEBA
IHN0YXRpYyB2b2lkIGFkZE1pbWVUeXBlc0ZvckZvcm1hdChMaXN0SGFzaFNldDxTdHJpbmc+JiBy
ZXN1bHRzLCBjb25zdCBGT1JNQVRFVEMmCiAgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWlu
Iik7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckJpbmRpbmdz
KGNvbnN0IFN0cmluZyYpCitPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2Fy
ZDo6cmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiB7IH07CisgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ3Vz
dG9tRGF0YUNsaXBib2FyZEZvcm1hdCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7Cisg
ICAgICAgIGlmIChIQU5ETEUgY2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKEN1c3RvbURhdGFD
bGlwYm9hcmRGb3JtYXQpKSB7CisgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IEdsb2JhbFNpemUo
Y2JEYXRhKTsKKyAgICAgICAgICAgIHVpbnQ4X3QqIGRhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4oR2xvYmFsTG9jayhjYkRhdGEpKTsKKyAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0
b3I7CisgICAgICAgICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIHNpemUpOworCisgICAgICAgICAg
ICBHbG9iYWxVbmxvY2soY2JEYXRhKTsKKyAgICAgICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQoKTsK
KworICAgICAgICAgICAgcmV0dXJuIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tQnVmZmVyKHZl
Y3Rvcik7CisgICAgICAgIH0KKyAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOworICAgIH0KKwor
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6
OnR5cGVzU2FmZUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgb3JpZ2luKQoreworICAgIExpc3RI
YXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5cGVzOworCisgICAgT3B0aW9uYWw8UGFzdGVi
b2FyZEN1c3RvbURhdGE+IGN1c3RvbURhdGEgPSByZWFkUGFzdGVib2FyZEN1c3RvbURhdGEoKTsK
KworICAgIGlmIChjdXN0b21EYXRhICYmIGN1c3RvbURhdGEtPm9yaWdpbigpID09IG9yaWdpbikg
eworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHR5cGUgOiBjdXN0b21EYXRhLT5vcmRlcmVkVHlw
ZXMoKSkKKyAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CisgICAgfQor
CisgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOworICAgIGRvbVBhc3Rl
Ym9hcmRUeXBlcy5hZGQoInRleHQvdXJpLWxpc3QiKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMu
YWRkKCJ0ZXh0L2h0bWwiKTsKKworICAgIHJldHVybiBjb3B5VG9WZWN0b3IoZG9tUGFzdGVib2Fy
ZFR5cGVzKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNGb3JMZWdhY3lV
bnNhZmVCaW5kaW5ncygpCkBAIC0yODAsNyArMzE0LDExIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3Rl
Ym9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogCiBTdHJpbmcgUGFzdGVib2Fy
ZDo6cmVhZE9yaWdpbigpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBPcHRpb25hbDxQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YT4gY3VzdG9tRGF0YSA9IHJlYWRQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSgpOworCisgICAgaWYgKGN1c3RvbURhdGEpCisgICAgICAgIHJldHVybiBjdXN0b21EYXRhLT5v
cmlnaW4oKTsKKwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTMwNCw5ICszNDIsMTMgQEAgU3Ry
aW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVy
biAiIjsKIH0KIAotU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29u
c3QgU3RyaW5nJikKK1N0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNv
bnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIE9wdGlvbmFs
PFBhc3RlYm9hcmRDdXN0b21EYXRhPiBjdXN0b21EYXRhID0gcmVhZFBhc3RlYm9hcmRDdXN0b21E
YXRhKCk7CisKKyAgICBpZiAoY3VzdG9tRGF0YSkKKyAgICAgICAgcmV0dXJuIGN1c3RvbURhdGEt
PnJlYWRTdHJpbmdJbkN1c3RvbURhdGEodHlwZSk7CisKICAgICByZXR1cm4geyB9OwogfQogCkBA
IC0xMDgyLDggKzExMjQsNDYgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJv
YXJkSW1hZ2UmKQogewogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlQ3VzdG9tRGF0YShjb25z
dCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVD
dXN0b21EYXRhKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGRhdGEpCiB7Cisg
ICAgaWYgKGRhdGEuaXNFbXB0eSgpIHx8IGRhdGEuc2l6ZSgpID4gMSkgeworICAgICAgICAvLyBX
ZSBkb24ndCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgY3VzdG9tIGl0ZW0gaW4gdGhlIGNsaXBib2Fy
ZC4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNsZWFyKCk7CisKKyAgICBpZiAoOjpP
cGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGN1c3RvbURhdGEg
PSBkYXRhLmZpcnN0KCk7CisgICAgICAgIGN1c3RvbURhdGEuZm9yRWFjaFBsYXRmb3JtU3RyaW5n
T3JCdWZmZXIoW10oYXV0byYgdHlwZSwgYXV0byYgc3RyaW5nT3JCdWZmZXIpIHsKKyAgICAgICAg
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7
CisgICAgICAgICAgICAgICAgQ2xpcGJvYXJkRGF0YVR5cGUgZGF0YVR5cGUgPSBjbGlwYm9hcmRU
eXBlRnJvbU1JTUVUeXBlKHR5cGUpOworCisgICAgICAgICAgICAgICAgU3RyaW5nIHN0ciA9IFdU
Rjo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOworICAgICAgICAgICAgICAgIHJlcGxhY2VO
ZXdsaW5lc1dpdGhXaW5kb3dzU3R5bGVOZXdsaW5lcyhzdHIpOworICAgICAgICAgICAgICAgIEhH
TE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShzdHIpOworCisgICAgICAgICAgICAgICAg
aWYgKGRhdGFUeXBlID09IENsaXBib2FyZERhdGFUeXBlVGV4dCkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoY2JEYXRhICYmICE6OlNldENsaXBib2FyZERhdGEoQ0ZfVU5JQ09ERVRFWFQsIGNi
RGF0YSkpCisgICAgICAgICAgICAgICAgICAgICAgICA6Okdsb2JhbEZyZWUoY2JEYXRhKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFUeXBlID09IENsaXBib2FyZERhdGFUeXBlVVJM
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjYkRhdGEgJiYgITo6U2V0Q2xpcGJvYXJkRGF0
YShCb29rbWFya0NsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0
YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0SFRNTCkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoY2JEYXRhICYmICE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwg
Y2JEYXRhKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAg
aWYgKGN1c3RvbURhdGEuaGFzU2FtZU9yaWdpbkN1c3RvbURhdGEoKSB8fCAhY3VzdG9tRGF0YS5v
cmlnaW4oKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRl
R2xvYmFsRGF0YShjdXN0b21EYXRhLmNyZWF0ZUJ1ZmZlcigpKTsKKyAgICAgICAgICAgIGlmIChj
YkRhdGEgJiYgITo6U2V0Q2xpcGJvYXJkRGF0YShDdXN0b21EYXRhQ2xpcGJvYXJkRm9ybWF0LCBj
YkRhdGEpKQorICAgICAgICAgICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOworICAgICAgICB9
CisKKyAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOworICAgIH0KIH0KIAogdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZShjb25zdCBDb2xvciYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDExMTdjZTZkMGM3OC4uMWY5MjIx
YThiMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA3LTAzICBUb21va2kgSW1h
aSAgPFRvbW9raS5JbWFpQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5dIEltcGxlbWVudCBQYXN0
ZWJvYXJkOjp3cml0ZUN1c3RvbURhdGEgZm9yIFdlYiBJbnNwZWN0b3IgQ29uc29sZSB0YWIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzk4NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dl
YlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oOiBUdXJuIERFRkFVTFRfQ1VTVE9NX1BBU1RFQk9B
UkRfREFUQV9FTkFCTEVEIG9uIGZvciBXaW5kb3dzCisKIDIwMjAtMDctMDIgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIF9XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIFNQSSBmb3IgSFNUUyBzdG9yYWdlIHRvIHJlcGxhY2Ug
X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmhzdHNTdG9yYWdlRGlyZWN0b3J5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCmluZGV4
IGE4MmY2YjU2MzViNi4uMmFjZWFkOTUyYjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaApAQCAtMjM4LDcgKzIzOCw3IEBACiAj
ZGVmaW5lIERFRkFVTFRfREFUQUxJU1RfRUxFTUVOVF9FTkFCTEVEIHRydWUKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShDT0NPQSkg
fHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pCiAjZGVmaW5lIERFRkFVTFRfQ1VTVE9N
X1BBU1RFQk9BUkRfREFUQV9FTkFCTEVEIHRydWUKICNlbHNlCiAjZGVmaW5lIERFRkFVTFRfQ1VT
VE9NX1BBU1RFQk9BUkRfREFUQV9FTkFCTEVEIGZhbHNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403580</attachid>
            <date>2020-07-06 01:19:46 -0700</date>
            <delta_ts>2020-07-06 23:18:44 -0700</delta_ts>
            <desc>patch</desc>
            <filename>support-customdata-2.patch</filename>
            <type>text/plain</type>
            <size>15532</size>
            <attacher name="Tomoki Imai">tomoki.imai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZDJmYWVlNGE0ZDAuLjk1ZTFiMzYwYWMxMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIwLTA3LTAzICBUb21va2kgSW1haSAgPFRvbW9raS5JbWFpQHNvbnkuY29tPgorCisgICAg
ICAgIFtXaW5dIEltcGxlbWVudCBQYXN0ZWJvYXJkOjp3cml0ZUN1c3RvbURhdGEgZm9yIFdlYiBJ
bnNwZWN0b3IgQ29uc29sZSB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMzk4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vdyBwYXN0ZWJvYXJkIHRlc3RzIHJlbGF0ZWQgdG8gY3VzdG9tIGRhdGEg
cGFzcy4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIw
LTA3LTAyICBLYXJsIFJhY2tsZXIgIDxyYWNrbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbIG1h
Y09TIHdrMSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94
L292ZXJmbG93LWF1dG8tMDA4Lmh0bWwgaXMgZmxha3kgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjMTA2OTIyMzA4MjcuLjVjNTgzMWRjNTMw
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTExODYs
OCArMTE4Niw2IEBAIGVkaXRpbmcvcGFzdGVib2FyZC9kb20tcGFzdGUvIFsgU2tpcCBdCiBbIERl
YnVnIF0gZWRpdGluZy9zZWxlY3Rpb24vNDk4Mzg1OC5odG1sIFsgU2tpcCBdICMgRGVidWcgQXNz
ZXJ0aW9uCiBbIERlYnVnIF0gZWRpdGluZy9zZWxlY3Rpb24vNDk3NTEyMC5odG1sIFsgU2tpcCBd
ICMgRGVidWcgQXNzZXJ0aW9uCiAKLSMgQ3VzdG9tIHBhc3RlYm9hcmQgZGF0YSBpcyBub3Qgc3Vw
cG9ydGVkIG9uIFdpbmRvd3MuCi1lZGl0aW5nL3Bhc3RlYm9hcmQvY2xpcGJvYXJkLWN1c3RvbURh
dGEuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY29weS1wYXN0
ZS11cmwtYWNyb3NzLW9yaWdpbi1zYW5pdGl6ZXMtdXJsLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVz
dHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NvcHktcGFzdGUtaHRtbC1hY3Jvc3Mtb3JpZ2luLXNhbml0
aXplcy1odG1sLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2Nv
cHktcGFzdGUtaHRtbC1jcm9zcy1vcmlnaW4taWZyYW1lLWFjcm9zcy1vcmlnaW4uaHRtbCBbIFNr
aXAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDM3N2JmNDdmYmMyNi4uZGFkZTE1Mjc2MjEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzQgQEAKKzIwMjAtMDctMDMgIFRvbW9raSBJbWFpICA8VG9tb2tpLkltYWlA
c29ueS5jb20+CisKKyAgICAgICAgW1dpbl0gSW1wbGVtZW50IFBhc3RlYm9hcmQ6OndyaXRlQ3Vz
dG9tRGF0YSBmb3IgV2ViIEluc3BlY3RvciBDb25zb2xlIHRhYgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzOTg2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IFBhc3RlYm9hcmQ6OndyaXRl
Q3VzdG9tRGF0YSBhbmQgUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yQmluZGluZ3MuCisgICAgICAg
IFRoaXMgZml4ZXMgdGhlIGlzc3VlIHdoaWNoIHdlIGNhbm5vdCBjb3B5IHRleHQgaW4gV2ViSW5z
cGVjdG9yJ3MgQ29uc29sZSB0YWIuCisKKyAgICAgICAgV2UgZW5hYmxlIHNvbWUgZXhpc3Rpbmcg
dGVzdGNhc2VzIGZvciBwYXN0ZWJvYXJkLgorCisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDogQ3VycmVu
dGx5IFdpbmRvd3MgcG9ydHMgZG9uJ3QgdXNlIFNoYXJlZEJ1ZmZlciwgYmVjYXVzZSBQYXN0ZWJv
YXJkV2luIHVzZXMgdGhlIG5hdGl2ZSBBUElzIGluIFdlYlByb2Nlc3MuCisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KTogVXNl
IGNyZWF0ZUJ1ZmZlciB0byBpbXBsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y3JlYXRlQnVmZmVyIGNvbnN0KTogVmVjdG9yPHVpbnQ4X3Q+IHZhcmlhbnQg
b2YgZnJvbVNoYXJlZEJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKTogSGVscGVyIGZ1bmN0aW9uIGZvciBmcm9tU2hh
cmVkQnVmZmVyIGFuZCBmcm9tQnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOiBVc2UgZnJvbVBlcnNpc3RlbmNlRGVjb2RlciB0
byBpbXBsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bUJ1ZmZlcik6IFZlY3Rvcjx1aW50OF90PiB2YXJpYW50IG9mIGZyb21TaGFyZWRCdWZmZXIuCisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUdsb2JhbERhdGEpOiBBZGQgdWludDhfdCB2YXJpYW50IGZvciBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y3JlYXRlQnVmZmVyLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGls
aXRpZXNXaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpmaW5pc2hDcmVhdGluZ1Bhc3RlYm9hcmQpOiBS
ZWdpc3RlciBuZXcgY2xpcGJvYXJkIGZvcm1hdCBDdXN0b21EYXRhQ2xpcGJvYXJkRm9ybWF0Lgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKTog
SGVscGVyIGZ1bmN0aW9uIHRvIHJlYWQgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbSB0aGUgcGFz
dGVib2FyZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckJpbmRp
bmdzKTogSW1wbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZE9yaWdp
bik6IEltcGxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJ
bkN1c3RvbURhdGEpOiBJbXBsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3
cml0ZUN1c3RvbURhdGEpOiBJbXBsZW1lbnQuCisKIDIwMjAtMDctMDIgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVcGRhdGUgTWFjIENNYWtl
IGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggZTg0ZWQxZTkyMDYw
Li45ZTJiMzU4YWRiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTMx
NSw2ICszMTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVSYW5nZVRvRGF0YU9iamVjdChS
YW5nZSYsIEZyYW1lJik7IC8vIEZJWE1FOiBMYXllcmluZyB2aW9sYXRpb24uCiAgICAgdm9pZCB3
cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IHdyaXRlUGxhaW5UZXh0VG9EYXRhT2JqZWN0KGNvbnN0IFN0cmluZyYsIFNtYXJ0UmVwbGFjZU9w
dGlvbik7CisgICAgT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+IHJlYWRQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSgpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCBkYzY5NWZk
NzVlMWUuLjI0ZmY2YmZiM2JmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmNwcApAQCAtODEsNiArODEsMTEgQEAgUGFzdGVib2FyZEN1c3Rv
bURhdGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5
PiYmIGRhdGEKIH0KIAogUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGNyZWF0ZUJ1ZmZlcigpKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpjcmVhdGVCdWZmZXIoKSBjb25zdAogewogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBj
dXJyZW50Q3VzdG9tRGF0YVNlcmlhbGl6YXRpb25WZXJzaW9uID0gMTsKIApAQCAtODksMTUgKzk0
LDE4IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFy
ZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAgICAgZW5jb2RlciA8
PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5
cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCks
IGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7Cisg
ICAgdmVjdG9yLmFwcGVuZChlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7
CisKKyAgICByZXR1cm4gdmVjdG9yOwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lz
dGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQogewogICAg
IGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhTdXBwb3J0ZWREYXRhU2VyaWFsaXphdGlvblZlcnNpb25O
dW1iZXIgPSAxOwogCiAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgcmVzdWx0OwotICAgIGF1dG8g
ZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHZlcnNp
b247CiAgICAgZGVjb2RlciA+PiB2ZXJzaW9uOwogICAgIGlmICghdmVyc2lvbiB8fCAqdmVyc2lv
biA+IG1heFN1cHBvcnRlZERhdGFTZXJpYWxpemF0aW9uVmVyc2lvbk51bWJlcikKQEAgLTEyNSw2
ICsxMzMsMTYgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJgogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKK1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVk
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIHJldHVybiBmcm9tUGVy
c2lzdGVuY2VEZWNvZGVyKGJ1ZmZlci5kZWNvZGVyKCkpOworfQorCitQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbUJ1ZmZlcihjb25zdCBWZWN0b3I8dWludDhf
dD4mIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gZnJvbVBlcnNpc3RlbmNlRGVjb2Rlcih7IGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfSk7Cit9CisKIHZvaWQgUGFzdGVib2FyZEN1c3RvbURh
dGE6OndyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICBhZGRPck1vdmVFbnRyeVRvRW5kKHR5cGUpLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmlu
ZGV4IGNmODlhNjBjY2ZmMS4uYThlMWY4OTRmMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTYyLDYgKzYzLDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNyZWF0ZUJ1ZmZl
cigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSBmcm9tQnVmZmVyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworCiAgICAgU3RyaW5nIHJlYWRT
dHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAgICAgU3RyaW5nIHJlYWRT
dHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKQEAgLTk2LDYgKzEw
MCw4IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gc2FtZU9yaWdpbkN1
c3RvbVN0cmluZ0RhdGEoKSBjb25zdDsKICAgICBFbnRyeSYgYWRkT3JNb3ZlRW50cnlUb0VuZChj
b25zdCBTdHJpbmcmKTsKIAorICAgIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tUGVy
c2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJik7CisKICAgICBTdHJp
bmcgbV9vcmlnaW47CiAgICAgVmVjdG9yPEVudHJ5PiBtX2RhdGE7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAppbmRl
eCBmM2E4NmQ3YTg5MzEuLjdjMmY4NTVjMjhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKQEAgLTIwMywxMiArMjAz
LDEzIEBAIEhHTE9CQUwgY3JlYXRlR2xvYmFsRGF0YShjb25zdCBTdHJpbmcmIHN0cikKICAgICBy
ZXR1cm4gdm07CiB9CiAKLUhHTE9CQUwgY3JlYXRlR2xvYmFsRGF0YShjb25zdCBWZWN0b3I8Y2hh
cj4mIHZlY3RvcikKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorSEdMT0JBTCBjcmVhdGVHbG9iYWxE
YXRhKGNvbnN0IFZlY3RvcjxUPiYgdmVjdG9yKQogewogICAgIEhHTE9CQUwgdm0gPSA6Okdsb2Jh
bEFsbG9jKEdQVFIsIHZlY3Rvci5zaXplKCkgKyAxKTsKICAgICBpZiAoIXZtKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICBjaGFyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oR2xvYmFsTG9j
ayh2bSkpOworICAgIFQqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFQqPihHbG9iYWxMb2NrKHZtKSk7
CiAgICAgbWVtY3B5KGJ1ZmZlciwgdmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSk7CiAgICAg
YnVmZmVyW3ZlY3Rvci5zaXplKCldID0gMDsKICAgICBHbG9iYWxVbmxvY2sodm0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCmlu
ZGV4IGMzN2YzZTJkZTE5Ni4uYWZjZDU0M2MyN2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCkBAIC0zNiw5ICszNiwxMyBA
QCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiAKIEhHTE9CQUwgY3Jl
YXRlR2xvYmFsRGF0YShjb25zdCBTdHJpbmcmKTsKLUhHTE9CQUwgY3JlYXRlR2xvYmFsRGF0YShj
b25zdCBWZWN0b3I8Y2hhcj4mKTsKIEhHTE9CQUwgY3JlYXRlR2xvYmFsRGF0YShjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorSEdM
T0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFZlY3RvcjxUPiYpOwordGVtcGxhdGUgSEdMT0JB
TCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwordGVtcGxhdGUgSEdMT0JB
TCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworCiBGT1JNQVRFVEMq
IHVybFdGb3JtYXQoKTsKIEZPUk1BVEVUQyogdXJsRm9ybWF0KCk7CiBGT1JNQVRFVEMqIHBsYWlu
VGV4dFdGb3JtYXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcAppbmRleCBmM2NiNjY4OTliZGEuLmEzMDFhZTA3MWVhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtNjQsNiArNjQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgVUlOVCBIVE1MQ2xpcGJvYXJkRm9ybWF0ID0gMDsK
IHN0YXRpYyBVSU5UIEJvb2ttYXJrQ2xpcGJvYXJkRm9ybWF0ID0gMDsKIHN0YXRpYyBVSU5UIFdl
YlNtYXJ0UGFzdGVGb3JtYXQgPSAwOworc3RhdGljIFVJTlQgQ3VzdG9tRGF0YUNsaXBib2FyZEZv
cm1hdCA9IDA7CiAKIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFBhc3RlYm9hcmRPd25lclduZFBy
b2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0p
CiB7CkBAIC0xMzUsNiArMTM2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpmaW5pc2hDcmVhdGluZ1Bh
c3RlYm9hcmQoKQogICAgIEhUTUxDbGlwYm9hcmRGb3JtYXQgPSA6OlJlZ2lzdGVyQ2xpcGJvYXJk
Rm9ybWF0KEwiSFRNTCBGb3JtYXQiKTsKICAgICBCb29rbWFya0NsaXBib2FyZEZvcm1hdCA9IDo6
UmVnaXN0ZXJDbGlwYm9hcmRGb3JtYXQoTCJVbmlmb3JtUmVzb3VyY2VMb2NhdG9yVyIpOwogICAg
IFdlYlNtYXJ0UGFzdGVGb3JtYXQgPSA6OlJlZ2lzdGVyQ2xpcGJvYXJkRm9ybWF0KEwiV2ViS2l0
IFNtYXJ0IFBhc3RlIEZvcm1hdCIpOworICAgIEN1c3RvbURhdGFDbGlwYm9hcmRGb3JtYXQgPSA6
OlJlZ2lzdGVyQ2xpcGJvYXJkRm9ybWF0KEwiV2ViS2l0IEN1c3RvbSBEYXRhIEZvcm1hdCIpOwog
fQogCiBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKCkKQEAgLTI0MCwxMCArMjQyLDQyIEBAIHN0YXRp
YyB2b2lkIGFkZE1pbWVUeXBlc0ZvckZvcm1hdChMaXN0SGFzaFNldDxTdHJpbmc+JiByZXN1bHRz
LCBjb25zdCBGT1JNQVRFVEMmCiAgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIik7CiB9
CiAKLVZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckJpbmRpbmdzKGNvbnN0
IFN0cmluZyYpCitPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVh
ZFBhc3RlYm9hcmRDdXN0b21EYXRhKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiB7IH07CisgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ3VzdG9tRGF0
YUNsaXBib2FyZEZvcm1hdCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CisgICAgICAg
IGlmIChIQU5ETEUgY2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKEN1c3RvbURhdGFDbGlwYm9h
cmRGb3JtYXQpKSB7CisgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IEdsb2JhbFNpemUoY2JEYXRh
KTsKKyAgICAgICAgICAgIHVpbnQ4X3QqIGRhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oR2xv
YmFsTG9jayhjYkRhdGEpKTsKKyAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7Cisg
ICAgICAgICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIHNpemUpOworCisgICAgICAgICAgICBHbG9i
YWxVbmxvY2soY2JEYXRhKTsKKyAgICAgICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQoKTsKKworICAg
ICAgICAgICAgcmV0dXJuIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tQnVmZmVyKHZlY3Rvcik7
CisgICAgICAgIH0KKyAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOworICAgIH0KKworICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVz
U2FmZUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgb3JpZ2luKQoreworICAgIExpc3RIYXNoU2V0
PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5cGVzOworCisgICAgT3B0aW9uYWw8UGFzdGVib2FyZEN1
c3RvbURhdGE+IGN1c3RvbURhdGEgPSByZWFkUGFzdGVib2FyZEN1c3RvbURhdGEoKTsKKworICAg
IGlmIChjdXN0b21EYXRhICYmIGN1c3RvbURhdGEtPm9yaWdpbigpID09IG9yaWdpbikgeworICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHR5cGUgOiBjdXN0b21EYXRhLT5vcmRlcmVkVHlwZXMoKSkK
KyAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CisgICAgfQorCisgICAg
ZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOworICAgIGRvbVBhc3RlYm9hcmRU
eXBlcy5hZGQoInRleHQvdXJpLWxpc3QiKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0
ZXh0L2h0bWwiKTsKKworICAgIHJldHVybiBjb3B5VG9WZWN0b3IoZG9tUGFzdGVib2FyZFR5cGVz
KTsKIH0KIAogVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVC
aW5kaW5ncygpCkBAIC0yODAsNyArMzE0LDExIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6
OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogCiBTdHJpbmcgUGFzdGVib2FyZDo6cmVh
ZE9yaWdpbigpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBPcHRpb25hbDxQYXN0ZWJv
YXJkQ3VzdG9tRGF0YT4gY3VzdG9tRGF0YSA9IHJlYWRQYXN0ZWJvYXJkQ3VzdG9tRGF0YSgpOwor
CisgICAgaWYgKGN1c3RvbURhdGEpCisgICAgICAgIHJldHVybiBjdXN0b21EYXRhLT5vcmlnaW4o
KTsKKwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTMwNCw5ICszNDIsMTMgQEAgU3RyaW5nIFBh
c3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiAiIjsK
IH0KIAotU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3Ry
aW5nJikKK1N0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIE9wdGlvbmFsPFBhc3Rl
Ym9hcmRDdXN0b21EYXRhPiBjdXN0b21EYXRhID0gcmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKCk7
CisKKyAgICBpZiAoY3VzdG9tRGF0YSkKKyAgICAgICAgcmV0dXJuIGN1c3RvbURhdGEtPnJlYWRT
dHJpbmdJbkN1c3RvbURhdGEodHlwZSk7CisKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0xMDgy
LDggKzExMjQsNDYgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1h
Z2UmKQogewogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0
b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVDdXN0b21E
YXRhKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGRhdGEpCiB7CisgICAgaWYg
KGRhdGEuaXNFbXB0eSgpIHx8IGRhdGEuc2l6ZSgpID4gMSkgeworICAgICAgICAvLyBXZSBkb24n
dCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgY3VzdG9tIGl0ZW0gaW4gdGhlIGNsaXBib2FyZC4KKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNsZWFyKCk7CisKKyAgICBpZiAoOjpPcGVuQ2xp
cGJvYXJkKG1fb3duZXIpKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGN1c3RvbURhdGEgPSBkYXRh
LmZpcnN0KCk7CisgICAgICAgIGN1c3RvbURhdGEuZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZm
ZXIoW10oYXV0byYgdHlwZSwgYXV0byYgc3RyaW5nT3JCdWZmZXIpIHsKKyAgICAgICAgICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAg
ICAgICAgICAgICAgQ2xpcGJvYXJkRGF0YVR5cGUgZGF0YVR5cGUgPSBjbGlwYm9hcmRUeXBlRnJv
bU1JTUVUeXBlKHR5cGUpOworCisgICAgICAgICAgICAgICAgU3RyaW5nIHN0ciA9IFdURjo6Z2V0
PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOworICAgICAgICAgICAgICAgIHJlcGxhY2VOZXdsaW5l
c1dpdGhXaW5kb3dzU3R5bGVOZXdsaW5lcyhzdHIpOworICAgICAgICAgICAgICAgIEhHTE9CQUwg
Y2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShzdHIpOworCisgICAgICAgICAgICAgICAgaWYgKGRh
dGFUeXBlID09IENsaXBib2FyZERhdGFUeXBlVGV4dCkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoY2JEYXRhICYmICE6OlNldENsaXBib2FyZERhdGEoQ0ZfVU5JQ09ERVRFWFQsIGNiRGF0YSkp
CisgICAgICAgICAgICAgICAgICAgICAgICA6Okdsb2JhbEZyZWUoY2JEYXRhKTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGRhdGFUeXBlID09IENsaXBib2FyZERhdGFUeXBlVVJMKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChjYkRhdGEgJiYgITo6U2V0Q2xpcGJvYXJkRGF0YShCb29r
bWFya0NsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6
R2xvYmFsRnJlZShjYkRhdGEpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YVR5cGUg
PT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0SFRNTCkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
Y2JEYXRhICYmICE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRh
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKGN1
c3RvbURhdGEuaGFzU2FtZU9yaWdpbkN1c3RvbURhdGEoKSB8fCAhY3VzdG9tRGF0YS5vcmlnaW4o
KS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFs
RGF0YShjdXN0b21EYXRhLmNyZWF0ZUJ1ZmZlcigpKTsKKyAgICAgICAgICAgIGlmIChjYkRhdGEg
JiYgITo6U2V0Q2xpcGJvYXJkRGF0YShDdXN0b21EYXRhQ2xpcGJvYXJkRm9ybWF0LCBjYkRhdGEp
KQorICAgICAgICAgICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOworICAgICAgICB9CisKKyAg
ICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOworICAgIH0KIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZShjb25zdCBDb2xvciYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDExMTdjZTZkMGM3OC4uMWY5MjIxYThiMTQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA3LTAzICBUb21va2kgSW1haSAgPFRv
bW9raS5JbWFpQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5dIEltcGxlbWVudCBQYXN0ZWJvYXJk
Ojp3cml0ZUN1c3RvbURhdGEgZm9yIFdlYiBJbnNwZWN0b3IgQ29uc29sZSB0YWIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzk4NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZl
cmVuY2VzRGVmYXVsdFZhbHVlcy5oOiBUdXJuIERFRkFVTFRfQ1VTVE9NX1BBU1RFQk9BUkRfREFU
QV9FTkFCTEVEIG9uIGZvciBXaW5kb3dzCisKIDIwMjAtMDctMDIgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIF9XS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uIFNQSSBmb3IgSFNUUyBzdG9yYWdlIHRvIHJlcGxhY2UgX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmhzdHNTdG9yYWdlRGlyZWN0b3J5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCmluZGV4IGE4MmY2
YjU2MzViNi4uMmFjZWFkOTUyYjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaApAQCAtMjM4LDcgKzIzOCw3IEBACiAjZGVmaW5l
IERFRkFVTFRfREFUQUxJU1RfRUxFTUVOVF9FTkFCTEVEIHRydWUKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pCiAjZGVmaW5lIERFRkFVTFRfQ1VTVE9NX1BBU1RF
Qk9BUkRfREFUQV9FTkFCTEVEIHRydWUKICNlbHNlCiAjZGVmaW5lIERFRkFVTFRfQ1VTVE9NX1BB
U1RFQk9BUkRfREFUQV9FTkFCTEVEIGZhbHNlCg==
</data>
<flag name="review"
          id="418952"
          type_id="1"
          status="-"
          setter="fujii"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>403581</attachid>
            <date>2020-07-06 01:33:45 -0700</date>
            <delta_ts>2020-07-06 01:33:45 -0700</delta_ts>
            <desc>Where we failed to copy in WebInspector</desc>
            <filename>where-it-failed-to-copy.PNG</filename>
            <type>image/png</type>
            <size>25226</size>
            <attacher name="Tomoki Imai">tomoki.imai</attacher>
            
              <data encoding="base64">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
zG8797hTe98cgccJR0e060fwdL/X6e36+REkTaNpNQ+9gM/+VkRV1fcJrc7Mfd/brv3dj93waJ6p
wdnt5h5Tov3Ejbije6qb/H7W+3FsurnH/aKyXT+M7R/xVEV/ZXtBWdJTW9s0GZaMqh/rtftObptG
8R5ndiy1r0+y4+X2uZLHlhF4zND27FW2q0DXOV6zv/siZUW79F2223XZWU3Zv2PZbeLY4d2J692/
U/tB9jGpPW2X7UqTwr2fsl2lc91zsrty3C/D3RHyftHtxvPn78Zzw1wZ7o8TGlZnmaHrECru695u
ynafe/yMxvPvvIHHx9CHtfGwwGNx+fOyGy/znDICj9OYOsN8Ghn1sDoFjA6SUcG9fv16e4mJH/d0
n9UBdo47Rah/ClpNo2k1D82r327XKSzb9ccgy3ZR0aoyTMXr0Ucfnfrq/iBoOZTt9Wi6KtER7Vlf
/OIXg+Nmo285AFXo6GUVJFVoPI3fhk5xURi/ZMy8GXEvUlJvhhOpF1zBFy72DVDqjVKf83fT5V7g
5d/o514IuusWvfCetzR7Ptnh8LWvfc387ne/s3+l9Xox7ZftIfqwUd/IqSO7Dt0+1N1OyXrPlQ49
t2P+79w2jOcV7ZNxGdLdN1MvvoP7WyJ54e6m673fpMcfTsNStssOlRjzvCOH4qTfBNXePqnHCLHD
O9MXbMeS/a6j6r7prvMQP044Oiev7vP6BkuVNwxFNK0/r35V2iciuft+4/tx145oe+kUY0vneUc6
u/nmPoCxssuvuq8MgbKyXacj02nFbrnlFjukmrbL9mSd2W3h0rmvN9ymbrm5xw6377j5Fi0ne73t
eBVem3SMwGOGtmdZ2a4CXUW6CnX/Q3rpVbRLv2V7ehtJaD/KbJMOO7zX/TZ7/w7Mb5D360GU7UpR
4e6+ea3o24zZ6aaibA8V4S4apsvcEeOu6M6O50/v5qdxVZ67af3UXaYr2910mq8/jeKK+uzwslC2
h5U/jkdyH7QljwWd+3Pl5+WCx/oReJzG1FFHrH1f96Ne3H2t11kv2rB79+54WSrJQ/SYrgPzsjRM
33IP0bw0T827X9NatusBTke0q2hX6aoj3Qd5pLOWQdlej26PoidbzUNftXDD/ITuRCqoQuN++ctf
juelF5/6u8kbVEyW6S3bq74wyrwZsS+CimPLkOCLofCb8PhNVt35Z69XR+ZNVyR0e5M3dukkP+Rm
R5hmepM0zGV7Zz13tkfmxXDl7ViyfVL7hC5PlpFs2vCL78yulYin77Xf2H3TS+iF/LAYprI9Tb/R
sNTMi97EpNZh4+2TvV8XjFe2HKfGvjnsjxOOe+Otorytsr2fN91hBftEJHffb7yfROw8ststjp1x
stzudu7K7Gc19pXpVlS2+181VtatW2cvSdN2z5ar01K297lNey+34WNMlceWyLA/Zmh7FpXt+oau
K9pXr15thya0b/Qq2qWvsr1s+4Zed/TadvZ+m99WPbaxhgRej7Rlkst2/0hxF3fEeKj49qNh/jJd
Ye5Hw9x8+l2mu6wsbroqoWzPqPQ4LpnH8tRzv/s7M30qvV8njMprOwyeXvd+//vfj38guKyE1mU6
y4DGbfI6u6pBlO0LFiyI5zmSZbsr2nXqGC286EdT26T5U7b3R1+P1Dyee+45O6R/uk36gKXu13MB
yvZEvlj155dN3TfMxbc3KYD8eStV18tg6TQvOt2Loycy/a3TwvgvpvX8oidinUbG6VW2X3XVVYXn
gy8SXIfuhXO8DZJt29nelbdjwby9F9fx/hFvT2/bZouP7N8+b16deeT2G7tvRuPp6Nt4nCHZF0KG
t2x3Muu58fbxtr3/d3a8suU4NfZNGebHCWffvn3xwQO63+uxQ8WpHjP8c7EX0TgaV9PoRbrmoYNF
NM925bdZ7r7f2v1Yb5znmaVLVXroDK3p555kuentnMjsZzX3lelUVLbraHYNd1EBpyMLfa+++mr8
A1p6XvDP199f2W7XYc/7SHYbNtumnfECO096exctJ7Pts+NVeWyxhvkxQ9szVLaXFe2iU8rovVNZ
0S79lO3J9smur266ryMrbjt7v81vqx7bWENCr0daMoiyvahor5J+ynYV0yqdQ5e56ChwV373W3z7
0bBswa9p3XXxo8v6Xaa7rCxuuiqhbPfZx2fdn6P1XPw4nkjK8GSeqfeIUvl5uejxIjEKr+0wNXS/
0bf/5syZE58C3O9u9W91u7pMp2G5/vrrB3owtU99ctFpZPTDqLrP+r8/ed9998XDQqeRUdGueTU9
A8e0lO1+0e7O0a6NMOjCvajQ7mUqy3bNx98hh6Vs146hefT6Sq1OHaOjQMucdtpp8Y4N1DWSZXvV
N5x2vNple+U3tEUvorJvpjTL3rc3Oe1BNF2lZQ+ePrH2C3F9Y0ZvgvUmRj98qsccnadNn17r3/qB
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
7rnnzDnnnGO+9KUv5aKj7XUds8M1TJdlhyvnnXee2bVrl517byWnkaFsx3ihbAeAetoq2/WC6sEH
H4x/WPS+++6Lj36oo9/roKJdy1S2b99uhzY30WW7zZR1nCOCsr1941K2t71vjF7ZHl0frbvstvMy
yOs6SvfNOmV7qPDumRuSr/Bff0Pgsm/vMee/GF344rvm74N/905bNs89XF+zL8+sxXbsNm02cw+P
5n343OhfA7J5rpl1+CzTvfZTsMwhMn3bdnQsnqX1cLiZG9ghOusvuL9Mx740ifuvf/8dH/2U7fod
q1/96ledMl3Ftop3ve9z52xXTjvtNLN27dp4GpXt3/3ud83pp5/e+sFQWa5s/9d//df4A4BQgd4r
X/ziF+Pb8JnPfIayHShC2Q4A9bRRtuuI9jVr1nRK78cee8wcPHjQXlpNv9dBL4juvffezrLbelE3
GWV7uJzS0alxQdbPEb5jbJQKvVExXOuUsr0/dr3p+sy5LnMUu452v87MjAv3mWZQV3eU7puDLttn
rrcTrw/9sCpl+1QUh/myjrI9lwkv283iWfF6CK2GpIhXQmX8YjNrytcfZfu46Kds/+UvfxkX0ccf
f7xZsmRJXL47KtuPO+448+tf/zo+h7ujg59UYrsC2x3pPkiXXHKJ+ed//mf7Vz07duyIr+tNN91k
h1RXWLbrTsw52zFOKNsBoJ6mZXu2aN+wYUPtol2aXIdBFO7D8HzyN3/zN7VTVa9yauUclWPuclum
zVlpp7OXueJsa/qo1uS0Efayjmgec9y0ykwzJ3Sqmp7zCl+XGy4quj1JKZk6OrrS9c2rVehllqFT
84Rv7hxbRCrROrluZef2DYPQPtYrddRbp0lpq4K5u960zuyK9dalSt/u6i4q0bv7UurvzHjJqVGS
+Xa3kxvDTtO5LLl+HQPb15L9Ol22R9dlgPexwuvtPpwr22fttsuNU2n9lN2uovVvh1fd5kW3tc/t
V2agZftP3zXrounWvajn4IPm/J9mxxm2sn06Cq3pKNsny6Tf/mqKSvNk+Ky5c+P/H55t20tKerSD
sr1r2bJlcQmtU648+uijdmjXSy+9ZLZt22b/StOR71/72tfi6XWO9wMHBvsD2+7o+z//+c92SHWb
Nm2Kp73rrrvskOo4sh0Tg7IdAOppUra3VbRL08fvbOHe9JQyw1K211Fn/F5lXrBsnzmzWwy7EsuV
aLn4R7HmCzGXVPdWZ17Z62KnzfV9tgjsdmtVlhFWuRj2St+yZXTLvUByN2R6DHIflMrrVOy2mzkn
u36j9do5etpLd6PbfaZ+2V62jZLJ8vt2pwAf6L6WLdvz18MltSs1uY/ZS7PSjxU11LkugfHK17+7
DVW3eb+PbfUNsmz/+zv1/LvfzHSl+517MuOMZtlePG6+sNy8eJY5XGW6hsc53MxKFZbZsr2ofLfD
M61m+fztNJ3LXFlasIzN0fX3x9epZ9IjdKZbvHiut9zsbZJo3FlaT9446ZlNmXplZXc9J9Ppums9
FA13k1Vcd8Hph2Fd2euX3SfiMl1HtHevvy+0bivv80XruOf+lb2uVadLxNcvdd0WB25bNM9R3H97
7oeJYVkHdcp2ldb6DRaV0DqivR+ahzuve7/zqOq2226Ll/Pii3pSS6xcuTL4YcArr7wSf1Dg3H//
/fG069bpmbOewrL9Psp2jBnKdgCop9+yvc2iXdp4/G6zcJ/ksr1zGplsIRUNyx1JGw9PH0HbOW2E
m75Tkq5MSixxRVZuGT3m1eu6ZMq14IcGPZcRVq0Y7l6/1DJcadu5fklZquvS+THarfao9grXZapM
Tdlub3MwXrHplZ9u3Xb21Si5kruzrsP7Rmd4dt/KTqdt7k+Y23c1KLtvuGkHta9lyvYpuY+F2P24
x+3Jq3hdKt0uDSpY/1W3ee62Vrx+fRhc2b7PXK+J4tPHFJXoI3pk++a5cVGV6R1zR/l2i8R8utMW
F4fpWssO9xbae/52Gm94YdmeKt/8+KcOyc/PT+42lY4zdWpt2866Oby7PuL1VDQ8UmfdFc03NV2S
qV5XofUUD7O3M3+5u03d/aj3Pin114WSn94tt+p05deve98qnt9UbxMJbZegSvvhcK2DOmX7HXfc
ERfQ5557rh3SH1dkq3T3T0HTNncUvk5l6ujDgk996lNx+e3oHO8nnnii+epXv2qHGLNw4cJ4Wl1W
V2HZ/r++fx9lO8YKZTsA1NNP2d520S5tPX63VbhPRtmelEzhhI4uzZR/rggLFHKp8suVY9GL3jnX
Zc/pbFWdV9F1iSTj+dc7UwRWXkZYlXHcMkJlXFL82+tnS+LcdSmZfjoMZdmeWjd2G6dKVbuPNC7b
u7ZG++zKldeZ6/yj6r3rkds3Br6vhcv2Qd/H8orL9uC2deu26nWpcrsi+fVVc5tnb2vD7VdmYGV7
9odRgz+UOmxle7hcShIqTrsloyTntnalmCuror/9kWxRnyu1ssVhZt6d4bkyrNf8NShb1hUsM5rO
P3K1s05CpWY0fzdmZzy3THsdDvfGCV2vqdLXto2Gp0+Z0nt41XWXmn6Y1pVdbnex9jq7AZkPk6IB
mVPLuNtYcZ9PTSvd4Rq3M9fs/uXGq7tf2usbb293BTfbI7r98YZpm0SS2+Hff0O666B8PxyudVCn
bD/rrLPiAlpFchMq2PVDqdkivG2at5ah0t156qmnzL/8y7+YT3/60/ER7q5o14+pPv3003YsY37z
m9/E0+o9ZF2FZbs2MOdsxzihbAeAeuqW7YMo2qXNx+82CvdJLtsLz+GcLa68o4rD6RalSdGcTvJj
isnl1edVVKJFsgWZnWenV6txfUMqlWz2OgS6R7v8ZBnJvELLy5aB02tqyvaKxWWwAA2XvfH+1tlH
ivaZ7LoOjOfK3lC8ZeZux8D3tUzZHpmS+1hOn2V7jfXT83ZF8uurwTaXhtuvzKDK9uSHUfebmZ1h
/pHubtiolu1ufH+YLbECRZTKDp3eYu4s78jTzngFxWHnb8cOrz3/6PJcWZdZRkmJlnyA4G6nK/Sy
xV/mtrv5Ha7TU8yNTw8ynept26LbWDC86bobqnWVKc/tdevetMzlufK9q9I+X3Ud2+Xmps+V7T2m
s9c3XfBHsttwKPff7G3LqLofDtk6qPrco9O/HH300fEPjurc602586lfd911dkj7dFoYLUOnk/Hp
fOyf/OQn45L9hBNOyBXtctlll5ljjz22ryPvC8t2ztmOcUPZDgD11C3bdeSAK7FXrVrVStEubT9+
60WXu55Lly4177xTrySYjLK9YsnZUiGlUzCkfjQ0jr0OrRSB6cuSkm4qC9AIZbv9VzW19sMpL9vt
vLXMOXOiN4krzcqVW6PL8svM3Y5W9rWScYLrIho88PtYlh235zbMzLPm+im9Xbo8tx8V3QY7vHCb
Ww23X5mBlO32HO1hfgE/bGV7j0LLZ8uo0uLRFVahdEYsKA6rlO2V5q/RqpXtqevuxLcrUxhXuG5J
wZfO4bNU2tkRplC9bdvjNmaHN153w7Wu4uvirmN8/dPrzb88uF772uedHsMLp682XXJ9/Q9WnOz8
h2ubVNp/K+6Hw7YOqj736D2USum2uuIVK1bERfiFF15oh7RPHxBoGSr2s/Q+UB8eHHPMMfFpbbJm
z54dn+amH5TtmBiU7QBQT92yXUc46IWKK7L1WqINbT5+v/nmm2b58uWd61j0S/llKNt9BYVUWbHc
w1adn9wesRpPX3leRSVaoltSBkrYBtdXKq0zu4xs+StJ+W9LOlvmZcvSsumnw3iU7W7dZ5eTnTaz
bxXtL4FtlLsdRdNWZfePoumT5ZXPf1D3sRy3L5fOuOK6rSB3uzQssB/1tc2dptuvxCDK9uSHUYt1
fyh1hMv2TMGXFFP+9Pao2rigmmXmzl1sFi/WWakrHqXbs3CsOv/QbcssYwBlu2xePDf9Y41x6qzj
dtTbtj1uY3Z4C2W7DMu6Sq5zstxU8W756zK+PHXD+93nnR7DC6evNl2dollGav8dQNkug14HVZ97
RO+lVq9ebf9qRkW0ivBvfvObdshg6Aj2Sy65xP6VeP755+Pztuuy448/3pxyyinxD6T6vvCFL5hz
zjnH/lUPZTsmBmU7ANRTt2yXQRTubT1+t1G0C2W7r6h8s8NVIKfO6eB+6NPOv1Msez9yGP1rZXwd
3BGiFeflxisqAl1JNidUVlZdRli1deaWoWV7t9aWo93rbUs//7p0rkeUQbR8fRivsj3aJp1pu9up
V9muyztLjLZR5whrb/7J7XD7sjTb1zrLjqb39yPRj8K6yzrLm8r7WE53XSanoEpPpXJ8zszs/l/x
ulS6XdGQ3Prvc5t3VLx+fWi/bC8rzO2pZArL9VEq2/3iKl9wF5ZfdnhxcWhLzNx1ySyj8vw1KHvb
MssMTOMk16VXYRwu6nybdV7oeF4FheAA1du2PW5jdnjjdZc3nevK3Z5Zi5P9reh0I8HLO5fZv53c
Oqq5jt3wwukrTheXzsW3aaT335LbkNoPh2wdVH3u0alX9D6vrR80Xbdu3ZSU7f/xH/9hzjvvPPtX
t2h3p45Zv359XLifeuqpZseOHXYsE4/z3e9+1/5VD2U7JgZlOwDU00/ZLm0X7m08frdVtAtlu6+o
kIrYMiyUbinqlVzZ+POsM6/CItBfVuD2VVpGWKcwL0hn+mgZSRmaTboMLJ3fRJXtgdufit2ODcr2
4HafOScpzguL15L9VvHm798Ofz9Ije+l174mlfe32FTex0K8DyGKEq3v9KarcV0C4/S1/ntuc0/D
7Vek9bLd/hBq9+j1dJJzuR805/9Uf4922e4KqlmzkgIrVUB55VWn1lIpr/JPw0uKwqQci+bXKcTs
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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403668</attachid>
            <date>2020-07-06 23:18:44 -0700</date>
            <delta_ts>2020-07-07 04:31:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>support-customdata-3.patch</filename>
            <type>text/plain</type>
            <size>13852</size>
            <attacher name="Tomoki Imai">tomoki.imai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZDJmYWVlNGE0ZDAuLjk1ZTFiMzYwYWMxMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIwLTA3LTAzICBUb21va2kgSW1haSAgPFRvbW9raS5JbWFpQHNvbnkuY29tPgorCisgICAg
ICAgIFtXaW5dIEltcGxlbWVudCBQYXN0ZWJvYXJkOjp3cml0ZUN1c3RvbURhdGEgZm9yIFdlYiBJ
bnNwZWN0b3IgQ29uc29sZSB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMzk4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vdyBwYXN0ZWJvYXJkIHRlc3RzIHJlbGF0ZWQgdG8gY3VzdG9tIGRhdGEg
cGFzcy4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIw
LTA3LTAyICBLYXJsIFJhY2tsZXIgIDxyYWNrbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbIG1h
Y09TIHdrMSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94
L292ZXJmbG93LWF1dG8tMDA4Lmh0bWwgaXMgZmxha3kgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjMTA2OTIyMzA4MjcuLjVjNTgzMWRjNTMw
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTExODYs
OCArMTE4Niw2IEBAIGVkaXRpbmcvcGFzdGVib2FyZC9kb20tcGFzdGUvIFsgU2tpcCBdCiBbIERl
YnVnIF0gZWRpdGluZy9zZWxlY3Rpb24vNDk4Mzg1OC5odG1sIFsgU2tpcCBdICMgRGVidWcgQXNz
ZXJ0aW9uCiBbIERlYnVnIF0gZWRpdGluZy9zZWxlY3Rpb24vNDk3NTEyMC5odG1sIFsgU2tpcCBd
ICMgRGVidWcgQXNzZXJ0aW9uCiAKLSMgQ3VzdG9tIHBhc3RlYm9hcmQgZGF0YSBpcyBub3Qgc3Vw
cG9ydGVkIG9uIFdpbmRvd3MuCi1lZGl0aW5nL3Bhc3RlYm9hcmQvY2xpcGJvYXJkLWN1c3RvbURh
dGEuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY29weS1wYXN0
ZS11cmwtYWNyb3NzLW9yaWdpbi1zYW5pdGl6ZXMtdXJsLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVz
dHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NvcHktcGFzdGUtaHRtbC1hY3Jvc3Mtb3JpZ2luLXNhbml0
aXplcy1odG1sLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2Nv
cHktcGFzdGUtaHRtbC1jcm9zcy1vcmlnaW4taWZyYW1lLWFjcm9zcy1vcmlnaW4uaHRtbCBbIFNr
aXAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDM3N2JmNDdmYmMyNi4uODY1NDRjZTIyMmRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMDctMDMgIFRvbW9raSBJbWFpICA8VG9tb2tpLkltYWlA
c29ueS5jb20+CisKKyAgICAgICAgW1dpbl0gSW1wbGVtZW50IFBhc3RlYm9hcmQ6OndyaXRlQ3Vz
dG9tRGF0YSBmb3IgV2ViIEluc3BlY3RvciBDb25zb2xlIHRhYgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzOTg2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IFBhc3RlYm9hcmQ6OndyaXRl
Q3VzdG9tRGF0YSBhbmQgUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yQmluZGluZ3MuCisgICAgICAg
IFRoaXMgZml4ZXMgdGhlIGlzc3VlIHdoaWNoIHdlIGNhbm5vdCBjb3B5IHRleHQgaW4gV2ViSW5z
cGVjdG9yJ3MgQ29uc29sZSB0YWIuCisKKyAgICAgICAgV2UgZW5hYmxlIHNvbWUgZXhpc3Rpbmcg
dGVzdGNhc2VzIGZvciBwYXN0ZWJvYXJkLgorCisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVy
KTogQ29uc3RydWN0IFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb20gV1RGOjpQZXJzaXN0ZW5jZTo6
RGVjb2Rlci4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hh
cmVkQnVmZmVyKTogVXNlIGZyb21QZXJzaXN0ZW5jZURlY29kZXIgZnVuY3Rpb24gdG8gaW1wbGVt
ZW50LgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVHbG9iYWxEYXRhKTogQWRkIHVpbnQ4X3QqIHZhcmlhbnQuCisgICAgICAgICog
cGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmZp
bmlzaENyZWF0aW5nUGFzdGVib2FyZCk6IFJlZ2lzdGVyIG5ldyBjbGlwYm9hcmQgZm9ybWF0IEN1
c3RvbURhdGFDbGlwYm9hcmRGb3JtYXQuCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpy
ZWFkUGFzdGVib2FyZEN1c3RvbURhdGEpOiBIZWxwZXIgZnVuY3Rpb24gdG8gcmVhZCBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YSBmcm9tIHRoZSBwYXN0ZWJvYXJkLgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6dHlwZXNTYWZlRm9yQmluZGluZ3MpOiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRPcmlnaW4pOiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEpOiBJbXBsZW1lbnRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlQ3VzdG9tRGF0YSk6IEltcGxlbWVu
dGVkLgorCisKIDIwMjAtMDctMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVcGRhdGUgTWFjIENNYWtlIGJ1aWxkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggZTg0ZWQxZTkyMDYwLi45ZTJiMzU4YWRiMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTMxNSw2ICszMTUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgd3JpdGVSYW5nZVRvRGF0YU9iamVjdChSYW5nZSYsIEZyYW1lJik7IC8vIEZJ
WE1FOiBMYXllcmluZyB2aW9sYXRpb24uCiAgICAgdm9pZCB3cml0ZVVSTFRvRGF0YU9iamVjdChj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHdyaXRlUGxhaW5UZXh0VG9EYXRh
T2JqZWN0KGNvbnN0IFN0cmluZyYsIFNtYXJ0UmVwbGFjZU9wdGlvbik7CisgICAgT3B0aW9uYWw8
UGFzdGVib2FyZEN1c3RvbURhdGE+IHJlYWRQYXN0ZWJvYXJkQ3VzdG9tRGF0YSgpOwogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCBkYzY5NWZkNzVlMWUuLjMzMTBkMGIzMzBlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNw
cApAQCAtOTIsMTIgKzkyLDExIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKLVBh
c3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6
RGVjb2RlciYmIGRlY29kZXIpCiB7CiAgICAgY29uc3RleHByIHVuc2lnbmVkIG1heFN1cHBvcnRl
ZERhdGFTZXJpYWxpemF0aW9uVmVyc2lvbk51bWJlciA9IDE7CiAKICAgICBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSByZXN1bHQ7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKICAg
ICBPcHRpb25hbDx1bnNpZ25lZD4gdmVyc2lvbjsKICAgICBkZWNvZGVyID4+IHZlcnNpb247CiAg
ICAgaWYgKCF2ZXJzaW9uIHx8ICp2ZXJzaW9uID4gbWF4U3VwcG9ydGVkRGF0YVNlcmlhbGl6YXRp
b25WZXJzaW9uTnVtYmVyKQpAQCAtMTI1LDYgKzEyNCwxMSBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZm
ZXImCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCit7CisgICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoYnVmZmVyLmRlY29kZXIo
KSk7Cit9CisKIHZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRlU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhZGRPck1vdmVFbnRyeVRv
RW5kKHR5cGUpLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4IGNmODlhNjBjY2ZmMS4uNDJmOTJk
NDBiYmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3Vz
dG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYxLDYgKzYyLDcgQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVm
ZmVyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21E
YXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIo
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNv
bnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAppbmRleCBmM2E4NmQ3YTg5
MzEuLjg3ODlmMTFjMzY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKQEAgLTIxNSw2ICsyMTUsMTggQEAgSEdMT0JB
TCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFZlY3RvcjxjaGFyPiYgdmVjdG9yKQogICAgIHJldHVy
biB2bTsKIH0KIAorSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBsZW5ndGgpCit7CisgICAgSEdMT0JBTCB2bSA9IDo6R2xvYmFsQWxsb2MoR1BUUiwg
bGVuZ3RoICsgMSk7CisgICAgaWYgKCF2bSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgdWludDhf
dCogYnVmZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KEdsb2JhbExvY2sodm0pKTsKKyAgICBt
ZW1jcHkoYnVmZmVyLCBkYXRhLCBsZW5ndGgpOworICAgIGJ1ZmZlcltsZW5ndGhdID0gMDsKKyAg
ICBHbG9iYWxVbmxvY2sodm0pOworICAgIHJldHVybiB2bTsKK30KKwogc3RhdGljIFN0cmluZyBn
ZXRGdWxsQ0ZIVE1MKElEYXRhT2JqZWN0KiBkYXRhKQogewogICAgIFNUR01FRElVTSBzdG9yZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNX
aW4uaAppbmRleCBjMzdmM2UyZGUxOTYuLmM1MDc5OWI2M2UwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaApAQCAtMzgsNiAr
MzgsNyBAQCBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRh
KGNvbnN0IFN0cmluZyYpOwogSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFZlY3Rvcjxj
aGFyPiYpOwogSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHRpdGxlKTsKK0hHTE9CQUwgY3JlYXRlR2xvYmFsRGF0YShjb25zdCB1aW50OF90Kiwg
c2l6ZV90KTsKIAogRk9STUFURVRDKiB1cmxXRm9ybWF0KCk7CiBGT1JNQVRFVEMqIHVybEZvcm1h
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmlu
ZGV4IGYzY2I2Njg5OWJkYS4uNjg3NTdlYWE4YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC02NCw2ICs2NCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHN0YXRpYyBVSU5UIEhUTUxDbGlwYm9hcmRGb3JtYXQgPSAwOwogc3RhdGljIFVJ
TlQgQm9va21hcmtDbGlwYm9hcmRGb3JtYXQgPSAwOwogc3RhdGljIFVJTlQgV2ViU21hcnRQYXN0
ZUZvcm1hdCA9IDA7CitzdGF0aWMgVUlOVCBDdXN0b21EYXRhQ2xpcGJvYXJkRm9ybWF0ID0gMDsK
IAogc3RhdGljIExSRVNVTFQgQ0FMTEJBQ0sgUGFzdGVib2FyZE93bmVyV25kUHJvYyhIV05EIGhX
bmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsKQEAgLTEz
NSw2ICsxMzYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmZpbmlzaENyZWF0aW5nUGFzdGVib2FyZCgp
CiAgICAgSFRNTENsaXBib2FyZEZvcm1hdCA9IDo6UmVnaXN0ZXJDbGlwYm9hcmRGb3JtYXQoTCJI
VE1MIEZvcm1hdCIpOwogICAgIEJvb2ttYXJrQ2xpcGJvYXJkRm9ybWF0ID0gOjpSZWdpc3RlckNs
aXBib2FyZEZvcm1hdChMIlVuaWZvcm1SZXNvdXJjZUxvY2F0b3JXIik7CiAgICAgV2ViU21hcnRQ
YXN0ZUZvcm1hdCA9IDo6UmVnaXN0ZXJDbGlwYm9hcmRGb3JtYXQoTCJXZWJLaXQgU21hcnQgUGFz
dGUgRm9ybWF0Iik7CisgICAgQ3VzdG9tRGF0YUNsaXBib2FyZEZvcm1hdCA9IDo6UmVnaXN0ZXJD
bGlwYm9hcmRGb3JtYXQoTCJXZWJLaXQgQ3VzdG9tIERhdGEgRm9ybWF0Iik7CiB9CiAKIFBhc3Rl
Ym9hcmQ6OlBhc3RlYm9hcmQoKQpAQCAtMjQwLDEwICsyNDIsNDEgQEAgc3RhdGljIHZvaWQgYWRk
TWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdHMsIGNvbnN0IEZP
Uk1BVEVUQyYKICAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvcGxhaW4iKTsKIH0KIAotVmVjdG9y
PFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yQmluZGluZ3MoY29uc3QgU3RyaW5nJikK
K09wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2Fy
ZEN1c3RvbURhdGEoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHsgfTsK
KyAgICBpZiAoOjpJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShDdXN0b21EYXRhQ2xpcGJvYXJk
Rm9ybWF0KSAmJiA6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKKyAgICAgICAgaWYgKEhBTkRM
RSBjYkRhdGEgPSA6OkdldENsaXBib2FyZERhdGEoQ3VzdG9tRGF0YUNsaXBib2FyZEZvcm1hdCkp
IHsKKyAgICAgICAgICAgIHNpemVfdCBzaXplID0gR2xvYmFsU2l6ZShjYkRhdGEpOworICAgICAg
ICAgICAgYXV0byBkYXRhID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KEdsb2JhbExvY2soY2JEYXRh
KSk7CisgICAgICAgICAgICBhdXRvIGN1c3RvbURhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
ZnJvbVBlcnNpc3RlbmNlRGVjb2Rlcih7ZGF0YSwgc2l6ZX0pOworCisgICAgICAgICAgICBHbG9i
YWxVbmxvY2soY2JEYXRhKTsKKyAgICAgICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQoKTsKKworICAg
ICAgICAgICAgcmV0dXJuIGN1c3RvbURhdGE7CisgICAgICAgIH0KKyAgICAgICAgOjpDbG9zZUNs
aXBib2FyZCgpOworICAgIH0KKworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK1ZlY3Rv
cjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYg
b3JpZ2luKQoreworICAgIExpc3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5cGVzOwor
CisgICAgT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+IGN1c3RvbURhdGEgPSByZWFkUGFz
dGVib2FyZEN1c3RvbURhdGEoKTsKKworICAgIGlmIChjdXN0b21EYXRhICYmIGN1c3RvbURhdGEt
Pm9yaWdpbigpID09IG9yaWdpbikgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHR5cGUgOiBj
dXN0b21EYXRhLT5vcmRlcmVkVHlwZXMoKSkKKyAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBl
cy5hZGQodHlwZSk7CisgICAgfQorCisgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC9w
bGFpbiIpOworICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvdXJpLWxpc3QiKTsKKyAg
ICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwiKTsKKworICAgIHJldHVybiBjb3B5
VG9WZWN0b3IoZG9tUGFzdGVib2FyZFR5cGVzKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gUGFzdGVi
b2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCkBAIC0yODAsNyArMzEzLDExIEBA
IFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3Mo
KQogCiBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZE9yaWdpbigpCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gY3VzdG9tRGF0YSA9IHJl
YWRQYXN0ZWJvYXJkQ3VzdG9tRGF0YSgpOworCisgICAgaWYgKGN1c3RvbURhdGEpCisgICAgICAg
IHJldHVybiBjdXN0b21EYXRhLT5vcmlnaW4oKTsKKwogICAgIHJldHVybiB7IH07CiB9CiAKQEAg
LTMwNCw5ICszNDEsMTMgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3Ry
aW5nJiB0eXBlKQogICAgIHJldHVybiAiIjsKIH0KIAotU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRT
dHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJikKK1N0cmluZyBQYXN0ZWJvYXJkOjpyZWFk
U3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBjdXN0b21EYXRhID0g
cmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKCk7CisKKyAgICBpZiAoY3VzdG9tRGF0YSkKKyAgICAg
ICAgcmV0dXJuIGN1c3RvbURhdGEtPnJlYWRTdHJpbmdJbkN1c3RvbURhdGEodHlwZSk7CisKICAg
ICByZXR1cm4geyB9OwogfQogCkBAIC0xMDgyLDggKzExMjMsNDcgQEAgdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKQogewogfQogCi12b2lkIFBhc3RlYm9hcmQ6
OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikKK3Zv
aWQgUGFzdGVib2FyZDo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YT4mIGRhdGEpCiB7CisgICAgaWYgKGRhdGEuaXNFbXB0eSgpIHx8IGRhdGEuc2l6ZSgp
ID4gMSkgeworICAgICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgY3VzdG9t
IGl0ZW0gaW4gdGhlIGNsaXBib2FyZC4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNs
ZWFyKCk7CisKKyAgICBpZiAoOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CisgICAgICAgIGNv
bnN0IGF1dG8mIGN1c3RvbURhdGEgPSBkYXRhLmZpcnN0KCk7CisgICAgICAgIGN1c3RvbURhdGEu
Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoW10oYXV0byYgdHlwZSwgYXV0byYgc3RyaW5n
T3JCdWZmZXIpIHsKKyAgICAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmlu
Zz4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAgICAgICAgICAgQ2xpcGJvYXJkRGF0YVR5cGUg
ZGF0YVR5cGUgPSBjbGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBlKHR5cGUpOworCisgICAgICAgICAg
ICAgICAgU3RyaW5nIHN0ciA9IFdURjo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOworICAg
ICAgICAgICAgICAgIHJlcGxhY2VOZXdsaW5lc1dpdGhXaW5kb3dzU3R5bGVOZXdsaW5lcyhzdHIp
OworICAgICAgICAgICAgICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShzdHIp
OworCisgICAgICAgICAgICAgICAgaWYgKGRhdGFUeXBlID09IENsaXBib2FyZERhdGFUeXBlVGV4
dCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY2JEYXRhICYmICE6OlNldENsaXBib2FyZERh
dGEoQ0ZfVU5JQ09ERVRFWFQsIGNiRGF0YSkpCisgICAgICAgICAgICAgICAgICAgICAgICA6Okds
b2JhbEZyZWUoY2JEYXRhKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFUeXBlID09
IENsaXBib2FyZERhdGFUeXBlVVJMKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjYkRhdGEg
JiYgITo6U2V0Q2xpcGJvYXJkRGF0YShCb29rbWFya0NsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOworICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0SFRNTCkg
eworICAgICAgICAgICAgICAgICAgICBpZiAoY2JEYXRhICYmICE6OlNldENsaXBib2FyZERhdGEo
SFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6
R2xvYmFsRnJlZShjYkRhdGEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisKKyAgICAgICAgaWYgKGN1c3RvbURhdGEuaGFzU2FtZU9yaWdpbkN1c3RvbURh
dGEoKSB8fCAhY3VzdG9tRGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gY3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKTsKKyAgICAg
ICAgICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihzaGFyZWRCdWZmZXItPmRhdGEoKSksIHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICAgICAgICAgIGlmIChjYkRhdGEgJiYgITo6U2V0Q2xpcGJvYXJkRGF0YShDdXN0
b21EYXRhQ2xpcGJvYXJkRm9ybWF0LCBjYkRhdGEpKQorICAgICAgICAgICAgICAgIDo6R2xvYmFs
RnJlZShjYkRhdGEpOworICAgICAgICB9CisKKyAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwor
ICAgIH0KIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDExMTdjZTZkMGM3OC4uMWY5MjIxYThiMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDIwLTA3LTAzICBUb21va2kgSW1haSAgPFRvbW9raS5JbWFpQHNvbnkuY29tPgorCisgICAg
ICAgIFtXaW5dIEltcGxlbWVudCBQYXN0ZWJvYXJkOjp3cml0ZUN1c3RvbURhdGEgZm9yIFdlYiBJ
bnNwZWN0b3IgQ29uc29sZSB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMzk4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oOiBUdXJu
IERFRkFVTFRfQ1VTVE9NX1BBU1RFQk9BUkRfREFUQV9FTkFCTEVEIG9uIGZvciBXaW5kb3dzCisK
IDIwMjAtMDctMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBNYWtlIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIFNQSSBmb3Ig
SFNUUyBzdG9yYWdlIHRvIHJlcGxhY2UgX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmhzdHNT
dG9yYWdlRGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVm
ZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzRGVmYXVsdFZhbHVlcy5oCmluZGV4IGE4MmY2YjU2MzViNi4uMmFjZWFkOTUyYjczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMu
aApAQCAtMjM4LDcgKzIzOCw3IEBACiAjZGVmaW5lIERFRkFVTFRfREFUQUxJU1RfRUxFTUVOVF9F
TkFCTEVEIHRydWUKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdU
SykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4p
CiAjZGVmaW5lIERFRkFVTFRfQ1VTVE9NX1BBU1RFQk9BUkRfREFUQV9FTkFCTEVEIHRydWUKICNl
bHNlCiAjZGVmaW5lIERFRkFVTFRfQ1VTVE9NX1BBU1RFQk9BUkRfREFUQV9FTkFCTEVEIGZhbHNl
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>