<?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>17528</bug_id>
          
          <creation_ts>2008-02-24 20:58:00 -0800</creation_ts>
          <short_desc>Give testkjs a bath</short_desc>
          <delta_ts>2008-02-24 22:48:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>71825</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-02-24 20:58:00 -0800</bug_when>
    <thetext>It needs a scrubbing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71827</commentid>
    <comment_count>1</comment_count>
      <attachid>19335</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-02-24 21:04:49 -0800</bug_when>
    <thetext>Created attachment 19335
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71830</commentid>
    <comment_count>2</comment_count>
      <attachid>19335</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-02-24 21:11:42 -0800</bug_when>
    <thetext>Comment on attachment 19335
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71841</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-02-24 22:48:48 -0800</bug_when>
    <thetext>Landed in r30555.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19335</attachid>
            <date>2008-02-24 21:04:49 -0800</date>
            <delta_ts>2008-02-24 21:11:42 -0800</delta_ts>
            <desc>patch</desc>
            <filename>cleanTestkjs.diff</filename>
            <type>text/plain</type>
            <size>20628</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDMwNTU0
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMDgtMDIt
MjQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzUyOAorICAgICAgICBHaXZlIHRlc3RranMgYSBiYXRoCisKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajogTWFrZSB0aGUgdGVzdGtqcy5jcHAgdXNlIDQgc3BhY2UgaW5kZW50YXRp
b24uCisgICAgICAgICoga2pzL3Rlc3RranMuY3BwOgorICAgICAgICAoU3RvcFdhdGNoOjpnZXRF
bGFwc2VkTVMpOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjpjbGFzc05hbWUpOgorICAgICAgICAo
R2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QpOgorICAgICAgICBSZW5hbWUgR2xvYmFsSW1wIHRv
IEdsb2JhbE9iamVjdCBhbmQgc2V0dXAgdGhlIGdsb2JhbCBmdW5jdGlvbnMKKyAgICAgICAgaW4g
dGhlIEdsb2JhbE9iamVjdCdzIGNvbnN0cnVjdG9yLiBBbHNvLCB1c2Ugc3RhdGljIGZ1bmN0aW9u
cyBmb3IKKyAgICAgICAgdGhlIGltcGxlbWVudGF0aW9uIHNvIHdlIGNhbiB1c2UgdGhlIHN0YW5k
YXJkIFByb3RvdHlwZUZ1bmN0aW9uCisgICAgICAgIGNsYXNzIGFuZCByZW1vdmUgVGVzdEZ1bmN0
aW9uSW1wLgorICAgICAgICAoZnVuY3Rpb25QcmludCk6IE1vdmUgcHJpbnQoKSBmdW5jdGlvbmFs
aXR5IGhlcmUuCisgICAgICAgIChmdW5jdGlvbkRlYnVnKTogTW92ZSBkZWJ1ZygpIGZ1bmN0aW9u
YWxpdHkgaGVyZS4KKyAgICAgICAgKGZ1bmN0aW9uR0MpOiBNb3ZlIGdjKCkgZnVuY3Rpb25hbGl0
eSBoZXJlLgorICAgICAgICAoZnVuY3Rpb25WZXJzaW9uKTogTW92ZSB2ZXJzaW9uKCkgZnVuY3Rp
b25hbGl0eSBoZXJlLgorICAgICAgICAoZnVuY3Rpb25SdW4pOiBNb3ZlIHJ1bigpIGZ1bmN0aW9u
YWxpdHkgaGVyZS4KKyAgICAgICAgKGZ1bmN0aW9uTG9hZCk6IE1vdmUgbG9hZCgpIGZ1bmN0aW9u
YWxpdHkgaGVyZS4KKyAgICAgICAgKGZ1bmN0aW9uUXVpdCk6IE1vdmUgcXVpdCgpIGZ1bmN0aW9u
YWxpdHkgaGVyZS4KKyAgICAgICAgKHByZXR0eVByaW50U2NyaXB0KTogRml4IGluZGVudGF0aW9u
LgorICAgICAgICAocnVuV2l0aFNjcmlwdHMpOiBTaW5jZSBhbGwgdGhlIGZ1bmN0aW9uYWxpdHkg
b2YgY3JlYXRlR2xvYmFsT2JqZWN0IGlzCisgICAgICAgIG5vdyBpbiB0aGUgR2xvYmFsT2JqZWN0
IGNvbnN0cnVjdG9yLCBqdXN0IGNhbGwgbmV3IGhlcmUuCisgICAgICAgIChwYXJzZUFyZ3VtZW50
cyk6IEZpeCBpbmRlbnRhdGlvbi4KKyAgICAgICAgKGtqc21haW4pOiBEaXR0bworICAgICAgICAo
ZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZSk6IERpdHRvLgorCiAyMDA4LTAyLTI0ICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1
bnQgYW5kIE1hcmsgUm93ZS4KSW5kZXg6IEphdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDMwNTQ4KQorKysgSmF2YVNjcmlwdENvcmUu
ZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYyLDcgQEAgX19aTjNLSlMxNlBhcnNlclJl
ZkNvdW50ZWQzcmVmRXYKIF9fWk4zS0pTMTZQYXJzZXJSZWZDb3VudGVkNWRlcmVmRXYKIF9fWk4z
S0pTMTZSdW50aW1lT2JqZWN0SW1wNGluZm9FCiBfX1pOM0tKUzE3UHJvcGVydHlOYW1lQXJyYXkz
YWRkRVJLTlNfMTBJZGVudGlmaWVyRQorX19aTjNLSlMxN1Byb3RvdHlwZUZ1bmN0aW9uQzFFUE5T
XzlFeGVjU3RhdGVFUE5TXzE3RnVuY3Rpb25Qcm90b3R5cGVFaVJLTlNfMTBJZGVudGlmaWVyRVBG
UE5TXzdKU1ZhbHVlRVMyX1BOU184SlNPYmplY3RFUktOU180TGlzdEVFCiBfX1pOM0tKUzE3UHJv
dG90eXBlRnVuY3Rpb25DMUVQTlNfOUV4ZWNTdGF0ZUVpUktOU18xMElkZW50aWZpZXJFUEZQTlNf
N0pTVmFsdWVFUzJfUE5TXzhKU09iamVjdEVSS05TXzRMaXN0RUUKIF9fWk4zS0pTMTlJbnRlcm5h
bEZ1bmN0aW9uSW1wNGluZm9FCiBfX1pOM0tKUzE5SW50ZXJuYWxGdW5jdGlvbkltcEMyRVBOU18x
N0Z1bmN0aW9uUHJvdG90eXBlRVJLTlNfMTBJZGVudGlmaWVyRQpAQCAtMjE0LDYgKzIxNSw3IEBA
IF9fWk4zS0pTOEpTT2JqZWN0MTRjYWxsQXNGdW5jdGlvbkVQTlNfOUUKIF9fWk4zS0pTOEpTT2Jq
ZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKIF9f
Wk4zS0pTOEpTT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVqCiBfX1pOM0tK
UzhKU09iamVjdDE2Z2V0UHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0
eU5hbWVBcnJheUUKK19fWk4zS0pTOEpTT2JqZWN0MTdwdXREaXJlY3RGdW5jdGlvbkVQTlNfMTlJ
bnRlcm5hbEZ1bmN0aW9uSW1wRWkKIF9fWk4zS0pTOEpTT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNs
b3RFUE5TXzlFeGVjU3RhdGVFalJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zS0pTOEpTT2JqZWN0
MThnZXRQcmltaXRpdmVOdW1iZXJFUE5TXzlFeGVjU3RhdGVFUmRSUE5TXzdKU1ZhbHVlRQogX19a
TjNLSlM4SlNPYmplY3QyMmZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3RFUk5TXzEyUHJvcGVydHlTbG90
RVBQTlNfN0pTVmFsdWVFCkBAIC0yNDIsNyArMjQ0LDIxIEBAIF9fWk4zS0pTZXFFUktOU183VVN0
cmluZ0VQS2MKIF9fWk4zV1RGMTBmYXN0Q2FsbG9jRW1tCiBfX1pOM1dURjEwZmFzdE1hbGxvY0Vt
CiBfX1pOM1dURjExZmFzdFJlYWxsb2NFUHZtCitfX1pOM1dURjEyY3JlYXRlVGhyZWFkRVBGUHZT
MF9FUzBfCitfX1pOM1dURjEyZGV0YWNoVGhyZWFkRWoKK19fWk4zV1RGMTNjdXJyZW50VGhyZWFk
RXYKK19fWk4zV1RGMTVUaHJlYWRDb25kaXRpb240d2FpdEVSTlNfNU11dGV4RQorX19aTjNXVEYx
NVRocmVhZENvbmRpdGlvbjZzaWduYWxFdgorX19aTjNXVEYxNVRocmVhZENvbmRpdGlvbjlicm9h
ZGNhc3RFdgorX19aTjNXVEYxNVRocmVhZENvbmRpdGlvbkMxRXYKK19fWk4zV1RGMTVUaHJlYWRD
b25kaXRpb25EMUV2CiBfX1pOM1dURjE2ZmFzdFplcm9lZE1hbGxvY0VtCitfX1pOM1dURjIzd2Fp
dEZvclRocmVhZENvbXBsZXRpb25FalBQdgorX19aTjNXVEY1TXV0ZXg0bG9ja0V2CitfX1pOM1dU
RjVNdXRleDZ1bmxvY2tFdgorX19aTjNXVEY1TXV0ZXg3dHJ5TG9ja0V2CitfX1pOM1dURjVNdXRl
eEMxRXYKK19fWk4zV1RGNU11dGV4RDFFdgogX19aTjNXVEY4ZmFzdEZyZWVFUHYKIF9fWk5LM0tK
UzExUHJvcGVydHlNYXAzZ2V0RVJLTlNfMTBJZGVudGlmaWVyRQogX19aTkszS0pTMTFQcm9wZXJ0
eU1hcDRzYXZlRVJOU18xNVNhdmVkUHJvcGVydGllc0UKQEAgLTI5OCwxNyArMzE0LDMgQEAgX2pz
Y29yZV9jb2xsZWN0b3JfaW50cm9zcGVjdGlvbgogX2pzY29yZV9mYXN0bWFsbG9jX2ludHJvc3Bl
Y3Rpb24KIF9rSlNDbGFzc0RlZmluaXRpb25FbXB0eQogX2tqc19zdHJ0b2QKLV9fWk4zV1RGNU11
dGV4QzFFdgotX19aTjNXVEY1TXV0ZXhEMUV2Ci1fX1pOM1dURjE1VGhyZWFkQ29uZGl0aW9uNHdh
aXRFUk5TXzVNdXRleEUKLV9fWk4zV1RGNU11dGV4N3RyeUxvY2tFdgotX19aTjNXVEYxMmRldGFj
aFRocmVhZEVqCi1fX1pOM1dURjEzY3VycmVudFRocmVhZEV2Ci1fX1pOM1dURjVNdXRleDRsb2Nr
RXYKLV9fWk4zV1RGMjN3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbkVqUFB2Ci1fX1pOM1dURjE1VGhy
ZWFkQ29uZGl0aW9uQzFFdgotX19aTjNXVEYxNVRocmVhZENvbmRpdGlvbkQxRXYKLV9fWk4zV1RG
NU11dGV4NnVubG9ja0V2Ci1fX1pOM1dURjEyY3JlYXRlVGhyZWFkRVBGUHZTMF9FUzBfCi1fX1pO
M1dURjE1VGhyZWFkQ29uZGl0aW9uOWJyb2FkY2FzdEV2Ci1fX1pOM1dURjE1VGhyZWFkQ29uZGl0
aW9uNnNpZ25hbEV2CkluZGV4OiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDMwNTQ4KQorKysgSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDI5LDcgKzQyOSw3IEBACiAJCTFDQUE4QjRBMEQz
MkMzOUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEphdmFTY3JpcHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBQThC
NEIwRDMyQzM5QTAwNDFCQ0ZGIC8qIEphdmFTY3JpcHRDb3JlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDQUYzNDg4MEE2QzQyMTcwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViU2NyaXB0T2JqZWN0Lmg7IHBhdGggPSBi
aW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyogdGVzdGtqcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gMjsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSB0ZXN0a2pzLmNwcDsg
cGF0aCA9IC4uL2tqcy90ZXN0a2pzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB9OworCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyogdGVzdGtqcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSB0ZXN0
a2pzLmNwcDsgcGF0aCA9IC4uL2tqcy90ZXN0a2pzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA0OyB9OwogCQk1MTE0RjQ3QjA1RTQ0MjYyMDBEMUJCQkQgLyogcnVudGlt
ZV9yb290LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IHJ1bnRpbWVfcm9vdC5jcHA7IHBhdGggPSBiaW5kaW5ncy9ydW50aW1lX3Jvb3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTUxMTRGNDdD
MDVFNDQyNjIwMEQxQkJCRCAvKiBydW50aW1lX3Jvb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gcnVudGltZV9yb290Lmg7IHBhdGggPSBiaW5k
aW5ncy9ydW50aW1lX3Jvb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB9OwogCQk1MTFCMDg3MDA1NjQ2ODczMDA4MEU0ODYgLyogcnVudGltZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHJ1bnRpbWUuaDsgcGF0aCA9
IGJpbmRpbmdzL3J1bnRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB9OwpJbmRleDoga2pzL3Rlc3RranMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy90ZXN0a2pzLmNw
cAkocmV2aXNpb24gMzA1NTMpCisrKyBranMvdGVzdGtqcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNyArMSw2IEBACi0vLyAtKi0gYy1iYXNpYy1vZmZzZXQ6IDIgLSotCiAvKgogICogIENvcHly
aWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMDcgQXBwbGUgSW5jLgorICogIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiAgQ29weXJpZ2h0IChDKSAyMDA2IEJqb2VybiBHcmFmIChiam9lcm4uZ3JhZkBnbWFpbC5jb20p
CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKQEAgLTI4LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQYXJzZXIuaCIKICNp
bmNsdWRlICJhcnJheV9vYmplY3QuaCIKICNpbmNsdWRlICJjb2xsZWN0b3IuaCIKKyNpbmNsdWRl
ICJmdW5jdGlvbi5oIgogI2luY2x1ZGUgImludGVycHJldGVyLmgiCiAjaW5jbHVkZSAibm9kZXMu
aCIKICNpbmNsdWRlICJvYmplY3QuaCIKQEAgLTU2LDEzICs1NiwyMCBAQCB1c2luZyBuYW1lc3Bh
Y2UgV1RGOwogCiBzdGF0aWMgYm9vbCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0
IFVTdHJpbmcmIGZpbGVOYW1lLCBWZWN0b3I8Y2hhcj4mIGJ1ZmZlcik7CiAKLWNsYXNzIFN0b3BX
YXRjaAoteworc3RhdGljIEpTVmFsdWUqIGZ1bmN0aW9uUHJpbnQoRXhlY1N0YXRlKiwgSlNPYmpl
Y3QqLCBjb25zdCBMaXN0Jik7CitzdGF0aWMgSlNWYWx1ZSogZnVuY3Rpb25EZWJ1ZyhFeGVjU3Rh
dGUqLCBKU09iamVjdCosIGNvbnN0IExpc3QmKTsKK3N0YXRpYyBKU1ZhbHVlKiBmdW5jdGlvbkdD
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgY29uc3QgTGlzdCYpOworc3RhdGljIEpTVmFsdWUqIGZ1
bmN0aW9uVmVyc2lvbihFeGVjU3RhdGUqLCBKU09iamVjdCosIGNvbnN0IExpc3QmKTsKK3N0YXRp
YyBKU1ZhbHVlKiBmdW5jdGlvblJ1bihFeGVjU3RhdGUqLCBKU09iamVjdCosIGNvbnN0IExpc3Qm
KTsKK3N0YXRpYyBKU1ZhbHVlKiBmdW5jdGlvbkxvYWQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBj
b25zdCBMaXN0Jik7CitzdGF0aWMgSlNWYWx1ZSogZnVuY3Rpb25RdWl0KEV4ZWNTdGF0ZSosIEpT
T2JqZWN0KiwgY29uc3QgTGlzdCYpOworCitjbGFzcyBTdG9wV2F0Y2ggewogcHVibGljOgogICAg
IHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIHN0b3AoKTsKICAgICBsb25nIGdldEVsYXBzZWRNUygp
OyAvLyBjYWxsIHN0b3AoKSBmaXJzdAotICAgIAorCiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKFFU
KQogICAgIHVpbnQgbV9zdGFydFRpbWU7CkBAIC0xMDgsODYgKzExNSw5MyBAQCBsb25nIFN0b3BX
YXRjaDo6Z2V0RWxhcHNlZE1TKCkKICNlbHNlCiAgICAgdGltZXZhbCBlbGFwc2VkVGltZTsKICAg
ICB0aW1lcnN1YigmbV9zdG9wVGltZSwgJm1fc3RhcnRUaW1lLCAmZWxhcHNlZFRpbWUpOwotICAg
IAorCiAgICAgcmV0dXJuIGVsYXBzZWRUaW1lLnR2X3NlYyAqIDEwMDAgKyBscm91bmRmKGVsYXBz
ZWRUaW1lLnR2X3VzZWMgLyAxMDAwLjBmKTsKICNlbmRpZgogfQogCi1jbGFzcyBHbG9iYWxJbXAg
OiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgeworY2xhc3MgR2xvYmFsT2JqZWN0IDogcHVibGljIEpT
R2xvYmFsT2JqZWN0IHsKIHB1YmxpYzoKLSAgdmlydHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNv
bnN0IHsgcmV0dXJuICJnbG9iYWwiOyB9CisgICAgR2xvYmFsT2JqZWN0KFZlY3RvcjxVU3RyaW5n
PiYgYXJndW1lbnRzKTsKKyAgICB2aXJ0dWFsIFVTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gImdsb2JhbCI7IH0KIH07Ci1DT01QSUxFX0FTU0VSVCghSXNJbnRlZ2VyPEdsb2JhbElt
cD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX0dsb2JhbEltcF9mYWxzZSk7CitDT01QSUxFX0FTU0VS
VCghSXNJbnRlZ2VyPEdsb2JhbE9iamVjdD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX0dsb2JhbE9i
amVjdF9mYWxzZSk7CiAKLWNsYXNzIFRlc3RGdW5jdGlvbkltcCA6IHB1YmxpYyBKU09iamVjdCB7
Ci1wdWJsaWM6Ci0gIGVudW0gVGVzdEZ1bmN0aW9uVHlwZSB7IFByaW50LCBEZWJ1ZywgUXVpdCwg
R0MsIFZlcnNpb24sIFJ1biwgTG9hZCB9OworR2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QoVmVj
dG9yPFVTdHJpbmc+JiBhcmd1bWVudHMpCit7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IFBy
b3RvdHlwZUZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgZnVuY3Rpb25Qcm90b3R5cGUoKSwgMSwgImRl
YnVnIiwgZnVuY3Rpb25EZWJ1ZykpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQcm90b3R5
cGVGdW5jdGlvbihnbG9iYWxFeGVjKCksIGZ1bmN0aW9uUHJvdG90eXBlKCksIDEsICJwcmludCIs
IGZ1bmN0aW9uUHJpbnQpKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBlRnVu
Y3Rpb24oZ2xvYmFsRXhlYygpLCBmdW5jdGlvblByb3RvdHlwZSgpLCAwLCAicXVpdCIsIGZ1bmN0
aW9uUXVpdCkpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihn
bG9iYWxFeGVjKCksIGZ1bmN0aW9uUHJvdG90eXBlKCksIDAsICJnYyIsIGZ1bmN0aW9uR0MpKTsK
KyAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBlRnVuY3Rpb24oZ2xvYmFsRXhlYygp
LCBmdW5jdGlvblByb3RvdHlwZSgpLCAxLCAidmVyc2lvbiIsIGZ1bmN0aW9uVmVyc2lvbikpOwor
ICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihnbG9iYWxFeGVjKCks
IGZ1bmN0aW9uUHJvdG90eXBlKCksIDEsICJydW4iLCBmdW5jdGlvblJ1bikpOworICAgIHB1dERp
cmVjdEZ1bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihnbG9iYWxFeGVjKCksIGZ1bmN0aW9u
UHJvdG90eXBlKCksIDEsICJsb2FkIiwgZnVuY3Rpb25Mb2FkKSk7CiAKLSAgVGVzdEZ1bmN0aW9u
SW1wKFRlc3RGdW5jdGlvblR5cGUgaSwgaW50IGxlbmd0aCk7Ci0gIHZpcnR1YWwgYm9vbCBpbXBs
ZW1lbnRzQ2FsbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgdmlydHVhbCBKU1ZhbHVlKiBj
YWxsQXNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBM
aXN0ICZhcmdzKTsKKyAgICBKU09iamVjdCogYXJyYXkgPSBhcnJheUNvbnN0cnVjdG9yKCktPmNv
bnN0cnVjdChnbG9iYWxFeGVjKCksIGdsb2JhbEV4ZWMoKS0+ZW1wdHlMaXN0KCkpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKQorICAgICAgICBhcnJh
eS0+cHV0KGdsb2JhbEV4ZWMoKSwgaSwganNTdHJpbmcoYXJndW1lbnRzW2ldKSk7CisgICAgcHV0
RGlyZWN0KCJhcmd1bWVudHMiLCBhcnJheSk7CiAKLXByaXZhdGU6Ci0gIFRlc3RGdW5jdGlvblR5
cGUgbV90eXBlOwotfTsKKyAgICBJbnRlcnByZXRlcjo6c2V0U2hvdWxkUHJpbnRFeGNlcHRpb25z
KHRydWUpOworfQogCi1UZXN0RnVuY3Rpb25JbXA6OlRlc3RGdW5jdGlvbkltcChUZXN0RnVuY3Rp
b25UeXBlIGksIGludCBsZW5ndGgpCi0gIDogSlNPYmplY3QoKQotICAsIG1fdHlwZShpKQotewot
ICBwdXREaXJlY3QoSWRlbnRpZmllcigibGVuZ3RoIiksIGxlbmd0aCwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5IHwgRG9udEVudW0pOwotfQotCi1KU1ZhbHVlKiBUZXN0RnVuY3Rpb25JbXA6OmNhbGxB
c0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBjb25zdCBMaXN0ICZhcmdzKQot
ewotICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNhc2UgUHJpbnQ6Ci0gICAgICBwcmludGYoIiVz
XG4iLCBhcmdzWzBdLT50b1N0cmluZyhleGVjKS5VVEY4U3RyaW5nKCkuY19zdHIoKSk7Ci0gICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBjYXNlIERlYnVnOgotICAgICAgZnByaW50Zihz
dGRlcnIsICItLT4gJXNcbiIsIGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLlVURjhTdHJpbmcoKS5j
X3N0cigpKTsKLSAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIGNhc2UgR0M6Ci0gICAg
ewotICAgICAgSlNMb2NrIGxvY2s7Ci0gICAgICBDb2xsZWN0b3I6OmNvbGxlY3QoKTsKLSAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIH0KLSAgICBjYXNlIFZlcnNpb246Ci0gICAgICAv
LyBXZSBuZWVkIHRoaXMgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgTW96aWxs
YSBKUyB0ZXN0cyBidXQgZm9yIG5vdwotICAgICAgLy8gd2UgZG9uJ3QgYWN0dWFsbHkgZG8gYW55
IHZlcnNpb24tc3BlY2lmaWMgaGFuZGxpbmcKLSAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
ICAgIGNhc2UgUnVuOgotICAgIHsKLSAgICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7Ci0gICAgICBV
U3RyaW5nIGZpbGVOYW1lID0gYXJnc1swXS0+dG9TdHJpbmcoZXhlYyk7Ci0gICAgICBWZWN0b3I8
Y2hhcj4gc2NyaXB0OwotICAgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGZp
bGVOYW1lLCBzY3JpcHQpKQorSlNWYWx1ZSogZnVuY3Rpb25QcmludChFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiwgY29uc3QgTGlzdCYgYXJncykKK3sKKyAgICBwcmludGYoIiVzXG4iLCBhcmdz
WzBdLT50b1N0cmluZyhleGVjKS5VVEY4U3RyaW5nKCkuY19zdHIoKSk7CisgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUqIGZ1bmN0aW9uRGVidWcoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCosIGNvbnN0IExpc3QmIGFyZ3MpCit7CisgICAgZnByaW50ZihzdGRlcnIsICIt
LT4gJXNcbiIsIGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLlVURjhTdHJpbmcoKS5jX3N0cigpKTsK
KyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworSlNWYWx1ZSogZnVuY3Rpb25HQyhFeGVj
U3RhdGUqLCBKU09iamVjdCosIGNvbnN0IExpc3QmKQoreworICAgIEpTTG9jayBsb2NrOworICAg
IENvbGxlY3Rvcjo6Y29sbGVjdCgpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitK
U1ZhbHVlKiBmdW5jdGlvblZlcnNpb24oRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25zdCBMaXN0
JikKK3sKKyAgICAvLyBXZSBuZWVkIHRoaXMgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0
aCB0aGUgTW96aWxsYSBKUyB0ZXN0cyBidXQgZm9yIG5vdworICAgIC8vIHdlIGRvbid0IGFjdHVh
bGx5IGRvIGFueSB2ZXJzaW9uLXNwZWNpZmljIGhhbmRsaW5nCisgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7Cit9CisKK0pTVmFsdWUqIGZ1bmN0aW9uUnVuKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqLCBjb25zdCBMaXN0JiBhcmdzKQoreworICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CisgICAg
VVN0cmluZyBmaWxlTmFtZSA9IGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpOworICAgIFZlY3Rvcjxj
aGFyPiBzY3JpcHQ7CisgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGVO
YW1lLCBzY3JpcHQpKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBHZW5lcmFsRXJy
b3IsICJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpOwogCi0gICAgICBzdG9wV2F0Y2guc3RhcnQoKTsK
LSAgICAgIEludGVycHJldGVyOjpldmFsdWF0ZShleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkt
Pmdsb2JhbEV4ZWMoKSwgZmlsZU5hbWUsIDAsIHNjcmlwdC5kYXRhKCkpOwotICAgICAgc3RvcFdh
dGNoLnN0b3AoKTsKLSAgICAgIAotICAgICAgcmV0dXJuIGpzTnVtYmVyKHN0b3BXYXRjaC5nZXRF
bGFwc2VkTVMoKSk7Ci0gICAgfQotICAgIGNhc2UgTG9hZDoKLSAgICB7Ci0gICAgICBVU3RyaW5n
IGZpbGVOYW1lID0gYXJnc1swXS0+dG9TdHJpbmcoZXhlYyk7Ci0gICAgICBWZWN0b3I8Y2hhcj4g
c2NyaXB0OwotICAgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGVOYW1l
LCBzY3JpcHQpKQorICAgIHN0b3BXYXRjaC5zdGFydCgpOworICAgIEludGVycHJldGVyOjpldmFs
dWF0ZShleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgZmlsZU5hbWUs
IDAsIHNjcmlwdC5kYXRhKCkpOworICAgIHN0b3BXYXRjaC5zdG9wKCk7CisKKyAgICByZXR1cm4g
anNOdW1iZXIoc3RvcFdhdGNoLmdldEVsYXBzZWRNUygpKTsKK30KKworSlNWYWx1ZSogZnVuY3Rp
b25Mb2FkKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBjb25zdCBMaXN0JiBhcmdzKQorewor
ICAgIFVTdHJpbmcgZmlsZU5hbWUgPSBhcmdzWzBdLT50b1N0cmluZyhleGVjKTsKKyAgICBWZWN0
b3I8Y2hhcj4gc2NyaXB0OworICAgIGlmICghZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShm
aWxlTmFtZSwgc2NyaXB0KSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgR2VuZXJh
bEVycm9yLCAiQ291bGQgbm90IG9wZW4gZmlsZS4iKTsKIAotICAgICAgSW50ZXJwcmV0ZXI6OmV2
YWx1YXRlKGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBmaWxlTmFt
ZSwgMCwgc2NyaXB0LmRhdGEoKSk7CisgICAgSW50ZXJwcmV0ZXI6OmV2YWx1YXRlKGV4ZWMtPmR5
bmFtaWNHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBmaWxlTmFtZSwgMCwgc2NyaXB0LmRh
dGEoKSk7CiAKLSAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIH0KLSAgICBjYXNlIFF1
aXQ6Ci0gICAgICBleGl0KDApOwotICAgIGRlZmF1bHQ6Ci0gICAgICBhYm9ydCgpOwotICB9Ci0g
IHJldHVybiAwOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitKU1ZhbHVlKiBmdW5j
dGlvblF1aXQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25zdCBMaXN0JikKK3sKKyAgICBleGl0
KDApOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCiAvLyBVc2UgU0VIIGZvciBSZWxl
YXNlIGJ1aWxkcyBvbmx5IHRvIGdldCByaWQgb2YgdGhlIGNyYXNoIHJlcG9ydCBkaWFsb2cKQEAg
LTIyMyw2OCArMjM3LDQyIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBy
ZXR1cm4gcmVzOwogfQogCi1zdGF0aWMgR2xvYmFsSW1wKiBjcmVhdGVHbG9iYWxPYmplY3QoVmVj
dG9yPFVTdHJpbmc+JiBhcmd1bWVudHMpCi17Ci0gIEdsb2JhbEltcCogZ2xvYmFsID0gbmV3IEds
b2JhbEltcDsKLQotICAvLyBhZGQgZGVidWcoKSBmdW5jdGlvbgotICBnbG9iYWwtPnB1dChnbG9i
YWwtPmdsb2JhbEV4ZWMoKSwgImRlYnVnIiwgbmV3IFRlc3RGdW5jdGlvbkltcChUZXN0RnVuY3Rp
b25JbXA6OkRlYnVnLCAxKSk7Ci0gIC8vIGFkZCAicHJpbnQiIGZvciBjb21wYXRpYmlsaXR5IHdp
dGggdGhlIG1vemlsbGEganMgc2hlbGwKLSAgZ2xvYmFsLT5wdXQoZ2xvYmFsLT5nbG9iYWxFeGVj
KCksICJwcmludCIsIG5ldyBUZXN0RnVuY3Rpb25JbXAoVGVzdEZ1bmN0aW9uSW1wOjpQcmludCwg
MSkpOwotICAvLyBhZGQgInF1aXQiIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIG1vemlsbGEg
anMgc2hlbGwKLSAgZ2xvYmFsLT5wdXQoZ2xvYmFsLT5nbG9iYWxFeGVjKCksICJxdWl0IiwgbmV3
IFRlc3RGdW5jdGlvbkltcChUZXN0RnVuY3Rpb25JbXA6OlF1aXQsIDApKTsKLSAgLy8gYWRkICJn
YyIgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgbW96aWxsYSBqcyBzaGVsbAotICBnbG9iYWwt
PnB1dChnbG9iYWwtPmdsb2JhbEV4ZWMoKSwgImdjIiwgbmV3IFRlc3RGdW5jdGlvbkltcChUZXN0
RnVuY3Rpb25JbXA6OkdDLCAwKSk7Ci0gIC8vIGFkZCAidmVyc2lvbiIgZm9yIGNvbXBhdGliaWxp
dHkgd2l0aCB0aGUgbW96aWxsYSBqcyBzaGVsbCAKLSAgZ2xvYmFsLT5wdXQoZ2xvYmFsLT5nbG9i
YWxFeGVjKCksICJ2ZXJzaW9uIiwgbmV3IFRlc3RGdW5jdGlvbkltcChUZXN0RnVuY3Rpb25JbXA6
OlZlcnNpb24sIDEpKTsKLSAgZ2xvYmFsLT5wdXQoZ2xvYmFsLT5nbG9iYWxFeGVjKCksICJydW4i
LCBuZXcgVGVzdEZ1bmN0aW9uSW1wKFRlc3RGdW5jdGlvbkltcDo6UnVuLCAxKSk7Ci0gIGdsb2Jh
bC0+cHV0KGdsb2JhbC0+Z2xvYmFsRXhlYygpLCAibG9hZCIsIG5ldyBUZXN0RnVuY3Rpb25JbXAo
VGVzdEZ1bmN0aW9uSW1wOjpMb2FkLCAxKSk7Ci0KLSAgSlNPYmplY3QqIGFycmF5ID0gZ2xvYmFs
LT5hcnJheUNvbnN0cnVjdG9yKCktPmNvbnN0cnVjdChnbG9iYWwtPmdsb2JhbEV4ZWMoKSwgZ2xv
YmFsLT5nbG9iYWxFeGVjKCktPmVtcHR5TGlzdCgpKTsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCi0gICAgYXJyYXktPnB1dChnbG9iYWwtPmdsb2JhbEV4
ZWMoKSwgaSwganNTdHJpbmcoYXJndW1lbnRzW2ldKSk7Ci0gIGdsb2JhbC0+cHV0KGdsb2JhbC0+
Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiwgYXJyYXkpOwotCi0gIEludGVycHJldGVyOjpzZXRT
aG91bGRQcmludEV4Y2VwdGlvbnModHJ1ZSk7Ci0gIHJldHVybiBnbG9iYWw7Ci19Ci0KIHN0YXRp
YyBib29sIHByZXR0eVByaW50U2NyaXB0KGNvbnN0IFVTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBW
ZWN0b3I8Y2hhcj4mIHNjcmlwdCkKIHsKLSAgaW50IGVyckxpbmUgPSAwOwotICBVU3RyaW5nIGVy
ck1zZzsKLSAgVVN0cmluZyBzY3JpcHRVU3RyaW5nKHNjcmlwdC5kYXRhKCkpOwotICBSZWZQdHI8
UHJvZ3JhbU5vZGU+IHByb2dyYW1Ob2RlID0gcGFyc2VyKCkucGFyc2U8UHJvZ3JhbU5vZGU+KGZp
bGVOYW1lLCAwLCBzY3JpcHRVU3RyaW5nLmRhdGEoKSwgc2NyaXB0VVN0cmluZy5zaXplKCksIDAs
ICZlcnJMaW5lLCAmZXJyTXNnKTsKLSAgaWYgKCFwcm9ncmFtTm9kZSkgewotICAgIGZwcmludGYo
c3RkZXJyLCAiJXM6JWQ6ICVzLlxuIiwgZmlsZU5hbWUuVVRGOFN0cmluZygpLmNfc3RyKCksIGVy
ckxpbmUsIGVyck1zZy5VVEY4U3RyaW5nKCkuY19zdHIoKSk7Ci0gICAgcmV0dXJuIGZhbHNlOwot
ICB9Ci0gIAotICBwcmludGYoIiVzXG4iLCBwcm9ncmFtTm9kZS0+dG9TdHJpbmcoKS5VVEY4U3Ry
aW5nKCkuY19zdHIoKSk7Ci0gIHJldHVybiB0cnVlOworICAgIGludCBlcnJMaW5lID0gMDsKKyAg
ICBVU3RyaW5nIGVyck1zZzsKKyAgICBVU3RyaW5nIHNjcmlwdFVTdHJpbmcoc2NyaXB0LmRhdGEo
KSk7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtTm9kZSA9IHBhcnNlcigpLnBhcnNl
PFByb2dyYW1Ob2RlPihmaWxlTmFtZSwgMCwgc2NyaXB0VVN0cmluZy5kYXRhKCksIHNjcmlwdFVT
dHJpbmcuc2l6ZSgpLCAwLCAmZXJyTGluZSwgJmVyck1zZyk7CisgICAgaWYgKCFwcm9ncmFtTm9k
ZSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiAlcy5cbiIsIGZpbGVOYW1lLlVU
RjhTdHJpbmcoKS5jX3N0cigpLCBlcnJMaW5lLCBlcnJNc2cuVVRGOFN0cmluZygpLmNfc3RyKCkp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpbnRmKCIlc1xuIiwgcHJv
Z3JhbU5vZGUtPnRvU3RyaW5nKCkuVVRGOFN0cmluZygpLmNfc3RyKCkpOworICAgIHJldHVybiB0
cnVlOwogfQogCiBzdGF0aWMgYm9vbCBydW5XaXRoU2NyaXB0cyhjb25zdCBWZWN0b3I8VVN0cmlu
Zz4mIGZpbGVOYW1lcywgVmVjdG9yPFVTdHJpbmc+JiBhcmd1bWVudHMsIGJvb2wgcHJldHR5UHJp
bnQpCiB7Ci0gIEdsb2JhbEltcCogZ2xvYmFsT2JqZWN0ID0gY3JlYXRlR2xvYmFsT2JqZWN0KGFy
Z3VtZW50cyk7Ci0gIFZlY3RvcjxjaGFyPiBzY3JpcHQ7Ci0gIAotICBib29sIHN1Y2Nlc3MgPSB0
cnVlOwotICAKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlTmFtZXMuc2l6ZSgpOyBpKysp
IHsKLSAgICBVU3RyaW5nIGZpbGVOYW1lID0gZmlsZU5hbWVzW2ldOwotICAgIAotICAgIGlmICgh
ZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgIHJl
dHVybiBmYWxzZTsgLy8gZmFpbCBlYXJseSBzbyB3ZSBjYW4gY2F0Y2ggbWlzc2luZyBmaWxlcwot
ICAgIAotICAgIGlmIChwcmV0dHlQcmludCkKLSAgICAgIHByZXR0eVByaW50U2NyaXB0KGZpbGVO
YW1lLCBzY3JpcHQpOwotICAgIGVsc2UgewotICAgICAgQ29tcGxldGlvbiBjb21wbGV0aW9uID0g
SW50ZXJwcmV0ZXI6OmV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBmaWxlTmFt
ZSwgMCwgc2NyaXB0LmRhdGEoKSk7Ci0gICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiBjb21wbGV0
aW9uLmNvbXBsVHlwZSgpICE9IFRocm93OworICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbmV3IEdsb2JhbE9iamVjdChhcmd1bWVudHMpOworICAgIFZlY3RvcjxjaGFyPiBzY3JpcHQ7
CisKKyAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmaWxlTmFtZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgVVN0cmluZyBmaWxlTmFtZSA9IGZp
bGVOYW1lc1tpXTsKKworICAgICAgICBpZiAoIWZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUo
ZmlsZU5hbWUsIHNjcmlwdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGZhaWwgZWFy
bHkgc28gd2UgY2FuIGNhdGNoIG1pc3NpbmcgZmlsZXMKKworICAgICAgICBpZiAocHJldHR5UHJp
bnQpCisgICAgICAgICAgICBwcmV0dHlQcmludFNjcmlwdChmaWxlTmFtZSwgc2NyaXB0KTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBDb21wbGV0aW9uIGNvbXBsZXRpb24gPSBJbnRlcnBy
ZXRlcjo6ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGZpbGVOYW1lLCAwLCBz
Y3JpcHQuZGF0YSgpKTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIGNvbXBsZXRp
b24uY29tcGxUeXBlKCkgIT0gVGhyb3c7CisgICAgICAgIH0KICAgICB9Ci0gIH0KLSAgcmV0dXJu
IHN1Y2Nlc3M7CisgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKIHN0YXRpYyB2b2lkIHByaW50VXNh
Z2VTdGF0ZW1lbnQoKQpAQCAtMjk1LDczICsyODMsNzMgQEAgc3RhdGljIHZvaWQgcHJpbnRVc2Fn
ZVN0YXRlbWVudCgpCiAKIHN0YXRpYyB2b2lkIHBhcnNlQXJndW1lbnRzKGludCBhcmdjLCBjaGFy
KiogYXJndiwgVmVjdG9yPFVTdHJpbmc+JiBmaWxlTmFtZXMsIFZlY3RvcjxVU3RyaW5nPiYgYXJn
dW1lbnRzLCBib29sJiBwcmV0dHlQcmludCkKIHsKLSAgaWYgKGFyZ2MgPCAzKQotICAgIHByaW50
VXNhZ2VTdGF0ZW1lbnQoKTsKLQotICBpbnQgaSA9IDE7Ci0gIGZvciAoOyBpIDwgYXJnYzsgKytp
KSB7Ci0gICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKLSAgICBpZiAoc3RyY21wKGFyZywg
Ii1mIikgPT0gMCkgewotICAgICAgaWYgKCsraSA9PSBhcmdjKQorICAgIGlmIChhcmdjIDwgMykK
ICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudCgpOwotICAgICAgZmlsZU5hbWVzLmFwcGVuZChh
cmd2W2ldKTsKLSAgICAgIGNvbnRpbnVlOwotICAgIH0KLSAgICBpZiAoc3RyY21wKGFyZywgIi1w
IikgPT0gMCkgewotICAgICAgcHJldHR5UHJpbnQgPSB0cnVlOwotICAgICAgY29udGludWU7Ci0g
ICAgfQotICAgIGlmIChzdHJjbXAoYXJnLCAiLS0iKSA9PSAwKSB7Ci0gICAgICArK2k7Ci0gICAg
ICBicmVhazsKKworICAgIGludCBpID0gMTsKKyAgICBmb3IgKDsgaSA8IGFyZ2M7ICsraSkgewor
ICAgICAgICBjb25zdCBjaGFyKiBhcmcgPSBhcmd2W2ldOworICAgICAgICBpZiAoc3RyY21wKGFy
ZywgIi1mIikgPT0gMCkgeworICAgICAgICAgICAgaWYgKCsraSA9PSBhcmdjKQorICAgICAgICAg
ICAgICAgIHByaW50VXNhZ2VTdGF0ZW1lbnQoKTsKKyAgICAgICAgICAgIGZpbGVOYW1lcy5hcHBl
bmQoYXJndltpXSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoc3RyY21wKGFyZywgIi1wIikgPT0gMCkgeworICAgICAgICAgICAgcHJldHR5UHJpbnQgPSB0
cnVlOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0cmNt
cChhcmcsICItLSIpID09IDApIHsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBicmVhazsKLSAgfQogCi0g
IGZvciAoOyBpIDwgYXJnYzsgKytpKQotICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJndltpXSk7Cisg
ICAgZm9yICg7IGkgPCBhcmdjOyArK2kpCisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJndltp
XSk7CiB9CiAKIGludCBranNtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKLSAgSlNMb2Nr
IGxvY2s7Ci0gIAotICBib29sIHByZXR0eVByaW50ID0gZmFsc2U7Ci0gIFZlY3RvcjxVU3RyaW5n
PiBmaWxlTmFtZXM7Ci0gIFZlY3RvcjxVU3RyaW5nPiBhcmd1bWVudHM7Ci0gIHBhcnNlQXJndW1l
bnRzKGFyZ2MsIGFyZ3YsIGZpbGVOYW1lcywgYXJndW1lbnRzLCBwcmV0dHlQcmludCk7Ci0gIAot
ICBib29sIHN1Y2Nlc3MgPSBydW5XaXRoU2NyaXB0cyhmaWxlTmFtZXMsIGFyZ3VtZW50cywgcHJl
dHR5UHJpbnQpOworICAgIEpTTG9jayBsb2NrOworCisgICAgYm9vbCBwcmV0dHlQcmludCA9IGZh
bHNlOworICAgIFZlY3RvcjxVU3RyaW5nPiBmaWxlTmFtZXM7CisgICAgVmVjdG9yPFVTdHJpbmc+
IGFyZ3VtZW50czsKKyAgICBwYXJzZUFyZ3VtZW50cyhhcmdjLCBhcmd2LCBmaWxlTmFtZXMsIGFy
Z3VtZW50cywgcHJldHR5UHJpbnQpOworCisgICAgYm9vbCBzdWNjZXNzID0gcnVuV2l0aFNjcmlw
dHMoZmlsZU5hbWVzLCBhcmd1bWVudHMsIHByZXR0eVByaW50KTsKIAogI2lmbmRlZiBOREVCVUcK
LSAgQ29sbGVjdG9yOjpjb2xsZWN0KCk7CisgICAgQ29sbGVjdG9yOjpjb2xsZWN0KCk7CiAjZW5k
aWYKIAotICByZXR1cm4gc3VjY2VzcyA/IDAgOiAzOworICAgIHJldHVybiBzdWNjZXNzID8gMCA6
IDM7CiB9CiAKIHN0YXRpYyBib29sIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoY29uc3Qg
VVN0cmluZyYgZmlsZU5hbWUsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQogewotICBGSUxFKiBmID0g
Zm9wZW4oZmlsZU5hbWUuVVRGOFN0cmluZygpLmNfc3RyKCksICJyIik7Ci0gIGlmICghZikgewot
ICAgIGZwcmludGYoc3RkZXJyLCAiQ291bGQgbm90IG9wZW4gZmlsZTogJXNcbiIsIGZpbGVOYW1l
LlVURjhTdHJpbmcoKS5jX3N0cigpKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgCi0gIHNp
emVfdCBidWZmZXJfc2l6ZSA9IDA7Ci0gIHNpemVfdCBidWZmZXJfY2FwYWNpdHkgPSAxMDI0Owot
ICAKLSAgYnVmZmVyLnJlc2l6ZShidWZmZXJfY2FwYWNpdHkpOwotICAKLSAgd2hpbGUgKCFmZW9m
KGYpICYmICFmZXJyb3IoZikpIHsKLSAgICBidWZmZXJfc2l6ZSArPSBmcmVhZChidWZmZXIuZGF0
YSgpICsgYnVmZmVyX3NpemUsIDEsIGJ1ZmZlcl9jYXBhY2l0eSAtIGJ1ZmZlcl9zaXplLCBmKTsK
LSAgICBpZiAoYnVmZmVyX3NpemUgPT0gYnVmZmVyX2NhcGFjaXR5KSB7IC8vIGd1YXJhbnRlZXMg
c3BhY2UgZm9yIHRyYWlsaW5nICdcMCcKLSAgICAgIGJ1ZmZlcl9jYXBhY2l0eSAqPSAyOwotICAg
ICAgYnVmZmVyLnJlc2l6ZShidWZmZXJfY2FwYWNpdHkpOworICAgIEZJTEUqIGYgPSBmb3Blbihm
aWxlTmFtZS5VVEY4U3RyaW5nKCkuY19zdHIoKSwgInIiKTsKKyAgICBpZiAoIWYpIHsKKyAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJDb3VsZCBub3Qgb3BlbiBmaWxlOiAlc1xuIiwgZmlsZU5hbWUu
VVRGOFN0cmluZygpLmNfc3RyKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICB9
Ci0gIGZjbG9zZShmKTsKLSAgYnVmZmVyW2J1ZmZlcl9zaXplXSA9ICdcMCc7Ci0gIAotICByZXR1
cm4gdHJ1ZTsKKworICAgIHNpemVfdCBidWZmZXJfc2l6ZSA9IDA7CisgICAgc2l6ZV90IGJ1ZmZl
cl9jYXBhY2l0eSA9IDEwMjQ7CisKKyAgICBidWZmZXIucmVzaXplKGJ1ZmZlcl9jYXBhY2l0eSk7
CisKKyAgICB3aGlsZSAoIWZlb2YoZikgJiYgIWZlcnJvcihmKSkgeworICAgICAgICBidWZmZXJf
c2l6ZSArPSBmcmVhZChidWZmZXIuZGF0YSgpICsgYnVmZmVyX3NpemUsIDEsIGJ1ZmZlcl9jYXBh
Y2l0eSAtIGJ1ZmZlcl9zaXplLCBmKTsKKyAgICAgICAgaWYgKGJ1ZmZlcl9zaXplID09IGJ1ZmZl
cl9jYXBhY2l0eSkgeyAvLyBndWFyYW50ZWVzIHNwYWNlIGZvciB0cmFpbGluZyAnXDAnCisgICAg
ICAgICAgICBidWZmZXJfY2FwYWNpdHkgKj0gMjsKKyAgICAgICAgICAgIGJ1ZmZlci5yZXNpemUo
YnVmZmVyX2NhcGFjaXR5KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmY2xvc2UoZik7CisgICAg
YnVmZmVyW2J1ZmZlcl9zaXplXSA9ICdcMCc7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
</data>
<flag name="review"
          id="8455"
          type_id="1"
          status="+"
          setter="mrowe"
    />
          </attachment>
      

    </bug>

</bugzilla>