<?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>53690</bug_id>
          
          <creation_ts>2011-02-03 10:05:09 -0800</creation_ts>
          <short_desc>IndexedDB: Cursors should skip deleted entries</short_desc>
          <delta_ts>2011-02-09 02:33:50 -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>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="Hans Wennborg">hans</reporter>
          <assigned_to name="Hans Wennborg">hans</assigned_to>
          <cc>andreip</cc>
    
    <cc>dgrogan</cc>
    
    <cc>jorlow</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>344801</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-02-03 10:05:09 -0800</bug_when>
    <thetext>IndexedDB: Cursors should skip deleted entries</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344802</commentid>
    <comment_count>1</comment_count>
      <attachid>81073</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-02-03 10:07:54 -0800</bug_when>
    <thetext>Created attachment 81073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345022</commentid>
    <comment_count>2</comment_count>
      <attachid>81073</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-03 14:45:43 -0800</bug_when>
    <thetext>Comment on attachment 81073
Patch

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

Maybe you should make your test function a bit more generic and then you can specifically test more corner cases: the first element, the last, the current, the previous, a couple previous, the next, and a couple later.  (The last is all you test now.)  I don&apos;t think it&apos;ll take too much time and it&apos;ll definitely make this more robust in the future.

Looks great though.

&gt; Source/WebCore/storage/IDBCursorBackendImpl.cpp:104
&gt; +

newline seems kinda useless....you could even use a ternary operator if you wanted...don&apos;t care much either way tho</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345519</commentid>
    <comment_count>3</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-02-04 09:03:53 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 81073 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=81073&amp;action=review
&gt; 
&gt; Maybe you should make your test function a bit more generic and then you can specifically test more corner cases: the first element, the last, the current, the previous, a couple previous, the next, and a couple later.  (The last is all you test now.)  I don&apos;t think it&apos;ll take too much time and it&apos;ll definitely make this more robust in the future.

You&apos;re right. Trying to make the test a bit more generic and less spaghetti.

&gt; 
&gt; Looks great though.
&gt; 
&gt; &gt; Source/WebCore/storage/IDBCursorBackendImpl.cpp:104
&gt; &gt; +
&gt; 
&gt; newline seems kinda useless....you could even use a ternary operator if you wanted...don&apos;t care much either way tho

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345520</commentid>
    <comment_count>4</comment_count>
      <attachid>81226</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-02-04 09:04:19 -0800</bug_when>
    <thetext>Created attachment 81226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345609</commentid>
    <comment_count>5</comment_count>
      <attachid>81226</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-04 10:44:03 -0800</bug_when>
    <thetext>Comment on attachment 81226
Patch

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

This test should also verify that anything not deleted is seen while iterating.  r=me assuming you do that.

&gt; LayoutTests/storage/indexeddb/cursor-skip-deleted.html:61
&gt; +    resetObjectStore(); // No callback; let the setVersion transaction complete.

Seems cleaner to pass in an empty function here...you probably don&apos;t even need a comment then.

&gt; LayoutTests/storage/indexeddb/cursor-skip-deleted.html:140
&gt; +                   {id: 15, targets: [13,14]}

while you&apos;re at it, might as well throw a few more interesting combinations in.  :-)

&gt; LayoutTests/storage/indexeddb/cursor-skip-deleted.html:169
&gt; +    testCursor(deletes, &quot;trans.objectStore(&apos;store&apos;).index(&apos;nameIndex&apos;).openCursor(webkitIDBKeyRange.lowerBound(&apos;Alpha&apos;))&quot;, function() { resetObjectStore(); });

why do a final reset?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348100</commentid>
    <comment_count>6</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-02-09 02:33:50 -0800</bug_when>
    <thetext>Committed r78035: &lt;http://trac.webkit.org/changeset/78035&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81073</attachid>
            <date>2011-02-03 10:07:54 -0800</date>
            <delta_ts>2011-02-04 09:04:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53690-20110203180752.patch</filename>
            <type>text/plain</type>
            <size>11731</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1YTZhNzE4YzNhOGE0NDM0MTZhODg4Y2E2ZjcwOTM2MWE3ZjFmZTM5Li41NjkxN2Zh
NGQ5ZmRmM2NjMjAyNzg0MTYwYzI0MmY4OWIwOTExMTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMDItMDMgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmRleGVkREI6IEN1cnNv
cnMgc2hvdWxkIHNraXAgZGVsZXRlZCBlbnRyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzY5MAorCisgICAgICAgIEN1cnNvcnMgc2hvdWxkIHNr
aXAgb3ZlciBlbnRyaWVzIHRoYXQgaGF2ZSBiZWVuIGRlbGV0ZWQKKyAgICAgICAgc2luY2UgdGhl
IGN1cnNvciB3YXMgb3BlbmVkLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LXNraXAtZGVsZXRlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL2N1cnNvci1za2lwLWRlbGV0ZWQuaHRtbDogQWRkZWQuCisKIDIwMTEtMDItMDIgIENo
cmlzIEV2YW5zICA8Y2V2YW5zQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
dXJzb3Itc2tpcC1kZWxldGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2N1cnNvci1za2lwLWRlbGV0ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljMjkx
NTY0ZThjMWM3NjJiN2IyNGJjNGQ1NjQzMThhMzAzN2MzYWUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Itc2tpcC1kZWxldGVkLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDg1IEBACitUZXN0IEluZGV4ZWREQidzIGN1cnNvciBza2lwcyBkZWxl
dGVkIGVudHJpZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCit3ZWJraXRJbmRl
eGVkREIub3BlbignbmFtZScpCitQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCitQ
QVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVz
dWx0IGlzIHRydWUKK0FuIGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KKworU3VjY2VzcyBl
dmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29kZScg
aW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNT
ICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMg
dHJ1ZQorUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25l
cnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50
LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRh
cmdldC5ET05FCisKK2RiID0gZXZlbnQucmVzdWx0CitkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lv
bicpCitQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBp
biByZXN1bHQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKK0Fu
IGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KKworc2V0VmVyc2lvblN1Y2Nlc3MoKToKK1N1
Y2Nlc3MgZXZlbnQgZmlyZWQ6CitQQVNTICdyZXN1bHQnIGluIGV2ZW50IGlzIHRydWUKK1BBU1Mg
J2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdtZXNzYWdlJyBpbiBldmVudCBpcyBmYWxz
ZQorUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCitQQVNTIGV2ZW50LnNvdXJjZSAhPSBu
dWxsIGlzIHRydWUKK1BBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BB
U1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdyZWFkeVN0YXRlJyBp
biBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBl
dmVudC50YXJnZXQuRE9ORQorCit0cmFucyA9IGV2ZW50LnJlc3VsdAorUEFTUyB0cmFucyAhPT0g
bnVsbCBpcyB0cnVlCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorY3JlYXRlQW5kUG9wdWxh
dGVPYmplY3RTdG9yZSgpOgorb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmUnLCB7a2V5UGF0aDogJ2lkJ30pCitvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnbmFtZUluZGV4
JywgJ25hbWUnKQorb2JqZWN0U3RvcmUuYWRkKHtpZDogMSwgbmFtZTogJ0pvaG4gRG9lJ30pLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjaworb2JqZWN0U3RvcmUuYWRkKHtpZDogMiwg
bmFtZTogJ1RvbSd9KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2sKK29iamVjdFN0
b3JlLmFkZCh7aWQ6IDMsIG5hbWU6ICdEaWNrJ30pLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjaworb2JqZWN0U3RvcmUuYWRkKHtpZDogNCwgbmFtZTogJ0hhcnJ5J30pLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjaworb3BlbkJhc2ljQ3Vyc29yKCkKK3RyYW5zID0gZGIu
dHJhbnNhY3Rpb24oW10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCit0cmFucy5v
YmplY3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKQorUEFTUyAnb25zdWNjZXNz
JyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKK1BB
U1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCitBbiBldmVudCBzaG91bGQgZmlyZSBz
aG9ydGx5Li4uCisKK2Jhc2ljQ3Vyc29yKCkKK1BBU1MgZXZlbnQucmVzdWx0LnZhbHVlLmlkIGlz
IDEKK3JlcXVlc3QgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5kZWxldGUoMykKK2Jhc2lj
Q3Vyc29yKCkKK2V2ZW50LnJlc3VsdC52YWx1ZS5pZCA9IDIKK1BBU1MgZXZlbnQucmVzdWx0LnZh
bHVlLmlkICE9IDMgaXMgdHJ1ZQorYmFzaWNDdXJzb3IoKQorZXZlbnQucmVzdWx0LnZhbHVlLmlk
ID0gNAorUEFTUyBldmVudC5yZXN1bHQudmFsdWUuaWQgIT0gMyBpcyB0cnVlCitiYXNpY0N1cnNv
cigpCitQQVNTIGNvdW50ZXIgaXMgNAorb3BlbkluZGV4Q3Vyc29yKCk6Cit0cmFucy5vYmplY3RT
dG9yZSgnc3RvcmUnKS5pbmRleCgnbmFtZUluZGV4Jykub3BlbkN1cnNvcihrZXlSYW5nZSkKK2lu
ZGV4Q3Vyc29yKCk6CitQQVNTIGV2ZW50LnJlc3VsdC52YWx1ZS5uYW1lIGlzICdIYXJyeScKK3Jl
cXVlc3QgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5kZWxldGUoMSkKK2luZGV4Q3Vyc29y
KCk6CitldmVudC5yZXN1bHQudmFsdWUuaWQgPSAyCitQQVNTIGV2ZW50LnJlc3VsdC52YWx1ZS5p
ZCAhPSAxIGlzIHRydWUKK2luZGV4Q3Vyc29yKCk6CitQQVNTIGNvdW50ZXIgaXMgMwordHJhbnNh
Y3Rpb25Db21wbGV0ZSgpOgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvci1za2lwLWRlbGV0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvci1za2lwLWRlbGV0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjJkMzlmZjgxOTdmOTViZDAyMmI5
MDVmZjE4NGEwODg5ZmIzMmUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvY3Vyc29yLXNraXAtZGVsZXRlZC5odG1sCkBAIC0wLDAgKzEsMTU4IEBACis8
aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjdXJzb3Igc2tpcHMgZGVs
ZXRlZCBlbnRyaWVzLiIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK3Rlc3QoKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygid2Via2l0SW5kZXhlZERCLm9w
ZW4oJ25hbWUnKSIpOworICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOworICAgIHJlc3VsdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgdmVyaWZ5U3Vj
Y2Vzc0V2ZW50KGV2ZW50KTsKKyAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnJl
c3VsdCIpOworCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZl
cnNpb24nKSIpOworICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOworICAgIHJlc3VsdC5vbnN1Y2Nl
c3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAg
ZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2
ZW50KTsKKyAgICB3aW5kb3cudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnJlc3Vs
dCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IG9w
ZW5CYXNpY0N1cnNvcjsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYiwgY3JlYXRlQW5k
UG9wdWxhdGVPYmplY3RTdG9yZSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2Jq
ZWN0U3RvcmUoKQoreworICAgIGRlYnVnKCJjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCk6
Iik7CisKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScsIHtrZXlQYXRoOiAnaWQnfSkiKTsKKyAgICBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnbmFtZUluZGV4JywgJ25hbWUnKSIpOwor
ICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7aWQ6IDEsIG5hbWU6ICdKb2huIERvZSd9
KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5hZGQoe2lkOiAyLCBuYW1lOiAnVG9tJ30pLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7aWQ6IDMs
IG5hbWU6ICdEaWNrJ30pLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAg
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7aWQ6IDQsIG5hbWU6ICdIYXJyeSd9KS5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKK30KKwordmFyIGNvdW50ZXI7Cit2YXIg
Y3Vyc29yOworCitmdW5jdGlvbiBvcGVuQmFzaWNDdXJzb3IoKQoreworICAgIGRlYnVnKCJvcGVu
QmFzaWNDdXJzb3IoKSIpOworCisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bihbXSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRy
YW5zYWN0aW9uQ29tcGxldGU7CisKKyAgICBrZXlSYW5nZSA9IHdlYmtpdElEQktleVJhbmdlLmxv
d2VyQm91bmQoMSk7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUo
J3N0b3JlJykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICB2ZXJpZnlSZXN1bHQocmVzdWx0
KTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gYmFzaWNDdXJzb3I7CisgICAgcmVzdWx0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjb3VudGVyID0gMTsKK30KKworZnVu
Y3Rpb24gYmFzaWNDdXJzb3IoKQoreworICAgIGRlYnVnKCJiYXNpY0N1cnNvcigpIik7CisKKyAg
ICBpZiAoZXZlbnQucmVzdWx0ID09IG51bGwpIHsKKyAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIi
LCAiNCIpOworICAgICAgICBvcGVuSW5kZXhDdXJzb3IoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGN1cnNvciA9IGV2ZW50LnJlc3VsdDsKKworICAgIGlmIChjb3VudGVyID09IDEp
IHsKKyAgICAgICAgY291bnRlcisrOworICAgICAgICBzaG91bGRCZSgiZXZlbnQucmVzdWx0LnZh
bHVlLmlkIiwgIjEiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5kZWxldGUoMykiKTsKKyAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7IGN1cnNvci5jb250aW51ZSgpOyB9OworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgZGVidWcoImV2ZW50LnJlc3VsdC52YWx1ZS5pZCA9ICIgKyBldmVudC5y
ZXN1bHQudmFsdWUuaWQpOworICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQucmVzdWx0LnZhbHVlLmlk
ICE9IDMiKTsKKworICAgIGNvdW50ZXIrKzsKKyAgICBjdXJzb3IuY29udGludWUoKTsKK30KKwor
ZnVuY3Rpb24gb3BlbkluZGV4Q3Vyc29yKCkKK3sKKyAgICBkZWJ1Zygib3BlbkluZGV4Q3Vyc29y
KCk6Iik7CisKKyAgICBrZXlSYW5nZSA9IHdlYmtpdElEQktleVJhbmdlLmxvd2VyQm91bmQoJ0hh
cnJ5Jyk7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
JykuaW5kZXgoJ25hbWVJbmRleCcpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgcmVzdWx0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXN1bHQub25zdWNjZXNz
ID0gaW5kZXhDdXJzb3I7CisgICAgY291bnRlciA9IDE7Cit9CisKK2Z1bmN0aW9uIGluZGV4Q3Vy
c29yKCkKK3sKKyAgICBkZWJ1ZygnaW5kZXhDdXJzb3IoKTonKTsKKworICAgIGlmIChldmVudC5y
ZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICIzIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjdXJzb3IgPSBldmVudC5yZXN1bHQ7CisKKyAgICBp
ZiAoY291bnRlciA9PSAxKSB7CisgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnJlc3VsdC52YWx1ZS5uYW1lIiwgIidIYXJyeSciKTsKKworICAgICAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0
ZSgxKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgY3Vyc29yLmNvbnRp
bnVlKCk7IH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRlYnVnKCJldmVudC5yZXN1
bHQudmFsdWUuaWQgPSAiICsgZXZlbnQucmVzdWx0LnZhbHVlLmlkKTsKKyAgICBzaG91bGRCZVRy
dWUoImV2ZW50LnJlc3VsdC52YWx1ZS5pZCAhPSAxIik7CisKKyAgICBjb3VudGVyKys7CisgICAg
Y3Vyc29yLmNvbnRpbnVlKCk7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGUoKQor
eworICAgIGRlYnVnKCJ0cmFuc2FjdGlvbkNvbXBsZXRlKCk6Iik7CisgICAgZG9uZSgpOworfQor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggZGZlYTM0OThmNThhNDg5YzMyYjlhMTM0ZmNkMjEzZjk4OWVh
N2RiNC4uYTUyOGRkZGY3YzBiYWFlNzg1MjU2MmJjMWM2ODY3NTRkMzkyOWJiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTAyLTAzICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW5kZXhlZERCOiBDdXJzb3JzIHNob3VsZCBza2lwIGRlbGV0ZWQgZW50cmllcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM2OTAKKworICAgICAg
ICBBZGQgdGVzdCB0byBjaGVjayB0aGF0IHRoZSBjdXJzb3Igc2tpcHMgZGVsZXRlZCBlbnRyaWVz
LgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1za2lwLWRlbGV0ZWQu
aHRtbAorCisgICAgICAgICogc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y3VycmVudFJvd0V4aXN0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbklu
dGVybmFsKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmg6CisKIDIw
MTEtMDItMDIgIENocmlzIEV2YW5zICA8Y2V2YW5zQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
Q3Vyc29yQmFja2VuZEltcGwuY3BwCmluZGV4IGZjZmNmM2E1N2I5MzZmODNkMzIxNmYwNzM1ZTVk
ZDNjNmM2YmI2YmMuLmM1M2Q2NDA4NWUzYWRlZDJjNjdjZDZhMzYzNzQ3MDU4N2QyMmUyMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBA
IC05OCw2ICs5OCwyNCBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0
aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFBhc3NSZWZQdAogICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7CiB9CiAKK2Jvb2wgSURCQ3Vyc29y
QmFja2VuZEltcGw6OmN1cnJlbnRSb3dFeGlzdHMoKQoreworICAgIFN0cmluZyBzcWw7CisKKyAg
ICBpZiAobV9jdXJyZW50SURCS2V5VmFsdWUpCisgICAgICAgIHNxbCA9ICJTRUxFQ1QgaWQgRlJP
TSBJbmRleERhdGEgV0hFUkUgaWQgPSA/IjsKKyAgICBlbHNlCisgICAgICAgIHNxbCA9ICJTRUxF
Q1QgaWQgRlJPTSBPYmplY3RTdG9yZURhdGEgV0hFUkUgaWQgPSA/IjsKKworICAgIFNRTGl0ZVN0
YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZS0+ZGIoKSwgc3FsKTsKKworICAgIGJvb2wgb2sg
PSBzdGF0ZW1lbnQucHJlcGFyZSgpID09IFNRTFJlc3VsdE9rOworICAgIEFTU0VSVF9VTlVTRUQo
b2ssIG9rKTsKKworICAgIHN0YXRlbWVudC5iaW5kSW50NjQoMSwgbV9jdXJyZW50SWQpOworICAg
IHJldHVybiBzdGF0ZW1lbnQuc3RlcCgpID09IFNRTFJlc3VsdFJvdzsKK30KKwogdm9pZCBJREJD
dXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBwcnBDdXJzb3IsIFBh
c3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCiB7CiAgICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJzb3IgPSBwcnBDdXJz
b3I7CkBAIC0xMTYsNiArMTM0LDEwIEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRp
bnVlRnVuY3Rpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzCiAgICAgICAg
IFJlZlB0cjxJREJLZXk+IG9sZEtleSA9IGN1cnNvci0+bV9jdXJyZW50S2V5OwogICAgICAgICBj
dXJzb3ItPmxvYWRDdXJyZW50Um93KCk7CiAKKyAgICAgICAgLy8gU2tpcCBpZiB0aGlzIGVudHJ5
IGhhcyBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgb2JqZWN0IHN0b3JlLgorICAgICAgICBpZiAoIWN1
cnNvci0+Y3VycmVudFJvd0V4aXN0cygpKQorICAgICAgICAgICAgY29udGludWU7CisKICAgICAg
ICAgLy8gSWYgYSBrZXkgd2FzIHN1cHBsaWVkLCB3ZSBtdXN0IGxvb3AgdW50aWwgd2UgZmluZCB0
aGF0IGtleSAob3IgaGl0IHRoZSBlbmQpLgogICAgICAgICBpZiAoa2V5ICYmICFrZXktPmlzRXF1
YWwoY3Vyc29yLT5tX2N1cnJlbnRLZXkuZ2V0KCkpKQogICAgICAgICAgICAgY29udGludWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKaW5kZXggOTE5
ZjE1Mzc0MmUyNzg5MWQ4ZjNkYzU3MGU1OTJjZWZmZGEwOGZhMi4uZjQ1OTEzOTg3YzZjMTMwYjI1
ZjVmNmJkZjgzM2UxM2MxOTg4NDE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
Q3Vyc29yQmFja2VuZEltcGwuaApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIElEQkN1cnNvckJhY2tlbmRJbXBsKElEQlNRTGl0ZURhdGFiYXNlKiwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4sIElEQkN1cnNvcjo6RGlyZWN0aW9uLCBQYXNzT3duUHRyPFNRTGl0ZVN0YXRl
bWVudD4gcXVlcnksIGJvb2wgaXNTZXJpYWxpemVkU2NyaXB0VmFsdWVDdXJzb3IsIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZSop
OwogCisgICAgYm9vbCBjdXJyZW50Um93RXhpc3RzKCk7CiAgICAgdm9pZCBsb2FkQ3VycmVudFJv
dygpOwogICAgIFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSgpIGNvbnN0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81226</attachid>
            <date>2011-02-04 09:04:19 -0800</date>
            <delta_ts>2011-02-04 10:44:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53690-20110204170417.patch</filename>
            <type>text/plain</type>
            <size>14574</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzYjFmMjA4NDc5MjdjYWUxMGIzZmFjY2NlM2RiM2ZkOWQ1NjU0OTk5Li4yZGE0YWNh
OTI3YzE3NjYxYzFlYTBkMzIwMzY1ZTgyOGJjNjRmODk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMDItMDQgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmRleGVkREI6IEN1cnNv
cnMgc2hvdWxkIHNraXAgZGVsZXRlZCBlbnRyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzY5MAorCisgICAgICAgIEN1cnNvcnMgc2hvdWxkIHNr
aXAgb3ZlciBlbnRyaWVzIHRoYXQgaGF2ZSBiZWVuIGRlbGV0ZWQKKyAgICAgICAgc2luY2UgdGhl
IGN1cnNvciB3YXMgb3BlbmVkLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LXNraXAtZGVsZXRlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL2N1cnNvci1za2lwLWRlbGV0ZWQuaHRtbDogQWRkZWQuCisKIDIwMTEtMDItMDMgIEph
bWVzIEtvemlhbnNraSAgPGtvekBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvY3Vyc29yLXNraXAtZGVsZXRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3Itc2tpcC1kZWxldGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
NDgwZWI1Yjg3OTVkZmVmZWMyOTI4MGM1Njk2MzVlNmQzM2EzNGI0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXNraXAtZGVsZXRlZC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxODQgQEAKK1Rlc3QgSW5kZXhlZERCJ3MgY3Vyc29yIHNraXBz
IGRlbGV0ZWQgZW50cmllcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK3dlYmtp
dEluZGV4ZWREQi5vcGVuKCduYW1lJykKK1BBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRy
dWUKK1BBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdyZWFkeVN0YXRlJyBp
biByZXN1bHQgaXMgdHJ1ZQorQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4uLgorCitTdWNj
ZXNzIGV2ZW50IGZpcmVkOgorUEFTUyAncmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCitQQVNTICdj
b2RlJyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UK
K1BBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyBldmVudC5zb3VyY2UgIT0gbnVs
bCBpcyB0cnVlCitQQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNT
ICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4g
ZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZl
bnQudGFyZ2V0LkRPTkUKKworZGIgPSBldmVudC5yZXN1bHQKK2RiLnNldFZlcnNpb24oJ25ldyB2
ZXJzaW9uJykKK1BBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ29uZXJy
b3InIGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1
ZQorQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4uLgorCitzZXRWZXJzaW9uU3VjY2Vzcygp
OgorU3VjY2VzcyBldmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQor
UEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlz
IGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgZXZlbnQuc291cmNl
ICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1
ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3Rh
dGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRl
IGlzIGV2ZW50LnRhcmdldC5ET05FCisKK3RyYW5zID0gZXZlbnQucmVzdWx0CitQQVNTIHRyYW5z
ICE9PSBudWxsIGlzIHRydWUKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitjcmVhdGVBbmRQ
b3B1bGF0ZU9iamVjdFN0b3JlKCk6CitvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZScsIHtrZXlQYXRoOiAnaWQnfSkKK29iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCduYW1l
SW5kZXgnLCAnbmFtZScpCisKK3Jlc2V0T2JqZWN0U3RvcmUoKToKKworYmFzaWNDdXJzb3JUZXN0
KCkKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oW10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpCisKK3Rlc3RDdXJzb3IoKToKK3RyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLm9wZW5D
dXJzb3Iod2Via2l0SURCS2V5UmFuZ2UubG93ZXJCb3VuZCgwKSkKK1BBU1MgJ29uc3VjY2Vzcycg
aW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCitQQVNT
ICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hv
cnRseS4uLgorCiswOiBBbHBoYQorMTogQnJhdm8KKzI6IENoYXJsaWUKK3JlcXVlc3QgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmUnKS5kZWxldGUoMSkKKzM6IERlbHRhCityZXF1ZXN0ID0gdHJh
bnMub2JqZWN0U3RvcmUoJ3N0b3JlJykuZGVsZXRlKDUpCityZXF1ZXN0ID0gdHJhbnMub2JqZWN0
U3RvcmUoJ3N0b3JlJykuZGVsZXRlKDYpCityZXF1ZXN0ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0
b3JlJykuZGVsZXRlKDcpCis0OiBFY2hvCis4OiBJbmRpYQorOTogSnVsaWV0CisxMDogS2lsbwor
cmVxdWVzdCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgxMCkKKzExOiBMaW1h
CisxMjogTWlrZQorMTM6IE5vdmVtYmVyCisxNDogT3NjYXIKKzE1OiBQYXBhCityZXF1ZXN0ID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykuZGVsZXRlKDEzKQorcmVxdWVzdCA9IHRyYW5zLm9i
amVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgxNCkKKzE2OiBRdWViZWMKKzE3OiBSb21lbworMTg6
IFNpZXJyYQorMTk6IFRhbmdvCisyMDogVW5pZm9ybQorMjE6IFZpY3RvcgorMjI6IFdoaXNrZXkK
KzIzOiBYLXJheQorMjQ6IFlhbmtlZQorMjU6IFp1bHUKKworCityZXNldE9iamVjdFN0b3JlKCk6
CisKK3JldmVyc2VDdXJzb3JUZXN0KCk6CisKK3Rlc3RDdXJzb3IoKToKK3RyYW5zLm9iamVjdFN0
b3JlKCdzdG9yZScpLm9wZW5DdXJzb3Iod2Via2l0SURCS2V5UmFuZ2UubG93ZXJCb3VuZCgwKSwg
d2Via2l0SURCQ3Vyc29yLlBSRVYpCitQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVl
CitQQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4g
cmVzdWx0IGlzIHRydWUKK0FuIGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KKworMjU6IFp1
bHUKK3JlcXVlc3QgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5kZWxldGUoMjQpCityZXF1
ZXN0ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykuZGVsZXRlKDIzKQorcmVxdWVzdCA9IHRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgyMikKKzIxOiBWaWN0b3IKKzIwOiBVbmlm
b3JtCityZXF1ZXN0ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykuZGVsZXRlKDIxKQorMTk6
IFRhbmdvCisxODogU2llcnJhCisxNzogUm9tZW8KKzE2OiBRdWViZWMKKzE1OiBQYXBhCityZXF1
ZXN0ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykuZGVsZXRlKDE2KQorcmVxdWVzdCA9IHRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgxNykKKzE0OiBPc2NhcgorMTM6IE5vdmVt
YmVyCisxMjogTWlrZQorMTE6IExpbWEKKzEwOiBLaWxvCityZXF1ZXN0ID0gdHJhbnMub2JqZWN0
U3RvcmUoJ3N0b3JlJykuZGVsZXRlKDEpCis5OiBKdWxpZXQKKzg6IEluZGlhCis3OiBIb3RlbAor
NjogR29sZgorNTogRm94dHJvdAorNDogRWNobworMzogRGVsdGEKKzI6IENoYXJsaWUKKzA6IEFs
cGhhCisKKworcmVzZXRPYmplY3RTdG9yZSgpOgorCitpbmRleEN1cnNvclRlc3QoKToKKwordGVz
dEN1cnNvcigpOgordHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykuaW5kZXgoJ25hbWVJbmRleCcp
Lm9wZW5DdXJzb3Iod2Via2l0SURCS2V5UmFuZ2UubG93ZXJCb3VuZCgnQWxwaGEnKSkKK1BBU1Mg
J29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBp
cyB0cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4gZXZlbnQgc2hv
dWxkIGZpcmUgc2hvcnRseS4uLgorCiswOiBBbHBoYQorMTogQnJhdm8KKzI6IENoYXJsaWUKK3Jl
cXVlc3QgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5kZWxldGUoMSkKKzM6IERlbHRhCity
ZXF1ZXN0ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykuZGVsZXRlKDUpCityZXF1ZXN0ID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykuZGVsZXRlKDYpCityZXF1ZXN0ID0gdHJhbnMub2Jq
ZWN0U3RvcmUoJ3N0b3JlJykuZGVsZXRlKDcpCis0OiBFY2hvCis4OiBJbmRpYQorOTogSnVsaWV0
CisxMDogS2lsbworcmVxdWVzdCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgx
MCkKKzExOiBMaW1hCisxMjogTWlrZQorMTM6IE5vdmVtYmVyCisxNDogT3NjYXIKKzE1OiBQYXBh
CityZXF1ZXN0ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykuZGVsZXRlKDEzKQorcmVxdWVz
dCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgxNCkKKzE2OiBRdWViZWMKKzE3
OiBSb21lbworMTg6IFNpZXJyYQorMTk6IFRhbmdvCisyMDogVW5pZm9ybQorMjE6IFZpY3Rvcgor
MjI6IFdoaXNrZXkKKzIzOiBYLXJheQorMjQ6IFlhbmtlZQorMjU6IFp1bHUKKworCityZXNldE9i
amVjdFN0b3JlKCk6CisKK3RyYW5zYWN0aW9uQ29tcGxldGUoKToKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Itc2tpcC1kZWxldGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Itc2tpcC1kZWxldGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU3YzI3M2FjZmJiMDA0ZmM3ZDhmMWU0ZmE3MzU0MGE0NTIwMTk5OQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1za2lwLWRlbGV0ZWQuaHRt
bApAQCAtMCwwICsxLDE4MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVu
Y3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhl
ZERCJ3MgY3Vyc29yIHNraXBzIGRlbGV0ZWQgZW50cmllcy4iKTsKK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworCit2YXIgbmFtZXMgPSBbJ0FscGhhJywgJ0JyYXZvJywgJ0NoYXJsaWUnLCAnRGVsdGEnLCAn
RWNobycsICdGb3h0cm90JywgJ0dvbGYnLAorICAgICAgICAgICAgICdIb3RlbCcsICdJbmRpYScs
ICdKdWxpZXQnLCAnS2lsbycsICdMaW1hJywgJ01pa2UnLCAnTm92ZW1iZXInLAorICAgICAgICAg
ICAgICdPc2NhcicsICdQYXBhJywgJ1F1ZWJlYycsICdSb21lbycsICdTaWVycmEnLCAnVGFuZ28n
LCAnVW5pZm9ybScsCisgICAgICAgICAgICAgJ1ZpY3RvcicsICdXaGlza2V5JywgJ1gtcmF5Jywg
J1lhbmtlZScsICdadWx1J107CisKK3Rlc3QoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVzdWx0ID0gZXZhbEFuZExvZygid2Via2l0SW5kZXhlZERCLm9wZW4oJ25hbWUnKSIpOworICAg
IHZlcmlmeVJlc3VsdChyZXN1bHQpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsK
KyAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnJlc3VsdCIpOworCisgICAgcmVz
dWx0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHZl
cmlmeVJlc3VsdChyZXN1bHQpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3Vj
Y2VzczsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNldFZlcnNpb25T
dWNjZXNzKCk6Iik7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKKyAgICB3aW5kb3cu
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnJlc3VsdCIpOworICAgIHNob3VsZEJl
VHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGJhc2ljQ3Vyc29yVGVzdDsKKwor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYiwgY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9y
ZSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAg
IGRlYnVnKCJjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCk6Iik7CisKKyAgICB2YXIgb2Jq
ZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZScsIHtrZXlQYXRoOiAnaWQnfSkiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZS5jcmVhdGVJbmRleCgnbmFtZUluZGV4JywgJ25hbWUnKSIpOworICAgIHJlc2V0T2JqZWN0U3Rv
cmUoKTsgLy8gTm8gY2FsbGJhY2s7IGxldCB0aGUgc2V0VmVyc2lvbiB0cmFuc2FjdGlvbiBjb21w
bGV0ZS4KK30KKworZnVuY3Rpb24gcmVzZXRPYmplY3RTdG9yZShjYWxsYmFjaykKK3sKKyAgICBk
ZWJ1ZygiXG5yZXNldE9iamVjdFN0b3JlKCk6Iik7CisgICAgaWYgKGNhbGxiYWNrID09PSB1bmRl
ZmluZWQpCisgICAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24gKCkge307CisKKyAgICB2YXIgb2Jq
ZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKQorICAgICAgICBvYmplY3RTdG9yZS5kZWxldGUoaSku
b25lcnJvciA9IGZ1bmN0aW9uKCkgeyB9OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMu
bGVuZ3RoOyBpKyspCisgICAgICAgIG9iamVjdFN0b3JlLmFkZCh7aWQ6IGksIG5hbWU6IG5hbWVz
W2ldfSkub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworCisgICAgZGVidWcoIiIp
OworICAgIGNhbGxiYWNrKCk7Cit9CisKK3ZhciBjdXJzb3I7Cit2YXIgZGVsZXRlZDsKKworZnVu
Y3Rpb24gdGVzdEN1cnNvcihkZWxldGVMaXN0LCBjcmVhdGVDdXJzb3JDb21tYW5kLCBjYWxsYmFj
aykKK3sKKyAgICBkZWJ1ZygiXG50ZXN0Q3Vyc29yKCk6Iik7CisgICAgZGVsZXRlZCA9IFtdOwor
CisgICAgLy8gQ3JlYXRlIHRoZSBjdXJzb3IuCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coY3Jl
YXRlQ3Vyc29yQ29tbWFuZCk7CisgICAgdmVyaWZ5UmVzdWx0KHJlcXVlc3QpOworCisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGlmIChldmVudC5yZXN1bHQgPT0gbnVsbCkg
eworICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRlYnVnKGV2ZW50LnJlc3VsdC52
YWx1ZS5pZCArICI6ICIgKyBldmVudC5yZXN1bHQudmFsdWUubmFtZSk7CisKKyAgICAgICAgLy8g
TWFrZSBzdXJlIHdlIGRvbid0IHNlZSBhbnkgZGVsZXRlZCBpdGVtcy4KKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBkZWxldGVkLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZXZl
bnQucmVzdWx0LnZhbHVlLmlkID09IGRlbGV0ZWRbaV0pCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiQ3Vyc29yIGhpdCBwcmV2aW91c2x5IGRlbGV0ZWQgZWxlbWVudC4iKTsKKyAgICAgICAg
fQorCisgICAgICAgIGN1cnNvciA9IGV2ZW50LnJlc3VsdDsKKworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGRlbGV0ZUxpc3QubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChldmVu
dC5yZXN1bHQudmFsdWUuaWQgPT0gZGVsZXRlTGlzdFtpXS5pZCkgeworICAgICAgICAgICAgICAg
IC8vIERlbGV0ZSBvYmplY3RzIHRhcmdldGVkIGJ5IHRoaXMgaWQuCisgICAgICAgICAgICAgICAg
dmFyIHRhcmdldHMgPSBkZWxldGVMaXN0W2ldLnRhcmdldHM7CisgICAgICAgICAgICAgICAgZm9y
ICh2YXIgaiA9IDA7IGogPCB0YXJnZXRzLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAg
ICAgIGRlbGV0ZWQucHVzaCh0YXJnZXRzW2pdKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5kZWxl
dGUoIiArIHRhcmdldHNbal0gKyAiKSIpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGogPT0gdGFyZ2V0cy5sZW5ndGggLSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgY3Vyc29yLmNvbnRpbnVlKCk7IH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBi
YXNpY0N1cnNvclRlc3QoKQoreworICAgIGRlYnVnKCJiYXNpY0N1cnNvclRlc3QoKSIpOworCisg
ICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbXSwgd2Via2l0SURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGU7CisK
KyAgICB2YXIgZGVsZXRlcyA9IFt7aWQ6IDIsIHRhcmdldHM6IFsxXX0sCisgICAgICAgICAgICAg
ICAgICAge2lkOiAzLCB0YXJnZXRzOiBbNSw2LDddfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6
IDEwLCB0YXJnZXRzOiBbMTBdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDE1LCB0YXJnZXRz
OiBbMTMsMTRdfQorICAgICAgICAgICAgICAgICAgIF07CisKKyAgICB0ZXN0Q3Vyc29yKGRlbGV0
ZXMsICJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKHdlYmtpdElEQktleVJh
bmdlLmxvd2VyQm91bmQoMCkpIiwgZnVuY3Rpb24oKSB7IHJlc2V0T2JqZWN0U3RvcmUocmV2ZXJz
ZUN1cnNvclRlc3QpOyB9KTsKK30KKworZnVuY3Rpb24gcmV2ZXJzZUN1cnNvclRlc3QoKQorewor
ICAgIGRlYnVnKCJyZXZlcnNlQ3Vyc29yVGVzdCgpOiIpOworCisgICAgdmFyIGRlbGV0ZXMgPSBb
e2lkOiAyNSwgdGFyZ2V0czogWzI0LDIzLDIyXX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAy
MCwgdGFyZ2V0czogWzIxXX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAxNSwgdGFyZ2V0czog
WzE2LDE3XX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAxMCwgdGFyZ2V0czogWzFdfQorICAg
ICAgICAgICAgICAgICAgIF07CisKKyAgICB0ZXN0Q3Vyc29yKGRlbGV0ZXMsICJ0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKHdlYmtpdElEQktleVJhbmdlLmxvd2VyQm91bmQo
MCksIHdlYmtpdElEQkN1cnNvci5QUkVWKSIsIGZ1bmN0aW9uKCkgeyByZXNldE9iamVjdFN0b3Jl
KGluZGV4Q3Vyc29yVGVzdCk7IH0pOworfQorCitmdW5jdGlvbiBpbmRleEN1cnNvclRlc3QoKQor
eworICAgIGRlYnVnKCJpbmRleEN1cnNvclRlc3QoKToiKTsKKworICAgIHZhciBkZWxldGVzID0g
W3tpZDogMiwgdGFyZ2V0czogWzFdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDMsIHRhcmdl
dHM6IFs1LDYsN119LAorICAgICAgICAgICAgICAgICAgIHtpZDogMTAsIHRhcmdldHM6IFsxMF19
LAorICAgICAgICAgICAgICAgICAgIHtpZDogMTUsIHRhcmdldHM6IFsxMywxNF19CisgICAgICAg
ICAgICAgICAgICAgXTsKKworICAgIHRlc3RDdXJzb3IoZGVsZXRlcywgInRyYW5zLm9iamVjdFN0
b3JlKCdzdG9yZScpLmluZGV4KCduYW1lSW5kZXgnKS5vcGVuQ3Vyc29yKHdlYmtpdElEQktleVJh
bmdlLmxvd2VyQm91bmQoJ0FscGhhJykpIiwgZnVuY3Rpb24oKSB7IHJlc2V0T2JqZWN0U3RvcmUo
KTsgfSk7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGUoKQoreworICAgIGRlYnVn
KCJ0cmFuc2FjdGlvbkNvbXBsZXRlKCk6Iik7CisgICAgZG9uZSgpOworfQorCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMDc1YTVkZmQ1NmM1ZTI0MzM5NWRkODdmN2I0NTVlYmZmMWMxYzQ4Yi4uMmY3ZTIy
YzVkNDRjN2I1Zjk0MjdlMTdmZDYxMDUxMTNjZGU4MTgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDExLTAyLTA0ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5kZXhlZERC
OiBDdXJzb3JzIHNob3VsZCBza2lwIGRlbGV0ZWQgZW50cmllcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM2OTAKKworICAgICAgICBBZGQgdGVzdCB0
byBjaGVjayB0aGF0IHRoZSBjdXJzb3Igc2tpcHMgZGVsZXRlZCBlbnRyaWVzLgorCisgICAgICAg
IFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1za2lwLWRlbGV0ZWQuaHRtbAorCisgICAg
ICAgICogc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y3VycmVudFJvd0V4aXN0cyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbkludGVybmFsKToKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmg6CisKIDIwMTEtMDItMDMgIEFu
dG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBB
ZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JC
YWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJ
bXBsLmNwcAppbmRleCBmY2ZjZjNhNTdiOTM2ZjgzZDMyMTZmMDczNWU1ZGQzYzZjNmJiNmJjLi4w
ZTcyNDQ5MGMwMWVmZjRiYzMzOTg0ZDJkYTgyNmUxYzNlYjM4MGFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApAQCAtOTgsNiArOTgsMTgg
QEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRy
PElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHQKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6Tk9UX0FMTE9XRURfRVJSOwogfQogCitib29sIElEQkN1cnNvckJhY2tlbmRJbXBsOjpj
dXJyZW50Um93RXhpc3RzKCkKK3sKKyAgICBTdHJpbmcgc3FsID0gbV9jdXJyZW50SURCS2V5VmFs
dWUgPyAiU0VMRUNUIGlkIEZST00gSW5kZXhEYXRhIFdIRVJFIGlkID0gPyIgOiAiU0VMRUNUIGlk
IEZST00gT2JqZWN0U3RvcmVEYXRhIFdIRVJFIGlkID0gPyI7CisgICAgU1FMaXRlU3RhdGVtZW50
IHN0YXRlbWVudChtX2RhdGFiYXNlLT5kYigpLCBzcWwpOworCisgICAgYm9vbCBvayA9IHN0YXRl
bWVudC5wcmVwYXJlKCkgPT0gU1FMUmVzdWx0T2s7CisgICAgQVNTRVJUX1VOVVNFRChvaywgb2sp
OworCisgICAgc3RhdGVtZW50LmJpbmRJbnQ2NCgxLCBtX2N1cnJlbnRJZCk7CisgICAgcmV0dXJu
IHN0YXRlbWVudC5zdGVwKCkgPT0gU1FMUmVzdWx0Um93OworfQorCiB2b2lkIElEQkN1cnNvckJh
Y2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IHBycEN1cnNvciwgUGFzc1JlZlB0
cjxJREJLZXk+IHBycEtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsK
ICAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGN1cnNvciA9IHBycEN1cnNvcjsKQEAg
LTExNiw2ICsxMjgsMTAgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5j
dGlvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXMKICAgICAgICAgUmVmUHRy
PElEQktleT4gb2xkS2V5ID0gY3Vyc29yLT5tX2N1cnJlbnRLZXk7CiAgICAgICAgIGN1cnNvci0+
bG9hZEN1cnJlbnRSb3coKTsKIAorICAgICAgICAvLyBTa2lwIGlmIHRoaXMgZW50cnkgaGFzIGJl
ZW4gZGVsZXRlZCBmcm9tIHRoZSBvYmplY3Qgc3RvcmUuCisgICAgICAgIGlmICghY3Vyc29yLT5j
dXJyZW50Um93RXhpc3RzKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAvLyBJ
ZiBhIGtleSB3YXMgc3VwcGxpZWQsIHdlIG11c3QgbG9vcCB1bnRpbCB3ZSBmaW5kIHRoYXQga2V5
IChvciBoaXQgdGhlIGVuZCkuCiAgICAgICAgIGlmIChrZXkgJiYgIWtleS0+aXNFcXVhbChjdXJz
b3ItPm1fY3VycmVudEtleS5nZXQoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuaAppbmRleCA5MTlmMTUzNzQy
ZTI3ODkxZDhmM2RjNTcwZTU5MmNlZmZkYTA4ZmEyLi5mNDU5MTM5ODdjNmMxMzBiMjVmNWY2YmRm
ODMzZTEzYzE5ODg0MTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1
cnNvckJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JC
YWNrZW5kSW1wbC5oCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSURC
Q3Vyc29yQmFja2VuZEltcGwoSURCU1FMaXRlRGF0YWJhc2UqLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24sIFBhc3NPd25QdHI8U1FMaXRlU3RhdGVtZW50PiBx
dWVyeSwgYm9vbCBpc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUN1cnNvciwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlKik7CiAKKyAg
ICBib29sIGN1cnJlbnRSb3dFeGlzdHMoKTsKICAgICB2b2lkIGxvYWRDdXJyZW50Um93KCk7CiAg
ICAgU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKCkgY29uc3Q7CiAK
</data>
<flag name="review"
          id="72784"
          type_id="1"
          status="+"
          setter="jorlow"
    />
          </attachment>
      

    </bug>

</bugzilla>