<?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>62920</bug_id>
          
          <creation_ts>2011-06-17 18:11:20 -0700</creation_ts>
          <short_desc>JSONP is unnecessarily slow</short_desc>
          <delta_ts>2011-06-19 19:58:29 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>62927</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>ossy</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>422999</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-06-17 18:11:20 -0700</bug_when>
    <thetext>JSONP is unnecessarily slow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423002</commentid>
    <comment_count>1</comment_count>
      <attachid>97677</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-06-17 18:17:16 -0700</bug_when>
    <thetext>Created attachment 97677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423006</commentid>
    <comment_count>2</comment_count>
      <attachid>97677</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-06-17 18:37:30 -0700</bug_when>
    <thetext>Comment on attachment 97677
Patch

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

R+, with changes above.

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:766
&gt; +            JSValue baseObject(globalObject);

Please either (1) make this throw the correct errors, or (2) file a bug, add a comment with the bug number here.

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:227
&gt; +            return TokAssign;

TokSemi!

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:230
&gt; +            while (m_ptr &lt; m_end &amp;&amp; (isASCIIAlphanumeric(*m_ptr) || *m_ptr == &apos;_&apos; || *m_ptr == &apos;$&apos;))

I think this while loop is double-checking the identifier start? - not a bug per se, but I think you could add an increment to m_ptr prior to the while &amp; skip a redundant check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423037</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-06-17 21:27:28 -0700</bug_when>
    <thetext>Committed r89184: &lt;http://trac.webkit.org/changeset/89184&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423089</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-06-18 01:48:06 -0700</bug_when>
    <thetext>Reopen, because it was rolled out by http://trac.webkit.org/changeset/89192
SL fails: http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20%28Tests%29/r89184%20%2830505%29/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423383</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-06-19 12:50:03 -0700</bug_when>
    <thetext>Committed r89219: &lt;http://trac.webkit.org/changeset/89219&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423427</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-19 19:49:37 -0700</bug_when>
    <thetext>fast/workers/worker-script-error.html is failing on all bots:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r89219%20(30527)/fast/workers/worker-script-error-pretty-diff.html

-PASS: onerror invoked for a script that has script error &apos;ReferenceError: Can&apos;t find variable: foo&apos; at line 1.
-PASS: event listener invoked for a script that has script error &apos;ReferenceError: Can&apos;t find variable: foo&apos; at line 1.
+PASS: onerror invoked for a script that has script error &apos;ReferenceError: Can&apos;t find variable: foo&apos; at line 0.
+PASS: event listener invoked for a script that has script error &apos;ReferenceError: Can&apos;t find variable: foo&apos; at line 0.

This is change intentional?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423429</commentid>
    <comment_count>7</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-06-19 19:58:29 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; fast/workers/worker-script-error.html is failing on all bots:
&gt; http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r89219%20(30527)/fast/workers/worker-script-error-pretty-diff.html
&gt; 
&gt; -PASS: onerror invoked for a script that has script error &apos;ReferenceError: Can&apos;t find variable: foo&apos; at line 1.
&gt; -PASS: event listener invoked for a script that has script error &apos;ReferenceError: Can&apos;t find variable: foo&apos; at line 1.
&gt; +PASS: onerror invoked for a script that has script error &apos;ReferenceError: Can&apos;t find variable: foo&apos; at line 0.
&gt; +PASS: event listener invoked for a script that has script error &apos;ReferenceError: Can&apos;t find variable: foo&apos; at line 0.
&gt; 
&gt; This is change intentional?

No. fixed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97677</attachid>
            <date>2011-06-17 18:17:16 -0700</date>
            <delta_ts>2011-06-18 01:48:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62920-20110617181715.patch</filename>
            <type>text/plain</type>
            <size>28329</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkxODAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWVSZWYuY3BwCmluZGV4IGU3MDUzNGMyYjJkNzc1MDRhZGNkYWFmMGViZmEyMDM4OWIyOGYxZWQu
LjE4YmJkOTFlNmE0Zjg4MmVlMzcyYjViZTMyMThmNTRjOWE4MTJkMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcApAQCAtMjM0LDcgKzIzNCw4IEBAIEpTVmFsdWVS
ZWYgSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1Jl
ZiBzdHJpbmcpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwogICAgIEFQSUVu
dHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7Ci0gICAgTGl0ZXJhbFBhcnNlciBwYXJzZXIoZXhlYywg
c3RyaW5nLT51c3RyaW5nKCksIExpdGVyYWxQYXJzZXI6OlN0cmljdEpTT04pOworICAgIFVTdHJp
bmcgc3RyID0gc3RyaW5nLT51c3RyaW5nKCk7CisgICAgTGl0ZXJhbFBhcnNlciBwYXJzZXIoZXhl
Yywgc3RyLmNoYXJhY3RlcnMoKSwgc3RyLmxlbmd0aCgpLCBMaXRlcmFsUGFyc2VyOjpTdHJpY3RK
U09OKTsKICAgICByZXR1cm4gdG9SZWYoZXhlYywgcGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggOWZkYTllNGY1NWNjNWQ4ZTk2NDBmZjg0
ZTg4M2MyZDYxZDA4NDUxYS4uMmJmZWZmMzI1OTFiYmMxZDI3YWFlNWM0NDBjYTZmNzFkYzQzMWUy
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTEtMDYtMTcg
IE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKU09OUCBpcyB1bm5lY2Vzc2FyaWx5IHNsb3cKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyOTIwCisKKyAg
ICAgICAgSlNPTlAgaGFzIHVuZm9ydHVuYXRlbHkgYmVjb21lIGEgZmFpcmx5IGNvbW1vbiBpZGlv
bSBvbmxpbmUsIHlldAorICAgICAgICBpdCB0cmlnZ2VycyB2ZXJ5IHBvb3IgcGVyZm9ybWFuY2Ug
aW4gSlNDIGFzIHdlIGVuZCB1cCBkb2luZyBjb2RlZ2VuCisgICAgICAgIGZvciBhIGxhcmdlIG51
bWJlciBvZiBwcm9wZXJ0eSBhY2Nlc3NlcyB0aGF0IHdpbGwKKyAgICAgICAgICAgKiBvbmx5IGJl
IHJ1biBvbmNlLCBzbyB0aGUgdmFzdCBhbW91bnQgb2YgbG9naWMgd2UgZHVtcCB0byBoYW5kbGUK
KyAgICAgICAgICAgICBjYWNoaW5nIG9mIGFjY2Vzc2VzIGlzIHVubmVjZXNzYXJ5LgorICAgICAg
ICAgICAqIFdlIGFyZSBkb2luZyBjb2RlZ2VuIHRoYXQgaXMgZGlyZWN0bHkgcHJvcG9ydGlvbmFs
IHRvIGp1c3QKKyAgICAgICAgICAgICBjcmVhdGluZyB0aGUgb2JqZWN0IGluIHRoZSBmaXJzdCBw
bGFjZS4KKworICAgICAgICBUaGlzIHBhdGNoIGV4dGVuZHMgdGhlIHVzZSBvZiB0aGUgbGl0ZXJh
bCBwYXJzZXIgdG8gSlNPTlAtbGlrZSBzdHJ1Y3R1cmVzCisgICAgICAgIGluIGdsb2JhbCBjb2Rl
LCBoYW5kbGluZyBhIG51bWJlciBvZiBkaWZmZXJlbnQgZm9ybXMgSSBoYXZlIHNlZW4gb25saW5l
LgorICAgICAgICBJbiBhbiBleHRyZW1lIGNhc2UgdGhpcyBpbXByb3ZlcyBwZXJmb3JtYW5jZSBv
ZiBKU09OUCBieSBtb3JlIHRoYW4gMngKKyAgICAgICAgZHVlIHRvIHJlbW92YWwgb2YgY29kZSBn
ZW5lcmF0aW9uIGFuZCBleGVjdXRpb24gdGltZSwgYW5kIGEgZmV3IG9wdGltaXNhdGlvbnMKKyAg
ICAgICAgdGhhdCBJIG1hZGUgdG8gdGhlIHBhcnNlciBpdHNlbGYuCisKKyAgICAgICAgKiBBUEkv
SlNWYWx1ZVJlZi5jcHA6CisgICAgICAgIChKU1ZhbHVlTWFrZUZyb21KU09OU3RyaW5nKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVy
cHJldGVyOjpjYWxsRXZhbCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlKToK
KyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjo6aXNLZXl3
b3JkKToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0V2YWwpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT05Qcm90
b0Z1bmNQYXJzZSk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjo6dHJ5SlNPTlBQYXJzZSk6CisgICAgICAgIChKU0M6Okxp
dGVyYWxQYXJzZXI6Om1ha2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNl
cjo6TGV4ZXI6OmxleCk6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6OkxleGVyOjpuZXh0
KToKKyAgICAgICAgKEpTQzo6aXNTYWZlU3RyaW5nQ2hhcmFjdGVyKToKKyAgICAgICAgKEpTQzo6
TGl0ZXJhbFBhcnNlcjo6TGV4ZXI6OmxleFN0cmluZyk6CisgICAgICAgIChKU0M6OkxpdGVyYWxQ
YXJzZXI6OkxleGVyOjpsZXhOdW1iZXIpOgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFyc2VyOjpw
YXJzZSk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmg6CisgICAgICAgIChKU0M6
OkxpdGVyYWxQYXJzZXI6OkxpdGVyYWxQYXJzZXIpOgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFy
c2VyOjp0cnlMaXRlcmFsUGFyc2UpOgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFyc2VyOjpMZXhl
cjo6TGV4ZXIpOgorCiAyMDExLTA2LTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCA4OTI3NmQ4ZjE2
NzdkOGY4YmQ4YzZiMjMyMjU4ZDhjMzYwZDM4M2M1Li5jNjY0MTdmMmEzZGVjYzI1NTA4ODY0OTc5
YzY2MmE1OWRlNmJlYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCBORVZFUl9JTkxJTkUgSlNW
YWx1ZSBJbnRlcnByZXRlcjo6Y2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lzdGVy
RmlsZSogcgogICAgIGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICAv
LyBGSVhNRTogV2UgY2FuIHVzZSB0aGUgcHJlcGFyc2VyIGluIHN0cmljdCBtb2RlLCB3ZSBqdXN0
IG5lZWQgYWRkaXRpb25hbCBsb2dpYwogICAgICAgICAvLyB0byBwcmV2ZW50IGR1cGxpY2F0ZXMu
Ci0gICAgICAgIExpdGVyYWxQYXJzZXIgcHJlcGFyc2VyKGNhbGxGcmFtZSwgcHJvZ3JhbVNvdXJj
ZSwgTGl0ZXJhbFBhcnNlcjo6Tm9uU3RyaWN0SlNPTik7CisgICAgICAgIExpdGVyYWxQYXJzZXIg
cHJlcGFyc2VyKGNhbGxGcmFtZSwgcHJvZ3JhbVNvdXJjZS5jaGFyYWN0ZXJzKCksIHByb2dyYW1T
b3VyY2UubGVuZ3RoKCksIExpdGVyYWxQYXJzZXI6Ok5vblN0cmljdEpTT04pOwogICAgICAgICBp
ZiAoSlNWYWx1ZSBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCkpCiAg
ICAgICAgICAgICByZXR1cm4gcGFyc2VkT2JqZWN0OwogICAgIH0KQEAgLTc0NCw2ICs3NDQsNjgg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhlY3V0YWJsZSogcHJvZ3Jh
bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFMKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CiAKICAgICBEeW5hbWljR2xvYmFs
T2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUoKnNjb3BlQ2hhaW4tPmdsb2JhbERhdGEsIHNj
b3BlQ2hhaW4tPmdsb2JhbE9iamVjdC5nZXQoKSk7CisgICAgTGl0ZXJhbFBhcnNlciBsaXRlcmFs
UGFyc2VyKGNhbGxGcmFtZSwgcHJvZ3JhbS0+c291cmNlKCkuZGF0YSgpLCBwcm9ncmFtLT5zb3Vy
Y2UoKS5sZW5ndGgoKSwgTGl0ZXJhbFBhcnNlcjo6SlNPTlApOworICAgIFZlY3RvcjxMaXRlcmFs
UGFyc2VyOjpKU09OUERhdGE+IEpTT05QRGF0YTsKKyAgICBpZiAobGl0ZXJhbFBhcnNlci50cnlK
U09OUFBhcnNlKEpTT05QRGF0YSkpIHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC5nZXQoKTsKKyAgICAgICAgSlNWYWx1ZSBy
ZXN1bHQ7CisgICAgICAgIGZvciAodW5zaWduZWQgZW50cnkgPSAwOyBlbnRyeSA8IEpTT05QRGF0
YS5zaXplKCk7IGVudHJ5KyspIHsKKyAgICAgICAgICAgIFZlY3RvcjxMaXRlcmFsUGFyc2VyOjpK
U09OUFBhdGhFbnRyeT4gSlNPTlBQYXRoOworICAgICAgICAgICAgSlNPTlBQYXRoLnN3YXAoSlNP
TlBEYXRhW2VudHJ5XS5tX3BhdGgpOworICAgICAgICAgICAgSlNWYWx1ZSBKU09OUFZhbHVlID0g
SlNPTlBEYXRhW2VudHJ5XS5tX3ZhbHVlLmdldCgpOworICAgICAgICAgICAgaWYgKEpTT05QUGF0
aC5zaXplKCkgPT0gMSAmJiBKU09OUFBhdGhbMF0ubV90eXBlID09IExpdGVyYWxQYXJzZXI6OkpT
T05QUGF0aEVudHJ5VHlwZURlY2xhcmUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZ2xvYmFsT2Jq
ZWN0LT5oYXNQcm9wZXJ0eShjYWxsRnJhbWUsIEpTT05QUGF0aFswXS5tX3BhdGhFbnRyeU5hbWUp
KSB7CisgICAgICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OworICAgICAgICAg
ICAgICAgICAgICBnbG9iYWxPYmplY3QtPnB1dChjYWxsRnJhbWUsIEpTT05QUGF0aFswXS5tX3Bh
dGhFbnRyeU5hbWUsIEpTT05QVmFsdWUsIHNsb3QpOworICAgICAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPnB1dFdpdGhBdHRyaWJ1dGVzKGNhbGxG
cmFtZSwgSlNPTlBQYXRoWzBdLm1fcGF0aEVudHJ5TmFtZSwgSlNPTlBWYWx1ZSwgRG9udEVudW0g
fCBEb250RGVsZXRlKTsKKyAgICAgICAgICAgICAgICAvLyB2YXIgZGVjbGFyYXRpb25zIHJldHVy
biB1bmRlZmluZWQKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOworICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgSlNWYWx1
ZSBiYXNlT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgSlNPTlBQYXRoLnNpemUoKSAtIDE7IGkrKykgeworICAgICAgICAgICAgICAgIEFT
U0VSVChKU09OUFBhdGhbaV0ubV90eXBlICE9IExpdGVyYWxQYXJzZXI6OkpTT05QUGF0aEVudHJ5
VHlwZURlY2xhcmUpOworICAgICAgICAgICAgICAgIHN3aXRjaCAoSlNPTlBQYXRoW2ldLm1fdHlw
ZSkgeworICAgICAgICAgICAgICAgIGNhc2UgTGl0ZXJhbFBhcnNlcjo6SlNPTlBQYXRoRW50cnlU
eXBlRG90OiB7CisgICAgICAgICAgICAgICAgICAgIGJhc2VPYmplY3QgPSBiYXNlT2JqZWN0Lmdl
dChjYWxsRnJhbWUsIEpTT05QUGF0aFtpXS5tX3BhdGhFbnRyeU5hbWUpOworICAgICAgICAgICAg
ICAgICAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBMaXRlcmFsUGFyc2Vy
OjpKU09OUFBhdGhFbnRyeVR5cGVMb29rdXA6IHsKKyAgICAgICAgICAgICAgICAgICAgYmFzZU9i
amVjdCA9IGJhc2VPYmplY3QuZ2V0KGNhbGxGcmFtZSwgSlNPTlBQYXRoW2ldLm1fcGF0aEluZGV4
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAg
ICAgIHN3aXRjaCAoSlNPTlBQYXRoLmxhc3QoKS5tX3R5cGUpIHsKKyAgICAgICAgICAgIGNhc2Ug
TGl0ZXJhbFBhcnNlcjo6SlNPTlBQYXRoRW50cnlUeXBlRG90OiB7CisgICAgICAgICAgICAgICAg
YmFzZU9iamVjdC5wdXQoY2FsbEZyYW1lLCBKU09OUFBhdGgubGFzdCgpLm1fcGF0aEVudHJ5TmFt
ZSwgSlNPTlBWYWx1ZSwgc2xvdCk7CisgICAgICAgICAgICAgICAgaWYgKGNhbGxGcmFtZS0+aGFk
RXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBM
aXRlcmFsUGFyc2VyOjpKU09OUFBhdGhFbnRyeVR5cGVMb29rdXA6IHsKKyAgICAgICAgICAgICAg
ICBiYXNlT2JqZWN0LnB1dChjYWxsRnJhbWUsIEpTT05QUGF0aC5sYXN0KCkubV9wYXRoSW5kZXgs
IEpTT05QVmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0ID0g
SlNPTlBWYWx1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAog
ICAgIEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPmNvbXBpbGUoY2FsbEZyYW1lLCBzY29wZUNo
YWluKTsKICAgICBpZiAoZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3Bw
CmluZGV4IDZkMmQzN2E3MjM3NjgzYWY2MGY3NGQ1NjUwM2M2ZjQ5MTk5Y2Y5MTcuLjE2NjY4ODFl
NjM3ODQ2MTQ2MWEzNWNmMDVkMDQ0ZGFhMmM2ZWYyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwCkBAIC00ODEsNiArNDgxLDExIEBAIHRlbXBsYXRlIDxib29sIHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI6OnBhcnNl
SWRlCiAgICAgcmV0dXJuIElERU5UOwogfQogCitib29sIExleGVyOjppc0tleXdvcmQoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgcmV0dXJuIG1fa2V5d29yZFRhYmxlLmVudHJ5KG1f
Z2xvYmFsRGF0YSwgaWRlbnQpOworfQorCiB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmlu
Z3M+IEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjo6cGFyc2VTdHJpbmcoSlNUb2tlbkRhdGEqIHRv
a2VuRGF0YSwgYm9vbCBzdHJpY3RNb2RlKQogewogICAgIGludCBzdHJpbmdRdW90ZUNoYXJhY3Rl
ciA9IG1fY3VycmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCBhOWZj
ZmExYjhiN2FlMmYyOWY3ZmUyMDQyMzQzZjJlNzZkNjUzZGEzLi42ZGZkNTJlMzE1YjcxY2M1NzJm
ZDZhZmUyYzkxNzg4ZDVmMTA4ZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5o
CkBAIC05MCw3ICs5MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTb3VyY2VQcm92aWRl
ciogc291cmNlUHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS0+cHJvdmlkZXIoKTsg
fQogICAgICAgICAKICAgICAgICAgSlNUb2tlblR5cGUgbGV4RXhwZWN0SWRlbnRpZmllcihKU1Rv
a2VuRGF0YSosIEpTVG9rZW5JbmZvKiwgdW5zaWduZWQsIGJvb2wgc3RyaWN0TW9kZSk7Ci0gICAg
ICAgIAorCisgICAgICAgIGJvb2wgaXNLZXl3b3JkKGNvbnN0IElkZW50aWZpZXImKTsKKwogICAg
IHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0dsb2JhbERhdGE7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmNwcAppbmRleCBjOWM0MTNlMDA5ZDU1NzYwMGUxMjdkMjkyMTRiOGQxYmE4ZmI0YjdmLi43
Mzc1MGFlZmE2OTg4ZmY2NzA3MzdmMjBlNTNmZjk0NTgwMmI1M2UwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
Y3BwCkBAIC00NDUsNyArNDQ1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9i
YWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBVU3RyaW5nIHMgPSB4LnRvU3RyaW5n
KGV4ZWMpOwogCi0gICAgTGl0ZXJhbFBhcnNlciBwcmVwYXJzZXIoZXhlYywgcywgTGl0ZXJhbFBh
cnNlcjo6Tm9uU3RyaWN0SlNPTik7CisgICAgTGl0ZXJhbFBhcnNlciBwcmVwYXJzZXIoZXhlYywg
cy5jaGFyYWN0ZXJzKCksIHMubGVuZ3RoKCksIExpdGVyYWxQYXJzZXI6Ok5vblN0cmljdEpTT04p
OwogICAgIGlmIChKU1ZhbHVlIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFy
c2UoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwYXJzZWRPYmplY3QpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDg3NDJm
ZGNiMDRmMWE4Nzk5ZTZhMGMyZjJiZTk1YmYyNjUxMjUzYTMuLjhkMjYxYTIwYjFkNjBmZThmYTc3
YjI0ZjRhNjAwMzUwZTkxYTA0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuY3BwCkBAIC04MTYsNyArODE2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU09OUHJvdG9GdW5jUGFyc2UoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKIAogICAgIExvY2FsU2NvcGUgc2NvcGUoZXhl
Yy0+Z2xvYmFsRGF0YSgpKTsKLSAgICBMaXRlcmFsUGFyc2VyIGpzb25QYXJzZXIoZXhlYywgc291
cmNlLCBMaXRlcmFsUGFyc2VyOjpTdHJpY3RKU09OKTsKKyAgICBMaXRlcmFsUGFyc2VyIGpzb25Q
YXJzZXIoZXhlYywgc291cmNlLmNoYXJhY3RlcnMoKSwgc291cmNlLmxlbmd0aCgpLCBMaXRlcmFs
UGFyc2VyOjpTdHJpY3RKU09OKTsKICAgICBKU1ZhbHVlIHVuZmlsdGVyZWQgPSBqc29uUGFyc2Vy
LnRyeUxpdGVyYWxQYXJzZSgpOwogICAgIGlmICghdW5maWx0ZXJlZCkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiVW5hYmxlIHRvIHBh
cnNlIEpTT04gc3RyaW5nIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
aXRlcmFsUGFyc2VyLmNwcAppbmRleCBiYzJlNzM2MjQ2OTU4M2JkYmY1YzM1MDQ0ZTEwYzdkZDdh
ODE0NjVmLi43MTVjYWFlNjQ1YjQ0Zjc5NThhMGVmNzMzOTlhMGMxZGQ5NDMwODRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAtNDIs
NyArNDIsOTAgQEAgc3RhdGljIGlubGluZSBib29sIGlzSlNPTldoaXRlU3BhY2UoY29uc3QgVUNo
YXImIGMpCiAgICAgcmV0dXJuIGMgPT0gJyAnIHx8IGMgPT0gMHg5IHx8IGMgPT0gMHhBIHx8IGMg
PT0gMHhEOwogfQogCi1MaXRlcmFsUGFyc2VyOjpUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjo6TGV4
ZXI6OmxleChMaXRlcmFsUGFyc2VyVG9rZW4mIHRva2VuKQorYm9vbCBMaXRlcmFsUGFyc2VyOjp0
cnlKU09OUFBhcnNlKFZlY3RvcjxKU09OUERhdGE+JiByZXN1bHRzKQoreworICAgIGlmIChtX2xl
eGVyLm5leHQoKSAhPSBUb2tJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ZG8geworICAgICAgICBWZWN0b3I8SlNPTlBQYXRoRW50cnk+IHBhdGg7CisgICAgICAgIC8vIFVu
Z3VhcmRlZCBuZXh0IHRvIHN0YXJ0IG9mZiB0aGUgbGV4ZXIKKyAgICAgICAgSWRlbnRpZmllciBu
YW1lID0gSWRlbnRpZmllcihtX2V4ZWMsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1f
bGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7
CisgICAgICAgIEpTT05QUGF0aEVudHJ5IGVudHJ5OworICAgICAgICBpZiAobmFtZSA9PSBtX2V4
ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT52YXJLZXl3b3JkKSB7CisgICAgICAgICAg
ICBpZiAobV9sZXhlci5uZXh0KCkgIT0gVG9rSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBlbnRyeS5tX3R5cGUgPSBKU09OUFBhdGhFbnRyeVR5
cGVEZWNsYXJlOworICAgICAgICAgICAgZW50cnkubV9wYXRoRW50cnlOYW1lID0gSWRlbnRpZmll
cihtX2V4ZWMsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRv
a2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CisgICAgICAgICAgICBw
YXRoLmFwcGVuZChlbnRyeSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbnRyeS5t
X3R5cGUgPSBKU09OUFBhdGhFbnRyeVR5cGVEb3Q7CisgICAgICAgICAgICBlbnRyeS5tX3BhdGhF
bnRyeU5hbWUgPSBJZGVudGlmaWVyKG1fZXhlYywgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFy
dCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5lbmQgLSBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0
YXJ0KTsKKyAgICAgICAgICAgIHBhdGguYXBwZW5kKGVudHJ5KTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAobV9leGVjLT5nbG9iYWxEYXRhKCkubGV4ZXItPmlzS2V5d29yZChlbnRyeS5tX3BhdGhF
bnRyeU5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBUb2tlblR5cGUg
dG9rZW5UeXBlID0gbV9sZXhlci5uZXh0KCk7CisgICAgICAgIHdoaWxlICh0b2tlblR5cGUgIT0g
VG9rQXNzaWduKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHRva2VuVHlwZSkgeworICAgICAgICAg
ICAgY2FzZSBUb2tMQnJhY2tldDogeworICAgICAgICAgICAgICAgIGVudHJ5Lm1fdHlwZSA9IEpT
T05QUGF0aEVudHJ5VHlwZUxvb2t1cDsKKyAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0
KCkgIT0gVG9rTnVtYmVyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgZG91YmxlIGRvdWJsZUluZGV4ID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5u
dW1iZXJUb2tlbjsKKyAgICAgICAgICAgICAgICBpbnQgaW5kZXggPSAoaW50KWRvdWJsZUluZGV4
OworICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPSBkb3VibGVJbmRleCB8fCBpbmRleCA8IDAp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBlbnRy
eS5tX3BhdGhJbmRleCA9IGluZGV4OworICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLm5leHQo
KSAhPSBUb2tSQnJhY2tldCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBUb2tE
b3Q6IHsKKyAgICAgICAgICAgICAgICBlbnRyeS5tX3R5cGUgPSBKU09OUFBhdGhFbnRyeVR5cGVE
b3Q7CisgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9IFRva0lkZW50aWZpZXIp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBlbnRy
eS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyKG1fZXhlYywgbV9sZXhlci5jdXJyZW50VG9r
ZW4oKS5zdGFydCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5lbmQgLSBtX2xleGVyLmN1cnJlbnRU
b2tlbigpLnN0YXJ0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcGF0aC5hcHBlbmQoZW50cnkpOworICAgICAgICAgICAgdG9r
ZW5UeXBlID0gbV9sZXhlci5uZXh0KCk7CisgICAgICAgIH0KKyAgICAgICAgbV9sZXhlci5uZXh0
KCk7CisgICAgICAgIHJlc3VsdHMuYXBwZW5kKEpTT05QRGF0YSgpKTsKKyAgICAgICAgcmVzdWx0
cy5sYXN0KCkubV92YWx1ZS5zZXQobV9leGVjLT5nbG9iYWxEYXRhKCksIHBhcnNlKFN0YXJ0UGFy
c2VFeHByZXNzaW9uKSk7CisgICAgICAgIGlmICghcmVzdWx0cy5sYXN0KCkubV92YWx1ZSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVzdWx0cy5sYXN0KCkubV9wYXRoLnN3
YXAocGF0aCk7CisgICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgIT0gVG9r
U2VtaSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBtX2xleGVyLm5leHQoKTsKKyAgICB9
IHdoaWxlIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgPT0gVG9rSWRlbnRpZmllcik7Cisg
ICAgcmV0dXJuIG1fbGV4ZXIuY3VycmVudFRva2VuKCkudHlwZSA9PSBUb2tFbmQ7Cit9CisgICAg
CitBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXIgTGl0ZXJhbFBhcnNlcjo6bWFrZUlkZW50
aWZpZXIoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCit7CisgICAgaWYg
KCFsZW5ndGgpCisgICAgICAgIHJldHVybiBtX2V4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5h
bWVzLT5lbXB0eUlkZW50aWZpZXI7CisgICAgaWYgKGNoYXJhY3RlcnNbMF0gPj0gTWF4aW11bUNh
Y2hhYmxlQ2hhcmFjdGVyKQorICAgICAgICByZXR1cm4gSWRlbnRpZmllcigmbV9leGVjLT5nbG9i
YWxEYXRhKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisKKyAgICBpZiAobGVuZ3RoID09IDEpIHsK
KyAgICAgICAgaWYgKCFtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0uaXNOdWxsKCkp
CisgICAgICAgICAgICByZXR1cm4gbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwor
ICAgICAgICBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVyKCZt
X2V4ZWMtPmdsb2JhbERhdGEoKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJu
IG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKKyAgICB9CisgICAgaWYgKCFtX3Jl
Y2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dLmlzTnVsbCgpICYmIElkZW50aWZpZXI6OmVx
dWFsKG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0uaW1wbCgpLCBjaGFyYWN0ZXJz
LCBsZW5ndGgpKQorICAgICAgICByZXR1cm4gbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJz
WzBdXTsKKyAgICBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gSWRlbnRpZmll
cigmbV9leGVjLT5nbG9iYWxEYXRhKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgcmV0dXJu
IG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07Cit9CisKK3RlbXBsYXRlIDxMaXRl
cmFsUGFyc2VyOjpQYXJzZXJNb2RlIG1vZGU+IExpdGVyYWxQYXJzZXI6OlRva2VuVHlwZSBMaXRl
cmFsUGFyc2VyOjpMZXhlcjo6bGV4KExpdGVyYWxQYXJzZXJUb2tlbiYgdG9rZW4pCiB7CiAgICAg
d2hpbGUgKG1fcHRyIDwgbV9lbmQgJiYgaXNKU09OV2hpdGVTcGFjZSgqbV9wdHIpKQogICAgICAg
ICArK21fcHRyOwpAQCAtODksOSArMTcyLDcgQEAgTGl0ZXJhbFBhcnNlcjo6VG9rZW5UeXBlIExp
dGVyYWxQYXJzZXI6OkxleGVyOjpsZXgoTGl0ZXJhbFBhcnNlclRva2VuJiB0b2tlbikKICAgICAg
ICAgICAgIHRva2VuLmVuZCA9ICsrbV9wdHI7CiAgICAgICAgICAgICByZXR1cm4gVG9rQ29sb247
CiAgICAgICAgIGNhc2UgJyInOgotICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBTdHJpY3RKU09O
KQotICAgICAgICAgICAgICAgIHJldHVybiBsZXhTdHJpbmc8U3RyaWN0SlNPTj4odG9rZW4pOwot
ICAgICAgICAgICAgcmV0dXJuIGxleFN0cmluZzxOb25TdHJpY3RKU09OPih0b2tlbik7CisgICAg
ICAgICAgICByZXR1cm4gbGV4U3RyaW5nPG1vZGUsICciJz4odG9rZW4pOwogICAgICAgICBjYXNl
ICd0JzoKICAgICAgICAgICAgIGlmIChtX2VuZCAtIG1fcHRyID49IDQgJiYgbV9wdHJbMV0gPT0g
J3InICYmIG1fcHRyWzJdID09ICd1JyAmJiBtX3B0clszXSA9PSAnZScpIHsKICAgICAgICAgICAg
ICAgICBtX3B0ciArPSA0OwpAQCAtMTE1LDcgKzE5Niw3IEBAIExpdGVyYWxQYXJzZXI6OlRva2Vu
VHlwZSBMaXRlcmFsUGFyc2VyOjpMZXhlcjo6bGV4KExpdGVyYWxQYXJzZXJUb2tlbiYgdG9rZW4p
CiAgICAgICAgICAgICAgICAgdG9rZW4uZW5kID0gbV9wdHI7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIFRva051bGw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsgICAgCisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAnLSc6CiAgICAgICAgIGNhc2UgJzAnOgogICAg
ICAgICBjYXNlICcxJzoKQEAgLTEyOSwyNyArMjEwLDY5IEBAIExpdGVyYWxQYXJzZXI6OlRva2Vu
VHlwZSBMaXRlcmFsUGFyc2VyOjpMZXhlcjo6bGV4KExpdGVyYWxQYXJzZXJUb2tlbiYgdG9rZW4p
CiAgICAgICAgIGNhc2UgJzknOgogICAgICAgICAgICAgcmV0dXJuIGxleE51bWJlcih0b2tlbik7
CiAgICAgfQorICAgIGlmIChtX3B0ciA8IG1fZW5kKSB7CisgICAgICAgIGlmICgqbV9wdHIgPT0g
Jy4nKSB7CisgICAgICAgICAgICB0b2tlbi50eXBlID0gVG9rRG90OworICAgICAgICAgICAgdG9r
ZW4uZW5kID0gKyttX3B0cjsKKyAgICAgICAgICAgIHJldHVybiBUb2tEb3Q7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKCptX3B0ciA9PSAnPScpIHsKKyAgICAgICAgICAgIHRva2VuLnR5cGUgPSBU
b2tBc3NpZ247CisgICAgICAgICAgICB0b2tlbi5lbmQgPSArK21fcHRyOworICAgICAgICAgICAg
cmV0dXJuIFRva0Fzc2lnbjsKKyAgICAgICAgfQorICAgICAgICBpZiAoKm1fcHRyID09ICc7Jykg
eworICAgICAgICAgICAgdG9rZW4udHlwZSA9IFRva1NlbWk7CisgICAgICAgICAgICB0b2tlbi5l
bmQgPSArK21fcHRyOworICAgICAgICAgICAgcmV0dXJuIFRva0Fzc2lnbjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoaXNBU0NJSUFscGhhKCptX3B0cikgfHwgKm1fcHRyID09ICdfJyB8fCAqbV9w
dHIgPT0gJyQnKSB7CisgICAgICAgICAgICB3aGlsZSAobV9wdHIgPCBtX2VuZCAmJiAoaXNBU0NJ
SUFscGhhbnVtZXJpYygqbV9wdHIpIHx8ICptX3B0ciA9PSAnXycgfHwgKm1fcHRyID09ICckJykp
CisgICAgICAgICAgICAgICAgbV9wdHIrKzsKKyAgICAgICAgICAgIHRva2VuLnN0cmluZ1Rva2Vu
ID0gdG9rZW4uc3RhcnQ7CisgICAgICAgICAgICB0b2tlbi5zdHJpbmdMZW5ndGggPSBtX3B0ciAt
IHRva2VuLnN0YXJ0OworICAgICAgICAgICAgdG9rZW4udHlwZSA9IFRva0lkZW50aWZpZXI7Cisg
ICAgICAgICAgICB0b2tlbi5lbmQgPSBtX3B0cjsKKyAgICAgICAgICAgIHJldHVybiBUb2tJZGVu
dGlmaWVyOworICAgICAgICB9CisgICAgICAgIGlmICgqbV9wdHIgPT0gJ1wnJykgeworICAgICAg
ICAgICAgaWYgKG1vZGUgPT0gU3RyaWN0SlNPTikKKyAgICAgICAgICAgICAgICByZXR1cm4gVG9r
RXJyb3I7CisgICAgICAgICAgICByZXR1cm4gbGV4U3RyaW5nPG1vZGUsICdcJyc+KHRva2VuKTsK
KyAgICAgICAgfQorICAgIH0KICAgICByZXR1cm4gVG9rRXJyb3I7CiB9CiAKLXRlbXBsYXRlIDxM
aXRlcmFsUGFyc2VyOjpQYXJzZXJNb2RlIG1vZGU+IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhZmVT
dHJpbmdDaGFyYWN0ZXIoVUNoYXIgYykKK0xpdGVyYWxQYXJzZXI6OlRva2VuVHlwZSBMaXRlcmFs
UGFyc2VyOjpMZXhlcjo6bmV4dCgpCiB7Ci0gICAgcmV0dXJuIChjID49ICcgJyAmJiAobW9kZSA9
PSBMaXRlcmFsUGFyc2VyOjpTdHJpY3RKU09OIHx8IGMgPD0gMHhmZikgJiYgYyAhPSAnXFwnICYm
IGMgIT0gJyInKSB8fCBjID09ICdcdCc7CisgICAgaWYgKG1fbW9kZSA9PSBOb25TdHJpY3RKU09O
KQorICAgICAgICByZXR1cm4gbGV4PE5vblN0cmljdEpTT04+KG1fY3VycmVudFRva2VuKTsKKyAg
ICBpZiAobV9tb2RlID09IEpTT05QKQorICAgICAgICByZXR1cm4gbGV4PEpTT05QPihtX2N1cnJl
bnRUb2tlbik7CisgICAgcmV0dXJuIGxleDxTdHJpY3RKU09OPihtX2N1cnJlbnRUb2tlbik7Cit9
CisKK3RlbXBsYXRlIDxMaXRlcmFsUGFyc2VyOjpQYXJzZXJNb2RlIG1vZGUsIFVDaGFyIHRlcm1p
bmF0b3I+IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhZmVTdHJpbmdDaGFyYWN0ZXIoVUNoYXIgYykK
K3sKKyAgICByZXR1cm4gKGMgPj0gJyAnICYmIChtb2RlID09IExpdGVyYWxQYXJzZXI6OlN0cmlj
dEpTT04gfHwgYyA8PSAweGZmKSAmJiBjICE9ICdcXCcgJiYgYyAhPSB0ZXJtaW5hdG9yKSB8fCBj
ID09ICdcdCc7CiB9CiAKIC8vICJpbmxpbmUiIGlzIHJlcXVpcmVkIGhlcmUgdG8gaGVscCBXSU5T
Q1cgY29tcGlsZXIgcmVzb2x2ZSBzcGVjaWFsaXplZCBhcmd1bWVudCBpbiB0ZW1wbGF0ZWQgZnVu
Y3Rpb25zLgotdGVtcGxhdGUgPExpdGVyYWxQYXJzZXI6OlBhcnNlck1vZGUgbW9kZT4gaW5saW5l
IExpdGVyYWxQYXJzZXI6OlRva2VuVHlwZSBMaXRlcmFsUGFyc2VyOjpMZXhlcjo6bGV4U3RyaW5n
KExpdGVyYWxQYXJzZXJUb2tlbiYgdG9rZW4pCit0ZW1wbGF0ZSA8TGl0ZXJhbFBhcnNlcjo6UGFy
c2VyTW9kZSBtb2RlLCBVQ2hhciB0ZXJtaW5hdG9yPiBpbmxpbmUgTGl0ZXJhbFBhcnNlcjo6VG9r
ZW5UeXBlIExpdGVyYWxQYXJzZXI6OkxleGVyOjpsZXhTdHJpbmcoTGl0ZXJhbFBhcnNlclRva2Vu
JiB0b2tlbikKIHsKICAgICArK21fcHRyOwotICAgIGNvbnN0IFVDaGFyKiBydW5TdGFydDsKKyAg
ICBjb25zdCBVQ2hhciogcnVuU3RhcnQgPSBtX3B0cjsKICAgICBVU3RyaW5nQnVpbGRlciBidWls
ZGVyOwogICAgIGRvIHsKICAgICAgICAgcnVuU3RhcnQgPSBtX3B0cjsKLSAgICAgICAgd2hpbGUg
KG1fcHRyIDwgbV9lbmQgJiYgaXNTYWZlU3RyaW5nQ2hhcmFjdGVyPG1vZGU+KCptX3B0cikpCisg
ICAgICAgIHdoaWxlIChtX3B0ciA8IG1fZW5kICYmIGlzU2FmZVN0cmluZ0NoYXJhY3Rlcjxtb2Rl
LCB0ZXJtaW5hdG9yPigqbV9wdHIpKQogICAgICAgICAgICAgKyttX3B0cjsKLSAgICAgICAgaWYg
KHJ1blN0YXJ0IDwgbV9wdHIpCisgICAgICAgIGlmIChidWlsZGVyLmxlbmd0aCgpKQogICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQocnVuU3RhcnQsIG1fcHRyIC0gcnVuU3RhcnQpOwotICAgICAg
ICBpZiAoKG1vZGUgPT0gU3RyaWN0SlNPTikgJiYgbV9wdHIgPCBtX2VuZCAmJiAqbV9wdHIgPT0g
J1xcJykgeworICAgICAgICBpZiAoKG1vZGUgIT0gTm9uU3RyaWN0SlNPTikgJiYgbV9wdHIgPCBt
X2VuZCAmJiAqbV9wdHIgPT0gJ1xcJykgeworICAgICAgICAgICAgaWYgKGJ1aWxkZXIuaXNFbXB0
eSgpICYmIHJ1blN0YXJ0IDwgbV9wdHIpCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
cnVuU3RhcnQsIG1fcHRyIC0gcnVuU3RhcnQpOwogICAgICAgICAgICAgKyttX3B0cjsKICAgICAg
ICAgICAgIGlmIChtX3B0ciA+PSBtX2VuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gVG9rRXJy
b3I7CkBAIC0xOTksMTUgKzMyMiwyOCBAQCB0ZW1wbGF0ZSA8TGl0ZXJhbFBhcnNlcjo6UGFyc2Vy
TW9kZSBtb2RlPiBpbmxpbmUgTGl0ZXJhbFBhcnNlcjo6VG9rZW5UeXBlIExpdGVyYQogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIGlmICgqbV9wdHIgPT0gJ1wnJyAmJiBtb2RlICE9IFN0cmljdEpTT04pIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcJycpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wdHIrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJv
cjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gd2hpbGUgKChtb2RlID09IFN0cmlj
dEpTT04pICYmIG1fcHRyICE9IHJ1blN0YXJ0ICYmIChtX3B0ciA8IG1fZW5kKSAmJiAqbV9wdHIg
IT0gJyInKTsKKyAgICB9IHdoaWxlICgobW9kZSAhPSBOb25TdHJpY3RKU09OKSAmJiBtX3B0ciAh
PSBydW5TdGFydCAmJiAobV9wdHIgPCBtX2VuZCkgJiYgKm1fcHRyICE9IHRlcm1pbmF0b3IpOwog
Ci0gICAgaWYgKG1fcHRyID49IG1fZW5kIHx8ICptX3B0ciAhPSAnIicpCisgICAgaWYgKG1fcHRy
ID49IG1fZW5kIHx8ICptX3B0ciAhPSB0ZXJtaW5hdG9yKQogICAgICAgICByZXR1cm4gVG9rRXJy
b3I7CiAKLSAgICB0b2tlbi5zdHJpbmdUb2tlbiA9IGJ1aWxkZXIudG9VU3RyaW5nKCk7CisgICAg
aWYgKGJ1aWxkZXIuaXNFbXB0eSgpKSB7CisgICAgICAgIHRva2VuLnN0cmluZ0J1ZmZlciA9IFVT
dHJpbmcoKTsKKyAgICAgICAgdG9rZW4uc3RyaW5nVG9rZW4gPSBydW5TdGFydDsKKyAgICAgICAg
dG9rZW4uc3RyaW5nTGVuZ3RoID0gbV9wdHIgLSBydW5TdGFydDsKKyAgICB9IGVsc2UgeworICAg
ICAgICB0b2tlbi5zdHJpbmdCdWZmZXIgPSBidWlsZGVyLnRvVVN0cmluZygpOworICAgICAgICB0
b2tlbi5zdHJpbmdUb2tlbiA9IHRva2VuLnN0cmluZ0J1ZmZlci5jaGFyYWN0ZXJzKCk7CisgICAg
ICAgIHRva2VuLnN0cmluZ0xlbmd0aCA9IHRva2VuLnN0cmluZ0J1ZmZlci5sZW5ndGgoKTsKKyAg
ICB9CiAgICAgdG9rZW4udHlwZSA9IFRva1N0cmluZzsKICAgICB0b2tlbi5lbmQgPSArK21fcHRy
OwogICAgIHJldHVybiBUb2tTdHJpbmc7CkBAIC0yNTMsNiArMzg5LDIyIEBAIExpdGVyYWxQYXJz
ZXI6OlRva2VuVHlwZSBMaXRlcmFsUGFyc2VyOjpMZXhlcjo6bGV4TnVtYmVyKExpdGVyYWxQYXJz
ZXJUb2tlbiYgdG9rCiAgICAgICAgICsrbV9wdHI7CiAgICAgICAgIHdoaWxlIChtX3B0ciA8IG1f
ZW5kICYmIGlzQVNDSUlEaWdpdCgqbV9wdHIpKQogICAgICAgICAgICAgKyttX3B0cjsKKyAgICB9
IGVsc2UgaWYgKG1fcHRyIDwgbV9lbmQgJiYgKCptX3B0ciAhPSAnZScgJiYgKm1fcHRyICE9ICdF
JykgJiYgKG1fcHRyIC0gdG9rZW4uc3RhcnQpIDwgMTApIHsKKyAgICAgICAgaW50IHJlc3VsdCA9
IDA7CisgICAgICAgIHRva2VuLnR5cGUgPSBUb2tOdW1iZXI7CisgICAgICAgIHRva2VuLmVuZCA9
IG1fcHRyOworICAgICAgICBjb25zdCBVQ2hhciogZGlnaXQgPSB0b2tlbi5zdGFydDsKKyAgICAg
ICAgaW50IG5lZ2F0aXZlID0gMTsKKyAgICAgICAgaWYgKCpkaWdpdCA9PSAnLScpIHsKKyAgICAg
ICAgICAgIG5lZ2F0aXZlID0gLTE7CisgICAgICAgICAgICBkaWdpdCsrOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICB3aGlsZSAoZGlnaXQgPCBtX3B0cikKKyAgICAgICAgICAgIHJlc3Vs
dCA9IHJlc3VsdCAqIDEwICsgKCpkaWdpdCsrKSAtICcwJzsKKyAgICAgICAgcmVzdWx0ICo9IG5l
Z2F0aXZlOworICAgICAgICB0b2tlbi5udW1iZXJUb2tlbiA9IHJlc3VsdDsKKyAgICAgICAgcmV0
dXJuIFRva051bWJlcjsKICAgICB9CiAKICAgICAvLyAgKFtlRV1bKy1dPyBbMC05XSspPwpAQCAt
MzM3LDcgKzQ4OSw3IEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjo6cGFyc2UoUGFyc2VyU3RhdGUg
aW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLmFwcGVuZChvYmplY3Qp
OwogCiAgICAgICAgICAgICAgICAgVG9rZW5UeXBlIHR5cGUgPSBtX2xleGVyLm5leHQoKTsKLSAg
ICAgICAgICAgICAgICBpZiAodHlwZSA9PSBUb2tTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICBp
ZiAodHlwZSA9PSBUb2tTdHJpbmcgfHwgKG1fbW9kZSAhPSBTdHJpY3RKU09OICYmIHR5cGUgPT0g
VG9rSWRlbnRpZmllcikpIHsKICAgICAgICAgICAgICAgICAgICAgTGV4ZXI6OkxpdGVyYWxQYXJz
ZXJUb2tlbiBpZGVudGlmaWVyVG9rZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tlbigpOwogCiAgICAg
ICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBjb2xvbgpAQCAtMzQ1LDEwICs0OTcsMTEgQEAg
SlNWYWx1ZSBMaXRlcmFsUGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlkZW50aWZpZXJTdGFjay5hcHBlbmQoSWRlbnRpZmllcihtX2V4ZWMsIGlkZW50aWZp
ZXJUb2tlbi5zdHJpbmdUb2tlbikpOworICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyU3Rh
Y2suYXBwZW5kKG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJUb2tlbi5zdHJpbmdUb2tlbiwgaWRl
bnRpZmllclRva2VuLnN0cmluZ0xlbmd0aCkpOwogICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0
YWNrLmFwcGVuZChEb1BhcnNlT2JqZWN0RW5kRXhwcmVzc2lvbik7CiAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gc3RhcnRQYXJzZUV4cHJlc3Npb247Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlm
ICh0eXBlICE9IFRva1JCcmFjZSkgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGlmICh0eXBlICE9IFRva1JCcmFjZSkgCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CiAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAgICAg
bGFzdFZhbHVlID0gb2JqZWN0U3RhY2subGFzdCgpOwpAQCAtMzU4LDcgKzUxMSw3IEBAIEpTVmFs
dWUgTGl0ZXJhbFBhcnNlcjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAg
ICAgICAgZG9QYXJzZU9iamVjdFN0YXJ0RXhwcmVzc2lvbjoKICAgICAgICAgICAgIGNhc2UgRG9Q
YXJzZU9iamVjdFN0YXJ0RXhwcmVzc2lvbjogewogICAgICAgICAgICAgICAgIFRva2VuVHlwZSB0
eXBlID0gbV9sZXhlci5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGUgIT0gVG9rU3Ry
aW5nKQorICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFRva1N0cmluZyAmJiAobV9tb2RlID09
IFN0cmljdEpTT04gfHwgdHlwZSAhPSBUb2tJZGVudGlmaWVyKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICBMZXhlcjo6TGl0ZXJhbFBhcnNl
clRva2VuIGlkZW50aWZpZXJUb2tlbiA9IG1fbGV4ZXIuY3VycmVudFRva2VuKCk7CiAKQEAgLTM2
Nyw3ICs1MjAsNyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI6OnBhcnNlKFBhcnNlclN0YXRlIGlu
aXRpYWxTdGF0ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKIAogICAg
ICAgICAgICAgICAgIG1fbGV4ZXIubmV4dCgpOwotICAgICAgICAgICAgICAgIGlkZW50aWZpZXJT
dGFjay5hcHBlbmQoSWRlbnRpZmllcihtX2V4ZWMsIGlkZW50aWZpZXJUb2tlbi5zdHJpbmdUb2tl
bikpOworICAgICAgICAgICAgICAgIGlkZW50aWZpZXJTdGFjay5hcHBlbmQobWFrZUlkZW50aWZp
ZXIoaWRlbnRpZmllclRva2VuLnN0cmluZ1Rva2VuLCBpZGVudGlmaWVyVG9rZW4uc3RyaW5nTGVu
Z3RoKSk7CiAgICAgICAgICAgICAgICAgc3RhdGVTdGFjay5hcHBlbmQoRG9QYXJzZU9iamVjdEVu
ZEV4cHJlc3Npb24pOwogICAgICAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUV4cHJlc3Npb247
CiAgICAgICAgICAgICB9CkBAIC0zOTQsNyArNTQ3LDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2Vy
OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgIGNh
c2UgVG9rU3RyaW5nOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICBMZXhlcjo6TGl0ZXJhbFBh
cnNlclRva2VuIHN0cmluZ1Rva2VuID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fbGV4ZXIubmV4dCgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
bGFzdFZhbHVlID0ganNTdHJpbmcobV9leGVjLCBzdHJpbmdUb2tlbi5zdHJpbmdUb2tlbik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBsYXN0VmFsdWUgPSBqc1N0cmluZyhtX2V4ZWMsIG1ha2VJ
ZGVudGlmaWVyKHN0cmluZ1Rva2VuLnN0cmluZ1Rva2VuLCBzdHJpbmdUb2tlbi5zdHJpbmdMZW5n
dGgpLnVzdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva051bWJlcjogewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oCmluZGV4IDZkZjVk
MDYwN2NjYzIzM2ZkMTkwYmEzZDQzMzJjYWE4ODlmZmIzNGQuLjg1ZTAzMTEzNDk0MzQ0ODBjYWFi
ZmQ5ZjdkZTcxYmYzMDkxOWRkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xpdGVyYWxQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9MaXRlcmFsUGFyc2VyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgTGl0ZXJhbFBhcnNl
cl9oCiAjZGVmaW5lIExpdGVyYWxQYXJzZXJfaAogCisjaW5jbHVkZSAiSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5o
IgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKQEAgLTM0LDEwICszNSwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIExpdGVyYWxQYXJzZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgdHlw
ZWRlZiBlbnVtIHsgU3RyaWN0SlNPTiwgTm9uU3RyaWN0SlNPTiB9IFBhcnNlck1vZGU7Ci0gICAg
ICAgIExpdGVyYWxQYXJzZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBzLCBQYXJz
ZXJNb2RlIG1vZGUpCisgICAgICAgIHR5cGVkZWYgZW51bSB7IFN0cmljdEpTT04sIE5vblN0cmlj
dEpTT04sIEpTT05QIH0gUGFyc2VyTW9kZTsKKyAgICAgICAgTGl0ZXJhbFBhcnNlcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFBhcnNl
ck1vZGUgbW9kZSkKICAgICAgICAgICAgIDogbV9leGVjKGV4ZWMpCi0gICAgICAgICAgICAsIG1f
bGV4ZXIocywgbW9kZSkKKyAgICAgICAgICAgICwgbV9sZXhlcihjaGFyYWN0ZXJzLCBsZW5ndGgs
IG1vZGUpCiAgICAgICAgICAgICAsIG1fbW9kZShtb2RlKQogICAgICAgICB7CiAgICAgICAgIH0K
QEAgLTQ2LDEwICs0NywzMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAg
ICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHBhcnNlKG1f
bW9kZSA9PSBTdHJpY3RKU09OID8gU3RhcnRQYXJzZUV4cHJlc3Npb24gOiBTdGFydFBhcnNlU3Rh
dGVtZW50KTsKKyAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgPT0g
VG9rU2VtaSkKKyAgICAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKICAgICAgICAgICAgIGlm
IChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgIT0gVG9rRW5kKQogICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBlbnVtIEpTT05QUGF0aEVudHJ5VHlwZSB7CisgICAgICAgICAg
ICBKU09OUFBhdGhFbnRyeVR5cGVEZWNsYXJlLCAvLyB2YXIgcGF0aEVudHJ5TmFtZSA9IEpTT04K
KyAgICAgICAgICAgIEpTT05QUGF0aEVudHJ5VHlwZURvdCwgLy8gPHByaW9yIGVudHJpZXM+LnBh
dGhFbnRyeU5hbWUgPSBKU09OCisgICAgICAgICAgICBKU09OUFBhdGhFbnRyeVR5cGVMb29rdXAg
Ly8gPHByaW9yIGVudHJpZXM+W3BhdGhJbmRleF0gPSBKU09OCisgICAgICAgIH07CisKKyAgICAg
ICAgc3RydWN0IEpTT05QUGF0aEVudHJ5IHsKKyAgICAgICAgICAgIEpTT05QUGF0aEVudHJ5VHlw
ZSBtX3R5cGU7CisgICAgICAgICAgICBJZGVudGlmaWVyIG1fcGF0aEVudHJ5TmFtZTsKKyAgICAg
ICAgICAgIGludCBtX3BhdGhJbmRleDsKKyAgICAgICAgfTsKKworICAgICAgICBzdHJ1Y3QgSlNP
TlBEYXRhIHsKKyAgICAgICAgICAgIFZlY3RvcjxKU09OUFBhdGhFbnRyeT4gbV9wYXRoOworICAg
ICAgICAgICAgU3Ryb25nPFVua25vd24+IG1fdmFsdWU7CisgICAgICAgIH07CisKKyAgICAgICAg
Ym9vbCB0cnlKU09OUFBhcnNlKFZlY3RvcjxKU09OUERhdGE+Jik7CisKICAgICBwcml2YXRlOgog
ICAgICAgICBlbnVtIFBhcnNlclN0YXRlIHsgU3RhcnRQYXJzZU9iamVjdCwgU3RhcnRQYXJzZUFy
cmF5LCBTdGFydFBhcnNlRXhwcmVzc2lvbiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
dGFydFBhcnNlU3RhdGVtZW50LCBTdGFydFBhcnNlU3RhdGVtZW50RW5kU3RhdGVtZW50LCAKQEAg
LTU4LDI5ICs4MSwzMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZW51bSBUb2tlblR5cGUg
eyBUb2tMQnJhY2tldCwgVG9rUkJyYWNrZXQsIFRva0xCcmFjZSwgVG9rUkJyYWNlLCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICBUb2tTdHJpbmcsIFRva0lkZW50aWZpZXIsIFRva051bWJlciwg
VG9rQ29sb24sIAogICAgICAgICAgICAgICAgICAgICAgICAgIFRva0xQYXJlbiwgVG9rUlBhcmVu
LCBUb2tDb21tYSwgVG9rVHJ1ZSwgVG9rRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
VG9rTnVsbCwgVG9rRW5kLCBUb2tFcnJvciB9OwotCisgICAgICAgICAgICAgICAgICAgICAgICAg
VG9rTnVsbCwgVG9rRW5kLCBUb2tEb3QsIFRva0Fzc2lnbiwgVG9rU2VtaSwgVG9rRXJyb3IgfTsK
KyAgICAgICAgCiAgICAgICAgIGNsYXNzIExleGVyIHsKICAgICAgICAgcHVibGljOgogICAgICAg
ICAgICAgc3RydWN0IExpdGVyYWxQYXJzZXJUb2tlbiB7CiAgICAgICAgICAgICAgICAgVG9rZW5U
eXBlIHR5cGU7CiAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0OwogICAgICAgICAg
ICAgICAgIGNvbnN0IFVDaGFyKiBlbmQ7Ci0gICAgICAgICAgICAgICAgVVN0cmluZyBzdHJpbmdU
b2tlbjsKLSAgICAgICAgICAgICAgICBkb3VibGUgbnVtYmVyVG9rZW47CisgICAgICAgICAgICAg
ICAgVVN0cmluZyBzdHJpbmdCdWZmZXI7CisgICAgICAgICAgICAgICAgdW5pb24geworICAgICAg
ICAgICAgICAgICAgICBkb3VibGUgbnVtYmVyVG9rZW47CisgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciogc3RyaW5nVG9rZW47
CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RyaW5nTGVuZ3RoOworICAgICAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICB9OwotICAgICAgICAg
ICAgTGV4ZXIoY29uc3QgVVN0cmluZyYgcywgUGFyc2VyTW9kZSBtb2RlKQotICAgICAgICAgICAg
ICAgIDogbV9zdHJpbmcocykKLSAgICAgICAgICAgICAgICAsIG1fbW9kZShtb2RlKQotICAgICAg
ICAgICAgICAgICwgbV9wdHIocy5jaGFyYWN0ZXJzKCkpCi0gICAgICAgICAgICAgICAgLCBtX2Vu
ZChzLmNoYXJhY3RlcnMoKSArIHMubGVuZ3RoKCkpCisgICAgICAgICAgICBMZXhlcihjb25zdCBV
Q2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBQYXJzZXJNb2RlIG1vZGUpCisgICAg
ICAgICAgICAgICAgOiBtX21vZGUobW9kZSkKKyAgICAgICAgICAgICAgICAsIG1fcHRyKGNoYXJh
Y3RlcnMpCisgICAgICAgICAgICAgICAgLCBtX2VuZChjaGFyYWN0ZXJzICsgbGVuZ3RoKQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBUb2tl
blR5cGUgbmV4dCgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxleCht
X2N1cnJlbnRUb2tlbik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBUb2tlblR5cGUgbmV4
dCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBjb25zdCBMaXRlcmFsUGFyc2VyVG9rZW4m
IGN1cnJlbnRUb2tlbigpCiAgICAgICAgICAgICB7CkBAIC04OCw5ICsxMTMsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBwcml2YXRlOgot
ICAgICAgICAgICAgVG9rZW5UeXBlIGxleChMaXRlcmFsUGFyc2VyVG9rZW4mKTsKLSAgICAgICAg
ICAgIHRlbXBsYXRlIDxQYXJzZXJNb2RlIG1vZGU+IFRva2VuVHlwZSBsZXhTdHJpbmcoTGl0ZXJh
bFBhcnNlclRva2VuJik7Ci0gICAgICAgICAgICBUb2tlblR5cGUgbGV4TnVtYmVyKExpdGVyYWxQ
YXJzZXJUb2tlbiYpOworICAgICAgICAgICAgdGVtcGxhdGUgPFBhcnNlck1vZGUgbW9kZT4gVG9r
ZW5UeXBlIGxleChMaXRlcmFsUGFyc2VyVG9rZW4mKTsKKyAgICAgICAgICAgIHRlbXBsYXRlIDxQ
YXJzZXJNb2RlIG1vZGUsIFVDaGFyIHRlcm1pbmF0b3I+IEFMV0FZU19JTkxJTkUgVG9rZW5UeXBl
IGxleFN0cmluZyhMaXRlcmFsUGFyc2VyVG9rZW4mKTsKKyAgICAgICAgICAgIEFMV0FZU19JTkxJ
TkUgVG9rZW5UeXBlIGxleE51bWJlcihMaXRlcmFsUGFyc2VyVG9rZW4mKTsKICAgICAgICAgICAg
IExpdGVyYWxQYXJzZXJUb2tlbiBtX2N1cnJlbnRUb2tlbjsKICAgICAgICAgICAgIFVTdHJpbmcg
bV9zdHJpbmc7CiAgICAgICAgICAgICBQYXJzZXJNb2RlIG1fbW9kZTsKQEAgLTEwNCw3ICsxMjks
MTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWNTdGF0ZSogbV9leGVjOwogICAgICAg
ICBMaXRlcmFsUGFyc2VyOjpMZXhlciBtX2xleGVyOwogICAgICAgICBQYXJzZXJNb2RlIG1fbW9k
ZTsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGNvbnN0IE1heGltdW1DYWNoYWJsZUNoYXJhY3Rl
ciA9IDEyODsKKyAgICAgICAgRml4ZWRBcnJheTxJZGVudGlmaWVyLCBNYXhpbXVtQ2FjaGFibGVD
aGFyYWN0ZXI+IG1fc2hvcnRJZGVudGlmaWVyczsKKyAgICAgICAgRml4ZWRBcnJheTxJZGVudGlm
aWVyLCBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0ZXI+IG1fcmVjZW50SWRlbnRpZmllcnM7CisgICAg
ICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciBtYWtlSWRlbnRpZmllcihjb25zdCBV
Q2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCk7CiAgICAgfTsKKwogfQogCiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>