<?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>176043</bug_id>
          
          <creation_ts>2017-08-28 18:12:19 -0700</creation_ts>
          <short_desc>Begin transition to modern IPC decoding</short_desc>
          <delta_ts>2017-09-27 12:52:19 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>buildbot</cc>
    
    <cc>dbates</cc>
    
    <cc>jfbastien</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1343014</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-28 18:12:19 -0700</bug_when>
    <thetext>Begin transition to modern IPC decoding</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343015</commentid>
    <comment_count>1</comment_count>
      <attachid>319225</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-28 18:19:25 -0700</bug_when>
    <thetext>Created attachment 319225
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343177</commentid>
    <comment_count>2</comment_count>
      <attachid>319269</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-29 11:56:39 -0700</bug_when>
    <thetext>Created attachment 319269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343192</commentid>
    <comment_count>3</comment_count>
      <attachid>319269</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-08-29 13:22:52 -0700</bug_when>
    <thetext>Comment on attachment 319269
Patch

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

This looks like a good start.  The syntax I was hoping for eventually was something like:


std::optional&lt;double&gt; aDouble &lt;&lt; decoder;
std::optional&lt;int&gt; anInteger &lt;&lt; decoder;
std::optional&lt;WebPageGroupData&gt; aPageGroupData &lt;&lt; decoder;

if (!decoder.isCool())
    return std::nullopt;

return { *aDouble, *anInteger, WTFMove(*aPageGroupData) };

Note how no explicit if checks are needed.  The decoder would simply have an &quot;I have error&quot; bit and do nothing if it was set.

This can probably be improved upon as well, but it would be a nice mirror to the encoder, which looks like:

encoder &lt;&lt; aDouble;
encoder &lt;&lt; anInteger;
encoder &lt;&lt; aPageGroupData;

&gt; Source/WebKit/Platform/IPC/ArgumentCoder.h:40
&gt; +#define USE_MODERN_DECODER(classname) template&lt;&gt; struct UsesLegacyDecoder&lt;classname&gt; : public std::false_type { };
&gt; +USE_MODERN_DECODER(WebKit::WebPageCreationParameters);
&gt; +USE_MODERN_DECODER(WebKit::WebPageGroupData);
&gt; +USE_MODERN_DECODER(WebKit::WebsitePolicies);

Why don&apos;t you do this in the header of the class? And drop the macro.

&gt; Source/WebKit/Platform/IPC/ArgumentCoder.h:62
&gt; +    static auto decode(Decoder&amp; decoder) -&gt; std::enable_if_t&lt;!UsesLegacyDecoder&lt;U&gt;::value, std::optional&lt;U&gt;&gt; {
&gt; +        return U::decode(decoder);
&gt;      }

{
should be on the next line.

&gt; Source/WebKit/Shared/WebPageCreationParameters.cpp:115
&gt; +        return { };

These should be std::nullopt,

&gt; Source/WebKit/Shared/WebPageCreationParameters.cpp:123
&gt; +    std::optional&lt;WebPageGroupData&gt; pageGroupData;
&gt; +    decoder &gt;&gt; pageGroupData;

This would be nicer if it read

std::optional&lt;WebPageGroupData&gt; pageGroupData &lt;&lt; decoder.

Do you think that&apos;s doable?

&gt; Source/WebKit/Shared/WebPageGroupData.cpp:59
&gt; +    return {{id, pageGroupID, visibleToInjectedBundle, visibleToHistoryClient, userContentControllerIdentifier}};

Please put spaces around the parenthesis.  e.g. return { { id, pageGroupID...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343194</commentid>
    <comment_count>4</comment_count>
      <attachid>319269</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-08-29 13:23:49 -0700</bug_when>
    <thetext>Comment on attachment 319269
Patch

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

&gt; Source/WebKit/Platform/IPC/ArgumentCoder.h:38
&gt; +#define USE_MODERN_DECODER(classname) template&lt;&gt; struct UsesLegacyDecoder&lt;classname&gt; : public std::false_type { };
&gt; +USE_MODERN_DECODER(WebKit::WebPageCreationParameters);

You might be able to avoid this by checking if decode has a bool return type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343198</commentid>
    <comment_count>5</comment_count>
      <attachid>319269</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-29 13:36:56 -0700</bug_when>
    <thetext>Comment on attachment 319269
Patch

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

&gt;&gt; Source/WebKit/Shared/WebPageCreationParameters.cpp:123
&gt;&gt; +    decoder &gt;&gt; pageGroupData;
&gt; 
&gt; This would be nicer if it read
&gt; 
&gt; std::optional&lt;WebPageGroupData&gt; pageGroupData &lt;&lt; decoder.
&gt; 
&gt; Do you think that&apos;s doable?

That would require overloading operator&lt;&lt; on std::optional, which I don&apos;t think is a good thing to do, and I&apos;m not sure we can.  Also, I think having operator&gt;&gt; on decoders mirroring operator&lt;&lt; on encoders is symmetric like std::istream::operator&gt;&gt; and std::ostream::operator&lt;&lt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343210</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-29 14:05:22 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; Comment on attachment 319269 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=319269&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/Shared/WebPageCreationParameters.cpp:123
&gt; &gt;&gt; +    decoder &gt;&gt; pageGroupData;
&gt; &gt; 
&gt; &gt; This would be nicer if it read
&gt; &gt; 
&gt; &gt; std::optional&lt;WebPageGroupData&gt; pageGroupData &lt;&lt; decoder.
&gt; &gt; 
&gt; &gt; Do you think that&apos;s doable?
&gt; 
&gt; That would require overloading operator&lt;&lt; on std::optional, which I don&apos;t
&gt; think is a good thing to do, and I&apos;m not sure we can.  Also, I think having
&gt; operator&gt;&gt; on decoders mirroring operator&lt;&lt; on encoders is symmetric like
&gt; std::istream::operator&gt;&gt; and std::ostream::operator&lt;&lt;

This is impossible even if we had such an operator.  We would need to do this by overloading the std::optional constructor, and we definitely shouldn&apos;t do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343214</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-08-29 14:12:38 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #6)
&gt; (In reply to Alex Christensen from comment #5)
&gt; &gt; Comment on attachment 319269 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=319269&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit/Shared/WebPageCreationParameters.cpp:123
&gt; &gt; &gt;&gt; +    decoder &gt;&gt; pageGroupData;
&gt; &gt; &gt; 
&gt; &gt; &gt; This would be nicer if it read
&gt; &gt; &gt; 
&gt; &gt; &gt; std::optional&lt;WebPageGroupData&gt; pageGroupData &lt;&lt; decoder.
&gt; &gt; &gt; 
&gt; &gt; &gt; Do you think that&apos;s doable?
&gt; &gt; 
&gt; &gt; That would require overloading operator&lt;&lt; on std::optional, which I don&apos;t
&gt; &gt; think is a good thing to do, and I&apos;m not sure we can.  Also, I think having
&gt; &gt; operator&gt;&gt; on decoders mirroring operator&lt;&lt; on encoders is symmetric like
&gt; &gt; std::istream::operator&gt;&gt; and std::ostream::operator&lt;&lt;
&gt; 
&gt; This is impossible even if we had such an operator.  We would need to do
&gt; this by overloading the std::optional constructor, and we definitely
&gt; shouldn&apos;t do that.

Yeah, you&apos;re right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343243</commentid>
    <comment_count>8</comment_count>
      <attachid>319288</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-29 15:04:50 -0700</bug_when>
    <thetext>Created attachment 319288
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343245</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-29 15:06:18 -0700</bug_when>
    <thetext>Attachment 319288 did not pass style-queue:


ERROR: Source/WebKit/Platform/IPC/ArgumentCoders.h:146:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebKit/Platform/IPC/ArgumentCoder.h:47:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebKit/Platform/IPC/Decoder.h:134:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 3 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343269</commentid>
    <comment_count>10</comment_count>
      <attachid>319288</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-08-29 15:43:39 -0700</bug_when>
    <thetext>Comment on attachment 319288
Patch

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

r=me

&gt; Source/WebKit/Platform/IPC/ArgumentCoder.h:46
&gt; +    static auto decode(Decoder&amp; decoder, U&amp; u) -&gt; std::enable_if_t&lt;!UsesModernDecoder&lt;U&gt;::value, bool&gt;

I&apos;d make enable_if a default template parameter instead. De-clutters the return type.

&gt; Source/WebKit/Shared/WebPageCreationParameters.cpp:264
&gt; +    return { WTFMove(parameters) };

Do you need the curls here? Or can you implicitly get optional(U&amp;&amp;) ?

&gt; Source/WebKit/Shared/WebPageGroupData.cpp:59
&gt; +    return { { id, pageGroupID, visibleToInjectedBundle, visibleToHistoryClient, userContentControllerIdentifier } };

I&apos;m not a fan of multi-bools but separate change... I like enum class here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343272</commentid>
    <comment_count>11</comment_count>
      <attachid>319295</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-29 15:49:32 -0700</bug_when>
    <thetext>Created attachment 319295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343273</commentid>
    <comment_count>12</comment_count>
      <attachid>319295</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-29 15:50:04 -0700</bug_when>
    <thetext>Comment on attachment 319295
Patch

http://trac.webkit.org/r221319</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348199</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-09-12 20:59:27 -0700</bug_when>
    <thetext>Marking this bug as Resolved Fixed per comment #12. If this bug is not fixed then please either re-open this bug or file a new bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353699</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:52:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694179&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319225</attachid>
            <date>2017-08-28 18:19:25 -0700</date>
            <delta_ts>2017-08-29 11:56:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176043-20170828181925.patch</filename>
            <type>text/plain</type>
            <size>16322</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjEyODYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA4LTI4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmVnaW4gdHJhbnNp
dGlvbiB0byBtb2Rlcm4gSVBDIGRlY29kaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYwNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSaWdodCBub3csIGlmIGEgY2xhc3MgaXMgZGVjb2RlZCBmcm9t
IElQQyB3ZSBtdXN0IGhhdmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLgorICAgICAgICBUaGlzIHBy
ZXZlbnRzIHVzIGZyb20gaGF2aW5nIFJlZiBvciBDKysgcmVmZXJlbmNlcyBpbiBzdWNoIHR5cGVz
LCB3aGljaCBpcyBjbHV0dGVyaW5nIHVwIG91ciBjb2RlLgorICAgICAgICBUaGlzIGlzIGJlY2F1
c2UgSVBDOjpkZWNvZGUgbWFrZXMgYSBkZWZhdWx0LWNvbnN0cnVjdGVkIG9iamVjdCwgZmlsbHMg
aXQsIGFuZCByZXR1cm5zIGEgYm9vbCBpbmRpY2F0aW5nIHN1Y2Nlc3MuCisgICAgICAgIE1ha2lu
ZyBJUEM6OmRlY29kZSBpbnN0ZWFkIHJldHVybiBhIHN0ZDo6b3B0aW9uYWwgbWFrZXMgaXQgc28g
d2UgZG8gbm90IG5lZWQgdG8gY2FsbCBhbiBlbXB0eSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgVGhp
cyBjb3VsZCBhbHNvIGVuYWJsZSB1cyB0byBhZGQgSVBDOjpEZWNvZGVyOjpvcGVyYXRvcj4+IGFu
ZCBvdGhlciBmdW4gdGhpbmdzIQorICAgICAgICBJZiB3ZSB3YW50IHRvIG5vdCByZS1zdGF0ZSB0
aGUgdHlwZXMgb2YgZWFjaCBtZW1iZXIgdmFyaWFibGUsIHdlIGNhbiBzdGlsbCBpbnN0YW50aWF0
ZSBhCisgICAgICAgIGRlZmF1bHQtY29uc3RydWN0ZWQgb2JqZWN0LCBkZWNvZGUgaW50byBpdCwg
YW5kIHJldHVybiBpdCwgd2hpY2ggSSBkaWQgZm9yIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
CisgICAgICAgIEkgYWxzbyBtb2Rlcm5pemVkIHR3byBhcmJpdHJhcnkgY2xhc3NlcywgV2Vic2l0
ZVBvbGljaWVzIGFuZCBXZWJQYWdlR3JvdXBEYXRhIHdpdGggbW9yZSB0byBjb21lLgorICAgICAg
ICBUaGVyZSdzIG5vIGdvb2Qgd2F5IHRvIHVwZGF0ZSB0aGUgYWN0dWFsIGdlbmVyYXRlZCBJUEMg
Y29kZSB1bnRpbCBlYWNoIGNsYXNzIGhhcyBiZWVuIHRyYW5zaXRpb25lZC4KKworICAgICAgICAq
IFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmg6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuaDoKKyAgICAgICAg
KElQQzo6RGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VHcm91cERhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VH
cm91cERhdGEuaDoKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVQb2xpY2llczo6ZGVjb2RlKToKKwogMjAxNy0wOC0yOCAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBVcHN0cmVhbSBXS0dl
dFdlYkRlZmF1bHRDRlN0cmluZ0VuY29kaW5nKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVyLmgJKHJldmlzaW9uIDIyMTIyMCkKKysrIFNvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCAr
MjMsMjEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIEFyZ3VtZW50Q29kZXJfaAotI2RlZmluZSBBcmd1bWVudENvZGVyX2gKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKKy8vIEZJWE1FOiBSZW1vdmUgdGhpcyBv
bmNlIGFsbCBkZWNvZGVycyBhcmUgdHJhbnNpdGlvbmVkIHRvIHJldHVybiBzdGQ6Om9wdGlvbmFs
LgorbmFtZXNwYWNlIFdlYktpdCB7CitzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsK
K3N0cnVjdCBXZWJQYWdlR3JvdXBEYXRhOworc3RydWN0IFdlYnNpdGVQb2xpY2llczsKK30KK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBVc2VzTGVnYWN5RGVjb2RlciA6IHB1YmxpYyBzdGQ6
OnRydWVfdHlwZSB7IH07CisjZGVmaW5lIFVTRV9NT0RFUk5fREVDT0RFUihjbGFzc25hbWUpIHRl
bXBsYXRlPD4gc3RydWN0IFVzZXNMZWdhY3lEZWNvZGVyPGNsYXNzbmFtZT4gOiBwdWJsaWMgc3Rk
OjpmYWxzZV90eXBlIHsgfTsKK1VTRV9NT0RFUk5fREVDT0RFUihXZWJLaXQ6OldlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMpOworVVNFX01PREVSTl9ERUNPREVSKFdlYktpdDo6V2ViUGFnZUdyb3Vw
RGF0YSk7CitVU0VfTU9ERVJOX0RFQ09ERVIoV2ViS2l0OjpXZWJzaXRlUG9saWNpZXMpOwogCiBu
YW1lc3BhY2UgSVBDIHsKIApAQCAtMzcsMTIgKzUwLDE2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBBcmd1bWVudENvZGUKICAgICAgICAgdC5lbmNvZGUoZW5jb2Rlcik7CiAgICAgfQog
Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFQmIHQpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVSA9IFQ+CisgICAgc3RhdGljIGF1dG8gZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFUmIHUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8VXNlc0xlZ2FjeURlY29kZXI8VT46OnZh
bHVlLCBib29sPgogICAgIHsKLSAgICAgICAgcmV0dXJuIFQ6OmRlY29kZShkZWNvZGVyLCB0KTsK
KyAgICAgICAgcmV0dXJuIFU6OmRlY29kZShkZWNvZGVyLCB1KTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVID0gVD4KKyAgICBzdGF0aWMgYXV0byBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikgLT4gc3RkOjplbmFibGVfaWZfdDwhVXNlc0xlZ2FjeURlY29kZXI8VT46OnZhbHVlLCBz
dGQ6Om9wdGlvbmFsPFU+PiB7CisgICAgICAgIHJldHVybiBVOjpkZWNvZGUoZGVjb2Rlcik7CiAg
ICAgfQogfTsKIAogfQotCi0jZW5kaWYgLy8gQXJndW1lbnRDb2Rlcl9oCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCShyZXZpc2lvbiAyMjEyMjApCisrKyBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCwxMSArMTI0
LDIwIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGF1
dG8gZGVjb2RlKFQmIHQpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTxUPjo6dmFs
dWUsIGJvb2w+CisgICAgYXV0byBkZWNvZGUoVCYgdCkgLT4gc3RkOjplbmFibGVfaWZfdDwhc3Rk
Ojppc19lbnVtPFQ+Ojp2YWx1ZSAmJiBVc2VzTGVnYWN5RGVjb2RlcjxUPjo6dmFsdWUsIGJvb2w+
CiAgICAgewogICAgICAgICByZXR1cm4gQXJndW1lbnRDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzLCB0
KTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIGF1dG8gZGVjb2RlKFQm
IHQpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8IVVzZXNMZWdhY3lEZWNvZGVyPFQ+Ojp2YWx1ZSwgYm9v
bD4geworICAgICAgICBhdXRvIG9wdGlvbmFsID0gQXJndW1lbnRDb2RlcjxUPjo6ZGVjb2RlKCp0
aGlzKTsKKyAgICAgICAgaWYgKCFvcHRpb25hbCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgdCA9IFdURk1vdmUob3B0aW9uYWwudmFsdWUoKSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKwogICAgIGJvb2wgcmVtb3ZlQXR0YWNobWVudChBdHRhY2htZW50Jik7CiAK
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0lQQ0RlY29kZXIgPSB0cnVlOwpJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJl
dmlzaW9uIDIyMTIyMCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsMTU2ICsxMDgsMTU3IEBAIHZvaWQg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEkKICNlbmRpZgogfQogCi1ib29sIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCitzdGQ6Om9wdGlvbmFsPFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIpCiB7CisgICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBw
YXJhbWV0ZXJzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy52aWV3U2l6ZSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMuc3RvcmUpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocGFyYW1ldGVycy5kcmF3aW5nQXJlYVR5cGUp
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnBhZ2VHcm91cERhdGEpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLmRyYXdzQmFja2dyb3VuZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaXNFZGl0YWJs
ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudW5kZXJsYXlDb2xvcikpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMudXNlRml4ZWRMYXlvdXQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmZpeGVkTGF5
b3V0U2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShwYXJhbWV0ZXJzLnBhZ2luYXRpb25Nb2RlKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5wYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5wYWdlTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4geyB9OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5nYXBC
ZXR3ZWVuUGFnZXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnBhZ2luYXRpb25MaW5lR3JpZEVu
YWJsZWQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZXJBZ2VudCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMuaXRlbVN0YXRlcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2Vzc2lvbklEKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5oaWdoZXN0VXNlZEJhY2tGb3J3YXJkSXRlbUlEKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJRCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMudmlzaXRlZExpbmtUYWJsZUlEKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4geyB9OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy53
ZWJzaXRlRGF0YVN0b3JlSUQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNhblJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY2FuUnVuTW9kYWwpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRldmljZVNjYWxlRmFjdG9yKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy52aWV3U2NhbGVGYWN0b3IpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnRvcENvbnRl
bnRJbnNldCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubWVkaWFWb2x1bWUpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLm11dGVkKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4geyB9OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5tYXlTdGFydE1lZGlh
V2hlbkluV2luZG93KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5taW5pbXVtTGF5b3V0U2l6ZSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYXV0b1NpemluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdo
dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0
cykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlRW51bShwYXJhbWV0ZXJzLnNjcm9sbFBpbm5pbmdCZWhhdmlvcikpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy5iYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0o
cGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4geyB9OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5taW1l
VHlwZXNXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVycykpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
Y29udHJvbGxlZEJ5QXV0b21hdGlvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIHsgfTsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5hbGxvd3NSZW1vdGVJbnNwZWN0aW9uKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy5yZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKElPUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2NyZWVuU2l6
ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYXZhaWxhYmxlU2NyZWVuU2l6ZSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBhcmFtZXRlcnMudGV4dEF1dG9zaXppbmdXaWR0aCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuaWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmFs
bG93c0Jsb2NrU2VsZWN0aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4geyB9OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMuc21hcnRJbnNlcnREZWxldGVFbmFibGVkKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogI2VuZGlmCiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMuYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUVudW0ocGFyYW1ldGVycy51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGVFbnVtKHBhcmFtZXRlcnMub2JzZXJ2ZWRMYXlvdXRNaWxlc3RvbmVzKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNwdUxpbWl0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4geyB9OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LnVybFNjaGVtZUhhbmRsZXJzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4geyB9OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmljZUNhbmRpZGF0
ZUZpbHRlcmluZ0VuYWJsZWQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biB7IH07CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZW51bWVyYXRpbmdB
bGxOZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiB7IH07CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNl
ckNvbnRlbnRXb3JsZHMpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7
IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZXJTY3JpcHRzKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy51c2VyU3R5bGVTaGVldHMpKQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLm1lc3NhZ2VIYW5kbGVycykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIHsgfTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5jb250ZW50UnVsZUxpc3RzKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4geyB9OwogI2VuZGlmCi0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIHtXVEZNb3ZlKHBhcmFtZXRlcnMpfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oCShyZXZpc2lvbiAyMjEyMjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAg
ICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoSVBDOjpEZWNvZGVyJiwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IGRlY29kZShJUEM6OkRl
Y29kZXImKTsKIAogICAgIFdlYkNvcmU6OkludFNpemUgdmlld1NpemU7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCShyZXZpc2lvbiAyMjEyMjApCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzksMTkgKzM5LDI0IEBAIHZvaWQgV2ViUGFnZUdyb3VwRGF0YTo6ZW5jb2RlKElQQzo6
RW5jb2QKICAgICBlbmNvZGVyIDw8IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiB9
CiAKLWJvb2wgV2ViUGFnZUdyb3VwRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
V2ViUGFnZUdyb3VwRGF0YSYgZGF0YSkKK3N0ZDo6b3B0aW9uYWw8V2ViUGFnZUdyb3VwRGF0YT4g
V2ViUGFnZUdyb3VwRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEucGFnZUdyb3VwSUQpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnZpc2libGVUb0luamVj
dGVkQnVuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoZGF0YS52aXNpYmxlVG9IaXN0b3J5Q2xpZW50KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOworICAgIFN0cmlu
ZyBpZDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlkKSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICB1aW50NjRfdCBwYWdlR3JvdXBJRDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhZ2VH
cm91cElEKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBib29sIHZpc2libGVUb0luamVjdGVk
QnVuZGxlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUp
KQorICAgICAgICByZXR1cm4geyB9OworICAgIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZpc2libGVUb0hpc3RvcnlDbGllbnQpKQorICAgICAg
ICByZXR1cm4geyB9OworICAgIHVpbnQ2NF90IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXI7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4ge3tpZCwgcGFnZUdyb3VwSUQs
IHZpc2libGVUb0luamVjdGVkQnVuZGxlLCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50LCB1c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyfX07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaAkocmV2aXNpb24gMjIx
MjIwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBXZWJQYWdlR3JvdXBEYXRhX2gKLSNkZWZpbmUgV2ViUGFnZUdy
b3VwRGF0YV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCkBAIC0zNyw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgV2ViUGFn
ZUdyb3VwRGF0YSB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAg
c3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIFdlYlBhZ2VHcm91cERhdGEmKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJQYWdlR3JvdXBEYXRhPiBkZWNvZGUoSVBDOjpEZWNv
ZGVyJik7CiAKICAgICBTdHJpbmcgaWRlbnRpZmllcjsKICAgICB1aW50NjRfdCBwYWdlR3JvdXBJ
RDsKQEAgLTQ4LDYgKzQ3LDMgQEAgc3RydWN0IFdlYlBhZ2VHcm91cERhdGEgewogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLQotI2VuZGlmIC8vIFdlYlBhZ2VHcm91cERhdGFfaApJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzLmgJKHJldmlzaW9uIDIyMTIyMCkK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9PcHRpb25T
ZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
QEAgLTQ4LDcgKzQ5LDcgQEAgc3RydWN0IFdlYnNpdGVQb2xpY2llcyB7CiAgICAgV2Vic2l0ZUF1
dG9wbGF5UG9saWN5IGF1dG9wbGF5UG9saWN5IHsgV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZWZh
dWx0IH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2Rl
KERlY29kZXImLCBXZWJzaXRlUG9saWNpZXMmKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXM+IGRlY29kZShEZWNvZGVyJik7
CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFdlYnNpdGVQb2xpY2llczo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC01OCwxNSArNTksMjEgQEAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBXZWJzaXRlUG9saQogICAgIGVuY29kZXIgPDwgYWxsb3dlZEF1
dG9wbGF5UXVpcmtzOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBib29sIFdlYnNpdGVQ
b2xpY2llczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdlYnNpdGVQb2xpY2llcyYgcmVzdWx0
KQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXM+
IFdlYnNpdGVQb2xpY2llczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQuY29udGVudEJsb2NrZXJzRW5hYmxlZCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQuYXV0b3BsYXlQ
b2xpY3kpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuYWxsb3dlZEF1dG9wbGF5UXVpcmtzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJldHVybiB0cnVlOworICAgIGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZDsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpKQorICAgICAgICByZXR1cm4g
eyB9OworICAgIAorICAgIFdlYnNpdGVBdXRvcGxheVBvbGljeSBhdXRvcGxheVBvbGljeTsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShhdXRvcGxheVBvbGljeSkpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBPcHRpb25TZXQ8V2Vic2l0ZUF1dG9wbGF5UXVpcms+IGFsbG93ZWRBdXRv
cGxheVF1aXJrczsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFsbG93ZWRBdXRvcGxheVF1aXJr
cykpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4ge3tjb250ZW50QmxvY2tlcnNF
bmFibGVkLCBhbGxvd2VkQXV0b3BsYXlRdWlya3MsIGF1dG9wbGF5UG9saWN5fX07CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319269</attachid>
            <date>2017-08-29 11:56:39 -0700</date>
            <delta_ts>2017-08-29 15:04:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176043-20170829115638.patch</filename>
            <type>text/plain</type>
            <size>18500</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjEyODYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE3LTA4LTI5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmVnaW4gdHJhbnNp
dGlvbiB0byBtb2Rlcm4gSVBDIGRlY29kaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYwNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSaWdodCBub3csIGlmIGEgY2xhc3MgaXMgZGVjb2RlZCBmcm9t
IElQQyB3ZSBtdXN0IGhhdmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLgorICAgICAgICBUaGlzIHBy
ZXZlbnRzIHVzIGZyb20gaGF2aW5nIFJlZiBvciBDKysgcmVmZXJlbmNlcyBpbiBzdWNoIHR5cGVz
LCB3aGljaCBpcyBjbHV0dGVyaW5nIHVwIG91ciBjb2RlLgorICAgICAgICBUaGlzIGlzIGJlY2F1
c2UgSVBDOjpkZWNvZGUgbWFrZXMgYSBkZWZhdWx0LWNvbnN0cnVjdGVkIG9iamVjdCwgZmlsbHMg
aXQsIGFuZCByZXR1cm5zIGEgYm9vbCBpbmRpY2F0aW5nIHN1Y2Nlc3MuCisgICAgICAgIE1ha2lu
ZyBJUEM6OmRlY29kZSBpbnN0ZWFkIHJldHVybiBhIHN0ZDo6b3B0aW9uYWwgbWFrZXMgaXQgc28g
d2UgZG8gbm90IG5lZWQgdG8gY2FsbCBhbiBlbXB0eSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgVGhp
cyBjb3VsZCBhbHNvIGVuYWJsZSB1cyB0byBhZGQgSVBDOjpEZWNvZGVyOjpvcGVyYXRvcj4+IGFu
ZCBvdGhlciBmdW4gdGhpbmdzIQorICAgICAgICBJIGFsc28gbW9kZXJuaXplZCB0d28gYXJiaXRy
YXJ5IGNsYXNzZXMsIFdlYnNpdGVQb2xpY2llcyBhbmQgV2ViUGFnZUdyb3VwRGF0YSB3aXRoIG1v
cmUgdG8gY29tZS4KKyAgICAgICAgVGhlcmUncyBubyBnb29kIHdheSB0byB1cGRhdGUgdGhlIGFj
dHVhbCBnZW5lcmF0ZWQgSVBDIGNvZGUgdW50aWwgZWFjaCBjbGFzcyBoYXMgYmVlbiB0cmFuc2l0
aW9uZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9E
ZWNvZGVyLmg6CisgICAgICAgIChJUEM6OkRlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmg6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVQ
b2xpY2llcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlUG9saWNpZXM6OmRlY29kZSk6CisK
IDIwMTctMDgtMjggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtD
b2NvYV0gVXBzdHJlYW0gV0tHZXRXZWJEZWZhdWx0Q0ZTdHJpbmdFbmNvZGluZygpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCShyZXZpc2lvbiAyMjEy
MjApCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDggKzIzLDIxIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBBcmd1bWVudENvZGVyX2gKLSNkZWZpbmUgQXJndW1lbnRD
b2Rlcl9oCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCisvLyBG
SVhNRTogUmVtb3ZlIHRoaXMgb25jZSBhbGwgZGVjb2RlcnMgYXJlIHRyYW5zaXRpb25lZCB0byBy
ZXR1cm4gc3RkOjpvcHRpb25hbC4KK25hbWVzcGFjZSBXZWJLaXQgeworc3RydWN0IFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnM7CitzdHJ1Y3QgV2ViUGFnZUdyb3VwRGF0YTsKK3N0cnVjdCBXZWJz
aXRlUG9saWNpZXM7Cit9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVXNlc0xlZ2FjeURl
Y29kZXIgOiBwdWJsaWMgc3RkOjp0cnVlX3R5cGUgeyB9OworI2RlZmluZSBVU0VfTU9ERVJOX0RF
Q09ERVIoY2xhc3NuYW1lKSB0ZW1wbGF0ZTw+IHN0cnVjdCBVc2VzTGVnYWN5RGVjb2RlcjxjbGFz
c25hbWU+IDogcHVibGljIHN0ZDo6ZmFsc2VfdHlwZSB7IH07CitVU0VfTU9ERVJOX0RFQ09ERVIo
V2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzKTsKK1VTRV9NT0RFUk5fREVDT0RFUihX
ZWJLaXQ6OldlYlBhZ2VHcm91cERhdGEpOworVVNFX01PREVSTl9ERUNPREVSKFdlYktpdDo6V2Vi
c2l0ZVBvbGljaWVzKTsKIAogbmFtZXNwYWNlIElQQyB7CiAKQEAgLTM3LDEyICs1MCwxNiBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlCiAgICAgICAgIHQuZW5jb2Rl
KGVuY29kZXIpOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBUJiB0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPgorICAgIHN0YXRpYyBhdXRv
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBVJiB1KSAtPiBzdGQ6OmVuYWJsZV9pZl90PFVzZXNM
ZWdhY3lEZWNvZGVyPFU+Ojp2YWx1ZSwgYm9vbD4KICAgICB7Ci0gICAgICAgIHJldHVybiBUOjpk
ZWNvZGUoZGVjb2RlciwgdCk7CisgICAgICAgIHJldHVybiBVOjpkZWNvZGUoZGVjb2RlciwgdSk7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+CisgICAgc3RhdGljIGF1dG8g
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8IVVzZXNMZWdhY3lE
ZWNvZGVyPFU+Ojp2YWx1ZSwgc3RkOjpvcHRpb25hbDxVPj4geworICAgICAgICByZXR1cm4gVTo6
ZGVjb2RlKGRlY29kZXIpOwogICAgIH0KIH07CiAKIH0KLQotI2VuZGlmIC8vIEFyZ3VtZW50Q29k
ZXJfaApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5o
CShyZXZpc2lvbiAyMjEyMjApCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsMTIgKzEzMywyNCBAQCBzdHJ1Y3QgVHVw
bGVDb2RlciB7CiAgICAgICAgIFR1cGxlQ29kZXI8aW5kZXggLSAxLCBFbGVtZW50cy4uLj46OmVu
Y29kZShlbmNvZGVyLCB0dXBsZSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JiB0dXBsZSkKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPHR5cGVuYW1l
IHN0ZDo6dHVwbGVfZWxlbWVudDxzaXplb2YuLi4oRWxlbWVudHMpIC0gaW5kZXgsIHN0ZDo6dHVw
bGU8RWxlbWVudHMuLi4+Pjo6dHlwZT46OnR5cGU+CisgICAgc3RhdGljIGF1dG8gZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JiB0dXBsZSkgLT4gc3RkOjpl
bmFibGVfaWZfdDxVc2VzTGVnYWN5RGVjb2RlcjxVPjo6dmFsdWUsIGJvb2w+CiAgICAgewogICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0ZDo6Z2V0PHNpemVvZi4uLihFbGVtZW50cykgLSBp
bmRleD4odHVwbGUpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJu
IFR1cGxlQ29kZXI8aW5kZXggLSAxLCBFbGVtZW50cy4uLj46OmRlY29kZShkZWNvZGVyLCB0dXBs
ZSk7CiAgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9yZWZlcmVuY2U8dHlwZW5hbWUgc3RkOjp0dXBsZV9lbGVtZW50PHNpemVvZi4uLihF
bGVtZW50cykgLSBpbmRleCwgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4+Ojp0eXBlPjo6dHlwZT4K
KyAgICBzdGF0aWMgYXV0byBkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwgc3RkOjp0dXBsZTxFbGVt
ZW50cy4uLj4mIHR1cGxlKSAtPiBzdGQ6OmVuYWJsZV9pZl90PCFVc2VzTGVnYWN5RGVjb2RlcjxV
Pjo6dmFsdWUsIGJvb2w+CisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFU+IG9wdGlvbmFs
OworICAgICAgICBkZWNvZGVyID4+IG9wdGlvbmFsOworICAgICAgICBpZiAoIW9wdGlvbmFsKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBzdGQ6OmdldDxzaXplb2YuLi4oRWxl
bWVudHMpIC0gaW5kZXg+KHR1cGxlKSA9IFdURk1vdmUoKm9wdGlvbmFsKTsKKyAgICAgICAgcmV0
dXJuIFR1cGxlQ29kZXI8aW5kZXggLSAxLCBFbGVtZW50cy4uLj46OmRlY29kZShkZWNvZGVyLCB0
dXBsZSk7CisgICAgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCShyZXZpc2lvbiAyMjEyMjApCisrKyBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
NCwxMSArMTI0LDE4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgotICAgIGF1dG8gZGVjb2RlKFQmIHQpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51
bTxUPjo6dmFsdWUsIGJvb2w+CisgICAgYXV0byBkZWNvZGUoVCYgdCkgLT4gc3RkOjplbmFibGVf
aWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJiBVc2VzTGVnYWN5RGVjb2RlcjxUPjo6dmFs
dWUsIGJvb2w+CiAgICAgewogICAgICAgICByZXR1cm4gQXJndW1lbnRDb2RlcjxUPjo6ZGVjb2Rl
KCp0aGlzLCB0KTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIGF1dG8g
b3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPFQ+JiB0KSAtPiBzdGQ6OmVuYWJsZV9pZl90PCFVc2Vz
TGVnYWN5RGVjb2RlcjxUPjo6dmFsdWUsIERlY29kZXImPgorICAgIHsKKyAgICAgICAgdCA9IEFy
Z3VtZW50Q29kZXI8VD46OmRlY29kZSgqdGhpcyk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisKICAgICBib29sIHJlbW92ZUF0dGFjaG1lbnQoQXR0YWNobWVudCYpOwogCiAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNJUENEZWNvZGVyID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAy
MjEyMjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDE1NiArMTA4LDE2MCBAQCB2b2lkIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJCiAjZW5kaWYKIH0KIAotYm9vbCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorc3RkOjpvcHRpb25hbDxXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQogeworICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVy
czsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlld1NpemUpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnN0
b3JlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGVFbnVtKHBhcmFtZXRlcnMuZHJhd2luZ0FyZWFUeXBlKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5wYWdl
R3JvdXBEYXRhKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9Owor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUdyb3VwRGF0YT4gcGFnZUdyb3VwRGF0YTsKKyAgICBk
ZWNvZGVyID4+IHBhZ2VHcm91cERhdGE7CisgICAgaWYgKCFwYWdlR3JvdXBEYXRhKQorICAgICAg
ICByZXR1cm4geyB9OworICAgIHBhcmFtZXRlcnMucGFnZUdyb3VwRGF0YSA9IFdURk1vdmUoKnBh
Z2VHcm91cERhdGEpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5kcmF3c0Jh
Y2tncm91bmQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmlzRWRpdGFibGUpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLnVuZGVybGF5Q29sb3IpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZUZp
eGVkTGF5b3V0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5maXhlZExheW91dFNpemUpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZUVudW0ocGFyYW1ldGVycy5wYWdpbmF0aW9uTW9kZSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMucGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucykpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMucGFnZUxlbmd0aCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZ2FwQmV0d2VlblBhZ2VzKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5wYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy51c2VyQWdlbnQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLml0ZW1T
dGF0ZXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNlc3Npb25JRCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMuaGlnaGVzdFVzZWRCYWNrRm9yd2FyZEl0ZW1JRCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySUQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZp
c2l0ZWRMaW5rVGFibGVJRCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMud2Vic2l0ZURhdGFTdG9y
ZUlEKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNhblJ1bk1vZGFsKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy5kZXZpY2VTY2FsZUZhY3RvcikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlld1Nj
YWxlRmFjdG9yKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy50b3BDb250ZW50SW5zZXQpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLm1lZGlhVm9sdW1lKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4geyB9OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5t
dXRlZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdykp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubWluaW11bUxheW91dFNpemUpKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLmF1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZUVudW0ocGFyYW1ldGVycy5zY3JvbGxQaW5uaW5nQmVoYXZpb3IpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLnNjcm9sbGJhck92ZXJsYXlTdHlsZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYmFj
a2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4geyB9OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHBhcmFtZXRlcnMubGF5
ZXJIb3N0aW5nTW9kZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubWltZVR5cGVzV2l0aEN1c3Rv
bUNvbnRlbnRQcm92aWRlcnMpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNvbnRyb2xsZWRCeUF1
dG9tYXRpb24pKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAK
ICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMuYWxsb3dzUmVtb3RlSW5zcGVjdGlvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
cmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5jb2xvclNwYWNlKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4geyB9OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNjcmVlblNpemUpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLmF2YWlsYWJsZVNjcmVlblNpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LnRleHRBdXRvc2l6aW5nV2lkdGgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiB7IH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmlnbm9yZXNWaWV3
cG9ydFNjYWxlTGltaXRzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
eyB9OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5hbGxvd3NCbG9ja1NlbGVj
dGlvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKICNlbmRpZgogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLmFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMuc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVt
KHBhcmFtZXRlcnMudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51
bShwYXJhbWV0ZXJzLm9ic2VydmVkTGF5b3V0TWlsZXN0b25lcykpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy5vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy5jcHVMaW1pdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51cmxTY2hlbWVIYW5k
bGVycykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5pY2VDYW5kaWRhdGVGaWx0ZXJpbmdFbmFi
bGVkKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVy
ZmFjZXNFbmFibGVkKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9
OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRz
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51c2VyU2NyaXB0cykpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMudXNlclN0eWxlU2hlZXRzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4geyB9OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5tZXNzYWdlSGFu
ZGxlcnMpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMuY29udGVudFJ1bGVMaXN0cykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIHsgfTsKICNlbmRpZgotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiB7V1RGTW92
ZShwYXJhbWV0ZXJzKX07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNp
b24gMjIxMjIwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgdm9pZCBlbmNvZGUo
SVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2Rl
ciYsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKICAg
ICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAkocmV2aXNpb24gMjIxMjIwKQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE5ICsz
OSwyNCBAQCB2b2lkIFdlYlBhZ2VHcm91cERhdGE6OmVuY29kZShJUEM6OkVuY29kCiAgICAgZW5j
b2RlciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogfQogCi1ib29sIFdlYlBh
Z2VHcm91cERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlBhZ2VHcm91cERh
dGEmIGRhdGEpCitzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VHcm91cERhdGE+IFdlYlBhZ2VHcm91cERh
dGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhLmlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhLnBhZ2VHcm91cElEKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS52aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEudmlzaWJs
ZVRvSGlzdG9yeUNsaWVudCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGEudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBTdHJpbmcgaWQ7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShpZCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgdWludDY0X3Qg
cGFnZUdyb3VwSUQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYWdlR3JvdXBJRCkpCisgICAg
ICAgIHJldHVybiB7IH07CisgICAgYm9vbCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHZpc2libGVUb0luamVjdGVkQnVuZGxlKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICBib29sIHZpc2libGVUb0hpc3RvcnlDbGllbnQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSh2aXNpYmxlVG9IaXN0b3J5Q2xpZW50KSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICB1aW50NjRfdCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUodXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikpCisgICAgICAg
IHJldHVybiB7IH07CisgICAgcmV0dXJuIHt7aWQsIHBhZ2VHcm91cElELCB2aXNpYmxlVG9Jbmpl
Y3RlZEJ1bmRsZSwgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCwgdXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcn19OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmgJKHJldmlzaW9uIDIyMTIyMCkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
OCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgV2ViUGFnZUdyb3VwRGF0YV9oCi0jZGVmaW5lIFdlYlBhZ2VHcm91cERhdGFfaAorI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzcsNyAr
MzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFdlYlBhZ2VHcm91cERhdGEgewog
ICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBib29sIGRl
Y29kZShJUEM6OkRlY29kZXImLCBXZWJQYWdlR3JvdXBEYXRhJik7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2ViUGFnZUdyb3VwRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAg
U3RyaW5nIGlkZW50aWZpZXI7CiAgICAgdWludDY0X3QgcGFnZUdyb3VwSUQ7CkBAIC00OCw2ICs0
NywzIEBAIHN0cnVjdCBXZWJQYWdlR3JvdXBEYXRhIHsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0KLSNlbmRpZiAvLyBXZWJQYWdlR3JvdXBEYXRhX2gKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYnNpdGVQb2xpY2llcy5oCShyZXZpc2lvbiAyMjEyMjApCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00OCw3ICs0OSw3
IEBAIHN0cnVjdCBXZWJzaXRlUG9saWNpZXMgewogICAgIFdlYnNpdGVBdXRvcGxheVBvbGljeSBh
dXRvcGxheVBvbGljeSB7IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVmYXVsdCB9OwogCiAgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2Vi
c2l0ZVBvbGljaWVzJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBXZWJzaXRlUG9saWNpZXM6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdApAQCAtNTgsMTUgKzU5LDIxIEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgV2Vic2l0ZVBvbGkKICAgICBlbmNvZGVyIDw8IGFsbG93ZWRBdXRvcGxheVF1aXJrczsK
IH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gYm9vbCBXZWJzaXRlUG9saWNpZXM6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJzaXRlUG9saWNpZXMmIHJlc3VsdCkKK3RlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzPiBXZWJzaXRlUG9saWNp
ZXM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LmF1dG9wbGF5UG9saWN5KSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmFsbG93ZWRB
dXRvcGxheVF1aXJrcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShjb250ZW50QmxvY2tlcnNFbmFibGVkKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAKKyAg
ICBXZWJzaXRlQXV0b3BsYXlQb2xpY3kgYXV0b3BsYXlQb2xpY3k7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZUVudW0oYXV0b3BsYXlQb2xpY3kpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
T3B0aW9uU2V0PFdlYnNpdGVBdXRvcGxheVF1aXJrPiBhbGxvd2VkQXV0b3BsYXlRdWlya3M7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShhbGxvd2VkQXV0b3BsYXlRdWlya3MpKQorICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgcmV0dXJuIHt7Y29udGVudEJsb2NrZXJzRW5hYmxlZCwgYWxsb3dl
ZEF1dG9wbGF5UXVpcmtzLCBhdXRvcGxheVBvbGljeX19OwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlR3JvdXBIYW5kbGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlR3JvdXBI
YW5kbGUuY3BwCShyZXZpc2lvbiAyMjEyMjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJUGFnZUdyb3VwSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTEgKzUyLDEyIEBA
IHZvaWQgUGFnZUdyb3VwSGFuZGxlOjplbmNvZGUoSVBDOjpFbmNvZGUKIAogYm9vbCBQYWdlR3Jv
dXBIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlZlB0cjxPYmplY3Q+JiBy
ZXN1bHQpCiB7Ci0gICAgV2ViS2l0OjpXZWJQYWdlR3JvdXBEYXRhIHdlYlBhZ2VHcm91cERhdGE7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh3ZWJQYWdlR3JvdXBEYXRhKSkKKyAgICBzdGQ6Om9w
dGlvbmFsPFdlYktpdDo6V2ViUGFnZUdyb3VwRGF0YT4gd2ViUGFnZUdyb3VwRGF0YTsKKyAgICBk
ZWNvZGVyID4+IHdlYlBhZ2VHcm91cERhdGE7CisgICAgaWYgKCF3ZWJQYWdlR3JvdXBEYXRhKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQgPSBjcmVhdGUoV1RGTW92ZSh3ZWJQ
YWdlR3JvdXBEYXRhKSk7CisgICAgcmVzdWx0ID0gY3JlYXRlKFdURk1vdmUoKndlYlBhZ2VHcm91
cERhdGEpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319288</attachid>
            <date>2017-08-29 15:04:50 -0700</date>
            <delta_ts>2017-08-29 15:49:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176043-20170829150449.patch</filename>
            <type>text/plain</type>
            <size>19096</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjEyODYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE3LTA4LTI5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmVnaW4gdHJhbnNp
dGlvbiB0byBtb2Rlcm4gSVBDIGRlY29kaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYwNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSaWdodCBub3csIGlmIGEgY2xhc3MgaXMgZGVjb2RlZCBmcm9t
IElQQyB3ZSBtdXN0IGhhdmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLgorICAgICAgICBUaGlzIHBy
ZXZlbnRzIHVzIGZyb20gaGF2aW5nIFJlZiBvciBDKysgcmVmZXJlbmNlcyBpbiBzdWNoIHR5cGVz
LCB3aGljaCBpcyBjbHV0dGVyaW5nIHVwIG91ciBjb2RlLgorICAgICAgICBUaGlzIGlzIGJlY2F1
c2UgSVBDOjpkZWNvZGUgbWFrZXMgYSBkZWZhdWx0LWNvbnN0cnVjdGVkIG9iamVjdCwgZmlsbHMg
aXQsIGFuZCByZXR1cm5zIGEgYm9vbCBpbmRpY2F0aW5nIHN1Y2Nlc3MuCisgICAgICAgIE1ha2lu
ZyBJUEM6OmRlY29kZSBpbnN0ZWFkIHJldHVybiBhIHN0ZDo6b3B0aW9uYWwgbWFrZXMgaXQgc28g
d2UgZG8gbm90IG5lZWQgdG8gY2FsbCBhbiBlbXB0eSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgVGhp
cyBjb3VsZCBhbHNvIGVuYWJsZSB1cyB0byBhZGQgSVBDOjpEZWNvZGVyOjpvcGVyYXRvcj4+IGFu
ZCBvdGhlciBmdW4gdGhpbmdzIQorICAgICAgICBJIGFsc28gbW9kZXJuaXplZCB0d28gYXJiaXRy
YXJ5IGNsYXNzZXMsIFdlYnNpdGVQb2xpY2llcyBhbmQgV2ViUGFnZUdyb3VwRGF0YSB3aXRoIG1v
cmUgdG8gY29tZS4KKyAgICAgICAgVGhlcmUncyBubyBnb29kIHdheSB0byB1cGRhdGUgdGhlIGFj
dHVhbCBnZW5lcmF0ZWQgSVBDIGNvZGUgdW50aWwgZWFjaCBjbGFzcyBoYXMgYmVlbiB0cmFuc2l0
aW9uZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9E
ZWNvZGVyLmg6CisgICAgICAgIChJUEM6OkRlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmg6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVQ
b2xpY2llcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlUG9saWNpZXM6OmRlY29kZSk6CisK
IDIwMTctMDgtMjggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtD
b2NvYV0gVXBzdHJlYW0gV0tHZXRXZWJEZWZhdWx0Q0ZTdHJpbmdFbmNvZGluZygpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCShyZXZpc2lvbiAyMjEy
MjApCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDI2ICsyMywzNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgQXJndW1lbnRDb2Rlcl9oCi0jZGVmaW5lIEFyZ3VtZW50
Q29kZXJfaAorI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFt
ZXNwYWNlIElQQyB7CiAKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBFbmNvZGVyOwogICAgIAordGVt
cGxhdGUgPHR5cGVuYW1lLi4uIFQ+IHVzaW5nIElzVXNpbmdNb2Rlcm5EZWNvZGVyID0gdm9pZDsK
K3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBVc2VzTW9kZXJu
RGVjb2RlciA6IHN0ZDo6ZmFsc2VfdHlwZSB7IH07Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3Ry
dWN0IFVzZXNNb2Rlcm5EZWNvZGVyPFQsIElzVXNpbmdNb2Rlcm5EZWNvZGVyPHR5cGVuYW1lIFQ6
Ok1vZGVybkRlY29kZXI+PiA6IHN0ZDo6dHJ1ZV90eXBlIHsgfTsKKwogdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXIgewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBUJiB0KQogICAgIHsKICAgICAgICAgdC5lbmNvZGUoZW5jb2Rl
cik7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFQm
IHQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+CisgICAgc3RhdGljIGF1dG8gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFUmIHUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8IVVzZXNNb2Rlcm5E
ZWNvZGVyPFU+Ojp2YWx1ZSwgYm9vbD4KKyAgICB7CisgICAgICAgIHJldHVybiBVOjpkZWNvZGUo
ZGVjb2RlciwgdSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+CisgICAg
c3RhdGljIGF1dG8gZGVjb2RlKERlY29kZXImIGRlY29kZXIpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8
VXNlc01vZGVybkRlY29kZXI8VT46OnZhbHVlLCBzdGQ6Om9wdGlvbmFsPFU+PgogICAgIHsKLSAg
ICAgICAgcmV0dXJuIFQ6OmRlY29kZShkZWNvZGVyLCB0KTsKKyAgICAgICAgcmV0dXJuIFU6OmRl
Y29kZShkZWNvZGVyKTsKICAgICB9CiB9OwogCiB9Ci0KLSNlbmRpZiAvLyBBcmd1bWVudENvZGVy
X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAko
cmV2aXNpb24gMjIxMjIwKQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDEyICsxMzMsMjQgQEAgc3RydWN0IFR1cGxl
Q29kZXIgewogICAgICAgICBUdXBsZUNvZGVyPGluZGV4IC0gMSwgRWxlbWVudHMuLi4+OjplbmNv
ZGUoZW5jb2RlciwgdHVwbGUpOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiYgdHVwbGUpCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTx0eXBlbmFtZSBz
dGQ6OnR1cGxlX2VsZW1lbnQ8c2l6ZW9mLi4uKEVsZW1lbnRzKSAtIGluZGV4LCBzdGQ6OnR1cGxl
PEVsZW1lbnRzLi4uPj46OnR5cGU+Ojp0eXBlPgorICAgIHN0YXRpYyBhdXRvIGRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiYgdHVwbGUpIC0+IHN0ZDo6ZW5h
YmxlX2lmX3Q8IVVzZXNNb2Rlcm5EZWNvZGVyPFU+Ojp2YWx1ZSwgYm9vbD4KICAgICB7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RkOjpnZXQ8c2l6ZW9mLi4uKEVsZW1lbnRzKSAtIGlu
ZGV4Pih0dXBsZSkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4g
VHVwbGVDb2RlcjxpbmRleCAtIDEsIEVsZW1lbnRzLi4uPjo6ZGVjb2RlKGRlY29kZXIsIHR1cGxl
KTsKICAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX3JlZmVyZW5jZTx0eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1lbnQ8c2l6ZW9mLi4uKEVs
ZW1lbnRzKSAtIGluZGV4LCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj46OnR5cGU+Ojp0eXBlPgor
ICAgIHN0YXRpYyBhdXRvIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnR1cGxlPEVsZW1l
bnRzLi4uPiYgdHVwbGUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8VXNlc01vZGVybkRlY29kZXI8VT46
OnZhbHVlLCBib29sPgorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxVPiBvcHRpb25hbDsK
KyAgICAgICAgZGVjb2RlciA+PiBvcHRpb25hbDsKKyAgICAgICAgaWYgKCFvcHRpb25hbCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgc3RkOjpnZXQ8c2l6ZW9mLi4uKEVsZW1l
bnRzKSAtIGluZGV4Pih0dXBsZSkgPSBXVEZNb3ZlKCpvcHRpb25hbCk7CisgICAgICAgIHJldHVy
biBUdXBsZUNvZGVyPGluZGV4IC0gMSwgRWxlbWVudHMuLi4+OjpkZWNvZGUoZGVjb2RlciwgdHVw
bGUpOworICAgIH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1lbnRzPgpJbmRleDog
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAkocmV2aXNpb24gMjIxMjIwKQorKysgU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQs
MTEgKzEyNCwxOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LSAgICBhdXRvIGRlY29kZShUJiB0KSAtPiBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08
VD46OnZhbHVlLCBib29sPgorICAgIGF1dG8gZGVjb2RlKFQmIHQpIC0+IHN0ZDo6ZW5hYmxlX2lm
X3Q8IXN0ZDo6aXNfZW51bTxUPjo6dmFsdWUgJiYgIVVzZXNNb2Rlcm5EZWNvZGVyPFQ+Ojp2YWx1
ZSwgYm9vbD4KICAgICB7CiAgICAgICAgIHJldHVybiBBcmd1bWVudENvZGVyPFQ+OjpkZWNvZGUo
KnRoaXMsIHQpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgYXV0byBv
cGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8VD4mIHQpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8VXNlc01v
ZGVybkRlY29kZXI8VD46OnZhbHVlLCBEZWNvZGVyJj4KKyAgICB7CisgICAgICAgIHQgPSBBcmd1
bWVudENvZGVyPFQ+OjpkZWNvZGUoKnRoaXMpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQorCiAgICAgYm9vbCByZW1vdmVBdHRhY2htZW50KEF0dGFjaG1lbnQmKTsKIAogICAgIHN0YXRp
YyBjb25zdCBib29sIGlzSVBDRGVjb2RlciA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjIx
MjIwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCwxNTYgKzEwOCwxNjAgQEAgdm9pZCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSQogI2VuZGlmCiB9CiAKLWJvb2wgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3N0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKIHsKKyAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZpZXdTaXplKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy5zdG9yZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShwYXJhbWV0ZXJz
LmRyYXdpbmdBcmVhVHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMucGFnZUdyb3VwRGF0YSkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYlBh
Z2VHcm91cERhdGE+IHBhZ2VHcm91cERhdGE7CisgICAgZGVjb2RlciA+PiBwYWdlR3JvdXBEYXRh
OworICAgIGlmICghcGFnZUdyb3VwRGF0YSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICBwYXJhbWV0ZXJzLnBhZ2VHcm91cERhdGEgPSBXVEZNb3ZlKCpwYWdlR3JvdXBEYXRhKTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZHJhd3NCYWNrZ3JvdW5kKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5pc0VkaXRhYmxlKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy51bmRlcmxheUNvbG9yKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy51c2VGaXhlZExheW91dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
Zml4ZWRMYXlvdXRTaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHBhcmFtZXRlcnMucGFn
aW5hdGlvbk1vZGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnBhZ2luYXRpb25C
ZWhhdmVzTGlrZUNvbHVtbnMpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnBhZ2VM
ZW5ndGgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmdhcEJldHdlZW5QYWdlcykp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxl
ZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlckFnZW50KSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5pdGVtU3RhdGVzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy5zZXNzaW9uSUQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmhp
Z2hlc3RVc2VkQmFja0ZvcndhcmRJdGVtSUQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklEKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy52aXNpdGVkTGlua1RhYmxlSUQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LndlYnNpdGVEYXRhU3RvcmVJRCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY2Fu
UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5jYW5SdW5Nb2RhbCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZGV2aWNl
U2NhbGVGYWN0b3IpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZpZXdTY2FsZUZh
Y3RvcikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudG9wQ29udGVudEluc2V0KSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5tZWRpYVZvbHVtZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMubXV0ZWQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLm1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cpKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLm1pbmltdW1MYXlvdXRTaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5hdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy52aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGVFbnVtKHBhcmFtZXRlcnMuc2Nyb2xsUGlubmluZ0JlaGF2aW9yKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zY3JvbGxiYXJPdmVybGF5U3R5bGUpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlRW51bShwYXJhbWV0ZXJzLmxheWVySG9zdGluZ01vZGUpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm1pbWVUeXBlc1dpdGhDdXN0b21Db250ZW50UHJv
dmlkZXJzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5jb250cm9sbGVkQnlBdXRv
bWF0aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLmFsbG93c1JlbW90ZUluc3BlY3Rpb24pKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLnJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY29sb3JT
cGFjZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy5zY3JlZW5TaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5h
dmFpbGFibGVTY3JlZW5TaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy50ZXh0
QXV0b3NpemluZ1dpZHRoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5pZ25vcmVz
Vmlld3BvcnRTY2FsZUxpbWl0cykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYWxs
b3dzQmxvY2tTZWxlY3Rpb24pKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5hcHBsZU1haWxQYWdpbmF0aW9u
UXVpcmtFbmFibGVkKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFNj
YWxlVmlld1RvRml0RG9jdW1lbnQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShwYXJhbWV0
ZXJzLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVu
dW0ocGFyYW1ldGVycy5vYnNlcnZlZExheW91dE1pbGVzdG9uZXMpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMub3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY3B1TGltaXQpKQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBhcmFtZXRlcnMudXJsU2NoZW1lSGFuZGxlcnMpKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMuaWNlQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5lbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzRW5hYmxl
ZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51c2VyQ29udGVudFdvcmxkcykp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlclNjcmlwdHMpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZXJTdHlsZVNoZWV0cykpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBhcmFtZXRlcnMubWVzc2FnZUhhbmRsZXJzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNvbnRlbnRSdWxlTGlzdHMp
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAj
ZW5kaWYKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4geyBXVEZNb3ZlKHBhcmFtZXRlcnMp
IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjIxMjIwKQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OSw3ICs1OSw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3Qg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgdXNpbmcgTW9kZXJu
RGVjb2RlciA9IHN0ZDo6dHJ1ZV90eXBlOwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6
ZTsKIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAJKHJl
dmlzaW9uIDIyMTIyMCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxOSArMzksMjQgQEAgdm9pZCBXZWJQYWdlR3JvdXBE
YXRhOjplbmNvZGUoSVBDOjpFbmNvZAogICAgIGVuY29kZXIgPDwgdXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllcjsKIH0KIAotYm9vbCBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBXZWJQYWdlR3JvdXBEYXRhJiBkYXRhKQorc3RkOjpvcHRpb25hbDxX
ZWJQYWdlR3JvdXBEYXRhPiBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKQogewotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5pZGVudGlmaWVyKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5wYWdlR3Jv
dXBJRCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRh
dGEudmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnZpc2libGVUb0hpc3RvcnlDbGllbnQpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IHRydWU7CisgICAgU3RyaW5nIGlkOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaWQpKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHVpbnQ2NF90IHBhZ2VHcm91cElEOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFnZUdyb3VwSUQpKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGU7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSh2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgYm9vbCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50OworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUodmlzaWJsZVRvSGlzdG9yeUNsaWVudCkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgdWludDY0X3QgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIp
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiB7IHsgaWQsIHBhZ2VH
cm91cElELCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSwgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCwg
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciB9IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaAkocmV2
aXNpb24gMjIxMjIwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJQYWdlR3JvdXBEYXRhX2gKLSNkZWZpbmUg
V2ViUGFnZUdyb3VwRGF0YV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCkBAIC0zNyw3ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1
Y3QgV2ViUGFnZUdyb3VwRGF0YSB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29u
c3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIFdlYlBhZ2VHcm91cERh
dGEmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJQYWdlR3JvdXBEYXRhPiBkZWNvZGUo
SVBDOjpEZWNvZGVyJik7CisgICAgdXNpbmcgTW9kZXJuRGVjb2RlciA9IHN0ZDo6dHJ1ZV90eXBl
OwogCiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgdWludDY0X3QgcGFnZUdyb3VwSUQ7CkBA
IC00OCw2ICs0OCwzIEBAIHN0cnVjdCBXZWJQYWdlR3JvdXBEYXRhIHsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0KLSNlbmRpZiAvLyBXZWJQYWdlR3JvdXBEYXRhX2gKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llcy5oCShyZXZpc2lvbiAyMjEyMjApCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00
OCw3ICs0OSw4IEBAIHN0cnVjdCBXZWJzaXRlUG9saWNpZXMgewogICAgIFdlYnNpdGVBdXRvcGxh
eVBvbGljeSBhdXRvcGxheVBvbGljeSB7IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVmYXVsdCB9
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNv
ZGVyJiwgV2Vic2l0ZVBvbGljaWVzJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzPiBkZWNvZGUoRGVjb2RlciYpOworICAg
IHVzaW5nIE1vZGVybkRlY29kZXIgPSBzdGQ6OnRydWVfdHlwZTsKIH07CiAKIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgV2Vic2l0ZVBvbGljaWVzOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKQEAgLTU4LDE1ICs2MCwyMSBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IFdlYnNpdGVQb2xpCiAgICAgZW5jb2RlciA8PCBhbGxvd2VkQXV0b3BsYXlRdWlya3M7CiB9CiAK
LXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGJvb2wgV2Vic2l0ZVBvbGljaWVzOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgV2Vic2l0ZVBvbGljaWVzJiByZXN1bHQpCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llcz4gV2Vic2l0ZVBvbGljaWVzOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5jb250ZW50QmxvY2tlcnNFbmFibGVkKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3VsdC5hdXRvcGxheVBvbGljeSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5hbGxvd2VkQXV0b3Bs
YXlRdWlya3MpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
Ym9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29u
dGVudEJsb2NrZXJzRW5hYmxlZCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
CisgICAgV2Vic2l0ZUF1dG9wbGF5UG9saWN5IGF1dG9wbGF5UG9saWN5OworICAgIGlmICghZGVj
b2Rlci5kZWNvZGVFbnVtKGF1dG9wbGF5UG9saWN5KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIE9wdGlvblNldDxXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxsb3dlZEF1dG9w
bGF5UXVpcmtzOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxsb3dlZEF1dG9wbGF5UXVpcmtz
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgY29udGVu
dEJsb2NrZXJzRW5hYmxlZCwgYWxsb3dlZEF1dG9wbGF5UXVpcmtzLCBhdXRvcGxheVBvbGljeSB9
IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0FQSVBhZ2VHcm91cEhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSVBhZ2VHcm91cEhhbmRsZS5jcHAJKHJldmlzaW9uIDIyMTIyMCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlR3JvdXBIYW5kbGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MiwxMSArNTIsMTIgQEAgdm9pZCBQYWdlR3JvdXBIYW5kbGU6OmVuY29kZShJ
UEM6OkVuY29kZQogCiBib29sIFBhZ2VHcm91cEhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgUmVmUHRyPE9iamVjdD4mIHJlc3VsdCkKIHsKLSAgICBXZWJLaXQ6OldlYlBhZ2VH
cm91cERhdGEgd2ViUGFnZUdyb3VwRGF0YTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHdlYlBh
Z2VHcm91cERhdGEpKQorICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlR3JvdXBEYXRh
PiB3ZWJQYWdlR3JvdXBEYXRhOworICAgIGRlY29kZXIgPj4gd2ViUGFnZUdyb3VwRGF0YTsKKyAg
ICBpZiAoIXdlYlBhZ2VHcm91cERhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJl
c3VsdCA9IGNyZWF0ZShXVEZNb3ZlKHdlYlBhZ2VHcm91cERhdGEpKTsKKyAgICByZXN1bHQgPSBj
cmVhdGUoV1RGTW92ZSgqd2ViUGFnZUdyb3VwRGF0YSkpOwogICAgIHJldHVybiB0cnVlOwogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319295</attachid>
            <date>2017-08-29 15:49:32 -0700</date>
            <delta_ts>2017-08-29 15:50:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176043-20170829154932.patch</filename>
            <type>text/plain</type>
            <size>19141</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjEyODYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE3LTA4LTI5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmVnaW4gdHJhbnNp
dGlvbiB0byBtb2Rlcm4gSVBDIGRlY29kaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYwNDMKKworICAgICAgICBSZXZpZXdlZCBieSBKRiBCYXN0
aWVuLgorCisgICAgICAgIFJpZ2h0IG5vdywgaWYgYSBjbGFzcyBpcyBkZWNvZGVkIGZyb20gSVBD
IHdlIG11c3QgaGF2ZSBhIGRlZmF1bHQgY29uc3RydWN0b3IuCisgICAgICAgIFRoaXMgcHJldmVu
dHMgdXMgZnJvbSBoYXZpbmcgUmVmIG9yIEMrKyByZWZlcmVuY2VzIGluIHN1Y2ggdHlwZXMsIHdo
aWNoIGlzIGNsdXR0ZXJpbmcgdXAgb3VyIGNvZGUuCisgICAgICAgIFRoaXMgaXMgYmVjYXVzZSBJ
UEM6OmRlY29kZSBtYWtlcyBhIGRlZmF1bHQtY29uc3RydWN0ZWQgb2JqZWN0LCBmaWxscyBpdCwg
YW5kIHJldHVybnMgYSBib29sIGluZGljYXRpbmcgc3VjY2Vzcy4KKyAgICAgICAgTWFraW5nIElQ
Qzo6ZGVjb2RlIGluc3RlYWQgcmV0dXJuIGEgc3RkOjpvcHRpb25hbCBtYWtlcyBpdCBzbyB3ZSBk
byBub3QgbmVlZCB0byBjYWxsIGFuIGVtcHR5IGNvbnN0cnVjdG9yLgorICAgICAgICBUaGlzIGNv
dWxkIGFsc28gZW5hYmxlIHVzIHRvIGFkZCBJUEM6OkRlY29kZXI6Om9wZXJhdG9yPj4gYW5kIG90
aGVyIGZ1biB0aGluZ3MhCisgICAgICAgIEkgYWxzbyBtb2Rlcm5pemVkIHR3byBhcmJpdHJhcnkg
Y2xhc3NlcywgV2Vic2l0ZVBvbGljaWVzIGFuZCBXZWJQYWdlR3JvdXBEYXRhIHdpdGggbW9yZSB0
byBjb21lLgorICAgICAgICBUaGVyZSdzIG5vIGdvb2Qgd2F5IHRvIHVwZGF0ZSB0aGUgYWN0dWFs
IGdlbmVyYXRlZCBJUEMgY29kZSB1bnRpbCBlYWNoIGNsYXNzIGhhcyBiZWVuIHRyYW5zaXRpb25l
ZC4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmg6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29k
ZXIuaDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VHcm91cERhdGE6OmRlY29kZSk6CisgICAgICAgICog
U2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaDoKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZVBvbGlj
aWVzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVQb2xpY2llczo6ZGVjb2RlKToKKwogMjAx
Ny0wOC0yOCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29h
XSBVcHN0cmVhbSBXS0dldFdlYkRlZmF1bHRDRlN0cmluZ0VuY29kaW5nKCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgJKHJldmlzaW9uIDIyMTIyMCkK
KysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsMjYgKzIzLDM2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBBcmd1bWVudENvZGVyX2gKLSNkZWZpbmUgQXJndW1lbnRDb2Rl
cl9oCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3Bh
Y2UgSVBDIHsKIAogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEVuY29kZXI7CiAgICAgCit0ZW1wbGF0
ZSA8dHlwZW5hbWUuLi4gVD4gdXNpbmcgSXNVc2luZ01vZGVybkRlY29kZXIgPSB2b2lkOwordGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9pZD4gc3RydWN0IFVzZXNNb2Rlcm5EZWNv
ZGVyIDogc3RkOjpmYWxzZV90eXBlIHsgfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
VXNlc01vZGVybkRlY29kZXI8VCwgSXNVc2luZ01vZGVybkRlY29kZXI8dHlwZW5hbWUgVDo6TW9k
ZXJuRGVjb2Rlcj4+IDogc3RkOjp0cnVlX3R5cGUgeyB9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlciB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFQmIHQpCiAgICAgewogICAgICAgICB0LmVuY29kZShlbmNvZGVyKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVCYgdCkK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVCwgc3RkOjplbmFibGVfaWZfdDwhVXNlc01vZGVy
bkRlY29kZXI8VT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIHN0YXRpYyBib29sIGRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBVJiB1KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFU6OmRlY29kZShk
ZWNvZGVyLCB1KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVCwgc3RkOjpl
bmFibGVfaWZfdDxVc2VzTW9kZXJuRGVjb2RlcjxVPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8VT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewot
ICAgICAgICByZXR1cm4gVDo6ZGVjb2RlKGRlY29kZXIsIHQpOworICAgICAgICByZXR1cm4gVTo6
ZGVjb2RlKGRlY29kZXIpOwogICAgIH0KIH07CiAKIH0KLQotI2VuZGlmIC8vIEFyZ3VtZW50Q29k
ZXJfaApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5o
CShyZXZpc2lvbiAyMjEyMjApCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsMTIgKzEzMywyNCBAQCBzdHJ1Y3QgVHVw
bGVDb2RlciB7CiAgICAgICAgIFR1cGxlQ29kZXI8aW5kZXggLSAxLCBFbGVtZW50cy4uLj46OmVu
Y29kZShlbmNvZGVyLCB0dXBsZSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9
IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTx0eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1l
bnQ8c2l6ZW9mLi4uKEVsZW1lbnRzKSAtIGluZGV4LCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj46
OnR5cGU+Ojp0eXBlLCBzdGQ6OmVuYWJsZV9pZl90PCFVc2VzTW9kZXJuRGVjb2RlcjxVPjo6dmFs
dWU+KiA9IG51bGxwdHI+CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JiB0dXBsZSkKICAgICB7CiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc3RkOjpnZXQ8c2l6ZW9mLi4uKEVsZW1lbnRzKSAtIGluZGV4Pih0dXBsZSkp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gVHVwbGVDb2Rlcjxp
bmRleCAtIDEsIEVsZW1lbnRzLi4uPjo6ZGVjb2RlKGRlY29kZXIsIHR1cGxlKTsKICAgICB9Cisg
ICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVy
ZW5jZTx0eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1lbnQ8c2l6ZW9mLi4uKEVsZW1lbnRzKSAtIGlu
ZGV4LCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj46OnR5cGU+Ojp0eXBlLCBzdGQ6OmVuYWJsZV9p
Zl90PFVzZXNNb2Rlcm5EZWNvZGVyPFU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4mIHR1
cGxlKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxVPiBvcHRpb25hbDsKKyAgICAgICAg
ZGVjb2RlciA+PiBvcHRpb25hbDsKKyAgICAgICAgaWYgKCFvcHRpb25hbCkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgc3RkOjpnZXQ8c2l6ZW9mLi4uKEVsZW1lbnRzKSAtIGlu
ZGV4Pih0dXBsZSkgPSBXVEZNb3ZlKCpvcHRpb25hbCk7CisgICAgICAgIHJldHVybiBUdXBsZUNv
ZGVyPGluZGV4IC0gMSwgRWxlbWVudHMuLi4+OjpkZWNvZGUoZGVjb2RlciwgdHVwbGUpOworICAg
IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1lbnRzPgpJbmRleDogU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0RlY29kZXIuaAkocmV2aXNpb24gMjIxMjIwKQorKysgU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsMTIgKzEyMywx
OSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWlu
KGFsaWdub2YoVCksIG51bUVsZW1lbnRzICogc2l6ZW9mKFQpKTsKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotICAgIGF1dG8gZGVjb2RlKFQmIHQpIC0+IHN0ZDo6ZW5hYmxlX2lm
X3Q8IXN0ZDo6aXNfZW51bTxUPjo6dmFsdWUsIGJvb2w+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhVXNlc01vZGVy
bkRlY29kZXI8VD46OnZhbHVlPiogPSBudWxscHRyPgorICAgIGJvb2wgZGVjb2RlKFQmIHQpCiAg
ICAgewogICAgICAgICByZXR1cm4gQXJndW1lbnRDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzLCB0KTsK
ICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PFVzZXNN
b2Rlcm5EZWNvZGVyPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBEZWNvZGVyJiBvcGVyYXRv
cj4+KHN0ZDo6b3B0aW9uYWw8VD4mIHQpCisgICAgeworICAgICAgICB0ID0gQXJndW1lbnRDb2Rl
cjxUPjo6ZGVjb2RlKCp0aGlzKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKwogICAg
IGJvb2wgcmVtb3ZlQXR0YWNobWVudChBdHRhY2htZW50Jik7CiAKICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc0lQQ0RlY29kZXIgPSB0cnVlOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDIyMTIyMCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDgsMTU2ICsxMDgsMTYwIEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczo6ZW5jb2RlKEkKICNlbmRpZgogfQogCi1ib29sIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCitzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIpCiB7CisgICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy52aWV3U2l6ZSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMuc3RvcmUpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocGFyYW1ldGVycy5kcmF3aW5n
QXJlYVR5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLnBhZ2VHcm91cERhdGEpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJQYWdlR3JvdXBE
YXRhPiBwYWdlR3JvdXBEYXRhOworICAgIGRlY29kZXIgPj4gcGFnZUdyb3VwRGF0YTsKKyAgICBp
ZiAoIXBhZ2VHcm91cERhdGEpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcGFy
YW1ldGVycy5wYWdlR3JvdXBEYXRhID0gV1RGTW92ZSgqcGFnZUdyb3VwRGF0YSk7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRyYXdzQmFja2dyb3VuZCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMuaXNFZGl0YWJsZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMudW5kZXJsYXlDb2xvcikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
dXNlRml4ZWRMYXlvdXQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmZpeGVkTGF5
b3V0U2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShwYXJhbWV0ZXJzLnBhZ2luYXRpb25N
b2RlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5wYWdpbmF0aW9uQmVoYXZlc0xp
a2VDb2x1bW5zKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5wYWdlTGVuZ3RoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5nYXBCZXR3ZWVuUGFnZXMpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZXJBZ2VudCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBhcmFtZXRlcnMuaXRlbVN0YXRlcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuc2Vzc2lvbklEKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5oaWdoZXN0VXNl
ZEJhY2tGb3J3YXJkSXRlbUlEKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51c2Vy
Q29udGVudENvbnRyb2xsZXJJRCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlz
aXRlZExpbmtUYWJsZUlEKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy53ZWJzaXRl
RGF0YVN0b3JlSUQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNhblJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY2Fu
UnVuTW9kYWwpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRldmljZVNjYWxlRmFj
dG9yKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy52aWV3U2NhbGVGYWN0b3IpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnRvcENvbnRlbnRJbnNldCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubWVkaWFWb2x1bWUpKQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLm11dGVkKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5tYXlT
dGFydE1lZGlhV2hlbkluV2luZG93KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5t
aW5pbXVtTGF5b3V0U2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYXV0b1Np
emluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMudmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cykpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlRW51bShwYXJhbWV0ZXJzLnNjcm9sbFBpbm5pbmdCZWhhdmlvcikpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMuc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5iYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUVudW0ocGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5taW1lVHlwZXNXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVycykp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY29udHJvbGxlZEJ5QXV0b21hdGlvbikp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy5hbGxvd3NSZW1vdGVJbnNwZWN0aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy5yZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuc2NyZWVuU2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYXZhaWxhYmxl
U2NyZWVuU2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudGV4dEF1dG9zaXpp
bmdXaWR0aCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaWdub3Jlc1ZpZXdwb3J0
U2NhbGVMaW1pdHMpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmFsbG93c0Jsb2Nr
U2VsZWN0aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMuc21hcnRJbnNlcnREZWxldGVFbmFibGVkKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5h
YmxlZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRTY2FsZVZpZXdU
b0ZpdERvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocGFyYW1ldGVycy51c2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHBhcmFt
ZXRlcnMub2JzZXJ2ZWRMYXlvdXRNaWxlc3RvbmVzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLmNwdUxpbWl0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLnVybFNjaGVtZUhhbmRsZXJzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLmljZUNhbmRpZGF0ZUZpbHRlcmluZ0VuYWJsZWQpKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMuZW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlckNvbnRlbnRXb3JsZHMpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZXJTY3JpcHRzKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy51c2VyU3R5bGVTaGVldHMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLm1lc3NhZ2VIYW5kbGVycykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5jb250ZW50UnVsZUxpc3RzKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCi0g
ICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFdURk1vdmUocGFyYW1ldGVycyk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjIxMjIwKQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC01OSw3ICs1OSw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0g
ICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgdXNpbmcgTW9kZXJuRGVjb2RlciA9IHN0
ZDo6dHJ1ZV90eXBlOwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZTsKIApJbmRleDog
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAJKHJldmlzaW9uIDIyMTIy
MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSwxOSArMzksMjQgQEAgdm9pZCBXZWJQYWdlR3JvdXBEYXRhOjplbmNvZGUo
SVBDOjpFbmNvZAogICAgIGVuY29kZXIgPDwgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
cjsKIH0KIAotYm9vbCBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBXZWJQYWdlR3JvdXBEYXRhJiBkYXRhKQorc3RkOjpvcHRpb25hbDxXZWJQYWdlR3JvdXBE
YXRhPiBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5pZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5wYWdlR3JvdXBJRCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEudmlzaWJsZVRv
SW5qZWN0ZWRCdW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShkYXRhLnZpc2libGVUb0hpc3RvcnlDbGllbnQpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
U3RyaW5nIGlkOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaWQpKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIHVpbnQ2NF90IHBhZ2VHcm91cElEOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFnZUdyb3VwSUQpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2
aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgYm9vbCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
dmlzaWJsZVRvSGlzdG9yeUNsaWVudCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgdWludDY0X3QgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiB7IHsgaWQsIHBhZ2VHcm91cElELCB2aXNp
YmxlVG9JbmplY3RlZEJ1bmRsZSwgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCwgdXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllciB9IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaAkocmV2aXNpb24gMjIxMjIw
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBXZWJQYWdlR3JvdXBEYXRhX2gKLSNkZWZpbmUgV2ViUGFnZUdyb3Vw
RGF0YV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC0zNyw3ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgV2ViUGFnZUdy
b3VwRGF0YSB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3Rh
dGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIFdlYlBhZ2VHcm91cERhdGEmKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxXZWJQYWdlR3JvdXBEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVy
Jik7CisgICAgdXNpbmcgTW9kZXJuRGVjb2RlciA9IHN0ZDo6dHJ1ZV90eXBlOwogCiAgICAgU3Ry
aW5nIGlkZW50aWZpZXI7CiAgICAgdWludDY0X3QgcGFnZUdyb3VwSUQ7CkBAIC00OCw2ICs0OCwz
IEBAIHN0cnVjdCBXZWJQYWdlR3JvdXBEYXRhIHsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0KLSNlbmRpZiAvLyBXZWJQYWdlR3JvdXBEYXRhX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYnNpdGVQb2xpY2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYnNpdGVQb2xpY2llcy5oCShyZXZpc2lvbiAyMjEyMjApCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJzaXRlUG9saWNpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00OCw3ICs0OSw4IEBA
IHN0cnVjdCBXZWJzaXRlUG9saWNpZXMgewogICAgIFdlYnNpdGVBdXRvcGxheVBvbGljeSBhdXRv
cGxheVBvbGljeSB7IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVmYXVsdCB9OwogCiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2Vic2l0
ZVBvbGljaWVzJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHVzaW5nIE1vZGVy
bkRlY29kZXIgPSBzdGQ6OnRydWVfdHlwZTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgV2Vic2l0ZVBvbGljaWVzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKQEAg
LTU4LDE1ICs2MCwyMSBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFdlYnNpdGVQb2xp
CiAgICAgZW5jb2RlciA8PCBhbGxvd2VkQXV0b3BsYXlRdWlya3M7CiB9CiAKLXRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IGJvb2wgV2Vic2l0ZVBvbGljaWVzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgV2Vic2l0ZVBvbGljaWVzJiByZXN1bHQpCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6
Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llcz4gV2Vic2l0ZVBvbGljaWVzOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jb250ZW50Qmxv
Y2tlcnNFbmFibGVkKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGVFbnVtKHJlc3VsdC5hdXRvcGxheVBvbGljeSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5hbGxvd2VkQXV0b3BsYXlRdWlya3MpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgYm9vbCBjb250ZW50
QmxvY2tlcnNFbmFibGVkOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29udGVudEJsb2NrZXJz
RW5hYmxlZCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgV2Vic2l0
ZUF1dG9wbGF5UG9saWN5IGF1dG9wbGF5UG9saWN5OworICAgIGlmICghZGVjb2Rlci5kZWNvZGVF
bnVtKGF1dG9wbGF5UG9saWN5KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IE9wdGlvblNldDxXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxsb3dlZEF1dG9wbGF5UXVpcmtzOwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxsb3dlZEF1dG9wbGF5UXVpcmtzKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgY29udGVudEJsb2NrZXJzRW5h
YmxlZCwgYWxsb3dlZEF1dG9wbGF5UXVpcmtzLCBhdXRvcGxheVBvbGljeSB9IH07CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBh
Z2VHcm91cEhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0FQSVBhZ2VHcm91cEhhbmRsZS5jcHAJKHJldmlzaW9uIDIyMTIyMCkKKysrIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElQYWdlR3JvdXBIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MiwxMSArNTIsMTIgQEAgdm9pZCBQYWdlR3JvdXBIYW5kbGU6OmVuY29kZShJUEM6OkVuY29kZQog
CiBib29sIFBhZ2VHcm91cEhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVm
UHRyPE9iamVjdD4mIHJlc3VsdCkKIHsKLSAgICBXZWJLaXQ6OldlYlBhZ2VHcm91cERhdGEgd2Vi
UGFnZUdyb3VwRGF0YTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHdlYlBhZ2VHcm91cERhdGEp
KQorICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlR3JvdXBEYXRhPiB3ZWJQYWdlR3Jv
dXBEYXRhOworICAgIGRlY29kZXIgPj4gd2ViUGFnZUdyb3VwRGF0YTsKKyAgICBpZiAoIXdlYlBh
Z2VHcm91cERhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJlc3VsdCA9IGNyZWF0
ZShXVEZNb3ZlKHdlYlBhZ2VHcm91cERhdGEpKTsKKyAgICByZXN1bHQgPSBjcmVhdGUoV1RGTW92
ZSgqd2ViUGFnZUdyb3VwRGF0YSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>