<?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>27770</bug_id>
          
          <creation_ts>2009-07-28 10:40:49 -0700</creation_ts>
          <short_desc>Workers need to throw an exception when presented with invalid URLs</short_desc>
          <delta_ts>2009-07-29 18:11:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Wilson">atwilson</reporter>
          <assigned_to name="Jian Li">jianli</assigned_to>
          <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>135264</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-28 10:40:49 -0700</bug_when>
    <thetext>Currently, if the Worker constructor is passed an invalid URL (i.e. empty string, absolute URL pointing at a different domain) the spec requires that the constructor throw an exception.

We are generating an error event instead. We should address this by passing an ExceptionCode through into WorkerScriptLoader::createResourceRequest().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135718</commentid>
    <comment_count>1</comment_count>
      <attachid>33751</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-07-29 16:34:09 -0700</bug_when>
    <thetext>Created attachment 33751
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135722</commentid>
    <comment_count>2</comment_count>
      <attachid>33751</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-29 16:36:54 -0700</bug_when>
    <thetext>Comment on attachment 33751
Proposed Patch

&gt; -    RefPtr&lt;Worker&gt; worker = Worker::create(scriptURL, window-&gt;document());
&gt; +    ExceptionCode ec = 0;
&gt; +    RefPtr&lt;Worker&gt; worker = Worker::create(scriptURL, window-&gt;document(), ec);
&gt; +    setDOMException(exec, ec);

I believe you should have a return 0 statement here. You don&apos;t want to call toJS on the result of the function after doing setDOMException.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135729</commentid>
    <comment_count>3</comment_count>
      <attachid>33754</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-07-29 16:47:01 -0700</bug_when>
    <thetext>Created attachment 33754
Proposed Patch

Fixed the problem pointed out by Darin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135742</commentid>
    <comment_count>4</comment_count>
      <attachid>33754</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-29 17:12:42 -0700</bug_when>
    <thetext>Comment on attachment 33754
Proposed Patch

&gt; +    KURL scriptURL = context-&gt;completeURL(url);
&gt; +    if (url.isEmpty() || !scriptURL.isValid()) {
&gt; +        ec = SYNTAX_ERR;
&gt; +        return;
&gt; +    }

Seems like the url.isEmpty() check could go before the call to completeURL.

&gt; -        void loadSynchronously(ScriptExecutionContext*, const String&amp; url, URLCompletionPolicy, CrossOriginLoadPolicy);
&gt; -        void loadAsynchronously(ScriptExecutionContext*, const String&amp; url, URLCompletionPolicy, CrossOriginLoadPolicy, WorkerScriptLoaderClient*);
&gt; +        void loadSynchronously(ScriptExecutionContext*, const KURL&amp; url, CrossOriginRedirectPolicy);
&gt; +        void loadAsynchronously(ScriptExecutionContext*, const KURL&amp; url, CrossOriginRedirectPolicy, WorkerScriptLoaderClient*);

Normally we would omit a name like &quot;url&quot; when the type makes it clear what it is. So in addition to changing it from String to KURL, you could remove the argument name here.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135765</commentid>
    <comment_count>5</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-07-29 18:11:27 -0700</bug_when>
    <thetext>All fixed and committed as http://trac.webkit.org/changeset/46570.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33751</attachid>
            <date>2009-07-29 16:34:09 -0700</date>
            <delta_ts>2009-07-29 16:47:01 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>27770</filename>
            <type>text/plain</type>
            <size>18481</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2ZDZhZDQwLi44MmRhZjQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMDct
MjkgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdvcmtlcnMgbmVlZCB0byB0aHJvdyBhbiBleGNl
cHRpb24gd2hlbiBwcmVzZW50ZWQgd2l0aCBpbnZhbGlkIFVSTHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzc3MAorCisgICAgICAgIFVwZGF0ZSB3
b3JrZXItY29uc3RydWN0b3IuaHRtbCBhbmQgd29ya2VyLXJlZGlyZWN0Lmh0bWwgcGVyIHRoZSBi
ZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLWNvbnN0cnVj
dG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLWNvbnN0cnVj
dG9yLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtlci1yZWRpcmVjdC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtlci1yZWRpcmVj
dC5odG1sOgorCiAyMDA5LTA3LTI4ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuaWtvbGFzLnppbW1l
cm1hbm5AdG9yY2htb2JpbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZSBTdGFp
a29zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1jb25zdHJ1
Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnN0
cnVjdG9yLWV4cGVjdGVkLnR4dAppbmRleCAzMTFlMTliLi5mMWMyMmQwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVk
LnR4dApAQCAtMyw4ICszLDggQEAgVGVzdCBXb3JrZXIgY29uc3RydWN0b3IgZnVuY3Rpb25hbGl0
eS4gU2hvdWxkIHByaW50IGEgc2VyaWVzIG9mIFBBU1MgbWVzc2FnZXMsIGYKIFBBU1M6IHRvU3Ry
aW5nIGV4Y2VwdGlvbiBwcm9wYWdhdGVkIGNvcnJlY3RseS4KIFBBU1M6IHRyeWluZyB0byBjcmVh
dGUgd29ya2VycyByZWN1cnNpdmVseSByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKFJhbmdlRXJy
b3I6IE1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLikKIFBBU1M6IGludm9raW5nIFdv
cmtlciBjb25zdHJ1Y3RvciB3aXRob3V0IGFyZ3VtZW50cyByZXN1bHRlZCBpbiBhbiBleGNlcHRp
b24gKFN5bnRheEVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cykKLVBBU1M6IG9uZXJyb3IgaW52
b2tlZCBmb3IgYW4gZW1wdHkgc2NyaXB0IFVSTC4KLVBBU1M6IG9uZXJyb3IgaW52b2tlZCBmb3Ig
YW4gaW52YWxpZCBzY3JpcHQgVVJMLgorUEFTUzogaW52b2tpbmcgV29ya2VyIGNvbnN0cnVjdG9y
IHdpdGggZW1wdHkgc2NyaXB0IFVSTCByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKEVycm9yOiBT
WU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyKQorUEFTUzogaW52b2tpbmcgV29ya2VyIGNvbnN0
cnVjdG9yIHdpdGggaW52YWxpZCBzY3JpcHQgVVJMIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAo
RXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIpCiBQQVNTOiBvbmVycm9yIGludm9r
ZWQgZm9yIGEgc2NyaXB0IHRoYXQgY291bGQgbm90IGJlIGxvYWRlZC4KIFBBU1M6IFN1Y2Nlc3Nm
dWxseSBjcmVhdGVkIHdvcmtlci4KIERPTkUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy93b3JrZXItY29uc3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy93b3JrZXItY29uc3RydWN0b3IuaHRtbAppbmRleCAwZjgzYmUxLi45YTFjN2U4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnN0cnVjdG9yLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1jb25zdHJ1Y3Rvci5odG1sCkBAIC03
MiwxMSArNzIsMTEgQEAgZnVuY3Rpb24gdGVzdEVtcHR5U2NyaXB0VXJsKCkKICAgICB0cnkgewog
ICAgICAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigiIik7CiAgICAgICAgIHdvcmtlci5vbmVy
cm9yID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBsb2coIlBBU1M6IG9uZXJyb3IgaW52b2tl
ZCBmb3IgYW4gZW1wdHkgc2NyaXB0IFVSTC4iKTsKKyAgICAgICAgICAgIGxvZygiRkFJTDogb25l
cnJvciBpbnZva2VkIGZvciBhbiBlbXB0eSBzY3JpcHQgVVJMLiIpOwogICAgICAgICAgICAgcnVu
TmV4dFRlc3QoKTsKICAgICAgICAgfQogICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICAgIGxvZygi
RkFJTDogdW5leHBlY3RlZCBleGNlcHRpb24gIiArIGV4KTsKKyAgICAgICAgbG9nKCJQQVNTOiBp
bnZva2luZyBXb3JrZXIgY29uc3RydWN0b3Igd2l0aCBlbXB0eSBzY3JpcHQgVVJMIHJlc3VsdGVk
IGluIGFuIGV4Y2VwdGlvbiAoIiArIGV4ICsgIikiKTsKICAgICAgICAgcnVuTmV4dFRlc3QoKTsK
ICAgICB9CiB9CkBAIC04NCwxMyArODQsMTMgQEAgZnVuY3Rpb24gdGVzdEVtcHR5U2NyaXB0VXJs
KCkKIGZ1bmN0aW9uIHRlc3RJbnZhbGlkU2NyaXB0VXJsKCkKIHsKICAgICB0cnkgewotICAgICAg
ICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigiaW52YWxpZHVybDovLyIpOworICAgICAgICB2YXIg
d29ya2VyID0gbmV3IFdvcmtlcigiaHR0cDovL2ludmFsaWQ6MTIzJCIpOwogICAgICAgICB3b3Jr
ZXIub25lcnJvciA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbG9nKCJQQVNTOiBvbmVycm9y
IGludm9rZWQgZm9yIGFuIGludmFsaWQgc2NyaXB0IFVSTC4iKTsKKyAgICAgICAgICAgIGxvZygi
RkFJTDogb25lcnJvciBpbnZva2VkIGZvciBhbiBpbnZhbGlkIHNjcmlwdCBVUkwuIik7CiAgICAg
ICAgICAgICBydW5OZXh0VGVzdCgpOwogICAgICAgICB9CiAgICAgfSBjYXRjaCAoZXgpIHsKLSAg
ICAgICAgbG9nKCJGQUlMOiB1bmV4cGVjdGVkIGV4Y2VwdGlvbiAiICsgZXgpOworICAgICAgICBs
b2coIlBBU1M6IGludm9raW5nIFdvcmtlciBjb25zdHJ1Y3RvciB3aXRoIGludmFsaWQgc2NyaXB0
IFVSTCByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKCIgKyBleCArICIpIik7CiAgICAgICAgIHJ1
bk5leHRUZXN0KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3dvcmtlci1yZWRpcmVjdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvd29ya2VyLXJlZGlyZWN0LWV4cGVjdGVkLnR4dAppbmRleCAwYjE1YjNi
Li5iMTQxYzczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvd29y
a2VyLXJlZGlyZWN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvd29ya2VyLXJlZGlyZWN0LWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAKIFRlc3Qg
dGhhdCBsb2FkaW5nIHRoZSB3b3JrZXIncyBzY3JpcHQgZG9lcyBub3QgYWxsb3cgYSBjcm9zcyBv
cmlnaW4gcmVkaXJlY3QgKGJ1ZyAyNjE0NikKIAotU1VDQ0VTUzogdGhyZXcgZXJyb3Igd2hlbiBh
dHRlbXB0aW5nIHRvIGNyb3NzIG9yaWdpbiB3aGlsZSBsb2FkaW5nIHRoZSB3b3JrZXIgc2NyaXB0
LgorU1VDQ0VTUzogdGhyZXcgZXhjZXB0aW9uIChFcnJvcjogU0VDVVJJVFlfRVJSOiBET00gRXhj
ZXB0aW9uIDE4KSB3aGVuIGF0dGVtcHRpbmcgdG8gY3Jvc3Mgb3JpZ2luIHdoaWxlIGxvYWRpbmcg
dGhlIHdvcmtlciBzY3JpcHQuCiBTVUNDRVNTOiB0aHJldyBlcnJvciB3aGVuIGF0dGVtcHRpbmcg
dG8gcmVkaXJlY3RlZCBjcm9zcyBvcmlnaW4gd2hpbGUgbG9hZGluZyB0aGUgd29ya2VyIHNjcmlw
dC4KIERPTkUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3dv
cmtlci1yZWRpcmVjdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtl
ci1yZWRpcmVjdC5odG1sCmluZGV4IDhmNzIzOWQuLjk3Mjc0NGYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy93b3JrZXItcmVkaXJlY3QuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvd29ya2VyLXJlZGlyZWN0Lmh0bWwKQEAgLTcsNDAg
KzcsNTYgQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwogfQogCit2YXIgdGVz
dENhc2VzID0gWworICAgICJ0ZXN0Q3Jvc3NPcmlnaW5Mb2FkIiwKKyAgICAidGVzdENyb3NzT3Jp
Z2luUmVkaXJlY3RlZExvYWQiLAorXTsKK3ZhciB0ZXN0SW5kZXggPSAwOworCiBmdW5jdGlvbiBy
dW5OZXh0VGVzdCgpCiB7Ci0gICAgdGVzdEluZGV4Kys7Ci0gICAgaWYgKHRlc3RJbmRleCA+IHRv
dGFsVGVzdHMpIHsKKyAgICBpZiAodGVzdEluZGV4IDwgdGVzdENhc2VzLmxlbmd0aCkgeworICAg
ICAgICB0ZXN0SW5kZXgrKzsKKyAgICAgICAgd2luZG93W3Rlc3RDYXNlc1t0ZXN0SW5kZXggLSAx
XV0oKTsKKyAgICB9IGVsc2UgewogICAgICAgICBsb2coIkRPTkUiKTsKICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBldmFsKCJ0ZXN0IiArIHRl
c3RJbmRleCArICIoKTsiKTsKICAgICB9CiB9CiAKLWZ1bmN0aW9uIHRlc3QxKCkKK2Z1bmN0aW9u
IHRlc3RDcm9zc09yaWdpbkxvYWQoKQogewotICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCdo
dHRwOi8vbG9jYWxob3N0OjgwMDAvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlZGlyZWN0LXRh
cmdldC5qcycpOwotICAgIHdvcmtlci5vbmVycm9yID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAg
IGxvZygiU1VDQ0VTUzogdGhyZXcgZXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGNyb3NzIG9yaWdp
biB3aGlsZSBsb2FkaW5nIHRoZSB3b3JrZXIgc2NyaXB0LiIpOwotICAgICAgICBydW5OZXh0VGVz
dCgpOwotICAgIH0KLSAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAg
ICAgIGxvZygiRkFJTDogZXhlY3V0ZWQgc2NyaXB0IHdoZW4gcmVkaXJlY3QgY3Jvc3Mgb3JpZ2lu
LiIpOworICAgIHRyeSB7CisgICAgICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCdodHRwOi8v
bG9jYWxob3N0OjgwMDAvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlZGlyZWN0LXRhcmdldC5q
cycpOworICAgICAgICB3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICAg
ICAgbG9nKCJGQUlMOiB0aHJldyBlcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gY3Jvc3Mgb3JpZ2lu
IHdoaWxlIGxvYWRpbmcgdGhlIHdvcmtlciBzY3JpcHQuIik7CisgICAgICAgICAgICBydW5OZXh0
VGVzdCgpOworICAgICAgICB9CisgICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihl
dnQpIHsKKyAgICAgICAgICAgIGxvZygiRkFJTDogZXhlY3V0ZWQgc2NyaXB0IHdoZW4gcmVkaXJl
Y3QgY3Jvc3Mgb3JpZ2luLiIpOworICAgICAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICAgICAg
fQorICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGxvZygiU1VDQ0VTUzogdGhyZXcgZXhjZXB0
aW9uICgiICsgZXggKyAiKSB3aGVuIGF0dGVtcHRpbmcgdG8gY3Jvc3Mgb3JpZ2luIHdoaWxlIGxv
YWRpbmcgdGhlIHdvcmtlciBzY3JpcHQuIik7CiAgICAgICAgIHJ1bk5leHRUZXN0KCk7CiAgICAg
fQogfQogCi1mdW5jdGlvbiB0ZXN0MigpCitmdW5jdGlvbiB0ZXN0Q3Jvc3NPcmlnaW5SZWRpcmVj
dGVkTG9hZCgpCiB7Ci0gICAgdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoJy9yZXNvdXJjZXMvcmVk
aXJlY3QucGhwP3VybD1odHRwOi8vbG9jYWxob3N0OjgwMDAvd29ya2Vycy9yZXNvdXJjZXMvd29y
a2VyLXJlZGlyZWN0LXRhcmdldC5qcycpOwotICAgIHdvcmtlci5vbmVycm9yID0gZnVuY3Rpb24o
ZXZ0KSB7Ci0gICAgICAgIGxvZygiU1VDQ0VTUzogdGhyZXcgZXJyb3Igd2hlbiBhdHRlbXB0aW5n
IHRvIHJlZGlyZWN0ZWQgY3Jvc3Mgb3JpZ2luIHdoaWxlIGxvYWRpbmcgdGhlIHdvcmtlciBzY3Jp
cHQuIik7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotICAgIHdvcmtlci5vbm1lc3Nh
Z2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgbG9nKCJGQUlMOiBleGVjdXRlZCBzY3JpcHQg
d2hlbiByZWRpcmVjdCBjcm9zcyBvcmlnaW4uIik7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHdv
cmtlciA9IG5ldyBXb3JrZXIoJy9yZXNvdXJjZXMvcmVkaXJlY3QucGhwP3VybD1odHRwOi8vbG9j
YWxob3N0OjgwMDAvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlZGlyZWN0LXRhcmdldC5qcycp
OworICAgICAgICB3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICAgICAg
bG9nKCJTVUNDRVNTOiB0aHJldyBlcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gcmVkaXJlY3RlZCBj
cm9zcyBvcmlnaW4gd2hpbGUgbG9hZGluZyB0aGUgd29ya2VyIHNjcmlwdC4iKTsKKyAgICAgICAg
ICAgIHJ1bk5leHRUZXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICAgICAgbG9nKCJGQUlMOiBleGVjdXRlZCBzY3JpcHQg
d2hlbiByZWRpcmVjdCBjcm9zcyBvcmlnaW4uIik7CisgICAgICAgICAgICBydW5OZXh0VGVzdCgp
OworICAgICAgICB9CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgbG9nKCJGQUlMOiB1bmV4
cGVjdGVkIGV4Y2VwdGlvbiAiICsgZXgpOwogICAgICAgICBydW5OZXh0VGVzdCgpOwogICAgIH0K
IH0KQEAgLTUwLDggKzY2LDYgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewog
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAotdmFyIHRvdGFs
VGVzdHMgPSAyOwotdmFyIHRlc3RJbmRleCA9IDA7CiBydW5OZXh0VGVzdCgpOwogCiA8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggZGFkZGI4ZC4uYzU2MzhkMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAwOS0wNy0yOSAgSmlhbiBMaSAg
PGppYW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV29ya2VycyBuZWVkIHRvIHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIHBy
ZXNlbnRlZCB3aXRoIGludmFsaWQgVVJMcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI3NzcwCisKKyAgICAgICAgVGVzdHMgY292ZXJlZCBieSB3b3Jr
ZXItY29uc3RydWN0b3IuaHRtbCBhbmQgd29ya2VyLXJlZGlyZWN0Lmh0bWwuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnN0cnVjdFdvcmtlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2Vy
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNBTExCQUNLX0ZVTkNfREVDTCk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpXb3Jr
ZXIpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHMpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNj
cmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
U2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisKIDIwMDktMDctMjggIEFuYW50YW5hcmF5YW5hbiBJ
eWVuZ2FyICA8YW5hbnRhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1p
dHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29u
c3RydWN0b3IuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnN0cnVjdG9yLmNw
cAppbmRleCBlMTY4NmY3Li5iZGM1MGVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyQ29uc3RydWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
ZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTYyLDcgKzYyLDkgQEAgc3RhdGljIEpTT2JqZWN0KiBjb25z
dHJ1Y3RXb3JrZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogY29uc3RydWN0b3IsIGNvbnN0
IEEKICAgICAvLyBTZWUgc2VjdGlvbiA0LjguMiBzdGVwIDE0IG9mIFdlYldvcmtlcnMgZm9yIHdo
eSB0aGlzIGlzIHRoZSBsZXhpY2FsR2xvYmFsT2JqZWN0LiAKICAgICBET01XaW5kb3cqIHdpbmRv
dyA9IGFzSlNET01XaW5kb3coZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpOwog
Ci0gICAgUmVmUHRyPFdvcmtlcj4gd29ya2VyID0gV29ya2VyOjpjcmVhdGUoc2NyaXB0VVJMLCB3
aW5kb3ctPmRvY3VtZW50KCkpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFJlZlB0
cjxXb3JrZXI+IHdvcmtlciA9IFdvcmtlcjo6Y3JlYXRlKHNjcmlwdFVSTCwgd2luZG93LT5kb2N1
bWVudCgpLCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAogICAgIHJldHVy
biBhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCB3b3Jr
ZXIucmVsZWFzZSgpKSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdvcmtlckN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtl
ckN1c3RvbS5jcHAKaW5kZXggMWY4YWVhZi4uMDhlOGJlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcApAQCAtNzgsNyArNzgsMTAgQEAgQ0FMTEJB
Q0tfRlVOQ19ERUNMKFdvcmtlckNvbnN0cnVjdG9yKQogCiAgICAgLy8gQ3JlYXRlIHRoZSB3b3Jr
ZXIgb2JqZWN0LgogICAgIC8vIE5vdGU6IGl0J3MgT0sgdG8gbGV0IHRoaXMgUmVmUHRyIGdvIG91
dCBvZiBzY29wZSBiZWNhdXNlIHdlIGFsc28gY2FsbCBzZXRET01XcmFwcGVyKCksIHdoaWNoIGVm
ZmVjdGl2ZWx5IGhvbGRzIGEgcmVmZXJlbmNlIHRvIG9iai4KLSAgICBSZWZQdHI8V29ya2VyPiBv
YmogPSBXb3JrZXI6OmNyZWF0ZSh0b1dlYkNvcmVTdHJpbmcoc2NyaXB0VXJsKSwgY29udGV4dCk7
CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRyPFdvcmtlcj4gb2JqID0gV29y
a2VyOjpjcmVhdGUodG9XZWJDb3JlU3RyaW5nKHNjcmlwdFVybCksIGNvbnRleHQsIGVjKTsKKyAg
ICBpZiAoZWMpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKIAogICAgIC8vIFNldHVw
IHRoZSBzdGFuZGFyZCB3cmFwcGVyIG9iamVjdCBpbnRlcm5hbCBmaWVsZHMuCiAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyT2JqZWN0ID0gYXJncy5Ib2xkZXIoKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5j
cHAKaW5kZXggODY2Njg3Zi4uNDdkZDBlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dv
cmtlci5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTUwLDEyICs1MCwy
MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdvcmtlcjo6V29ya2VyKGNvbnN0IFN0cmlu
ZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorV29ya2VyOjpXb3JrZXIo
Y29uc3QgU3RyaW5nJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgIDogQWJzdHJhY3RXb3JrZXIoY29udGV4dCkKICAgICAsIG1fY29u
dGV4dFByb3h5KFdvcmtlckNvbnRleHRQcm94eTo6Y3JlYXRlKHRoaXMpKQogeworICAgIEtVUkwg
c2NyaXB0VVJMID0gY29udGV4dC0+Y29tcGxldGVVUkwodXJsKTsKKyAgICBpZiAodXJsLmlzRW1w
dHkoKSB8fCAhc2NyaXB0VVJMLmlzVmFsaWQoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWNvbnRleHQtPnNlY3VyaXR5T3Jp
Z2luKCktPmNhbkFjY2VzcyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNjcmlwdFVSTCkuZ2V0KCkp
KSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
CiAgICAgbV9zY3JpcHRMb2FkZXIgPSBuZXcgV29ya2VyU2NyaXB0TG9hZGVyKCk7Ci0gICAgbV9z
Y3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IHVybCwgQ29tcGxldGVVUkwsIERlbnlDcm9zc09yaWdpbkxvYWQsIHRoaXMpOworICAgIG1fc2Ny
aXB0TG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBz
Y3JpcHRVUkwsIERlbnlDcm9zc09yaWdpblJlZGlyZWN0LCB0aGlzKTsKICAgICBzZXRQZW5kaW5n
QWN0aXZpdHkodGhpcyk7ICAvLyBUaGUgd29ya2VyIGNvbnRleHQgZG9lcyBub3QgZXhpc3Qgd2hp
bGUgbG9hZGluZywgc28gd2UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgd29ya2VyIG9iamVjdCBpcyBu
b3QgY29sbGVjdGVkLCBhcyB3ZWxsIGFzIGl0cyBldmVudCBsaXN0ZW5lcnMuCiB9CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIu
aAppbmRleCA2YjhlZTYzLi5lNzZjMTQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCkBAIC01MSw3ICs1MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFdvcmtlciA6IHB1YmxpYyBBYnN0cmFjdFdv
cmtlciwgcHJpdmF0ZSBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V29ya2VyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmws
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
b3JrZXIodXJsLCBjb250ZXh0KSk7IH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V29ya2Vy
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBhZG9wdFJlZihuZXcgV29ya2VyKHVybCwg
Y29udGV4dCwgZWMpKTsgfQogICAgICAgICB+V29ya2VyKCk7CiAKICAgICAgICAgdmlydHVhbCBX
b3JrZXIqIHRvV29ya2VyKCkgeyByZXR1cm4gdGhpczsgfQpAQCAtNzIsNyArNzIsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9ubWVzc2FnZSgpIGNvbnN0
IHsgcmV0dXJuIG1fb25NZXNzYWdlTGlzdGVuZXIuZ2V0KCk7IH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIFdvcmtlcihjb25zdCBTdHJpbmcmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cisg
ICAgICAgIFdvcmtlcihjb25zdCBTdHJpbmcmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhj
ZXB0aW9uQ29kZSYgZWMpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZCgp
OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAgYi9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKaW5kZXggOWQ4OGI3NS4uZjU1ZDMxYiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgV29ya2Vy
Q29udGV4dDo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgY29uc3Qg
U3RyaW5nJiBjYWxsCiAKICAgICBmb3IgKFZlY3RvcjxLVVJMPjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBjb21wbGV0ZWRVUkxzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBXb3Jr
ZXJTY3JpcHRMb2FkZXIgc2NyaXB0TG9hZGVyOwotICAgICAgICBzY3JpcHRMb2FkZXIubG9hZFN5
bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaXQsIERvTm90Q29tcGxldGVV
UkwsIEFsbG93Q3Jvc3NPcmlnaW5Mb2FkKTsKKyAgICAgICAgc2NyaXB0TG9hZGVyLmxvYWRTeW5j
aHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKml0LCBBbGxvd0Nyb3NzT3JpZ2lu
UmVkaXJlY3QpOwogCiAgICAgICAgIC8vIElmIHRoZSBmZXRjaGluZyBhdHRlbXB0IGZhaWxlZCwg
dGhyb3cgYSBORVRXT1JLX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IGFsbCB0aGVzZSBzdGVwcy4K
ICAgICAgICAgaWYgKHNjcmlwdExvYWRlci5mYWlsZWQoKSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyLmNwcAppbmRleCAwOTNiZjA3Li4wMTYyYjI2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtNTAsNTUgKzUwLDMzIEBAIFdvcmtlclNjcmlwdExv
YWRlcjo6V29ya2VyU2NyaXB0TG9hZGVyKCkKIHsKIH0KIAotc3RhdGljIENyb3NzT3JpZ2luUmVk
aXJlY3RQb2xpY3kgdG9Dcm9zc09yaWdpblJlZGlyZWN0UG9saWN5KENyb3NzT3JpZ2luTG9hZFBv
bGljeSBjcm9zc09yaWdpbkxvYWRQb2xpY3kpCit2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9h
ZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgY29uc3QgS1VSTCYgdXJsLCBDcm9zc09yaWdpblJlZGlyZWN0UG9saWN5IGNyb3NzT3Jp
Z2luUmVkaXJlY3RQb2xpY3kpCiB7Ci0gICAgcmV0dXJuIChjcm9zc09yaWdpbkxvYWRQb2xpY3kg
PT0gRGVueUNyb3NzT3JpZ2luTG9hZCkgPyBEZW55Q3Jvc3NPcmlnaW5SZWRpcmVjdCA6IEFsbG93
Q3Jvc3NPcmlnaW5SZWRpcmVjdDsKLX0KKyAgICBtX3VybCA9IHVybDsKIAotdm9pZCBXb3JrZXJT
Y3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBVUkxDb21wbGV0aW9uUG9s
aWN5IHVybENvbXBsZXRpb25Qb2xpY3ksIENyb3NzT3JpZ2luTG9hZFBvbGljeSBjcm9zc09yaWdp
bkxvYWRQb2xpY3kpCi17Ci0gICAgT3duUHRyPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdChjcmVh
dGVSZXNvdXJjZVJlcXVlc3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdXJsLCB1cmxDb21wbGV0
aW9uUG9saWN5LCBjcm9zc09yaWdpbkxvYWRQb2xpY3kpKTsKKyAgICBPd25QdHI8UmVzb3VyY2VS
ZXF1ZXN0PiByZXF1ZXN0KGNyZWF0ZVJlc291cmNlUmVxdWVzdCgpKTsKICAgICBpZiAoIXJlcXVl
c3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5pc1dvcmtlckNvbnRleHQoKSk7Ci0gICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJl
c291cmNlU3luY2hyb25vdXNseShzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCksICpyZXF1ZXN0LCAqdGhpcywgQWxsb3dTdG9yZWRDcmVkZW50aWFscywg
dG9Dcm9zc09yaWdpblJlZGlyZWN0UG9saWN5KGNyb3NzT3JpZ2luTG9hZFBvbGljeSkpOworICAg
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoc3RhdGlj
X2Nhc3Q8V29ya2VyQ29udGV4dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLCAqcmVxdWVzdCwg
KnRoaXMsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIGNyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3kp
OwogfQogICAgIAotdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBTdHJp
bmcmIHVybCwgVVJMQ29tcGxldGlvblBvbGljeSB1cmxDb21wbGV0aW9uUG9saWN5LCBDcm9zc09y
aWdpbkxvYWRQb2xpY3kgY3Jvc3NPcmlnaW5Mb2FkUG9saWN5LCBXb3JrZXJTY3JpcHRMb2FkZXJD
bGllbnQqIGNsaWVudCkKK3ZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3Vz
bHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3Qg
S1VSTCYgdXJsLCBDcm9zc09yaWdpblJlZGlyZWN0UG9saWN5IGNyb3NzT3JpZ2luUmVkaXJlY3RQ
b2xpY3ksIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCogY2xpZW50KQogewogICAgIEFTU0VSVChj
bGllbnQpOwogICAgIG1fY2xpZW50ID0gY2xpZW50OworICAgIG1fdXJsID0gdXJsOwogCi0gICAg
T3duUHRyPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdChjcmVhdGVSZXNvdXJjZVJlcXVlc3Qoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgdXJsLCB1cmxDb21wbGV0aW9uUG9saWN5LCBjcm9zc09yaWdp
bkxvYWRQb2xpY3kpKTsKKyAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0KGNyZWF0
ZVJlc291cmNlUmVxdWVzdCgpKTsKICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fdGhyZWFkYWJsZUxvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCB0aGlzLCAqcmVxdWVzdCwgRG9Ob3RTZW5kTG9hZENhbGxiYWNr
cywgRG9Ob3RTbmlmZkNvbnRlbnQsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIHRvQ3Jvc3NPcmln
aW5SZWRpcmVjdFBvbGljeShjcm9zc09yaWdpbkxvYWRQb2xpY3kpKTsKKyAgICBtX3RocmVhZGFi
bGVMb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgdGhpcywgKnJlcXVlc3QsIERvTm90U2VuZExvYWRDYWxsYmFja3MsIERvTm90U25pZmZDb250
ZW50LCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBjcm9zc09yaWdpblJlZGlyZWN0UG9saWN5KTsK
IH0KIAotc3RhdGljIHZvaWQgbm90aWZ5TG9hZEVycm9yVGFzayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBXb3JrZXJTY3JpcHRMb2FkZXIqIGxvYWRlcikKK1Bhc3NPd25QdHI8UmVz
b3VyY2VSZXF1ZXN0PiBXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZVJlc291cmNlUmVxdWVzdCgp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwotICAgIGxvYWRlci0+bm90aWZ5RXJyb3Io
KTsKLX0KLQotUGFzc093blB0cjxSZXNvdXJjZVJlcXVlc3Q+IFdvcmtlclNjcmlwdExvYWRlcjo6
Y3JlYXRlUmVzb3VyY2VSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBVUkxDb21wbGV0aW9uUG9saWN5IHVybENv
bXBsZXRpb25Qb2xpY3ksIENyb3NzT3JpZ2luTG9hZFBvbGljeSBjcm9zc09yaWdpbkxvYWRQb2xp
Y3kpCi17Ci0gICAgaWYgKHVybENvbXBsZXRpb25Qb2xpY3kgPT0gQ29tcGxldGVVUkwpIHsKLSAg
ICAgICAgbV91cmwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5jb21wbGV0ZVVSTCh1cmwpOwot
ICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSB8fCAhbV91cmwuaXNWYWxpZCgpKSB7Ci0gICAgICAg
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2so
Jm5vdGlmeUxvYWRFcnJvclRhc2ssIHRoaXMpKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAg
ICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fdXJsID0gS1VSTCh1cmwpOwotCi0gICAgaWYg
KGNyb3NzT3JpZ2luTG9hZFBvbGljeSA9PSBEZW55Q3Jvc3NPcmlnaW5Mb2FkICYmICFzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3MoU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShtX3VybCkuZ2V0KCkpKSB7Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmbm90aWZ5TG9hZEVycm9yVGFzaywgdGhp
cykpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBPd25QdHI8UmVzb3VyY2VSZXF1
ZXN0PiByZXF1ZXN0KG5ldyBSZXNvdXJjZVJlcXVlc3QobV91cmwpKTsKICAgICByZXF1ZXN0LT5z
ZXRIVFRQTWV0aG9kKCJHRVQiKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5oIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCmlu
ZGV4IGY0NjVkN2YuLmUyN2U5ZjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuaAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgK
QEAgLTQyLDIyICs0MiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQ7CiAK
LSAgICBlbnVtIFVSTENvbXBsZXRpb25Qb2xpY3kgewotICAgICAgICBDb21wbGV0ZVVSTCwKLSAg
ICAgICAgRG9Ob3RDb21wbGV0ZVVSTAotICAgIH07Ci0KLSAgICBlbnVtIENyb3NzT3JpZ2luTG9h
ZFBvbGljeSB7Ci0gICAgICAgIERlbnlDcm9zc09yaWdpbkxvYWQsCi0gICAgICAgIEFsbG93Q3Jv
c3NPcmlnaW5Mb2FkCi0gICAgfTsKLQogICAgIGNsYXNzIFdvcmtlclNjcmlwdExvYWRlciA6IHB1
YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFdvcmtl
clNjcmlwdExvYWRlcigpOwogCi0gICAgICAgIHZvaWQgbG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdXJsLCBVUkxDb21wbGV0aW9uUG9saWN5
LCBDcm9zc09yaWdpbkxvYWRQb2xpY3kpOwotICAgICAgICB2b2lkIGxvYWRBc3luY2hyb25vdXNs
eShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB1cmwsIFVSTENvbXBsZXRp
b25Qb2xpY3ksIENyb3NzT3JpZ2luTG9hZFBvbGljeSwgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50
Kik7CisgICAgICAgIHZvaWQgbG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IEtVUkwmIHVybCwgQ3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeSk7CisgICAgICAg
IHZvaWQgbG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBL
VVJMJiB1cmwsIENyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3ksIFdvcmtlclNjcmlwdExvYWRlckNs
aWVudCopOwogCiAgICAgICAgIHZvaWQgbm90aWZ5RXJyb3IoKTsKIApAQCAtNzQsNyArNjQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DYW5jZWxsYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgUGFzc093blB0cjxSZXNvdXJjZVJlcXVlc3Q+IGNyZWF0ZVJlc291
cmNlUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB1cmwsIFVS
TENvbXBsZXRpb25Qb2xpY3ksIENyb3NzT3JpZ2luTG9hZFBvbGljeSk7CisgICAgICAgIFBhc3NP
d25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBjcmVhdGVSZXNvdXJjZVJlcXVlc3QoKTsKICAgICAgICAg
dm9pZCBub3RpZnlGaW5pc2hlZCgpOwogCiAgICAgICAgIFdvcmtlclNjcmlwdExvYWRlckNsaWVu
dCogbV9jbGllbnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33754</attachid>
            <date>2009-07-29 16:47:01 -0700</date>
            <delta_ts>2009-07-29 17:12:42 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>27770_2</filename>
            <type>text/plain</type>
            <size>18527</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2ZDZhZDQwLi44MmRhZjQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMDct
MjkgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdvcmtlcnMgbmVlZCB0byB0aHJvdyBhbiBleGNl
cHRpb24gd2hlbiBwcmVzZW50ZWQgd2l0aCBpbnZhbGlkIFVSTHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzc3MAorCisgICAgICAgIFVwZGF0ZSB3
b3JrZXItY29uc3RydWN0b3IuaHRtbCBhbmQgd29ya2VyLXJlZGlyZWN0Lmh0bWwgcGVyIHRoZSBi
ZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLWNvbnN0cnVj
dG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLWNvbnN0cnVj
dG9yLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtlci1yZWRpcmVjdC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtlci1yZWRpcmVj
dC5odG1sOgorCiAyMDA5LTA3LTI4ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuaWtvbGFzLnppbW1l
cm1hbm5AdG9yY2htb2JpbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZSBTdGFp
a29zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1jb25zdHJ1
Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnN0
cnVjdG9yLWV4cGVjdGVkLnR4dAppbmRleCAzMTFlMTliLi5mMWMyMmQwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVk
LnR4dApAQCAtMyw4ICszLDggQEAgVGVzdCBXb3JrZXIgY29uc3RydWN0b3IgZnVuY3Rpb25hbGl0
eS4gU2hvdWxkIHByaW50IGEgc2VyaWVzIG9mIFBBU1MgbWVzc2FnZXMsIGYKIFBBU1M6IHRvU3Ry
aW5nIGV4Y2VwdGlvbiBwcm9wYWdhdGVkIGNvcnJlY3RseS4KIFBBU1M6IHRyeWluZyB0byBjcmVh
dGUgd29ya2VycyByZWN1cnNpdmVseSByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKFJhbmdlRXJy
b3I6IE1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLikKIFBBU1M6IGludm9raW5nIFdv
cmtlciBjb25zdHJ1Y3RvciB3aXRob3V0IGFyZ3VtZW50cyByZXN1bHRlZCBpbiBhbiBleGNlcHRp
b24gKFN5bnRheEVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cykKLVBBU1M6IG9uZXJyb3IgaW52
b2tlZCBmb3IgYW4gZW1wdHkgc2NyaXB0IFVSTC4KLVBBU1M6IG9uZXJyb3IgaW52b2tlZCBmb3Ig
YW4gaW52YWxpZCBzY3JpcHQgVVJMLgorUEFTUzogaW52b2tpbmcgV29ya2VyIGNvbnN0cnVjdG9y
IHdpdGggZW1wdHkgc2NyaXB0IFVSTCByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKEVycm9yOiBT
WU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyKQorUEFTUzogaW52b2tpbmcgV29ya2VyIGNvbnN0
cnVjdG9yIHdpdGggaW52YWxpZCBzY3JpcHQgVVJMIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAo
RXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIpCiBQQVNTOiBvbmVycm9yIGludm9r
ZWQgZm9yIGEgc2NyaXB0IHRoYXQgY291bGQgbm90IGJlIGxvYWRlZC4KIFBBU1M6IFN1Y2Nlc3Nm
dWxseSBjcmVhdGVkIHdvcmtlci4KIERPTkUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy93b3JrZXItY29uc3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy93b3JrZXItY29uc3RydWN0b3IuaHRtbAppbmRleCAwZjgzYmUxLi45YTFjN2U4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnN0cnVjdG9yLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1jb25zdHJ1Y3Rvci5odG1sCkBAIC03
MiwxMSArNzIsMTEgQEAgZnVuY3Rpb24gdGVzdEVtcHR5U2NyaXB0VXJsKCkKICAgICB0cnkgewog
ICAgICAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigiIik7CiAgICAgICAgIHdvcmtlci5vbmVy
cm9yID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBsb2coIlBBU1M6IG9uZXJyb3IgaW52b2tl
ZCBmb3IgYW4gZW1wdHkgc2NyaXB0IFVSTC4iKTsKKyAgICAgICAgICAgIGxvZygiRkFJTDogb25l
cnJvciBpbnZva2VkIGZvciBhbiBlbXB0eSBzY3JpcHQgVVJMLiIpOwogICAgICAgICAgICAgcnVu
TmV4dFRlc3QoKTsKICAgICAgICAgfQogICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICAgIGxvZygi
RkFJTDogdW5leHBlY3RlZCBleGNlcHRpb24gIiArIGV4KTsKKyAgICAgICAgbG9nKCJQQVNTOiBp
bnZva2luZyBXb3JrZXIgY29uc3RydWN0b3Igd2l0aCBlbXB0eSBzY3JpcHQgVVJMIHJlc3VsdGVk
IGluIGFuIGV4Y2VwdGlvbiAoIiArIGV4ICsgIikiKTsKICAgICAgICAgcnVuTmV4dFRlc3QoKTsK
ICAgICB9CiB9CkBAIC04NCwxMyArODQsMTMgQEAgZnVuY3Rpb24gdGVzdEVtcHR5U2NyaXB0VXJs
KCkKIGZ1bmN0aW9uIHRlc3RJbnZhbGlkU2NyaXB0VXJsKCkKIHsKICAgICB0cnkgewotICAgICAg
ICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigiaW52YWxpZHVybDovLyIpOworICAgICAgICB2YXIg
d29ya2VyID0gbmV3IFdvcmtlcigiaHR0cDovL2ludmFsaWQ6MTIzJCIpOwogICAgICAgICB3b3Jr
ZXIub25lcnJvciA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbG9nKCJQQVNTOiBvbmVycm9y
IGludm9rZWQgZm9yIGFuIGludmFsaWQgc2NyaXB0IFVSTC4iKTsKKyAgICAgICAgICAgIGxvZygi
RkFJTDogb25lcnJvciBpbnZva2VkIGZvciBhbiBpbnZhbGlkIHNjcmlwdCBVUkwuIik7CiAgICAg
ICAgICAgICBydW5OZXh0VGVzdCgpOwogICAgICAgICB9CiAgICAgfSBjYXRjaCAoZXgpIHsKLSAg
ICAgICAgbG9nKCJGQUlMOiB1bmV4cGVjdGVkIGV4Y2VwdGlvbiAiICsgZXgpOworICAgICAgICBs
b2coIlBBU1M6IGludm9raW5nIFdvcmtlciBjb25zdHJ1Y3RvciB3aXRoIGludmFsaWQgc2NyaXB0
IFVSTCByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKCIgKyBleCArICIpIik7CiAgICAgICAgIHJ1
bk5leHRUZXN0KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3dvcmtlci1yZWRpcmVjdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvd29ya2VyLXJlZGlyZWN0LWV4cGVjdGVkLnR4dAppbmRleCAwYjE1YjNi
Li5iMTQxYzczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvd29y
a2VyLXJlZGlyZWN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvd29ya2VyLXJlZGlyZWN0LWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAKIFRlc3Qg
dGhhdCBsb2FkaW5nIHRoZSB3b3JrZXIncyBzY3JpcHQgZG9lcyBub3QgYWxsb3cgYSBjcm9zcyBv
cmlnaW4gcmVkaXJlY3QgKGJ1ZyAyNjE0NikKIAotU1VDQ0VTUzogdGhyZXcgZXJyb3Igd2hlbiBh
dHRlbXB0aW5nIHRvIGNyb3NzIG9yaWdpbiB3aGlsZSBsb2FkaW5nIHRoZSB3b3JrZXIgc2NyaXB0
LgorU1VDQ0VTUzogdGhyZXcgZXhjZXB0aW9uIChFcnJvcjogU0VDVVJJVFlfRVJSOiBET00gRXhj
ZXB0aW9uIDE4KSB3aGVuIGF0dGVtcHRpbmcgdG8gY3Jvc3Mgb3JpZ2luIHdoaWxlIGxvYWRpbmcg
dGhlIHdvcmtlciBzY3JpcHQuCiBTVUNDRVNTOiB0aHJldyBlcnJvciB3aGVuIGF0dGVtcHRpbmcg
dG8gcmVkaXJlY3RlZCBjcm9zcyBvcmlnaW4gd2hpbGUgbG9hZGluZyB0aGUgd29ya2VyIHNjcmlw
dC4KIERPTkUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3dv
cmtlci1yZWRpcmVjdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtl
ci1yZWRpcmVjdC5odG1sCmluZGV4IDhmNzIzOWQuLjk3Mjc0NGYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy93b3JrZXItcmVkaXJlY3QuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvd29ya2VyLXJlZGlyZWN0Lmh0bWwKQEAgLTcsNDAg
KzcsNTYgQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwogfQogCit2YXIgdGVz
dENhc2VzID0gWworICAgICJ0ZXN0Q3Jvc3NPcmlnaW5Mb2FkIiwKKyAgICAidGVzdENyb3NzT3Jp
Z2luUmVkaXJlY3RlZExvYWQiLAorXTsKK3ZhciB0ZXN0SW5kZXggPSAwOworCiBmdW5jdGlvbiBy
dW5OZXh0VGVzdCgpCiB7Ci0gICAgdGVzdEluZGV4Kys7Ci0gICAgaWYgKHRlc3RJbmRleCA+IHRv
dGFsVGVzdHMpIHsKKyAgICBpZiAodGVzdEluZGV4IDwgdGVzdENhc2VzLmxlbmd0aCkgeworICAg
ICAgICB0ZXN0SW5kZXgrKzsKKyAgICAgICAgd2luZG93W3Rlc3RDYXNlc1t0ZXN0SW5kZXggLSAx
XV0oKTsKKyAgICB9IGVsc2UgewogICAgICAgICBsb2coIkRPTkUiKTsKICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBldmFsKCJ0ZXN0IiArIHRl
c3RJbmRleCArICIoKTsiKTsKICAgICB9CiB9CiAKLWZ1bmN0aW9uIHRlc3QxKCkKK2Z1bmN0aW9u
IHRlc3RDcm9zc09yaWdpbkxvYWQoKQogewotICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCdo
dHRwOi8vbG9jYWxob3N0OjgwMDAvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlZGlyZWN0LXRh
cmdldC5qcycpOwotICAgIHdvcmtlci5vbmVycm9yID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAg
IGxvZygiU1VDQ0VTUzogdGhyZXcgZXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGNyb3NzIG9yaWdp
biB3aGlsZSBsb2FkaW5nIHRoZSB3b3JrZXIgc2NyaXB0LiIpOwotICAgICAgICBydW5OZXh0VGVz
dCgpOwotICAgIH0KLSAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAg
ICAgIGxvZygiRkFJTDogZXhlY3V0ZWQgc2NyaXB0IHdoZW4gcmVkaXJlY3QgY3Jvc3Mgb3JpZ2lu
LiIpOworICAgIHRyeSB7CisgICAgICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCdodHRwOi8v
bG9jYWxob3N0OjgwMDAvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlZGlyZWN0LXRhcmdldC5q
cycpOworICAgICAgICB3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICAg
ICAgbG9nKCJGQUlMOiB0aHJldyBlcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gY3Jvc3Mgb3JpZ2lu
IHdoaWxlIGxvYWRpbmcgdGhlIHdvcmtlciBzY3JpcHQuIik7CisgICAgICAgICAgICBydW5OZXh0
VGVzdCgpOworICAgICAgICB9CisgICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihl
dnQpIHsKKyAgICAgICAgICAgIGxvZygiRkFJTDogZXhlY3V0ZWQgc2NyaXB0IHdoZW4gcmVkaXJl
Y3QgY3Jvc3Mgb3JpZ2luLiIpOworICAgICAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICAgICAg
fQorICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGxvZygiU1VDQ0VTUzogdGhyZXcgZXhjZXB0
aW9uICgiICsgZXggKyAiKSB3aGVuIGF0dGVtcHRpbmcgdG8gY3Jvc3Mgb3JpZ2luIHdoaWxlIGxv
YWRpbmcgdGhlIHdvcmtlciBzY3JpcHQuIik7CiAgICAgICAgIHJ1bk5leHRUZXN0KCk7CiAgICAg
fQogfQogCi1mdW5jdGlvbiB0ZXN0MigpCitmdW5jdGlvbiB0ZXN0Q3Jvc3NPcmlnaW5SZWRpcmVj
dGVkTG9hZCgpCiB7Ci0gICAgdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoJy9yZXNvdXJjZXMvcmVk
aXJlY3QucGhwP3VybD1odHRwOi8vbG9jYWxob3N0OjgwMDAvd29ya2Vycy9yZXNvdXJjZXMvd29y
a2VyLXJlZGlyZWN0LXRhcmdldC5qcycpOwotICAgIHdvcmtlci5vbmVycm9yID0gZnVuY3Rpb24o
ZXZ0KSB7Ci0gICAgICAgIGxvZygiU1VDQ0VTUzogdGhyZXcgZXJyb3Igd2hlbiBhdHRlbXB0aW5n
IHRvIHJlZGlyZWN0ZWQgY3Jvc3Mgb3JpZ2luIHdoaWxlIGxvYWRpbmcgdGhlIHdvcmtlciBzY3Jp
cHQuIik7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotICAgIHdvcmtlci5vbm1lc3Nh
Z2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgbG9nKCJGQUlMOiBleGVjdXRlZCBzY3JpcHQg
d2hlbiByZWRpcmVjdCBjcm9zcyBvcmlnaW4uIik7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHdv
cmtlciA9IG5ldyBXb3JrZXIoJy9yZXNvdXJjZXMvcmVkaXJlY3QucGhwP3VybD1odHRwOi8vbG9j
YWxob3N0OjgwMDAvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlZGlyZWN0LXRhcmdldC5qcycp
OworICAgICAgICB3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICAgICAg
bG9nKCJTVUNDRVNTOiB0aHJldyBlcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gcmVkaXJlY3RlZCBj
cm9zcyBvcmlnaW4gd2hpbGUgbG9hZGluZyB0aGUgd29ya2VyIHNjcmlwdC4iKTsKKyAgICAgICAg
ICAgIHJ1bk5leHRUZXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICAgICAgbG9nKCJGQUlMOiBleGVjdXRlZCBzY3JpcHQg
d2hlbiByZWRpcmVjdCBjcm9zcyBvcmlnaW4uIik7CisgICAgICAgICAgICBydW5OZXh0VGVzdCgp
OworICAgICAgICB9CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgbG9nKCJGQUlMOiB1bmV4
cGVjdGVkIGV4Y2VwdGlvbiAiICsgZXgpOwogICAgICAgICBydW5OZXh0VGVzdCgpOwogICAgIH0K
IH0KQEAgLTUwLDggKzY2LDYgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewog
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAotdmFyIHRvdGFs
VGVzdHMgPSAyOwotdmFyIHRlc3RJbmRleCA9IDA7CiBydW5OZXh0VGVzdCgpOwogCiA8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggZGFkZGI4ZC4uYzU2MzhkMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAwOS0wNy0yOSAgSmlhbiBMaSAg
PGppYW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV29ya2VycyBuZWVkIHRvIHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIHBy
ZXNlbnRlZCB3aXRoIGludmFsaWQgVVJMcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI3NzcwCisKKyAgICAgICAgVGVzdHMgY292ZXJlZCBieSB3b3Jr
ZXItY29uc3RydWN0b3IuaHRtbCBhbmQgd29ya2VyLXJlZGlyZWN0Lmh0bWwuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnN0cnVjdFdvcmtlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2Vy
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNBTExCQUNLX0ZVTkNfREVDTCk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpXb3Jr
ZXIpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHMpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNj
cmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
U2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisKIDIwMDktMDctMjggIEFuYW50YW5hcmF5YW5hbiBJ
eWVuZ2FyICA8YW5hbnRhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1p
dHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29u
c3RydWN0b3IuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnN0cnVjdG9yLmNw
cAppbmRleCBlMTY4NmY3Li45OTQzY2ZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyQ29uc3RydWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
ZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTYyLDcgKzYyLDEyIEBAIHN0YXRpYyBKU09iamVjdCogY29u
c3RydWN0V29ya2VyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBjb25z
dCBBCiAgICAgLy8gU2VlIHNlY3Rpb24gNC44LjIgc3RlcCAxNCBvZiBXZWJXb3JrZXJzIGZvciB3
aHkgdGhpcyBpcyB0aGUgbGV4aWNhbEdsb2JhbE9iamVjdC4gCiAgICAgRE9NV2luZG93KiB3aW5k
b3cgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPmltcGwoKTsK
IAotICAgIFJlZlB0cjxXb3JrZXI+IHdvcmtlciA9IFdvcmtlcjo6Y3JlYXRlKHNjcmlwdFVSTCwg
d2luZG93LT5kb2N1bWVudCgpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQ
dHI8V29ya2VyPiB3b3JrZXIgPSBXb3JrZXI6OmNyZWF0ZShzY3JpcHRVUkwsIHdpbmRvdy0+ZG9j
dW1lbnQoKSwgZWMpOworICAgIGlmIChlYykgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgZWMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAKICAgICByZXR1cm4gYXNPYmplY3Qo
dG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgd29ya2VyLnJlbGVhc2Uo
KSkpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJD
dXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3Bw
CmluZGV4IDFmOGFlYWYuLjA4ZThiZTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdvcmtlckN1c3RvbS5jcHAKQEAgLTc4LDcgKzc4LDEwIEBAIENBTExCQUNLX0ZVTkNfREVD
TChXb3JrZXJDb25zdHJ1Y3RvcikKIAogICAgIC8vIENyZWF0ZSB0aGUgd29ya2VyIG9iamVjdC4K
ICAgICAvLyBOb3RlOiBpdCdzIE9LIHRvIGxldCB0aGlzIFJlZlB0ciBnbyBvdXQgb2Ygc2NvcGUg
YmVjYXVzZSB3ZSBhbHNvIGNhbGwgc2V0RE9NV3JhcHBlcigpLCB3aGljaCBlZmZlY3RpdmVseSBo
b2xkcyBhIHJlZmVyZW5jZSB0byBvYmouCi0gICAgUmVmUHRyPFdvcmtlcj4gb2JqID0gV29ya2Vy
OjpjcmVhdGUodG9XZWJDb3JlU3RyaW5nKHNjcmlwdFVybCksIGNvbnRleHQpOworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIFJlZlB0cjxXb3JrZXI+IG9iaiA9IFdvcmtlcjo6Y3JlYXRl
KHRvV2ViQ29yZVN0cmluZyhzY3JpcHRVcmwpLCBjb250ZXh0LCBlYyk7CisgICAgaWYgKGVjKQor
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7CiAKICAgICAvLyBTZXR1cCB0aGUgc3RhbmRh
cmQgd3JhcHBlciBvYmplY3QgaW50ZXJuYWwgZmllbGRzLgogICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcHBlck9iamVjdCA9IGFyZ3MuSG9sZGVyKCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyLmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4IDg2
NjY4N2YuLjQ3ZGQwZTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisr
KyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCkBAIC01MCwxMiArNTAsMjMgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1Xb3JrZXI6Oldvcmtlcihjb25zdCBTdHJpbmcmIHVybCwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK1dvcmtlcjo6V29ya2VyKGNvbnN0IFN0cmlu
ZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICA6IEFic3RyYWN0V29ya2VyKGNvbnRleHQpCiAgICAgLCBtX2NvbnRleHRQcm94eShX
b3JrZXJDb250ZXh0UHJveHk6OmNyZWF0ZSh0aGlzKSkKIHsKKyAgICBLVVJMIHNjcmlwdFVSTCA9
IGNvbnRleHQtPmNvbXBsZXRlVVJMKHVybCk7CisgICAgaWYgKHVybC5pc0VtcHR5KCkgfHwgIXNj
cmlwdFVSTC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKCFjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5B
Y2Nlc3MoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzY3JpcHRVUkwpLmdldCgpKSkgeworICAgICAg
ICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1fc2Ny
aXB0TG9hZGVyID0gbmV3IFdvcmtlclNjcmlwdExvYWRlcigpOwotICAgIG1fc2NyaXB0TG9hZGVy
LT5sb2FkQXN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB1cmwsIENvbXBs
ZXRlVVJMLCBEZW55Q3Jvc3NPcmlnaW5Mb2FkLCB0aGlzKTsKKyAgICBtX3NjcmlwdExvYWRlci0+
bG9hZEFzeW5jaHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2NyaXB0VVJMLCBE
ZW55Q3Jvc3NPcmlnaW5SZWRpcmVjdCwgdGhpcyk7CiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRo
aXMpOyAgLy8gVGhlIHdvcmtlciBjb250ZXh0IGRvZXMgbm90IGV4aXN0IHdoaWxlIGxvYWRpbmcs
IHNvIHdlIG11c3QgZW5zdXJlIHRoYXQgdGhlIHdvcmtlciBvYmplY3QgaXMgbm90IGNvbGxlY3Rl
ZCwgYXMgd2VsbCBhcyBpdHMgZXZlbnQgbGlzdGVuZXJzLgogfQogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmggYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKaW5kZXggNmI4
ZWU2My4uZTc2YzE0NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCisrKyBi
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICBjbGFzcyBXb3JrZXIgOiBwdWJsaWMgQWJzdHJhY3RXb3JrZXIsIHByaXZh
dGUgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdvcmtlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgV29ya2VyKHVybCwg
Y29udGV4dCkpOyB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdvcmtlcj4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRp
b25Db2RlJiBlYykgeyByZXR1cm4gYWRvcHRSZWYobmV3IFdvcmtlcih1cmwsIGNvbnRleHQsIGVj
KSk7IH0KICAgICAgICAgfldvcmtlcigpOwogCiAgICAgICAgIHZpcnR1YWwgV29ya2VyKiB0b1dv
cmtlcigpIHsgcmV0dXJuIHRoaXM7IH0KQEAgLTcyLDcgKzcyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBFdmVudExpc3RlbmVyKiBvbm1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBt
X29uTWVzc2FnZUxpc3RlbmVyLmdldCgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBXb3Jr
ZXIoY29uc3QgU3RyaW5nJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgICAgICBXb3Jr
ZXIoY29uc3QgU3RyaW5nJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUm
IGVjKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoKTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwIGIvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckNvbnRleHQuY3BwCmluZGV4IDlkODhiNzUuLmY1NWQzMWIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIFdvcmtlckNvbnRleHQ6Omlt
cG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIGNvbnN0IFN0cmluZyYgY2Fs
bAogCiAgICAgZm9yIChWZWN0b3I8S1VSTD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29tcGxldGVk
VVJMcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgV29ya2VyU2NyaXB0TG9h
ZGVyIHNjcmlwdExvYWRlcjsKLSAgICAgICAgc2NyaXB0TG9hZGVyLmxvYWRTeW5jaHJvbm91c2x5
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKml0LCBEb05vdENvbXBsZXRlVVJMLCBBbGxvd0Ny
b3NzT3JpZ2luTG9hZCk7CisgICAgICAgIHNjcmlwdExvYWRlci5sb2FkU3luY2hyb25vdXNseShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppdCwgQWxsb3dDcm9zc09yaWdpblJlZGlyZWN0KTsK
IAogICAgICAgICAvLyBJZiB0aGUgZmV0Y2hpbmcgYXR0ZW1wdCBmYWlsZWQsIHRocm93IGEgTkVU
V09SS19FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCBhbGwgdGhlc2Ugc3RlcHMuCiAgICAgICAgIGlm
IChzY3JpcHRMb2FkZXIuZmFpbGVkKCkpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5jcHAKaW5kZXggMDkzYmYwNy4uMDE2MmIyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlw
dExvYWRlci5jcHAKQEAgLTUwLDU1ICs1MCwzMyBAQCBXb3JrZXJTY3JpcHRMb2FkZXI6Oldvcmtl
clNjcmlwdExvYWRlcigpCiB7CiB9CiAKLXN0YXRpYyBDcm9zc09yaWdpblJlZGlyZWN0UG9saWN5
IHRvQ3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeShDcm9zc09yaWdpbkxvYWRQb2xpY3kgY3Jvc3NP
cmlnaW5Mb2FkUG9saWN5KQordm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91
c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0
IEtVUkwmIHVybCwgQ3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeSBjcm9zc09yaWdpblJlZGlyZWN0
UG9saWN5KQogewotICAgIHJldHVybiAoY3Jvc3NPcmlnaW5Mb2FkUG9saWN5ID09IERlbnlDcm9z
c09yaWdpbkxvYWQpID8gRGVueUNyb3NzT3JpZ2luUmVkaXJlY3QgOiBBbGxvd0Nyb3NzT3JpZ2lu
UmVkaXJlY3Q7Ci19CisgICAgbV91cmwgPSB1cmw7CiAKLXZvaWQgV29ya2VyU2NyaXB0TG9hZGVy
Ojpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgVVJMQ29tcGxldGlvblBvbGljeSB1cmxDb21w
bGV0aW9uUG9saWN5LCBDcm9zc09yaWdpbkxvYWRQb2xpY3kgY3Jvc3NPcmlnaW5Mb2FkUG9saWN5
KQotewotICAgIE93blB0cjxSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3QoY3JlYXRlUmVzb3VyY2VS
ZXF1ZXN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHVybCwgdXJsQ29tcGxldGlvblBvbGljeSwg
Y3Jvc3NPcmlnaW5Mb2FkUG9saWN5KSk7CisgICAgT3duUHRyPFJlc291cmNlUmVxdWVzdD4gcmVx
dWVzdChjcmVhdGVSZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAg
ICByZXR1cm47CiAKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJD
b250ZXh0KCkpOwotICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpLCAqcmVxdWVzdCwgKnRoaXMsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIHRvQ3Jvc3NPcmln
aW5SZWRpcmVjdFBvbGljeShjcm9zc09yaWdpbkxvYWRQb2xpY3kpKTsKKyAgICBXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHN0YXRpY19jYXN0PFdvcmtl
ckNvbnRleHQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSwgKnJlcXVlc3QsICp0aGlzLCBBbGxv
d1N0b3JlZENyZWRlbnRpYWxzLCBjcm9zc09yaWdpblJlZGlyZWN0UG9saWN5KTsKIH0KICAgICAK
LXZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIFVS
TENvbXBsZXRpb25Qb2xpY3kgdXJsQ29tcGxldGlvblBvbGljeSwgQ3Jvc3NPcmlnaW5Mb2FkUG9s
aWN5IGNyb3NzT3JpZ2luTG9hZFBvbGljeSwgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50KiBjbGll
bnQpCit2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwg
Q3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeSBjcm9zc09yaWdpblJlZGlyZWN0UG9saWN5LCBXb3Jr
ZXJTY3JpcHRMb2FkZXJDbGllbnQqIGNsaWVudCkKIHsKICAgICBBU1NFUlQoY2xpZW50KTsKICAg
ICBtX2NsaWVudCA9IGNsaWVudDsKKyAgICBtX3VybCA9IHVybDsKIAotICAgIE93blB0cjxSZXNv
dXJjZVJlcXVlc3Q+IHJlcXVlc3QoY3JlYXRlUmVzb3VyY2VSZXF1ZXN0KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIHVybCwgdXJsQ29tcGxldGlvblBvbGljeSwgY3Jvc3NPcmlnaW5Mb2FkUG9saWN5
KSk7CisgICAgT3duUHRyPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdChjcmVhdGVSZXNvdXJjZVJl
cXVlc3QoKSk7CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Ro
cmVhZGFibGVMb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgdGhpcywgKnJlcXVlc3QsIERvTm90U2VuZExvYWRDYWxsYmFja3MsIERvTm90U25p
ZmZDb250ZW50LCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCB0b0Nyb3NzT3JpZ2luUmVkaXJlY3RQ
b2xpY3koY3Jvc3NPcmlnaW5Mb2FkUG9saWN5KSk7CisgICAgbV90aHJlYWRhYmxlTG9hZGVyID0g
VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHRoaXMsICpy
ZXF1ZXN0LCBEb05vdFNlbmRMb2FkQ2FsbGJhY2tzLCBEb05vdFNuaWZmQ29udGVudCwgQWxsb3dT
dG9yZWRDcmVkZW50aWFscywgY3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeSk7CiB9CiAKLXN0YXRp
YyB2b2lkIG5vdGlmeUxvYWRFcnJvclRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgV29ya2VyU2NyaXB0TG9hZGVyKiBsb2FkZXIpCitQYXNzT3duUHRyPFJlc291cmNlUmVxdWVz
dD4gV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJlcXVlc3QoKQogewotICAgIFVO
VVNFRF9QQVJBTShjb250ZXh0KTsKLSAgICBsb2FkZXItPm5vdGlmeUVycm9yKCk7Ci19Ci0KLVBh
c3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZVJlc291
cmNlUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBjb25zdCBTdHJpbmcmIHVybCwgVVJMQ29tcGxldGlvblBvbGljeSB1cmxDb21wbGV0aW9uUG9s
aWN5LCBDcm9zc09yaWdpbkxvYWRQb2xpY3kgY3Jvc3NPcmlnaW5Mb2FkUG9saWN5KQotewotICAg
IGlmICh1cmxDb21wbGV0aW9uUG9saWN5ID09IENvbXBsZXRlVVJMKSB7Ci0gICAgICAgIG1fdXJs
ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+Y29tcGxldGVVUkwodXJsKTsKLSAgICAgICAgaWYg
KHVybC5pc0VtcHR5KCkgfHwgIW1fdXJsLmlzVmFsaWQoKSkgewotICAgICAgICAgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZub3RpZnlMb2Fk
RXJyb3JUYXNrLCB0aGlzKSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAg
IH0gZWxzZQotICAgICAgICBtX3VybCA9IEtVUkwodXJsKTsKLQotICAgIGlmIChjcm9zc09yaWdp
bkxvYWRQb2xpY3kgPT0gRGVueUNyb3NzT3JpZ2luTG9hZCAmJiAhc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
bV91cmwpLmdldCgpKSkgewotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFz
ayhjcmVhdGVDYWxsYmFja1Rhc2soJm5vdGlmeUxvYWRFcnJvclRhc2ssIHRoaXMpKTsKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotCiAgICAgT3duUHRyPFJlc291cmNlUmVxdWVzdD4gcmVxdWVz
dChuZXcgUmVzb3VyY2VSZXF1ZXN0KG1fdXJsKSk7CiAgICAgcmVxdWVzdC0+c2V0SFRUUE1ldGhv
ZCgiR0VUIik7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuaCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBmNDY1ZDdm
Li5lMjdlOWYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCkBAIC00MiwyMiAr
NDIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiAgICAgY2xhc3MgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50OwogCi0gICAgZW51bSBV
UkxDb21wbGV0aW9uUG9saWN5IHsKLSAgICAgICAgQ29tcGxldGVVUkwsCi0gICAgICAgIERvTm90
Q29tcGxldGVVUkwKLSAgICB9OwotCi0gICAgZW51bSBDcm9zc09yaWdpbkxvYWRQb2xpY3kgewot
ICAgICAgICBEZW55Q3Jvc3NPcmlnaW5Mb2FkLAotICAgICAgICBBbGxvd0Nyb3NzT3JpZ2luTG9h
ZAotICAgIH07Ci0KICAgICBjbGFzcyBXb3JrZXJTY3JpcHRMb2FkZXIgOiBwdWJsaWMgVGhyZWFk
YWJsZUxvYWRlckNsaWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBXb3JrZXJTY3JpcHRMb2Fk
ZXIoKTsKIAotICAgICAgICB2b2lkIGxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIHVybCwgVVJMQ29tcGxldGlvblBvbGljeSwgQ3Jvc3NPcmln
aW5Mb2FkUG9saWN5KTsKLSAgICAgICAgdm9pZCBsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdXJsLCBVUkxDb21wbGV0aW9uUG9saWN5LCBD
cm9zc09yaWdpbkxvYWRQb2xpY3ksIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCopOworICAgICAg
ICB2b2lkIGxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBL
VVJMJiB1cmwsIENyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3kpOworICAgICAgICB2b2lkIGxvYWRB
c3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgS1VSTCYgdXJsLCBD
cm9zc09yaWdpblJlZGlyZWN0UG9saWN5LCBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQqKTsKIAog
ICAgICAgICB2b2lkIG5vdGlmeUVycm9yKCk7CiAKQEAgLTc0LDcgKzY0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2FuY2VsbGF0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIFBhc3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBjcmVhdGVSZXNvdXJjZVJlcXVlc3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdXJsLCBVUkxDb21wbGV0aW9u
UG9saWN5LCBDcm9zc09yaWdpbkxvYWRQb2xpY3kpOworICAgICAgICBQYXNzT3duUHRyPFJlc291
cmNlUmVxdWVzdD4gY3JlYXRlUmVzb3VyY2VSZXF1ZXN0KCk7CiAgICAgICAgIHZvaWQgbm90aWZ5
RmluaXNoZWQoKTsKIAogICAgICAgICBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQqIG1fY2xpZW50
Owo=
</data>
<flag name="review"
          id="17961"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>