<?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>131541</bug_id>
          
          <creation_ts>2014-04-11 08:55:57 -0700</creation_ts>
          <short_desc>Some small loader refinements and refactoring</short_desc>
          <delta_ts>2014-04-12 22:34:21 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aestes</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>999886</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-11 08:55:57 -0700</bug_when>
    <thetext>Some small loader refinements and refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999891</commentid>
    <comment_count>1</comment_count>
      <attachid>229136</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-11 09:03:12 -0700</bug_when>
    <thetext>Created attachment 229136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999918</commentid>
    <comment_count>2</comment_count>
      <attachid>229136</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-04-11 10:10:14 -0700</bug_when>
    <thetext>Comment on attachment 229136
Patch

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

&gt; Source/WebCore/loader/ResourceLoader.cpp:400
&gt; +    if (m_handle)
&gt; +        m_handle-&gt;didChangePriority(loadPriority);

Eventually we&apos;ll need a way to change priority with NetworkProcess too.

At the moment, ResourceHandle::didChangePriority is a no-op though.

&gt; Source/WebCore/loader/ResourceLoader.cpp:597
&gt; +    m_handle-&gt;schedule(pair);

Perhaps a comment saying that this code is only used with WebKit1 would explain why there is no null check.

I really wish we could kill custom scheduling, but looks like it&apos;s currently used by at least two clients (it&apos;s an SPI).

&gt; Source/WebCore/loader/ResourceLoader.h:130
&gt; +    virtual void receivedCancellation(ResourceHandle*, const AuthenticationChallenge&amp; challenge) override { receivedCancellation(challenge); }

I don&apos;t think that moving this function here is helpful. The biggest challenge when dealing with authentication (to me) is figuring out which of the similarly named functions are called by AuthenticationClient, and which are called by ResourceHandle. Moving them into one block makes it more confusing.

&gt; Source/WebCore/loader/ResourceLoader.h:174
&gt; +    void schedule(WTF::SchedulePair&amp;);
&gt; +    void unschedule(WTF::SchedulePair&amp;);
&gt; +#endif

No need for the WTF:: prefix.

&gt; Source/WebCore/loader/mac/DocumentLoaderMac.cpp:42
&gt; +    for (auto&amp; loader : loadersCopy)

I would much prefer ResourceLoader&amp; to auto&amp;. We have lots and lots of loader classes, so the variable name is not sufficient for easy reading.

&gt; Source/WebCore/loader/mac/DocumentLoaderMac.cpp:50
&gt; +    for (auto&amp; loader : loadersCopy)

Ditto.

&gt; Source/WebCore/platform/network/ResourceHandle.h:139
&gt; +    void schedule(WTF::SchedulePair&amp;);
&gt; +    void unschedule(WTF::SchedulePair&amp;);

The WTF:: prefix is not needed.

&gt; Source/WebCore/platform/network/ResourceHandle.h:287
&gt; +#if PLATFORM(COCOA) &amp;&amp; !USE(CFNETWORK)

These days, USE(FOUNDATION) may be a better macro to use here than PLATFORM(COCOA). Or maybe we should just add USE(NSURLCONNECTION), so that adding other Foundation based network back-ends would be easier.

Not something for this patch, of course.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999967</commentid>
    <comment_count>3</comment_count>
      <attachid>229136</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-11 12:04:50 -0700</bug_when>
    <thetext>Comment on attachment 229136
Patch

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

Thanks for the review, Alexey!

&gt;&gt; Source/WebCore/loader/ResourceLoader.cpp:597
&gt;&gt; +    m_handle-&gt;schedule(pair);
&gt; 
&gt; Perhaps a comment saying that this code is only used with WebKit1 would explain why there is no null check.
&gt; 
&gt; I really wish we could kill custom scheduling, but looks like it&apos;s currently used by at least two clients (it&apos;s an SPI).

Actually, I meant to include a null check. I’ll add the null check rather than the comment.

&gt;&gt; Source/WebCore/loader/ResourceLoader.h:130
&gt;&gt; +    virtual void receivedCancellation(ResourceHandle*, const AuthenticationChallenge&amp; challenge) override { receivedCancellation(challenge); }
&gt; 
&gt; I don&apos;t think that moving this function here is helpful. The biggest challenge when dealing with authentication (to me) is figuring out which of the similarly named functions are called by AuthenticationClient, and which are called by ResourceHandle. Moving them into one block makes it more confusing.

I am not sure how your comment tells me what is the best action. I can leave this function below, in between only-tangentially-related function declarations that are inside various conditionals.

But I was moving it up because it was unconditional and a forwarder, just like the other forwarders just above, not because of any other logic to the grouping.

&gt;&gt; Source/WebCore/loader/ResourceLoader.h:174
&gt;&gt; +#endif
&gt; 
&gt; No need for the WTF:: prefix.

Actually, here I do need the prefix, because this file forward-declares SchedulePair.

I have four choices:

1) Leave the prefix in this declaration.
2) Add SchedulePair to &lt;wtf/Forward.h&gt; so I don’t need the prefix or the forward declaration in this header.
3) Add “using WTF::SchedulePair” to the forward declaration in this header.
4) Include &lt;wtf/SchedulePair.h&gt; instead of forward declaring.

I chose (1), but maybe you would prefer (2) or (3)?

&gt;&gt; Source/WebCore/loader/mac/DocumentLoaderMac.cpp:42
&gt;&gt; +    for (auto&amp; loader : loadersCopy)
&gt; 
&gt; I would much prefer ResourceLoader&amp; to auto&amp;. We have lots and lots of loader classes, so the variable name is not sufficient for easy reading.

I fear this is going to be a constant debate between the two of us. I find no value in specifically stating the type, my patch did not introduce the auto&amp;, and so in this patch I am not going to change this to ResourceLoader&amp;. I am looking forward to C++14 where this can just be written without the “auto&amp;”.

&gt;&gt; Source/WebCore/platform/network/ResourceHandle.h:287
&gt;&gt; +#if PLATFORM(COCOA) &amp;&amp; !USE(CFNETWORK)
&gt; 
&gt; These days, USE(FOUNDATION) may be a better macro to use here than PLATFORM(COCOA). Or maybe we should just add USE(NSURLCONNECTION), so that adding other Foundation based network back-ends would be easier.
&gt; 
&gt; Not something for this patch, of course.

Good point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000205</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-12 12:11:20 -0700</bug_when>
    <thetext>Committed r167183: &lt;http://trac.webkit.org/changeset/167183&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000237</commentid>
    <comment_count>5</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-04-12 17:00:30 -0700</bug_when>
    <thetext>iOS build fix: &lt;http://trac.webkit.org/changeset/167190&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000244</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-12 18:57:41 -0700</bug_when>
    <thetext>I’m pretty sure we don’t need the SchedulePair feature at all for iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000245</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-12 18:58:31 -0700</bug_when>
    <thetext>So the build fix is fine for future USE(CFNETWORK) on Mac, but we should change both of those conditionals to PLATFORM(MAC) instead of PLATFORM(COCOA).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000252</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-04-12 22:34:21 -0700</bug_when>
    <thetext>&gt; I fear this is going to be a constant debate between the two of us. I find no value in specifically stating the type, my patch did not introduce the auto&amp;, and so in this patch I am not going to change this to ResourceLoader&amp;. I am looking forward to C++14 where this can just be written without the “auto&amp;”.

Per webkit-dev thread, multiple WebKit hackers find significant value in seeing type names. If it&apos;s just a question of others not seeing the value, but also not seeing harm, it seems that using explicit types would accommodate both camps.

These autos are a problem for me.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229136</attachid>
            <date>2014-04-11 09:03:12 -0700</date>
            <delta_ts>2014-04-11 12:04:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131541-20140411090307.patch</filename>
            <type>text/plain</type>
            <size>21407</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3MTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI3NDRjNmY3YmQwMDdh
YzVkNWMyMGJmMzdkMzQ3NTE4YzViNDcyZC4uNzlmNmZhYWE3ZWY2NmNjNjFhMmMxNGVhN2Q0YjU2
YTI0NWViMmIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE0LTA0LTExICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTb21lIHNtYWxsIGxvYWRlciBy
ZWZpbmVtZW50cyBhbmQgcmVmYWN0b3JpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzMTU0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBSZXNvdXJjZUxvYWRlcjo6aGFu
ZGxlLCB3aGljaCBhbHdheXMgcmV0dXJucyBudWxsIHdoZW4KKyAgICAgICAgdXNpbmcgYSBuZXR3
b3JrIHByb2Nlc3MuIEFsc28gc3RyZWFtbGluZWQgY29uZGl0aW9uYWxzIGFuZCBkaWQgc29tZSBv
dGhlcgorICAgICAgICBzbWFsbCByZWZhY3RvcmluZy4KKworICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudExvYWRlci5oOiBVc2UgcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBwb2ludGVycyBmb3IgU2No
ZWR1bGVQYWlyLgorCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRDaGFuZ2VQcmlvcml0eSk6IFVzZSBtX2hh
bmRsZSBpbnN0ZWFkIG9mIGhhbmRsZSgpLAorICAgICAgICBzaW5jZSB3ZSdkIGxpa2UgdG8gZGVs
ZXRlIGhhbmRsZSgpIGVudGlyZWx5IHNvb24uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2NoZWR1bGUpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyOjp1bnNjaGVkdWxlKTogRGl0dG8uCisgICAgICAgICogbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmg6IFJlYXJyYW5nZWQgaGVhZGVyIHRvIGVsaW1pbmF0ZSBuZXN0
ZWQgY29uZGl0aW9uYWxzLgorICAgICAgICBBZGRlZCBzY2hlZHVsZSBhbmQgdW5zY2hlZHVsZSBm
dW5jdGlvbnMgZm9yIE1hYy4KKworICAgICAgICAqIGxvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJN
YWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NoZWR1bGVBbGwpOiBDaGFuZ2VkIHRvIHRha2Ug
YSByZWZlcmVuY2UgYW5kIGNhbGwgUmVzb3VyY2VMb2FkZXI6OnNjaGVkdWxlLgorICAgICAgICAo
V2ViQ29yZTo6dW5zY2hlZHVsZUFsbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OnNjaGVkdWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6dW5zY2hlZHVsZSk6IERpdHRvLgorCisgICAgICAgICogcGFnZS9tYWMvUGFnZU1hYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRTY2hlZHVsZVBhaXIpOiBQYXNzIGEgcmVm
ZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlciB0byBzY2hlZHVsZS4KKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OnJlbW92ZVNjaGVkdWxlUGFpcik6IERpdHRvLgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOiBEaWQgYSBiaXQgb2YgcmVmb3JtYXR0aW5nIGFu
ZCByZW9yZ2FuaXppbmcgb2YKKyAgICAgICAgY29uZGl0aW9uYWxzLgorCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6IFJlbW92ZWQgYSB0aW55IGJp
dCBvZiB1bm5lZWRlZCBkZWNsYXJhdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGU6OnNjaGVkdWxlKTogVXBkYXRlZCB0byB0YWtlIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEg
cG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKTog
RGl0dG8uCisKIDIwMTQtMDQtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYkdMOiBuZWVkIGVycm9yIGNoZWNraW5nIGFmdGVyIHRleHR1cmUgYW5kIGJ1ZmZl
ciB1cGxvYWRzIGluIHNvbWUgY2FzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKaW5kZXggYjIzY2EwODZlMjg5YTg5ODQ5ZGQwMWUzNzE2ZmQ3YWYxMzI5OWZmOC4uOWExMGU1
ZGNmZDYzZWJkYzY4ZGY4YTBlN2Y5ZGY0ODAwMDkyMjg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgKQEAgLTUxLDE1ICs1MSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SdW5M
b29wVGltZXIuaD4KICNlbmRpZgogCi1uYW1lc3BhY2UgV1RGIHsKLWNsYXNzIFNjaGVkdWxlUGFp
cjsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAgY2xhc3MgQXBwbGljYXRpb25DYWNo
ZUhvc3Q7Ci0jaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgY2xh
c3MgQXJjaGl2ZTsKLSNlbmRpZgogICAgIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKICAgICBjbGFz
cyBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogICAgIGNsYXNzIENhY2hlZFJhd1Jlc291cmNl
OwpAQCAtMTQ0LDkgKzEzOSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsg
fQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIHZvaWQgc2NoZWR1bGUoV1RGOjpTY2hl
ZHVsZVBhaXIqKTsKLSAgICAgICAgdm9pZCB1bnNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyKik7
CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICB2b2lkIHNjaGVkdWxlKFNjaGVkdWxlUGFpciYp
OworICAgICAgICB2b2lkIHVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQpAQCAtMTU3LDcgKzE1Miw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZl
RGF0YSgpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJj
ZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQorI2VuZGlmCiAKICAgICAgICAgLy8gUmV0dXJuIHRo
ZSBBcmNoaXZlUmVzb3VyY2UgZm9yIHRoZSBVUkwgb25seSB3aGVuIGxvYWRpbmcgYW4gQXJjaGl2
ZQogICAgICAgICBBcmNoaXZlUmVzb3VyY2UqIGFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBV
UkwmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IDI3NGZmMTZmNmVjZjk2ZWY4ZmFjNGUwNTBhYjc0MjJjZDViMGJkMmEuLmE5ODExYTNmMjViZDU2
NDAxZDMxOWVkMzI5N2FkNTQ5ZjAzMzMxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcApAQCAtMzk2LDggKzM5Niw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmNs
ZWFudXBGb3JFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkQ2hhbmdlUHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHkgbG9hZFByaW9y
aXR5KQogewotICAgIGlmIChoYW5kbGUoKSkKLSAgICAgICAgaGFuZGxlKCktPmRpZENoYW5nZVBy
aW9yaXR5KGxvYWRQcmlvcml0eSk7CisgICAgaWYgKG1faGFuZGxlKQorICAgICAgICBtX2hhbmRs
ZS0+ZGlkQ2hhbmdlUHJpb3JpdHkobG9hZFByaW9yaXR5KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxv
YWRlcjo6Y2FuY2VsKCkKQEAgLTUzNiw3ICs1MzYsNyBAQCBib29sIFJlc291cmNlTG9hZGVyOjpz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbmdlKQogewotICAgIEFTU0VSVChoYW5kbGUoKS0+aGFzQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoKSk7CisgICAgQVNTRVJUKG1faGFuZGxlLT5oYXNBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSgpKTsKIAogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBz
aW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRoaW5nIGlu
Y2x1ZGluZyBwb3NzaWJseSBkZXJlZmluZyB0aGlzOyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIFJh
ZGFyIDMyNjYyMTYuCkBAIC01NTIsNyArNTUyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwK
ICAgICAvLyBJZiB3ZSBjYW4ndCBjb250aW51ZSB3aXRoIGNyZWRlbnRpYWxzLCB3ZSBuZWVkIHRv
IGNhbmNlbCB0aGUgbG9hZCBhbHRvZ2V0aGVyLgogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwp
CiAgICAgY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCktPnJlY2VpdmVkUmVxdWVzdFRv
Q29udGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFsbGVuZ2UpOwotICAgIEFTU0VSVCghaGFuZGxl
KCkgfHwgIWhhbmRsZSgpLT5oYXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKTsKKyAgICBBU1NF
UlQoIW1faGFuZGxlIHx8ICFtX2hhbmRsZS0+aGFzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSk7
CiAjZWxzZQogICAgIGRpZEZhaWwoYmxvY2tlZEVycm9yKCkpOwogI2VuZGlmCkBAIC01NjcsMTgg
KzU2NywyMiBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZQogfQogCiAjaWYgVVNFKFBST1RFQ1RJ
T05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKwogYm9vbCBSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3Rl
Y3Rpb25TcGFjZSkKIHsKICAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOwog
ICAgIHJldHVybiBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKGRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSwgcHJvdGVjdGlv
blNwYWNlKTsKIH0KKwogI2VuZGlmCiAgICAgCiAjaWYgUExBVEZPUk0oSU9TKQorCiBSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBSZXNvdXJjZUxvYWRlcjo6Y29ubmVjdGlvblByb3BlcnRpZXMo
UmVzb3VyY2VIYW5kbGUqKQogewogICAgIHJldHVybiBmcmFtZUxvYWRlcigpLT5jb25uZWN0aW9u
UHJvcGVydGllcyh0aGlzKTsKIH0KKwogI2VuZGlmCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnJl
Y2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKQEAgLTU4
Niw0ICs1OTAsMTggQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVjZWl2ZWRDYW5jZWxsYXRpb24o
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQogICAgIGNhbmNlbCgpOwogfQogCisjaWYg
UExBVEZPUk0oTUFDKQorCit2b2lkIFJlc291cmNlTG9hZGVyOjpzY2hlZHVsZShTY2hlZHVsZVBh
aXImIHBhaXIpCit7CisgICAgbV9oYW5kbGUtPnNjaGVkdWxlKHBhaXIpOworfQorCit2b2lkIFJl
c291cmNlTG9hZGVyOjp1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKK3sKKyAgICBtX2hh
bmRsZS0+dW5zY2hlZHVsZShwYWlyKTsKK30KKworI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNmViMTZlZmE3NjJkZTI0ZDAxOTFiZGUzOTIzNjU2
MjU2ZWFhMzVjNS4uNjE3MDRkMWRhOGI3ZjYzOWRiYTgwYzFiY2JhNDg0OGQ5NmVkMjcyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM0LDE0ICszNCwxNiBAQAog
I2luY2x1ZGUgIlJlc291cmNlTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVl
c3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKICNpZiBVU0UoUVVJQ0tfTE9P
SykKICNpbmNsdWRlICJRdWlja0xvb2suaCIKICNlbmRpZgogCituYW1lc3BhY2UgV1RGIHsKK2Ns
YXNzIFNjaGVkdWxlUGFpcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTsKQEAgLTUwLDcgKzUyLDYgQEAgY2xhc3MgRnJhbWU7CiBjbGFz
cyBGcmFtZUxvYWRlcjsKIGNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlQnVmZmVyOwotY2xhc3Mg
UmVzb3VyY2VIYW5kbGU7CiAKIGNsYXNzIFJlc291cmNlTG9hZGVyIDogcHVibGljIFJlZkNvdW50
ZWQ8UmVzb3VyY2VMb2FkZXI+LCBwcm90ZWN0ZWQgUmVzb3VyY2VIYW5kbGVDbGllbnQgewogcHVi
bGljOgpAQCAtMTI2LDI2ICsxMjcsMzAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlIHsgcmV0dXJu
IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkgb3ZlcnJpZGUgeyBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKTsgfSAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2Fu
Y2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKSBvdmVycmlkZSB7IGRpZENhbmNlbEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSk7IH0gCisgICAgdmlydHVhbCB2b2lkIHJlY2VpdmVk
Q2FuY2VsbGF0aW9uKFJlc291cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGNoYWxsZW5nZSkgb3ZlcnJpZGUgeyByZWNlaXZlZENhbmNlbGxhdGlvbihjaGFsbGVuZ2Up
OyB9CisKICNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoUmVzb3VyY2VIYW5kbGUqLCBDRkFycmF5UmVmIGRh
dGFBcnJheSkgb3ZlcnJpZGU7CiAjZW5kaWYKKwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FV
VEhfQ0FMTEJBQ0spCiAgICAgdmlydHVhbCBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3Rl
Y3Rpb25TcGFjZSkgb3ZlcnJpZGUgeyByZXR1cm4gY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpOyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQg
cmVjZWl2ZWRDYW5jZWxsYXRpb24oUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgY2hhbGxlbmdlKSBvdmVycmlkZSB7IHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNo
YWxsZW5nZSk7IH0KLSNpZiBQTEFURk9STShDT0NPQSkKLSNpZiBVU0UoQ0ZORVRXT1JLKQorCisj
aWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShDRk5FVFdPUkspCiAgICAgdmlydHVhbCBDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7Ci0jZWxzZQotICAgIHZpcnR1YWwgTlNDYWNoZWRV
UkxSZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVS
TFJlc3BvbnNlKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkK
KwogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGTkVUV09SSykKICAgICAvLyBGSVhNRTogV2lu
ZG93cyBzaG91bGQgdXNlIHdpbGxDYWNoZVJlc3BvbnNlIC0gPGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01NzI1Nz4uCiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hl
UmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlk
ZTsKICNlbmRpZgogCi0gICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3JlcXVl
c3QudXJsKCk7IH0gCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorICAg
IHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlKikgb3ZlcnJpZGU7CisjZW5kaWYKKworICAgIGNv
bnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0LnVybCgpOyB9CiAgICAgUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlLmdldCgpOyB9CiAg
ICAgYm9vbCBzaG91bGRTZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4g
bV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja3M7IH0KICAgICB2b2lk
IHNldFNlbmRDYWxsYmFja1BvbGljeShTZW5kQ2FsbGJhY2tQb2xpY3kgc2VuZExvYWRDYWxsYmFj
a3MpIHsgbV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gc2VuZExvYWRDYWxsYmFja3M7IH0K
QEAgLTE2Myw2ICsxNjgsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UXVpY2tMb29rSGFuZGxl
KFBhc3NPd25QdHI8UXVpY2tMb29rSGFuZGxlPiBoYW5kbGUpIHsgbV9xdWlja0xvb2tIYW5kbGUg
PSBoYW5kbGU7IH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgc2NoZWR1
bGUoV1RGOjpTY2hlZHVsZVBhaXImKTsKKyAgICB2b2lkIHVuc2NoZWR1bGUoV1RGOjpTY2hlZHVs
ZVBhaXImKTsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgUmVzb3VyY2VMb2FkZXIoRnJhbWUq
LCBSZXNvdXJjZUxvYWRlck9wdGlvbnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9t
YWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCmluZGV4IGZhNDQ4M2U5NzcyMzhkNmU5OGI2NzJlMWI5
MDE3ODljMDI2MzA4NGQuLmI2OTdjNGExODUxMmM2Mzc1ZjI0YjRkMTc4YjM2ZGNhMzUzMjViNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3Bw
CkBAIC0yOCw1OCArMjgsNDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50TG9hZGVyLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKwogI2luY2x1ZGUg
IlJlc291cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFpci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQotc3RhdGljIHZvaWQgc2NoZWR1
bGVBbGwoY29uc3QgUmVzb3VyY2VMb2FkZXJNYXAmIGxvYWRlcnMsIFNjaGVkdWxlUGFpciogcGFp
cikKKyNpZiBQTEFURk9STShNQUMpCisKK3N0YXRpYyB2b2lkIHNjaGVkdWxlQWxsKGNvbnN0IFJl
c291cmNlTG9hZGVyTWFwJiBsb2FkZXJzLCBTY2hlZHVsZVBhaXImIHBhaXIpCiB7CiAgICAgVmVj
dG9yPFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4+IGxvYWRlcnNDb3B5OwogICAgIGNvcHlWYWx1ZXNU
b1ZlY3Rvcihsb2FkZXJzLCBsb2FkZXJzQ29weSk7Ci0gICAgZm9yIChhdXRvJiBsb2FkZXIgOiBs
b2FkZXJzQ29weSkgewotICAgICAgICBpZiAoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IGxvYWRl
ci0+aGFuZGxlKCkpCi0gICAgICAgICAgICBoYW5kbGUtPnNjaGVkdWxlKHBhaXIpOwotICAgIH0K
KyAgICBmb3IgKGF1dG8mIGxvYWRlciA6IGxvYWRlcnNDb3B5KQorICAgICAgICBsb2FkZXItPnNj
aGVkdWxlKHBhaXIpOwogfQogCi1zdGF0aWMgdm9pZCB1bnNjaGVkdWxlQWxsKGNvbnN0IFJlc291
cmNlTG9hZGVyTWFwJiBsb2FkZXJzLCBTY2hlZHVsZVBhaXIqIHBhaXIpCitzdGF0aWMgdm9pZCB1
bnNjaGVkdWxlQWxsKGNvbnN0IFJlc291cmNlTG9hZGVyTWFwJiBsb2FkZXJzLCBTY2hlZHVsZVBh
aXImIHBhaXIpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4+IGxvYWRlcnND
b3B5OwogICAgIGNvcHlWYWx1ZXNUb1ZlY3Rvcihsb2FkZXJzLCBsb2FkZXJzQ29weSk7Ci0gICAg
Zm9yIChhdXRvJiBsb2FkZXIgOiBsb2FkZXJzQ29weSkgewotICAgICAgICBpZiAoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSA9IGxvYWRlci0+aGFuZGxlKCkpCi0gICAgICAgICAgICBoYW5kbGUtPnVu
c2NoZWR1bGUocGFpcik7Ci0gICAgfQorICAgIGZvciAoYXV0byYgbG9hZGVyIDogbG9hZGVyc0Nv
cHkpCisgICAgICAgIGxvYWRlci0+dW5zY2hlZHVsZShwYWlyKTsKIH0KLSNlbmRpZgogCi12b2lk
IERvY3VtZW50TG9hZGVyOjpzY2hlZHVsZShTY2hlZHVsZVBhaXIqIHBhaXIpCit2b2lkIERvY3Vt
ZW50TG9hZGVyOjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7Ci0jaWYgIVBMQVRGT1JN
KElPUykKLSAgICBpZiAobWFpblJlc291cmNlTG9hZGVyKCkgJiYgbWFpblJlc291cmNlTG9hZGVy
KCktPmhhbmRsZSgpKQotICAgICAgICBtYWluUmVzb3VyY2VMb2FkZXIoKS0+aGFuZGxlKCktPnNj
aGVkdWxlKHBhaXIpOworICAgIGlmIChtYWluUmVzb3VyY2VMb2FkZXIoKSkKKyAgICAgICAgbWFp
blJlc291cmNlTG9hZGVyKCktPnNjaGVkdWxlKHBhaXIpOwogICAgIHNjaGVkdWxlQWxsKG1fc3Vi
cmVzb3VyY2VMb2FkZXJzLCBwYWlyKTsKICAgICBzY2hlZHVsZUFsbChtX3BsdWdJblN0cmVhbUxv
YWRlcnMsIHBhaXIpOwogICAgIHNjaGVkdWxlQWxsKG1fbXVsdGlwYXJ0U3VicmVzb3VyY2VMb2Fk
ZXJzLCBwYWlyKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhaXIpOwotI2VuZGlmCiB9CiAK
LXZvaWQgRG9jdW1lbnRMb2FkZXI6OnVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyKiBwYWlyKQordm9p
ZCBEb2N1bWVudExvYWRlcjo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7Ci0jaWYg
IVBMQVRGT1JNKElPUykKLSAgICBpZiAobWFpblJlc291cmNlTG9hZGVyKCkgJiYgbWFpblJlc291
cmNlTG9hZGVyKCktPmhhbmRsZSgpKQotICAgICAgICBtYWluUmVzb3VyY2VMb2FkZXIoKS0+aGFu
ZGxlKCktPnVuc2NoZWR1bGUocGFpcik7CisgICAgaWYgKG1haW5SZXNvdXJjZUxvYWRlcigpKQor
ICAgICAgICBtYWluUmVzb3VyY2VMb2FkZXIoKS0+dW5zY2hlZHVsZShwYWlyKTsKICAgICB1bnNj
aGVkdWxlQWxsKG1fc3VicmVzb3VyY2VMb2FkZXJzLCBwYWlyKTsKICAgICB1bnNjaGVkdWxlQWxs
KG1fcGx1Z0luU3RyZWFtTG9hZGVycywgcGFpcik7CiAgICAgdW5zY2hlZHVsZUFsbChtX211bHRp
cGFydFN1YnJlc291cmNlTG9hZGVycywgcGFpcik7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShw
YWlyKTsKLSNlbmRpZgogfQogCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvUGFnZU1hYy5jcHAKaW5kZXggYzlkZWM2YmYzNTdhMzZhNGE3MGJmNWMwNjRmMzNiNmNk
Y2ZiZDQ5Ni4uYWJmNTM4ZTU0M2YyNDU4OWVlNGY2OWIwYjhkYTc2N2ExYjE4ZWZmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5jcHAKQEAgLTQ3LDkgKzQ3LDkgQEAgdm9pZCBQYWdlOjph
ZGRTY2hlZHVsZVBhaXIoUGFzc1JlZlB0cjxTY2hlZHVsZVBhaXI+IHBycFBhaXIpCiAjaWYgIVBM
QVRGT1JNKElPUykKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlm
IChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1l
bnRMb2FkZXIoKSkKLSAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zY2hlZHVsZShwYWlyLmdl
dCgpKTsKKyAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zY2hlZHVsZSgqcGFpcik7CiAgICAg
ICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCku
cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKQotICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIt
PnNjaGVkdWxlKHBhaXIuZ2V0KCkpOworICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNjaGVk
dWxlKCpwYWlyKTsKICAgICB9CiAjZW5kaWYKIApAQCAtNjgsOSArNjgsOSBAQCB2b2lkIFBhZ2U6
OnJlbW92ZVNjaGVkdWxlUGFpcihQYXNzUmVmUHRyPFNjaGVkdWxlUGFpcj4gcHJwUGFpcikKICNp
ZiAhUExBVEZPUk0oSU9TKQogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9tYWluRnJhbWUuZ2V0
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAg
ICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5k
b2N1bWVudExvYWRlcigpKQotICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnVuc2NoZWR1bGUo
cGFpci5nZXQoKSk7CisgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+dW5zY2hlZHVsZSgqcGFp
cik7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+
bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKQotICAgICAgICAgICAgZG9jdW1l
bnRMb2FkZXItPnVuc2NoZWR1bGUocGFpci5nZXQoKSk7CisgICAgICAgICAgICBkb2N1bWVudExv
YWRlci0+dW5zY2hlZHVsZSgqcGFpcik7CiAgICAgfQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggNGE1ZGRhZjUw
ZmVkNmM4MDFlYmVkZWJkNmE3NGE0MDRlMzRjYjY5NC4uMGI2ZTA4YzMxNDk5NTJiYWQxZDY1MGI2
M2YwODNjZDlhNmQ5ZDkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtMzMsOSArMzMsMTMgQEAKICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoQ0ZORVRXT1JLKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNlbmRpZgor
CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAjaW5jbHVkZSAiUXVpY2tMb29rLmgiCi0jZW5kaWYgLy8g
VVNFKFFVSUNLX0xPT0spCisjZW5kaWYKIAogI2lmIFVTRShTT1VQKQogdHlwZWRlZiBzdHJ1Y3Qg
X0dUbHNDZXJ0aWZpY2F0ZSBHVGxzQ2VydGlmaWNhdGU7CkBAIC01NCwxMCArNTgsNiBAQCB0eXBl
ZGVmIHZvaWQqIExQVk9JRDsKIHR5cGVkZWYgTFBWT0lEIEhJTlRFUk5FVDsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCi0jaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgotI2VuZGlmCi0KICNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNDYWNo
ZWRVUkxSZXNwb25zZTsKIE9CSkNfQ0xBU1MgTlNEYXRhOwpAQCAtODQsNiArODQsNyBAQCBjbGFz
cyBTY2hlZHVsZVBhaXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogY2xhc3MgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgRnJhbWU7CkBAIC0x
MTMsNiArMTE0LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRX
T1JLKQogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogI2VuZGlmCisKICNpZiBQTEFURk9S
TShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFVTRShTT1VQKQogICAg
IGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwpA
QCAtMTIxLDIwICsxMjMsMjIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENh
bmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRI
X0NBTExCQUNLKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoUFJPVEVDVElPTl9TUEFDRV9B
VVRIX0NBTExCQUNLKQogICAgIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25T
cGFjZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKICNlbmRpZgotI2lmICFVU0UoQ0ZORVRXT1JL
KQorCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQogICAgIHZvaWQgZGlk
Q2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKTsKICAgICBOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24oKSBjb25zdDsKICAgICBpZCBk
ZWxlZ2F0ZSgpOwogICAgIHZvaWQgcmVsZWFzZURlbGVnYXRlKCk7CiAjZW5kaWYKIAotICAgIHZv
aWQgc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXIqKTsKLSAgICB2b2lkIHVuc2NoZWR1bGUoV1RG
OjpTY2hlZHVsZVBhaXIqKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCBzY2hlZHVsZShX
VEY6OlNjaGVkdWxlUGFpciYpOworICAgIHZvaWQgdW5zY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFp
ciYpOwogI2VuZGlmCisKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIENGVVJMU3RvcmFnZVNlc3Np
b25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdDsKICAgICBDRlVSTENvbm5lY3Rpb25SZWYgY29u
bmVjdGlvbigpIGNvbnN0OwpAQCAtMTQyLDE4ICsxNDYsMTggQEAgcHVibGljOgogICAgIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgY3VycmVudFJlcXVlc3QoKSBjb25zdDsKICAgICBzdGF0aWMgdm9p
ZCBzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmKTsKICAgICBz
dGF0aWMgdm9pZCBzZXRDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3QsIENGRGF0
YVJlZik7CisjZW5kaWYKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIFF1aWNrTG9va0hhbmRs
ZSogcXVpY2tMb29rSGFuZGxlKCkgeyByZXR1cm4gbV9xdWlja0xvb2suZ2V0KCk7IH0KICAgICB2
b2lkIHNldFF1aWNrTG9va0hhbmRsZShQYXNzT3duUHRyPFF1aWNrTG9va0hhbmRsZT4gaGFuZGxl
KSB7IG1fcXVpY2tMb29rID0gaGFuZGxlOyB9Ci0jZW5kaWYgLy8gVVNFKFFVSUNLX0xPT0spCi0K
LSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pICYm
IFVTRShDVVJMKQogICAgIHN0YXRpYyB2b2lkIHNldEhvc3RBbGxvd3NBbnlIVFRQU0NlcnRpZmlj
YXRlKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyB2b2lkIHNldENsaWVudENlcnRpZmljYXRl
SW5mbyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ1VSTCkgJiYgVVNFKENGKQogICAgIHN0YXRp
YyB2b2lkIHNldENsaWVudENlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCwgQ0ZEYXRhUmVm
KTsKICNlbmRpZgpAQCAtMjE1LDcgKzIxOSw4IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQgaW4g
cmVzcG9uc2UgdG8gUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMo
KS4KICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNwb25z
ZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKLSNlbGlmIFBMQVRGT1JNKENPQ09BKQorI2VuZGlm
CisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQogICAgIHZvaWQgY29udGlu
dWVXaWxsQ2FjaGVSZXNwb25zZShOU0NhY2hlZFVSTFJlc3BvbnNlICopOwogI2VuZGlmCiAKQEAg
LTIzNiw2ICsyNDEsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5F
VFdPUkspCiAgICAgc3RhdGljIENGU3RyaW5nUmVmIHN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2Rl
KCk7CiAjZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENGTkVUV09SSykKICAgICBz
dGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJM
UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtMjcxLDE2ICsyNzcs
MTUgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZBdXRoZW50aWNhdGlvbkNsaWVu
dCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShD
Rk5FVFdPUkspCi0gICAgZW51bSBjbGFzcyBTY2hlZHVsaW5nQmVoYXZpb3IgewotICAgICAgICBB
c3luY2hyb25vdXMsCi0gICAgICAgIFN5bmNocm9ub3VzCi0gICAgfTsKKyAgICBlbnVtIGNsYXNz
IFNjaGVkdWxpbmdCZWhhdmlvciB7IEFzeW5jaHJvbm91cywgU3luY2hyb25vdXMgfTsKKyNlbmRp
ZgogCiAjaWYgVVNFKENGTkVUV09SSykKICAgICB2b2lkIGNyZWF0ZUNGVVJMQ29ubmVjdGlvbihi
b29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwg
U2NoZWR1bGluZ0JlaGF2aW9yLCBDRkRpY3Rpb25hcnlSZWYgY2xpZW50UHJvcGVydGllcyk7Ci0j
ZWxzZQotICAgIHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1
bGluZ0JlaGF2aW9yKTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZO
RVRXT1JLKQorICAgIHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29s
IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2No
ZWR1bGluZ0JlaGF2aW9yKTsKICNlbmRpZgogCiAgICAgZnJpZW5kIGNsYXNzIFJlc291cmNlSGFu
ZGxlSW50ZXJuYWw7CkBAIC0yODgsNyArMjkzLDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShRVUlD
S19MT09LKQogICAgIE93blB0cjxRdWlja0xvb2tIYW5kbGU+IG1fcXVpY2tMb29rOwotI2VuZGlm
IC8vIFVTRShRVUlDS19MT09LKQorI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4
IDZlNjRmNTI4NDEzMmEwOWQ4NTU3NTMwZjlhMjY5NjU4NTFlZTA2ZjcuLjE2NWUxODQ4NDc1NzQy
NWNjNjYzODc4Y2Q1YTAzZjYzZTA0YzgxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC01Miw3ICs1
Miw2IEBACiAjaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlIDxsaWJzb3VwL3Nv
dXAuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+Ci1jbGFzcyBGcmFtZTsKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC02OSw2ICs2OCw3IEBAIHR5cGVkZWYgY29u
c3Qgc3RydWN0IF9fQ0ZVUkxTdG9yYWdlU2Vzc2lvbiogQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZjsK
IC8vIFdlYkNvcmVSZXNvdXJjZUxvYWRlckltcCB3aGljaCBhdm9pZHMgZG9pbmcgd29yayBpbiBk
ZWFsbG9jKS4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAgY2xhc3MgUmVzb3VyY2VIYW5k
bGVDbGllbnQ7CiAKICAgICBjbGFzcyBSZXNvdXJjZUhhbmRsZUludGVybmFsIHsKQEAgLTgzLDcg
KzgzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2RlZmVyc0xvYWRp
bmcoZGVmZXJzTG9hZGluZykKICAgICAgICAgICAgICwgbV9zaG91bGRDb250ZW50U25pZmYoc2hv
dWxkQ29udGVudFNuaWZmKQogI2lmIFVTRShDRk5FVFdPUkspCi0gICAgICAgICAgICAsIG1fY29u
bmVjdGlvbigwKQogICAgICAgICAgICAgLCBtX2N1cnJlbnRSZXF1ZXN0KHJlcXVlc3QpCiAjZW5k
aWYKICNpZiBVU0UoV0lOSU5FVCkKQEAgLTIxNiw2ICsyMTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIC8vIEl0IGlzIGFsbW9zdCBpZGVudGljYWwgdG8gbV9jdXJyZW50V2ViQ2hh
bGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSwgYnV0IGhhcyBhIGRpZmZlcmVu
dCBzZW5kZXIuCiAgICAgICAgIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKm1fY3VycmVu
dE1hY0NoYWxsZW5nZTsKICNlbmRpZgorCiAgICAgICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IG1fY3VycmVudFdlYkNoYWxsZW5nZTsKICAgICAgICAgUmVzb3VyY2VIYW5kbGU6OkZhaWx1cmVU
eXBlIG1fc2NoZWR1bGVkRmFpbHVyZVR5cGU7CiAgICAgICAgIFRpbWVyPFJlc291cmNlSGFuZGxl
PiBtX2ZhaWx1cmVUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KaW5kZXggMTg5YWMwZTdiN2YxOTAwOWE5
MTU1YTllYjNkNTc2NzgzYWQ3NmRmNC4uMWYwZDBmMGY1MDgzMTY2YzE4M2Y3NjBhMzEwMmFhNzQ1
ZDkxY2MzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KQEAgLTI5NywzMiArMjk3LDI4IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKICAgICAg
ICAgd2tTZXROU1VSTENvbm5lY3Rpb25EZWZlcnNDYWxsYmFja3MoZC0+bV9jb25uZWN0aW9uLmdl
dCgpLCBkZWZlcnMpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpzY2hlZHVsZShTY2hlZHVs
ZVBhaXIqIHBhaXIpCisjaWYgUExBVEZPUk0oTUFDKQorCit2b2lkIFJlc291cmNlSGFuZGxlOjpz
Y2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBO
U1J1bkxvb3AgKnJ1bkxvb3AgPSBwYWlyLT5uc1J1bkxvb3AoKTsKKyAgICBOU1J1bkxvb3AgKnJ1
bkxvb3AgPSBwYWlyLm5zUnVuTG9vcCgpOwogICAgIGlmICghcnVuTG9vcCkKICAgICAgICAgcmV0
dXJuOwotICAgIFtkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkgc2NoZWR1bGVJblJ1bkxvb3A6cnVuTG9v
cCBmb3JNb2RlOihOU1N0cmluZyAqKXBhaXItPm1vZGUoKV07CisgICAgW2QtPm1fY29ubmVjdGlv
bi5nZXQoKSBzY2hlZHVsZUluUnVuTG9vcDpydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopcGFp
ci5tb2RlKCldOwogICAgIGlmIChkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCkgewogICAgICAgICBb
ZC0+bV9jb25uZWN0aW9uLmdldCgpIHN0YXJ0XTsKICAgICAgICAgZC0+bV9zdGFydFdoZW5TY2hl
ZHVsZWQgPSBmYWxzZTsKICAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWlyKTsKLSNl
bmRpZgogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciog
cGFpcikKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWly
KQogewotI2lmICFQTEFURk9STShJT1MpCi0gICAgaWYgKE5TUnVuTG9vcCAqcnVuTG9vcCA9IHBh
aXItPm5zUnVuTG9vcCgpKQotICAgICAgICBbZC0+bV9jb25uZWN0aW9uLmdldCgpIHVuc2NoZWR1
bGVGcm9tUnVuTG9vcDpydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopcGFpci0+bW9kZSgpXTsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhaXIpOwotI2VuZGlmCisgICAgaWYgKE5TUnVuTG9v
cCAqcnVuTG9vcCA9IHBhaXIubnNSdW5Mb29wKCkpCisgICAgICAgIFtkLT5tX2Nvbm5lY3Rpb24u
Z2V0KCkgdW5zY2hlZHVsZUZyb21SdW5Mb29wOnJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKilw
YWlyLm1vZGUoKV07CiB9CiAKKyNlbmRpZgorCiBpZCBSZXNvdXJjZUhhbmRsZTo6ZGVsZWdhdGUo
KQogewogICAgIGlmICghZC0+bV9kZWxlZ2F0ZSkgewo=
</data>
<flag name="review"
          id="253498"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>