<?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>15744</bug_id>
          
          <creation_ts>2007-10-28 21:34:35 -0700</creation_ts>
          <short_desc>Added FunctionCallResolveNode, PostfixResolveNode, and DeleteResolveNode to the AST transform</short_desc>
          <delta_ts>2007-10-28 22:43:43 -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>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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>
          
          <blocked>14868</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>59762</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-10-28 21:34:35 -0700</bug_when>
    <thetext>Subtask of bug 14868.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59763</commentid>
    <comment_count>1</comment_count>
      <attachid>16931</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-10-28 21:34:57 -0700</bug_when>
    <thetext>Created attachment 16931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59764</commentid>
    <comment_count>2</comment_count>
      <attachid>16931</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-28 22:03:09 -0700</bug_when>
    <thetext>Comment on attachment 16931
Patch

+JSValue* LocalVarDeleteNode::evaluate(ExecState* exec)

Unused parameter. Will warn when you merge with my settings.

+        , ident(ident)
+        , args(args.release())

These should both pass PlacementNewAdopt. See my recent patch for details.

Otherwise great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59767</commentid>
    <comment_count>3</comment_count>
      <attachid>16932</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-10-28 22:24:49 -0700</bug_when>
    <thetext>Created attachment 16932
Patch2

Factored ASSERT code out into canSkipLookup. Removed unused parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59768</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-10-28 22:25:06 -0700</bug_when>
    <thetext>Also used the right initializers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59769</commentid>
    <comment_count>5</comment_count>
      <attachid>16932</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-28 22:31:31 -0700</bug_when>
    <thetext>Comment on attachment 16932
Patch2

I&apos;m worried about warnings in release builds due to the unused function.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59771</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-10-28 22:43:43 -0700</bug_when>
    <thetext>Committed revision 27210, with an #if !ASSERT_DISABLED.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16931</attachid>
            <date>2007-10-28 21:34:57 -0700</date>
            <delta_ts>2007-10-28 22:24:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch-optimize-resolve.txt</filename>
            <type>text/plain</type>
            <size>12790</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjAy
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMDctMTAt
MjggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZGVkIEZ1bmN0aW9uQ2Fs
bFJlc29sdmVOb2RlLCBQb3N0Zml4UmVzb2x2ZU5vZGUsIGFuZCBEZWxldGVSZXNvbHZlTm9kZQor
ICAgICAgICB0byB0aGUgQVNUIHRyYW5zZm9tIHRoYXQgcmVwbGFjZXMgc2xvdyByZXNvbHZlIG5v
ZGVzIHdpdGggZmFzdCBsb2NhbCAKKyAgICAgICAgdmFyaWFibGUgYWx0ZXJuYXRpdmVzLgorICAg
ICAgICAKKyAgICAgICAgMi41JSBzcGVlZHVwIG9uIFN1blNwaWRlci4KKyAgICAgICAgCisgICAg
ICAgIEFsc28gYWRkZWQgc29tZSBtaXNzaW5nIGNvcHlyaWdodCBub3RpY2VzLgorICAgICAgICAK
KyAgICAgICAgKiBranMvbm9kZXMuY3BwOgorICAgICAgICAoS0pTOjpGdW5jdGlvbkNhbGxSZXNv
bHZlTm9kZTo6b3B0aW1pemVWYXJpYWJsZUFjY2Vzcyk6CisgICAgICAgIChLSlM6OkZ1bmN0aW9u
Q2FsbFJlc29sdmVOb2RlOjpldmFsdWF0ZSk6CisgICAgICAgIChLSlM6OkxvY2FsVmFyRnVuY3Rp
b25DYWxsTm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpQb3N0Zml4UmVzb2x2ZU5vZGU6
Om9wdGltaXplVmFyaWFibGVBY2Nlc3MpOgorICAgICAgICAoS0pTOjpQb3N0Zml4UmVzb2x2ZU5v
ZGU6OmV2YWx1YXRlKToKKyAgICAgICAgKEtKUzo6TG9jYWxWYXJQb3N0Zml4Tm9kZTo6ZXZhbHVh
dGUpOgorICAgICAgICAoS0pTOjpEZWxldGVSZXNvbHZlTm9kZTo6b3B0aW1pemVWYXJpYWJsZUFj
Y2Vzcyk6CisgICAgICAgIChLSlM6OkRlbGV0ZVJlc29sdmVOb2RlOjpldmFsdWF0ZSk6CisgICAg
ICAgIChLSlM6OkxvY2FsVmFyRGVsZXRlTm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAqIGtqcy9u
b2Rlcy5oOgorICAgICAgICAoS0pTOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6KToKKyAgICAg
ICAgKEtKUzo6TG9jYWxWYXJGdW5jdGlvbkNhbGxOb2RlOjpMb2NhbFZhckZ1bmN0aW9uQ2FsbE5v
ZGUpOgorICAgICAgICAoS0pTOjpQb3N0Zml4UmVzb2x2ZU5vZGU6Oik6CisgICAgICAgIChLSlM6
OkxvY2FsVmFyUG9zdGZpeE5vZGU6OkxvY2FsVmFyUG9zdGZpeE5vZGUpOgorICAgICAgICAoS0pT
OjpEZWxldGVSZXNvbHZlTm9kZTo6KToKKyAgICAgICAgKEtKUzo6TG9jYWxWYXJEZWxldGVOb2Rl
OjpMb2NhbFZhckRlbGV0ZU5vZGUpOgorCiAyMDA3LTEwLTI4ICBNYXJrIFJvd2UgIDxtcm93ZUBh
cHBsZS5jb20+CiAKICAgICAgICAgR3RrIGJ1aWxkIGZpeC4gIEFkZCBpbmNsdWRlIG9mIE1hdGhF
eHRyYXMuaC4KSW5kZXg6IGtqcy9mdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL2Z1bmN0
aW9uLmNwcAkocmV2aXNpb24gMjcxOTkpCisrKyBranMvZnVuY3Rpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00LDYgKzQsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAo
cG1rQHBvc3QuY29tKQogICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAy
MDA3IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKKyAqICBDb3B5cmln
aHQgKEMpIDIwMDcgTWFrcyBPcmxvdmljaAogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKSW5kZXg6IGtq
cy9mdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9mdW5jdGlvbi5oCShyZXZpc2lvbiAyNzE5
OSkKKysrIGtqcy9mdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsOCBAQAogLyoK
ICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQogICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6
d2FyaWNoQHV3YXRlcmxvby5jYSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrcyBPcmxvdmlj
aAogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKSW5kZXg6IGtqcy9ub2Rlcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0ga2pzL25vZGVzLmNwcAkocmV2aXNpb24gMjcyMDApCisrKyBranMvbm9kZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zLDYgKzMsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBL
ZWxseSAocG1rQHBvc3QuY29tKQogICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0
IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDcgTWFrcyBPcmxvdmljaAogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTY5NiwxNCArNjk3LDIzIEBAIEpTVmFsdWUgKkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZXZhbHVh
dGUKICAgcmV0dXJuIGZ1bmMtPmNhbGwoZXhlYywgdGhpc09iaiwgYXJnTGlzdCk7CiB9CiAKLXZv
aWQgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6Om9wdGltaXplVmFyaWFibGVBY2Nlc3MoRnVuY3Rp
b25Cb2R5Tm9kZSosIERlY2xhcmF0aW9uU3RhY2tzOjpOb2RlU3RhY2smIG5vZGVTdGFjaykKK3Zv
aWQgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6Om9wdGltaXplVmFyaWFibGVBY2Nlc3MoRnVuY3Rp
b25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBEZWNsYXJhdGlvblN0YWNrczo6Tm9kZVN0YWNrJiBu
b2RlU3RhY2spCiB7CiAgICAgbm9kZVN0YWNrLmFwcGVuZChhcmdzLmdldCgpKTsKKworICAgIHNp
emVfdCBpbmRleCA9IGZ1bmN0aW9uQm9keS0+c3ltYm9sVGFibGUoKS5nZXQoaWRlbnQudXN0cmlu
ZygpLnJlcCgpKTsKKyAgICBpZiAoaW5kZXggIT0gbWlzc2luZ1N5bWJvbE1hcmtlcigpKQorICAg
ICAgICBuZXcgKHRoaXMpIExvY2FsVmFyRnVuY3Rpb25DYWxsTm9kZSh0aGlzLCBpbmRleCk7CiB9
CiAKIC8vIEVDTUEgMTEuMi4zCiBKU1ZhbHVlICpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZXZh
bHVhdGUoRXhlY1N0YXRlICpleGVjKQogeworICAvLyBDaGVjayBmb3IgbWlzc2VkIG9wdGltaXph
dGlvbiBvcHBvcnR1bml0eS4KKyAgQVNTRVJUKGV4ZWMtPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25D
b2RlCisgICAgICAgICB8fCBleGVjLT52YXJpYWJsZU9iamVjdCgpICE9IGV4ZWMtPnNjb3BlQ2hh
aW4oKS50b3AoKSAKKyAgICAgICAgIHx8IChleGVjLT52YXJpYWJsZU9iamVjdCgpLT5pc0FjdGl2
YXRpb24oKSAmJiAhc3RhdGljX2Nhc3Q8QWN0aXZhdGlvbkltcCo+KGV4ZWMtPnZhcmlhYmxlT2Jq
ZWN0KCkpLT5zeW1ib2xUYWJsZSgpLmNvbnRhaW5zKGlkZW50LnVzdHJpbmcoKS5yZXAoKSkpKTsK
KwogICBjb25zdCBTY29wZUNoYWluJiBjaGFpbiA9IGV4ZWMtPnNjb3BlQ2hhaW4oKTsKICAgU2Nv
cGVDaGFpbkl0ZXJhdG9yIGl0ZXIgPSBjaGFpbi5iZWdpbigpOwogICBTY29wZUNoYWluSXRlcmF0
b3IgZW5kID0gY2hhaW4uZW5kKCk7CkBAIC03NTAsNiArNzYwLDI3IEBAIEpTVmFsdWUgKkZ1bmN0
aW9uQ2FsbFJlc29sdmVOb2RlOjpldmFsdWEKICAgcmV0dXJuIHRocm93VW5kZWZpbmVkVmFyaWFi
bGVFcnJvcihleGVjLCBpZGVudCk7CiB9CiAKK0pTVmFsdWUqIExvY2FsVmFyRnVuY3Rpb25DYWxs
Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFjdGl2YXRpb25JbXAqIHZh
cmlhYmxlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8QWN0aXZhdGlvbkltcCo+KGV4ZWMtPnZhcmlhYmxl
T2JqZWN0KCkpOworICAgIEFTU0VSVCh2YXJpYWJsZU9iamVjdC0+aXNBY3RpdmF0aW9uKCkpOwor
ICAgIEFTU0VSVCh2YXJpYWJsZU9iamVjdCA9PSBleGVjLT5zY29wZUNoYWluKCkudG9wKCkpOwor
CisgICAgSlNWYWx1ZSogdiA9IHZhcmlhYmxlT2JqZWN0LT5sb2NhbFN0b3JhZ2UoKVtpbmRleF0u
dmFsdWU7CisKKyAgICBpZiAoIXYtPmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKGV4ZWMsIFR5cGVFcnJvciwgIlZhbHVlICVzIChyZXN1bHQgb2YgZXhwcmVzc2lvbiAlcykg
aXMgbm90IG9iamVjdC4iLCB2LCBpZGVudCk7CisgICAgICAKKyAgICBKU09iamVjdCogZnVuYyA9
IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4odik7CisgICAgaWYgKCFmdW5jLT5pbXBsZW1lbnRzQ2Fs
bCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IsICJPYmplY3Qg
JXMgKHJlc3VsdCBvZiBleHByZXNzaW9uICVzKSBkb2VzIG5vdCBhbGxvdyBjYWxscy4iLCB2LCBp
ZGVudCk7CisgICAgICAKKyAgICBMaXN0IGFyZ0xpc3QgPSBhcmdzLT5ldmFsdWF0ZUxpc3QoZXhl
Yyk7CisgICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKKworICAgIHJldHVybiBmdW5jLT5jYWxs
KGV4ZWMsIGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRlcigpLT5nbG9iYWxPYmplY3QoKSwgYXJnTGlz
dCk7Cit9CisKIHZvaWQgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6Om9wdGltaXplVmFyaWFibGVB
Y2Nlc3MoRnVuY3Rpb25Cb2R5Tm9kZSosIERlY2xhcmF0aW9uU3RhY2tzOjpOb2RlU3RhY2smIG5v
ZGVTdGFjaykKIHsKICAgICBub2RlU3RhY2suYXBwZW5kKGFyZ3MuZ2V0KCkpOwpAQCAtODU4LDgg
Kzg4OSwyMCBAQCBKU1ZhbHVlICpGdW5jdGlvbkNhbGxEb3ROb2RlOjpldmFsdWF0ZShFCiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQb3N0Zml4UmVzb2x2ZU5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCit2b2lkIFBvc3RmaXhSZXNvbHZlTm9kZTo6
b3B0aW1pemVWYXJpYWJsZUFjY2VzcyhGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHksIERl
Y2xhcmF0aW9uU3RhY2tzOjpOb2RlU3RhY2smKQoreworICAgIHNpemVfdCBpbmRleCA9IGZ1bmN0
aW9uQm9keS0+c3ltYm9sVGFibGUoKS5nZXQobV9pZGVudC51c3RyaW5nKCkucmVwKCkpOworICAg
IGlmIChpbmRleCAhPSBtaXNzaW5nU3ltYm9sTWFya2VyKCkpCisgICAgICAgIG5ldyAodGhpcykg
TG9jYWxWYXJQb3N0Zml4Tm9kZSh0aGlzLCBpbmRleCk7Cit9CisKIEpTVmFsdWUgKlBvc3RmaXhS
ZXNvbHZlTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQogeworICAvLyBDaGVjayBmb3Ig
bWlzc2VkIG9wdGltaXphdGlvbiBvcHBvcnR1bml0eS4KKyAgQVNTRVJUKGV4ZWMtPmNvZGVUeXBl
KCkgIT0gRnVuY3Rpb25Db2RlCisgICAgICAgICB8fCBleGVjLT52YXJpYWJsZU9iamVjdCgpICE9
IGV4ZWMtPnNjb3BlQ2hhaW4oKS50b3AoKSAKKyAgICAgICAgIHx8IChleGVjLT52YXJpYWJsZU9i
amVjdCgpLT5pc0FjdGl2YXRpb24oKSAmJiAhc3RhdGljX2Nhc3Q8QWN0aXZhdGlvbkltcCo+KGV4
ZWMtPnZhcmlhYmxlT2JqZWN0KCkpLT5zeW1ib2xUYWJsZSgpLmNvbnRhaW5zKG1faWRlbnQudXN0
cmluZygpLnJlcCgpKSkpOworCiAgIGNvbnN0IFNjb3BlQ2hhaW4mIGNoYWluID0gZXhlYy0+c2Nv
cGVDaGFpbigpOwogICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IGNoYWluLmJlZ2luKCk7CiAg
IFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQgPSBjaGFpbi5lbmQoKTsKQEAgLTg4OCw2ICs5MzEsMTkg
QEAgSlNWYWx1ZSAqUG9zdGZpeFJlc29sdmVOb2RlOjpldmFsdWF0ZShFeAogICByZXR1cm4gdGhy
b3dVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIG1faWRlbnQpOwogfQogCitKU1ZhbHVlKiBM
b2NhbFZhclBvc3RmaXhOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQWN0
aXZhdGlvbkltcCogdmFyaWFibGVPYmplY3QgPSBzdGF0aWNfY2FzdDxBY3RpdmF0aW9uSW1wKj4o
ZXhlYy0+dmFyaWFibGVPYmplY3QoKSk7CisgICAgQVNTRVJUKHZhcmlhYmxlT2JqZWN0LT5pc0Fj
dGl2YXRpb24oKSk7CisgICAgQVNTRVJUKHZhcmlhYmxlT2JqZWN0ID09IGV4ZWMtPnNjb3BlQ2hh
aW4oKS50b3AoKSk7CisKKyAgICBKU1ZhbHVlKiogdiA9ICZ2YXJpYWJsZU9iamVjdC0+bG9jYWxT
dG9yYWdlKClbaW5kZXhdLnZhbHVlOworICAgIGRvdWJsZSBuID0gKCp2KS0+dG9OdW1iZXIoZXhl
Yyk7CisgICAgZG91YmxlIG5ld1ZhbHVlID0gKG1fb3BlciA9PSBPcFBsdXNQbHVzKSA/IG4gKyAx
IDogbiAtIDE7CisgICAgKnYgPSBqc051bWJlcihuZXdWYWx1ZSk7CisgICAgcmV0dXJuIGpzTnVt
YmVyKG4pOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUG9zdGZpeEJy
YWNrZXROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBQb3N0
Zml4QnJhY2tldE5vZGU6Om9wdGltaXplVmFyaWFibGVBY2Nlc3MoRnVuY3Rpb25Cb2R5Tm9kZSos
IERlY2xhcmF0aW9uU3RhY2tzOjpOb2RlU3RhY2smIG5vZGVTdGFjaykKQEAgLTk2OSwxMCArMTAy
NSwyMiBAQCBKU1ZhbHVlKiBQb3N0Zml4RXJyb3JOb2RlOjpldmFsdWF0ZShFeGVjCiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVSZXNvbHZlTm9kZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCit2b2lkIERlbGV0ZVJlc29sdmVOb2RlOjpvcHRp
bWl6ZVZhcmlhYmxlQWNjZXNzKEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgRGVjbGFy
YXRpb25TdGFja3M6Ok5vZGVTdGFjayYpCit7CisgICAgc2l6ZV90IGluZGV4ID0gZnVuY3Rpb25C
b2R5LT5zeW1ib2xUYWJsZSgpLmdldChtX2lkZW50LnVzdHJpbmcoKS5yZXAoKSk7CisgICAgaWYg
KGluZGV4ICE9IG1pc3NpbmdTeW1ib2xNYXJrZXIoKSkKKyAgICAgICAgbmV3ICh0aGlzKSBMb2Nh
bFZhckRlbGV0ZU5vZGUodGhpcyk7Cit9CisKIC8vIEVDTUEgMTEuNC4xCiAKIEpTVmFsdWUgKkRl
bGV0ZVJlc29sdmVOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCiB7CisgIC8vIENoZWNr
IGZvciBtaXNzZWQgb3B0aW1pemF0aW9uIG9wcG9ydHVuaXR5LgorICBBU1NFUlQoZXhlYy0+Y29k
ZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUKKyAgICAgICAgIHx8IGV4ZWMtPnZhcmlhYmxlT2JqZWN0
KCkgIT0gZXhlYy0+c2NvcGVDaGFpbigpLnRvcCgpIAorICAgICAgICAgfHwgKGV4ZWMtPnZhcmlh
YmxlT2JqZWN0KCktPmlzQWN0aXZhdGlvbigpICYmICFzdGF0aWNfY2FzdDxBY3RpdmF0aW9uSW1w
Kj4oZXhlYy0+dmFyaWFibGVPYmplY3QoKSktPnN5bWJvbFRhYmxlKCkuY29udGFpbnMobV9pZGVu
dC51c3RyaW5nKCkucmVwKCkpKSk7CisKICAgY29uc3QgU2NvcGVDaGFpbiYgY2hhaW4gPSBleGVj
LT5zY29wZUNoYWluKCk7CiAgIFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVyID0gY2hhaW4uYmVnaW4o
KTsKICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IGNoYWluLmVuZCgpOwpAQCAtOTk0LDYgKzEw
NjIsMTEgQEAgSlNWYWx1ZSAqRGVsZXRlUmVzb2x2ZU5vZGU6OmV2YWx1YXRlKEV4ZQogICByZXR1
cm4ganNCb29sZWFuKHRydWUpOwogfQogCitKU1ZhbHVlKiBMb2NhbFZhckRlbGV0ZU5vZGU6OmV2
YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4ganNCb29sZWFuKGZhbHNlKTsK
K30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERlbGV0ZUJyYWNrZXROb2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHZvaWQgRGVsZXRlQnJhY2tl
dE5vZGU6Om9wdGltaXplVmFyaWFibGVBY2Nlc3MoRnVuY3Rpb25Cb2R5Tm9kZSosIERlY2xhcmF0
aW9uU3RhY2tzOjpOb2RlU3RhY2smIG5vZGVTdGFjaykKSW5kZXg6IGtqcy9ub2Rlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGtqcy9ub2Rlcy5oCShyZXZpc2lvbiAyNzIwMCkKKysrIGtqcy9ub2Rlcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zLDYgKzMsOCBAQAogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAw
IEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBl
dGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDcgQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQor
ICogIENvcHlyaWdodCAoQykgMjAwNyBNYWtzIE9ybG92aWNoCiAgKgogICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtNDg5LDE0ICs0OTEsNDMgQEAgbmFtZXNwYWNlIEtKUyB7CiAKICAgY2xhc3MgRnVuY3Rp
b25DYWxsUmVzb2x2ZU5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgIHB1YmxpYzoKLSAgICBGdW5jdGlv
bkNhbGxSZXNvbHZlTm9kZShjb25zdCBJZGVudGlmaWVyJiBpLCBBcmd1bWVudHNOb2RlICphKSBL
SlNfRkFTVF9DQUxMIDogaWRlbnQoaSksIGFyZ3MoYSkge30KKyAgICBGdW5jdGlvbkNhbGxSZXNv
bHZlTm9kZShjb25zdCBJZGVudGlmaWVyJiBpLCBBcmd1bWVudHNOb2RlKiBhKSBLSlNfRkFTVF9D
QUxMCisgICAgICAgIDogaWRlbnQoaSkKKyAgICAgICAgLCBhcmdzKGEpCisgICAgeworICAgIH0K
KworICAgIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKFBsYWNlbWVudE5ld0Fkb3B0VGFnKSBLSlNf
RkFTVF9DQUxMIAorICAgICAgICA6IE5vZGUoUGxhY2VtZW50TmV3QWRvcHQpCisgICAgICAgICwg
aWRlbnQoaWRlbnQpCisgICAgICAgICwgYXJncyhhcmdzLnJlbGVhc2UoKSkKKyAgICB7CisgICAg
fQorCiAgICAgdmlydHVhbCB2b2lkIG9wdGltaXplVmFyaWFibGVBY2Nlc3MoRnVuY3Rpb25Cb2R5
Tm9kZSosIERlY2xhcmF0aW9uU3RhY2tzOjpOb2RlU3RhY2smKSBLSlNfRkFTVF9DQUxMOwogICAg
IEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVh
bCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CiAgICAg
dmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjQ2FsbDsg
fQotICBwcml2YXRlOgorCisgIHByb3RlY3RlZDoKICAgICBJZGVudGlmaWVyIGlkZW50OwogICAg
IFJlZlB0cjxBcmd1bWVudHNOb2RlPiBhcmdzOworICAgIHNpemVfdCBpbmRleDsgLy8gVXNlZCBi
eSBMb2NhbFZhckZ1bmN0aW9uQ2FsbE5vZGUuCisgIH07CisKKyAgY2xhc3MgTG9jYWxWYXJGdW5j
dGlvbkNhbGxOb2RlIDogcHVibGljIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlIHsKKyAgcHVibGlj
OgorICAgIExvY2FsVmFyRnVuY3Rpb25DYWxsTm9kZShGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSog
biwgc2l6ZV90IGkpCisgICAgICAgIDogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoUGxhY2VtZW50
TmV3QWRvcHQpCisgICAgeworICAgICAgICBBU1NFUlQobiA9PSB0aGlzKTsKKyAgICAgICAgQVNT
RVJUKHNpemVvZihuKSA9PSBzaXplb2YodGhpcykpOworCisgICAgICAgIEFTU0VSVChpICE9IG1p
c3NpbmdTeW1ib2xNYXJrZXIoKSk7CisgICAgICAgIGluZGV4ID0gaTsKKyAgICB9CisKKyAgICBK
U1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICB9OwogCiAgIGNs
YXNzIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlIDogcHVibGljIE5vZGUgewpAQCAtNTI4LDEyICs1
NTksMzcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgIGNsYXNzIFBvc3RmaXhSZXNvbHZlTm9kZSA6IHB1
YmxpYyBOb2RlIHsKICAgcHVibGljOgogICAgIFBvc3RmaXhSZXNvbHZlTm9kZShjb25zdCBJZGVu
dGlmaWVyJiBpLCBPcGVyYXRvciBvKSBLSlNfRkFTVF9DQUxMIDogbV9pZGVudChpKSwgbV9vcGVy
KG8pIHt9CisKKyAgICBQb3N0Zml4UmVzb2x2ZU5vZGUoUGxhY2VtZW50TmV3QWRvcHRUYWcpIEtK
U19GQVNUX0NBTEwgCisgICAgICAgIDogTm9kZShQbGFjZW1lbnROZXdBZG9wdCkKKyAgICAgICAg
LCBtX2lkZW50KG1faWRlbnQpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBvcHRp
bWl6ZVZhcmlhYmxlQWNjZXNzKEZ1bmN0aW9uQm9keU5vZGUqLCBEZWNsYXJhdGlvblN0YWNrczo6
Tm9kZVN0YWNrJikgS0pTX0ZBU1RfQ0FMTDsKICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3Rh
dGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRl
bmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1Bvc3RmaXg7IH0KLSAgcHJpdmF0ZToKKworICBwcm90
ZWN0ZWQ6CiAgICAgSWRlbnRpZmllciBtX2lkZW50OwogICAgIE9wZXJhdG9yIG1fb3BlcjsKKyAg
ICBzaXplX3QgaW5kZXg7IC8vIFVzZWQgYnkgTG9jYWxWYXJQb3N0Zml4Tm9kZS4KKyAgfTsKKwor
ICBjbGFzcyBMb2NhbFZhclBvc3RmaXhOb2RlIDogcHVibGljIFBvc3RmaXhSZXNvbHZlTm9kZSB7
CisgIHB1YmxpYzoKKyAgICBMb2NhbFZhclBvc3RmaXhOb2RlKFBvc3RmaXhSZXNvbHZlTm9kZSog
biwgc2l6ZV90IGkpCisgICAgICAgIDogUG9zdGZpeFJlc29sdmVOb2RlKFBsYWNlbWVudE5ld0Fk
b3B0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG4gPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChz
aXplb2YobikgPT0gc2l6ZW9mKHRoaXMpKTsKKworICAgICAgICBBU1NFUlQoaSAhPSBtaXNzaW5n
U3ltYm9sTWFya2VyKCkpOworICAgICAgICBpbmRleCA9IGk7CisgICAgfQorCisgICAgSlNWYWx1
ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgfTsKIAogICBjbGFzcyBQ
b3N0Zml4QnJhY2tldE5vZGUgOiBwdWJsaWMgTm9kZSB7CkBAIC01NzYsNiArNjMyLDEzIEBAIG5h
bWVzcGFjZSBLSlMgewogICBjbGFzcyBEZWxldGVSZXNvbHZlTm9kZSA6IHB1YmxpYyBOb2RlIHsK
ICAgcHVibGljOgogICAgIERlbGV0ZVJlc29sdmVOb2RlKGNvbnN0IElkZW50aWZpZXImIGkpIEtK
U19GQVNUX0NBTEwgOiBtX2lkZW50KGkpIHt9CisgICAgRGVsZXRlUmVzb2x2ZU5vZGUoUGxhY2Vt
ZW50TmV3QWRvcHRUYWcpIEtKU19GQVNUX0NBTEwgCisgICAgICAgIDogTm9kZShQbGFjZW1lbnRO
ZXdBZG9wdCkKKyAgICAgICAgLCBtX2lkZW50KG1faWRlbnQpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCBvcHRpbWl6ZVZhcmlhYmxlQWNjZXNzKEZ1bmN0aW9uQm9keU5vZGUqLCBE
ZWNsYXJhdGlvblN0YWNrczo6Tm9kZVN0YWNrJikgS0pTX0ZBU1RfQ0FMTDsKICAgICBKU1ZhbHVl
KiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwg
UHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1VuYXJ5OyB9CkBAIC01
ODMsNiArNjQ2LDE4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIElkZW50aWZpZXIgbV9pZGVudDsK
ICAgfTsKIAorICBjbGFzcyBMb2NhbFZhckRlbGV0ZU5vZGUgOiBwdWJsaWMgRGVsZXRlUmVzb2x2
ZU5vZGUgeworICBwdWJsaWM6CisgICAgTG9jYWxWYXJEZWxldGVOb2RlKERlbGV0ZVJlc29sdmVO
b2RlKiBuKQorICAgICAgICA6IERlbGV0ZVJlc29sdmVOb2RlKFBsYWNlbWVudE5ld0Fkb3B0KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG4gPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChzaXplb2Yo
bikgPT0gc2l6ZW9mKHRoaXMpKTsKKyAgICB9CisKKyAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVj
U3RhdGUqKSBLSlNfRkFTVF9DQUxMOworICB9OworCiAgIGNsYXNzIERlbGV0ZUJyYWNrZXROb2Rl
IDogcHVibGljIE5vZGUgewogICBwdWJsaWM6CiAgICAgRGVsZXRlQnJhY2tldE5vZGUoTm9kZSAq
YmFzZSwgTm9kZSAqc3Vic2NyaXB0KSBLSlNfRkFTVF9DQUxMIDogbV9iYXNlKGJhc2UpLCBtX3N1
YnNjcmlwdChzdWJzY3JpcHQpIHt9Cg==
</data>
<flag name="review"
          id="7185"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16932</attachid>
            <date>2007-10-28 22:24:49 -0700</date>
            <delta_ts>2007-10-28 22:31:31 -0700</delta_ts>
            <desc>Patch2</desc>
            <filename>patch-optimize-resolve.txt</filename>
            <type>text/plain</type>
            <size>13638</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjA4
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMDctMTAt
MjggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZGVkIEZ1bmN0aW9uQ2Fs
bFJlc29sdmVOb2RlLCBQb3N0Zml4UmVzb2x2ZU5vZGUsIGFuZCBEZWxldGVSZXNvbHZlTm9kZQor
ICAgICAgICB0byB0aGUgQVNUIHRyYW5zZm9tIHRoYXQgcmVwbGFjZXMgc2xvdyByZXNvbHZlIG5v
ZGVzIHdpdGggZmFzdCBsb2NhbCAKKyAgICAgICAgdmFyaWFibGUgYWx0ZXJuYXRpdmVzLgorICAg
ICAgICAKKyAgICAgICAgMi41JSBzcGVlZHVwIG9uIFN1blNwaWRlci4KKyAgICAgICAgCisgICAg
ICAgIEFsc28gYWRkZWQgc29tZSBtaXNzaW5nIGNvcHlyaWdodCBub3RpY2VzLgorICAgICAgICAK
KyAgICAgICAgKiBranMvbm9kZXMuY3BwOgorICAgICAgICAoS0pTOjpGdW5jdGlvbkNhbGxSZXNv
bHZlTm9kZTo6b3B0aW1pemVWYXJpYWJsZUFjY2Vzcyk6CisgICAgICAgIChLSlM6OkZ1bmN0aW9u
Q2FsbFJlc29sdmVOb2RlOjpldmFsdWF0ZSk6CisgICAgICAgIChLSlM6OkxvY2FsVmFyRnVuY3Rp
b25DYWxsTm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpQb3N0Zml4UmVzb2x2ZU5vZGU6
Om9wdGltaXplVmFyaWFibGVBY2Nlc3MpOgorICAgICAgICAoS0pTOjpQb3N0Zml4UmVzb2x2ZU5v
ZGU6OmV2YWx1YXRlKToKKyAgICAgICAgKEtKUzo6TG9jYWxWYXJQb3N0Zml4Tm9kZTo6ZXZhbHVh
dGUpOgorICAgICAgICAoS0pTOjpEZWxldGVSZXNvbHZlTm9kZTo6b3B0aW1pemVWYXJpYWJsZUFj
Y2Vzcyk6CisgICAgICAgIChLSlM6OkRlbGV0ZVJlc29sdmVOb2RlOjpldmFsdWF0ZSk6CisgICAg
ICAgIChLSlM6OkxvY2FsVmFyRGVsZXRlTm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAqIGtqcy9u
b2Rlcy5oOgorICAgICAgICAoS0pTOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6KToKKyAgICAg
ICAgKEtKUzo6TG9jYWxWYXJGdW5jdGlvbkNhbGxOb2RlOjpMb2NhbFZhckZ1bmN0aW9uQ2FsbE5v
ZGUpOgorICAgICAgICAoS0pTOjpQb3N0Zml4UmVzb2x2ZU5vZGU6Oik6CisgICAgICAgIChLSlM6
OkxvY2FsVmFyUG9zdGZpeE5vZGU6OkxvY2FsVmFyUG9zdGZpeE5vZGUpOgorICAgICAgICAoS0pT
OjpEZWxldGVSZXNvbHZlTm9kZTo6KToKKyAgICAgICAgKEtKUzo6TG9jYWxWYXJEZWxldGVOb2Rl
OjpMb2NhbFZhckRlbGV0ZU5vZGUpOgorCiAyMDA3LTEwLTI4ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICAtIGZpeCAiYnJva2VuIGV2ZXJ5dGhpbmciIGZyb20gdGhl
IHN0b3JhZ2UgbGVhayBmaXgKSW5kZXg6IGtqcy9mdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a2pzL2Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMjcyMDgpCisrKyBranMvZnVuY3Rpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRl
ciBLZWxseSAocG1rQHBvc3QuY29tKQogICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJp
Z2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKKyAq
ICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrcyBPcmxvdmljaAogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
SW5kZXg6IGtqcy9mdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9mdW5jdGlvbi5oCShyZXZp
c2lvbiAyNzIwOCkKKysrIGtqcy9mdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIs
OCBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRl
bkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndh
cmljaCAoY3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFr
cyBPcmxvdmljaAogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKSW5kZXg6IGtqcy9ub2Rlcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga2pzL25vZGVzLmNwcAkocmV2aXNpb24gMjcyMDgpCisrKyBranMvbm9kZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zLDYgKzMsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAw
MSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogIENvcHlyaWdodCAoQykgMjAwMywgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAg
Q29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNoQHV3YXRlcmxvby5j
YSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrcyBPcmxvdmljaAogICoKICAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTU5LDYgKzYwLDE0IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHJldHVybiBMaXN0
KCk7IFwKICAgfQogCitzdGF0aWMgaW5saW5lIGJvb2wgY2FuU2tpcExvb2t1cChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQoreworICAgIHJldHVybiBleGVjLT5jb2Rl
VHlwZSgpID09IEZ1bmN0aW9uQ29kZSAvLyBTdGF0aWMgbG9va3VwIGluIEV2YWxDb2RlIGlzIGlt
cG9zc2libGUgYmVjYXVzZSB2YXJpYWJsZXMgYXJlbid0IERvbnREZWxldGUuIFN0YXRpYyBsb29r
dXAgaW4gR2xvYmFsQ29kZSBtYXkgYmUgcG9zc2libGUsIGJ1dCB3ZSBoYXZlbid0IGltcGxlbWVu
dGVkIHN1cHBvcnQgZm9yIGl0IHlldC4KKyAgICAgICAgJiYgZXhlYy0+dmFyaWFibGVPYmplY3Qo
KSA9PSBleGVjLT5zY29wZUNoYWluKCkudG9wKCkgLy8gU3RhdGljIGxvb2t1cCBpcyBpbXBvc3Np
YmxlIHdoZW4gc29tZXRoaW5nIGR5bmFtaWMgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIGZyb250IG9m
IHRoZSBzY29wZSBjaGFpbi4KKyAgICAgICAgJiYgKGV4ZWMtPnZhcmlhYmxlT2JqZWN0KCktPmlz
QWN0aXZhdGlvbigpICYmIC8vIFN0YXRpYyBsb29rdXAgaXMgaW1wb3NzaWJsZSBpZiB0aGUgc3lt
Ym9sIGlzbid0IHN0YXRpY2FsbHkgZGVjbGFyZWQuCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxB
Y3RpdmF0aW9uSW1wKj4oZXhlYy0+dmFyaWFibGVPYmplY3QoKSktPnN5bWJvbFRhYmxlKCkuY29u
dGFpbnMoaWRlbnQudXN0cmluZygpLnJlcCgpKSk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKICNpZm5kZWYgTkRFQlVHCkBAIC0zNzQsOSArMzgzLDcgQEAgSlNWYWx1ZSAqVGhpc05v
ZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZQogSlNWYWx1ZSAqUmVzb2x2ZU5vZGU6OmV2YWx1YXRl
KEV4ZWNTdGF0ZSAqZXhlYykKIHsKICAgLy8gQ2hlY2sgZm9yIG1pc3NlZCBvcHRpbWl6YXRpb24g
b3Bwb3J0dW5pdHkuCi0gIEFTU0VSVChleGVjLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZQot
ICAgICAgICAgfHwgZXhlYy0+dmFyaWFibGVPYmplY3QoKSAhPSBleGVjLT5zY29wZUNoYWluKCku
dG9wKCkgCi0gICAgICAgICB8fCAoZXhlYy0+dmFyaWFibGVPYmplY3QoKS0+aXNBY3RpdmF0aW9u
KCkgJiYgIXN0YXRpY19jYXN0PEFjdGl2YXRpb25JbXAqPihleGVjLT52YXJpYWJsZU9iamVjdCgp
KS0+c3ltYm9sVGFibGUoKS5jb250YWlucyhpZGVudC51c3RyaW5nKCkucmVwKCkpKSk7CisgIEFT
U0VSVCghY2FuU2tpcExvb2t1cChleGVjLCBpZGVudCkpOwogCiAgIGNvbnN0IFNjb3BlQ2hhaW4m
IGNoYWluID0gZXhlYy0+c2NvcGVDaGFpbigpOwogICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9
IGNoYWluLmJlZ2luKCk7CkBAIC02OTYsMTQgKzcwMywyMSBAQCBKU1ZhbHVlICpGdW5jdGlvbkNh
bGxWYWx1ZU5vZGU6OmV2YWx1YXRlCiAgIHJldHVybiBmdW5jLT5jYWxsKGV4ZWMsIHRoaXNPYmos
IGFyZ0xpc3QpOwogfQogCi12b2lkIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjpvcHRpbWl6ZVZh
cmlhYmxlQWNjZXNzKEZ1bmN0aW9uQm9keU5vZGUqLCBEZWNsYXJhdGlvblN0YWNrczo6Tm9kZVN0
YWNrJiBub2RlU3RhY2spCit2b2lkIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjpvcHRpbWl6ZVZh
cmlhYmxlQWNjZXNzKEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgRGVjbGFyYXRpb25T
dGFja3M6Ok5vZGVTdGFjayYgbm9kZVN0YWNrKQogewogICAgIG5vZGVTdGFjay5hcHBlbmQoYXJn
cy5nZXQoKSk7CisKKyAgICBzaXplX3QgaW5kZXggPSBmdW5jdGlvbkJvZHktPnN5bWJvbFRhYmxl
KCkuZ2V0KGlkZW50LnVzdHJpbmcoKS5yZXAoKSk7CisgICAgaWYgKGluZGV4ICE9IG1pc3NpbmdT
eW1ib2xNYXJrZXIoKSkKKyAgICAgICAgbmV3ICh0aGlzKSBMb2NhbFZhckZ1bmN0aW9uQ2FsbE5v
ZGUoaW5kZXgpOwogfQogCiAvLyBFQ01BIDExLjIuMwogSlNWYWx1ZSAqRnVuY3Rpb25DYWxsUmVz
b2x2ZU5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYykKIHsKKyAgLy8gQ2hlY2sgZm9yIG1p
c3NlZCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdHkuCisgIEFTU0VSVCghY2FuU2tpcExvb2t1cChl
eGVjLCBpZGVudCkpOworCiAgIGNvbnN0IFNjb3BlQ2hhaW4mIGNoYWluID0gZXhlYy0+c2NvcGVD
aGFpbigpOwogICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IGNoYWluLmJlZ2luKCk7CiAgIFNj
b3BlQ2hhaW5JdGVyYXRvciBlbmQgPSBjaGFpbi5lbmQoKTsKQEAgLTc1MCw2ICs3NjQsMjcgQEAg
SlNWYWx1ZSAqRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmV2YWx1YQogICByZXR1cm4gdGhyb3dV
bmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KTsKIH0KIAorSlNWYWx1ZSogTG9jYWxW
YXJGdW5jdGlvbkNhbGxOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQWN0
aXZhdGlvbkltcCogdmFyaWFibGVPYmplY3QgPSBzdGF0aWNfY2FzdDxBY3RpdmF0aW9uSW1wKj4o
ZXhlYy0+dmFyaWFibGVPYmplY3QoKSk7CisgICAgQVNTRVJUKHZhcmlhYmxlT2JqZWN0LT5pc0Fj
dGl2YXRpb24oKSk7CisgICAgQVNTRVJUKHZhcmlhYmxlT2JqZWN0ID09IGV4ZWMtPnNjb3BlQ2hh
aW4oKS50b3AoKSk7CisKKyAgICBKU1ZhbHVlKiB2ID0gdmFyaWFibGVPYmplY3QtPmxvY2FsU3Rv
cmFnZSgpW2luZGV4XS52YWx1ZTsKKworICAgIGlmICghdi0+aXNPYmplY3QoKSkKKyAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yLCAiVmFsdWUgJXMgKHJlc3VsdCBvZiBl
eHByZXNzaW9uICVzKSBpcyBub3Qgb2JqZWN0LiIsIHYsIGlkZW50KTsKKyAgICAgIAorICAgIEpT
T2JqZWN0KiBmdW5jID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPih2KTsKKyAgICBpZiAoIWZ1bmMt
PmltcGxlbWVudHNDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVF
cnJvciwgIk9iamVjdCAlcyAocmVzdWx0IG9mIGV4cHJlc3Npb24gJXMpIGRvZXMgbm90IGFsbG93
IGNhbGxzLiIsIHYsIGlkZW50KTsKKyAgICAgIAorICAgIExpc3QgYXJnTGlzdCA9IGFyZ3MtPmV2
YWx1YXRlTGlzdChleGVjKTsKKyAgICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQorCisgICAgcmV0
dXJuIGZ1bmMtPmNhbGwoZXhlYywgZXhlYy0+ZHluYW1pY0ludGVycHJldGVyKCktPmdsb2JhbE9i
amVjdCgpLCBhcmdMaXN0KTsKK30KKwogdm9pZCBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6b3B0
aW1pemVWYXJpYWJsZUFjY2VzcyhGdW5jdGlvbkJvZHlOb2RlKiwgRGVjbGFyYXRpb25TdGFja3M6
Ok5vZGVTdGFjayYgbm9kZVN0YWNrKQogewogICAgIG5vZGVTdGFjay5hcHBlbmQoYXJncy5nZXQo
KSk7CkBAIC04NTgsOCArODkzLDE4IEBAIEpTVmFsdWUgKkZ1bmN0aW9uQ2FsbERvdE5vZGU6OmV2
YWx1YXRlKEUKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBvc3RmaXhSZXNv
bHZlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK3ZvaWQgUG9zdGZp
eFJlc29sdmVOb2RlOjpvcHRpbWl6ZVZhcmlhYmxlQWNjZXNzKEZ1bmN0aW9uQm9keU5vZGUqIGZ1
bmN0aW9uQm9keSwgRGVjbGFyYXRpb25TdGFja3M6Ok5vZGVTdGFjayYpCit7CisgICAgc2l6ZV90
IGluZGV4ID0gZnVuY3Rpb25Cb2R5LT5zeW1ib2xUYWJsZSgpLmdldChtX2lkZW50LnVzdHJpbmco
KS5yZXAoKSk7CisgICAgaWYgKGluZGV4ICE9IG1pc3NpbmdTeW1ib2xNYXJrZXIoKSkKKyAgICAg
ICAgbmV3ICh0aGlzKSBMb2NhbFZhclBvc3RmaXhOb2RlKGluZGV4KTsKK30KKwogSlNWYWx1ZSAq
UG9zdGZpeFJlc29sdmVOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCiB7CisgIC8vIENo
ZWNrIGZvciBtaXNzZWQgb3B0aW1pemF0aW9uIG9wcG9ydHVuaXR5LgorICBBU1NFUlQoIWNhblNr
aXBMb29rdXAoZXhlYywgbV9pZGVudCkpOworCiAgIGNvbnN0IFNjb3BlQ2hhaW4mIGNoYWluID0g
ZXhlYy0+c2NvcGVDaGFpbigpOwogICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IGNoYWluLmJl
Z2luKCk7CiAgIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQgPSBjaGFpbi5lbmQoKTsKQEAgLTg4OCw2
ICs5MzMsMTkgQEAgSlNWYWx1ZSAqUG9zdGZpeFJlc29sdmVOb2RlOjpldmFsdWF0ZShFeAogICBy
ZXR1cm4gdGhyb3dVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIG1faWRlbnQpOwogfQogCitK
U1ZhbHVlKiBMb2NhbFZhclBvc3RmaXhOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgQWN0aXZhdGlvbkltcCogdmFyaWFibGVPYmplY3QgPSBzdGF0aWNfY2FzdDxBY3RpdmF0
aW9uSW1wKj4oZXhlYy0+dmFyaWFibGVPYmplY3QoKSk7CisgICAgQVNTRVJUKHZhcmlhYmxlT2Jq
ZWN0LT5pc0FjdGl2YXRpb24oKSk7CisgICAgQVNTRVJUKHZhcmlhYmxlT2JqZWN0ID09IGV4ZWMt
PnNjb3BlQ2hhaW4oKS50b3AoKSk7CisKKyAgICBKU1ZhbHVlKiogdiA9ICZ2YXJpYWJsZU9iamVj
dC0+bG9jYWxTdG9yYWdlKClbaW5kZXhdLnZhbHVlOworICAgIGRvdWJsZSBuID0gKCp2KS0+dG9O
dW1iZXIoZXhlYyk7CisgICAgZG91YmxlIG5ld1ZhbHVlID0gKG1fb3BlciA9PSBPcFBsdXNQbHVz
KSA/IG4gKyAxIDogbiAtIDE7CisgICAgKnYgPSBqc051bWJlcihuZXdWYWx1ZSk7CisgICAgcmV0
dXJuIGpzTnVtYmVyKG4pOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
UG9zdGZpeEJyYWNrZXROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAog
dm9pZCBQb3N0Zml4QnJhY2tldE5vZGU6Om9wdGltaXplVmFyaWFibGVBY2Nlc3MoRnVuY3Rpb25C
b2R5Tm9kZSosIERlY2xhcmF0aW9uU3RhY2tzOjpOb2RlU3RhY2smIG5vZGVTdGFjaykKQEAgLTk2
OSwxMCArMTAyNywyMCBAQCBKU1ZhbHVlKiBQb3N0Zml4RXJyb3JOb2RlOjpldmFsdWF0ZShFeGVj
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVSZXNvbHZlTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCit2b2lkIERlbGV0ZVJlc29sdmVO
b2RlOjpvcHRpbWl6ZVZhcmlhYmxlQWNjZXNzKEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9k
eSwgRGVjbGFyYXRpb25TdGFja3M6Ok5vZGVTdGFjayYpCit7CisgICAgc2l6ZV90IGluZGV4ID0g
ZnVuY3Rpb25Cb2R5LT5zeW1ib2xUYWJsZSgpLmdldChtX2lkZW50LnVzdHJpbmcoKS5yZXAoKSk7
CisgICAgaWYgKGluZGV4ICE9IG1pc3NpbmdTeW1ib2xNYXJrZXIoKSkKKyAgICAgICAgbmV3ICh0
aGlzKSBMb2NhbFZhckRlbGV0ZU5vZGUoKTsKK30KKwogLy8gRUNNQSAxMS40LjEKIAogSlNWYWx1
ZSAqRGVsZXRlUmVzb2x2ZU5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYykKIHsKKyAgLy8g
Q2hlY2sgZm9yIG1pc3NlZCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdHkuCisgIEFTU0VSVCghY2Fu
U2tpcExvb2t1cChleGVjLCBtX2lkZW50KSk7CisKICAgY29uc3QgU2NvcGVDaGFpbiYgY2hhaW4g
PSBleGVjLT5zY29wZUNoYWluKCk7CiAgIFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVyID0gY2hhaW4u
YmVnaW4oKTsKICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IGNoYWluLmVuZCgpOwpAQCAtOTk0
LDYgKzEwNjIsMTEgQEAgSlNWYWx1ZSAqRGVsZXRlUmVzb2x2ZU5vZGU6OmV2YWx1YXRlKEV4ZQog
ICByZXR1cm4ganNCb29sZWFuKHRydWUpOwogfQogCitKU1ZhbHVlKiBMb2NhbFZhckRlbGV0ZU5v
ZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSopCit7CisgICAgcmV0dXJuIGpzQm9vbGVhbihmYWxzZSk7
Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVCcmFja2V0Tm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIERlbGV0ZUJyYWNr
ZXROb2RlOjpvcHRpbWl6ZVZhcmlhYmxlQWNjZXNzKEZ1bmN0aW9uQm9keU5vZGUqLCBEZWNsYXJh
dGlvblN0YWNrczo6Tm9kZVN0YWNrJiBub2RlU3RhY2spCkluZGV4OiBranMvbm9kZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBranMvbm9kZXMuaAkocmV2aXNpb24gMjcyMDgpCisrKyBranMvbm9kZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDggQEAKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAw
MCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQ
ZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNoQHV3YXRlcmxvby5jYSkK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrcyBPcmxvdmljaAogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTI5Myw3ICsyOTUsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgY2xhc3MgTG9jYWxWYXJB
Y2Nlc3NOb2RlIDogcHVibGljIFJlc29sdmVOb2RlIHsKICAgcHVibGljOgogICAgIC8vIE92ZXJ3
cml0ZXMgYSBSZXNvbHZlTm9kZSBpbiBwbGFjZS4KLSAgICBMb2NhbFZhckFjY2Vzc05vZGUoc2l6
ZV90IGkpCisgICAgTG9jYWxWYXJBY2Nlc3NOb2RlKHNpemVfdCBpKSBLSlNfRkFTVF9DQUxMCiAg
ICAgICAgIDogUmVzb2x2ZU5vZGUoUGxhY2VtZW50TmV3QWRvcHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoaSAhPSBtaXNzaW5nU3ltYm9sTWFya2VyKCkpOwpAQCAtNDgyLDE0ICs0ODQsNDAgQEAg
bmFtZXNwYWNlIEtKUyB7CiAKICAgY2xhc3MgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUgOiBwdWJs
aWMgTm9kZSB7CiAgIHB1YmxpYzoKLSAgICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShjb25zdCBJ
ZGVudGlmaWVyJiBpLCBBcmd1bWVudHNOb2RlICphKSBLSlNfRkFTVF9DQUxMIDogaWRlbnQoaSks
IGFyZ3MoYSkge30KKyAgICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShjb25zdCBJZGVudGlmaWVy
JiBpLCBBcmd1bWVudHNOb2RlKiBhKSBLSlNfRkFTVF9DQUxMCisgICAgICAgIDogaWRlbnQoaSkK
KyAgICAgICAgLCBhcmdzKGEpCisgICAgeworICAgIH0KKworICAgIEZ1bmN0aW9uQ2FsbFJlc29s
dmVOb2RlKFBsYWNlbWVudE5ld0Fkb3B0VHlwZSkgS0pTX0ZBU1RfQ0FMTCAKKyAgICAgICAgOiBO
b2RlKFBsYWNlbWVudE5ld0Fkb3B0KQorICAgICAgICAsIGlkZW50KFBsYWNlbWVudE5ld0Fkb3B0
KQorICAgICAgICAsIGFyZ3MoUGxhY2VtZW50TmV3QWRvcHQpCisgICAgeworICAgIH0KKwogICAg
IHZpcnR1YWwgdm9pZCBvcHRpbWl6ZVZhcmlhYmxlQWNjZXNzKEZ1bmN0aW9uQm9keU5vZGUqLCBE
ZWNsYXJhdGlvblN0YWNrczo6Tm9kZVN0YWNrJikgS0pTX0ZBU1RfQ0FMTDsKICAgICBKU1ZhbHVl
KiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwg
UHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY0NhbGw7IH0KLSAgcHJp
dmF0ZToKKworICBwcm90ZWN0ZWQ6CiAgICAgSWRlbnRpZmllciBpZGVudDsKICAgICBSZWZQdHI8
QXJndW1lbnRzTm9kZT4gYXJnczsKKyAgICBzaXplX3QgaW5kZXg7IC8vIFVzZWQgYnkgTG9jYWxW
YXJGdW5jdGlvbkNhbGxOb2RlLgorICB9OworCisgIGNsYXNzIExvY2FsVmFyRnVuY3Rpb25DYWxs
Tm9kZSA6IHB1YmxpYyBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSB7CisgIHB1YmxpYzoKKyAgICBM
b2NhbFZhckZ1bmN0aW9uQ2FsbE5vZGUoc2l6ZV90IGkpIEtKU19GQVNUX0NBTEwKKyAgICAgICAg
OiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShQbGFjZW1lbnROZXdBZG9wdCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChpICE9IG1pc3NpbmdTeW1ib2xNYXJrZXIoKSk7CisgICAgICAgIGluZGV4ID0g
aTsKKyAgICB9CisKKyAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9D
QUxMOwogICB9OwogCiAgIGNsYXNzIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlIDogcHVibGljIE5v
ZGUgewpAQCAtNTIxLDEyICs1NDksMzQgQEAgbmFtZXNwYWNlIEtKUyB7CiAgIGNsYXNzIFBvc3Rm
aXhSZXNvbHZlTm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgcHVibGljOgogICAgIFBvc3RmaXhSZXNv
bHZlTm9kZShjb25zdCBJZGVudGlmaWVyJiBpLCBPcGVyYXRvciBvKSBLSlNfRkFTVF9DQUxMIDog
bV9pZGVudChpKSwgbV9vcGVyKG8pIHt9CisKKyAgICBQb3N0Zml4UmVzb2x2ZU5vZGUoUGxhY2Vt
ZW50TmV3QWRvcHRUeXBlKSBLSlNfRkFTVF9DQUxMIAorICAgICAgICA6IE5vZGUoUGxhY2VtZW50
TmV3QWRvcHQpCisgICAgICAgICwgbV9pZGVudChQbGFjZW1lbnROZXdBZG9wdCkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIG9wdGltaXplVmFyaWFibGVBY2Nlc3MoRnVuY3Rpb25C
b2R5Tm9kZSosIERlY2xhcmF0aW9uU3RhY2tzOjpOb2RlU3RhY2smKSBLSlNfRkFTVF9DQUxMOwog
ICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmly
dHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CiAg
ICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjUG9z
dGZpeDsgfQotICBwcml2YXRlOgorCisgIHByb3RlY3RlZDoKICAgICBJZGVudGlmaWVyIG1faWRl
bnQ7CiAgICAgT3BlcmF0b3IgbV9vcGVyOworICAgIHNpemVfdCBpbmRleDsgLy8gVXNlZCBieSBM
b2NhbFZhclBvc3RmaXhOb2RlLgorICB9OworCisgIGNsYXNzIExvY2FsVmFyUG9zdGZpeE5vZGUg
OiBwdWJsaWMgUG9zdGZpeFJlc29sdmVOb2RlIHsKKyAgcHVibGljOgorICAgIExvY2FsVmFyUG9z
dGZpeE5vZGUoc2l6ZV90IGkpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgOiBQb3N0Zml4UmVzb2x2
ZU5vZGUoUGxhY2VtZW50TmV3QWRvcHQpCisgICAgeworICAgICAgICBBU1NFUlQoaSAhPSBtaXNz
aW5nU3ltYm9sTWFya2VyKCkpOworICAgICAgICBpbmRleCA9IGk7CisgICAgfQorCisgICAgSlNW
YWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgfTsKIAogICBjbGFz
cyBQb3N0Zml4QnJhY2tldE5vZGUgOiBwdWJsaWMgTm9kZSB7CkBAIC01NjksNiArNjE5LDEzIEBA
IG5hbWVzcGFjZSBLSlMgewogICBjbGFzcyBEZWxldGVSZXNvbHZlTm9kZSA6IHB1YmxpYyBOb2Rl
IHsKICAgcHVibGljOgogICAgIERlbGV0ZVJlc29sdmVOb2RlKGNvbnN0IElkZW50aWZpZXImIGkp
IEtKU19GQVNUX0NBTEwgOiBtX2lkZW50KGkpIHt9CisgICAgRGVsZXRlUmVzb2x2ZU5vZGUoUGxh
Y2VtZW50TmV3QWRvcHRUeXBlKSBLSlNfRkFTVF9DQUxMIAorICAgICAgICA6IE5vZGUoUGxhY2Vt
ZW50TmV3QWRvcHQpCisgICAgICAgICwgbV9pZGVudChQbGFjZW1lbnROZXdBZG9wdCkKKyAgICB7
CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIG9wdGltaXplVmFyaWFibGVBY2Nlc3MoRnVuY3Rp
b25Cb2R5Tm9kZSosIERlY2xhcmF0aW9uU3RhY2tzOjpOb2RlU3RhY2smKSBLSlNfRkFTVF9DQUxM
OwogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAg
dmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7
CiAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVj
VW5hcnk7IH0KQEAgLTU3Niw2ICs2MzMsMTYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgSWRlbnRp
ZmllciBtX2lkZW50OwogICB9OwogCisgIGNsYXNzIExvY2FsVmFyRGVsZXRlTm9kZSA6IHB1Ymxp
YyBEZWxldGVSZXNvbHZlTm9kZSB7CisgIHB1YmxpYzoKKyAgICBMb2NhbFZhckRlbGV0ZU5vZGUo
KSBLSlNfRkFTVF9DQUxMCisgICAgICAgIDogRGVsZXRlUmVzb2x2ZU5vZGUoUGxhY2VtZW50TmV3
QWRvcHQpCisgICAgeworICAgIH0KKworICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSop
IEtKU19GQVNUX0NBTEw7CisgIH07CisKICAgY2xhc3MgRGVsZXRlQnJhY2tldE5vZGUgOiBwdWJs
aWMgTm9kZSB7CiAgIHB1YmxpYzoKICAgICBEZWxldGVCcmFja2V0Tm9kZShOb2RlICpiYXNlLCBO
b2RlICpzdWJzY3JpcHQpIEtKU19GQVNUX0NBTEwgOiBtX2Jhc2UoYmFzZSksIG1fc3Vic2NyaXB0
KHN1YnNjcmlwdCkge30K
</data>
<flag name="review"
          id="7186"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>