<?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>38338</bug_id>
          
          <creation_ts>2010-04-29 12:24:15 -0700</creation_ts>
          <short_desc>CodeGeneratorJS.pm should be consistent about castedThis versus castedThisObj</short_desc>
          <delta_ts>2010-04-29 13:02: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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>sam</cc>
    
    <cc>yaar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>219135</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-29 12:24:15 -0700</bug_when>
    <thetext>CodeGeneratorJS.pm should be consistent about castedThis versus castedThisObj</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219136</commentid>
    <comment_count>1</comment_count>
      <attachid>54728</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-29 12:26:23 -0700</bug_when>
    <thetext>Created attachment 54728
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219140</commentid>
    <comment_count>2</comment_count>
      <attachid>54728</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-29 12:37:05 -0700</bug_when>
    <thetext>Comment on attachment 54728
Patch

Yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219147</commentid>
    <comment_count>3</comment_count>
      <attachid>54728</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-29 13:02:22 -0700</bug_when>
    <thetext>Comment on attachment 54728
Patch

Clearing flags on attachment: 54728

Committed r58532: &lt;http://trac.webkit.org/changeset/58532&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219148</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-29 13:02:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54728</attachid>
            <date>2010-04-29 12:26:23 -0700</date>
            <delta_ts>2010-04-29 13:02:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38338-20100429122622.patch</filename>
            <type>text/plain</type>
            <size>31580</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmNkZjgxMDBlOTg4ZDVmMzA2OTlkZGQ1NTU5MGRkOGMxYzY3ZmExZC4uOTdmZTkzNGNkNGI4ZGY5
Y2MxYmRmMDlhNGI3ZTRhM2MxODVhMjQ1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAxMC0wNC0yOSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENvZGVHZW5lcmF0b3JKUy5wbSBzaG91bGQgYmUgY29uc2lz
dGVudCBhYm91dCBjYXN0ZWRUaGlzIHZlcnN1cyBjYXN0ZWRUaGlzT2JqCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODMzOAorCisgICAgICAgIEN1cnJl
bnRseSBDb2RlR2VuZXJhdG9ySlMucG0gdXNlcyBjYXN0VGhpcyBmb3IgbWV0aG9kcyBhbmQKKyAg
ICAgICAgY2FzdGVkVGhpc09iaiBmb3IgYXR0cmlidXRlcy4gIFRoaXMgaW5jb25zaXN0ZW5jeSBt
YWtlcyBpdCBkaWZmaWN1bHQgdG8KKyAgICAgICAgZmFjdG9yIGNvbW1vbiBjb2RlIGdlbmVyZXJh
dGlvbiBjb2RlIGludG8gbWV0aG9kcyBzaGFyZWQgYnkgYm90aCBraW5kcworICAgICAgICBvZiBi
aW5kaW5ncy4gIFRoaXMgbWF0Y2ggYWxpZ25zIHRoZSBuYW1lcyBzbyB0aGF0IGEgZnV0dXJlIHBh
dGNoIChlLmcuLAorICAgICAgICBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzgzMTMpIGNhbiByZWR1Y2UgY29weS9wYXN0ZQorICAgICAgICBjb2RlLgorCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpJbnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakxvbmdM
b25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25n
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialRlc3RPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9iakF0dHJXaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkludE1ldGhvZCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkludE1ldGhvZFdpdGhBcmdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3Mp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q3VzdG9tTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ3VzdG9tTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25DdXN0b21BcmdzQW5kRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0Zy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aER5
bmFtaWNGcmFtZUFuZEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRPcHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5h
bWljRnJhbWVBbmRVc2VyR2VzdHVyZUFTQUQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2JqKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEV4
Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9w
dGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKToKKwogMjAxMC0wNC0y
NSAgQW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KaW5kZXggMjI4ZTE1YTU2MjZmOGM0OTJlMTI0N2NhZjI2ODlhNTRlZTE5ZGQ4Mi4u
Nzc3YTU4NTM5NGI3NmJkNzhiMjUxZmIyNzdlOTI4NTk4ZmM2MThiMiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xMzQsNyArMTM0LDcgQEAgc3Vi
IEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGwKICAgICBKU1ZhbHVlIGxpc3RlbmVyID0gYXJncy5h
dCgxKTsKICAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwotICAgIGltcC0+JHtmdW5jdGlvbk5hbWV9RXZlbnRMaXN0ZW5lcih1c3RyaW5n
VG9BdG9taWNTdHJpbmcoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSksIEpTRXZlbnRMaXN0ZW5l
cjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgY2FzdGVkVGhpc09iaiwgZmFsc2UsIGN1cnJl
bnRXb3JsZChleGVjKSkkcGFzc1JlZlB0ckhhbmRsaW5nLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihl
eGVjKSk7CisgICAgaW1wLT4ke2Z1bmN0aW9uTmFtZX1FdmVudExpc3RlbmVyKHVzdHJpbmdUb0F0
b21pY1N0cmluZyhhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpKSwgSlNFdmVudExpc3RlbmVyOjpj
cmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBjYXN0ZWRUaGlzLCBmYWxzZSwgY3VycmVudFdvcmxk
KGV4ZWMpKSRwYXNzUmVmUHRySGFuZGxpbmcsIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsK
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIEVORAogICAgIHJldHVybiBAR2VuZXJhdGVFdmVu
dExpc3RlbmVySW1wbDsKQEAgLTE1NzUsOCArMTU3NSw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gb2JqZWN0XG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1l
Kj4odGhpc09iamVjdCktPnB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZh
bHVlKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKiBjYXN0
ZWRUaGlzT2JqID0gc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpO1xuIik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxU
eXBlKiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1wbFR5cGUqPihjYXN0ZWRUaGlzT2JqLT5pbXBsKCkp
O1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlz
T2JqZWN0KTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICRpbXBsVHlwZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxUeXBlKj4oY2FzdGVk
VGhpcy0+aW1wbCgpKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcG9k
VHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAkcG9kVHlwZSBwb2RJbXAoKmltcCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCRwb2RUeXBlIGVxICJmbG9hdCIpIHsgIyBTcGVjaWFsIGNhc2UgZm9y
IEpTU1ZHTnVtYmVyCkBAIC0xNTg0LDcgKzE1ODQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcG9kSW1w
LnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLCAidmFsdWUiKSAuICIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaW1wLT5jb21taXRDaGFuZ2UocG9kSW1wLCBjYXN0ZWRUaGlzT2JqKTtcbiIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpbXAtPmNvbW1pdENoYW5nZShwb2RJbXAsIGNhc3RlZFRoaXMpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbXkgJG5hdGl2ZVZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZSwgInZhbHVlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIikgaWYgQHskYXR0cmlidXRlLT5z
ZXR0ZXJFeGNlcHRpb25zfTsKQEAgLTE2MDIsNyArMTYwMiw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpO1xuIikgaWYgQHskYXR0cmli
dXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKElzU1ZHVHlwZU5lZWRpbmdDb250ZXh0UGFyYW1ldGVyKCRpbXBsQ2xhc3NOYW1lKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgSlNTVkdDb250ZXh0Q2FjaGU6OnByb3BhZ2F0ZVNWR0RPTUNoYW5nZShjYXN0ZWRUaGlzT2Jq
LCBpbXAtPmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkpO1xuIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1NWR0NvbnRleHRD
YWNoZTo6cHJvcGFnYXRlU1ZHRE9NQ2hhbmdlKGNhc3RlZFRoaXMsIGltcC0+YXNzb2NpYXRlZEF0
dHJpYnV0ZU5hbWUoKSk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0K
QEAgLTE2NTAsMjIgKzE2NTAsMjIgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7IjxydW50aW1lL0Vycm9yLmg+In0gPSAxOwogCiAgICAgICAg
ICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKiBjYXN0ZWRUaGlzT2JqID0gdG9K
U0RPTVdpbmRvdyh0aGlzVmFsdWUudG9UaGlzT2JqZWN0KGV4ZWMpKTtcbiIpOwotICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY2FzdGVkVGhpc09iailcbiIpOwor
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRjbGFzc05hbWUqIGNhc3Rl
ZFRoaXMgPSB0b0pTRE9NV2luZG93KHRoaXNWYWx1ZS50b1RoaXNPYmplY3QoZXhlYykpO1xuIik7
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFjYXN0ZWRUaGlz
KVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7XG4iKTsKICAgICAgICAgICAgIH0gZWxzaWYg
KCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9KSB7Ci0g
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVk
VGhpc09iaiA9IHRvJHtjbGFzc05hbWV9KHRoaXNWYWx1ZS50b1RoaXNPYmplY3QoZXhlYykpO1xu
Iik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFjYXN0ZWRU
aGlzT2JqKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNs
YXNzTmFtZSogY2FzdGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9KHRoaXNWYWx1ZS50b1RoaXNPYmpl
Y3QoZXhlYykpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCFjYXN0ZWRUaGlzKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7XG4iKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJiR7Y2xhc3NOYW1lfTo6c19pbmZvKSlcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihleGVjLCBUeXBlRXJyb3IpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PCRjbGFzc05h
bWUqPihhc09iamVjdCh0aGlzVmFsdWUpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICRjbGFzc05hbWUqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDwkY2xh
c3NOYW1lKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7XG4iKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrRG9tYWlu
U2VjdXJpdHkifSAmJiAKICAgICAgICAgICAgICAgICAhJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrRG9tYWluU2VjdXJpdHkifSkgewotICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY2FzdGVkVGhpc09iai0+YWxs
b3dzQWNjZXNzRnJvbShleGVjKSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGlmICghY2FzdGVkVGhpcy0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSlcbiIpOwog
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTtcbiIpOwogICAgICAgICAgICAgfQogCkBAIC0xNjg1LDE0ICsxNjg1LDE0IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
ICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8
ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDQ3VzdG9tIn0p
IHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gY2FzdGVk
VGhpc09iai0+IiAuICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSAuICIoZXhlYywgYXJncyk7
XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gY2Fz
dGVkVGhpcy0+IiAuICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSAuICIoZXhlYywgYXJncyk7
XG4iKTsKICAgICAgICAgICAgIH0gZWxzaWYgKCRzdmdQT0RMaXN0VHlwZSkgewogICAgICAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7IkpTJHtzdmdQT0RMaXN0VHlwZX0uaCJ9ID0gMTsKICAgICAg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU1NWR1BPRExpc3RDdXN0b20uaCJ9ID0gMTsKICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNTVkdQT0RMaXN0
Q3VzdG9tOjokZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWU8JGNsYXNzTmFtZSwgIiAuIEdldE5h
dGl2ZVR5cGUoJHN2Z1BPRExpc3RUeXBlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLiAiPihjYXN0ZWRUaGlzT2JqLCBleGVjLCBhcmdzLCB0byIgLiAkc3ZnUE9ETGlzdFR5cGUg
LiAiKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiPihjYXN0ZWRU
aGlzLCBleGVjLCBhcmdzLCB0byIgLiAkc3ZnUE9ETGlzdFR5cGUgLiAiKTtcbiIpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAk
aW1wbFR5cGUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsVHlwZSo+KGNhc3RlZFRoaXNPYmotPmlt
cGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1w
bFR5cGUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsVHlwZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7
XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkcG9kVHlwZSBw
b2RJbXAoKmltcCk7XG4iKSBpZiAkcG9kVHlwZTsKIAogICAgICAgICAgICAgICAgIG15ICRudW1Q
YXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwpAQCAtMTkxMiwxMCArMTkxMiwx
MCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgpCiAgICAgaWYgKCRm
dW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlIGVxICJ2b2lkIikgewogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgJGluZGVudCAuICIkZnVuY3Rpb25TdHJpbmc7XG4iKTsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICRpbmRlbnQgLiAic2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTtcbiIpIGlm
IEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICRpbmRlbnQgLiAiaW1wLT5jb21taXRDaGFuZ2UocG9kSW1wLCBjYXN0ZWRUaGlzT2JqKTtc
biIpIGlmICRwb2RUeXBlOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJp
bXAtPmNvbW1pdENoYW5nZShwb2RJbXAsIGNhc3RlZFRoaXMpO1xuIikgaWYgJHBvZFR5cGU7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gInJldHVybiBqc1VuZGVmaW5lZCgp
O1xuIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIgLiAk
aW5kZW50IC4gIkpTQzo6SlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRmdW5j
dGlvbi0+c2lnbmF0dXJlLCAxLCAkaW1wbENsYXNzTmFtZSwgIiIsICRmdW5jdGlvblN0cmluZywg
ImNhc3RlZFRoaXNPYmoiKSAuICI7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJc
biIgLiAkaW5kZW50IC4gIkpTQzo6SlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVl
KCRmdW5jdGlvbi0+c2lnbmF0dXJlLCAxLCAkaW1wbENsYXNzTmFtZSwgIiIsICRmdW5jdGlvblN0
cmluZywgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICRpbmRlbnQgLiAic2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTtcbiIpIGlmIEB7JGZ1bmN0aW9u
LT5yYWlzZXNFeGNlcHRpb25zfTsKIAogICAgICAgICAkY2FsbFdpdGggPSAkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn07CkBAIC0xOTI3LDcgKzE5
MjcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgpCiAgICAgICAg
IGlmICgkcG9kVHlwZSBhbmQgbm90ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSW1tdXRhYmxlIn0pIHsKICAgICAgICAgICAgICMgSW1tdXRhYmxlIG1ldGhvZHMg
ZG8gbm90IGNvbW1pdCBjaGFuZ2VzIGJhY2sgdG8gdGhlIGluc3RhbmNlLCB0aHVzIHByb2R1Y2lu
ZwogICAgICAgICAgICAgIyBhIG5ldyBpbnN0YW5jZSByYXRoZXIgdGhhbiBtdXRhdGluZyBleGlz
dGluZyBvbmUuCi0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJpbXAt
PmNvbW1pdENoYW5nZShwb2RJbXAsIGNhc3RlZFRoaXNPYmopO1xuIik7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJpbXAtPmNvbW1pdENoYW5nZShwb2RJbXAsIGNh
c3RlZFRoaXMpO1xuIik7CiAgICAgICAgIH0KIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
JGluZGVudCAuICJyZXR1cm4gcmVzdWx0O1xuIik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBkZDA4ZWMwMzQ5YjkwYWVlNTQ0OGUyNDk0
NDJlNGZlYzk3ODIxYmJlLi5iYzk1M2E4OTY1YzQwNGM1NTk2ZWJlMWQ4YTgyMGI0YTRiYzk5ZTg4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
QEAgLTMzMCw1NyArMzMwLDU3IEBAIHZvaWQgSlNUZXN0T2JqOjpwdXQoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsCiAKIHZvaWQgc2V0
SlNUZXN0T2JqSW50QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQogewotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09iaiA9IHN0YXRpY19j
YXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOwotICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19j
YXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzT2JqLT5pbXBsKCkpOworICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOworICAgIFRlc3RP
YmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAg
IGltcC0+c2V0SW50QXR0cih2YWx1ZS50b0ludDMyKGV4ZWMpKTsKIH0KIAogdm9pZCBzZXRKU1Rl
c3RPYmpMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmogPSBzdGF0aWNf
Y2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKLSAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNf
Y2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpc09iai0+aW1wbCgpKTsKKyAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKKyAgICBUZXN0
T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAg
ICBpbXAtPnNldExvbmdMb25nQXR0cihzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHZhbHVlLnRvSW50
ZWdlcihleGVjKSkpOwogfQogCiB2b2lkIHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7
Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc09iamVjdCk7Ci0gICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNh
c3RlZFRoaXNPYmotPmltcGwoKSk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGlj
X2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CisgICAgVGVzdE9iaiogaW1wID0gc3RhdGlj
X2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICAgaW1wLT5zZXRVbnNpZ25l
ZExvbmdMb25nQXR0cihzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHZhbHVlLnRvSW50
ZWdlcihleGVjKSkpOwogfQogCiB2b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0
KTsKLSAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpc09i
ai0+aW1wbCgpKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rl
c3RPYmoqPih0aGlzT2JqZWN0KTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0
T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBpbXAtPnNldFN0cmluZ0F0dHIodXN0cmlu
Z1RvU3RyaW5nKHZhbHVlLnRvU3RyaW5nKGV4ZWMpKSk7CiB9CiAKIHZvaWQgc2V0SlNUZXN0T2Jq
VGVzdE9iakF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKIHsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmogPSBzdGF0aWNfY2FzdDxK
U1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKLSAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxU
ZXN0T2JqKj4oY2FzdGVkVGhpc09iai0+aW1wbCgpKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKKyAgICBUZXN0T2JqKiBp
bXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBpbXAt
PnNldFRlc3RPYmpBdHRyKHRvVGVzdE9iaih2YWx1ZSkpOwogfQogCiB2b2lkIHNldEpTVGVzdE9i
akF0dHJXaXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqID0gc3RhdGlj
X2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7Ci0gICAgVGVzdE9iaiogaW1wID0gc3RhdGlj
X2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7CisgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CisgICAgVGVz
dE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAg
ICAgaW1wLT5zZXRBdHRyV2l0aEV4Y2VwdGlvbih2YWx1ZS50b0ludDMyKGV4ZWMpKTsKIH0KIAog
dm9pZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOwotICAg
IFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzT2JqLT5pbXBs
KCkpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+
KHRoaXNPYmplY3QpOworICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihj
YXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGltcC0+c2V0QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24o
dmFsdWUudG9JbnQzMihleGVjKSk7CiB9CiAKIHZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKIHsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmogPSBzdGF0aWNfY2FzdDxK
U1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKLSAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxU
ZXN0T2JqKj4oY2FzdGVkVGhpc09iai0+aW1wbCgpKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKKyAgICBUZXN0T2JqKiBp
bXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBpbXAt
PnNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKHZhbHVlLnRvSW50MzIoZXhlYykpOwogfQogCkBA
IC0zOTksOCArMzk5LDggQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVm9pZE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpTT2IKICAgICBVTlVTRURfUEFS
QU0oYXJncyk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZv
KSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKLSAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0
aGlzVmFsdWUpKTsKLSAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2Fz
dGVkVGhpc09iai0+aW1wbCgpKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNf
Y2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBUZXN0T2JqKiBpbXAg
PSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKIAogICAgIGltcC0+
dm9pZE1ldGhvZCgpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtNDExLDggKzQxMSw4
IEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRN
ZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIGV4CiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwogICAg
IGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCiAgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0g
ICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmlt
cGwoKSk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2Jq
Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8
VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICAgaW50IGludEFyZyA9IGFyZ3MuYXQo
MCkudG9JbnQzMihleGVjKTsKICAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyA9IHVzdHJpbmdUb1N0
cmluZyhhcmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSB0
b1Rlc3RPYmooYXJncy5hdCgyKSk7CkBAIC00MjYsOCArNDI2LDggQEAgSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uSW50TWV0aG9kKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmoKICAgICBVTlVTRURfUEFSQU0oYXJncyk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5o
ZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhl
YywgVHlwZUVycm9yKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmogPSBzdGF0aWNfY2Fz
dDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKLSAgICBUZXN0T2JqKiBpbXAgPSBz
dGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpc09iai0+aW1wbCgpKTsKKyAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFs
dWUpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKIAogCiAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGV4ZWMs
IGltcC0+aW50TWV0aG9kKCkpOwpAQCAtNDM5LDggKzQzOSw4IEBAIEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkludE1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0
ZSogZXhlCiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVy
aXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMs
IFR5cGVFcnJvcik7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqID0gc3RhdGljX2Nhc3Q8
SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0gICAgVGVzdE9iaiogaW1wID0gc3Rh
dGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7CisgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVl
KSk7CisgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMt
PmltcGwoKSk7CiAgICAgaW50IGludEFyZyA9IGFyZ3MuYXQoMCkudG9JbnQzMihleGVjKTsKICAg
ICBjb25zdCBTdHJpbmcmIHN0ckFyZyA9IHVzdHJpbmdUb1N0cmluZyhhcmdzLmF0KDEpLnRvU3Ry
aW5nKGV4ZWMpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSB0b1Rlc3RPYmooYXJncy5hdCgyKSk7
CkBAIC00NTUsMTEgKzQ1NSwxMSBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PYmpNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBKU09iagogICAgIFVOVVNF
RF9QQVJBTShhcmdzKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpz
X2luZm8pKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2Jq
ZWN0KHRoaXNWYWx1ZSkpOwotICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoq
PihjYXN0ZWRUaGlzT2JqLT5pbXBsKCkpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0
YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIFRlc3RPYmoq
IGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogCiAKLSAg
ICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzT2JqLT5nbG9iYWxP
YmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wLT5vYmpNZXRob2QoKSkpOworICAgIEpTQzo6SlNWYWx1
ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6Omdl
dFB0cihpbXAtPm9iak1ldGhvZCgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDY4
LDE0ICs0NjgsMTQgQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBleGUKICAgICBVTlVTRURfUEFSQU0o
YXJncyk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkK
ICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKLSAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlz
VmFsdWUpKTsKLSAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVk
VGhpc09iai0+aW1wbCgpKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2Fz
dDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBz
dGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBpbnQgaW50QXJn
ID0gYXJncy5hdCgwKS50b0ludDMyKGV4ZWMpOwogICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnID0g
dXN0cmluZ1RvU3RyaW5nKGFyZ3MuYXQoMSkudG9TdHJpbmcoZXhlYykpOwogICAgIFRlc3RPYmoq
IG9iakFyZyA9IHRvVGVzdE9iaihhcmdzLmF0KDIpKTsKIAogCi0gICAgSlNDOjpKU1ZhbHVlIHJl
c3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0
UHRyKGltcC0+b2JqTWV0aG9kV2l0aEFyZ3MoaW50QXJnLCBzdHJBcmcsIG9iakFyZykpKTsKKyAg
ICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgV1RGOjpnZXRQdHIoaW1wLT5vYmpNZXRob2RXaXRoQXJncyhpbnRBcmcsIHN0ckFyZywg
b2JqQXJnKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQ4NCw4ICs0ODQsOCBAQCBK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZQogICAgIFVOVVNFRF9QQVJBTShhcmdzKTsKICAgICBpZiAo
IXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQogICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09i
aiA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwotICAgIFRl
c3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzT2JqLT5pbXBsKCkp
OworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFz
T2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RP
YmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCiAg
ICAgaW1wLT5tZXRob2RXaXRoRXhjZXB0aW9uKGVjKTsKQEAgLTQ5OCw4ICs0OTgsOCBAQCBKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2Qo
RXhlY1N0YXRlKiBleGVjLCBKUwogICAgIFVOVVNFRF9QQVJBTShhcmdzKTsKICAgICBpZiAoIXRo
aXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQogICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09iaiA9
IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwotICAgIHJldHVy
biBjYXN0ZWRUaGlzT2JqLT5jdXN0b21NZXRob2QoZXhlYywgYXJncyk7CisgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVl
KSk7CisgICAgcmV0dXJuIGNhc3RlZFRoaXMtPmN1c3RvbU1ldGhvZChleGVjLCBhcmdzKTsKIH0K
IAogSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9t
TWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEpTVmFsdWUgdGhpc1Zh
bHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQpAQCAtNTA3LDggKzUwNyw4IEBAIEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdz
KEV4ZWNTdGF0ZSoKICAgICBVTlVTRURfUEFSQU0oYXJncyk7CiAgICAgaWYgKCF0aGlzVmFsdWUu
aW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
ZXhlYywgVHlwZUVycm9yKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmogPSBzdGF0aWNf
Y2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKLSAgICByZXR1cm4gY2FzdGVk
VGhpc09iai0+Y3VzdG9tTWV0aG9kV2l0aEFyZ3MoZXhlYywgYXJncyk7CisgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVl
KSk7CisgICAgcmV0dXJuIGNhc3RlZFRoaXMtPmN1c3RvbU1ldGhvZFdpdGhBcmdzKGV4ZWMsIGFy
Z3MpOwogfQogCiBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25DdXN0b21BcmdzQW5kRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1Zh
bHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKQEAgLTUxNiw4ICs1MTYsOCBAQCBK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21Bcmdz
QW5kRXhjZXB0aW9uKEV4ZWNTdGF0ZQogICAgIFVOVVNFRF9QQVJBTShhcmdzKTsKICAgICBpZiAo
IXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQogICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09i
aiA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwotICAgIFRl
c3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzT2JqLT5pbXBsKCkp
OworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFz
T2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RP
YmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IFNjcmlwdENhbGxTdGFjayBjYWxsU3RhY2soZXhlYywgYXJncywgMSk7CiAgICAgbG9nKiBpbnRB
cmcgPSB0b2xvZyhhcmdzLmF0KDApKTsKQEAgLTUzMiwxMiArNTMyLDEyIEBAIEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIoRXhl
Y1N0YXRlKiBleGVjCiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwogICAgIGlmICghdGhpc1ZhbHVl
LmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KGV4ZWMsIFR5cGVFcnJvcik7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqID0gc3RhdGlj
X2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0gICAgVGVzdE9iaiogaW1w
ID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7CisgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhp
c1ZhbHVlKSk7CisgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3Rl
ZFRoaXMtPmltcGwoKSk7CiAgICAgSlNWYWx1ZSBsaXN0ZW5lciA9IGFyZ3MuYXQoMSk7CiAgICAg
aWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
LSAgICBpbXAtPmFkZEV2ZW50TGlzdGVuZXIodXN0cmluZ1RvQXRvbWljU3RyaW5nKGFyZ3MuYXQo
MCkudG9TdHJpbmcoZXhlYykpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0
ZW5lciksIGNhc3RlZFRoaXNPYmosIGZhbHNlLCBjdXJyZW50V29ybGQoZXhlYykpLCBhcmdzLmF0
KDIpLnRvQm9vbGVhbihleGVjKSk7CisgICAgaW1wLT5hZGRFdmVudExpc3RlbmVyKHVzdHJpbmdU
b0F0b21pY1N0cmluZyhhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpKSwgSlNFdmVudExpc3RlbmVy
OjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBjYXN0ZWRUaGlzLCBmYWxzZSwgY3VycmVudFdv
cmxkKGV4ZWMpKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOwogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogfQogCkBAIC01NDYsMTIgKzU0NiwxMiBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVyKEV4ZWNTdGF0
ZSogZQogICAgIFVOVVNFRF9QQVJBTShhcmdzKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0
cygmSlNUZXN0T2JqOjpzX2luZm8pKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBU
eXBlRXJyb3IpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PEpT
VGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwotICAgIFRlc3RPYmoqIGltcCA9IHN0YXRp
Y19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzT2JqLT5pbXBsKCkpOworICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkp
OworICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5p
bXBsKCkpOwogICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBhcmdzLmF0KDEpOwogICAgIGlmICghbGlz
dGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgaW1w
LT5yZW1vdmVFdmVudExpc3RlbmVyKHVzdHJpbmdUb0F0b21pY1N0cmluZyhhcmdzLmF0KDApLnRv
U3RyaW5nKGV4ZWMpKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIp
LCBjYXN0ZWRUaGlzT2JqLCBmYWxzZSwgY3VycmVudFdvcmxkKGV4ZWMpKS5nZXQoKSwgYXJncy5h
dCgyKS50b0Jvb2xlYW4oZXhlYykpOworICAgIGltcC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih1c3Ry
aW5nVG9BdG9taWNTdHJpbmcoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSksIEpTRXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJl
bnRXb3JsZChleGVjKSkuZ2V0KCksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApAQCAtNTYwLDggKzU2MCw4IEBAIEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWUoRXhl
Y1N0YXRlKiBleGVjCiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwogICAgIGlmICghdGhpc1ZhbHVl
LmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KGV4ZWMsIFR5cGVFcnJvcik7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqID0gc3RhdGlj
X2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0gICAgVGVzdE9iaiogaW1w
ID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7CisgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhp
c1ZhbHVlKSk7CisgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3Rl
ZFRoaXMtPmltcGwoKSk7CiAgICAgRnJhbWUqIGR5bmFtaWNGcmFtZSA9IHRvRHluYW1pY0ZyYW1l
KGV4ZWMpOwogICAgIGlmICghZHluYW1pY0ZyYW1lKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKQEAgLTU3NSw4ICs1NzUsOCBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lQW5kQXJnKEV4ZWNTdGF0ZQogICAgIFVO
VVNFRF9QQVJBTShhcmdzKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2Jq
OjpzX2luZm8pKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwot
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFz
T2JqZWN0KHRoaXNWYWx1ZSkpOwotICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RP
YmoqPihjYXN0ZWRUaGlzT2JqLT5pbXBsKCkpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIFRlc3RP
YmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAg
IEZyYW1lKiBkeW5hbWljRnJhbWUgPSB0b0R5bmFtaWNGcmFtZShleGVjKTsKICAgICBpZiAoIWR5
bmFtaWNGcmFtZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC01OTEsOCArNTkx
LDggQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aER5bmFtaWNGcmFtZUFuZE9wdGlvbmFsQXJnKEUKICAgICBVTlVTRURfUEFSQU0oYXJncyk7CiAg
ICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsK
LSAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpc09iai0+
aW1wbCgpKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RP
YmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2Fz
dDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBGcmFtZSogZHluYW1pY0ZyYW1l
ID0gdG9EeW5hbWljRnJhbWUoZXhlYyk7CiAgICAgaWYgKCFkeW5hbWljRnJhbWUpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtNjE1LDggKzYxNSw4IEBAIEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRVc2Vy
R2VzdHVyZShFCiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwogICAgIGlmICghdGhpc1ZhbHVlLmlu
aGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4
ZWMsIFR5cGVFcnJvcik7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqID0gc3RhdGljX2Nh
c3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0gICAgVGVzdE9iaiogaW1wID0g
c3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7CisgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1Zh
bHVlKSk7CisgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRo
aXMtPmltcGwoKSk7CiAgICAgRnJhbWUqIGR5bmFtaWNGcmFtZSA9IHRvRHluYW1pY0ZyYW1lKGV4
ZWMpOwogICAgIGlmICghZHluYW1pY0ZyYW1lKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKQEAgLTYzMSw4ICs2MzEsOCBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBUwogICAgIFVOVVNF
RF9QQVJBTShhcmdzKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpz
X2luZm8pKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2Jq
ZWN0KHRoaXNWYWx1ZSkpOwotICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoq
PihjYXN0ZWRUaGlzT2JqLT5pbXBsKCkpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0
YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIFRlc3RPYmoq
IGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIEZy
YW1lKiBkeW5hbWljRnJhbWUgPSB0b0R5bmFtaWNGcmFtZShleGVjKTsKICAgICBpZiAoIWR5bmFt
aWNGcmFtZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC02NTUsOCArNjU1LDgg
QEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNj
cmlwdFN0YXRlVm9pZChFeGVjU3RhdGUqIGUKICAgICBVTlVTRURfUEFSQU0oYXJncyk7CiAgICAg
aWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKICAgICAgICAgcmV0
dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXNPYmogPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKLSAg
ICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpc09iai0+aW1w
bCgpKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoq
Pihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxU
ZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKIAogICAgIGltcC0+d2l0aFNjcmlwdFN0YXRl
Vm9pZChleGVjKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTY2NywxMSArNjY3LDEx
IEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhT
Y3JpcHRTdGF0ZU9iaihFeGVjU3RhdGUqIGV4CiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwogICAg
IGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCiAgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0g
ICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmlt
cGwoKSk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2Jq
Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8
VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAKIAotICAgIEpTQzo6SlNWYWx1ZSByZXN1
bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0
cihpbXAtPndpdGhTY3JpcHRTdGF0ZU9iaihleGVjKSkpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1
bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihp
bXAtPndpdGhTY3JpcHRTdGF0ZU9iaihleGVjKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
QEAgLTY4Miw4ICs2ODIsOCBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKEV4ZQogICAgIFVOVVNFRF9Q
QVJBTShhcmdzKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2lu
Zm8pKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0
KHRoaXNWYWx1ZSkpOwotICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihj
YXN0ZWRUaGlzT2JqLT5pbXBsKCkpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRp
Y19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIFRlc3RPYmoqIGlt
cCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogCiAgICAgaW1wLT53aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9u
KGV4ZWMsIGVjKTsKQEAgLTY5NiwxMiArNjk2LDEyIEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbihFeGVj
CiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZK
U1Rlc3RPYmo6OnNfaW5mbykpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVF
cnJvcik7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNUZXN0
T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0gICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nh
c3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7CisgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Cisg
ICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwo
KSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAKIAotICAgIEpTQzo6SlNWYWx1ZSByZXN1
bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0
cihpbXAtPndpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbihleGVjLCBlYykpKTsKKyAgICBKU0M6
OkpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
V1RGOjpnZXRQdHIoaW1wLT53aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oZXhlYywgZWMpKSk7
CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtNzEzLDggKzcxMyw4IEBA
IEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbEFyZyhFeGVjU3RhdGUqCiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCiAgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
T2JqID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0gICAg
VGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwo
KSk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4o
YXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVz
dE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAKICAgICBpbnQgYXJnc0NvdW50ID0gYXJncy5z
aXplKCk7CiAgICAgaWYgKGFyZ3NDb3VudCA8IDEpIHsKQEAgLTczMyw4ICs3MzMsOCBAQCBKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9u
T3B0aW9uYWxBcmdBbmRPcHRpbwogICAgIFVOVVNFRF9QQVJBTShhcmdzKTsKICAgICBpZiAoIXRo
aXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQogICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09iaiA9
IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwotICAgIFRlc3RP
YmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzT2JqLT5pbXBsKCkpOwor
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2Jq
ZWN0KHRoaXNWYWx1ZSkpOworICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoq
PihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGludCBub25PcHQgPSBhcmdzLmF0KDApLnRvSW50
MzIoZXhlYyk7CiAKICAgICBpbnQgYXJnc0NvdW50ID0gYXJncy5zaXplKCk7CkBAIC03NTQsOCAr
NzU0LDggQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3AKICAgICBVTlVTRURfUEFSQU0oYXJncyk7
CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKICAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKLSAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUp
KTsKLSAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpc09i
ai0+aW1wbCgpKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rl
c3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNf
Y2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBpbnQgbm9uT3B0ID0gYXJn
cy5hdCgwKS50b0ludDMyKGV4ZWMpOwogCiAgICAgaW50IGFyZ3NDb3VudCA9IGFyZ3Muc2l6ZSgp
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>