difenduandada
2024-12-31 34abe6963b344c882358274957f4b992456fee40
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
 
                (function() {
                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
                    var __module = nodeEnv ? module : {exports:{}};
                    var __filename = 'preview-scripts/assets/Scripts/mod/voyage/voyage_model.js';
                    var __require = nodeEnv ? function (request) {
                        return cc.require(request);
                    } : function (request) {
                        return __quick_compile_project__.require(request, __filename);
                    };
                    function __define (exports, require, module) {
                        if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
cc._RF.push(module, 'cd20cms6apHoo9solcOUhFv', 'voyage_model');
// Scripts/mod/voyage/voyage_model.js
 
"use strict";
 
// --------------------------------------------------------------------
// @author: xxx@syg.com(必填, 创建模块的人员)
// @description:
//      这里填写详细说明,主要填写该模块的功能简要
// <br/>Create: 2019-03-06 20:33:19
// --------------------------------------------------------------------
var VoyageOrderVo = require("voyage_order_vo");
 
var VoyageConst = require("voyage_const");
 
var VoyageModel = cc.Class({
  "extends": BaseClass,
  ctor: function ctor() {},
  properties: {},
  initConfig: function initConfig() {
    this.ctrl = require("voyage_controller").getInstance();
    this.order_list = []; // 全部订单数据
 
    this.free_times = 0; // 今日已经免费刷新次数
 
    this.coin_times = 0; // 今日已经钻石刷新次数
  },
  //设置所有订单数据
  setOrderList: function setOrderList(data) {
    this.order_list = [];
 
    for (var k in data) {
      var v = data[k];
      var order_vo = new VoyageOrderVo();
      order_vo.updateData(v);
      this.order_list.push(order_vo);
    }
  },
  //获取所有订单数据
  getAllOrderList: function getAllOrderList() {
    return this.order_list;
  },
  //刷新某一订单数据
  updateOneOrderData: function updateOneOrderData(data) {
    for (var k in this.order_list) {
      var v = this.order_list[k];
 
      if (v.order_id == data.order_id) {
        v.updateData(data);
        break;
      }
    }
  },
  //删除某一订单数据
  deleteOneOrderData: function deleteOneOrderData(order_id) {
    for (var k in this.order_list) {
      var order_vo = this.order_list[k];
 
      if (order_vo.order_id == order_id) {
        this.order_list.splice(k, 1);
        break;
      }
    }
  },
  setFreeTimes: function setFreeTimes(times) {
    this.free_times = times;
  },
  //获取今日已经免费刷新次数
  getFreeTimes: function getFreeTimes() {
    return this.free_times;
  },
  setCoinTimes: function setCoinTimes(times) {
    this.coin_times = times;
  },
  //获取今日已经钻石刷新次数
  getCoinTimes: function getCoinTimes() {
    return this.coin_times;
  },
  //订单中是否有紫色(史诗)品质及以上的订单并且未接取
  checkIsHaveHigherEpicOrder: function checkIsHaveHigherEpicOrder() {
    var is_have = false;
 
    for (var k in this.order_list) {
      var order_vo = this.order_list[k];
 
      if (order_vo.status == VoyageConst.Order_Status.Unget && order_vo.config && order_vo.config.quality >= VoyageConst.Order_Rarity.Epic) {
        is_have = true;
        break;
      }
    }
 
    return is_have;
  },
  //根据英雄id判断是否为任务中
  checkHeroIsInTaskById: function checkHeroIsInTaskById(id) {
    var is_in = false;
 
    for (var k in this.order_list) {
      var order_vo = this.order_list[k];
 
      if (order_vo.assign_ids) {
        for (var i in order_vo.assign_ids) {
          var assign = order_vo.assign_ids[i];
 
          if (assign.partner_id && assign.partner_id == id) {
            is_in = true;
            break;
          }
        }
      }
 
      if (is_in) {
        break;
      }
    }
 
    return is_in;
  },
  //根据订单剩余时间获取加速所需钻石数量
  getQuickFinishNeedGoldByTime: function getQuickFinishNeedGoldByTime(lefttime) {
    var gold_num = 0;
 
    for (var k in Config.shipping_data.data_quick_cost) {
      var config = Config.shipping_data.data_quick_cost[k];
 
      if (lefttime >= config.min && lefttime <= config.max) {
        gold_num = config.gold;
      }
    }
 
    return gold_num;
  },
  //是否有订单缓存数据
  checkIsHaveOrderData: function checkIsHaveOrderData() {
    return Utils.next(this.order_list) != null;
  },
  //是否显示红点(是否有已完成的订单任务)
  checkVoyageRedStatus: function checkVoyageRedStatus() {
    var is_show_red = false;
 
    for (var k in this.order_list) {
      var order_vo = this.order_list[k];
 
      if (order_vo.status == VoyageConst.Order_Status.Finish) {
        is_show_red = true;
        break;
      }
    }
 
    return is_show_red;
  },
  //远航活动状态
  setActivityStatus: function setActivityStatus(status) {
    this.activity_status = status;
  },
  getActivityStatus: function getActivityStatus() {
    return this.activity_status || 0;
  },
  //获取是否第一次提示特权
  getFirstFresh: function getFirstFresh() {
    return this.is_first_fresh || false;
  },
  setFirstFresh: function setFirstFresh(status) {
    this.is_first_fresh = status;
  }
});
 
cc._RF.pop();
                    }
                    if (nodeEnv) {
                        __define(__module.exports, __require, __module);
                    }
                    else {
                        __quick_compile_project__.registerModuleFunc(__filename, function () {
                            __define(__module.exports, __require, __module);
                        });
                    }
                })();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFx2b3lhZ2VcXHZveWFnZV9tb2RlbC5qcyJdLCJuYW1lcyI6WyJWb3lhZ2VPcmRlclZvIiwicmVxdWlyZSIsIlZveWFnZUNvbnN0IiwiVm95YWdlTW9kZWwiLCJjYyIsIkNsYXNzIiwiQmFzZUNsYXNzIiwiY3RvciIsInByb3BlcnRpZXMiLCJpbml0Q29uZmlnIiwiY3RybCIsImdldEluc3RhbmNlIiwib3JkZXJfbGlzdCIsImZyZWVfdGltZXMiLCJjb2luX3RpbWVzIiwic2V0T3JkZXJMaXN0IiwiZGF0YSIsImsiLCJ2Iiwib3JkZXJfdm8iLCJ1cGRhdGVEYXRhIiwicHVzaCIsImdldEFsbE9yZGVyTGlzdCIsInVwZGF0ZU9uZU9yZGVyRGF0YSIsIm9yZGVyX2lkIiwiZGVsZXRlT25lT3JkZXJEYXRhIiwic3BsaWNlIiwic2V0RnJlZVRpbWVzIiwidGltZXMiLCJnZXRGcmVlVGltZXMiLCJzZXRDb2luVGltZXMiLCJnZXRDb2luVGltZXMiLCJjaGVja0lzSGF2ZUhpZ2hlckVwaWNPcmRlciIsImlzX2hhdmUiLCJzdGF0dXMiLCJPcmRlcl9TdGF0dXMiLCJVbmdldCIsImNvbmZpZyIsInF1YWxpdHkiLCJPcmRlcl9SYXJpdHkiLCJFcGljIiwiY2hlY2tIZXJvSXNJblRhc2tCeUlkIiwiaWQiLCJpc19pbiIsImFzc2lnbl9pZHMiLCJpIiwiYXNzaWduIiwicGFydG5lcl9pZCIsImdldFF1aWNrRmluaXNoTmVlZEdvbGRCeVRpbWUiLCJsZWZ0dGltZSIsImdvbGRfbnVtIiwiQ29uZmlnIiwic2hpcHBpbmdfZGF0YSIsImRhdGFfcXVpY2tfY29zdCIsIm1pbiIsIm1heCIsImdvbGQiLCJjaGVja0lzSGF2ZU9yZGVyRGF0YSIsIlV0aWxzIiwibmV4dCIsImNoZWNrVm95YWdlUmVkU3RhdHVzIiwiaXNfc2hvd19yZWQiLCJGaW5pc2giLCJzZXRBY3Rpdml0eVN0YXR1cyIsImFjdGl2aXR5X3N0YXR1cyIsImdldEFjdGl2aXR5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RSw2QkFBWTtBQUMzQixXQUFPLEtBQUtELGVBQUwsSUFBd0IsQ0FBL0I7QUFDSCxHQS9Jc0I7QUFpSnZCO0FBQ0FFLEVBQUFBLGFBQWEsRUFBRSx5QkFBWTtBQUN2QixXQUFPLEtBQUtDLGNBQUwsSUFBdUIsS0FBOUI7QUFDSCxHQXBKc0I7QUFzSnZCQyxFQUFBQSxhQUFhLEVBQUUsdUJBQVVsQyxNQUFWLEVBQWtCO0FBQzdCLFNBQUtpQyxjQUFMLEdBQXNCakMsTUFBdEI7QUFDSDtBQXhKc0IsQ0FBVCxDQUFsQiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBhdXRob3I6IHh4eEBzeWcuY29tKOW/heWhqywg5Yib5bu65qih5Z2X55qE5Lq65ZGYKVxuLy8gQGRlc2NyaXB0aW9uOlxuLy8gICAgICDov5nph4zloavlhpnor6bnu4bor7TmmI4s5Li76KaB5aGr5YaZ6K+l5qih5Z2X55qE5Yqf6IO9566A6KaBXG4vLyA8YnIvPkNyZWF0ZTogMjAxOS0wMy0wNiAyMDozMzoxOVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnZhciBWb3lhZ2VPcmRlclZvID0gcmVxdWlyZShcInZveWFnZV9vcmRlcl92b1wiKTtcbnZhciBWb3lhZ2VDb25zdCA9IHJlcXVpcmUoXCJ2b3lhZ2VfY29uc3RcIik7XG5cbnZhciBWb3lhZ2VNb2RlbCA9IGNjLkNsYXNzKHtcbiAgICBleHRlbmRzOiBCYXNlQ2xhc3MsXG4gICAgY3RvcjogZnVuY3Rpb24gKCkge1xuICAgIH0sXG5cbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgfSxcblxuICAgIGluaXRDb25maWc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5jdHJsID0gcmVxdWlyZShcInZveWFnZV9jb250cm9sbGVyXCIpLmdldEluc3RhbmNlKCk7XG4gICAgICAgIHRoaXMub3JkZXJfbGlzdCA9IFtdICAvLyDlhajpg6jorqLljZXmlbDmja5cbiAgICAgICAgdGhpcy5mcmVlX3RpbWVzID0gMCAgIC8vIOS7iuaXpeW3sue7j+WFjei0ueWIt+aWsOasoeaVsFxuICAgICAgICB0aGlzLmNvaW5fdGltZXMgPSAwICAgLy8g5LuK5pel5bey57uP6ZK755+z5Yi35paw5qyh5pWwXG4gICAgfSxcblxuICAgIC8v6K6+572u5omA5pyJ6K6i5Y2V5pWw5o2uXG4gICAgc2V0T3JkZXJMaXN0OiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICB0aGlzLm9yZGVyX2xpc3QgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgayBpbiBkYXRhKSB7XG4gICAgICAgICAgICB2YXIgdiA9IGRhdGFba107XG4gICAgICAgICAgICB2YXIgb3JkZXJfdm8gPSBuZXcgVm95YWdlT3JkZXJWbygpO1xuICAgICAgICAgICAgb3JkZXJfdm8udXBkYXRlRGF0YSh2KTtcbiAgICAgICAgICAgIHRoaXMub3JkZXJfbGlzdC5wdXNoKG9yZGVyX3ZvKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvL+iOt+WPluaJgOacieiuouWNleaVsOaNrlxuICAgIGdldEFsbE9yZGVyTGlzdDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcmRlcl9saXN0XG4gICAgfSxcblxuICAgIC8v5Yi35paw5p+Q5LiA6K6i5Y2V5pWw5o2uXG4gICAgdXBkYXRlT25lT3JkZXJEYXRhOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBmb3IgKHZhciBrIGluIHRoaXMub3JkZXJfbGlzdCkge1xuICAgICAgICAgICAgdmFyIHYgPSB0aGlzLm9yZGVyX2xpc3Rba107XG4gICAgICAgICAgICBpZiAodi5vcmRlcl9pZCA9PSBkYXRhLm9yZGVyX2lkKSB7XG4gICAgICAgICAgICAgICAgdi51cGRhdGVEYXRhKGRhdGEpO1xuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLy/liKDpmaTmn5DkuIDorqLljZXmlbDmja5cbiAgICBkZWxldGVPbmVPcmRlckRhdGE6IGZ1bmN0aW9uIChvcmRlcl9pZCkge1xuICAgICAgICBmb3IgKHZhciBrIGluIHRoaXMub3JkZXJfbGlzdCkge1xuICAgICAgICAgICAgdmFyIG9yZGVyX3ZvID0gdGhpcy5vcmRlcl9saXN0W2tdO1xuICAgICAgICAgICAgaWYgKG9yZGVyX3ZvLm9yZGVyX2lkID09IG9yZGVyX2lkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlcl9saXN0LnNwbGljZShrLCAxKTtcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIHNldEZyZWVUaW1lczogZnVuY3Rpb24gKHRpbWVzKSB7XG4gICAgICAgIHRoaXMuZnJlZV90aW1lcyA9IHRpbWVzO1xuICAgIH0sXG5cbiAgICAvL+iOt+WPluS7iuaXpeW3sue7j+WFjei0ueWIt+aWsOasoeaVsFxuICAgIGdldEZyZWVUaW1lczogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcmVlX3RpbWVzXG4gICAgfSxcblxuICAgIHNldENvaW5UaW1lczogZnVuY3Rpb24gKHRpbWVzKSB7XG4gICAgICAgIHRoaXMuY29pbl90aW1lcyA9IHRpbWVzO1xuICAgIH0sXG5cbiAgICAvL+iOt+WPluS7iuaXpeW3sue7j+mSu+efs+WIt+aWsOasoeaVsFxuICAgIGdldENvaW5UaW1lczogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2luX3RpbWVzXG4gICAgfSxcblxuICAgIC8v6K6i5Y2V5Lit5piv5ZCm5pyJ57Sr6Imy77yI5Y+y6K+X77yJ5ZOB6LSo5Y+K5Lul5LiK55qE6K6i5Y2V5bm25LiU5pyq5o6l5Y+WXG4gICAgY2hlY2tJc0hhdmVIaWdoZXJFcGljT3JkZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGlzX2hhdmUgPSBmYWxzZTtcbiAgICAgICAgZm9yICh2YXIgayBpbiB0aGlzLm9yZGVyX2xpc3QpIHtcbiAgICAgICAgICAgIHZhciBvcmRlcl92byA9IHRoaXMub3JkZXJfbGlzdFtrXTtcbiAgICAgICAgICAgIGlmIChvcmRlcl92by5zdGF0dXMgPT0gVm95YWdlQ29uc3QuT3JkZXJfU3RhdHVzLlVuZ2V0ICYmIG9yZGVyX3ZvLmNvbmZpZyAmJiBvcmRlcl92by5jb25maWcucXVhbGl0eSA+PSBWb3lhZ2VDb25zdC5PcmRlcl9SYXJpdHkuRXBpYykge1xuICAgICAgICAgICAgICAgIGlzX2hhdmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzX2hhdmVcbiAgICB9LFxuXG4gICAgLy/moLnmja7oi7Hpm4RpZOWIpOaWreaYr+WQpuS4uuS7u+WKoeS4rVxuICAgIGNoZWNrSGVyb0lzSW5UYXNrQnlJZDogZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgIHZhciBpc19pbiA9IGZhbHNlO1xuICAgICAgICBmb3IgKHZhciBrIGluIHRoaXMub3JkZXJfbGlzdCkge1xuICAgICAgICAgICAgdmFyIG9yZGVyX3ZvID0gdGhpcy5vcmRlcl9saXN0W2tdO1xuICAgICAgICAgICAgaWYgKG9yZGVyX3ZvLmFzc2lnbl9pZHMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIG9yZGVyX3ZvLmFzc2lnbl9pZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFzc2lnbiA9IG9yZGVyX3ZvLmFzc2lnbl9pZHNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChhc3NpZ24ucGFydG5lcl9pZCAmJiBhc3NpZ24ucGFydG5lcl9pZCA9PSBpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNfaW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc19pbikge1xuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzX2luXG4gICAgfSxcblxuICAgIC8v5qC55o2u6K6i5Y2V5Ymp5L2Z5pe26Ze06I635Y+W5Yqg6YCf5omA6ZyA6ZK755+z5pWw6YePXG4gICAgZ2V0UXVpY2tGaW5pc2hOZWVkR29sZEJ5VGltZTogZnVuY3Rpb24gKGxlZnR0aW1lKSB7XG4gICAgICAgIHZhciBnb2xkX251bSA9IDA7XG4gICAgICAgIGZvciAodmFyIGsgaW4gQ29uZmlnLnNoaXBwaW5nX2RhdGEuZGF0YV9xdWlja19jb3N0KSB7XG4gICAgICAgICAgICB2YXIgY29uZmlnID0gQ29uZmlnLnNoaXBwaW5nX2RhdGEuZGF0YV9xdWlja19jb3N0W2tdO1xuICAgICAgICAgICAgaWYgKGxlZnR0aW1lID49IGNvbmZpZy5taW4gJiYgbGVmdHRpbWUgPD0gY29uZmlnLm1heCkge1xuICAgICAgICAgICAgICAgIGdvbGRfbnVtID0gY29uZmlnLmdvbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ29sZF9udW1cbiAgICB9LFxuXG4gICAgLy/mmK/lkKbmnInorqLljZXnvJPlrZjmlbDmja5cbiAgICBjaGVja0lzSGF2ZU9yZGVyRGF0YTogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKFV0aWxzLm5leHQodGhpcy5vcmRlcl9saXN0KSAhPSBudWxsKVxuICAgIH0sXG5cbiAgICAvL+aYr+WQpuaYvuekuue6oueCuSjmmK/lkKbmnInlt7LlrozmiJDnmoTorqLljZXku7vliqEpXG4gICAgY2hlY2tWb3lhZ2VSZWRTdGF0dXM6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGlzX3Nob3dfcmVkID0gZmFsc2U7XG4gICAgICAgIGZvciAodmFyIGsgaW4gdGhpcy5vcmRlcl9saXN0KSB7XG4gICAgICAgICAgICB2YXIgb3JkZXJfdm8gPSB0aGlzLm9yZGVyX2xpc3Rba107XG4gICAgICAgICAgICBpZiAob3JkZXJfdm8uc3RhdHVzID09IFZveWFnZUNvbnN0Lk9yZGVyX1N0YXR1cy5GaW5pc2gpIHtcbiAgICAgICAgICAgICAgICBpc19zaG93X3JlZCA9IHRydWVcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc19zaG93X3JlZFxuICAgIH0sXG5cbiAgICAvL+i/nOiIqua0u+WKqOeKtuaAgVxuICAgIHNldEFjdGl2aXR5U3RhdHVzOiBmdW5jdGlvbiAoc3RhdHVzKSB7XG4gICAgICAgIHRoaXMuYWN0aXZpdHlfc3RhdHVzID0gc3RhdHVzO1xuICAgIH0sXG5cbiAgICBnZXRBY3Rpdml0eVN0YXR1czogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3Rpdml0eV9zdGF0dXMgfHwgMDtcbiAgICB9LFxuXG4gICAgLy/ojrflj5bmmK/lkKbnrKzkuIDmrKHmj5DnpLrnibnmnYNcbiAgICBnZXRGaXJzdEZyZXNoOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzX2ZpcnN0X2ZyZXNoIHx8IGZhbHNlXG4gICAgfSxcblxuICAgIHNldEZpcnN0RnJlc2g6IGZ1bmN0aW9uIChzdGF0dXMpIHtcbiAgICAgICAgdGhpcy5pc19maXJzdF9mcmVzaCA9IHN0YXR1cztcbiAgICB9XG59KTsiXX0=