<?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>126356</bug_id>
          
          <creation_ts>2013-12-31 22:47:14 -0800</creation_ts>
          <short_desc>Propagate WindowServer modifications state to WebProcess</short_desc>
          <delta_ts>2014-01-03 23:41:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rego+ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>963583</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-12-31 22:47:14 -0800</bug_when>
    <thetext>This will be necessary to move control of process suppression to the WebProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963584</commentid>
    <comment_count>1</comment_count>
      <attachid>220178</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-12-31 23:06:02 -0800</bug_when>
    <thetext>Created attachment 220178
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963586</commentid>
    <comment_count>2</comment_count>
      <attachid>220178</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-31 23:10:53 -0800</bug_when>
    <thetext>Comment on attachment 220178
Fix

Attachment 220178 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/5880595670368256</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963590</commentid>
    <comment_count>3</comment_count>
      <attachid>220182</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-12-31 23:45:10 -0800</bug_when>
    <thetext>Created attachment 220182
GTK fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963632</commentid>
    <comment_count>4</comment_count>
      <attachid>220182</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-01 13:58:20 -0800</bug_when>
    <thetext>Comment on attachment 220182
GTK fix

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

&gt; Source/WebKit2/UIProcess/WebContext.h:304
&gt; +#if PLATFORM(MAC) &amp;&amp; !PLATFORM(IOS) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1090
&gt; +    void windowModificationsStateChanged();
&gt; +    static WindowModificationsState windowModificationsState();
&gt; +#else
&gt; +    static WindowModificationsState windowModificationsState() { return WindowModificationsStarted; }
&gt; +#endif

I don&apos;t get why something called WindowModificationsState would be on the WebContext (or static).  &quot;Window&quot; level concepts should really a PageClient thing if possible.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:137
&gt; +    for (auto *context : contexts) {

* on the wrong side.

&gt; Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm:85
&gt; +void WebProcessProxy::windowModificationsStateChanged()

Even though this isn&apos;t currently used by other platforms, there isn&apos;t anything really mac specific about it.  Can this just go in WebProcessProxy.cpp?

&gt; Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm:88
&gt; +    for (WebPageProxyMap::iterator it = m_pageMap.begin(), end = m_pageMap.end(); it != end; ++it)
&gt; +        it-&gt;value-&gt;viewStateDidChange(ViewState::IsModifying);

This can be written as:

for (const auto&amp;  page : m_pageMap.values())
    page-&gt;viewStateDidChange(ViewState::IsModifying);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963679</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-01-01 21:59:42 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 220182 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=220182&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebContext.h:304
&gt; &gt; +#if PLATFORM(MAC) &amp;&amp; !PLATFORM(IOS) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1090
&gt; &gt; +    void windowModificationsStateChanged();
&gt; &gt; +    static WindowModificationsState windowModificationsState();
&gt; &gt; +#else
&gt; &gt; +    static WindowModificationsState windowModificationsState() { return WindowModificationsStarted; }
&gt; &gt; +#endif
&gt; 
&gt; I don&apos;t get why something called WindowModificationsState would be on the WebContext (or static).  &quot;Window&quot; level concepts should really a PageClient thing if possible.

The WindowModifications state is not per window, as you might expect from the name – it is per WindowServer connection (i.e. process wide).

The code registers a single handler, and then broadcasts the message out to all WebPageProxies. The alternative would be to redundantly register multiple handlers which would all be receiving exactly the same message, which seemed inefficient.

It looked like the best way to find all WebPageProxies in existence was from the WebContext – the WebContext statically know all WebContexts in existence, which in turn can find all WebPageProxies, which in turn can find all WebPageProxies. Did I miss a more direct route?
 
&gt; * on the wrong side.
&gt; 
&gt; Even though this isn&apos;t currently used by other platforms, there isn&apos;t anything really mac specific about it.  Can this just go in WebProcessProxy.cpp?
&gt;
&gt; This can be written as:

Yep, yep, yep - will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963973</commentid>
    <comment_count>6</comment_count>
      <attachid>220269</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-01-02 17:22:37 -0800</bug_when>
    <thetext>Created attachment 220269
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963986</commentid>
    <comment_count>7</comment_count>
      <attachid>220275</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-01-02 17:53:05 -0800</bug_when>
    <thetext>Created attachment 220275
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963987</commentid>
    <comment_count>8</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-01-02 18:05:45 -0800</bug_when>
    <thetext>Committed revision 161246.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964211</commentid>
    <comment_count>9</comment_count>
      <attachid>220275</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-01-03 12:05:44 -0800</bug_when>
    <thetext>Comment on attachment 220275
Fix

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

&gt; Source/WebKit2/ChangeLog:11
&gt; +        WindowServer connection basis, and as such may produce (safe) false positives.

Did you mean &quot;safe false negatives&quot;? I don&apos;t think it&apos;s ever safe to falsely say that something is not visible to the user when in reality it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964380</commentid>
    <comment_count>10</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-01-03 23:41:40 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 220275 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=220275&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:11
&gt; &gt; +        WindowServer connection basis, and as such may produce (safe) false positives.
&gt; 
&gt; Did you mean &quot;safe false negatives&quot;? I don&apos;t think it&apos;s ever safe to falsely say that something is not visible to the user when in reality it is.

Ugh, yes you&apos;re right, this is now &quot;safe false negatives&quot; – the comment reflects the initial implementation.

The flag was inverted – in the former version of the patch the value was called &quot;IsModifying&quot;, which meant !IsVisuallyIdle – and as such we would sometimes produce safe false positives.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220178</attachid>
            <date>2013-12-31 23:06:02 -0800</date>
            <delta_ts>2013-12-31 23:45:10 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>126356.1.patch</filename>
            <type>text/plain</type>
            <size>8836</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTE4NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDEzLTEyLTMxICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9wYWdhdGUg
V2luZG93U2VydmVyIG1vZGlmaWNhdGlvbnMgc3RhdGUgdG8gV2ViUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MzU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB3aWxsIGJlIG5lY2Vz
c2FyeSB0byBtb3ZlIGNvbnRyb2wgb2YgcHJvY2VzcyBzdXBwcmVzc2lvbiB0byB0aGUgV2ViUHJv
Y2Vzcy4KKyAgICAgICAgSXNNb2RpZnlpbmcgaW1wbGllcyB0aGUgcHJvY2VzcyBpcyBwYWludGlu
ZywgYW5kIHRoYXQgdGhvc2UgcmVjdHMgYXJlIGFjdHVhbGx5CisgICAgICAgIGJlaW5nIGNvbXBv
c2l0ZWQgKGFyZSB1bm9jY2x1ZGVkKS4gU3RhdGUgaXMgcHJvdmlkZWQgb24gYSBwZXIgV2luZG93
U2VydmVyCisgICAgICAgIGNvbm5lY3Rpb24gYmFzaXMsIGFuZCBhcyBzdWNoIG1heSBwcm9kdWNl
IChzYWZlKSBmYWxzZSBwb3NpdGl2ZXMuCisKKyAgICAgICAgKiBTaGFyZWQvVmlld1N0YXRlLmg6
CisgICAgICAgICAgICAtIEFkZGVkIElzTW9kaWZ5aW5nLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJDb250ZXh0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OndpbmRvd01vZGlmaWNh
dGlvbnNTdGF0ZSk6CisgICAgICAgICAgICAtIEFkZGVkIGVudW0sIG1ldGhvZCBkZWNsYXJhaW9u
cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVWaWV3U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnZpZXdTdGF0ZURpZENoYW5nZSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICAgICAtIEFkZGVkIG1ldGhvZCBkZWNsYXJhaW9uLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6d2luZG93TW9kaWZpY2F0aW9uc1N0YXRlQ2hhbmdlZCk6CisgICAgICAg
ICAgICAtIHByb3BhZ2F0ZSBtb2RpZmljYXRpb25zIHN0YXRlIGNoYW5nZSB0byBXZWJQcm9jZXNz
UHJveHkuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OndpbmRvd01vZGlmaWNhdGlvbnNT
dGF0ZSk6CisgICAgICAgICAgICAtIGFjY2Vzc29yLgorICAgICAgICAoV2ViS2l0OjphcHBsaWNh
dGlvbk9jY2x1c2lvblN0YXRlQ2hhbmdlZCk6CisgICAgICAgICAgICAtIHByb3BhZ2F0ZSBtb2Rp
ZmljYXRpb25zIHN0YXRlIGNoYW5nZSB0byBXZWJDb250ZXh0LgorICAgICAgICAoV2ViS2l0Ojph
cHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkKToKKyAgICAgICAgICAgIC0gcGFz
cyBmbGFnIHRvIGluZGljYXRlIG1vZGlmaWNhdGlvbnMgc3RhdGUgY2hhbmdlZC4KKyAgICAgICAg
KFdlYktpdDo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCk6CisgICAgICAg
ICAgICAtIHBhc3MgZmxhZyB0byBpbmRpY2F0ZSBtb2RpZmljYXRpb25zIHN0YXRlIGNoYW5nZWQu
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2luZG93TW9kaWZpY2F0aW9uc1N0YXRlQ2hhbmdl
ZCk6CisgICAgICAgICAgICAtIHByb3BhZ2F0ZSBtb2RpZmljYXRpb25zIHN0YXRlIGNoYW5nZSB0
byBXZWJQYWdlUHJveHkuCisKIDIwMTMtMTItMzEgIEJyZW5kYW4gTG9uZyAgPGIubG9uZ0BjYWJs
ZWxhYnMuY29tPgogCiAgICAgICAgIFtHdGtdIFdlYktpdFdlYkluc3BlY3RvciBoYXMgYnVpbGQg
d2FybmluZ3MgZHVlIHRvIHVuaW5pdGlhbGl6ZWQgZGlkQ2hhbmdlQXR0YWNoZWRXaWR0aCBtZW1i
ZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaWV3U3RhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVmlld1N0YXRlLmgJKHJldmlzaW9uIDE2MTEwNykKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaWV3U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzUs
MTMgKzM1LDE0IEBAIHN0cnVjdCBWaWV3U3RhdGUgewogICAgICAgICBJc1Zpc2libGUgPSAxIDw8
IDIsCiAgICAgICAgIElzSW5XaW5kb3cgPSAxIDw8IDMsCiAgICAgICAgIFdpbmRvd0lzVmlzaWJs
ZSA9IDEgPDwgNCwKLSAgICAgICAgSXNMYXllcldpbmRvd1NlcnZlckhvc3RlZCA9IDEgPDwgNQor
ICAgICAgICBJc01vZGlmeWluZyA9IDEgPDwgNSwKKyAgICAgICAgSXNMYXllcldpbmRvd1NlcnZl
ckhvc3RlZCA9IDEgPDwgNgogICAgIH07CiAKICAgICB0eXBlZGVmIHVuc2lnbmVkIEZsYWdzOwog
CiAgICAgc3RhdGljIGNvbnN0IEZsYWdzIE5vRmxhZ3MgPSAwOwotICAgIHN0YXRpYyBjb25zdCBG
bGFncyBBbGxGbGFncyA9IFdpbmRvd0lzQWN0aXZlIHwgSXNGb2N1c2VkIHwgSXNWaXNpYmxlIHwg
SXNJbldpbmRvdyB8IFdpbmRvd0lzVmlzaWJsZSB8IElzTGF5ZXJXaW5kb3dTZXJ2ZXJIb3N0ZWQ7
CisgICAgc3RhdGljIGNvbnN0IEZsYWdzIEFsbEZsYWdzID0gV2luZG93SXNBY3RpdmUgfCBJc0Zv
Y3VzZWQgfCBJc1Zpc2libGUgfCBJc0luV2luZG93IHwgV2luZG93SXNWaXNpYmxlIHwgSXNNb2Rp
ZnlpbmcgfCBJc0xheWVyV2luZG93U2VydmVySG9zdGVkOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHJldmlzaW9u
IDE2MTEwNykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTY0LDYgKzY0LDExIEBACiAjaWYgUExBVEZPUk0oTUFDKQogT0JKQ19DTEFT
UyBOU09iamVjdDsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CisKK2VudW0gV2luZG93TW9kaWZpY2F0
aW9uc1N0YXRlIHsKKyAgICBXaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwKKyAgICBXaW5kb3dN
b2RpZmljYXRpb25zU3RhcnRlZAorfTsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTI5MSw2ICsyOTYsMTMgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlUHJvY2Vzc1N1cHByZXNz
aW9uU3RhdGVPZkNoaWxkUHJvY2Vzc2VzKCk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQykg
JiYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDkwCisgICAgdm9pZCB3aW5kb3dNb2RpZmljYXRpb25zU3RhdGVDaGFuZ2VkKCk7CisgICAgc3Rh
dGljIFdpbmRvd01vZGlmaWNhdGlvbnNTdGF0ZSB3aW5kb3dNb2RpZmljYXRpb25zU3RhdGUoKTsK
KyNlbHNlCisgICAgc3RhdGljIFdpbmRvd01vZGlmaWNhdGlvbnNTdGF0ZSB3aW5kb3dNb2RpZmlj
YXRpb25zU3RhdGUoKSB7IHJldHVybiBXaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZDsgfQorI2Vu
ZGlmCisKICAgICBzdGF0aWMgdm9pZCB3aWxsU3RhcnRVc2luZ1ByaXZhdGVCcm93c2luZygpOwog
ICAgIHN0YXRpYyB2b2lkIHdpbGxTdG9wVXNpbmdQcml2YXRlQnJvd3NpbmcoKTsKIApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE2MTEw
NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05MzEsNiArOTMxLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVZpZXdT
dGF0ZShWaWV3UwogICAgICAgICBtX3ZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzVmlzaWJsZTsK
ICAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdyAmJiBtX3BhZ2VD
bGllbnQuaXNWaWV3SW5XaW5kb3coKSkKICAgICAgICAgbV92aWV3U3RhdGUgfD0gVmlld1N0YXRl
OjpJc0luV2luZG93OworICAgIGlmIChmbGFnc1RvVXBkYXRlICYgVmlld1N0YXRlOjpJc01vZGlm
eWluZyAmJiBtX3ZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlICYmIFdlYkNvbnRleHQ6
OndpbmRvd01vZGlmaWNhdGlvbnNTdGF0ZSgpICE9IFdpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVk
KQorICAgICAgICBtX3ZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzTW9kaWZ5aW5nOwogI2lmIEhB
VkUoTEFZRVJfSE9TVElOR19JTl9XSU5ET1dfU0VSVkVSKQogICAgIGlmIChmbGFnc1RvVXBkYXRl
ICYgVmlld1N0YXRlOjpJc0xheWVyV2luZG93U2VydmVySG9zdGVkICYmIG1fcGFnZUNsaWVudC5p
c0xheWVyV2luZG93U2VydmVySG9zdGVkKCkpCiAgICAgICAgIG1fdmlld1N0YXRlIHw9IFZpZXdT
dGF0ZTo6SXNMYXllcldpbmRvd1NlcnZlckhvc3RlZDsKQEAgLTk0NSw2ICs5NDcsOSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6dmlld1N0YXRlRGlkQ2hhbmdlKFZpCiAgICAgLy8gSWYgdGhlIGluLXdp
bmRvdyBzdGF0ZSBtYXkgaGF2ZSBjaGFuZ2VkLCB0aGVuIHNvIG1heSB0aGUgbGF5ZXIgaG9zdGlu
Zy4KICAgICBpZiAobWF5SGF2ZUNoYW5nZWQgJiBWaWV3U3RhdGU6OklzSW5XaW5kb3cpCiAgICAg
ICAgIG1heUhhdmVDaGFuZ2VkIHw9IFZpZXdTdGF0ZTo6SXNMYXllcldpbmRvd1NlcnZlckhvc3Rl
ZDsKKyAgICAvLyBJZiB0aGUgdmlzaWJpbGl0eSBzdGF0ZSBtYXkgaGF2ZSBjaGFuZ2VkLCB0aGVu
IHNvIG1heSB0aGUgbW9kaWZ5aW5nLgorICAgIGlmIChtYXlIYXZlQ2hhbmdlZCAmIFZpZXdTdGF0
ZTo6SXNWaXNpYmxlKQorICAgICAgICBtYXlIYXZlQ2hhbmdlZCB8PSBWaWV3U3RhdGU6OklzTW9k
aWZ5aW5nOwogCiAgICAgLy8gUmVjb3JkIHRoZSBwcmlvciB2aWV3IHN0YXRlLCB1cGRhdGUgdGhl
IGZsYWdzIHRoYXQgbWF5IGhhdmUgY2hhbmdlZCwKICAgICAvLyBhbmQgY2hlY2sgd2hpY2ggZmxh
Z3MgaGF2ZSBhY3R1YWxseSBjaGFuZ2VkLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMTYxMTA3KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1
LDEwIEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gYXBpT2JqZWN0QnlDb252
ZXJ0aW5nVG9IYW5kbGVzKEFQSTo6T2JqZWN0Kik7CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAg
dm9pZCB3aW5kb3dNb2RpZmljYXRpb25zU3RhdGVDaGFuZ2VkKCk7CisjZW5kaWYKKwogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBXZWJQcm9jZXNzUHJveHkoV2ViQ29udGV4dCYpOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCShyZXZpc2lv
biAxNjExMDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTExOCwxMiArMTE4LDI3IEBAIHN0YXRpYyB2b2lkIHVwZGF0
ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXQKIH0KIAogI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAotc3RhdGljIHZvaWQgYXBwbGljYXRp
b25PY2NsdXNpb25TdGF0ZUNoYW5nZWQoKQorCit2b2lkIFdlYkNvbnRleHQ6OndpbmRvd01vZGlm
aWNhdGlvbnNTdGF0ZUNoYW5nZWQoKQoreworICAgIHNpemVfdCBwcm9jZXNzQ291bnQgPSBtX3By
b2Nlc3Nlcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9jZXNzQ291bnQ7
ICsraSkKKyAgICAgICAgbV9wcm9jZXNzZXNbaV0tPndpbmRvd01vZGlmaWNhdGlvbnNTdGF0ZUNo
YW5nZWQoKTsKK30KKworV2luZG93TW9kaWZpY2F0aW9uc1N0YXRlIFdlYkNvbnRleHQ6OndpbmRv
d01vZGlmaWNhdGlvbnNTdGF0ZSgpCit7CisgICAgcmV0dXJuIHNfYXBwbGljYXRpb25XaW5kb3dN
b2RpZmljYXRpb25zSGF2ZVN0b3BwZWQgPyBXaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCA6IFdp
bmRvd01vZGlmaWNhdGlvbnNTdGFydGVkOworfQorCitzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbk9j
Y2x1c2lvblN0YXRlQ2hhbmdlZChib29sIHdpbmRvd01vZGlmaWNhdGlvbnNTdGF0ZUNoYW5nZWQg
PSBmYWxzZSkKIHsKICAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IFdl
YkNvbnRleHQ6OmFsbENvbnRleHRzKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0g
Y29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAoY29udGV4dHNb
aV0tPnByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNvbnRleHRzW2ld
LT51cGRhdGVQcm9jZXNzU3VwcHJlc3Npb25TdGF0ZU9mQ2hpbGRQcm9jZXNzZXMoKTsKKyAgICBm
b3IgKGF1dG8gKmNvbnRleHQgOiBjb250ZXh0cykgeworICAgICAgICBpZiAod2luZG93TW9kaWZp
Y2F0aW9uc1N0YXRlQ2hhbmdlZCkKKyAgICAgICAgICAgIGNvbnRleHQtPndpbmRvd01vZGlmaWNh
dGlvbnNTdGF0ZUNoYW5nZWQoKTsKKyAgICAgICAgaWYgKGNvbnRleHQtPnByb2Nlc3NTdXBwcmVz
c2lvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNvbnRleHQtPnVwZGF0ZVByb2Nlc3NTdXBwcmVz
c2lvblN0YXRlT2ZDaGlsZFByb2Nlc3NlcygpOwogICAgIH0KIAogICAgIGlmIChzX3Byb2Nlc3NT
dXBwcmVzc2lvbkVuYWJsZWRGb3JBbGxDb250ZXh0cykKQEAgLTE1MSw3ICsxNjYsNyBAQCBzdGF0
aWMgdm9pZCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvCiAgICAgaWYgKCFzX2FwcGxpY2F0
aW9uV2luZG93TW9kaWZpY2F0aW9uc0hhdmVTdG9wcGVkKQogICAgICAgICByZXR1cm47CiAgICAg
c19hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBlZCA9IGZhbHNlOwotICAg
IGFwcGxpY2F0aW9uT2NjbHVzaW9uU3RhdGVDaGFuZ2VkKCk7CisgICAgYXBwbGljYXRpb25PY2Ns
dXNpb25TdGF0ZUNoYW5nZWQodHJ1ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uV2lu
ZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCos
IHVpbnQzMl90KQpAQCAtMTU5LDcgKzE3NCw3IEBAIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uV2lu
ZG93TW9kaWZpY2F0aW8KICAgICBpZiAoc19hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNI
YXZlU3RvcHBlZCkKICAgICAgICAgcmV0dXJuOwogICAgIHNfYXBwbGljYXRpb25XaW5kb3dNb2Rp
ZmljYXRpb25zSGF2ZVN0b3BwZWQgPSB0cnVlOwotICAgIGFwcGxpY2F0aW9uT2NjbHVzaW9uU3Rh
dGVDaGFuZ2VkKCk7CisgICAgYXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZUNoYW5nZWQodHJ1ZSk7
CiB9CiAKIHN0cnVjdCBPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyIHsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tCShy
ZXZpc2lvbiAxNjExMDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlByb2Nl
c3NQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtODIsNCArODIsMTEgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnVwZGF0ZVByb2Nlc3NTdXBwcgogICAgIGNvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChtX3Byb2Nl
c3NTdXBwcmVzc2lvbkVuYWJsZWQpLCAwKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUHJveHk6Ondp
bmRvd01vZGlmaWNhdGlvbnNTdGF0ZUNoYW5nZWQoKQoreworICAgIGZvciAoV2ViUGFnZVByb3h5
TWFwOjppdGVyYXRvciBpdCA9IG1fcGFnZU1hcC5iZWdpbigpLCBlbmQgPSBtX3BhZ2VNYXAuZW5k
KCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPnZhbHVlLT52aWV3U3RhdGVEaWRDaGFu
Z2UoVmlld1N0YXRlOjpJc01vZGlmeWluZyk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Cg==
</data>
<flag name="commit-queue"
          id="243861"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220182</attachid>
            <date>2013-12-31 23:45:10 -0800</date>
            <delta_ts>2014-01-02 17:22:37 -0800</delta_ts>
            <desc>GTK fix</desc>
            <filename>126356.2.patch</filename>
            <type>text/plain</type>
            <size>8919</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTE4NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDEzLTEyLTMxICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9wYWdhdGUg
V2luZG93U2VydmVyIG1vZGlmaWNhdGlvbnMgc3RhdGUgdG8gV2ViUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MzU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB3aWxsIGJlIG5lY2Vz
c2FyeSB0byBtb3ZlIGNvbnRyb2wgb2YgcHJvY2VzcyBzdXBwcmVzc2lvbiB0byB0aGUgV2ViUHJv
Y2Vzcy4KKyAgICAgICAgSXNNb2RpZnlpbmcgaW1wbGllcyB0aGUgcHJvY2VzcyBpcyBwYWludGlu
ZywgYW5kIHRoYXQgdGhvc2UgcmVjdHMgYXJlIGFjdHVhbGx5CisgICAgICAgIGJlaW5nIGNvbXBv
c2l0ZWQgKGFyZSB1bm9jY2x1ZGVkKS4gU3RhdGUgaXMgcHJvdmlkZWQgb24gYSBwZXIgV2luZG93
U2VydmVyCisgICAgICAgIGNvbm5lY3Rpb24gYmFzaXMsIGFuZCBhcyBzdWNoIG1heSBwcm9kdWNl
IChzYWZlKSBmYWxzZSBwb3NpdGl2ZXMuCisKKyAgICAgICAgKiBTaGFyZWQvVmlld1N0YXRlLmg6
CisgICAgICAgICAgICAtIEFkZGVkIElzTW9kaWZ5aW5nLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJDb250ZXh0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OndpbmRvd01vZGlmaWNh
dGlvbnNTdGF0ZSk6CisgICAgICAgICAgICAtIEFkZGVkIGVudW0sIG1ldGhvZCBkZWNsYXJhaW9u
cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVWaWV3U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnZpZXdTdGF0ZURpZENoYW5nZSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICAgICAtIEFkZGVkIG1ldGhvZCBkZWNsYXJhaW9uLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6d2luZG93TW9kaWZpY2F0aW9uc1N0YXRlQ2hhbmdlZCk6CisgICAgICAg
ICAgICAtIHByb3BhZ2F0ZSBtb2RpZmljYXRpb25zIHN0YXRlIGNoYW5nZSB0byBXZWJQcm9jZXNz
UHJveHkuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OndpbmRvd01vZGlmaWNhdGlvbnNT
dGF0ZSk6CisgICAgICAgICAgICAtIGFjY2Vzc29yLgorICAgICAgICAoV2ViS2l0OjphcHBsaWNh
dGlvbk9jY2x1c2lvblN0YXRlQ2hhbmdlZCk6CisgICAgICAgICAgICAtIHByb3BhZ2F0ZSBtb2Rp
ZmljYXRpb25zIHN0YXRlIGNoYW5nZSB0byBXZWJDb250ZXh0LgorICAgICAgICAoV2ViS2l0Ojph
cHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkKToKKyAgICAgICAgICAgIC0gcGFz
cyBmbGFnIHRvIGluZGljYXRlIG1vZGlmaWNhdGlvbnMgc3RhdGUgY2hhbmdlZC4KKyAgICAgICAg
KFdlYktpdDo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCk6CisgICAgICAg
ICAgICAtIHBhc3MgZmxhZyB0byBpbmRpY2F0ZSBtb2RpZmljYXRpb25zIHN0YXRlIGNoYW5nZWQu
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2luZG93TW9kaWZpY2F0aW9uc1N0YXRlQ2hhbmdl
ZCk6CisgICAgICAgICAgICAtIHByb3BhZ2F0ZSBtb2RpZmljYXRpb25zIHN0YXRlIGNoYW5nZSB0
byBXZWJQYWdlUHJveHkuCisKIDIwMTMtMTItMzEgIEJyZW5kYW4gTG9uZyAgPGIubG9uZ0BjYWJs
ZWxhYnMuY29tPgogCiAgICAgICAgIFtHdGtdIFdlYktpdFdlYkluc3BlY3RvciBoYXMgYnVpbGQg
d2FybmluZ3MgZHVlIHRvIHVuaW5pdGlhbGl6ZWQgZGlkQ2hhbmdlQXR0YWNoZWRXaWR0aCBtZW1i
ZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaWV3U3RhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVmlld1N0YXRlLmgJKHJldmlzaW9uIDE2MTEwNykKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaWV3U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzUs
MTMgKzM1LDE0IEBAIHN0cnVjdCBWaWV3U3RhdGUgewogICAgICAgICBJc1Zpc2libGUgPSAxIDw8
IDIsCiAgICAgICAgIElzSW5XaW5kb3cgPSAxIDw8IDMsCiAgICAgICAgIFdpbmRvd0lzVmlzaWJs
ZSA9IDEgPDwgNCwKLSAgICAgICAgSXNMYXllcldpbmRvd1NlcnZlckhvc3RlZCA9IDEgPDwgNQor
ICAgICAgICBJc01vZGlmeWluZyA9IDEgPDwgNSwKKyAgICAgICAgSXNMYXllcldpbmRvd1NlcnZl
ckhvc3RlZCA9IDEgPDwgNgogICAgIH07CiAKICAgICB0eXBlZGVmIHVuc2lnbmVkIEZsYWdzOwog
CiAgICAgc3RhdGljIGNvbnN0IEZsYWdzIE5vRmxhZ3MgPSAwOwotICAgIHN0YXRpYyBjb25zdCBG
bGFncyBBbGxGbGFncyA9IFdpbmRvd0lzQWN0aXZlIHwgSXNGb2N1c2VkIHwgSXNWaXNpYmxlIHwg
SXNJbldpbmRvdyB8IFdpbmRvd0lzVmlzaWJsZSB8IElzTGF5ZXJXaW5kb3dTZXJ2ZXJIb3N0ZWQ7
CisgICAgc3RhdGljIGNvbnN0IEZsYWdzIEFsbEZsYWdzID0gV2luZG93SXNBY3RpdmUgfCBJc0Zv
Y3VzZWQgfCBJc1Zpc2libGUgfCBJc0luV2luZG93IHwgV2luZG93SXNWaXNpYmxlIHwgSXNNb2Rp
ZnlpbmcgfCBJc0xheWVyV2luZG93U2VydmVySG9zdGVkOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHJldmlzaW9u
IDE2MTEwNykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTc4LDYgKzc4LDExIEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOwogICAgIAogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8V0tEaWN0aW9uYXJ5UmVmPiBE
aWN0aW9uYXJ5Q2FsbGJhY2s7CiAKK2VudW0gV2luZG93TW9kaWZpY2F0aW9uc1N0YXRlIHsKKyAg
ICBXaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwKKyAgICBXaW5kb3dNb2RpZmljYXRpb25zU3Rh
cnRlZAorfTsKKwogI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCiBjbGFzcyBXZWJOZXR3b3JrSW5m
b01hbmFnZXJQcm94eTsKICNlbmRpZgpAQCAtMjkxLDYgKzI5NiwxMyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1cGRhdGVQcm9jZXNzU3VwcHJlc3Npb25TdGF0ZU9mQ2hpbGRQcm9jZXNzZXMoKTsKICNl
bmRpZgogCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICB2b2lkIHdpbmRvd01vZGlmaWNhdGlv
bnNTdGF0ZUNoYW5nZWQoKTsKKyAgICBzdGF0aWMgV2luZG93TW9kaWZpY2F0aW9uc1N0YXRlIHdp
bmRvd01vZGlmaWNhdGlvbnNTdGF0ZSgpOworI2Vsc2UKKyAgICBzdGF0aWMgV2luZG93TW9kaWZp
Y2F0aW9uc1N0YXRlIHdpbmRvd01vZGlmaWNhdGlvbnNTdGF0ZSgpIHsgcmV0dXJuIFdpbmRvd01v
ZGlmaWNhdGlvbnNTdGFydGVkOyB9CisjZW5kaWYKKwogICAgIHN0YXRpYyB2b2lkIHdpbGxTdGFy
dFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7CiAgICAgc3RhdGljIHZvaWQgd2lsbFN0b3BVc2luZ1By
aXZhdGVCcm93c2luZygpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkocmV2aXNpb24gMTYxMTA3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzMSw2ICs5MzEsOCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6dXBkYXRlVmlld1N0YXRlKFZpZXdTCiAgICAgICAgIG1fdmlld1N0YXRl
IHw9IFZpZXdTdGF0ZTo6SXNWaXNpYmxlOwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYgVmlld1N0
YXRlOjpJc0luV2luZG93ICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdJbldpbmRvdygpKQogICAgICAg
ICBtX3ZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzSW5XaW5kb3c7CisgICAgaWYgKGZsYWdzVG9V
cGRhdGUgJiBWaWV3U3RhdGU6OklzTW9kaWZ5aW5nICYmIG1fdmlld1N0YXRlICYgVmlld1N0YXRl
OjpJc1Zpc2libGUgJiYgV2ViQ29udGV4dDo6d2luZG93TW9kaWZpY2F0aW9uc1N0YXRlKCkgIT0g
V2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQpCisgICAgICAgIG1fdmlld1N0YXRlIHw9IFZpZXdT
dGF0ZTo6SXNNb2RpZnlpbmc7CiAjaWYgSEFWRShMQVlFUl9IT1NUSU5HX0lOX1dJTkRPV19TRVJW
RVIpCiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBWaWV3U3RhdGU6OklzTGF5ZXJXaW5kb3dTZXJ2
ZXJIb3N0ZWQgJiYgbV9wYWdlQ2xpZW50LmlzTGF5ZXJXaW5kb3dTZXJ2ZXJIb3N0ZWQoKSkKICAg
ICAgICAgbV92aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpJc0xheWVyV2luZG93U2VydmVySG9zdGVk
OwpAQCAtOTQ1LDYgKzk0Nyw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3U3RhdGVEaWRDaGFu
Z2UoVmkKICAgICAvLyBJZiB0aGUgaW4td2luZG93IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRo
ZW4gc28gbWF5IHRoZSBsYXllciBob3N0aW5nLgogICAgIGlmIChtYXlIYXZlQ2hhbmdlZCAmIFZp
ZXdTdGF0ZTo6SXNJbldpbmRvdykKICAgICAgICAgbWF5SGF2ZUNoYW5nZWQgfD0gVmlld1N0YXRl
OjpJc0xheWVyV2luZG93U2VydmVySG9zdGVkOworICAgIC8vIElmIHRoZSB2aXNpYmlsaXR5IHN0
YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRoZW4gc28gbWF5IHRoZSBtb2RpZnlpbmcuCisgICAgaWYg
KG1heUhhdmVDaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUpCisgICAgICAgIG1heUhhdmVD
aGFuZ2VkIHw9IFZpZXdTdGF0ZTo6SXNNb2RpZnlpbmc7CiAKICAgICAvLyBSZWNvcmQgdGhlIHBy
aW9yIHZpZXcgc3RhdGUsIHVwZGF0ZSB0aGUgZmxhZ3MgdGhhdCBtYXkgaGF2ZSBjaGFuZ2VkLAog
ICAgIC8vIGFuZCBjaGVjayB3aGljaCBmbGFncyBoYXZlIGFjdHVhbGx5IGNoYW5nZWQuCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAx
NjExMDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsMTAgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEFQ
STo6T2JqZWN0PiBhcGlPYmplY3RCeUNvbnZlcnRpbmdUb0hhbmRsZXMoQVBJOjpPYmplY3QqKTsK
IAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lkIHdpbmRvd01vZGlmaWNhdGlvbnNTdGF0ZUNo
YW5nZWQoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlByb2Nlc3NQcm94
eShXZWJDb250ZXh0Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYkNvbnRleHRNYWMubW0JKHJldmlzaW9uIDE2MTEwNykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE4LDEyICsx
MTgsMjcgQEAgc3RhdGljIHZvaWQgdXBkYXRlUHJvY2Vzc1N1cHByZXNzaW9uU3RhdAogfQogCiAj
aWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDkwCi1zdGF0aWMgdm9pZCBhcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlQ2hhbmdlZCgpCisKK3Zv
aWQgV2ViQ29udGV4dDo6d2luZG93TW9kaWZpY2F0aW9uc1N0YXRlQ2hhbmdlZCgpCit7CisgICAg
c2l6ZV90IHByb2Nlc3NDb3VudCA9IG1fcHJvY2Vzc2VzLnNpemUoKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHByb2Nlc3NDb3VudDsgKytpKQorICAgICAgICBtX3Byb2Nlc3Nlc1tpXS0+
d2luZG93TW9kaWZpY2F0aW9uc1N0YXRlQ2hhbmdlZCgpOworfQorCitXaW5kb3dNb2RpZmljYXRp
b25zU3RhdGUgV2ViQ29udGV4dDo6d2luZG93TW9kaWZpY2F0aW9uc1N0YXRlKCkKK3sKKyAgICBy
ZXR1cm4gc19hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBlZCA/IFdpbmRv
d01vZGlmaWNhdGlvbnNTdG9wcGVkIDogV2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQ7Cit9CisK
K3N0YXRpYyB2b2lkIGFwcGxpY2F0aW9uT2NjbHVzaW9uU3RhdGVDaGFuZ2VkKGJvb2wgd2luZG93
TW9kaWZpY2F0aW9uc1N0YXRlQ2hhbmdlZCA9IGZhbHNlKQogewogICAgIGNvbnN0IFZlY3RvcjxX
ZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMoKTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsgKytp
KSB7Ci0gICAgICAgIGlmIChjb250ZXh0c1tpXS0+cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgp
KQotICAgICAgICAgICAgY29udGV4dHNbaV0tPnVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRl
T2ZDaGlsZFByb2Nlc3NlcygpOworICAgIGZvciAoYXV0byAqY29udGV4dCA6IGNvbnRleHRzKSB7
CisgICAgICAgIGlmICh3aW5kb3dNb2RpZmljYXRpb25zU3RhdGVDaGFuZ2VkKQorICAgICAgICAg
ICAgY29udGV4dC0+d2luZG93TW9kaWZpY2F0aW9uc1N0YXRlQ2hhbmdlZCgpOworICAgICAgICBp
ZiAoY29udGV4dC0+cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgY29u
dGV4dC0+dXBkYXRlUHJvY2Vzc1N1cHByZXNzaW9uU3RhdGVPZkNoaWxkUHJvY2Vzc2VzKCk7CiAg
ICAgfQogCiAgICAgaWYgKHNfcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRz
KQpAQCAtMTUxLDcgKzE2Niw3IEBAIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uV2luZG93TW9kaWZp
Y2F0aW8KICAgICBpZiAoIXNfYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0b3Bw
ZWQpCiAgICAgICAgIHJldHVybjsKICAgICBzX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9u
c0hhdmVTdG9wcGVkID0gZmFsc2U7Ci0gICAgYXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZUNoYW5n
ZWQoKTsKKyAgICBhcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlQ2hhbmdlZCh0cnVlKTsKIH0KIAog
c3RhdGljIHZvaWQgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCh1aW50MzJf
dCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCkBAIC0xNTksNyArMTc0LDcgQEAg
c3RhdGljIHZvaWQgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpbwogICAgIGlmIChzX2FwcGxp
Y2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hhdmVTdG9wcGVkKQogICAgICAgICByZXR1cm47CiAg
ICAgc19hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBlZCA9IHRydWU7Ci0g
ICAgYXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZUNoYW5nZWQoKTsKKyAgICBhcHBsaWNhdGlvbk9j
Y2x1c2lvblN0YXRlQ2hhbmdlZCh0cnVlKTsKIH0KIAogc3RydWN0IE9jY2x1c2lvbk5vdGlmaWNh
dGlvbkhhbmRsZXIgewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQcm9j
ZXNzUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJQcm9jZXNzUHJveHlNYWMubW0JKHJldmlzaW9uIDE2MTEwNykKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC04Miw0ICs4MiwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlUHJvY2Vzc1N1cHBy
CiAgICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRQcm9jZXNz
U3VwcHJlc3Npb25FbmFibGVkKG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCksIDApOwogfQog
Cit2b2lkIFdlYlByb2Nlc3NQcm94eTo6d2luZG93TW9kaWZpY2F0aW9uc1N0YXRlQ2hhbmdlZCgp
Cit7CisgICAgZm9yIChXZWJQYWdlUHJveHlNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wYWdlTWFwLmJl
Z2luKCksIGVuZCA9IG1fcGFnZU1hcC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBp
dC0+dmFsdWUtPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OklzTW9kaWZ5aW5nKTsKK30K
KworCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="243864"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220269</attachid>
            <date>2014-01-02 17:22:37 -0800</date>
            <delta_ts>2014-01-02 17:53:05 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>126356.3.patch</filename>
            <type>text/plain</type>
            <size>27991</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTIyOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE0LTAxLTAyICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9wYWdhdGUg
V2luZG93U2VydmVyIG1vZGlmaWNhdGlvbnMgc3RhdGUgdG8gV2ViUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MzU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB3aWxsIGJlIG5lY2Vz
c2FyeSB0byBtb3ZlIGNvbnRyb2wgb2YgcHJvY2VzcyBzdXBwcmVzc2lvbiB0byB0aGUgV2ViUHJv
Y2Vzcy4KKyAgICAgICAgSXNNb2RpZnlpbmcgaW1wbGllcyB0aGUgcHJvY2VzcyBpcyBwYWludGlu
ZywgYW5kIHRoYXQgdGhvc2UgcmVjdHMgYXJlIGFjdHVhbGx5CisgICAgICAgIGJlaW5nIGNvbXBv
c2l0ZWQgKGFyZSB1bm9jY2x1ZGVkKS4gU3RhdGUgaXMgcHJvdmlkZWQgb24gYSBwZXIgV2luZG93
U2VydmVyCisgICAgICAgIGNvbm5lY3Rpb24gYmFzaXMsIGFuZCBhcyBzdWNoIG1heSBwcm9kdWNl
IChzYWZlKSBmYWxzZSBwb3NpdGl2ZXMuCisKKyAgICAgICAgKiBTaGFyZWQvVmlld1N0YXRlLmg6
CisgICAgICAgICAgICAtIEFkZGVkIElzTW9kaWZ5aW5nLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJDb250ZXh0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OndpbmRvd01vZGlmaWNh
dGlvbnNTdGF0ZSk6CisgICAgICAgICAgICAtIEFkZGVkIGVudW0sIG1ldGhvZCBkZWNsYXJhaW9u
cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVWaWV3U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnZpZXdTdGF0ZURpZENoYW5nZSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICAgICAtIEFkZGVkIG1ldGhvZCBkZWNsYXJhaW9uLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6d2luZG93TW9kaWZpY2F0aW9uc1N0YXRlQ2hhbmdlZCk6CisgICAgICAg
ICAgICAtIHByb3BhZ2F0ZSBtb2RpZmljYXRpb25zIHN0YXRlIGNoYW5nZSB0byBXZWJQcm9jZXNz
UHJveHkuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OndpbmRvd01vZGlmaWNhdGlvbnNT
dGF0ZSk6CisgICAgICAgICAgICAtIGFjY2Vzc29yLgorICAgICAgICAoV2ViS2l0OjphcHBsaWNh
dGlvbk9jY2x1c2lvblN0YXRlQ2hhbmdlZCk6CisgICAgICAgICAgICAtIHByb3BhZ2F0ZSBtb2Rp
ZmljYXRpb25zIHN0YXRlIGNoYW5nZSB0byBXZWJDb250ZXh0LgorICAgICAgICAoV2ViS2l0Ojph
cHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkKToKKyAgICAgICAgICAgIC0gcGFz
cyBmbGFnIHRvIGluZGljYXRlIG1vZGlmaWNhdGlvbnMgc3RhdGUgY2hhbmdlZC4KKyAgICAgICAg
KFdlYktpdDo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCk6CisgICAgICAg
ICAgICAtIHBhc3MgZmxhZyB0byBpbmRpY2F0ZSBtb2RpZmljYXRpb25zIHN0YXRlIGNoYW5nZWQu
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2luZG93TW9kaWZpY2F0aW9uc1N0YXRlQ2hhbmdl
ZCk6CisgICAgICAgICAgICAtIHByb3BhZ2F0ZSBtb2RpZmljYXRpb25zIHN0YXRlIGNoYW5nZSB0
byBXZWJQYWdlUHJveHkuCisKIDIwMTQtMDEtMDIgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFj
bG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBXaW5kb3dJc1Zpc2libGUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaWV3U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvVmlld1N0YXRlLmgJKHJldmlzaW9uIDE2MTIyOCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9WaWV3U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTMgKzM0LDE0
IEBAIHN0cnVjdCBWaWV3U3RhdGUgewogICAgICAgICBJc0ZvY3VzZWQgPSAxIDw8IDEsCiAgICAg
ICAgIElzVmlzaWJsZSA9IDEgPDwgMiwKICAgICAgICAgSXNJbldpbmRvdyA9IDEgPDwgMywKLSAg
ICAgICAgSXNMYXllcldpbmRvd1NlcnZlckhvc3RlZCA9IDEgPDwgNAorICAgICAgICBJc1Zpc3Vh
bGx5SWRsZSA9IDEgPDwgNCwKKyAgICAgICAgSXNMYXllcldpbmRvd1NlcnZlckhvc3RlZCA9IDEg
PDwgNSwKICAgICB9OwogCiAgICAgdHlwZWRlZiB1bnNpZ25lZCBGbGFnczsKIAogICAgIHN0YXRp
YyBjb25zdCBGbGFncyBOb0ZsYWdzID0gMDsKLSAgICBzdGF0aWMgY29uc3QgRmxhZ3MgQWxsRmxh
Z3MgPSBXaW5kb3dJc0FjdGl2ZSB8IElzRm9jdXNlZCB8IElzVmlzaWJsZSB8IElzSW5XaW5kb3cg
fCBJc0xheWVyV2luZG93U2VydmVySG9zdGVkOworICAgIHN0YXRpYyBjb25zdCBGbGFncyBBbGxG
bGFncyA9IFdpbmRvd0lzQWN0aXZlIHwgSXNGb2N1c2VkIHwgSXNWaXNpYmxlIHwgSXNJbldpbmRv
dyB8IElzTGF5ZXJXaW5kb3dTZXJ2ZXJIb3N0ZWQgfCBJc1Zpc3VhbGx5SWRsZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcAkocmV2aXNpb24gMTYxMjI4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTIsNiArNDUyLDEzIEBAIHZvaWQgV2Vi
Q29udGV4dDo6d2lsbFN0b3BVc2luZ1ByaXZhdGVCcm8KICAgICAgICAgY29udGV4dHNbaV0tPnNl
dEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQoZmFsc2UpOwogfQog
Cit2b2lkIFdlYkNvbnRleHQ6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQor
eworICAgIHNpemVfdCBwcm9jZXNzQ291bnQgPSBtX3Byb2Nlc3Nlcy5zaXplKCk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwcm9jZXNzQ291bnQ7ICsraSkKKyAgICAgICAgbV9wcm9jZXNz
ZXNbaV0tPndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKK30KKwogdm9pZCBX
ZWJDb250ZXh0OjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVk
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKIHsKICAgICBtX2ljb25EYXRhYmFzZS0+c2V0
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAkocmV2aXNpb24gMTYxMjI4KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtODUs
NiArODUsNyBAQCBjbGFzcyBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTsKIHN0cnVjdCBOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKICNlbmRpZgogCisKIGNsYXNzIFdlYkNvbnRl
eHQgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb250ZXh0Piwg
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogICAgICwgcHJpdmF0ZSBQbHVnaW5JbmZvU3RvcmVDbGllbnQKQEAgLTI5MSw2ICsyOTIs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVQcm9jZXNzU3VwcHJlc3Npb25TdGF0ZU9mQ2hp
bGRQcm9jZXNzZXMoKTsKICNlbmRpZgogCisgICAgdm9pZCB3aW5kb3dTZXJ2ZXJDb25uZWN0aW9u
U3RhdGVDaGFuZ2VkKCk7CisKICAgICBzdGF0aWMgdm9pZCB3aWxsU3RhcnRVc2luZ1ByaXZhdGVC
cm93c2luZygpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxTdG9wVXNpbmdQcml2YXRlQnJvd3Npbmco
KTsKIApAQCAtMzE2LDYgKzMxOSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgdW5yZWdp
c3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhjb25zdCBT
dHJpbmcmKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyB2b2lkIHVw
ZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlT2ZHbG9iYWxDaGlsZFByb2Nlc3NlcygpOworI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE2MTIy
OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MSw2ICs4MSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAj
aW5jbHVkZSAiV2ViUHJvdGVjdGlvblNwYWNlLmgiCiAjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmln
aW4uaCIKKyNpbmNsdWRlICJXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9EcmFnQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RyYWdTZXNzaW9uLmg+CkBAIC05MjksNiArOTMwLDggQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnVwZGF0ZVZpZXdTdGF0ZShWaWV3UwogICAgICAgICBtX3ZpZXdTdGF0ZSB8
PSBWaWV3U3RhdGU6OklzVmlzaWJsZTsKICAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIFZpZXdTdGF0
ZTo6SXNJbldpbmRvdyAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3SW5XaW5kb3coKSkKICAgICAgICAg
bV92aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpJc0luV2luZG93OworICAgIGlmIChmbGFnc1RvVXBk
YXRlICYgVmlld1N0YXRlOjpJc1Zpc3VhbGx5SWRsZSAmJiAoV2luZG93U2VydmVyQ29ubmVjdGlv
bjo6c2hhcmVkKCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0b3BwZWQoKSB8
fCAhbV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkpCisgICAgICAgIG1fdmlld1N0
YXRlIHw9IFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGU7CiAjaWYgSEFWRShMQVlFUl9IT1NUSU5H
X0lOX1dJTkRPV19TRVJWRVIpCiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBWaWV3U3RhdGU6Oklz
TGF5ZXJXaW5kb3dTZXJ2ZXJIb3N0ZWQgJiYgbV9wYWdlQ2xpZW50LmlzTGF5ZXJXaW5kb3dTZXJ2
ZXJIb3N0ZWQoKSkKICAgICAgICAgbV92aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpJc0xheWVyV2lu
ZG93U2VydmVySG9zdGVkOwpAQCAtOTQzLDYgKzk0Niw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2
aWV3U3RhdGVEaWRDaGFuZ2UoVmkKICAgICAvLyBJZiB0aGUgaW4td2luZG93IHN0YXRlIG1heSBo
YXZlIGNoYW5nZWQsIHRoZW4gc28gbWF5IHRoZSBsYXllciBob3N0aW5nLgogICAgIGlmIChtYXlI
YXZlQ2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykKICAgICAgICAgbWF5SGF2ZUNoYW5n
ZWQgfD0gVmlld1N0YXRlOjpJc0xheWVyV2luZG93U2VydmVySG9zdGVkOworICAgIC8vIElmIHRo
ZSB2aXNpYmlsaXR5IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRoZW4gc28gbWF5IHRoZSB2aXN1
YWxseSBpZGxlLgorICAgIGlmIChtYXlIYXZlQ2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxl
KQorICAgICAgICBtYXlIYXZlQ2hhbmdlZCB8PSBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlOwog
CiAgICAgLy8gUmVjb3JkIHRoZSBwcmlvciB2aWV3IHN0YXRlLCB1cGRhdGUgdGhlIGZsYWdzIHRo
YXQgbWF5IGhhdmUgY2hhbmdlZCwKICAgICAvLyBhbmQgY2hlY2sgd2hpY2ggZmxhZ3MgaGF2ZSBh
Y3R1YWxseSBjaGFuZ2VkLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDE2MTIyOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzgsNiArNjM4LDEx
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWxlYXNlUGFnZUNhY2hlKCkKICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVsZWFzZVBhZ2VDYWNoZSgpLCAwKTsKIH0KIAordm9p
ZCBXZWJQcm9jZXNzUHJveHk6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQor
eworICAgIGZvciAoY29uc3QgYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkKKyAgICAg
ICAgcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGUpOwor
fQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVxdWVzdFRlcm1pbmF0aW9uKCkKIHsKQEAgLTY1
Miw3ICs2NTcsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVxdWVzdFRlcm1pbmF0aW9uCiAg
ICAgZGlzY29ubmVjdCgpOwogfQogCi0KIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTdWRk
ZW5UZXJtaW5hdGlvbigpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAxNjEyMjgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNSw2ICsxMjUsOCBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IGFw
aU9iamVjdEJ5Q29udmVydGluZ1RvSGFuZGxlcyhBUEk6Ok9iamVjdCopOwogCisgICAgdm9pZCB3
aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCk7CisKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgV2ViUHJvY2Vzc1Byb3h5KFdlYkNvbnRleHQmKTsKIApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQkocmV2aXNpb24gMTYxMjI4KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJXZWJLaXRTeXN0ZW1JbnRlcmZhY2Uu
aCIKICNpbXBvcnQgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIldl
YlByb2Nlc3NNZXNzYWdlcy5oIgorI2ltcG9ydCAiV2luZG93U2VydmVyQ29ubmVjdGlvbi5oIgog
I2lmICFQTEFURk9STShJT1MpCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBUmVtb3RlTGF5ZXJTZXJ2
ZXIuaD4KICNlbmRpZgpAQCAtODQsOSArODUsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIE5TU3Ry
aW5nICpTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFJlZ2lzdGVyZWROb3RpZmljYXRpb25OYW1lID0g
QCJXZWJLaXRTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFJlZ2lzdGVyZWROb3RpZmljYXRpb24iOwog
TlNTdHJpbmcgKlNjaGVtZUZvckN1c3RvbVByb3RvY29sVW5yZWdpc3RlcmVkTm90aWZpY2F0aW9u
TmFtZSA9IEAiV2ViS2l0U2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xVbnJlZ2lzdGVyZWROb3RpZmlj
YXRpb24iOwogCi1zdGF0aWMgYm9vbCBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9IGZhbHNlOwot
c3RhdGljIGJvb2wgc19hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBlZCA9
IGZhbHNlOwotc3RhdGljIGJvb2wgc19vY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyc1JlZ2lz
dGVyZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHNfcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZv
ckFsbENvbnRleHRzID0gdHJ1ZTsKIAogc3RhdGljIHZvaWQgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJ
Zk5lZWRlZCgpCkBAIC0xMDUsNyArMTAzLDcgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJVc2VyRGVm
YXVsdHNJZk5lZWRlZAogICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNd
IHJlZ2lzdGVyRGVmYXVsdHM6cmVnaXN0cmF0aW9uRGljdGlvbmFyeV07CiB9CiAKLXN0YXRpYyB2
b2lkIHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlT2ZHbG9iYWxDaGlsZFByb2Nlc3Nlcygp
Cit2b2lkIFdlYkNvbnRleHQ6OnVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlT2ZHbG9iYWxD
aGlsZFByb2Nlc3NlcygpCiB7CiAgICAgLy8gVGhlIHBsYW4gaXMgdG8gaGF2ZSBhbGwgY2hpbGQg
cHJvY2Vzc2VzIGJlY29tZSBjb250ZXh0IHNwZWNpZmljLiAgVGhpcyBmdW5jdGlvbgogICAgIC8v
IGNhbiBiZSByZW1vdmVkIG9uY2UgdGhhdCBpcyBjb21wbGV0ZS4KQEAgLTExNywxMTkgKzExNSw2
IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXQKICNlbmRpZgogfQog
Ci0jaWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDkwCi1zdGF0aWMgdm9pZCBhcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlQ2hhbmdlZCgpCi17
Ci0gICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0Ojph
bGxDb250ZXh0cygpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNp
emUoKTsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgaWYgKGNvbnRleHRzW2ldLT5wcm9jZXNz
U3VwcHJlc3Npb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjb250ZXh0c1tpXS0+dXBkYXRlUHJv
Y2Vzc1N1cHByZXNzaW9uU3RhdGVPZkNoaWxkUHJvY2Vzc2VzKCk7Ci0gICAgfQotCi0gICAgaWYg
KHNfcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRzKQotICAgICAgICB1cGRh
dGVQcm9jZXNzU3VwcHJlc3Npb25TdGF0ZU9mR2xvYmFsQ2hpbGRQcm9jZXNzZXMoKTsKLX0KLQot
c3RhdGljIHZvaWQgYXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKHVpbnQzMl90LCB2b2lkKiwgdWlu
dDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKLXsKLSAgICBpZiAoIXNfYXBwbGljYXRpb25Jc09jY2x1
ZGVkKQotICAgICAgICByZXR1cm47Ci0gICAgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSBmYWxz
ZTsKLSAgICBhcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlQ2hhbmdlZCgpOwotfQotCi1zdGF0aWMg
dm9pZCBhcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3Qs
IHZvaWQqLCB1aW50MzJfdCkKLXsKLSAgICBpZiAoc19hcHBsaWNhdGlvbklzT2NjbHVkZWQpCi0g
ICAgICAgIHJldHVybjsKLSAgICBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9IHRydWU7Ci0gICAg
YXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZUNoYW5nZWQoKTsKLX0KLQotc3RhdGljIHZvaWQgYXBw
bGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQz
Ml90LCB2b2lkKiwgdWludDMyX3QpCi17Ci0gICAgaWYgKCFzX2FwcGxpY2F0aW9uV2luZG93TW9k
aWZpY2F0aW9uc0hhdmVTdG9wcGVkKQotICAgICAgICByZXR1cm47Ci0gICAgc19hcHBsaWNhdGlv
bldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBlZCA9IGZhbHNlOwotICAgIGFwcGxpY2F0aW9u
T2NjbHVzaW9uU3RhdGVDaGFuZ2VkKCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uV2lu
ZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCos
IHVpbnQzMl90KQotewotICAgIGlmIChzX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hh
dmVTdG9wcGVkKQotICAgICAgICByZXR1cm47Ci0gICAgc19hcHBsaWNhdGlvbldpbmRvd01vZGlm
aWNhdGlvbnNIYXZlU3RvcHBlZCA9IHRydWU7Ci0gICAgYXBwbGljYXRpb25PY2NsdXNpb25TdGF0
ZUNoYW5nZWQoKTsKLX0KLQotc3RydWN0IE9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgewot
ICAgIFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZSBub3RpZmljYXRpb25UeXBlOwotICAgIFdL
T2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciBoYW5kbGVyOwotICAgIGNvbnN0IGNoYXIgKm5h
bWU7Ci19OwotCi1zdGF0aWMgY29uc3QgT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciBvY2Ns
dXNpb25Ob3RpZmljYXRpb25IYW5kbGVyc1tdID0gewotICAgIHsgV0tPY2NsdXNpb25Ob3RpZmlj
YXRpb25UeXBlQXBwbGljYXRpb25CZWNhbWVWaXNpYmxlLCBhcHBsaWNhdGlvbkJlY2FtZVZpc2li
bGUsICJBcHBsaWNhdGlvbiBCZWNhbWUgVmlzaWJsZSIgfSwKLSAgICB7IFdLT2NjbHVzaW9uTm90
aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQsIGFwcGxpY2F0aW9uQmVjYW1l
T2NjbHVkZWQsICJBcHBsaWNhdGlvbiBCZWNhbWUgT2NjbHVkZWQiIH0sCi0gICAgeyBXS09jY2x1
c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVk
LCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCAiQXBwbGljYXRpb24gV2lu
ZG93IE1vZGlmaWNhdGlvbnMgU3RhcnRlZCIgfSwKLSAgICB7IFdLT2NjbHVzaW9uTm90aWZpY2F0
aW9uVHlwZUFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQsIGFwcGxpY2F0aW9u
V2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQsICJBcHBsaWNhdGlvbiBXaW5kb3cgTW9kaWZpY2F0
aW9ucyBTdG9wcGVkIiB9LAotfTsKLQotI2VuZGlmCi0KLXN0YXRpYyB2b2lkIHJlZ2lzdGVyT2Nj
bHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKQotewotI2lmICFQTEFURk9STShJT1MpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAotICAgIGZvciAoY29uc3QgT2Nj
bHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciYgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciA6
IG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKSB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0g
V0tSZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIob2NjbHVzaW9uTm90aWZpY2F0
aW9uSGFuZGxlci5ub3RpZmljYXRpb25UeXBlLCBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVy
LmhhbmRsZXIpOwotICAgICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKLSAgICAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShyZXN1bHQsICJSZWdpc3RyYXRpb24gb2YgXCIlc1wiIG5vdGlmaWNhdGlv
biBoYW5kbGVyIGZhaWxlZC5cbiIsIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIubmFtZSk7
Ci0gICAgfQotI2VuZGlmCi19Ci0KLXN0YXRpYyB2b2lkIHVucmVnaXN0ZXJPY2NsdXNpb25Ob3Rp
ZmljYXRpb25IYW5kbGVycygpCi17Ci0jaWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi0gICAgZm9yIChjb25zdCBPY2NsdXNpb25Ob3Rp
ZmljYXRpb25IYW5kbGVyJiBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyIDogb2NjbHVzaW9u
Tm90aWZpY2F0aW9uSGFuZGxlcnMpIHsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBXS1VucmVnaXN0
ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRs
ZXIubm90aWZpY2F0aW9uVHlwZSwgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5oYW5kbGVy
KTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UocmVzdWx0LCAiVW5yZWdpc3RyYXRpb24gb2YgXCIlc1wiIG5vdGlmaWNhdGlvbiBoYW5k
bGVyIGZhaWxlZC5cbiIsIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIubmFtZSk7Ci0gICAg
fQotI2VuZGlmCi19Ci0KLXN0YXRpYyB2b2lkIGVuYWJsZU9jY2x1c2lvbk5vdGlmaWNhdGlvbnMo
KQotewotICAgIGlmIChzX29jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzUmVnaXN0ZXJlZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgc19vY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyc1Jl
Z2lzdGVyZWQgPSB0cnVlOwotICAgIHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxl
cnMoKTsKLX0KLQotc3RhdGljIHZvaWQgZGlzYWJsZU9jY2x1c2lvbk5vdGlmaWNhdGlvbnMoKQot
ewotICAgIGlmICghc19vY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyc1JlZ2lzdGVyZWQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHNfb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnNSZWdp
c3RlcmVkID0gZmFsc2U7Ci0gICAgdW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRs
ZXJzKCk7Ci19Ci0KLXN0YXRpYyBib29sIHByb2Nlc3NTdXBwcmVzc2lvbklzRW5hYmxlZEZvckFu
eUNvbnRleHQoKQotewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgY29uc3QgVmVjdG9y
PFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyAr
K2kpIHsKLSAgICAgICAgaWYgKGNvbnRleHRzW2ldLT5wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVk
KCkpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBzdGF0aWMgYm9vbCBwcm9j
ZXNzU3VwcHJlc3Npb25Jc0VuYWJsZWRGb3JBbGxDb250ZXh0cygpCiB7CiAgICAgYm9vbCByZXN1
bHQgPSB0cnVlOwpAQCAtMjU0LDcgKzEzOSw2IEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1J
bml0aWFsaXplKCkKICAgICByZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCk7CiAgICAgcmVn
aXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMoKTsKICAgICBBU1NFUlQobV9wcm9jZXNzU3VwcHJl
c3Npb25FbmFibGVkKTsKLSAgICBlbmFibGVPY2NsdXNpb25Ob3RpZmljYXRpb25zKCk7CiB9CiAK
IFN0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCkgY29uc3QKQEAgLTU0MCwyOSArNDI0LDI0IEBAIHZvaWQgV2ViQ29udGV4dDo6dXBkYXRl
UHJvY2Vzc1N1cHByZXNzaW8KIAogYm9vbCBXZWJDb250ZXh0OjpjYW5FbmFibGVQcm9jZXNzU3Vw
cHJlc3Npb25Gb3JOZXR3b3JrUHJvY2VzcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChzX2FwcGxp
Y2F0aW9uSXNPY2NsdWRlZCB8fCBzX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hhdmVT
dG9wcGVkKSAmJiBtX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQgJiYgIW9taXRQcm9jZXNzU3Vw
cHJlc3Npb24oKTsKKyAgICByZXR1cm4gKFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNoYXJlZCgp
LmFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpIHx8IFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNoYXJl
ZCgpLmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hhdmVTdG9wcGVkKCkpICYmIG1fcHJv
Y2Vzc1N1cHByZXNzaW9uRW5hYmxlZCAmJiAhb21pdFByb2Nlc3NTdXBwcmVzc2lvbigpOwogfQog
CiBib29sIFdlYkNvbnRleHQ6OmNhbkVuYWJsZVByb2Nlc3NTdXBwcmVzc2lvbkZvcldlYlByb2Nl
c3MoY29uc3QgV2ViS2l0OjpXZWJQcm9jZXNzUHJveHkgKndlYlByb2Nlc3MpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCB8fCBzX2FwcGxpY2F0aW9uV2luZG93
TW9kaWZpY2F0aW9uc0hhdmVTdG9wcGVkIHx8IHdlYlByb2Nlc3MtPmFsbFBhZ2VzQXJlUHJvY2Vz
c1N1cHByZXNzaWJsZSgpKQorICAgIHJldHVybiAoV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2hh
cmVkKCkuYXBwbGljYXRpb25Jc09jY2x1ZGVkKCkgfHwgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6
c2hhcmVkKCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0b3BwZWQoKSB8fCB3
ZWJQcm9jZXNzLT5hbGxQYWdlc0FyZVByb2Nlc3NTdXBwcmVzc2libGUoKSkKICAgICAgICAgICAg
JiYgbV9wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkICYmICFvbWl0UHJvY2Vzc1N1cHByZXNzaW9u
KCk7CiB9CiAKIGJvb2wgV2ViQ29udGV4dDo6Y2FuRW5hYmxlUHJvY2Vzc1N1cHByZXNzaW9uRm9y
R2xvYmFsQ2hpbGRQcm9jZXNzZXMoKQogewotICAgIHJldHVybiAoc19hcHBsaWNhdGlvbklzT2Nj
bHVkZWQgfHwgc19hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBlZCkgJiYg
c19wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQWxsQ29udGV4dHMgJiYgIW9taXRQcm9jZXNz
U3VwcHJlc3Npb24oKTsKKyAgICByZXR1cm4gKFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNoYXJl
ZCgpLmFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpIHx8IFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNo
YXJlZCgpLmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hhdmVTdG9wcGVkKCkpICYmIHNf
cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRzICYmICFvbWl0UHJvY2Vzc1N1
cHByZXNzaW9uKCk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dDo6cHJvY2Vzc1N1cHByZXNzaW9uRW5h
YmxlZENoYW5nZWQoKQogewogICAgIHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlT2ZDaGls
ZFByb2Nlc3NlcygpOwogCi0gICAgaWYgKHByb2Nlc3NTdXBwcmVzc2lvbklzRW5hYmxlZEZvckFu
eUNvbnRleHQoKSkKLSAgICAgICAgZW5hYmxlT2NjbHVzaW9uTm90aWZpY2F0aW9ucygpOwotICAg
IGVsc2UKLSAgICAgICAgZGlzYWJsZU9jY2x1c2lvbk5vdGlmaWNhdGlvbnMoKTsKLQogICAgIGJv
b2wgbmV3UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRzID0gcHJvY2Vzc1N1
cHByZXNzaW9uSXNFbmFibGVkRm9yQWxsQ29udGV4dHMoKTsKICAgICBpZiAoc19wcm9jZXNzU3Vw
cHJlc3Npb25FbmFibGVkRm9yQWxsQ29udGV4dHMgIT0gbmV3UHJvY2Vzc1N1cHByZXNzaW9uRW5h
YmxlZEZvckFsbENvbnRleHRzKSB7CiAgICAgICAgIHNfcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxl
ZEZvckFsbENvbnRleHRzID0gbmV3UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRl
eHRzOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XaW5k
b3dTZXJ2ZXJDb25uZWN0aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uX2gK
KyNkZWZpbmUgV2luZG93U2VydmVyQ29ubmVjdGlvbl9oCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2lu
ZG93U2VydmVyQ29ubmVjdGlvbiYgc2hhcmVkKCk7CisKKyAgICBib29sIGFwcGxpY2F0aW9uSXNP
Y2NsdWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25Jc09jY2x1ZGVkOyB9CisgICAg
Ym9vbCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0b3BwZWQ7IH0KKwor
cHJpdmF0ZToKKyAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uKCk7CisKKyNpZiAhUExBVEZPUk0o
SU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICB2b2lk
IHdpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKKworICAgIHZvaWQgYXBwbGlj
YXRpb25CZWNhbWVPY2NsdWRlZChib29sIG9jY2x1ZGVkKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9u
V2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQoYm9vbCBzdG9wcGVkKTsKKworICAgIHN0YXRpYyB2
b2lkIGFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2
b2lkKiwgdWludDMyX3QpOworICAgIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVk
ZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KTsKKyAgICBzdGF0
aWMgdm9pZCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkKHVpbnQzMl90LCB2
b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7CisgICAgc3RhdGljIHZvaWQgYXBwbGlj
YXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90
LCB2b2lkKiwgdWludDMyX3QpOworI2VuZGlmCisKKyAgICBib29sIG1fYXBwbGljYXRpb25Jc09j
Y2x1ZGVkOworICAgIGJvb2wgbV9hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3Rv
cHBlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2luZG93U2Vy
dmVyQ29ubmVjdGlvbl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dpbmRv
d1NlcnZlckNvbm5lY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmgiCisKKyNpbXBvcnQgIldlYkNvbnRl
eHQuaCIKKyNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA5MAorCit2b2lkIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OmFwcGxpY2F0aW9u
QmVjYW1lT2NjbHVkZWQoYm9vbCBvY2NsdWRlZCkKK3sKKyAgICBpZiAobV9hcHBsaWNhdGlvbklz
T2NjbHVkZWQgPT0gb2NjbHVkZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2FwcGxpY2F0aW9u
SXNPY2NsdWRlZCA9IG9jY2x1ZGVkOworICAgIHdpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNo
YW5nZWQoKTsKK30KKwordm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlvbldp
bmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKGJvb2wgc3RvcHBlZCkKK3sKKyAgICBpZiAobV9hcHBs
aWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBlZCA9PSBzdG9wcGVkKQorICAgICAg
ICByZXR1cm47CisgICAgbV9hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBl
ZCA9IHN0b3BwZWQ7CisgICAgd2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpOwor
fQorCit2b2lkIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OmFwcGxpY2F0aW9uQmVjYW1lVmlzaWJs
ZSh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit7CisgICAgV2lu
ZG93U2VydmVyQ29ubmVjdGlvbjo6c2hhcmVkKCkuYXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZChm
YWxzZSk7Cit9CisKK3ZvaWQgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25CZWNh
bWVPY2NsdWRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit7
CisgICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2hhcmVkKCkuYXBwbGljYXRpb25CZWNhbWVP
Y2NsdWRlZCh0cnVlKTsKK30KKwordm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNh
dGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3Qs
IHZvaWQqLCB1aW50MzJfdCkKK3sKKyAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWQo
KS5hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKGZhbHNlKTsKK30KKwordm9p
ZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNT
dG9wcGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKK3sKKyAg
ICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWQoKS5hcHBsaWNhdGlvbldpbmRvd01vZGlm
aWNhdGlvbnNTdG9wcGVkKHRydWUpOworfQorCit2b2lkIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246
OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQoreworICAgIGNvbnN0IFZlY3Rv
cjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMoKTsKKyAg
ICBmb3IgKGF1dG8qIGNvbnRleHQgOiBjb250ZXh0cykgeworICAgICAgICBjb250ZXh0LT53aW5k
b3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCk7CisgICAgICAgIGlmIChjb250ZXh0LT5w
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkpCisgICAgICAgICAgICBjb250ZXh0LT51cGRhdGVQ
cm9jZXNzU3VwcHJlc3Npb25TdGF0ZU9mQ2hpbGRQcm9jZXNzZXMoKTsKKyAgICB9CisKKyAgICBX
ZWJDb250ZXh0Ojp1cGRhdGVQcm9jZXNzU3VwcHJlc3Npb25TdGF0ZU9mR2xvYmFsQ2hpbGRQcm9j
ZXNzZXMoKTsKK30KKworI2VuZGlmCisKK1dpbmRvd1NlcnZlckNvbm5lY3Rpb24mIFdpbmRvd1Nl
cnZlckNvbm5lY3Rpb246OnNoYXJlZCgpCit7CisgICAgc3RhdGljIFdpbmRvd1NlcnZlckNvbm5l
Y3Rpb24mIHdpbmRvd1NlcnZlckNvbm5lY3Rpb24gPSAqbmV3IFdpbmRvd1NlcnZlckNvbm5lY3Rp
b247CisgICAgcmV0dXJuIHdpbmRvd1NlcnZlckNvbm5lY3Rpb247Cit9CisKK1dpbmRvd1NlcnZl
ckNvbm5lY3Rpb246OldpbmRvd1NlcnZlckNvbm5lY3Rpb24oKQorICAgIDogbV9hcHBsaWNhdGlv
bklzT2NjbHVkZWQoZmFsc2UpCisgICAgLCBtX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9u
c0hhdmVTdG9wcGVkKGZhbHNlKQoreworI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIHN0cnVjdCBPY2NsdXNpb25Ob3RpZmlj
YXRpb25IYW5kbGVyIHsKKyAgICAgICAgV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlIG5vdGlm
aWNhdGlvblR5cGU7CisgICAgICAgIFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciBoYW5k
bGVyOworICAgICAgICBjb25zdCBjaGFyICpuYW1lOworICAgIH07CisKKyAgICBzdGF0aWMgY29u
c3QgT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5k
bGVyc1tdID0geworICAgICAgICB7IFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0
aW9uQmVjYW1lVmlzaWJsZSwgYXBwbGljYXRpb25CZWNhbWVWaXNpYmxlLCAiQXBwbGljYXRpb24g
QmVjYW1lIFZpc2libGUiIH0sCisgICAgICAgIHsgV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBl
QXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCwgYXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCwgIkFw
cGxpY2F0aW9uIEJlY2FtZSBPY2NsdWRlZCIgfSwKKyAgICAgICAgeyBXS09jY2x1c2lvbk5vdGlm
aWNhdGlvblR5cGVBcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCBhcHBsaWNh
dGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlm
aWNhdGlvbnMgU3RhcnRlZCIgfSwKKyAgICAgICAgeyBXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5
cGVBcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkLCBhcHBsaWNhdGlvbldpbmRv
d01vZGlmaWNhdGlvbnNTdG9wcGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlvbnMg
U3RvcHBlZCIgfSwKKyAgICB9OworCisgICAgZm9yIChjb25zdCBPY2NsdXNpb25Ob3RpZmljYXRp
b25IYW5kbGVyJiBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyIDogb2NjbHVzaW9uTm90aWZp
Y2F0aW9uSGFuZGxlcnMpIHsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBXS1JlZ2lzdGVyT2NjbHVz
aW9uTm90aWZpY2F0aW9uSGFuZGxlcihvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLm5vdGlm
aWNhdGlvblR5cGUsIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIuaGFuZGxlcik7CisgICAg
ICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJl
c3VsdCwgIlJlZ2lzdHJhdGlvbiBvZiBcIiVzXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVk
LlxuIiwgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5uYW1lKTsKKyAgICB9CisjZW5kaWYK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2MTIyOCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNzgzLDYgKzc4Myw3IEBACiAJCTdDRjQ3RkZGMTcyNzZBRTMwMDhBQ0I5MSAv
KiBXS0J1bmRsZVBhZ2VCYW5uZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDRjQ3RkZEMTcyNzZBRTMwMDhBQ0I5MSAvKiBXS0J1bmRsZVBhZ2VC
YW5uZXJNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk4NDQ3Nzg1MzE3NkZDQzA4MDBDREM3QkIgLyogSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0TWVkaWFUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NDQ3Nzg1MTE3NkZDQUMxMDBDREM3QkIgLyogSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0TWVkaWFUeXBlLmggKi87IH07CiAJCTg2NUUwNDg1MTgxQTA5NEEwMDFGNzJGMiAvKiBWaWV3
U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
NUUwNDg0MTgxQTA5MEQwMDFGNzJGMiAvKiBWaWV3U3RhdGUuaCAqLzsgfTsKKwkJODY4MTYwRDAx
ODc2NDU1NzAwMjFFNzlEIC8qIFdpbmRvd1NlcnZlckNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjgxNjBDRjE4NzY0NTM3MDAyMUU3
OUQgLyogV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbSAqLzsgfTsKIAkJOENGRUNFOTQxNDkwRjE0
MDAwMkFBQTMyIC8qIEVkaXRvclN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDhDRkVDRTkzMTQ5MEYxNDAwMDJBQUEzMiAvKiBFZGl0b3JTdGF0
ZS5jcHAgKi87IH07CiAJCThEQzJFRjUzMDQ4NkE2OTQwMDk4QjIxNiAvKiBJbmZvUGxpc3Quc3Ry
aW5ncyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg5
QzE2NjZGRTg0MTE1OEMwMkFBQzA3IC8qIEluZm9QbGlzdC5zdHJpbmdzICovOyB9OwogCQk5MDk4
NTRFQzEyQkM0RTE3MDAwQUQwODAgLyogV2ViTWVtb3J5U2FtcGxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDU2MjBFODEyQkMyNDhCMDAwNzk5
QjYgLyogV2ViTWVtb3J5U2FtcGxlci5jcHAgKi87IH07CkBAIC0yNDAyLDYgKzI0MDMsOCBAQAog
CQk3Q0Y0N0ZGRDE3Mjc2QUUzMDA4QUNCOTEgLyogV0tCdW5kbGVQYWdlQmFubmVyTWFjLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlUGFnZUJhbm5lck1hYy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDQ3Nzg1MTE3NkZDQUMxMDBDREM3QkIgLyog
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0TWVkaWFUeXBlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdE1lZGlhVHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjVFMDQ4NDE4MUEwOTBEMDAxRjcyRjIgLyog
Vmlld1N0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4NjgxNjBDRDE4NzYzRDRCMDAyMUU3OUQgLyogV2luZG93U2VydmVyQ29u
bmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2ODE2MENGMTg3NjQ1MzcwMDIxRTc5RCAvKiBXaW5k
b3dTZXJ2ZXJDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2luZG93U2VydmVy
Q29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOENGRUNFOTMxNDkw
RjE0MDAwMkFBQTMyIC8qIEVkaXRvclN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEVkaXRvclN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOERDMkVGNUEwNDg2QTY5NDAwOThCMjE2IC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnBsaXN0LnhtbDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCThEQzJFRjVCMDQ4NkE2OTQwMDk4QjIxNiAvKiBXZWJLaXQyLmZyYW1ld29yayAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdv
cms7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFdlYktpdDIuZnJhbWV3b3JrOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNTM1Miw2ICs1MzU1LDggQEAKIAkJQkND
RjA4NUMxMTNGM0I3NTAwQzY1MEM1IC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJODY4MTYwQ0YxODc2NDUzNzAwMjFFNzlEIC8qIFdpbmRvd1Nl
cnZlckNvbm5lY3Rpb24ubW0gKi8sCisJCQkJODY4MTYwQ0QxODc2M0Q0QjAwMjFFNzlEIC8qIFdp
bmRvd1NlcnZlckNvbm5lY3Rpb24uaCAqLywKIAkJCQlCODc4QjYxMzEzMzQyOERDMDA2ODg4RTkg
LyogQ29ycmVjdGlvblBhbmVsLmggKi8sCiAJCQkJQjg3OEI2MTQxMzM0MjhEQzAwNjg4OEU5IC8q
IENvcnJlY3Rpb25QYW5lbC5tbSAqLywKIAkJCQkxQUIxNkFFMDE2NDg2NTZEMDAyOTBENjIgLyog
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oICovLApAQCAtNzM2OSw2ICs3Mzc0LDcg
QEAKIAkJCQk1MThEMkNBRDEyRDUxNTNCMDAzQkI5M0IgLyogV2ViQmFja0ZvcndhcmRMaXN0SXRl
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzcyQjlGQTExRTY0NzZCMDAxRUI0RUEgLyogV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFBNUExMTJG
NEZCQjAwMzM3QkFCIC8qIFdlYkNocm9tZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4
NjgxNjBEMDE4NzY0NTU3MDAyMUU3OUQgLyogV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTNGODdCOUJEMTU4OTQwMTIwMDkwRkY2MiAvKiBXZWJDb2xvckNob29z
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjAzNjk3ODgxNUY0QkYwNTAwQzNBODBFIC8qIFdl
YkNvbG9yUGlja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYwMzY5NzhCMTVGNEJGMTMwMEMz
QTgwRSAvKiBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwIGluIFNvdXJjZXMg
Ki8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220275</attachid>
            <date>2014-01-02 17:53:05 -0800</date>
            <delta_ts>2014-01-03 12:05:44 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>126356.5.patch</filename>
            <type>text/plain</type>
            <size>31678</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTI0NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBACisyMDE0LTAxLTAyICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9wYWdhdGUg
V2luZG93U2VydmVyIG1vZGlmaWNhdGlvbnMgc3RhdGUgdG8gV2ViUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MzU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB3aWxsIGJlIG5lY2Vz
c2FyeSB0byBtb3ZlIGNvbnRyb2wgb2YgcHJvY2VzcyBzdXBwcmVzc2lvbiB0byB0aGUgV2ViUHJv
Y2Vzcy4KKyAgICAgICAgSXNWaXN1YWxseUlkbGUgaW1wbGllcyB0aGUgcHJvY2VzcyBoYXMgc3Rv
cHBlZCBwYWludGluZywgb3IgcGFpbnRlZCByZWN0cyBhcmUKKyAgICAgICAgb2NjbHVkZWQgYW5k
IG5vdCBhY3R1YWxseSBiZWluZyBjb21wb3NpdGVkLiBTdGF0ZSBpcyBwcm92aWRlZCBvbiBhIHBl
cgorICAgICAgICBXaW5kb3dTZXJ2ZXIgY29ubmVjdGlvbiBiYXNpcywgYW5kIGFzIHN1Y2ggbWF5
IHByb2R1Y2UgKHNhZmUpIGZhbHNlIHBvc2l0aXZlcy4KKworICAgICAgICAqIFNoYXJlZC9WaWV3
U3RhdGUuaDoKKyAgICAgICAgICAgIC0gYWRkZWQgSXNWaXN1YWxseUlkbGUuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmlzVmlzdWFsbHlJZGxlKToKKyAgICAgICAgICAgIC0gYWRkZWQsIG9uIG1hYyBjaGVja3Mg
V2luZG93U2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5o
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50Ojppc1Zpc3VhbGx5SWRsZSk6CisgICAgICAg
ICAgICAtIGJhc2UgaW1wbGVtZW50YXRpb24gcHVyZWx5IGJhc2VkIG9uIGlzVmlld1Zpc2libGUu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0Ojp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKToKKyAgICAgICAg
ICAgIC0gYnJvYWRjYXN0IHRoZSBzdGF0ZSBjaGFuZ2UuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVWaWV3U3RhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnZpZXdTdGF0ZURpZENoYW5nZSk6CisgICAgICAgICAgICAtIHBy
b3BhZ2F0ZSBJc1Zpc3VhbGx5SWRsZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp3aW5kb3dTZXJ2ZXJD
b25uZWN0aW9uU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgICAgIC0gYnJvYWRjYXN0IHRoZSBzdGF0
ZSBjaGFuZ2UuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAg
ICAgICAgLSBhZGQgd2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHQ6OnVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlT2ZHbG9iYWxDaGlsZFByb2Nlc3Nl
cyk6CisgICAgICAgICAgICAtIG1vdmVkIGZyb20gc3RhdGljIGluIGZsZSB0byBzdGF0aWMgbWVt
YmVyIG9mIGNsYXNzLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRp
YWxpemUpOgorICAgICAgICAgICAgLSBubyBuZWVkIHRvIGVuYWJsZU9jY2x1c2lvbk5vdGlmaWNh
dGlvbnMuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNhbkVuYWJsZVByb2Nlc3NTdXBw
cmVzc2lvbkZvck5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6
Y2FuRW5hYmxlUHJvY2Vzc1N1cHByZXNzaW9uRm9yV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OmNhbkVuYWJsZVByb2Nlc3NTdXBwcmVzc2lvbkZvckdsb2JhbENoaWxk
UHJvY2Vzc2VzKToKKyAgICAgICAgICAgIC0gY2hhbmdlZCB0byBjYWxsIFdpbmRvd1NlcnZlckNv
bm5lY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnByb2Nlc3NTdXBwcmVzc2lv
bkVuYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgICAgIC0gZG9uJ3QgcmVtb3ZlL3JlcmVnaXN0ZXIg
b2NjbHVzaW9uIG5vdGlmaWNhdGlvbnMuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXaW5kb3dTZXJ2ZXJD
b25uZWN0aW9uOjphcHBsaWNhdGlvbklzT2NjbHVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXaW5k
b3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3Rv
cHBlZCk6CisgICAgICAgICAgICAtIGFjY2Vzc29ycy4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dpbmRvd1NlcnZlckNvbm5lY3Rpb24ubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXaW5k
b3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKToKKyAgICAgICAg
KFdlYktpdDo6V2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmlj
YXRpb25zU3RvcHBlZCk6CisgICAgICAgIChXZWJLaXQ6OldpbmRvd1NlcnZlckNvbm5lY3Rpb246
OmFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldpbmRvd1NlcnZl
ckNvbm5lY3Rpb246OmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQpOgorICAg
ICAgICAgICAgLSBoYW5kbGUgbm90aWZpY2F0aW9ucyBmcm9tIHRoZSBXaW5kb3dTZXJ2ZXIuCisg
ICAgICAgIChXZWJLaXQ6OldpbmRvd1NlcnZlckNvbm5lY3Rpb246OndpbmRvd1NlcnZlckNvbm5l
Y3Rpb25TdGF0ZUNoYW5nZWQpOgorICAgICAgICAgICAgLSBicm9hZGNhc3QgdGhlIHN0YXRlIGNo
YW5nZS4KKyAgICAgICAgKFdlYktpdDo6V2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2hhcmVkKToK
KyAgICAgICAgICAgIC0gYWNjZXNzb3IgZm9yIHNpbmdsZXRvbiBvYmplY3QuCisgICAgICAgIChX
ZWJLaXQ6OldpbmRvd1NlcnZlckNvbm5lY3Rpb246OldpbmRvd1NlcnZlckNvbm5lY3Rpb24pOgor
ICAgICAgICAgICAgLSBjb25zdHJ1Y3RvciBpbml6aWFsaXplcyBmaWVsZHMgJiByZWdpc3RlciBu
b3RpZmljYXRpb24gaGFuZGxlcnMuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAgICAgLSBhZGRlZCBuZXcgZmlsZXMuCisgICAgICAgICogY29u
ZmlnLmg6CisgICAgICAgICAgICAtIGFkZGVkIEhBVkVfV0lORE9XX1NFUlZFUl9PQ0NMVVNJT05f
Tk9USUZJQ0FUSU9OUy4KKwogMjAxNC0wMS0wMiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNs
b3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFdpbmRvd0lzVmlzaWJsZQpJbmRleDog
U291cmNlL1dlYktpdDIvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvY29u
ZmlnLmgJKHJldmlzaW9uIDE2MTIyOCkKKysrIFNvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCwzICs4MCw5IEBACiAjZGVmaW5lIEVOQUJMRV9TRUNfSVRFTV9TSElN
IDEKICNlbmRpZgogI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9XSU5ET1dfU0VSVkVSX09DQ0xVU0lP
Tl9OT1RJRklDQVRJT05TCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyNkZWZpbmUgSEFWRV9XSU5E
T1dfU0VSVkVSX09DQ0xVU0lPTl9OT1RJRklDQVRJT05TIDEKKyNlbmRpZgorI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVmlld1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL1ZpZXdTdGF0ZS5oCShyZXZpc2lvbiAxNjEyMjgpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvVmlld1N0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEzICszNCwx
NCBAQCBzdHJ1Y3QgVmlld1N0YXRlIHsKICAgICAgICAgSXNGb2N1c2VkID0gMSA8PCAxLAogICAg
ICAgICBJc1Zpc2libGUgPSAxIDw8IDIsCiAgICAgICAgIElzSW5XaW5kb3cgPSAxIDw8IDMsCi0g
ICAgICAgIElzTGF5ZXJXaW5kb3dTZXJ2ZXJIb3N0ZWQgPSAxIDw8IDQKKyAgICAgICAgSXNWaXN1
YWxseUlkbGUgPSAxIDw8IDQsCisgICAgICAgIElzTGF5ZXJXaW5kb3dTZXJ2ZXJIb3N0ZWQgPSAx
IDw8IDUsCiAgICAgfTsKIAogICAgIHR5cGVkZWYgdW5zaWduZWQgRmxhZ3M7CiAKICAgICBzdGF0
aWMgY29uc3QgRmxhZ3MgTm9GbGFncyA9IDA7Ci0gICAgc3RhdGljIGNvbnN0IEZsYWdzIEFsbEZs
YWdzID0gV2luZG93SXNBY3RpdmUgfCBJc0ZvY3VzZWQgfCBJc1Zpc2libGUgfCBJc0luV2luZG93
IHwgSXNMYXllcldpbmRvd1NlcnZlckhvc3RlZDsKKyAgICBzdGF0aWMgY29uc3QgRmxhZ3MgQWxs
RmxhZ3MgPSBXaW5kb3dJc0FjdGl2ZSB8IElzRm9jdXNlZCB8IElzVmlzaWJsZSB8IElzSW5XaW5k
b3cgfCBJc0xheWVyV2luZG93U2VydmVySG9zdGVkIHwgSXNWaXN1YWxseUlkbGU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAkocmV2aXNpb24gMTYxMjI4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw5IEBAIHB1YmxpYzoKICAgICAv
LyBSZXR1cm4gd2hldGhlciB0aGUgdmlldyBpcyBpbiBhIHdpbmRvdy4KICAgICB2aXJ0dWFsIGJv
b2wgaXNWaWV3SW5XaW5kb3coKSA9IDA7CiAKKyAgICAvLyBSZXR1cm4gd2hldGhlciB0aGUgdmll
dyBpcyB2aXN1YWxseSBpZGxlLgorICAgIHZpcnR1YWwgYm9vbCBpc1Zpc3VhbGx5SWRsZSgpIHsg
cmV0dXJuICFpc1ZpZXdWaXNpYmxlKCk7IH0KKwogI2lmIEhBVkUoTEFZRVJfSE9TVElOR19JTl9X
SU5ET1dfU0VSVkVSKQogICAgIC8vIFJldHVybiB3aGV0aGVyIHRoZSBsYXllciBpcyB3aW5kb3cg
c2VydmVyIGhvc3RlZC4KICAgICB2aXJ0dWFsIGJvb2wgaXNMYXllcldpbmRvd1NlcnZlckhvc3Rl
ZCgpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAJKHJl
dmlzaW9uIDE2MTIyOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUyLDYgKzQ1MiwxMyBAQCB2b2lkIFdlYkNvbnRleHQ6Ondp
bGxTdG9wVXNpbmdQcml2YXRlQnJvCiAgICAgICAgIGNvbnRleHRzW2ldLT5zZXRBbnlQYWdlR3Jv
dXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKTsKIH0KIAordm9pZCBXZWJD
b250ZXh0Ojp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBzaXpl
X3QgcHJvY2Vzc0NvdW50ID0gbV9wcm9jZXNzZXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcHJvY2Vzc0NvdW50OyArK2kpCisgICAgICAgIG1fcHJvY2Vzc2VzW2ldLT53aW5k
b3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCk7Cit9CisKIHZvaWQgV2ViQ29udGV4dDo6
c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQpCiB7CiAgICAgbV9pY29uRGF0YWJhc2UtPnNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmgJKHJldmlzaW9uIDE2MTIyOCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDcgQEAg
Y2xhc3MgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM7CiAjZW5kaWYKIAorCiBjbGFzcyBXZWJDb250ZXh0IDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6Q29udGV4dD4sIHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAs
IHByaXZhdGUgUGx1Z2luSW5mb1N0b3JlQ2xpZW50CkBAIC0yOTEsNiArMjkyLDggQEAgcHVibGlj
OgogICAgIHZvaWQgdXBkYXRlUHJvY2Vzc1N1cHByZXNzaW9uU3RhdGVPZkNoaWxkUHJvY2Vzc2Vz
KCk7CiAjZW5kaWYKIAorICAgIHZvaWQgd2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdl
ZCgpOworCiAgICAgc3RhdGljIHZvaWQgd2lsbFN0YXJ0VXNpbmdQcml2YXRlQnJvd3NpbmcoKTsK
ICAgICBzdGF0aWMgdm9pZCB3aWxsU3RvcFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7CiAKQEAgLTMx
Niw2ICszMTksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJHbG9iYWxV
UkxTY2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoY29uc3QgU3RyaW5nJik7CiAj
ZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgdm9pZCB1cGRhdGVQcm9jZXNz
U3VwcHJlc3Npb25TdGF0ZU9mR2xvYmFsQ2hpbGRQcm9jZXNzZXMoKTsKKyNlbmRpZgorCiBwcml2
YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxNjEyMjgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTI5LDYgKzkyOSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVWaWV3U3RhdGUoVmlld1MK
ICAgICAgICAgbV92aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpJc1Zpc2libGU7CiAgICAgaWYgKGZs
YWdzVG9VcGRhdGUgJiBWaWV3U3RhdGU6OklzSW5XaW5kb3cgJiYgbV9wYWdlQ2xpZW50LmlzVmll
d0luV2luZG93KCkpCiAgICAgICAgIG1fdmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6SXNJbldpbmRv
dzsKKyAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGUgJiYg
bV9wYWdlQ2xpZW50LmlzVmlzdWFsbHlJZGxlKCkpCisgICAgICAgIG1fdmlld1N0YXRlIHw9IFZp
ZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGU7CiAjaWYgSEFWRShMQVlFUl9IT1NUSU5HX0lOX1dJTkRP
V19TRVJWRVIpCiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBWaWV3U3RhdGU6OklzTGF5ZXJXaW5k
b3dTZXJ2ZXJIb3N0ZWQgJiYgbV9wYWdlQ2xpZW50LmlzTGF5ZXJXaW5kb3dTZXJ2ZXJIb3N0ZWQo
KSkKICAgICAgICAgbV92aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpJc0xheWVyV2luZG93U2VydmVy
SG9zdGVkOwpAQCAtOTQzLDYgKzk0NSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3U3RhdGVE
aWRDaGFuZ2UoVmkKICAgICAvLyBJZiB0aGUgaW4td2luZG93IHN0YXRlIG1heSBoYXZlIGNoYW5n
ZWQsIHRoZW4gc28gbWF5IHRoZSBsYXllciBob3N0aW5nLgogICAgIGlmIChtYXlIYXZlQ2hhbmdl
ZCAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykKICAgICAgICAgbWF5SGF2ZUNoYW5nZWQgfD0gVmll
d1N0YXRlOjpJc0xheWVyV2luZG93U2VydmVySG9zdGVkOworICAgIC8vIElmIHRoZSB2aXNpYmls
aXR5IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRoZW4gc28gbWF5IHRoZSB2aXN1YWxseSBpZGxl
LgorICAgIGlmIChtYXlIYXZlQ2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKQorICAgICAg
ICBtYXlIYXZlQ2hhbmdlZCB8PSBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlOwogCiAgICAgLy8g
UmVjb3JkIHRoZSBwcmlvciB2aWV3IHN0YXRlLCB1cGRhdGUgdGhlIGZsYWdzIHRoYXQgbWF5IGhh
dmUgY2hhbmdlZCwKICAgICAvLyBhbmQgY2hlY2sgd2hpY2ggZmxhZ3MgaGF2ZSBhY3R1YWxseSBj
aGFuZ2VkLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAJKHJldmlzaW9uIDE2MTIyOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzgsNiArNjM4LDExIEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpyZWxlYXNlUGFnZUNhY2hlKCkKICAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6UmVsZWFzZVBhZ2VDYWNoZSgpLCAwKTsKIH0KIAordm9pZCBXZWJQcm9j
ZXNzUHJveHk6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQoreworICAgIGZv
ciAoY29uc3QgYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkKKyAgICAgICAgcGFnZS0+
dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGUpOworfQogCiB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6cmVxdWVzdFRlcm1pbmF0aW9uKCkKIHsKQEAgLTY1Miw3ICs2NTcs
NiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVxdWVzdFRlcm1pbmF0aW9uCiAgICAgZGlzY29u
bmVjdCgpOwogfQogCi0KIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTdWRkZW5UZXJtaW5h
dGlvbigpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAxNjEyMjgpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2
ICsxMjUsOCBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IGFwaU9iamVjdEJ5
Q29udmVydGluZ1RvSGFuZGxlcyhBUEk6Ok9iamVjdCopOwogCisgICAgdm9pZCB3aW5kb3dTZXJ2
ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2Vi
UHJvY2Vzc1Byb3h5KFdlYkNvbnRleHQmKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxNjEyMjgpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlz
Vmlld0ZvY3VzZWQoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3VmlzaWJsZSgpOwogICAgIHZp
cnR1YWwgYm9vbCBpc1ZpZXdJbldpbmRvdygpOworICAgIHZpcnR1YWwgYm9vbCBpc1Zpc3VhbGx5
SWRsZSgpOwogI2lmIEhBVkUoTEFZRVJfSE9TVElOR19JTl9XSU5ET1dfU0VSVkVSKQogICAgIHZp
cnR1YWwgYm9vbCBpc0xheWVyV2luZG93U2VydmVySG9zdGVkKCk7CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1t
CShyZXZpc2lvbiAxNjEyMjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9Q
YWdlQ2xpZW50SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2ltcG9ydCAiV2luZG93
U2VydmVyQ29ubmVjdGlvbi5oIgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2ltcG9y
dCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTIxNCw2ICsyMTUsMTEgQEAgYm9vbCBQYWdl
Q2xpZW50SW1wbDo6aXNWaWV3SW5XaW5kb3coKQogICAgIHJldHVybiBbbV93a1ZpZXcgd2luZG93
XTsKIH0KIAorYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaXN1YWxseUlkbGUoKQoreworICAgIHJl
dHVybiBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWQoKS5hcHBsaWNhdGlvbldpbmRvd01v
ZGlmaWNhdGlvbnNIYXZlU3RvcHBlZCgpIHx8ICFpc1ZpZXdWaXNpYmxlKCk7Cit9CisKICNpZiBI
QVZFKExBWUVSX0hPU1RJTkdfSU5fV0lORE9XX1NFUlZFUikKIGJvb2wgUGFnZUNsaWVudEltcGw6
OmlzTGF5ZXJXaW5kb3dTZXJ2ZXJIb3N0ZWQoKQogewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQkocmV2aXNpb24gMTYxMjI4KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaCIKICNp
bXBvcnQgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIldlYlByb2Nl
c3NNZXNzYWdlcy5oIgorI2ltcG9ydCAiV2luZG93U2VydmVyQ29ubmVjdGlvbi5oIgogI2lmICFQ
TEFURk9STShJT1MpCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBUmVtb3RlTGF5ZXJTZXJ2ZXIuaD4K
ICNlbmRpZgpAQCAtODQsOSArODUsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIE5TU3RyaW5nICpT
Y2hlbWVGb3JDdXN0b21Qcm90b2NvbFJlZ2lzdGVyZWROb3RpZmljYXRpb25OYW1lID0gQCJXZWJL
aXRTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFJlZ2lzdGVyZWROb3RpZmljYXRpb24iOwogTlNTdHJp
bmcgKlNjaGVtZUZvckN1c3RvbVByb3RvY29sVW5yZWdpc3RlcmVkTm90aWZpY2F0aW9uTmFtZSA9
IEAiV2ViS2l0U2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xVbnJlZ2lzdGVyZWROb3RpZmljYXRpb24i
OwogCi1zdGF0aWMgYm9vbCBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9IGZhbHNlOwotc3RhdGlj
IGJvb2wgc19hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBlZCA9IGZhbHNl
Owotc3RhdGljIGJvb2wgc19vY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyc1JlZ2lzdGVyZWQg
PSBmYWxzZTsKIHN0YXRpYyBib29sIHNfcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENv
bnRleHRzID0gdHJ1ZTsKIAogc3RhdGljIHZvaWQgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRl
ZCgpCkBAIC0xMDUsNyArMTAzLDcgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJ
Zk5lZWRlZAogICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lz
dGVyRGVmYXVsdHM6cmVnaXN0cmF0aW9uRGljdGlvbmFyeV07CiB9CiAKLXN0YXRpYyB2b2lkIHVw
ZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlT2ZHbG9iYWxDaGlsZFByb2Nlc3NlcygpCit2b2lk
IFdlYkNvbnRleHQ6OnVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlT2ZHbG9iYWxDaGlsZFBy
b2Nlc3NlcygpCiB7CiAgICAgLy8gVGhlIHBsYW4gaXMgdG8gaGF2ZSBhbGwgY2hpbGQgcHJvY2Vz
c2VzIGJlY29tZSBjb250ZXh0IHNwZWNpZmljLiAgVGhpcyBmdW5jdGlvbgogICAgIC8vIGNhbiBi
ZSByZW1vdmVkIG9uY2UgdGhhdCBpcyBjb21wbGV0ZS4KQEAgLTExNywxMTkgKzExNSw2IEBAIHN0
YXRpYyB2b2lkIHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXQKICNlbmRpZgogfQogCi0jaWYg
IVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkw
Ci1zdGF0aWMgdm9pZCBhcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlQ2hhbmdlZCgpCi17Ci0gICAg
Y29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250
ZXh0cygpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUoKTsg
aSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgaWYgKGNvbnRleHRzW2ldLT5wcm9jZXNzU3VwcHJl
c3Npb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjb250ZXh0c1tpXS0+dXBkYXRlUHJvY2Vzc1N1
cHByZXNzaW9uU3RhdGVPZkNoaWxkUHJvY2Vzc2VzKCk7Ci0gICAgfQotCi0gICAgaWYgKHNfcHJv
Y2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRzKQotICAgICAgICB1cGRhdGVQcm9j
ZXNzU3VwcHJlc3Npb25TdGF0ZU9mR2xvYmFsQ2hpbGRQcm9jZXNzZXMoKTsKLX0KLQotc3RhdGlj
IHZvaWQgYXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3Qs
IHZvaWQqLCB1aW50MzJfdCkKLXsKLSAgICBpZiAoIXNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKQot
ICAgICAgICByZXR1cm47Ci0gICAgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSBmYWxzZTsKLSAg
ICBhcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlQ2hhbmdlZCgpOwotfQotCi1zdGF0aWMgdm9pZCBh
cHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQq
LCB1aW50MzJfdCkKLXsKLSAgICBpZiAoc19hcHBsaWNhdGlvbklzT2NjbHVkZWQpCi0gICAgICAg
IHJldHVybjsKLSAgICBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9IHRydWU7Ci0gICAgYXBwbGlj
YXRpb25PY2NsdXNpb25TdGF0ZUNoYW5nZWQoKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwbGljYXRp
b25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2
b2lkKiwgdWludDMyX3QpCi17Ci0gICAgaWYgKCFzX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0
aW9uc0hhdmVTdG9wcGVkKQotICAgICAgICByZXR1cm47Ci0gICAgc19hcHBsaWNhdGlvbldpbmRv
d01vZGlmaWNhdGlvbnNIYXZlU3RvcHBlZCA9IGZhbHNlOwotICAgIGFwcGxpY2F0aW9uT2NjbHVz
aW9uU3RhdGVDaGFuZ2VkKCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uV2luZG93TW9k
aWZpY2F0aW9uc1N0b3BwZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQz
Ml90KQotewotICAgIGlmIChzX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hhdmVTdG9w
cGVkKQotICAgICAgICByZXR1cm47Ci0gICAgc19hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlv
bnNIYXZlU3RvcHBlZCA9IHRydWU7Ci0gICAgYXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZUNoYW5n
ZWQoKTsKLX0KLQotc3RydWN0IE9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgewotICAgIFdL
T2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZSBub3RpZmljYXRpb25UeXBlOwotICAgIFdLT2NjbHVz
aW9uTm90aWZpY2F0aW9uSGFuZGxlciBoYW5kbGVyOwotICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci19
OwotCi1zdGF0aWMgY29uc3QgT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciBvY2NsdXNpb25O
b3RpZmljYXRpb25IYW5kbGVyc1tdID0gewotICAgIHsgV0tPY2NsdXNpb25Ob3RpZmljYXRpb25U
eXBlQXBwbGljYXRpb25CZWNhbWVWaXNpYmxlLCBhcHBsaWNhdGlvbkJlY2FtZVZpc2libGUsICJB
cHBsaWNhdGlvbiBCZWNhbWUgVmlzaWJsZSIgfSwKLSAgICB7IFdLT2NjbHVzaW9uTm90aWZpY2F0
aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQsIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVk
ZWQsICJBcHBsaWNhdGlvbiBCZWNhbWUgT2NjbHVkZWQiIH0sCi0gICAgeyBXS09jY2x1c2lvbk5v
dGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCBhcHBs
aWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1v
ZGlmaWNhdGlvbnMgU3RhcnRlZCIgfSwKLSAgICB7IFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlw
ZUFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQsIGFwcGxpY2F0aW9uV2luZG93
TW9kaWZpY2F0aW9uc1N0b3BwZWQsICJBcHBsaWNhdGlvbiBXaW5kb3cgTW9kaWZpY2F0aW9ucyBT
dG9wcGVkIiB9LAotfTsKLQotI2VuZGlmCi0KLXN0YXRpYyB2b2lkIHJlZ2lzdGVyT2NjbHVzaW9u
Tm90aWZpY2F0aW9uSGFuZGxlcnMoKQotewotI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAotICAgIGZvciAoY29uc3QgT2NjbHVzaW9u
Tm90aWZpY2F0aW9uSGFuZGxlciYgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciA6IG9jY2x1
c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKSB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gV0tSZWdp
c3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIob2NjbHVzaW9uTm90aWZpY2F0aW9uSGFu
ZGxlci5ub3RpZmljYXRpb25UeXBlLCBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLmhhbmRs
ZXIpOwotICAgICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKLSAgICAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShyZXN1bHQsICJSZWdpc3RyYXRpb24gb2YgXCIlc1wiIG5vdGlmaWNhdGlvbiBoYW5k
bGVyIGZhaWxlZC5cbiIsIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIubmFtZSk7Ci0gICAg
fQotI2VuZGlmCi19Ci0KLXN0YXRpYyB2b2lkIHVucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRp
b25IYW5kbGVycygpCi17Ci0jaWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDkwCi0gICAgZm9yIChjb25zdCBPY2NsdXNpb25Ob3RpZmljYXRp
b25IYW5kbGVyJiBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyIDogb2NjbHVzaW9uTm90aWZp
Y2F0aW9uSGFuZGxlcnMpIHsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBXS1VucmVnaXN0ZXJPY2Ns
dXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIubm90
aWZpY2F0aW9uVHlwZSwgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5oYW5kbGVyKTsKLSAg
ICAgICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
cmVzdWx0LCAiVW5yZWdpc3RyYXRpb24gb2YgXCIlc1wiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZh
aWxlZC5cbiIsIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIubmFtZSk7Ci0gICAgfQotI2Vu
ZGlmCi19Ci0KLXN0YXRpYyB2b2lkIGVuYWJsZU9jY2x1c2lvbk5vdGlmaWNhdGlvbnMoKQotewot
ICAgIGlmIChzX29jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzUmVnaXN0ZXJlZCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgc19vY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyc1JlZ2lzdGVy
ZWQgPSB0cnVlOwotICAgIHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKTsK
LX0KLQotc3RhdGljIHZvaWQgZGlzYWJsZU9jY2x1c2lvbk5vdGlmaWNhdGlvbnMoKQotewotICAg
IGlmICghc19vY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyc1JlZ2lzdGVyZWQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIHNfb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnNSZWdpc3RlcmVk
ID0gZmFsc2U7Ci0gICAgdW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCk7
Ci19Ci0KLXN0YXRpYyBib29sIHByb2Nlc3NTdXBwcmVzc2lvbklzRW5hYmxlZEZvckFueUNvbnRl
eHQoKQotewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgY29uc3QgVmVjdG9yPFdlYkNv
bnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsK
LSAgICAgICAgaWYgKGNvbnRleHRzW2ldLT5wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkpIHsK
LSAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBzdGF0aWMgYm9vbCBwcm9jZXNzU3Vw
cHJlc3Npb25Jc0VuYWJsZWRGb3JBbGxDb250ZXh0cygpCiB7CiAgICAgYm9vbCByZXN1bHQgPSB0
cnVlOwpAQCAtMjU0LDcgKzEzOSw2IEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFs
aXplKCkKICAgICByZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCk7CiAgICAgcmVnaXN0ZXJO
b3RpZmljYXRpb25PYnNlcnZlcnMoKTsKICAgICBBU1NFUlQobV9wcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkKTsKLSAgICBlbmFibGVPY2NsdXNpb25Ob3RpZmljYXRpb25zKCk7CiB9CiAKIFN0cmlu
ZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkg
Y29uc3QKQEAgLTU0MCwyOSArNDI0LDI0IEBAIHZvaWQgV2ViQ29udGV4dDo6dXBkYXRlUHJvY2Vz
c1N1cHByZXNzaW8KIAogYm9vbCBXZWJDb250ZXh0OjpjYW5FbmFibGVQcm9jZXNzU3VwcHJlc3Np
b25Gb3JOZXR3b3JrUHJvY2VzcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChzX2FwcGxpY2F0aW9u
SXNPY2NsdWRlZCB8fCBzX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hhdmVTdG9wcGVk
KSAmJiBtX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQgJiYgIW9taXRQcm9jZXNzU3VwcHJlc3Np
b24oKTsKKyAgICByZXR1cm4gKFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNoYXJlZCgpLmFwcGxp
Y2F0aW9uSXNPY2NsdWRlZCgpIHx8IFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNoYXJlZCgpLmFw
cGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hhdmVTdG9wcGVkKCkpICYmIG1fcHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZCAmJiAhb21pdFByb2Nlc3NTdXBwcmVzc2lvbigpOwogfQogCiBib29s
IFdlYkNvbnRleHQ6OmNhbkVuYWJsZVByb2Nlc3NTdXBwcmVzc2lvbkZvcldlYlByb2Nlc3MoY29u
c3QgV2ViS2l0OjpXZWJQcm9jZXNzUHJveHkgKndlYlByb2Nlc3MpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCB8fCBzX2FwcGxpY2F0aW9uV2luZG93TW9kaWZp
Y2F0aW9uc0hhdmVTdG9wcGVkIHx8IHdlYlByb2Nlc3MtPmFsbFBhZ2VzQXJlUHJvY2Vzc1N1cHBy
ZXNzaWJsZSgpKQorICAgIHJldHVybiAoV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2hhcmVkKCku
YXBwbGljYXRpb25Jc09jY2x1ZGVkKCkgfHwgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2hhcmVk
KCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0b3BwZWQoKSB8fCB3ZWJQcm9j
ZXNzLT5hbGxQYWdlc0FyZVByb2Nlc3NTdXBwcmVzc2libGUoKSkKICAgICAgICAgICAgJiYgbV9w
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkICYmICFvbWl0UHJvY2Vzc1N1cHByZXNzaW9uKCk7CiB9
CiAKIGJvb2wgV2ViQ29udGV4dDo6Y2FuRW5hYmxlUHJvY2Vzc1N1cHByZXNzaW9uRm9yR2xvYmFs
Q2hpbGRQcm9jZXNzZXMoKQogewotICAgIHJldHVybiAoc19hcHBsaWNhdGlvbklzT2NjbHVkZWQg
fHwgc19hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBlZCkgJiYgc19wcm9j
ZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQWxsQ29udGV4dHMgJiYgIW9taXRQcm9jZXNzU3VwcHJl
c3Npb24oKTsKKyAgICByZXR1cm4gKFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNoYXJlZCgpLmFw
cGxpY2F0aW9uSXNPY2NsdWRlZCgpIHx8IFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNoYXJlZCgp
LmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hhdmVTdG9wcGVkKCkpICYmIHNfcHJvY2Vz
c1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRzICYmICFvbWl0UHJvY2Vzc1N1cHByZXNz
aW9uKCk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dDo6cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZENo
YW5nZWQoKQogewogICAgIHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlT2ZDaGlsZFByb2Nl
c3NlcygpOwogCi0gICAgaWYgKHByb2Nlc3NTdXBwcmVzc2lvbklzRW5hYmxlZEZvckFueUNvbnRl
eHQoKSkKLSAgICAgICAgZW5hYmxlT2NjbHVzaW9uTm90aWZpY2F0aW9ucygpOwotICAgIGVsc2UK
LSAgICAgICAgZGlzYWJsZU9jY2x1c2lvbk5vdGlmaWNhdGlvbnMoKTsKLQogICAgIGJvb2wgbmV3
UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRzID0gcHJvY2Vzc1N1cHByZXNz
aW9uSXNFbmFibGVkRm9yQWxsQ29udGV4dHMoKTsKICAgICBpZiAoc19wcm9jZXNzU3VwcHJlc3Np
b25FbmFibGVkRm9yQWxsQ29udGV4dHMgIT0gbmV3UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZv
ckFsbENvbnRleHRzKSB7CiAgICAgICAgIHNfcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFs
bENvbnRleHRzID0gbmV3UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRzOwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2
ZXJDb25uZWN0aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uX2gKKyNkZWZp
bmUgV2luZG93U2VydmVyQ29ubmVjdGlvbl9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2luZG93U2Vy
dmVyQ29ubmVjdGlvbiYgc2hhcmVkKCk7CisKKyAgICBib29sIGFwcGxpY2F0aW9uSXNPY2NsdWRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25Jc09jY2x1ZGVkOyB9CisgICAgYm9vbCBh
cHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0b3BwZWQ7IH0KKworcHJpdmF0
ZToKKyAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uKCk7CisKKyNpZiBIQVZFKFdJTkRPV19TRVJW
RVJfT0NDTFVTSU9OX05PVElGSUNBVElPTlMpCisgICAgdm9pZCB3aW5kb3dTZXJ2ZXJDb25uZWN0
aW9uU3RhdGVDaGFuZ2VkKCk7CisKKyAgICB2b2lkIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQo
Ym9vbCBvY2NsdWRlZCk7CisgICAgdm9pZCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNT
dG9wcGVkKGJvb2wgc3RvcHBlZCk7CisKKyAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbkJlY2Ft
ZVZpc2libGUodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KTsKKyAg
ICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKHVpbnQzMl90LCB2b2lkKiwg
dWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7CisgICAgc3RhdGljIHZvaWQgYXBwbGljYXRpb25X
aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lk
KiwgdWludDMyX3QpOworICAgIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0
aW9uc1N0b3BwZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KTsK
KyNlbmRpZgorCisgICAgYm9vbCBtX2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsKKyAgICBib29sIG1f
YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0b3BwZWQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdpbmRvd1NlcnZlckNvbm5lY3Rpb25faApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVy
Q29ubmVjdGlvbi5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEx
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2luZG93U2Vy
dmVyQ29ubmVjdGlvbi5oIgorCisjaW1wb3J0ICJXZWJDb250ZXh0LmgiCisjaW1wb3J0ICJXZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZiBIQVZFKFdJ
TkRPV19TRVJWRVJfT0NDTFVTSU9OX05PVElGSUNBVElPTlMpCisKK3ZvaWQgV2luZG93U2VydmVy
Q29ubmVjdGlvbjo6YXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZChib29sIG9jY2x1ZGVkKQorewor
ICAgIGlmIChtX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9PSBvY2NsdWRlZCkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gb2NjbHVkZWQ7CisgICAgd2luZG93
U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpOworfQorCit2b2lkIFdpbmRvd1NlcnZlckNv
bm5lY3Rpb246OmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQoYm9vbCBzdG9w
cGVkKQoreworICAgIGlmIChtX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hhdmVTdG9w
cGVkID09IHN0b3BwZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2FwcGxpY2F0aW9uV2luZG93
TW9kaWZpY2F0aW9uc0hhdmVTdG9wcGVkID0gc3RvcHBlZDsKKyAgICB3aW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uU3RhdGVDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6
YXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQq
LCB1aW50MzJfdCkKK3sKKyAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWQoKS5hcHBs
aWNhdGlvbkJlY2FtZU9jY2x1ZGVkKGZhbHNlKTsKK30KKwordm9pZCBXaW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uOjphcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMy
X3QsIHZvaWQqLCB1aW50MzJfdCkKK3sKKyAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaGFy
ZWQoKS5hcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKHRydWUpOworfQorCit2b2lkIFdpbmRvd1Nl
cnZlckNvbm5lY3Rpb246OmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQodWlu
dDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQoreworICAgIFdpbmRvd1Nl
cnZlckNvbm5lY3Rpb246OnNoYXJlZCgpLmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0
b3BwZWQoZmFsc2UpOworfQorCit2b2lkIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OmFwcGxpY2F0
aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwg
dm9pZCosIHVpbnQzMl90KQoreworICAgIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNoYXJlZCgp
LmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQodHJ1ZSk7Cit9CisKK3ZvaWQg
V2luZG93U2VydmVyQ29ubmVjdGlvbjo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdl
ZCgpCit7CisgICAgZm9yIChhdXRvKiBjb250ZXh0IDogV2ViQ29udGV4dDo6YWxsQ29udGV4dHMo
KSkgeworICAgICAgICBjb250ZXh0LT53aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2Vk
KCk7CisgICAgICAgIGlmIChjb250ZXh0LT5wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkpCisg
ICAgICAgICAgICBjb250ZXh0LT51cGRhdGVQcm9jZXNzU3VwcHJlc3Npb25TdGF0ZU9mQ2hpbGRQ
cm9jZXNzZXMoKTsKKyAgICB9CisKKyAgICBXZWJDb250ZXh0Ojp1cGRhdGVQcm9jZXNzU3VwcHJl
c3Npb25TdGF0ZU9mR2xvYmFsQ2hpbGRQcm9jZXNzZXMoKTsKK30KKworI2VuZGlmCisKK1dpbmRv
d1NlcnZlckNvbm5lY3Rpb24mIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNoYXJlZCgpCit7Cisg
ICAgc3RhdGljIFdpbmRvd1NlcnZlckNvbm5lY3Rpb24mIHdpbmRvd1NlcnZlckNvbm5lY3Rpb24g
PSAqbmV3IFdpbmRvd1NlcnZlckNvbm5lY3Rpb247CisgICAgcmV0dXJuIHdpbmRvd1NlcnZlckNv
bm5lY3Rpb247Cit9CisKK1dpbmRvd1NlcnZlckNvbm5lY3Rpb246OldpbmRvd1NlcnZlckNvbm5l
Y3Rpb24oKQorICAgIDogbV9hcHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpCisgICAgLCBtX2Fw
cGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hhdmVTdG9wcGVkKGZhbHNlKQoreworI2lmIEhB
VkUoV0lORE9XX1NFUlZFUl9PQ0NMVVNJT05fTk9USUZJQ0FUSU9OUykKKyAgICBzdHJ1Y3QgT2Nj
bHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciB7CisgICAgICAgIFdLT2NjbHVzaW9uTm90aWZpY2F0
aW9uVHlwZSBub3RpZmljYXRpb25UeXBlOworICAgICAgICBXS09jY2x1c2lvbk5vdGlmaWNhdGlv
bkhhbmRsZXIgaGFuZGxlcjsKKyAgICAgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICB9OworCisg
ICAgc3RhdGljIGNvbnN0IE9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgb2NjbHVzaW9uTm90
aWZpY2F0aW9uSGFuZGxlcnNbXSA9IHsKKyAgICAgICAgeyBXS09jY2x1c2lvbk5vdGlmaWNhdGlv
blR5cGVBcHBsaWNhdGlvbkJlY2FtZVZpc2libGUsIGFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSwg
IkFwcGxpY2F0aW9uIEJlY2FtZSBWaXNpYmxlIiB9LAorICAgICAgICB7IFdLT2NjbHVzaW9uTm90
aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQsIGFwcGxpY2F0aW9uQmVjYW1l
T2NjbHVkZWQsICJBcHBsaWNhdGlvbiBCZWNhbWUgT2NjbHVkZWQiIH0sCisgICAgICAgIHsgV0tP
Y2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3Rh
cnRlZCwgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwgIkFwcGxpY2F0aW9u
IFdpbmRvdyBNb2RpZmljYXRpb25zIFN0YXJ0ZWQiIH0sCisgICAgICAgIHsgV0tPY2NsdXNpb25O
b3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwgYXBw
bGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwgIkFwcGxpY2F0aW9uIFdpbmRvdyBN
b2RpZmljYXRpb25zIFN0b3BwZWQiIH0sCisgICAgfTsKKworICAgIGZvciAoYXV0byBvY2NsdXNp
b25Ob3RpZmljYXRpb25IYW5kbGVyIDogb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMpIHsK
KyAgICAgICAgYm9vbCByZXN1bHQgPSBXS1JlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFu
ZGxlcihvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLm5vdGlmaWNhdGlvblR5cGUsIG9jY2x1
c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIuaGFuZGxlcik7CisgICAgICAgIFVOVVNFRF9QQVJBTShy
ZXN1bHQpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCwgIlJlZ2lzdHJhdGlv
biBvZiBcIiVzXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIiwgb2NjbHVzaW9uTm90
aWZpY2F0aW9uSGFuZGxlci5uYW1lKTsKKyAgICB9CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2MTIyOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzgzLDYg
Kzc4Myw3IEBACiAJCTdDRjQ3RkZGMTcyNzZBRTMwMDhBQ0I5MSAvKiBXS0J1bmRsZVBhZ2VCYW5u
ZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
RjQ3RkZEMTcyNzZBRTMwMDhBQ0I5MSAvKiBXS0J1bmRsZVBhZ2VCYW5uZXJNYWMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NDQ3Nzg1MzE3NkZD
QzA4MDBDREM3QkIgLyogSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0TWVkaWFUeXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDQ3Nzg1MTE3NkZD
QUMxMDBDREM3QkIgLyogSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0TWVkaWFUeXBlLmggKi87
IH07CiAJCTg2NUUwNDg1MTgxQTA5NEEwMDFGNzJGMiAvKiBWaWV3U3RhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NUUwNDg0MTgxQTA5MEQwMDFG
NzJGMiAvKiBWaWV3U3RhdGUuaCAqLzsgfTsKKwkJODY4MTYwRDAxODc2NDU1NzAwMjFFNzlEIC8q
IFdpbmRvd1NlcnZlckNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NjgxNjBDRjE4NzY0NTM3MDAyMUU3OUQgLyogV2luZG93U2VydmVy
Q29ubmVjdGlvbi5tbSAqLzsgfTsKIAkJOENGRUNFOTQxNDkwRjE0MDAwMkFBQTMyIC8qIEVkaXRv
clN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDhDRkVDRTkzMTQ5MEYxNDAwMDJBQUEzMiAvKiBFZGl0b3JTdGF0ZS5jcHAgKi87IH07CiAJCThE
QzJFRjUzMDQ4NkE2OTQwMDk4QjIxNiAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg5QzE2NjZGRTg0MTE1OEMwMkFB
QzA3IC8qIEluZm9QbGlzdC5zdHJpbmdzICovOyB9OwogCQk5MDk4NTRFQzEyQkM0RTE3MDAwQUQw
ODAgLyogV2ViTWVtb3J5U2FtcGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MDU2MjBFODEyQkMyNDhCMDAwNzk5QjYgLyogV2ViTWVtb3J5U2Ft
cGxlci5jcHAgKi87IH07CkBAIC0yNDAyLDYgKzI0MDMsOCBAQAogCQk3Q0Y0N0ZGRDE3Mjc2QUUz
MDA4QUNCOTEgLyogV0tCdW5kbGVQYWdlQmFubmVyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLQnVuZGxlUGFnZUJhbm5lck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NDQ3Nzg1MTE3NkZDQUMxMDBDREM3QkIgLyogSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0TWVkaWFUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdE1lZGlhVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NjVFMDQ4NDE4MUEwOTBEMDAxRjcyRjIgLyogVmlld1N0YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZpZXdTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njgx
NjBDRDE4NzYzRDRCMDAyMUU3OUQgLyogV2luZG93U2VydmVyQ29ubmVjdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg2ODE2MENGMTg3NjQ1MzcwMDIxRTc5RCAvKiBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOENGRUNFOTMxNDkwRjE0MDAwMkFBQTMyIC8qIEVk
aXRvclN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVkaXRv
clN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOERDMkVGNUEwNDg2QTY5
NDAwOThCMjE2IC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9
IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThEQzJFRjVCMDQ4NkE2
OTQwMDk4QjIxNiAvKiBXZWJLaXQyLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IGluY2x1ZGVJbkluZGV4
ID0gMDsgcGF0aCA9IFdlYktpdDIuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwpAQCAtNTM1Miw2ICs1MzU1LDggQEAKIAkJQkNDRjA4NUMxMTNGM0I3NTAwQzY1
MEM1IC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJODY4MTYwQ0YxODc2NDUzNzAwMjFFNzlEIC8qIFdpbmRvd1NlcnZlckNvbm5lY3Rpb24ubW0g
Ki8sCisJCQkJODY4MTYwQ0QxODc2M0Q0QjAwMjFFNzlEIC8qIFdpbmRvd1NlcnZlckNvbm5lY3Rp
b24uaCAqLywKIAkJCQlCODc4QjYxMzEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVs
LmggKi8sCiAJCQkJQjg3OEI2MTQxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5t
bSAqLywKIAkJCQkxQUIxNkFFMDE2NDg2NTZEMDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eS5oICovLApAQCAtNzM2OSw2ICs3Mzc0LDcgQEAKIAkJCQk1MThEMkNBRDEy
RDUxNTNCMDAzQkI5M0IgLyogV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzcyQjlGQTExRTY0NzZCMDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFBNUExMTJGNEZCQjAwMzM3QkFCIC8qIFdl
YkNocm9tZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4NjgxNjBEMDE4NzY0NTU3MDAy
MUU3OUQgLyogV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTNG
ODdCOUJEMTU4OTQwMTIwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRjAzNjk3ODgxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUYwMzY5NzhCMTVGNEJGMTMwMEMzQTgwRSAvKiBXZWJDb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>
<flag name="review"
          id="243964"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>