<?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>203873</bug_id>
          
          <creation_ts>2019-11-05 17:49:02 -0800</creation_ts>
          <short_desc>WTF::RunLoop should not depend on isMainThread() idiom.</short_desc>
          <delta_ts>2019-11-05 22:37:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=202716</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=203875</see_also>
          <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="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1587620</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-05 17:49:02 -0800</bug_when>
    <thetext>The isMainThread() idiom is only meaningful for WebCore.  It is less meaningful for JSC since a VM instance can be entered from multiple threads, as long as only one thread enters it at any time.  Hence, the concept of a main thread doesn&apos;t make sense at the JSC level.

Since r251036, we started using a WTF::String to represent the RunLoop mode.  This caused problems for JSC clients when USE(CF) since it necessitated the use of StringWrapperCFAllocator to track the life cycle of the CFStringRef generated from the WTF::String.

To fix this problem, we should restore the original behavior of using CFStringRefs as the RunLoop mode token.

&lt;rdar://problem/56524251&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587624</commentid>
    <comment_count>1</comment_count>
      <attachid>382873</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-05 17:58:23 -0800</bug_when>
    <thetext>Created attachment 382873
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587630</commentid>
    <comment_count>2</comment_count>
      <attachid>382873</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-05 18:04:55 -0800</bug_when>
    <thetext>Comment on attachment 382873
proposed patch.

Need to fix non abstraction to also work for non USE(CF) ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587631</commentid>
    <comment_count>3</comment_count>
      <attachid>382877</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-05 18:08:46 -0800</bug_when>
    <thetext>Created attachment 382877
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587633</commentid>
    <comment_count>4</comment_count>
      <attachid>382877</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-11-05 18:14:58 -0800</bug_when>
    <thetext>Comment on attachment 382877
proposed patch.

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

&gt; Source/WTF/ChangeLog:7
&gt; +        Reviewed by NOBODY (OOPS!).

can you also open a bug about the Date function which uses createCFString?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587637</commentid>
    <comment_count>5</comment_count>
      <attachid>382877</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-05 18:21:15 -0800</bug_when>
    <thetext>Comment on attachment 382877
proposed patch.

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

&gt;&gt; Source/WTF/ChangeLog:7
&gt;&gt; +        Reviewed by NOBODY (OOPS!).
&gt; 
&gt; can you also open a bug about the Date function which uses createCFString?

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587639</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-05 18:27:19 -0800</bug_when>
    <thetext>(In reply to Mark Lam from comment #5)
&gt; Comment on attachment 382877 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=382877&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WTF/ChangeLog:7
&gt; &gt;&gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; 
&gt; &gt; can you also open a bug about the Date function which uses createCFString?
&gt; 
&gt; Will do.

See https://bugs.webkit.org/show_bug.cgi?id=203875</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587645</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-05 18:59:02 -0800</bug_when>
    <thetext>Looks good to me. Sorry for the regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587651</commentid>
    <comment_count>8</comment_count>
      <attachid>382877</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-11-05 19:24:02 -0800</bug_when>
    <thetext>Comment on attachment 382877
proposed patch.

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

r=me as well, nice fix!

&gt; Source/WTF/wtf/RunLoop.h:56
&gt; +#if USE(CF)
&gt; +using RunLoopMode = CFStringRef;
&gt; +#define DefaultRunLoopMode kCFRunLoopDefaultMode
&gt; +#else
&gt; +using RunLoopMode = unsigned;
&gt; +#define DefaultRunLoopMode 0
&gt; +#endif

Should we move these to be inside `RunLoop`?

```
    class RunLoop : public FunctionDispatcher {
        ...

#if USE(CF)
        using Mode = CFStringRef;
        using DefaultMode = kCFRunLoopDefaultMode;
#else
        using Mode = unsigned;
        using DefaultMode = 0;
#endif

        ...
        
        WTF_EXPORT_PRIVATE CycleResult static cycle(Mode = DefaultMode);
        
        ...
    }
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587689</commentid>
    <comment_count>9</comment_count>
      <attachid>382877</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-05 22:30:48 -0800</bug_when>
    <thetext>Comment on attachment 382877
proposed patch.

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

&gt;&gt; Source/WTF/wtf/RunLoop.h:56
&gt;&gt; +#endif
&gt; 
&gt; Should we move these to be inside `RunLoop`?
&gt; 
&gt; ```
&gt;     class RunLoop : public FunctionDispatcher {
&gt;         ...
&gt; 
&gt; #if USE(CF)
&gt;         using Mode = CFStringRef;
&gt;         using DefaultMode = kCFRunLoopDefaultMode;
&gt; #else
&gt;         using Mode = unsigned;
&gt;         using DefaultMode = 0;
&gt; #endif
&gt; 
&gt;         ...
&gt;         
&gt;         WTF_EXPORT_PRIVATE CycleResult static cycle(Mode = DefaultMode);
&gt;         
&gt;         ...
&gt;     }
&gt; ```

This unfortunately is not possible because you can&apos;t do &quot;using DefaultMode = kCFRunLoopDefaultMode;&quot;.  We can only use &quot;using&quot; for types, and kCFRunLoopDefaultMode is not a type.  We also can&apos;t use &quot;static constexpr DefaultMode = kCFRunLoopDefaultMode;&quot; because kCFRunLoopDefaultMode is not a constexpr expression.  That&apos;s why I settled on the current form that uses the #define for DefaultRunLoopMode.  I&apos;ll stick with this unless we run into a namespace collision issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587690</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-05 22:37:37 -0800</bug_when>
    <thetext>Thanks for the reviews.  Landed in r252124: &lt;http://trac.webkit.org/r252124&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382873</attachid>
            <date>2019-11-05 17:58:23 -0800</date>
            <delta_ts>2019-11-05 18:04:55 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-203873.patch</filename>
            <type>text/plain</type>
            <size>11492</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUyMTE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDE5LTExLTA1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBX
VEY6OlJ1bkxvb3Agc2hvdWxkIG5vdCBkZXBlbmQgb24gaXNNYWluVGhyZWFkKCkgaWRpb20uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM4NzMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2NTI0MjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0
RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdFNjcmlw
dERlYnVnU2VydmVyOjpydW5Mb29wTW9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFs
T2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2Nv
Y29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVUYXJnZXRJbml0aWFsaXplR2xvYmFsUXVldWUpOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwUnVuTG9vcCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGVhcmRvd25SdW5Mb29wKToKKwogMjAx
OS0xMS0wNSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2ViQXNzZW1ibHldIEFsbG93IHRpZXJpbmcgdXAgZnJvbSBMTEludCB0byBCQlEKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNwcAkocmV2aXNpb24gMjUyMTEyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVn
U2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3RTY3JpcHREZWJ1Z1NlcnZlcjo6cnUKICAgICB9CiB9CiAKLVN0cmluZyBKU0dsb2JhbE9iamVj
dFNjcmlwdERlYnVnU2VydmVyOjpydW5Mb29wTW9kZSgpCitSdW5Mb29wTW9kZSBKU0dsb2JhbE9i
amVjdFNjcmlwdERlYnVnU2VydmVyOjpydW5Mb29wTW9kZSgpCiB7CiAjaWYgVVNFKENGKSAmJiAh
UExBVEZPUk0oV0FUQ0hPUykKICAgICAvLyBSdW4gdGhlIFJ1bkxvb3AgaW4gYSBjdXN0b20gcnVu
IGxvb3AgbW9kZSB0byBwcmV2ZW50IGRlZmF1bHQgb2JzZXJ2ZXJzCkBAIC03Niw5ICs3Niw5IEBA
IFN0cmluZyBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjoKICAgICAvLyBGSVhNRTog
PHJkYXI6Ly9wcm9ibGVtLzI1OTcyNzc3Pi4gT24gd2F0Y2hPUywgaW4gb3JkZXIgZm9yIGF1dG8t
YXR0YWNoIHRvIHdvcmssCiAgICAgLy8gd2UgbmVlZCB0byBydW4gaW4gdGhlIGRlZmF1bHQgcnVu
IGxvb3AgbW9kZSBvdGhlcndpc2Ugd2UgZG8gbm90IHJlY2VpdmUgdGhlIFhQQyBtZXNzYWdlcwog
ICAgIC8vIG5lY2Vzc2FyeSB0byBzZXR1cCB0aGUgcmVsYXkgY29ubmVjdGlvbiBhbmQgbmVnb3Rp
YXRlIGFuIGF1dG8tYXR0YWNoIGRlYnVnZ2VyLgotICAgIHJldHVybiAiY29tLmFwcGxlLkphdmFT
Y3JpcHRDb3JlLnJlbW90ZS1pbnNwZWN0b3ItcnVubG9vcC1tb2RlIl9zOworICAgIHJldHVybiBD
RlNUUigiY29tLmFwcGxlLkphdmFTY3JpcHRDb3JlLnJlbW90ZS1pbnNwZWN0b3ItcnVubG9vcC1t
b2RlIik7CiAjZWxzZQotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIERlZmF1bHRSdW5Mb29w
TW9kZTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIu
aAkocmV2aXNpb24gMjUyMTEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCkBAIC0zOCw3
ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9CiAKLSAgICBzdGF0aWMgU3RyaW5n
IHJ1bkxvb3BNb2RlKCk7CisgICAgc3RhdGljIFJ1bkxvb3BNb2RlIHJ1bkxvb3BNb2RlKCk7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcigpIG92ZXJyaWRlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0JKHJl
dmlzaW9uIDI1MjExMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTg5LDggKzg5LDggQEAgc3RhdGljIHZvaWQgUmVtb3RlVGFyZ2V0SW5pdGlhbGl6ZUdsb2Jh
bAogICAgICAgICAvLyBBZGQgdG8gdGhlIGRlZmF1bHQgcnVuIGxvb3AgbW9kZSBmb3IgZGVmYXVs
dCBoYW5kbGluZywgYW5kIHRoZSBKU0NvbnRleHQgcmVtb3RlIGluc3BlY3RvciBydW4gbG9vcCBt
b2RlIHdoZW4gcGF1c2VkLgogICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UoQ0ZSdW5Mb29wR2V0
TWFpbigpLCByd2lSdW5Mb29wU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogICAgICAg
ICBhdXRvIG1vZGUgPSBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjpydW5Mb29wTW9k
ZSgpOwotICAgICAgICBpZiAoIW1vZGUuaXNOdWxsKCkpCi0gICAgICAgICAgICBDRlJ1bkxvb3BB
ZGRTb3VyY2UoQ0ZSdW5Mb29wR2V0TWFpbigpLCByd2lSdW5Mb29wU291cmNlLCBtb2RlLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgICAgICBpZiAobW9kZSAhPSBEZWZhdWx0UnVuTG9vcE1v
ZGUpCisgICAgICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UoQ0ZSdW5Mb29wR2V0TWFpbigpLCBy
d2lSdW5Mb29wU291cmNlLCBtb2RlKTsKICAgICB9KTsKIH0KIApAQCAtMjYyLDggKzI2Miw4IEBA
IHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cFJ1bkwKIAogICAgIENGUnVuTG9v
cEFkZFNvdXJjZShtX3J1bkxvb3AuZ2V0KCksIG1fcnVuTG9vcFNvdXJjZS5nZXQoKSwga0NGUnVu
TG9vcERlZmF1bHRNb2RlKTsKICAgICBhdXRvIG1vZGUgPSBKU0dsb2JhbE9iamVjdFNjcmlwdERl
YnVnU2VydmVyOjpydW5Mb29wTW9kZSgpOwotICAgIGlmICghbW9kZS5pc051bGwoKSkKLSAgICAg
ICAgQ0ZSdW5Mb29wQWRkU291cmNlKG1fcnVuTG9vcC5nZXQoKSwgbV9ydW5Mb29wU291cmNlLmdl
dCgpLCBtb2RlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIGlmIChtb2RlICE9IERlZmF1
bHRSdW5Mb29wTW9kZSkKKyAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKG1fcnVuTG9vcC5nZXQo
KSwgbV9ydW5Mb29wU291cmNlLmdldCgpLCBtb2RlKTsKIH0KIAogdm9pZCBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQ6OnRlYXJkb3duUnVuTG9vcCgpCkBAIC0yNzMsOCArMjczLDggQEAgdm9pZCBS
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRlYXJkb3duUgogCiAgICAgQ0ZSdW5Mb29wUmVtb3Zl
U291cmNlKG1fcnVuTG9vcC5nZXQoKSwgbV9ydW5Mb29wU291cmNlLmdldCgpLCBrQ0ZSdW5Mb29w
RGVmYXVsdE1vZGUpOwogICAgIGF1dG8gbW9kZSA9IEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdT
ZXJ2ZXI6OnJ1bkxvb3BNb2RlKCk7Ci0gICAgaWYgKCFtb2RlLmlzTnVsbCgpKQotICAgICAgICBD
RlJ1bkxvb3BSZW1vdmVTb3VyY2UobV9ydW5Mb29wLmdldCgpLCBtX3J1bkxvb3BTb3VyY2UuZ2V0
KCksIG1vZGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgaWYgKG1vZGUgIT0gRGVmYXVs
dFJ1bkxvb3BNb2RlKQorICAgICAgICBDRlJ1bkxvb3BSZW1vdmVTb3VyY2UobV9ydW5Mb29wLmdl
dCgpLCBtX3J1bkxvb3BTb3VyY2UuZ2V0KCksIG1vZGUpOwogCiAgICAgbV9ydW5Mb29wID0gbnVs
bHB0cjsKICAgICBtX3J1bkxvb3BTb3VyY2UgPSBudWxscHRyOwpJbmRleDogU291cmNlL1dURi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1
MjExMikKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MzUgQEAKKzIwMTktMTEtMDUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIFdURjo6UnVuTG9vcCBzaG91bGQgbm90IGRlcGVuZCBvbiBpc01haW5UaHJlYWQoKSBpZGlv
bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzg3
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY1MjQyNTE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGlzTWFpblRocmVhZCgpIGlkaW9tIGlz
IG9ubHkgbWVhbmluZ2Z1bCBmb3IgV2ViQ29yZS4gIEl0IGlzIGxlc3MgbWVhbmluZ2Z1bAorICAg
ICAgICBmb3IgSlNDIHNpbmNlIGEgVk0gaW5zdGFuY2UgY2FuIGJlIGVudGVyZWQgZnJvbSBtdWx0
aXBsZSB0aHJlYWRzLCBhcyBsb25nIGFzIG9ubHkKKyAgICAgICAgb25lIHRocmVhZCBlbnRlcnMg
aXQgYXQgYW55IHRpbWUuICBIZW5jZSwgdGhlIGNvbmNlcHQgb2YgYSBtYWluIHRocmVhZCBkb2Vz
bid0CisgICAgICAgIG1ha2Ugc2Vuc2UgYXQgdGhlIEpTQyBsZXZlbC4KKworICAgICAgICBTaW5j
ZSByMjUxMDM2LCB3ZSBzdGFydGVkIHVzaW5nIGEgV1RGOjpTdHJpbmcgdG8gcmVwcmVzZW50IHRo
ZSBSdW5Mb29wIG1vZGUuCisgICAgICAgIFRoaXMgY2F1c2VkIHByb2JsZW1zIGZvciBKU0MgY2xp
ZW50cyB3aGVuIFVTRShDRikgc2luY2UgaXQgbmVjZXNzaXRhdGVkIHRoZSB1c2Ugb2YKKyAgICAg
ICAgU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yIHRvIHRyYWNrIHRoZSBsaWZlIGN5Y2xlIG9mIHRo
ZSBDRlN0cmluZ1JlZiBnZW5lcmF0ZWQgZnJvbQorICAgICAgICB0aGUgV1RGOjpTdHJpbmcuCisK
KyAgICAgICAgVG8gZml4IHRoaXMgcHJvYmxlbSwgd2Ugc2hvdWxkIHJlc3RvcmUgdGhlIG9yaWdp
bmFsIGJlaGF2aW9yIG9mIHVzaW5nIENGU3RyaW5nUmVmcworICAgICAgICBhcyB0aGUgUnVuTG9v
cCBtb2RlIHRva2VuLgorCisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6Y3ljbGUpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9jZi9SdW5Mb29wQ0YuY3Bw
OgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpjeWNsZSk6CisgICAgICAgICogd3RmL2dlbmVyaWMv
UnVuTG9vcEdlbmVyaWMuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpjeWNsZSk6CisgICAg
ICAgICogd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpj
eWNsZSk6CisgICAgICAgICogd3RmL3dpbi9SdW5Mb29wV2luLmNwcDoKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6Y3ljbGUpOgorCiAyMDE5LTExLTA1ICBUdW9tYXMgS2Fya2thaW5lbiAgPHR1b21h
cy53ZWJraXRAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBkZWZpbml0aW9ucyBvZiBBTlNJIGNv
bG9ycyBmb3IgY29sb3JmdWwgbG9nIG91dHB1dApJbmRleDogU291cmNlL1dURi93dGYvUnVuTG9v
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAkocmV2aXNpb24gMjUy
MTEyKQorKysgU291cmNlL1dURi93dGYvUnVuTG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAg
TW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMzcs
MTIgKzM3LDI0IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFVTRShDRikKKyNpbmNsdWRlIDxDb3Jl
Rm91bmRhdGlvbi9DRlJ1bkxvb3AuaD4KKyNlbmRpZgorCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9P
UCkKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdU
RiB7CiAKKyNpZiBVU0UoQ0YpCit1c2luZyBSdW5Mb29wTW9kZSA9IENGU3RyaW5nUmVmOworI2Rl
ZmluZSBEZWZhdWx0UnVuTG9vcE1vZGUga0NGUnVuTG9vcERlZmF1bHRNb2RlCisjZWxzZQordXNp
bmcgUnVuTG9vcE1vZGUgPSB1bnNpZ25lZDsKK2NvbnN0ZXhwciB1bnNpZ25lZCBSdW5Mb29wTW9k
ZSBEZWZhdWx0UnVuTG9vcE1vZGUgPSAwOworI2VuZGlmCisKIGNsYXNzIFJ1bkxvb3AgOiBwdWJs
aWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSdW5Mb29w
KTsKIHB1YmxpYzoKQEAgLTYyLDcgKzc0LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHdha2VVcCgpOwogCiAgICAgZW51bSBjbGFzcyBDeWNsZVJlc3VsdCB7IENvbnRp
bnVlLCBTdG9wIH07Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEN5Y2xlUmVzdWx0IHN0YXRpYyBj
eWNsZShjb25zdCBTdHJpbmcmID0geyB9KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ3ljbGVS
ZXN1bHQgc3RhdGljIGN5Y2xlKFJ1bkxvb3BNb2RlID0gRGVmYXVsdFJ1bkxvb3BNb2RlKTsKIAog
I2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJ1
bkZvckR1cmF0aW9uKFNlY29uZHMgZHVyYXRpb24pOwpAQCAtMjE4LDMgKzIzMCw0IEBAIHByaXZh
dGU6CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpSdW5Mb29wOwordXNpbmcgV1RG
OjpSdW5Mb29wTW9kZTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2NmL1J1bkxvb3BDRi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNwcAkocmV2aXNpb24gMjUy
MTEyKQorKysgU291cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC02MiwxMCArNjIsMTAgQEAgdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQogICAgIENGUnVuTG9v
cFdha2VVcChtX3J1bkxvb3AuZ2V0KCkpOwogfQogCi1SdW5Mb29wOjpDeWNsZVJlc3VsdCBSdW5M
b29wOjpjeWNsZShjb25zdCBTdHJpbmcmIG1vZGUpCitSdW5Mb29wOjpDeWNsZVJlc3VsdCBSdW5M
b29wOjpjeWNsZShSdW5Mb29wTW9kZSBtb2RlKQogewogICAgIENGVGltZUludGVydmFsIHRpbWVJ
bnRlcnZhbCA9IDAuMDU7Ci0gICAgQ0ZSdW5Mb29wUnVuSW5Nb2RlKG1vZGUuaXNOdWxsKCkgPyBr
Q0ZSdW5Mb29wRGVmYXVsdE1vZGUgOiBtb2RlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHRpbWVJ
bnRlcnZhbCwgdHJ1ZSk7CisgICAgQ0ZSdW5Mb29wUnVuSW5Nb2RlKG1vZGUsIHRpbWVJbnRlcnZh
bCwgdHJ1ZSk7CiAgICAgcmV0dXJuIEN5Y2xlUmVzdWx0OjpDb250aW51ZTsKIH0KIApJbmRleDog
U291cmNlL1dURi93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAJKHJldmlzaW9uIDI1MjEx
MikKKysrIFNvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQogICAgIHdh
a2VVcChsb2NrZXIpOwogfQogCi1SdW5Mb29wOjpDeWNsZVJlc3VsdCBSdW5Mb29wOjpjeWNsZShj
b25zdCBTdHJpbmcmKQorUnVuTG9vcDo6Q3ljbGVSZXN1bHQgUnVuTG9vcDo6Y3ljbGUoUnVuTG9v
cE1vZGUpCiB7CiAgICAgaXRlcmF0ZSgpOwogfQpJbmRleDogU291cmNlL1dURi93dGYvZ2xpYi9S
dW5Mb29wR0xpYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29w
R0xpYi5jcHAJKHJldmlzaW9uIDI1MjExMikKKysrIFNvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9v
cEdMaWIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBSdW5Mb29w
Ojp3YWtlVXAoKQogICAgIGdfc291cmNlX3NldF9yZWFkeV90aW1lKG1fc291cmNlLmdldCgpLCAw
KTsKIH0KIAotUnVuTG9vcDo6Q3ljbGVSZXN1bHQgUnVuTG9vcDo6Y3ljbGUoY29uc3QgU3RyaW5n
JikKK1J1bkxvb3A6OkN5Y2xlUmVzdWx0IFJ1bkxvb3A6OmN5Y2xlKFJ1bkxvb3BNb2RlKQogewog
ICAgIGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbihOVUxMLCBGQUxTRSk7CiAgICAgcmV0dXJuIEN5
Y2xlUmVzdWx0OjpDb250aW51ZTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3dpbi9SdW5Mb29wV2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi93aW4vUnVuTG9vcFdpbi5jcHAJKHJl
dmlzaW9uIDI1MjExMikKKysrIFNvdXJjZS9XVEYvd3RmL3dpbi9SdW5Mb29wV2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQogICAgIDo6
UG9zdE1lc3NhZ2UobV9ydW5Mb29wTWVzc2FnZVdpbmRvdywgUGVyZm9ybVdvcmtNZXNzYWdlLCBy
ZWludGVycHJldF9jYXN0PFdQQVJBTT4odGhpcyksIDApOwogfQogCi1SdW5Mb29wOjpDeWNsZVJl
c3VsdCBSdW5Mb29wOjpjeWNsZShjb25zdCBTdHJpbmcmKQorUnVuTG9vcDo6Q3ljbGVSZXN1bHQg
UnVuTG9vcDo6Y3ljbGUoUnVuTG9vcE1vZGUpCiB7CiAgICAgTVNHIG1lc3NhZ2U7CiAgICAgaWYg
KCE6OkdldE1lc3NhZ2UoJm1lc3NhZ2UsIDAsIDAsIDApKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382877</attachid>
            <date>2019-11-05 18:08:46 -0800</date>
            <delta_ts>2019-11-05 18:14:58 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-203873.patch</filename>
            <type>text/plain</type>
            <size>11466</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUyMTE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDE5LTExLTA1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBX
VEY6OlJ1bkxvb3Agc2hvdWxkIG5vdCBkZXBlbmQgb24gaXNNYWluVGhyZWFkKCkgaWRpb20uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM4NzMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2NTI0MjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0
RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdFNjcmlw
dERlYnVnU2VydmVyOjpydW5Mb29wTW9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFs
T2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2Nv
Y29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVUYXJnZXRJbml0aWFsaXplR2xvYmFsUXVldWUpOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwUnVuTG9vcCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGVhcmRvd25SdW5Mb29wKToKKwogMjAx
OS0xMS0wNSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2ViQXNzZW1ibHldIEFsbG93IHRpZXJpbmcgdXAgZnJvbSBMTEludCB0byBCQlEKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNwcAkocmV2aXNpb24gMjUyMTEyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVn
U2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3RTY3JpcHREZWJ1Z1NlcnZlcjo6cnUKICAgICB9CiB9CiAKLVN0cmluZyBKU0dsb2JhbE9iamVj
dFNjcmlwdERlYnVnU2VydmVyOjpydW5Mb29wTW9kZSgpCitSdW5Mb29wTW9kZSBKU0dsb2JhbE9i
amVjdFNjcmlwdERlYnVnU2VydmVyOjpydW5Mb29wTW9kZSgpCiB7CiAjaWYgVVNFKENGKSAmJiAh
UExBVEZPUk0oV0FUQ0hPUykKICAgICAvLyBSdW4gdGhlIFJ1bkxvb3AgaW4gYSBjdXN0b20gcnVu
IGxvb3AgbW9kZSB0byBwcmV2ZW50IGRlZmF1bHQgb2JzZXJ2ZXJzCkBAIC03Niw5ICs3Niw5IEBA
IFN0cmluZyBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjoKICAgICAvLyBGSVhNRTog
PHJkYXI6Ly9wcm9ibGVtLzI1OTcyNzc3Pi4gT24gd2F0Y2hPUywgaW4gb3JkZXIgZm9yIGF1dG8t
YXR0YWNoIHRvIHdvcmssCiAgICAgLy8gd2UgbmVlZCB0byBydW4gaW4gdGhlIGRlZmF1bHQgcnVu
IGxvb3AgbW9kZSBvdGhlcndpc2Ugd2UgZG8gbm90IHJlY2VpdmUgdGhlIFhQQyBtZXNzYWdlcwog
ICAgIC8vIG5lY2Vzc2FyeSB0byBzZXR1cCB0aGUgcmVsYXkgY29ubmVjdGlvbiBhbmQgbmVnb3Rp
YXRlIGFuIGF1dG8tYXR0YWNoIGRlYnVnZ2VyLgotICAgIHJldHVybiAiY29tLmFwcGxlLkphdmFT
Y3JpcHRDb3JlLnJlbW90ZS1pbnNwZWN0b3ItcnVubG9vcC1tb2RlIl9zOworICAgIHJldHVybiBD
RlNUUigiY29tLmFwcGxlLkphdmFTY3JpcHRDb3JlLnJlbW90ZS1pbnNwZWN0b3ItcnVubG9vcC1t
b2RlIik7CiAjZWxzZQotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIERlZmF1bHRSdW5Mb29w
TW9kZTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIu
aAkocmV2aXNpb24gMjUyMTEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCkBAIC0zOCw3
ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9CiAKLSAgICBzdGF0aWMgU3RyaW5n
IHJ1bkxvb3BNb2RlKCk7CisgICAgc3RhdGljIFJ1bkxvb3BNb2RlIHJ1bkxvb3BNb2RlKCk7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcigpIG92ZXJyaWRlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0JKHJl
dmlzaW9uIDI1MjExMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTg5LDggKzg5LDggQEAgc3RhdGljIHZvaWQgUmVtb3RlVGFyZ2V0SW5pdGlhbGl6ZUdsb2Jh
bAogICAgICAgICAvLyBBZGQgdG8gdGhlIGRlZmF1bHQgcnVuIGxvb3AgbW9kZSBmb3IgZGVmYXVs
dCBoYW5kbGluZywgYW5kIHRoZSBKU0NvbnRleHQgcmVtb3RlIGluc3BlY3RvciBydW4gbG9vcCBt
b2RlIHdoZW4gcGF1c2VkLgogICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UoQ0ZSdW5Mb29wR2V0
TWFpbigpLCByd2lSdW5Mb29wU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogICAgICAg
ICBhdXRvIG1vZGUgPSBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjpydW5Mb29wTW9k
ZSgpOwotICAgICAgICBpZiAoIW1vZGUuaXNOdWxsKCkpCi0gICAgICAgICAgICBDRlJ1bkxvb3BB
ZGRTb3VyY2UoQ0ZSdW5Mb29wR2V0TWFpbigpLCByd2lSdW5Mb29wU291cmNlLCBtb2RlLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgICAgICBpZiAobW9kZSAhPSBEZWZhdWx0UnVuTG9vcE1v
ZGUpCisgICAgICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UoQ0ZSdW5Mb29wR2V0TWFpbigpLCBy
d2lSdW5Mb29wU291cmNlLCBtb2RlKTsKICAgICB9KTsKIH0KIApAQCAtMjYyLDggKzI2Miw4IEBA
IHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cFJ1bkwKIAogICAgIENGUnVuTG9v
cEFkZFNvdXJjZShtX3J1bkxvb3AuZ2V0KCksIG1fcnVuTG9vcFNvdXJjZS5nZXQoKSwga0NGUnVu
TG9vcERlZmF1bHRNb2RlKTsKICAgICBhdXRvIG1vZGUgPSBKU0dsb2JhbE9iamVjdFNjcmlwdERl
YnVnU2VydmVyOjpydW5Mb29wTW9kZSgpOwotICAgIGlmICghbW9kZS5pc051bGwoKSkKLSAgICAg
ICAgQ0ZSdW5Mb29wQWRkU291cmNlKG1fcnVuTG9vcC5nZXQoKSwgbV9ydW5Mb29wU291cmNlLmdl
dCgpLCBtb2RlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIGlmIChtb2RlICE9IERlZmF1
bHRSdW5Mb29wTW9kZSkKKyAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKG1fcnVuTG9vcC5nZXQo
KSwgbV9ydW5Mb29wU291cmNlLmdldCgpLCBtb2RlKTsKIH0KIAogdm9pZCBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQ6OnRlYXJkb3duUnVuTG9vcCgpCkBAIC0yNzMsOCArMjczLDggQEAgdm9pZCBS
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRlYXJkb3duUgogCiAgICAgQ0ZSdW5Mb29wUmVtb3Zl
U291cmNlKG1fcnVuTG9vcC5nZXQoKSwgbV9ydW5Mb29wU291cmNlLmdldCgpLCBrQ0ZSdW5Mb29w
RGVmYXVsdE1vZGUpOwogICAgIGF1dG8gbW9kZSA9IEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdT
ZXJ2ZXI6OnJ1bkxvb3BNb2RlKCk7Ci0gICAgaWYgKCFtb2RlLmlzTnVsbCgpKQotICAgICAgICBD
RlJ1bkxvb3BSZW1vdmVTb3VyY2UobV9ydW5Mb29wLmdldCgpLCBtX3J1bkxvb3BTb3VyY2UuZ2V0
KCksIG1vZGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgaWYgKG1vZGUgIT0gRGVmYXVs
dFJ1bkxvb3BNb2RlKQorICAgICAgICBDRlJ1bkxvb3BSZW1vdmVTb3VyY2UobV9ydW5Mb29wLmdl
dCgpLCBtX3J1bkxvb3BTb3VyY2UuZ2V0KCksIG1vZGUpOwogCiAgICAgbV9ydW5Mb29wID0gbnVs
bHB0cjsKICAgICBtX3J1bkxvb3BTb3VyY2UgPSBudWxscHRyOwpJbmRleDogU291cmNlL1dURi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1
MjExMikKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MzUgQEAKKzIwMTktMTEtMDUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIFdURjo6UnVuTG9vcCBzaG91bGQgbm90IGRlcGVuZCBvbiBpc01haW5UaHJlYWQoKSBpZGlv
bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzg3
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY1MjQyNTE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGlzTWFpblRocmVhZCgpIGlkaW9tIGlz
IG9ubHkgbWVhbmluZ2Z1bCBmb3IgV2ViQ29yZS4gIEl0IGlzIGxlc3MgbWVhbmluZ2Z1bAorICAg
ICAgICBmb3IgSlNDIHNpbmNlIGEgVk0gaW5zdGFuY2UgY2FuIGJlIGVudGVyZWQgZnJvbSBtdWx0
aXBsZSB0aHJlYWRzLCBhcyBsb25nIGFzIG9ubHkKKyAgICAgICAgb25lIHRocmVhZCBlbnRlcnMg
aXQgYXQgYW55IHRpbWUuICBIZW5jZSwgdGhlIGNvbmNlcHQgb2YgYSBtYWluIHRocmVhZCBkb2Vz
bid0CisgICAgICAgIG1ha2Ugc2Vuc2UgYXQgdGhlIEpTQyBsZXZlbC4KKworICAgICAgICBTaW5j
ZSByMjUxMDM2LCB3ZSBzdGFydGVkIHVzaW5nIGEgV1RGOjpTdHJpbmcgdG8gcmVwcmVzZW50IHRo
ZSBSdW5Mb29wIG1vZGUuCisgICAgICAgIFRoaXMgY2F1c2VkIHByb2JsZW1zIGZvciBKU0MgY2xp
ZW50cyB3aGVuIFVTRShDRikgc2luY2UgaXQgbmVjZXNzaXRhdGVkIHRoZSB1c2Ugb2YKKyAgICAg
ICAgU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yIHRvIHRyYWNrIHRoZSBsaWZlIGN5Y2xlIG9mIHRo
ZSBDRlN0cmluZ1JlZiBnZW5lcmF0ZWQgZnJvbQorICAgICAgICB0aGUgV1RGOjpTdHJpbmcuCisK
KyAgICAgICAgVG8gZml4IHRoaXMgcHJvYmxlbSwgd2Ugc2hvdWxkIHJlc3RvcmUgdGhlIG9yaWdp
bmFsIGJlaGF2aW9yIG9mIHVzaW5nIENGU3RyaW5nUmVmcworICAgICAgICBhcyB0aGUgUnVuTG9v
cCBtb2RlIHRva2VuLgorCisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6Y3ljbGUpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9jZi9SdW5Mb29wQ0YuY3Bw
OgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpjeWNsZSk6CisgICAgICAgICogd3RmL2dlbmVyaWMv
UnVuTG9vcEdlbmVyaWMuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpjeWNsZSk6CisgICAg
ICAgICogd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpj
eWNsZSk6CisgICAgICAgICogd3RmL3dpbi9SdW5Mb29wV2luLmNwcDoKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6Y3ljbGUpOgorCiAyMDE5LTExLTA1ICBUdW9tYXMgS2Fya2thaW5lbiAgPHR1b21h
cy53ZWJraXRAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBkZWZpbml0aW9ucyBvZiBBTlNJIGNv
bG9ycyBmb3IgY29sb3JmdWwgbG9nIG91dHB1dApJbmRleDogU291cmNlL1dURi93dGYvUnVuTG9v
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAkocmV2aXNpb24gMjUy
MTEyKQorKysgU291cmNlL1dURi93dGYvUnVuTG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAg
TW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMzcs
MTIgKzM3LDI0IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFVTRShDRikKKyNpbmNsdWRlIDxDb3Jl
Rm91bmRhdGlvbi9DRlJ1bkxvb3AuaD4KKyNlbmRpZgorCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9P
UCkKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdU
RiB7CiAKKyNpZiBVU0UoQ0YpCit1c2luZyBSdW5Mb29wTW9kZSA9IENGU3RyaW5nUmVmOworI2Rl
ZmluZSBEZWZhdWx0UnVuTG9vcE1vZGUga0NGUnVuTG9vcERlZmF1bHRNb2RlCisjZWxzZQordXNp
bmcgUnVuTG9vcE1vZGUgPSB1bnNpZ25lZDsKKyNkZWZpbmUgRGVmYXVsdFJ1bkxvb3BNb2RlIDAK
KyNlbmRpZgorCiBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUnVuTG9vcCk7CiBwdWJsaWM6CkBAIC02Miw3ICs3NCw3
IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB3YWtlVXAoKTsKIAogICAg
IGVudW0gY2xhc3MgQ3ljbGVSZXN1bHQgeyBDb250aW51ZSwgU3RvcCB9OwotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBDeWNsZVJlc3VsdCBzdGF0aWMgY3ljbGUoY29uc3QgU3RyaW5nJiA9IHsgfSk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEN5Y2xlUmVzdWx0IHN0YXRpYyBjeWNsZShSdW5Mb29w
TW9kZSA9IERlZmF1bHRSdW5Mb29wTW9kZSk7CiAKICNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBydW5Gb3JEdXJhdGlvbihTZWNvbmRzIGR1cmF0
aW9uKTsKQEAgLTIxOCwzICsyMzAsNCBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
IHVzaW5nIFdURjo6UnVuTG9vcDsKK3VzaW5nIFdURjo6UnVuTG9vcE1vZGU7CkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9jZi9SdW5Mb29wQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L2NmL1J1bkxvb3BDRi5jcHAJKHJldmlzaW9uIDI1MjExMikKKysrIFNvdXJjZS9XVEYvd3RmL2Nm
L1J1bkxvb3BDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjIsMTAgKzYyLDEwIEBAIHZvaWQg
UnVuTG9vcDo6d2FrZVVwKCkKICAgICBDRlJ1bkxvb3BXYWtlVXAobV9ydW5Mb29wLmdldCgpKTsK
IH0KIAotUnVuTG9vcDo6Q3ljbGVSZXN1bHQgUnVuTG9vcDo6Y3ljbGUoY29uc3QgU3RyaW5nJiBt
b2RlKQorUnVuTG9vcDo6Q3ljbGVSZXN1bHQgUnVuTG9vcDo6Y3ljbGUoUnVuTG9vcE1vZGUgbW9k
ZSkKIHsKICAgICBDRlRpbWVJbnRlcnZhbCB0aW1lSW50ZXJ2YWwgPSAwLjA1OwotICAgIENGUnVu
TG9vcFJ1bkluTW9kZShtb2RlLmlzTnVsbCgpID8ga0NGUnVuTG9vcERlZmF1bHRNb2RlIDogbW9k
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB0aW1lSW50ZXJ2YWwsIHRydWUpOworICAgIENGUnVu
TG9vcFJ1bkluTW9kZShtb2RlLCB0aW1lSW50ZXJ2YWwsIHRydWUpOwogICAgIHJldHVybiBDeWNs
ZVJlc3VsdDo6Q29udGludWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVu
TG9vcEdlbmVyaWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVu
TG9vcEdlbmVyaWMuY3BwCShyZXZpc2lvbiAyNTIxMTIpCisrKyBTb3VyY2UvV1RGL3d0Zi9nZW5l
cmljL1J1bkxvb3BHZW5lcmljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE4LDcgKzIxOCw3IEBA
IHZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKICAgICB3YWtlVXAobG9ja2VyKTsKIH0KIAotUnVuTG9v
cDo6Q3ljbGVSZXN1bHQgUnVuTG9vcDo6Y3ljbGUoY29uc3QgU3RyaW5nJikKK1J1bkxvb3A6OkN5
Y2xlUmVzdWx0IFJ1bkxvb3A6OmN5Y2xlKFJ1bkxvb3BNb2RlKQogewogICAgIGl0ZXJhdGUoKTsK
IH0KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCShyZXZpc2lvbiAyNTIxMTIp
CisrKyBTb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKICAgICBnX3NvdXJjZV9z
ZXRfcmVhZHlfdGltZShtX3NvdXJjZS5nZXQoKSwgMCk7CiB9CiAKLVJ1bkxvb3A6OkN5Y2xlUmVz
dWx0IFJ1bkxvb3A6OmN5Y2xlKGNvbnN0IFN0cmluZyYpCitSdW5Mb29wOjpDeWNsZVJlc3VsdCBS
dW5Mb29wOjpjeWNsZShSdW5Mb29wTW9kZSkKIHsKICAgICBnX21haW5fY29udGV4dF9pdGVyYXRp
b24oTlVMTCwgRkFMU0UpOwogICAgIHJldHVybiBDeWNsZVJlc3VsdDo6Q29udGludWU7CkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi93aW4vUnVuTG9vcFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvd2luL1J1bkxvb3BXaW4uY3BwCShyZXZpc2lvbiAyNTIxMTIpCisrKyBTb3VyY2Uv
V1RGL3d0Zi93aW4vUnVuTG9vcFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTIwLDcgKzEyMCw3IEBA
IHZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKICAgICA6OlBvc3RNZXNzYWdlKG1fcnVuTG9vcE1lc3Nh
Z2VXaW5kb3csIFBlcmZvcm1Xb3JrTWVzc2FnZSwgcmVpbnRlcnByZXRfY2FzdDxXUEFSQU0+KHRo
aXMpLCAwKTsKIH0KIAotUnVuTG9vcDo6Q3ljbGVSZXN1bHQgUnVuTG9vcDo6Y3ljbGUoY29uc3Qg
U3RyaW5nJikKK1J1bkxvb3A6OkN5Y2xlUmVzdWx0IFJ1bkxvb3A6OmN5Y2xlKFJ1bkxvb3BNb2Rl
KQogewogICAgIE1TRyBtZXNzYWdlOwogICAgIGlmICghOjpHZXRNZXNzYWdlKCZtZXNzYWdlLCAw
LCAwLCAwKSkK
</data>
<flag name="review"
          id="398649"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>