1(function () {
2  var random_count = 0;
3  var random_count_threshold = 25;
4  var random_seed = 0.462;
5  Math.random = function() {
6    random_count++;
7    if (random_count > random_count_threshold){
8     random_seed += 0.1;
9     random_count = 1;
10    }
11    return (random_seed % 1);
12  };
13  if (typeof(crypto) == 'object' &&
14      typeof(crypto.getRandomValues) == 'function') {
15    crypto.getRandomValues = function(arr) {
16      var scale = Math.pow(256, arr.BYTES_PER_ELEMENT);
17      for (var i = 0; i < arr.length; i++) {
18        arr[i] = Math.floor(Math.random() * scale);
19      }
20      return arr;
21    };
22  }
23})();
24(function () {
25  var date_count = 0;
26  var date_count_threshold = 25;
27  var orig_date = Date;
28  var time_seed = 1204251968254;
29  Date = function() {
30    if (this instanceof Date) {
31      date_count++;
32      if (date_count > date_count_threshold){
33        time_seed += 50;
34        date_count = 1;
35      }
36      switch (arguments.length) {
37      case 0: return new orig_date(time_seed);
38      case 1: return new orig_date(arguments[0]);
39      default: return new orig_date(arguments[0], arguments[1],
40         arguments.length >= 3 ? arguments[2] : 1,
41         arguments.length >= 4 ? arguments[3] : 0,
42         arguments.length >= 5 ? arguments[4] : 0,
43         arguments.length >= 6 ? arguments[5] : 0,
44         arguments.length >= 7 ? arguments[6] : 0);
45      }
46    }
47    return new Date().toString();
48  };
49  Date.__proto__ = orig_date;
50  Date.prototype = orig_date.prototype;
51  Date.prototype.constructor = Date;
52  orig_date.now = function() {
53    return new Date().getTime();
54  };
55  orig_date.prototype.getTimezoneOffset = function() {
56    var dst2010Start = 1268560800000;
57    var dst2010End = 1289120400000;
58    if (this.getTime() >= dst2010Start && this.getTime() < dst2010End)
59      return 420;
60    return 480;
61  };
62})();
63