<?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>57533</bug_id>
          
          <creation_ts>2011-03-31 02:58:12 -0700</creation_ts>
          <short_desc>JavaClass should be an interface and free of JNI types</short_desc>
          <delta_ts>2011-04-01 16:49:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>55383</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Steve Block">steveblock</assigned_to>
          <cc>abarth</cc>
    
    <cc>andreip</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>jorlow</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>377021</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-31 02:58:12 -0700</bug_when>
    <thetext>This will allow implementations flexibility in how the binding to a Java object is achieved. See Bug 55383.

Note that V8 and JSC use different implementations of JavaClass. This bug tracks fixing V8&apos;s implementation only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377069</commentid>
    <comment_count>1</comment_count>
      <attachid>87703</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-31 04:54:21 -0700</bug_when>
    <thetext>Created attachment 87703
Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377689</commentid>
    <comment_count>2</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2011-04-01 02:55:19 -0700</bug_when>
    <thetext>I know you didn&apos;t introduce this, but:

&gt; Source/WebCore/bridge/jni/v8/JavaClassJobjectV8.cpp:41
&gt; +        LOG_ERROR(&quot;unable to call getClass on instance %p&quot;, anInstance);

Why are we printing out the anInstance poninter? I can&apos;t see that being useful. Just return?

&gt; Source/WebCore/bridge/jni/v8/JavaClassJobjectV8.cpp:45
&gt; +    int i;

What&apos;s with this poor lonely &apos;i&apos; here? He can live inside the for statements below.

&gt; Source/WebCore/bridge/jni/v8/JavaClassJobjectV8.cpp:65
&gt; +        {

Spurious { } ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377690</commentid>
    <comment_count>3</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-04-01 03:04:23 -0700</bug_when>
    <thetext>&gt; Why are we printing out the anInstance poninter? I can&apos;t see that being useful. Just return?
I agree, but this has been touched recently - http://trac.webkit.org/changeset/82197 - so I don&apos;t want to modify it needlessly.

&gt; What&apos;s with this poor lonely &apos;i&apos; here? He can live inside the for statements below.
Done

&gt; Spurious { } ?
Fixed, same problem with copy-paste from JSC which uses a scoped lock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377691</commentid>
    <comment_count>4</comment_count>
      <attachid>87835</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-04-01 03:06:32 -0700</bug_when>
    <thetext>Created attachment 87835
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377692</commentid>
    <comment_count>5</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2011-04-01 03:08:29 -0700</bug_when>
    <thetext>LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377898</commentid>
    <comment_count>6</comment_count>
      <attachid>87835</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-04-01 10:27:47 -0700</bug_when>
    <thetext>Comment on attachment 87835
Patch 2

rubber stamp = me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377959</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-01 12:00:00 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 87835:

fast/loader/recursive-before-unload-crash.html bug 50880 (authors: beidson@apple.com and eric@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377965</commentid>
    <comment_count>8</comment_count>
      <attachid>87835</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-01 12:05:15 -0700</bug_when>
    <thetext>Comment on attachment 87835
Patch 2

Clearing flags on attachment: 87835

Committed r82702: &lt;http://trac.webkit.org/changeset/82702&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377966</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-01 12:05:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378212</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-01 16:49:31 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/82702 might have broken WinCE Release (Build)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87703</attachid>
            <date>2011-03-31 04:54:21 -0700</date>
            <delta_ts>2011-04-01 03:06:32 -0700</delta_ts>
            <desc>Patch 1</desc>
            <filename>javaClassInterface.txt</filename>
            <type>text/plain</type>
            <size>15279</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQudjhiaW5kaW5ncy5tayBiL1NvdXJj
ZS9XZWJDb3JlL0FuZHJvaWQudjhiaW5kaW5ncy5tawppbmRleCAzODZkMjkyLi5mZGJmYzhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9BbmRyb2lkLnY4YmluZGluZ3MubWsKKysrIGIvU291
cmNlL1dlYkNvcmUvQW5kcm9pZC52OGJpbmRpbmdzLm1rCkBAIC0xNzgsNyArMTc4LDcgQEAgTE9D
QUxfU1JDX0ZJTEVTICs9IFwKIAlicmlkZ2Uvam5pL0phdmFNZXRob2RKb2JqZWN0LmNwcCBcCiAJ
YnJpZGdlL2puaS9Kb2JqZWN0V3JhcHBlci5jcHAgXAogCWJyaWRnZS9qbmkvdjgvSk5JVXRpbGl0
eVByaXZhdGUuY3BwIFwKLQlicmlkZ2Uvam5pL3Y4L0phdmFDbGFzc1Y4LmNwcCBcCisJYnJpZGdl
L2puaS92OC9KYXZhQ2xhc3NKb2JqZWN0VjguY3BwIFwKIAlicmlkZ2Uvam5pL3Y4L0phdmFGaWVs
ZEpvYmplY3RWOC5jcHAgXAogCWJyaWRnZS9qbmkvdjgvSmF2YUluc3RhbmNlVjguY3BwIFwKIAli
cmlkZ2Uvam5pL3Y4L0phdmFOUE9iamVjdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE2N2QxNDMuLmY3
Nzk3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMS0wMy0zMSAgU3RldmUgQmxv
Y2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSmF2YUNsYXNzIHNob3VsZCBiZSBhbiBpbnRlcmZhY2UgYW5k
IGZyZWUgb2YgSk5JIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NzUzMworCisgICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgSmF2YUNsYXNzIGZv
ciBWOCBvbmx5LgorCisgICAgICAgIEl0IGZhY3RvcnMgb3V0IGEgSmF2YUNsYXNzIGludGVyZmFj
ZSB3aGljaCBkb2VzIG5vdCB1c2UgSk5JIHR5cGVzLgorICAgICAgICBUaGlzIHdpbGwgYWxsb3cg
dGhlIEphdmEgYnJpZGdlIHRvIGJlIHVzZWQgd2l0aCBvYmplY3RzIHRoYXQKKyAgICAgICAgZG9u
J3QgdXNlIEpOSSBkaXJlY3RseS4gVGhlIGV4aXN0aW5nIGpvYmplY3QtYmFja2VkCisgICAgICAg
IGltcGxlbWVudGF0aW9uIGlzIG1vdmVkIHRvIGEgbmV3IEphdmFDbGFzc0pvYmplY3QgY2xhc3Mg
d2hpY2gKKyAgICAgICAgaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNlLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgcmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIEFuZHJvaWQudjhiaW5kaW5n
cy5tazoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYnJpZGdlL2puaS92OC9K
YXZhQ2xhc3NKb2JqZWN0VjguY3BwOgorICAgICAgICAoSmF2YUNsYXNzSm9iamVjdDo6SmF2YUNs
YXNzSm9iamVjdCk6CisgICAgICAgIChKYXZhQ2xhc3NKb2JqZWN0Ojp+SmF2YUNsYXNzSm9iamVj
dCk6CisgICAgICAgIChKYXZhQ2xhc3NKb2JqZWN0OjptZXRob2RzTmFtZWQpOgorICAgICAgICAo
SmF2YUNsYXNzSm9iamVjdDo6ZmllbGROYW1lZCk6CisgICAgICAgICogYnJpZGdlL2puaS92OC9K
YXZhQ2xhc3NKb2JqZWN0VjguaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYnJpZGdlL2pu
aS92OC9KYXZhQ2xhc3NWOC5oLgorICAgICAgICAqIGJyaWRnZS9qbmkvdjgvSmF2YUNsYXNzVjgu
aDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkphdmFDbGFzczo6fkphdmFDbGFzcyk6CisgICAg
ICAgICogYnJpZGdlL2puaS92OC9KYXZhSW5zdGFuY2VWOC5jcHA6CisgICAgICAgIChKYXZhSW5z
dGFuY2U6OmdldENsYXNzKToKKwogMjAxMS0wMy0zMSAgQW5kcmV5IEFkYWlraW4gIDxhYW5kcmV5
QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCA1NTc2Yjk4Li5lMWEyOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMTky
LDcgKzIxOTIsOCBAQAogICAgICAgICAgICAgJ2JyaWRnZS9qbmkvanNjL0phdmFTdHJpbmdKU0Mu
aCcsCiAgICAgICAgICAgICAnYnJpZGdlL2puaS92OC9KTklVdGlsaXR5UHJpdmF0ZS5jcHAnLAog
ICAgICAgICAgICAgJ2JyaWRnZS9qbmkvdjgvSk5JVXRpbGl0eVByaXZhdGUuaCcsCi0gICAgICAg
ICAgICAnYnJpZGdlL2puaS92OC9KYXZhQ2xhc3NWOC5jcHAnLAorICAgICAgICAgICAgJ2JyaWRn
ZS9qbmkvdjgvSmF2YUNsYXNzSm9iamVjdFY4LmNwcCcsCisgICAgICAgICAgICAnYnJpZGdlL2pu
aS92OC9KYXZhQ2xhc3NKb2JqZWN0VjguaCcsCiAgICAgICAgICAgICAnYnJpZGdlL2puaS92OC9K
YXZhQ2xhc3NWOC5oJywKICAgICAgICAgICAgICdicmlkZ2Uvam5pL3Y4L0phdmFGaWVsZEpvYmpl
Y3RWOC5jcHAnLAogICAgICAgICAgICAgJ2JyaWRnZS9qbmkvdjgvSmF2YUZpZWxkSm9iamVjdFY4
LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KYXZhQ2xhc3NK
b2JqZWN0VjguY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KYXZhQ2xhc3NKb2Jq
ZWN0VjguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMzhkOTUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0phdmFDbGFzc0pv
YmplY3RWOC5jcHAKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMCwgVGhl
IEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJKYXZhQ2xhc3NKb2JqZWN0VjguaCIKKworI2lmIEVOQUJMRShKQVZBX0JSSURH
RSkKKworI2luY2x1ZGUgIkphdmFGaWVsZEpvYmplY3RWOC5oIgorI2luY2x1ZGUgIkphdmFNZXRo
b2RKb2JqZWN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M6OkJpbmRpbmdzOworCitKYXZhQ2xh
c3NKb2JqZWN0OjpKYXZhQ2xhc3NKb2JqZWN0KGpvYmplY3QgYW5JbnN0YW5jZSkKK3sKKyAgICBq
b2JqZWN0IGFDbGFzcyA9IGNhbGxKTklNZXRob2Q8am9iamVjdD4oYW5JbnN0YW5jZSwgImdldENs
YXNzIiwgIigpTGphdmEvbGFuZy9DbGFzczsiKTsKKworICAgIGlmICghYUNsYXNzKSB7CisgICAg
ICAgIExPR19FUlJPUigidW5hYmxlIHRvIGNhbGwgZ2V0Q2xhc3Mgb24gaW5zdGFuY2UgJXAiLCBh
bkluc3RhbmNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCBpOworICAgIEpO
SUVudiogZW52ID0gZ2V0Sk5JRW52KCk7CisKKyAgICAvLyBHZXQgdGhlIGZpZWxkcworICAgIGph
cnJheSBmaWVsZHMgPSBzdGF0aWNfY2FzdDxqYXJyYXk+KGNhbGxKTklNZXRob2Q8am9iamVjdD4o
YUNsYXNzLCAiZ2V0RmllbGRzIiwgIigpW0xqYXZhL2xhbmcvcmVmbGVjdC9GaWVsZDsiKSk7Cisg
ICAgaW50IG51bUZpZWxkcyA9IGVudi0+R2V0QXJyYXlMZW5ndGgoZmllbGRzKTsKKyAgICBmb3Ig
KGkgPSAwOyBpIDwgbnVtRmllbGRzOyBpKyspIHsKKyAgICAgICAgam9iamVjdCBhSkZpZWxkID0g
ZW52LT5HZXRPYmplY3RBcnJheUVsZW1lbnQoc3RhdGljX2Nhc3Q8am9iamVjdEFycmF5PihmaWVs
ZHMpLCBpKTsKKyAgICAgICAgSmF2YUZpZWxkKiBhRmllbGQgPSBuZXcgSmF2YUZpZWxkSm9iamVj
dChlbnYsIGFKRmllbGQpOyAvLyBkZWxldGVkIGluIHRoZSBKYXZhQ2xhc3MgZGVzdHJ1Y3Rvcgor
ICAgICAgICBtX2ZpZWxkcy5zZXQoYUZpZWxkLT5uYW1lKCksIGFGaWVsZCk7CisgICAgICAgIGVu
di0+RGVsZXRlTG9jYWxSZWYoYUpGaWVsZCk7CisgICAgfQorCisgICAgLy8gR2V0IHRoZSBtZXRo
b2RzCisgICAgamFycmF5IG1ldGhvZHMgPSBzdGF0aWNfY2FzdDxqYXJyYXk+KGNhbGxKTklNZXRo
b2Q8am9iamVjdD4oYUNsYXNzLCAiZ2V0TWV0aG9kcyIsICIoKVtMamF2YS9sYW5nL3JlZmxlY3Qv
TWV0aG9kOyIpKTsKKyAgICBpbnQgbnVtTWV0aG9kcyA9IGVudi0+R2V0QXJyYXlMZW5ndGgobWV0
aG9kcyk7CisgICAgZm9yIChpID0gMDsgaSA8IG51bU1ldGhvZHM7IGkrKykgeworICAgICAgICBq
b2JqZWN0IGFKTWV0aG9kID0gZW52LT5HZXRPYmplY3RBcnJheUVsZW1lbnQoc3RhdGljX2Nhc3Q8
am9iamVjdEFycmF5PihtZXRob2RzKSwgaSk7CisgICAgICAgIEphdmFNZXRob2QqIGFNZXRob2Qg
PSBuZXcgSmF2YU1ldGhvZEpvYmplY3QoZW52LCBhSk1ldGhvZCk7IC8vIGRlbGV0ZWQgaW4gdGhl
IEphdmFDbGFzcyBkZXN0cnVjdG9yCisgICAgICAgIE1ldGhvZExpc3QqIG1ldGhvZExpc3Q7Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1ldGhvZExpc3QgPSBtX21ldGhvZHMuZ2V0KGFNZXRob2Qt
Pm5hbWUoKSk7CisgICAgICAgICAgICBpZiAoIW1ldGhvZExpc3QpIHsKKyAgICAgICAgICAgICAg
ICBtZXRob2RMaXN0ID0gbmV3IE1ldGhvZExpc3QoKTsKKyAgICAgICAgICAgICAgICBtX21ldGhv
ZHMuc2V0KGFNZXRob2QtPm5hbWUoKSwgbWV0aG9kTGlzdCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgbWV0aG9kTGlzdC0+YXBwZW5kKGFNZXRob2QpOworICAgICAgICBlbnYt
PkRlbGV0ZUxvY2FsUmVmKGFKTWV0aG9kKTsKKyAgICB9CisgICAgZW52LT5EZWxldGVMb2NhbFJl
ZihmaWVsZHMpOworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYobWV0aG9kcyk7CisgICAgZW52LT5E
ZWxldGVMb2NhbFJlZihhQ2xhc3MpOworfQorCitKYXZhQ2xhc3NKb2JqZWN0Ojp+SmF2YUNsYXNz
Sm9iamVjdCgpCit7CisgICAgZGVsZXRlQWxsVmFsdWVzKG1fZmllbGRzKTsKKyAgICBtX2ZpZWxk
cy5jbGVhcigpOworCisgICAgTWV0aG9kTGlzdE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9t
ZXRob2RzLmVuZCgpOworICAgIGZvciAoTWV0aG9kTGlzdE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX21ldGhvZHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGNvbnN0IE1l
dGhvZExpc3QqIG1ldGhvZExpc3QgPSBpdC0+c2Vjb25kOworICAgICAgICBkZWxldGVBbGxWYWx1
ZXMoKm1ldGhvZExpc3QpOworICAgICAgICBkZWxldGUgbWV0aG9kTGlzdDsKKyAgICB9CisgICAg
bV9tZXRob2RzLmNsZWFyKCk7Cit9CisKK01ldGhvZExpc3QgSmF2YUNsYXNzSm9iamVjdDo6bWV0
aG9kc05hbWVkKGNvbnN0IGNoYXIqIG5hbWUpIGNvbnN0Cit7CisgICAgTWV0aG9kTGlzdCogbWV0
aG9kTGlzdCA9IG1fbWV0aG9kcy5nZXQobmFtZSk7CisKKyAgICBpZiAobWV0aG9kTGlzdCkKKyAg
ICAgICAgcmV0dXJuICptZXRob2RMaXN0OworICAgIHJldHVybiBNZXRob2RMaXN0KCk7Cit9CisK
K0phdmFGaWVsZCogSmF2YUNsYXNzSm9iamVjdDo6ZmllbGROYW1lZChjb25zdCBjaGFyKiBuYW1l
KSBjb25zdAoreworICAgIHJldHVybiBtX2ZpZWxkcy5nZXQobmFtZSk7Cit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoSkFWQV9CUklER0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
am5pL3Y4L0phdmFDbGFzc0pvYmplY3RWOC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92
OC9KYXZhQ2xhc3NKb2JqZWN0VjguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5kMjdjYTk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92
OC9KYXZhQ2xhc3NKb2JqZWN0VjguaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0
IDIwMTAsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEph
dmFDbGFzc0pvYmplY3RWOF9oCisjZGVmaW5lIEphdmFDbGFzc0pvYmplY3RWOF9oCisKKyNpZiBF
TkFCTEUoSkFWQV9CUklER0UpCisKKyNpbmNsdWRlICJKTklVdGlsaXR5LmgiCisjaW5jbHVkZSAi
SmF2YUNsYXNzVjguaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK25hbWVzcGFjZSBCaW5kaW5ncyB7
CisKK2NsYXNzIEphdmFDbGFzc0pvYmplY3QgOiBwdWJsaWMgSmF2YUNsYXNzIHsKK3B1YmxpYzoK
KyAgICBKYXZhQ2xhc3NKb2JqZWN0KGpvYmplY3QpOworICAgIHZpcnR1YWwgfkphdmFDbGFzc0pv
YmplY3QoKTsKKworICAgIC8vIEphdmFDbGFzcyBpbXBsZW1lbnRhdGlvbgorICAgIHZpcnR1YWwg
TWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3QgY2hhciogbmFtZSkgY29uc3Q7CisgICAgdmly
dHVhbCBKYXZhRmllbGQqIGZpZWxkTmFtZWQoY29uc3QgY2hhciogbmFtZSkgY29uc3Q7CisKK3By
aXZhdGU6CisgICAgdHlwZWRlZiBIYXNoTWFwPFdURjo6U3RyaW5nLCBNZXRob2RMaXN0Kj4gTWV0
aG9kTGlzdE1hcDsKKyAgICBNZXRob2RMaXN0TWFwIG1fbWV0aG9kczsKKyAgICBGaWVsZE1hcCBt
X2ZpZWxkczsKK307CisKK30gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFfQlJJREdFKQorCisjZW5kaWYgLy8gSmF2YUNs
YXNzSm9iamVjdFY4X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgv
SmF2YUNsYXNzVjguY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KYXZhQ2xhc3NW
OC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwZDQxM2UuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KYXZhQ2xhc3NWOC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAyMDEwLCBUaGUgQW5kcm9p
ZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkphdmFDbGFzc1Y4LmgiCi0KLSNpZiBFTkFCTEUoSkFWQV9CUklER0UpCi0KLSNpbmNsdWRl
ICJKYXZhRmllbGRKb2JqZWN0VjguaCIKLSNpbmNsdWRlICJKYXZhTWV0aG9kSm9iamVjdC5oIgot
Ci11c2luZyBuYW1lc3BhY2UgSlNDOjpCaW5kaW5nczsKLQotSmF2YUNsYXNzOjpKYXZhQ2xhc3Mo
am9iamVjdCBhbkluc3RhbmNlKQotewotICAgIGpvYmplY3QgYUNsYXNzID0gY2FsbEpOSU1ldGhv
ZDxqb2JqZWN0Pihhbkluc3RhbmNlLCAiZ2V0Q2xhc3MiLCAiKClMamF2YS9sYW5nL0NsYXNzOyIp
OwotCi0gICAgaWYgKCFhQ2xhc3MpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJ1bmFibGUgdG8gY2Fs
bCBnZXRDbGFzcyBvbiBpbnN0YW5jZSAlcCIsIGFuSW5zdGFuY2UpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaW50IGk7Ci0gICAgSk5JRW52KiBlbnYgPSBnZXRKTklFbnYoKTsKLQot
ICAgIC8vIEdldCB0aGUgZmllbGRzCi0gICAgamFycmF5IGZpZWxkcyA9IHN0YXRpY19jYXN0PGph
cnJheT4oY2FsbEpOSU1ldGhvZDxqb2JqZWN0PihhQ2xhc3MsICJnZXRGaWVsZHMiLCAiKClbTGph
dmEvbGFuZy9yZWZsZWN0L0ZpZWxkOyIpKTsKLSAgICBpbnQgbnVtRmllbGRzID0gZW52LT5HZXRB
cnJheUxlbmd0aChmaWVsZHMpOwotICAgIGZvciAoaSA9IDA7IGkgPCBudW1GaWVsZHM7IGkrKykg
ewotICAgICAgICBqb2JqZWN0IGFKRmllbGQgPSBlbnYtPkdldE9iamVjdEFycmF5RWxlbWVudChz
dGF0aWNfY2FzdDxqb2JqZWN0QXJyYXk+KGZpZWxkcyksIGkpOwotICAgICAgICBKYXZhRmllbGQq
IGFGaWVsZCA9IG5ldyBKYXZhRmllbGRKb2JqZWN0KGVudiwgYUpGaWVsZCk7IC8vIGRlbGV0ZWQg
aW4gdGhlIEphdmFDbGFzcyBkZXN0cnVjdG9yCi0gICAgICAgIG1fZmllbGRzLnNldChhRmllbGQt
Pm5hbWUoKSwgYUZpZWxkKTsKLSAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihhSkZpZWxkKTsK
LSAgICB9Ci0KLSAgICAvLyBHZXQgdGhlIG1ldGhvZHMKLSAgICBqYXJyYXkgbWV0aG9kcyA9IHN0
YXRpY19jYXN0PGphcnJheT4oY2FsbEpOSU1ldGhvZDxqb2JqZWN0PihhQ2xhc3MsICJnZXRNZXRo
b2RzIiwgIigpW0xqYXZhL2xhbmcvcmVmbGVjdC9NZXRob2Q7IikpOwotICAgIGludCBudW1NZXRo
b2RzID0gZW52LT5HZXRBcnJheUxlbmd0aChtZXRob2RzKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwg
bnVtTWV0aG9kczsgaSsrKSB7Ci0gICAgICAgIGpvYmplY3QgYUpNZXRob2QgPSBlbnYtPkdldE9i
amVjdEFycmF5RWxlbWVudChzdGF0aWNfY2FzdDxqb2JqZWN0QXJyYXk+KG1ldGhvZHMpLCBpKTsK
LSAgICAgICAgSmF2YU1ldGhvZCogYU1ldGhvZCA9IG5ldyBKYXZhTWV0aG9kSm9iamVjdChlbnYs
IGFKTWV0aG9kKTsgLy8gZGVsZXRlZCBpbiB0aGUgSmF2YUNsYXNzIGRlc3RydWN0b3IKLSAgICAg
ICAgTWV0aG9kTGlzdCogbWV0aG9kTGlzdDsKLSAgICAgICAgewotICAgICAgICAgICAgbWV0aG9k
TGlzdCA9IG1fbWV0aG9kcy5nZXQoYU1ldGhvZC0+bmFtZSgpKTsKLSAgICAgICAgICAgIGlmICgh
bWV0aG9kTGlzdCkgewotICAgICAgICAgICAgICAgIG1ldGhvZExpc3QgPSBuZXcgTWV0aG9kTGlz
dCgpOwotICAgICAgICAgICAgICAgIG1fbWV0aG9kcy5zZXQoYU1ldGhvZC0+bmFtZSgpLCBtZXRo
b2RMaXN0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtZXRob2RMaXN0LT5h
cHBlbmQoYU1ldGhvZCk7Ci0gICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoYUpNZXRob2QpOwot
ICAgIH0KLSAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGZpZWxkcyk7Ci0gICAgZW52LT5EZWxldGVM
b2NhbFJlZihtZXRob2RzKTsKLSAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGFDbGFzcyk7Ci19Ci0K
LUphdmFDbGFzczo6fkphdmFDbGFzcygpCi17Ci0gICAgZGVsZXRlQWxsVmFsdWVzKG1fZmllbGRz
KTsKLSAgICBtX2ZpZWxkcy5jbGVhcigpOwotCi0gICAgTWV0aG9kTGlzdE1hcDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gbV9tZXRob2RzLmVuZCgpOwotICAgIGZvciAoTWV0aG9kTGlzdE1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX21ldGhvZHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgIGNvbnN0IE1ldGhvZExpc3QqIG1ldGhvZExpc3QgPSBpdC0+c2Vjb25kOwotICAgICAg
ICBkZWxldGVBbGxWYWx1ZXMoKm1ldGhvZExpc3QpOwotICAgICAgICBkZWxldGUgbWV0aG9kTGlz
dDsKLSAgICB9Ci0gICAgbV9tZXRob2RzLmNsZWFyKCk7Ci19Ci0KLU1ldGhvZExpc3QgSmF2YUNs
YXNzOjptZXRob2RzTmFtZWQoY29uc3QgY2hhciogbmFtZSkgY29uc3QKLXsKLSAgICBNZXRob2RM
aXN0KiBtZXRob2RMaXN0ID0gbV9tZXRob2RzLmdldChuYW1lKTsKLQotICAgIGlmIChtZXRob2RM
aXN0KQotICAgICAgICByZXR1cm4gKm1ldGhvZExpc3Q7Ci0gICAgcmV0dXJuIE1ldGhvZExpc3Qo
KTsKLX0KLQotSmF2YUZpZWxkKiBKYXZhQ2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgY2hhciogbmFt
ZSkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9maWVsZHMuZ2V0KG5hbWUpOwotfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKEpBVkFfQlJJREdFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2puaS92OC9KYXZhQ2xhc3NWOC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KYXZh
Q2xhc3NWOC5oCmluZGV4IDZiMDNiMmQuLmU2MGNhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9qbmkvdjgvSmF2YUNsYXNzVjguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvam5pL3Y4L0phdmFDbGFzc1Y4LmgKQEAgLTI4LDExICsyOCwxMCBAQAogCiAjaWYgRU5BQkxF
KEpBVkFfQlJJREdFKQogCi0jaW5jbHVkZSAiSk5JVXRpbGl0eS5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDIsMjAgKzQxLDE0IEBA
IGNsYXNzIEphdmFGaWVsZDsKIGNsYXNzIEphdmFNZXRob2Q7CiAKIHR5cGVkZWYgVmVjdG9yPEph
dmFNZXRob2QqPiBNZXRob2RMaXN0OwotdHlwZWRlZiBIYXNoTWFwPFdURjo6U3RyaW5nLCBNZXRo
b2RMaXN0Kj4gTWV0aG9kTGlzdE1hcDsKIHR5cGVkZWYgSGFzaE1hcDxXVEY6OlN0cmluZywgSmF2
YUZpZWxkKj4gRmllbGRNYXA7CiAKIGNsYXNzIEphdmFDbGFzcyB7CiBwdWJsaWM6Ci0gICAgSmF2
YUNsYXNzKGpvYmplY3QpOwotICAgIH5KYXZhQ2xhc3MoKTsKKyAgICB2aXJ0dWFsIH5KYXZhQ2xh
c3MoKSB7fQogCi0gICAgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3QgY2hhciogbmFtZSkg
Y29uc3Q7Ci0gICAgSmF2YUZpZWxkKiBmaWVsZE5hbWVkKGNvbnN0IGNoYXIqIG5hbWUpIGNvbnN0
OwotCi1wcml2YXRlOgotICAgIE1ldGhvZExpc3RNYXAgbV9tZXRob2RzOwotICAgIEZpZWxkTWFw
IG1fZmllbGRzOworICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3QgY2hh
ciogbmFtZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSmF2YUZpZWxkKiBmaWVsZE5hbWVkKGNv
bnN0IGNoYXIqIG5hbWUpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0phdmFJbnN0YW5jZVY4
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSmF2YUluc3RhbmNlVjguY3BwCmlu
ZGV4IGJhMmJiMzIuLmJkZjJiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9q
bmkvdjgvSmF2YUluc3RhbmNlVjguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkv
djgvSmF2YUluc3RhbmNlVjguY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaWYgRU5BQkxFKEpBVkFf
QlJJREdFKQogCiAjaW5jbHVkZSAiSk5JVXRpbGl0eVByaXZhdGUuaCIKLSNpbmNsdWRlICJKYXZh
Q2xhc3NWOC5oIgorI2luY2x1ZGUgIkphdmFDbGFzc0pvYmplY3RWOC5oIgogI2luY2x1ZGUgIkph
dmFGaWVsZFY4LmgiCiAjaW5jbHVkZSAiSmF2YU1ldGhvZC5oIgogCkBAIC02Niw3ICs2Niw3IEBA
IHZvaWQgSmF2YUluc3RhbmNlOjp2aXJ0dWFsRW5kKCkKIEphdmFDbGFzcyogSmF2YUluc3RhbmNl
OjpnZXRDbGFzcygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NsYXNzKQotICAgICAgICBtX2NsYXNz
ID0gbmV3IEphdmFDbGFzcyhqYXZhSW5zdGFuY2UoKSk7CisgICAgICAgIG1fY2xhc3MgPSBuZXcg
SmF2YUNsYXNzSm9iamVjdChqYXZhSW5zdGFuY2UoKSk7CiAgICAgcmV0dXJuIG1fY2xhc3M7CiB9
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87835</attachid>
            <date>2011-04-01 03:06:32 -0700</date>
            <delta_ts>2011-04-01 12:05:15 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>javaClassInterface.txt</filename>
            <type>text/plain</type>
            <size>15217</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQudjhiaW5kaW5ncy5tayBiL1NvdXJj
ZS9XZWJDb3JlL0FuZHJvaWQudjhiaW5kaW5ncy5tawppbmRleCAzODZkMjkyLi5mZGJmYzhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9BbmRyb2lkLnY4YmluZGluZ3MubWsKKysrIGIvU291
cmNlL1dlYkNvcmUvQW5kcm9pZC52OGJpbmRpbmdzLm1rCkBAIC0xNzgsNyArMTc4LDcgQEAgTE9D
QUxfU1JDX0ZJTEVTICs9IFwKIAlicmlkZ2Uvam5pL0phdmFNZXRob2RKb2JqZWN0LmNwcCBcCiAJ
YnJpZGdlL2puaS9Kb2JqZWN0V3JhcHBlci5jcHAgXAogCWJyaWRnZS9qbmkvdjgvSk5JVXRpbGl0
eVByaXZhdGUuY3BwIFwKLQlicmlkZ2Uvam5pL3Y4L0phdmFDbGFzc1Y4LmNwcCBcCisJYnJpZGdl
L2puaS92OC9KYXZhQ2xhc3NKb2JqZWN0VjguY3BwIFwKIAlicmlkZ2Uvam5pL3Y4L0phdmFGaWVs
ZEpvYmplY3RWOC5jcHAgXAogCWJyaWRnZS9qbmkvdjgvSmF2YUluc3RhbmNlVjguY3BwIFwKIAli
cmlkZ2Uvam5pL3Y4L0phdmFOUE9iamVjdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDAzNzg5NTguLmJi
YjA4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMS0wMy0zMSAgU3RldmUgQmxv
Y2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSmF2YUNsYXNzIHNob3VsZCBiZSBhbiBpbnRlcmZhY2UgYW5k
IGZyZWUgb2YgSk5JIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NzUzMworCisgICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgSmF2YUNsYXNzIGZv
ciBWOCBvbmx5LgorCisgICAgICAgIEl0IGZhY3RvcnMgb3V0IGEgSmF2YUNsYXNzIGludGVyZmFj
ZSB3aGljaCBkb2VzIG5vdCB1c2UgSk5JIHR5cGVzLgorICAgICAgICBUaGlzIHdpbGwgYWxsb3cg
dGhlIEphdmEgYnJpZGdlIHRvIGJlIHVzZWQgd2l0aCBvYmplY3RzIHRoYXQKKyAgICAgICAgZG9u
J3QgdXNlIEpOSSBkaXJlY3RseS4gVGhlIGV4aXN0aW5nIGpvYmplY3QtYmFja2VkCisgICAgICAg
IGltcGxlbWVudGF0aW9uIGlzIG1vdmVkIHRvIGEgbmV3IEphdmFDbGFzc0pvYmplY3QgY2xhc3Mg
d2hpY2gKKyAgICAgICAgaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNlLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgcmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIEFuZHJvaWQudjhiaW5kaW5n
cy5tazoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYnJpZGdlL2puaS92OC9K
YXZhQ2xhc3NKb2JqZWN0VjguY3BwOgorICAgICAgICAoSmF2YUNsYXNzSm9iamVjdDo6SmF2YUNs
YXNzSm9iamVjdCk6CisgICAgICAgIChKYXZhQ2xhc3NKb2JqZWN0Ojp+SmF2YUNsYXNzSm9iamVj
dCk6CisgICAgICAgIChKYXZhQ2xhc3NKb2JqZWN0OjptZXRob2RzTmFtZWQpOgorICAgICAgICAo
SmF2YUNsYXNzSm9iamVjdDo6ZmllbGROYW1lZCk6CisgICAgICAgICogYnJpZGdlL2puaS92OC9K
YXZhQ2xhc3NKb2JqZWN0VjguaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYnJpZGdlL2pu
aS92OC9KYXZhQ2xhc3NWOC5oLgorICAgICAgICAqIGJyaWRnZS9qbmkvdjgvSmF2YUNsYXNzVjgu
aDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkphdmFDbGFzczo6fkphdmFDbGFzcyk6CisgICAg
ICAgICogYnJpZGdlL2puaS92OC9KYXZhSW5zdGFuY2VWOC5jcHA6CisgICAgICAgIChKYXZhSW5z
dGFuY2U6OmdldENsYXNzKToKKwogMjAxMS0wNC0wMSAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZp
bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IGVmMDcxZGMuLmQ0ZTJiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTIxOTIsNyArMjE5Miw4IEBACiAgICAgICAgICAgICAnYnJpZGdlL2puaS9qc2MvSmF2YVN0cmlu
Z0pTQy5oJywKICAgICAgICAgICAgICdicmlkZ2Uvam5pL3Y4L0pOSVV0aWxpdHlQcml2YXRlLmNw
cCcsCiAgICAgICAgICAgICAnYnJpZGdlL2puaS92OC9KTklVdGlsaXR5UHJpdmF0ZS5oJywKLSAg
ICAgICAgICAgICdicmlkZ2Uvam5pL3Y4L0phdmFDbGFzc1Y4LmNwcCcsCisgICAgICAgICAgICAn
YnJpZGdlL2puaS92OC9KYXZhQ2xhc3NKb2JqZWN0VjguY3BwJywKKyAgICAgICAgICAgICdicmlk
Z2Uvam5pL3Y4L0phdmFDbGFzc0pvYmplY3RWOC5oJywKICAgICAgICAgICAgICdicmlkZ2Uvam5p
L3Y4L0phdmFDbGFzc1Y4LmgnLAogICAgICAgICAgICAgJ2JyaWRnZS9qbmkvdjgvSmF2YUZpZWxk
Sm9iamVjdFY4LmNwcCcsCiAgICAgICAgICAgICAnYnJpZGdlL2puaS92OC9KYXZhRmllbGRKb2Jq
ZWN0VjguaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0phdmFD
bGFzc0pvYmplY3RWOC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0phdmFDbGFz
c0pvYmplY3RWOC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBiZmQ2
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSmF2YUNs
YXNzSm9iamVjdFY4LmNwcApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDEw
LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkphdmFDbGFzc0pvYmplY3RWOC5oIgorCisjaWYgRU5BQkxFKEpBVkFf
QlJJREdFKQorCisjaW5jbHVkZSAiSmF2YUZpZWxkSm9iamVjdFY4LmgiCisjaW5jbHVkZSAiSmF2
YU1ldGhvZEpvYmplY3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzo6QmluZGluZ3M7CisKK0ph
dmFDbGFzc0pvYmplY3Q6OkphdmFDbGFzc0pvYmplY3Qoam9iamVjdCBhbkluc3RhbmNlKQorewor
ICAgIGpvYmplY3QgYUNsYXNzID0gY2FsbEpOSU1ldGhvZDxqb2JqZWN0Pihhbkluc3RhbmNlLCAi
Z2V0Q2xhc3MiLCAiKClMamF2YS9sYW5nL0NsYXNzOyIpOworCisgICAgaWYgKCFhQ2xhc3MpIHsK
KyAgICAgICAgTE9HX0VSUk9SKCJ1bmFibGUgdG8gY2FsbCBnZXRDbGFzcyBvbiBpbnN0YW5jZSAl
cCIsIGFuSW5zdGFuY2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSk5JRW52KiBl
bnYgPSBnZXRKTklFbnYoKTsKKworICAgIC8vIEdldCB0aGUgZmllbGRzCisgICAgamFycmF5IGZp
ZWxkcyA9IHN0YXRpY19jYXN0PGphcnJheT4oY2FsbEpOSU1ldGhvZDxqb2JqZWN0PihhQ2xhc3Ms
ICJnZXRGaWVsZHMiLCAiKClbTGphdmEvbGFuZy9yZWZsZWN0L0ZpZWxkOyIpKTsKKyAgICBpbnQg
bnVtRmllbGRzID0gZW52LT5HZXRBcnJheUxlbmd0aChmaWVsZHMpOworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtRmllbGRzOyBpKyspIHsKKyAgICAgICAgam9iamVjdCBhSkZpZWxkID0gZW52
LT5HZXRPYmplY3RBcnJheUVsZW1lbnQoc3RhdGljX2Nhc3Q8am9iamVjdEFycmF5PihmaWVsZHMp
LCBpKTsKKyAgICAgICAgSmF2YUZpZWxkKiBhRmllbGQgPSBuZXcgSmF2YUZpZWxkSm9iamVjdChl
bnYsIGFKRmllbGQpOyAvLyBkZWxldGVkIGluIHRoZSBKYXZhQ2xhc3MgZGVzdHJ1Y3RvcgorICAg
ICAgICBtX2ZpZWxkcy5zZXQoYUZpZWxkLT5uYW1lKCksIGFGaWVsZCk7CisgICAgICAgIGVudi0+
RGVsZXRlTG9jYWxSZWYoYUpGaWVsZCk7CisgICAgfQorCisgICAgLy8gR2V0IHRoZSBtZXRob2Rz
CisgICAgamFycmF5IG1ldGhvZHMgPSBzdGF0aWNfY2FzdDxqYXJyYXk+KGNhbGxKTklNZXRob2Q8
am9iamVjdD4oYUNsYXNzLCAiZ2V0TWV0aG9kcyIsICIoKVtMamF2YS9sYW5nL3JlZmxlY3QvTWV0
aG9kOyIpKTsKKyAgICBpbnQgbnVtTWV0aG9kcyA9IGVudi0+R2V0QXJyYXlMZW5ndGgobWV0aG9k
cyk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1NZXRob2RzOyBpKyspIHsKKyAgICAgICAg
am9iamVjdCBhSk1ldGhvZCA9IGVudi0+R2V0T2JqZWN0QXJyYXlFbGVtZW50KHN0YXRpY19jYXN0
PGpvYmplY3RBcnJheT4obWV0aG9kcyksIGkpOworICAgICAgICBKYXZhTWV0aG9kKiBhTWV0aG9k
ID0gbmV3IEphdmFNZXRob2RKb2JqZWN0KGVudiwgYUpNZXRob2QpOyAvLyBkZWxldGVkIGluIHRo
ZSBKYXZhQ2xhc3MgZGVzdHJ1Y3RvcgorICAgICAgICBNZXRob2RMaXN0KiBtZXRob2RMaXN0ID0g
bV9tZXRob2RzLmdldChhTWV0aG9kLT5uYW1lKCkpOworICAgICAgICBpZiAoIW1ldGhvZExpc3Qp
IHsKKyAgICAgICAgICAgIG1ldGhvZExpc3QgPSBuZXcgTWV0aG9kTGlzdCgpOworICAgICAgICAg
ICAgbV9tZXRob2RzLnNldChhTWV0aG9kLT5uYW1lKCksIG1ldGhvZExpc3QpOworICAgICAgICB9
CisgICAgICAgIG1ldGhvZExpc3QtPmFwcGVuZChhTWV0aG9kKTsKKyAgICAgICAgZW52LT5EZWxl
dGVMb2NhbFJlZihhSk1ldGhvZCk7CisgICAgfQorICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoZmll
bGRzKTsKKyAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKG1ldGhvZHMpOworICAgIGVudi0+RGVsZXRl
TG9jYWxSZWYoYUNsYXNzKTsKK30KKworSmF2YUNsYXNzSm9iamVjdDo6fkphdmFDbGFzc0pvYmpl
Y3QoKQoreworICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2ZpZWxkcyk7CisgICAgbV9maWVsZHMuY2xl
YXIoKTsKKworICAgIE1ldGhvZExpc3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fbWV0aG9k
cy5lbmQoKTsKKyAgICBmb3IgKE1ldGhvZExpc3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9t
ZXRob2RzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBjb25zdCBNZXRob2RM
aXN0KiBtZXRob2RMaXN0ID0gaXQtPnNlY29uZDsKKyAgICAgICAgZGVsZXRlQWxsVmFsdWVzKCpt
ZXRob2RMaXN0KTsKKyAgICAgICAgZGVsZXRlIG1ldGhvZExpc3Q7CisgICAgfQorICAgIG1fbWV0
aG9kcy5jbGVhcigpOworfQorCitNZXRob2RMaXN0IEphdmFDbGFzc0pvYmplY3Q6Om1ldGhvZHNO
YW1lZChjb25zdCBjaGFyKiBuYW1lKSBjb25zdAoreworICAgIE1ldGhvZExpc3QqIG1ldGhvZExp
c3QgPSBtX21ldGhvZHMuZ2V0KG5hbWUpOworCisgICAgaWYgKG1ldGhvZExpc3QpCisgICAgICAg
IHJldHVybiAqbWV0aG9kTGlzdDsKKyAgICByZXR1cm4gTWV0aG9kTGlzdCgpOworfQorCitKYXZh
RmllbGQqIEphdmFDbGFzc0pvYmplY3Q6OmZpZWxkTmFtZWQoY29uc3QgY2hhciogbmFtZSkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9maWVsZHMuZ2V0KG5hbWUpOworfQorCisjZW5kaWYgLy8gRU5B
QkxFKEpBVkFfQlJJREdFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92
OC9KYXZhQ2xhc3NKb2JqZWN0VjguaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSmF2
YUNsYXNzSm9iamVjdFY4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI3
Y2E5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSmF2
YUNsYXNzSm9iamVjdFY4LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDEw
LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKYXZhQ2xh
c3NKb2JqZWN0VjhfaAorI2RlZmluZSBKYXZhQ2xhc3NKb2JqZWN0VjhfaAorCisjaWYgRU5BQkxF
KEpBVkFfQlJJREdFKQorCisjaW5jbHVkZSAiSk5JVXRpbGl0eS5oIgorI2luY2x1ZGUgIkphdmFD
bGFzc1Y4LmgiCisKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgQmluZGluZ3MgeworCitj
bGFzcyBKYXZhQ2xhc3NKb2JqZWN0IDogcHVibGljIEphdmFDbGFzcyB7CitwdWJsaWM6CisgICAg
SmF2YUNsYXNzSm9iamVjdChqb2JqZWN0KTsKKyAgICB2aXJ0dWFsIH5KYXZhQ2xhc3NKb2JqZWN0
KCk7CisKKyAgICAvLyBKYXZhQ2xhc3MgaW1wbGVtZW50YXRpb24KKyAgICB2aXJ0dWFsIE1ldGhv
ZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IGNoYXIqIG5hbWUpIGNvbnN0OworICAgIHZpcnR1YWwg
SmF2YUZpZWxkKiBmaWVsZE5hbWVkKGNvbnN0IGNoYXIqIG5hbWUpIGNvbnN0OworCitwcml2YXRl
OgorICAgIHR5cGVkZWYgSGFzaE1hcDxXVEY6OlN0cmluZywgTWV0aG9kTGlzdCo+IE1ldGhvZExp
c3RNYXA7CisgICAgTWV0aG9kTGlzdE1hcCBtX21ldGhvZHM7CisgICAgRmllbGRNYXAgbV9maWVs
ZHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBCaW5kaW5ncworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIEVOQUJMRShKQVZBX0JSSURHRSkKKworI2VuZGlmIC8vIEphdmFDbGFzc0pv
YmplY3RWOF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0phdmFD
bGFzc1Y4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSmF2YUNsYXNzVjguY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGQ0MTNlLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSmF2YUNsYXNzVjguY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3Bl
biBTb3VyY2UgUHJvamVjdAotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJK
YXZhQ2xhc3NWOC5oIgotCi0jaWYgRU5BQkxFKEpBVkFfQlJJREdFKQotCi0jaW5jbHVkZSAiSmF2
YUZpZWxkSm9iamVjdFY4LmgiCi0jaW5jbHVkZSAiSmF2YU1ldGhvZEpvYmplY3QuaCIKLQotdXNp
bmcgbmFtZXNwYWNlIEpTQzo6QmluZGluZ3M7Ci0KLUphdmFDbGFzczo6SmF2YUNsYXNzKGpvYmpl
Y3QgYW5JbnN0YW5jZSkKLXsKLSAgICBqb2JqZWN0IGFDbGFzcyA9IGNhbGxKTklNZXRob2Q8am9i
amVjdD4oYW5JbnN0YW5jZSwgImdldENsYXNzIiwgIigpTGphdmEvbGFuZy9DbGFzczsiKTsKLQot
ICAgIGlmICghYUNsYXNzKSB7Ci0gICAgICAgIExPR19FUlJPUigidW5hYmxlIHRvIGNhbGwgZ2V0
Q2xhc3Mgb24gaW5zdGFuY2UgJXAiLCBhbkluc3RhbmNlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGludCBpOwotICAgIEpOSUVudiogZW52ID0gZ2V0Sk5JRW52KCk7Ci0KLSAgICAv
LyBHZXQgdGhlIGZpZWxkcwotICAgIGphcnJheSBmaWVsZHMgPSBzdGF0aWNfY2FzdDxqYXJyYXk+
KGNhbGxKTklNZXRob2Q8am9iamVjdD4oYUNsYXNzLCAiZ2V0RmllbGRzIiwgIigpW0xqYXZhL2xh
bmcvcmVmbGVjdC9GaWVsZDsiKSk7Ci0gICAgaW50IG51bUZpZWxkcyA9IGVudi0+R2V0QXJyYXlM
ZW5ndGgoZmllbGRzKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbnVtRmllbGRzOyBpKyspIHsKLSAg
ICAgICAgam9iamVjdCBhSkZpZWxkID0gZW52LT5HZXRPYmplY3RBcnJheUVsZW1lbnQoc3RhdGlj
X2Nhc3Q8am9iamVjdEFycmF5PihmaWVsZHMpLCBpKTsKLSAgICAgICAgSmF2YUZpZWxkKiBhRmll
bGQgPSBuZXcgSmF2YUZpZWxkSm9iamVjdChlbnYsIGFKRmllbGQpOyAvLyBkZWxldGVkIGluIHRo
ZSBKYXZhQ2xhc3MgZGVzdHJ1Y3RvcgotICAgICAgICBtX2ZpZWxkcy5zZXQoYUZpZWxkLT5uYW1l
KCksIGFGaWVsZCk7Ci0gICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoYUpGaWVsZCk7Ci0gICAg
fQotCi0gICAgLy8gR2V0IHRoZSBtZXRob2RzCi0gICAgamFycmF5IG1ldGhvZHMgPSBzdGF0aWNf
Y2FzdDxqYXJyYXk+KGNhbGxKTklNZXRob2Q8am9iamVjdD4oYUNsYXNzLCAiZ2V0TWV0aG9kcyIs
ICIoKVtMamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kOyIpKTsKLSAgICBpbnQgbnVtTWV0aG9kcyA9
IGVudi0+R2V0QXJyYXlMZW5ndGgobWV0aG9kcyk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG51bU1l
dGhvZHM7IGkrKykgewotICAgICAgICBqb2JqZWN0IGFKTWV0aG9kID0gZW52LT5HZXRPYmplY3RB
cnJheUVsZW1lbnQoc3RhdGljX2Nhc3Q8am9iamVjdEFycmF5PihtZXRob2RzKSwgaSk7Ci0gICAg
ICAgIEphdmFNZXRob2QqIGFNZXRob2QgPSBuZXcgSmF2YU1ldGhvZEpvYmplY3QoZW52LCBhSk1l
dGhvZCk7IC8vIGRlbGV0ZWQgaW4gdGhlIEphdmFDbGFzcyBkZXN0cnVjdG9yCi0gICAgICAgIE1l
dGhvZExpc3QqIG1ldGhvZExpc3Q7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIG1ldGhvZExpc3Qg
PSBtX21ldGhvZHMuZ2V0KGFNZXRob2QtPm5hbWUoKSk7Ci0gICAgICAgICAgICBpZiAoIW1ldGhv
ZExpc3QpIHsKLSAgICAgICAgICAgICAgICBtZXRob2RMaXN0ID0gbmV3IE1ldGhvZExpc3QoKTsK
LSAgICAgICAgICAgICAgICBtX21ldGhvZHMuc2V0KGFNZXRob2QtPm5hbWUoKSwgbWV0aG9kTGlz
dCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgbWV0aG9kTGlzdC0+YXBwZW5k
KGFNZXRob2QpOwotICAgICAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGFKTWV0aG9kKTsKLSAgICB9
Ci0gICAgZW52LT5EZWxldGVMb2NhbFJlZihmaWVsZHMpOwotICAgIGVudi0+RGVsZXRlTG9jYWxS
ZWYobWV0aG9kcyk7Ci0gICAgZW52LT5EZWxldGVMb2NhbFJlZihhQ2xhc3MpOwotfQotCi1KYXZh
Q2xhc3M6On5KYXZhQ2xhc3MoKQotewotICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2ZpZWxkcyk7Ci0g
ICAgbV9maWVsZHMuY2xlYXIoKTsKLQotICAgIE1ldGhvZExpc3RNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1fbWV0aG9kcy5lbmQoKTsKLSAgICBmb3IgKE1ldGhvZExpc3RNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbV9tZXRob2RzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICBjb25zdCBNZXRob2RMaXN0KiBtZXRob2RMaXN0ID0gaXQtPnNlY29uZDsKLSAgICAgICAgZGVs
ZXRlQWxsVmFsdWVzKCptZXRob2RMaXN0KTsKLSAgICAgICAgZGVsZXRlIG1ldGhvZExpc3Q7Ci0g
ICAgfQotICAgIG1fbWV0aG9kcy5jbGVhcigpOwotfQotCi1NZXRob2RMaXN0IEphdmFDbGFzczo6
bWV0aG9kc05hbWVkKGNvbnN0IGNoYXIqIG5hbWUpIGNvbnN0Ci17Ci0gICAgTWV0aG9kTGlzdCog
bWV0aG9kTGlzdCA9IG1fbWV0aG9kcy5nZXQobmFtZSk7Ci0KLSAgICBpZiAobWV0aG9kTGlzdCkK
LSAgICAgICAgcmV0dXJuICptZXRob2RMaXN0OwotICAgIHJldHVybiBNZXRob2RMaXN0KCk7Ci19
Ci0KLUphdmFGaWVsZCogSmF2YUNsYXNzOjpmaWVsZE5hbWVkKGNvbnN0IGNoYXIqIG5hbWUpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fZmllbGRzLmdldChuYW1lKTsKLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShKQVZBX0JSSURHRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkv
djgvSmF2YUNsYXNzVjguaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSmF2YUNsYXNz
VjguaAppbmRleCA2YjAzYjJkLi5lNjBjYTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvam5pL3Y4L0phdmFDbGFzc1Y4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pu
aS92OC9KYXZhQ2xhc3NWOC5oCkBAIC0yOCwxMSArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShKQVZB
X0JSSURHRSkKIAotI2luY2x1ZGUgIkpOSVV0aWxpdHkuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQyLDIwICs0MSwxNCBAQCBjbGFz
cyBKYXZhRmllbGQ7CiBjbGFzcyBKYXZhTWV0aG9kOwogCiB0eXBlZGVmIFZlY3RvcjxKYXZhTWV0
aG9kKj4gTWV0aG9kTGlzdDsKLXR5cGVkZWYgSGFzaE1hcDxXVEY6OlN0cmluZywgTWV0aG9kTGlz
dCo+IE1ldGhvZExpc3RNYXA7CiB0eXBlZGVmIEhhc2hNYXA8V1RGOjpTdHJpbmcsIEphdmFGaWVs
ZCo+IEZpZWxkTWFwOwogCiBjbGFzcyBKYXZhQ2xhc3MgewogcHVibGljOgotICAgIEphdmFDbGFz
cyhqb2JqZWN0KTsKLSAgICB+SmF2YUNsYXNzKCk7CisgICAgdmlydHVhbCB+SmF2YUNsYXNzKCkg
e30KIAotICAgIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IGNoYXIqIG5hbWUpIGNvbnN0
OwotICAgIEphdmFGaWVsZCogZmllbGROYW1lZChjb25zdCBjaGFyKiBuYW1lKSBjb25zdDsKLQot
cHJpdmF0ZToKLSAgICBNZXRob2RMaXN0TWFwIG1fbWV0aG9kczsKLSAgICBGaWVsZE1hcCBtX2Zp
ZWxkczsKKyAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IGNoYXIqIG5h
bWUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEphdmFGaWVsZCogZmllbGROYW1lZChjb25zdCBj
aGFyKiBuYW1lKSBjb25zdCA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBCaW5kaW5ncwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KYXZhSW5zdGFuY2VWOC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0phdmFJbnN0YW5jZVY4LmNwcAppbmRleCBi
YTJiYjMyLi5iZGYyYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4
L0phdmFJbnN0YW5jZVY4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0ph
dmFJbnN0YW5jZVY4LmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2lmIEVOQUJMRShKQVZBX0JSSURH
RSkKIAogI2luY2x1ZGUgIkpOSVV0aWxpdHlQcml2YXRlLmgiCi0jaW5jbHVkZSAiSmF2YUNsYXNz
VjguaCIKKyNpbmNsdWRlICJKYXZhQ2xhc3NKb2JqZWN0VjguaCIKICNpbmNsdWRlICJKYXZhRmll
bGRWOC5oIgogI2luY2x1ZGUgIkphdmFNZXRob2QuaCIKIApAQCAtNjYsNyArNjYsNyBAQCB2b2lk
IEphdmFJbnN0YW5jZTo6dmlydHVhbEVuZCgpCiBKYXZhQ2xhc3MqIEphdmFJbnN0YW5jZTo6Z2V0
Q2xhc3MoKSBjb25zdAogewogICAgIGlmICghbV9jbGFzcykKLSAgICAgICAgbV9jbGFzcyA9IG5l
dyBKYXZhQ2xhc3MoamF2YUluc3RhbmNlKCkpOworICAgICAgICBtX2NsYXNzID0gbmV3IEphdmFD
bGFzc0pvYmplY3QoamF2YUluc3RhbmNlKCkpOwogICAgIHJldHVybiBtX2NsYXNzOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>