<?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>110273</bug_id>
          
          <creation_ts>2013-02-19 15:56:20 -0800</creation_ts>
          <short_desc>webdatabase: Introduce AbstractSQLTransaction and AbstractSQLTransactionBackend</short_desc>
          <delta_ts>2013-02-19 16:51:38 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>ggaren</cc>
    
    <cc>levin+threading</cc>
    
    <cc>michaeln</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>836891</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-02-19 15:56:20 -0800</bug_when>
    <thetext>Need to define the transaction interface between the front end and backend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836902</commentid>
    <comment_count>1</comment_count>
      <attachid>189191</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-02-19 16:01:10 -0800</bug_when>
    <thetext>Created attachment 189191
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836907</commentid>
    <comment_count>2</comment_count>
      <attachid>189191</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-02-19 16:06:32 -0800</bug_when>
    <thetext>Comment on attachment 189191
the patch.

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

&gt; Source/WebCore/Modules/webdatabase/SQLTransaction.h:79
&gt; +    virtual void requestTransitToState(SQLTransactionState);
&gt; +    virtual bool hasCallback() const;
&gt; +    virtual bool hasSuccessCallback() const;
&gt; +    virtual bool hasErrorCallback() const;
&gt; +    virtual void setBackend(AbstractSQLTransactionBackend*);

You should add OVERRIDE to these.

&gt; Source/WebCore/Modules/webdatabase/SQLTransactionBackend.h:84
&gt; +    virtual void requestTransitToState(SQLTransactionState);
&gt; +    virtual PassRefPtr&lt;SQLError&gt; transactionError();
&gt; +    virtual AbstractSQLStatement* currentStatement();
&gt; +    virtual void setShouldRetryCurrentStatement(bool);
&gt; +    virtual void executeSQL(PassOwnPtr&lt;AbstractSQLStatement&gt;, const String&amp; statement,
&gt; +        const Vector&lt;SQLValue&gt;&amp; arguments, int permissions);

And here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836983</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-02-19 16:51:38 -0800</bug_when>
    <thetext>Thanks for there review.  Adjusted patch based on feedback.  Landed in r143412: &lt;http://trac.webkit.org/changeset/143412&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189191</attachid>
            <date>2013-02-19 16:01:10 -0800</date>
            <delta_ts>2013-02-19 16:06:31 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-110273.patch</filename>
            <type>text/plain</type>
            <size>17210</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEzLTAyLTE5ICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyBBYnN0cmFjdFNR
TFRyYW5zYWN0aW9uIGFuZCBBYnN0cmFjdFNRTFRyYW5zYWN0aW9uQmFja2VuZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDI3My4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHBhcnQgb2Yg
dGhlIHdlYmRhdGFiYXNlIHJlZmFjdG9yaW5nIGZvciB3ZWJraXQyLgorICAgICAgICAtIEFsc28g
Y2hhbmdlZCB0aGUgZnJvbnRlbmQgYW5kIGJhY2tlbmQgdG8gb25seSByZWZlciB0byB0aGUKKyAg
ICAgICAgICBhYnN0cmFjdCBpbnRlcmZhY2Ugb2YgZWFjaCBvdGhlci4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0U1FMVHJh
bnNhY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChBYnN0cmFjdFNRTFRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFic3RyYWN0U1FMVHJhbnNhY3Rpb246On5BYnN0cmFjdFNRTFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0U1FMVHJhbnNh
Y3Rpb25CYWNrZW5kLmg6IEFkZGVkLgorICAgICAgICAoQWJzdHJhY3RTUUxUcmFuc2FjdGlvbkJh
Y2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6
On5BYnN0cmFjdFNRTFRyYW5zYWN0aW9uQmFja2VuZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbjo6aGFzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246Omhh
c1N1Y2Nlc3NDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6aGFz
RXJyb3JDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6c2V0QmFj
a2VuZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5oOgor
ICAgICAgICAoU1FMVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0
aW9uQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFj
a2VuZDo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5oOgorICAgICAgICAoU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uU3RhdGVN
YWNoaW5lLmg6CisKIDIwMTMtMDItMTkgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBDb252ZXJ0IDMgc2V0dGluZ3MgdG8gdXNlIFNldHRpbmdzLmluCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0U1FMVHJhbnNhY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3Ry
YWN0U1FMVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3RTUUxUcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgQWJzdHJhY3RTUUxUcmFuc2FjdGlvbl9oCisjZGVmaW5lIEFic3RyYWN0U1FM
VHJhbnNhY3Rpb25faAorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIlNR
TFRyYW5zYWN0aW9uU3RhdGUuaCIKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBYnN0cmFjdFNRTFRyYW5zYWN0aW9u
QmFja2VuZDsKKworY2xhc3MgQWJzdHJhY3RTUUxUcmFuc2FjdGlvbiA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxBYnN0cmFjdFNRTFRyYW5zYWN0aW9uPiB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+QWJzdHJhY3RTUUxUcmFuc2FjdGlvbigpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RUcmFuc2l0VG9TdGF0ZShTUUxUcmFuc2FjdGlvblN0YXRlKSA9IDA7CisKKyAgICAvLyBV
c2VkIGR1cmluZyBpbml0aWFsaXphdGlvbiBvbmx5LgorICAgIHZpcnR1YWwgYm9vbCBoYXNDYWxs
YmFjaygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzU3VjY2Vzc0NhbGxiYWNrKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNFcnJvckNhbGxiYWNrKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZW5kKEFic3RyYWN0U1FMVHJhbnNhY3Rpb25CYWNr
ZW5kKikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFNRTF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIEFic3RyYWN0U1FMVHJhbnNhY3Rpb25faApJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdFNRTFRyYW5z
YWN0aW9uQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvQWJzdHJhY3RTUUxUcmFuc2FjdGlvbkJhY2tlbmQuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3RTUUxUcmFuc2FjdGlv
bkJhY2tlbmQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEFic3RyYWN0U1FMVHJhbnNh
Y3Rpb25CYWNrZW5kX2gKKyNkZWZpbmUgQWJzdHJhY3RTUUxUcmFuc2FjdGlvbkJhY2tlbmRfaAor
CisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkFic3RyYWN0U1FMU3RhdGVt
ZW50LmgiCisjaW5jbHVkZSAiU1FMRXJyb3IuaCIKKyNpbmNsdWRlICJTUUxUcmFuc2FjdGlvblN0
YXRlLmgiCisjaW5jbHVkZSAiU1FMVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBBYnN0cmFjdFNRTFRyYW5zYWN0aW9uQmFja2VuZCA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxBYnN0cmFjdFNRTFRyYW5zYWN0aW9uQmFja2VuZD4geworcHVi
bGljOgorICAgIHZpcnR1YWwgfkFic3RyYWN0U1FMVHJhbnNhY3Rpb25CYWNrZW5kKCkgeyB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFRyYW5zaXRUb1N0YXRlKFNRTFRyYW5zYWN0aW9uU3Rh
dGUpID0gMDsKKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTUUxFcnJvcj4gdHJhbnNhY3Rpb25F
cnJvcigpID0gMDsKKyAgICB2aXJ0dWFsIEFic3RyYWN0U1FMU3RhdGVtZW50KiBjdXJyZW50U3Rh
dGVtZW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRSZXRyeUN1cnJlbnRTdGF0
ZW1lbnQoYm9vbCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUwoUGFzc093blB0
cjxBYnN0cmFjdFNRTFN0YXRlbWVudD4sIGNvbnN0IFN0cmluZyYgc3RhdGVtZW50LAorICAgICAg
ICBjb25zdCBWZWN0b3I8U1FMVmFsdWU+JiBhcmd1bWVudHMsIGludCBwZXJtaXNzaW9ucykgPSAw
OworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FM
X0RBVEFCQVNFKQorCisjZW5kaWYgLy8gQWJzdHJhY3RTUUxUcmFuc2FjdGlvbkJhY2tlbmRfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDE0MzM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiQWJzdHJh
Y3RTUUxUcmFuc2FjdGlvbkJhY2tlbmQuaCIKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1
ZGUgIkRhdGFiYXNlQXV0aG9yaXplci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgpA
QCAtMzksOSArNDAsOCBAQAogI2luY2x1ZGUgIlNRTEVycm9yLmgiCiAjaW5jbHVkZSAiU1FMU3Rh
dGVtZW50Q2FsbGJhY2suaCIKICNpbmNsdWRlICJTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmgi
Ci0jaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmgiCiAjaW5jbHVkZSAiU1FMVHJhbnNh
Y3Rpb25DYWxsYmFjay5oIgotI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uQ2xpZW50LmgiCisjaW5j
bHVkZSAiU1FMVHJhbnNhY3Rpb25DbGllbnQuaCIgLy8gRklYTUU6IFNob3VsZCBiZSB1c2VkIGlu
IHRoZSBiYWNrZW5kIG9ubHkuCiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNr
LmgiCiAjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgpAQCAtNjksNyArNjksMjIgQEAgU1FMVHJhbnNhY3Rpb246OlNRTFRyYW5zYWN0aW9uKERh
dGFiYXNlKgogICAgIEFTU0VSVChtX2RhdGFiYXNlKTsKIH0KIAotdm9pZCBTUUxUcmFuc2FjdGlv
bjo6c2V0QmFja2VuZChTUUxUcmFuc2FjdGlvbkJhY2tlbmQqIGJhY2tlbmQpCitib29sIFNRTFRy
YW5zYWN0aW9uOjpoYXNDYWxsYmFjaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2FsbGJhY2tX
cmFwcGVyLmhhc0NhbGxiYWNrKCk7Cit9CisKK2Jvb2wgU1FMVHJhbnNhY3Rpb246Omhhc1N1Y2Nl
c3NDYWxsYmFjaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3VjY2Vzc0NhbGxiYWNrV3JhcHBl
ci5oYXNDYWxsYmFjaygpOworfQorCitib29sIFNRTFRyYW5zYWN0aW9uOjpoYXNFcnJvckNhbGxi
YWNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9lcnJvckNhbGxiYWNrV3JhcHBlci5oYXNDYWxs
YmFjaygpOworfQorCit2b2lkIFNRTFRyYW5zYWN0aW9uOjpzZXRCYWNrZW5kKEFic3RyYWN0U1FM
VHJhbnNhY3Rpb25CYWNrZW5kKiBiYWNrZW5kKQogewogICAgIEFTU0VSVCghbV9iYWNrZW5kKTsK
ICAgICBtX2JhY2tlbmQgPSBiYWNrZW5kOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMTQzMzk4KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQogCisjaW5jbHVkZSAiQWJzdHJhY3RTUUxUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNRTENh
bGxiYWNrV3JhcHBlci5oIgogI2luY2x1ZGUgIlNRTFN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNR
TFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmgiCkBAIC0zOSwyNCArNDAsMjIgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBBYnN0cmFjdFNRTFRyYW5zYWN0aW9uQmFja2VuZDsKIGNs
YXNzIERhdGFiYXNlOwogY2xhc3MgU1FMRXJyb3I7CiBjbGFzcyBTUUxTdGF0ZW1lbnRDYWxsYmFj
azsKIGNsYXNzIFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s7Ci1jbGFzcyBTUUxUcmFuc2FjdGlv
bkJhY2tlbmQ7CiBjbGFzcyBTUUxUcmFuc2FjdGlvbkNhbGxiYWNrOwogY2xhc3MgU1FMVHJhbnNh
Y3Rpb25FcnJvckNhbGxiYWNrOwogY2xhc3MgU1FMVmFsdWU7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7
CiAKLWNsYXNzIFNRTFRyYW5zYWN0aW9uIDogcHVibGljIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNo
aW5lPFNRTFRyYW5zYWN0aW9uPiB7CitjbGFzcyBTUUxUcmFuc2FjdGlvbiA6IHB1YmxpYyBTUUxU
cmFuc2FjdGlvblN0YXRlTWFjaGluZTxTUUxUcmFuc2FjdGlvbj4sIHB1YmxpYyBBYnN0cmFjdFNR
TFRyYW5zYWN0aW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTUUxUcmFuc2Fj
dGlvbj4gY3JlYXRlKERhdGFiYXNlKiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNr
PiwKICAgICAgICAgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFz
c1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+LAogICAgICAgICBib29sIHJlYWRP
bmx5KTsKIAotICAgIHZvaWQgc2V0QmFja2VuZChTUUxUcmFuc2FjdGlvbkJhY2tlbmQqKTsKLQog
ICAgIHZvaWQgcGVyZm9ybVBlbmRpbmdDYWxsYmFjaygpOwogCiAgICAgdm9pZCBleGVjdXRlU1FM
KGNvbnN0IFN0cmluZyYgc3FsU3RhdGVtZW50LCBjb25zdCBWZWN0b3I8U1FMVmFsdWU+JiBhcmd1
bWVudHMsCkBAIC02NCwxMCArNjMsNiBAQCBwdWJsaWM6CiAKICAgICBEYXRhYmFzZSogZGF0YWJh
c2UoKSB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgpOyB9CiAKLSAgICBib29sIGhhc0NhbGxiYWNr
KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja1dyYXBwZXIuaGFzQ2FsbGJhY2soKTsgfQotICAg
IGJvb2wgaGFzU3VjY2Vzc0NhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZXNzQ2FsbGJh
Y2tXcmFwcGVyLmhhc0NhbGxiYWNrKCk7IH0KLSAgICBib29sIGhhc0Vycm9yQ2FsbGJhY2soKSBj
b25zdCB7IHJldHVybiBtX2Vycm9yQ2FsbGJhY2tXcmFwcGVyLmhhc0NhbGxiYWNrKCk7IH0KLQog
cHJpdmF0ZToKICAgICBTUUxUcmFuc2FjdGlvbihEYXRhYmFzZSosIFBhc3NSZWZQdHI8U1FMVHJh
bnNhY3Rpb25DYWxsYmFjaz4sCiAgICAgICAgIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiwKQEAg
LTc2LDkgKzcxLDE1IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjaGVja0FuZEhhbmRsZUNsb3NlZE9y
SW50ZXJydXB0ZWREYXRhYmFzZSgpOwogICAgIHZvaWQgY2xlYXJDYWxsYmFja1dyYXBwZXJzKCk7
CiAKKyAgICAvLyBBUElzIGNhbGxlZCBmcm9tIHRoZSBiYWNrZW5kIHB1Ymxpc2hlZCB2aWEgQWJz
dHJhY3RTUUxUcmFuc2FjdGlvbjoKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFRyYW5zaXRUb1N0
YXRlKFNRTFRyYW5zYWN0aW9uU3RhdGUpOworICAgIHZpcnR1YWwgYm9vbCBoYXNDYWxsYmFjaygp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNTdWNjZXNzQ2FsbGJhY2soKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFzRXJyb3JDYWxsYmFjaygpIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBzZXRCYWNrZW5kKEFic3RyYWN0U1FMVHJhbnNhY3Rpb25CYWNrZW5kKik7CisKICAgICAvLyBT
dGF0ZSBNYWNoaW5lIGZ1bmN0aW9uczoKICAgICB2aXJ0dWFsIFN0YXRlRnVuY3Rpb24gc3RhdGVG
dW5jdGlvbkZvcihTUUxUcmFuc2FjdGlvblN0YXRlKTsKLSAgICB2b2lkIHJlcXVlc3RUcmFuc2l0
VG9TdGF0ZShTUUxUcmFuc2FjdGlvblN0YXRlKTsKIAogICAgIC8vIFN0YXRlIGZ1bmN0aW9uczoK
ICAgICBTUUxUcmFuc2FjdGlvblN0YXRlIGRlbGl2ZXJUcmFuc2FjdGlvbkNhbGxiYWNrKCk7CkBA
IC05Myw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgU1FMVHJhbnNhY3Rpb25TdGF0ZSBuZXh0U3Rh
dGVGb3JUcmFuc2FjdGlvbkVycm9yKCk7CiAKICAgICBSZWZQdHI8RGF0YWJhc2U+IG1fZGF0YWJh
c2U7Ci0gICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uQmFja2VuZD4gbV9iYWNrZW5kOworICAgIFJl
ZlB0cjxBYnN0cmFjdFNRTFRyYW5zYWN0aW9uQmFja2VuZD4gbV9iYWNrZW5kOwogICAgIFNRTENh
bGxiYWNrV3JhcHBlcjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBtX2NhbGxiYWNrV3JhcHBlcjsK
ICAgICBTUUxDYWxsYmFja1dyYXBwZXI8Vm9pZENhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFja1dy
YXBwZXI7CiAgICAgU1FMQ2FsbGJhY2tXcmFwcGVyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFj
az4gbV9lcnJvckNhbGxiYWNrV3JhcHBlcjsKQEAgLTEwMiw4ICsxMDMsNiBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxTUUxFcnJvcj4gbV90cmFuc2FjdGlvbkVycm9yOwogCiAgICAgYm9vbCBtX3Jl
YWRPbmx5OwotCi0gICAgZnJpZW5kIGNsYXNzIFNRTFRyYW5zYWN0aW9uQmFja2VuZDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAJKHJl
dmlzaW9uIDE0MzM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
VHJhbnNhY3Rpb25CYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsOCBAQAog
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkRhdGFiYXNlLmgiCisjaW5j
bHVkZSAiQWJzdHJhY3RTUUxUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFiYXNlLmgiIC8v
IEZJWE1FOiBTaG91bGQgb25seSBiZSB1c2VkIGluIHRoZSBmcm9udGVuZC4KICNpbmNsdWRlICJE
YXRhYmFzZUF1dGhvcml6ZXIuaCIKICNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRBc3luYy5oIgog
I2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKQEAgLTQwLDcgKzQxLDYgQEAKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FMRXJyb3IuaCIKICNpbmNsdWRlICJTUUxT
dGF0ZW1lbnRCYWNrZW5kLmgiCi0jaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRl
ICJTUUxUcmFuc2FjdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uQ29vcmRp
bmF0b3IuaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgpAQCAtMzQ5LDEzICszNDksMTMgQEAgc3Rh
dGljIGNvbnN0IGludCBEZWZhdWx0UXVvdGFTaXplSW5jcmVhcwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQmFja2VuZD4gU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kOjpjcmVhdGUoRGF0YWJhc2VCYWNrZW5kQXN5bmMqIGRiLAotICAgIFBhc3NSZWZQdHI8U1FM
VHJhbnNhY3Rpb24+IGZyb250ZW5kLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4g
d3JhcHBlciwgYm9vbCByZWFkT25seSkKKyAgICBQYXNzUmVmUHRyPEFic3RyYWN0U1FMVHJhbnNh
Y3Rpb24+IGZyb250ZW5kLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4gd3JhcHBl
ciwgYm9vbCByZWFkT25seSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNRTFRyYW5zYWN0
aW9uQmFja2VuZChkYiwgZnJvbnRlbmQsIHdyYXBwZXIsIHJlYWRPbmx5KSk7CiB9CiAKIFNRTFRy
YW5zYWN0aW9uQmFja2VuZDo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kKERhdGFiYXNlQmFja2VuZEFz
eW5jKiBkYiwKLSAgICBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiBmcm9udGVuZCwgUGFzc1Jl
ZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+IHdyYXBwZXIsIGJvb2wgcmVhZE9ubHkpCisgICAg
UGFzc1JlZlB0cjxBYnN0cmFjdFNRTFRyYW5zYWN0aW9uPiBmcm9udGVuZCwgUGFzc1JlZlB0cjxT
UUxUcmFuc2FjdGlvbldyYXBwZXI+IHdyYXBwZXIsIGJvb2wgcmVhZE9ubHkpCiAgICAgOiBtX2Zy
b250ZW5kKGZyb250ZW5kKQogICAgICwgbV9kYXRhYmFzZShkYikKICAgICAsIG1fd3JhcHBlcih3
cmFwcGVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbkJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5oCShyZXZpc2lvbiAxNDMzOTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKIAogI2luY2x1ZGUgIkFic3RyYWN0U1FMU3RhdGVtZW50LmgiCisjaW5jbHVkZSAiQWJzdHJh
Y3RTUUxUcmFuc2FjdGlvbkJhY2tlbmQuaCIKICNpbmNsdWRlICJEYXRhYmFzZUJhc2ljVHlwZXMu
aCIKICNpbmNsdWRlICJTUUxUcmFuc2FjdGlvblN0YXRlTWFjaGluZS5oIgogI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgpAQCAtMzksMTEgKzQwLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgQWJzdHJhY3RTUUxUcmFuc2FjdGlvbjsKIGNsYXNzIERhdGFiYXNlQmFja2VuZEFzeW5j
OwogY2xhc3MgU1FMRXJyb3I7CiBjbGFzcyBTUUxpdGVUcmFuc2FjdGlvbjsKIGNsYXNzIFNRTFN0
YXRlbWVudEJhY2tlbmQ7Ci1jbGFzcyBTUUxUcmFuc2FjdGlvbjsKIGNsYXNzIFNRTFRyYW5zYWN0
aW9uQmFja2VuZDsKIGNsYXNzIFNRTFZhbHVlOwogCkBAIC01NiwxMCArNTcsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVDb21taXRGYWlsZWRBZnRlclBvc3RmbGlnaHQoU1FM
VHJhbnNhY3Rpb25CYWNrZW5kKikgPSAwOwogfTsKIAotY2xhc3MgU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kIDogcHVibGljIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lPFNRTFRyYW5zYWN0aW9uQmFj
a2VuZD4geworY2xhc3MgU1FMVHJhbnNhY3Rpb25CYWNrZW5kIDogcHVibGljIFNRTFRyYW5zYWN0
aW9uU3RhdGVNYWNoaW5lPFNRTFRyYW5zYWN0aW9uQmFja2VuZD4sIHB1YmxpYyBBYnN0cmFjdFNR
TFRyYW5zYWN0aW9uQmFja2VuZCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1FM
VHJhbnNhY3Rpb25CYWNrZW5kPiBjcmVhdGUoRGF0YWJhc2VCYWNrZW5kQXN5bmMqLAotICAgICAg
ICBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbldy
YXBwZXI+LCBib29sIHJlYWRPbmx5KTsKKyAgICAgICAgUGFzc1JlZlB0cjxBYnN0cmFjdFNRTFRy
YW5zYWN0aW9uPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+LCBib29sIHJlYWRP
bmx5KTsKIAogICAgIHZpcnR1YWwgflNRTFRyYW5zYWN0aW9uQmFja2VuZCgpOwogCkBAIC03MCwx
OCArNzEsMTggQEAgcHVibGljOgogICAgIGJvb2wgaXNSZWFkT25seSgpIHsgcmV0dXJuIG1fcmVh
ZE9ubHk7IH0KICAgICB2b2lkIG5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24oKTsK
IAotICAgIC8vIEFQSXMgZm9yIHRoZSBmcm9udGVuZDoKLSAgICBBYnN0cmFjdFNRTFN0YXRlbWVu
dCogY3VycmVudFN0YXRlbWVudCgpOwotICAgIFBhc3NSZWZQdHI8U1FMRXJyb3I+IHRyYW5zYWN0
aW9uRXJyb3IoKTsKLSAgICB2b2lkIHNldFNob3VsZFJldHJ5Q3VycmVudFN0YXRlbWVudChib29s
KTsKLQotICAgIHZvaWQgZXhlY3V0ZVNRTChQYXNzT3duUHRyPEFic3RyYWN0U1FMU3RhdGVtZW50
PiwgY29uc3QgU3RyaW5nJiBzdGF0ZW1lbnQsCi0gICAgICAgIGNvbnN0IFZlY3RvcjxTUUxWYWx1
ZT4mIGFyZ3VtZW50cywgaW50IHBlcm1pc3Npb25zKTsKLQogcHJpdmF0ZToKLSAgICBTUUxUcmFu
c2FjdGlvbkJhY2tlbmQoRGF0YWJhc2VCYWNrZW5kQXN5bmMqLCBQYXNzUmVmUHRyPFNRTFRyYW5z
YWN0aW9uPiwKKyAgICBTUUxUcmFuc2FjdGlvbkJhY2tlbmQoRGF0YWJhc2VCYWNrZW5kQXN5bmMq
LCBQYXNzUmVmUHRyPEFic3RyYWN0U1FMVHJhbnNhY3Rpb24+LAogICAgICAgICBQYXNzUmVmUHRy
PFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4sIGJvb2wgcmVhZE9ubHkpOwogCisgICAgLy8gQVBJcyBj
YWxsZWQgZnJvbSB0aGUgZnJvbnRlbmQgcHVibGlzaGVkIHZpYSBBYnN0cmFjdFNRTFRyYW5zYWN0
aW9uQmFja2VuZDoKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFRyYW5zaXRUb1N0YXRlKFNRTFRy
YW5zYWN0aW9uU3RhdGUpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTUUxFcnJvcj4gdHJhbnNh
Y3Rpb25FcnJvcigpOworICAgIHZpcnR1YWwgQWJzdHJhY3RTUUxTdGF0ZW1lbnQqIGN1cnJlbnRT
dGF0ZW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUmV0cnlDdXJyZW50U3RhdGVt
ZW50KGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMKFBhc3NPd25QdHI8QWJzdHJh
Y3RTUUxTdGF0ZW1lbnQ+LCBjb25zdCBTdHJpbmcmIHN0YXRlbWVudCwKKyAgICAgICAgY29uc3Qg
VmVjdG9yPFNRTFZhbHVlPiYgYXJndW1lbnRzLCBpbnQgcGVybWlzc2lvbnMpOworCiAgICAgdm9p
ZCBkb0NsZWFudXAoKTsKIAogICAgIHZvaWQgZW5xdWV1ZVN0YXRlbWVudEJhY2tlbmQoUGFzc1Jl
ZlB0cjxTUUxTdGF0ZW1lbnRCYWNrZW5kPik7CkBAIC05MCw3ICs5MSw2IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBTdGF0ZSBNYWNoaW5lIGZ1bmN0aW9uczoKICAgICB2aXJ0dWFsIFN0YXRlRnVuY3Rp
b24gc3RhdGVGdW5jdGlvbkZvcihTUUxUcmFuc2FjdGlvblN0YXRlKTsKLSAgICB2b2lkIHJlcXVl
c3RUcmFuc2l0VG9TdGF0ZShTUUxUcmFuc2FjdGlvblN0YXRlKTsKIAogICAgIC8vIFN0YXRlIGZ1
bmN0aW9uczoKICAgICBTUUxUcmFuc2FjdGlvblN0YXRlIGFjcXVpcmVMb2NrKCk7CkBAIC0xMDks
NyArMTA5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZ2V0TmV4dFN0YXRlbWVudCgpOwogCi0g
ICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiBtX2Zyb250ZW5kOyAvLyBIYXMgYSByZWZlcmVuY2Ug
Y3ljbGUsIGFuZCB3aWxsIGJyZWFrIGluIGRvQ2xlYW51cCgpLgorICAgIFJlZlB0cjxBYnN0cmFj
dFNRTFRyYW5zYWN0aW9uPiBtX2Zyb250ZW5kOyAvLyBIYXMgYSByZWZlcmVuY2UgY3ljbGUsIGFu
ZCB3aWxsIGJyZWFrIGluIGRvQ2xlYW51cCgpLgogICAgIFJlZlB0cjxTUUxTdGF0ZW1lbnRCYWNr
ZW5kPiBtX2N1cnJlbnRTdGF0ZW1lbnRCYWNrZW5kOwogCiAgICAgUmVmUHRyPERhdGFiYXNlQmFj
a2VuZEFzeW5jPiBtX2RhdGFiYXNlOwpAQCAtMTI5LDggKzEyOSw2IEBAIHByaXZhdGU6CiAgICAg
RGVxdWU8UmVmUHRyPFNRTFN0YXRlbWVudEJhY2tlbmQ+ID4gbV9zdGF0ZW1lbnRRdWV1ZTsKIAog
ICAgIE93blB0cjxTUUxpdGVUcmFuc2FjdGlvbj4gbV9zcWxpdGVUcmFuc2FjdGlvbjsKLQotICAg
IGZyaWVuZCBjbGFzcyBTUUxUcmFuc2FjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b25TdGF0ZU1hY2hpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmgJKHJldmlzaW9uIDE0MzM5OCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25TdGF0
ZU1hY2hpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgU1FMVHJhbnNhY3Rpb25TdGF0
ZU1hY2hpbmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1FMVHJhbnNhY3Rpb25TdGF0
ZU1hY2hpbmU8VD4gPiB7CitjbGFzcyBTUUxUcmFuc2FjdGlvblN0YXRlTWFjaGluZSB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+U1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUoKSB7IH0KIAo=
</data>
<flag name="review"
          id="209515"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>