<?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>194551</bug_id>
          
          <creation_ts>2019-02-12 12:45:52 -0800</creation_ts>
          <short_desc>[WPE][GTK] Merge WebProcessPoolWPE.cpp and WebProcessPoolGtk.cpp</short_desc>
          <delta_ts>2019-02-13 14:49:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1505335</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-12 12:45:52 -0800</bug_when>
    <thetext>Merge WebProcessPoolWPE and WebProcessPoolGtk since the files are almost entirely duplicated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505338</commentid>
    <comment_count>1</comment_count>
      <attachid>361820</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-12 12:48:19 -0800</bug_when>
    <thetext>Created attachment 361820
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505633</commentid>
    <comment_count>2</comment_count>
      <attachid>361820</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-12 23:30:11 -0800</bug_when>
    <thetext>Comment on attachment 361820
Patch

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

&gt; Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp:43
&gt; +#include &quot;APIProcessPoolConfiguration.h&quot;
&gt; +#include &quot;Logging.h&quot;
&gt; +#include &quot;WebCookieManagerProxy.h&quot;
&gt; +#include &quot;WebMemoryPressureHandler.h&quot;
&gt; +#include &quot;WebProcessCreationParameters.h&quot;
&gt; +#include &quot;WebProcessMessages.h&quot;
&gt; +#include &lt;JavaScriptCore/RemoteInspectorServer.h&gt;
&gt; +#include &lt;WebCore/GStreamerCommon.h&gt;
&gt; +#include &lt;WebCore/NotImplemented.h&gt;
&gt; +#include &lt;WebCore/SchemeRegistry.h&gt;
&gt; +#include &lt;wtf/FileSystem.h&gt;
&gt; +#include &lt;wtf/glib/GUniquePtr.h&gt;
&gt; +#include &lt;wtf/text/CString.h&gt;

This is a good opportunity to clean up the include headers, I&apos;m sure we can remove some of them.

&gt; Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp:101
&gt; +    // This is misnamed. It can only be used to disable complex text.
&gt; +    parameters.shouldAlwaysUseComplexTextCodePath = true;
&gt; +    const char* forceComplexText = getenv(&quot;WEBKIT_FORCE_COMPLEX_TEXT&quot;);
&gt; +    if (forceComplexText &amp;&amp; !strcmp(forceComplexText, &quot;0&quot;))

It&apos;s only for debugging, so we can just rename it. There isn&apos;t any script currently using it (WKTR used it to disable complex text in layout tests). I think we can use it in wpe too (in that case to force complex text).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505856</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-13 14:35:05 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #2)
&gt; This is a good opportunity to clean up the include headers, I&apos;m sure we can
&gt; remove some of them.

You&apos;re right, half of them are stale. I got it down to:

#include &quot;WebMemoryPressureHandler.h&quot;
#include &quot;WebProcessCreationParameters.h&quot;
#include &lt;JavaScriptCore/RemoteInspectorServer.h&gt;
#include &lt;WebCore/GStreamerCommon.h&gt;
#include &lt;wtf/glib/GUniquePtr.h&gt;

Though we&apos;re probably missing some we ought to have, thanks to unified build.

&gt; &gt; Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp:101
&gt; &gt; +    // This is misnamed. It can only be used to disable complex text.
&gt; &gt; +    parameters.shouldAlwaysUseComplexTextCodePath = true;
&gt; &gt; +    const char* forceComplexText = getenv(&quot;WEBKIT_FORCE_COMPLEX_TEXT&quot;);
&gt; &gt; +    if (forceComplexText &amp;&amp; !strcmp(forceComplexText, &quot;0&quot;))
&gt; 
&gt; It&apos;s only for debugging, so we can just rename it. There isn&apos;t any script
&gt; currently using it (WKTR used it to disable complex text in layout tests). I
&gt; think we can use it in wpe too (in that case to force complex text).

I&apos;ll do a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505857</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-13 14:35:20 -0800</bug_when>
    <thetext>Committed r241474: &lt;https://trac.webkit.org/changeset/241474&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505869</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-13 14:49:40 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #3)
&gt; I&apos;ll do a follow-up.

Bug #194614</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361820</attachid>
            <date>2019-02-12 12:48:19 -0800</date>
            <delta_ts>2019-02-12 23:30:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194551-20190212144818.patch</filename>
            <type>text/plain</type>
            <size>16176</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZjYTJkZTMwYWMxZTcxZTQ3
ZTZlZjc4NmJlYTIyOTMyMzRiMzY4YWEuLjdjYjkxY2EzOGVjZWY0Mjg4NWU1ODIwOTNhZWQ1NDAx
ZDlmYmE0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMDItMTIgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdW0dUS10g
TWVyZ2UgV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwIGFuZCBXZWJQcm9jZXNzUG9vbEd0ay5jcHAKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDU1MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlc0dU
Sy50eHQ6CisgICAgICAgICogU291cmNlc1dQRS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAuCisgICAgICAgIChXZWJLaXQ6OmluaXRp
YWxpemVSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjptZW1vcnlQcmVz
c3VyZU1vbml0b3JEaXNhYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpw
bGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybUludmFsaWRhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnBsYXRmb3JtUmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwOiBSZW1vdmVkLgorCiAy
MDE5LTAyLTEyICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbV1BFXVtHVEtdIFVuc2FmZSBnX3Vuc2V0ZW52KCkgdXNlIGluIFdlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybUluaXRpYWxpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CmluZGV4IDQ4MjlhOWZmMjcy
MzdjNGE0OTQzMWNjMzQ0ZTk1MzBkMWEyNDRmMzEuLjkwZDg5MGVlYTdiZmU3YmY4NGQ0ZmRmNmIy
NmRmZWZiMzBmZDY5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dApAQCAtMjI5LDYgKzIyOSw3IEBAIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS91bml4L1dlYnNpdGVEYXRhU3RvcmVVbml4LmNwcAogVUlQcm9j
ZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL2ds
aWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAorVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bv
b2xHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKIAogVUlQ
cm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1
ZXN0LmNwcApAQCAtMjU1LDcgKzI1Niw2IEBAIFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3Rr
LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9ndGsvV2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcAog
VUlQcm9jZXNzL2d0ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5jcHAKIFVJUHJvY2Vzcy9ndGsvV2Vi
UHJlZmVyZW5jZXNHdGsuY3BwCi1VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcCBA
bm8tdW5pZnkKIAogVUlQcm9jZXNzL3NvdXAvV2ViQ29va2llTWFuYWdlclByb3h5U291cC5jcHAK
IFVJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0Cmlu
ZGV4IDVjZTk1ODMzYjYwNDEyNjExMDVkODU0ODFiNDFkMDk5ZTJkYmYyNmQuLjc2NWM2OWQ1MTlk
ZjI5OThiMjg1MWJlYjYwN2YzYzU5MzE4ODU5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dApAQCAtMTc5
LDYgKzE3OSw3IEBAIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNz
aW9uQ2Fpcm8uY3BwCiAKIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL3dwZS9XZWJBdXRvbWF0aW9uU2Vz
c2lvbldQRS5jcHAKIAorVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQ
cm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKIAogVUlQcm9jZXNzL0xhdW5jaGVy
L2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKQEAgLTIwOCw3ICsyMDksNiBAQCBVSVByb2Nl
c3Mvd3BlL1dlYkluc3BlY3RvclByb3h5V1BFLmNwcAogVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJv
eHlXUEUuY3BwCiBVSVByb2Nlc3Mvd3BlL1dlYlBhc3RlYm9hcmRQcm94eVdQRS5jcHAKIFVJUHJv
Y2Vzcy93cGUvV2ViUHJlZmVyZW5jZXNXUEUuY3BwCi1VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQ
b29sV1BFLmNwcAogCiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01P
YmplY3RDYWNoZS5jcHAgQG5vLXVuaWZ5CiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
bGliL0RPTS9XZWJLaXRET01Eb2N1bWVudC5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzM4YmNmNWY3YmJmNTI4NzkzNTcwMGE4ZDMyYmU4MTUzZTY4NGJkNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcApA
QCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3Jv
bGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcyBMdGQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKwor
I2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJN
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9H
U3RyZWFtZXJDb21tb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIo
Y29uc3QgY2hhciogYWRkcmVzcykKK3sKKyAgICBpZiAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JTZXJ2ZXI6OnNpbmdsZXRvbigpLmlzUnVubmluZygpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoIWFkZHJlc3NbMF0pCisgICAgICAgIHJldHVybjsKKworICAgIEdVbmlxdWVQdHI8Y2hh
cj4gaW5zcGVjdG9yQWRkcmVzcyhnX3N0cmR1cChhZGRyZXNzKSk7CisgICAgY2hhciogcG9ydFB0
ciA9IGdfc3RycnN0cihpbnNwZWN0b3JBZGRyZXNzLmdldCgpLCAiOiIpOworICAgIGlmICghcG9y
dFB0cikKKyAgICAgICAgcmV0dXJuOworCisgICAgKnBvcnRQdHIgPSAnXDAnOworICAgIHBvcnRQ
dHIrKzsKKyAgICBndWludDY0IHBvcnQgPSBnX2FzY2lpX3N0cnRvdWxsKHBvcnRQdHIsIG51bGxw
dHIsIDEwKTsKKyAgICBpZiAoIXBvcnQpCisgICAgICAgIHJldHVybjsKKworICAgIEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0b24oKS5zdGFydChpbnNwZWN0b3JBZGRy
ZXNzLmdldCgpLCBwb3J0KTsKK30KKyNlbmRpZgorCitzdGF0aWMgYm9vbCBtZW1vcnlQcmVzc3Vy
ZU1vbml0b3JEaXNhYmxlZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRpc2FibGVNZW1v
cnlQcmVzc3VyZU1vbml0b3IgPSBnZXRlbnYoIldFQktJVF9ESVNBQkxFX01FTU9SWV9QUkVTU1VS
RV9NT05JVE9SIik7CisgICAgcmV0dXJuIGRpc2FibGVNZW1vcnlQcmVzc3VyZU1vbml0b3IgJiYg
IXN0cmNtcChkaXNhYmxlTWVtb3J5UHJlc3N1cmVNb25pdG9yLCAiMSIpOworfQorCit2b2lkIFdl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQorICAgIGlmIChjb25zdCBjaGFyKiBhZGRyZXNzID0gZ19nZXRlbnYoIldFQktJ
VF9JTlNQRUNUT1JfU0VSVkVSIikpCisgICAgICAgIGluaXRpYWxpemVSZW1vdGVJbnNwZWN0b3JT
ZXJ2ZXIoYWRkcmVzcyk7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykKKyAgICAvLyBUbyBl
bmFibGUgdGhpcyBmb3IgV1BFLCB3ZSBuZWVkIFdlYk1lbW9yeVByZXNzdXJlSGFuZGxlciB0byBs
b3NlIHRoZQorICAgIC8vIGhhcmQgZGVwZW5kZW5jeSBvbiBWaWV3U25hcHNob3RTdG9yZS4KKyAg
ICBpZiAoIW1lbW9yeVByZXNzdXJlTW9uaXRvckRpc2FibGVkKCkpCisgICAgICAgIGluc3RhbGxN
ZW1vcnlQcmVzc3VyZUhhbmRsZXIoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlByb2Nlc3NQb29s
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCit7CisgICAgcGFyYW1ldGVycy5tZW1vcnlDYWNoZURpc2FibGVkID0g
bV9tZW1vcnlDYWNoZURpc2FibGVkIHx8IGNhY2hlTW9kZWwoKSA9PSBDYWNoZU1vZGVsOjpEb2N1
bWVudFZpZXdlcjsKKyAgICBwYXJhbWV0ZXJzLnByb3h5U2V0dGluZ3MgPSBtX25ldHdvcmtQcm94
eVNldHRpbmdzOworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIC8vIFRoaXMgaXMgbWlzbmFtZWQu
IEl0IGNhbiBvbmx5IGJlIHVzZWQgdG8gZGlzYWJsZSBjb21wbGV4IHRleHQuCisgICAgcGFyYW1l
dGVycy5zaG91bGRBbHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoID0gdHJ1ZTsKKyAgICBjb25z
dCBjaGFyKiBmb3JjZUNvbXBsZXhUZXh0ID0gZ2V0ZW52KCJXRUJLSVRfRk9SQ0VfQ09NUExFWF9U
RVhUIik7CisgICAgaWYgKGZvcmNlQ29tcGxleFRleHQgJiYgIXN0cmNtcChmb3JjZUNvbXBsZXhU
ZXh0LCAiMCIpKQorICAgICAgICBwYXJhbWV0ZXJzLnNob3VsZEFsd2F5c1VzZUNvbXBsZXhUZXh0
Q29kZVBhdGggPSBtX2Fsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoOworI2VuZGlmCisKKyAg
ICBpZiAobWVtb3J5UHJlc3N1cmVNb25pdG9yRGlzYWJsZWQoKSkKKyAgICAgICAgcGFyYW1ldGVy
cy5zaG91bGRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciA9IHRydWU7CisKKyNpZiBVU0Uo
R1NUUkVBTUVSKQorICAgIHBhcmFtZXRlcnMuZ3N0cmVhbWVyT3B0aW9ucyA9IFdlYkNvcmU6OmV4
dHJhY3RHU3RyZWFtZXJPcHRpb25zRnJvbUNvbW1hbmRMaW5lKCk7CisjZW5kaWYKK30KKwordm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgpCit7Cit9CisKK3Zv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtUmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lv
bnMoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhM2IwZGVjMTczYmNiODgyYjFhNTYyNWZkNWI3MWU4NWFjMWIzMWRlLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwx
MTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9i
aWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcyBMdGQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLQotI2luY2x1
ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
LSNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXZWJNZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9HU3RyZWFt
ZXJDb21tb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgotI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIoY29uc3Qg
Y2hhciogYWRkcmVzcykKLXsKLSAgICBpZiAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2
ZXI6OnNpbmdsZXRvbigpLmlzUnVubmluZygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
IWFkZHJlc3NbMF0pCi0gICAgICAgIHJldHVybjsKLQotICAgIEdVbmlxdWVQdHI8Y2hhcj4gaW5z
cGVjdG9yQWRkcmVzcyhnX3N0cmR1cChhZGRyZXNzKSk7Ci0gICAgY2hhciogcG9ydFB0ciA9IGdf
c3RycnN0cihpbnNwZWN0b3JBZGRyZXNzLmdldCgpLCAiOiIpOwotICAgIGlmICghcG9ydFB0cikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgKnBvcnRQdHIgPSAnXDAnOwotICAgIHBvcnRQdHIrKzsK
LSAgICBndWludDY0IHBvcnQgPSBnX2FzY2lpX3N0cnRvdWxsKHBvcnRQdHIsIG51bGxwdHIsIDEw
KTsKLSAgICBpZiAoIXBvcnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0b24oKS5zdGFydChpbnNwZWN0b3JBZGRyZXNzLmdl
dCgpLCBwb3J0KTsKLX0KLSNlbmRpZgotCi1zdGF0aWMgYm9vbCBtZW1vcnlQcmVzc3VyZU1vbml0
b3JEaXNhYmxlZCgpCi17Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGRpc2FibGVNZW1vcnlQcmVz
c3VyZU1vbml0b3IgPSBnZXRlbnYoIldFQktJVF9ESVNBQkxFX01FTU9SWV9QUkVTU1VSRV9NT05J
VE9SIik7Ci0gICAgcmV0dXJuIGRpc2FibGVNZW1vcnlQcmVzc3VyZU1vbml0b3IgJiYgIXN0cmNt
cChkaXNhYmxlTWVtb3J5UHJlc3N1cmVNb25pdG9yLCAiMSIpOwotfQotCi12b2lkIFdlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQotewotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQotICAgIGlmIChjb25zdCBjaGFyKiBhZGRyZXNzID0gZ19nZXRlbnYoIldFQktJVF9JTlNQ
RUNUT1JfU0VSVkVSIikpCi0gICAgICAgIGluaXRpYWxpemVSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIo
YWRkcmVzcyk7Ci0jZW5kaWYKLQotICAgIGlmICghbWVtb3J5UHJlc3N1cmVNb25pdG9yRGlzYWJs
ZWQoKSkKLSAgICAgICAgaW5zdGFsbE1lbW9yeVByZXNzdXJlSGFuZGxlcigpOwotfQotCi12b2lk
IFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi17Ci0gICAgcGFyYW1ldGVycy5tZW1vcnlD
YWNoZURpc2FibGVkID0gbV9tZW1vcnlDYWNoZURpc2FibGVkIHx8IGNhY2hlTW9kZWwoKSA9PSBD
YWNoZU1vZGVsOjpEb2N1bWVudFZpZXdlcjsKLSAgICBwYXJhbWV0ZXJzLnByb3h5U2V0dGluZ3Mg
PSBtX25ldHdvcmtQcm94eVNldHRpbmdzOwotCi0gICAgcGFyYW1ldGVycy5zaG91bGRBbHdheXNV
c2VDb21wbGV4VGV4dENvZGVQYXRoID0gdHJ1ZTsKLSAgICBjb25zdCBjaGFyKiBmb3JjZUNvbXBs
ZXhUZXh0ID0gZ2V0ZW52KCJXRUJLSVRfRk9SQ0VfQ09NUExFWF9URVhUIik7Ci0gICAgaWYgKGZv
cmNlQ29tcGxleFRleHQgJiYgIXN0cmNtcChmb3JjZUNvbXBsZXhUZXh0LCAiMCIpKQotICAgICAg
ICBwYXJhbWV0ZXJzLnNob3VsZEFsd2F5c1VzZUNvbXBsZXhUZXh0Q29kZVBhdGggPSBtX2Fsd2F5
c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoOwotCi0gICAgaWYgKG1lbW9yeVByZXNzdXJlTW9uaXRv
ckRpc2FibGVkKCkpCi0gICAgICAgIHBhcmFtZXRlcnMuc2hvdWxkU3VwcHJlc3NNZW1vcnlQcmVz
c3VyZUhhbmRsZXIgPSB0cnVlOwotCi0jaWYgVVNFKEdTVFJFQU1FUikKLSAgICBwYXJhbWV0ZXJz
LmdzdHJlYW1lck9wdGlvbnMgPSBXZWJDb3JlOjpleHRyYWN0R1N0cmVhbWVyT3B0aW9uc0Zyb21D
b21tYW5kTGluZSgpOwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3Jt
SW52YWxpZGF0ZUNvbnRleHQoKQotewotfQotCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9y
bVJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkKLXsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJv
Y2Vzc1Bvb2xXUEUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQ
b29sV1BFLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ5ZTJmODNlMTQzMWY3
ZmU1ZThmMGI4NDFlOWVkZDU0YjJiZmI0Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bv
b2xXUEUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogUG9ydGlvbnMg
Q29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MgTHRkLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0KLSNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NN
ZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgotI2luY2x1ZGUg
IldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgotI2luY2x1ZGUgPGNzdGRsaWI+Ci0jaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KLQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3RvclNlcnZlci5oPgotI2luY2x1ZGUgPHd0
Zi9nbGliL0dVbmlxdWVQdHIuaD4KLSNlbmRpZgotCi0jaWYgVVNFKEdTVFJFQU1FUikKLSNpbmNs
dWRlIDxXZWJDb3JlL0dTdHJlYW1lckNvbW1vbi5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi1zdGF0aWMgdm9pZCBpbml0aWFs
aXplUmVtb3RlSW5zcGVjdG9yU2VydmVyKGNvbnN0IGNoYXIqIGFkZHJlc3MpCi17Ci0gICAgaWYg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0b24oKS5pc1J1bm5pbmco
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFhZGRyZXNzWzBdKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBHVW5pcXVlUHRyPGNoYXI+IGluc3BlY3RvckFkZHJlc3MoZ19zdHJkdXAoYWRk
cmVzcykpOwotICAgIGNoYXIqIHBvcnRQdHIgPSBnX3N0cnJzdHIoaW5zcGVjdG9yQWRkcmVzcy5n
ZXQoKSwgIjoiKTsKLSAgICBpZiAoIXBvcnRQdHIpCi0gICAgICAgIHJldHVybjsKLQotICAgICpw
b3J0UHRyID0gJ1wwJzsKLSAgICBwb3J0UHRyKys7Ci0gICAgZ3VpbnQ2NCBwb3J0ID0gZ19hc2Np
aV9zdHJ0b3VsbChwb3J0UHRyLCBudWxscHRyLCAxMCk7Ci0gICAgaWYgKCFwb3J0KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2luZ2xl
dG9uKCkuc3RhcnQoaW5zcGVjdG9yQWRkcmVzcy5nZXQoKSwgcG9ydCk7Ci19Ci0jZW5kaWYKLQot
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplKCkKLXsKLSNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKLSAgICBpZiAoY29uc3QgY2hhciogYWRkcmVzcyA9IGdfZ2V0ZW52
KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIpKQotICAgICAgICBpbml0aWFsaXplUmVtb3RlSW5z
cGVjdG9yU2VydmVyKGFkZHJlc3MpOwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKLXsKLSAgICBwYXJhbWV0ZXJzLm1lbW9yeUNhY2hlRGlzYWJsZWQgPSBt
X21lbW9yeUNhY2hlRGlzYWJsZWQgfHwgY2FjaGVNb2RlbCgpID09IENhY2hlTW9kZWw6OkRvY3Vt
ZW50Vmlld2VyOwotCi0gICAgY29uc3QgY2hhciogZGlzYWJsZU1lbW9yeVByZXNzdXJlTW9uaXRv
ciA9IGdldGVudigiV0VCS0lUX0RJU0FCTEVfTUVNT1JZX1BSRVNTVVJFX01PTklUT1IiKTsKLSAg
ICBpZiAoZGlzYWJsZU1lbW9yeVByZXNzdXJlTW9uaXRvciAmJiAhc3RyY21wKGRpc2FibGVNZW1v
cnlQcmVzc3VyZU1vbml0b3IsICIxIikpCi0gICAgICAgIHBhcmFtZXRlcnMuc2hvdWxkU3VwcHJl
c3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIgPSB0cnVlOwotCi0jaWYgVVNFKEdTVFJFQU1FUikKLSAg
ICBwYXJhbWV0ZXJzLmdzdHJlYW1lck9wdGlvbnMgPSBXZWJDb3JlOjpleHRyYWN0R1N0cmVhbWVy
T3B0aW9uc0Zyb21Db21tYW5kTGluZSgpOwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtUmVzb2x2ZVBhdGhzRm9yU2FuZGJv
eEV4dGVuc2lvbnMoKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="378460"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
    <flag name="commit-queue"
          id="378541"
          type_id="3"
          status="-"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>