<?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>132360</bug_id>
          
          <creation_ts>2014-04-29 15:11:43 -0700</creation_ts>
          <short_desc>Don&apos;t hold on to BindingNodes forever</short_desc>
          <delta_ts>2014-05-01 10:24:00 -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>REOPENED</bug_status>
          <resolution></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>132431</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1005153</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-04-29 15:11:43 -0700</bug_when>
    <thetext>Don&apos;t hold on to BindingNodes forever</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005159</commentid>
    <comment_count>1</comment_count>
      <attachid>230429</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-04-29 15:15:37 -0700</bug_when>
    <thetext>Created attachment 230429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005162</commentid>
    <comment_count>2</comment_count>
      <attachid>230429</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-04-29 15:20:44 -0700</bug_when>
    <thetext>Comment on attachment 230429
Patch

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

r=me

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:196
&gt; +    // We make an isolated copy of the parameter string as we don&apos;t want to keep the
&gt; +    // full source string alive.
&gt; +    String parameterString = source.provider()-&gt;getRange(node-&gt;parametersStartOffset(), node-&gt;parametersEndOffset()).isolatedCopy();

An executable always keeps its full source provider alive, so I don&apos;t think isolatedCopy() is an improvement here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005163</commentid>
    <comment_count>3</comment_count>
      <attachid>230429</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-04-29 15:21:24 -0700</bug_when>
    <thetext>Comment on attachment 230429
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:196
&gt;&gt; +    String parameterString = source.provider()-&gt;getRange(node-&gt;parametersStartOffset(), node-&gt;parametersEndOffset()).isolatedCopy();
&gt; 
&gt; An executable always keeps its full source provider alive, so I don&apos;t think isolatedCopy() is an improvement here.

unlinked executables don&apos;t :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005167</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-04-29 15:23:47 -0700</bug_when>
    <thetext>Committed r167964: &lt;http://trac.webkit.org/changeset/167964&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005766</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-01 10:24:00 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 132431</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230429</attachid>
            <date>2014-04-29 15:15:37 -0700</date>
            <delta_ts>2014-04-29 15:21:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132360-20140429151515.patch</filename>
            <type>text/plain</type>
            <size>24662</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3OTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MmFhNmI5ODY5Y2E5MjBlZTJjOWFkOTUxMWY1ODY2ODFmNzRlMjgwLi42ZTQ2MDI3M2Q0NWE5N2Y2
NTFjMzk1ZGEyMDEzMWZjODBjNGNjMzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAxNC0wNC0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIERvbid0IGhvbGQgb24gdG8gcGFyYW1ldGVyQmluZGluZ05vZGVzIGZvcmV2ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjM2MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvbid0IGtl
ZXAgdGhlIHBhcmFtZXRlciBub2RlcyBhbnltb3JlLiBJbnN0ZWFkIHdlIHN0b3JlIHRoZQorICAg
ICAgICBvcmlnaW5hbCBwYXJhbWV0ZXIgc3RyaW5nIGFuZCByZXBhcnNlIHdoZW5ldmVyIHdlIGFj
dHVhbGx5CisgICAgICAgIG5lZWQgdGhlbS4gQmVjYXVzZSB3ZSBvbmx5IGFjdHVhbGx5IG5lZWQg
dGhlbSBmb3IgY29tcGlsYXRpb24KKyAgICAgICAgdGhpcyBvbmx5IHJlc3VsdHMgaW4gYSBzaW5n
bGUgZXh0cmEgcGFyc2UuCisKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpwYXJh
bVN0cmluZyk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpwYXJh
bWV0ZXJzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFt
ZXRlckNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtZXRlckNvdW50
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtZXRlcnMp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Zmlu
aXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6Cisg
ICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OkFTVEJ1aWxkZXIpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpzZXRGdW5jdGlvbkJvZHlQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwYXJzZXIvTm9k
ZXMuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6cGFyYW1ldGVyc1N0YXJ0T2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6cGFyYW1ldGVyc0VuZE9mZnNl
dCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OnNldFBhcmFtZXRlckxvY2F0aW9u
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6cGFyc2VQYXJhbWV0
ZXJzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OnBhcnNlKToK
KyAgICAgICAgKiBwYXJzZXIvU291cmNlQ29kZS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2Rl
OjpzdWJFeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpzZXRGdW5jdGlvbkJvZHlQYXJhbWV0ZXJzKToKKwog
MjAxNC0wNC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgWm9t
YmlmeWluZyBzd2VlcCBzaG91bGQgaWdub3JlIHJldGlyZWQgYmxvY2tzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXgg
YmI2NDAxODM1YjFlNjQ1ODhiMjA4MDM0ZTFmMWZlODAyZTdjZGQxZS4uNDgwODcxOTBkZjhlZGYw
Y2Q3ZTgxNmUzODQ1NDI2NDZkMGIzMWFmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC01MSw3ICs1MSwxNCBAQCBj
b25zdCBDbGFzc0luZm8gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6c19pbmZvID0geyAiVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jawogCiBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2Rl
IHByb2ZpbGVyTW9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJF
cnJvciYgZXJyb3IpCiB7Ci0gICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkgPSBwYXJz
ZTxGdW5jdGlvbkJvZHlOb2RlPigmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+cGFyYW1ldGVycygp
LCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPnRvU3RyaWN0bmVzcygpLCBKU1BhcnNl
RnVuY3Rpb25Db2RlLCBlcnJvcik7CisgICAgUmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVycz4gcGFy
YW1ldGVycyA9IGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoJnZtKTsKKyAgICBpZiAoIXBhcmFtZXRl
cnMpIHsKKyAgICAgICAgZXJyb3IgPSBQYXJzZXJFcnJvcihQYXJzZXJFcnJvcjo6U3RhY2tPdmVy
Zmxvdyk7CisgICAgICAgIGVycm9yLm1fbGluZSA9IHNvdXJjZS5maXJzdExpbmUoKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkg
PSBwYXJzZTxGdW5jdGlvbkJvZHlOb2RlPigmdm0sIHNvdXJjZSwgcGFyYW1ldGVycy5nZXQoKSwg
ZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT50b1N0cmljdG5lc3MoKSwgSlNQYXJzZUZ1
bmN0aW9uQ29kZSwgZXJyb3IpOwogCiAgICAgaWYgKCFib2R5KSB7CiAgICAgICAgIEFTU0VSVChl
cnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CkBAIC02MCw3ICs2Nyw3IEBA
IHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJs
b2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jCiAKICAgICBpZiAoZXhlY3V0YWJsZS0+Zm9yY2VVc2Vz
QXJndW1lbnRzKCkpCiAgICAgICAgIGJvZHktPnNldFVzZXNBcmd1bWVudHMoKTsKLSAgICBib2R5
LT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFt
ZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKSk7CisgICAgYm9keS0+ZmluaXNoUGFyc2lu
ZyhwYXJhbWV0ZXJzLmdldCgpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmZ1bmN0
aW9uTW9kZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShib2R5LT5mZWF0dXJlcygp
LCBib2R5LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKICAgICBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUo
JnZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGJvZHktPm5lZWRzQWN0aXZhdGlvbigp
LCBib2R5LT51c2VzRXZhbCgpLCBib2R5LT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9y
Q29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24pKTsKQEAg
LTkyLDcgKzk5LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1faXNCdWlsdGlu
RnVuY3Rpb24oa2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbikKICAgICAsIG1fbmFtZShu
b2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1lKCkp
Ci0gICAgLCBtX3BhcmFtZXRlcnMobm9kZS0+cGFyYW1ldGVycygpKQorICAgICwgbV9wYXJhbWV0
ZXJDb3VudChub2RlLT5wYXJhbWV0ZXJDb3VudCgpKQogICAgICwgbV9maXJzdExpbmVPZmZzZXQo
bm9kZS0+Zmlyc3RMaW5lKCkgLSBzb3VyY2UuZmlyc3RMaW5lKCkpCiAgICAgLCBtX2xpbmVDb3Vu
dChub2RlLT5sYXN0TGluZSgpIC0gbm9kZS0+Zmlyc3RMaW5lKCkpCiAgICAgLCBtX3VubGlua2Vk
RnVuY3Rpb25OYW1lU3RhcnQobm9kZS0+ZnVuY3Rpb25OYW1lU3RhcnQoKSAtIHNvdXJjZS5zdGFy
dE9mZnNldCgpKQpAQCAtMTA1LDExICsxMTIsNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdAog
ewogfQogCi1zaXplX3QgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtZXRlckNvdW50
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXJhbWV0ZXJzLT5zaXplKCk7Ci19Ci0KIHZvaWQg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
dGhpc09iamVjdCA9IGpzQ2FzdDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNlbGwpOwpA
QCAtMTIyLDYgKzEyNCw3IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvCiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fbmFtZVZhbHVlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9zeW1ib2xUYWJsZUZvckNhbGwpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX3N5bWJvbFRhYmxlRm9yQ29uc3RydWN0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9wYXJhbWV0ZXJTdHJpbmcpOwogfQogCiBGdW5jdGlvbkV4ZWN1dGFibGUq
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rKFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBzaXplX3QgbGluZU9mZnNldCkKQEAgLTE4NCwxNiArMTg3LDMwIEBAIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxv
Y2tGb3IoVk0mIHZtLCBjb25zCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUpCit7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIG1fbmFtZVZhbHVlLnNldCh2bSwgdGhpcywganNTdHJpbmcoJnZt
LCBuYW1lKCkuc3RyaW5nKCkpKTsKKyAgICAvLyBXZSBtYWtlIGFuIGlzb2xhdGVkIGNvcHkgb2Yg
dGhlIHBhcmFtZXRlciBzdHJpbmcgYXMgd2UgZG9uJ3Qgd2FudCB0byBrZWVwIHRoZQorICAgIC8v
IGZ1bGwgc291cmNlIHN0cmluZyBhbGl2ZS4KKyAgICBTdHJpbmcgcGFyYW1ldGVyU3RyaW5nID0g
c291cmNlLnByb3ZpZGVyKCktPmdldFJhbmdlKG5vZGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgp
LCBub2RlLT5wYXJhbWV0ZXJzRW5kT2Zmc2V0KCkpLmlzb2xhdGVkQ29weSgpOworICAgIG1fcGFy
YW1ldGVyU3RyaW5nLnNldCh2bSwgdGhpcywganNTdHJpbmcoJnZtLCBwYXJhbWV0ZXJTdHJpbmcp
KTsKK30KKwogU3RyaW5nIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpwYXJhbVN0cmluZygp
IGNvbnN0CiB7Ci0gICAgRnVuY3Rpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzID0gKm1fcGFyYW1l
dGVyczsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgZm9yIChzaXplX3QgcG9zID0g
MDsgcG9zIDwgcGFyYW1ldGVycy5zaXplKCk7ICsrcG9zKSB7Ci0gICAgICAgIGlmICghYnVpbGRl
ci5pc0VtcHR5KCkpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0g
ICAgICAgIHBhcmFtZXRlcnMuYXQocG9zKS0+dG9TdHJpbmcoYnVpbGRlcik7Ci0gICAgfQotICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1fcGFyYW1ldGVyU3RyaW5n
LT50cnlHZXRWYWx1ZSgpOworfQorCitSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6cGFyYW1ldGVycyhWTSogdm0pCit7CisgICAgaWYgKCFtX3Bh
cmFtZXRlckNvdW50KQorICAgICAgICByZXR1cm4gRnVuY3Rpb25QYXJhbWV0ZXJzOjpjcmVhdGUo
bnVsbHB0cik7CisKKyAgICBTb3VyY2VDb2RlIHBhcmFtZXRlclNvdXJjZSA9IG1ha2VTb3VyY2Uo
bV9wYXJhbWV0ZXJTdHJpbmctPnRyeUdldFZhbHVlKCkpOworICAgIFJlZlB0cjxGdW5jdGlvblBh
cmFtZXRlcnM+IHBhcmFtZXRlcnMgPSBwYXJzZVBhcmFtZXRlcnModm0sIHBhcmFtZXRlclNvdXJj
ZSwgdG9TdHJpY3RuZXNzKCkpOworICAgIEFTU0VSVCghcGFyYW1ldGVycyB8fCBwYXJhbWV0ZXJz
LT5zaXplKCkgPT0gbV9wYXJhbWV0ZXJDb3VudCk7CisgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9
CiAKIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBDb2RlVHlwZSBjb2RlVHlwZSwgY29uc3QgRXhlY3V0YWJsZUluZm8mIGlu
Zm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCmluZGV4IDE5MTc3M2JlYjY3MzU0ZWJhYzk1ZWRmNTAwZTU3OGJlZmVhYjcwYTMuLmEw
ZmNiMzZhY2UxNzVjNzYzNTkzODA4NGVjYjEzOGRkMjU0YWVkODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC05NSw3ICs5
NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSog
bm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtl
ZEZ1bmN0aW9uS2luZCkKICAgICB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+
dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwg
aXNGcm9tR2xvYmFsQ29kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQpOwotICAgICAgICBpbnN0YW5j
ZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKKyAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9u
KCp2bSwgc291cmNlLCBub2RlKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KIApA
QCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiAoa2luZCA9
PSBDb2RlRm9yQ2FsbCkgPyBtX3N5bWJvbFRhYmxlRm9yQ2FsbC5nZXQoKSA6IG1fc3ltYm9sVGFi
bGVGb3JDb25zdHJ1Y3QuZ2V0KCk7CiAgICAgfQotICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgp
IGNvbnN0OworICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
YW1ldGVyQ291bnQ7IH0KICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUo
KSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTW9kZTsgfQogICAgIEpTUGFyc2VyU3RyaWN0bmVz
cyB0b1N0cmljdG5lc3MoKSBjb25zdApAQCAtMTQyLDcgKzE0Miw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuY2xlYXIoKTsKICAgICB9CiAKLSAgICBGdW5jdGlv
blBhcmFtZXRlcnMqIHBhcmFtZXRlcnMoKSB7IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0K
KyAgICBSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzKFZNKik7CiAKICAgICB2
b2lkIHJlY29yZFBhcnNlKENvZGVGZWF0dXJlcyBmZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZh
cmlhYmxlcykKICAgICB7CkBAIC0xNjMsNiArMTYzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291
cmNlQ29kZSYsIEZ1bmN0aW9uQm9keU5vZGUqLCBib29sIGlzRnJvbUdsb2JhbENvZGUsIFVubGlu
a2VkRnVuY3Rpb25LaW5kKTsKKwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0OwogCkBAIC0xNzYsOSArMTc3
LDEwIEBAIHByaXZhdGU6CiAgICAgSWRlbnRpZmllciBtX25hbWU7CiAgICAgSWRlbnRpZmllciBt
X2luZmVycmVkTmFtZTsKICAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fbmFtZVZhbHVlOwor
ICAgIFdyaXRlQmFycmllcjxKU1N0cmluZz4gbV9wYXJhbWV0ZXJTdHJpbmc7CiAgICAgV3JpdGVC
YXJyaWVyPFN5bWJvbFRhYmxlPiBtX3N5bWJvbFRhYmxlRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJp
ZXI8U3ltYm9sVGFibGU+IG1fc3ltYm9sVGFibGVGb3JDb25zdHJ1Y3Q7Ci0gICAgUmVmUHRyPEZ1
bmN0aW9uUGFyYW1ldGVycz4gbV9wYXJhbWV0ZXJzOworICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVy
Q291bnQ7CiAgICAgdW5zaWduZWQgbV9maXJzdExpbmVPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV9s
aW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV91bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0OwpAQCAt
MTkyLDExICsxOTQsNyBAQCBwcml2YXRlOgogICAgIEZ1bmN0aW9uTW9kZSBtX2Z1bmN0aW9uTW9k
ZTsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotICAgIHsK
LSAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICBtX25hbWVWYWx1ZS5z
ZXQodm0sIHRoaXMsIGpzU3RyaW5nKCZ2bSwgbmFtZSgpLnN0cmluZygpKSk7Ci0gICAgfQorICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5
Tm9kZSopOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4
IDZlMDk5YmEwMGZkMjI1NThlYzQ3NzcyNzc3ODgyZDZkMmFjZTE3YjAuLjc0MGZkMGM4YWM1ODY1
M2YwY2MxNjU4N2IwY2ZlZWQ2ZjliYzhjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCkBAIC03Niw3ICs3Niw3IEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAg
ICAgICBPcGVyYXRvciBtX29wOwogICAgIH07CiBwdWJsaWM6Ci0gICAgQVNUQnVpbGRlcihWTSog
dm0sIFNvdXJjZUNvZGUqIHNvdXJjZUNvZGUpCisgICAgQVNUQnVpbGRlcihWTSogdm0sIGNvbnN0
IFNvdXJjZUNvZGUqIHNvdXJjZUNvZGUpCiAgICAgICAgIDogbV92bSh2bSkKICAgICAgICAgLCBt
X3NvdXJjZUNvZGUoc291cmNlQ29kZSkKICAgICAgICAgLCBtX3Njb3BlKHZtKQpAQCAtMjg5LDYg
KzI4OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVh
dGUobV92bSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1
bW4sIGluU3RyaWN0Q29udGV4dCk7CiAgICAgfQogCisgICAgdm9pZCBzZXRGdW5jdGlvbkJvZHlQ
YXJhbWV0ZXJzKEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
b3BlblBhcmVuLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGNsb3NlUGFyZW4pCisgICAgeworICAg
ICAgICBib2R5LT5zZXRQYXJhbWV0ZXJMb2NhdGlvbihvcGVuUGFyZW4sIGNsb3NlUGFyZW4pOwor
ICAgIH0KKwogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoRnVuY3Rpb25Cb2R5Tm9kZSog
Ym9keSwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0KQogICAgIHsKICAgICAgICAgYm9keS0+c2V0RnVu
Y3Rpb25OYW1lU3RhcnQoZnVuY3Rpb25OYW1lU3RhcnQpOwpAQCAtNzIyLDcgKzcyNyw3IEBAIHBy
aXZhdGU6CiAgICAgfQogICAgIAogICAgIFZNKiBtX3ZtOwotICAgIFNvdXJjZUNvZGUqIG1fc291
cmNlQ29kZTsKKyAgICBjb25zdCBTb3VyY2VDb2RlKiBtX3NvdXJjZUNvZGU7CiAgICAgU2NvcGUg
bV9zY29wZTsKICAgICBWZWN0b3I8QmluYXJ5T3BlcmFuZCwgMTAsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiBtX2JpbmFyeU9wZXJhbmRTdGFjazsKICAgICBWZWN0b3I8QXNzaWdubWVudEluZm8sIDEw
LCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9hc3NpZ25tZW50SW5mb1N0YWNrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDI1MDBmYjNjNzUxZjEzZTNiYTdhYWQ4NTQ1Mzkz
ZmE3NTVjMzkxYTEuLmUxYmE0MjI4MDc4N2FhNDBhOTBiMGU5NDFlNzFmMGIxYWFkOWQwNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE1MzUsNiArMTUzNSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycygp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5nZXQoKTsgfQogICAgICAgICBzaXplX3QgcGFy
YW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMtPnNpemUoKTsgfQorICAg
ICAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzU3RhcnQuZW5kT2Zmc2V0OyB9CisgICAgICAgIGludCBwYXJhbWV0ZXJzRW5kT2Zmc2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzRW5kLnN0YXJ0T2Zmc2V0OyB9CiAKICAgICAgICAg
dmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CiAKQEAgLTE1NTcsNiArMTU1OSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSB0cnVlOwogCisg
ICAgICAgIHZvaWQgc2V0UGFyYW1ldGVyTG9jYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBv
cGVuUGFyZW4sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgY2xvc2VQYXJlbikKKyAgICAgICAgewor
ICAgICAgICAgICAgbV9wYXJhbWV0ZXJzU3RhcnQgPSBvcGVuUGFyZW47CisgICAgICAgICAgICBt
X3BhcmFtZXRlcnNFbmQgPSBjbG9zZVBhcmVuOworICAgICAgICB9CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWdu
ZWQgZW5kQ29sdW1uLCBib29sIGluU3RyaWN0Q29udGV4dCk7CiAgICAgICAgIEZ1bmN0aW9uQm9k
eU5vZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291
cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0Jiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CkBAIC0x
NTY1LDYgKzE1NzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWRlbnRpZmllciBtX2lu
ZmVycmVkTmFtZTsKICAgICAgICAgRnVuY3Rpb25Nb2RlIG1fZnVuY3Rpb25Nb2RlOwogICAgICAg
ICBSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBtX3BhcmFtZXRlcnM7CisgICAgICAgIEpTVG9r
ZW5Mb2NhdGlvbiBtX3BhcmFtZXRlcnNTdGFydDsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIG1f
cGFyYW1ldGVyc0VuZDsKICAgICAgICAgaW50IG1fZnVuY3Rpb25OYW1lU3RhcnQ7CiAgICAgICAg
IHVuc2lnbmVkIG1fc3RhcnRDb2x1bW47CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDdkZWM5YmZhOWY3OTZm
ZGVkMGE5NTYxYzZhOWIzNzI1M2FiMTUzNzcuLjQ5ZjkzZmE0YTU1ODMwMTY0ODRmNjk3OGM5NjQ0
ZTdkOTQ5MTVkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAg
LTEyNDgsNiArMTI0OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgIGZhaWxE
dWVUb1VuZXhwZWN0ZWRUb2tlbigpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAg
IEpTVG9rZW5Mb2NhdGlvbiBvcGVuUGFyZW4gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgaWYgKCFj
b25zdW1lKE9QRU5QQVJFTikpIHsKICAgICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3b3Jk
KHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBuYW1lIik7CiAgICAgICAgIGZhaWxXaXRo
TWVzc2FnZSgiRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgIiwgc3RyaW5nRm9yRnVu
Y3Rpb25Nb2RlKG1vZGUpLCAiJ3MgcGFyYW1ldGVyIGxpc3QiKTsKQEAgLTEyNTYsNiArMTI1Nyw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgIHBhcmFtZXRlcnMgPSBwYXJzZUZv
cm1hbFBhcmFtZXRlcnMoY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcmFtZXRlcnMs
ICJDYW5ub3QgcGFyc2UgcGFyYW1ldGVycyBmb3IgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1v
ZGUobW9kZSkpOwogICAgIH0KKyAgICBKU1Rva2VuTG9jYXRpb24gZW5kUGFyZW4gPSBtX3Rva2Vu
Lm1fbG9jYXRpb247CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOLCAiRXhwZWN0ZWQgYSAn
KScgb3IgYSAnLCcgYWZ0ZXIgYSBwYXJhbWV0ZXIgZGVjbGFyYXRpb24iKTsKICAgICBtYXRjaE9y
RmFpbChPUEVOQlJBQ0UsICJFeHBlY3RlZCBhbiBvcGVuaW5nICd7JyBhdCB0aGUgc3RhcnQgb2Yg
YSAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIgYm9keSIpOwogICAgIApAQCAtMTI4
MSw3ICsxMjgzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAgICAgIGVuZExv
Y2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogCiAgICAg
ICAgIGJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCBlbmRM
b2NhdGlvbiwgYm9keVN0YXJ0Q29sdW1uLCBib2R5RW5kQ29sdW1uLCBjYWNoZWRJbmZvLT5zdHJp
Y3RNb2RlKTsKLSAgICAgICAgCisgICAgICAgIGNvbnRleHQuc2V0RnVuY3Rpb25Cb2R5UGFyYW1l
dGVycyhib2R5LCBvcGVuUGFyZW4sIGVuZFBhcmVuKTsKICAgICAgICAgZnVuY3Rpb25TY29wZS0+
cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBmYWls
SWZGYWxzZShwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFy
aWFibGVJbmZvKSwgIlBhcnNlciBlcnJvciIpOwogICAgICAgICAKQEAgLTEzMDEsNiArMTMwMyw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgYm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5
KGNvbnRleHQpOwogICAgIHJlc3RvcmVTdGF0ZShvbGRTdGF0ZSk7CiAgICAgZmFpbElmRmFsc2Uo
Ym9keSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0aW9u
TW9kZShtb2RlKSk7CisgICAgY29udGV4dC5zZXRGdW5jdGlvbkJvZHlQYXJhbWV0ZXJzKGJvZHks
IG9wZW5QYXJlbiwgZW5kUGFyZW4pOwogICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJpY3RNb2Rl
KCkgJiYgbmFtZSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IEZ1bmN0aW9uTW9k
ZSk7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1
bWVudHMgPT0gKm5hbWUsICInIiwgbmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5j
dGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7CkBAIC0yNDA0LDYgKzI0MDcsMjUgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4
cGVjdGVkVG9rZW5UZXh0KFcKICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgdG9rZW4gJyIsIGdl
dFRva2VuKCksICInIik7CiB9CiAKK1Bhc3NSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBwYXJz
ZVBhcmFtZXRlcnMoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyU3Ry
aWN0bmVzcyBzdHJpY3RuZXNzKQoreworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9u
KCJQYXJzaW5nIHBhcmFtZXRlcnMiKTsKKyAgICBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJzID0g
MDsKKyAgICBBU1NFUlQoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7Cisg
ICAgaWYgKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pczhCaXQoKSkgeworICAgICAgICBQ
YXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBz
dHJpY3RuZXNzLCBKU1BhcnNlRnVuY3Rpb25Db2RlKTsKKyAgICAgICAgQVNUQnVpbGRlciBidWls
ZGVyKHZtLCAmc291cmNlKTsKKyAgICAgICAgcGFyYW1ldGVycyA9IHBhcnNlci5wYXJzZUZvcm1h
bFBhcmFtZXRlcnMoYnVpbGRlcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUGFyc2VyPExleGVy
PFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgc3RyaWN0bmVzcywg
SlNQYXJzZUZ1bmN0aW9uQ29kZSk7CisgICAgICAgIEFTVEJ1aWxkZXIgYnVpbGRlcih2bSwgJnNv
dXJjZSk7CisgICAgICAgIHBhcmFtZXRlcnMgPSBwYXJzZXIucGFyc2VGb3JtYWxQYXJhbWV0ZXJz
KGJ1aWxkZXIpOworICAgIH0KKyAgICBpZiAoIXBhcmFtZXRlcnMpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBGdW5jdGlvblBhcmFtZXRlcnM6OmNyZWF0ZShwYXJhbWV0ZXJz
KTsKK30KKwogLy8gSW5zdGFudGlhdGUgdGhlIHR3byBmbGF2b3JzIG9mIFBhcnNlciB3ZSBuZWVk
IGluc3RlYWQgb2YgcHV0dGluZyBtb3N0IG9mIHRoaXMgZmlsZSBpbiBQYXJzZXIuaAogdGVtcGxh
dGUgY2xhc3MgUGFyc2VyPExleGVyPExDaGFyPj47CiB0ZW1wbGF0ZSBjbGFzcyBQYXJzZXI8TGV4
ZXI8VUNoYXI+PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGQ2OTg4
ZTdlYTYzNzAyNzcyNTVjMDgzOTAwYzkxZmI2OTFiY2I4ZDcuLjIyYWEzMjNlNGVlNGYwZDRkMTE0
MjFmMTVlYjI2MjAyN2FhNTQ0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aApAQCAtNDA5LDYgKzQwOSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiBjbGFz
cyBQYXJzZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhcnNlcik7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CisgICAgZnJpZW5kIFBhc3NSZWZQdHI8RnVuY3Rpb25QYXJhbWV0
ZXJzPiBwYXJzZVBhcmFtZXRlcnMoVk0qLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJp
Y3RuZXNzKTsKIAogcHVibGljOgogICAgIFBhcnNlcihWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBG
dW5jdGlvblBhcmFtZXRlcnMqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNQYXJzZXJTdHJpY3RuZXNz
LCBKU1BhcnNlck1vZGUpOwpAQCAtOTcyLDYgKzk3Myw3IEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9k
ZT4gcGFyc2UoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1l
dGVyCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAgICAgfQor
ICAgIFJFTEVBU0VfQVNTRVJUKHN0cmljdG5lc3MgIT0gSlNQYXJzZUJ1aWx0aW4pOwogICAgIFBh
cnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBz
dHJpY3RuZXNzLCBwYXJzZXJNb2RlKTsKICAgICBSZWZQdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0g
cGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yKTsKICAgICBpZiAocG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSkKQEAgLTk3OSw1ICs5ODEsNyBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBh
cnNlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcgog
ICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCitQYXNzUmVmUHRyPEZ1bmN0aW9uUGFy
YW1ldGVycz4gcGFyc2VQYXJhbWV0ZXJzKFZNKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2Vy
U3RyaWN0bmVzcyk7CisKIH0gLy8gbmFtZXNwYWNlCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgKaW5kZXggNzNkMjNkYjgyYWYyNWVhNDZjMGY4OTc4NWNl
NDI0YmI2MGViNjFhNy4uODA4ZTg1ZjI1MzViM2EyZTU1ODUyYjE4Y2MwMGQxYmE5MTdlMGM3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgKQEAgLTEwMyw3ICsx
MDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IGVuZE9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fZW5kQ2hhcjsgfQogICAgICAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
bV9lbmRDaGFyIC0gbV9zdGFydENoYXI7IH0KICAgICAgICAgCi0gICAgICAgIFNvdXJjZUNvZGUg
c3ViRXhwcmVzc2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2lnbmVkIGNsb3NlQnJhY2UsIGlu
dCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbik7CisgICAgICAgIFNvdXJjZUNvZGUgc3ViRXhw
cmVzc2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2lnbmVkIGNsb3NlQnJhY2UsIGludCBmaXJz
dExpbmUsIGludCBzdGFydENvbHVtbikgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBS
ZWZQdHI8U291cmNlUHJvdmlkZXI+IG1fcHJvdmlkZXI7CkBAIC0xMTgsNyArMTE4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBTb3VyY2VDb2RlKFN0cmluZ1NvdXJjZVByb3Zp
ZGVyOjpjcmVhdGUoc291cmNlLCB1cmwsIHN0YXJ0UG9zaXRpb24pLCBzdGFydFBvc2l0aW9uLm1f
bGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkp
OwogICAgIH0KIAotICAgIGlubGluZSBTb3VyY2VDb2RlIFNvdXJjZUNvZGU6OnN1YkV4cHJlc3Np
b24odW5zaWduZWQgb3BlbkJyYWNlLCB1bnNpZ25lZCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5l
LCBpbnQgc3RhcnRDb2x1bW4pCisgICAgaW5saW5lIFNvdXJjZUNvZGUgU291cmNlQ29kZTo6c3Vi
RXhwcmVzc2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2lnbmVkIGNsb3NlQnJhY2UsIGludCBm
aXJzdExpbmUsIGludCBzdGFydENvbHVtbikgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChw
cm92aWRlcigpLT5zb3VyY2UoKVtvcGVuQnJhY2VdID09ICd7Jyk7CiAgICAgICAgIEFTU0VSVChw
cm92aWRlcigpLT5zb3VyY2UoKVtjbG9zZUJyYWNlXSA9PSAnfScpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCA4OTEyZDhiODhiODM5ZDBmOTU3
N2JlMTA2NDlmYmRkYThmN2FiZmZkLi40NDEwMjliYjkyYWEyMWMzNzk5YzE5NzA2YWE4MjZhNjBl
YzA2ZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENo
ZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIu
aApAQCAtMTYwLDYgKzE2MCw3IEBAIHB1YmxpYzoKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVB
c3NpZ25SZXNvbHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBF
eHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0K
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAgaW50IGNyZWF0ZUZ1bmN0aW9uQm9keShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwg
Ym9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CisgICAgdm9pZCBzZXRGdW5jdGlv
bkJvZHlQYXJhbWV0ZXJzKGludCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJikgeyB9CiAgICAgdm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGludCkg
eyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsg
fQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoaW50KSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7
IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA3NWMzMThhNzNhMmZkOTU2NDdmNjM4ZDhkNTkxOTRkMjMyYTMyMzY1Li5iMzQ2
YWUxODJlY2Y1ODE1ODFkYTcwOGFlODUyYmE0ODhhMmQ5NGE0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTQtMDQtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBEb24ndCBob2xkIG9uIHRvIHBhcmFtZXRlciBCaW5kaW5nTm9kZXMgZm9yZXZlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyMzYwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZG9uJ3QgcmVnZW5l
cmF0ZSB0aGUgcGFyYW1ldGVyIHN0cmluZyBhbnltb3JlLCBzbyB0aGVzZSB0ZXN0cyBub3cKKyAg
ICAgICAgbWF0Y2ggdGhlIG9yaWdpbmFsIGlucHV0LgorCisgICAgICAgICoganMvZGVzdHJ1Y3R1
cmluZy1hc3NpZ25tZW50LWV4cGVjdGVkLnR4dDoKKwogMjAxNC0wNC0yOSAgQWxleGV5IFByb3Nr
dXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBJbnRlcm1pdHRl
bnQgY3Jhc2ggaW4gU3BlZWNoU3ludGhlc2lzOjpkaWRGaW5pc2hTcGVha2luZwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC1leHBlY3RlZC50eHQKaW5k
ZXggYjU0MDVkOWUzMGUxM2MzOTQ4ODI3YmUzNzliYzU1ZDYyMDM0YzhiYS4uMGI1NDM0ZmM1YWY5
YjNmN2YzYTNhODA3YWY1YjU5MjczODc4M2NhMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMv
ZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9q
cy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQtZXhwZWN0ZWQudHh0CkBAIC0xMiw3ICsxMiw3IEBA
IFBBU1MgW2EsYl09WycxJywnMiddOyB2YXIgcj1hK2I7IHIgaXMgJzEyJwogUEFTUyB2YXIge2Es
Yn09e2E6JzEnLGI6JzInfTsgdmFyIHI9YStiOyByIGlzICcxMicKIEZ1bmN0aW9uIGFzIFN0cmlu
ZzogKGZ1bmN0aW9uKHthLGJ9KSB7IHJldHVybiBhK2I7fSkKIFBBU1MgKGZ1bmN0aW9uKHthLGJ9
KSB7IHJldHVybiBhK2I7fSkoe2E6JzEnLGI6JzInfSkgaXMgJzEyJwotUEFTUyAoZnVuY3Rpb24g
KHthOmEsYjpifSkgeyByZXR1cm4gYStiO30pKHthOicxJyxiOicyJ30pIGlzICcxMicKK1BBU1Mg
KGZ1bmN0aW9uICh7YSxifSkgeyByZXR1cm4gYStiO30pKHthOicxJyxiOicyJ30pIGlzICcxMicK
IFBBU1MgKHthLGJ9PXthOicxJyxiOicyJ30pOyB2YXIgcj1hK2I7IHIgaXMgJzEyJwogUEFTUyB2
YXIge2M6YSxkOmJ9PXtjOicxJyxkOicyJ307IHZhciByPWErYjsgciBpcyAnMTInCiBGdW5jdGlv
biBhcyBTdHJpbmc6IChmdW5jdGlvbih7YzphLGQ6Yn0pIHsgcmV0dXJuIGErYjt9KQpAQCAtMjcs
NyArMjcsNyBAQCBQQVNTICh7YzpiLGQ6YX09e2M6JzEnLGQ6JzInfSk7IHZhciByPWErYjsgciBp
cyAnMjEnCiBQQVNTIHZhciB7dHJ1ZTphLGZhbHNlOmIsdW5kZWZpbmVkOmMsbnVsbDpkLGluOmUs
Zm9yOmYsMS41OmcsJ2ZvbyBiYXInOmh9PXt0cnVlOidhJyxmYWxzZTonYicsdW5kZWZpbmVkOidj
JyxudWxsOidkJyxpbjonZScsZm9yOidmJywxLjU6J2cnLCdmb28gYmFyJzonaCd9OyB2YXIgcj1h
K2IrYytkK2UrZitnK2g7IHIgaXMgJ2FiY2RlZmdoJwogRnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVu
Y3Rpb24oe3RydWU6YSxmYWxzZTpiLHVuZGVmaW5lZDpjLG51bGw6ZCxpbjplLGZvcjpmLDEuNTpn
LCdmb28gYmFyJzpofSkgeyByZXR1cm4gYStiK2MrZCtlK2YrZytoO30pCiBQQVNTIChmdW5jdGlv
bih7dHJ1ZTphLGZhbHNlOmIsdW5kZWZpbmVkOmMsbnVsbDpkLGluOmUsZm9yOmYsMS41OmcsJ2Zv
byBiYXInOmh9KSB7IHJldHVybiBhK2IrYytkK2UrZitnK2g7fSkoe3RydWU6J2EnLGZhbHNlOidi
Jyx1bmRlZmluZWQ6J2MnLG51bGw6J2QnLGluOidlJyxmb3I6J2YnLDEuNTonZycsJ2ZvbyBiYXIn
OidoJ30pIGlzICdhYmNkZWZnaCcKLVBBU1MgKGZ1bmN0aW9uICh7dHJ1ZTphLGZhbHNlOmIsdW5k
ZWZpbmVkOmMsbnVsbDpkLGluOmUsZm9yOmYsMS41OmcsImZvbyBiYXIiOmh9KSB7IHJldHVybiBh
K2IrYytkK2UrZitnK2g7fSkoe3RydWU6J2EnLGZhbHNlOidiJyx1bmRlZmluZWQ6J2MnLG51bGw6
J2QnLGluOidlJyxmb3I6J2YnLDEuNTonZycsJ2ZvbyBiYXInOidoJ30pIGlzICdhYmNkZWZnaCcK
K1BBU1MgKGZ1bmN0aW9uICh7dHJ1ZTphLGZhbHNlOmIsdW5kZWZpbmVkOmMsbnVsbDpkLGluOmUs
Zm9yOmYsMS41OmcsJ2ZvbyBiYXInOmh9KSB7IHJldHVybiBhK2IrYytkK2UrZitnK2g7fSkoe3Ry
dWU6J2EnLGZhbHNlOidiJyx1bmRlZmluZWQ6J2MnLG51bGw6J2QnLGluOidlJyxmb3I6J2YnLDEu
NTonZycsJ2ZvbyBiYXInOidoJ30pIGlzICdhYmNkZWZnaCcKIFBBU1MgKHt0cnVlOmEsZmFsc2U6
Yix1bmRlZmluZWQ6YyxudWxsOmQsaW46ZSxmb3I6ZiwxLjU6ZywnZm9vIGJhcic6aH09e3RydWU6
J2EnLGZhbHNlOidiJyx1bmRlZmluZWQ6J2MnLG51bGw6J2QnLGluOidlJyxmb3I6J2YnLDEuNTon
ZycsJ2ZvbyBiYXInOidoJ30pOyB2YXIgcj1hK2IrYytkK2UrZitnK2g7IHIgaXMgJ2FiY2RlZmdo
JwogUEFTUyB2YXIgW3tjOmEsZDpifV09W3tjOicxJyxkOicyJ31dOyB2YXIgcj1hK2I7IHIgaXMg
JzEyJwogRnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24oW3tjOmEsZDpifV0pIHsgcmV0dXJu
IGErYjt9KQpAQCAtNDksNyArNDksNyBAQCBQQVNTIFthLGJdPWFuQXJyYXk7IHZhciByPWErYjsg
ciBpcyAnMTInCiBQQVNTIHZhciB7YSxifT1hbkFycmF5OyB2YXIgcj1hK2I7IHIgaXMgJzM0Jwog
RnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24oe2EsYn0pIHsgcmV0dXJuIGErYjt9KQogUEFT
UyAoZnVuY3Rpb24oe2EsYn0pIHsgcmV0dXJuIGErYjt9KShhbkFycmF5KSBpcyAnMzQnCi1QQVNT
IChmdW5jdGlvbiAoe2E6YSxiOmJ9KSB7IHJldHVybiBhK2I7fSkoYW5BcnJheSkgaXMgJzM0Jwor
UEFTUyAoZnVuY3Rpb24gKHthLGJ9KSB7IHJldHVybiBhK2I7fSkoYW5BcnJheSkgaXMgJzM0Jwog
UEFTUyAoe2EsYn09YW5BcnJheSk7IHZhciByPWErYjsgciBpcyAnMzQnCiBQQVNTIHZhciB7YTph
LGI6Yn09YW5BcnJheTsgdmFyIHI9YStiOyByIGlzICczNCcKIEZ1bmN0aW9uIGFzIFN0cmluZzog
KGZ1bmN0aW9uKHthOmEsYjpifSkgeyByZXR1cm4gYStiO30pCkBAIC01OSw3ICs1OSw3IEBAIFBB
U1MgKHthOmEsYjpifT1hbkFycmF5KTsgdmFyIHI9YStiOyByIGlzICczNCcKIFBBU1MgdmFyIHth
LGJ9PWFuT2JqZWN0OyB2YXIgcj1hK2I7IHIgaXMgJzEyJwogRnVuY3Rpb24gYXMgU3RyaW5nOiAo
ZnVuY3Rpb24oe2EsYn0pIHsgcmV0dXJuIGErYjt9KQogUEFTUyAoZnVuY3Rpb24oe2EsYn0pIHsg
cmV0dXJuIGErYjt9KShhbk9iamVjdCkgaXMgJzEyJwotUEFTUyAoZnVuY3Rpb24gKHthOmEsYjpi
fSkgeyByZXR1cm4gYStiO30pKGFuT2JqZWN0KSBpcyAnMTInCitQQVNTIChmdW5jdGlvbiAoe2Es
Yn0pIHsgcmV0dXJuIGErYjt9KShhbk9iamVjdCkgaXMgJzEyJwogUEFTUyAoe2EsYn09YW5PYmpl
Y3QpOyB2YXIgcj1hK2I7IHIgaXMgJzEyJwogUEFTUyB2YXIge2E6YSxiOmJ9PWFuT2JqZWN0OyB2
YXIgcj1hK2I7IHIgaXMgJzEyJwogRnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24oe2E6YSxi
OmJ9KSB7IHJldHVybiBhK2I7fSkKQEAgLTc0LDcgKzc0LDcgQEAgUEFTUyAoezA6YSwxOmJ9PWFu
T2JqZWN0KTsgdmFyIHI9YStiOyByIGlzICczNCcKIFBBU1MgdmFyIHsnYSc6YSwnYic6Yn09YW5P
YmplY3Q7IHZhciByPWErYjsgciBpcyAnMTInCiBGdW5jdGlvbiBhcyBTdHJpbmc6IChmdW5jdGlv
bih7J2EnOmEsJ2InOmJ9KSB7IHJldHVybiBhK2I7fSkKIFBBU1MgKGZ1bmN0aW9uKHsnYSc6YSwn
Yic6Yn0pIHsgcmV0dXJuIGErYjt9KShhbk9iamVjdCkgaXMgJzEyJwotUEFTUyAoZnVuY3Rpb24g
KHsiYSI6YSwiYiI6Yn0pIHsgcmV0dXJuIGErYjt9KShhbk9iamVjdCkgaXMgJzEyJworUEFTUyAo
ZnVuY3Rpb24gKHsnYSc6YSwnYic6Yn0pIHsgcmV0dXJuIGErYjt9KShhbk9iamVjdCkgaXMgJzEy
JwogUEFTUyAoeydhJzphLCdiJzpifT1hbk9iamVjdCk7IHZhciByPWErYjsgciBpcyAnMTInCiBQ
QVNTIGErYiBpcyAnMTEyMicKIFBBU1MgYStiIGlzICcyMjExJwo=
</data>
<flag name="review"
          id="254810"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>