<?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>66886</bug_id>
          
          <creation_ts>2011-08-24 13:19:54 -0700</creation_ts>
          <short_desc>[Qt][WK2] Remove QWKContext class and make sure the WebProcessProxy life is correctly managed.</short_desc>
          <delta_ts>2011-08-25 10:41:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>66958</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexis Menard (darktears)">menard</reporter>
          <assigned_to name="Alexis Menard (darktears)">menard</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>kling</cc>
    
    <cc>laszlo.gombos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>456361</commentid>
    <comment_count>0</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-08-24 13:19:54 -0700</bug_when>
    <thetext>[Qt][WK2] Remove QWKContext class and make sure the WebContext life is correctly managed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456371</commentid>
    <comment_count>1</comment_count>
      <attachid>105057</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-08-24 13:28:54 -0700</bug_when>
    <thetext>Created attachment 105057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456772</commentid>
    <comment_count>2</comment_count>
      <attachid>105057</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-08-25 05:07:25 -0700</bug_when>
    <thetext>Comment on attachment 105057
Patch

jocelyn did the QWKContext class, he might have comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456775</commentid>
    <comment_count>3</comment_count>
      <attachid>105057</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-25 05:25:08 -0700</bug_when>
    <thetext>Comment on attachment 105057
Patch

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

&gt; Source/WebKit2/ChangeLog:8
&gt; +        Remove QWKContext class from Qt APIs as it doesn&apos;t bring that much value. QtWebPageProxy now holds

I don&apos;t agree that QWKContext brings no value, it was just way too low-level for the current Qt5 API vision. :)

&gt; Source/WebKit2/UIProcess/qt/ClientImpl.cpp:153
&gt; -    emit toQWKContext(clientInfo)-&gt;iconChangedForPageURL(qUrl);
&gt; +    // FIXME : emit toQWKContext(clientInfo)-&gt;iconChangedForPageURL(qUrl);

I&apos;d rather you remove this function altogether.

&gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:63
&gt; +RefPtr&lt;WebContext&gt; QtWebPageProxy::defaultContext;

I&apos;m not 100% sure about this. This means that defaultWKContext() is unsafe to call during static object initialization.

&gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:212
&gt; +    if (m_context == defaultContext &amp;&amp; m_context-&gt;refCount() == 2)
&gt; +        defaultContext = 0;

This looks very fragile. If someone adds another ref somewhere in the future, we&apos;ll never reset the defaultContext ptr. Can we solve this in another way?

&gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.h:198
&gt; +    static RefPtr&lt;WebContext&gt; defaultContext;

I like the s_ prefix for static variables. NABD.

&gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.h:200
&gt; +    RefPtr&lt;WebContext&gt;  m_context;

Two spaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456784</commentid>
    <comment_count>4</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-08-25 05:35:47 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 105057 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=105057&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:8
&gt; &gt; +        Remove QWKContext class from Qt APIs as it doesn&apos;t bring that much value. QtWebPageProxy now holds
&gt; 
&gt; I don&apos;t agree that QWKContext brings no value, it was just way too low-level for the current Qt5 API vision. :)

Ok ok Andreas don&apos;t be too personal about that class, I don&apos;t want you to cry maouahahahhaa.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/ClientImpl.cpp:153
&gt; &gt; -    emit toQWKContext(clientInfo)-&gt;iconChangedForPageURL(qUrl);
&gt; &gt; +    // FIXME : emit toQWKContext(clientInfo)-&gt;iconChangedForPageURL(qUrl);
&gt; 
&gt; I&apos;d rather you remove this function altogether.

Will do.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:63
&gt; &gt; +RefPtr&lt;WebContext&gt; QtWebPageProxy::defaultContext;
&gt; 
&gt; I&apos;m not 100% sure about this. This means that defaultWKContext() is unsafe to call during static object initialization.

But how this could happen? Like someone nasty use another static which get a defaultWKContext() as a value. static relaying on other static are usually not recommended, or do you have an other use case in mind?

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:212
&gt; &gt; +    if (m_context == defaultContext &amp;&amp; m_context-&gt;refCount() == 2)
&gt; &gt; +        defaultContext = 0;
&gt; 
&gt; This looks very fragile. If someone adds another ref somewhere in the future, we&apos;ll never reset the defaultContext ptr. Can we solve this in another way?

Wait let me see what I can improve.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.h:198
&gt; &gt; +    static RefPtr&lt;WebContext&gt; defaultContext;
&gt; 
&gt; I like the s_ prefix for static variables. NABD.

Kenneth&apos;d.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.h:200
&gt; &gt; +    RefPtr&lt;WebContext&gt;  m_context;
&gt; 
&gt; Two spaces.

Will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456804</commentid>
    <comment_count>5</comment_count>
      <attachid>105167</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-08-25 06:13:11 -0700</bug_when>
    <thetext>Created attachment 105167
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456817</commentid>
    <comment_count>6</comment_count>
      <attachid>105174</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-08-25 06:46:05 -0700</bug_when>
    <thetext>Created attachment 105174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456834</commentid>
    <comment_count>7</comment_count>
      <attachid>105184</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-08-25 07:28:02 -0700</bug_when>
    <thetext>Created attachment 105184
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456838</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-25 07:30:02 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=105174&amp;action=review

&gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:219
&gt; +            s_defaultContext = 0;

s_defaultContext.clear() or = nullptr for clarity?

&gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.h:72
&gt; +    QtWebPageProxy(WebKit::ViewInterface*, WebKit::PolicyInterface*, WKContextRef, WKPageGroupRef = 0);

WKContextRef = 0 so you can simplify the constructors of the views?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456840</commentid>
    <comment_count>9</comment_count>
      <attachid>105184</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-25 07:31:39 -0700</bug_when>
    <thetext>Comment on attachment 105184
Patch

Check my previous comments before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456847</commentid>
    <comment_count>10</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-08-25 07:35:54 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=105174&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:219
&gt; &gt; +            s_defaultContext = 0;
&gt; 
&gt; s_defaultContext.clear() or = nullptr for clarity?

ok

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.h:72
&gt; &gt; +    QtWebPageProxy(WebKit::ViewInterface*, WebKit::PolicyInterface*, WKContextRef, WKPageGroupRef = 0);
&gt; 
&gt; WKContextRef = 0 so you can simplify the constructors of the views?


Fine will do before landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456864</commentid>
    <comment_count>11</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-08-25 08:14:00 -0700</bug_when>
    <thetext>Committed r93784: &lt;http://trac.webkit.org/changeset/93784&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105057</attachid>
            <date>2011-08-24 13:28:54 -0700</date>
            <delta_ts>2011-08-25 06:13:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66886-20110824172722.patch</filename>
            <type>text/plain</type>
            <size>18866</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzNzI4KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDgtMjQgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJd
IFJlbW92ZSBRV0tDb250ZXh0IGNsYXNzIGFuZCBtYWtlIHN1cmUgdGhlIFdlYlByb2Nlc3NQcm94
eSBsaWZlIGlzIGNvcnJlY3RseSBtYW5hZ2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgUVdLQ29udGV4dCBjbGFzcyBmcm9tIFF0IEFQSXMg
YXMgaXQgZG9lc24ndCBicmluZyB0aGF0IG11Y2ggdmFsdWUuIFF0V2ViUGFnZVByb3h5IG5vdyBo
b2xkcworICAgICAgICBkaXJlY3RseSBhIFdlYkNvbnRleHQgd2hpY2ggY2FuIGJlIGEgY3VzdG9t
IG9uZSBvciBkZWZhdWx0IGNyZWF0ZWQgb25lLiBUaGlzIHBhdGNoIGFsc28gZW5zdXJlIHRoYXQK
KyAgICAgICAgdGhlIFdlYlByb2Nlc3NQcm94eSBpcyBjb3JyZWN0bHkgZGVzdHJveWVkIGF0IGFw
cGxpY2F0aW9uIGV4aXQgYnkgcmVtb3ZpbmcgdGhlIGNpcmN1bGFyIHJlZmVyZW5jZXMKKyAgICAg
ICAgYmV0d2VlbiB0aGUgV2ViQ29udGV4dCwgV2ViUHJvY2Vzc1Byb3h5LCBhbmQgV2ViUGFnZVBy
b3h5LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwOgor
ICAgICAgICAoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6UURlc2t0b3BXZWJWaWV3UHJpdmF0ZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcDoKKyAgICAgICAg
KFFUb3VjaFdlYlZpZXdQcml2YXRlOjpRVG91Y2hXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgICog
VUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwOiBGb3Igbm93IGNvbW1lbnRlZCwgd2UgbmVlZCB0
byBzZWUgbGF0ZXIgd2hlcmUgdG8gcHV0IHRob3NlIEFQSXMgKGlmIHRoZXkgbWFrZSBzZW5zZSku
CisgICAgICAgIChxdF93a19kaWRDaGFuZ2VJY29uRm9yUGFnZVVSTCk6CisgICAgICAgICogVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5Ojpk
ZWZhdWx0V0tDb250ZXh0KToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpRdFdlYlBhZ2VQcm94
eSk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6flF0V2ViUGFnZVByb3h5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQv
cWRlc2t0b3B3ZWJwYWdlcHJveHkuY3BwOgorICAgICAgICAoUURlc2t0b3BXZWJQYWdlUHJveHk6
OlFEZXNrdG9wV2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcWRlc2t0b3B3
ZWJwYWdlcHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5
LmNwcDoKKyAgICAgICAgKFFUb3VjaFdlYlBhZ2VQcm94eTo6UVRvdWNoV2ViUGFnZVByb3h5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL3F0L3F3a2NvbnRleHQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9xd2tjb250ZXh0Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3a2Nv
bnRleHRfcC5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdDIucHJvOgorCiAyMDExLTA4LTI0
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1l
IC1bV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyIGtleWJvYXJkSW5wdXRTb3VyY2VDaGFuZ2Vk
XSB0byB1bm1hcmtUZXh0IHRvIGluZGljYXRlIHdoYXQgdGhlIG1ldGhvZCBkb2VzCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnBybwkocmV2aXNpb24gOTM3MjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBy
bwkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDggKzI0NCw2IEBAIEhFQURFUlMgKz0gXAogICAgIFVJ
UHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5oIFwKICAgICBVSVByb2Nlc3MvcXQvcXRv
dWNod2VicGFnZXByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oIFwK
LSAgICBVSVByb2Nlc3MvcXQvcXdrY29udGV4dC5oIFwKLSAgICBVSVByb2Nlc3MvcXQvcXdrY29u
dGV4dF9wLmggXAogICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmggXAogICAgIFVJUHJvY2Vz
cy9xdC9xd2toaXN0b3J5X3AuaCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a3ByZWZlcmVuY2VzLmgg
XApAQCAtNDc3LDcgKzQ3NSw2IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9xdC9xZGVz
a3RvcHdlYnBhZ2Vwcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJv
eHkuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwIFwKLSAgICBVSVBy
b2Nlc3MvcXQvcXdrY29udGV4dC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmNw
cCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a3ByZWZlcmVuY2VzLmNwcCBcCiAgICAgVUlQcm9jZXNz
L3F0L1NHQWdlbnQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cWRlc2t0b3B3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAJKHJldmlzaW9uIDkzNzI1KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAicWRl
c2t0b3B3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3X3AuaCIKLSNpbmNsdWRl
ICJxd2tjb250ZXh0LmgiCiAKICNpbmNsdWRlIDxRR3JhcGhpY3NTY2VuZVJlc2l6ZUV2ZW50Pgog
I2luY2x1ZGUgPFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbT4KQEAgLTM5LDcgKzM4LDcgQEAKIAog
UURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6UURlc2t0b3BXZWJWaWV3UHJpdmF0ZShRRGVza3RvcFdl
YlZpZXcqIHEsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3Jv
dXBSZWYpCiAgICAgOiBxKHEpCi0gICAgLCBwYWdlKHRoaXMsIGNvbnRleHRSZWYgPyBuZXcgUVdL
Q29udGV4dChjb250ZXh0UmVmKSA6IGRlZmF1bHRXS0NvbnRleHQoKSwgcGFnZUdyb3VwUmVmKQor
ICAgICwgcGFnZSh0aGlzLCBjb250ZXh0UmVmLCBwYWdlR3JvdXBSZWYpCiAgICAgLCBpc0NyYXNo
ZWQoZmFsc2UpCiAgICAgLCBuYXZpZ2F0aW9uQ29udHJvbGxlcigwKQogewpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3BwCShyZXZp
c2lvbiA5MzcyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vi
dmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgUVRvdWNoV2ViVmlld1By
aXZhdGU6OlFUb3VjaFdlYlZpZXdQcml2YQogICAgICwgcGFnZVZpZXcobmV3IFFUb3VjaFdlYlBh
Z2UocSkpCiAgICAgLCB2aWV3SW50ZXJmYWNlKHEsIHBhZ2VWaWV3LmRhdGEoKSkKICAgICAsIGlu
dGVyYWN0aW9uRW5naW5lKHEsIHBhZ2VWaWV3LmRhdGEoKSkKLSAgICAsIHBhZ2UoJnZpZXdJbnRl
cmZhY2UsICZpbnRlcmFjdGlvbkVuZ2luZSwgZGVmYXVsdFdLQ29udGV4dCgpKQorICAgICwgcGFn
ZSgmdmlld0ludGVyZmFjZSwgJmludGVyYWN0aW9uRW5naW5lLCAwKQogewogICAgIFFUb3VjaFdl
YlBhZ2VQcml2YXRlKiBjb25zdCBwYWdlVmlld1ByaXZhdGUgPSBwYWdlVmlldy5kYXRhKCktPmQ7
CiAgICAgcGFnZVZpZXdQcml2YXRlLT5zZXRQYWdlKCZwYWdlKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDkzNzI1KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAicXdlYmVycm9yLmgiCiAjaW5jbHVkZSAicXdlYmVy
cm9yX3AuaCIKICNpbmNsdWRlIDxQb2xpY3lJbnRlcmZhY2UuaD4KLSNpbmNsdWRlIDxxd2tjb250
ZXh0Lmg+CiAjaW5jbHVkZSA8UXRXZWJQYWdlUHJveHkuaD4KICNpbmNsdWRlIDxWaWV3SW50ZXJm
YWNlLmg+CiAjaW5jbHVkZSA8V0tGcmFtZS5oPgpAQCAtMzcsMTMgKzM2LDYgQEAKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIAotc3RhdGljIFFXS0NvbnRleHQqIHRvUVdLQ29udGV4dChjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIGlmIChjbGllbnRJbmZvKQotICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxRV0tDb250ZXh0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpOwotICAgIHJldHVybiAwOwotfQotCiBzdGF0aWMgUXRXZWJQYWdlUHJveHkqIHRvUXRX
ZWJQYWdlUHJveHkoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBpZiAoY2xpZW50SW5m
bykKQEAgLTE1OCw3ICsxNTAsNyBAQCB2b2lkIHF0X3drX3NldFN0YXR1c1RleHQoV0tQYWdlUmVm
LCBXS1N0CiB2b2lkIHF0X3drX2RpZENoYW5nZUljb25Gb3JQYWdlVVJMKFdLSWNvbkRhdGFiYXNl
UmVmIGljb25EYXRhYmFzZSwgV0tVUkxSZWYgcGFnZVVSTCwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKIHsKICAgICBRVXJsIHFVcmwgPSBXS1VSTENvcHlRVXJsKHBhZ2VVUkwpOwotICAgIGVtaXQg
dG9RV0tDb250ZXh0KGNsaWVudEluZm8pLT5pY29uQ2hhbmdlZEZvclBhZ2VVUkwocVVybCk7Cisg
ICAgLy8gRklYTUUgOiBlbWl0IHRvUVdLQ29udGV4dChjbGllbnRJbmZvKS0+aWNvbkNoYW5nZWRG
b3JQYWdlVVJMKHFVcmwpOwogfQogCiB2b2lkIHF0X3drX2RpZFJlbW92ZUFsbEljb25zKFdLSWNv
bkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcAkocmV2
aXNpb24gOTM3MjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsyNCw2IEBACiAjaW5jbHVkZSAicXdrcHJl
ZmVyZW5jZXNfcC5oIgogCiAjaW5jbHVkZSAiQ2xpZW50SW1wbC5oIgotI2luY2x1ZGUgInF3a2Nv
bnRleHQuaCIKLSNpbmNsdWRlICJxd2tjb250ZXh0X3AuaCIKICNpbmNsdWRlICJxd2toaXN0b3J5
LmgiCiAjaW5jbHVkZSAicXdraGlzdG9yeV9wLmgiCiAjaW5jbHVkZSAiVmlld0ludGVyZmFjZS5o
IgpAQCAtNjEsOSArNTksMTMgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAotUVdLQ29udGV4dCogZGVmYXVsdFdLQ29udGV4dCgpCisKK1JlZlB0
cjxXZWJDb250ZXh0PiBRdFdlYlBhZ2VQcm94eTo6ZGVmYXVsdENvbnRleHQ7CisKK1Bhc3NSZWZQ
dHI8V2ViQ29udGV4dD4gUXRXZWJQYWdlUHJveHk6OmRlZmF1bHRXS0NvbnRleHQoKQogewotICAg
IHN0YXRpYyBRV0tDb250ZXh0KiBkZWZhdWx0Q29udGV4dCA9IG5ldyBRV0tDb250ZXh0KCk7Cisg
ICAgaWYgKCFkZWZhdWx0Q29udGV4dCkKKyAgICAgICAgZGVmYXVsdENvbnRleHQgPSBXZWJDb250
ZXh0OjpjcmVhdGUoU3RyaW5nKCkpOwogICAgIHJldHVybiBkZWZhdWx0Q29udGV4dDsKIH0KIApA
QCAtOTUsMTcgKzk3LDE3IEBAIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gZHJvcEFjdGlvblRvRHJh
Z08KICAgICByZXR1cm4gKERyYWdPcGVyYXRpb24pcmVzdWx0OwogfQogCi1RdFdlYlBhZ2VQcm94
eTo6UXRXZWJQYWdlUHJveHkoVmlld0ludGVyZmFjZSogdmlld0ludGVyZmFjZSwgUG9saWN5SW50
ZXJmYWNlKiBwb2xpY3lJbnRlcmZhY2UsIFFXS0NvbnRleHQqIGMsIFdLUGFnZUdyb3VwUmVmIHBh
Z2VHcm91cFJlZikKK1F0V2ViUGFnZVByb3h5OjpRdFdlYlBhZ2VQcm94eShWaWV3SW50ZXJmYWNl
KiB2aWV3SW50ZXJmYWNlLCBQb2xpY3lJbnRlcmZhY2UqIHBvbGljeUludGVyZmFjZSwgV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKICAgICA6IG1f
dmlld0ludGVyZmFjZSh2aWV3SW50ZXJmYWNlKQogICAgICwgbV9wb2xpY3lJbnRlcmZhY2UocG9s
aWN5SW50ZXJmYWNlKQotICAgICwgbV9jb250ZXh0KGMpCisgICAgLCBtX2NvbnRleHQoY29udGV4
dFJlZiA/IHRvSW1wbChjb250ZXh0UmVmKSA6IGRlZmF1bHRXS0NvbnRleHQoKSkKICAgICAsIG1f
cHJlZmVyZW5jZXMoMCkKICAgICAsIG1fdW5kb1N0YWNrKGFkb3B0UHRyKG5ldyBRVW5kb1N0YWNr
KHRoaXMpKSkKICAgICAsIG1fbG9hZFByb2dyZXNzKDApCiB7CiAgICAgQVNTRVJUKHZpZXdJbnRl
cmZhY2UpOwogICAgIG1lbXNldChtX2FjdGlvbnMsIDAsIHNpemVvZihtX2FjdGlvbnMpKTsKLSAg
ICBtX3dlYlBhZ2VQcm94eSA9IG1fY29udGV4dC0+ZC0+Y29udGV4dC0+Y3JlYXRlV2ViUGFnZSh0
aGlzLCB0b0ltcGwocGFnZUdyb3VwUmVmKSk7CisgICAgbV93ZWJQYWdlUHJveHkgPSBtX2NvbnRl
eHQtPmNyZWF0ZVdlYlBhZ2UodGhpcywgdG9JbXBsKHBhZ2VHcm91cFJlZikpOwogICAgIG1faGlz
dG9yeSA9IFFXS0hpc3RvcnlQcml2YXRlOjpjcmVhdGVIaXN0b3J5KHRoaXMsIG1fd2ViUGFnZVBy
b3h5LT5iYWNrRm9yd2FyZExpc3QoKSk7CiB9CiAKQEAgLTIwNCw2ICsyMDYsMTAgQEAgdm9pZCBR
dFdlYlBhZ2VQcm94eTo6aW5pdCgpCiBRdFdlYlBhZ2VQcm94eTo6flF0V2ViUGFnZVByb3h5KCkK
IHsKICAgICBtX3dlYlBhZ2VQcm94eS0+Y2xvc2UoKTsKKyAgICBtX2NvbnRleHQtPmRpc2Nvbm5l
Y3RQcm9jZXNzKG1fY29udGV4dC0+cHJvY2VzcygpKTsKKyAgICAvLyBUaGVyZSBpcyBXZWJQcm9j
ZXNzUHJveHkgbm90IHlldCBkZXN0cm95ZWQgcG9pbnRpbmcgdG8gdGhlIGNvbnRleHQuCisgICAg
aWYgKG1fY29udGV4dCA9PSBkZWZhdWx0Q29udGV4dCAmJiBtX2NvbnRleHQtPnJlZkNvdW50KCkg
PT0gMikKKyAgICAgICAgZGVmYXVsdENvbnRleHQgPSAwOwogICAgIGRlbGV0ZSBtX2hpc3Rvcnk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94
eS5oCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
U2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNs
dWRlICJWaWV3SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDxRQmFz
aWNUaW1lcj4KQEAgLTQyLDE0ICs0MywxMSBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFV
bmRvU3RhY2s7CiBRVF9FTkRfTkFNRVNQQUNFCiAKLWNsYXNzIFFXS0NvbnRleHQ7CiBjbGFzcyBR
V0tIaXN0b3J5OwogY2xhc3MgUVdLUHJlZmVyZW5jZXM7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKLVFXS0NvbnRleHQgKmRlZmF1bHRXS0NvbnRleHQoKTsKLQogV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbiBkcm9wQWN0aW9uVG9EcmFnT3BlcmF0aW9uKFF0OjpEcm9wQWN0aW9ucyBhY3Rpb25z
KTsKIAogLy8gRklYTUU6IG5lZWRzIGZvY3VzIGluL291dCwgd2luZG93IGFjdGl2YXRpb24sIHN1
cHBvcnQgdGhyb3VnaCB2aWV3U3RhdGVEaWRDaGFuZ2UoKS4KQEAgLTcxLDcgKzY5LDcgQEAgcHVi
bGljOgogICAgICAgICBXZWJBY3Rpb25Db3VudAogICAgIH07CiAKLSAgICBRdFdlYlBhZ2VQcm94
eShXZWJLaXQ6OlZpZXdJbnRlcmZhY2UqLCBXZWJLaXQ6OlBvbGljeUludGVyZmFjZSosIFFXS0Nv
bnRleHQqLCBXS1BhZ2VHcm91cFJlZiA9IDApOworICAgIFF0V2ViUGFnZVByb3h5KFdlYktpdDo6
Vmlld0ludGVyZmFjZSosIFdlYktpdDo6UG9saWN5SW50ZXJmYWNlKiwgV0tDb250ZXh0UmVmLCBX
S1BhZ2VHcm91cFJlZiA9IDApOwogICAgIH5RdFdlYlBhZ2VQcm94eSgpOwogCiAgICAgdmlydHVh
bCBib29sIGhhbmRsZUV2ZW50KFFFdmVudCopOwpAQCAtMTk2LDcgKzE5NCwxMCBAQCBwcml2YXRl
OgogICAgIGJvb2wgaGFuZGxlRm9jdXNJbkV2ZW50KFFGb2N1c0V2ZW50Kik7CiAgICAgYm9vbCBo
YW5kbGVGb2N1c091dEV2ZW50KFFGb2N1c0V2ZW50Kik7CiAKLSAgICBRV0tDb250ZXh0KiBtX2Nv
bnRleHQ7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29udGV4dD4gZGVmYXVsdFdLQ29udGV4
dCgpOworICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29udGV4dD4gZGVmYXVsdENvbnRleHQ7CisKKyAg
ICBSZWZQdHI8V2ViQ29udGV4dD4gIG1fY29udGV4dDsKICAgICBRV0tIaXN0b3J5KiBtX2hpc3Rv
cnk7CiAKICAgICBtdXRhYmxlIFFBY3Rpb24qIG1fYWN0aW9uc1tRdFdlYlBhZ2VQcm94eTo6V2Vi
QWN0aW9uQ291bnRdOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9w
d2VicGFnZXByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3BwCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIGlubGluZSBRdDo6RHJvcEFjdGlvbiBkcmFnT3Bl
cmF0aQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVFEZXNrdG9wV2ViUGFnZVByb3h5OjpRRGVz
a3RvcFdlYlBhZ2VQcm94eShRRGVza3RvcFdlYlZpZXdQcml2YXRlKiBkZXNrdG9wV2ViVmlldywg
UVdLQ29udGV4dCogY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwKQorUURlc2t0b3BX
ZWJQYWdlUHJveHk6OlFEZXNrdG9wV2ViUGFnZVByb3h5KFFEZXNrdG9wV2ViVmlld1ByaXZhdGUq
IGRlc2t0b3BXZWJWaWV3LCBXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFn
ZUdyb3VwKQogICAgIDogUXRXZWJQYWdlUHJveHkoZGVza3RvcFdlYlZpZXcsIGRlc2t0b3BXZWJW
aWV3LCBjb250ZXh0LCBwYWdlR3JvdXApCiB7CiAgICAgaW5pdCgpOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmgJKHJldmlz
aW9uIDkzNzI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFn
ZXByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIGNsYXNzIFFEZXNrdG9wV2ViUGFnZVByb3h5IDogcHVibGljIFF0V2ViUGFnZVBy
b3h5CiB7CiBwdWJsaWM6Ci0gICAgUURlc2t0b3BXZWJQYWdlUHJveHkoUURlc2t0b3BXZWJWaWV3
UHJpdmF0ZSosIFFXS0NvbnRleHQqLCBXS1BhZ2VHcm91cFJlZiA9IDApOworICAgIFFEZXNrdG9w
V2ViUGFnZVByb3h5KFFEZXNrdG9wV2ViVmlld1ByaXZhdGUqLCBXS0NvbnRleHRSZWYsIFdLUGFn
ZUdyb3VwUmVmID0gMCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoUUV2ZW50Kik7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJw
YWdlcHJveHkuY3BwCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3
IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1RVG91Y2hXZWJQYWdlUHJveHk6OlFU
b3VjaFdlYlBhZ2VQcm94eShUb3VjaFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UsIFZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUqIHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUsIFFXS0NvbnRl
eHQqIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK1FUb3VjaFdlYlBhZ2VQ
cm94eTo6UVRvdWNoV2ViUGFnZVByb3h5KFRvdWNoVmlld0ludGVyZmFjZSogdmlld0ludGVyZmFj
ZSwgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSwg
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKICAgICA6
IFF0V2ViUGFnZVByb3h5KHZpZXdJbnRlcmZhY2UsIDAsIGNvbnRleHQsIHBhZ2VHcm91cFJlZikK
ICAgICAsIG1fcGFuR2VzdHVyZVJlY29nbml6ZXIodmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSkK
ICAgICAsIG1fcGluY2hHZXN0dXJlUmVjb2duaXplcih2aWV3cG9ydEludGVyYWN0aW9uRW5naW5l
KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdl
cHJveHkuaAkocmV2aXNpb24gOTM3MjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
cXRvdWNod2VicGFnZXByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIGNsYXNzIFFUb3VjaFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBR
dFdlYlBhZ2VQcm94eQogewogcHVibGljOgotICAgIFFUb3VjaFdlYlBhZ2VQcm94eShUb3VjaFZp
ZXdJbnRlcmZhY2UqLCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiwgUVdLQ29udGV4dCosIFdL
UGFnZUdyb3VwUmVmID0gMCk7CisgICAgUVRvdWNoV2ViUGFnZVByb3h5KFRvdWNoVmlld0ludGVy
ZmFjZSosIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqLCBXS0NvbnRleHRSZWYsIFdLUGFnZUdy
b3VwUmVmID0gMCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoUUV2ZW50Kik7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2tjb250ZXh0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdrY29udGV4dC5jcHAJKHJldmlz
aW9uIDkzNzI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2NvbnRleHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHBy
b2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgInF3a2NvbnRleHQuaCIKLSNpbmNsdWRlICJxd2tj
b250ZXh0X3AuaCIKLQotI2luY2x1ZGUgIkNsaWVudEltcGwuaCIKLSNpbmNsdWRlICJJY29uRGF0
YWJhc2UuaCIKLSNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgPFFEaXI+Ci0jaW5jbHVkZSA8
UVBpeG1hcD4KLSNpbmNsdWRlIDxRVXJsPgotI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZS5oIgot
I2luY2x1ZGUgIldlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2luY2x1ZGUgIldLSWNvbkRhdGFi
YXNlLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBp
bml0aWFsaXplUGxhdGZvcm1TdHJhdGVnaWVzSWZOZWVkZWQoKQotewotICAgIHN0YXRpYyBib29s
IGluaXRpYWxpemVkID0gZmFsc2U7Ci0gICAgaWYgKGluaXRpYWxpemVkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKTsKLSAgICBpbml0
aWFsaXplZCA9IHRydWU7Ci19Ci0KLVFXS0NvbnRleHRQcml2YXRlOjpRV0tDb250ZXh0UHJpdmF0
ZShRV0tDb250ZXh0KiBxcSwgV2ViQ29udGV4dCogd2ViQ29udGV4dCkKLSAgICA6IHEocXEpCi17
Ci0gICAgaWYgKCF3ZWJDb250ZXh0KQotICAgICAgICBjb250ZXh0ID0gV2ViQ29udGV4dDo6Y3Jl
YXRlKFN0cmluZygpKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnRleHQgPSB3ZWJDb250ZXh0Owot
Ci0gICAgaW5pdGlhbGl6ZVBsYXRmb3JtU3RyYXRlZ2llc0lmTmVlZGVkKCk7Ci0KLSAgICBXS0lj
b25EYXRhYmFzZUNsaWVudCBpY29uRGF0YWJhc2VDbGllbnQgPSB7Ci0gICAgICAgIDAsICAgICAg
Ly8gdmVyc2lvbgotICAgICAgICBxcSwgICAgIC8vIGNsaWVudEluZm8KLSAgICAgICAgcXRfd2tf
ZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwsCi0gICAgICAgIHF0X3drX2RpZFJlbW92ZUFsbEljb25z
Ci0gICAgfTsKLQotICAgIFdLSWNvbkRhdGFiYXNlU2V0SWNvbkRhdGFiYXNlQ2xpZW50KHRvQVBJ
KGNvbnRleHQtPmljb25EYXRhYmFzZSgpKSwgJmljb25EYXRhYmFzZUNsaWVudCk7Ci19Ci0KLVFX
S0NvbnRleHRQcml2YXRlOjp+UVdLQ29udGV4dFByaXZhdGUoKQoteyB9Ci0KLVFXS0NvbnRleHQ6
OlFXS0NvbnRleHQoUU9iamVjdCogcGFyZW50KQotICAgIDogUU9iamVjdChwYXJlbnQpCi0gICAg
LCBkKG5ldyBRV0tDb250ZXh0UHJpdmF0ZSh0aGlzKSkKLXsgfQotCi1RV0tDb250ZXh0OjpRV0tD
b250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBRT2JqZWN0KiBwYXJlbnQpCi0gICAgOiBR
T2JqZWN0KHBhcmVudCkKLSAgICAsIGQobmV3IFFXS0NvbnRleHRQcml2YXRlKHRoaXMsIHRvSW1w
bChjb250ZXh0UmVmKSkpCi17IH0KLQotUVdLQ29udGV4dDo6flFXS0NvbnRleHQoKQotewotICAg
IGRlbGV0ZSBkOwotfQotCi12b2lkIFFXS0NvbnRleHQ6OnNldEljb25EYXRhYmFzZVBhdGgoY29u
c3QgUVN0cmluZyYgcGF0aCkKLXsKLSAgICAvLyBGSVhNRTogVGhlcmUgaXMgY3VycmVudGx5IG5v
IHdheSB0byBkaXNhYmxlIHRoZSBpY29uIGRhdGFiYXNlIG9uY2UgaXQncyBlbmFibGVkLgotICAg
IFFGaWxlSW5mbyBpbmZvKHBhdGgpOwotICAgIGlmIChpbmZvLmlzRGlyKCkgJiYgaW5mby5pc1dy
aXRhYmxlKCkpIHsKLSAgICAgICAgUVN0cmluZyBkYXRhYmFzZVBhdGggPSBwYXRoICsgUURpcjo6
c2VwYXJhdG9yKCkgKyBRU3RyaW5nKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGVmYXVsdERhdGFi
YXNlRmlsZW5hbWUoKSk7Ci0gICAgICAgIGQtPmNvbnRleHQtPnNldEljb25EYXRhYmFzZVBhdGgo
ZGF0YWJhc2VQYXRoKTsKLSAgICB9Ci19Ci0KLVFJY29uIFFXS0NvbnRleHQ6Omljb25Gb3JQYWdl
VVJMKGNvbnN0IFFVcmwmIHBhZ2VVUkwpIGNvbnN0Ci17Ci0gICAgUmVmUHRyPFdlYkNvcmU6Oklt
YWdlPiBpbWFnZSA9IGQtPmNvbnRleHQtPmljb25EYXRhYmFzZSgpLT5pbWFnZUZvclBhZ2VVUkwo
cGFnZVVSTC50b1N0cmluZygpKTsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gUUlj
b24oKTsKLQotICAgIFFQaXhtYXAqIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFuYXRpdmVJbWFnZSkKLSAgICAgICAgcmV0dXJuIFFJ
Y29uKCk7Ci0KLSAgICByZXR1cm4gUUljb24oKm5hdGl2ZUltYWdlKTsKLX0KLQotI2luY2x1ZGUg
Im1vY19xd2tjb250ZXh0LmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9x
d2tjb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3
a2NvbnRleHQuaAkocmV2aXNpb24gOTM3MjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvcXdrY29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gICAg
Q29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSovCi0KLSNpZm5kZWYgcXdrY29udGV4dF9oCi0jZGVmaW5lIHF3a2NvbnRleHRfaAot
Ci0jaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgotI2luY2x1ZGUgPFFPYmplY3Q+Ci0jaW5jbHVk
ZSA8V2ViS2l0Mi9XS0NvbnRleHQuaD4KLQotY2xhc3MgUUljb247Ci1jbGFzcyBRVXJsOwotY2xh
c3MgUVdLQ29udGV4dFByaXZhdGU7Ci0KLWNsYXNzIFFXRUJLSVRfRVhQT1JUIFFXS0NvbnRleHQg
OiBwdWJsaWMgUU9iamVjdCB7Ci0gICAgUV9PQkpFQ1QKLXB1YmxpYzoKLSAgICBRV0tDb250ZXh0
KFFPYmplY3QqIHBhcmVudCA9IDApOwotICAgIHZpcnR1YWwgflFXS0NvbnRleHQoKTsKLQotICAg
IC8vIEJyaWRnZSBmcm9tIHRoZSBDIEFQSQotICAgIFFXS0NvbnRleHQoV0tDb250ZXh0UmVmIGNv
bnRleHRSZWYsIFFPYmplY3QqIHBhcmVudCA9IDApOwotCi0gICAgdm9pZCBzZXRJY29uRGF0YWJh
c2VQYXRoKGNvbnN0IFFTdHJpbmcmKTsKLSAgICBRSWNvbiBpY29uRm9yUGFnZVVSTChjb25zdCBR
VXJsJikgY29uc3Q7Ci0KLXB1YmxpYzoKLSAgICBRX1NJR05BTCB2b2lkIGljb25DaGFuZ2VkRm9y
UGFnZVVSTChjb25zdCBRVXJsJik7Ci0KLXByaXZhdGU6Ci0gICAgUVdLQ29udGV4dFByaXZhdGUq
IGQ7Ci0KLSAgICBmcmllbmQgY2xhc3MgUXRXZWJQYWdlUHJveHk7Ci19OwotCi0jZW5kaWYgLyog
cXdrY29udGV4dF9oICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdrY29u
dGV4dF9wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2Nv
bnRleHRfcC5oCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9xd2tjb250ZXh0X3AuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzNyArMCwwIEBACi0vKgotICAg
IENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCi0qLwotCi0KLSNpZm5kZWYgcXdrY29udGV4dF9wX2gKLSNkZWZpbmUgcXdrY29udGV4
dF9wX2gKLQotI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
Ci0KLWNsYXNzIFFXS0NvbnRleHRQcml2YXRlIHsKLXB1YmxpYzoKLSAgICBRV0tDb250ZXh0UHJp
dmF0ZShRV0tDb250ZXh0KiwgV2ViS2l0OjpXZWJDb250ZXh0KiA9IDApOwotICAgIH5RV0tDb250
ZXh0UHJpdmF0ZSgpOwotCi0gICAgUVdLQ29udGV4dCogcTsKLQotICAgIFJlZlB0cjxXZWJLaXQ6
OldlYkNvbnRleHQ+IGNvbnRleHQ7Ci19OwotCi0jZW5kaWYgLyogcWtjb250ZXh0X3BfaCAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105167</attachid>
            <date>2011-08-25 06:13:11 -0700</date>
            <delta_ts>2011-08-25 06:45:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66886-20110825101138.patch</filename>
            <type>text/plain</type>
            <size>19694</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzNzgwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDgtMjUgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJd
IFJlbW92ZSBRV0tDb250ZXh0IGNsYXNzIGFuZCBtYWtlIHN1cmUgdGhlIFdlYlByb2Nlc3NQcm94
eSBsaWZlIGlzIGNvcnJlY3RseSBtYW5hZ2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4ODYgICAgICAgIAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBRV0tDb250ZXh0IGNsYXNzIGZyb20g
UXQgQVBJcyBhcyBpdCBpcyB0b28gbG93IGxldmVsIGZvciB0aGUgdmlzaW9uCisgICAgICAgIG9m
IHRoZSBRdDUgQVBJLiBRdFdlYlBhZ2VQcm94eSBub3cgaG9sZHMgZGlyZWN0bHkgYSBXZWJDb250
ZXh0IHdoaWNoIGNhbiBiZSBhIGN1c3RvbSBvbmUKKyAgICAgICAgb3IgZGVmYXVsdCBjcmVhdGVk
IG9uZS4gVGhpcyBwYXRjaCBhbHNvIGVuc3VyZSB0aGF0IHRoZSBXZWJQcm9jZXNzUHJveHkgaXMg
Y29ycmVjdGx5CisgICAgICAgIGRlc3Ryb3llZCBhdCBhcHBsaWNhdGlvbiBleGl0IGJ5IHJlbW92
aW5nIHRoZSBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gdGhlIFdlYkNvbnRleHQsCisgICAg
ICAgIFdlYlByb2Nlc3NQcm94eSwgYW5kIFdlYlBhZ2VQcm94eS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFEZXNrdG9wV2ViVmll
d1ByaXZhdGU6OlFEZXNrdG9wV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvcXRvdWNod2Vidmlldy5jcHA6CisgICAgICAgIChRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6
UVRvdWNoV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9DbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKHF0X3drX3NldFN0YXR1c1RleHQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9DbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpkZWZhdWx0V0tDb250ZXh0KToKKyAgICAg
ICAgKFF0V2ViUGFnZVByb3h5OjpRdFdlYlBhZ2VQcm94eSk6CisgICAgICAgIChRdFdlYlBhZ2VQ
cm94eTo6flF0V2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3Bw
OgorICAgICAgICAoUURlc2t0b3BXZWJQYWdlUHJveHk6OlFEZXNrdG9wV2ViUGFnZVByb3h5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmNwcDoKKyAgICAgICAgKFFUb3VjaFdl
YlBhZ2VQcm94eTo6UVRvdWNoV2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQv
cXRvdWNod2VicGFnZXByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3a2NvbnRleHQu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9xd2tjb250ZXh0Lmg6IFJlbW92
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3a2NvbnRleHRfcC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYktpdDIucHJvOgorCiAyMDExLTA4LTIzICBKb2NlbHluIFR1cmNvdHRlICA8am9j
ZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIERyaXZlIHRpbGlu
ZyBmcm9tIHRoZSBXZWJQcm9jZXNzIGFuZCByZXVzZSBUaWxlZEJhY2tpbmdTdG9yZS4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYktpdDIucHJvCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIu
cHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsOCArMjQ0LDYgQEAgSEVBREVSUyArPSBcCiAgICAg
VUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9x
dG91Y2h3ZWJwYWdlcHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmgg
XAotICAgIFVJUHJvY2Vzcy9xdC9xd2tjb250ZXh0LmggXAotICAgIFVJUHJvY2Vzcy9xdC9xd2tj
b250ZXh0X3AuaCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuaCBcCiAgICAgVUlQcm9j
ZXNzL3F0L3F3a2hpc3RvcnlfcC5oIFwKICAgICBVSVByb2Nlc3MvcXQvcXdrcHJlZmVyZW5jZXMu
aCBcCkBAIC00NzcsNyArNDc1LDYgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L3Fk
ZXNrdG9wd2VicGFnZXByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vw
cm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgXAotICAgIFVJ
UHJvY2Vzcy9xdC9xd2tjb250ZXh0LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3Rvcnku
Y3BwIFwKICAgICBVSVByb2Nlc3MvcXQvcXdrcHJlZmVyZW5jZXMuY3BwIFwKICAgICBVSVByb2Nl
c3MvcXQvU0dBZ2VudC5jcHAgXApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xZGVza3RvcHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAkocmV2aXNpb24gOTM3MjUpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDcgKzIxLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJx
ZGVza3RvcHdlYnZpZXcuaCIKICNpbmNsdWRlICJxZGVza3RvcHdlYnZpZXdfcC5oIgotI2luY2x1
ZGUgInF3a2NvbnRleHQuaCIKIAogI2luY2x1ZGUgPFFHcmFwaGljc1NjZW5lUmVzaXplRXZlbnQ+
CiAjaW5jbHVkZSA8UVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtPgpAQCAtMzksNyArMzgsNyBAQAog
CiBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpRRGVza3RvcFdlYlZpZXdQcml2YXRlKFFEZXNrdG9w
V2ViVmlldyogcSwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cFJlZikKICAgICA6IHEocSkKLSAgICAsIHBhZ2UodGhpcywgY29udGV4dFJlZiA/IG5ldyBR
V0tDb250ZXh0KGNvbnRleHRSZWYpIDogZGVmYXVsdFdLQ29udGV4dCgpLCBwYWdlR3JvdXBSZWYp
CisgICAgLCBwYWdlKHRoaXMsIGNvbnRleHRSZWYsIHBhZ2VHcm91cFJlZikKICAgICAsIGlzQ3Jh
c2hlZChmYWxzZSkKICAgICAsIG5hdmlnYXRpb25Db250cm9sbGVyKDApCiB7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5jcHAJKHJl
dmlzaW9uIDkzNzI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3
ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBRVG91Y2hXZWJWaWV3
UHJpdmF0ZTo6UVRvdWNoV2ViVmlld1ByaXZhCiAgICAgLCBwYWdlVmlldyhuZXcgUVRvdWNoV2Vi
UGFnZShxKSkKICAgICAsIHZpZXdJbnRlcmZhY2UocSwgcGFnZVZpZXcuZGF0YSgpKQogICAgICwg
aW50ZXJhY3Rpb25FbmdpbmUocSwgcGFnZVZpZXcuZGF0YSgpKQotICAgICwgcGFnZSgmdmlld0lu
dGVyZmFjZSwgJmludGVyYWN0aW9uRW5naW5lLCBkZWZhdWx0V0tDb250ZXh0KCkpCisgICAgLCBw
YWdlKCZ2aWV3SW50ZXJmYWNlLCAmaW50ZXJhY3Rpb25FbmdpbmUsIDApCiB7CiAgICAgUVRvdWNo
V2ViUGFnZVByaXZhdGUqIGNvbnN0IHBhZ2VWaWV3UHJpdmF0ZSA9IHBhZ2VWaWV3LmRhdGEoKS0+
ZDsKICAgICBwYWdlVmlld1ByaXZhdGUtPnNldFBhZ2UoJnBhZ2UpOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcAkocmV2aXNpb24gOTM3MjUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJxd2ViZXJyb3IuaCIKICNpbmNsdWRlICJxd2Vi
ZXJyb3JfcC5oIgogI2luY2x1ZGUgPFBvbGljeUludGVyZmFjZS5oPgotI2luY2x1ZGUgPHF3a2Nv
bnRleHQuaD4KICNpbmNsdWRlIDxRdFdlYlBhZ2VQcm94eS5oPgogI2luY2x1ZGUgPFZpZXdJbnRl
cmZhY2UuaD4KICNpbmNsdWRlIDxXS0ZyYW1lLmg+CkBAIC0zNywxMyArMzYsNiBAQAogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1zdGF0aWMgUVdLQ29udGV4dCogdG9RV0tDb250ZXh0KGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgaWYgKGNsaWVudEluZm8pCi0gICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFFXS0NvbnRleHQqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBRdFdlYlBhZ2VQcm94eSogdG9R
dFdlYlBhZ2VQcm94eShjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIGlmIChjbGllbnRJ
bmZvKQpAQCAtMTU1LDEyICsxNDcsNiBAQCB2b2lkIHF0X3drX3NldFN0YXR1c1RleHQoV0tQYWdl
UmVmLCBXS1N0CiAgICAgdG9WaWV3SW50ZXJmYWNlKGNsaWVudEluZm8pLT5kaWRDaGFuZ2VTdGF0
dXNUZXh0KHFUZXh0KTsKIH0KIAotdm9pZCBxdF93a19kaWRDaGFuZ2VJY29uRm9yUGFnZVVSTChX
S0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2UsIFdLVVJMUmVmIHBhZ2VVUkwsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCi17Ci0gICAgUVVybCBxVXJsID0gV0tVUkxDb3B5UVVybChwYWdlVVJM
KTsKLSAgICBlbWl0IHRvUVdLQ29udGV4dChjbGllbnRJbmZvKS0+aWNvbkNoYW5nZWRGb3JQYWdl
VVJMKHFVcmwpOwotfQotCiB2b2lkIHF0X3drX2RpZFJlbW92ZUFsbEljb25zKFdLSWNvbkRhdGFi
YXNlUmVmIGljb25EYXRhYmFzZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuaAkocmV2aXNpb24gOTM3MjUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw3ICs0Miw2IEBAIHZvaWQgcXRfd2tfZGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bkZvckYKIHZvaWQgcXRfd2tfc2V0U3RhdHVzVGV4dChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdS
ZWYgdGV4dCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiAKIC8vIEljb25EYXRhYmFzZSBjbGll
bnQuCi12b2lkIHF0X3drX2RpZENoYW5nZUljb25Gb3JQYWdlVVJMKFdLSWNvbkRhdGFiYXNlUmVm
LCBXS1VSTFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB2b2lkIHF0X3drX2RpZFJlbW92
ZUFsbEljb25zKFdLSWNvbkRhdGFiYXNlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAog
Ly8gUG9saWN5IGNsaWVudC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1F0V2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gOTM3MjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsy
NCw2IEBACiAjaW5jbHVkZSAicXdrcHJlZmVyZW5jZXNfcC5oIgogCiAjaW5jbHVkZSAiQ2xpZW50
SW1wbC5oIgotI2luY2x1ZGUgInF3a2NvbnRleHQuaCIKLSNpbmNsdWRlICJxd2tjb250ZXh0X3Au
aCIKICNpbmNsdWRlICJxd2toaXN0b3J5LmgiCiAjaW5jbHVkZSAicXdraGlzdG9yeV9wLmgiCiAj
aW5jbHVkZSAiVmlld0ludGVyZmFjZS5oIgpAQCAtNjEsMTAgKzU5LDE2IEBACiB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVFXS0NvbnRleHQqIGRl
ZmF1bHRXS0NvbnRleHQoKQorCitSZWZQdHI8V2ViQ29udGV4dD4gUXRXZWJQYWdlUHJveHk6OnNf
ZGVmYXVsdENvbnRleHQ7CisKK3Vuc2lnbmVkIFF0V2ViUGFnZVByb3h5OjpzX3BhZ2VQcm94eUNv
dW50ID0gMDsKKworUGFzc1JlZlB0cjxXZWJDb250ZXh0PiBRdFdlYlBhZ2VQcm94eTo6ZGVmYXVs
dFdLQ29udGV4dCgpCiB7Ci0gICAgc3RhdGljIFFXS0NvbnRleHQqIGRlZmF1bHRDb250ZXh0ID0g
bmV3IFFXS0NvbnRleHQoKTsKLSAgICByZXR1cm4gZGVmYXVsdENvbnRleHQ7CisgICAgaWYgKCFz
X2RlZmF1bHRDb250ZXh0KQorICAgICAgICBzX2RlZmF1bHRDb250ZXh0ID0gV2ViQ29udGV4dDo6
Y3JlYXRlKFN0cmluZygpKTsKKyAgICByZXR1cm4gc19kZWZhdWx0Q29udGV4dDsKIH0KIAogc3Rh
dGljIGlubGluZSBRdDo6RHJvcEFjdGlvbnMgZHJhZ09wZXJhdGlvblRvRHJvcEFjdGlvbnModW5z
aWduZWQgZHJhZ09wZXJhdGlvbnMpCkBAIC05NSwxOCArOTksMTkgQEAgV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbiBkcm9wQWN0aW9uVG9EcmFnTwogICAgIHJldHVybiAoRHJhZ09wZXJhdGlvbilyZXN1
bHQ7CiB9CiAKLVF0V2ViUGFnZVByb3h5OjpRdFdlYlBhZ2VQcm94eShWaWV3SW50ZXJmYWNlKiB2
aWV3SW50ZXJmYWNlLCBQb2xpY3lJbnRlcmZhY2UqIHBvbGljeUludGVyZmFjZSwgUVdLQ29udGV4
dCogYywgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorUXRXZWJQYWdlUHJveHk6OlF0V2Vi
UGFnZVByb3h5KFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UsIFBvbGljeUludGVyZmFjZSog
cG9saWN5SW50ZXJmYWNlLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYg
cGFnZUdyb3VwUmVmKQogICAgIDogbV92aWV3SW50ZXJmYWNlKHZpZXdJbnRlcmZhY2UpCiAgICAg
LCBtX3BvbGljeUludGVyZmFjZShwb2xpY3lJbnRlcmZhY2UpCi0gICAgLCBtX2NvbnRleHQoYykK
KyAgICAsIG1fY29udGV4dChjb250ZXh0UmVmID8gdG9JbXBsKGNvbnRleHRSZWYpIDogZGVmYXVs
dFdLQ29udGV4dCgpKQogICAgICwgbV9wcmVmZXJlbmNlcygwKQogICAgICwgbV91bmRvU3RhY2so
YWRvcHRQdHIobmV3IFFVbmRvU3RhY2sodGhpcykpKQogICAgICwgbV9sb2FkUHJvZ3Jlc3MoMCkK
IHsKICAgICBBU1NFUlQodmlld0ludGVyZmFjZSk7CiAgICAgbWVtc2V0KG1fYWN0aW9ucywgMCwg
c2l6ZW9mKG1fYWN0aW9ucykpOwotICAgIG1fd2ViUGFnZVByb3h5ID0gbV9jb250ZXh0LT5kLT5j
b250ZXh0LT5jcmVhdGVXZWJQYWdlKHRoaXMsIHRvSW1wbChwYWdlR3JvdXBSZWYpKTsKKyAgICBt
X3dlYlBhZ2VQcm94eSA9IG1fY29udGV4dC0+Y3JlYXRlV2ViUGFnZSh0aGlzLCB0b0ltcGwocGFn
ZUdyb3VwUmVmKSk7CiAgICAgbV9oaXN0b3J5ID0gUVdLSGlzdG9yeVByaXZhdGU6OmNyZWF0ZUhp
c3RvcnkodGhpcywgbV93ZWJQYWdlUHJveHktPmJhY2tGb3J3YXJkTGlzdCgpKTsKKyAgICBzX3Bh
Z2VQcm94eUNvdW50Kys7CiB9CiAKIHZvaWQgUXRXZWJQYWdlUHJveHk6OmluaXQoKQpAQCAtMjA0
LDYgKzIwOSwxMSBAQCB2b2lkIFF0V2ViUGFnZVByb3h5Ojppbml0KCkKIFF0V2ViUGFnZVByb3h5
Ojp+UXRXZWJQYWdlUHJveHkoKQogewogICAgIG1fd2ViUGFnZVByb3h5LT5jbG9zZSgpOworICAg
IG1fY29udGV4dC0+ZGlzY29ubmVjdFByb2Nlc3MobV9jb250ZXh0LT5wcm9jZXNzKCkpOworICAg
IHNfcGFnZVByb3h5Q291bnQtLTsKKyAgICAvLyBUaGUgY29udGV4dCBpcyB0aGUgZGVmYXVsdCBv
bmUgYW5kIHdlJ3JlIGRlbGV0aW5nIHRoZSBsYXN0IFF0V2ViUGFnZVByb3h5LgorICAgIGlmICht
X2NvbnRleHQgPT0gc19kZWZhdWx0Q29udGV4dCAmJiAhc19wYWdlUHJveHlDb3VudCkKKyAgICAg
ICAgc19kZWZhdWx0Q29udGV4dCA9IDA7CiAgICAgZGVsZXRlIG1faGlzdG9yeTsKIH0KIApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgJKHJldmlz
aW9uIDkzNzI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVC
aXRtYXAuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlZpZXdJ
bnRlcmZhY2UuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPFFCYXNpY1RpbWVyPgpA
QCAtNDIsMTQgKzQzLDExIEBAIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUVVuZG9TdGFjazsK
IFFUX0VORF9OQU1FU1BBQ0UKIAotY2xhc3MgUVdLQ29udGV4dDsKIGNsYXNzIFFXS0hpc3Rvcnk7
CiBjbGFzcyBRV0tQcmVmZXJlbmNlczsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotUVdL
Q29udGV4dCAqZGVmYXVsdFdLQ29udGV4dCgpOwotCiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGRy
b3BBY3Rpb25Ub0RyYWdPcGVyYXRpb24oUXQ6OkRyb3BBY3Rpb25zIGFjdGlvbnMpOwogCiAvLyBG
SVhNRTogbmVlZHMgZm9jdXMgaW4vb3V0LCB3aW5kb3cgYWN0aXZhdGlvbiwgc3VwcG9ydCB0aHJv
dWdoIHZpZXdTdGF0ZURpZENoYW5nZSgpLgpAQCAtNzEsNyArNjksNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFdlYkFjdGlvbkNvdW50CiAgICAgfTsKIAotICAgIFF0V2ViUGFnZVByb3h5KFdlYktpdDo6
Vmlld0ludGVyZmFjZSosIFdlYktpdDo6UG9saWN5SW50ZXJmYWNlKiwgUVdLQ29udGV4dCosIFdL
UGFnZUdyb3VwUmVmID0gMCk7CisgICAgUXRXZWJQYWdlUHJveHkoV2ViS2l0OjpWaWV3SW50ZXJm
YWNlKiwgV2ViS2l0OjpQb2xpY3lJbnRlcmZhY2UqLCBXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3Vw
UmVmID0gMCk7CiAgICAgflF0V2ViUGFnZVByb3h5KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlRXZlbnQoUUV2ZW50Kik7CkBAIC0xOTYsNyArMTk0LDExIEBAIHByaXZhdGU6CiAgICAgYm9v
bCBoYW5kbGVGb2N1c0luRXZlbnQoUUZvY3VzRXZlbnQqKTsKICAgICBib29sIGhhbmRsZUZvY3Vz
T3V0RXZlbnQoUUZvY3VzRXZlbnQqKTsKIAotICAgIFFXS0NvbnRleHQqIG1fY29udGV4dDsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZXh0PiBkZWZhdWx0V0tDb250ZXh0KCk7CisgICAg
c3RhdGljIFJlZlB0cjxXZWJDb250ZXh0PiBzX2RlZmF1bHRDb250ZXh0OworICAgIHN0YXRpYyB1
bnNpZ25lZCBzX3BhZ2VQcm94eUNvdW50OworCisgICAgUmVmUHRyPFdlYkNvbnRleHQ+IG1fY29u
dGV4dDsKICAgICBRV0tIaXN0b3J5KiBtX2hpc3Rvcnk7CiAKICAgICBtdXRhYmxlIFFBY3Rpb24q
IG1fYWN0aW9uc1tRdFdlYlBhZ2VQcm94eTo6V2ViQWN0aW9uQ291bnRdOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3Bw
CShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xZGVza3Rv
cHdlYnBhZ2Vwcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGlj
IGlubGluZSBRdDo6RHJvcEFjdGlvbiBkcmFnT3BlcmF0aQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLVFEZXNrdG9wV2ViUGFnZVByb3h5OjpRRGVza3RvcFdlYlBhZ2VQcm94eShRRGVza3RvcFdl
YlZpZXdQcml2YXRlKiBkZXNrdG9wV2ViVmlldywgUVdLQ29udGV4dCogY29udGV4dCwgV0tQYWdl
R3JvdXBSZWYgcGFnZUdyb3VwKQorUURlc2t0b3BXZWJQYWdlUHJveHk6OlFEZXNrdG9wV2ViUGFn
ZVByb3h5KFFEZXNrdG9wV2ViVmlld1ByaXZhdGUqIGRlc2t0b3BXZWJWaWV3LCBXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwKQogICAgIDogUXRXZWJQYWdlUHJv
eHkoZGVza3RvcFdlYlZpZXcsIGRlc2t0b3BXZWJWaWV3LCBjb250ZXh0LCBwYWdlR3JvdXApCiB7
CiAgICAgaW5pdCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9w
d2VicGFnZXByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L3FkZXNrdG9wd2VicGFnZXByb3h5LmgJKHJldmlzaW9uIDkzNzI1KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDcgKzMyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIGNsYXNzIFFEZXNrdG9wV2Vi
UGFnZVByb3h5IDogcHVibGljIFF0V2ViUGFnZVByb3h5CiB7CiBwdWJsaWM6Ci0gICAgUURlc2t0
b3BXZWJQYWdlUHJveHkoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZSosIFFXS0NvbnRleHQqLCBXS1Bh
Z2VHcm91cFJlZiA9IDApOworICAgIFFEZXNrdG9wV2ViUGFnZVByb3h5KFFEZXNrdG9wV2ViVmll
d1ByaXZhdGUqLCBXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmID0gMCk7CiAKICAgICB2aXJ0
dWFsIGJvb2wgaGFuZGxlRXZlbnQoUUV2ZW50Kik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuY3BwCShyZXZpc2lvbiA5Mzcy
NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1RVG91Y2hXZWJQYWdlUHJveHk6OlFUb3VjaFdlYlBhZ2VQcm94eShUb3VjaFZpZXdJ
bnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UsIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqIHZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUsIFFXS0NvbnRleHQqIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVm
IHBhZ2VHcm91cFJlZikKK1FUb3VjaFdlYlBhZ2VQcm94eTo6UVRvdWNoV2ViUGFnZVByb3h5KFRv
dWNoVmlld0ludGVyZmFjZSogdmlld0ludGVyZmFjZSwgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZSogdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSwgV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKICAgICA6IFF0V2ViUGFnZVByb3h5KHZpZXdJbnRlcmZh
Y2UsIDAsIGNvbnRleHQsIHBhZ2VHcm91cFJlZikKICAgICAsIG1fcGFuR2VzdHVyZVJlY29nbml6
ZXIodmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSkKICAgICAsIG1fcGluY2hHZXN0dXJlUmVjb2du
aXplcih2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuaAkocmV2aXNpb24gOTM3MjUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIGNsYXNz
IFFUb3VjaFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBRdFdlYlBhZ2VQcm94eQogewogcHVibGljOgot
ICAgIFFUb3VjaFdlYlBhZ2VQcm94eShUb3VjaFZpZXdJbnRlcmZhY2UqLCBWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lKiwgUVdLQ29udGV4dCosIFdLUGFnZUdyb3VwUmVmID0gMCk7CisgICAgUVRv
dWNoV2ViUGFnZVByb3h5KFRvdWNoVmlld0ludGVyZmFjZSosIFZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUqLCBXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmID0gMCk7CiAKICAgICB2aXJ0dWFs
IGJvb2wgaGFuZGxlRXZlbnQoUUV2ZW50Kik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9xd2tjb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvcXdrY29udGV4dC5jcHAJKHJldmlzaW9uIDkzNzI1KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L3F3a2NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwOCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
InF3a2NvbnRleHQuaCIKLSNpbmNsdWRlICJxd2tjb250ZXh0X3AuaCIKLQotI2luY2x1ZGUgIkNs
aWVudEltcGwuaCIKLSNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJJbWFnZS5o
IgotI2luY2x1ZGUgPFFEaXI+Ci0jaW5jbHVkZSA8UVBpeG1hcD4KLSNpbmNsdWRlIDxRVXJsPgot
I2luY2x1ZGUgIldlYkljb25EYXRhYmFzZS5oIgotI2luY2x1ZGUgIldlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oIgotI2luY2x1ZGUgIldLSWNvbkRhdGFiYXNlLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBpbml0aWFsaXplUGxhdGZvcm1TdHJhdGVnaWVz
SWZOZWVkZWQoKQotewotICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Ci0gICAg
aWYgKGluaXRpYWxpemVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmluaXRpYWxpemUoKTsKLSAgICBpbml0aWFsaXplZCA9IHRydWU7Ci19Ci0KLVFXS0Nv
bnRleHRQcml2YXRlOjpRV0tDb250ZXh0UHJpdmF0ZShRV0tDb250ZXh0KiBxcSwgV2ViQ29udGV4
dCogd2ViQ29udGV4dCkKLSAgICA6IHEocXEpCi17Ci0gICAgaWYgKCF3ZWJDb250ZXh0KQotICAg
ICAgICBjb250ZXh0ID0gV2ViQ29udGV4dDo6Y3JlYXRlKFN0cmluZygpKTsKLSAgICBlbHNlCi0g
ICAgICAgIGNvbnRleHQgPSB3ZWJDb250ZXh0OwotCi0gICAgaW5pdGlhbGl6ZVBsYXRmb3JtU3Ry
YXRlZ2llc0lmTmVlZGVkKCk7Ci0KLSAgICBXS0ljb25EYXRhYmFzZUNsaWVudCBpY29uRGF0YWJh
c2VDbGllbnQgPSB7Ci0gICAgICAgIDAsICAgICAgLy8gdmVyc2lvbgotICAgICAgICBxcSwgICAg
IC8vIGNsaWVudEluZm8KLSAgICAgICAgcXRfd2tfZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwsCi0g
ICAgICAgIHF0X3drX2RpZFJlbW92ZUFsbEljb25zCi0gICAgfTsKLQotICAgIFdLSWNvbkRhdGFi
YXNlU2V0SWNvbkRhdGFiYXNlQ2xpZW50KHRvQVBJKGNvbnRleHQtPmljb25EYXRhYmFzZSgpKSwg
Jmljb25EYXRhYmFzZUNsaWVudCk7Ci19Ci0KLVFXS0NvbnRleHRQcml2YXRlOjp+UVdLQ29udGV4
dFByaXZhdGUoKQoteyB9Ci0KLVFXS0NvbnRleHQ6OlFXS0NvbnRleHQoUU9iamVjdCogcGFyZW50
KQotICAgIDogUU9iamVjdChwYXJlbnQpCi0gICAgLCBkKG5ldyBRV0tDb250ZXh0UHJpdmF0ZSh0
aGlzKSkKLXsgfQotCi1RV0tDb250ZXh0OjpRV0tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0
UmVmLCBRT2JqZWN0KiBwYXJlbnQpCi0gICAgOiBRT2JqZWN0KHBhcmVudCkKLSAgICAsIGQobmV3
IFFXS0NvbnRleHRQcml2YXRlKHRoaXMsIHRvSW1wbChjb250ZXh0UmVmKSkpCi17IH0KLQotUVdL
Q29udGV4dDo6flFXS0NvbnRleHQoKQotewotICAgIGRlbGV0ZSBkOwotfQotCi12b2lkIFFXS0Nv
bnRleHQ6OnNldEljb25EYXRhYmFzZVBhdGgoY29uc3QgUVN0cmluZyYgcGF0aCkKLXsKLSAgICAv
LyBGSVhNRTogVGhlcmUgaXMgY3VycmVudGx5IG5vIHdheSB0byBkaXNhYmxlIHRoZSBpY29uIGRh
dGFiYXNlIG9uY2UgaXQncyBlbmFibGVkLgotICAgIFFGaWxlSW5mbyBpbmZvKHBhdGgpOwotICAg
IGlmIChpbmZvLmlzRGlyKCkgJiYgaW5mby5pc1dyaXRhYmxlKCkpIHsKLSAgICAgICAgUVN0cmlu
ZyBkYXRhYmFzZVBhdGggPSBwYXRoICsgUURpcjo6c2VwYXJhdG9yKCkgKyBRU3RyaW5nKFdlYkNv
cmU6Okljb25EYXRhYmFzZTo6ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoKSk7Ci0gICAgICAgIGQt
PmNvbnRleHQtPnNldEljb25EYXRhYmFzZVBhdGgoZGF0YWJhc2VQYXRoKTsKLSAgICB9Ci19Ci0K
LVFJY29uIFFXS0NvbnRleHQ6Omljb25Gb3JQYWdlVVJMKGNvbnN0IFFVcmwmIHBhZ2VVUkwpIGNv
bnN0Ci17Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBpbWFnZSA9IGQtPmNvbnRleHQtPmlj
b25EYXRhYmFzZSgpLT5pbWFnZUZvclBhZ2VVUkwocGFnZVVSTC50b1N0cmluZygpKTsKLSAgICBp
ZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gUUljb24oKTsKLQotICAgIFFQaXhtYXAqIG5hdGl2
ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFu
YXRpdmVJbWFnZSkKLSAgICAgICAgcmV0dXJuIFFJY29uKCk7Ci0KLSAgICByZXR1cm4gUUljb24o
Km5hdGl2ZUltYWdlKTsKLX0KLQotI2luY2x1ZGUgIm1vY19xd2tjb250ZXh0LmNwcCIKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2tjb250ZXh0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2NvbnRleHQuaAkocmV2aXNpb24gOTM3MjUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdrY29udGV4dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotCi0gICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpZm5kZWYgcXdrY29u
dGV4dF9oCi0jZGVmaW5lIHF3a2NvbnRleHRfaAotCi0jaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5o
IgotI2luY2x1ZGUgPFFPYmplY3Q+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHQuaD4KLQot
Y2xhc3MgUUljb247Ci1jbGFzcyBRVXJsOwotY2xhc3MgUVdLQ29udGV4dFByaXZhdGU7Ci0KLWNs
YXNzIFFXRUJLSVRfRVhQT1JUIFFXS0NvbnRleHQgOiBwdWJsaWMgUU9iamVjdCB7Ci0gICAgUV9P
QkpFQ1QKLXB1YmxpYzoKLSAgICBRV0tDb250ZXh0KFFPYmplY3QqIHBhcmVudCA9IDApOwotICAg
IHZpcnR1YWwgflFXS0NvbnRleHQoKTsKLQotICAgIC8vIEJyaWRnZSBmcm9tIHRoZSBDIEFQSQot
ICAgIFFXS0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFFPYmplY3QqIHBhcmVudCA9
IDApOwotCi0gICAgdm9pZCBzZXRJY29uRGF0YWJhc2VQYXRoKGNvbnN0IFFTdHJpbmcmKTsKLSAg
ICBRSWNvbiBpY29uRm9yUGFnZVVSTChjb25zdCBRVXJsJikgY29uc3Q7Ci0KLXB1YmxpYzoKLSAg
ICBRX1NJR05BTCB2b2lkIGljb25DaGFuZ2VkRm9yUGFnZVVSTChjb25zdCBRVXJsJik7Ci0KLXBy
aXZhdGU6Ci0gICAgUVdLQ29udGV4dFByaXZhdGUqIGQ7Ci0KLSAgICBmcmllbmQgY2xhc3MgUXRX
ZWJQYWdlUHJveHk7Ci19OwotCi0jZW5kaWYgLyogcXdrY29udGV4dF9oICovCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdrY29udGV4dF9wLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2NvbnRleHRfcC5oCShyZXZpc2lvbiA5MzcyNSkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2tjb250ZXh0X3AuaAkod29ya2luZyBj
b3B5KQpAQCAtMSwzNyArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLQotICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0KLSNpZm5kZWYgcXdr
Y29udGV4dF9wX2gKLSNkZWZpbmUgcXdrY29udGV4dF9wX2gKLQotI2luY2x1ZGUgIldlYkNvbnRl
eHQuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLWNsYXNzIFFXS0NvbnRleHRQcml2YXRl
IHsKLXB1YmxpYzoKLSAgICBRV0tDb250ZXh0UHJpdmF0ZShRV0tDb250ZXh0KiwgV2ViS2l0OjpX
ZWJDb250ZXh0KiA9IDApOwotICAgIH5RV0tDb250ZXh0UHJpdmF0ZSgpOwotCi0gICAgUVdLQ29u
dGV4dCogcTsKLQotICAgIFJlZlB0cjxXZWJLaXQ6OldlYkNvbnRleHQ+IGNvbnRleHQ7Ci19Owot
Ci0jZW5kaWYgLyogcWtjb250ZXh0X3BfaCAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105174</attachid>
            <date>2011-08-25 06:46:05 -0700</date>
            <delta_ts>2011-08-25 07:27:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66886-20110825104433.patch</filename>
            <type>text/plain</type>
            <size>19829</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzNzgwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDgtMjUgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJd
IFJlbW92ZSBRV0tDb250ZXh0IGNsYXNzIGFuZCBtYWtlIHN1cmUgdGhlIFdlYlByb2Nlc3NQcm94
eSBsaWZlIGlzIGNvcnJlY3RseSBtYW5hZ2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4ODYgICAgICAgIAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBRV0tDb250ZXh0IGNsYXNzIGZyb20g
UXQgQVBJcyBhcyBpdCBpcyB0b28gbG93IGxldmVsIGZvciB0aGUgdmlzaW9uCisgICAgICAgIG9m
IHRoZSBRdDUgQVBJLiBRdFdlYlBhZ2VQcm94eSBub3cgaG9sZHMgZGlyZWN0bHkgYSBXZWJDb250
ZXh0IHdoaWNoIGNhbiBiZSBhIGN1c3RvbSBvbmUKKyAgICAgICAgb3IgZGVmYXVsdCBjcmVhdGVk
IG9uZS4gVGhpcyBwYXRjaCBhbHNvIGVuc3VyZSB0aGF0IHRoZSBXZWJQcm9jZXNzUHJveHkgaXMg
Y29ycmVjdGx5CisgICAgICAgIGRlc3Ryb3llZCBhdCBhcHBsaWNhdGlvbiBleGl0IGJ5IHJlbW92
aW5nIHRoZSBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gdGhlIFdlYkNvbnRleHQsCisgICAg
ICAgIFdlYlByb2Nlc3NQcm94eSwgYW5kIFdlYlBhZ2VQcm94eS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFEZXNrdG9wV2ViVmll
d1ByaXZhdGU6OlFEZXNrdG9wV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvcXRvdWNod2Vidmlldy5jcHA6CisgICAgICAgIChRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6
UVRvdWNoV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9DbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKHF0X3drX3NldFN0YXR1c1RleHQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9DbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpkZWZhdWx0V0tDb250ZXh0KToKKyAgICAg
ICAgKFF0V2ViUGFnZVByb3h5OjpRdFdlYlBhZ2VQcm94eSk6CisgICAgICAgIChRdFdlYlBhZ2VQ
cm94eTo6flF0V2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3Bw
OgorICAgICAgICAoUURlc2t0b3BXZWJQYWdlUHJveHk6OlFEZXNrdG9wV2ViUGFnZVByb3h5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmNwcDoKKyAgICAgICAgKFFUb3VjaFdl
YlBhZ2VQcm94eTo6UVRvdWNoV2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQv
cXRvdWNod2VicGFnZXByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3a2NvbnRleHQu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9xd2tjb250ZXh0Lmg6IFJlbW92
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3a2NvbnRleHRfcC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYktpdDIucHJvOgorCiAyMDExLTA4LTIzICBKb2NlbHluIFR1cmNvdHRlICA8am9j
ZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIERyaXZlIHRpbGlu
ZyBmcm9tIHRoZSBXZWJQcm9jZXNzIGFuZCByZXVzZSBUaWxlZEJhY2tpbmdTdG9yZS4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYktpdDIucHJvCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIu
cHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsOCArMjQ0LDYgQEAgSEVBREVSUyArPSBcCiAgICAg
VUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9x
dG91Y2h3ZWJwYWdlcHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmgg
XAotICAgIFVJUHJvY2Vzcy9xdC9xd2tjb250ZXh0LmggXAotICAgIFVJUHJvY2Vzcy9xdC9xd2tj
b250ZXh0X3AuaCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuaCBcCiAgICAgVUlQcm9j
ZXNzL3F0L3F3a2hpc3RvcnlfcC5oIFwKICAgICBVSVByb2Nlc3MvcXQvcXdrcHJlZmVyZW5jZXMu
aCBcCkBAIC00NzcsNyArNDc1LDYgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L3Fk
ZXNrdG9wd2VicGFnZXByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vw
cm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgXAotICAgIFVJ
UHJvY2Vzcy9xdC9xd2tjb250ZXh0LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3Rvcnku
Y3BwIFwKICAgICBVSVByb2Nlc3MvcXQvcXdrcHJlZmVyZW5jZXMuY3BwIFwKICAgICBVSVByb2Nl
c3MvcXQvU0dBZ2VudC5jcHAgXApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xZGVza3RvcHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAkocmV2aXNpb24gOTM3MjUpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDcgKzIxLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJx
ZGVza3RvcHdlYnZpZXcuaCIKICNpbmNsdWRlICJxZGVza3RvcHdlYnZpZXdfcC5oIgotI2luY2x1
ZGUgInF3a2NvbnRleHQuaCIKIAogI2luY2x1ZGUgPFFHcmFwaGljc1NjZW5lUmVzaXplRXZlbnQ+
CiAjaW5jbHVkZSA8UVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtPgpAQCAtMzksNyArMzgsNyBAQAog
CiBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpRRGVza3RvcFdlYlZpZXdQcml2YXRlKFFEZXNrdG9w
V2ViVmlldyogcSwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cFJlZikKICAgICA6IHEocSkKLSAgICAsIHBhZ2UodGhpcywgY29udGV4dFJlZiA/IG5ldyBR
V0tDb250ZXh0KGNvbnRleHRSZWYpIDogZGVmYXVsdFdLQ29udGV4dCgpLCBwYWdlR3JvdXBSZWYp
CisgICAgLCBwYWdlKHRoaXMsIGNvbnRleHRSZWYsIHBhZ2VHcm91cFJlZikKICAgICAsIGlzQ3Jh
c2hlZChmYWxzZSkKICAgICAsIG5hdmlnYXRpb25Db250cm9sbGVyKDApCiB7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5jcHAJKHJl
dmlzaW9uIDkzNzI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3
ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBRVG91Y2hXZWJWaWV3
UHJpdmF0ZTo6UVRvdWNoV2ViVmlld1ByaXZhCiAgICAgLCBwYWdlVmlldyhuZXcgUVRvdWNoV2Vi
UGFnZShxKSkKICAgICAsIHZpZXdJbnRlcmZhY2UocSwgcGFnZVZpZXcuZGF0YSgpKQogICAgICwg
aW50ZXJhY3Rpb25FbmdpbmUocSwgcGFnZVZpZXcuZGF0YSgpKQotICAgICwgcGFnZSgmdmlld0lu
dGVyZmFjZSwgJmludGVyYWN0aW9uRW5naW5lLCBkZWZhdWx0V0tDb250ZXh0KCkpCisgICAgLCBw
YWdlKCZ2aWV3SW50ZXJmYWNlLCAmaW50ZXJhY3Rpb25FbmdpbmUsIDApCiB7CiAgICAgUVRvdWNo
V2ViUGFnZVByaXZhdGUqIGNvbnN0IHBhZ2VWaWV3UHJpdmF0ZSA9IHBhZ2VWaWV3LmRhdGEoKS0+
ZDsKICAgICBwYWdlVmlld1ByaXZhdGUtPnNldFBhZ2UoJnBhZ2UpOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcAkocmV2aXNpb24gOTM3MjUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJxd2ViZXJyb3IuaCIKICNpbmNsdWRlICJxd2Vi
ZXJyb3JfcC5oIgogI2luY2x1ZGUgPFBvbGljeUludGVyZmFjZS5oPgotI2luY2x1ZGUgPHF3a2Nv
bnRleHQuaD4KICNpbmNsdWRlIDxRdFdlYlBhZ2VQcm94eS5oPgogI2luY2x1ZGUgPFZpZXdJbnRl
cmZhY2UuaD4KICNpbmNsdWRlIDxXS0ZyYW1lLmg+CkBAIC0zNywxMyArMzYsNiBAQAogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1zdGF0aWMgUVdLQ29udGV4dCogdG9RV0tDb250ZXh0KGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgaWYgKGNsaWVudEluZm8pCi0gICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFFXS0NvbnRleHQqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBRdFdlYlBhZ2VQcm94eSogdG9R
dFdlYlBhZ2VQcm94eShjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIGlmIChjbGllbnRJ
bmZvKQpAQCAtMTU1LDEyICsxNDcsNiBAQCB2b2lkIHF0X3drX3NldFN0YXR1c1RleHQoV0tQYWdl
UmVmLCBXS1N0CiAgICAgdG9WaWV3SW50ZXJmYWNlKGNsaWVudEluZm8pLT5kaWRDaGFuZ2VTdGF0
dXNUZXh0KHFUZXh0KTsKIH0KIAotdm9pZCBxdF93a19kaWRDaGFuZ2VJY29uRm9yUGFnZVVSTChX
S0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2UsIFdLVVJMUmVmIHBhZ2VVUkwsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCi17Ci0gICAgUVVybCBxVXJsID0gV0tVUkxDb3B5UVVybChwYWdlVVJM
KTsKLSAgICBlbWl0IHRvUVdLQ29udGV4dChjbGllbnRJbmZvKS0+aWNvbkNoYW5nZWRGb3JQYWdl
VVJMKHFVcmwpOwotfQotCiB2b2lkIHF0X3drX2RpZFJlbW92ZUFsbEljb25zKFdLSWNvbkRhdGFi
YXNlUmVmIGljb25EYXRhYmFzZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuaAkocmV2aXNpb24gOTM3MjUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw3ICs0Miw2IEBAIHZvaWQgcXRfd2tfZGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bkZvckYKIHZvaWQgcXRfd2tfc2V0U3RhdHVzVGV4dChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdS
ZWYgdGV4dCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiAKIC8vIEljb25EYXRhYmFzZSBjbGll
bnQuCi12b2lkIHF0X3drX2RpZENoYW5nZUljb25Gb3JQYWdlVVJMKFdLSWNvbkRhdGFiYXNlUmVm
LCBXS1VSTFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB2b2lkIHF0X3drX2RpZFJlbW92
ZUFsbEljb25zKFdLSWNvbkRhdGFiYXNlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAog
Ly8gUG9saWN5IGNsaWVudC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1F0V2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gOTM3MjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsy
NCw2IEBACiAjaW5jbHVkZSAicXdrcHJlZmVyZW5jZXNfcC5oIgogCiAjaW5jbHVkZSAiQ2xpZW50
SW1wbC5oIgotI2luY2x1ZGUgInF3a2NvbnRleHQuaCIKLSNpbmNsdWRlICJxd2tjb250ZXh0X3Au
aCIKICNpbmNsdWRlICJxd2toaXN0b3J5LmgiCiAjaW5jbHVkZSAicXdraGlzdG9yeV9wLmgiCiAj
aW5jbHVkZSAiVmlld0ludGVyZmFjZS5oIgpAQCAtNjEsMTAgKzU5LDE2IEBACiB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVFXS0NvbnRleHQqIGRl
ZmF1bHRXS0NvbnRleHQoKQorCitSZWZQdHI8V2ViQ29udGV4dD4gUXRXZWJQYWdlUHJveHk6OnNf
ZGVmYXVsdENvbnRleHQ7CisKK3Vuc2lnbmVkIFF0V2ViUGFnZVByb3h5OjpzX2RlZmF1bHRQYWdl
UHJveHlDb3VudCA9IDA7CisKK1Bhc3NSZWZQdHI8V2ViQ29udGV4dD4gUXRXZWJQYWdlUHJveHk6
OmRlZmF1bHRXS0NvbnRleHQoKQogewotICAgIHN0YXRpYyBRV0tDb250ZXh0KiBkZWZhdWx0Q29u
dGV4dCA9IG5ldyBRV0tDb250ZXh0KCk7Ci0gICAgcmV0dXJuIGRlZmF1bHRDb250ZXh0OworICAg
IGlmICghc19kZWZhdWx0Q29udGV4dCkKKyAgICAgICAgc19kZWZhdWx0Q29udGV4dCA9IFdlYkNv
bnRleHQ6OmNyZWF0ZShTdHJpbmcoKSk7CisgICAgcmV0dXJuIHNfZGVmYXVsdENvbnRleHQ7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgUXQ6OkRyb3BBY3Rpb25zIGRyYWdPcGVyYXRpb25Ub0Ryb3BBY3Rp
b25zKHVuc2lnbmVkIGRyYWdPcGVyYXRpb25zKQpAQCAtOTUsMTggKzk5LDIwIEBAIFdlYkNvcmU6
OkRyYWdPcGVyYXRpb24gZHJvcEFjdGlvblRvRHJhZ08KICAgICByZXR1cm4gKERyYWdPcGVyYXRp
b24pcmVzdWx0OwogfQogCi1RdFdlYlBhZ2VQcm94eTo6UXRXZWJQYWdlUHJveHkoVmlld0ludGVy
ZmFjZSogdmlld0ludGVyZmFjZSwgUG9saWN5SW50ZXJmYWNlKiBwb2xpY3lJbnRlcmZhY2UsIFFX
S0NvbnRleHQqIGMsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK1F0V2ViUGFnZVByb3h5
OjpRdFdlYlBhZ2VQcm94eShWaWV3SW50ZXJmYWNlKiB2aWV3SW50ZXJmYWNlLCBQb2xpY3lJbnRl
cmZhY2UqIHBvbGljeUludGVyZmFjZSwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdy
b3VwUmVmIHBhZ2VHcm91cFJlZikKICAgICA6IG1fdmlld0ludGVyZmFjZSh2aWV3SW50ZXJmYWNl
KQogICAgICwgbV9wb2xpY3lJbnRlcmZhY2UocG9saWN5SW50ZXJmYWNlKQotICAgICwgbV9jb250
ZXh0KGMpCisgICAgLCBtX2NvbnRleHQoY29udGV4dFJlZiA/IHRvSW1wbChjb250ZXh0UmVmKSA6
IGRlZmF1bHRXS0NvbnRleHQoKSkKICAgICAsIG1fcHJlZmVyZW5jZXMoMCkKICAgICAsIG1fdW5k
b1N0YWNrKGFkb3B0UHRyKG5ldyBRVW5kb1N0YWNrKHRoaXMpKSkKICAgICAsIG1fbG9hZFByb2dy
ZXNzKDApCiB7CiAgICAgQVNTRVJUKHZpZXdJbnRlcmZhY2UpOwogICAgIG1lbXNldChtX2FjdGlv
bnMsIDAsIHNpemVvZihtX2FjdGlvbnMpKTsKLSAgICBtX3dlYlBhZ2VQcm94eSA9IG1fY29udGV4
dC0+ZC0+Y29udGV4dC0+Y3JlYXRlV2ViUGFnZSh0aGlzLCB0b0ltcGwocGFnZUdyb3VwUmVmKSk7
CisgICAgbV93ZWJQYWdlUHJveHkgPSBtX2NvbnRleHQtPmNyZWF0ZVdlYlBhZ2UodGhpcywgdG9J
bXBsKHBhZ2VHcm91cFJlZikpOwogICAgIG1faGlzdG9yeSA9IFFXS0hpc3RvcnlQcml2YXRlOjpj
cmVhdGVIaXN0b3J5KHRoaXMsIG1fd2ViUGFnZVByb3h5LT5iYWNrRm9yd2FyZExpc3QoKSk7Cisg
ICAgaWYgKCFjb250ZXh0UmVmKQorICAgICAgICBzX2RlZmF1bHRQYWdlUHJveHlDb3VudCsrOwog
fQogCiB2b2lkIFF0V2ViUGFnZVByb3h5Ojppbml0KCkKQEAgLTIwNCw2ICsyMTAsMTQgQEAgdm9p
ZCBRdFdlYlBhZ2VQcm94eTo6aW5pdCgpCiBRdFdlYlBhZ2VQcm94eTo6flF0V2ViUGFnZVByb3h5
KCkKIHsKICAgICBtX3dlYlBhZ2VQcm94eS0+Y2xvc2UoKTsKKyAgICBtX2NvbnRleHQtPmRpc2Nv
bm5lY3RQcm9jZXNzKG1fY29udGV4dC0+cHJvY2VzcygpKTsKKyAgICAvLyBUaGUgY29udGV4dCBp
cyB0aGUgZGVmYXVsdCBvbmUgYW5kIHdlJ3JlIGRlbGV0aW5nIHRoZSBsYXN0IFF0V2ViUGFnZVBy
b3h5LgorICAgIGlmIChtX2NvbnRleHQgPT0gc19kZWZhdWx0Q29udGV4dCkgeworICAgICAgICBB
U1NFUlQoc19kZWZhdWx0UGFnZVByb3h5Q291bnQgPiAwKTsKKyAgICAgICAgc19kZWZhdWx0UGFn
ZVByb3h5Q291bnQtLTsKKyAgICAgICAgaWYgKCFzX2RlZmF1bHRQYWdlUHJveHlDb3VudCkKKyAg
ICAgICAgICAgIHNfZGVmYXVsdENvbnRleHQgPSAwOworICAgIH0KICAgICBkZWxldGUgbV9oaXN0
b3J5OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdl
UHJveHkuaAkocmV2aXNpb24gOTM3MjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRXZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAj
aW5jbHVkZSAiVmlld0ludGVyZmFjZS5oIgorI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
UUJhc2ljVGltZXI+CkBAIC00MiwxNCArNDMsMTEgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFz
cyBRVW5kb1N0YWNrOwogUVRfRU5EX05BTUVTUEFDRQogCi1jbGFzcyBRV0tDb250ZXh0OwogY2xh
c3MgUVdLSGlzdG9yeTsKIGNsYXNzIFFXS1ByZWZlcmVuY2VzOwogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogCi1RV0tDb250ZXh0ICpkZWZhdWx0V0tDb250ZXh0KCk7Ci0KIFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24gZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlvbihRdDo6RHJvcEFjdGlvbnMgYWN0
aW9ucyk7CiAKIC8vIEZJWE1FOiBuZWVkcyBmb2N1cyBpbi9vdXQsIHdpbmRvdyBhY3RpdmF0aW9u
LCBzdXBwb3J0IHRocm91Z2ggdmlld1N0YXRlRGlkQ2hhbmdlKCkuCkBAIC03MSw3ICs2OSw3IEBA
IHB1YmxpYzoKICAgICAgICAgV2ViQWN0aW9uQ291bnQKICAgICB9OwogCi0gICAgUXRXZWJQYWdl
UHJveHkoV2ViS2l0OjpWaWV3SW50ZXJmYWNlKiwgV2ViS2l0OjpQb2xpY3lJbnRlcmZhY2UqLCBR
V0tDb250ZXh0KiwgV0tQYWdlR3JvdXBSZWYgPSAwKTsKKyAgICBRdFdlYlBhZ2VQcm94eShXZWJL
aXQ6OlZpZXdJbnRlcmZhY2UqLCBXZWJLaXQ6OlBvbGljeUludGVyZmFjZSosIFdLQ29udGV4dFJl
ZiwgV0tQYWdlR3JvdXBSZWYgPSAwKTsKICAgICB+UXRXZWJQYWdlUHJveHkoKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBoYW5kbGVFdmVudChRRXZlbnQqKTsKQEAgLTE5Niw3ICsxOTQsMTEgQEAgcHJp
dmF0ZToKICAgICBib29sIGhhbmRsZUZvY3VzSW5FdmVudChRRm9jdXNFdmVudCopOwogICAgIGJv
b2wgaGFuZGxlRm9jdXNPdXRFdmVudChRRm9jdXNFdmVudCopOwogCi0gICAgUVdLQ29udGV4dCog
bV9jb250ZXh0OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbnRleHQ+IGRlZmF1bHRXS0Nv
bnRleHQoKTsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkNvbnRleHQ+IHNfZGVmYXVsdENvbnRleHQ7
CisgICAgc3RhdGljIHVuc2lnbmVkIHNfZGVmYXVsdFBhZ2VQcm94eUNvdW50OworCisgICAgUmVm
UHRyPFdlYkNvbnRleHQ+IG1fY29udGV4dDsKICAgICBRV0tIaXN0b3J5KiBtX2hpc3Rvcnk7CiAK
ICAgICBtdXRhYmxlIFFBY3Rpb24qIG1fYWN0aW9uc1tRdFdlYlBhZ2VQcm94eTo6V2ViQWN0aW9u
Q291bnRdOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFn
ZXByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRl
c2t0b3B3ZWJwYWdlcHJveHkuY3BwCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDcgKzQ3LDcgQEAgc3RhdGljIGlubGluZSBRdDo6RHJvcEFjdGlvbiBkcmFnT3BlcmF0aQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVFEZXNrdG9wV2ViUGFnZVByb3h5OjpRRGVza3RvcFdl
YlBhZ2VQcm94eShRRGVza3RvcFdlYlZpZXdQcml2YXRlKiBkZXNrdG9wV2ViVmlldywgUVdLQ29u
dGV4dCogY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwKQorUURlc2t0b3BXZWJQYWdl
UHJveHk6OlFEZXNrdG9wV2ViUGFnZVByb3h5KFFEZXNrdG9wV2ViVmlld1ByaXZhdGUqIGRlc2t0
b3BXZWJWaWV3LCBXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3Vw
KQogICAgIDogUXRXZWJQYWdlUHJveHkoZGVza3RvcFdlYlZpZXcsIGRlc2t0b3BXZWJWaWV3LCBj
b250ZXh0LCBwYWdlR3JvdXApCiB7CiAgICAgaW5pdCgpOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmgJKHJldmlzaW9uIDkz
NzI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIGNsYXNzIFFEZXNrdG9wV2ViUGFnZVByb3h5IDogcHVibGljIFF0V2ViUGFnZVByb3h5CiB7
CiBwdWJsaWM6Ci0gICAgUURlc2t0b3BXZWJQYWdlUHJveHkoUURlc2t0b3BXZWJWaWV3UHJpdmF0
ZSosIFFXS0NvbnRleHQqLCBXS1BhZ2VHcm91cFJlZiA9IDApOworICAgIFFEZXNrdG9wV2ViUGFn
ZVByb3h5KFFEZXNrdG9wV2ViVmlld1ByaXZhdGUqLCBXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3Vw
UmVmID0gMCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoUUV2ZW50Kik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJv
eHkuY3BwCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9x
dG91Y2h3ZWJwYWdlcHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1RVG91Y2hXZWJQYWdlUHJveHk6OlFUb3VjaFdl
YlBhZ2VQcm94eShUb3VjaFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UsIFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUqIHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUsIFFXS0NvbnRleHQqIGNv
bnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK1FUb3VjaFdlYlBhZ2VQcm94eTo6
UVRvdWNoV2ViUGFnZVByb3h5KFRvdWNoVmlld0ludGVyZmFjZSogdmlld0ludGVyZmFjZSwgVmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSwgV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKICAgICA6IFF0V2Vi
UGFnZVByb3h5KHZpZXdJbnRlcmZhY2UsIDAsIGNvbnRleHQsIHBhZ2VHcm91cFJlZikKICAgICAs
IG1fcGFuR2VzdHVyZVJlY29nbml6ZXIodmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSkKICAgICAs
IG1fcGluY2hHZXN0dXJlUmVjb2duaXplcih2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHku
aAkocmV2aXNpb24gOTM3MjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXRvdWNo
d2VicGFnZXByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKIGNsYXNzIFFUb3VjaFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBRdFdlYlBh
Z2VQcm94eQogewogcHVibGljOgotICAgIFFUb3VjaFdlYlBhZ2VQcm94eShUb3VjaFZpZXdJbnRl
cmZhY2UqLCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiwgUVdLQ29udGV4dCosIFdLUGFnZUdy
b3VwUmVmID0gMCk7CisgICAgUVRvdWNoV2ViUGFnZVByb3h5KFRvdWNoVmlld0ludGVyZmFjZSos
IFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqLCBXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVm
ID0gMCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoUUV2ZW50Kik7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2tjb250ZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdrY29udGV4dC5jcHAJKHJldmlzaW9uIDkz
NzI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2NvbnRleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgInF3a2NvbnRleHQuaCIKLSNpbmNsdWRlICJxd2tjb250ZXh0
X3AuaCIKLQotI2luY2x1ZGUgIkNsaWVudEltcGwuaCIKLSNpbmNsdWRlICJJY29uRGF0YWJhc2Uu
aCIKLSNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgPFFEaXI+Ci0jaW5jbHVkZSA8UVBpeG1h
cD4KLSNpbmNsdWRlIDxRVXJsPgotI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZS5oIgotI2luY2x1
ZGUgIldlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2luY2x1ZGUgIldLSWNvbkRhdGFiYXNlLmgi
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBpbml0aWFs
aXplUGxhdGZvcm1TdHJhdGVnaWVzSWZOZWVkZWQoKQotewotICAgIHN0YXRpYyBib29sIGluaXRp
YWxpemVkID0gZmFsc2U7Ci0gICAgaWYgKGluaXRpYWxpemVkKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKTsKLSAgICBpbml0aWFsaXpl
ZCA9IHRydWU7Ci19Ci0KLVFXS0NvbnRleHRQcml2YXRlOjpRV0tDb250ZXh0UHJpdmF0ZShRV0tD
b250ZXh0KiBxcSwgV2ViQ29udGV4dCogd2ViQ29udGV4dCkKLSAgICA6IHEocXEpCi17Ci0gICAg
aWYgKCF3ZWJDb250ZXh0KQotICAgICAgICBjb250ZXh0ID0gV2ViQ29udGV4dDo6Y3JlYXRlKFN0
cmluZygpKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnRleHQgPSB3ZWJDb250ZXh0OwotCi0gICAg
aW5pdGlhbGl6ZVBsYXRmb3JtU3RyYXRlZ2llc0lmTmVlZGVkKCk7Ci0KLSAgICBXS0ljb25EYXRh
YmFzZUNsaWVudCBpY29uRGF0YWJhc2VDbGllbnQgPSB7Ci0gICAgICAgIDAsICAgICAgLy8gdmVy
c2lvbgotICAgICAgICBxcSwgICAgIC8vIGNsaWVudEluZm8KLSAgICAgICAgcXRfd2tfZGlkQ2hh
bmdlSWNvbkZvclBhZ2VVUkwsCi0gICAgICAgIHF0X3drX2RpZFJlbW92ZUFsbEljb25zCi0gICAg
fTsKLQotICAgIFdLSWNvbkRhdGFiYXNlU2V0SWNvbkRhdGFiYXNlQ2xpZW50KHRvQVBJKGNvbnRl
eHQtPmljb25EYXRhYmFzZSgpKSwgJmljb25EYXRhYmFzZUNsaWVudCk7Ci19Ci0KLVFXS0NvbnRl
eHRQcml2YXRlOjp+UVdLQ29udGV4dFByaXZhdGUoKQoteyB9Ci0KLVFXS0NvbnRleHQ6OlFXS0Nv
bnRleHQoUU9iamVjdCogcGFyZW50KQotICAgIDogUU9iamVjdChwYXJlbnQpCi0gICAgLCBkKG5l
dyBRV0tDb250ZXh0UHJpdmF0ZSh0aGlzKSkKLXsgfQotCi1RV0tDb250ZXh0OjpRV0tDb250ZXh0
KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBRT2JqZWN0KiBwYXJlbnQpCi0gICAgOiBRT2JqZWN0
KHBhcmVudCkKLSAgICAsIGQobmV3IFFXS0NvbnRleHRQcml2YXRlKHRoaXMsIHRvSW1wbChjb250
ZXh0UmVmKSkpCi17IH0KLQotUVdLQ29udGV4dDo6flFXS0NvbnRleHQoKQotewotICAgIGRlbGV0
ZSBkOwotfQotCi12b2lkIFFXS0NvbnRleHQ6OnNldEljb25EYXRhYmFzZVBhdGgoY29uc3QgUVN0
cmluZyYgcGF0aCkKLXsKLSAgICAvLyBGSVhNRTogVGhlcmUgaXMgY3VycmVudGx5IG5vIHdheSB0
byBkaXNhYmxlIHRoZSBpY29uIGRhdGFiYXNlIG9uY2UgaXQncyBlbmFibGVkLgotICAgIFFGaWxl
SW5mbyBpbmZvKHBhdGgpOwotICAgIGlmIChpbmZvLmlzRGlyKCkgJiYgaW5mby5pc1dyaXRhYmxl
KCkpIHsKLSAgICAgICAgUVN0cmluZyBkYXRhYmFzZVBhdGggPSBwYXRoICsgUURpcjo6c2VwYXJh
dG9yKCkgKyBRU3RyaW5nKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGVmYXVsdERhdGFiYXNlRmls
ZW5hbWUoKSk7Ci0gICAgICAgIGQtPmNvbnRleHQtPnNldEljb25EYXRhYmFzZVBhdGgoZGF0YWJh
c2VQYXRoKTsKLSAgICB9Ci19Ci0KLVFJY29uIFFXS0NvbnRleHQ6Omljb25Gb3JQYWdlVVJMKGNv
bnN0IFFVcmwmIHBhZ2VVUkwpIGNvbnN0Ci17Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBp
bWFnZSA9IGQtPmNvbnRleHQtPmljb25EYXRhYmFzZSgpLT5pbWFnZUZvclBhZ2VVUkwocGFnZVVS
TC50b1N0cmluZygpKTsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gUUljb24oKTsK
LQotICAgIFFQaXhtYXAqIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7Ci0gICAgaWYgKCFuYXRpdmVJbWFnZSkKLSAgICAgICAgcmV0dXJuIFFJY29uKCk7
Ci0KLSAgICByZXR1cm4gUUljb24oKm5hdGl2ZUltYWdlKTsKLX0KLQotI2luY2x1ZGUgIm1vY19x
d2tjb250ZXh0LmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2tjb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2NvbnRl
eHQuaAkocmV2aXNpb24gOTM3MjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdr
Y29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSovCi0KLSNpZm5kZWYgcXdrY29udGV4dF9oCi0jZGVmaW5lIHF3a2NvbnRleHRfaAotCi0jaW5j
bHVkZSAicXdlYmtpdGdsb2JhbC5oIgotI2luY2x1ZGUgPFFPYmplY3Q+Ci0jaW5jbHVkZSA8V2Vi
S2l0Mi9XS0NvbnRleHQuaD4KLQotY2xhc3MgUUljb247Ci1jbGFzcyBRVXJsOwotY2xhc3MgUVdL
Q29udGV4dFByaXZhdGU7Ci0KLWNsYXNzIFFXRUJLSVRfRVhQT1JUIFFXS0NvbnRleHQgOiBwdWJs
aWMgUU9iamVjdCB7Ci0gICAgUV9PQkpFQ1QKLXB1YmxpYzoKLSAgICBRV0tDb250ZXh0KFFPYmpl
Y3QqIHBhcmVudCA9IDApOwotICAgIHZpcnR1YWwgflFXS0NvbnRleHQoKTsKLQotICAgIC8vIEJy
aWRnZSBmcm9tIHRoZSBDIEFQSQotICAgIFFXS0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIFFPYmplY3QqIHBhcmVudCA9IDApOwotCi0gICAgdm9pZCBzZXRJY29uRGF0YWJhc2VQYXRo
KGNvbnN0IFFTdHJpbmcmKTsKLSAgICBRSWNvbiBpY29uRm9yUGFnZVVSTChjb25zdCBRVXJsJikg
Y29uc3Q7Ci0KLXB1YmxpYzoKLSAgICBRX1NJR05BTCB2b2lkIGljb25DaGFuZ2VkRm9yUGFnZVVS
TChjb25zdCBRVXJsJik7Ci0KLXByaXZhdGU6Ci0gICAgUVdLQ29udGV4dFByaXZhdGUqIGQ7Ci0K
LSAgICBmcmllbmQgY2xhc3MgUXRXZWJQYWdlUHJveHk7Ci19OwotCi0jZW5kaWYgLyogcXdrY29u
dGV4dF9oICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdrY29udGV4dF9w
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2NvbnRleHRf
cC5oCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2tj
b250ZXh0X3AuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzNyArMCwwIEBACi0vKgotICAgIENvcHly
aWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0qLwotCi0KLSNpZm5kZWYgcXdrY29udGV4dF9wX2gKLSNkZWZpbmUgcXdrY29udGV4dF9wX2gK
LQotI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLWNs
YXNzIFFXS0NvbnRleHRQcml2YXRlIHsKLXB1YmxpYzoKLSAgICBRV0tDb250ZXh0UHJpdmF0ZShR
V0tDb250ZXh0KiwgV2ViS2l0OjpXZWJDb250ZXh0KiA9IDApOwotICAgIH5RV0tDb250ZXh0UHJp
dmF0ZSgpOwotCi0gICAgUVdLQ29udGV4dCogcTsKLQotICAgIFJlZlB0cjxXZWJLaXQ6OldlYkNv
bnRleHQ+IGNvbnRleHQ7Ci19OwotCi0jZW5kaWYgLyogcWtjb250ZXh0X3BfaCAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105184</attachid>
            <date>2011-08-25 07:28:02 -0700</date>
            <delta_ts>2011-08-25 07:31:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66886-20110825112630.patch</filename>
            <type>text/plain</type>
            <size>20157</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzNzgwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDgtMjUgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJd
IFJlbW92ZSBRV0tDb250ZXh0IGNsYXNzIGFuZCBtYWtlIHN1cmUgdGhlIFdlYlByb2Nlc3NQcm94
eSBsaWZlIGlzIGNvcnJlY3RseSBtYW5hZ2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4ODYgICAgICAgIAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBRV0tDb250ZXh0IGNsYXNzIGZyb20g
UXQgQVBJcyBhcyBpdCBpcyB0b28gbG93IGxldmVsIGZvciB0aGUgdmlzaW9uCisgICAgICAgIG9m
IHRoZSBRdDUgQVBJLiBRdFdlYlBhZ2VQcm94eSBub3cgaG9sZHMgZGlyZWN0bHkgYSBXZWJDb250
ZXh0IHdoaWNoIGNhbiBiZSBhIGN1c3RvbSBvbmUKKyAgICAgICAgb3IgZGVmYXVsdCBjcmVhdGVk
IG9uZS4gVGhpcyBwYXRjaCBhbHNvIGVuc3VyZSB0aGF0IHRoZSBXZWJQcm9jZXNzUHJveHkgaXMg
Y29ycmVjdGx5CisgICAgICAgIGRlc3Ryb3llZCBhdCBhcHBsaWNhdGlvbiBleGl0IGJ5IHJlbW92
aW5nIHRoZSBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gdGhlIFdlYkNvbnRleHQsCisgICAg
ICAgIFdlYlByb2Nlc3NQcm94eSwgYW5kIFdlYlBhZ2VQcm94eS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFEZXNrdG9wV2ViVmll
d1ByaXZhdGU6OlFEZXNrdG9wV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvcXRvdWNod2Vidmlldy5jcHA6CisgICAgICAgIChRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6
UVRvdWNoV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9DbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKHF0X3drX3NldFN0YXR1c1RleHQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9DbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpkZWZhdWx0V0tDb250ZXh0KToKKyAgICAg
ICAgKFF0V2ViUGFnZVByb3h5OjpRdFdlYlBhZ2VQcm94eSk6CisgICAgICAgIChRdFdlYlBhZ2VQ
cm94eTo6flF0V2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3Bw
OgorICAgICAgICAoUURlc2t0b3BXZWJQYWdlUHJveHk6OlFEZXNrdG9wV2ViUGFnZVByb3h5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmNwcDoKKyAgICAgICAgKFFUb3VjaFdl
YlBhZ2VQcm94eTo6UVRvdWNoV2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQv
cXRvdWNod2VicGFnZXByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3a2NvbnRleHQu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9xd2tjb250ZXh0Lmg6IFJlbW92
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3a2NvbnRleHRfcC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYktpdDIucHJvOgorCiAyMDExLTA4LTIzICBKb2NlbHluIFR1cmNvdHRlICA8am9j
ZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIERyaXZlIHRpbGlu
ZyBmcm9tIHRoZSBXZWJQcm9jZXNzIGFuZCByZXVzZSBUaWxlZEJhY2tpbmdTdG9yZS4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYktpdDIucHJvCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIu
cHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsOCArMjQ0LDYgQEAgSEVBREVSUyArPSBcCiAgICAg
VUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9x
dG91Y2h3ZWJwYWdlcHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmgg
XAotICAgIFVJUHJvY2Vzcy9xdC9xd2tjb250ZXh0LmggXAotICAgIFVJUHJvY2Vzcy9xdC9xd2tj
b250ZXh0X3AuaCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuaCBcCiAgICAgVUlQcm9j
ZXNzL3F0L3F3a2hpc3RvcnlfcC5oIFwKICAgICBVSVByb2Nlc3MvcXQvcXdrcHJlZmVyZW5jZXMu
aCBcCkBAIC00NzcsNyArNDc1LDYgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L3Fk
ZXNrdG9wd2VicGFnZXByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vw
cm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgXAotICAgIFVJ
UHJvY2Vzcy9xdC9xd2tjb250ZXh0LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3Rvcnku
Y3BwIFwKICAgICBVSVByb2Nlc3MvcXQvcXdrcHJlZmVyZW5jZXMuY3BwIFwKICAgICBVSVByb2Nl
c3MvcXQvU0dBZ2VudC5jcHAgXApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xZGVza3RvcHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAkocmV2aXNpb24gOTM3MjUpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDcgKzIxLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJx
ZGVza3RvcHdlYnZpZXcuaCIKICNpbmNsdWRlICJxZGVza3RvcHdlYnZpZXdfcC5oIgotI2luY2x1
ZGUgInF3a2NvbnRleHQuaCIKIAogI2luY2x1ZGUgPFFHcmFwaGljc1NjZW5lUmVzaXplRXZlbnQ+
CiAjaW5jbHVkZSA8UVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtPgpAQCAtMzksNyArMzgsNyBAQAog
CiBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpRRGVza3RvcFdlYlZpZXdQcml2YXRlKFFEZXNrdG9w
V2ViVmlldyogcSwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cFJlZikKICAgICA6IHEocSkKLSAgICAsIHBhZ2UodGhpcywgY29udGV4dFJlZiA/IG5ldyBR
V0tDb250ZXh0KGNvbnRleHRSZWYpIDogZGVmYXVsdFdLQ29udGV4dCgpLCBwYWdlR3JvdXBSZWYp
CisgICAgLCBwYWdlKHRoaXMsIGNvbnRleHRSZWYsIHBhZ2VHcm91cFJlZikKICAgICAsIGlzQ3Jh
c2hlZChmYWxzZSkKICAgICAsIG5hdmlnYXRpb25Db250cm9sbGVyKDApCiB7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5jcHAJKHJl
dmlzaW9uIDkzNzI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3
ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBRVG91Y2hXZWJWaWV3
UHJpdmF0ZTo6UVRvdWNoV2ViVmlld1ByaXZhCiAgICAgLCBwYWdlVmlldyhuZXcgUVRvdWNoV2Vi
UGFnZShxKSkKICAgICAsIHZpZXdJbnRlcmZhY2UocSwgcGFnZVZpZXcuZGF0YSgpKQogICAgICwg
aW50ZXJhY3Rpb25FbmdpbmUocSwgcGFnZVZpZXcuZGF0YSgpKQotICAgICwgcGFnZSgmdmlld0lu
dGVyZmFjZSwgJmludGVyYWN0aW9uRW5naW5lLCBkZWZhdWx0V0tDb250ZXh0KCkpCisgICAgLCBw
YWdlKCZ2aWV3SW50ZXJmYWNlLCAmaW50ZXJhY3Rpb25FbmdpbmUsIDApCiB7CiAgICAgUVRvdWNo
V2ViUGFnZVByaXZhdGUqIGNvbnN0IHBhZ2VWaWV3UHJpdmF0ZSA9IHBhZ2VWaWV3LmRhdGEoKS0+
ZDsKICAgICBwYWdlVmlld1ByaXZhdGUtPnNldFBhZ2UoJnBhZ2UpOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcAkocmV2aXNpb24gOTM3MjUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJxd2ViZXJyb3IuaCIKICNpbmNsdWRlICJxd2Vi
ZXJyb3JfcC5oIgogI2luY2x1ZGUgPFBvbGljeUludGVyZmFjZS5oPgotI2luY2x1ZGUgPHF3a2Nv
bnRleHQuaD4KICNpbmNsdWRlIDxRdFdlYlBhZ2VQcm94eS5oPgogI2luY2x1ZGUgPFZpZXdJbnRl
cmZhY2UuaD4KICNpbmNsdWRlIDxXS0ZyYW1lLmg+CkBAIC0zNywxMyArMzYsNiBAQAogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1zdGF0aWMgUVdLQ29udGV4dCogdG9RV0tDb250ZXh0KGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgaWYgKGNsaWVudEluZm8pCi0gICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFFXS0NvbnRleHQqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBRdFdlYlBhZ2VQcm94eSogdG9R
dFdlYlBhZ2VQcm94eShjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIGlmIChjbGllbnRJ
bmZvKQpAQCAtMTU1LDE2ICsxNDcsNiBAQCB2b2lkIHF0X3drX3NldFN0YXR1c1RleHQoV0tQYWdl
UmVmLCBXS1N0CiAgICAgdG9WaWV3SW50ZXJmYWNlKGNsaWVudEluZm8pLT5kaWRDaGFuZ2VTdGF0
dXNUZXh0KHFUZXh0KTsKIH0KIAotdm9pZCBxdF93a19kaWRDaGFuZ2VJY29uRm9yUGFnZVVSTChX
S0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2UsIFdLVVJMUmVmIHBhZ2VVUkwsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCi17Ci0gICAgUVVybCBxVXJsID0gV0tVUkxDb3B5UVVybChwYWdlVVJM
KTsKLSAgICBlbWl0IHRvUVdLQ29udGV4dChjbGllbnRJbmZvKS0+aWNvbkNoYW5nZWRGb3JQYWdl
VVJMKHFVcmwpOwotfQotCi12b2lkIHF0X3drX2RpZFJlbW92ZUFsbEljb25zKFdLSWNvbkRhdGFi
YXNlUmVmIGljb25EYXRhYmFzZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLX0KLQogc3Rh
dGljIFF0OjpNb3VzZUJ1dHRvbiB0b1F0TW91c2VCdXR0b24oV0tFdmVudE1vdXNlQnV0dG9uIGJ1
dHRvbikKIHsKICAgICBzd2l0Y2ggKGJ1dHRvbikgewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L0NsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSw2
IEBAIHZvaWQgcXRfd2tfZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckYKIC8vIHVpIGNsaWVu
dAogdm9pZCBxdF93a19zZXRTdGF0dXNUZXh0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB0
ZXh0LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIAotLy8gSWNvbkRhdGFiYXNlIGNsaWVudC4K
LXZvaWQgcXRfd2tfZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwoV0tJY29uRGF0YWJhc2VSZWYsIFdL
VVJMUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLXZvaWQgcXRfd2tfZGlkUmVtb3ZlQWxs
SWNvbnMoV0tJY29uRGF0YWJhc2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotCiAvLyBQ
b2xpY3kgY2xpZW50Lgogdm9pZCBxdF93a19kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tGcmFtZU5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW9k
aWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24sIFdLVVJMUmVxdWVzdFJlZiwgV0tGcmFtZVBvbGlj
eUxpc3RlbmVyUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94
eS5jcHAJKHJldmlzaW9uIDkzNzI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsOCArMjQsNiBAQAogI2luY2x1
ZGUgInF3a3ByZWZlcmVuY2VzX3AuaCIKIAogI2luY2x1ZGUgIkNsaWVudEltcGwuaCIKLSNpbmNs
dWRlICJxd2tjb250ZXh0LmgiCi0jaW5jbHVkZSAicXdrY29udGV4dF9wLmgiCiAjaW5jbHVkZSAi
cXdraGlzdG9yeS5oIgogI2luY2x1ZGUgInF3a2hpc3RvcnlfcC5oIgogI2luY2x1ZGUgIlZpZXdJ
bnRlcmZhY2UuaCIKQEAgLTYxLDEwICs1OSwxNiBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1RV0tDb250ZXh0KiBkZWZhdWx0V0tDb250ZXh0
KCkKKworUmVmUHRyPFdlYkNvbnRleHQ+IFF0V2ViUGFnZVByb3h5OjpzX2RlZmF1bHRDb250ZXh0
OworCit1bnNpZ25lZCBRdFdlYlBhZ2VQcm94eTo6c19kZWZhdWx0UGFnZVByb3h5Q291bnQgPSAw
OworCitQYXNzUmVmUHRyPFdlYkNvbnRleHQ+IFF0V2ViUGFnZVByb3h5OjpkZWZhdWx0V0tDb250
ZXh0KCkKIHsKLSAgICBzdGF0aWMgUVdLQ29udGV4dCogZGVmYXVsdENvbnRleHQgPSBuZXcgUVdL
Q29udGV4dCgpOwotICAgIHJldHVybiBkZWZhdWx0Q29udGV4dDsKKyAgICBpZiAoIXNfZGVmYXVs
dENvbnRleHQpCisgICAgICAgIHNfZGVmYXVsdENvbnRleHQgPSBXZWJDb250ZXh0OjpjcmVhdGUo
U3RyaW5nKCkpOworICAgIHJldHVybiBzX2RlZmF1bHRDb250ZXh0OwogfQogCiBzdGF0aWMgaW5s
aW5lIFF0OjpEcm9wQWN0aW9ucyBkcmFnT3BlcmF0aW9uVG9Ecm9wQWN0aW9ucyh1bnNpZ25lZCBk
cmFnT3BlcmF0aW9ucykKQEAgLTk1LDE4ICs5OSwyMCBAQCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
IGRyb3BBY3Rpb25Ub0RyYWdPCiAgICAgcmV0dXJuIChEcmFnT3BlcmF0aW9uKXJlc3VsdDsKIH0K
IAotUXRXZWJQYWdlUHJveHk6OlF0V2ViUGFnZVByb3h5KFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRl
cmZhY2UsIFBvbGljeUludGVyZmFjZSogcG9saWN5SW50ZXJmYWNlLCBRV0tDb250ZXh0KiBjLCBX
S1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCitRdFdlYlBhZ2VQcm94eTo6UXRXZWJQYWdlUHJv
eHkoVmlld0ludGVyZmFjZSogdmlld0ludGVyZmFjZSwgUG9saWN5SW50ZXJmYWNlKiBwb2xpY3lJ
bnRlcmZhY2UsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3Jv
dXBSZWYpCiAgICAgOiBtX3ZpZXdJbnRlcmZhY2Uodmlld0ludGVyZmFjZSkKICAgICAsIG1fcG9s
aWN5SW50ZXJmYWNlKHBvbGljeUludGVyZmFjZSkKLSAgICAsIG1fY29udGV4dChjKQorICAgICwg
bV9jb250ZXh0KGNvbnRleHRSZWYgPyB0b0ltcGwoY29udGV4dFJlZikgOiBkZWZhdWx0V0tDb250
ZXh0KCkpCiAgICAgLCBtX3ByZWZlcmVuY2VzKDApCiAgICAgLCBtX3VuZG9TdGFjayhhZG9wdFB0
cihuZXcgUVVuZG9TdGFjayh0aGlzKSkpCiAgICAgLCBtX2xvYWRQcm9ncmVzcygwKQogewogICAg
IEFTU0VSVCh2aWV3SW50ZXJmYWNlKTsKICAgICBtZW1zZXQobV9hY3Rpb25zLCAwLCBzaXplb2Yo
bV9hY3Rpb25zKSk7Ci0gICAgbV93ZWJQYWdlUHJveHkgPSBtX2NvbnRleHQtPmQtPmNvbnRleHQt
PmNyZWF0ZVdlYlBhZ2UodGhpcywgdG9JbXBsKHBhZ2VHcm91cFJlZikpOworICAgIG1fd2ViUGFn
ZVByb3h5ID0gbV9jb250ZXh0LT5jcmVhdGVXZWJQYWdlKHRoaXMsIHRvSW1wbChwYWdlR3JvdXBS
ZWYpKTsKICAgICBtX2hpc3RvcnkgPSBRV0tIaXN0b3J5UHJpdmF0ZTo6Y3JlYXRlSGlzdG9yeSh0
aGlzLCBtX3dlYlBhZ2VQcm94eS0+YmFja0ZvcndhcmRMaXN0KCkpOworICAgIGlmICghY29udGV4
dFJlZikKKyAgICAgICAgc19kZWZhdWx0UGFnZVByb3h5Q291bnQrKzsKIH0KIAogdm9pZCBRdFdl
YlBhZ2VQcm94eTo6aW5pdCgpCkBAIC0yMDQsNiArMjEwLDE0IEBAIHZvaWQgUXRXZWJQYWdlUHJv
eHk6OmluaXQoKQogUXRXZWJQYWdlUHJveHk6On5RdFdlYlBhZ2VQcm94eSgpCiB7CiAgICAgbV93
ZWJQYWdlUHJveHktPmNsb3NlKCk7CisgICAgbV9jb250ZXh0LT5kaXNjb25uZWN0UHJvY2Vzcyht
X2NvbnRleHQtPnByb2Nlc3MoKSk7CisgICAgLy8gVGhlIGNvbnRleHQgaXMgdGhlIGRlZmF1bHQg
b25lIGFuZCB3ZSdyZSBkZWxldGluZyB0aGUgbGFzdCBRdFdlYlBhZ2VQcm94eS4KKyAgICBpZiAo
bV9jb250ZXh0ID09IHNfZGVmYXVsdENvbnRleHQpIHsKKyAgICAgICAgQVNTRVJUKHNfZGVmYXVs
dFBhZ2VQcm94eUNvdW50ID4gMCk7CisgICAgICAgIHNfZGVmYXVsdFBhZ2VQcm94eUNvdW50LS07
CisgICAgICAgIGlmICghc19kZWZhdWx0UGFnZVByb3h5Q291bnQpCisgICAgICAgICAgICBzX2Rl
ZmF1bHRDb250ZXh0ID0gMDsKKyAgICB9CiAgICAgZGVsZXRlIG1faGlzdG9yeTsKIH0KIApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgJKHJldmlz
aW9uIDkzNzI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVC
aXRtYXAuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlZpZXdJ
bnRlcmZhY2UuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPFFCYXNpY1RpbWVyPgpA
QCAtNDIsMTQgKzQzLDExIEBAIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUVVuZG9TdGFjazsK
IFFUX0VORF9OQU1FU1BBQ0UKIAotY2xhc3MgUVdLQ29udGV4dDsKIGNsYXNzIFFXS0hpc3Rvcnk7
CiBjbGFzcyBRV0tQcmVmZXJlbmNlczsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotUVdL
Q29udGV4dCAqZGVmYXVsdFdLQ29udGV4dCgpOwotCiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGRy
b3BBY3Rpb25Ub0RyYWdPcGVyYXRpb24oUXQ6OkRyb3BBY3Rpb25zIGFjdGlvbnMpOwogCiAvLyBG
SVhNRTogbmVlZHMgZm9jdXMgaW4vb3V0LCB3aW5kb3cgYWN0aXZhdGlvbiwgc3VwcG9ydCB0aHJv
dWdoIHZpZXdTdGF0ZURpZENoYW5nZSgpLgpAQCAtNzEsNyArNjksNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFdlYkFjdGlvbkNvdW50CiAgICAgfTsKIAotICAgIFF0V2ViUGFnZVByb3h5KFdlYktpdDo6
Vmlld0ludGVyZmFjZSosIFdlYktpdDo6UG9saWN5SW50ZXJmYWNlKiwgUVdLQ29udGV4dCosIFdL
UGFnZUdyb3VwUmVmID0gMCk7CisgICAgUXRXZWJQYWdlUHJveHkoV2ViS2l0OjpWaWV3SW50ZXJm
YWNlKiwgV2ViS2l0OjpQb2xpY3lJbnRlcmZhY2UqLCBXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3Vw
UmVmID0gMCk7CiAgICAgflF0V2ViUGFnZVByb3h5KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlRXZlbnQoUUV2ZW50Kik7CkBAIC0xOTYsNyArMTk0LDExIEBAIHByaXZhdGU6CiAgICAgYm9v
bCBoYW5kbGVGb2N1c0luRXZlbnQoUUZvY3VzRXZlbnQqKTsKICAgICBib29sIGhhbmRsZUZvY3Vz
T3V0RXZlbnQoUUZvY3VzRXZlbnQqKTsKIAotICAgIFFXS0NvbnRleHQqIG1fY29udGV4dDsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZXh0PiBkZWZhdWx0V0tDb250ZXh0KCk7CisgICAg
c3RhdGljIFJlZlB0cjxXZWJDb250ZXh0PiBzX2RlZmF1bHRDb250ZXh0OworICAgIHN0YXRpYyB1
bnNpZ25lZCBzX2RlZmF1bHRQYWdlUHJveHlDb3VudDsKKworICAgIFJlZlB0cjxXZWJDb250ZXh0
PiBtX2NvbnRleHQ7CiAgICAgUVdLSGlzdG9yeSogbV9oaXN0b3J5OwogCiAgICAgbXV0YWJsZSBR
QWN0aW9uKiBtX2FjdGlvbnNbUXRXZWJQYWdlUHJveHk6OldlYkFjdGlvbkNvdW50XTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXBy
b3h5LmNwcAkocmV2aXNpb24gOTM3MjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
cWRlc2t0b3B3ZWJwYWdlcHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBA
IHN0YXRpYyBpbmxpbmUgUXQ6OkRyb3BBY3Rpb24gZHJhZ09wZXJhdGkKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1RRGVza3RvcFdlYlBhZ2VQcm94eTo6UURlc2t0b3BXZWJQYWdlUHJveHkoUURl
c2t0b3BXZWJWaWV3UHJpdmF0ZSogZGVza3RvcFdlYlZpZXcsIFFXS0NvbnRleHQqIGNvbnRleHQs
IFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCkKK1FEZXNrdG9wV2ViUGFnZVByb3h5OjpRRGVza3Rv
cFdlYlBhZ2VQcm94eShRRGVza3RvcFdlYlZpZXdQcml2YXRlKiBkZXNrdG9wV2ViVmlldywgV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCkKICAgICA6IFF0V2Vi
UGFnZVByb3h5KGRlc2t0b3BXZWJWaWV3LCBkZXNrdG9wV2ViVmlldywgY29udGV4dCwgcGFnZUdy
b3VwKQogewogICAgIGluaXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9x
ZGVza3RvcHdlYnBhZ2Vwcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5oCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBjbGFzcyBRRGVz
a3RvcFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBRdFdlYlBhZ2VQcm94eQogewogcHVibGljOgotICAg
IFFEZXNrdG9wV2ViUGFnZVByb3h5KFFEZXNrdG9wV2ViVmlld1ByaXZhdGUqLCBRV0tDb250ZXh0
KiwgV0tQYWdlR3JvdXBSZWYgPSAwKTsKKyAgICBRRGVza3RvcFdlYlBhZ2VQcm94eShRRGVza3Rv
cFdlYlZpZXdQcml2YXRlKiwgV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiA9IDApOwogCiAg
ICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFFFdmVudCopOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmNwcAkocmV2aXNp
b24gOTM3MjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAotUVRvdWNoV2ViUGFnZVByb3h5OjpRVG91Y2hXZWJQYWdlUHJveHkoVG91
Y2hWaWV3SW50ZXJmYWNlKiB2aWV3SW50ZXJmYWNlLCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5l
KiB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLCBRV0tDb250ZXh0KiBjb250ZXh0LCBXS1BhZ2VH
cm91cFJlZiBwYWdlR3JvdXBSZWYpCitRVG91Y2hXZWJQYWdlUHJveHk6OlFUb3VjaFdlYlBhZ2VQ
cm94eShUb3VjaFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UsIFZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmUqIHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUsIFdLQ29udGV4dFJlZiBjb250ZXh0
LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiAgICAgOiBRdFdlYlBhZ2VQcm94eSh2aWV3
SW50ZXJmYWNlLCAwLCBjb250ZXh0LCBwYWdlR3JvdXBSZWYpCiAgICAgLCBtX3Bhbkdlc3R1cmVS
ZWNvZ25pemVyKHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUpCiAgICAgLCBtX3BpbmNoR2VzdHVy
ZVJlY29nbml6ZXIodmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmgJKHJldmlzaW9uIDkz
NzI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiBjbGFzcyBRVG91Y2hXZWJQYWdlUHJveHkgOiBwdWJsaWMgUXRXZWJQYWdlUHJveHkKIHsKIHB1
YmxpYzoKLSAgICBRVG91Y2hXZWJQYWdlUHJveHkoVG91Y2hWaWV3SW50ZXJmYWNlKiwgVmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZSosIFFXS0NvbnRleHQqLCBXS1BhZ2VHcm91cFJlZiA9IDApOwor
ICAgIFFUb3VjaFdlYlBhZ2VQcm94eShUb3VjaFZpZXdJbnRlcmZhY2UqLCBWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lKiwgV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiA9IDApOwogCiAgICAg
dmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFFFdmVudCopOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvcXdrY29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L3F3a2NvbnRleHQuY3BwCShyZXZpc2lvbiA5MzcyNSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2tjb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJxd2tjb250ZXh0LmgiCi0jaW5jbHVkZSAicXdrY29udGV4dF9wLmgiCi0KLSNpbmNs
dWRlICJDbGllbnRJbXBsLmgiCi0jaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCi0jaW5jbHVkZSAi
SW1hZ2UuaCIKLSNpbmNsdWRlIDxRRGlyPgotI2luY2x1ZGUgPFFQaXhtYXA+Ci0jaW5jbHVkZSA8
UVVybD4KLSNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaCIKLSNpbmNsdWRlICJXS0ljb25EYXRhYmFzZS5oIgotCi11c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwotCi1zdGF0aWMgaW5saW5lIHZvaWQgaW5pdGlhbGl6ZVBsYXRmb3JtU3Ry
YXRlZ2llc0lmTmVlZGVkKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNl
OwotICAgIGlmIChpbml0aWFsaXplZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjppbml0aWFsaXplKCk7Ci0gICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotfQot
Ci1RV0tDb250ZXh0UHJpdmF0ZTo6UVdLQ29udGV4dFByaXZhdGUoUVdLQ29udGV4dCogcXEsIFdl
YkNvbnRleHQqIHdlYkNvbnRleHQpCi0gICAgOiBxKHFxKQotewotICAgIGlmICghd2ViQ29udGV4
dCkKLSAgICAgICAgY29udGV4dCA9IFdlYkNvbnRleHQ6OmNyZWF0ZShTdHJpbmcoKSk7Ci0gICAg
ZWxzZQotICAgICAgICBjb250ZXh0ID0gd2ViQ29udGV4dDsKLQotICAgIGluaXRpYWxpemVQbGF0
Zm9ybVN0cmF0ZWdpZXNJZk5lZWRlZCgpOwotCi0gICAgV0tJY29uRGF0YWJhc2VDbGllbnQgaWNv
bkRhdGFiYXNlQ2xpZW50ID0gewotICAgICAgICAwLCAgICAgIC8vIHZlcnNpb24KLSAgICAgICAg
cXEsICAgICAvLyBjbGllbnRJbmZvCi0gICAgICAgIHF0X3drX2RpZENoYW5nZUljb25Gb3JQYWdl
VVJMLAotICAgICAgICBxdF93a19kaWRSZW1vdmVBbGxJY29ucwotICAgIH07Ci0KLSAgICBXS0lj
b25EYXRhYmFzZVNldEljb25EYXRhYmFzZUNsaWVudCh0b0FQSShjb250ZXh0LT5pY29uRGF0YWJh
c2UoKSksICZpY29uRGF0YWJhc2VDbGllbnQpOwotfQotCi1RV0tDb250ZXh0UHJpdmF0ZTo6flFX
S0NvbnRleHRQcml2YXRlKCkKLXsgfQotCi1RV0tDb250ZXh0OjpRV0tDb250ZXh0KFFPYmplY3Qq
IHBhcmVudCkKLSAgICA6IFFPYmplY3QocGFyZW50KQotICAgICwgZChuZXcgUVdLQ29udGV4dFBy
aXZhdGUodGhpcykpCi17IH0KLQotUVdLQ29udGV4dDo6UVdLQ29udGV4dChXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgUU9iamVjdCogcGFyZW50KQotICAgIDogUU9iamVjdChwYXJlbnQpCi0gICAg
LCBkKG5ldyBRV0tDb250ZXh0UHJpdmF0ZSh0aGlzLCB0b0ltcGwoY29udGV4dFJlZikpKQoteyB9
Ci0KLVFXS0NvbnRleHQ6On5RV0tDb250ZXh0KCkKLXsKLSAgICBkZWxldGUgZDsKLX0KLQotdm9p
ZCBRV0tDb250ZXh0OjpzZXRJY29uRGF0YWJhc2VQYXRoKGNvbnN0IFFTdHJpbmcmIHBhdGgpCi17
Ci0gICAgLy8gRklYTUU6IFRoZXJlIGlzIGN1cnJlbnRseSBubyB3YXkgdG8gZGlzYWJsZSB0aGUg
aWNvbiBkYXRhYmFzZSBvbmNlIGl0J3MgZW5hYmxlZC4KLSAgICBRRmlsZUluZm8gaW5mbyhwYXRo
KTsKLSAgICBpZiAoaW5mby5pc0RpcigpICYmIGluZm8uaXNXcml0YWJsZSgpKSB7Ci0gICAgICAg
IFFTdHJpbmcgZGF0YWJhc2VQYXRoID0gcGF0aCArIFFEaXI6OnNlcGFyYXRvcigpICsgUVN0cmlu
ZyhXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKCkpOwotICAg
ICAgICBkLT5jb250ZXh0LT5zZXRJY29uRGF0YWJhc2VQYXRoKGRhdGFiYXNlUGF0aCk7Ci0gICAg
fQotfQotCi1RSWNvbiBRV0tDb250ZXh0OjppY29uRm9yUGFnZVVSTChjb25zdCBRVXJsJiBwYWdl
VVJMKSBjb25zdAotewotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gaW1hZ2UgPSBkLT5jb250
ZXh0LT5pY29uRGF0YWJhc2UoKS0+aW1hZ2VGb3JQYWdlVVJMKHBhZ2VVUkwudG9TdHJpbmcoKSk7
Ci0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuIFFJY29uKCk7Ci0KLSAgICBRUGl4bWFw
KiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAg
IGlmICghbmF0aXZlSW1hZ2UpCi0gICAgICAgIHJldHVybiBRSWNvbigpOwotCi0gICAgcmV0dXJu
IFFJY29uKCpuYXRpdmVJbWFnZSk7Ci19Ci0KLSNpbmNsdWRlICJtb2NfcXdrY29udGV4dC5jcHAi
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdrY29udGV4dC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2tjb250ZXh0LmgJKHJldmlzaW9u
IDkzNzI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2NvbnRleHQuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLQotICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVm
IHF3a2NvbnRleHRfaAotI2RlZmluZSBxd2tjb250ZXh0X2gKLQotI2luY2x1ZGUgInF3ZWJraXRn
bG9iYWwuaCIKLSNpbmNsdWRlIDxRT2JqZWN0PgotI2luY2x1ZGUgPFdlYktpdDIvV0tDb250ZXh0
Lmg+Ci0KLWNsYXNzIFFJY29uOwotY2xhc3MgUVVybDsKLWNsYXNzIFFXS0NvbnRleHRQcml2YXRl
OwotCi1jbGFzcyBRV0VCS0lUX0VYUE9SVCBRV0tDb250ZXh0IDogcHVibGljIFFPYmplY3Qgewot
ICAgIFFfT0JKRUNUCi1wdWJsaWM6Ci0gICAgUVdLQ29udGV4dChRT2JqZWN0KiBwYXJlbnQgPSAw
KTsKLSAgICB2aXJ0dWFsIH5RV0tDb250ZXh0KCk7Ci0KLSAgICAvLyBCcmlkZ2UgZnJvbSB0aGUg
QyBBUEkKLSAgICBRV0tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBRT2JqZWN0KiBw
YXJlbnQgPSAwKTsKLQotICAgIHZvaWQgc2V0SWNvbkRhdGFiYXNlUGF0aChjb25zdCBRU3RyaW5n
Jik7Ci0gICAgUUljb24gaWNvbkZvclBhZ2VVUkwoY29uc3QgUVVybCYpIGNvbnN0OwotCi1wdWJs
aWM6Ci0gICAgUV9TSUdOQUwgdm9pZCBpY29uQ2hhbmdlZEZvclBhZ2VVUkwoY29uc3QgUVVybCYp
OwotCi1wcml2YXRlOgotICAgIFFXS0NvbnRleHRQcml2YXRlKiBkOwotCi0gICAgZnJpZW5kIGNs
YXNzIFF0V2ViUGFnZVByb3h5OwotfTsKLQotI2VuZGlmIC8qIHF3a2NvbnRleHRfaCAqLwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a2NvbnRleHRfcC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2tjb250ZXh0X3AuaAkocmV2aXNpb24g
OTM3MjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdrY29udGV4dF9wLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsMzcgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTAg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotCi0jaWZu
ZGVmIHF3a2NvbnRleHRfcF9oCi0jZGVmaW5lIHF3a2NvbnRleHRfcF9oCi0KLSNpbmNsdWRlICJX
ZWJDb250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1jbGFzcyBRV0tDb250ZXh0
UHJpdmF0ZSB7Ci1wdWJsaWM6Ci0gICAgUVdLQ29udGV4dFByaXZhdGUoUVdLQ29udGV4dCosIFdl
YktpdDo6V2ViQ29udGV4dCogPSAwKTsKLSAgICB+UVdLQ29udGV4dFByaXZhdGUoKTsKLQotICAg
IFFXS0NvbnRleHQqIHE7Ci0KLSAgICBSZWZQdHI8V2ViS2l0OjpXZWJDb250ZXh0PiBjb250ZXh0
OwotfTsKLQotI2VuZGlmIC8qIHFrY29udGV4dF9wX2ggKi8K
</data>
<flag name="review"
          id="101251"
          type_id="1"
          status="+"
          setter="benjamin"
    />
    <flag name="commit-queue"
          id="101252"
          type_id="3"
          status="-"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>