<?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>65825</bug_id>
          
          <creation_ts>2011-08-07 02:48:35 -0700</creation_ts>
          <short_desc>DFG JIT does not track speculation decisions for global variables</short_desc>
          <delta_ts>2011-08-08 05:51:18 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>447721</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-07 02:48:35 -0700</bug_when>
    <thetext>The DFG JIT tracks speculation decisions for block-local temporaries (in the backend) and variables than span blocks (during bytecode parsing via local variable tracking).  But it does not do this for global variables.  Hence code that uses a global variable &quot;as if&quot; it were a local variable can experience awkward pathologies.  For example:

x=5
x/=2
x++

Where x is not declared as a &apos;var&apos; will result in the first line storing the Int32 representation of 5 into x; the second line checking what type x has, realizing that it&apos;s an int, and converting it to a double in order to perform a division and then storing the result into x as a double; and the third line speculating that x is an integer and failing speculation.

The DFG JIT should track speculations for global variables, so that such code will at the very least not perform speculations that contravene other speculations performed by the same code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447722</commentid>
    <comment_count>1</comment_count>
      <attachid>103175</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-07 02:54:29 -0700</bug_when>
    <thetext>Created attachment 103175
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447723</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-07 02:56:32 -0700</bug_when>
    <thetext>Attachment 103175 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Last 3072 characters of output:
Source/JavaScriptCore/dfg/DFGGraph.h:204:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:205:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:206:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:207:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:208:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:209:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:214:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:216:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/dfg/DFGGraph.h:215:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:217:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:218:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:219:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:220:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:221:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:222:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:223:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:239:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:240:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:241:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:242:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:247:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:248:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:254:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:255:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:256:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:257:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:258:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:259:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:260:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:261:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/dfg/DFGGraph.h:262:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 62 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447724</commentid>
    <comment_count>3</comment_count>
      <attachid>103176</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-07 03:19:25 -0700</bug_when>
    <thetext>Created attachment 103176
the patch (fix tabs)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447725</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-07 03:21:45 -0700</bug_when>
    <thetext>Attachment 103176 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/dfg/DFGGraph.h:253:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447726</commentid>
    <comment_count>5</comment_count>
      <attachid>103177</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-07 03:23:02 -0700</bug_when>
    <thetext>Created attachment 103177
the patch (fix more tabs)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447834</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-08-07 22:05:20 -0700</bug_when>
    <thetext>Does this end up helping bitops-bitwise-and.js?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447842</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-07 22:33:35 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Does this end up helping bitops-bitwise-and.js?

Only ever so slightly.  Maybe 2%, and it&apos;s hardly statistically significant.  It&apos;s mainly just a win on controlflow-recursive and crypto.

All this patch really does is makes sure that we have consistent speculations for each global variable, whereas before we might have speculate differently each time we load from it.  So it only &quot;wins&quot; in the sense that it removes some ugly pathologies that we otherwise had, where we first turned something into a double and then later speculated that it was an integer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447853</commentid>
    <comment_count>8</comment_count>
      <attachid>103177</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-08-07 23:38:44 -0700</bug_when>
    <thetext>Comment on attachment 103177
the patch (fix more tabs)

Look great, nice overall win!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447907</commentid>
    <comment_count>9</comment_count>
      <attachid>103177</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-08 01:37:27 -0700</bug_when>
    <thetext>Comment on attachment 103177
the patch (fix more tabs)

All tests appear to be passing, so I&apos;ll let it land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447969</commentid>
    <comment_count>10</comment_count>
      <attachid>103177</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 05:51:14 -0700</bug_when>
    <thetext>Comment on attachment 103177
the patch (fix more tabs)

Clearing flags on attachment: 103177

Committed r92593: &lt;http://trac.webkit.org/changeset/92593&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447970</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 05:51:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103175</attachid>
            <date>2011-08-07 02:54:29 -0700</date>
            <delta_ts>2011-08-07 03:19:25 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>specglobalvar_patch_1.diff</filename>
            <type>text/plain</type>
            <size>8858</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTI1NzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAK
KzIwMTEtMDgtMDcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworCURGRyBKSVQg
ZG9lcyBub3QgdHJhY2sgc3BlY3VsYXRpb24gZGVjaXNpb25zIGZvciBnbG9iYWwgdmFyaWFibGVz
CisJaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1ODI1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisJCisJQWRkZWQgdGhlIGNhcGFiaWxpdHkg
dG8gdHJhY2sgcHJlZGljdGlvbnMgZm9yIGdsb2JhbCB2YXJpYWJsZXMsIGFuZAorCWVuc3VyZWQg
dGhhdCBjb2RlIGNhbiBhYnN0cmFjdCBvdmVyIHRoZSBzb3VyY2Ugb2YgcHJlZGljdGlvbiAobG9j
YWwKKwl2ZXJzdXMgZ2xvYmFsIHZhcmlhYmxlKSB3aGVyZXZlciBpdCBpcyBhcHByb3ByaWF0ZSB0
byBkbyBzby4gIEFsc28KKwljbGVhbmVkIHVwIHRoZSBjb2RlIGluIFNwZWN1bGF0aXZlSklUIHRo
YXQgZGVjaWRlcyBob3cgdG8gc3BlY3VsYXRlCisJYmFzZWQgb24gcmVjb3JkZWQgcHJlZGljdGlv
bnMgKGZvciBleGFtcGxlIGluc3RlYWQgb2YgdXNpbmcgaXNJbnRlZ2VyLAorCXdoaWNoIG1ha2Vz
IHNlbnNlIGZvciBsb2NhbCBwcmVkaWN0aW9ucyB3aGVyZSB0aGUgR2V0TG9jYWwgd291bGQKKwly
ZXR1cm4gYW4gaW50ZWdlciB2YWx1ZSwgd2Ugbm93IHRlbmQgdG8gdXNlIHNob3VsZFNwZWN1bGF0
ZUludGVnZXIsCisJd2hpY2ggY2hlY2tzIGlmIHRoZSB2YWx1ZSBpcyBlaXRoZXIgYWxyZWFkeSBh
biBpbnRlZ2VyIG9yIHNob3VsZCBiZQorCXNwZWN1bGF0ZWQgdG8gYmUgYW4gaW50ZWdlcikuCisJ
CisJVGhpcyBpcyBhbiAwLjglIHdpbiBvbiBTdW5TcGlkZXIsIGFsbW9zdCBlbnRpcmVseSB0aGFu
a3MgdG8gYSAyNSUKKwl3aW4gb24gY29udHJvbGZsb3ctcmVjdXJzaXZlLiAgSXQncyBhbHNvIGEg
NC44JSB3aW4gb24gdjgtY3J5cHRvLgorCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cHJlZGljdEFycmF5KToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cHJlZGljdEludDMyKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZn
L0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6CisgICAgICAg
ICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnByZWRpY3RHbG9i
YWxWYXIpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpwcmVkaWN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpHcmFwaDo6Z2V0R2xvYmFsVmFyUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkRG
Rzo6R3JhcGg6OmdldFByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6c2hvdWxkU3BlY3VsYXRlRG91YmxlKToKKwogMjAxMS0wOC0wNiAgR2F2
aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1ODIxCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gOTI1
NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDMwLDEwICs0MzAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBw
cmVkaWN0QXJyYXkoTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICB7Ci0gICAgICAgIE5vZGUqIG5v
ZGVQdHIgPSAmbV9ncmFwaFtub2RlSW5kZXhdOwotCi0gICAgICAgIGlmIChub2RlUHRyLT5vcCA9
PSBHZXRMb2NhbCkKLSAgICAgICAgICAgIG1fZ3JhcGgucHJlZGljdChub2RlUHRyLT5sb2NhbCgp
LCBQcmVkaWN0QXJyYXkpOworCW1fZ3JhcGgucHJlZGljdChtX2dyYXBoW25vZGVJbmRleF0sIFBy
ZWRpY3RBcnJheSk7CiAgICAgfQogCiAgICAgdm9pZCBwcmVkaWN0SW50MzIoTm9kZUluZGV4IG5v
ZGVJbmRleCkKQEAgLTQ0NSw5ICs0NDIsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIGlmIChub2Rl
UHRyLT5vcCA9PSBWYWx1ZVRvSW50MzIpCiAgICAgICAgICAgICBub2RlUHRyID0gJm1fZ3JhcGhb
bm9kZVB0ci0+Y2hpbGQxKCldOwotCi0gICAgICAgIGlmIChub2RlUHRyLT5vcCA9PSBHZXRMb2Nh
bCkKLSAgICAgICAgICAgIG1fZ3JhcGgucHJlZGljdChub2RlUHRyLT5sb2NhbCgpLCBQcmVkaWN0
SW50MzIpOworCQorCW1fZ3JhcGgucHJlZGljdCgqbm9kZVB0ciwgUHJlZGljdEludDMyKTsKICAg
ICB9CiAKICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKQEAgLTcwNyw4ICs3MDMsMTMg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAg
ICAgICAgICBwcmVkaWN0SW50MzIob3AyKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoQXJp
dGhBZGQsIHRvTnVtYmVyKG9wMSksIHRvTnVtYmVyKG9wMikpKTsKLSAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgfSBlbHNlIHsKKwkJaWYgKGlzU21hbGxJbnQzMkNvbnN0YW50KG9wMSkg
fHwgaXNTbWFsbEludDMyQ29uc3RhbnQob3AyKSkgeworCQkgICAgcHJlZGljdEludDMyKG9wMSk7
CisJCSAgICBwcmVkaWN0SW50MzIob3AyKTsKKwkJfQogICAgICAgICAgICAgICAgIHNldChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKFZhbHVlQWRkLCBvcDEsIG9w
MikpOworCSAgICB9CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9hZGQpOwogICAgICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiA5
MjU3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzYsNiArMTM2LDggQEAgdm9pZCBHcmFwaDo6ZHVtcChOb2RlSW5kZXggbm9k
ZUluZGV4LCBDbwogICAgIAogICAgIGlmIChub2RlLmhhc0xvY2FsKCkpCiAgICAgICAgIHByaW50
ZigiICBwcmVkaWN0aW5nICVzIiwgcHJlZGljdGlvblRvU3RyaW5nKGdldFByZWRpY3Rpb24obm9k
ZS5sb2NhbCgpKSkpOworICAgIGlmIChub2RlLmhhc1Zhck51bWJlcigpKQorICAgICAgICBwcmlu
dGYoIiAgcHJlZGljdGluZyAlcyIsIHByZWRpY3Rpb25Ub1N0cmluZyhnZXRHbG9iYWxWYXJQcmVk
aWN0aW9uKG5vZGUudmFyTnVtYmVyKCkpKSk7CiAgICAgCiAgICAgcHJpbnRmKCJcbiIpOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gOTI1NzApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgPFJlZ2lzdGVyRmlsZS5oPgogI2luY2x1ZGUgPGRm
Zy9ERkdOb2RlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0xOTYsNiArMTk3LDMx
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fdmFyaWFibGVQcmVkaWN0aW9uc1tvcGVyYW5kXS5t
X3ZhbHVlIHw9IHByZWRpY3Rpb247CiAgICAgICAgICAgICAKICAgICB9CisgICAgCisgICAgdm9p
ZCBwcmVkaWN0R2xvYmFsVmFyKHVuc2lnbmVkIHZhck51bWJlciwgUHJlZGljdGVkVHlwZSBwcmVk
aWN0aW9uKQorICAgIHsKKwlIYXNoTWFwPHVuc2lnbmVkLCBQcmVkaWN0aW9uU2xvdD46Oml0ZXJh
dG9yIGl0ZXIgPSBtX2dsb2JhbFZhclByZWRpY3Rpb25zLmZpbmQodmFyTnVtYmVyICsgMSk7CisJ
aWYgKGl0ZXIgPT0gbV9nbG9iYWxWYXJQcmVkaWN0aW9ucy5lbmQoKSkgeworCSAgICBQcmVkaWN0
aW9uU2xvdCBwcmVkaWN0aW9uU2xvdDsKKwkgICAgcHJlZGljdGlvblNsb3QubV92YWx1ZSB8PSBw
cmVkaWN0aW9uOworCSAgICBtX2dsb2JhbFZhclByZWRpY3Rpb25zLmFkZCh2YXJOdW1iZXIgKyAx
LCBwcmVkaWN0aW9uU2xvdCk7CisJfSBlbHNlCisJICAgIGl0ZXItPnNlY29uZC5tX3ZhbHVlIHw9
IHByZWRpY3Rpb247CisgICAgfQorICAgIAorICAgIHZvaWQgcHJlZGljdChOb2RlJiBub2RlLCBQ
cmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24pCisgICAgeworCXN3aXRjaCAobm9kZS5vcCkgeworCWNh
c2UgR2V0TG9jYWw6CisgICAgICAgICAgICBwcmVkaWN0KG5vZGUubG9jYWwoKSwgcHJlZGljdGlv
bik7CisJICAgIGJyZWFrOworCWNhc2UgR2V0R2xvYmFsVmFyOgorCSAgICBwcmVkaWN0R2xvYmFs
VmFyKG5vZGUudmFyTnVtYmVyKCksIHByZWRpY3Rpb24pOworCSAgICBicmVhazsKKwlkZWZhdWx0
OgorCSAgICBicmVhazsKKwl9CisgICAgfQogCiAgICAgUHJlZGljdGVkVHlwZSBnZXRQcmVkaWN0
aW9uKGludCBvcGVyYW5kKQogICAgIHsKQEAgLTIwNyw2ICsyMzMsMzQgQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuIG1fdmFyaWFibGVQcmVkaWN0aW9uc1tvcGVyYW5kXS5tX3ZhbHVlOwog
ICAgICAgICByZXR1cm4gUHJlZGljdE5vbmU7CiAgICAgfQorICAgIAorICAgIFByZWRpY3RlZFR5
cGUgZ2V0R2xvYmFsVmFyUHJlZGljdGlvbih1bnNpZ25lZCB2YXJOdW1iZXIpCisgICAgeworCUhh
c2hNYXA8dW5zaWduZWQsIFByZWRpY3Rpb25TbG90Pjo6aXRlcmF0b3IgaXRlciA9IG1fZ2xvYmFs
VmFyUHJlZGljdGlvbnMuZmluZCh2YXJOdW1iZXIgKyAxKTsKKwlpZiAoaXRlciA9PSBtX2dsb2Jh
bFZhclByZWRpY3Rpb25zLmVuZCgpKQorCSAgICByZXR1cm4gUHJlZGljdE5vbmU7CisJcmV0dXJu
IGl0ZXItPnNlY29uZC5tX3ZhbHVlOworICAgIH0KKyAgICAKKyAgICBQcmVkaWN0ZWRUeXBlIGdl
dFByZWRpY3Rpb24oTm9kZSYgbm9kZSkKKyAgICB7CisJTm9kZSogbm9kZVB0ciA9ICZub2RlOwor
CQorICAgICAgICBpZiAobm9kZVB0ci0+b3AgPT0gVmFsdWVUb051bWJlcikKKyAgICAgICAgICAg
IG5vZGVQdHIgPSAmKCp0aGlzKVtub2RlUHRyLT5jaGlsZDEoKV07CisKKyAgICAgICAgaWYgKG5v
ZGVQdHItPm9wID09IFZhbHVlVG9JbnQzMikKKyAgICAgICAgICAgIG5vZGVQdHIgPSAmKCp0aGlz
KVtub2RlUHRyLT5jaGlsZDEoKV07CisJCisJc3dpdGNoIChub2RlUHRyLT5vcCkgeworCWNhc2Ug
R2V0TG9jYWw6CisJICAgIHJldHVybiBnZXRQcmVkaWN0aW9uKG5vZGVQdHItPmxvY2FsKCkpOwor
CWNhc2UgR2V0R2xvYmFsVmFyOgorCSAgICByZXR1cm4gZ2V0R2xvYmFsVmFyUHJlZGljdGlvbihu
b2RlUHRyLT52YXJOdW1iZXIoKSk7CisJZGVmYXVsdDoKKwkgICAgcmV0dXJuIFByZWRpY3ROb25l
OworCX0KKyAgICB9CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgKm9w
TmFtZShOb2RlVHlwZSk7CkBAIC0yMjMsNiArMjc3LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3Rv
cjxQcmVkaWN0aW9uU2xvdCwgMTY+IG1fYXJndW1lbnRQcmVkaWN0aW9uczsKICAgICBWZWN0b3I8
UHJlZGljdGlvblNsb3QsIDE2PiBtX3ZhcmlhYmxlUHJlZGljdGlvbnM7CisgICAgSGFzaE1hcDx1
bnNpZ25lZCwgUHJlZGljdGlvblNsb3Q+IG1fZ2xvYmFsVmFyUHJlZGljdGlvbnM7CiB9OwogCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gOTI1NzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjU0LDcgKzY1NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICB9CiAKICAgICBjYXNlIFZhbHVlVG9OdW1iZXI6IHsKLSAgICAgICAgaWYgKGlzSW50
ZWdlcihub2RlLmNoaWxkMSgpKSkgeworICAgICAgICBpZiAoc2hvdWxkU3BlY3VsYXRlSW50ZWdl
cihub2RlLmNoaWxkMSgpKSkgewogICAgICAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQg
b3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzLCBvcDEpOwogICAgICAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5n
cHIoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCShyZXZpc2lvbiA5MjU3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDggKzE1NSwxOSBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSB8IERhdGFGb3JtYXRK
UykgPT0gRGF0YUZvcm1hdEpTSW50ZWdlcgogICAgICAgICAgICAgfHwgKGluZm8uc3BpbGxGb3Jt
YXQoKSB8IERhdGFGb3JtYXRKUykgPT0gRGF0YUZvcm1hdEpTSW50ZWdlcjsKICAgICB9CisgICAg
CisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKE5vZGVJbmRleCBub2RlSW5kZXgpCisg
ICAgeworCWlmIChpc0ludGVnZXIobm9kZUluZGV4KSkKKwkgICAgcmV0dXJuIHRydWU7CisJCisJ
aWYgKGlzSW50MzJQcmVkaWN0aW9uKG1faml0LmdyYXBoKCkuZ2V0UHJlZGljdGlvbihtX2ppdC5n
cmFwaCgpW25vZGVJbmRleF0pKSkKKwkgICAgcmV0dXJuIHRydWU7CisJCisJcmV0dXJuIGZhbHNl
OworICAgIH0KIAotICAgIGJvb2wgaXNSZWdpc3RlckRhdGFGb3JtYXREb3VibGUoTm9kZUluZGV4
IG5vZGVJbmRleCkKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZURvdWJsZShOb2RlSW5kZXggbm9k
ZUluZGV4KQogICAgIHsKICAgICAgICAgTm9kZSYgbm9kZSA9IG1faml0LmdyYXBoKClbbm9kZUlu
ZGV4XTsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUudmly
dHVhbFJlZ2lzdGVyKCk7CkBAIC0xNjYsNyArMTc3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHx8IChpbmZvLnNwaWxsRm9ybWF0KCkgfCBEYXRhRm9ybWF0SlMpID09IERhdGFGb3JtYXRKU0Rv
dWJsZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKLSAgICAgICAgaWYgKG5v
ZGUub3AgPT0gR2V0TG9jYWwgJiYgaXNEb3VibGVQcmVkaWN0aW9uKG1faml0LmdyYXBoKCkuZ2V0
UHJlZGljdGlvbihub2RlLmxvY2FsKCkpKSkKKyAgICAgICAgaWYgKGlzRG91YmxlUHJlZGljdGlv
bihtX2ppdC5ncmFwaCgpLmdldFByZWRpY3Rpb24obm9kZSkpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzQsNyArMTg1LDcg
QEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUludGVnZXIoTm9kZUlu
ZGV4IG9wMSwgTm9kZUluZGV4IG9wMikKICAgICB7Ci0gICAgICAgIHJldHVybiAhKGlzUmVnaXN0
ZXJEYXRhRm9ybWF0RG91YmxlKG9wMSkgfHwgaXNSZWdpc3RlckRhdGFGb3JtYXREb3VibGUob3Ay
KSkgJiYgKGlzSW50ZWdlcihvcDEpIHx8IGlzSW50ZWdlcihvcDIpKTsKKyAgICAgICAgcmV0dXJu
ICEoc2hvdWxkU3BlY3VsYXRlRG91YmxlKG9wMSkgfHwgc2hvdWxkU3BlY3VsYXRlRG91YmxlKG9w
MikpICYmIChzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG9wMSkgfHwgc2hvdWxkU3BlY3VsYXRlSW50
ZWdlcihvcDIpKTsKICAgICB9CiAKICAgICBib29sIGNvbXBhcmUoTm9kZSYsIE1hY3JvQXNzZW1i
bGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9u
LCBaX0RGR09wZXJhdGlvbl9FSkopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103176</attachid>
            <date>2011-08-07 03:19:25 -0700</date>
            <delta_ts>2011-08-07 03:23:02 -0700</delta_ts>
            <desc>the patch (fix tabs)</desc>
            <filename>specglobalvar_patch_2.diff</filename>
            <type>text/plain</type>
            <size>9963</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTI1NzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAK
KzIwMTEtMDgtMDcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgSklUIGRvZXMgbm90IHRyYWNrIHNwZWN1bGF0aW9uIGRlY2lzaW9ucyBmb3IgZ2xvYmFsIHZh
cmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjU4MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisg
ICAgICAgIEFkZGVkIHRoZSBjYXBhYmlsaXR5IHRvIHRyYWNrIHByZWRpY3Rpb25zIGZvciBnbG9i
YWwgdmFyaWFibGVzLCBhbmQKKyAgICAgICAgZW5zdXJlZCB0aGF0IGNvZGUgY2FuIGFic3RyYWN0
IG92ZXIgdGhlIHNvdXJjZSBvZiBwcmVkaWN0aW9uIChsb2NhbAorICAgICAgICB2ZXJzdXMgZ2xv
YmFsIHZhcmlhYmxlKSB3aGVyZXZlciBpdCBpcyBhcHByb3ByaWF0ZSB0byBkbyBzby4gIEFsc28K
KyAgICAgICAgY2xlYW5lZCB1cCB0aGUgY29kZSBpbiBTcGVjdWxhdGl2ZUpJVCB0aGF0IGRlY2lk
ZXMgaG93IHRvIHNwZWN1bGF0ZQorICAgICAgICBiYXNlZCBvbiByZWNvcmRlZCBwcmVkaWN0aW9u
cyAoZm9yIGV4YW1wbGUgaW5zdGVhZCBvZiB1c2luZyBpc0ludGVnZXIsCisgICAgICAgIHdoaWNo
IG1ha2VzIHNlbnNlIGZvciBsb2NhbCBwcmVkaWN0aW9ucyB3aGVyZSB0aGUgR2V0TG9jYWwgd291
bGQKKyAgICAgICAgcmV0dXJuIGFuIGludGVnZXIgdmFsdWUsIHdlIG5vdyB0ZW5kIHRvIHVzZSBz
aG91bGRTcGVjdWxhdGVJbnRlZ2VyLAorICAgICAgICB3aGljaCBjaGVja3MgaWYgdGhlIHZhbHVl
IGlzIGVpdGhlciBhbHJlYWR5IGFuIGludGVnZXIgb3Igc2hvdWxkIGJlCisgICAgICAgIHNwZWN1
bGF0ZWQgdG8gYmUgYW4gaW50ZWdlcikuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGFuIDAu
OCUgd2luIG9uIFN1blNwaWRlciwgYWxtb3N0IGVudGlyZWx5IHRoYW5rcyB0byBhIDI1JQorICAg
ICAgICB3aW4gb24gY29udHJvbGZsb3ctcmVjdXJzaXZlLiAgSXQncyBhbHNvIGEgNC44JSB3aW4g
b24gdjgtY3J5cHRvLgorCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cHJlZGljdEFycmF5KToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cHJlZGljdEludDMyKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0dyYXBo
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6CisgICAgICAgICogZGZnL0RG
R0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnByZWRpY3RHbG9iYWxWYXIpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpwcmVkaWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpH
cmFwaDo6Z2V0R2xvYmFsVmFyUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmdldFByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6c2hvdWxkU3BlY3VsYXRlRG91YmxlKToKKwogMjAxMS0wOC0wNiAgR2F2aW4gQmFycmFj
bG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1ODIxCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gOTI1NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDMwLDEwICs0MzAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwcmVkaWN0QXJy
YXkoTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICB7Ci0gICAgICAgIE5vZGUqIG5vZGVQdHIgPSAm
bV9ncmFwaFtub2RlSW5kZXhdOwotCi0gICAgICAgIGlmIChub2RlUHRyLT5vcCA9PSBHZXRMb2Nh
bCkKLSAgICAgICAgICAgIG1fZ3JhcGgucHJlZGljdChub2RlUHRyLT5sb2NhbCgpLCBQcmVkaWN0
QXJyYXkpOworICAgICAgICBtX2dyYXBoLnByZWRpY3QobV9ncmFwaFtub2RlSW5kZXhdLCBQcmVk
aWN0QXJyYXkpOwogICAgIH0KIAogICAgIHZvaWQgcHJlZGljdEludDMyKE5vZGVJbmRleCBub2Rl
SW5kZXgpCkBAIC00NDUsOSArNDQyLDggQEAgcHJpdmF0ZToKIAogICAgICAgICBpZiAobm9kZVB0
ci0+b3AgPT0gVmFsdWVUb0ludDMyKQogICAgICAgICAgICAgbm9kZVB0ciA9ICZtX2dyYXBoW25v
ZGVQdHItPmNoaWxkMSgpXTsKLQotICAgICAgICBpZiAobm9kZVB0ci0+b3AgPT0gR2V0TG9jYWwp
Ci0gICAgICAgICAgICBtX2dyYXBoLnByZWRpY3Qobm9kZVB0ci0+bG9jYWwoKSwgUHJlZGljdElu
dDMyKTsKKyAgICAgICAgCisgICAgICAgIG1fZ3JhcGgucHJlZGljdCgqbm9kZVB0ciwgUHJlZGlj
dEludDMyKTsKICAgICB9CiAKICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKQEAgLTcw
MSwxMyArNjk3LDEzIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQK
ICAgICAgICAgICAgIE5vZGVJbmRleCBvcDIgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZCk7CiAgICAgICAgICAgICAvLyBJZiBib3RoIG9wZXJhbmRzIGNhbiBzdGF0aWNhbGx5
IGJlIGRldGVybWluZWQgdG8gdGhlIG51bWJlcnMsIHRoZW4gdGhpcyBpcyBhbiBhcml0aG1ldGlj
IGFkZC4KICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgd2UgbXVzdCBhc3N1bWUgdGhpcyBtYXkg
YmUgcGVyZm9ybWluZyBhIGNvbmNhdGVuYXRpb24gdG8gYSBzdHJpbmcuCi0gICAgICAgICAgICBp
ZiAobV9ncmFwaFtvcDFdLmhhc051bWVyaWNSZXN1bHQoKSAmJiBtX2dyYXBoW29wMl0uaGFzTnVt
ZXJpY1Jlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzU21hbGxJbnQzMkNvbnN0YW50
KG9wMSkgfHwgaXNTbWFsbEludDMyQ29uc3RhbnQob3AyKSkgewotICAgICAgICAgICAgICAgICAg
ICBwcmVkaWN0SW50MzIob3AxKTsKLSAgICAgICAgICAgICAgICAgICAgcHJlZGljdEludDMyKG9w
Mik7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzU21hbGxJbnQzMkNvbnN0
YW50KG9wMSkgfHwgaXNTbWFsbEludDMyQ29uc3RhbnQob3AyKSkgeworICAgICAgICAgICAgICAg
IHByZWRpY3RJbnQzMihvcDEpOworICAgICAgICAgICAgICAgIHByZWRpY3RJbnQzMihvcDIpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1fZ3JhcGhbb3AxXS5oYXNOdW1lcmljUmVz
dWx0KCkgJiYgbV9ncmFwaFtvcDJdLmhhc051bWVyaWNSZXN1bHQoKSkKICAgICAgICAgICAgICAg
ICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgYWRkVG9HcmFwaChBcml0aEFk
ZCwgdG9OdW1iZXIob3AxKSwgdG9OdW1iZXIob3AyKSkpOwotICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoVmFsdWVBZGQsIG9wMSwgb3AyKSk7CiAgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9hZGQpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gOTI1NzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiw4IEBA
IHZvaWQgR3JhcGg6OmR1bXAoTm9kZUluZGV4IG5vZGVJbmRleCwgQ28KICAgICAKICAgICBpZiAo
bm9kZS5oYXNMb2NhbCgpKQogICAgICAgICBwcmludGYoIiAgcHJlZGljdGluZyAlcyIsIHByZWRp
Y3Rpb25Ub1N0cmluZyhnZXRQcmVkaWN0aW9uKG5vZGUubG9jYWwoKSkpKTsKKyAgICBpZiAobm9k
ZS5oYXNWYXJOdW1iZXIoKSkKKyAgICAgICAgcHJpbnRmKCIgIHByZWRpY3RpbmcgJXMiLCBwcmVk
aWN0aW9uVG9TdHJpbmcoZ2V0R2xvYmFsVmFyUHJlZGljdGlvbihub2RlLnZhck51bWJlcigpKSkp
OwogICAgIAogICAgIHByaW50ZigiXG4iKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmgJKHJldmlzaW9uIDkyNTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRl
IDxSZWdpc3RlckZpbGUuaD4KICNpbmNsdWRlIDxkZmcvREZHTm9kZS5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KIApAQCAtMTk0LDcgKzE5NSwzMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBt
X2FyZ3VtZW50UHJlZGljdGlvbnNbYXJndW1lbnRdLm1fdmFsdWUgfD0gcHJlZGljdGlvbjsKICAg
ICAgICAgfSBlbHNlIGlmICgodW5zaWduZWQpb3BlcmFuZCA8IG1fdmFyaWFibGVQcmVkaWN0aW9u
cy5zaXplKCkpCiAgICAgICAgICAgICBtX3ZhcmlhYmxlUHJlZGljdGlvbnNbb3BlcmFuZF0ubV92
YWx1ZSB8PSBwcmVkaWN0aW9uOwotICAgICAgICAgICAgCisgICAgfQorICAgIAorICAgIHZvaWQg
cHJlZGljdEdsb2JhbFZhcih1bnNpZ25lZCB2YXJOdW1iZXIsIFByZWRpY3RlZFR5cGUgcHJlZGlj
dGlvbikKKyAgICB7CisgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIFByZWRpY3Rpb25TbG90Pjo6
aXRlcmF0b3IgaXRlciA9IG1fZ2xvYmFsVmFyUHJlZGljdGlvbnMuZmluZCh2YXJOdW1iZXIgKyAx
KTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV9nbG9iYWxWYXJQcmVkaWN0aW9ucy5lbmQoKSkgewor
ICAgICAgICAgICAgUHJlZGljdGlvblNsb3QgcHJlZGljdGlvblNsb3Q7CisgICAgICAgICAgICBw
cmVkaWN0aW9uU2xvdC5tX3ZhbHVlIHw9IHByZWRpY3Rpb247CisgICAgICAgICAgICBtX2dsb2Jh
bFZhclByZWRpY3Rpb25zLmFkZCh2YXJOdW1iZXIgKyAxLCBwcmVkaWN0aW9uU2xvdCk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgaXRlci0+c2Vjb25kLm1fdmFsdWUgfD0gcHJlZGljdGlv
bjsKKyAgICB9CisgICAgCisgICAgdm9pZCBwcmVkaWN0KE5vZGUmIG5vZGUsIFByZWRpY3RlZFR5
cGUgcHJlZGljdGlvbikKKyAgICB7CisgICAgICAgIHN3aXRjaCAobm9kZS5vcCkgeworICAgICAg
ICBjYXNlIEdldExvY2FsOgorICAgICAgICAgICAgcHJlZGljdChub2RlLmxvY2FsKCksIHByZWRp
Y3Rpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0R2xvYmFsVmFyOgor
ICAgICAgICAgICAgcHJlZGljdEdsb2JhbFZhcihub2RlLnZhck51bWJlcigpLCBwcmVkaWN0aW9u
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICB9CiAKICAgICBQcmVkaWN0ZWRUeXBlIGdldFByZWRpY3Rpb24o
aW50IG9wZXJhbmQpCkBAIC0yMDcsNiArMjMyLDM0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiBtX3ZhcmlhYmxlUHJlZGljdGlvbnNbb3BlcmFuZF0ubV92YWx1ZTsKICAgICAgICAgcmV0
dXJuIFByZWRpY3ROb25lOwogICAgIH0KKyAgICAKKyAgICBQcmVkaWN0ZWRUeXBlIGdldEdsb2Jh
bFZhclByZWRpY3Rpb24odW5zaWduZWQgdmFyTnVtYmVyKQorICAgIHsKKyAgICAgICAgSGFzaE1h
cDx1bnNpZ25lZCwgUHJlZGljdGlvblNsb3Q+OjppdGVyYXRvciBpdGVyID0gbV9nbG9iYWxWYXJQ
cmVkaWN0aW9ucy5maW5kKHZhck51bWJlciArIDEpOworICAgICAgICBpZiAoaXRlciA9PSBtX2ds
b2JhbFZhclByZWRpY3Rpb25zLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIFByZWRpY3ROb25l
OworICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kLm1fdmFsdWU7CisgICAgfQorICAgIAorICAg
IFByZWRpY3RlZFR5cGUgZ2V0UHJlZGljdGlvbihOb2RlJiBub2RlKQorICAgIHsKKyAgICAgICAg
Tm9kZSogbm9kZVB0ciA9ICZub2RlOworICAgICAgICAKKyAgICAgICAgaWYgKG5vZGVQdHItPm9w
ID09IFZhbHVlVG9OdW1iZXIpCisgICAgICAgICAgICBub2RlUHRyID0gJigqdGhpcylbbm9kZVB0
ci0+Y2hpbGQxKCldOworCisgICAgICAgIGlmIChub2RlUHRyLT5vcCA9PSBWYWx1ZVRvSW50MzIp
CisgICAgICAgICAgICBub2RlUHRyID0gJigqdGhpcylbbm9kZVB0ci0+Y2hpbGQxKCldOworCQor
ICAgICAgICBzd2l0Y2ggKG5vZGVQdHItPm9wKSB7CisgICAgICAgIGNhc2UgR2V0TG9jYWw6Cisg
ICAgICAgICAgICByZXR1cm4gZ2V0UHJlZGljdGlvbihub2RlUHRyLT5sb2NhbCgpKTsKKyAgICAg
ICAgY2FzZSBHZXRHbG9iYWxWYXI6CisgICAgICAgICAgICByZXR1cm4gZ2V0R2xvYmFsVmFyUHJl
ZGljdGlvbihub2RlUHRyLT52YXJOdW1iZXIoKSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gUHJlZGljdE5vbmU7CisgICAgICAgIH0KKyAgICB9CiAKICNpZm5kZWYgTkRF
QlVHCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgKm9wTmFtZShOb2RlVHlwZSk7CkBAIC0yMjMsNiAr
Mjc2LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxQcmVkaWN0aW9uU2xvdCwgMTY+IG1fYXJn
dW1lbnRQcmVkaWN0aW9uczsKICAgICBWZWN0b3I8UHJlZGljdGlvblNsb3QsIDE2PiBtX3Zhcmlh
YmxlUHJlZGljdGlvbnM7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgUHJlZGljdGlvblNsb3Q+IG1f
Z2xvYmFsVmFyUHJlZGljdGlvbnM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkocmV2aXNpb24gOTI1NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU0LDcgKzY1NCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICB9CiAKICAgICBjYXNlIFZhbHVl
VG9OdW1iZXI6IHsKLSAgICAgICAgaWYgKGlzSW50ZWdlcihub2RlLmNoaWxkMSgpKSkgeworICAg
ICAgICBpZiAoc2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlLmNoaWxkMSgpKSkgewogICAgICAg
ICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwog
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwogICAgICAgICAgICAg
bV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiA5MjU3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTU1LDggKzE1NSwxOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gKGluZm8u
cmVnaXN0ZXJGb3JtYXQoKSB8IERhdGFGb3JtYXRKUykgPT0gRGF0YUZvcm1hdEpTSW50ZWdlcgog
ICAgICAgICAgICAgfHwgKGluZm8uc3BpbGxGb3JtYXQoKSB8IERhdGFGb3JtYXRKUykgPT0gRGF0
YUZvcm1hdEpTSW50ZWdlcjsKICAgICB9CisgICAgCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVJ
bnRlZ2VyKE5vZGVJbmRleCBub2RlSW5kZXgpCisgICAgeworICAgICAgICBpZiAoaXNJbnRlZ2Vy
KG5vZGVJbmRleCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAg
IGlmIChpc0ludDMyUHJlZGljdGlvbihtX2ppdC5ncmFwaCgpLmdldFByZWRpY3Rpb24obV9qaXQu
Z3JhcGgoKVtub2RlSW5kZXhdKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKLSAgICBib29sIGlzUmVnaXN0ZXJEYXRh
Rm9ybWF0RG91YmxlKE5vZGVJbmRleCBub2RlSW5kZXgpCisgICAgYm9vbCBzaG91bGRTcGVjdWxh
dGVEb3VibGUoTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICB7CiAgICAgICAgIE5vZGUmIG5vZGUg
PSBtX2ppdC5ncmFwaCgpW25vZGVJbmRleF07CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0
dWFsUmVnaXN0ZXIgPSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOwpAQCAtMTY2LDcgKzE3Nyw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICB8fCAoaW5mby5zcGlsbEZvcm1hdCgpIHwgRGF0YUZvcm1h
dEpTKSA9PSBEYXRhRm9ybWF0SlNEb3VibGUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgCi0gICAgICAgIGlmIChub2RlLm9wID09IEdldExvY2FsICYmIGlzRG91YmxlUHJlZGlj
dGlvbihtX2ppdC5ncmFwaCgpLmdldFByZWRpY3Rpb24obm9kZS5sb2NhbCgpKSkpCisgICAgICAg
IGlmIChpc0RvdWJsZVByZWRpY3Rpb24obV9qaXQuZ3JhcGgoKS5nZXRQcmVkaWN0aW9uKG5vZGUp
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTc0LDcgKzE4NSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgYm9vbCBzaG91bGRT
cGVjdWxhdGVJbnRlZ2VyKE5vZGVJbmRleCBvcDEsIE5vZGVJbmRleCBvcDIpCiAgICAgewotICAg
ICAgICByZXR1cm4gIShpc1JlZ2lzdGVyRGF0YUZvcm1hdERvdWJsZShvcDEpIHx8IGlzUmVnaXN0
ZXJEYXRhRm9ybWF0RG91YmxlKG9wMikpICYmIChpc0ludGVnZXIob3AxKSB8fCBpc0ludGVnZXIo
b3AyKSk7CisgICAgICAgIHJldHVybiAhKHNob3VsZFNwZWN1bGF0ZURvdWJsZShvcDEpIHx8IHNo
b3VsZFNwZWN1bGF0ZURvdWJsZShvcDIpKSAmJiAoc2hvdWxkU3BlY3VsYXRlSW50ZWdlcihvcDEp
IHx8IHNob3VsZFNwZWN1bGF0ZUludGVnZXIob3AyKSk7CiAgICAgfQogCiAgICAgYm9vbCBjb21w
YXJlKE5vZGUmLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiwgTWFjcm9Bc3Nl
bWJsZXI6OkRvdWJsZUNvbmRpdGlvbiwgWl9ERkdPcGVyYXRpb25fRUpKKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103177</attachid>
            <date>2011-08-07 03:23:02 -0700</date>
            <delta_ts>2011-08-08 05:51:14 -0700</delta_ts>
            <desc>the patch (fix more tabs)</desc>
            <filename>specglobalvar_patch_3.diff</filename>
            <type>text/plain</type>
            <size>9970</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTI1NzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAK
KzIwMTEtMDgtMDcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgSklUIGRvZXMgbm90IHRyYWNrIHNwZWN1bGF0aW9uIGRlY2lzaW9ucyBmb3IgZ2xvYmFsIHZh
cmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjU4MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisg
ICAgICAgIEFkZGVkIHRoZSBjYXBhYmlsaXR5IHRvIHRyYWNrIHByZWRpY3Rpb25zIGZvciBnbG9i
YWwgdmFyaWFibGVzLCBhbmQKKyAgICAgICAgZW5zdXJlZCB0aGF0IGNvZGUgY2FuIGFic3RyYWN0
IG92ZXIgdGhlIHNvdXJjZSBvZiBwcmVkaWN0aW9uIChsb2NhbAorICAgICAgICB2ZXJzdXMgZ2xv
YmFsIHZhcmlhYmxlKSB3aGVyZXZlciBpdCBpcyBhcHByb3ByaWF0ZSB0byBkbyBzby4gIEFsc28K
KyAgICAgICAgY2xlYW5lZCB1cCB0aGUgY29kZSBpbiBTcGVjdWxhdGl2ZUpJVCB0aGF0IGRlY2lk
ZXMgaG93IHRvIHNwZWN1bGF0ZQorICAgICAgICBiYXNlZCBvbiByZWNvcmRlZCBwcmVkaWN0aW9u
cyAoZm9yIGV4YW1wbGUgaW5zdGVhZCBvZiB1c2luZyBpc0ludGVnZXIsCisgICAgICAgIHdoaWNo
IG1ha2VzIHNlbnNlIGZvciBsb2NhbCBwcmVkaWN0aW9ucyB3aGVyZSB0aGUgR2V0TG9jYWwgd291
bGQKKyAgICAgICAgcmV0dXJuIGFuIGludGVnZXIgdmFsdWUsIHdlIG5vdyB0ZW5kIHRvIHVzZSBz
aG91bGRTcGVjdWxhdGVJbnRlZ2VyLAorICAgICAgICB3aGljaCBjaGVja3MgaWYgdGhlIHZhbHVl
IGlzIGVpdGhlciBhbHJlYWR5IGFuIGludGVnZXIgb3Igc2hvdWxkIGJlCisgICAgICAgIHNwZWN1
bGF0ZWQgdG8gYmUgYW4gaW50ZWdlcikuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGFuIDAu
OCUgd2luIG9uIFN1blNwaWRlciwgYWxtb3N0IGVudGlyZWx5IHRoYW5rcyB0byBhIDI1JQorICAg
ICAgICB3aW4gb24gY29udHJvbGZsb3ctcmVjdXJzaXZlLiAgSXQncyBhbHNvIGEgNC44JSB3aW4g
b24gdjgtY3J5cHRvLgorCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cHJlZGljdEFycmF5KToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cHJlZGljdEludDMyKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0dyYXBo
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6CisgICAgICAgICogZGZnL0RG
R0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnByZWRpY3RHbG9iYWxWYXIpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpwcmVkaWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpH
cmFwaDo6Z2V0R2xvYmFsVmFyUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmdldFByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6c2hvdWxkU3BlY3VsYXRlRG91YmxlKToKKwogMjAxMS0wOC0wNiAgR2F2aW4gQmFycmFj
bG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1ODIxCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gOTI1NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDMwLDEwICs0MzAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwcmVkaWN0QXJy
YXkoTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICB7Ci0gICAgICAgIE5vZGUqIG5vZGVQdHIgPSAm
bV9ncmFwaFtub2RlSW5kZXhdOwotCi0gICAgICAgIGlmIChub2RlUHRyLT5vcCA9PSBHZXRMb2Nh
bCkKLSAgICAgICAgICAgIG1fZ3JhcGgucHJlZGljdChub2RlUHRyLT5sb2NhbCgpLCBQcmVkaWN0
QXJyYXkpOworICAgICAgICBtX2dyYXBoLnByZWRpY3QobV9ncmFwaFtub2RlSW5kZXhdLCBQcmVk
aWN0QXJyYXkpOwogICAgIH0KIAogICAgIHZvaWQgcHJlZGljdEludDMyKE5vZGVJbmRleCBub2Rl
SW5kZXgpCkBAIC00NDUsOSArNDQyLDggQEAgcHJpdmF0ZToKIAogICAgICAgICBpZiAobm9kZVB0
ci0+b3AgPT0gVmFsdWVUb0ludDMyKQogICAgICAgICAgICAgbm9kZVB0ciA9ICZtX2dyYXBoW25v
ZGVQdHItPmNoaWxkMSgpXTsKLQotICAgICAgICBpZiAobm9kZVB0ci0+b3AgPT0gR2V0TG9jYWwp
Ci0gICAgICAgICAgICBtX2dyYXBoLnByZWRpY3Qobm9kZVB0ci0+bG9jYWwoKSwgUHJlZGljdElu
dDMyKTsKKyAgICAgICAgCisgICAgICAgIG1fZ3JhcGgucHJlZGljdCgqbm9kZVB0ciwgUHJlZGlj
dEludDMyKTsKICAgICB9CiAKICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKQEAgLTcw
MSwxMyArNjk3LDEzIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQK
ICAgICAgICAgICAgIE5vZGVJbmRleCBvcDIgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZCk7CiAgICAgICAgICAgICAvLyBJZiBib3RoIG9wZXJhbmRzIGNhbiBzdGF0aWNhbGx5
IGJlIGRldGVybWluZWQgdG8gdGhlIG51bWJlcnMsIHRoZW4gdGhpcyBpcyBhbiBhcml0aG1ldGlj
IGFkZC4KICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgd2UgbXVzdCBhc3N1bWUgdGhpcyBtYXkg
YmUgcGVyZm9ybWluZyBhIGNvbmNhdGVuYXRpb24gdG8gYSBzdHJpbmcuCi0gICAgICAgICAgICBp
ZiAobV9ncmFwaFtvcDFdLmhhc051bWVyaWNSZXN1bHQoKSAmJiBtX2dyYXBoW29wMl0uaGFzTnVt
ZXJpY1Jlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzU21hbGxJbnQzMkNvbnN0YW50
KG9wMSkgfHwgaXNTbWFsbEludDMyQ29uc3RhbnQob3AyKSkgewotICAgICAgICAgICAgICAgICAg
ICBwcmVkaWN0SW50MzIob3AxKTsKLSAgICAgICAgICAgICAgICAgICAgcHJlZGljdEludDMyKG9w
Mik7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzU21hbGxJbnQzMkNvbnN0
YW50KG9wMSkgfHwgaXNTbWFsbEludDMyQ29uc3RhbnQob3AyKSkgeworICAgICAgICAgICAgICAg
IHByZWRpY3RJbnQzMihvcDEpOworICAgICAgICAgICAgICAgIHByZWRpY3RJbnQzMihvcDIpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1fZ3JhcGhbb3AxXS5oYXNOdW1lcmljUmVz
dWx0KCkgJiYgbV9ncmFwaFtvcDJdLmhhc051bWVyaWNSZXN1bHQoKSkKICAgICAgICAgICAgICAg
ICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgYWRkVG9HcmFwaChBcml0aEFk
ZCwgdG9OdW1iZXIob3AxKSwgdG9OdW1iZXIob3AyKSkpOwotICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoVmFsdWVBZGQsIG9wMSwgb3AyKSk7CiAgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9hZGQpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gOTI1NzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiw4IEBA
IHZvaWQgR3JhcGg6OmR1bXAoTm9kZUluZGV4IG5vZGVJbmRleCwgQ28KICAgICAKICAgICBpZiAo
bm9kZS5oYXNMb2NhbCgpKQogICAgICAgICBwcmludGYoIiAgcHJlZGljdGluZyAlcyIsIHByZWRp
Y3Rpb25Ub1N0cmluZyhnZXRQcmVkaWN0aW9uKG5vZGUubG9jYWwoKSkpKTsKKyAgICBpZiAobm9k
ZS5oYXNWYXJOdW1iZXIoKSkKKyAgICAgICAgcHJpbnRmKCIgIHByZWRpY3RpbmcgJXMiLCBwcmVk
aWN0aW9uVG9TdHJpbmcoZ2V0R2xvYmFsVmFyUHJlZGljdGlvbihub2RlLnZhck51bWJlcigpKSkp
OwogICAgIAogICAgIHByaW50ZigiXG4iKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmgJKHJldmlzaW9uIDkyNTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRl
IDxSZWdpc3RlckZpbGUuaD4KICNpbmNsdWRlIDxkZmcvREZHTm9kZS5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KIApAQCAtMTk0LDcgKzE5NSwzMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBt
X2FyZ3VtZW50UHJlZGljdGlvbnNbYXJndW1lbnRdLm1fdmFsdWUgfD0gcHJlZGljdGlvbjsKICAg
ICAgICAgfSBlbHNlIGlmICgodW5zaWduZWQpb3BlcmFuZCA8IG1fdmFyaWFibGVQcmVkaWN0aW9u
cy5zaXplKCkpCiAgICAgICAgICAgICBtX3ZhcmlhYmxlUHJlZGljdGlvbnNbb3BlcmFuZF0ubV92
YWx1ZSB8PSBwcmVkaWN0aW9uOwotICAgICAgICAgICAgCisgICAgfQorICAgIAorICAgIHZvaWQg
cHJlZGljdEdsb2JhbFZhcih1bnNpZ25lZCB2YXJOdW1iZXIsIFByZWRpY3RlZFR5cGUgcHJlZGlj
dGlvbikKKyAgICB7CisgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIFByZWRpY3Rpb25TbG90Pjo6
aXRlcmF0b3IgaXRlciA9IG1fZ2xvYmFsVmFyUHJlZGljdGlvbnMuZmluZCh2YXJOdW1iZXIgKyAx
KTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV9nbG9iYWxWYXJQcmVkaWN0aW9ucy5lbmQoKSkgewor
ICAgICAgICAgICAgUHJlZGljdGlvblNsb3QgcHJlZGljdGlvblNsb3Q7CisgICAgICAgICAgICBw
cmVkaWN0aW9uU2xvdC5tX3ZhbHVlIHw9IHByZWRpY3Rpb247CisgICAgICAgICAgICBtX2dsb2Jh
bFZhclByZWRpY3Rpb25zLmFkZCh2YXJOdW1iZXIgKyAxLCBwcmVkaWN0aW9uU2xvdCk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgaXRlci0+c2Vjb25kLm1fdmFsdWUgfD0gcHJlZGljdGlv
bjsKKyAgICB9CisgICAgCisgICAgdm9pZCBwcmVkaWN0KE5vZGUmIG5vZGUsIFByZWRpY3RlZFR5
cGUgcHJlZGljdGlvbikKKyAgICB7CisgICAgICAgIHN3aXRjaCAobm9kZS5vcCkgeworICAgICAg
ICBjYXNlIEdldExvY2FsOgorICAgICAgICAgICAgcHJlZGljdChub2RlLmxvY2FsKCksIHByZWRp
Y3Rpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0R2xvYmFsVmFyOgor
ICAgICAgICAgICAgcHJlZGljdEdsb2JhbFZhcihub2RlLnZhck51bWJlcigpLCBwcmVkaWN0aW9u
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICB9CiAKICAgICBQcmVkaWN0ZWRUeXBlIGdldFByZWRpY3Rpb24o
aW50IG9wZXJhbmQpCkBAIC0yMDcsNiArMjMyLDM0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiBtX3ZhcmlhYmxlUHJlZGljdGlvbnNbb3BlcmFuZF0ubV92YWx1ZTsKICAgICAgICAgcmV0
dXJuIFByZWRpY3ROb25lOwogICAgIH0KKyAgICAKKyAgICBQcmVkaWN0ZWRUeXBlIGdldEdsb2Jh
bFZhclByZWRpY3Rpb24odW5zaWduZWQgdmFyTnVtYmVyKQorICAgIHsKKyAgICAgICAgSGFzaE1h
cDx1bnNpZ25lZCwgUHJlZGljdGlvblNsb3Q+OjppdGVyYXRvciBpdGVyID0gbV9nbG9iYWxWYXJQ
cmVkaWN0aW9ucy5maW5kKHZhck51bWJlciArIDEpOworICAgICAgICBpZiAoaXRlciA9PSBtX2ds
b2JhbFZhclByZWRpY3Rpb25zLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIFByZWRpY3ROb25l
OworICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kLm1fdmFsdWU7CisgICAgfQorICAgIAorICAg
IFByZWRpY3RlZFR5cGUgZ2V0UHJlZGljdGlvbihOb2RlJiBub2RlKQorICAgIHsKKyAgICAgICAg
Tm9kZSogbm9kZVB0ciA9ICZub2RlOworICAgICAgICAKKyAgICAgICAgaWYgKG5vZGVQdHItPm9w
ID09IFZhbHVlVG9OdW1iZXIpCisgICAgICAgICAgICBub2RlUHRyID0gJigqdGhpcylbbm9kZVB0
ci0+Y2hpbGQxKCldOworCisgICAgICAgIGlmIChub2RlUHRyLT5vcCA9PSBWYWx1ZVRvSW50MzIp
CisgICAgICAgICAgICBub2RlUHRyID0gJigqdGhpcylbbm9kZVB0ci0+Y2hpbGQxKCldOworICAg
ICAgICAKKyAgICAgICAgc3dpdGNoIChub2RlUHRyLT5vcCkgeworICAgICAgICBjYXNlIEdldExv
Y2FsOgorICAgICAgICAgICAgcmV0dXJuIGdldFByZWRpY3Rpb24obm9kZVB0ci0+bG9jYWwoKSk7
CisgICAgICAgIGNhc2UgR2V0R2xvYmFsVmFyOgorICAgICAgICAgICAgcmV0dXJuIGdldEdsb2Jh
bFZhclByZWRpY3Rpb24obm9kZVB0ci0+dmFyTnVtYmVyKCkpOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgcmV0dXJuIFByZWRpY3ROb25lOworICAgICAgICB9CisgICAgfQogCiAjaWZu
ZGVmIE5ERUJVRwogICAgIHN0YXRpYyBjb25zdCBjaGFyICpvcE5hbWUoTm9kZVR5cGUpOwpAQCAt
MjIzLDYgKzI3Niw3IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8UHJlZGljdGlvblNsb3QsIDE2
PiBtX2FyZ3VtZW50UHJlZGljdGlvbnM7CiAgICAgVmVjdG9yPFByZWRpY3Rpb25TbG90LCAxNj4g
bV92YXJpYWJsZVByZWRpY3Rpb25zOworICAgIEhhc2hNYXA8dW5zaWduZWQsIFByZWRpY3Rpb25T
bG90PiBtX2dsb2JhbFZhclByZWRpY3Rpb25zOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAJKHJldmlzaW9uIDkyNTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1NCw3ICs2NTQsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogCiAgICAgY2Fz
ZSBWYWx1ZVRvTnVtYmVyOiB7Ci0gICAgICAgIGlmIChpc0ludGVnZXIobm9kZS5jaGlsZDEoKSkp
IHsKKyAgICAgICAgaWYgKHNob3VsZFNwZWN1bGF0ZUludGVnZXIobm9kZS5jaGlsZDEoKSkpIHsK
ICAgICAgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxk
MSgpKTsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKICAgICAg
ICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gOTI1
NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdv
cmtpbmcgY29weSkKQEAgLTE1NSw4ICsxNTUsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgfCBEYXRhRm9ybWF0SlMpID09IERhdGFGb3JtYXRKU0lu
dGVnZXIKICAgICAgICAgICAgIHx8IChpbmZvLnNwaWxsRm9ybWF0KCkgfCBEYXRhRm9ybWF0SlMp
ID09IERhdGFGb3JtYXRKU0ludGVnZXI7CiAgICAgfQorICAgIAorICAgIGJvb2wgc2hvdWxkU3Bl
Y3VsYXRlSW50ZWdlcihOb2RlSW5kZXggbm9kZUluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKGlz
SW50ZWdlcihub2RlSW5kZXgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIAor
ICAgICAgICBpZiAoaXNJbnQzMlByZWRpY3Rpb24obV9qaXQuZ3JhcGgoKS5nZXRQcmVkaWN0aW9u
KG1faml0LmdyYXBoKClbbm9kZUluZGV4XSkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCi0gICAgYm9vbCBpc1JlZ2lz
dGVyRGF0YUZvcm1hdERvdWJsZShOb2RlSW5kZXggbm9kZUluZGV4KQorICAgIGJvb2wgc2hvdWxk
U3BlY3VsYXRlRG91YmxlKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgewogICAgICAgICBOb2Rl
JiBub2RlID0gbV9qaXQuZ3JhcGgoKVtub2RlSW5kZXhdOwogICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS52aXJ0dWFsUmVnaXN0ZXIoKTsKQEAgLTE2Niw3ICsx
NzcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfHwgKGluZm8uc3BpbGxGb3JtYXQoKSB8IERh
dGFGb3JtYXRKUykgPT0gRGF0YUZvcm1hdEpTRG91YmxlKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIAotICAgICAgICBpZiAobm9kZS5vcCA9PSBHZXRMb2NhbCAmJiBpc0RvdWJs
ZVByZWRpY3Rpb24obV9qaXQuZ3JhcGgoKS5nZXRQcmVkaWN0aW9uKG5vZGUubG9jYWwoKSkpKQor
ICAgICAgICBpZiAoaXNEb3VibGVQcmVkaWN0aW9uKG1faml0LmdyYXBoKCkuZ2V0UHJlZGljdGlv
bihub2RlKSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTE3NCw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wg
c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihOb2RlSW5kZXggb3AxLCBOb2RlSW5kZXggb3AyKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICEoaXNSZWdpc3RlckRhdGFGb3JtYXREb3VibGUob3AxKSB8fCBp
c1JlZ2lzdGVyRGF0YUZvcm1hdERvdWJsZShvcDIpKSAmJiAoaXNJbnRlZ2VyKG9wMSkgfHwgaXNJ
bnRlZ2VyKG9wMikpOworICAgICAgICByZXR1cm4gIShzaG91bGRTcGVjdWxhdGVEb3VibGUob3Ax
KSB8fCBzaG91bGRTcGVjdWxhdGVEb3VibGUob3AyKSkgJiYgKHNob3VsZFNwZWN1bGF0ZUludGVn
ZXIob3AxKSB8fCBzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG9wMikpOwogICAgIH0KIAogICAgIGJv
b2wgY29tcGFyZShOb2RlJiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24sIE1h
Y3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24sIFpfREZHT3BlcmF0aW9uX0VKSik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>