<?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>85575</bug_id>
          
          <creation_ts>2012-05-03 21:09:45 -0700</creation_ts>
          <short_desc>[BlackBerry] Autofill backing store implementation upstream</short_desc>
          <delta_ts>2012-05-06 18:50:08 -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>WebKit BlackBerry</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>
          
          <blocked>85576</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Jonathan Dong">jonathan.dong.webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>charles.wei</cc>
    
    <cc>leo.yang</cc>
    
    <cc>mstaikos</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>615938</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2012-05-03 21:09:45 -0700</bug_when>
    <thetext>RIM PR: 136405

The form auto fill feature by my current implementation is pretty much like the behavior of desktop browsers, when user submits a form, the name attribute and the value of text input fields(exclude password) will be stored in the autofill database as a name-value pair. Next time when the user fills any form on any site, the browser will search the db to find out if there&apos;s any matched name-value pair to fill the current editing input text field. We will find all the values which has the same name attribute and starts with the character that user has input, and pops up a context dialog to notify user those candidates used by him. If user chooses one from the context dialog, the value will fill the current input text field.

This PR is about the implementation of class AutofillBackingStore, which takes over all the database interaction for AutofillManager.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615999</commentid>
    <comment_count>1</comment_count>
      <attachid>140169</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2012-05-03 23:57:12 -0700</bug_when>
    <thetext>Created attachment 140169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616084</commentid>
    <comment_count>2</comment_count>
      <attachid>140169</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-04 04:49:44 -0700</bug_when>
    <thetext>Comment on attachment 140169
Patch

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

Can be cleaned up some more.

&gt; Source/WebCore/platform/network/blackberry/AutofillBackingStore.cpp:24
&gt; +#include &quot;NotImplemented.h&quot;

Can be removed?

&gt; Source/WebCore/platform/network/blackberry/AutofillBackingStore.cpp:163
&gt; +    int numOfRow = m_hasStatement-&gt;getColumnInt(0);

Do you mean numberOfRows here or rowNumber? 
Better not abbreviate.

&gt; Source/WebCore/platform/network/blackberry/AutofillBackingStore.cpp:170
&gt; +    return false;

You can combine these into one return statement.

&gt; Source/WebCore/platform/network/blackberry/AutofillBackingStore.h:23
&gt; +#include &lt;wtf/Vector.h&gt;

Does not seem like we need this include here.

&gt; Source/WebCore/platform/network/blackberry/AutofillBackingStore.h:40
&gt; +    bool has(const String&amp; name, const String&amp; value);

has is an unclear name for a function. How about contains?

&gt; Source/WebCore/platform/network/blackberry/AutofillBackingStore.h:41
&gt; +

Please check if any of the functions are const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616296</commentid>
    <comment_count>3</comment_count>
      <attachid>140251</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2012-05-04 09:26:12 -0700</bug_when>
    <thetext>Created attachment 140251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616306</commentid>
    <comment_count>4</comment_count>
      <attachid>140251</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-04 09:34:43 -0700</bug_when>
    <thetext>Comment on attachment 140251
Patch

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

&gt; Source/WebCore/platform/network/blackberry/AutofillBackingStore.cpp:56
&gt; +        m_database.close();

Should the dtor here do similar things like close()? Can you assure somewhow close() is called before the dtor is called? Is the dtor called at all?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616322</commentid>
    <comment_count>5</comment_count>
      <attachid>140251</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-04 09:47:42 -0700</bug_when>
    <thetext>Comment on attachment 140251
Patch

Attachment 140251 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12480935</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616327</commentid>
    <comment_count>6</comment_count>
      <attachid>140251</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2012-05-04 09:53:41 -0700</bug_when>
    <thetext>Comment on attachment 140251
Patch

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

&gt;&gt; Source/WebCore/platform/network/blackberry/AutofillBackingStore.cpp:56
&gt;&gt; +        m_database.close();
&gt; 
&gt; Should the dtor here do similar things like close()? Can you assure somewhow close() is called before the dtor is called? Is the dtor called at all?

well that&apos;s a good question. I think as AutofillBackingStore works as a singleton, close() should make as a private function and called from dtor, we shouldn&apos;t let people call close() explicitly.
dtor should be called after exit main(), I&apos;ll make a build and debug it tomorrow to see if it works as expected, too tired today.
I guess CredentialBackingStore has the same issue, sorry for that. Will fix it together with next patch. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616399</commentid>
    <comment_count>7</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-04 10:44:56 -0700</bug_when>
    <thetext>Hi Jonathan,

(In reply to comment #6)
&gt; (From update of attachment 140251 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140251&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/network/blackberry/AutofillBackingStore.cpp:56
&gt; &gt;&gt; +        m_database.close();
&gt; &gt; 
&gt; &gt; Should the dtor here do similar things like close()? Can you assure somewhow close() is called before the dtor is called? Is the dtor called at all?
&gt; 
&gt; well that&apos;s a good question. I think as AutofillBackingStore works as a singleton, close() should make as a private function and called from dtor, we shouldn&apos;t let people call close() explicitly.
&gt; dtor should be called after exit main(), I&apos;ll make a build and debug it tomorrow to see if it works as expected, too tired today.
&gt; I guess CredentialBackingStore has the same issue, sorry for that. Will fix it together with next patch. Thanks.

Sounds good. Also if you use DEFINE_STATIC_LOCAL for the singleton it should call the dtor, maybe you can debug that.
If you only call close() from the dtor then maybe you do not even need that function but just put the code in the dtor.
Looking forward to the patch :)
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616407</commentid>
    <comment_count>8</comment_count>
      <attachid>140251</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-04 10:47:29 -0700</bug_when>
    <thetext>Comment on attachment 140251
Patch

Clearing review flag since Jonathan will fix the dtor issues in a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617094</commentid>
    <comment_count>9</comment_count>
      <attachid>140421</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2012-05-06 03:22:07 -0700</bug_when>
    <thetext>Created attachment 140421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617218</commentid>
    <comment_count>10</comment_count>
      <attachid>140421</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-06 16:30:16 -0700</bug_when>
    <thetext>Comment on attachment 140421
Patch

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

Looks good. I don&apos;t really see the need to move away from instance() concept, but ok.

&gt; Source/WebCore/platform/network/blackberry/AutofillBackingStore.cpp:185
&gt; +

One newline too much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617229</commentid>
    <comment_count>11</comment_count>
      <attachid>140445</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2012-05-06 16:53:57 -0700</bug_when>
    <thetext>Created attachment 140445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617231</commentid>
    <comment_count>12</comment_count>
      <attachid>140445</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-06 16:58:37 -0700</bug_when>
    <thetext>Comment on attachment 140445
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617263</commentid>
    <comment_count>13</comment_count>
      <attachid>140445</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-06 18:50:01 -0700</bug_when>
    <thetext>Comment on attachment 140445
Patch

Clearing flags on attachment: 140445

Committed r116258: &lt;http://trac.webkit.org/changeset/116258&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617264</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-06 18:50:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140169</attachid>
            <date>2012-05-03 23:57:12 -0700</date>
            <delta_ts>2012-05-04 09:26:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85575-20120504145706.patch</filename>
            <type>text/plain</type>
            <size>11597</size>
            <attacher name="Jonathan Dong">jonathan.dong.webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGJiN2ZjODIxNTU5MTVl
ZTRmZmE0OTg2Njg1NDVlZjZkZjI5ZGE0Ni4uYWYxOTdmY2RlMzlkYWVlMjBiMmI2MjJiNDYxOGNl
MzZmODA3NWRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA1LTAzICBKb25h
dGhhbiBEb25nICA8am9uYXRoYW4uZG9uZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAg
W0JsYWNrQmVycnldIEF1dG9maWxsIGJhY2tpbmcgc3RvcmUgaW1wbGVtZW50YXRpb24gdXBzdHJl
YW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NTc1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUklNIFBS
OiAxMzY0MDUKKyAgICAgICAgSW1wbGVtZW50ZWQgY2xhc3MgQXV0b2ZpbGxCYWNraW5nU3RvcmUg
d2hpY2ggaXMgcmVzcG9uc2libGUKKyAgICAgICAgZm9yIGhhbmRsaW5nIGludGVyYWN0aW9uIHdp
dGggYXV0b2ZpbGwgZGF0YWJhc2UuCisKKyAgICAgICAgSW5pdGlhbCB1cHN0cmVhbSwgTm8gbmV3
IHRlc3RzLgorCisgICAgICAgICogUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9BdXRvZmlsbEJhY2tpbmdTdG9yZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRvZmlsbEJhY2tp
bmdTdG9yZTo6aW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6QXV0b2ZpbGxCYWNraW5nU3Rv
cmU6OkF1dG9maWxsQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsQmFj
a2luZ1N0b3JlOjp+QXV0b2ZpbGxCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXV0
b2ZpbGxCYWNraW5nU3RvcmU6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6QXV0b2ZpbGxCYWNr
aW5nU3RvcmU6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsQmFja2luZ1N0b3Jl
OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6QXV0b2ZpbGxCYWNraW5nU3RvcmU6OnVwZGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdXRvZmlsbEJhY2tpbmdTdG9yZTo6aGFzKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9maWxsQmFja2luZ1N0b3JlOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6
QXV0b2ZpbGxCYWNraW5nU3RvcmU6OmNsZWFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2JsYWNrYmVycnkvQXV0b2ZpbGxCYWNraW5nU3RvcmUuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKEF1dG9maWxsQmFja2luZ1N0b3JlKToKKwogMjAxMi0wNS0wMyAgTm9l
bCBHb3Jkb24gIDxub2VsLmdvcmRvbkBnbWFpbC5jb20+CiAKICAgICAgICAgUE5HSW1hZ2VEZWNv
ZGVyOiBDbGVhbiB1cCByb3dBdmFpbGFibGUoKSBzb21lIG1vcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtQmxhY2tCZXJyeS5jbWFrZQppbmRleCBjNDJkNmMwZGMzNzQ1MTAyNDcxMjU1OWI2NTk3ZmZl
MTRiN2IzOTY0Li4wNmExNmM1ZDM1N2RmNTI4MDg1Mjk4NWNhNDBjMzNlODU5MzhjNzRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC05MCw2ICs5MCw3IEBAIExJ
U1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZpbmcuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9Qcm94eVNlcnZlci5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQXV0b2Zp
bGxCYWNraW5nU3RvcmUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0RlZmVy
cmVkRGF0YS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya01hbmFnZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQXV0
b2ZpbGxCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9i
bGFja2JlcnJ5L0F1dG9maWxsQmFja2luZ1N0b3JlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjJlODEzZmU3
NmNlMTFkN2M3YjNmOTYwYmY4NDhkYzgyZTQxMGY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0F1dG9maWxsQmFja2luZ1N0b3Jl
LmNwcApAQCAtMCwwICsxLDIwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJBdXRvZmlsbEJhY2tpbmdT
dG9yZS5oIgorCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCisjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCisjaW5jbHVkZSA8QmxhY2tCZXJy
eVBsYXRmb3JtQ2xpZW50Lmg+CisKKyNkZWZpbmUgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUoc3Rh
dGVtZW50LCByZXR1cm5WYWx1ZSwgLi4uKSBcCisgICAgaWYgKHN0YXRlbWVudCkgeyBcCisgICAg
ICAgIExPR19FUlJPUihfX1ZBX0FSR1NfXyk7IFwKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVl
OyBcCisgICAgfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0F1dG9maWxsQmFja2luZ1N0b3Jl
KiBBdXRvZmlsbEJhY2tpbmdTdG9yZTo6aW5zdGFuY2UoKQoreworICAgIHN0YXRpYyBBdXRvZmls
bEJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0gMDsKKyAgICBpZiAoIWJhY2tpbmdTdG9yZSkg
eworICAgICAgICBiYWNraW5nU3RvcmUgPSBuZXcgQXV0b2ZpbGxCYWNraW5nU3RvcmU7CisgICAg
ICAgIGJhY2tpbmdTdG9yZS0+b3BlbihwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkNsaWVudDo6Z2V0KCktPmdldEFwcGxpY2F0aW9uRGF0YURpcmVjdG9yeSgp
LmNfc3RyKCksICIvYXV0b2ZpbGwuZGIiKSk7CisgICAgfQorICAgIHJldHVybiBiYWNraW5nU3Rv
cmU7Cit9CisKK0F1dG9maWxsQmFja2luZ1N0b3JlOjpBdXRvZmlsbEJhY2tpbmdTdG9yZSgpCisg
ICAgOiBtX2FkZFN0YXRlbWVudCgwKQorICAgICwgbV91cGRhdGVTdGF0ZW1lbnQoMCkKKyAgICAs
IG1faGFzU3RhdGVtZW50KDApCisgICAgLCBtX2dldFN0YXRlbWVudCgwKQoreworfQorCitBdXRv
ZmlsbEJhY2tpbmdTdG9yZTo6fkF1dG9maWxsQmFja2luZ1N0b3JlKCkKK3sKKyAgICBpZiAobV9k
YXRhYmFzZS5pc09wZW4oKSkKKyAgICAgICAgbV9kYXRhYmFzZS5jbG9zZSgpOworfQorCitib29s
IEF1dG9maWxsQmFja2luZ1N0b3JlOjpvcGVuKGNvbnN0IFN0cmluZyYgZGJQYXRoKQoreworICAg
IEFTU0VSVCghbV9kYXRhYmFzZS5pc09wZW4oKSk7CisKKyAgICBIQU5ETEVfU1FMX0VYRUNfRkFJ
TFVSRSghbV9kYXRhYmFzZS5vcGVuKGRiUGF0aCksIGZhbHNlLAorICAgICAgICAiRmFpbGVkIHRv
IG9wZW4gZGF0YWJhc2UgZmlsZSAlcyBmb3IgYXV0b2ZpbGwgZGF0YWJhc2UiLCBkYlBhdGgudXRm
OCgpLmRhdGEoKSk7CisKKyAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoImF1dG9maWxs
IikpIHsKKyAgICAgICAgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUoIW1fZGF0YWJhc2UuZXhlY3V0
ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBhdXRvZmlsbCAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSwg
bmFtZSBWQVJDSEFSIE5PVCBOVUxMLCB2YWx1ZSBWQVJDSEFSIE5PVCBOVUxMLCBjb3VudCBJTlRF
R0VSIERFRkFVTFQgMSkiKSwKKyAgICAgICAgICAgIGZhbHNlLCAiRmFpbGVkIHRvIGNyZWF0ZSB0
YWJsZSBhdXRvZmlsbCBmb3IgYXV0b2ZpbGwgZGF0YWJhc2UiKTsKKworICAgICAgICAvLyBDcmVh
dGUgaW5kZXggZm9yIHRhYmxlIGF1dG9maWxsLgorICAgICAgICBIQU5ETEVfU1FMX0VYRUNfRkFJ
TFVSRSghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIElOREVYIGF1dG9maWxsX25h
bWUgT04gYXV0b2ZpbGwgKG5hbWUpIiksCisgICAgICAgICAgICBmYWxzZSwgIkZhaWxlZCB0byBj
cmVhdGUgYXV0b2ZpbGxfbmFtZSBpbmRleCBmb3IgdGFibGUgYXV0b2ZpbGwiKTsKKyAgICB9CisK
KyAgICAvLyBQcmVwYXJlIHRoZSBzdGF0ZW1lbnRzLgorICAgIG1fYWRkU3RhdGVtZW50ID0gbmV3
IFNRTGl0ZVN0YXRlbWVudChtX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gYXV0b2ZpbGwgKG5hbWUs
IHZhbHVlKSBWQUxVRVMgKD8sID8pIik7CisgICAgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUobV9h
ZGRTdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaywKKyAgICAgICAgZmFsc2UsICJG
YWlsZWQgdG8gcHJlcGFyZSBhZGQgc3RhdGVtZW50Iik7CisKKyAgICBtX3VwZGF0ZVN0YXRlbWVu
dCA9IG5ldyBTUUxpdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlVQREFURSBhdXRvZmlsbCBTRVQg
Y291bnQgPSAoU0VMRUNUIGNvdW50ICsgMSBmcm9tIGF1dG9maWxsIFdIRVJFIG5hbWUgPSA/IEFO
RCB2YWx1ZSA9ID8pIFdIRVJFIG5hbWUgPSA/IEFORCB2YWx1ZSA9ID8iKTsKKyAgICBIQU5ETEVf
U1FMX0VYRUNfRkFJTFVSRShtX3VwZGF0ZVN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTFJlc3Vs
dE9rLAorICAgICAgICBmYWxzZSwgIkZhaWxlZCB0byBwcmVwYXJlIHVwZGF0ZSBzdGF0ZW1lbnQi
KTsKKworICAgIG1faGFzU3RhdGVtZW50ID0gbmV3IFNRTGl0ZVN0YXRlbWVudChtX2RhdGFiYXNl
LCAiU0VMRUNUIENPVU5UKCopIEZST00gYXV0b2ZpbGwgV0hFUkUgbmFtZSA9ID8gQU5EIHZhbHVl
ID0gPyIpOworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKG1faGFzU3RhdGVtZW50LT5wcmVw
YXJlKCkgIT0gU1FMUmVzdWx0T2ssCisgICAgICAgIGZhbHNlLCAiRmFpbGVkIHRvIHByZXBhcmUg
aGFzIHN0YXRlbWVudCIpOworCisgICAgbV9nZXRTdGF0ZW1lbnQgPSBuZXcgU1FMaXRlU3RhdGVt
ZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgdmFsdWUgRlJPTSBhdXRvZmlsbCBXSEVSRSBuYW1lID0g
PyBhbmQgdmFsdWUgbGlrZSA/IE9SREVSIEJZIGNvdW50IERFU0MiKTsKKyAgICBIQU5ETEVfU1FM
X0VYRUNfRkFJTFVSRShtX2dldFN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rLAor
ICAgICAgICBmYWxzZSwgIkZhaWxlZCB0byBwcmVwYXJlIGdldCBzdGF0ZW1lbnQiKTsKKworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIEF1dG9maWxsQmFja2luZ1N0b3JlOjpjbG9zZSgpCit7
CisgICAgZGVsZXRlIG1fYWRkU3RhdGVtZW50OworICAgIG1fYWRkU3RhdGVtZW50ID0gMDsKKyAg
ICBkZWxldGUgbV91cGRhdGVTdGF0ZW1lbnQ7CisgICAgbV91cGRhdGVTdGF0ZW1lbnQgPSAwOwor
ICAgIGRlbGV0ZSBtX2hhc1N0YXRlbWVudDsKKyAgICBtX2hhc1N0YXRlbWVudCA9IDA7CisgICAg
ZGVsZXRlIG1fZ2V0U3RhdGVtZW50OworICAgIG1fZ2V0U3RhdGVtZW50ID0gMDsKKworICAgIGlm
IChtX2RhdGFiYXNlLmlzT3BlbigpKQorICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7Cit9CisK
K2Jvb2wgQXV0b2ZpbGxCYWNraW5nU3RvcmU6OmFkZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKG5hbWUuaXNFbXB0eSgpIHx8IHZhbHVlLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNP
cGVuKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJhdXRvZmlsbCIpKTsK
KworICAgIGlmIChoYXMobmFtZSwgdmFsdWUpKQorICAgICAgICByZXR1cm4gdXBkYXRlKG5hbWUs
IHZhbHVlKTsKKworICAgIGlmICghbV9hZGRTdGF0ZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIG1fYWRkU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBuYW1lKTsKKyAgICBtX2FkZFN0
YXRlbWVudC0+YmluZFRleHQoMiwgdmFsdWUpOworCisgICAgaW50IHJlc3VsdCA9IG1fYWRkU3Rh
dGVtZW50LT5zdGVwKCk7CisgICAgbV9hZGRTdGF0ZW1lbnQtPnJlc2V0KCk7CisgICAgSEFORExF
X1NRTF9FWEVDX0ZBSUxVUkUocmVzdWx0ICE9IFNRTFJlc3VsdERvbmUsIGZhbHNlLAorICAgICAg
ICAiRmFpbGVkIHRvIGFkZCBhdXRvZmlsbCBpdGVtIGludG8gdGFibGUgYXV0b2ZpbGwgLSAlaSIs
IHJlc3VsdCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBBdXRvZmlsbEJhY2tpbmdT
dG9yZTo6dXBkYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sK
KyAgICBpZiAoIW1fdXBkYXRlU3RhdGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBtX3VwZGF0ZVN0YXRlbWVudC0+YmluZFRleHQoMSwgbmFtZSk7CisgICAgbV91cGRhdGVTdGF0
ZW1lbnQtPmJpbmRUZXh0KDIsIHZhbHVlKTsKKyAgICBtX3VwZGF0ZVN0YXRlbWVudC0+YmluZFRl
eHQoMywgbmFtZSk7CisgICAgbV91cGRhdGVTdGF0ZW1lbnQtPmJpbmRUZXh0KDQsIHZhbHVlKTsK
KworICAgIGludCByZXN1bHQgPSBtX3VwZGF0ZVN0YXRlbWVudC0+c3RlcCgpOworICAgIG1fdXBk
YXRlU3RhdGVtZW50LT5yZXNldCgpOworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKHJlc3Vs
dCAhPSBTUUxSZXN1bHREb25lLCBmYWxzZSwKKyAgICAgICAgIkZhaWxlZCB0byB1cGRhdGUgYXV0
b2ZpbGwgaXRlbSBpbiB0YWJsZSBhdXRvZmlsbCAtICVpIiwgcmVzdWx0KTsKKworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIEF1dG9maWxsQmFja2luZ1N0b3JlOjpoYXMoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGlmICghbV9oYXNTdGF0ZW1lbnQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1faGFzU3RhdGVtZW50LT5iaW5kVGV4dCgx
LCBuYW1lKTsKKyAgICBtX2hhc1N0YXRlbWVudC0+YmluZFRleHQoMiwgdmFsdWUpOworCisgICAg
aW50IHJlc3VsdCA9IG1faGFzU3RhdGVtZW50LT5zdGVwKCk7CisgICAgaW50IG51bU9mUm93ID0g
bV9oYXNTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKKyAgICBtX2hhc1N0YXRlbWVudC0+cmVz
ZXQoKTsKKyAgICBIQU5ETEVfU1FMX0VYRUNfRkFJTFVSRShyZXN1bHQgIT0gU1FMUmVzdWx0Um93
LCBmYWxzZSwKKyAgICAgICAgIkZhaWxlZCB0byBleGVjdXRlIHNlbGVjdCBhdXRvZmlsbCBpdGVt
IGZyb20gdGFibGUgYXV0b2ZpbGwgaW4gaGFzIC0gJWkiLCByZXN1bHQpOworCisgICAgaWYgKG51
bU9mUm93KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Zl
Y3RvcjxTdHJpbmc+IEF1dG9maWxsQmFja2luZ1N0b3JlOjpnZXQoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlSGludCkKK3sKKyAgICBBU1NFUlQobV9kYXRhYmFzZS5pc09w
ZW4oKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UudGFibGVFeGlzdHMoImF1dG9maWxsIikpOwor
CisgICAgVmVjdG9yPFN0cmluZz4gY2FuZGlkYXRlczsKKyAgICBpZiAobmFtZS5pc0VtcHR5KCkg
fHwgdmFsdWVIaW50LmlzRW1wdHkoKSB8fCAhbV9nZXRTdGF0ZW1lbnQpCisgICAgICAgIHJldHVy
biBjYW5kaWRhdGVzOworCisgICAgU3RyaW5nIHZhbHVlID0gdmFsdWVIaW50ICsgIiUiOworICAg
IG1fZ2V0U3RhdGVtZW50LT5iaW5kVGV4dCgxLCBuYW1lKTsKKyAgICBtX2dldFN0YXRlbWVudC0+
YmluZFRleHQoMiwgdmFsdWUpOworCisgICAgaW50IHJlc3VsdDsKKyAgICB3aGlsZSAoKHJlc3Vs
dCA9IG1fZ2V0U3RhdGVtZW50LT5zdGVwKCkpID09IFNRTFJlc3VsdFJvdykKKyAgICAgICAgY2Fu
ZGlkYXRlcy5hcHBlbmQobV9nZXRTdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMCkpOworICAgIG1f
Z2V0U3RhdGVtZW50LT5yZXNldCgpOworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKHJlc3Vs
dCAhPSBTUUxSZXN1bHREb25lLCBjYW5kaWRhdGVzLAorICAgICAgICAiRmFpbGVkIHRvIGV4ZWN1
dGUgc2VsZWN0IGF1dG9maWxsIGl0ZW0gZnJvbSB0YWJsZSBhdXRvZmlsbCBpbiBnZXQgLSAlaSIs
IHJlc3VsdCk7CisKKyAgICByZXR1cm4gY2FuZGlkYXRlczsKK30KKworCitib29sIEF1dG9maWxs
QmFja2luZ1N0b3JlOjpjbGVhcigpCit7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkp
OworICAgIEFTU0VSVChtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJhdXRvZmlsbCIpKTsKKworICAg
IEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJERUxF
VEUgRlJPTSBhdXRvZmlsbCIpLAorICAgICAgICBmYWxzZSwgIkZhaWxlZCB0byBjbGVhciB0YWJs
ZSBhdXRvZmlsbCIpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2ti
ZXJyeS9BdXRvZmlsbEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ibGFja2JlcnJ5L0F1dG9maWxsQmFja2luZ1N0b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI1M2Zh
Nzg4NjdjZGJkNzA4ZjQxMDM1OWE5YzJmNGQ4OTZkMjUxNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9BdXRvZmlsbEJhY2tpbmdT
dG9yZS5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg
bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNB
CisgKi8KKworI2lmbmRlZiBBdXRvZmlsbEJhY2tpbmdTdG9yZV9oCisjZGVmaW5lIEF1dG9maWxs
QmFja2luZ1N0b3JlX2gKKworI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1dG9maWxsQmFj
a2luZ1N0b3JlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgQXV0b2ZpbGxCYWNraW5nU3RvcmUqIGlu
c3RhbmNlKCk7CisgICAgfkF1dG9maWxsQmFja2luZ1N0b3JlKCk7CisgICAgYm9vbCBvcGVuKGNv
bnN0IFN0cmluZyYgZGJQYXRoKTsKKyAgICB2b2lkIGNsb3NlKCk7CisgICAgYm9vbCBhZGQoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICBWZWN0b3I8U3RyaW5n
PiBnZXQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlSGludCk7CisgICAg
Ym9vbCBjbGVhcigpOworCitwcml2YXRlOgorICAgIEF1dG9maWxsQmFja2luZ1N0b3JlKCk7Cisg
ICAgYm9vbCB1cGRhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsK
KyAgICBib29sIGhhcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwor
CisgICAgU1FMaXRlRGF0YWJhc2UgbV9kYXRhYmFzZTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQqIG1f
YWRkU3RhdGVtZW50OworICAgIFNRTGl0ZVN0YXRlbWVudCogbV91cGRhdGVTdGF0ZW1lbnQ7Cisg
ICAgU1FMaXRlU3RhdGVtZW50KiBtX2hhc1N0YXRlbWVudDsKKyAgICBTUUxpdGVTdGF0ZW1lbnQq
IG1fZ2V0U3RhdGVtZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gQXV0b2ZpbGxCYWNraW5nU3RvcmVfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140251</attachid>
            <date>2012-05-04 09:26:12 -0700</date>
            <delta_ts>2012-05-06 03:21:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85575-20120505002610.patch</filename>
            <type>text/plain</type>
            <size>11637</size>
            <attacher name="Jonathan Dong">jonathan.dong.webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTA0YjczMDFhOGM4ZTVk
NmU3MWIzOGNkM2FjYWNkM2YyY2YzM2I3NS4uMjExM2I3OTVmMjU2MmQ3NjE2ZjVjMDZlOTVhZTIx
NWExZGI4MzBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA1LTA0ICBKb25h
dGhhbiBEb25nICA8am9uYXRoYW4uZG9uZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAg
W0JsYWNrQmVycnldIEF1dG9maWxsIGJhY2tpbmcgc3RvcmUgaW1wbGVtZW50YXRpb24gdXBzdHJl
YW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NTc1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUklNIFBS
OiAxMzY0MDUKKyAgICAgICAgSW1wbGVtZW50ZWQgY2xhc3MgQXV0b2ZpbGxCYWNraW5nU3RvcmUg
d2hpY2ggaXMgcmVzcG9uc2libGUKKyAgICAgICAgZm9yIGhhbmRsaW5nIGludGVyYWN0aW9uIHdp
dGggYXV0b2ZpbGwgZGF0YWJhc2UuCisKKyAgICAgICAgSW5pdGlhbCB1cHN0cmVhbSwgTm8gbmV3
IHRlc3RzLgorCisgICAgICAgICogUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9BdXRvZmlsbEJhY2tpbmdTdG9yZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRvZmlsbEJhY2tp
bmdTdG9yZTo6aW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6QXV0b2ZpbGxCYWNraW5nU3Rv
cmU6OkF1dG9maWxsQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsQmFj
a2luZ1N0b3JlOjp+QXV0b2ZpbGxCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXV0
b2ZpbGxCYWNraW5nU3RvcmU6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6QXV0b2ZpbGxCYWNr
aW5nU3RvcmU6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsQmFja2luZ1N0b3Jl
OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6QXV0b2ZpbGxCYWNraW5nU3RvcmU6OnVwZGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdXRvZmlsbEJhY2tpbmdTdG9yZTo6Y29udGFpbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6QXV0b2ZpbGxCYWNraW5nU3RvcmU6OmdldCk6CisgICAgICAgIChXZWJD
b3JlOjpBdXRvZmlsbEJhY2tpbmdTdG9yZTo6Y2xlYXIpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvYmxhY2tiZXJyeS9BdXRvZmlsbEJhY2tpbmdTdG9yZS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoQXV0b2ZpbGxCYWNraW5nU3RvcmUpOgorCiAyMDEyLTA1LTA0
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTE2MDg1LCByMTE2MDkxLCBhbmQgcjExNjA5NS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQppbmRleCBjNDJkNmMwZGMzNzQ1MTAy
NDcxMjU1OWI2NTk3ZmZlMTRiN2IzOTY0Li4wNmExNmM1ZDM1N2RmNTI4MDg1Mjk4NWNhNDBjMzNl
ODU5MzhjNzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnku
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC05
MCw2ICs5MCw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogTElTVChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZpbmcuY3BwCiAgICAg
cGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2Js
YWNrYmVycnkvQXV0b2ZpbGxCYWNraW5nU3RvcmUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9i
bGFja2JlcnJ5L0RlZmVycmVkRGF0YS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVy
cnkvTmV0d29ya0pvYi5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29y
a01hbmFnZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2JsYWNrYmVycnkvQXV0b2ZpbGxCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0F1dG9maWxsQmFja2luZ1N0b3JlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iNWNhY2U2MThhODc1NjkzNjhlODNmYWIwOGQzYmFkZDY4ZWY4MTU1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0F1dG9m
aWxsQmFja2luZ1N0b3JlLmNwcApAQCAtMCwwICsxLDIwNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAw
MjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJB
dXRvZmlsbEJhY2tpbmdTdG9yZS5oIgorCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1
ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUNsaWVu
dC5oPgorCisjZGVmaW5lIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKHN0YXRlbWVudCwgcmV0dXJu
VmFsdWUsIC4uLikgXAorICAgIGlmIChzdGF0ZW1lbnQpIHsgXAorICAgICAgICBMT0dfRVJST1Io
X19WQV9BUkdTX18pOyBcCisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsgXAorICAgIH0KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitBdXRvZmlsbEJhY2tpbmdTdG9yZSogQXV0b2ZpbGxCYWNr
aW5nU3RvcmU6Omluc3RhbmNlKCkKK3sKKyAgICBzdGF0aWMgQXV0b2ZpbGxCYWNraW5nU3RvcmUq
IGJhY2tpbmdTdG9yZSA9IDA7CisgICAgaWYgKCFiYWNraW5nU3RvcmUpIHsKKyAgICAgICAgYmFj
a2luZ1N0b3JlID0gbmV3IEF1dG9maWxsQmFja2luZ1N0b3JlOworICAgICAgICBiYWNraW5nU3Rv
cmUtPm9wZW4ocGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpD
bGllbnQ6OmdldCgpLT5nZXRBcHBsaWNhdGlvbkRhdGFEaXJlY3RvcnkoKS5jX3N0cigpLCAiL2F1
dG9maWxsLmRiIikpOworICAgIH0KKyAgICByZXR1cm4gYmFja2luZ1N0b3JlOworfQorCitBdXRv
ZmlsbEJhY2tpbmdTdG9yZTo6QXV0b2ZpbGxCYWNraW5nU3RvcmUoKQorICAgIDogbV9hZGRTdGF0
ZW1lbnQoMCkKKyAgICAsIG1fdXBkYXRlU3RhdGVtZW50KDApCisgICAgLCBtX2NvbnRhaW5zU3Rh
dGVtZW50KDApCisgICAgLCBtX2dldFN0YXRlbWVudCgwKQoreworfQorCitBdXRvZmlsbEJhY2tp
bmdTdG9yZTo6fkF1dG9maWxsQmFja2luZ1N0b3JlKCkKK3sKKyAgICBpZiAobV9kYXRhYmFzZS5p
c09wZW4oKSkKKyAgICAgICAgbV9kYXRhYmFzZS5jbG9zZSgpOworfQorCitib29sIEF1dG9maWxs
QmFja2luZ1N0b3JlOjpvcGVuKGNvbnN0IFN0cmluZyYgZGJQYXRoKQoreworICAgIEFTU0VSVCgh
bV9kYXRhYmFzZS5pc09wZW4oKSk7CisKKyAgICBIQU5ETEVfU1FMX0VYRUNfRkFJTFVSRSghbV9k
YXRhYmFzZS5vcGVuKGRiUGF0aCksIGZhbHNlLAorICAgICAgICAiRmFpbGVkIHRvIG9wZW4gZGF0
YWJhc2UgZmlsZSAlcyBmb3IgYXV0b2ZpbGwgZGF0YWJhc2UiLCBkYlBhdGgudXRmOCgpLmRhdGEo
KSk7CisKKyAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoImF1dG9maWxsIikpIHsKKyAg
ICAgICAgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQo
IkNSRUFURSBUQUJMRSBhdXRvZmlsbCAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSwgbmFtZSBWQVJD
SEFSIE5PVCBOVUxMLCB2YWx1ZSBWQVJDSEFSIE5PVCBOVUxMLCBjb3VudCBJTlRFR0VSIERFRkFV
TFQgMSkiKSwKKyAgICAgICAgICAgIGZhbHNlLCAiRmFpbGVkIHRvIGNyZWF0ZSB0YWJsZSBhdXRv
ZmlsbCBmb3IgYXV0b2ZpbGwgZGF0YWJhc2UiKTsKKworICAgICAgICAvLyBDcmVhdGUgaW5kZXgg
Zm9yIHRhYmxlIGF1dG9maWxsLgorICAgICAgICBIQU5ETEVfU1FMX0VYRUNfRkFJTFVSRSghbV9k
YXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIElOREVYIGF1dG9maWxsX25hbWUgT04gYXV0
b2ZpbGwgKG5hbWUpIiksCisgICAgICAgICAgICBmYWxzZSwgIkZhaWxlZCB0byBjcmVhdGUgYXV0
b2ZpbGxfbmFtZSBpbmRleCBmb3IgdGFibGUgYXV0b2ZpbGwiKTsKKyAgICB9CisKKyAgICAvLyBQ
cmVwYXJlIHRoZSBzdGF0ZW1lbnRzLgorICAgIG1fYWRkU3RhdGVtZW50ID0gbmV3IFNRTGl0ZVN0
YXRlbWVudChtX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gYXV0b2ZpbGwgKG5hbWUsIHZhbHVlKSBW
QUxVRVMgKD8sID8pIik7CisgICAgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUobV9hZGRTdGF0ZW1l
bnQtPnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaywKKyAgICAgICAgZmFsc2UsICJGYWlsZWQgdG8g
cHJlcGFyZSBhZGQgc3RhdGVtZW50Iik7CisKKyAgICBtX3VwZGF0ZVN0YXRlbWVudCA9IG5ldyBT
UUxpdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlVQREFURSBhdXRvZmlsbCBTRVQgY291bnQgPSAo
U0VMRUNUIGNvdW50ICsgMSBmcm9tIGF1dG9maWxsIFdIRVJFIG5hbWUgPSA/IEFORCB2YWx1ZSA9
ID8pIFdIRVJFIG5hbWUgPSA/IEFORCB2YWx1ZSA9ID8iKTsKKyAgICBIQU5ETEVfU1FMX0VYRUNf
RkFJTFVSRShtX3VwZGF0ZVN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rLAorICAg
ICAgICBmYWxzZSwgIkZhaWxlZCB0byBwcmVwYXJlIHVwZGF0ZSBzdGF0ZW1lbnQiKTsKKworICAg
IG1fY29udGFpbnNTdGF0ZW1lbnQgPSBuZXcgU1FMaXRlU3RhdGVtZW50KG1fZGF0YWJhc2UsICJT
RUxFQ1QgQ09VTlQoKikgRlJPTSBhdXRvZmlsbCBXSEVSRSBuYW1lID0gPyBBTkQgdmFsdWUgPSA/
Iik7CisgICAgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUobV9jb250YWluc1N0YXRlbWVudC0+cHJl
cGFyZSgpICE9IFNRTFJlc3VsdE9rLAorICAgICAgICBmYWxzZSwgIkZhaWxlZCB0byBwcmVwYXJl
IGNvbnRhaW5zIHN0YXRlbWVudCIpOworCisgICAgbV9nZXRTdGF0ZW1lbnQgPSBuZXcgU1FMaXRl
U3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgdmFsdWUgRlJPTSBhdXRvZmlsbCBXSEVSRSBu
YW1lID0gPyBhbmQgdmFsdWUgbGlrZSA/IE9SREVSIEJZIGNvdW50IERFU0MiKTsKKyAgICBIQU5E
TEVfU1FMX0VYRUNfRkFJTFVSRShtX2dldFN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTFJlc3Vs
dE9rLAorICAgICAgICBmYWxzZSwgIkZhaWxlZCB0byBwcmVwYXJlIGdldCBzdGF0ZW1lbnQiKTsK
KworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEF1dG9maWxsQmFja2luZ1N0b3JlOjpjbG9z
ZSgpCit7CisgICAgZGVsZXRlIG1fYWRkU3RhdGVtZW50OworICAgIG1fYWRkU3RhdGVtZW50ID0g
MDsKKyAgICBkZWxldGUgbV91cGRhdGVTdGF0ZW1lbnQ7CisgICAgbV91cGRhdGVTdGF0ZW1lbnQg
PSAwOworICAgIGRlbGV0ZSBtX2NvbnRhaW5zU3RhdGVtZW50OworICAgIG1fY29udGFpbnNTdGF0
ZW1lbnQgPSAwOworICAgIGRlbGV0ZSBtX2dldFN0YXRlbWVudDsKKyAgICBtX2dldFN0YXRlbWVu
dCA9IDA7CisKKyAgICBpZiAobV9kYXRhYmFzZS5pc09wZW4oKSkKKyAgICAgICAgbV9kYXRhYmFz
ZS5jbG9zZSgpOworfQorCitib29sIEF1dG9maWxsQmFja2luZ1N0b3JlOjphZGQoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGlmIChuYW1lLmlzRW1wdHko
KSB8fCB2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFTU0VS
VChtX2RhdGFiYXNlLmlzT3BlbigpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZS50YWJsZUV4aXN0
cygiYXV0b2ZpbGwiKSk7CisKKyAgICBpZiAoY29udGFpbnMobmFtZSwgdmFsdWUpKQorICAgICAg
ICByZXR1cm4gdXBkYXRlKG5hbWUsIHZhbHVlKTsKKworICAgIGlmICghbV9hZGRTdGF0ZW1lbnQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fYWRkU3RhdGVtZW50LT5iaW5kVGV4dCgx
LCBuYW1lKTsKKyAgICBtX2FkZFN0YXRlbWVudC0+YmluZFRleHQoMiwgdmFsdWUpOworCisgICAg
aW50IHJlc3VsdCA9IG1fYWRkU3RhdGVtZW50LT5zdGVwKCk7CisgICAgbV9hZGRTdGF0ZW1lbnQt
PnJlc2V0KCk7CisgICAgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUocmVzdWx0ICE9IFNRTFJlc3Vs
dERvbmUsIGZhbHNlLAorICAgICAgICAiRmFpbGVkIHRvIGFkZCBhdXRvZmlsbCBpdGVtIGludG8g
dGFibGUgYXV0b2ZpbGwgLSAlaSIsIHJlc3VsdCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBBdXRvZmlsbEJhY2tpbmdTdG9yZTo6dXBkYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAoIW1fdXBkYXRlU3RhdGVtZW50KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3VwZGF0ZVN0YXRlbWVudC0+YmluZFRleHQoMSwgbmFt
ZSk7CisgICAgbV91cGRhdGVTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIHZhbHVlKTsKKyAgICBtX3Vw
ZGF0ZVN0YXRlbWVudC0+YmluZFRleHQoMywgbmFtZSk7CisgICAgbV91cGRhdGVTdGF0ZW1lbnQt
PmJpbmRUZXh0KDQsIHZhbHVlKTsKKworICAgIGludCByZXN1bHQgPSBtX3VwZGF0ZVN0YXRlbWVu
dC0+c3RlcCgpOworICAgIG1fdXBkYXRlU3RhdGVtZW50LT5yZXNldCgpOworICAgIEhBTkRMRV9T
UUxfRVhFQ19GQUlMVVJFKHJlc3VsdCAhPSBTUUxSZXN1bHREb25lLCBmYWxzZSwKKyAgICAgICAg
IkZhaWxlZCB0byB1cGRhdGUgYXV0b2ZpbGwgaXRlbSBpbiB0YWJsZSBhdXRvZmlsbCAtICVpIiwg
cmVzdWx0KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEF1dG9maWxsQmFja2luZ1N0
b3JlOjpjb250YWlucyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNv
bnN0Cit7CisgICAgaWYgKCFtX2NvbnRhaW5zU3RhdGVtZW50KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBtX2NvbnRhaW5zU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBuYW1lKTsKKyAgICBt
X2NvbnRhaW5zU3RhdGVtZW50LT5iaW5kVGV4dCgyLCB2YWx1ZSk7CisKKyAgICBpbnQgcmVzdWx0
ID0gbV9jb250YWluc1N0YXRlbWVudC0+c3RlcCgpOworICAgIGludCBudW1iZXJPZlJvd3MgPSBt
X2NvbnRhaW5zU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CisgICAgbV9jb250YWluc1N0YXRl
bWVudC0+cmVzZXQoKTsKKyAgICBIQU5ETEVfU1FMX0VYRUNfRkFJTFVSRShyZXN1bHQgIT0gU1FM
UmVzdWx0Um93LCBmYWxzZSwKKyAgICAgICAgIkZhaWxlZCB0byBleGVjdXRlIHNlbGVjdCBhdXRv
ZmlsbCBpdGVtIGZyb20gdGFibGUgYXV0b2ZpbGwgaW4gY29udGFpbnMgLSAlaSIsIHJlc3VsdCk7
CisKKyAgICByZXR1cm4gbnVtYmVyT2ZSb3dzOworfQorCitWZWN0b3I8U3RyaW5nPiBBdXRvZmls
bEJhY2tpbmdTdG9yZTo6Z2V0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZUhpbnQpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOworICAgIEFT
U0VSVChtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJhdXRvZmlsbCIpKTsKKworICAgIFZlY3RvcjxT
dHJpbmc+IGNhbmRpZGF0ZXM7CisgICAgaWYgKG5hbWUuaXNFbXB0eSgpIHx8IHZhbHVlSGludC5p
c0VtcHR5KCkgfHwgIW1fZ2V0U3RhdGVtZW50KQorICAgICAgICByZXR1cm4gY2FuZGlkYXRlczsK
KworICAgIFN0cmluZyB2YWx1ZSA9IHZhbHVlSGludCArICIlIjsKKyAgICBtX2dldFN0YXRlbWVu
dC0+YmluZFRleHQoMSwgbmFtZSk7CisgICAgbV9nZXRTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIHZh
bHVlKTsKKworICAgIGludCByZXN1bHQ7CisgICAgd2hpbGUgKChyZXN1bHQgPSBtX2dldFN0YXRl
bWVudC0+c3RlcCgpKSA9PSBTUUxSZXN1bHRSb3cpCisgICAgICAgIGNhbmRpZGF0ZXMuYXBwZW5k
KG1fZ2V0U3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDApKTsKKyAgICBtX2dldFN0YXRlbWVudC0+
cmVzZXQoKTsKKyAgICBIQU5ETEVfU1FMX0VYRUNfRkFJTFVSRShyZXN1bHQgIT0gU1FMUmVzdWx0
RG9uZSwgY2FuZGlkYXRlcywKKyAgICAgICAgIkZhaWxlZCB0byBleGVjdXRlIHNlbGVjdCBhdXRv
ZmlsbCBpdGVtIGZyb20gdGFibGUgYXV0b2ZpbGwgaW4gZ2V0IC0gJWkiLCByZXN1bHQpOworCisg
ICAgcmV0dXJuIGNhbmRpZGF0ZXM7Cit9CisKKworYm9vbCBBdXRvZmlsbEJhY2tpbmdTdG9yZTo6
Y2xlYXIoKQoreworICAgIEFTU0VSVChtX2RhdGFiYXNlLmlzT3BlbigpKTsKKyAgICBBU1NFUlQo
bV9kYXRhYmFzZS50YWJsZUV4aXN0cygiYXV0b2ZpbGwiKSk7CisKKyAgICBIQU5ETEVfU1FMX0VY
RUNfRkFJTFVSRSghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiREVMRVRFIEZST00gYXV0b2Zp
bGwiKSwKKyAgICAgICAgZmFsc2UsICJGYWlsZWQgdG8gY2xlYXIgdGFibGUgYXV0b2ZpbGwiKTsK
KworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQXV0b2ZpbGxC
YWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJy
eS9BdXRvZmlsbEJhY2tpbmdTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiODVjZGQyNTEyNjhlZjgxMzJj
NjdhMzg4ODUyYjllODExZGM4YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQXV0b2ZpbGxCYWNraW5nU3RvcmUuaApAQCAtMCww
ICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5k
ZWYgQXV0b2ZpbGxCYWNraW5nU3RvcmVfaAorI2RlZmluZSBBdXRvZmlsbEJhY2tpbmdTdG9yZV9o
CisKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEF1dG9maWxsQmFja2luZ1N0b3JlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgQXV0b2Zp
bGxCYWNraW5nU3RvcmUqIGluc3RhbmNlKCk7CisgICAgfkF1dG9maWxsQmFja2luZ1N0b3JlKCk7
CisgICAgYm9vbCBvcGVuKGNvbnN0IFN0cmluZyYgZGJQYXRoKTsKKyAgICB2b2lkIGNsb3NlKCk7
CisgICAgYm9vbCBhZGQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsK
KyAgICBWZWN0b3I8U3RyaW5nPiBnZXQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlSGludCkgY29uc3Q7CisgICAgYm9vbCBjbGVhcigpOworCitwcml2YXRlOgorICAgIEF1
dG9maWxsQmFja2luZ1N0b3JlKCk7CisgICAgYm9vbCB1cGRhdGUoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3Q7CisKKyAgICBTUUxpdGVEYXRhYmFzZSBt
X2RhdGFiYXNlOworICAgIFNRTGl0ZVN0YXRlbWVudCogbV9hZGRTdGF0ZW1lbnQ7CisgICAgU1FM
aXRlU3RhdGVtZW50KiBtX3VwZGF0ZVN0YXRlbWVudDsKKyAgICBTUUxpdGVTdGF0ZW1lbnQqIG1f
Y29udGFpbnNTdGF0ZW1lbnQ7CisgICAgU1FMaXRlU3RhdGVtZW50KiBtX2dldFN0YXRlbWVudDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEF1dG9maWxsQmFja2lu
Z1N0b3JlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140421</attachid>
            <date>2012-05-06 03:22:07 -0700</date>
            <delta_ts>2012-05-06 16:53:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85575-20120506182204.patch</filename>
            <type>text/plain</type>
            <size>22379</size>
            <attacher name="Jonathan Dong">jonathan.dong.webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjdlMjEyYjhjNjUxMDdh
YTI0ZTUxN2IwNGYyNGM5ZDkyODg0YTU1ZC4uMWQ1MmFlNTA4YzIwYTRmMzYyZmY2OTE3MzJmOTk3
MTI4NWZmMGE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA1LTA2ICBKb25h
dGhhbiBEb25nICA8am9uYXRoYW4uZG9uZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAg
W0JsYWNrQmVycnldIEF1dG9maWxsIGJhY2tpbmcgc3RvcmUgaW1wbGVtZW50YXRpb24gdXBzdHJl
YW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NTc1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50ZWQgY2xhc3MgQXV0b2ZpbGxCYWNraW5nU3RvcmUgd2hpY2ggaXMgcmVzcG9uc2libGUKKyAg
ICAgICAgZm9yIGhhbmRsaW5nIGludGVyYWN0aW9uIHdpdGggYXV0b2ZpbGwgZGF0YWJhc2UuCisK
KyAgICAgICAgUmVwbGFjZWQgc3RhdGljIGZ1bmN0aW9uCisgICAgICAgIENyZWRlbnRpYWxCYWNr
aW5nU3RvcmUqIENyZWRlbnRpYWxCYWNraW5nU3RvcmU6Omluc3RhbmNlKCkKKyAgICAgICAgd2l0
aCBhIGhlbHBlciBmdW5jdGlvbgorICAgICAgICBDcmVkZW50aWFsQmFja2luZ1N0b3JlJiBjcmVk
ZW50aWFsQmFja2luZ1N0b3JlKCksCisgICAgICAgIGFuZCB1c2VkIERFRklORV9TVEFUSUNfTE9D
QUwgdG8gY29uc3RydWN0IHRoZSBzaW5nbGV0b24KKyAgICAgICAgb2JqZWN0LgorICAgICAgICBB
bHNvIHJlbW92ZWQgdW5uZWNlc3NhcnkgZnVuY3Rpb24gY2xvc2UoKSBhbmQgY29tYmluZWQgd2l0
aAorICAgICAgICB0aGUgZGVzdHJ1Y3RvciBvZiBjbGFzcyBDcmVkZW50aWFsQmFja2luZ1N0b3Jl
LgorCisgICAgICAgIEluaXRpYWwgdXBzdHJlYW0sIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAq
IFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Js
YWNrYmVycnkvQXV0b2ZpbGxCYWNraW5nU3RvcmUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6YXV0b2ZpbGxCYWNraW5nU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6QXV0b2ZpbGxCYWNraW5nU3RvcmU6OkF1dG9maWxsQmFja2luZ1N0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1dG9maWxsQmFja2luZ1N0b3JlOjp+QXV0b2ZpbGxCYWNraW5nU3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6QXV0b2ZpbGxCYWNraW5nU3RvcmU6Om9wZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6QXV0b2ZpbGxCYWNraW5nU3RvcmU6OmFkZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdXRvZmlsbEJhY2tpbmdTdG9yZTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
dG9maWxsQmFja2luZ1N0b3JlOjpjb250YWlucyk6CisgICAgICAgIChXZWJDb3JlOjpBdXRvZmls
bEJhY2tpbmdTdG9yZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsQmFja2luZ1N0
b3JlOjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0F1dG9m
aWxsQmFja2luZ1N0b3JlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChB
dXRvZmlsbEJhY2tpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ibGFja2Jl
cnJ5L0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlZGVu
dGlhbEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0
b3JlOjp+Q3JlZGVudGlhbEJhY2tpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKENyZWRlbnRp
YWxCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxTdG9yYWdlQmxhY2tCZXJyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdl
KToKKwogMjAxMi0wNS0wNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExNjIyMS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IGZkM2FlZTA1MTVhNjE5NDg4ZDBhMDgxMzQzZTZiZjI3
NTRjM2MzODAuLmMwMjAyZTRkOWVjY2QwMjUxNmI2YTc4NzgyNGMxZGQzOTVmYTE0ZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA1LTA2ICBK
b25hdGhhbiBEb25nICA8am9uYXRoYW4uZG9uZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAg
ICAgW0JsYWNrQmVycnldIEF1dG9maWxsIGJhY2tpbmcgc3RvcmUgaW1wbGVtZW50YXRpb24gdXBz
dHJlYW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1
NTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVw
bGFjZWQgY2FsbGluZyBzdGF0aWMgZnVuY3Rpb24gQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6aW5z
dGFuY2UoKQorICAgICAgICB3aXRoIGNhbGxpbmcgdGhlIGhlbHBlciBmdW5jdGlvbiBjcmVkZW50
aWFsQmFja2luZ1N0b3JlKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFs
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsTWFuYWdlcjo6YXV0b2Zp
bGxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFs
TWFuYWdlcjo6YXV0b2ZpbGxQYXNzd29yZEZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRl
bnRpYWxNYW5hZ2VyOjpzYXZlQ3JlZGVudGlhbElmQ29uZmlybWVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNyZWRlbnRpYWxNYW5hZ2VyOjpjbGVhckNyZWRlbnRpYWxzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNyZWRlbnRpYWxNYW5hZ2VyOjpjbGVhck5ldmVyUmVtZW1iZXJTaXRlcyk6CisKIDIwMTIt
MDUtMDQgIEFuZHJldyBMbyAgPGFubG9AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tiZXJyeV0g
SW1wbGVtZW50IG92ZXItc2Nyb2xsIGJhY2tncm91bmQgaW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtQmxhY2tCZXJyeS5jbWFrZQppbmRleCBjNDJkNmMwZGMzNzQ1MTAyNDcxMjU1OWI2NTk3ZmZl
MTRiN2IzOTY0Li4wNmExNmM1ZDM1N2RmNTI4MDg1Mjk4NWNhNDBjMzNlODU5MzhjNzRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC05MCw2ICs5MCw3IEBAIExJ
U1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZpbmcuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9Qcm94eVNlcnZlci5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQXV0b2Zp
bGxCYWNraW5nU3RvcmUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0RlZmVy
cmVkRGF0YS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya01hbmFnZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQXV0
b2ZpbGxCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9i
bGFja2JlcnJ5L0F1dG9maWxsQmFja2luZ1N0b3JlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTJhYzFkMWMx
Y2MzODM0ZGYxZjM2Njk0MDc2MmEyZTI3ZTU0NDBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0F1dG9maWxsQmFja2luZ1N0b3Jl
LmNwcApAQCAtMCwwICsxLDE5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJBdXRvZmlsbEJhY2tpbmdT
dG9yZS5oIgorCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIlNRTGl0ZVN0YXRl
bWVudC5oIgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUNsaWVudC5oPgorCisjZGVmaW5l
IEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKHN0YXRlbWVudCwgcmV0dXJuVmFsdWUsIC4uLikgXAor
ICAgIGlmIChzdGF0ZW1lbnQpIHsgXAorICAgICAgICBMT0dfRVJST1IoX19WQV9BUkdTX18pOyBc
CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsgXAorICAgIH0KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitBdXRvZmlsbEJhY2tpbmdTdG9yZSYgYXV0b2ZpbGxCYWNraW5nU3RvcmUoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXV0b2ZpbGxCYWNraW5nU3RvcmUsIGJhY2tpbmdTdG9y
ZSwgKCkpOworICAgIGlmICghYmFja2luZ1N0b3JlLm1fZGF0YWJhc2UuaXNPcGVuKCkpCisgICAg
ICAgIGJhY2tpbmdTdG9yZS5vcGVuKHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6Q2xpZW50OjpnZXQoKS0+Z2V0QXBwbGljYXRpb25EYXRhRGlyZWN0b3J5KCku
Y19zdHIoKSwgIi9hdXRvZmlsbC5kYiIpKTsKKyAgICByZXR1cm4gYmFja2luZ1N0b3JlOworfQor
CitBdXRvZmlsbEJhY2tpbmdTdG9yZTo6QXV0b2ZpbGxCYWNraW5nU3RvcmUoKQorICAgIDogbV9h
ZGRTdGF0ZW1lbnQoMCkKKyAgICAsIG1fdXBkYXRlU3RhdGVtZW50KDApCisgICAgLCBtX2NvbnRh
aW5zU3RhdGVtZW50KDApCisgICAgLCBtX2dldFN0YXRlbWVudCgwKQoreworfQorCitBdXRvZmls
bEJhY2tpbmdTdG9yZTo6fkF1dG9maWxsQmFja2luZ1N0b3JlKCkKK3sKKyAgICBkZWxldGUgbV9h
ZGRTdGF0ZW1lbnQ7CisgICAgbV9hZGRTdGF0ZW1lbnQgPSAwOworICAgIGRlbGV0ZSBtX3VwZGF0
ZVN0YXRlbWVudDsKKyAgICBtX3VwZGF0ZVN0YXRlbWVudCA9IDA7CisgICAgZGVsZXRlIG1fY29u
dGFpbnNTdGF0ZW1lbnQ7CisgICAgbV9jb250YWluc1N0YXRlbWVudCA9IDA7CisgICAgZGVsZXRl
IG1fZ2V0U3RhdGVtZW50OworICAgIG1fZ2V0U3RhdGVtZW50ID0gMDsKKworICAgIGlmIChtX2Rh
dGFiYXNlLmlzT3BlbigpKQorICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7Cit9CisKK2Jvb2wg
QXV0b2ZpbGxCYWNraW5nU3RvcmU6Om9wZW4oY29uc3QgU3RyaW5nJiBkYlBhdGgpCit7CisgICAg
QVNTRVJUKCFtX2RhdGFiYXNlLmlzT3BlbigpKTsKKworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlM
VVJFKCFtX2RhdGFiYXNlLm9wZW4oZGJQYXRoKSwgZmFsc2UsCisgICAgICAgICJGYWlsZWQgdG8g
b3BlbiBkYXRhYmFzZSBmaWxlICVzIGZvciBhdXRvZmlsbCBkYXRhYmFzZSIsIGRiUGF0aC51dGY4
KCkuZGF0YSgpKTsKKworICAgIGlmICghbV9kYXRhYmFzZS50YWJsZUV4aXN0cygiYXV0b2ZpbGwi
KSkgeworICAgICAgICBIQU5ETEVfU1FMX0VYRUNfRkFJTFVSRSghbV9kYXRhYmFzZS5leGVjdXRl
Q29tbWFuZCgiQ1JFQVRFIFRBQkxFIGF1dG9maWxsIChpZCBJTlRFR0VSIFBSSU1BUlkgS0VZLCBu
YW1lIFZBUkNIQVIgTk9UIE5VTEwsIHZhbHVlIFZBUkNIQVIgTk9UIE5VTEwsIGNvdW50IElOVEVH
RVIgREVGQVVMVCAxKSIpLAorICAgICAgICAgICAgZmFsc2UsICJGYWlsZWQgdG8gY3JlYXRlIHRh
YmxlIGF1dG9maWxsIGZvciBhdXRvZmlsbCBkYXRhYmFzZSIpOworCisgICAgICAgIC8vIENyZWF0
ZSBpbmRleCBmb3IgdGFibGUgYXV0b2ZpbGwuCisgICAgICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlM
VVJFKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgSU5ERVggYXV0b2ZpbGxfbmFt
ZSBPTiBhdXRvZmlsbCAobmFtZSkiKSwKKyAgICAgICAgICAgIGZhbHNlLCAiRmFpbGVkIHRvIGNy
ZWF0ZSBhdXRvZmlsbF9uYW1lIGluZGV4IGZvciB0YWJsZSBhdXRvZmlsbCIpOworICAgIH0KKwor
ICAgIC8vIFByZXBhcmUgdGhlIHN0YXRlbWVudHMuCisgICAgbV9hZGRTdGF0ZW1lbnQgPSBuZXcg
U1FMaXRlU3RhdGVtZW50KG1fZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBhdXRvZmlsbCAobmFtZSwg
dmFsdWUpIFZBTFVFUyAoPywgPykiKTsKKyAgICBIQU5ETEVfU1FMX0VYRUNfRkFJTFVSRShtX2Fk
ZFN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rLAorICAgICAgICBmYWxzZSwgIkZh
aWxlZCB0byBwcmVwYXJlIGFkZCBzdGF0ZW1lbnQiKTsKKworICAgIG1fdXBkYXRlU3RhdGVtZW50
ID0gbmV3IFNRTGl0ZVN0YXRlbWVudChtX2RhdGFiYXNlLCAiVVBEQVRFIGF1dG9maWxsIFNFVCBj
b3VudCA9IChTRUxFQ1QgY291bnQgKyAxIGZyb20gYXV0b2ZpbGwgV0hFUkUgbmFtZSA9ID8gQU5E
IHZhbHVlID0gPykgV0hFUkUgbmFtZSA9ID8gQU5EIHZhbHVlID0gPyIpOworICAgIEhBTkRMRV9T
UUxfRVhFQ19GQUlMVVJFKG1fdXBkYXRlU3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0
T2ssCisgICAgICAgIGZhbHNlLCAiRmFpbGVkIHRvIHByZXBhcmUgdXBkYXRlIHN0YXRlbWVudCIp
OworCisgICAgbV9jb250YWluc1N0YXRlbWVudCA9IG5ldyBTUUxpdGVTdGF0ZW1lbnQobV9kYXRh
YmFzZSwgIlNFTEVDVCBDT1VOVCgqKSBGUk9NIGF1dG9maWxsIFdIRVJFIG5hbWUgPSA/IEFORCB2
YWx1ZSA9ID8iKTsKKyAgICBIQU5ETEVfU1FMX0VYRUNfRkFJTFVSRShtX2NvbnRhaW5zU3RhdGVt
ZW50LT5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2ssCisgICAgICAgIGZhbHNlLCAiRmFpbGVkIHRv
IHByZXBhcmUgY29udGFpbnMgc3RhdGVtZW50Iik7CisKKyAgICBtX2dldFN0YXRlbWVudCA9IG5l
dyBTUUxpdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCB2YWx1ZSBGUk9NIGF1dG9maWxs
IFdIRVJFIG5hbWUgPSA/IGFuZCB2YWx1ZSBsaWtlID8gT1JERVIgQlkgY291bnQgREVTQyIpOwor
ICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKG1fZ2V0U3RhdGVtZW50LT5wcmVwYXJlKCkgIT0g
U1FMUmVzdWx0T2ssCisgICAgICAgIGZhbHNlLCAiRmFpbGVkIHRvIHByZXBhcmUgZ2V0IHN0YXRl
bWVudCIpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQXV0b2ZpbGxCYWNraW5nU3Rv
cmU6OmFkZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAg
aWYgKG5hbWUuaXNFbXB0eSgpIHx8IHZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOworICAgIEFTU0VSVChtX2Rh
dGFiYXNlLnRhYmxlRXhpc3RzKCJhdXRvZmlsbCIpKTsKKworICAgIGlmIChjb250YWlucyhuYW1l
LCB2YWx1ZSkpCisgICAgICAgIHJldHVybiB1cGRhdGUobmFtZSwgdmFsdWUpOworCisgICAgaWYg
KCFtX2FkZFN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9hZGRTdGF0
ZW1lbnQtPmJpbmRUZXh0KDEsIG5hbWUpOworICAgIG1fYWRkU3RhdGVtZW50LT5iaW5kVGV4dCgy
LCB2YWx1ZSk7CisKKyAgICBpbnQgcmVzdWx0ID0gbV9hZGRTdGF0ZW1lbnQtPnN0ZXAoKTsKKyAg
ICBtX2FkZFN0YXRlbWVudC0+cmVzZXQoKTsKKyAgICBIQU5ETEVfU1FMX0VYRUNfRkFJTFVSRShy
ZXN1bHQgIT0gU1FMUmVzdWx0RG9uZSwgZmFsc2UsCisgICAgICAgICJGYWlsZWQgdG8gYWRkIGF1
dG9maWxsIGl0ZW0gaW50byB0YWJsZSBhdXRvZmlsbCAtICVpIiwgcmVzdWx0KTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIEF1dG9maWxsQmFja2luZ1N0b3JlOjp1cGRhdGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGlmICghbV91cGRhdGVT
dGF0ZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fdXBkYXRlU3RhdGVtZW50
LT5iaW5kVGV4dCgxLCBuYW1lKTsKKyAgICBtX3VwZGF0ZVN0YXRlbWVudC0+YmluZFRleHQoMiwg
dmFsdWUpOworICAgIG1fdXBkYXRlU3RhdGVtZW50LT5iaW5kVGV4dCgzLCBuYW1lKTsKKyAgICBt
X3VwZGF0ZVN0YXRlbWVudC0+YmluZFRleHQoNCwgdmFsdWUpOworCisgICAgaW50IHJlc3VsdCA9
IG1fdXBkYXRlU3RhdGVtZW50LT5zdGVwKCk7CisgICAgbV91cGRhdGVTdGF0ZW1lbnQtPnJlc2V0
KCk7CisgICAgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUocmVzdWx0ICE9IFNRTFJlc3VsdERvbmUs
IGZhbHNlLAorICAgICAgICAiRmFpbGVkIHRvIHVwZGF0ZSBhdXRvZmlsbCBpdGVtIGluIHRhYmxl
IGF1dG9maWxsIC0gJWkiLCByZXN1bHQpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
QXV0b2ZpbGxCYWNraW5nU3RvcmU6OmNvbnRhaW5zKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fY29udGFpbnNTdGF0ZW1lbnQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fY29udGFpbnNTdGF0ZW1lbnQtPmJpbmRUZXh0
KDEsIG5hbWUpOworICAgIG1fY29udGFpbnNTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIHZhbHVlKTsK
KworICAgIGludCByZXN1bHQgPSBtX2NvbnRhaW5zU3RhdGVtZW50LT5zdGVwKCk7CisgICAgaW50
IG51bWJlck9mUm93cyA9IG1fY29udGFpbnNTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKKyAg
ICBtX2NvbnRhaW5zU3RhdGVtZW50LT5yZXNldCgpOworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlM
VVJFKHJlc3VsdCAhPSBTUUxSZXN1bHRSb3csIGZhbHNlLAorICAgICAgICAiRmFpbGVkIHRvIGV4
ZWN1dGUgc2VsZWN0IGF1dG9maWxsIGl0ZW0gZnJvbSB0YWJsZSBhdXRvZmlsbCBpbiBjb250YWlu
cyAtICVpIiwgcmVzdWx0KTsKKworICAgIHJldHVybiBudW1iZXJPZlJvd3M7Cit9CisKK1ZlY3Rv
cjxTdHJpbmc+IEF1dG9maWxsQmFja2luZ1N0b3JlOjpnZXQoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHZhbHVlSGludCkKK3sKKyAgICBBU1NFUlQobV9kYXRhYmFzZS5pc09wZW4o
KSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UudGFibGVFeGlzdHMoImF1dG9maWxsIikpOworCisg
ICAgVmVjdG9yPFN0cmluZz4gY2FuZGlkYXRlczsKKyAgICBpZiAobmFtZS5pc0VtcHR5KCkgfHwg
dmFsdWVIaW50LmlzRW1wdHkoKSB8fCAhbV9nZXRTdGF0ZW1lbnQpCisgICAgICAgIHJldHVybiBj
YW5kaWRhdGVzOworCisgICAgU3RyaW5nIHZhbHVlID0gdmFsdWVIaW50ICsgIiUiOworICAgIG1f
Z2V0U3RhdGVtZW50LT5iaW5kVGV4dCgxLCBuYW1lKTsKKyAgICBtX2dldFN0YXRlbWVudC0+Ymlu
ZFRleHQoMiwgdmFsdWUpOworCisgICAgaW50IHJlc3VsdDsKKyAgICB3aGlsZSAoKHJlc3VsdCA9
IG1fZ2V0U3RhdGVtZW50LT5zdGVwKCkpID09IFNRTFJlc3VsdFJvdykKKyAgICAgICAgY2FuZGlk
YXRlcy5hcHBlbmQobV9nZXRTdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMCkpOworICAgIG1fZ2V0
U3RhdGVtZW50LT5yZXNldCgpOworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKHJlc3VsdCAh
PSBTUUxSZXN1bHREb25lLCBjYW5kaWRhdGVzLAorICAgICAgICAiRmFpbGVkIHRvIGV4ZWN1dGUg
c2VsZWN0IGF1dG9maWxsIGl0ZW0gZnJvbSB0YWJsZSBhdXRvZmlsbCBpbiBnZXQgLSAlaSIsIHJl
c3VsdCk7CisKKyAgICByZXR1cm4gY2FuZGlkYXRlczsKK30KKworCitib29sIEF1dG9maWxsQmFj
a2luZ1N0b3JlOjpjbGVhcigpCit7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOwor
ICAgIEFTU0VSVChtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJhdXRvZmlsbCIpKTsKKworICAgIEhB
TkRMRV9TUUxfRVhFQ19GQUlMVVJFKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJERUxFVEUg
RlJPTSBhdXRvZmlsbCIpLAorICAgICAgICBmYWxzZSwgIkZhaWxlZCB0byBjbGVhciB0YWJsZSBh
dXRvZmlsbCIpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJy
eS9BdXRvZmlsbEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ibGFja2JlcnJ5L0F1dG9maWxsQmFja2luZ1N0b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzllMzU2NjBl
OWFjNTVkZmI3N2I4NTY3MGQ2YTM3MjQ0NDBlNGFhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9BdXRvZmlsbEJhY2tpbmdTdG9y
ZS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisg
Ki8KKworI2lmbmRlZiBBdXRvZmlsbEJhY2tpbmdTdG9yZV9oCisjZGVmaW5lIEF1dG9maWxsQmFj
a2luZ1N0b3JlX2gKKworI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQXV0b2ZpbGxCYWNraW5nU3RvcmUgeworcHVibGljOgorICAgIGZy
aWVuZCBBdXRvZmlsbEJhY2tpbmdTdG9yZSYgYXV0b2ZpbGxCYWNraW5nU3RvcmUoKTsKKworICAg
IH5BdXRvZmlsbEJhY2tpbmdTdG9yZSgpOworICAgIGJvb2wgb3Blbihjb25zdCBTdHJpbmcmIGRi
UGF0aCk7CisgICAgYm9vbCBhZGQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZh
bHVlKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBnZXQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlSGludCk7CisgICAgYm9vbCBjbGVhcigpOworCitwcml2YXRlOgorICAgIEF1
dG9maWxsQmFja2luZ1N0b3JlKCk7CisgICAgYm9vbCB1cGRhdGUoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3Q7CisKKyAgICBTUUxpdGVEYXRhYmFzZSBt
X2RhdGFiYXNlOworICAgIFNRTGl0ZVN0YXRlbWVudCogbV9hZGRTdGF0ZW1lbnQ7CisgICAgU1FM
aXRlU3RhdGVtZW50KiBtX3VwZGF0ZVN0YXRlbWVudDsKKyAgICBTUUxpdGVTdGF0ZW1lbnQqIG1f
Y29udGFpbnNTdGF0ZW1lbnQ7CisgICAgU1FMaXRlU3RhdGVtZW50KiBtX2dldFN0YXRlbWVudDsK
K307CisKK0F1dG9maWxsQmFja2luZ1N0b3JlJiBhdXRvZmlsbEJhY2tpbmdTdG9yZSgpOworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBBdXRvZmlsbEJhY2tpbmdTdG9yZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkv
Q3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2JsYWNrYmVycnkvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYWI5YTg5MmY2
ZTE2NTExMWIxN2Y4OTkzMDM3ZjEzYTViZTM3ZDkwNy4uNDJhZDkxZmNkYzdmMjcxOTIzMGU0Nzg5
ZWZhMTU1NTNkZjc1ZWIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9DcmVkZW50aWFsQmFja2luZ1N0b3Jl
LmNwcApAQCAtMzgsMTMgKzM4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3JlZGVu
dGlhbEJhY2tpbmdTdG9yZSogQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6aW5zdGFuY2UoKQorQ3Jl
ZGVudGlhbEJhY2tpbmdTdG9yZSYgY3JlZGVudGlhbEJhY2tpbmdTdG9yZSgpCiB7Ci0gICAgc3Rh
dGljIENyZWRlbnRpYWxCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IDA7Ci0gICAgaWYgKCFi
YWNraW5nU3RvcmUpIHsKLSAgICAgICAgYmFja2luZ1N0b3JlID0gbmV3IENyZWRlbnRpYWxCYWNr
aW5nU3RvcmU7Ci0gICAgICAgIGJhY2tpbmdTdG9yZS0+b3BlbihwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudDo6Z2V0KCktPmdldEFwcGxpY2F0aW9u
RGF0YURpcmVjdG9yeSgpLmNfc3RyKCksICIvY3JlZGVudGlhbHMuZGIiKSk7Ci0gICAgfQorICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQ3JlZGVudGlhbEJhY2tpbmdTdG9yZSwgYmFja2luZ1N0b3Jl
LCAoKSk7CisgICAgaWYgKCFiYWNraW5nU3RvcmUubV9kYXRhYmFzZS5pc09wZW4oKSkKKyAgICAg
ICAgYmFja2luZ1N0b3JlLm9wZW4ocGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpDbGllbnQ6OmdldCgpLT5nZXRBcHBsaWNhdGlvbkRhdGFEaXJlY3RvcnkoKS5j
X3N0cigpLCAiL2NyZWRlbnRpYWxzLmRiIikpOwogICAgIHJldHVybiBiYWNraW5nU3RvcmU7CiB9
CiAKQEAgLTY0LDYgKzYyLDI3IEBAIENyZWRlbnRpYWxCYWNraW5nU3RvcmU6OkNyZWRlbnRpYWxC
YWNraW5nU3RvcmUoKQogCiBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjp+Q3JlZGVudGlhbEJhY2tp
bmdTdG9yZSgpCiB7CisgICAgZGVsZXRlIG1fYWRkTG9naW5TdGF0ZW1lbnQ7CisgICAgbV9hZGRM
b2dpblN0YXRlbWVudCA9IDA7CisgICAgZGVsZXRlIG1fdXBkYXRlTG9naW5TdGF0ZW1lbnQ7Cisg
ICAgbV91cGRhdGVMb2dpblN0YXRlbWVudCA9IDA7CisgICAgZGVsZXRlIG1faGFzTG9naW5TdGF0
ZW1lbnQ7CisgICAgbV9oYXNMb2dpblN0YXRlbWVudCA9IDA7CisgICAgZGVsZXRlIG1fZ2V0TG9n
aW5TdGF0ZW1lbnQ7CisgICAgbV9nZXRMb2dpblN0YXRlbWVudCA9IDA7CisgICAgZGVsZXRlIG1f
Z2V0TG9naW5CeVVSTFN0YXRlbWVudDsKKyAgICBtX2dldExvZ2luQnlVUkxTdGF0ZW1lbnQgPSAw
OworICAgIGRlbGV0ZSBtX3JlbW92ZUxvZ2luU3RhdGVtZW50OworICAgIG1fcmVtb3ZlTG9naW5T
dGF0ZW1lbnQgPSAwOworICAgIGRlbGV0ZSBtX2FkZE5ldmVyUmVtZW1iZXJTdGF0ZW1lbnQ7Cisg
ICAgbV9hZGROZXZlclJlbWVtYmVyU3RhdGVtZW50ID0gMDsKKyAgICBkZWxldGUgbV9oYXNOZXZl
clJlbWVtYmVyU3RhdGVtZW50OworICAgIG1faGFzTmV2ZXJSZW1lbWJlclN0YXRlbWVudCA9IDA7
CisgICAgZGVsZXRlIG1fZ2V0TmV2ZXJSZW1lbWJlclN0YXRlbWVudDsKKyAgICBtX2dldE5ldmVy
UmVtZW1iZXJTdGF0ZW1lbnQgPSAwOworICAgIGRlbGV0ZSBtX3JlbW92ZU5ldmVyUmVtZW1iZXJT
dGF0ZW1lbnQ7CisgICAgbV9yZW1vdmVOZXZlclJlbWVtYmVyU3RhdGVtZW50ID0gMDsKKwogICAg
IGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CiB9
CkBAIC0xMzcsMzMgKzE1Niw2IEBAIGJvb2wgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6b3Blbihj
b25zdCBTdHJpbmcmIGRiUGF0aCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDcmVkZW50
aWFsQmFja2luZ1N0b3JlOjpjbG9zZSgpCi17Ci0gICAgZGVsZXRlIG1fYWRkTG9naW5TdGF0ZW1l
bnQ7Ci0gICAgbV9hZGRMb2dpblN0YXRlbWVudCA9IDA7Ci0gICAgZGVsZXRlIG1fdXBkYXRlTG9n
aW5TdGF0ZW1lbnQ7Ci0gICAgbV91cGRhdGVMb2dpblN0YXRlbWVudCA9IDA7Ci0gICAgZGVsZXRl
IG1faGFzTG9naW5TdGF0ZW1lbnQ7Ci0gICAgbV9oYXNMb2dpblN0YXRlbWVudCA9IDA7Ci0gICAg
ZGVsZXRlIG1fZ2V0TG9naW5TdGF0ZW1lbnQ7Ci0gICAgbV9nZXRMb2dpblN0YXRlbWVudCA9IDA7
Ci0gICAgZGVsZXRlIG1fZ2V0TG9naW5CeVVSTFN0YXRlbWVudDsKLSAgICBtX2dldExvZ2luQnlV
UkxTdGF0ZW1lbnQgPSAwOwotICAgIGRlbGV0ZSBtX3JlbW92ZUxvZ2luU3RhdGVtZW50OwotICAg
IG1fcmVtb3ZlTG9naW5TdGF0ZW1lbnQgPSAwOwotICAgIGRlbGV0ZSBtX2FkZE5ldmVyUmVtZW1i
ZXJTdGF0ZW1lbnQ7Ci0gICAgbV9hZGROZXZlclJlbWVtYmVyU3RhdGVtZW50ID0gMDsKLSAgICBk
ZWxldGUgbV9oYXNOZXZlclJlbWVtYmVyU3RhdGVtZW50OwotICAgIG1faGFzTmV2ZXJSZW1lbWJl
clN0YXRlbWVudCA9IDA7Ci0gICAgZGVsZXRlIG1fZ2V0TmV2ZXJSZW1lbWJlclN0YXRlbWVudDsK
LSAgICBtX2dldE5ldmVyUmVtZW1iZXJTdGF0ZW1lbnQgPSAwOwotICAgIGRlbGV0ZSBtX3JlbW92
ZU5ldmVyUmVtZW1iZXJTdGF0ZW1lbnQ7Ci0gICAgbV9yZW1vdmVOZXZlclJlbWVtYmVyU3RhdGVt
ZW50ID0gMDsKLQotICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQotICAgICAgICBtX2RhdGFi
YXNlLmNsb3NlKCk7Ci19Ci0KIGJvb2wgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6YWRkTG9naW4o
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwg
Y29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZS5p
c09wZW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Js
YWNrYmVycnkvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuaAppbmRleCBmYzEy
YzZiNjYwZmRkMWY5OTQ1OTJjZDY3NDhiMjY1NjI3YjllMDI4Li43Y2Q0OWUyMmNlNGFhYTRmZjFl
N2ZmNWY1MGViMGEzM2MzMTlkMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2JsYWNrYmVycnkvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9DcmVkZW50aWFsQmFja2luZ1N0
b3JlLmgKQEAgLTMxLDEwICszMSwxMCBAQCBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAKIGNsYXNz
IENyZWRlbnRpYWxCYWNraW5nU3RvcmUgewogcHVibGljOgotICAgIHN0YXRpYyBDcmVkZW50aWFs
QmFja2luZ1N0b3JlKiBpbnN0YW5jZSgpOworICAgIGZyaWVuZCBDcmVkZW50aWFsQmFja2luZ1N0
b3JlJiBjcmVkZW50aWFsQmFja2luZ1N0b3JlKCk7CisKICAgICB+Q3JlZGVudGlhbEJhY2tpbmdT
dG9yZSgpOwogICAgIGJvb2wgb3Blbihjb25zdCBTdHJpbmcmIGRiUGF0aCk7Ci0gICAgdm9pZCBj
bG9zZSgpOwogICAgIGJvb2wgYWRkTG9naW4oY29uc3QgS1VSTCYsIGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYsIGNvbnN0IENyZWRlbnRpYWwmKTsKICAgICBib29sIHVwZGF0ZUxvZ2luKGNvbnN0IEtV
UkwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBDcmVkZW50aWFsJik7CiAgICAgYm9v
bCBoYXNMb2dpbihjb25zdCBLVVJMJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CkBAIC02Niw2
ICs2Niw4IEBAIHByaXZhdGU6CiAgICAgU1FMaXRlU3RhdGVtZW50KiBtX3JlbW92ZU5ldmVyUmVt
ZW1iZXJTdGF0ZW1lbnQ7CiB9OwogCitDcmVkZW50aWFsQmFja2luZ1N0b3JlJiBjcmVkZW50aWFs
QmFja2luZ1N0b3JlKCk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShCTEFDS0JFUlJZX0NSRURFTlRJQUxfUEVSU0lTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9DcmVkZW50aWFsU3RvcmFnZUJsYWNr
QmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0Ny
ZWRlbnRpYWxTdG9yYWdlQmxhY2tCZXJyeS5jcHAKaW5kZXggNGVhNzgzZjljYTk5NjU1ZWFiYmU4
NWI1NmU5YWRkNGQ1YTZmMWRhMC4uZDYyMjMwNjMzNTYxMGFhNThmMjcxZDA5YjBmNGE0N2JmYWI1
ZWZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2Jl
cnJ5L0NyZWRlbnRpYWxTdG9yYWdlQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxTdG9yYWdlQmxhY2tCZXJyeS5j
cHAKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQ3JlZGVudGlhbCBDcmVk
ZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewogI2lmIEVOQUJMRShCTEFDS0JFUlJZX0NSRURFTlRJ
QUxfUEVSU0lTVCkKLSAgICByZXR1cm4gQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6aW5zdGFuY2Uo
KS0+Z2V0TG9naW4ocHJvdGVjdGlvblNwYWNlKTsKKyAgICByZXR1cm4gY3JlZGVudGlhbEJhY2tp
bmdTdG9yZSgpLmdldExvZ2luKHByb3RlY3Rpb25TcGFjZSk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShwcm90ZWN0aW9uU3BhY2UpOwogICAgIHJldHVybiBDcmVkZW50aWFsKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbE1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRl
bnRpYWxNYW5hZ2VyLmNwcAppbmRleCA1MGNlNjlmMWJlN2RmNjdmZjQ5MTY2YWJhYjM1NDRmMzIw
Y2ZmYWNiLi5lODA2MDg2MDdmOTM1ZmY4MDhmYjQ4NGZkZjUwZmVmMTkyZTBhMjQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbE1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9D
cmVkZW50aWFsTWFuYWdlci5jcHAKQEAgLTQzLDEwICs0MywxMCBAQCBDcmVkZW50aWFsTWFuYWdl
ciYgY3JlZGVudGlhbE1hbmFnZXIoKQogCiB2b2lkIENyZWRlbnRpYWxNYW5hZ2VyOjphdXRvZmls
bEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlv
blNwYWNlLCBXZWJTdHJpbmcmIHVzZXJuYW1lLCBXZWJTdHJpbmcmIHBhc3N3b3JkKQogewotICAg
IGlmIChDcmVkZW50aWFsQmFja2luZ1N0b3JlOjppbnN0YW5jZSgpLT5oYXNOZXZlclJlbWVtYmVy
KHByb3RlY3Rpb25TcGFjZSkpCisgICAgaWYgKGNyZWRlbnRpYWxCYWNraW5nU3RvcmUoKS5oYXNO
ZXZlclJlbWVtYmVyKHByb3RlY3Rpb25TcGFjZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENy
ZWRlbnRpYWwgc2F2ZWRDcmVkZW50aWFsID0gQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6aW5zdGFu
Y2UoKS0+Z2V0TG9naW4ocHJvdGVjdGlvblNwYWNlKTsKKyAgICBDcmVkZW50aWFsIHNhdmVkQ3Jl
ZGVudGlhbCA9IGNyZWRlbnRpYWxCYWNraW5nU3RvcmUoKS5nZXRMb2dpbihwcm90ZWN0aW9uU3Bh
Y2UpOwogICAgIHVzZXJuYW1lID0gc2F2ZWRDcmVkZW50aWFsLnVzZXIoKTsKICAgICBwYXNzd29y
ZCA9IHNhdmVkQ3JlZGVudGlhbC5wYXNzd29yZCgpOwogfQpAQCAtNjEsOSArNjEsOSBAQCB2b2lk
IENyZWRlbnRpYWxNYW5hZ2VyOjphdXRvZmlsbFBhc3N3b3JkRm9ybXMoUGFzc1JlZlB0cjxIVE1M
Q29sbGVjdGlvbj4gZG9jRm9ybQogICAgICAgICBOb2RlKiBub2RlID0gZm9ybXMtPml0ZW0oaSk7
CiAgICAgICAgIGlmIChub2RlICYmIG5vZGUtPmlzSFRNTEVsZW1lbnQoKSkgewogICAgICAgICAg
ICAgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEgZGF0YShzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1l
bnQqPihub2RlKSk7Ci0gICAgICAgICAgICBpZiAoIWRhdGEuaXNWYWxpZCgpIHx8ICFDcmVkZW50
aWFsQmFja2luZ1N0b3JlOjppbnN0YW5jZSgpLT5oYXNMb2dpbihkYXRhLnVybCgpLCBkYXRhLnBy
b3RlY3Rpb25TcGFjZSgpKSkKKyAgICAgICAgICAgIGlmICghZGF0YS5pc1ZhbGlkKCkgfHwgIWNy
ZWRlbnRpYWxCYWNraW5nU3RvcmUoKS5oYXNMb2dpbihkYXRhLnVybCgpLCBkYXRhLnByb3RlY3Rp
b25TcGFjZSgpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIENyZWRl
bnRpYWwgc2F2ZWRDcmVkZW50aWFsID0gQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6aW5zdGFuY2Uo
KS0+Z2V0TG9naW4oZGF0YS51cmwoKSk7CisgICAgICAgICAgICBDcmVkZW50aWFsIHNhdmVkQ3Jl
ZGVudGlhbCA9IGNyZWRlbnRpYWxCYWNraW5nU3RvcmUoKS5nZXRMb2dpbihkYXRhLnVybCgpKTsK
ICAgICAgICAgICAgIGRhdGEuc2V0Q3JlZGVudGlhbChzYXZlZENyZWRlbnRpYWwpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNzMsMzMgKzczLDMzIEBAIHZvaWQgQ3JlZGVudGlhbE1hbmFnZXI6OnNh
dmVDcmVkZW50aWFsSWZDb25maXJtZWQoUGFnZUNsaWVudEJsYWNrQmVycnkqIHBhZ2VDbGllCiB7
CiAgICAgQVNTRVJUKHBhZ2VDbGllbnQpOwogCi0gICAgaWYgKCFkYXRhLmlzVmFsaWQoKSB8fCBk
YXRhLmNyZWRlbnRpYWwoKS5pc0VtcHR5KCkgfHwgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6aW5z
dGFuY2UoKS0+aGFzTmV2ZXJSZW1lbWJlcihkYXRhLnByb3RlY3Rpb25TcGFjZSgpKSkKKyAgICBp
ZiAoIWRhdGEuaXNWYWxpZCgpIHx8IGRhdGEuY3JlZGVudGlhbCgpLmlzRW1wdHkoKSB8fCBjcmVk
ZW50aWFsQmFja2luZ1N0b3JlKCkuaGFzTmV2ZXJSZW1lbWJlcihkYXRhLnByb3RlY3Rpb25TcGFj
ZSgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3JlZGVudGlhbCBzYXZlZENyZWRlbnRpYWwg
PSBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjppbnN0YW5jZSgpLT5nZXRMb2dpbihkYXRhLnVybCgp
KTsKKyAgICBDcmVkZW50aWFsIHNhdmVkQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWxCYWNraW5nU3Rv
cmUoKS5nZXRMb2dpbihkYXRhLnVybCgpKTsKICAgICBpZiAoc2F2ZWRDcmVkZW50aWFsID09IGRh
dGEuY3JlZGVudGlhbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBQYWdlQ2xpZW50QmxhY2tC
ZXJyeTo6U2F2ZUNyZWRlbnRpYWxUeXBlIHR5cGUgPSBwYWdlQ2xpZW50LT5ub3RpZnlTaG91bGRT
YXZlQ3JlZGVudGlhbChzYXZlZENyZWRlbnRpYWwuaXNFbXB0eSgpKTsKICAgICBpZiAodHlwZSA9
PSBQYWdlQ2xpZW50QmxhY2tCZXJyeTo6U2F2ZUNyZWRlbnRpYWxZZXMpIHsKICAgICAgICAgaWYg
KHNhdmVkQ3JlZGVudGlhbC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBDcmVkZW50aWFsQmFja2lu
Z1N0b3JlOjppbnN0YW5jZSgpLT5hZGRMb2dpbihkYXRhLnVybCgpLCBkYXRhLnByb3RlY3Rpb25T
cGFjZSgpLCBkYXRhLmNyZWRlbnRpYWwoKSk7CisgICAgICAgICAgICBjcmVkZW50aWFsQmFja2lu
Z1N0b3JlKCkuYWRkTG9naW4oZGF0YS51cmwoKSwgZGF0YS5wcm90ZWN0aW9uU3BhY2UoKSwgZGF0
YS5jcmVkZW50aWFsKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBDcmVkZW50aWFsQmFj
a2luZ1N0b3JlOjppbnN0YW5jZSgpLT51cGRhdGVMb2dpbihkYXRhLnVybCgpLCBkYXRhLnByb3Rl
Y3Rpb25TcGFjZSgpLCBkYXRhLmNyZWRlbnRpYWwoKSk7CisgICAgICAgICAgICBjcmVkZW50aWFs
QmFja2luZ1N0b3JlKCkudXBkYXRlTG9naW4oZGF0YS51cmwoKSwgZGF0YS5wcm90ZWN0aW9uU3Bh
Y2UoKSwgZGF0YS5jcmVkZW50aWFsKCkpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSBQYWdlQ2xp
ZW50QmxhY2tCZXJyeTo6U2F2ZUNyZWRlbnRpYWxOZXZlckZvclRoaXNTaXRlKSB7Ci0gICAgICAg
IENyZWRlbnRpYWxCYWNraW5nU3RvcmU6Omluc3RhbmNlKCktPmFkZE5ldmVyUmVtZW1iZXIoZGF0
YS51cmwoKSwgZGF0YS5wcm90ZWN0aW9uU3BhY2UoKSk7Ci0gICAgICAgIENyZWRlbnRpYWxCYWNr
aW5nU3RvcmU6Omluc3RhbmNlKCktPnJlbW92ZUxvZ2luKGRhdGEudXJsKCksIGRhdGEucHJvdGVj
dGlvblNwYWNlKCkpOworICAgICAgICBjcmVkZW50aWFsQmFja2luZ1N0b3JlKCkuYWRkTmV2ZXJS
ZW1lbWJlcihkYXRhLnVybCgpLCBkYXRhLnByb3RlY3Rpb25TcGFjZSgpKTsKKyAgICAgICAgY3Jl
ZGVudGlhbEJhY2tpbmdTdG9yZSgpLnJlbW92ZUxvZ2luKGRhdGEudXJsKCksIGRhdGEucHJvdGVj
dGlvblNwYWNlKCkpOwogICAgIH0KIH0KIAogdm9pZCBDcmVkZW50aWFsTWFuYWdlcjo6Y2xlYXJD
cmVkZW50aWFscygpCiB7Ci0gICAgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6aW5zdGFuY2UoKS0+
Y2xlYXJMb2dpbnMoKTsKKyAgICBjcmVkZW50aWFsQmFja2luZ1N0b3JlKCkuY2xlYXJMb2dpbnMo
KTsKIH0KIAogdm9pZCBDcmVkZW50aWFsTWFuYWdlcjo6Y2xlYXJOZXZlclJlbWVtYmVyU2l0ZXMo
KQogewotICAgIENyZWRlbnRpYWxCYWNraW5nU3RvcmU6Omluc3RhbmNlKCktPmNsZWFyTmV2ZXJS
ZW1lbWJlcigpOworICAgIGNyZWRlbnRpYWxCYWNraW5nU3RvcmUoKS5jbGVhck5ldmVyUmVtZW1i
ZXIoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140445</attachid>
            <date>2012-05-06 16:53:57 -0700</date>
            <delta_ts>2012-05-06 18:50:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85575-20120507075353.patch</filename>
            <type>text/plain</type>
            <size>22478</size>
            <attacher name="Jonathan Dong">jonathan.dong.webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTVjNWU4MTkyNzgxNzQx
NTQwODg3OTU3MmI1NThjMWExN2YyYzU3NS4uOGQ0ZTE4NDY2MGM0YzM1MTg5NTg2ODEwNzJmY2Mz
ZjIwMThjNjQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA1LTA2ICBKb25h
dGhhbiBEb25nICA8am9uYXRoYW4uZG9uZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAg
W0JsYWNrQmVycnldIEF1dG9maWxsIGJhY2tpbmcgc3RvcmUgaW1wbGVtZW50YXRpb24gdXBzdHJl
YW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NTc1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUm9iIEJ1aXMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQg
Y2xhc3MgQXV0b2ZpbGxCYWNraW5nU3RvcmUgd2hpY2ggaXMgcmVzcG9uc2libGUKKyAgICAgICAg
Zm9yIGhhbmRsaW5nIGludGVyYWN0aW9uIHdpdGggYXV0b2ZpbGwgZGF0YWJhc2UuCisKKyAgICAg
ICAgUmVwbGFjZWQgc3RhdGljIGZ1bmN0aW9uCisgICAgICAgIENyZWRlbnRpYWxCYWNraW5nU3Rv
cmUqIENyZWRlbnRpYWxCYWNraW5nU3RvcmU6Omluc3RhbmNlKCkKKyAgICAgICAgd2l0aCBhIGhl
bHBlciBmdW5jdGlvbgorICAgICAgICBDcmVkZW50aWFsQmFja2luZ1N0b3JlJiBjcmVkZW50aWFs
QmFja2luZ1N0b3JlKCksCisgICAgICAgIGFuZCB1c2VkIERFRklORV9TVEFUSUNfTE9DQUwgdG8g
Y29uc3RydWN0IHRoZSBzaW5nbGV0b24KKyAgICAgICAgb2JqZWN0LgorICAgICAgICBBbHNvIHJl
bW92ZWQgdW5uZWNlc3NhcnkgZnVuY3Rpb24gY2xvc2UoKSBhbmQgY29tYmluZWQgd2l0aAorICAg
ICAgICB0aGUgZGVzdHJ1Y3RvciBvZiBjbGFzcyBDcmVkZW50aWFsQmFja2luZ1N0b3JlLgorCisg
ICAgICAgIEluaXRpYWwgdXBzdHJlYW0sIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIFBsYXRm
b3JtQmxhY2tCZXJyeS5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVy
cnkvQXV0b2ZpbGxCYWNraW5nU3RvcmUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6YXV0b2ZpbGxCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0b2ZpbGxCYWNraW5nU3RvcmU6OkF1dG9maWxsQmFja2luZ1N0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9maWxsQmFja2luZ1N0b3JlOjp+QXV0b2ZpbGxCYWNraW5nU3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXV0b2ZpbGxCYWNraW5nU3RvcmU6Om9wZW4pOgorICAgICAgICAo
V2ViQ29yZTo6QXV0b2ZpbGxCYWNraW5nU3RvcmU6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRvZmlsbEJhY2tpbmdTdG9yZTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxs
QmFja2luZ1N0b3JlOjpjb250YWlucyk6CisgICAgICAgIChXZWJDb3JlOjpBdXRvZmlsbEJhY2tp
bmdTdG9yZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsQmFja2luZ1N0b3JlOjpj
bGVhcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0F1dG9maWxsQmFj
a2luZ1N0b3JlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBdXRvZmls
bEJhY2tpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0Ny
ZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlZGVudGlhbEJh
Y2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3JlOjp+
Q3JlZGVudGlhbEJhY2tpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ibGFj
a2JlcnJ5L0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKENyZWRlbnRpYWxCYWNr
aW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxTdG9yYWdlQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKToKKwog
MjAxMi0wNS0wNiAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEtV
Ukw6OmlzQmxhbmtVUkwgd291bGQgYmUgYSBuaWNlciBpZGlvbSB0aGFuIEtVUkw6OnByb3RvY29s
SXMoImFib3V0IikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IDhhZjJhYjFmZjdi
MmI5YmRkNWRkYmFkZGI4ODM5YTM3MmYzOTk2ZTEuLjc1YjZjNDQ2ZDk1MzdhOWE2NTVlZjYzOGI2
ZWJlM2QxNjQ5YjEyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDIyIEBACiAyMDEyLTA1LTA2ICBKb25hdGhhbiBEb25nICA8am9uYXRoYW4uZG9uZ0B0b3JjaG1v
YmlsZS5jb20uY24+CiAKKyAgICAgICAgW0JsYWNrQmVycnldIEF1dG9maWxsIGJhY2tpbmcgc3Rv
cmUgaW1wbGVtZW50YXRpb24gdXBzdHJlYW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg1NTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUm9iIEJ1aXMu
CisKKyAgICAgICAgUmVwbGFjZWQgY2FsbGluZyBzdGF0aWMgZnVuY3Rpb24gQ3JlZGVudGlhbEJh
Y2tpbmdTdG9yZTo6aW5zdGFuY2UoKQorICAgICAgICB3aXRoIGNhbGxpbmcgdGhlIGhlbHBlciBm
dW5jdGlvbiBjcmVkZW50aWFsQmFja2luZ1N0b3JlKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9DcmVkZW50aWFsTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFs
TWFuYWdlcjo6YXV0b2ZpbGxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpDcmVkZW50aWFsTWFuYWdlcjo6YXV0b2ZpbGxQYXNzd29yZEZvcm1zKToKKyAgICAgICAg
KFdlYkNvcmU6OkNyZWRlbnRpYWxNYW5hZ2VyOjpzYXZlQ3JlZGVudGlhbElmQ29uZmlybWVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxNYW5hZ2VyOjpjbGVhckNyZWRlbnRpYWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxNYW5hZ2VyOjpjbGVhck5ldmVyUmVtZW1iZXJT
aXRlcyk6CisKKzIwMTItMDUtMDYgIEpvbmF0aGFuIERvbmcgIDxqb25hdGhhbi5kb25nQHRvcmNo
bW9iaWxlLmNvbS5jbj4KKwogICAgICAgICBbQmxhY2tCZXJyeV0gRW5hYmxlIGNyZWRlbnRpYWwg
cGVyc2lzdGFuY2UgYW5kIGF1dG8gZmlsbAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODU1NzIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1CbGFja0JlcnJ5LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5
LmNtYWtlCmluZGV4IGM0MmQ2YzBkYzM3NDUxMDI0NzEyNTU5YjY1OTdmZmUxNGI3YjM5NjQuLjA2
YTE2YzVkMzU3ZGY1MjgwODUyOTg1Y2E0MGMzM2U4NTkzOGM3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKQEAgLTkwLDYgKzkwLDcgQEAgTElTVChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9u
ZXR3b3JrL01JTUVTbmlmZmluZy5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVy
LmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9BdXRvZmlsbEJhY2tpbmdTdG9y
ZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvRGVmZXJyZWREYXRhLmNwcAog
ICAgIHBsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrSm9iLmNwcAogICAgIHBsYXRm
b3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrTWFuYWdlci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9BdXRvZmlsbEJhY2tpbmdT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQXV0
b2ZpbGxCYWNraW5nU3RvcmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxZmY5NTc4Yzk0YTA5YjgxMWQ1YTUx
NTc5YTkxNTZlMDllMWNkN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQXV0b2ZpbGxCYWNraW5nU3RvcmUuY3BwCkBAIC0wLDAg
KzEsMTk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkF1dG9maWxsQmFja2luZ1N0b3JlLmgiCisKKyNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCisjaW5j
bHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtQ2xpZW50Lmg+CisKKyNkZWZpbmUgSEFORExFX1NRTF9F
WEVDX0ZBSUxVUkUoc3RhdGVtZW50LCByZXR1cm5WYWx1ZSwgLi4uKSBcCisgICAgaWYgKHN0YXRl
bWVudCkgeyBcCisgICAgICAgIExPR19FUlJPUihfX1ZBX0FSR1NfXyk7IFwKKyAgICAgICAgcmV0
dXJuIHJldHVyblZhbHVlOyBcCisgICAgfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0F1dG9m
aWxsQmFja2luZ1N0b3JlJiBhdXRvZmlsbEJhY2tpbmdTdG9yZSgpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdXRvZmlsbEJhY2tpbmdTdG9yZSwgYmFja2luZ1N0b3JlLCAoKSk7CisgICAg
aWYgKCFiYWNraW5nU3RvcmUubV9kYXRhYmFzZS5pc09wZW4oKSkKKyAgICAgICAgYmFja2luZ1N0
b3JlLm9wZW4ocGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpD
bGllbnQ6OmdldCgpLT5nZXRBcHBsaWNhdGlvbkRhdGFEaXJlY3RvcnkoKS5jX3N0cigpLCAiL2F1
dG9maWxsLmRiIikpOworICAgIHJldHVybiBiYWNraW5nU3RvcmU7Cit9CisKK0F1dG9maWxsQmFj
a2luZ1N0b3JlOjpBdXRvZmlsbEJhY2tpbmdTdG9yZSgpCisgICAgOiBtX2FkZFN0YXRlbWVudCgw
KQorICAgICwgbV91cGRhdGVTdGF0ZW1lbnQoMCkKKyAgICAsIG1fY29udGFpbnNTdGF0ZW1lbnQo
MCkKKyAgICAsIG1fZ2V0U3RhdGVtZW50KDApCit7Cit9CisKK0F1dG9maWxsQmFja2luZ1N0b3Jl
Ojp+QXV0b2ZpbGxCYWNraW5nU3RvcmUoKQoreworICAgIGRlbGV0ZSBtX2FkZFN0YXRlbWVudDsK
KyAgICBtX2FkZFN0YXRlbWVudCA9IDA7CisgICAgZGVsZXRlIG1fdXBkYXRlU3RhdGVtZW50Owor
ICAgIG1fdXBkYXRlU3RhdGVtZW50ID0gMDsKKyAgICBkZWxldGUgbV9jb250YWluc1N0YXRlbWVu
dDsKKyAgICBtX2NvbnRhaW5zU3RhdGVtZW50ID0gMDsKKyAgICBkZWxldGUgbV9nZXRTdGF0ZW1l
bnQ7CisgICAgbV9nZXRTdGF0ZW1lbnQgPSAwOworCisgICAgaWYgKG1fZGF0YWJhc2UuaXNPcGVu
KCkpCisgICAgICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKK30KKworYm9vbCBBdXRvZmlsbEJhY2tp
bmdTdG9yZTo6b3Blbihjb25zdCBTdHJpbmcmIGRiUGF0aCkKK3sKKyAgICBBU1NFUlQoIW1fZGF0
YWJhc2UuaXNPcGVuKCkpOworCisgICAgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUoIW1fZGF0YWJh
c2Uub3BlbihkYlBhdGgpLCBmYWxzZSwKKyAgICAgICAgIkZhaWxlZCB0byBvcGVuIGRhdGFiYXNl
IGZpbGUgJXMgZm9yIGF1dG9maWxsIGRhdGFiYXNlIiwgZGJQYXRoLnV0ZjgoKS5kYXRhKCkpOwor
CisgICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJhdXRvZmlsbCIpKSB7CisgICAgICAg
IEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVB
VEUgVEFCTEUgYXV0b2ZpbGwgKGlkIElOVEVHRVIgUFJJTUFSWSBLRVksIG5hbWUgVkFSQ0hBUiBO
T1QgTlVMTCwgdmFsdWUgVkFSQ0hBUiBOT1QgTlVMTCwgY291bnQgSU5URUdFUiBERUZBVUxUIDEp
IiksCisgICAgICAgICAgICBmYWxzZSwgIkZhaWxlZCB0byBjcmVhdGUgdGFibGUgYXV0b2ZpbGwg
Zm9yIGF1dG9maWxsIGRhdGFiYXNlIik7CisKKyAgICAgICAgLy8gQ3JlYXRlIGluZGV4IGZvciB0
YWJsZSBhdXRvZmlsbC4KKyAgICAgICAgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUoIW1fZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBJTkRFWCBhdXRvZmlsbF9uYW1lIE9OIGF1dG9maWxs
IChuYW1lKSIpLAorICAgICAgICAgICAgZmFsc2UsICJGYWlsZWQgdG8gY3JlYXRlIGF1dG9maWxs
X25hbWUgaW5kZXggZm9yIHRhYmxlIGF1dG9maWxsIik7CisgICAgfQorCisgICAgLy8gUHJlcGFy
ZSB0aGUgc3RhdGVtZW50cy4KKyAgICBtX2FkZFN0YXRlbWVudCA9IG5ldyBTUUxpdGVTdGF0ZW1l
bnQobV9kYXRhYmFzZSwgIklOU0VSVCBJTlRPIGF1dG9maWxsIChuYW1lLCB2YWx1ZSkgVkFMVUVT
ICg/LCA/KSIpOworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKG1fYWRkU3RhdGVtZW50LT5w
cmVwYXJlKCkgIT0gU1FMUmVzdWx0T2ssCisgICAgICAgIGZhbHNlLCAiRmFpbGVkIHRvIHByZXBh
cmUgYWRkIHN0YXRlbWVudCIpOworCisgICAgbV91cGRhdGVTdGF0ZW1lbnQgPSBuZXcgU1FMaXRl
U3RhdGVtZW50KG1fZGF0YWJhc2UsICJVUERBVEUgYXV0b2ZpbGwgU0VUIGNvdW50ID0gKFNFTEVD
VCBjb3VudCArIDEgZnJvbSBhdXRvZmlsbCBXSEVSRSBuYW1lID0gPyBBTkQgdmFsdWUgPSA/KSBX
SEVSRSBuYW1lID0gPyBBTkQgdmFsdWUgPSA/Iik7CisgICAgSEFORExFX1NRTF9FWEVDX0ZBSUxV
UkUobV91cGRhdGVTdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaywKKyAgICAgICAg
ZmFsc2UsICJGYWlsZWQgdG8gcHJlcGFyZSB1cGRhdGUgc3RhdGVtZW50Iik7CisKKyAgICBtX2Nv
bnRhaW5zU3RhdGVtZW50ID0gbmV3IFNRTGl0ZVN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNU
IENPVU5UKCopIEZST00gYXV0b2ZpbGwgV0hFUkUgbmFtZSA9ID8gQU5EIHZhbHVlID0gPyIpOwor
ICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKG1fY29udGFpbnNTdGF0ZW1lbnQtPnByZXBhcmUo
KSAhPSBTUUxSZXN1bHRPaywKKyAgICAgICAgZmFsc2UsICJGYWlsZWQgdG8gcHJlcGFyZSBjb250
YWlucyBzdGF0ZW1lbnQiKTsKKworICAgIG1fZ2V0U3RhdGVtZW50ID0gbmV3IFNRTGl0ZVN0YXRl
bWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIHZhbHVlIEZST00gYXV0b2ZpbGwgV0hFUkUgbmFtZSA9
ID8gYW5kIHZhbHVlIGxpa2UgPyBPUkRFUiBCWSBjb3VudCBERVNDIik7CisgICAgSEFORExFX1NR
TF9FWEVDX0ZBSUxVUkUobV9nZXRTdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaywK
KyAgICAgICAgZmFsc2UsICJGYWlsZWQgdG8gcHJlcGFyZSBnZXQgc3RhdGVtZW50Iik7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBBdXRvZmlsbEJhY2tpbmdTdG9yZTo6YWRkKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAobmFtZS5pc0Vt
cHR5KCkgfHwgdmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBB
U1NFUlQobV9kYXRhYmFzZS5pc09wZW4oKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UudGFibGVF
eGlzdHMoImF1dG9maWxsIikpOworCisgICAgaWYgKGNvbnRhaW5zKG5hbWUsIHZhbHVlKSkKKyAg
ICAgICAgcmV0dXJuIHVwZGF0ZShuYW1lLCB2YWx1ZSk7CisKKyAgICBpZiAoIW1fYWRkU3RhdGVt
ZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2FkZFN0YXRlbWVudC0+YmluZFRl
eHQoMSwgbmFtZSk7CisgICAgbV9hZGRTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIHZhbHVlKTsKKwor
ICAgIGludCByZXN1bHQgPSBtX2FkZFN0YXRlbWVudC0+c3RlcCgpOworICAgIG1fYWRkU3RhdGVt
ZW50LT5yZXNldCgpOworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKHJlc3VsdCAhPSBTUUxS
ZXN1bHREb25lLCBmYWxzZSwKKyAgICAgICAgIkZhaWxlZCB0byBhZGQgYXV0b2ZpbGwgaXRlbSBp
bnRvIHRhYmxlIGF1dG9maWxsIC0gJWkiLCByZXN1bHQpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgQXV0b2ZpbGxCYWNraW5nU3RvcmU6OnVwZGF0ZShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKCFtX3VwZGF0ZVN0YXRlbWVudCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV91cGRhdGVTdGF0ZW1lbnQtPmJpbmRUZXh0KDEs
IG5hbWUpOworICAgIG1fdXBkYXRlU3RhdGVtZW50LT5iaW5kVGV4dCgyLCB2YWx1ZSk7CisgICAg
bV91cGRhdGVTdGF0ZW1lbnQtPmJpbmRUZXh0KDMsIG5hbWUpOworICAgIG1fdXBkYXRlU3RhdGVt
ZW50LT5iaW5kVGV4dCg0LCB2YWx1ZSk7CisKKyAgICBpbnQgcmVzdWx0ID0gbV91cGRhdGVTdGF0
ZW1lbnQtPnN0ZXAoKTsKKyAgICBtX3VwZGF0ZVN0YXRlbWVudC0+cmVzZXQoKTsKKyAgICBIQU5E
TEVfU1FMX0VYRUNfRkFJTFVSRShyZXN1bHQgIT0gU1FMUmVzdWx0RG9uZSwgZmFsc2UsCisgICAg
ICAgICJGYWlsZWQgdG8gdXBkYXRlIGF1dG9maWxsIGl0ZW0gaW4gdGFibGUgYXV0b2ZpbGwgLSAl
aSIsIHJlc3VsdCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBBdXRvZmlsbEJhY2tp
bmdTdG9yZTo6Y29udGFpbnMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAoreworICAgIGlmICghbV9jb250YWluc1N0YXRlbWVudCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgbV9jb250YWluc1N0YXRlbWVudC0+YmluZFRleHQoMSwgbmFtZSk7Cisg
ICAgbV9jb250YWluc1N0YXRlbWVudC0+YmluZFRleHQoMiwgdmFsdWUpOworCisgICAgaW50IHJl
c3VsdCA9IG1fY29udGFpbnNTdGF0ZW1lbnQtPnN0ZXAoKTsKKyAgICBpbnQgbnVtYmVyT2ZSb3dz
ID0gbV9jb250YWluc1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApOworICAgIG1fY29udGFpbnNT
dGF0ZW1lbnQtPnJlc2V0KCk7CisgICAgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUocmVzdWx0ICE9
IFNRTFJlc3VsdFJvdywgZmFsc2UsCisgICAgICAgICJGYWlsZWQgdG8gZXhlY3V0ZSBzZWxlY3Qg
YXV0b2ZpbGwgaXRlbSBmcm9tIHRhYmxlIGF1dG9maWxsIGluIGNvbnRhaW5zIC0gJWkiLCByZXN1
bHQpOworCisgICAgcmV0dXJuIG51bWJlck9mUm93czsKK30KKworVmVjdG9yPFN0cmluZz4gQXV0
b2ZpbGxCYWNraW5nU3RvcmU6OmdldChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWVIaW50KQoreworICAgIEFTU0VSVChtX2RhdGFiYXNlLmlzT3BlbigpKTsKKyAgICBBU1NF
UlQobV9kYXRhYmFzZS50YWJsZUV4aXN0cygiYXV0b2ZpbGwiKSk7CisKKyAgICBWZWN0b3I8U3Ry
aW5nPiBjYW5kaWRhdGVzOworICAgIGlmIChuYW1lLmlzRW1wdHkoKSB8fCB2YWx1ZUhpbnQuaXNF
bXB0eSgpIHx8ICFtX2dldFN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZXM7CisK
KyAgICBTdHJpbmcgdmFsdWUgPSB2YWx1ZUhpbnQgKyAiJSI7CisgICAgbV9nZXRTdGF0ZW1lbnQt
PmJpbmRUZXh0KDEsIG5hbWUpOworICAgIG1fZ2V0U3RhdGVtZW50LT5iaW5kVGV4dCgyLCB2YWx1
ZSk7CisKKyAgICBpbnQgcmVzdWx0OworICAgIHdoaWxlICgocmVzdWx0ID0gbV9nZXRTdGF0ZW1l
bnQtPnN0ZXAoKSkgPT0gU1FMUmVzdWx0Um93KQorICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZCht
X2dldFN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgwKSk7CisgICAgbV9nZXRTdGF0ZW1lbnQtPnJl
c2V0KCk7CisgICAgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUocmVzdWx0ICE9IFNRTFJlc3VsdERv
bmUsIGNhbmRpZGF0ZXMsCisgICAgICAgICJGYWlsZWQgdG8gZXhlY3V0ZSBzZWxlY3QgYXV0b2Zp
bGwgaXRlbSBmcm9tIHRhYmxlIGF1dG9maWxsIGluIGdldCAtICVpIiwgcmVzdWx0KTsKKworICAg
IHJldHVybiBjYW5kaWRhdGVzOworfQorCitib29sIEF1dG9maWxsQmFja2luZ1N0b3JlOjpjbGVh
cigpCit7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOworICAgIEFTU0VSVChtX2Rh
dGFiYXNlLnRhYmxlRXhpc3RzKCJhdXRvZmlsbCIpKTsKKworICAgIEhBTkRMRV9TUUxfRVhFQ19G
QUlMVVJFKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJERUxFVEUgRlJPTSBhdXRvZmlsbCIp
LAorICAgICAgICBmYWxzZSwgIkZhaWxlZCB0byBjbGVhciB0YWJsZSBhdXRvZmlsbCIpOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9BdXRvZmlsbEJhY2tp
bmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0F1
dG9maWxsQmFja2luZ1N0b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzllMzU2NjBlOWFjNTVkZmI3N2I4NTY3
MGQ2YTM3MjQ0NDBlNGFhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvYmxhY2tiZXJyeS9BdXRvZmlsbEJhY2tpbmdTdG9yZS5oCkBAIC0wLDAgKzEs
NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0
ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBB
dXRvZmlsbEJhY2tpbmdTdG9yZV9oCisjZGVmaW5lIEF1dG9maWxsQmFja2luZ1N0b3JlX2gKKwor
I2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQXV0b2ZpbGxCYWNraW5nU3RvcmUgeworcHVibGljOgorICAgIGZyaWVuZCBBdXRvZmlsbEJh
Y2tpbmdTdG9yZSYgYXV0b2ZpbGxCYWNraW5nU3RvcmUoKTsKKworICAgIH5BdXRvZmlsbEJhY2tp
bmdTdG9yZSgpOworICAgIGJvb2wgb3Blbihjb25zdCBTdHJpbmcmIGRiUGF0aCk7CisgICAgYm9v
bCBhZGQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICBWZWN0
b3I8U3RyaW5nPiBnZXQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlSGlu
dCk7CisgICAgYm9vbCBjbGVhcigpOworCitwcml2YXRlOgorICAgIEF1dG9maWxsQmFja2luZ1N0
b3JlKCk7CisgICAgYm9vbCB1cGRhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKTsKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkgY29uc3Q7CisKKyAgICBTUUxpdGVEYXRhYmFzZSBtX2RhdGFiYXNlOworICAg
IFNRTGl0ZVN0YXRlbWVudCogbV9hZGRTdGF0ZW1lbnQ7CisgICAgU1FMaXRlU3RhdGVtZW50KiBt
X3VwZGF0ZVN0YXRlbWVudDsKKyAgICBTUUxpdGVTdGF0ZW1lbnQqIG1fY29udGFpbnNTdGF0ZW1l
bnQ7CisgICAgU1FMaXRlU3RhdGVtZW50KiBtX2dldFN0YXRlbWVudDsKK307CisKK0F1dG9maWxs
QmFja2luZ1N0b3JlJiBhdXRvZmlsbEJhY2tpbmdTdG9yZSgpOworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBBdXRvZmlsbEJhY2tpbmdTdG9yZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ3JlZGVudGlhbEJhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkv
Q3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYWI5YTg5MmY2ZTE2NTExMWIxN2Y4OTkz
MDM3ZjEzYTViZTM3ZDkwNy4uNDJhZDkxZmNkYzdmMjcxOTIzMGU0Nzg5ZWZhMTU1NTNkZjc1ZWIw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5
L0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvYmxhY2tiZXJyeS9DcmVkZW50aWFsQmFja2luZ1N0b3JlLmNwcApAQCAtMzgsMTMg
KzM4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3JlZGVudGlhbEJhY2tpbmdTdG9y
ZSogQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6aW5zdGFuY2UoKQorQ3JlZGVudGlhbEJhY2tpbmdT
dG9yZSYgY3JlZGVudGlhbEJhY2tpbmdTdG9yZSgpCiB7Ci0gICAgc3RhdGljIENyZWRlbnRpYWxC
YWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IDA7Ci0gICAgaWYgKCFiYWNraW5nU3RvcmUpIHsK
LSAgICAgICAgYmFja2luZ1N0b3JlID0gbmV3IENyZWRlbnRpYWxCYWNraW5nU3RvcmU7Ci0gICAg
ICAgIGJhY2tpbmdTdG9yZS0+b3BlbihwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkNsaWVudDo6Z2V0KCktPmdldEFwcGxpY2F0aW9uRGF0YURpcmVjdG9yeSgp
LmNfc3RyKCksICIvY3JlZGVudGlhbHMuZGIiKSk7Ci0gICAgfQorICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQ3JlZGVudGlhbEJhY2tpbmdTdG9yZSwgYmFja2luZ1N0b3JlLCAoKSk7CisgICAgaWYg
KCFiYWNraW5nU3RvcmUubV9kYXRhYmFzZS5pc09wZW4oKSkKKyAgICAgICAgYmFja2luZ1N0b3Jl
Lm9wZW4ocGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDbGll
bnQ6OmdldCgpLT5nZXRBcHBsaWNhdGlvbkRhdGFEaXJlY3RvcnkoKS5jX3N0cigpLCAiL2NyZWRl
bnRpYWxzLmRiIikpOwogICAgIHJldHVybiBiYWNraW5nU3RvcmU7CiB9CiAKQEAgLTY0LDYgKzYy
LDI3IEBAIENyZWRlbnRpYWxCYWNraW5nU3RvcmU6OkNyZWRlbnRpYWxCYWNraW5nU3RvcmUoKQog
CiBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjp+Q3JlZGVudGlhbEJhY2tpbmdTdG9yZSgpCiB7Cisg
ICAgZGVsZXRlIG1fYWRkTG9naW5TdGF0ZW1lbnQ7CisgICAgbV9hZGRMb2dpblN0YXRlbWVudCA9
IDA7CisgICAgZGVsZXRlIG1fdXBkYXRlTG9naW5TdGF0ZW1lbnQ7CisgICAgbV91cGRhdGVMb2dp
blN0YXRlbWVudCA9IDA7CisgICAgZGVsZXRlIG1faGFzTG9naW5TdGF0ZW1lbnQ7CisgICAgbV9o
YXNMb2dpblN0YXRlbWVudCA9IDA7CisgICAgZGVsZXRlIG1fZ2V0TG9naW5TdGF0ZW1lbnQ7Cisg
ICAgbV9nZXRMb2dpblN0YXRlbWVudCA9IDA7CisgICAgZGVsZXRlIG1fZ2V0TG9naW5CeVVSTFN0
YXRlbWVudDsKKyAgICBtX2dldExvZ2luQnlVUkxTdGF0ZW1lbnQgPSAwOworICAgIGRlbGV0ZSBt
X3JlbW92ZUxvZ2luU3RhdGVtZW50OworICAgIG1fcmVtb3ZlTG9naW5TdGF0ZW1lbnQgPSAwOwor
ICAgIGRlbGV0ZSBtX2FkZE5ldmVyUmVtZW1iZXJTdGF0ZW1lbnQ7CisgICAgbV9hZGROZXZlclJl
bWVtYmVyU3RhdGVtZW50ID0gMDsKKyAgICBkZWxldGUgbV9oYXNOZXZlclJlbWVtYmVyU3RhdGVt
ZW50OworICAgIG1faGFzTmV2ZXJSZW1lbWJlclN0YXRlbWVudCA9IDA7CisgICAgZGVsZXRlIG1f
Z2V0TmV2ZXJSZW1lbWJlclN0YXRlbWVudDsKKyAgICBtX2dldE5ldmVyUmVtZW1iZXJTdGF0ZW1l
bnQgPSAwOworICAgIGRlbGV0ZSBtX3JlbW92ZU5ldmVyUmVtZW1iZXJTdGF0ZW1lbnQ7CisgICAg
bV9yZW1vdmVOZXZlclJlbWVtYmVyU3RhdGVtZW50ID0gMDsKKwogICAgIGlmIChtX2RhdGFiYXNl
LmlzT3BlbigpKQogICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CiB9CkBAIC0xMzcsMzMgKzE1
Niw2IEBAIGJvb2wgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6b3Blbihjb25zdCBTdHJpbmcmIGRi
UGF0aCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDcmVkZW50aWFsQmFja2luZ1N0b3Jl
OjpjbG9zZSgpCi17Ci0gICAgZGVsZXRlIG1fYWRkTG9naW5TdGF0ZW1lbnQ7Ci0gICAgbV9hZGRM
b2dpblN0YXRlbWVudCA9IDA7Ci0gICAgZGVsZXRlIG1fdXBkYXRlTG9naW5TdGF0ZW1lbnQ7Ci0g
ICAgbV91cGRhdGVMb2dpblN0YXRlbWVudCA9IDA7Ci0gICAgZGVsZXRlIG1faGFzTG9naW5TdGF0
ZW1lbnQ7Ci0gICAgbV9oYXNMb2dpblN0YXRlbWVudCA9IDA7Ci0gICAgZGVsZXRlIG1fZ2V0TG9n
aW5TdGF0ZW1lbnQ7Ci0gICAgbV9nZXRMb2dpblN0YXRlbWVudCA9IDA7Ci0gICAgZGVsZXRlIG1f
Z2V0TG9naW5CeVVSTFN0YXRlbWVudDsKLSAgICBtX2dldExvZ2luQnlVUkxTdGF0ZW1lbnQgPSAw
OwotICAgIGRlbGV0ZSBtX3JlbW92ZUxvZ2luU3RhdGVtZW50OwotICAgIG1fcmVtb3ZlTG9naW5T
dGF0ZW1lbnQgPSAwOwotICAgIGRlbGV0ZSBtX2FkZE5ldmVyUmVtZW1iZXJTdGF0ZW1lbnQ7Ci0g
ICAgbV9hZGROZXZlclJlbWVtYmVyU3RhdGVtZW50ID0gMDsKLSAgICBkZWxldGUgbV9oYXNOZXZl
clJlbWVtYmVyU3RhdGVtZW50OwotICAgIG1faGFzTmV2ZXJSZW1lbWJlclN0YXRlbWVudCA9IDA7
Ci0gICAgZGVsZXRlIG1fZ2V0TmV2ZXJSZW1lbWJlclN0YXRlbWVudDsKLSAgICBtX2dldE5ldmVy
UmVtZW1iZXJTdGF0ZW1lbnQgPSAwOwotICAgIGRlbGV0ZSBtX3JlbW92ZU5ldmVyUmVtZW1iZXJT
dGF0ZW1lbnQ7Ci0gICAgbV9yZW1vdmVOZXZlclJlbWVtYmVyU3RhdGVtZW50ID0gMDsKLQotICAg
IGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQotICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7Ci19
Ci0KIGJvb2wgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6YWRkTG9naW4oY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgY29uc3QgQ3JlZGVudGlh
bCYgY3JlZGVudGlhbCkKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZS5pc09wZW4oKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ3JlZGVu
dGlhbEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFj
a2JlcnJ5L0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuaAppbmRleCBmYzEyYzZiNjYwZmRkMWY5OTQ1
OTJjZDY3NDhiMjY1NjI3YjllMDI4Li43Y2Q0OWUyMmNlNGFhYTRmZjFlN2ZmNWY1MGViMGEzM2Mz
MTlkMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNr
YmVycnkvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvYmxhY2tiZXJyeS9DcmVkZW50aWFsQmFja2luZ1N0b3JlLmgKQEAgLTMxLDEw
ICszMSwxMCBAQCBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAKIGNsYXNzIENyZWRlbnRpYWxCYWNr
aW5nU3RvcmUgewogcHVibGljOgotICAgIHN0YXRpYyBDcmVkZW50aWFsQmFja2luZ1N0b3JlKiBp
bnN0YW5jZSgpOworICAgIGZyaWVuZCBDcmVkZW50aWFsQmFja2luZ1N0b3JlJiBjcmVkZW50aWFs
QmFja2luZ1N0b3JlKCk7CisKICAgICB+Q3JlZGVudGlhbEJhY2tpbmdTdG9yZSgpOwogICAgIGJv
b2wgb3Blbihjb25zdCBTdHJpbmcmIGRiUGF0aCk7Ci0gICAgdm9pZCBjbG9zZSgpOwogICAgIGJv
b2wgYWRkTG9naW4oY29uc3QgS1VSTCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IENy
ZWRlbnRpYWwmKTsKICAgICBib29sIHVwZGF0ZUxvZ2luKGNvbnN0IEtVUkwmLCBjb25zdCBQcm90
ZWN0aW9uU3BhY2UmLCBjb25zdCBDcmVkZW50aWFsJik7CiAgICAgYm9vbCBoYXNMb2dpbihjb25z
dCBLVVJMJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CkBAIC02Niw2ICs2Niw4IEBAIHByaXZh
dGU6CiAgICAgU1FMaXRlU3RhdGVtZW50KiBtX3JlbW92ZU5ldmVyUmVtZW1iZXJTdGF0ZW1lbnQ7
CiB9OwogCitDcmVkZW50aWFsQmFja2luZ1N0b3JlJiBjcmVkZW50aWFsQmFja2luZ1N0b3JlKCk7
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShCTEFDS0JFUlJZ
X0NSRURFTlRJQUxfUEVSU0lTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvYmxhY2tiZXJyeS9DcmVkZW50aWFsU3RvcmFnZUJsYWNrQmVycnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxTdG9yYWdl
QmxhY2tCZXJyeS5jcHAKaW5kZXggNGVhNzgzZjljYTk5NjU1ZWFiYmU4NWI1NmU5YWRkNGQ1YTZm
MWRhMC4uZDYyMjMwNjMzNTYxMGFhNThmMjcxZDA5YjBmNGE0N2JmYWI1ZWZmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxT
dG9yYWdlQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxTdG9yYWdlQmxhY2tCZXJyeS5jcHAKQEAgLTMwLDcgKzMw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQ3JlZGVudGlhbCBDcmVkZW50aWFsU3RvcmFnZTo6
Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlv
blNwYWNlKQogewogI2lmIEVOQUJMRShCTEFDS0JFUlJZX0NSRURFTlRJQUxfUEVSU0lTVCkKLSAg
ICByZXR1cm4gQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6aW5zdGFuY2UoKS0+Z2V0TG9naW4ocHJv
dGVjdGlvblNwYWNlKTsKKyAgICByZXR1cm4gY3JlZGVudGlhbEJhY2tpbmdTdG9yZSgpLmdldExv
Z2luKHByb3RlY3Rpb25TcGFjZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwcm90ZWN0aW9u
U3BhY2UpOwogICAgIHJldHVybiBDcmVkZW50aWFsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxNYW5hZ2VyLmNw
cAppbmRleCA1MGNlNjlmMWJlN2RmNjdmZjQ5MTY2YWJhYjM1NDRmMzIwY2ZmYWNiLi5lODA2MDg2
MDdmOTM1ZmY4MDhmYjQ4NGZkZjUwZmVmMTkyZTBhMjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbE1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsTWFuYWdl
ci5jcHAKQEAgLTQzLDEwICs0MywxMCBAQCBDcmVkZW50aWFsTWFuYWdlciYgY3JlZGVudGlhbE1h
bmFnZXIoKQogCiB2b2lkIENyZWRlbnRpYWxNYW5hZ2VyOjphdXRvZmlsbEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBXZWJTdHJp
bmcmIHVzZXJuYW1lLCBXZWJTdHJpbmcmIHBhc3N3b3JkKQogewotICAgIGlmIChDcmVkZW50aWFs
QmFja2luZ1N0b3JlOjppbnN0YW5jZSgpLT5oYXNOZXZlclJlbWVtYmVyKHByb3RlY3Rpb25TcGFj
ZSkpCisgICAgaWYgKGNyZWRlbnRpYWxCYWNraW5nU3RvcmUoKS5oYXNOZXZlclJlbWVtYmVyKHBy
b3RlY3Rpb25TcGFjZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENyZWRlbnRpYWwgc2F2ZWRD
cmVkZW50aWFsID0gQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6aW5zdGFuY2UoKS0+Z2V0TG9naW4o
cHJvdGVjdGlvblNwYWNlKTsKKyAgICBDcmVkZW50aWFsIHNhdmVkQ3JlZGVudGlhbCA9IGNyZWRl
bnRpYWxCYWNraW5nU3RvcmUoKS5nZXRMb2dpbihwcm90ZWN0aW9uU3BhY2UpOwogICAgIHVzZXJu
YW1lID0gc2F2ZWRDcmVkZW50aWFsLnVzZXIoKTsKICAgICBwYXNzd29yZCA9IHNhdmVkQ3JlZGVu
dGlhbC5wYXNzd29yZCgpOwogfQpAQCAtNjEsOSArNjEsOSBAQCB2b2lkIENyZWRlbnRpYWxNYW5h
Z2VyOjphdXRvZmlsbFBhc3N3b3JkRm9ybXMoUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZG9j
Rm9ybQogICAgICAgICBOb2RlKiBub2RlID0gZm9ybXMtPml0ZW0oaSk7CiAgICAgICAgIGlmIChu
b2RlICYmIG5vZGUtPmlzSFRNTEVsZW1lbnQoKSkgewogICAgICAgICAgICAgQ3JlZGVudGlhbFRy
YW5zZm9ybURhdGEgZGF0YShzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihub2RlKSk7Ci0g
ICAgICAgICAgICBpZiAoIWRhdGEuaXNWYWxpZCgpIHx8ICFDcmVkZW50aWFsQmFja2luZ1N0b3Jl
OjppbnN0YW5jZSgpLT5oYXNMb2dpbihkYXRhLnVybCgpLCBkYXRhLnByb3RlY3Rpb25TcGFjZSgp
KSkKKyAgICAgICAgICAgIGlmICghZGF0YS5pc1ZhbGlkKCkgfHwgIWNyZWRlbnRpYWxCYWNraW5n
U3RvcmUoKS5oYXNMb2dpbihkYXRhLnVybCgpLCBkYXRhLnByb3RlY3Rpb25TcGFjZSgpKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIENyZWRlbnRpYWwgc2F2ZWRDcmVk
ZW50aWFsID0gQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6aW5zdGFuY2UoKS0+Z2V0TG9naW4oZGF0
YS51cmwoKSk7CisgICAgICAgICAgICBDcmVkZW50aWFsIHNhdmVkQ3JlZGVudGlhbCA9IGNyZWRl
bnRpYWxCYWNraW5nU3RvcmUoKS5nZXRMb2dpbihkYXRhLnVybCgpKTsKICAgICAgICAgICAgIGRh
dGEuc2V0Q3JlZGVudGlhbChzYXZlZENyZWRlbnRpYWwpOwogICAgICAgICB9CiAgICAgfQpAQCAt
NzMsMzMgKzczLDMzIEBAIHZvaWQgQ3JlZGVudGlhbE1hbmFnZXI6OnNhdmVDcmVkZW50aWFsSWZD
b25maXJtZWQoUGFnZUNsaWVudEJsYWNrQmVycnkqIHBhZ2VDbGllCiB7CiAgICAgQVNTRVJUKHBh
Z2VDbGllbnQpOwogCi0gICAgaWYgKCFkYXRhLmlzVmFsaWQoKSB8fCBkYXRhLmNyZWRlbnRpYWwo
KS5pc0VtcHR5KCkgfHwgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6aW5zdGFuY2UoKS0+aGFzTmV2
ZXJSZW1lbWJlcihkYXRhLnByb3RlY3Rpb25TcGFjZSgpKSkKKyAgICBpZiAoIWRhdGEuaXNWYWxp
ZCgpIHx8IGRhdGEuY3JlZGVudGlhbCgpLmlzRW1wdHkoKSB8fCBjcmVkZW50aWFsQmFja2luZ1N0
b3JlKCkuaGFzTmV2ZXJSZW1lbWJlcihkYXRhLnByb3RlY3Rpb25TcGFjZSgpKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQ3JlZGVudGlhbCBzYXZlZENyZWRlbnRpYWwgPSBDcmVkZW50aWFsQmFj
a2luZ1N0b3JlOjppbnN0YW5jZSgpLT5nZXRMb2dpbihkYXRhLnVybCgpKTsKKyAgICBDcmVkZW50
aWFsIHNhdmVkQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWxCYWNraW5nU3RvcmUoKS5nZXRMb2dpbihk
YXRhLnVybCgpKTsKICAgICBpZiAoc2F2ZWRDcmVkZW50aWFsID09IGRhdGEuY3JlZGVudGlhbCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBQYWdlQ2xpZW50QmxhY2tCZXJyeTo6U2F2ZUNyZWRl
bnRpYWxUeXBlIHR5cGUgPSBwYWdlQ2xpZW50LT5ub3RpZnlTaG91bGRTYXZlQ3JlZGVudGlhbChz
YXZlZENyZWRlbnRpYWwuaXNFbXB0eSgpKTsKICAgICBpZiAodHlwZSA9PSBQYWdlQ2xpZW50Qmxh
Y2tCZXJyeTo6U2F2ZUNyZWRlbnRpYWxZZXMpIHsKICAgICAgICAgaWYgKHNhdmVkQ3JlZGVudGlh
bC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjppbnN0YW5j
ZSgpLT5hZGRMb2dpbihkYXRhLnVybCgpLCBkYXRhLnByb3RlY3Rpb25TcGFjZSgpLCBkYXRhLmNy
ZWRlbnRpYWwoKSk7CisgICAgICAgICAgICBjcmVkZW50aWFsQmFja2luZ1N0b3JlKCkuYWRkTG9n
aW4oZGF0YS51cmwoKSwgZGF0YS5wcm90ZWN0aW9uU3BhY2UoKSwgZGF0YS5jcmVkZW50aWFsKCkp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjppbnN0
YW5jZSgpLT51cGRhdGVMb2dpbihkYXRhLnVybCgpLCBkYXRhLnByb3RlY3Rpb25TcGFjZSgpLCBk
YXRhLmNyZWRlbnRpYWwoKSk7CisgICAgICAgICAgICBjcmVkZW50aWFsQmFja2luZ1N0b3JlKCku
dXBkYXRlTG9naW4oZGF0YS51cmwoKSwgZGF0YS5wcm90ZWN0aW9uU3BhY2UoKSwgZGF0YS5jcmVk
ZW50aWFsKCkpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSBQYWdlQ2xpZW50QmxhY2tCZXJyeTo6
U2F2ZUNyZWRlbnRpYWxOZXZlckZvclRoaXNTaXRlKSB7Ci0gICAgICAgIENyZWRlbnRpYWxCYWNr
aW5nU3RvcmU6Omluc3RhbmNlKCktPmFkZE5ldmVyUmVtZW1iZXIoZGF0YS51cmwoKSwgZGF0YS5w
cm90ZWN0aW9uU3BhY2UoKSk7Ci0gICAgICAgIENyZWRlbnRpYWxCYWNraW5nU3RvcmU6Omluc3Rh
bmNlKCktPnJlbW92ZUxvZ2luKGRhdGEudXJsKCksIGRhdGEucHJvdGVjdGlvblNwYWNlKCkpOwor
ICAgICAgICBjcmVkZW50aWFsQmFja2luZ1N0b3JlKCkuYWRkTmV2ZXJSZW1lbWJlcihkYXRhLnVy
bCgpLCBkYXRhLnByb3RlY3Rpb25TcGFjZSgpKTsKKyAgICAgICAgY3JlZGVudGlhbEJhY2tpbmdT
dG9yZSgpLnJlbW92ZUxvZ2luKGRhdGEudXJsKCksIGRhdGEucHJvdGVjdGlvblNwYWNlKCkpOwog
ICAgIH0KIH0KIAogdm9pZCBDcmVkZW50aWFsTWFuYWdlcjo6Y2xlYXJDcmVkZW50aWFscygpCiB7
Ci0gICAgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6aW5zdGFuY2UoKS0+Y2xlYXJMb2dpbnMoKTsK
KyAgICBjcmVkZW50aWFsQmFja2luZ1N0b3JlKCkuY2xlYXJMb2dpbnMoKTsKIH0KIAogdm9pZCBD
cmVkZW50aWFsTWFuYWdlcjo6Y2xlYXJOZXZlclJlbWVtYmVyU2l0ZXMoKQogewotICAgIENyZWRl
bnRpYWxCYWNraW5nU3RvcmU6Omluc3RhbmNlKCktPmNsZWFyTmV2ZXJSZW1lbWJlcigpOworICAg
IGNyZWRlbnRpYWxCYWNraW5nU3RvcmUoKS5jbGVhck5ldmVyUmVtZW1iZXIoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>