<?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>73150</bug_id>
          
          <creation_ts>2011-11-25 16:17:14 -0800</creation_ts>
          <short_desc>[Qt] [WK2] Remove WebContext related code from QtWebPageProxy</short_desc>
          <delta_ts>2011-11-25 23:18:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>72943</blocked>
    
    <blocked>73151</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Marcelo de Oliveira Filho">cmarcelo</reporter>
          <assigned_to name="Caio Marcelo de Oliveira Filho">cmarcelo</assigned_to>
          <cc>hausmann</cc>
    
    <cc>jesus</cc>
    
    <cc>kenneth</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>509291</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-25 16:17:14 -0800</bug_when>
    <thetext>[Qt] [WK2] Remove WebContext related code from QtWebPageProxy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509292</commentid>
    <comment_count>1</comment_count>
      <attachid>116643</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-25 16:26:26 -0800</bug_when>
    <thetext>Created attachment 116643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509296</commentid>
    <comment_count>2</comment_count>
      <attachid>116643</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-11-25 16:42:49 -0800</bug_when>
    <thetext>Comment on attachment 116643
Patch

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

&gt; Source/WebKit2/UIProcess/qt/QtWebContext.cpp:49
&gt; +// Used only by WebKitTestRunner. Not calling initialize() so we don&apos;t register any clients.

It avoids calling initialize(), so that we don&apos;t ...

&gt; Source/WebKit2/UIProcess/qt/QtWebContext.cpp:64
&gt; +    defaultContext-&gt;initialize();
&gt; +    return defaultContext.release();

I prefer a newline before the return. It makes it easier to spot that it returns something

&gt; Source/WebKit2/UIProcess/qt/QtWebContext.cpp:67
&gt; +PassRefPtr&lt;WebPageProxy&gt; QtWebContext::createWebPage(PageClient* pageClient, WebPageGroup* webPageGroup)

Personally I would just call the arguments for client and pageGroup. At least pageGroup should be enough

&gt; Source/WebKit2/UIProcess/qt/QtWebContext.cpp:72
&gt; +void QtWebContext::setNavigatorQtObjectEnabled(WebPageProxy* webPageProxy, bool enabled)

What about setNavigationDotQtJSObjectEnabled...  It is hard to figure out what NavigationQt is all about

&gt; Source/WebKit2/UIProcess/qt/QtWebContext.cpp:98
&gt; +void QtWebContext::setupContextInjectedBundleClient()

Any reason this is called setup and not initialize?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509324</commentid>
    <comment_count>3</comment_count>
      <attachid>116649</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-25 21:57:46 -0800</bug_when>
    <thetext>Created attachment 116649
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509325</commentid>
    <comment_count>4</comment_count>
      <attachid>116643</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-25 22:01:46 -0800</bug_when>
    <thetext>Comment on attachment 116643
Patch

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

Thanks for the review. Followed your suggestions in the version for landing -- except for one.

&gt;&gt; Source/WebKit2/UIProcess/qt/QtWebContext.cpp:72
&gt;&gt; +void QtWebContext::setNavigatorQtObjectEnabled(WebPageProxy* webPageProxy, bool enabled)
&gt; 
&gt; What about setNavigationDotQtJSObjectEnabled...  It is hard to figure out what NavigationQt is all about

I have some work on navigator.qt object on the queue, so I&apos;ll fix that naming in a next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509331</commentid>
    <comment_count>5</comment_count>
      <attachid>116649</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-25 23:18:16 -0800</bug_when>
    <thetext>Comment on attachment 116649
Patch for landing

Clearing flags on attachment: 116649

Committed r101188: &lt;http://trac.webkit.org/changeset/101188&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509332</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-25 23:18:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116643</attachid>
            <date>2011-11-25 16:26:26 -0800</date>
            <delta_ts>2011-11-25 22:01:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73150-20111125212710.patch</filename>
            <type>text/plain</type>
            <size>21441</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGM1MWI5NzlmYjM4NjMx
OTIxMTM5NDJhMTA0YTJiZDU0OTM5NzBhOS4uZDZhZDYxNTk5OWI1MGY1NzJlNDg1NzJjYTA4ZjIx
YWRmMzNiYTg0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDExLTExLTI1ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XSBbV0syXSBSZW1vdmUgV2ViQ29udGV4dCByZWxhdGVkIGNvZGUgZnJv
bSBRdFdlYlBhZ2VQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzMxNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDcmVhdGVzIGEgUXRXZWJDb250ZXh0IGNsYXNzIHRoYXQgYWJzdHJhY3RzIGF3YXkg
ZnJvbSBRdFdlYlBhZ2VQcm94eSB0aGUKKyAgICAgICAgaGFuZGxpbmcgb2YgY3JlYXRpbmcgLyBt
YWludGFpbmluZyB0aGUgZGVmYXVsdCBXZWJDb250ZXh0LCBhcyB3ZWxsIGFzIHRoZQorICAgICAg
ICBjb2RlIGZvciB0aGUgV0tDb250ZXh0UmVmIGNsaWVudHMuCisKKyAgICAgICAgQW5vdGhlciBt
b3RpdmF0aW9uIGZvciBoYXZpbmcgdGhpcyBlbnRpdHkgaXMgdG8gaGF2ZSBhIHByb3BlciBwbGFj
ZSB0byBhZGQKKyAgICAgICAgb2JqZWN0cyBhcmUgYm91bmQgdG8gdGhlIGNvbnRleHQsIGxpa2Ug
dGhlIFF0RG93bmxvYWRNYW5hZ2VyLgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBVSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL3F0L0NsaWVudEltcGwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRE
b3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYkNvbnRleHQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UXRXZWJDb250ZXh0OjpRdFdlYkNvbnRleHQp
OgorICAgICAgICAoV2ViS2l0OjpRdFdlYkNvbnRleHQ6On5RdFdlYkNvbnRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpRdFdlYkNvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlF0V2Vi
Q29udGV4dDo6ZGVmYXVsdENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpRdFdlYkNvbnRleHQ6
OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpRdFdlYkNvbnRleHQ6OnNldE5hdmln
YXRvclF0T2JqZWN0RW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViQ29udGV4dDo6cG9z
dE1lc3NhZ2VUb05hdmlnYXRvclF0T2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6UXRXZWJDb250
ZXh0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UXRXZWJDb250ZXh0OjpzZXR1cENv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OnRvUXRXZWJDb250
ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UXRXZWJDb250ZXh0OjpkaWRSZWNlaXZlTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UXRXZWJDb250ZXh0Ojpkb3dubG9hZE1hbmFnZXIp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChR
dFdlYlBhZ2VQcm94eTo6UXRXZWJQYWdlUHJveHkpOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6
On5RdFdlYlBhZ2VQcm94eSk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6c2V0TmF2aWdhdG9y
UXRPYmplY3RFbmFibGVkKToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5Ojpwb3N0TWVzc2FnZVRv
TmF2aWdhdG9yUXRPYmplY3QpOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmhhbmRsZURvd25s
b2FkUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmg6CisK
IDIwMTEtMTEtMjUgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVu
Ym9zc2Eub3JnPgogCiAgICAgICAgIFtRdF1bV0syXSBSZWZhY3RvciBHZXN0dXJlUmVjb2duaXpl
cnMgdG8gdXNlIFF0V2ViUGFnZUV2ZW50SGFuZGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggYjA3M2I0NmIw
Nzg2NTRjZGQ1YTBiMzNkMGJjYjRhM2I3M2JlOGRlMy4uMzI3MTc1MWEwOWMwNTgzZGFmYzlkZDJl
YmQzZjM4NGJkODAxMDY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0zMTMsNyArMzEzLDcgQEAgSEVBREVS
UyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkuaCBcCiAg
ICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZENsaWVudC5oIFwKICAgICBVSVByb2Nlc3MvV2Vi
VUlDbGllbnQuaCBcCi0gICAgVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuaCBcCisgICAgVUlQcm9j
ZXNzL3F0L1F0V2ViQ29udGV4dC5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRI
YW5kbGVyLmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNvZ25pemVyLmggXAogICAg
IFVJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmggXApAQCAtNjE3LDcgKzYxNyw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlclBy
b3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZENsaWVudC5jcHAgXAogICAg
IFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAgXAotICAgIFVJUHJvY2Vzcy9xdC9DbGllbnRJbXBs
LmNwcCBcCisgICAgVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5jcHAgXAogICAgIFVJUHJvY2Vz
cy9xdC9MYXllclRyZWVIb3N0UHJveHlRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VFdmVudEhhbmRsZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRHZXN0dXJlUmVjb2duaXpl
ci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudElt
cGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDI2MWM4OWUyZDAwMjQwNGQ3ZTFjZTc2NWM3NTcz
NmU1NzU1YmNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotCi0gICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
Ci0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJDbGllbnRJbXBsLmgiCi0KLSNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
LSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlIDxXS0FycmF5Lmg+Ci0jaW5jbHVkZSA8
V0tQYWdlLmg+Ci0jaW5jbHVkZSA8V0tTdHJpbmcuaD4KLSNpbmNsdWRlIDxXS1R5cGUuaD4KLQot
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotdm9pZCBxdF93a19kaWRSZWNlaXZlTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBX
S1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqKQotewotICAgIGlmICghV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIk1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRP
YmplY3QiKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG1lc3NhZ2VCb2R5KTsKLSAg
ICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQXJyYXlHZXRUeXBlSUQoKSk7
Ci0KLSAgICBXS0FycmF5UmVmIGJvZHkgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVmPihtZXNzYWdl
Qm9keSk7Ci0gICAgQVNTRVJUKFdLQXJyYXlHZXRTaXplKGJvZHkpID09IDIpOwotICAgIEFTU0VS
VChXS0dldFR5cGVJRChXS0FycmF5R2V0SXRlbUF0SW5kZXgoYm9keSwgMCkpID09IFdLUGFnZUdl
dFR5cGVJRCgpKTsKLSAgICBBU1NFUlQoV0tHZXRUeXBlSUQoV0tBcnJheUdldEl0ZW1BdEluZGV4
KGJvZHksIDEpKSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKTsKLQotICAgIFdLUGFnZVJlZiBwYWdl
ID0gc3RhdGljX2Nhc3Q8V0tQYWdlUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoYm9keSwgMCkp
OwotICAgIFdLU3RyaW5nUmVmIHN0ciA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5
R2V0SXRlbUF0SW5kZXgoYm9keSwgMSkpOwotCi0gICAgdG9JbXBsKHBhZ2UpLT5kaWRSZWNlaXZl
TWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdCh0b0ltcGwoc3RyKS0+c3RyaW5nKCkpOwotfQot
Ci12b2lkIHNldHVwQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBjb250
ZXh0KQotewotICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IGluamVjdGVkQnVuZGxl
Q2xpZW50OwotICAgIG1lbXNldCgmaW5qZWN0ZWRCdW5kbGVDbGllbnQsIDAsIHNpemVvZihXS0Nv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCkpOwotICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LnZl
cnNpb24gPSBrV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRDdXJyZW50VmVyc2lvbjsKLSAg
ICBpbmplY3RlZEJ1bmRsZUNsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZSA9IHF0X3drX2RpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOwotICAgIFdLQ29u
dGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQsICZpbmplY3RlZEJ1bmRsZUNsaWVu
dCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1w
bC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNWIyZjQzODI4ZGVlZTRhYmVhOTU4NjQyNjQ3ZDYyYzEzZTE2
OWQ0MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oCisrKyAvZGV2L251bGwKQEAgLTEs
MjggKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBDbGllbnRJbXBsX2gKLSNk
ZWZpbmUgQ2xpZW50SW1wbF9oCi0KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQ29udGV4dC5oPgotCi12
b2lkIHNldHVwQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZik7Ci0KLSNl
bmRpZiAvKiBDbGllbnRJbXBsX2ggKi8KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RdERvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggNmE1OGVhNTJiNDg1MjMxYmE1YjQwYmRm
MmZlMjJlOGYzMGQ4NGY5MS4uZjBlNThkM2ZiZDhhM2ViODQ1OTE0NTVjMzdjNzBhNmVmOWRlZjg3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFn
ZXIuY3BwCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
UXREb3dubG9hZE1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkNsaWVudEltcGwuaCIKICNpbmNsdWRl
ICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiUXRXZWJFcnJvci5oIgogI2luY2x1ZGUgIldL
U3RyaW5nUXQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjI5Mjk0NWYyMjNkMjk3ZTdkYTljZWQwMjViOTQ1MDFiMzJlYTEzOAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkNvbnRl
eHQuY3BwCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlF0V2ViQ29udGV4dC5oIgorCisjaW5jbHVkZSAiTXV0YWJsZUFy
cmF5LmgiCisjaW5jbHVkZSAiUXREb3dubG9hZE1hbmFnZXIuaCIKKyNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CisjaW5jbHVkZSA8V0tBcnJheS5oPgorI2luY2x1ZGUgPFdLUGFnZS5oPgorI2luY2x1ZGUgPFdL
U3RyaW5nLmg+CisjaW5jbHVkZSA8V0tUeXBlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitR
dFdlYkNvbnRleHQqIFF0V2ViQ29udGV4dDo6c19kZWZhdWx0Q29udGV4dCA9IDA7CisKK1F0V2Vi
Q29udGV4dDo6UXRXZWJDb250ZXh0KFdlYkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBtX2NvbnRl
eHQoY29udGV4dCkKK3sKK30KKworUXRXZWJDb250ZXh0Ojp+UXRXZWJDb250ZXh0KCkKK3sKKyAg
ICBpZiAoc19kZWZhdWx0Q29udGV4dCA9PSB0aGlzKQorICAgICAgICBzX2RlZmF1bHRDb250ZXh0
ID0gMDsKK30KKworLy8gVXNlZCBvbmx5IGJ5IFdlYktpdFRlc3RSdW5uZXIuIE5vdCBjYWxsaW5n
IGluaXRpYWxpemUoKSBzbyB3ZSBkb24ndCByZWdpc3RlciBhbnkgY2xpZW50cy4KK1Bhc3NSZWZQ
dHI8UXRXZWJDb250ZXh0PiBRdFdlYkNvbnRleHQ6OmNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUXRXZWJDb250ZXh0KGNvbnRleHQpKTsKK30K
KworUGFzc1JlZlB0cjxRdFdlYkNvbnRleHQ+IFF0V2ViQ29udGV4dDo6ZGVmYXVsdENvbnRleHQo
KQoreworICAgIGlmIChzX2RlZmF1bHRDb250ZXh0KQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0
cjxRdFdlYkNvbnRleHQ+KHNfZGVmYXVsdENvbnRleHQpOworCisgICAgUmVmUHRyPFdlYkNvbnRl
eHQ+IGNvbnRleHQgPSBXZWJDb250ZXh0OjpjcmVhdGUoU3RyaW5nKCkpOworICAgIFJlZlB0cjxR
dFdlYkNvbnRleHQ+IGRlZmF1bHRDb250ZXh0ID0gUXRXZWJDb250ZXh0OjpjcmVhdGUoY29udGV4
dC5nZXQoKSk7CisgICAgc19kZWZhdWx0Q29udGV4dCA9IGRlZmF1bHRDb250ZXh0LmdldCgpOwor
ICAgIGRlZmF1bHRDb250ZXh0LT5pbml0aWFsaXplKCk7CisgICAgcmV0dXJuIGRlZmF1bHRDb250
ZXh0LnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFF0V2ViQ29udGV4
dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50KiBwYWdlQ2xpZW50LCBXZWJQYWdlR3JvdXAqIHdl
YlBhZ2VHcm91cCkKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0LT5jcmVhdGVXZWJQYWdlKHBhZ2VD
bGllbnQsIHdlYlBhZ2VHcm91cCk7Cit9CisKK3ZvaWQgUXRXZWJDb250ZXh0OjpzZXROYXZpZ2F0
b3JRdE9iamVjdEVuYWJsZWQoV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHksIGJvb2wgZW5hYmxl
ZCkKK3sKKyAgICBzdGF0aWMgU3RyaW5nIG1lc3NhZ2VOYW1lKCJTZXROYXZpZ2F0b3JRdE9iamVj
dEVuYWJsZWQiKTsKKyAgICBSZWZQdHI8TXV0YWJsZUFycmF5PiBib2R5ID0gTXV0YWJsZUFycmF5
OjpjcmVhdGUoKTsKKyAgICBib2R5LT5hcHBlbmQod2ViUGFnZVByb3h5KTsKKyAgICBSZWZQdHI8
V2ViQm9vbGVhbj4gd2ViRW5hYmxlZCA9IFdlYkJvb2xlYW46OmNyZWF0ZShlbmFibGVkKTsKKyAg
ICBib2R5LT5hcHBlbmQod2ViRW5hYmxlZC5nZXQoKSk7CisgICAgbV9jb250ZXh0LT5wb3N0TWVz
c2FnZVRvSW5qZWN0ZWRCdW5kbGUobWVzc2FnZU5hbWUsIGJvZHkuZ2V0KCkpOworfQorCit2b2lk
IFF0V2ViQ29udGV4dDo6cG9zdE1lc3NhZ2VUb05hdmlnYXRvclF0T2JqZWN0KFdlYlBhZ2VQcm94
eSogd2ViUGFnZVByb3h5LCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlKQoreworICAgIHN0YXRpYyBT
dHJpbmcgbWVzc2FnZU5hbWUoIk1lc3NhZ2VUb05hdmlnYXRvclF0T2JqZWN0Iik7CisgICAgUmVm
UHRyPE11dGFibGVBcnJheT4gYm9keSA9IE11dGFibGVBcnJheTo6Y3JlYXRlKCk7CisgICAgYm9k
eS0+YXBwZW5kKHdlYlBhZ2VQcm94eSk7CisgICAgUmVmUHRyPFdlYlN0cmluZz4gY29udGVudHMg
PSBXZWJTdHJpbmc6OmNyZWF0ZShTdHJpbmcobWVzc2FnZSkpOworICAgIGJvZHktPmFwcGVuZChj
b250ZW50cy5nZXQoKSk7CisgICAgbV9jb250ZXh0LT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5k
bGUobWVzc2FnZU5hbWUsIGJvZHkuZ2V0KCkpOworfQorCit2b2lkIFF0V2ViQ29udGV4dDo6aW5p
dGlhbGl6ZSgpCit7CisgICAgbV9kb3dubG9hZE1hbmFnZXIgPSBRdERvd25sb2FkTWFuYWdlcjo6
Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CisgICAgc2V0dXBDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnQoKTsKK30KKwordm9pZCBRdFdlYkNvbnRleHQ6OnNldHVwQ29udGV4dEluamVjdGVkQnVu
ZGxlQ2xpZW50KCkKK3sKKyAgICBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCBpbmplY3Rl
ZEJ1bmRsZUNsaWVudDsKKyAgICBtZW1zZXQoJmluamVjdGVkQnVuZGxlQ2xpZW50LCAwLCBzaXpl
b2YoV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQpKTsKKyAgICBpbmplY3RlZEJ1bmRsZUNs
aWVudC52ZXJzaW9uID0ga1dLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Q3VycmVudFZlcnNp
b247CisgICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CisgICAgaW5q
ZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUgPSBk
aWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKKyAgICBXS0NvbnRleHRTZXRJbmpl
Y3RlZEJ1bmRsZUNsaWVudCh0b0FQSShtX2NvbnRleHQuZ2V0KCkpLCAmaW5qZWN0ZWRCdW5kbGVD
bGllbnQpOworfQorCitzdGF0aWMgUXRXZWJDb250ZXh0KiB0b1F0V2ViQ29udGV4dChjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQoreworICAgIEFTU0VSVChjbGllbnRJbmZvKTsKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxRdFdlYkNvbnRleHQqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSk7Cit9CisKK3ZvaWQgUXRXZWJDb250ZXh0OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVS
ZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgdG9RdFdlYkNv
bnRleHQoY2xpZW50SW5mbyktPmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1l
c3NhZ2VOYW1lLCBtZXNzYWdlQm9keSk7Cit9CisKK3ZvaWQgUXRXZWJDb250ZXh0OjpkaWRSZWNl
aXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tU
eXBlUmVmIG1lc3NhZ2VCb2R5KQoreworICAgIGlmICghV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIk1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QiKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1lc3NhZ2VCb2R5KTsKKyAgICBBU1NFUlQoV0tHZXRU
eXBlSUQobWVzc2FnZUJvZHkpID09IFdLQXJyYXlHZXRUeXBlSUQoKSk7CisKKyAgICBXS0FycmF5
UmVmIGJvZHkgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVmPihtZXNzYWdlQm9keSk7CisgICAgQVNT
RVJUKFdLQXJyYXlHZXRTaXplKGJvZHkpID09IDIpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChX
S0FycmF5R2V0SXRlbUF0SW5kZXgoYm9keSwgMCkpID09IFdLUGFnZUdldFR5cGVJRCgpKTsKKyAg
ICBBU1NFUlQoV0tHZXRUeXBlSUQoV0tBcnJheUdldEl0ZW1BdEluZGV4KGJvZHksIDEpKSA9PSBX
S1N0cmluZ0dldFR5cGVJRCgpKTsKKworICAgIFdLUGFnZVJlZiBwYWdlID0gc3RhdGljX2Nhc3Q8
V0tQYWdlUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoYm9keSwgMCkpOworICAgIFdLU3RyaW5n
UmVmIHN0ciA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgo
Ym9keSwgMSkpOworCisgICAgdG9JbXBsKHBhZ2UpLT5kaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZp
Z2F0b3JRdE9iamVjdCh0b0ltcGwoc3RyKS0+c3RyaW5nKCkpOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjhjZDIxMTcwNWI4
ZWY2MjcyNWRhMmFjODAzNDc5MTM4MzMzM2ViOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkNvbnRleHQuaApAQCAtMCwwICsxLDY3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqCisgKi8KKworI2lmbmRlZiBRdFdlYkNvbnRleHRfaAorI2RlZmluZSBRdFdlYkNvbnRl
eHRfaAorCisjaW5jbHVkZSA8V0tDb250ZXh0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBQYWdlQ2xpZW50OworY2xhc3MgUXREb3dubG9hZE1hbmFnZXI7CitjbGFzcyBXZWJDb250ZXh0
OworY2xhc3MgV2ViUGFnZUdyb3VwOworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBRdFdl
YkNvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxRdFdlYkNvbnRleHQ+IHsKK3B1YmxpYzoKKyAg
ICB+UXRXZWJDb250ZXh0KCk7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxRdFdlYkNvbnRleHQ+
IGNyZWF0ZShXZWJDb250ZXh0Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UXRXZWJDb250ZXh0
PiBkZWZhdWx0Q29udGV4dCgpOworCisgICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0
ZVdlYlBhZ2UoUGFnZUNsaWVudCosIFdlYlBhZ2VHcm91cCopOworCisgICAgUXREb3dubG9hZE1h
bmFnZXIqIGRvd25sb2FkTWFuYWdlcigpIHsgcmV0dXJuIG1fZG93bmxvYWRNYW5hZ2VyLmdldCgp
OyB9CisKKyAgICB2b2lkIHNldE5hdmlnYXRvclF0T2JqZWN0RW5hYmxlZChXZWJQYWdlUHJveHkq
LCBib29sKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9OYXZpZ2F0b3JRdE9iamVjdChXZWJQYWdl
UHJveHkqLCBjb25zdCBRU3RyaW5nJik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUXRXZWJD
b250ZXh0KFdlYkNvbnRleHQqKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIHZvaWQg
c2V0dXBDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQoKTsKKworICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0tTdHJpbmdS
ZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCopOworICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVz
c2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7CisKKyAgICBzdGF0aWMgUXRXZWJDb250
ZXh0KiBzX2RlZmF1bHRDb250ZXh0OworCisgICAgUmVmUHRyPFdlYkNvbnRleHQ+IG1fY29udGV4
dDsKKyAgICBSZWZQdHI8UXREb3dubG9hZE1hbmFnZXI+IG1fZG93bmxvYWRNYW5hZ2VyOworfTsK
KworfQorCisjZW5kaWYgLy8gUXRXZWJDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCmluZGV4IDBhMTA2ZDEzYmQzMDdmMTc2MDEyMDQy
YzBhMmVjNDQxNTZjNWY4MTkuLjRhYzA0ZjRkZmRiZWI4ODQ0YTQ0MzEzNTZhMjdiZTAzZjNhYjRm
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNw
cApAQCAtMzIsMTUgKzMyLDE0IEBACiAjaW5jbHVkZSAicXdlYnByZWZlcmVuY2VzX3AuaCIKICNp
bmNsdWRlICJxd2VicHJlZmVyZW5jZXNfcF9wLmgiCiAKLSNpbmNsdWRlICJDbGllbnRJbXBsLmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJ
bXBsLmgiCiAjaW5jbHVkZSAicXdraGlzdG9yeS5oIgogI2luY2x1ZGUgInF3a2hpc3RvcnlfcC5o
IgogI2luY2x1ZGUgIkZpbmRJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdz
LmgiCi0jaW5jbHVkZSAiTXV0YWJsZUFycmF5LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKKyNpbmNsdWRlICJRdERvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIlF0V2ViUGFnZUV2
ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIlF0V2ViVW5kb0NvbW1hbmQuaCIKICNpbmNsdWRlICJX
ZWJCYWNrRm9yd2FyZExpc3QuaCIKQEAgLTY4LDMyICs2NywxNSBAQAogdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8V2ViQ29udGV4dD4g
UXRXZWJQYWdlUHJveHk6OnNfZGVmYXVsdENvbnRleHQ7Ci1SZWZQdHI8UXREb3dubG9hZE1hbmFn
ZXI+IFF0V2ViUGFnZVByb3h5OjpzX2Rvd25sb2FkTWFuYWdlcjsKLQotdW5zaWduZWQgUXRXZWJQ
YWdlUHJveHk6OnNfZGVmYXVsdFBhZ2VQcm94eUNvdW50ID0gMDsKLQotUGFzc1JlZlB0cjxXZWJD
b250ZXh0PiBRdFdlYlBhZ2VQcm94eTo6ZGVmYXVsdFdLQ29udGV4dCgpCi17Ci0gICAgaWYgKCFz
X2RlZmF1bHRDb250ZXh0KSB7Ci0gICAgICAgIHNfZGVmYXVsdENvbnRleHQgPSBXZWJDb250ZXh0
OjpjcmVhdGUoU3RyaW5nKCkpOwotICAgICAgICBzZXR1cENvbnRleHRJbmplY3RlZEJ1bmRsZUNs
aWVudCh0b0FQSShzX2RlZmF1bHRDb250ZXh0LmdldCgpKSk7Ci0gICAgICAgIHNfZG93bmxvYWRN
YW5hZ2VyID0gUXREb3dubG9hZE1hbmFnZXI6OmNyZWF0ZShzX2RlZmF1bHRDb250ZXh0LmdldCgp
KTsKLSAgICB9Ci0gICAgcmV0dXJuIHNfZGVmYXVsdENvbnRleHQ7Ci19Ci0KIFF0V2ViUGFnZVBy
b3h5OjpRdFdlYlBhZ2VQcm94eShRUXVpY2tXZWJQYWdlKiBxbWxXZWJQYWdlLCBRUXVpY2tXZWJW
aWV3KiBxbWxXZWJWaWV3LCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYg
cGFnZUdyb3VwUmVmKQogICAgIDogbV9xbWxXZWJQYWdlKHFtbFdlYlBhZ2UpCiAgICAgLCBtX3Ft
bFdlYlZpZXcocW1sV2ViVmlldykKLSAgICAsIG1fY29udGV4dChjb250ZXh0UmVmID8gdG9JbXBs
KGNvbnRleHRSZWYpIDogZGVmYXVsdFdLQ29udGV4dCgpKQorICAgICwgbV9jb250ZXh0KGNvbnRl
eHRSZWYgPyBRdFdlYkNvbnRleHQ6OmNyZWF0ZSh0b0ltcGwoY29udGV4dFJlZikpIDogUXRXZWJD
b250ZXh0OjpkZWZhdWx0Q29udGV4dCgpKQogICAgICwgbV91bmRvU3RhY2soYWRvcHRQdHIobmV3
IFFVbmRvU3RhY2sodGhpcykpKQogICAgICwgbV9uYXZpZ2F0b3JRdE9iamVjdEVuYWJsZWQoZmFs
c2UpCiB7CiAgICAgbV93ZWJQYWdlUHJveHkgPSBtX2NvbnRleHQtPmNyZWF0ZVdlYlBhZ2UodGhp
cywgdG9JbXBsKHBhZ2VHcm91cFJlZikpOwogICAgIG1faGlzdG9yeSA9IFFXS0hpc3RvcnlQcml2
YXRlOjpjcmVhdGVIaXN0b3J5KHRoaXMsIG1fd2ViUGFnZVByb3h5LT5iYWNrRm9yd2FyZExpc3Qo
KSk7Ci0gICAgaWYgKCFjb250ZXh0UmVmKQotICAgICAgICBzX2RlZmF1bHRQYWdlUHJveHlDb3Vu
dCsrOwogfQogCiB2b2lkIFF0V2ViUGFnZVByb3h5Ojppbml0KFF0V2ViUGFnZUV2ZW50SGFuZGxl
ciogZXZlbnRIYW5kbGVyKQpAQCAtMTA1LDE1ICs4Nyw2IEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6
OmluaXQoUXRXZWJQYWdlRXZlbnRIYW5kbGVyKiBldmVudEhhbmRsZXIpCiBRdFdlYlBhZ2VQcm94
eTo6flF0V2ViUGFnZVByb3h5KCkKIHsKICAgICBtX3dlYlBhZ2VQcm94eS0+Y2xvc2UoKTsKLSAg
ICAvLyBUaGUgY29udGV4dCBpcyB0aGUgZGVmYXVsdCBvbmUgYW5kIHdlJ3JlIGRlbGV0aW5nIHRo
ZSBsYXN0IFF0V2ViUGFnZVByb3h5LgotICAgIGlmIChtX2NvbnRleHQgPT0gc19kZWZhdWx0Q29u
dGV4dCkgewotICAgICAgICBBU1NFUlQoc19kZWZhdWx0UGFnZVByb3h5Q291bnQgPiAwKTsKLSAg
ICAgICAgc19kZWZhdWx0UGFnZVByb3h5Q291bnQtLTsKLSAgICAgICAgaWYgKCFzX2RlZmF1bHRQ
YWdlUHJveHlDb3VudCkgewotICAgICAgICAgICAgc19kZWZhdWx0Q29udGV4dC5jbGVhcigpOwot
ICAgICAgICAgICAgc19kb3dubG9hZE1hbmFnZXIuY2xlYXIoKTsKLSAgICAgICAgfQotICAgIH0K
ICAgICBkZWxldGUgbV9oaXN0b3J5OwogfQogCkBAIC00MjMsMjcgKzM5NiwxNSBAQCBRU3RyaW5n
IFF0V2ViUGFnZVByb3h5OjpjdXN0b21Vc2VyQWdlbnQoKSBjb25zdAogCiB2b2lkIFF0V2ViUGFn
ZVByb3h5OjpzZXROYXZpZ2F0b3JRdE9iamVjdEVuYWJsZWQoYm9vbCBlbmFibGVkKQogewotICAg
IHN0YXRpYyBTdHJpbmcgbWVzc2FnZU5hbWUoIlNldE5hdmlnYXRvclF0T2JqZWN0RW5hYmxlZCIp
OwotCiAgICAgQVNTRVJUKGVuYWJsZWQgIT0gbV9uYXZpZ2F0b3JRdE9iamVjdEVuYWJsZWQpOwog
ICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgd2UgaGF2ZSB0byBrZWVwIHRoaXMgaW5mb3JtYXRpb24g
aW4gYm90aCBwcm9jZXNzZXMgYW5kIHRoZSBzZXR0aW5nIGlzIGFzeW5jaHJvbm91cy4KICAgICBt
X25hdmlnYXRvclF0T2JqZWN0RW5hYmxlZCA9IGVuYWJsZWQ7Ci0gICAgUmVmUHRyPE11dGFibGVB
cnJheT4gYm9keSA9IE11dGFibGVBcnJheTo6Y3JlYXRlKCk7Ci0gICAgYm9keS0+YXBwZW5kKG1f
d2ViUGFnZVByb3h5LmdldCgpKTsKLSAgICBSZWZQdHI8V2ViQm9vbGVhbj4gd2ViRW5hYmxlZCA9
IFdlYkJvb2xlYW46OmNyZWF0ZShlbmFibGVkKTsKLSAgICBib2R5LT5hcHBlbmQod2ViRW5hYmxl
ZC5nZXQoKSk7Ci0gICAgbV9jb250ZXh0LT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUobWVz
c2FnZU5hbWUsIGJvZHkuZ2V0KCkpOworICAgIG1fY29udGV4dC0+c2V0TmF2aWdhdG9yUXRPYmpl
Y3RFbmFibGVkKG1fd2ViUGFnZVByb3h5LmdldCgpLCBlbmFibGVkKTsKIH0KIAogdm9pZCBRdFdl
YlBhZ2VQcm94eTo6cG9zdE1lc3NhZ2VUb05hdmlnYXRvclF0T2JqZWN0KGNvbnN0IFFTdHJpbmcm
IG1lc3NhZ2UpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBtZXNzYWdlTmFtZSgiTWVzc2FnZVRvTmF2
aWdhdG9yUXRPYmplY3QiKTsKLQotICAgIFJlZlB0cjxNdXRhYmxlQXJyYXk+IGJvZHkgPSBNdXRh
YmxlQXJyYXk6OmNyZWF0ZSgpOwotICAgIGJvZHktPmFwcGVuZChtX3dlYlBhZ2VQcm94eS5nZXQo
KSk7Ci0gICAgUmVmUHRyPFdlYlN0cmluZz4gY29udGVudHMgPSBXZWJTdHJpbmc6OmNyZWF0ZShT
dHJpbmcobWVzc2FnZSkpOwotICAgIGJvZHktPmFwcGVuZChjb250ZW50cy5nZXQoKSk7Ci0gICAg
bV9jb250ZXh0LT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUobWVzc2FnZU5hbWUsIGJvZHku
Z2V0KCkpOworICAgIG1fY29udGV4dC0+cG9zdE1lc3NhZ2VUb05hdmlnYXRvclF0T2JqZWN0KG1f
d2ViUGFnZVByb3h5LmdldCgpLCBtZXNzYWdlKTsKIH0KIAogdm9pZCBRdFdlYlBhZ2VQcm94eTo6
bG9hZEhUTUxTdHJpbmcoY29uc3QgUVN0cmluZyYgaHRtbCwgY29uc3QgUVVybCYgYmFzZVVybCkK
QEAgLTU1MCw3ICs1MTEsNyBAQCB2b2lkIFF0V2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJl
cXVlc3QoRG93bmxvYWRQcm94eSogZG93bmxvYWQpCiAgICAgZG93bmxvYWRJdGVtLT5kLT5kb3du
bG9hZFByb3h5ID0gZG93bmxvYWQ7CiAKICAgICBjb25uZWN0KGRvd25sb2FkSXRlbS0+ZCwgU0lH
TkFMKHJlY2VpdmVkUmVzcG9uc2UoUVdlYkRvd25sb2FkSXRlbSopKSwgdGhpcywgU0xPVChkaWRS
ZWNlaXZlRG93bmxvYWRSZXNwb25zZShRV2ViRG93bmxvYWRJdGVtKikpKTsKLSAgICBzX2Rvd25s
b2FkTWFuYWdlci0+YWRkRG93bmxvYWQoZG93bmxvYWQsIGRvd25sb2FkSXRlbSk7CisgICAgbV9j
b250ZXh0LT5kb3dubG9hZE1hbmFnZXIoKS0+YWRkRG93bmxvYWQoZG93bmxvYWQsIGRvd25sb2Fk
SXRlbSk7CiB9CiAKIHZvaWQgUXRXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVEb3dubG9hZFJlc3Bv
bnNlKFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKaW5kZXggOTI3NWI1NzczOWQzNWU4NTgwZDQ4YzI3
Y2M2NWJiMzJkNDNlZDE4Ny4uMzMxNzA0NDU0ZTNjOWMxZmQwNDEyNjViMDg2ODExOGUxOTRiNDMx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKQEAg
LTI0LDEwICsyNCw5IEBACiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUg
IkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCi0jaW5jbHVkZSAi
UXREb3dubG9hZE1hbmFnZXIuaCIKKyNpbmNsdWRlICJRdFdlYkNvbnRleHQuaCIKICNpbmNsdWRl
ICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgotI2lu
Y2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8UUdyYXBoaWNzVmlldz4KQEAgLTM4LDEyICszNywx
NyBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFVbmRvU3RhY2s7CiBRVF9FTkRfTkFNRVNQ
QUNFCiAKLWNsYXNzIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjsKK2NsYXNzIFFRdWlja1dlYlBhZ2U7
CitjbGFzcyBRUXVpY2tXZWJWaWV3OwogY2xhc3MgUXRXZWJFcnJvcjsKK2NsYXNzIFF0V2ViUGFn
ZUV2ZW50SGFuZGxlcjsKK2NsYXNzIFFXZWJEb3dubG9hZEl0ZW07CiBjbGFzcyBRV2ViUHJlZmVy
ZW5jZXM7CiBjbGFzcyBRV0tIaXN0b3J5OwotY2xhc3MgUVF1aWNrV2ViUGFnZTsKLWNsYXNzIFFR
dWlja1dlYlZpZXc7CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgUXRXZWJDb250ZXh0Owor
fQogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC0yMDEsMTIgKzIwNSw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJU
b3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpOwogI2VuZGlmCiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJDb250ZXh0PiBkZWZhdWx0V0tDb250ZXh0KCk7Ci0gICAgc3RhdGljIFJl
ZlB0cjxXZWJDb250ZXh0PiBzX2RlZmF1bHRDb250ZXh0OwotICAgIHN0YXRpYyBSZWZQdHI8UXRE
b3dubG9hZE1hbmFnZXI+IHNfZG93bmxvYWRNYW5hZ2VyOwotICAgIHN0YXRpYyB1bnNpZ25lZCBz
X2RlZmF1bHRQYWdlUHJveHlDb3VudDsKLQotICAgIFJlZlB0cjxXZWJDb250ZXh0PiBtX2NvbnRl
eHQ7CisgICAgUmVmUHRyPFF0V2ViQ29udGV4dD4gbV9jb250ZXh0OwogICAgIFFXS0hpc3Rvcnkq
IG1faGlzdG9yeTsKIAogICAgIG11dGFibGUgT3duUHRyPFFXZWJQcmVmZXJlbmNlcz4gbV9wcmVm
ZXJlbmNlczsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116649</attachid>
            <date>2011-11-25 21:57:46 -0800</date>
            <delta_ts>2011-11-25 23:18:16 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-73150-20111126025743.patch</filename>
            <type>text/plain</type>
            <size>21473</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGM1MWI5NzlmYjM4NjMx
OTIxMTM5NDJhMTA0YTJiZDU0OTM5NzBhOS4uMzg3MjQwNGM1MTgzZGQwNmNjMWZiNGQ0NmVlMDg4
M2I0YmNkMDA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDExLTExLTI1ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XSBbV0syXSBSZW1vdmUgV2ViQ29udGV4dCByZWxhdGVkIGNvZGUgZnJv
bSBRdFdlYlBhZ2VQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzMxNTAKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbi4KKworICAgICAgICBDcmVhdGVzIGEgUXRXZWJDb250ZXh0IGNsYXNzIHRoYXQgYWJz
dHJhY3RzIGF3YXkgZnJvbSBRdFdlYlBhZ2VQcm94eSB0aGUKKyAgICAgICAgaGFuZGxpbmcgb2Yg
Y3JlYXRpbmcgLyBtYWludGFpbmluZyB0aGUgZGVmYXVsdCBXZWJDb250ZXh0LCBhcyB3ZWxsIGFz
IHRoZQorICAgICAgICBjb2RlIGZvciB0aGUgV0tDb250ZXh0UmVmIGNsaWVudHMuCisKKyAgICAg
ICAgQW5vdGhlciBtb3RpdmF0aW9uIGZvciBoYXZpbmcgdGhpcyBlbnRpdHkgaXMgdG8gaGF2ZSBh
IHByb3BlciBwbGFjZSB0byBhZGQKKyAgICAgICAgb2JqZWN0cyBhcmUgYm91bmQgdG8gdGhlIGNv
bnRleHQsIGxpa2UgdGhlIFF0RG93bmxvYWRNYW5hZ2VyLgorCisgICAgICAgICogVGFyZ2V0LnBy
aToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9R
dFdlYkNvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UXRXZWJDb250ZXh0OjpR
dFdlYkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpRdFdlYkNvbnRleHQ6On5RdFdlYkNvbnRl
eHQpOgorICAgICAgICAoV2ViS2l0OjpRdFdlYkNvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlF0V2ViQ29udGV4dDo6ZGVmYXVsdENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpR
dFdlYkNvbnRleHQ6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpRdFdlYkNvbnRl
eHQ6OnNldE5hdmlnYXRvclF0T2JqZWN0RW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlF0V2Vi
Q29udGV4dDo6cG9zdE1lc3NhZ2VUb05hdmlnYXRvclF0T2JqZWN0KToKKyAgICAgICAgKFdlYktp
dDo6UXRXZWJDb250ZXh0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UXRXZWJDb250
ZXh0Ojppbml0aWFsaXplQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6dG9RdFdlYkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpRdFdlYkNvbnRleHQ6OmRp
ZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
cXQvUXRXZWJDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpRdFdlYkNvbnRleHQ6
OmRvd25sb2FkTWFuYWdlcik6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpRdFdlYlBhZ2VQcm94eSk6CisgICAgICAg
IChRdFdlYlBhZ2VQcm94eTo6flF0V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFF0V2ViUGFnZVBy
b3h5OjpzZXROYXZpZ2F0b3JRdE9iamVjdEVuYWJsZWQpOgorICAgICAgICAoUXRXZWJQYWdlUHJv
eHk6OnBvc3RNZXNzYWdlVG9OYXZpZ2F0b3JRdE9iamVjdCk6CisgICAgICAgIChRdFdlYlBhZ2VQ
cm94eTo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRX
ZWJQYWdlUHJveHkuaDoKKwogMjAxMS0xMS0yNSAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGpl
c3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XVtXSzJdIFJlZmFjdG9y
IEdlc3R1cmVSZWNvZ25pemVycyB0byB1c2UgUXRXZWJQYWdlRXZlbnRIYW5kbGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnBy
aQppbmRleCBiMDczYjQ2YjA3ODY1NGNkZDVhMGIzM2QwYmNiNGEzYjczYmU4ZGUzLi4zMjcxNzUx
YTA5YzA1ODNkYWZjOWRkMmViZDNmMzg0YmQ4MDEwNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTMxMyw3
ICszMTMsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1h
bmFnZXJQcm94eS5oIFwKICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkQ2xpZW50LmggXAog
ICAgIFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5oIFwKLSAgICBVSVByb2Nlc3MvcXQvQ2xpZW50SW1w
bC5oIFwKKyAgICBVSVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0LmggXAogICAgIFVJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJl
Y29nbml6ZXIuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuaCBc
CkBAIC02MTcsNyArNjE3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYlJlc291
cmNlQ2FjaGVNYW5hZ2VyUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
Q2xpZW50LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcCBcCi0gICAgVUlQcm9j
ZXNzL3F0L0NsaWVudEltcGwuY3BwIFwKKyAgICBVSVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0LmNw
cCBcCiAgICAgVUlQcm9jZXNzL3F0L0xheWVyVHJlZUhvc3RQcm94eVF0LmNwcCBcCiAgICAgVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9R
dEdlc3R1cmVSZWNvZ25pemVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xp
ZW50SW1wbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMjYxYzg5ZTJkMDAy
NDA0ZDdlMWNlNzY1Yzc1NzM2ZTU3NTViY2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMp
IDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNsaWVudEltcGwuaCIKLQotI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgPFdLQXJy
YXkuaD4KLSNpbmNsdWRlIDxXS1BhZ2UuaD4KLSNpbmNsdWRlIDxXS1N0cmluZy5oPgotI2luY2x1
ZGUgPFdLVHlwZS5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi12b2lkIHF0X3drX2Rp
ZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0tTdHJpbmdS
ZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCopCi17Ci0g
ICAgaWYgKCFXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiTWVzc2Fn
ZUZyb21OYXZpZ2F0b3JRdE9iamVjdCIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQo
bWVzc2FnZUJvZHkpOwotICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tB
cnJheUdldFR5cGVJRCgpKTsKLQotICAgIFdLQXJyYXlSZWYgYm9keSA9IHN0YXRpY19jYXN0PFdL
QXJyYXlSZWY+KG1lc3NhZ2VCb2R5KTsKLSAgICBBU1NFUlQoV0tBcnJheUdldFNpemUoYm9keSkg
PT0gMik7Ci0gICAgQVNTRVJUKFdLR2V0VHlwZUlEKFdLQXJyYXlHZXRJdGVtQXRJbmRleChib2R5
LCAwKSkgPT0gV0tQYWdlR2V0VHlwZUlEKCkpOwotICAgIEFTU0VSVChXS0dldFR5cGVJRChXS0Fy
cmF5R2V0SXRlbUF0SW5kZXgoYm9keSwgMSkpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpOwotCi0g
ICAgV0tQYWdlUmVmIHBhZ2UgPSBzdGF0aWNfY2FzdDxXS1BhZ2VSZWY+KFdLQXJyYXlHZXRJdGVt
QXRJbmRleChib2R5LCAwKSk7Ci0gICAgV0tTdHJpbmdSZWYgc3RyID0gc3RhdGljX2Nhc3Q8V0tT
dHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleChib2R5LCAxKSk7Ci0KLSAgICB0b0ltcGwo
cGFnZSktPmRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KHRvSW1wbChzdHIp
LT5zdHJpbmcoKSk7Ci19Ci0KLXZvaWQgc2V0dXBDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQo
V0tDb250ZXh0UmVmIGNvbnRleHQpCi17Ci0gICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnQgaW5qZWN0ZWRCdW5kbGVDbGllbnQ7Ci0gICAgbWVtc2V0KCZpbmplY3RlZEJ1bmRsZUNsaWVu
dCwgMCwgc2l6ZW9mKFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50KSk7Ci0gICAgaW5qZWN0
ZWRCdW5kbGVDbGllbnQudmVyc2lvbiA9IGtXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudEN1
cnJlbnRWZXJzaW9uOwotICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LmRpZFJlY2VpdmVNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlID0gcXRfd2tfZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGU7Ci0gICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dCwgJmlu
amVjdGVkQnVuZGxlQ2xpZW50KTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9DbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50
SW1wbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjJmNDM4MjhkZWVlNGFiZWE5
NTg2NDI2NDdkNjJjMTNlMTY5ZDQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwOCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLQotICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVm
IENsaWVudEltcGxfaAotI2RlZmluZSBDbGllbnRJbXBsX2gKLQotI2luY2x1ZGUgPFdlYktpdDIv
V0tDb250ZXh0Lmg+Ci0KLXZvaWQgc2V0dXBDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tD
b250ZXh0UmVmKTsKLQotI2VuZGlmIC8qIENsaWVudEltcGxfaCAqLwotCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCA2YTU4ZWE1
MmI0ODUyMzFiYTViNDBiZGYyZmUyMmU4ZjMwZDg0ZjkxLi5mMGU1OGQzZmJkOGEzZWI4NDU5MTQ1
NWMzN2M3MGE2ZWY5ZGVmODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXREb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdERvd25sb2FkTWFuYWdlci5jcHAKQEAgLTIxLDcgKzIxLDYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJRdERvd25sb2FkTWFuYWdlci5oIgogCi0jaW5jbHVkZSAiQ2xpZW50
SW1wbC5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJRdFdlYkVycm9y
LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmdRdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJDb250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTA2MzU0OGYyYjc0OGRjZjg1YzkyNzY1
NTdmOTdiYzg2MGFlNjU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViQ29udGV4dC5jcHAKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJv
Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXRXZWJDb250ZXh0LmgiCisKKyNp
bmNsdWRlICJNdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJRdERvd25sb2FkTWFuYWdlci5oIgor
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDxXS0FycmF5Lmg+CisjaW5jbHVkZSA8V0tQYWdl
Lmg+CisjaW5jbHVkZSA8V0tTdHJpbmcuaD4KKyNpbmNsdWRlIDxXS1R5cGUuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1F0V2ViQ29udGV4dCogUXRXZWJDb250ZXh0OjpzX2RlZmF1bHRDb250
ZXh0ID0gMDsKKworUXRXZWJDb250ZXh0OjpRdFdlYkNvbnRleHQoV2ViQ29udGV4dCogY29udGV4
dCkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQoreworfQorCitRdFdlYkNvbnRleHQ6On5RdFdl
YkNvbnRleHQoKQoreworICAgIGlmIChzX2RlZmF1bHRDb250ZXh0ID09IHRoaXMpCisgICAgICAg
IHNfZGVmYXVsdENvbnRleHQgPSAwOworfQorCisvLyBVc2VkIG9ubHkgYnkgV2ViS2l0VGVzdFJ1
bm5lci4gSXQgYXZvaWRzIGNhbGxpbmcgaW5pdGlhbGl6ZSgpLCBzbyB0aGF0IHdlIGRvbid0IHJl
Z2lzdGVyIGFueSBjbGllbnRzLgorUGFzc1JlZlB0cjxRdFdlYkNvbnRleHQ+IFF0V2ViQ29udGV4
dDo6Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBRdFdlYkNvbnRleHQoY29udGV4dCkpOworfQorCitQYXNzUmVmUHRyPFF0V2ViQ29udGV4dD4g
UXRXZWJDb250ZXh0OjpkZWZhdWx0Q29udGV4dCgpCit7CisgICAgaWYgKHNfZGVmYXVsdENvbnRl
eHQpCisgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPFF0V2ViQ29udGV4dD4oc19kZWZhdWx0Q29u
dGV4dCk7CisKKyAgICBSZWZQdHI8V2ViQ29udGV4dD4gY29udGV4dCA9IFdlYkNvbnRleHQ6OmNy
ZWF0ZShTdHJpbmcoKSk7CisgICAgUmVmUHRyPFF0V2ViQ29udGV4dD4gZGVmYXVsdENvbnRleHQg
PSBRdFdlYkNvbnRleHQ6OmNyZWF0ZShjb250ZXh0LmdldCgpKTsKKyAgICBzX2RlZmF1bHRDb250
ZXh0ID0gZGVmYXVsdENvbnRleHQuZ2V0KCk7CisgICAgZGVmYXVsdENvbnRleHQtPmluaXRpYWxp
emUoKTsKKworICAgIHJldHVybiBkZWZhdWx0Q29udGV4dC5yZWxlYXNlKCk7Cit9CisKK1Bhc3NS
ZWZQdHI8V2ViUGFnZVByb3h5PiBRdFdlYkNvbnRleHQ6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVu
dCogY2xpZW50LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCkKK3sKKyAgICByZXR1cm4gbV9jb250
ZXh0LT5jcmVhdGVXZWJQYWdlKGNsaWVudCwgcGFnZUdyb3VwKTsKK30KKwordm9pZCBRdFdlYkNv
bnRleHQ6OnNldE5hdmlnYXRvclF0T2JqZWN0RW5hYmxlZChXZWJQYWdlUHJveHkqIHdlYlBhZ2VQ
cm94eSwgYm9vbCBlbmFibGVkKQoreworICAgIHN0YXRpYyBTdHJpbmcgbWVzc2FnZU5hbWUoIlNl
dE5hdmlnYXRvclF0T2JqZWN0RW5hYmxlZCIpOworICAgIFJlZlB0cjxNdXRhYmxlQXJyYXk+IGJv
ZHkgPSBNdXRhYmxlQXJyYXk6OmNyZWF0ZSgpOworICAgIGJvZHktPmFwcGVuZCh3ZWJQYWdlUHJv
eHkpOworICAgIFJlZlB0cjxXZWJCb29sZWFuPiB3ZWJFbmFibGVkID0gV2ViQm9vbGVhbjo6Y3Jl
YXRlKGVuYWJsZWQpOworICAgIGJvZHktPmFwcGVuZCh3ZWJFbmFibGVkLmdldCgpKTsKKyAgICBt
X2NvbnRleHQtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgYm9keS5n
ZXQoKSk7Cit9CisKK3ZvaWQgUXRXZWJDb250ZXh0Ojpwb3N0TWVzc2FnZVRvTmF2aWdhdG9yUXRP
YmplY3QoV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHksIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2Up
Cit7CisgICAgc3RhdGljIFN0cmluZyBtZXNzYWdlTmFtZSgiTWVzc2FnZVRvTmF2aWdhdG9yUXRP
YmplY3QiKTsKKyAgICBSZWZQdHI8TXV0YWJsZUFycmF5PiBib2R5ID0gTXV0YWJsZUFycmF5Ojpj
cmVhdGUoKTsKKyAgICBib2R5LT5hcHBlbmQod2ViUGFnZVByb3h5KTsKKyAgICBSZWZQdHI8V2Vi
U3RyaW5nPiBjb250ZW50cyA9IFdlYlN0cmluZzo6Y3JlYXRlKFN0cmluZyhtZXNzYWdlKSk7Cisg
ICAgYm9keS0+YXBwZW5kKGNvbnRlbnRzLmdldCgpKTsKKyAgICBtX2NvbnRleHQtPnBvc3RNZXNz
YWdlVG9JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgYm9keS5nZXQoKSk7Cit9CisKK3ZvaWQg
UXRXZWJDb250ZXh0Ojppbml0aWFsaXplKCkKK3sKKyAgICBtX2Rvd25sb2FkTWFuYWdlciA9IFF0
RG93bmxvYWRNYW5hZ2VyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKKyAgICBpbml0aWFsaXpl
Q29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50KCk7Cit9CisKK3ZvaWQgUXRXZWJDb250ZXh0Ojpp
bml0aWFsaXplQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50KCkKK3sKKyAgICBXS0NvbnRleHRJ
bmplY3RlZEJ1bmRsZUNsaWVudCBpbmplY3RlZEJ1bmRsZUNsaWVudDsKKyAgICBtZW1zZXQoJmlu
amVjdGVkQnVuZGxlQ2xpZW50LCAwLCBzaXplb2YoV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnQpKTsKKyAgICBpbmplY3RlZEJ1bmRsZUNsaWVudC52ZXJzaW9uID0ga1dLQ29udGV4dEluamVj
dGVkQnVuZGxlQ2xpZW50Q3VycmVudFZlcnNpb247CisgICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQu
Y2xpZW50SW5mbyA9IHRoaXM7CisgICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZTsKKyAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudCh0b0FQSShtX2NvbnRl
eHQuZ2V0KCkpLCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQpOworfQorCitzdGF0aWMgUXRXZWJDb250
ZXh0KiB0b1F0V2ViQ29udGV4dChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIEFTU0VS
VChjbGllbnRJbmZvKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxRdFdlYkNvbnRleHQq
Pihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Cit9CisKK3ZvaWQgUXRXZWJDb250ZXh0
OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3Ry
aW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCit7CisgICAgdG9RdFdlYkNvbnRleHQoY2xpZW50SW5mbyktPmRpZFJlY2VpdmVN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSk7Cit9CisK
K3ZvaWQgUXRXZWJDb250ZXh0OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShX
S1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5KQoreworICAgIGlm
ICghV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIk1lc3NhZ2VGcm9t
TmF2aWdhdG9yUXRPYmplY3QiKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1lc3Nh
Z2VCb2R5KTsKKyAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQXJyYXlH
ZXRUeXBlSUQoKSk7CisKKyAgICBXS0FycmF5UmVmIGJvZHkgPSBzdGF0aWNfY2FzdDxXS0FycmF5
UmVmPihtZXNzYWdlQm9keSk7CisgICAgQVNTRVJUKFdLQXJyYXlHZXRTaXplKGJvZHkpID09IDIp
OworICAgIEFTU0VSVChXS0dldFR5cGVJRChXS0FycmF5R2V0SXRlbUF0SW5kZXgoYm9keSwgMCkp
ID09IFdLUGFnZUdldFR5cGVJRCgpKTsKKyAgICBBU1NFUlQoV0tHZXRUeXBlSUQoV0tBcnJheUdl
dEl0ZW1BdEluZGV4KGJvZHksIDEpKSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKTsKKworICAgIFdL
UGFnZVJlZiBwYWdlID0gc3RhdGljX2Nhc3Q8V0tQYWdlUmVmPihXS0FycmF5R2V0SXRlbUF0SW5k
ZXgoYm9keSwgMCkpOworICAgIFdLU3RyaW5nUmVmIHN0ciA9IHN0YXRpY19jYXN0PFdLU3RyaW5n
UmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoYm9keSwgMSkpOworCisgICAgdG9JbXBsKHBhZ2Up
LT5kaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdCh0b0ltcGwoc3RyKS0+c3Ry
aW5nKCkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjVjNmI2YzZiNjQ2OTA1MjAwMDdlYzVhMDZhMzIwNjQxYjg5NWVjMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkNvbnRl
eHQuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBRdFdlYkNv
bnRleHRfaAorI2RlZmluZSBRdFdlYkNvbnRleHRfaAorCisjaW5jbHVkZSA8V0tDb250ZXh0Lmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQYWdlQ2xpZW50OworY2xhc3MgUXREb3dubG9h
ZE1hbmFnZXI7CitjbGFzcyBXZWJDb250ZXh0OworY2xhc3MgV2ViUGFnZUdyb3VwOworY2xhc3Mg
V2ViUGFnZVByb3h5OworCitjbGFzcyBRdFdlYkNvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxR
dFdlYkNvbnRleHQ+IHsKK3B1YmxpYzoKKyAgICB+UXRXZWJDb250ZXh0KCk7CisKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxRdFdlYkNvbnRleHQ+IGNyZWF0ZShXZWJDb250ZXh0Kik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UXRXZWJDb250ZXh0PiBkZWZhdWx0Q29udGV4dCgpOworCisgICAgUGFz
c1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCosIFdlYlBhZ2VH
cm91cCopOworCisgICAgUXREb3dubG9hZE1hbmFnZXIqIGRvd25sb2FkTWFuYWdlcigpIHsgcmV0
dXJuIG1fZG93bmxvYWRNYW5hZ2VyLmdldCgpOyB9CisKKyAgICB2b2lkIHNldE5hdmlnYXRvclF0
T2JqZWN0RW5hYmxlZChXZWJQYWdlUHJveHkqLCBib29sKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdl
VG9OYXZpZ2F0b3JRdE9iamVjdChXZWJQYWdlUHJveHkqLCBjb25zdCBRU3RyaW5nJik7CisKK3By
aXZhdGU6CisgICAgZXhwbGljaXQgUXRXZWJDb250ZXh0KFdlYkNvbnRleHQqKTsKKworICAgIHZv
aWQgaW5pdGlhbGl6ZSgpOworICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudCgpOworCisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVm
IG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3Nh
Z2VCb2R5KTsKKworICAgIHN0YXRpYyBRdFdlYkNvbnRleHQqIHNfZGVmYXVsdENvbnRleHQ7CisK
KyAgICBSZWZQdHI8V2ViQ29udGV4dD4gbV9jb250ZXh0OworICAgIFJlZlB0cjxRdERvd25sb2Fk
TWFuYWdlcj4gbV9kb3dubG9hZE1hbmFnZXI7Cit9OworCit9CisKKyNlbmRpZiAvLyBRdFdlYkNv
bnRleHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5j
cHAKaW5kZXggMGExMDZkMTNiZDMwN2YxNzYwMTIwNDJjMGEyZWM0NDE1NmM1ZjgxOS4uNGFjMDRm
NGRmZGJlYjg4NDRhNDQzMTM1NmEyN2JlMDNmM2FiNGY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCkBAIC0zMiwxNSArMzIsMTQgQEAKICNp
bmNsdWRlICJxd2VicHJlZmVyZW5jZXNfcC5oIgogI2luY2x1ZGUgInF3ZWJwcmVmZXJlbmNlc19w
X3AuaCIKIAotI2luY2x1ZGUgIkNsaWVudEltcGwuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKICNpbmNsdWRlICJxd2toaXN0
b3J5LmgiCiAjaW5jbHVkZSAicXdraGlzdG9yeV9wLmgiCiAjaW5jbHVkZSAiRmluZEluZGljYXRv
ci5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKLSNpbmNsdWRlICJNdXRhYmxlQXJy
YXkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlF0RG93bmxvYWRN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAi
UXRXZWJVbmRvQ29tbWFuZC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgpAQCAt
NjgsMzIgKzY3LDE1IEBACiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLVJlZlB0cjxXZWJDb250ZXh0PiBRdFdlYlBhZ2VQcm94eTo6c19kZWZhdWx0
Q29udGV4dDsKLVJlZlB0cjxRdERvd25sb2FkTWFuYWdlcj4gUXRXZWJQYWdlUHJveHk6OnNfZG93
bmxvYWRNYW5hZ2VyOwotCi11bnNpZ25lZCBRdFdlYlBhZ2VQcm94eTo6c19kZWZhdWx0UGFnZVBy
b3h5Q291bnQgPSAwOwotCi1QYXNzUmVmUHRyPFdlYkNvbnRleHQ+IFF0V2ViUGFnZVByb3h5Ojpk
ZWZhdWx0V0tDb250ZXh0KCkKLXsKLSAgICBpZiAoIXNfZGVmYXVsdENvbnRleHQpIHsKLSAgICAg
ICAgc19kZWZhdWx0Q29udGV4dCA9IFdlYkNvbnRleHQ6OmNyZWF0ZShTdHJpbmcoKSk7Ci0gICAg
ICAgIHNldHVwQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50KHRvQVBJKHNfZGVmYXVsdENvbnRl
eHQuZ2V0KCkpKTsKLSAgICAgICAgc19kb3dubG9hZE1hbmFnZXIgPSBRdERvd25sb2FkTWFuYWdl
cjo6Y3JlYXRlKHNfZGVmYXVsdENvbnRleHQuZ2V0KCkpOwotICAgIH0KLSAgICByZXR1cm4gc19k
ZWZhdWx0Q29udGV4dDsKLX0KLQogUXRXZWJQYWdlUHJveHk6OlF0V2ViUGFnZVByb3h5KFFRdWlj
a1dlYlBhZ2UqIHFtbFdlYlBhZ2UsIFFRdWlja1dlYlZpZXcqIHFtbFdlYlZpZXcsIFdLQ29udGV4
dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiAgICAgOiBtX3Ft
bFdlYlBhZ2UocW1sV2ViUGFnZSkKICAgICAsIG1fcW1sV2ViVmlldyhxbWxXZWJWaWV3KQotICAg
ICwgbV9jb250ZXh0KGNvbnRleHRSZWYgPyB0b0ltcGwoY29udGV4dFJlZikgOiBkZWZhdWx0V0tD
b250ZXh0KCkpCisgICAgLCBtX2NvbnRleHQoY29udGV4dFJlZiA/IFF0V2ViQ29udGV4dDo6Y3Jl
YXRlKHRvSW1wbChjb250ZXh0UmVmKSkgOiBRdFdlYkNvbnRleHQ6OmRlZmF1bHRDb250ZXh0KCkp
CiAgICAgLCBtX3VuZG9TdGFjayhhZG9wdFB0cihuZXcgUVVuZG9TdGFjayh0aGlzKSkpCiAgICAg
LCBtX25hdmlnYXRvclF0T2JqZWN0RW5hYmxlZChmYWxzZSkKIHsKICAgICBtX3dlYlBhZ2VQcm94
eSA9IG1fY29udGV4dC0+Y3JlYXRlV2ViUGFnZSh0aGlzLCB0b0ltcGwocGFnZUdyb3VwUmVmKSk7
CiAgICAgbV9oaXN0b3J5ID0gUVdLSGlzdG9yeVByaXZhdGU6OmNyZWF0ZUhpc3RvcnkodGhpcywg
bV93ZWJQYWdlUHJveHktPmJhY2tGb3J3YXJkTGlzdCgpKTsKLSAgICBpZiAoIWNvbnRleHRSZWYp
Ci0gICAgICAgIHNfZGVmYXVsdFBhZ2VQcm94eUNvdW50Kys7CiB9CiAKIHZvaWQgUXRXZWJQYWdl
UHJveHk6OmluaXQoUXRXZWJQYWdlRXZlbnRIYW5kbGVyKiBldmVudEhhbmRsZXIpCkBAIC0xMDUs
MTUgKzg3LDYgQEAgdm9pZCBRdFdlYlBhZ2VQcm94eTo6aW5pdChRdFdlYlBhZ2VFdmVudEhhbmRs
ZXIqIGV2ZW50SGFuZGxlcikKIFF0V2ViUGFnZVByb3h5Ojp+UXRXZWJQYWdlUHJveHkoKQogewog
ICAgIG1fd2ViUGFnZVByb3h5LT5jbG9zZSgpOwotICAgIC8vIFRoZSBjb250ZXh0IGlzIHRoZSBk
ZWZhdWx0IG9uZSBhbmQgd2UncmUgZGVsZXRpbmcgdGhlIGxhc3QgUXRXZWJQYWdlUHJveHkuCi0g
ICAgaWYgKG1fY29udGV4dCA9PSBzX2RlZmF1bHRDb250ZXh0KSB7Ci0gICAgICAgIEFTU0VSVChz
X2RlZmF1bHRQYWdlUHJveHlDb3VudCA+IDApOwotICAgICAgICBzX2RlZmF1bHRQYWdlUHJveHlD
b3VudC0tOwotICAgICAgICBpZiAoIXNfZGVmYXVsdFBhZ2VQcm94eUNvdW50KSB7Ci0gICAgICAg
ICAgICBzX2RlZmF1bHRDb250ZXh0LmNsZWFyKCk7Ci0gICAgICAgICAgICBzX2Rvd25sb2FkTWFu
YWdlci5jbGVhcigpOwotICAgICAgICB9Ci0gICAgfQogICAgIGRlbGV0ZSBtX2hpc3Rvcnk7CiB9
CiAKQEAgLTQyMywyNyArMzk2LDE1IEBAIFFTdHJpbmcgUXRXZWJQYWdlUHJveHk6OmN1c3RvbVVz
ZXJBZ2VudCgpIGNvbnN0CiAKIHZvaWQgUXRXZWJQYWdlUHJveHk6OnNldE5hdmlnYXRvclF0T2Jq
ZWN0RW5hYmxlZChib29sIGVuYWJsZWQpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBtZXNzYWdlTmFt
ZSgiU2V0TmF2aWdhdG9yUXRPYmplY3RFbmFibGVkIik7Ci0KICAgICBBU1NFUlQoZW5hYmxlZCAh
PSBtX25hdmlnYXRvclF0T2JqZWN0RW5hYmxlZCk7CiAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB3
ZSBoYXZlIHRvIGtlZXAgdGhpcyBpbmZvcm1hdGlvbiBpbiBib3RoIHByb2Nlc3NlcyBhbmQgdGhl
IHNldHRpbmcgaXMgYXN5bmNocm9ub3VzLgogICAgIG1fbmF2aWdhdG9yUXRPYmplY3RFbmFibGVk
ID0gZW5hYmxlZDsKLSAgICBSZWZQdHI8TXV0YWJsZUFycmF5PiBib2R5ID0gTXV0YWJsZUFycmF5
OjpjcmVhdGUoKTsKLSAgICBib2R5LT5hcHBlbmQobV93ZWJQYWdlUHJveHkuZ2V0KCkpOwotICAg
IFJlZlB0cjxXZWJCb29sZWFuPiB3ZWJFbmFibGVkID0gV2ViQm9vbGVhbjo6Y3JlYXRlKGVuYWJs
ZWQpOwotICAgIGJvZHktPmFwcGVuZCh3ZWJFbmFibGVkLmdldCgpKTsKLSAgICBtX2NvbnRleHQt
PnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgYm9keS5nZXQoKSk7Cisg
ICAgbV9jb250ZXh0LT5zZXROYXZpZ2F0b3JRdE9iamVjdEVuYWJsZWQobV93ZWJQYWdlUHJveHku
Z2V0KCksIGVuYWJsZWQpOwogfQogCiB2b2lkIFF0V2ViUGFnZVByb3h5Ojpwb3N0TWVzc2FnZVRv
TmF2aWdhdG9yUXRPYmplY3QoY29uc3QgUVN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBzdGF0aWMg
U3RyaW5nIG1lc3NhZ2VOYW1lKCJNZXNzYWdlVG9OYXZpZ2F0b3JRdE9iamVjdCIpOwotCi0gICAg
UmVmUHRyPE11dGFibGVBcnJheT4gYm9keSA9IE11dGFibGVBcnJheTo6Y3JlYXRlKCk7Ci0gICAg
Ym9keS0+YXBwZW5kKG1fd2ViUGFnZVByb3h5LmdldCgpKTsKLSAgICBSZWZQdHI8V2ViU3RyaW5n
PiBjb250ZW50cyA9IFdlYlN0cmluZzo6Y3JlYXRlKFN0cmluZyhtZXNzYWdlKSk7Ci0gICAgYm9k
eS0+YXBwZW5kKGNvbnRlbnRzLmdldCgpKTsKLSAgICBtX2NvbnRleHQtPnBvc3RNZXNzYWdlVG9J
bmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgYm9keS5nZXQoKSk7CisgICAgbV9jb250ZXh0LT5w
b3N0TWVzc2FnZVRvTmF2aWdhdG9yUXRPYmplY3QobV93ZWJQYWdlUHJveHkuZ2V0KCksIG1lc3Nh
Z2UpOwogfQogCiB2b2lkIFF0V2ViUGFnZVByb3h5Ojpsb2FkSFRNTFN0cmluZyhjb25zdCBRU3Ry
aW5nJiBodG1sLCBjb25zdCBRVXJsJiBiYXNlVXJsKQpAQCAtNTUwLDcgKzUxMSw3IEBAIHZvaWQg
UXRXZWJQYWdlUHJveHk6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5KiBkb3du
bG9hZCkKICAgICBkb3dubG9hZEl0ZW0tPmQtPmRvd25sb2FkUHJveHkgPSBkb3dubG9hZDsKIAog
ICAgIGNvbm5lY3QoZG93bmxvYWRJdGVtLT5kLCBTSUdOQUwocmVjZWl2ZWRSZXNwb25zZShRV2Vi
RG93bmxvYWRJdGVtKikpLCB0aGlzLCBTTE9UKGRpZFJlY2VpdmVEb3dubG9hZFJlc3BvbnNlKFFX
ZWJEb3dubG9hZEl0ZW0qKSkpOwotICAgIHNfZG93bmxvYWRNYW5hZ2VyLT5hZGREb3dubG9hZChk
b3dubG9hZCwgZG93bmxvYWRJdGVtKTsKKyAgICBtX2NvbnRleHQtPmRvd25sb2FkTWFuYWdlcigp
LT5hZGREb3dubG9hZChkb3dubG9hZCwgZG93bmxvYWRJdGVtKTsKIH0KIAogdm9pZCBRdFdlYlBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZURvd25sb2FkUmVzcG9uc2UoUVdlYkRvd25sb2FkSXRlbSogZG93
bmxvYWRJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
aAppbmRleCA5Mjc1YjU3NzM5ZDM1ZTg1ODBkNDhjMjdjYzY1YmIzMmQ0M2VkMTg3Li4zMzE3MDQ0
NTRlM2M5YzFmZDA0MTI2NWIwODY4MTE4ZTE5NGI0MzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaApAQCAtMjQsMTAgKzI0LDkgQEAKICNpbmNsdWRl
ICJEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlBhZ2VDbGllbnQuaCIKLSNpbmNsdWRlICJRdERvd25sb2FkTWFuYWdlci5oIgorI2lu
Y2x1ZGUgIlF0V2ViQ29udGV4dC5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2lu
Y2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCi0jaW5jbHVkZSAiV2ViQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDxRR3JhcGhpY3NWaWV3PgpAQCAtMzgsMTIgKzM3LDE3IEBAIFFUX0JFR0lOX05BTUVTUEFDRQog
Y2xhc3MgUVVuZG9TdGFjazsKIFFUX0VORF9OQU1FU1BBQ0UKIAotY2xhc3MgUXRXZWJQYWdlRXZl
bnRIYW5kbGVyOworY2xhc3MgUVF1aWNrV2ViUGFnZTsKK2NsYXNzIFFRdWlja1dlYlZpZXc7CiBj
bGFzcyBRdFdlYkVycm9yOworY2xhc3MgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOworY2xhc3MgUVdl
YkRvd25sb2FkSXRlbTsKIGNsYXNzIFFXZWJQcmVmZXJlbmNlczsKIGNsYXNzIFFXS0hpc3Rvcnk7
Ci1jbGFzcyBRUXVpY2tXZWJQYWdlOwotY2xhc3MgUVF1aWNrV2ViVmlldzsKKworbmFtZXNwYWNl
IFdlYktpdCB7CitjbGFzcyBRdFdlYkNvbnRleHQ7Cit9CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKQEAgLTIwMSwxMiArMjA1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZG9u
ZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW50
SGFuZGxlZCk7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbnRleHQ+IGRl
ZmF1bHRXS0NvbnRleHQoKTsKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkNvbnRleHQ+IHNfZGVmYXVs
dENvbnRleHQ7Ci0gICAgc3RhdGljIFJlZlB0cjxRdERvd25sb2FkTWFuYWdlcj4gc19kb3dubG9h
ZE1hbmFnZXI7Ci0gICAgc3RhdGljIHVuc2lnbmVkIHNfZGVmYXVsdFBhZ2VQcm94eUNvdW50Owot
Ci0gICAgUmVmUHRyPFdlYkNvbnRleHQ+IG1fY29udGV4dDsKKyAgICBSZWZQdHI8UXRXZWJDb250
ZXh0PiBtX2NvbnRleHQ7CiAgICAgUVdLSGlzdG9yeSogbV9oaXN0b3J5OwogCiAgICAgbXV0YWJs
ZSBPd25QdHI8UVdlYlByZWZlcmVuY2VzPiBtX3ByZWZlcmVuY2VzOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>