<?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>18436</bug_id>
          
          <creation_ts>2008-04-11 18:10:43 -0700</creation_ts>
          <short_desc>Need to throw exception on read/modify/write or similar resolve for nonexistent property</short_desc>
          <delta_ts>2008-04-15 02:21:07 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>ggaren</cc>
    
    <cc>mjs</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>77332</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-04-11 18:10:43 -0700</bug_when>
    <thetext>task tracking bug; basically
x++ (where is is undefined) should throw, but does not</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77334</commentid>
    <comment_count>1</comment_count>
      <attachid>20489</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-04-11 19:51:15 -0700</bug_when>
    <thetext>Created attachment 20489
Here we go</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77644</commentid>
    <comment_count>2</comment_count>
      <attachid>20544</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-04-14 22:10:03 -0700</bug_when>
    <thetext>Created attachment 20544
Slightly updated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77647</commentid>
    <comment_count>3</comment_count>
      <attachid>20544</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-04-14 22:49:56 -0700</bug_when>
    <thetext>Comment on attachment 20544
Slightly updated

This patch is really 3 patches:
(1) Fix a bug where resolve-dependent writes do a get_prop_id and/or put_prop_id instead of a full resolve.
(2) Add a superinstruction optimization that merges resolve_base and resolve.
(3) Add exception checks after resolve operations.

Because each of these is a substantial change, I think each should land separately.

Taken individually:

Fix (1) needs to include assign and for-in, not just read/modify.

Fix (2) seems like a nice optimization, but why not do this as a peephole optimization in the code generator? 

Fix (3) needs to include normal resolve and resolve_base, not just read/modify. I&apos;d also like to know exactly what the cost of fix (3) is before we land it, to make sure it doesn&apos;t cost more than we would reasonably expect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77648</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-04-14 23:01:13 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 20544 [edit])
&gt; This patch is really 3 patches:
&gt; (1) Fix a bug where resolve-dependent writes do a get_prop_id and/or
&gt; put_prop_id instead of a full resolve.
&gt; (2) Add a superinstruction optimization that merges resolve_base and resolve.
&gt; (3) Add exception checks after resolve operations.
&gt; 
&gt; Because each of these is a substantial change, I think each should land
&gt; separately.
&gt; 
&gt; Taken individually:
&gt; 
&gt; Fix (1) needs to include assign and for-in, not just read/modify.
nope, resolve for assignment cannot throw an exception -- the put may, but that is handled by op_put_property_*

&gt; 
&gt; Fix (2) seems like a nice optimization, but why not do this as a peephole
&gt; optimization in the code generator? 
Because it seems retarded to go to great lengths to deliberately obfuscate this fix in the name of not creating a superinstruction -- given the only difference would be us *deliberately* throwing away the base pointer

&gt; 
&gt; Fix (3) needs to include normal resolve and resolve_base, not just read/modify.
&gt; I&apos;d also like to know exactly what the cost of fix (3) is before we land it, to
&gt; make sure it doesn&apos;t cost more than we would reasonably expect.
See above.

&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77649</commentid>
    <comment_count>5</comment_count>
      <attachid>20544</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-04-14 23:01:54 -0700</bug_when>
    <thetext>Comment on attachment 20544
Slightly updated

Marking for re-review, i don&apos;t believe ggaren&apos;s were correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77651</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-04-14 23:03:30 -0700</bug_when>
    <thetext>I suppose i could remove the op_resolve_base_and_func change, but that seems somewhat pointless given the triviality and obvious relationship to the op_resolve_base_and_property change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77653</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-04-14 23:16:56 -0700</bug_when>
    <thetext>resolve *does* need to throw if the resolve fails. &quot;x + 1&quot; must throw if x is not defined.

If you think the resolve_base_and_property optimization is required scaffolding for the bug fix, that&apos;s fine with me. Please land it first, and then land the bug fix, so we can measure the cost of the bug fix by itself.

On a personal note, please try to keep this conversation professional, Oliver. I think we can discuss differing opinions without resorting to insults like &quot;retarded&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77658</commentid>
    <comment_count>8</comment_count>
      <attachid>20544</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-04-15 00:20:52 -0700</bug_when>
    <thetext>Comment on attachment 20544
Slightly updated

I&apos;m removing the changes to resolveBaseAndFunc, that can be handled in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77666</commentid>
    <comment_count>9</comment_count>
      <attachid>20547</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-04-15 01:23:44 -0700</bug_when>
    <thetext>Created attachment 20547
Stripping everything unrelated to this bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77672</commentid>
    <comment_count>10</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-04-15 02:01:57 -0700</bug_when>
    <thetext>I&apos;d look at this a little differently from Geoff.

Combining resolve_base followed by resolve of the same property on the same object isn&apos;t your typical superinstruction - the savings in combining them is not primarily dispatch but rather avoiding the need to walk the scope chain twice, because these operations do substantially the same work, they just report different pieces of the output (base vs. value). Indeed, we went to great lengths in the past to be able to share this work, when we used to always walk scope chains twice; this is the whole point of the getPropertySlot architecture.

In addition, we already have the very similar resolve_base_and_func.

I would say this is a special-purpose two-output opcode, and not just a regular combined instruction.

Also, doing a resolve_base followed by resolve would be a performance regression (one that is inessential to the basic regression of doing exception checks), as documented by Oliver.  Given that we have to change codegen to get the exception check right, may as well do it in a way that is a speedup instead of a regression.

Thus, since Oliver removed the truly unrelated parts, I will review the patch on the substance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77673</commentid>
    <comment_count>11</comment_count>
      <attachid>20547</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-04-15 02:07:37 -0700</bug_when>
    <thetext>Comment on attachment 20547
Stripping everything unrelated to this bug

r=me

We could use test cases of these edge cases - maybe we already have them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77675</commentid>
    <comment_count>12</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-04-15 02:21:07 -0700</bug_when>
    <thetext>Committed r31898</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20489</attachid>
            <date>2008-04-11 19:51:15 -0700</date>
            <delta_ts>2008-04-14 22:10:03 -0700</delta_ts>
            <desc>Here we go</desc>
            <filename>readmodifywrite-exceptions.patch</filename>
            <type>text/plain</type>
            <size>12101</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBlNzVjYzUyLi4yMDU1MjAwIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMDgtMDQtMTEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMTg0MzY6IE5lZWQg
dG8gdGhyb3cgZXhjZXB0aW9uIG9uIHJlYWQvbW9kaWZ5L3dyaXRlIG9yIHNpbWlsYXIgcmVzb2x2
ZSBmb3Igbm9uZXhpc3RlbnQgcHJvcGVydHkKKworICAgICAgICBBZGQgb3BfcmVzb2x2ZV9iYXNl
X2FuZF9wcm9wZXJ0eSBmb3IgcmVhZC9tb2RpZnkvd3JpdGUgb3BlcmF0aW9ucywKKyAgICAgICAg
Zml4IHJlc29sdmVCYXNlQW5kRnVuYyBzbyB0aGF0IGl0IGNvcnJlY3RseSB0aHJvd3MgYW4gZXhj
ZXB0aW9uLgorCisgICAgICAgIFN1bnNwaWRlciByZXBvcnRzIDEuNSUgZ2FpbiBhZnRlciB0aGUg
ZXhjZXB0aW9uIGxvZ2ljIHdhcyBhZGRlZC4KKworICAgICAgICAqIFZNL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChLSlM6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgICogVk0vQ29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChLSlM6OkNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlQmFzZUFu
ZFByb3BlcnR5KToKKyAgICAgICAgKiBWTS9Db2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogVk0v
TWFjaGluZS5jcHA6CisgICAgICAgIChLSlM6OnJlc29sdmVCYXNlQW5kUHJvcGVydHkpOgorICAg
ICAgICAoS0pTOjpyZXNvbHZlQmFzZUFuZEZ1bmMpOgorICAgICAgICAoS0pTOjpNYWNoaW5lOjpw
cml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogVk0vT3Bjb2RlLmg6CisgICAgICAgICoga2pzL25v
ZGVzLmNwcDoKKyAgICAgICAgKEtKUzo6UG9zdEluY1Jlc29sdmVOb2RlOjplbWl0Q29kZSk6Cisg
ICAgICAgIChLSlM6OlBvc3REZWNSZXNvbHZlTm9kZTo6ZW1pdENvZGUpOgorICAgICAgICAoS0pT
OjpQcmVJbmNSZXNvbHZlTm9kZTo6ZW1pdENvZGUpOgorICAgICAgICAoS0pTOjpQcmVEZWNSZXNv
bHZlTm9kZTo6ZW1pdENvZGUpOgorICAgICAgICAoS0pTOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6
OmVtaXRDb2RlKToKKwogMjAwOC0wNC0xMCAgQ2FtZXJvbiBad2FyaWNoICA8Y3d6d2FyaWNoQHV3
YXRlcmxvby5jYT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWouCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9WTS9Db2RlQmxvY2suY3BwIGIvSmF2YVNjcmlwdENvcmUvVk0vQ29kZUJs
b2NrLmNwcAppbmRleCA5MTY3NmUyLi5mMGQwYzg3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9WTS9Db2RlQmxvY2suY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVCbG9jay5jcHAK
QEAgLTMzMyw2ICszMzMsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYKICAgICAgICAgICAg
IHByaW50ZigiWyU0ZF0gcmVzb2x2ZV9iYXNlXHQlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUocjApLmNfc3RyKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXJzW2lkMF0pLmNfc3RyKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9yZXNvbHZl
X2Jhc2VfYW5kX3Byb3BlcnR5OiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRmKCJbJTRk
XSByZXNvbHZlX2Jhc2VfYW5kX3Byb3BlcnR5XHQlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKHIwKS5jX3N0cigpLCByZWdpc3Rlck5hbWUocjEpLmNfc3RyKCksIGlkTmFtZShp
ZDAsIGlkZW50aWZpZXJzW2lkMF0pLmNfc3RyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX2Jhc2VfYW5kX2Z1bmM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9WTS9Db2RlR2VuZXJh
dG9yLmNwcCBiL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGEwZWMz
YjcuLmMxMzdkNTQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3Iu
Y3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3IuY3BwCkBAIC02NTMsNiAr
NjUzLDE1IEBAIFJlZ2lzdGVySUQqIENvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlQmFzZShSZWdp
c3RlcklEKiByMCwgY29uc3QgSWRlbnRpZmllciYgaWRlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGFkZENvbnN0YW50KGlkZW50KSk7CiAgICAgcmV0dXJuIHIwOwogfQorICAgIAorUmVnaXN0
ZXJJRCogQ29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVCYXNlQW5kUHJvcGVydHkoUmVnaXN0ZXJJ
RCogcjAsIFJlZ2lzdGVySUQqIHIxLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobWFjaGluZSgpLmdldE9wY29kZShvcF9yZXNvbHZlX2Jhc2Vf
YW5kX3Byb3BlcnR5KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIwLT5pbmRleCgpKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocjEtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChhZGRDb25zdGFudChpZGVudCkpOworICAgIHJldHVybiByMDsKK30KIAogUmVn
aXN0ZXJJRCogQ29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVCYXNlQW5kRnVuYyhSZWdpc3RlcklE
KiByMCwgUmVnaXN0ZXJJRCogcjEsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvVk0vQ29kZUdlbmVyYXRvci5oIGIvSmF2YVNjcmlwdENvcmUv
Vk0vQ29kZUdlbmVyYXRvci5oCmluZGV4IDVjNjI5ZTMuLjljYmZkNGEgMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3IuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9WTS9D
b2RlR2VuZXJhdG9yLmgKQEAgLTE0Nyw2ICsxNDcsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmVCYXNlKFJlZ2lzdGVySUQqLCBjb25zdCBJZGVudGlm
aWVyJik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlQmFzZShSZWdpc3RlcklEKiwg
aW50KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmVCYXNlKFJlZ2lzdGVySUQqLCBp
bnQsIGludCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlQmFzZUFuZFByb3BlcnR5
KFJlZ2lzdGVySUQqLCBSZWdpc3RlcklEKiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0UmVzb2x2ZUJhc2VBbmRGdW5jKFJlZ2lzdGVySUQqLCBSZWdpc3RlcklE
KiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEdldFByb3BJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwIGIvSmF2
YVNjcmlwdENvcmUvVk0vTWFjaGluZS5jcHAKaW5kZXggMzIyNjI1MC4uNGI1OGUwYiAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvVk0vTWFjaGluZS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUv
Vk0vTWFjaGluZS5jcHAKQEAgLTI3MSw3ICsyNzEsMzcgQEAgc3RhdGljIHZvaWQgTkVWRVJfSU5M
SU5FIHJlc29sdmVCYXNlKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHZQQywgUmVnaXN0
ZXIKICAgICByW3IwXS51LmpzVmFsdWUgPSBiYXNlOwogfQogCi1zdGF0aWMgdm9pZCBORVZFUl9J
TkxJTkUgcmVzb2x2ZUJhc2VBbmRGdW5jKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHZQ
QywgUmVnaXN0ZXIqIHIsIFNjb3BlQ2hhaW4qIHNjb3BlQ2hhaW4sIENvZGVCbG9jayogY29kZUJs
b2NrKQorc3RhdGljIGJvb2wgTkVWRVJfSU5MSU5FIHJlc29sdmVCYXNlQW5kUHJvcGVydHkoRXhl
Y1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogdlBDLCBSZWdpc3RlciogciwgU2NvcGVDaGFpbiog
c2NvcGVDaGFpbiwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUqJiBleGNlcHRpb25WYWx1
ZSkKK3sKKyAgICBpbnQgcjAgPSAodlBDICsgMSktPnUub3BlcmFuZDsKKyAgICBpbnQgcjEgPSAo
dlBDICsgMiktPnUub3BlcmFuZDsKKyAgICBpbnQgaWQwID0gKHZQQyArIDMpLT51Lm9wZXJhbmQ7
CisgICAgCisgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGl0ZXIgPSBzY29wZUNoYWluLT5iZWdpbigp
OworICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQgPSBzY29wZUNoYWluLT5lbmQoKTsKKyAgICAK
KyAgICAvLyBGSVhNRTogYWRkIHNjb3BlRGVwdGhJc1plcm8gb3B0aW1pemF0aW9uCisgICAgCisg
ICAgQVNTRVJUKGl0ZXIgIT0gZW5kKTsKKyAgICAKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcnNbaWQwXTsKKyAgICBK
U09iamVjdCogYmFzZTsKKyAgICBkbyB7CisgICAgICAgIGJhc2UgPSAqaXRlcjsKKyAgICAgICAg
aWYgKGJhc2UtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkpIHsgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHJbcjBdLnUuanNWYWx1ZSA9IGJhc2U7CisgICAgICAgICAgICByW3Ix
XS51LmpzVmFsdWUgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGJhc2UsIGlkZW50KTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgICsraXRlcjsKKyAgICB9IHdoaWxl
IChpdGVyICE9IGVuZCk7CisgICAgCisgICAgZXhjZXB0aW9uVmFsdWUgPSBjcmVhdGVVbmRlZmlu
ZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0
YXRpYyBib29sIE5FVkVSX0lOTElORSByZXNvbHZlQmFzZUFuZEZ1bmMoRXhlY1N0YXRlKiBleGVj
LCBJbnN0cnVjdGlvbiogdlBDLCBSZWdpc3RlciogciwgU2NvcGVDaGFpbiogc2NvcGVDaGFpbiwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUqJiBleGNlcHRpb25WYWx1ZSkKIHsKICAgICBp
bnQgcjAgPSAodlBDICsgMSktPnUub3BlcmFuZDsKICAgICBpbnQgcjEgPSAodlBDICsgMiktPnUu
b3BlcmFuZDsKQEAgLTMwMiwxMiArMzMyLDEzIEBAIHN0YXRpYyB2b2lkIE5FVkVSX0lOTElORSBy
ZXNvbHZlQmFzZUFuZEZ1bmMoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogdlBDLCBSCiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIHJbcjBdLnUuanNWYWx1ZSA9IHRoaXNPYmo7CiAgICAg
ICAgICAgICByW3IxXS51LmpzVmFsdWUgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGJhc2UsIGlkZW50
KTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAgICAgICAgICsraXRlcjsKICAgICB9IHdoaWxlIChpdGVyICE9IGVuZCk7CiAgICAgCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIEZJWE1FOiB0aHJvdyBhbiB1bmRlZmluZWQgdmFy
aWFibGUgZXhjZXB0aW9uCisgICAgZXhjZXB0aW9uVmFsdWUgPSBjcmVhdGVVbmRlZmluZWRWYXJp
YWJsZUVycm9yKGV4ZWMsIGlkZW50KTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEFMV0FZU19J
TkxJTkUgdm9pZCBpbml0aWFsaXplQ2FsbEZyYW1lKFJlZ2lzdGVyKiBjYWxsRnJhbWUsIENvZGVC
bG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogdlBDLCBTY29wZUNoYWluKiBzY29wZUNoYWlu
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCByZXR1cm5WYWx1ZVJlZ2lzdGVyLCBpbnQgYXJndiwg
aW50IGNhbGxlZEFzQ29uc3RydWN0b3IpCkBAIC01MzIsNyArNTYzLDcgQEAgSlNWYWx1ZSogTWFj
aGluZTo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBFeGVjU3RhdGUqIGV4ZWMs
IFJlZ2lzdGVyRmkKICAgICB9d2hpbGUgKDApCiAKICNpZiBIQVZFKENPTVBVVEVEX0dPVE8pCi0g
ICAgI2RlZmluZSBORVhUX09QQ09ERSBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsgZ290
byAqdlBDLT51Lm9wY29kZQorICAgICNkZWZpbmUgTkVYVF9PUENPREUgQVNTRVJUKCFleGVjLT5o
YWRFeGNlcHRpb24oKSk7IEFTU0VSVCgodlBDLT51Lm9wY29kZSkpOyBnb3RvICp2UEMtPnUub3Bj
b2RlCiAgICAgI2RlZmluZSBCRUdJTl9PUENPREUob3Bjb2RlKSBvcGNvZGU6CiAgICAgTkVYVF9P
UENPREU7CiAjZWxzZQpAQCAtODU3LDEwICs4ODgsMjAgQEAgSlNWYWx1ZSogTWFjaGluZTo6cHJp
dmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVy
RmkKIAogICAgICAgICBORVhUX09QQ09ERTsKICAgICB9Ci0gICAgQkVHSU5fT1BDT0RFKG9wX3Jl
c29sdmVfYmFzZV9hbmRfZnVuYykgewotICAgICAgICByZXNvbHZlQmFzZUFuZEZ1bmMoZXhlYywg
dlBDLCByLCBzY29wZUNoYWluLCBjb2RlQmxvY2spOworICAgIEJFR0lOX09QQ09ERShvcF9yZXNv
bHZlX2Jhc2VfYW5kX3Byb3BlcnR5KSB7CisgICAgICAgIGlmIChVTkxJS0VMWSghcmVzb2x2ZUJh
c2VBbmRQcm9wZXJ0eShleGVjLCB2UEMsIHIsIHNjb3BlQ2hhaW4sIGNvZGVCbG9jaywgZXhjZXB0
aW9uVmFsdWUpKSkKKyAgICAgICAgICAgIGdvdG8gaW50ZXJuYWxfdGhyb3c7CisKICAgICAgICAg
dlBDICs9IDQ7CisgICAgICAgIAorICAgICAgICBORVhUX09QQ09ERTsKKyAgICB9CisgICAgQkVH
SU5fT1BDT0RFKG9wX3Jlc29sdmVfYmFzZV9hbmRfZnVuYykgeworICAgICAgICBpZiAoVU5MSUtF
TFkoIXJlc29sdmVCYXNlQW5kRnVuYyhleGVjLCB2UEMsIHIsIHNjb3BlQ2hhaW4sIGNvZGVCbG9j
aywgZXhjZXB0aW9uVmFsdWUpKSkKKyAgICAgICAgICAgIGdvdG8gaW50ZXJuYWxfdGhyb3c7CiAK
KyAgICAgICAgdlBDICs9IDQ7CisgICAgICAgIAogICAgICAgICBORVhUX09QQ09ERTsKICAgICB9
CiAgICAgQkVHSU5fT1BDT0RFKG9wX2dldF9wcm9wX2lkKSB7CmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9WTS9PcGNvZGUuaCBiL0phdmFTY3JpcHRDb3JlL1ZNL09wY29kZS5oCmluZGV4IDk3
ZDk1YTQuLmJiZjBlZmIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL1ZNL09wY29kZS5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL1ZNL09wY29kZS5oCkBAIC03Nyw2ICs3Nyw3IEBAIG5hbWVzcGFj
ZSBLSlMgewogICAgICAgICBcCiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmUpIFwKICAgICAgICAg
bWFjcm8ob3BfcmVzb2x2ZV9iYXNlKSBcCisgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVfYmFzZV9h
bmRfcHJvcGVydHkpIFwKICAgICAgICAgbWFjcm8ob3BfcmVzb2x2ZV9iYXNlX2FuZF9mdW5jKSBc
CiAgICAgICAgIG1hY3JvKG9wX2dldF9wcm9wX2lkKSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9w
cm9wX2lkKSBcCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3BwIGIvSmF2
YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcAppbmRleCBjOGQzOTg0Li5iNzM5ZjZkIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2tq
cy9ub2Rlcy5jcHAKQEAgLTE3MDYsOCArMTcwNiw4IEBAIFJlZ2lzdGVySUQqIFBvc3RJbmNSZXNv
bHZlTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
CiAgICAgaWYgKFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLnJlZ2lzdGVyRm9yTG9jYWwobV9p
ZGVudCkpCiAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFBvc3RJbmMoZHN0ID8gZHN0IDog
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByMCk7CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cjAgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVCYXNlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
bV9pZGVudCk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIxID0gZ2VuZXJhdG9yLmVtaXRHZXRQ
cm9wSWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByMC5nZXQoKSwgbV9pZGVudCk7CisgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHIxID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiByMCA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZUJhc2VBbmRQcm9wZXJ0
eShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHIxLmdldCgpLCBtX2lkZW50KTsKICAgICBSZWdp
c3RlcklEKiByMiA9IGdlbmVyYXRvci5lbWl0UG9zdEluYyhkc3QgPyBkc3QgOiBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHIxLmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dFByb3BJZChy
MC5nZXQoKSwgbV9pZGVudCwgcjEuZ2V0KCkpOwogICAgIHJldHVybiByMjsKQEAgLTE3ODYsOCAr
MTc4Niw4IEBAIFJlZ2lzdGVySUQqIFBvc3REZWNSZXNvbHZlTm9kZTo6ZW1pdENvZGUoQ29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkCiAgICAgaWYgKFJlZ2lzdGVySUQqIHIw
ID0gZ2VuZXJhdG9yLnJlZ2lzdGVyRm9yTG9jYWwobV9pZGVudCkpCiAgICAgICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdFBvc3REZWMoZHN0ID8gZHN0IDogZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCByMCk7CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdFJlc29s
dmVCYXNlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgbV9pZGVudCk7Ci0gICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHIxID0gZ2VuZXJhdG9yLmVtaXRHZXRQcm9wSWQoZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCByMC5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIxID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByMCA9IGdl
bmVyYXRvci5lbWl0UmVzb2x2ZUJhc2VBbmRQcm9wZXJ0eShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksIHIxLmdldCgpLCBtX2lkZW50KTsKICAgICBSZWdpc3RlcklEKiByMiA9IGdlbmVyYXRvci5l
bWl0UG9zdERlYyhkc3QgPyBkc3QgOiBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHIxLmdldCgp
KTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dFByb3BJZChyMC5nZXQoKSwgbV9pZGVudCwgcjEuZ2V0
KCkpOwogICAgIHJldHVybiByMjsKQEAgLTIyOTYsMTEgKzIyOTYsMTEgQEAgUmVnaXN0ZXJJRCog
UHJlSW5jUmVzb2x2ZU5vZGU6OmVtaXRDb2RlKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHMKIHsKICAgICBpZiAoUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IucmVnaXN0
ZXJGb3JMb2NhbChtX2lkZW50KSkKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHJlSW5j
KHIwKTsKLQotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByMCA9IGdlbmVyYXRvci5lbWl0UmVzb2x2
ZUJhc2UoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBtX2lkZW50KTsKLSAgICBSZWdpc3RlcklE
KiByMSA9IGdlbmVyYXRvci5lbWl0R2V0UHJvcElkKGRzdCA/IGRzdCA6IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgcjAuZ2V0KCksIG1faWRlbnQpOwotICAgIGdlbmVyYXRvci5lbWl0UHJlSW5j
KHIxKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRQcm9wSWQocjAuZ2V0KCksIG1faWRl
bnQsIHIxKTsKKyAgICAKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjEgPSBkc3QgPyBkc3QgOiBn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2Vu
ZXJhdG9yLmVtaXRSZXNvbHZlQmFzZUFuZFByb3BlcnR5KGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgcjEuZ2V0KCksIG1faWRlbnQpOworICAgIGdlbmVyYXRvci5lbWl0UHJlSW5jKHIxLmdldCgp
KTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRQcm9wSWQocjAuZ2V0KCksIG1faWRlbnQs
IHIxLmdldCgpKTsKIH0KIAogdm9pZCBQcmVJbmNSZXNvbHZlTm9kZTo6b3B0aW1pemVWYXJpYWJs
ZUFjY2VzcyhFeGVjU3RhdGUqLCBjb25zdCBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUsIGNvbnN0
IExvY2FsU3RvcmFnZSYgbG9jYWxTdG9yYWdlLCBOb2RlU3RhY2smKQpAQCAtMjM2MCwxMCArMjM2
MCwxMCBAQCBSZWdpc3RlcklEKiBQcmVEZWNSZXNvbHZlTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAgIGlmIChSZWdpc3RlcklEKiByMCA9
IGdlbmVyYXRvci5yZWdpc3RlckZvckxvY2FsKG1faWRlbnQpKQogICAgICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRQcmVEZWMocjApOwogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2Vu
ZXJhdG9yLmVtaXRSZXNvbHZlQmFzZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIG1faWRlbnQp
OwotICAgIFJlZ2lzdGVySUQqIHIxID0gZ2VuZXJhdG9yLmVtaXRHZXRQcm9wSWQoZHN0ID8gZHN0
IDogZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByMC5nZXQoKSwgbV9pZGVudCk7Ci0gICAgZ2Vu
ZXJhdG9yLmVtaXRQcmVEZWMocjEpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dFByb3BJ
ZChyMC5nZXQoKSwgbV9pZGVudCwgcjEpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByMSA9IGRz
dCA/IGRzdCA6IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcjAgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVCYXNlQW5kUHJvcGVydHkoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCByMS5nZXQoKSwgbV9pZGVudCk7CisgICAgZ2VuZXJhdG9yLmVtaXRQcmVE
ZWMocjEuZ2V0KCkpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dFByb3BJZChyMC5nZXQo
KSwgbV9pZGVudCwgcjEuZ2V0KCkpOwogfQogCiB2b2lkIFByZURlY1Jlc29sdmVOb2RlOjpvcHRp
bWl6ZVZhcmlhYmxlQWNjZXNzKEV4ZWNTdGF0ZSosIGNvbnN0IFN5bWJvbFRhYmxlJiBzeW1ib2xU
YWJsZSwgY29uc3QgTG9jYWxTdG9yYWdlJiBsb2NhbFN0b3JhZ2UsIE5vZGVTdGFjayYpCkBAIC00
MTAwLDkgKzQxMDAsOSBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRD
b2RlKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgICAgICByZXR1cm4g
ZHN0ID8gZ2VuZXJhdG9yLmVtaXRNb3ZlKGRzdCwgcjIpIDogcjI7CiAgICAgfQogCi0gICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlQmFzZShnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIG1faWRlbnQpOwogICAgIC8vIEZJWE1FOiBzaG91bGQgbm90IHdyaXRl
IHRlbXAgdmFsdWUgdG8gZHN0IGlmIGRzdCBpcyBhIGxvY2FsIQotICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByMSA9IGdlbmVyYXRvci5lbWl0R2V0UHJvcElkKGRzdCA/IGRzdCA6IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgcjAuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiByMSA9IGRzdCA/IGRzdCA6IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVCYXNlQW5kUHJvcGVydHkoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByMS5nZXQoKSwgbV9pZGVudCk7CiAgICAgUmVnaXN0ZXJJ
RCogcjIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9yaWdodC5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJ
RCogcjMgPSBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCByMS5nZXQoKSwgcjIs
IG1fb3BlcmF0b3IpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dFByb3BJZChyMC5nZXQo
KSwgbV9pZGVudCwgcjMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20544</attachid>
            <date>2008-04-14 22:10:03 -0700</date>
            <delta_ts>2008-04-15 01:23:44 -0700</delta_ts>
            <desc>Slightly updated</desc>
            <filename>exception-fu.patch</filename>
            <type>text/plain</type>
            <size>12923</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBjMWFlNWFjLi45MGU4MTA5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMDgtMDQtMTQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMTg0MzY6IE5lZWQg
dG8gdGhyb3cgZXhjZXB0aW9uIG9uIHJlYWQvbW9kaWZ5L3dyaXRlIG9yIHNpbWlsYXIgcmVzb2x2
ZSBmb3Igbm9uZXhpc3RlbnQgcHJvcGVydHkKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODQzNj4KKworICAgICAgICBBZGQgb3BfcmVzb2x2ZV9iYXNl
X2FuZF9wcm9wZXJ0eSBmb3IgcmVhZC9tb2RpZnkvd3JpdGUgb3BlcmF0aW9ucywKKyAgICAgICAg
Zml4IHJlc29sdmVCYXNlQW5kRnVuYyBzbyB0aGF0IGl0IGNvcnJlY3RseSB0aHJvd3MgYW4gZXhj
ZXB0aW9uLgorCisgICAgICAgIFRoZSByZWR1Y2VkIGRpc3BhdGNoIGNvc3QgZm9yIHJlc29sdmUg
bGVhZHMgdG8gYSBzdWJzdGFudGlhbCBwZXJmb3JtYW5jZSBnYWluIGluCisgICAgICAgIGxvb3At
ZW1wdHktcmVzb2x2ZSwgYnV0IG92ZXJhbGwgdGhpcyBpcyBvbmx5IGEgbW9kZXN0IHBlcmZvcm1h
bmNlIHdpbiAoYWRkaXRpb25hbAorICAgICAgICBleGNlcHRpb24gY2hlY2tzIGZvciBvcF9yZXNv
bHZlX2Jhc2VfYW5kX3Byb3BlcnR5IGFuZCBvcF9yZXNvbHZlX2Jhc2VfYW5kX2Z1bmMpCisgICAg
ICAgIGVhdCBhd2F5IHNvbWUgb2YgdGhlIHdpbiB0aGF0IHdvdWxkIG90aGVyd2lzZSBoYXZlIGJl
ZW4gbmVjZXNzYXJ5LgorCisgICAgICAgICogVk0vQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEtK
Uzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKiBWTS9Db2RlR2VuZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEtKUzo6Q29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVCYXNlQW5kUHJvcGVydHkpOgor
ICAgICAgICAqIFZNL0NvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBWTS9NYWNoaW5lLmNwcDoK
KyAgICAgICAgKEtKUzo6cmVzb2x2ZUJhc2VBbmRQcm9wZXJ0eSk6CisgICAgICAgIChLSlM6OnJl
c29sdmVCYXNlQW5kRnVuYyk6CisgICAgICAgIChLSlM6Ok1hY2hpbmU6OnVud2luZENhbGxGcmFt
ZSk6CisgICAgICAgIChLSlM6Ok1hY2hpbmU6OnByaXZhdGVFeGVjdXRlKToKKyAgICAgICAgKiBW
TS9PcGNvZGUuaDoKKyAgICAgICAgKiBranMvbm9kZXMuY3BwOgorICAgICAgICAoS0pTOjpQb3N0
SW5jUmVzb2x2ZU5vZGU6OmVtaXRDb2RlKToKKyAgICAgICAgKEtKUzo6UG9zdERlY1Jlc29sdmVO
b2RlOjplbWl0Q29kZSk6CisgICAgICAgIChLSlM6OlByZUluY1Jlc29sdmVOb2RlOjplbWl0Q29k
ZSk6CisgICAgICAgIChLSlM6OlByZURlY1Jlc29sdmVOb2RlOjplbWl0Q29kZSk6CisgICAgICAg
IChLSlM6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdENvZGUpOgorCiAyMDA4LTA0LTE0ICBN
YWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
T2xpdmVyLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvVk0vQ29kZUJsb2NrLmNwcCBiL0ph
dmFTY3JpcHRDb3JlL1ZNL0NvZGVCbG9jay5jcHAKaW5kZXggOTE2NzZlMi4uZjBkMGM4NyAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvVk0vQ29kZUJsb2NrLmNwcAorKysgYi9KYXZhU2NyaXB0
Q29yZS9WTS9Db2RlQmxvY2suY3BwCkBAIC0zMzMsNiArMzMzLDEzIEBAIHZvaWQgQ29kZUJsb2Nr
OjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3Rf
aXRlcmF0b3ImCiAgICAgICAgICAgICBwcmludGYoIlslNGRdIHJlc29sdmVfYmFzZVx0JXMsICVz
XG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKHIwKS5jX3N0cigpLCBpZE5hbWUoaWQwLCBpZGVu
dGlmaWVyc1tpZDBdKS5jX3N0cigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Cisg
ICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV9iYXNlX2FuZF9wcm9wZXJ0eTogeworICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIHByaW50ZigiWyU0ZF0gcmVzb2x2ZV9iYXNlX2FuZF9wcm9wZXJ0eVx0JXMsICVz
LCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShyMCkuY19zdHIoKSwgcmVnaXN0ZXJOYW1l
KHIxKS5jX3N0cigpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyc1tpZDBdKS5jX3N0cigpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV9iYXNl
X2FuZF9mdW5jOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvVk0vQ29kZUdlbmVyYXRvci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9WTS9Db2RlR2Vu
ZXJhdG9yLmNwcAppbmRleCAzNzdiZDFhLi4wZjZiNDNhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9WTS9Db2RlR2VuZXJhdG9yLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9WTS9Db2RlR2Vu
ZXJhdG9yLmNwcApAQCAtNjU1LDYgKzY1NSwxNSBAQCBSZWdpc3RlcklEKiBDb2RlR2VuZXJhdG9y
OjplbWl0UmVzb2x2ZUJhc2UoUmVnaXN0ZXJJRCogcjAsIGNvbnN0IElkZW50aWZpZXImIGlkZQog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChpZGVudCkpOwogICAgIHJldHVy
biByMDsKIH0KKyAgICAKK1JlZ2lzdGVySUQqIENvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlQmFz
ZUFuZFByb3BlcnR5KFJlZ2lzdGVySUQqIHIwLCBSZWdpc3RlcklEKiByMSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpCit7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1hY2hpbmUoKS5nZXRP
cGNvZGUob3BfcmVzb2x2ZV9iYXNlX2FuZF9wcm9wZXJ0eSkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChyMC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIxLT5pbmRl
eCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQoaWRlbnQpKTsKKyAg
ICByZXR1cm4gcjA7Cit9CiAKIFJlZ2lzdGVySUQqIENvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZl
QmFzZUFuZEZ1bmMoUmVnaXN0ZXJJRCogcjAsIFJlZ2lzdGVySUQqIHIxLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCkKIHsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5lcmF0
b3IuaCBiL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3IuaAppbmRleCA2NDZmY2QzLi4y
NzRmMjljIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9WTS9Db2RlR2VuZXJhdG9yLmgKKysr
IGIvSmF2YVNjcmlwdENvcmUvVk0vQ29kZUdlbmVyYXRvci5oCkBAIC0xNTEsNiArMTUxLDcgQEAg
bmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlQmFzZShSZWdp
c3RlcklEKiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVz
b2x2ZUJhc2UoUmVnaXN0ZXJJRCosIGludCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNv
bHZlQmFzZShSZWdpc3RlcklEKiwgaW50LCBpbnQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0
UmVzb2x2ZUJhc2VBbmRQcm9wZXJ0eShSZWdpc3RlcklEKiwgUmVnaXN0ZXJJRCosIGNvbnN0IElk
ZW50aWZpZXImKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmVCYXNlQW5kRnVuYyhS
ZWdpc3RlcklEKiwgUmVnaXN0ZXJJRCosIGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgCiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQcm9wSWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJik7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9WTS9NYWNoaW5lLmNwcCBiL0phdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwCmluZGV4IDY3
N2EwZTMuLmI2NjU2MzAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3Bw
CisrKyBiL0phdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwCkBAIC0yODAsNyArMjgwLDM3IEBA
IHN0YXRpYyB2b2lkIE5FVkVSX0lOTElORSByZXNvbHZlQmFzZShFeGVjU3RhdGUqIGV4ZWMsIElu
c3RydWN0aW9uKiB2UEMsIFJlZ2lzdGVyCiAgICAgcltyMF0udS5qc1ZhbHVlID0gYmFzZTsKIH0K
IAotc3RhdGljIHZvaWQgTkVWRVJfSU5MSU5FIHJlc29sdmVCYXNlQW5kRnVuYyhFeGVjU3RhdGUq
IGV4ZWMsIEluc3RydWN0aW9uKiB2UEMsIFJlZ2lzdGVyKiByLCBTY29wZUNoYWluKiBzY29wZUNo
YWluLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3N0YXRpYyBib29sIE5FVkVSX0lOTElORSByZXNv
bHZlQmFzZUFuZFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHZQQywgUmVn
aXN0ZXIqIHIsIFNjb3BlQ2hhaW4qIHNjb3BlQ2hhaW4sIENvZGVCbG9jayogY29kZUJsb2NrLCBK
U1ZhbHVlKiYgZXhjZXB0aW9uVmFsdWUpCit7CisgICAgaW50IHIwID0gKHZQQyArIDEpLT51Lm9w
ZXJhbmQ7CisgICAgaW50IHIxID0gKHZQQyArIDIpLT51Lm9wZXJhbmQ7CisgICAgaW50IGlkMCA9
ICh2UEMgKyAzKS0+dS5vcGVyYW5kOworICAgIAorICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVy
ID0gc2NvcGVDaGFpbi0+YmVnaW4oKTsKKyAgICBTY29wZUNoYWluSXRlcmF0b3IgZW5kID0gc2Nv
cGVDaGFpbi0+ZW5kKCk7CisgICAgCisgICAgLy8gRklYTUU6IGFkZCBzY29wZURlcHRoSXNaZXJv
IG9wdGltaXphdGlvbgorICAgIAorICAgIEFTU0VSVChpdGVyICE9IGVuZCk7CisgICAgCisgICAg
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlk
ZW50aWZpZXJzW2lkMF07CisgICAgSlNPYmplY3QqIGJhc2U7CisgICAgZG8geworICAgICAgICBi
YXNlID0gKml0ZXI7CisgICAgICAgIGlmIChiYXNlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRl
bnQsIHNsb3QpKSB7ICAgICAgICAgICAgCisgICAgICAgICAgICByW3IwXS51LmpzVmFsdWUgPSBi
YXNlOworICAgICAgICAgICAgcltyMV0udS5qc1ZhbHVlID0gc2xvdC5nZXRWYWx1ZShleGVjLCBi
YXNlLCBpZGVudCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICArK2l0ZXI7CisgICAgfSB3aGlsZSAoaXRlciAhPSBlbmQpOworICAgIAorICAgIGV4Y2VwdGlv
blZhbHVlID0gY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgYm9vbCBORVZFUl9JTkxJTkUgcmVzb2x2ZUJhc2VB
bmRGdW5jKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHZQQywgUmVnaXN0ZXIqIHIsIFNj
b3BlQ2hhaW4qIHNjb3BlQ2hhaW4sIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlKiYgZXhj
ZXB0aW9uVmFsdWUpCiB7CiAgICAgaW50IHIwID0gKHZQQyArIDEpLT51Lm9wZXJhbmQ7CiAgICAg
aW50IHIxID0gKHZQQyArIDIpLT51Lm9wZXJhbmQ7CkBAIC0zMTEsMTIgKzM0MSwxMyBAQCBzdGF0
aWMgdm9pZCBORVZFUl9JTkxJTkUgcmVzb2x2ZUJhc2VBbmRGdW5jKEV4ZWNTdGF0ZSogZXhlYywg
SW5zdHJ1Y3Rpb24qIHZQQywgUgogICAgICAgICAgICAgCiAgICAgICAgICAgICByW3IwXS51Lmpz
VmFsdWUgPSB0aGlzT2JqOwogICAgICAgICAgICAgcltyMV0udS5qc1ZhbHVlID0gc2xvdC5nZXRW
YWx1ZShleGVjLCBiYXNlLCBpZGVudCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICArK2l0ZXI7CiAgICAgfSB3aGlsZSAo
aXRlciAhPSBlbmQpOwogICAgIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBGSVhNRTog
dGhyb3cgYW4gdW5kZWZpbmVkIHZhcmlhYmxlIGV4Y2VwdGlvbgorICAgIGV4Y2VwdGlvblZhbHVl
ID0gY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCk7CisgICAgcmV0dXJu
IGZhbHNlOwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgaW5pdGlhbGl6ZUNhbGxGcmFtZShSZWdp
c3RlciogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIHZQQywg
U2NvcGVDaGFpbiogc2NvcGVDaGFpbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgcmV0dXJuVmFs
dWVSZWdpc3RlciwgaW50IGFyZ3YsIGludCBjYWxsZWRBc0NvbnN0cnVjdG9yKQpAQCAtMzkxLDcg
KzQyMiw3IEBAIE5FVkVSX0lOTElORSBJbnN0cnVjdGlvbiogTWFjaGluZTo6dW53aW5kQ2FsbEZy
YW1lKENvZGVCbG9jayomIGNvZGVCbG9jaywgSlNWYWx1CiAgICAgCiAgICAgaWYgKG9sZENvZGVC
bG9jay0+bmVlZHNBY3RpdmF0aW9uKSB7CiAgICAgICAgIC8vIEZpbmQgdGhlIGZ1bmN0aW9ucyBh
Y3RpdmF0aW9uIGluIHRoZSBzY29wZSBjaGFpbgotICAgICAgICBTY29wZUNoYWluSXRlcmF0b3Ig
aXRlciA9IHNjb3BlQ2hhaW4tPmJlZ2luKCk7IAorICAgICAgICBTY29wZUNoYWluSXRlcmF0b3Ig
aXRlciA9IHNjb3BlQ2hhaW4tPmJlZ2luKCk7CiAgICAgICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBl
bmQgPSBzY29wZUNoYWluLT5lbmQoKTsKICAgICAgICAgd2hpbGUgKCEoKCppdGVyKS0+aXNBY3Rp
dmF0aW9uT2JqZWN0KCkpKSB7CiAgICAgICAgICAgICArK2l0ZXI7CkBAIC04NjYsMTAgKzg5Nywy
MCBAQCBKU1ZhbHVlKiBNYWNoaW5lOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcs
IEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJGaQogCiAgICAgICAgIE5FWFRfT1BDT0RFOwogICAg
IH0KLSAgICBCRUdJTl9PUENPREUob3BfcmVzb2x2ZV9iYXNlX2FuZF9mdW5jKSB7Ci0gICAgICAg
IHJlc29sdmVCYXNlQW5kRnVuYyhleGVjLCB2UEMsIHIsIHNjb3BlQ2hhaW4sIGNvZGVCbG9jayk7
CisgICAgQkVHSU5fT1BDT0RFKG9wX3Jlc29sdmVfYmFzZV9hbmRfcHJvcGVydHkpIHsKKyAgICAg
ICAgaWYgKFVOTElLRUxZKCFyZXNvbHZlQmFzZUFuZFByb3BlcnR5KGV4ZWMsIHZQQywgciwgc2Nv
cGVDaGFpbiwgY29kZUJsb2NrLCBleGNlcHRpb25WYWx1ZSkpKQorICAgICAgICAgICAgZ290byBp
bnRlcm5hbF90aHJvdzsKKwogICAgICAgICB2UEMgKz0gNDsKKyAgICAgICAgCisgICAgICAgIE5F
WFRfT1BDT0RFOworICAgIH0KKyAgICBCRUdJTl9PUENPREUob3BfcmVzb2x2ZV9iYXNlX2FuZF9m
dW5jKSB7CisgICAgICAgIGlmIChVTkxJS0VMWSghcmVzb2x2ZUJhc2VBbmRGdW5jKGV4ZWMsIHZQ
Qywgciwgc2NvcGVDaGFpbiwgY29kZUJsb2NrLCBleGNlcHRpb25WYWx1ZSkpKQorICAgICAgICAg
ICAgZ290byBpbnRlcm5hbF90aHJvdzsKIAorICAgICAgICB2UEMgKz0gNDsKKyAgICAgICAgCiAg
ICAgICAgIE5FWFRfT1BDT0RFOwogICAgIH0KICAgICBCRUdJTl9PUENPREUob3BfZ2V0X3Byb3Bf
aWQpIHsKQEAgLTkyOSw3ICs5NzAsNyBAQCBKU1ZhbHVlKiBNYWNoaW5lOjpwcml2YXRlRXhlY3V0
ZShFeGVjdXRpb25GbGFnIGZsYWcsIEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJGaQogICAgICAg
ICAgICAgVk1fQ0hFQ0tfRVhDRVBUSU9OKCk7IC8vIElmIHRvT2JqZWN0IHRocmV3LCB3ZSBtdXN0
IG5vdCBjYWxsIHRvU3RyaW5nLCB3aGljaCBtYXkgZXhlY3V0ZSBhcmJpdHJhcnkgY29kZQogICAg
ICAgICAgICAgcltyMF0udS5qc1ZhbHVlID0gYmFzZS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoc3Vi
c2NyaXB0LT50b1N0cmluZyhleGVjKSkpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAg
IFZNX0NIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICArK3ZQQzsKICAgICAgICAgTkVYVF9PUENP
REU7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9WTS9PcGNvZGUuaCBiL0phdmFTY3JpcHRD
b3JlL1ZNL09wY29kZS5oCmluZGV4IDk3ZDk1YTQuLmJiZjBlZmIgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL1ZNL09wY29kZS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL1ZNL09wY29kZS5oCkBA
IC03Nyw2ICs3Nyw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBcCiAgICAgICAgIG1hY3Jv
KG9wX3Jlc29sdmUpIFwKICAgICAgICAgbWFjcm8ob3BfcmVzb2x2ZV9iYXNlKSBcCisgICAgICAg
IG1hY3JvKG9wX3Jlc29sdmVfYmFzZV9hbmRfcHJvcGVydHkpIFwKICAgICAgICAgbWFjcm8ob3Bf
cmVzb2x2ZV9iYXNlX2FuZF9mdW5jKSBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9wcm9wX2lkKSBc
CiAgICAgICAgIG1hY3JvKG9wX3B1dF9wcm9wX2lkKSBcCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9ranMvbm9kZXMuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcAppbmRleCAy
YWYyODFjLi43ZWZmODRhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3Bw
CisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAKQEAgLTE3MDYsOCArMTcwNiw4IEBA
IFJlZ2lzdGVySUQqIFBvc3RJbmNSZXNvbHZlTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkCiAgICAgaWYgKFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJh
dG9yLnJlZ2lzdGVyRm9yTG9jYWwobV9pZGVudCkpCiAgICAgICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdFBvc3RJbmMoZHN0ID8gZHN0IDogZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByMCk7CiAK
LSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVCYXNlKGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgbV9pZGVudCk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHIxID0gZ2VuZXJhdG9yLmVtaXRHZXRQcm9wSWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBy
MC5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIxID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByMCA9IGdlbmVyYXRvci5l
bWl0UmVzb2x2ZUJhc2VBbmRQcm9wZXJ0eShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHIxLmdl
dCgpLCBtX2lkZW50KTsKICAgICBSZWdpc3RlcklEKiByMiA9IGdlbmVyYXRvci5lbWl0UG9zdElu
Yyhkc3QgPyBkc3QgOiBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHIxLmdldCgpKTsKICAgICBn
ZW5lcmF0b3IuZW1pdFB1dFByb3BJZChyMC5nZXQoKSwgbV9pZGVudCwgcjEuZ2V0KCkpOwogICAg
IHJldHVybiByMjsKQEAgLTE3ODYsOCArMTc4Niw4IEBAIFJlZ2lzdGVySUQqIFBvc3REZWNSZXNv
bHZlTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
CiAgICAgaWYgKFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLnJlZ2lzdGVyRm9yTG9jYWwobV9p
ZGVudCkpCiAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFBvc3REZWMoZHN0ID8gZHN0IDog
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByMCk7CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cjAgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVCYXNlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
bV9pZGVudCk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIxID0gZ2VuZXJhdG9yLmVtaXRHZXRQ
cm9wSWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByMC5nZXQoKSwgbV9pZGVudCk7CisgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHIxID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiByMCA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZUJhc2VBbmRQcm9wZXJ0
eShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHIxLmdldCgpLCBtX2lkZW50KTsKICAgICBSZWdp
c3RlcklEKiByMiA9IGdlbmVyYXRvci5lbWl0UG9zdERlYyhkc3QgPyBkc3QgOiBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHIxLmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dFByb3BJZChy
MC5nZXQoKSwgbV9pZGVudCwgcjEuZ2V0KCkpOwogICAgIHJldHVybiByMjsKQEAgLTIyOTYsMTEg
KzIyOTYsMTEgQEAgUmVnaXN0ZXJJRCogUHJlSW5jUmVzb2x2ZU5vZGU6OmVtaXRDb2RlKENvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIHsKICAgICBpZiAoUmVnaXN0ZXJJ
RCogcjAgPSBnZW5lcmF0b3IucmVnaXN0ZXJGb3JMb2NhbChtX2lkZW50KSkKICAgICAgICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0UHJlSW5jKHIwKTsKLQotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBy
MCA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZUJhc2UoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBt
X2lkZW50KTsKLSAgICBSZWdpc3RlcklEKiByMSA9IGdlbmVyYXRvci5lbWl0R2V0UHJvcElkKGRz
dCA/IGRzdCA6IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcjAuZ2V0KCksIG1faWRlbnQpOwot
ICAgIGdlbmVyYXRvci5lbWl0UHJlSW5jKHIxKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQ
dXRQcm9wSWQocjAuZ2V0KCksIG1faWRlbnQsIHIxKTsKKyAgICAKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcjEgPSBkc3QgPyBkc3QgOiBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlQmFzZUFuZFByb3BlcnR5
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcjEuZ2V0KCksIG1faWRlbnQpOworICAgIGdlbmVy
YXRvci5lbWl0UHJlSW5jKHIxLmdldCgpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRQ
cm9wSWQocjAuZ2V0KCksIG1faWRlbnQsIHIxLmdldCgpKTsKIH0KIAogdm9pZCBQcmVJbmNSZXNv
bHZlTm9kZTo6b3B0aW1pemVWYXJpYWJsZUFjY2VzcyhFeGVjU3RhdGUqLCBjb25zdCBTeW1ib2xU
YWJsZSYgc3ltYm9sVGFibGUsIGNvbnN0IExvY2FsU3RvcmFnZSYgbG9jYWxTdG9yYWdlLCBOb2Rl
U3RhY2smKQpAQCAtMjM2MCwxMCArMjM2MCwxMCBAQCBSZWdpc3RlcklEKiBQcmVEZWNSZXNvbHZl
Tm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwog
ICAgIGlmIChSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5yZWdpc3RlckZvckxvY2FsKG1faWRl
bnQpKQogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQcmVEZWMocjApOwogCi0gICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlQmFzZShnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIG1faWRlbnQpOwotICAgIFJlZ2lzdGVySUQqIHIxID0gZ2VuZXJhdG9y
LmVtaXRHZXRQcm9wSWQoZHN0ID8gZHN0IDogZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByMC5n
ZXQoKSwgbV9pZGVudCk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRQcmVEZWMocjEpOwotICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdFB1dFByb3BJZChyMC5nZXQoKSwgbV9pZGVudCwgcjEpOworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiByMSA9IGRzdCA/IGRzdCA6IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVCYXNl
QW5kUHJvcGVydHkoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByMS5nZXQoKSwgbV9pZGVudCk7
CisgICAgZ2VuZXJhdG9yLmVtaXRQcmVEZWMocjEuZ2V0KCkpOworICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdFB1dFByb3BJZChyMC5nZXQoKSwgbV9pZGVudCwgcjEuZ2V0KCkpOwogfQogCiB2b2lk
IFByZURlY1Jlc29sdmVOb2RlOjpvcHRpbWl6ZVZhcmlhYmxlQWNjZXNzKEV4ZWNTdGF0ZSosIGNv
bnN0IFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSwgY29uc3QgTG9jYWxTdG9yYWdlJiBsb2NhbFN0
b3JhZ2UsIE5vZGVTdGFjayYpCkBAIC00MDkzLDkgKzQwOTMsOSBAQCBSZWdpc3RlcklEKiBSZWFk
TW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRDb2RlKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRAogICAgICAgICByZXR1cm4gZHN0ID8gZ2VuZXJhdG9yLmVtaXRNb3ZlKGRzdCwgcjIp
IDogcjI7CiAgICAgfQogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlQmFzZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIG1faWRlbnQpOwogICAgIC8v
IEZJWE1FOiBzaG91bGQgbm90IHdyaXRlIHRlbXAgdmFsdWUgdG8gZHN0IGlmIGRzdCBpcyBhIGxv
Y2FsIQotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByMSA9IGdlbmVyYXRvci5lbWl0R2V0UHJvcElk
KGRzdCA/IGRzdCA6IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcjAuZ2V0KCksIG1faWRlbnQp
OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByMSA9IGRzdCA/IGRzdCA6IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdFJl
c29sdmVCYXNlQW5kUHJvcGVydHkoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByMS5nZXQoKSwg
bV9pZGVudCk7CiAgICAgUmVnaXN0ZXJJRCogcjIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9yaWdo
dC5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCogcjMgPSBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQo
Z2VuZXJhdG9yLCByMS5nZXQoKSwgcjIsIG1fb3BlcmF0b3IpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdFB1dFByb3BJZChyMC5nZXQoKSwgbV9pZGVudCwgcjMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20547</attachid>
            <date>2008-04-15 01:23:44 -0700</date>
            <delta_ts>2008-04-15 02:07:37 -0700</delta_ts>
            <desc>Stripping everything unrelated to this bug</desc>
            <filename>exceptions.patch</filename>
            <type>text/plain</type>
            <size>10881</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA3MjdiYzA0Li4zMDBhYWM2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMDgtMDQtMTUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMTg0MzY6IE5lZWQg
dG8gdGhyb3cgZXhjZXB0aW9uIG9uIHJlYWQvbW9kaWZ5L3dyaXRlIG9yIHNpbWlsYXIgcmVzb2x2
ZSBmb3Igbm9uZXhpc3RlbnQgcHJvcGVydHkKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODQzNj4KKworICAgICAgICBBZGQgb3BfcmVzb2x2ZV9iYXNl
X2FuZF9wcm9wZXJ0eSBmb3IgcmVhZC9tb2RpZnkvd3JpdGUgb3BlcmF0aW9ucywKKyAgICAgICAg
dGhpcyBhZGRzIGEgInN1cGVyaW5zdHJ1Y3Rpb24iIHRvIHJlc29sdmUgdGhlIGJhc2UgYW5kIHZh
bHVlIG9mIGEKKyAgICAgICAgcHJvcGVydHkgc2ltdWx0YW5lb3VzbHkuICBKdXN0IHVzaW5nIHJl
c29sdmVCYXNlIGFuZCByZXNvbHZlIHJlc3VsdHMgCisgICAgICAgIGluIGFuIDUlIHJlZ3Jlc3Np
b24gaW4gdWJlbmNoLCAzMCUgaW4gbG9vcC1lbXB0eS1yZXNvbHZlICh3aGljaCBpcyAKKyAgICAg
ICAgZXhwZWN0ZWQpLiAgMS4zJSBwcm9ncmVzc2lvbiBpbiBzdW5zcGlkZXIsIDIuMSUgaW4gdWJl
bmNoLCB3aXRoIGEgCisgICAgICAgIDIxJSBnYWluIGluIGxvb3AtZW1wdHktcmVzb2x2ZS4gIFRo
ZSBvbmx5IG91dGxpZXIgaXMgZnVuY3Rpb24tbWlzc2luZy1hcmdzCisgICAgICAgIHdoaWNoIGdl
dHMgYSAzJSByZWdyZXNzaW9uIHRoYXQgSSBjb3VsZCBuZXZlciByZXNvbHZlLgorCisgICAgICAg
ICogVk0vQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEtKUzo6Q29kZUJsb2NrOjpkdW1wKToKKyAg
ICAgICAgKiBWTS9Db2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEtKUzo6Q29kZUdlbmVyYXRv
cjo6ZW1pdFJlc29sdmVCYXNlQW5kUHJvcGVydHkpOgorICAgICAgICAqIFZNL0NvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKiBWTS9NYWNoaW5lLmNwcDoKKyAgICAgICAgKEtKUzo6cmVzb2x2ZUJh
c2VBbmRQcm9wZXJ0eSk6CisgICAgICAgIChLSlM6Ok1hY2hpbmU6OnByaXZhdGVFeGVjdXRlKToK
KyAgICAgICAgKiBWTS9PcGNvZGUuaDoKKyAgICAgICAgKiBranMvbm9kZXMuY3BwOgorICAgICAg
ICAoS0pTOjpQb3N0SW5jUmVzb2x2ZU5vZGU6OmVtaXRDb2RlKToKKyAgICAgICAgKEtKUzo6UG9z
dERlY1Jlc29sdmVOb2RlOjplbWl0Q29kZSk6CisgICAgICAgIChLSlM6OlByZUluY1Jlc29sdmVO
b2RlOjplbWl0Q29kZSk6CisgICAgICAgIChLSlM6OlByZURlY1Jlc29sdmVOb2RlOjplbWl0Q29k
ZSk6CisgICAgICAgIChLSlM6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdENvZGUpOgorCiAy
MDA4LTA0LTE0ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9WTS9D
b2RlQmxvY2suY3BwIGIvSmF2YVNjcmlwdENvcmUvVk0vQ29kZUJsb2NrLmNwcAppbmRleCA5MTY3
NmUyLi5mMGQwYzg3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9WTS9Db2RlQmxvY2suY3Bw
CisrKyBiL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVCbG9jay5jcHAKQEAgLTMzMyw2ICszMzMsMTMg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBWZWN0b3I8SW5z
dHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYKICAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcmVz
b2x2ZV9iYXNlXHQlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUocjApLmNfc3RyKCks
IGlkTmFtZShpZDAsIGlkZW50aWZpZXJzW2lkMF0pLmNfc3RyKCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9yZXNvbHZlX2Jhc2VfYW5kX3Byb3BlcnR5
OiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAg
IGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSByZXNvbHZlX2Jhc2VfYW5k
X3Byb3BlcnR5XHQlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKHIwKS5jX3N0
cigpLCByZWdpc3Rlck5hbWUocjEpLmNfc3RyKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXJzW2lk
MF0pLmNfc3RyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9yZXNvbHZlX2Jhc2VfYW5kX2Z1bmM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9WTS9Db2RlR2VuZXJhdG9yLmNwcCBiL0phdmFTY3Jp
cHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDM3N2JkMWEuLjBmNmI0M2EgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3IuY3BwCisrKyBiL0phdmFTY3Jp
cHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3IuY3BwCkBAIC02NTUsNiArNjU1LDE1IEBAIFJlZ2lzdGVy
SUQqIENvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlQmFzZShSZWdpc3RlcklEKiByMCwgY29uc3Qg
SWRlbnRpZmllciYgaWRlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KGlk
ZW50KSk7CiAgICAgcmV0dXJuIHIwOwogfQorICAgIAorUmVnaXN0ZXJJRCogQ29kZUdlbmVyYXRv
cjo6ZW1pdFJlc29sdmVCYXNlQW5kUHJvcGVydHkoUmVnaXN0ZXJJRCogcjAsIFJlZ2lzdGVySUQq
IHIxLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobWFjaGluZSgpLmdldE9wY29kZShvcF9yZXNvbHZlX2Jhc2VfYW5kX3Byb3BlcnR5KSk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIwLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQocjEtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25z
dGFudChpZGVudCkpOworICAgIHJldHVybiByMDsKK30KIAogUmVnaXN0ZXJJRCogQ29kZUdlbmVy
YXRvcjo6ZW1pdFJlc29sdmVCYXNlQW5kRnVuYyhSZWdpc3RlcklEKiByMCwgUmVnaXN0ZXJJRCog
cjEsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvVk0vQ29kZUdlbmVyYXRvci5oIGIvSmF2YVNjcmlwdENvcmUvVk0vQ29kZUdlbmVyYXRvci5o
CmluZGV4IDY0NmZjZDMuLjI3NGYyOWMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL1ZNL0Nv
ZGVHZW5lcmF0b3IuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9WTS9Db2RlR2VuZXJhdG9yLmgKQEAg
LTE1MSw2ICsxNTEsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFJlc29sdmVCYXNlKFJlZ2lzdGVySUQqLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRSZXNvbHZlQmFzZShSZWdpc3RlcklEKiwgaW50KTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdFJlc29sdmVCYXNlKFJlZ2lzdGVySUQqLCBpbnQsIGludCk7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlQmFzZUFuZFByb3BlcnR5KFJlZ2lzdGVySUQqLCBSZWdp
c3RlcklEKiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVz
b2x2ZUJhc2VBbmRGdW5jKFJlZ2lzdGVySUQqLCBSZWdpc3RlcklEKiwgY29uc3QgSWRlbnRpZmll
ciYpOwogICAgICAgICAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFByb3BJZChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImKTsKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwIGIvSmF2YVNjcmlwdENvcmUvVk0vTWFj
aGluZS5jcHAKaW5kZXggNjc3YTBlMy4uYWM4OWVhNyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvVk0vTWFjaGluZS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvVk0vTWFjaGluZS5jcHAKQEAg
LTI4MCw2ICsyODAsMzYgQEAgc3RhdGljIHZvaWQgTkVWRVJfSU5MSU5FIHJlc29sdmVCYXNlKEV4
ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHZQQywgUmVnaXN0ZXIKICAgICByW3IwXS51Lmpz
VmFsdWUgPSBiYXNlOwogfQogCitzdGF0aWMgYm9vbCBORVZFUl9JTkxJTkUgcmVzb2x2ZUJhc2VB
bmRQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiB2UEMsIFJlZ2lzdGVyKiBy
LCBTY29wZUNoYWluKiBzY29wZUNoYWluLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSom
IGV4Y2VwdGlvblZhbHVlKQoreworICAgIGludCByMCA9ICh2UEMgKyAxKS0+dS5vcGVyYW5kOwor
ICAgIGludCByMSA9ICh2UEMgKyAyKS0+dS5vcGVyYW5kOworICAgIGludCBpZDAgPSAodlBDICsg
MyktPnUub3BlcmFuZDsKKyAgICAKKyAgICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IHNjb3Bl
Q2hhaW4tPmJlZ2luKCk7CisgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IHNjb3BlQ2hhaW4t
PmVuZCgpOworICAgIAorICAgIC8vIEZJWE1FOiBhZGQgc2NvcGVEZXB0aElzWmVybyBvcHRpbWl6
YXRpb24KKyAgICAKKyAgICBBU1NFUlQoaXRlciAhPSBlbmQpOworICAgIAorICAgIFByb3BlcnR5
U2xvdCBzbG90OworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVy
c1tpZDBdOworICAgIEpTT2JqZWN0KiBiYXNlOworICAgIGRvIHsKKyAgICAgICAgYmFzZSA9ICpp
dGVyOworICAgICAgICBpZiAoYmFzZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90
KSkgeyAgICAgICAgICAgIAorICAgICAgICAgICAgcltyMF0udS5qc1ZhbHVlID0gYmFzZTsKKyAg
ICAgICAgICAgIHJbcjFdLnUuanNWYWx1ZSA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgYmFzZSwgaWRl
bnQpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgKytpdGVy
OworICAgIH0gd2hpbGUgKGl0ZXIgIT0gZW5kKTsKKyAgICAKKyAgICBleGNlcHRpb25WYWx1ZSA9
IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpOworICAgIHJldHVybiBm
YWxzZTsKK30KKwogc3RhdGljIHZvaWQgTkVWRVJfSU5MSU5FIHJlc29sdmVCYXNlQW5kRnVuYyhF
eGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiB2UEMsIFJlZ2lzdGVyKiByLCBTY29wZUNoYWlu
KiBzY29wZUNoYWluLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBpbnQgcjAgPSAodlBD
ICsgMSktPnUub3BlcmFuZDsKQEAgLTg2Niw2ICs4OTYsMTQgQEAgSlNWYWx1ZSogTWFjaGluZTo6
cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lz
dGVyRmkKIAogICAgICAgICBORVhUX09QQ09ERTsKICAgICB9CisgICAgQkVHSU5fT1BDT0RFKG9w
X3Jlc29sdmVfYmFzZV9hbmRfcHJvcGVydHkpIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFyZXNv
bHZlQmFzZUFuZFByb3BlcnR5KGV4ZWMsIHZQQywgciwgc2NvcGVDaGFpbiwgY29kZUJsb2NrLCBl
eGNlcHRpb25WYWx1ZSkpKQorICAgICAgICAgICAgZ290byBpbnRlcm5hbF90aHJvdzsKKworICAg
ICAgICB2UEMgKz0gNDsKKyAgICAgICAgCisgICAgICAgIE5FWFRfT1BDT0RFOworICAgIH0KICAg
ICBCRUdJTl9PUENPREUob3BfcmVzb2x2ZV9iYXNlX2FuZF9mdW5jKSB7CiAgICAgICAgIHJlc29s
dmVCYXNlQW5kRnVuYyhleGVjLCB2UEMsIHIsIHNjb3BlQ2hhaW4sIGNvZGVCbG9jayk7CiAgICAg
ICAgIHZQQyArPSA0OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvVk0vT3Bjb2RlLmggYi9K
YXZhU2NyaXB0Q29yZS9WTS9PcGNvZGUuaAppbmRleCA5N2Q5NWE0Li5iYmYwZWZiIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9WTS9PcGNvZGUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9WTS9P
cGNvZGUuaApAQCAtNzcsNiArNzcsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgXAogICAg
ICAgICBtYWNybyhvcF9yZXNvbHZlKSBcCiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVfYmFzZSkg
XAorICAgICAgICBtYWNybyhvcF9yZXNvbHZlX2Jhc2VfYW5kX3Byb3BlcnR5KSBcCiAgICAgICAg
IG1hY3JvKG9wX3Jlc29sdmVfYmFzZV9hbmRfZnVuYykgXAogICAgICAgICBtYWNybyhvcF9nZXRf
cHJvcF9pZCkgXAogICAgICAgICBtYWNybyhvcF9wdXRfcHJvcF9pZCkgXApkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5j
cHAKaW5kZXggMmFmMjgxYy4uN2VmZjg0YSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUva2pz
L25vZGVzLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3BwCkBAIC0xNzA2LDgg
KzE3MDYsOCBAQCBSZWdpc3RlcklEKiBQb3N0SW5jUmVzb2x2ZU5vZGU6OmVtaXRDb2RlKENvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAogICAgIGlmIChSZWdpc3RlcklEKiBy
MCA9IGdlbmVyYXRvci5yZWdpc3RlckZvckxvY2FsKG1faWRlbnQpKQogICAgICAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRQb3N0SW5jKGRzdCA/IGRzdCA6IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgcjApOwogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2VuZXJhdG9yLmVtaXRSZXNv
bHZlQmFzZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIG1faWRlbnQpOwotICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByMSA9IGdlbmVyYXRvci5lbWl0R2V0UHJvcElkKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgcjAuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByMSA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBn
ZW5lcmF0b3IuZW1pdFJlc29sdmVCYXNlQW5kUHJvcGVydHkoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCByMS5nZXQoKSwgbV9pZGVudCk7CiAgICAgUmVnaXN0ZXJJRCogcjIgPSBnZW5lcmF0b3Iu
ZW1pdFBvc3RJbmMoZHN0ID8gZHN0IDogZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByMS5nZXQo
KSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQdXRQcm9wSWQocjAuZ2V0KCksIG1faWRlbnQsIHIxLmdl
dCgpKTsKICAgICByZXR1cm4gcjI7CkBAIC0xNzg2LDggKzE3ODYsOCBAQCBSZWdpc3RlcklEKiBQ
b3N0RGVjUmVzb2x2ZU5vZGU6OmVtaXRDb2RlKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZAogICAgIGlmIChSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5yZWdpc3RlckZv
ckxvY2FsKG1faWRlbnQpKQogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQb3N0RGVjKGRz
dCA/IGRzdCA6IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcjApOwogCi0gICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHIwID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlQmFzZShnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIG1faWRlbnQpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByMSA9IGdlbmVyYXRv
ci5lbWl0R2V0UHJvcElkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcjAuZ2V0KCksIG1faWRl
bnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByMSA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVCYXNl
QW5kUHJvcGVydHkoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByMS5nZXQoKSwgbV9pZGVudCk7
CiAgICAgUmVnaXN0ZXJJRCogcjIgPSBnZW5lcmF0b3IuZW1pdFBvc3REZWMoZHN0ID8gZHN0IDog
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByMS5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXRQcm9wSWQocjAuZ2V0KCksIG1faWRlbnQsIHIxLmdldCgpKTsKICAgICByZXR1cm4gcjI7CkBA
IC0yMjk2LDExICsyMjk2LDExIEBAIFJlZ2lzdGVySUQqIFByZUluY1Jlc29sdmVOb2RlOjplbWl0
Q29kZShDb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiB7CiAgICAgaWYg
KFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLnJlZ2lzdGVyRm9yTG9jYWwobV9pZGVudCkpCiAg
ICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFByZUluYyhyMCk7Ci0KLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVCYXNlKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgbV9pZGVudCk7Ci0gICAgUmVnaXN0ZXJJRCogcjEgPSBnZW5lcmF0b3IuZW1pdEdl
dFByb3BJZChkc3QgPyBkc3QgOiBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHIwLmdldCgpLCBt
X2lkZW50KTsKLSAgICBnZW5lcmF0b3IuZW1pdFByZUluYyhyMSk7Ci0gICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0UHV0UHJvcElkKHIwLmdldCgpLCBtX2lkZW50LCByMSk7CisgICAgCisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHIxID0gZHN0ID8gZHN0IDogZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByMCA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZUJhc2VB
bmRQcm9wZXJ0eShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHIxLmdldCgpLCBtX2lkZW50KTsK
KyAgICBnZW5lcmF0b3IuZW1pdFByZUluYyhyMS5nZXQoKSk7CisgICAgcmV0dXJuIGdlbmVyYXRv
ci5lbWl0UHV0UHJvcElkKHIwLmdldCgpLCBtX2lkZW50LCByMS5nZXQoKSk7CiB9CiAKIHZvaWQg
UHJlSW5jUmVzb2x2ZU5vZGU6Om9wdGltaXplVmFyaWFibGVBY2Nlc3MoRXhlY1N0YXRlKiwgY29u
c3QgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlLCBjb25zdCBMb2NhbFN0b3JhZ2UmIGxvY2FsU3Rv
cmFnZSwgTm9kZVN0YWNrJikKQEAgLTIzNjAsMTAgKzIzNjAsMTAgQEAgUmVnaXN0ZXJJRCogUHJl
RGVjUmVzb2x2ZU5vZGU6OmVtaXRDb2RlKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHMKICAgICBpZiAoUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IucmVnaXN0ZXJGb3JM
b2NhbChtX2lkZW50KSkKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHJlRGVjKHIwKTsK
IAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByMCA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZUJhc2Uo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBtX2lkZW50KTsKLSAgICBSZWdpc3RlcklEKiByMSA9
IGdlbmVyYXRvci5lbWl0R2V0UHJvcElkKGRzdCA/IGRzdCA6IGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgcjAuZ2V0KCksIG1faWRlbnQpOwotICAgIGdlbmVyYXRvci5lbWl0UHJlRGVjKHIxKTsK
LSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRQcm9wSWQocjAuZ2V0KCksIG1faWRlbnQsIHIx
KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjEgPSBkc3QgPyBkc3QgOiBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2VuZXJhdG9yLmVtaXRS
ZXNvbHZlQmFzZUFuZFByb3BlcnR5KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcjEuZ2V0KCks
IG1faWRlbnQpOworICAgIGdlbmVyYXRvci5lbWl0UHJlRGVjKHIxLmdldCgpKTsKKyAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRQdXRQcm9wSWQocjAuZ2V0KCksIG1faWRlbnQsIHIxLmdldCgpKTsK
IH0KIAogdm9pZCBQcmVEZWNSZXNvbHZlTm9kZTo6b3B0aW1pemVWYXJpYWJsZUFjY2VzcyhFeGVj
U3RhdGUqLCBjb25zdCBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUsIGNvbnN0IExvY2FsU3RvcmFn
ZSYgbG9jYWxTdG9yYWdlLCBOb2RlU3RhY2smKQpAQCAtNDA5Myw5ICs0MDkzLDkgQEAgUmVnaXN0
ZXJJRCogUmVhZE1vZGlmeVJlc29sdmVOb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQKICAgICAgICAgcmV0dXJuIGRzdCA/IGdlbmVyYXRvci5lbWl0TW92
ZShkc3QsIHIyKSA6IHIyOwogICAgIH0KIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByMCA9IGdl
bmVyYXRvci5lbWl0UmVzb2x2ZUJhc2UoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBtX2lkZW50
KTsKICAgICAvLyBGSVhNRTogc2hvdWxkIG5vdCB3cml0ZSB0ZW1wIHZhbHVlIHRvIGRzdCBpZiBk
c3QgaXMgYSBsb2NhbCEKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjEgPSBnZW5lcmF0b3IuZW1p
dEdldFByb3BJZChkc3QgPyBkc3QgOiBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHIwLmdldCgp
LCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjEgPSBkc3QgPyBkc3QgOiBnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2VuZXJh
dG9yLmVtaXRSZXNvbHZlQmFzZUFuZFByb3BlcnR5KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
cjEuZ2V0KCksIG1faWRlbnQpOwogICAgIFJlZ2lzdGVySUQqIHIyID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKG1fcmlnaHQuZ2V0KCkpOwogICAgIFJlZ2lzdGVySUQqIHIzID0gZW1pdFJlYWRNb2RpZnlB
c3NpZ25tZW50KGdlbmVyYXRvciwgcjEuZ2V0KCksIHIyLCBtX29wZXJhdG9yKTsKICAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRQdXRQcm9wSWQocjAuZ2V0KCksIG1faWRlbnQsIHIzKTsK
</data>
<flag name="review"
          id="8960"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>