From 2d0577f1f80b2c85dff0f59dbd08352cb31ef97c Mon Sep 17 00:00:00 2001 From: ccy <1292572728@qq.com> Date: Sun, 1 Dec 2019 22:54:48 +0800 Subject: [PATCH] Initial commit --- .wing/launch.json | 29 + .wing/settings.json | 6 + .wing/tasks.json | 34 + bin-debug/Ball.js | 36 + bin-debug/CXK.js | 100 + bin-debug/LoadingUI.js | 58 + bin-debug/Main.js | 345 + bin-debug/ScoreBoard.js | 61 + bin-release/web/191201225322/index.html | 102 + .../js/assetsmanager.min_2ef412b7.js | 1 + .../web/191201225322/js/egret.min_6409d128.js | 7 + .../191201225322/js/egret.web.min_d1451e99.js | 5 + .../web/191201225322/js/game.min_16249d0f.js | 2 + .../web/191201225322/js/main.min_c6c8057c.js | 1 + .../191201225322/js/promise.min_83a6a5d.js | 1 + .../web/191201225322/js/tween.min_6c5a88f9.js | 1 + bin-release/web/191201225322/manifest.json | 13 + .../web/191201225322/resource/assets/ball.png | Bin 0 -> 2174 bytes .../web/191201225322/resource/assets/bg.png | Bin 0 -> 365331 bytes .../web/191201225322/resource/assets/bg2.png | Bin 0 -> 182553 bytes .../web/191201225322/resource/assets/die.mp3 | Bin 0 -> 16762 bytes .../resource/assets/egret_icon.png | Bin 0 -> 6777 bytes .../191201225322/resource/assets/launch.mp3 | Bin 0 -> 10075 bytes .../resource/assets/paddle2_2.png | Bin 0 -> 10704 bytes .../resource/assets/paddle3_2.png | Bin 0 -> 10021 bytes .../resource/assets/paddle4_1.png | Bin 0 -> 17481 bytes .../191201225322/resource/assets/paddle_2.png | Bin 0 -> 10997 bytes .../191201225322/resource/assets/point.mp3 | Bin 0 -> 16718 bytes .../resource/assets/scale_intro.mp3 | Bin 0 -> 41713 bytes .../resource/assets/scale_loop.mp3 | Bin 0 -> 26701 bytes .../resource/assets/scoreboard.png | Bin 0 -> 17986 bytes .../resource/config/description.json | 5 + .../191201225322/resource/default.res.json | 80 + egretProperties.json | 25 + favicon.ico | Bin 0 -> 4286 bytes index.html | 97 + libs/modules/assetsmanager/assetsmanager.d.ts | 1522 + libs/modules/assetsmanager/assetsmanager.js | 2992 ++ .../assetsmanager/assetsmanager.min.js | 1 + libs/modules/egret/egret.d.ts | 15371 +++++++++ libs/modules/egret/egret.js | 25845 ++++++++++++++++ libs/modules/egret/egret.min.js | 7 + libs/modules/egret/egret.web.js | 9806 ++++++ libs/modules/egret/egret.web.min.js | 5 + libs/modules/game/game.d.ts | 2482 ++ libs/modules/game/game.js | 4817 +++ libs/modules/game/game.min.js | 2 + libs/modules/promise/promise.js | 1162 + libs/modules/promise/promise.min.js | 1 + libs/modules/tween/tween.d.ts | 1350 + libs/modules/tween/tween.js | 2095 ++ libs/modules/tween/tween.min.js | 1 + manifest.json | 17 + resource/assets/ball.png | Bin 0 -> 2174 bytes resource/assets/bg.png | Bin 0 -> 365331 bytes resource/assets/bg2.png | Bin 0 -> 182553 bytes resource/assets/die.mp3 | Bin 0 -> 16762 bytes resource/assets/egret_icon.png | Bin 0 -> 6777 bytes resource/assets/launch.mp3 | Bin 0 -> 10075 bytes resource/assets/paddle2_2.png | Bin 0 -> 10704 bytes resource/assets/paddle3_2.png | Bin 0 -> 10021 bytes resource/assets/paddle4_1.png | Bin 0 -> 17481 bytes resource/assets/paddle_2.png | Bin 0 -> 10997 bytes resource/assets/point.mp3 | Bin 0 -> 16718 bytes resource/assets/scale_intro.mp3 | Bin 0 -> 41713 bytes resource/assets/scale_loop.mp3 | Bin 0 -> 26701 bytes resource/assets/scoreboard.png | Bin 0 -> 17986 bytes resource/config/description.json | 5 + resource/default.res.json | 80 + scripts/api.d.ts | 448 + scripts/baidugame/baidugame.ts | 82 + scripts/bricks/bricks.ts | 64 + scripts/config.android.ts | 52 + scripts/config.baidugame.ts | 60 + scripts/config.bricks.ts | 55 + scripts/config.ios.ts | 52 + scripts/config.oppogame.ts | 59 + scripts/config.qgame.ts | 59 + scripts/config.qqgame.ts | 60 + scripts/config.ts | 95 + scripts/config.vivogame.ts | 59 + scripts/config.wxgame.ts | 62 + scripts/myplugin.ts | 17 + scripts/node.d.ts | 4209 +++ scripts/oppogame/oppogame.ts | 90 + scripts/qgame/qgame.ts | 90 + scripts/qqgame/qqgame.ts | 82 + scripts/tsconfig.json | 50 + scripts/vivogame/vivogame.ts | 126 + scripts/wxgame/wxgame.ts | 146 + src/Ball.ts | 27 + src/CXK.ts | 101 + src/LoadingUI.ts | 50 + src/Main.ts | 330 + src/ScoreBoard.ts | 61 + template/runtime/native_loader.js | 8 + template/runtime/native_require.js | 53 + template/runtime/runtime_loader.js | 8 + template/web/index.html | 102 + tsconfig.json | 17 + wingProperties.json | 9 + 101 files changed, 75353 insertions(+) create mode 100644 .wing/launch.json create mode 100644 .wing/settings.json create mode 100644 .wing/tasks.json create mode 100644 bin-debug/Ball.js create mode 100644 bin-debug/CXK.js create mode 100644 bin-debug/LoadingUI.js create mode 100644 bin-debug/Main.js create mode 100644 bin-debug/ScoreBoard.js create mode 100644 bin-release/web/191201225322/index.html create mode 100644 bin-release/web/191201225322/js/assetsmanager.min_2ef412b7.js create mode 100644 bin-release/web/191201225322/js/egret.min_6409d128.js create mode 100644 bin-release/web/191201225322/js/egret.web.min_d1451e99.js create mode 100644 bin-release/web/191201225322/js/game.min_16249d0f.js create mode 100644 bin-release/web/191201225322/js/main.min_c6c8057c.js create mode 100644 bin-release/web/191201225322/js/promise.min_83a6a5d.js create mode 100644 bin-release/web/191201225322/js/tween.min_6c5a88f9.js create mode 100644 bin-release/web/191201225322/manifest.json create mode 100755 bin-release/web/191201225322/resource/assets/ball.png create mode 100644 bin-release/web/191201225322/resource/assets/bg.png create mode 100644 bin-release/web/191201225322/resource/assets/bg2.png create mode 100755 bin-release/web/191201225322/resource/assets/die.mp3 create mode 100644 bin-release/web/191201225322/resource/assets/egret_icon.png create mode 100644 bin-release/web/191201225322/resource/assets/launch.mp3 create mode 100755 bin-release/web/191201225322/resource/assets/paddle2_2.png create mode 100755 bin-release/web/191201225322/resource/assets/paddle3_2.png create mode 100644 bin-release/web/191201225322/resource/assets/paddle4_1.png create mode 100755 bin-release/web/191201225322/resource/assets/paddle_2.png create mode 100755 bin-release/web/191201225322/resource/assets/point.mp3 create mode 100644 bin-release/web/191201225322/resource/assets/scale_intro.mp3 create mode 100644 bin-release/web/191201225322/resource/assets/scale_loop.mp3 create mode 100755 bin-release/web/191201225322/resource/assets/scoreboard.png create mode 100644 bin-release/web/191201225322/resource/config/description.json create mode 100644 bin-release/web/191201225322/resource/default.res.json create mode 100644 egretProperties.json create mode 100644 favicon.ico create mode 100644 index.html create mode 100644 libs/modules/assetsmanager/assetsmanager.d.ts create mode 100644 libs/modules/assetsmanager/assetsmanager.js create mode 100644 libs/modules/assetsmanager/assetsmanager.min.js create mode 100644 libs/modules/egret/egret.d.ts create mode 100644 libs/modules/egret/egret.js create mode 100644 libs/modules/egret/egret.min.js create mode 100644 libs/modules/egret/egret.web.js create mode 100644 libs/modules/egret/egret.web.min.js create mode 100644 libs/modules/game/game.d.ts create mode 100644 libs/modules/game/game.js create mode 100644 libs/modules/game/game.min.js create mode 100644 libs/modules/promise/promise.js create mode 100644 libs/modules/promise/promise.min.js create mode 100644 libs/modules/tween/tween.d.ts create mode 100644 libs/modules/tween/tween.js create mode 100644 libs/modules/tween/tween.min.js create mode 100644 manifest.json create mode 100755 resource/assets/ball.png create mode 100644 resource/assets/bg.png create mode 100644 resource/assets/bg2.png create mode 100755 resource/assets/die.mp3 create mode 100644 resource/assets/egret_icon.png create mode 100644 resource/assets/launch.mp3 create mode 100755 resource/assets/paddle2_2.png create mode 100755 resource/assets/paddle3_2.png create mode 100644 resource/assets/paddle4_1.png create mode 100755 resource/assets/paddle_2.png create mode 100755 resource/assets/point.mp3 create mode 100644 resource/assets/scale_intro.mp3 create mode 100644 resource/assets/scale_loop.mp3 create mode 100755 resource/assets/scoreboard.png create mode 100644 resource/config/description.json create mode 100644 resource/default.res.json create mode 100644 scripts/api.d.ts create mode 100644 scripts/baidugame/baidugame.ts create mode 100644 scripts/bricks/bricks.ts create mode 100644 scripts/config.android.ts create mode 100644 scripts/config.baidugame.ts create mode 100644 scripts/config.bricks.ts create mode 100644 scripts/config.ios.ts create mode 100644 scripts/config.oppogame.ts create mode 100644 scripts/config.qgame.ts create mode 100644 scripts/config.qqgame.ts create mode 100644 scripts/config.ts create mode 100644 scripts/config.vivogame.ts create mode 100644 scripts/config.wxgame.ts create mode 100644 scripts/myplugin.ts create mode 100644 scripts/node.d.ts create mode 100644 scripts/oppogame/oppogame.ts create mode 100644 scripts/qgame/qgame.ts create mode 100644 scripts/qqgame/qqgame.ts create mode 100644 scripts/tsconfig.json create mode 100644 scripts/vivogame/vivogame.ts create mode 100644 scripts/wxgame/wxgame.ts create mode 100644 src/Ball.ts create mode 100644 src/CXK.ts create mode 100644 src/LoadingUI.ts create mode 100644 src/Main.ts create mode 100644 src/ScoreBoard.ts create mode 100644 template/runtime/native_loader.js create mode 100644 template/runtime/native_require.js create mode 100644 template/runtime/runtime_loader.js create mode 100644 template/web/index.html create mode 100644 tsconfig.json create mode 100644 wingProperties.json diff --git a/.wing/launch.json b/.wing/launch.json new file mode 100644 index 0000000..ccc9929 --- /dev/null +++ b/.wing/launch.json @@ -0,0 +1,29 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Launch Wing Player", + "type": "chrome", + "request": "launch", + "file": "index.html", + "runtimeExecutable": "${execPath}", + "useBuildInServer": true, + "sourceMaps": true, + "webRoot": "${workspaceRoot}", + "preLaunchTask":"build", + "port":5630 + }, + { + "name": "Launch Chrome", + "type": "chrome", + "request": "launch", + "file": "index.html", + "useBuildInServer": true, + "sourceMaps": true, + "webRoot": "${workspaceRoot}", + "preLaunchTask":"build", + "userDataDir":"${tmpdir}", + "port":5630 + } + ] +} \ No newline at end of file diff --git a/.wing/settings.json b/.wing/settings.json new file mode 100644 index 0000000..372e43c --- /dev/null +++ b/.wing/settings.json @@ -0,0 +1,6 @@ +{ + "search.exclude": { + "**/bin-debug": true, + "**/bin-release": true + } +} \ No newline at end of file diff --git a/.wing/tasks.json b/.wing/tasks.json new file mode 100644 index 0000000..521f0c8 --- /dev/null +++ b/.wing/tasks.json @@ -0,0 +1,34 @@ +{ + "version": "0.1.0", + "command": "egret", + "isShellCommand": true, + "suppressTaskName": true, + "tasks": [ + { + "taskName": "build", + "showOutput": "always", + "args": [ + "build", + "-sourcemap" + ], + "problemMatcher": "$tsc" + }, + { + "taskName": "clean", + "showOutput": "always", + "args": [ + "build", + "-e" + ], + "problemMatcher": "$tsc" + }, + { + "taskName": "publish", + "showOutput": "always", + "args": [ + "publish" + ], + "problemMatcher": "$tsc" + } + ] +} \ No newline at end of file diff --git a/bin-debug/Ball.js b/bin-debug/Ball.js new file mode 100644 index 0000000..483bff3 --- /dev/null +++ b/bin-debug/Ball.js @@ -0,0 +1,36 @@ +var __reflect = (this && this.__reflect) || function (p, c, t) { + p.__class__ = c, t ? t.push(c) : t = [c], p.__types__ = p.__types__ ? t.concat(p.__types__) : t; +}; +var __extends = this && this.__extends || function __extends(t, e) { + function r() { + this.constructor = t; +} +for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]); +r.prototype = e.prototype, t.prototype = new r(); +}; +var Ball = (function (_super) { + __extends(Ball, _super); + function Ball() { + var _this = _super.call(this) || this; + _this.createScene(); + return _this; + } + Ball.prototype.createScene = function () { + this.ball = this.createBitmapByName('ball_png'); + this.ball.width = 10; + this.ball.height = 10; + this.addChild(this.ball); + }; + /** + * 根据name关键字创建一个Bitmap对象。name属性请参考resources/resource.json配置文件的内容。 + * Create a Bitmap object according to name keyword.As for the property of name please refer to the configuration file of resources/resource.json. + */ + Ball.prototype.createBitmapByName = function (name) { + var result = new egret.Bitmap(); + var texture = RES.getRes(name); + result.texture = texture; + return result; + }; + return Ball; +}(egret.Sprite)); +__reflect(Ball.prototype, "Ball"); diff --git a/bin-debug/CXK.js b/bin-debug/CXK.js new file mode 100644 index 0000000..340b7ff --- /dev/null +++ b/bin-debug/CXK.js @@ -0,0 +1,100 @@ +var __reflect = (this && this.__reflect) || function (p, c, t) { + p.__class__ = c, t ? t.push(c) : t = [c], p.__types__ = p.__types__ ? t.concat(p.__types__) : t; +}; +var __extends = this && this.__extends || function __extends(t, e) { + function r() { + this.constructor = t; +} +for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]); +r.prototype = e.prototype, t.prototype = new r(); +}; +var CXK = (function (_super) { + __extends(CXK, _super); + function CXK() { + var _this = _super.call(this) || this; + _this.speedBall = 0; + _this.status = 1; + _this.step = 0; + _this.shotStatus = 0; + _this.createScene(); + _this.addEventListener(egret.Event.ENTER_FRAME, _this.changeIkun, _this); + return _this; + } + CXK.prototype.reset = function () { + this.step = 0; + }; + CXK.prototype.prepare = function () { + this.step = 1; + }; + CXK.prototype.shot = function () { + this.step = 2; + }; + CXK.prototype.createScene = function () { + this.cxk = new egret.Bitmap(); + this.cxk.width = 40; + this.cxk.height = 60; + this.ball = this.createBitmapByName('ball_png'); + this.ball.width = 10; + this.ball.height = 10; + this.ball.x = 15; + this.addChild(this.ball); + this.addChild(this.cxk); + }; + CXK.prototype.changeIkun = function () { + if (this.step === 0) { + this.cxk.height = 60; + this.shotStatus = 0; + this.cxk.y = 0; + if (this.status > 3) { + this.status = 1; + this.speedBall = 0; + } + if (this.status > 2) { + this.cxk.texture = RES.getRes('paddle_2_png'); + } + else { + this.cxk.texture = RES.getRes('paddle_1_png'); + } + this.status = this.status + 0.1; + this.changeBall(); + } + else if (this.step === 1) { + this.cxk.texture = RES.getRes('paddle_2_png'); + this.ball.y = 30; + if (this.cxk.height > 40) { + this.cxk.height -= .6; + this.cxk.y += .6; + } + } + else if (this.step === 2) { + this.cxk.texture = RES.getRes('paddle_3_png'); + this.cxk.height = 62; + this.cxk.y = 0; + this.shotStatus += 0.4; + if (this.shotStatus > 1) { + this.cxk.texture = RES.getRes('paddle_4_png'); + } + } + }; + CXK.prototype.changeBall = function () { + if (this.status > 2) { + this.ball.y = 15 + 10 * (this.speedBall); + } + else { + this.ball.y = 40 - 10 * (this.speedBall); + } + this.speedBall += 0.15; + }; + /** + * 根据name关键字创建一个Bitmap对象。name属性请参考resources/resource.json配置文件的内容。 + * Create a Bitmap object according to name keyword.As for the property of name please refer to the configuration file of resources/resource.json. + */ + CXK.prototype.createBitmapByName = function (name) { + var result = new egret.Bitmap(); + var texture = RES.getRes(name); + result.texture = texture; + return result; + }; + return CXK; +}(egret.DisplayObjectContainer)); +__reflect(CXK.prototype, "CXK"); diff --git a/bin-debug/LoadingUI.js b/bin-debug/LoadingUI.js new file mode 100644 index 0000000..3510761 --- /dev/null +++ b/bin-debug/LoadingUI.js @@ -0,0 +1,58 @@ +////////////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2014-present, Egret Technology. +// All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// * Neither the name of the Egret nor the +// names of its contributors may be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY EGRET AND CONTRIBUTORS "AS IS" AND ANY EXPRESS +// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL EGRET AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, +// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////////////////// +var __reflect = (this && this.__reflect) || function (p, c, t) { + p.__class__ = c, t ? t.push(c) : t = [c], p.__types__ = p.__types__ ? t.concat(p.__types__) : t; +}; +var __extends = this && this.__extends || function __extends(t, e) { + function r() { + this.constructor = t; +} +for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]); +r.prototype = e.prototype, t.prototype = new r(); +}; +var LoadingUI = (function (_super) { + __extends(LoadingUI, _super); + function LoadingUI() { + var _this = _super.call(this) || this; + _this.createView(); + return _this; + } + LoadingUI.prototype.createView = function () { + this.textField = new egret.TextField(); + this.addChild(this.textField); + this.textField.textColor = 0x55c04b; + this.textField.width = 480; + this.textField.height = 100; + }; + LoadingUI.prototype.onProgress = function (current, total) { + this.textField.text = "\u6B63\u5728\u52A0\u8F7D..." + current + "/" + total; + }; + return LoadingUI; +}(egret.Sprite)); +__reflect(LoadingUI.prototype, "LoadingUI", ["RES.PromiseTaskReporter"]); diff --git a/bin-debug/Main.js b/bin-debug/Main.js new file mode 100644 index 0000000..a19d78c --- /dev/null +++ b/bin-debug/Main.js @@ -0,0 +1,345 @@ +////////////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2014-present, Egret Technology. +// All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// * Neither the name of the Egret nor the +// names of its contributors may be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY EGRET AND CONTRIBUTORS "AS IS" AND ANY EXPRESS +// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL EGRET AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, +// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////////////////// +var __reflect = (this && this.__reflect) || function (p, c, t) { + p.__class__ = c, t ? t.push(c) : t = [c], p.__types__ = p.__types__ ? t.concat(p.__types__) : t; +}; +var __extends = this && this.__extends || function __extends(t, e) { + function r() { + this.constructor = t; +} +for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]); +r.prototype = e.prototype, t.prototype = new r(); +}; +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [0, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var getTimer = egret.getTimer; +var Main = (function (_super) { + __extends(Main, _super); + function Main() { + var _this = _super.call(this) || this; + _this.ballT = 0; + _this.gameStatus = 0; //游戏状态 0 未开始 1 按压 2 正在投篮 3命中 4积分 + _this.powerEarn = 0; //力量 0-1 + _this.ballCount = 10; + _this.totalPoint = 0; + _this.addEventListener(egret.Event.ADDED_TO_STAGE, _this.onAddToStage, _this); + _this.addEventListener(egret.TouchEvent.TOUCH_BEGIN, _this.onTouchBeginState, _this); + _this.addEventListener(egret.TouchEvent.TOUCH_END, _this.onTouchEndState, _this); + _this.addEventListener(egret.Event.ENTER_FRAME, _this.onEnterFrame, _this); + return _this; + } + Main.prototype.onAddToStage = function (event) { + egret.lifecycle.addLifecycleListener(function (context) { + // custom lifecycle plugin + context.onUpdate = function () { + }; + }); + egret.lifecycle.onPause = function () { + egret.ticker.pause(); + }; + egret.lifecycle.onResume = function () { + egret.ticker.resume(); + }; + this.runGame().catch(function (e) { + console.log(e); + }); + }; + Main.prototype.runGame = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.loadResource()]; + case 1: + _a.sent(); + this.createGameScene(); + return [2 /*return*/]; + } + }); + }); + }; + Main.prototype.loadResource = function () { + return __awaiter(this, void 0, void 0, function () { + var loadingView, e_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + _a.trys.push([0, 3, , 4]); + loadingView = new LoadingUI(); + this.stage.addChild(loadingView); + return [4 /*yield*/, RES.loadConfig("resource/default.res.json", "resource/")]; + case 1: + _a.sent(); + return [4 /*yield*/, RES.loadGroup("preload", 0, loadingView)]; + case 2: + _a.sent(); + this.scale_intro = RES.getRes('scale_intro_mp3'); + this.scale_circle = RES.getRes('scale_loop_mp3'); + this.shotSound = RES.getRes('launch_mp3'); + this.bingoSound = RES.getRes('point_mp3'); + this.dieSound = RES.getRes('die_mp3'); + this.stage.removeChild(loadingView); + return [3 /*break*/, 4]; + case 3: + e_1 = _a.sent(); + console.error(e_1); + return [3 /*break*/, 4]; + case 4: return [2 /*return*/]; + } + }); + }); + }; + Main.prototype.drawBallCountAndScore = function () { + this.ballCountText.text = 'x' + this.ballCount.toString(); + this.pointText.text = '得分:' + this.totalPoint.toString(); + }; + /** + * 创建游戏场景 + * Create a game scene + */ + Main.prototype.createGameScene = function () { + var stageW = this.stage.stageWidth; + var stageH = this.stage.stageHeight; + // 白色背景 + var shp = new egret.Shape(); + shp.graphics.beginFill(0xffffff, 1); + shp.graphics.drawRect(0, 0, stageW, stageH); + shp.graphics.endFill(); + this.addChild(shp); + //篮球场背景 + var sky = this.createBitmapByName("bg_png"); + this.addChild(sky); + sky.width = stageW; + sky.height = stageW / (1102 / 1172); + sky.y = (stageH - sky.height) / 2; + this.cxk = new CXK(); + this.addChild(this.cxk); + this.cxk.x = 349; + this.cxk.y = sky.y + 231; + var ball2 = new Ball(); + this.addChild(ball2); + ball2.x = 156; + ball2.y = 325; + ball2.alpha = 0; + this.ball2 = ball2; + this.touchEnabled = true; + this.scoreboardImg = new ScoreBoard(); + this.scoreboardImg.touchEnabled = true; + this.scoreboardImg.addEventListener(egret.TouchEvent.TOUCH_TAP, this.restart, this); + var tipText = new egret.TextField(); + this.addChild(tipText); + tipText.textColor = 0x1aad19; + tipText.x = 200; + tipText.y = 900; + tipText.text = '长按蓄力,松开投球'; + this.pointText = new egret.TextField(); + this.addChild(this.pointText); + this.pointText.x = 400; + this.pointText.y = 5; + this.pointText.textColor = 0x333333; + this.pointText.size = 28; + this.ballCountText = new egret.TextField(); + this.addChild(this.ballCountText); + this.ballCountText.x = 60; + this.ballCountText.y = 5; + this.ballCountText.size = 28; + this.ballCountText.textColor = 0x333333; + this.ball3 = this.createBitmapByName('ball_png'); + this.addChild(this.ball3); + this.ball3.y = 5; + this.ball3.x = 25; + this.ball3.width = 25; + this.ball3.height = 25; + this.drawBallCountAndScore(); + }; + Main.prototype.restart = function () { + console.log('restart'); + if (this.gameStatus === 4) { + this.removeChild(this.scoreboardImg); + this.gameStatus = 0; + this.totalPoint = 0; + this.ballCount = 10; + this.drawBallCountAndScore(); + } + }; + Main.prototype.onEnterFrame = function () { + if (this.gameStatus === 2 || this.gameStatus === 3) { + this.ballSport(); + } + if (this.gameStatus === 1) { + //蓄力过程 + this.powerEarn = this.powerEarn + (1 / 66); + } + }; + Main.prototype.onTouchBeginState = function () { + var _this = this; + console.log('touch begin'); + if (this.gameStatus === 0) { + this.gameStatus = 1; + this.powerEarn = 0; + this.ballT = 0; + this.scaleChannel = this.scale_intro.play(0, 1); + setTimeout(function () { + if (_this.gameStatus === 1) { + _this.scaleChannel.stop(); + _this.scaleChannel = _this.scale_circle.play(0, 0); + } + }, 2200); + this.cxk.prepare(); + } + }; + Main.prototype.onTouchEndState = function () { + console.log('touch end'); + if (this.gameStatus === 1) { + this.ballT = 0; + this.gameStatus = 2; + this.scaleChannel.stop(); + this.shotSound.play(0, 1); + this.cxk.shot(); + this.ballCount--; + this.drawBallCountAndScore(); + this.ball = new Ball(); + this.addChild(this.ball); + this.ball.alpha = 0; + } + }; + Main.prototype.ballSport = function () { + var _this = this; + //篮球弧线 + var speed = 0.015; + var t = this.ballT; + var p0 = { x: 350, y: 445 }; + // let p1 = {x: 250, y: 200}; + var p1 = { x: 250, y: 200 + (0.5 - this.powerEarn) * 320 }; + var p2 = __assign({}, p1); + var p3 = { x: 100 + (0.5 - this.powerEarn) * 160, y: 400 }; + var cx = 3 * (p1.x - p0.x); + var bx = 3 * (p2.x - p1.x) - cx; + var ax = p3.x - p0.x - cx - bx; + var cy = 3 * (p1.y - p0.y); + var by = 3 * (p2.y - p1.y) - cy; + var ay = p3.y - p0.y - cy - by; + var xt = ax * (t * t * t) + bx * (t * t) + cx * t + p0.x; + var yt = ay * (t * t * t) + by * (t * t) + cy * t + p0.y; + this.ballT += speed; + if (this.ballT > 1) { + this.ballT = 1; + } + this.ball.alpha = 1; + //结束这一步 + var stepOver = function () { + _this.gameStatus = 0; + _this.cxk.reset(); + _this.removeChild(_this.ball); + if (_this.ballCount <= 0) { + _this.gameStatus = 4; + _this.addChildAt(_this.scoreboardImg, 10); + _this.scoreboardImg.x = (_this.stage.stageWidth - _this.scoreboardImg.scoreBoard.width) / 2; + _this.scoreboardImg.y = (_this.stage.stageHeight - _this.scoreboardImg.scoreBoard.height) / 2; + console.log(_this.scoreboardImg.x, _this.scoreboardImg.y); + _this.scoreboardImg.setCurrentPoint(_this.totalPoint); + } + _this.drawBallCountAndScore(); + }; + if (this.gameStatus === 3) { + this.ball.y = yt; + if (yt >= p3.y - 1) { + this.totalPoint++; + stepOver(); + } + } + else if (this.gameStatus === 2) { + var isHit = this.ball2.hitTestPoint(this.ball.x + 5, this.ball.y + 5); + if (isHit) { + this.bingoSound.play(0, 1); + this.gameStatus = 3; + } + this.ball.x = xt; + this.ball.y = yt; + } + if (this.ball.y >= p3.y - 1 && this.ball.x <= p3.x + 1) { + if (this.gameStatus === 2) { + this.dieSound.play(0, 1); + stepOver(); + } + } + }; + /** + * 根据name关键字创建一个Bitmap对象。name属性请参考resources/resource.json配置文件的内容。 + * Create a Bitmap object according to name keyword.As for the property of name please refer to the configuration file of resources/resource.json. + */ + Main.prototype.createBitmapByName = function (name) { + var result = new egret.Bitmap(); + var texture = RES.getRes(name); + result.texture = texture; + return result; + }; + return Main; +}(egret.DisplayObjectContainer)); +__reflect(Main.prototype, "Main"); diff --git a/bin-debug/ScoreBoard.js b/bin-debug/ScoreBoard.js new file mode 100644 index 0000000..be6e3a9 --- /dev/null +++ b/bin-debug/ScoreBoard.js @@ -0,0 +1,61 @@ +var __reflect = (this && this.__reflect) || function (p, c, t) { + p.__class__ = c, t ? t.push(c) : t = [c], p.__types__ = p.__types__ ? t.concat(p.__types__) : t; +}; +var __extends = this && this.__extends || function __extends(t, e) { + function r() { + this.constructor = t; +} +for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]); +r.prototype = e.prototype, t.prototype = new r(); +}; +var ScoreBoard = (function (_super) { + __extends(ScoreBoard, _super); + function ScoreBoard() { + var _this = _super.call(this) || this; + //任务移动的方向 + _this.currentPoint = 0; + _this.maxPoint = 0; + // this.addEventListener(egret.Event.ENTER_FRAME, this.onEnterFrame, this); + _this.addEventListener(egret.Event.ADDED_TO_STAGE, _this.init, _this); + return _this; + } + /** + * 根据name关键字创建一个Bitmap对象。name属性请参考resources/resource.json配置文件的内容。 + * Create a Bitmap object according to name keyword.As for the property of name please refer to the configuration file of resources/resource.json. + */ + ScoreBoard.prototype.createBitmapByName = function (name) { + var result = new egret.Bitmap(); + result.texture = RES.getRes(name); + return result; + }; + ScoreBoard.prototype.setCurrentPoint = function (point) { + this.currentPoint = point; + if (point > this.maxPoint) { + this.maxPoint = point; + } + this.currentPointText.text = this.currentPoint + ""; + this.maxPointText.text = this.maxPoint + ""; + }; + ScoreBoard.prototype.init = function () { + var shp = new egret.DisplayObjectContainer(); + this.scoreBoard = this.createBitmapByName('scoreboard_png'); + shp.width = this.scoreBoard.width; + shp.height = this.scoreBoard.height; + this.width = shp.width; + this.height = shp.height; + shp.addChild(this.scoreBoard); + this.currentPointText = new egret.TextField(); + this.maxPointText = new egret.TextField(); + shp.addChild(this.currentPointText); + shp.addChild(this.maxPointText); + this.currentPointText.y = this.scoreBoard.height / 2.5; + this.currentPointText.textColor = 0xcc0000; + this.maxPointText.textColor = 0xcc0000; + this.maxPointText.y = this.scoreBoard.height / 1.65; + this.currentPointText.x = this.scoreBoard.width / 2; + this.maxPointText.x = this.scoreBoard.width / 2; + this.addChild(shp); + }; + return ScoreBoard; +}(egret.DisplayObjectContainer)); +__reflect(ScoreBoard.prototype, "ScoreBoard"); diff --git a/bin-release/web/191201225322/index.html b/bin-release/web/191201225322/index.html new file mode 100644 index 0000000..3d8ce27 --- /dev/null +++ b/bin-release/web/191201225322/index.html @@ -0,0 +1,102 @@ + + + + + + Egret + + + + + + + + + + +
正在加载...0/14
+
+
+ + + + \ No newline at end of file diff --git a/bin-release/web/191201225322/js/assetsmanager.min_2ef412b7.js b/bin-release/web/191201225322/js/assetsmanager.min_2ef412b7.js new file mode 100644 index 0000000..bd155e9 --- /dev/null +++ b/bin-release/web/191201225322/js/assetsmanager.min_2ef412b7.js @@ -0,0 +1 @@ +var __reflect=this&&this.__reflect||function(e,r,t){e.__class__=r,t?t.push(r):t=[r],e.__types__=e.__types__?t.concat(e.__types__):t},__extends=this&&this.__extends||function(e,r){function t(){this.constructor=e}for(var o in r)r.hasOwnProperty(o)&&(e[o]=r[o]);t.prototype=r.prototype,e.prototype=new t},__decorate=this&&this.__decorate||function(e,r,t,o){var n,i=arguments.length,a=3>i?r:null===o?o=Object.getOwnPropertyDescriptor(r,t):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,r,t,o);else for(var s=e.length-1;s>=0;s--)(n=e[s])&&(a=(3>i?n(a):i>3?n(r,t,a):n(r,t))||a);return i>3&&a&&Object.defineProperty(r,t,a),a},RES;!function(e){}(RES||(RES={}));var RES;!function(e){var r=function(){function r(){this.groupTotalDic={},this.numLoadedDic={},this.groupErrorDic={},this.retryTimesDic={},this.maxRetryTimes=3,this.reporterDic={},this.dispatcherDic={},this.failedList=new Array,this.loadItemErrorDic={},this.errorDic={},this.itemListPriorityDic={},this.itemLoadDic={},this.promiseHash={},this.lazyLoadList=new Array,this.loadingCount=0,this.thread=4}return r.prototype.pushResItem=function(e){if(this.promiseHash[e.root+e.name])return this.promiseHash[e.root+e.name];this.lazyLoadList.push(e),this.itemListPriorityDic[Number.NEGATIVE_INFINITY]=this.lazyLoadList,this.updatelistPriority(this.lazyLoadList,Number.NEGATIVE_INFINITY);var r=new egret.EventDispatcher;this.dispatcherDic[e.root+e.name]=r;var t=new Promise(function(e,t){r.addEventListener("complete",function(r){e(r.data)},null),r.addEventListener("error",function(e){t(e.data)},null)});return this.promiseHash[e.root+e.name]=t,this.loadNextResource(),t},r.prototype.pushResGroup=function(e,r,t,o){if(this.promiseHash[r])return this.promiseHash[r];for(var n=e.length,i=0;n>i;i++){var a=e[i];a.groupNames||(a.groupNames=[]),a.groupNames.push(r)}this.groupTotalDic[r]=e.length,this.numLoadedDic[r]=0,this.updatelistPriority(e,t),this.reporterDic[r]=o;var s=new egret.EventDispatcher;this.dispatcherDic[r]=s;var u=new Promise(function(e,r){s.addEventListener("complete",e,null),s.addEventListener("error",function(e){r(e.data)},null)});return this.promiseHash[r]=u,this.loadNextResource(),u},r.prototype.updatelistPriority=function(e,r){void 0==this.itemListPriorityDic[r]&&(this.itemListPriorityDic[r]=[]);for(var t=0,o=e;ti){this.itemListPriorityDic[r].push(n);var a=this.itemListPriorityDic[i].indexOf(n);this.itemListPriorityDic[i].splice(a,1)}}}},r.prototype.findPriorityInDic=function(e){for(var r in this.itemListPriorityDic)if(this.itemListPriorityDic[r].indexOf(e)>-1)return parseInt(r)},r.prototype.loadNextResource=function(){for(;this.loadingCountr.maxRetryTimes))return r.retryTimesDic[t.name]=n+1,r.failedList.push(t),void r.loadNextResource();if(delete r.retryTimesDic[t.name],r.promiseHash[t.root+t.name]){var i=r.deleteDispatcher(t.root+t.name);i.dispatchEventWith("error",!1,{r:t,error:o})}var a=t.groupNames;if(a){delete t.groupNames;for(var s=0,u=a;s0)return this.failedList.shift();var e=Number.NEGATIVE_INFINITY;for(var r in this.itemListPriorityDic)e=Math.max(e,r);var t=this.itemListPriorityDic[e];if(t)return 0==t.length?(delete this.itemListPriorityDic[e],this.getOneResourceInfoInGroup()):t.shift()},r.prototype.setGroupProgress=function(e,r){var t=this.reporterDic[e];this.numLoadedDic[e]++;var o=this.numLoadedDic[e],n=this.groupTotalDic[e];return t&&t.onProgress&&t.onProgress(o,n,r),o==n},r.prototype.loadGroupEnd=function(e,r){delete this.groupTotalDic[e],delete this.numLoadedDic[e],delete this.reporterDic[e];var t=this.deleteDispatcher(e);if(r){delete this.groupErrorDic[e];var o=this.loadItemErrorDic[e];delete this.loadItemErrorDic[e],t.dispatchEventWith("error",!1,{itemList:o,lastError:r})}else{var n=this.groupErrorDic[e];if(delete this.groupErrorDic[e],n){var o=this.loadItemErrorDic[e];delete this.loadItemErrorDic[e];var i=this.errorDic[e];delete this.errorDic[e],t.dispatchEventWith("error",!1,{itemList:o,error:i})}else t.dispatchEventWith("complete")}},r.prototype.deleteDispatcher=function(e){delete this.promiseHash[e];var r=this.dispatcherDic[e];return delete this.dispatcherDic[e],r},r.prototype.loadResource=function(r,t){if(!t){if(1==e.FEATURE_FLAG.FIX_DUPLICATE_LOAD){var o=e.host.state[r.root+r.name];if(2==o)return Promise.resolve(e.host.get(r));if(1==o)return r.promise}t=e.processor.isSupport(r)}if(!t)throw new e.ResourceManagerError(2001,r.name,r.type);e.host.state[r.root+r.name]=1;var n=t.onLoadStart(e.host,r);return r.promise=n,n},r.prototype.unloadResource=function(r){var t=e.host.get(r);if(!t)return console.warn("尝试释放不存在的资源:",r.name),!1;var o=e.processor.isSupport(r);return o?(o.onRemoveStart(e.host,r),e.host.remove(r),1==r.extra&&e.config.removeResourceData(r),!0):!0},r}();e.ResourceLoader=r,__reflect(r.prototype,"RES.ResourceLoader")}(RES||(RES={}));var RES;!function(e){e.checkNull=function(e,r,t){var o=t.value;t.value=function(){for(var e=[],t=0;t=0?"legacyResourceConfig":"resourceConfig",o={type:t,root:r,url:e,name:e}}e.resourceNameSelector=function(e){return e},e.getResourceInfo=r;var o;e.setConfigURL=t;var n=function(){function t(){}return t.prototype.init=function(){return this.config||(this.config={alias:{},groups:{},resourceRoot:o.root,mergeSelector:null,fileSystem:null,loadGroup:[]}),e.queue.pushResItem(o)["catch"](function(r){return e.isCompatible||r.__resource_manager_error__||(r.error?console.error(r.error.stack):console.error(r.stack),r=new e.ResourceManagerError(1002)),e.host.remove(o),Promise.reject(r)})},t.prototype.getGroupByName=function(r){var t=this.config.groups[r],o=[];if(!t)return o;for(var n=0,i=t;n=0&&(t=e.substr(r+1),e=e.substr(0,r));var o=this.getResource(e);return o?{r:o,key:e,subkey:t}:null},t.prototype.getKeyByAlias=function(e){return this.config.alias[e]?this.config.alias[e]:e},t.prototype.getResource=function(e){var t=this.config.alias[e];t||(t=e);var o=r(t);return o?o:null},t.prototype.createGroup=function(e,r,t){if(void 0===t&&(t=!1),!t&&this.config.groups[e]||!r||0==r.length)return!1;for(var o=[],n=0,i=r;n=0){var o=t.split("://");t=o[0]+"://"+e.path.normalize(o[1]+"/"),r=r.replace(t,"")}else t=e.path.normalize(t+"/"),r=r.replace(t,"");return e.setConfigURL(r,t),P||(P=new D),a(P.loadConfig())}function a(r){return e.isCompatible?void r["catch"](function(e){}).then():r}function s(e,r,t){return void 0===r&&(r=0),a(P.loadGroup(e,r,t))}function u(e){return P.isGroupLoaded(e)}function c(r){return P.getGroupByName(r).map(function(r){return e.ResourceItem.convertToResItem(r)})}function l(e,r,t){return void 0===t&&(t=!1),P.createGroup(e,r,t)}function f(e){return P.hasRes(e)}function p(e){return P.getRes(e)}function g(e,r,t){return a(P.getResAsync.apply(P,arguments))}function d(e,r,t,o){if(void 0===o&&(o=""),!P){var n=egret.sys.tr(3200);return egret.warn(n),Promise.reject(n)}return a(P.getResByUrl(e,r,t,o))}function v(e,r){return P.destroyRes(e,r)}function h(e){P||(P=new D),P.setMaxLoadingThread(e)}function m(e){P.setMaxRetryTimes(e)}function R(e,r,t,o,n){void 0===o&&(o=!1),void 0===n&&(n=0),P||(P=new D),P.addEventListener(e,r,t,o,n)}function E(e,r,t,o){void 0===o&&(o=!1),P.removeEventListener(e,r,t,o)}function y(e){P.addResourceData(e)}function _(){return P||(P=new D),P.vcs}function S(e){P||(P=new D),P.registerVersionController(e)}function L(e){return P.vcs?P.vcs.getVirtualUrl(e):e}e.nameSelector=r,e.typeSelector=t,e.registerAnalyzer=o,e.setIsCompatible=n,e.isCompatible=!1,e.loadConfig=i,e.loadGroup=s,e.isGroupLoaded=u,e.getGroupByName=c,e.createGroup=l,e.hasRes=f,e.getRes=p,e.getResAsync=g,e.getResByUrl=d,e.destroyRes=v,e.setMaxLoadingThread=h,e.setMaxRetryTimes=m,e.addEventListener=R,e.removeEventListener=E,e.$addResourceData=y,e.getVersionController=_,e.registerVersionController=S,e.getVirtualUrl=L;var D=function(r){function t(){var t=r.call(this)||this;return t.isVcsInit=!1,t.normalLoadConfig=function(){return e.config.init().then(function(r){e.ResourceEvent.dispatchResourceEvent(t,e.ResourceEvent.CONFIG_COMPLETE)},function(r){return e.ResourceEvent.dispatchResourceEvent(t,e.ResourceEvent.CONFIG_LOAD_ERROR),Promise.reject(r)})},e.VersionController&&(t.vcs=new e.VersionController),t}return __extends(t,r),t.prototype.registerVersionController=function(e){this.vcs=e,this.isVcsInit=!1},t.prototype.loadConfig=function(){var e=this;return!this.isVcsInit&&this.vcs?(this.isVcsInit=!0,this.vcs.init().then(function(){return e.normalLoadConfig()})):this.normalLoadConfig()},t.prototype.isGroupLoaded=function(r){var t=e.config.getGroupByName(r);return t.every(function(r){return null!=e.host.get(r)})},t.prototype.getGroupByName=function(r){return e.config.getGroupByName(r)},t.prototype.loadGroup=function(r,t,o){var n=this;void 0===t&&(t=0);var i={onProgress:function(t,i,a){o&&o.onProgress&&o.onProgress(t,i,a),e.ResourceEvent.dispatchResourceEvent(n,e.ResourceEvent.GROUP_PROGRESS,r,a,t,i)}};return this._loadGroup(r,t,i).then(function(t){-1==e.config.config.loadGroup.indexOf(r)&&e.config.config.loadGroup.push(r),e.ResourceEvent.dispatchResourceEvent(n,e.ResourceEvent.GROUP_COMPLETE,r)},function(t){if(-1==e.config.config.loadGroup.indexOf(r)&&e.config.config.loadGroup.push(r),t.itemList)for(var o=t.itemList,i=o.length,a=0;i>a;a++){var s=o[a];delete s.promise,e.ResourceEvent.dispatchResourceEvent(n,e.ResourceEvent.ITEM_LOAD_ERROR,r,s)}return e.isCompatible&&console.warn(t.error.message),e.ResourceEvent.dispatchResourceEvent(n,e.ResourceEvent.GROUP_LOAD_ERROR,r),Promise.reject(t.error)})},t.prototype._loadGroup=function(r,t,o){void 0===t&&(t=0);var n=e.config.getGroupByName(r);return 0==n.length?new Promise(function(t,o){o({error:new e.ResourceManagerError(2005,r)})}):e.queue.pushResGroup(n,r,t,o)},t.prototype.createGroup=function(r,t,o){return void 0===o&&(o=!1),e.config.createGroup(r,t,o)},t.prototype.hasRes=function(r){return null!=e.config.getResourceWithSubkey(r)},t.prototype.getRes=function(r){var t=e.config.getResourceWithSubkey(r);if(t){var o=t.r,n=t.key,i=t.subkey,a=e.processor.isSupport(o);return a&&a.getData&&i?a.getData(e.host,o,n,i):e.host.get(o)}return null},t.prototype.getResAsync=function(r,t,o){var n=this,i=r,a=e.config.getResourceWithSubkey(r);if(null==a)return t&&t.call(o,null,i),Promise.reject(new e.ResourceManagerError(2006,r));var s=this.getRes(r);if(s)return t&&egret.callLater(function(){t.call(o,s,i)},this),Promise.resolve(s);var u=a.r,c=a.subkey;return e.queue.pushResItem(u).then(function(n){e.host.save(u,n);var a=e.processor.isSupport(u);return a&&a.getData&&c&&(n=a.getData(e.host,u,r,c)),t&&t.call(o,n,i),n},function(r){return e.host.remove(u),e.ResourceEvent.dispatchResourceEvent(n,e.ResourceEvent.ITEM_LOAD_ERROR,"",u),t?(t.call(o,null,i),Promise.reject(null)):Promise.reject(r)})},t.prototype.getResByUrl=function(r,t,o,n){var i=this;void 0===n&&(n="");var a=e.config.getResource(r);if(!a&&(n||(n=e.config.__temp__get__type__via__url(r)),a={name:r,url:r,type:n,root:"",extra:1},e.config.addResourceData(a),a=e.config.getResource(r),!a))throw"never";return e.queue.pushResItem(a).then(function(r){return e.host.save(a,r),t&&a&&t.call(o,r,a.url),r},function(n){return e.host.remove(a),e.ResourceEvent.dispatchResourceEvent(i,e.ResourceEvent.ITEM_LOAD_ERROR,"",a),t?(t.call(o,null,r),Promise.reject(null)):Promise.reject(n)})},t.prototype.destroyRes=function(r,t){void 0===t&&(t=!0);var o=e.config.getGroupByName(r);if(o&&o.length>0){var n=e.config.config.loadGroup.indexOf(r);if(-1==n)return!1;if(t||1==e.config.config.loadGroup.length&&e.config.config.loadGroup[0]==r){for(var i=0,a=o;ir&&(r=1),e.queue.thread=r},t.prototype.setMaxRetryTimes=function(r){r=Math.max(r,0),e.queue.maxRetryTimes=r},t.prototype.addResourceData=function(r){r.root="",e.config.addResourceData(r)},__decorate([e.checkNull],t.prototype,"hasRes",null),__decorate([e.checkNull],t.prototype,"getRes",null),__decorate([e.checkNull],t.prototype,"getResAsync",null),__decorate([e.checkNull],t.prototype,"getResByUrl",null),t}(egret.EventDispatcher);e.Resource=D,__reflect(D.prototype,"RES.Resource");var P}(RES||(RES={}));var RES;!function(e){var r;!function(e){function r(e){var r=e.split("/");return r.filter(function(e,t){return!!e||t==r.length-1}).join("/")}function t(e){return e.substr(e.lastIndexOf("/")+1)}function o(e){return e.substr(0,e.lastIndexOf("/"))}e.normalize=r,e.basename=t,e.dirname=o}(r=e.path||(e.path={}))}(RES||(RES={}));var RES;!function(e){function r(){e.config.config.fileSystem.profile(),console.log(t);var r=0;for(var o in t){var n=t[o];n instanceof egret.Texture&&(r+=n.$bitmapWidth*n.$bitmapHeight*4)}console.log("gpu size : "+(r/1024).toFixed(3)+"kb")}var t={};e.profile=r,e.host={state:{},get resourceConfig(){return e.config},load:function(r,t){var o="string"==typeof t?e.processor._map[t]:t;return e.queue.loadResource(r,o)},unload:function(r){return e.queue.unloadResource(r)},save:function(r,o){e.host.state[r.root+r.name]=2,delete r.promise,t[r.root+r.name]=o},get:function(e){return t[e.root+e.name]},remove:function(r){delete e.host.state[r.root+r.name],delete t[r.root+r.name]}},e.config=new e.ResourceConfig,e.queue=new e.ResourceLoader;var o=function(e){function r(t,o,n){var i=e.call(this)||this;return i.__resource_manager_error__=!0,i.name=t.toString(),i.message=r.errorMessage[t].replace("{0}",o).replace("{1}",n),i}return __extends(r,e),r.errorMessage={1001:"文件加载失败:{0}",1002:"ResourceManager 初始化失败:配置文件加载失败",2001:"{0}解析失败,不支持指定解析类型:'{1}',请编写自定义 Processor ,更多内容请参见 https://github.com/egret-labs/resourcemanager/blob/master/docs/README.md#processor",2002:"Analyzer 相关API 在 ResourceManager 中不再支持,请编写自定义 Processor ,更多内容请参见 https://github.com/egret-labs/resourcemanager/blob/master/docs/README.md#processor",2003:"{0}解析失败,错误原因:{1}",2004:"无法找到文件类型:{0}",2005:'RES加载了不存在或空的资源组:"{0}"',2006:"资源配置文件中无法找到特定的资源:{0}"},r}(Error);e.ResourceManagerError=o,__reflect(o.prototype,"RES.ResourceManagerError")}(RES||(RES={}));var RES;!function(e){var r;!function(r){function t(e){return r._map[e.type]}function o(e,t){r._map[e]=t}function n(r,t){var o=this;return new Promise(function(n,i){var a=function(){var e=r.data?r.data:r.response;n(e)},s=function(){var r=new e.ResourceManagerError(1001,t.url);i(r)};r.addEventListener(egret.Event.COMPLETE,a,o),r.addEventListener(egret.IOErrorEvent.IO_ERROR,s,o)})}function i(e,r){if(-1!=r.indexOf("://"))return r;e=e.split("\\").join("/");var t=e.match(/#.*|\?.*/),o="";t&&(o=t[0]);var n=e.lastIndexOf("/");return e=-1!=n?e.substring(0,n+1)+r:r,e+o}function a(e){return{name:e.name+"_alpha",url:e.etc1_alpha_url,type:"ktx",root:e.root}}r.isSupport=t,r.map=o,r.getRelativePath=i,r.ImageProcessor={onLoadStart:function(r,t){var o=new egret.ImageLoader;return o.load(e.getVirtualUrl(t.root+t.url)),n(o,t).then(function(e){var o=new egret.Texture;o._setBitmapData(e);var n=r.resourceConfig.getResource(t.name);if(n&&n.scale9grid){var i=n.scale9grid.split(",");o.scale9Grid=new egret.Rectangle(parseInt(i[0]),parseInt(i[1]),parseInt(i[2]),parseInt(i[3]))}return o})},onRemoveStart:function(e,r){var t=e.get(r);t.dispose()}},r.KTXTextureProcessor={onLoadStart:function(e,r){return e.load(r,"bin").then(function(t){if(!t)return console.error("ktx:"+r.root+r.url+" is null"),null;var o=new egret.KTXContainer(t,1);if(o.isInvalid)return console.error("ktx:"+r.root+r.url+" is invalid"),null;var n=new egret.BitmapData(t);n.debugCompressedTextureURL=r.root+r.url,n.format="ktx",o.uploadLevels(n,!1);var i=new egret.Texture;i._setBitmapData(n);var a=e.resourceConfig.getResource(r.name);if(a&&a.scale9grid){var s=a.scale9grid.split(",");i.scale9Grid=new egret.Rectangle(parseInt(s[0]),parseInt(s[1]),parseInt(s[2]),parseInt(s[3]))}return e.save(r,i),i},function(t){throw e.remove(r),t})},onRemoveStart:function(e,r){var t=e.get(r);t&&t.dispose()}},r.makeEtc1SeperatedAlphaResourceInfo=a,r.ETC1KTXProcessor={onLoadStart:function(e,r){return e.load(r,"ktx").then(function(t){if(!t)return null;if(r.etc1_alpha_url){var o=a(r);return e.load(o,"ktx").then(function(r){return t&&t.$bitmapData&&r.$bitmapData?(t.$bitmapData.etcAlphaMask=r.$bitmapData,e.save(o,r)):e.remove(o),t},function(r){throw e.remove(o),r})}return t},function(t){throw e.remove(r),t})},onRemoveStart:function(e,r){var t=e.get(r);if(t&&t.dispose(),r.etc1_alpha_url){var o=a(r),n=e.get(o);n&&n.dispose(),e.unload(o)}}},r.BinaryProcessor={onLoadStart:function(r,t){var o=new egret.HttpRequest;return o.responseType=egret.HttpResponseType.ARRAY_BUFFER,o.open(e.getVirtualUrl(t.root+t.url),"get"),o.send(),n(o,t)},onRemoveStart:function(e,r){}},r.TextProcessor={onLoadStart:function(r,t){var o=new egret.HttpRequest;return o.responseType=egret.HttpResponseType.TEXT,o.open(e.getVirtualUrl(t.root+t.url),"get"),o.send(),n(o,t)},onRemoveStart:function(e,r){return!0}},r.JsonProcessor={onLoadStart:function(e,r){return e.load(r,"text").then(function(e){var r=JSON.parse(e);return r})},onRemoveStart:function(e,r){}},r.XMLProcessor={onLoadStart:function(e,r){return e.load(r,"text").then(function(e){var r=egret.XML.parse(e);return r})},onRemoveStart:function(e,r){return!0}},r.CommonJSProcessor={onLoadStart:function(r,t){return r.load(t,"text").then(function(r){var o=new Function("require","exports",r),n=function(){},i={};try{o(n,i)}catch(a){throw new e.ResourceManagerError(2003,t.name,a.message)}return i})},onRemoveStart:function(e,r){}},r.SheetProcessor={onLoadStart:function(r,t){return r.load(t,"json").then(function(o){var n=r.resourceConfig.getResource(e.nameSelector(o.file));if(!n){var a=i(t.url,o.file);n={name:a,url:a,type:"image",root:t.root}}return r.load(n).then(function(e){if(!e)return null;var t=o.frames,i=new egret.SpriteSheet(e);i.$resourceInfo=n;for(var a in t){var s=t[a],u=i.createTexture(a,s.x,s.y,s.w,s.h,s.offX,s.offY,s.sourceW,s.sourceH);if(s.scale9grid){var c=s.scale9grid,l=c.split(",");u.scale9Grid=new egret.Rectangle(parseInt(l[0]),parseInt(l[1]),parseInt(l[2]),parseInt(l[3]))}}return r.save(n,e),i},function(e){throw r.remove(n),e})})},getData:function(e,r,t,o){var n=e.get(r);return n?n.getTexture(o):null},onRemoveStart:function(e,r){var t=e.get(r),o=t.$resourceInfo;t.dispose(),e.unload(o)}};var s=function(e,r){var t="",o=r.split("\n"),n=o[2],i=n.indexOf('file="');-1!=i&&(n=n.substring(i+6),i=n.indexOf('"'),t=n.substring(0,i)),e=e.split("\\").join("/");var i=e.lastIndexOf("/");return e=-1!=i?e.substring(0,i+1)+t:t};r.FontProcessor={onLoadStart:function(r,t){return r.load(t,"text").then(function(o){var n;try{n=JSON.parse(o)}catch(a){n=o}var u;u="string"==typeof n?s(t.url,n):i(t.url,n.file);var c=r.resourceConfig.getResource(e.nameSelector(u));return c||(c={name:u,url:u,type:"image",root:t.root}),r.load(c).then(function(e){var t=new egret.BitmapFont(e,n);return t.$resourceInfo=c,r.save(c,e),t},function(e){throw r.remove(c),e})})},onRemoveStart:function(e,r){var t=e.get(r),o=t.$resourceInfo;e.unload(o)}},r.SoundProcessor={onLoadStart:function(r,t){var o=new egret.Sound;return o.load(e.getVirtualUrl(t.root+t.url)),n(o,t).then(function(){return o})},onRemoveStart:function(e,r){var t=e.get(r);t.close()}},r.MovieClipProcessor={onLoadStart:function(r,t){var o,n;return r.load(t,"json").then(function(i){o=i;var a=t.name,s=a.substring(0,a.lastIndexOf("."))+".png";if(n=r.resourceConfig.getResource(s),!n)throw new e.ResourceManagerError(1001,s);return r.load(n)}).then(function(e){r.save(n,e);var t=e,i=new egret.MovieClipDataFactory(o,t);return i})},onRemoveStart:function(e,r){var t=e.get(r);t.clearCache(),t.$spriteSheet.dispose();var o=r.name,n=o.substring(0,o.lastIndexOf("."))+".png",i=e.resourceConfig.getResource(n);i&&e.unload(i)}},r.MergeJSONProcessor={onLoadStart:function(r,t){return r.load(t,"json").then(function(r){for(var o in r)e.config.addSubkey(o,t.name);return r})},getData:function(e,r,t,o){var n=e.get(r);return n?n[o]:(console.error("missing resource :"+r.name),null)},onRemoveStart:function(e,r){}},r.LegacyResourceConfigProcessor={onLoadStart:function(r,t){return r.load(t,"json").then(function(o){var n=e.config.config,i=t.root,a=n.fileSystem;a||(a={fsData:{},getFile:function(e){return p[e]},addFile:function(e){e.type||(e.type=""),void 0==i&&(e.root=""),p[e.name]=e},profile:function(){console.log(p)},removeFile:function(e){delete p[e]}},n.fileSystem=a);for(var s=n.groups,u=0,c=o.groups;uc;c++){var l=t[c];if(l.listener==i&&l.thisObject==r&&l.target==this)return!1;-1==s&&l.priorityn;n++){var a=t[n];if(a.listener==e&&a.thisObject==i&&a.target==this)return t.splice(n,1),!0}return!1},r.prototype.hasEventListener=function(t){var e=this.$EventDispatcher;return!(!e[1][t]&&!e[2][t])},r.prototype.willTrigger=function(t){return this.hasEventListener(t)},r.prototype.dispatchEvent=function(t){return t.$currentTarget=this.$EventDispatcher[0],t.$setTarget(t.$currentTarget),this.$notifyListener(t,!1)},r.prototype.$notifyListener=function(t,i){var r=this.$EventDispatcher,n=i?r[2]:r[1],a=n[t.$type];if(!a)return!0;var o=a.length;if(0==o)return!0;var s=e;r[3]++;for(var h=0;o>h;h++){var c=a[h];if(c.listener.call(c.thisObject,t),c.dispatchOnce&&s.push(c),t.$isPropagationImmediateStopped)break}for(r[3]--;s.length;){var c=s.pop();c.target.removeEventListener(c.type,c.listener,c.thisObject,c.useCapture)}return!t.$isDefaultPrevented},r.prototype.dispatchEventWith=function(e,i,r,n){if(i||this.hasEventListener(e)){var a=t.Event.create(t.Event,e,i,n);a.data=r;var o=this.dispatchEvent(a);return t.Event.release(a),o}return!0},r}(t.HashObject);t.EventDispatcher=i,__reflect(i.prototype,"egret.EventDispatcher",["egret.IEventDispatcher"])}(egret||(egret={}));var egret;!function(t){var e=function(e){function i(){var i=e.call(this)||this;return i.type=null,i.$id=null,i.paddingTop=0,i.paddingBottom=0,i.paddingLeft=0,i.paddingRight=0,i.$uniforms={},t.nativeRender&&egret_native.NativeDisplayObject.createFilter(i),i}return __extends(i,e),i.prototype.$toJson=function(){return""},i.prototype.updatePadding=function(){},i.prototype.onPropertyChange=function(){var e=this;e.updatePadding(),t.nativeRender&&(egret_native.NativeDisplayObject.setFilterPadding(e.$id,e.paddingTop,e.paddingBottom,e.paddingLeft,e.paddingRight),egret_native.NativeDisplayObject.setDataToFilter(e))},i}(t.HashObject);t.Filter=e,__reflect(e.prototype,"egret.Filter")}(egret||(egret={}));var egret;!function(t){function e(t){return t%=360,t>180?t-=360:-180>t&&(t+=360),t}var i=function(i){function r(){var e=i.call(this)||this;return e.$children=null,e.$name="",e.$parent=null,e.$stage=null,e.$nestLevel=0,e.$useTranslate=!1,e.$matrix=new t.Matrix,e.$matrixDirty=!1,e.$x=0,e.$y=0,e.$scaleX=1,e.$scaleY=1,e.$rotation=0,e.$skewX=0,e.$skewXdeg=0,e.$skewY=0,e.$skewYdeg=0,e.$explicitWidth=0/0,e.$explicitHeight=0/0,e.$anchorOffsetX=0,e.$anchorOffsetY=0,e.$visible=!0,e.$displayList=null,e.$cacheAsBitmap=!1,e.$cacheDirty=!1,e.$alpha=1,e.$touchEnabled=r.defaultTouchEnabled,e.$scrollRect=null,e.$blendMode=0,e.$maskedObject=null,e.$mask=null,e.$maskRect=null,e.$parentDisplayList=null,e.$renderNode=null,e.$renderDirty=!1,e.$renderMode=null,e._tint=0,e.$tintRGB=0,e.$sortDirty=!1,e._zIndex=0,e.$lastSortedIndex=0,e.sortableChildren=!1,t.nativeRender&&e.createNativeDisplayObject(),e.tint=16777215,e}return __extends(r,i),r.prototype.createNativeDisplayObject=function(){this.$nativeDisplayObject=new egret_native.NativeDisplayObject(0)},Object.defineProperty(r.prototype,"name",{get:function(){return this.$name},set:function(t){this.$name=t},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"parent",{get:function(){return this.$parent},enumerable:!0,configurable:!0}),r.prototype.$setParent=function(t){this.$parent=t},r.prototype.$onAddToStage=function(e,i){var r=this;r.$stage=e,r.$nestLevel=i,r.$hasAddToStage=!0,t.Sprite.$EVENT_ADD_TO_STAGE_LIST.push(r)},r.prototype.$onRemoveFromStage=function(){var e=this;e.$nestLevel=0,t.Sprite.$EVENT_REMOVE_FROM_STAGE_LIST.push(e)},r.prototype.$updateUseTransform=function(){var t=this;1==t.$scaleX&&1==t.$scaleY&&0==t.$skewX&&0==t.$skewY?t.$useTranslate=!1:t.$useTranslate=!0},Object.defineProperty(r.prototype,"stage",{get:function(){return this.$stage},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"matrix",{get:function(){return this.$getMatrix().clone()},set:function(t){this.$setMatrix(t)},enumerable:!0,configurable:!0}),r.prototype.$getMatrix=function(){var t=this;return t.$matrixDirty&&(t.$matrixDirty=!1,t.$matrix.$updateScaleAndRotation(t.$scaleX,t.$scaleY,t.$skewX,t.$skewY)),t.$matrix.tx=t.$x,t.$matrix.ty=t.$y,t.$matrix},r.prototype.$setMatrix=function(i,r){void 0===r&&(r=!0);var n=this,a=n.$matrix;a.a=i.a,a.b=i.b,a.c=i.c,a.d=i.d,n.$x=i.tx,n.$y=i.ty,n.$matrixDirty=!1,1==a.a&&0==a.b&&0==a.c&&1==a.d?n.$useTranslate=!1:n.$useTranslate=!0,r&&(n.$scaleX=a.$getScaleX(),n.$scaleY=a.$getScaleY(),n.$skewX=i.$getSkewX(),n.$skewY=i.$getSkewY(),n.$skewXdeg=e(180*n.$skewX/Math.PI),n.$skewYdeg=e(180*n.$skewY/Math.PI),n.$rotation=e(180*n.$skewY/Math.PI)),t.nativeRender&&n.$nativeDisplayObject.setMatrix(i.a,i.b,i.c,i.d,i.tx,i.ty)},r.prototype.$getConcatenatedMatrix=function(){var e=this,i=e.$concatenatedMatrix;i||(i=e.$concatenatedMatrix=new t.Matrix),e.$parent?e.$parent.$getConcatenatedMatrix().$preMultiplyInto(e.$getMatrix(),i):i.copyFrom(e.$getMatrix());var r=e.$anchorOffsetX,n=e.$anchorOffsetY,a=e.$scrollRect;return a?i.$preMultiplyInto(t.$TempMatrix.setTo(1,0,0,1,-a.x-r,-a.y-n),i):(0!=r||0!=n)&&i.$preMultiplyInto(t.$TempMatrix.setTo(1,0,0,1,-r,-n),i),e.$concatenatedMatrix},r.prototype.$getInvertedConcatenatedMatrix=function(){var e=this;return e.$invertedConcatenatedMatrix||(e.$invertedConcatenatedMatrix=new t.Matrix),e.$getConcatenatedMatrix().$invertInto(e.$invertedConcatenatedMatrix),e.$invertedConcatenatedMatrix},Object.defineProperty(r.prototype,"x",{get:function(){return this.$getX()},set:function(t){this.$setX(t)},enumerable:!0,configurable:!0}),r.prototype.$getX=function(){return this.$x},r.prototype.$setX=function(e){var i=this;if(i.$x==e)return!1;if(i.$x=e,t.nativeRender)i.$nativeDisplayObject.setX(e);else{var r=i.$parent;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp());var n=i.$maskedObject;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp())}return!0},Object.defineProperty(r.prototype,"y",{get:function(){return this.$getY()},set:function(t){this.$setY(t)},enumerable:!0,configurable:!0}),r.prototype.$getY=function(){return this.$y},r.prototype.$setY=function(e){var i=this;if(i.$y==e)return!1;if(i.$y=e,t.nativeRender)i.$nativeDisplayObject.setY(e);else{var r=i.$parent;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp());var n=i.$maskedObject;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp())}return!0},Object.defineProperty(r.prototype,"scaleX",{get:function(){return this.$getScaleX()},set:function(t){this.$setScaleX(t)},enumerable:!0,configurable:!0}),r.prototype.$getScaleX=function(){return this.$scaleX},r.prototype.$setScaleX=function(e){var i=this;if(i.$scaleX!=e)if(i.$scaleX=e,i.$matrixDirty=!0,i.$updateUseTransform(),t.nativeRender)i.$nativeDisplayObject.setScaleX(e);else{var r=i.$parent;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp());var n=i.$maskedObject;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp())}},Object.defineProperty(r.prototype,"scaleY",{get:function(){return this.$getScaleY()},set:function(t){this.$setScaleY(t)},enumerable:!0,configurable:!0}),r.prototype.$getScaleY=function(){return this.$scaleY},r.prototype.$setScaleY=function(e){var i=this;if(i.$scaleY!=e)if(i.$scaleY=e,i.$matrixDirty=!0,i.$updateUseTransform(),t.nativeRender)i.$nativeDisplayObject.setScaleY(e);else{var r=i.$parent;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp());var n=i.$maskedObject;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp())}},Object.defineProperty(r.prototype,"rotation",{get:function(){return this.$getRotation()},set:function(t){this.$setRotation(t)},enumerable:!0,configurable:!0}),r.prototype.$getRotation=function(){return this.$rotation},r.prototype.$setRotation=function(i){i=e(i);var r=this;if(i!=r.$rotation){var n=i-r.$rotation,a=n/180*Math.PI;if(r.$skewX+=a,r.$skewY+=a,r.$rotation=i,r.$matrixDirty=!0,r.$updateUseTransform(),t.nativeRender)r.$nativeDisplayObject.setRotation(i);else{var o=r.$parent;o&&!o.$cacheDirty&&(o.$cacheDirty=!0,o.$cacheDirtyUp());var s=r.$maskedObject;s&&!s.$cacheDirty&&(s.$cacheDirty=!0,s.$cacheDirtyUp())}}},Object.defineProperty(r.prototype,"skewX",{get:function(){return this.$skewXdeg},set:function(t){this.$setSkewX(t)},enumerable:!0,configurable:!0}),r.prototype.$setSkewX=function(i){var r=this;if(i!=r.$skewXdeg)if(r.$skewXdeg=i,i=e(i),i=i/180*Math.PI,r.$skewX=i,r.$matrixDirty=!0,r.$updateUseTransform(),t.nativeRender)r.$nativeDisplayObject.setSkewX(r.$skewXdeg);else{var n=r.$parent;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp());var a=r.$maskedObject;a&&!a.$cacheDirty&&(a.$cacheDirty=!0,a.$cacheDirtyUp())}},Object.defineProperty(r.prototype,"skewY",{get:function(){return this.$skewYdeg},set:function(t){this.$setSkewY(t)},enumerable:!0,configurable:!0}),r.prototype.$setSkewY=function(i){var r=this;if(i!=r.$skewYdeg)if(r.$skewYdeg=i,i=e(i),i=(i+r.$rotation)/180*Math.PI,r.$skewY=i,r.$matrixDirty=!0,r.$updateUseTransform(),t.nativeRender)r.$nativeDisplayObject.setSkewY(r.$skewYdeg);else{var n=r.$parent;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp());var a=r.$maskedObject;a&&!a.$cacheDirty&&(a.$cacheDirty=!0,a.$cacheDirtyUp())}},Object.defineProperty(r.prototype,"width",{get:function(){return this.$getWidth()},set:function(t){this.$setWidth(t)},enumerable:!0,configurable:!0}),r.prototype.$getWidth=function(){var t=this;return isNaN(t.$explicitWidth)?t.$getOriginalBounds().width:t.$explicitWidth},r.prototype.$setWidth=function(t){t=isNaN(t)?0/0:t,this.$explicitWidth!=t&&(this.$explicitWidth=t)},Object.defineProperty(r.prototype,"height",{get:function(){return this.$getHeight()},set:function(t){this.$setHeight(t)},enumerable:!0,configurable:!0}),r.prototype.$getHeight=function(){var t=this;return isNaN(t.$explicitHeight)?t.$getOriginalBounds().height:t.$explicitHeight},r.prototype.$setHeight=function(t){t=isNaN(t)?0/0:t,this.$explicitHeight!=t&&(this.$explicitHeight=t)},Object.defineProperty(r.prototype,"measuredWidth",{get:function(){return this.$getOriginalBounds().width},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"measuredHeight",{get:function(){return this.$getOriginalBounds().height},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"anchorOffsetX",{get:function(){return this.$anchorOffsetX},set:function(t){this.$setAnchorOffsetX(t)},enumerable:!0,configurable:!0}),r.prototype.$setAnchorOffsetX=function(e){var i=this;if(i.$anchorOffsetX!=e)if(i.$anchorOffsetX=e,t.nativeRender)i.$nativeDisplayObject.setAnchorOffsetX(e);else{var r=i.$parent;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp());var n=i.$maskedObject;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp())}},Object.defineProperty(r.prototype,"anchorOffsetY",{get:function(){return this.$anchorOffsetY},set:function(t){this.$setAnchorOffsetY(t)},enumerable:!0,configurable:!0}),r.prototype.$setAnchorOffsetY=function(e){var i=this;if(i.$anchorOffsetY!=e)if(i.$anchorOffsetY=e,t.nativeRender)i.$nativeDisplayObject.setAnchorOffsetY(e);else{var r=i.$parent;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp());var n=i.$maskedObject;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp())}},Object.defineProperty(r.prototype,"visible",{get:function(){return this.$visible},set:function(t){this.$setVisible(t)},enumerable:!0,configurable:!0}),r.prototype.$setVisible=function(e){var i=this;if(i.$visible!=e)if(i.$visible=e,t.nativeRender)i.$nativeDisplayObject.setVisible(e);else{i.$updateRenderMode();var r=i.$parent;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp());var n=i.$maskedObject;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp())}},Object.defineProperty(r.prototype,"cacheAsBitmap",{get:function(){return this.$cacheAsBitmap},set:function(e){var i=this;i.$cacheAsBitmap=e,t.nativeRender?i.$nativeDisplayObject.setCacheAsBitmap(e):i.$setHasDisplayList(e)},enumerable:!0,configurable:!0}),r.prototype.$setHasDisplayList=function(e){var i=this,r=!!i.$displayList;if(r!=e)if(e){var n=t.sys.DisplayList.create(i);n&&(i.$displayList=n,i.$cacheDirty=!0)}else i.$displayList=null},r.prototype.$cacheDirtyUp=function(){var t=this.$parent;t&&!t.$cacheDirty&&(t.$cacheDirty=!0,t.$cacheDirtyUp())},Object.defineProperty(r.prototype,"alpha",{get:function(){return this.$alpha},set:function(t){this.$setAlpha(t)},enumerable:!0,configurable:!0}),r.prototype.$setAlpha=function(e){var i=this;if(i.$alpha!=e)if(i.$alpha=e,t.nativeRender)i.$nativeDisplayObject.setAlpha(e);else{i.$updateRenderMode();var r=i.$parent;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp());var n=i.$maskedObject;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp())}},Object.defineProperty(r.prototype,"touchEnabled",{get:function(){return this.$getTouchEnabled()},set:function(t){this.$setTouchEnabled(t)},enumerable:!0,configurable:!0}),r.prototype.$getTouchEnabled=function(){return this.$touchEnabled},r.prototype.$setTouchEnabled=function(t){this.$touchEnabled=!!t},Object.defineProperty(r.prototype,"scrollRect",{get:function(){return this.$scrollRect},set:function(t){this.$setScrollRect(t)},enumerable:!0,configurable:!0}),r.prototype.$setScrollRect=function(e){var i=this;if(!e&&!i.$scrollRect)return void i.$updateRenderMode();if(e?(i.$scrollRect||(i.$scrollRect=new t.Rectangle),i.$scrollRect.copyFrom(e),t.nativeRender&&i.$nativeDisplayObject.setScrollRect(e.x,e.y,e.width,e.height)):(i.$scrollRect=null,t.nativeRender&&i.$nativeDisplayObject.setScrollRect(0,0,0,0)),!t.nativeRender){i.$updateRenderMode();var r=i.$parent;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp());var n=i.$maskedObject;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp())}},Object.defineProperty(r.prototype,"blendMode",{get:function(){return t.sys.numberToBlendMode(this.$blendMode)},set:function(e){var i=this,r=t.sys.blendModeToNumber(e);if(i.$blendMode!=r)if(i.$blendMode=r,t.nativeRender)i.$nativeDisplayObject.setBlendMode(r);else{i.$updateRenderMode();var n=i.$parent;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp());var a=i.$maskedObject;a&&!a.$cacheDirty&&(a.$cacheDirty=!0,a.$cacheDirtyUp())}},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"mask",{get:function(){var t=this;return t.$mask?t.$mask:t.$maskRect},set:function(e){var i=this;if(e!==i){if(e)if(e instanceof r){if(e==i.$mask)return;e.$maskedObject&&(e.$maskedObject.mask=null),e.$maskedObject=i,i.$mask=e,t.nativeRender||e.$updateRenderMode(),i.$maskRect&&(t.nativeRender&&i.$nativeDisplayObject.setMaskRect(0,0,0,0),i.$maskRect=null),t.nativeRender&&i.$nativeDisplayObject.setMask(e.$nativeDisplayObject.id)}else i.$maskRect||(i.$maskRect=new t.Rectangle),i.$maskRect.copyFrom(e),t.nativeRender&&i.$nativeDisplayObject.setMaskRect(e.x,e.y,e.width,e.height),i.$mask&&(i.$mask.$maskedObject=null,t.nativeRender||i.$mask.$updateRenderMode()),i.mask&&(t.nativeRender&&i.$nativeDisplayObject.setMask(-1),i.$mask=null);else i.$mask&&(i.$mask.$maskedObject=null,t.nativeRender||i.$mask.$updateRenderMode()),i.mask&&(t.nativeRender&&i.$nativeDisplayObject.setMask(-1),i.$mask=null),i.$maskRect&&(t.nativeRender&&i.$nativeDisplayObject.setMaskRect(0,0,0,0),i.$maskRect=null);t.nativeRender||i.$updateRenderMode()}},enumerable:!0,configurable:!0}),r.prototype.$setMaskRect=function(e){var i=this;(e||i.$maskRect)&&(e?(i.$maskRect||(i.$maskRect=new t.Rectangle),i.$maskRect.copyFrom(e)):i.$maskRect=null)},Object.defineProperty(r.prototype,"filters",{get:function(){return this.$filters},set:function(e){var i=this,r=i.$filters;if(r||e){if(e&&e.length?(e=e.concat(),i.$filters=e,t.nativeRender&&i.$nativeDisplayObject.setFilters(e)):(i.$filters=e,t.nativeRender&&i.$nativeDisplayObject.setFilters(null)),!t.nativeRender){i.$updateRenderMode();var n=i.$parent;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp());var a=i.$maskedObject;a&&!a.$cacheDirty&&(a.$cacheDirty=!0,a.$cacheDirtyUp())}}else if(i.$filters=e,t.nativeRender)i.$nativeDisplayObject.setFilters(null);else{i.$updateRenderMode();var n=i.$parent;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp());var a=i.$maskedObject;a&&!a.$cacheDirty&&(a.$cacheDirty=!0,a.$cacheDirtyUp())}},enumerable:!0,configurable:!0}),r.prototype.getTransformedBounds=function(t,e){return t=t||this,this.$getTransformedBounds(t,e)},r.prototype.getBounds=function(t,e){void 0===e&&(e=!0);var i=this;return t=i.$getTransformedBounds(i,t),e&&(0!=i.$anchorOffsetX&&(t.x-=i.$anchorOffsetX),0!=i.$anchorOffsetY&&(t.y-=i.$anchorOffsetY)),t},r.prototype.$getTransformedBounds=function(e,i){var r=this,n=r.$getOriginalBounds();if(i||(i=new t.Rectangle),i.copyFrom(n),e==r)return i;var a;if(e){a=t.$TempMatrix;var o=e.$getInvertedConcatenatedMatrix();o.$preMultiplyInto(r.$getConcatenatedMatrix(),a)}else a=r.$getConcatenatedMatrix();return a.$transformBounds(i),i},r.prototype.globalToLocal=function(e,i,r){if(void 0===e&&(e=0),void 0===i&&(i=0),t.nativeRender){egret_native.updateNativeRender();var n=egret_native.nrGlobalToLocal(this.$nativeDisplayObject.id,e,i),a=n.split(","),o=parseFloat(a[0]),s=parseFloat(a[1]);return r?r.setTo(o,s):r=new t.Point(o,s),r}var h=this.$getInvertedConcatenatedMatrix();return h.transformPoint(e,i,r)},r.prototype.localToGlobal=function(e,i,r){if(void 0===e&&(e=0),void 0===i&&(i=0),t.nativeRender){egret_native.updateNativeRender();var n=egret_native.nrLocalToGlobal(this.$nativeDisplayObject.id,e,i),a=n.split(","),o=parseFloat(a[0]),s=parseFloat(a[1]);return r?r.setTo(o,s):r=new t.Point(o,s),r}var h=this.$getConcatenatedMatrix();return h.transformPoint(e,i,r)},r.prototype.$getOriginalBounds=function(){var t=this,e=t.$getContentBounds();t.$measureChildBounds(e);var i=t.$measureFiltersOffset(!1);return i&&(e.x+=i.minX,e.y+=i.minY,e.width+=-i.minX+i.maxX,e.height+=-i.minY+i.maxY),e},r.prototype.$measureChildBounds=function(t){},r.prototype.$getContentBounds=function(){var e=t.$TempRectangle;return e.setEmpty(),this.$measureContentBounds(e),e},r.prototype.$measureContentBounds=function(t){},r.prototype.$getRenderNode=function(){var t=this,e=t.$renderNode;return e?(t.$renderDirty&&(e.cleanBeforeRender(),t.$updateRenderNode(),t.$renderDirty=!1,e=t.$renderNode),e):null},r.prototype.$updateRenderMode=function(){var t=this;!t.$visible||t.$alpha<=0||t.$maskedObject?t.$renderMode=1:t.filters&&t.filters.length>0?t.$renderMode=2:0!==t.$blendMode||t.$mask&&t.$mask.$stage?t.$renderMode=3:t.$scrollRect||t.$maskRect?t.$renderMode=4:t.$renderMode=null},r.prototype.$measureFiltersOffset=function(e){for(var i=this,r=0,n=0,a=0,o=0;i;){var s=i.$filters;if(s&&s.length)for(var h=s.length,c=0;h>c;c++){var l=s[c];if("blur"==l.type){var u=l.blurX,p=l.blurY;r-=u,n-=p,a+=u,o+=p}else if("glow"==l.type){var u=l.blurX,p=l.blurY;r-=u,n-=p,a+=u,o+=p;var d=l.distance||0,f=l.angle||0,g=0,$=0;0!=d&&(g=d*t.NumberUtils.cos(f),g=g>0?Math.ceil(g):Math.floor(g),$=d*t.NumberUtils.sin(f),$=$>0?Math.ceil($):Math.floor($),r+=g,a+=g,n+=$,o+=$)}else if("custom"==l.type){var y=l.padding;r-=y,n-=y,a+=y,o+=y}}i=e?i.$parent:null}return r=Math.min(r,0),n=Math.min(n,0),a=Math.max(a,0),o=Math.max(o,0),{minX:r,minY:n,maxX:a,maxY:o}},r.prototype.$getConcatenatedMatrixAt=function(e,i){var r=e.$getInvertedConcatenatedMatrix();if(0===r.a||0===r.d){var n=this,a=e.$nestLevel;for(i.identity();n.$nestLevel>a;){var o=n.$scrollRect;o&&i.concat(t.$TempMatrix.setTo(1,0,0,1,-o.x,-o.y)),i.concat(n.$getMatrix()),n=n.$parent}}else r.$preMultiplyInto(i,i)},r.prototype.$updateRenderNode=function(){},r.prototype.$hitTest=function(e,i){var r=this;if(!t.nativeRender&&!r.$renderNode||!r.$visible||0==r.$scaleX||0==r.$scaleY)return null;var n=r.$getInvertedConcatenatedMatrix();if(0==n.a&&0==n.b&&0==n.c&&0==n.d)return null;var a=r.$getContentBounds(),o=n.a*e+n.c*i+n.tx,s=n.b*e+n.d*i+n.ty;if(a.contains(o,s)){if(!r.$children){var h=r.$scrollRect?r.$scrollRect:r.$maskRect;if(h&&!h.contains(o,s))return null;if(r.$mask&&!r.$mask.$hitTest(e,i))return null}return r}return null},r.prototype.hitTestPoint=function(e,i,r){var n=this;if(r){var a=n.$getInvertedConcatenatedMatrix(),o=a.a*e+a.c*i+a.tx,s=a.b*e+a.d*i+a.ty,h=void 0;if(t.nativeRender){var c=t.sys.customHitTestBuffer;c.resize(3,3),egret_native.forHitTest=!0,egret_native.activateBuffer(c),egret_native.updateNativeRender(),egret_native.nrRenderDisplayObject2(n.$nativeDisplayObject.id,1-o,1-s,!0);try{h=new Uint8Array(4),egret_native.nrGetPixels(1,1,1,1,h)}catch(l){throw new Error(t.sys.tr(1039))}return egret_native.activateBuffer(null),egret_native.forHitTest=!1,0===h[3]?!1:!0}var u=n.$displayList;if(u){var c=u.renderBuffer;try{h=c.getPixels(o-u.offsetX,s-u.offsetY)}catch(l){throw new Error(t.sys.tr(1039))}}else{var c=t.sys.customHitTestBuffer;c.resize(3,3);var p=t.Matrix.create();p.identity(),p.translate(1-o,1-s),t.sys.systemRenderer.render(this,c,p,!0),t.Matrix.release(p);try{h=c.getPixels(1,1)}catch(l){throw new Error(t.sys.tr(1039))}}return 0===h[3]?!1:!0}if(0==n.$scaleX||0==n.$scaleY)return!1;var a=n.$getInvertedConcatenatedMatrix(),d=n.getBounds(null,!1),o=a.a*e+a.c*i+a.tx,s=a.b*e+a.d*i+a.ty;if(d.contains(o,s)){var f=n.$scrollRect?n.$scrollRect:n.$maskRect;return f&&!f.contains(o,s)?!1:!0}return!1},r.prototype.$addListener=function(e,n,a,o,s,h){i.prototype.$addListener.call(this,e,n,a,o,s,h);var c=e==t.Event.ENTER_FRAME;if(c||e==t.Event.RENDER){var l=c?r.$enterFrameCallBackList:r.$renderCallBackList;-1==l.indexOf(this)&&l.push(this)}},r.prototype.removeEventListener=function(e,n,a,o){i.prototype.removeEventListener.call(this,e,n,a,o);var s=e==t.Event.ENTER_FRAME;if((s||e==t.Event.RENDER)&&!this.hasEventListener(e)){var h=s?r.$enterFrameCallBackList:r.$renderCallBackList,c=h.indexOf(this);-1!==c&&h.splice(c,1)}},r.prototype.dispatchEvent=function(t){if(!t.$bubbles)return i.prototype.dispatchEvent.call(this,t);var e=this.$getPropagationList(this),r=.5*e.length;return t.$setTarget(this),this.$dispatchPropagationEvent(t,e,r),!t.$isDefaultPrevented},r.prototype.$getPropagationList=function(t){for(var e=[];t;)e.push(t),t=t.$parent;var i=e.concat();return i.reverse(),e=i.concat(e)},r.prototype.$dispatchPropagationEvent=function(t,e,i){for(var r=e.length,n=i-1,a=0;r>a;a++){var o=e[a];if(t.$currentTarget=o,n>a?t.$eventPhase=1:a==i||a==n?t.$eventPhase=2:t.$eventPhase=3,o.$notifyListener(t,i>a),t.$isPropagationStopped||t.$isPropagationImmediateStopped)return}},r.prototype.willTrigger=function(t){for(var e=this;e;){if(e.hasEventListener(t))return!0;e=e.$parent}return!1},Object.defineProperty(r.prototype,"tint",{get:function(){return this._tint},set:function(t){this._tint=t,this.$tintRGB=(t>>16)+(65280&t)+((255&t)<<16)},enumerable:!0,configurable:!0}),r.prototype.sortChildren=function(){this.$sortDirty=!1},Object.defineProperty(r.prototype,"zIndex",{get:function(){return this._zIndex},set:function(t){this._zIndex=t,this.parent&&(this.parent.$sortDirty=!0)},enumerable:!0,configurable:!0}),r.defaultTouchEnabled=!1,r.$enterFrameCallBackList=[],r.$renderCallBackList=[],r}(t.EventDispatcher);t.DisplayObject=i,__reflect(i.prototype,"egret.DisplayObject")}(egret||(egret={}));var egret;!function(t){t.$TextureScaleFactor=1;var e=function(e){function i(){var t=e.call(this)||this;return t.disposeBitmapData=!0,t.$bitmapX=0,t.$bitmapY=0,t.$bitmapWidth=0,t.$bitmapHeight=0,t.$offsetX=0,t.$offsetY=0,t.$textureWidth=0,t.$textureHeight=0,t.$sourceWidth=0,t.$sourceHeight=0,t.$bitmapData=null,t.$ktxData=null,t.$rotated=!1,t}return __extends(i,e),Object.defineProperty(i.prototype,"textureWidth",{get:function(){return this.$getTextureWidth()},enumerable:!0,configurable:!0}),i.prototype.$getTextureWidth=function(){return this.$textureWidth},Object.defineProperty(i.prototype,"textureHeight",{get:function(){return this.$getTextureHeight()},enumerable:!0,configurable:!0}),i.prototype.$getTextureHeight=function(){return this.$textureHeight},i.prototype.$getScaleBitmapWidth=function(){return this.$bitmapWidth*t.$TextureScaleFactor},i.prototype.$getScaleBitmapHeight=function(){return this.$bitmapHeight*t.$TextureScaleFactor},Object.defineProperty(i.prototype,"bitmapData",{get:function(){return this.$bitmapData},set:function(t){this.$ktxData=null,this._setBitmapData(t)},enumerable:!0,configurable:!0}),i.prototype._setBitmapData=function(e){this.$bitmapData=e;var i=t.$TextureScaleFactor,r=e.width*i,n=e.height*i;this.$initData(0,0,r,n,0,0,r,n,e.width,e.height)},Object.defineProperty(i.prototype,"ktxData",{get:function(){return this.$ktxData},set:function(t){this._setKtxData(t)},enumerable:!0,configurable:!0}),i.prototype._setKtxData=function(e){if(!e)return void t.error("ktx data is null");if(e!=this.$ktxData){var i=new t.KTXContainer(e,1);if(i.isInvalid)return void t.error("ktx data is invalid");this.$ktxData=e;var r=new t.BitmapData(e);r.format="ktx",i.uploadLevels(r,!1),this._setBitmapData(r)}},i.prototype.$initData=function(e,i,r,n,a,o,s,h,c,l,u){void 0===u&&(u=!1);var p=t.$TextureScaleFactor;this.$bitmapX=e/p,this.$bitmapY=i/p,this.$bitmapWidth=r/p,this.$bitmapHeight=n/p,this.$offsetX=a,this.$offsetY=o,this.$textureWidth=s,this.$textureHeight=h,this.$sourceWidth=c,this.$sourceHeight=l,this.$rotated=u,t.BitmapData.$invalidate(this.$bitmapData)},i.prototype.getPixel32=function(t,e){throw new Error},i.prototype.getPixels=function(t,e,i,r){throw void 0===i&&(i=1),void 0===r&&(r=1),new Error},i.prototype.toDataURL=function(t,e,i){throw new Error},i.prototype.saveToFile=function(t,e,i){throw new Error},i.prototype.dispose=function(){this.$bitmapData&&(this.disposeBitmapData&&this.$bitmapData.$dispose(),this.$bitmapData=null)},i}(t.HashObject);t.Texture=e,__reflect(e.prototype,"egret.Texture")}(egret||(egret={}));var egret;!function(t){var e=function(t){function e(e,i,r,n){var a=t.call(this)||this;return a.$eventPhase=2,a.$currentTarget=null,a.$target=null,a.$isDefaultPrevented=!1,a.$isPropagationStopped=!1,a.$isPropagationImmediateStopped=!1,a.$type=e,a.$bubbles=!!i,a.$cancelable=!!r,a.data=n,a}return __extends(e,t),Object.defineProperty(e.prototype,"type",{get:function(){return this.$type},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"bubbles",{get:function(){return this.$bubbles},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"cancelable",{get:function(){return this.$cancelable},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"eventPhase",{get:function(){return this.$eventPhase},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"currentTarget",{get:function(){return this.$currentTarget},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"target",{get:function(){return this.$target},enumerable:!0,configurable:!0}),e.prototype.$setTarget=function(t){return this.$target=t,!0},e.prototype.isDefaultPrevented=function(){return this.$isDefaultPrevented},e.prototype.preventDefault=function(){this.$cancelable&&(this.$isDefaultPrevented=!0)},e.prototype.stopPropagation=function(){this.$bubbles&&(this.$isPropagationStopped=!0)},e.prototype.stopImmediatePropagation=function(){this.$bubbles&&(this.$isPropagationImmediateStopped=!0)},e.prototype.clean=function(){this.data=this.$currentTarget=null,this.$setTarget(null)},e.dispatchEvent=function(t,i,r,n){void 0===r&&(r=!1);var a=e.create(e,i,r),o=e._getPropertyData(e);void 0!=n&&(o.data=n);var s=t.dispatchEvent(a);return e.release(a),s},e._getPropertyData=function(t){var e=t._props;return e||(e=t._props={}),e},e.create=function(t,e,i,r){var n,a=t.hasOwnProperty("eventPool");if(a&&(n=t.eventPool),n||(n=t.eventPool=[]),n.length){var o=n.pop();return o.$type=e,o.$bubbles=!!i,o.$cancelable=!!r,o.$isDefaultPrevented=!1,o.$isPropagationStopped=!1,o.$isPropagationImmediateStopped=!1,o.$eventPhase=2,o}return new t(e,i,r)},e.release=function(t){t.clean();var e=Object.getPrototypeOf(t).constructor;e.eventPool.push(t)},e.ADDED_TO_STAGE="addedToStage",e.REMOVED_FROM_STAGE="removedFromStage",e.ADDED="added",e.REMOVED="removed",e.ENTER_FRAME="enterFrame",e.RENDER="render",e.RESIZE="resize",e.CHANGE="change",e.CHANGING="changing",e.COMPLETE="complete",e.LOOP_COMPLETE="loopComplete",e.FOCUS_IN="focusIn",e.FOCUS_OUT="focusOut",e.ENDED="ended",e.ACTIVATE="activate",e.DEACTIVATE="deactivate",e.CLOSE="close",e.CONNECT="connect",e.LEAVE_STAGE="leaveStage",e.SOUND_COMPLETE="soundComplete",e}(t.HashObject);t.Event=e,__reflect(e.prototype,"egret.Event")}(egret||(egret={}));var egret;!function(t){function e(){return""}function i(t){throw new Error("#"+t)}function r(){}function n(){}t.getString=e,t.$error=i,t.$warn=r,t.$markCannotUse=n}(egret||(egret={}));var egret;!function(t){var e=[],i=Math.PI/180,r=function(r){function n(t,e){void 0===t&&(t=0),void 0===e&&(e=0);var i=r.call(this)||this;return i.x=t,i.y=e,i}return __extends(n,r),n.release=function(t){t&&e.push(t)},n.create=function(t,i){var r=e.pop();return r||(r=new n),r.setTo(t,i)},Object.defineProperty(n.prototype,"length",{get:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},enumerable:!0,configurable:!0}),n.prototype.setTo=function(t,e){return this.x=t,this.y=e,this},n.prototype.clone=function(){return new n(this.x,this.y)},n.prototype.equals=function(t){return this.x==t.x&&this.y==t.y},n.distance=function(t,e){return Math.sqrt((t.x-e.x)*(t.x-e.x)+(t.y-e.y)*(t.y-e.y))},n.prototype.copyFrom=function(t){this.x=t.x,this.y=t.y},n.prototype.add=function(t){return new n(this.x+t.x,this.y+t.y)},n.interpolate=function(t,e,i){var r=1-i;return new n(t.x*i+e.x*r,t.y*i+e.y*r)},n.prototype.normalize=function(t){if(0!=this.x||0!=this.y){var e=t/this.length;this.x*=e,this.y*=e}},n.prototype.offset=function(t,e){this.x+=t,this.y+=e},n.polar=function(e,r){return new n(e*t.NumberUtils.cos(r/i),e*t.NumberUtils.sin(r/i))},n.prototype.subtract=function(t){return new n(this.x-t.x,this.y-t.y)},n.prototype.toString=function(){return"(x="+this.x+", y="+this.y+")"},n}(t.HashObject);t.Point=r,__reflect(r.prototype,"egret.Point"),t.$TempPoint=new r}(egret||(egret={}));var egret;!function(t){var e=function(e){function i(){var t=e.call(this)||this;return t.$touchChildren=!0,t.$children=[],t}return __extends(i,e),Object.defineProperty(i.prototype,"numChildren",{get:function(){return this.$children.length},enumerable:!0,configurable:!0}),i.prototype.setChildrenSortMode=function(e){t.nativeRender&&this.$nativeDisplayObject.setChildrenSortMode&&this.$nativeDisplayObject.setChildrenSortMode(e) +},i.prototype.addChild=function(t){var e=this.$children.length;return t.$parent==this&&e--,this.$doAddChild(t,e)},i.prototype.addChildAt=function(t,e){return e=0|+e,(0>e||e>=this.$children.length)&&(e=this.$children.length,t.$parent==this&&e--),this.$doAddChild(t,e)},i.prototype.$doAddChild=function(e,r,n){void 0===n&&(n=!0);var a=this,o=e.$parent;if(o==a)return a.doSetChildIndex(e,r),e;o&&o.removeChild(e),a.$children.splice(r,0,e),e.$setParent(a),t.nativeRender&&a.$nativeDisplayObject.addChildAt(e.$nativeDisplayObject.id,r);var s=a.$stage;if(s&&e.$onAddToStage(s,a.$nestLevel+1),n&&e.dispatchEventWith(t.Event.ADDED,!0),s)for(var h=i.$EVENT_ADD_TO_STAGE_LIST;h.length;){var c=h.shift();c.$stage&&n&&c.dispatchEventWith(t.Event.ADDED_TO_STAGE)}if(!t.nativeRender&&(e.$maskedObject&&e.$maskedObject.$updateRenderMode(),!a.$cacheDirty)){a.$cacheDirty=!0;var l=a.$parent;l&&!l.$cacheDirty&&(l.$cacheDirty=!0,l.$cacheDirtyUp());var u=a.$maskedObject;u&&!u.$cacheDirty&&(u.$cacheDirty=!0,u.$cacheDirtyUp())}return this.$childAdded(e,r),e},i.prototype.contains=function(t){for(;t;){if(t==this)return!0;t=t.$parent}return!1},i.prototype.getChildAt=function(t){return t=0|+t,t>=0&&tn;n++)if(e=i[n],e.name==t)return e;return null},i.prototype.removeChild=function(t){var e=this.$children.indexOf(t);return e>=0?this.$doRemoveChild(e):null},i.prototype.removeChildAt=function(t){return t=0|+t,t>=0&&t0;){var h=s.shift();r&&h.$hasAddToStage&&(h.$hasAddToStage=!1,h.dispatchEventWith(t.Event.REMOVED_FROM_STAGE)),h.$hasAddToStage=!1,h.$stage=null}}this.$displayList||this.$parentDisplayList;o.$setParent(null);var c=a.indexOf(o);if(-1!=c&&a.splice(c,1),t.nativeRender)n.$nativeDisplayObject.removeChild(o.$nativeDisplayObject.id);else if(o.$maskedObject&&o.$maskedObject.$updateRenderMode(),!n.$cacheDirty){n.$cacheDirty=!0;var l=n.$parent;l&&!l.$cacheDirty&&(l.$cacheDirty=!0,l.$cacheDirtyUp());var u=n.$maskedObject;u&&!u.$cacheDirty&&(u.$cacheDirty=!0,u.$cacheDirtyUp())}return o},i.prototype.setChildIndex=function(t,e){e=0|+e,(0>e||e>=this.$children.length)&&(e=this.$children.length-1),this.doSetChildIndex(t,e)},i.prototype.doSetChildIndex=function(e,i){var r=this,n=this.$children.indexOf(e);if(n!=i)if(this.$childRemoved(e,n),this.$children.splice(n,1),this.$children.splice(i,0,e),this.$childAdded(e,i),t.nativeRender)this.$nativeDisplayObject.removeChild(e.$nativeDisplayObject.id),this.$nativeDisplayObject.addChildAt(e.$nativeDisplayObject.id,i);else if(!r.$cacheDirty){r.$cacheDirty=!0;var a=r.$parent;a&&!a.$cacheDirty&&(a.$cacheDirty=!0,a.$cacheDirtyUp());var o=r.$maskedObject;o&&!o.$cacheDirty&&(o.$cacheDirty=!0,o.$cacheDirtyUp())}},i.prototype.swapChildrenAt=function(t,e){t=0|+t,e=0|+e,t>=0&&t=0&&ei){var n=i;i=e,e=n}else if(e==i)return;var a=this.$children,o=a[e],s=a[i];if(this.$childRemoved(o,e),this.$childRemoved(s,i),a[e]=s,a[i]=o,this.$childAdded(s,e),this.$childAdded(o,i),t.nativeRender)this.$nativeDisplayObject.swapChild(e,i);else if(!r.$cacheDirty){r.$cacheDirty=!0;var h=r.$parent;h&&!h.$cacheDirty&&(h.$cacheDirty=!0,h.$cacheDirtyUp());var c=r.$maskedObject;c&&!c.$cacheDirty&&(c.$cacheDirty=!0,c.$cacheDirtyUp())}},i.prototype.removeChildren=function(){for(var t=this.$children,e=t.length-1;e>=0;e--)this.$doRemoveChild(e)},i.prototype.$childAdded=function(t,e){},i.prototype.$childRemoved=function(t,e){},i.prototype.$onAddToStage=function(t,i){e.prototype.$onAddToStage.call(this,t,i);var r=this.$children,n=r.length;i++;for(var a=0;n>a;a++){var o=this.$children[a];o.$onAddToStage(t,i),o.$maskedObject&&o.$maskedObject.$updateRenderMode()}},i.prototype.$onRemoveFromStage=function(){e.prototype.$onRemoveFromStage.call(this);for(var t=this.$children,i=t.length,r=0;i>r;r++){var n=t[r];n.$onRemoveFromStage()}},i.prototype.$measureChildBounds=function(e){var i=this.$children,r=i.length;if(0!=r){for(var n=0,a=0,o=0,s=0,h=!1,c=-1;r>c;c++){var l=void 0;-1==c?l=e:(i[c].getBounds(t.$TempRectangle),i[c].$getMatrix().$transformBounds(t.$TempRectangle),l=t.$TempRectangle),l.isEmpty()||(h?(n=Math.min(n,l.x),a=Math.max(a,l.x+l.width),o=Math.min(o,l.y),s=Math.max(s,l.y+l.height)):(h=!0,n=l.x,a=n+l.width,o=l.y,s=o+l.height))}e.setTo(n,o,a-n,s-o)}},Object.defineProperty(i.prototype,"touchChildren",{get:function(){return this.$getTouchChildren()},set:function(t){this.$setTouchChildren(!!t)},enumerable:!0,configurable:!0}),i.prototype.$getTouchChildren=function(){return this.$touchChildren},i.prototype.$setTouchChildren=function(t){return this.$touchChildren==t?!1:(this.$touchChildren=t,!0)},i.prototype.$hitTest=function(t,i){if(!this.$visible)return null;var r=this.$getInvertedConcatenatedMatrix(),n=r.a*t+r.c*i+r.tx,a=r.b*t+r.d*i+r.ty,o=this.$scrollRect?this.$scrollRect:this.$maskRect;if(o&&!o.contains(n,a))return null;if(this.$mask&&!this.$mask.$hitTest(t,i))return null;for(var s=this.$children,h=!1,c=null,l=s.length-1;l>=0;l--){var u=s[l];if(!u.$maskedObject&&(c=u.$hitTest(t,i))){if(h=!0,c.$touchEnabled)break;c=null}}return c?this.$touchChildren?c:this:h?this:e.prototype.$hitTest.call(this,t,i)},i.prototype._sortChildrenFunc=function(t,e){return t.zIndex===e.zIndex?t.$lastSortedIndex-e.$lastSortedIndex:t.zIndex-e.zIndex},i.prototype.sortChildren=function(){e.prototype.sortChildren.call(this),this.$sortDirty=!1;for(var t=!1,i=this.$children,r=null,n=0,a=i.length;a>n;++n)r=i[n],r.$lastSortedIndex=n,t||0===r.zIndex||(t=!0);t&&i.length>1&&i.sort(this._sortChildrenFunc)},i.$EVENT_ADD_TO_STAGE_LIST=[],i.$EVENT_REMOVE_FROM_STAGE_LIST=[],i}(t.DisplayObject);t.DisplayObjectContainer=e,__reflect(e.prototype,"egret.DisplayObjectContainer")}(egret||(egret={}));var egret;!function(t){var e=function(e){function i(i){var r=e.call(this)||this;return r._bitmapX=0,r._bitmapY=0,r._textureMap=t.createMap(),r.$texture=i,r._bitmapX=i.$bitmapX-i.$offsetX,r._bitmapY=i.$bitmapY-i.$offsetY,r}return __extends(i,e),i.prototype.getTexture=function(t){return this._textureMap[t]},i.prototype.createTexture=function(e,i,r,n,a,o,s,h,c){void 0===o&&(o=0),void 0===s&&(s=0),void 0===h&&(h=o+n),void 0===c&&(c=s+a);var l=new t.Texture;return l.disposeBitmapData=!1,l.$bitmapData=this.$texture.$bitmapData,l.$initData(this._bitmapX+i,this._bitmapY+r,n,a,o,s,h,c,this.$texture.$sourceWidth,this.$texture.$sourceHeight),this._textureMap[e]=l,l},i.prototype.dispose=function(){this.$texture&&this.$texture.dispose()},i}(t.HashObject);t.SpriteSheet=e,__reflect(e.prototype,"egret.SpriteSheet")}(egret||(egret={}));var egret;!function(t){t.$locale_strings=t.$locale_strings||{},t.$language="en_US"}(egret||(egret={})),function(t){var e;!function(e){function i(e){for(var i=[],r=1;ro;o++)n=n.replace("{"+o+"}",i[o]);return n}e.tr=i}(e=t.sys||(t.sys={}))}(egret||(egret={}));var egret;!function(t){var e=function(e){function i(r){var n=e.call(this)||this;return n.$texture=null,n.$bitmapData=null,n.$bitmapX=0,n.$bitmapY=0,n.$bitmapWidth=0,n.$bitmapHeight=0,n.$offsetX=0,n.$offsetY=0,n.$textureWidth=0,n.$textureHeight=0,n.$sourceWidth=0,n.$sourceHeight=0,n.$smoothing=i.defaultSmoothing,n.$explicitBitmapWidth=0/0,n.$explicitBitmapHeight=0/0,n.$scale9Grid=null,n.$fillMode="scale",n._pixelHitTest=!1,n.$renderNode=new t.sys.NormalBitmapNode,n.$setTexture(r),r&&(n.$renderNode.rotated=r.$rotated),n}return __extends(i,e),i.prototype.createNativeDisplayObject=function(){this.$nativeDisplayObject=new egret_native.NativeDisplayObject(1)},i.prototype.$onAddToStage=function(i,r){e.prototype.$onAddToStage.call(this,i,r);var n=this.$texture;n&&n.$bitmapData&&t.BitmapData.$addDisplayObject(this,n.$bitmapData)},i.prototype.$onRemoveFromStage=function(){e.prototype.$onRemoveFromStage.call(this);var i=this.$texture;i&&t.BitmapData.$removeDisplayObject(this,i.$bitmapData)},Object.defineProperty(i.prototype,"texture",{get:function(){return this.$texture},set:function(t){var e=this;e.$setTexture(t),t&&e.$renderNode&&(e.$renderNode.rotated=t.$rotated)},enumerable:!0,configurable:!0}),i.prototype.$setTexture=function(e){var i=this,r=i.$texture;if(e==r)return!1;if(i.$texture=e,!e){r&&t.BitmapData.$removeDisplayObject(i,r.$bitmapData),i.setImageData(null,0,0,0,0,0,0,0,0,0,0),i.$renderDirty=!0;var n=i.$parent;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp());var a=i.$maskedObject;return a&&!a.$cacheDirty&&(a.$cacheDirty=!0,a.$cacheDirtyUp()),t.nativeRender&&this.setBitmapDataToWasm(null),!0}if(i.$refreshImageData(),i.$stage){if(r&&r.$bitmapData){var o=r.$bitmapData.hashCode,s=e.$bitmapData?e.$bitmapData.hashCode:-1;if(o==s){i.$renderDirty=!0;var h=i.$parent;h&&!h.$cacheDirty&&(h.$cacheDirty=!0,h.$cacheDirtyUp());var c=i.$maskedObject;return c&&!c.$cacheDirty&&(c.$cacheDirty=!0,c.$cacheDirtyUp()),!0}t.BitmapData.$removeDisplayObject(i,r.$bitmapData)}t.BitmapData.$addDisplayObject(i,e.$bitmapData)}i.$renderDirty=!0;var l=i.$parent;l&&!l.$cacheDirty&&(l.$cacheDirty=!0,l.$cacheDirtyUp());var u=i.$maskedObject;return u&&!u.$cacheDirty&&(u.$cacheDirty=!0,u.$cacheDirtyUp()),!0},i.prototype.$setBitmapData=function(t){this.$setTexture(t)},i.prototype.setBitmapDataToWasm=function(t){this.$nativeDisplayObject.setTexture(t)},i.prototype.$refreshImageData=function(){var e=this.$texture;e?(t.nativeRender&&this.setBitmapDataToWasm(e),this.setImageData(e.$bitmapData,e.$bitmapX,e.$bitmapY,e.$bitmapWidth,e.$bitmapHeight,e.$offsetX,e.$offsetY,e.$getTextureWidth(),e.$getTextureHeight(),e.$sourceWidth,e.$sourceHeight)):t.nativeRender&&this.setBitmapDataToWasm(null)},i.prototype.setImageData=function(t,e,i,r,n,a,o,s,h,c,l){this.$bitmapData=t,this.$bitmapX=e,this.$bitmapY=i,this.$bitmapWidth=r,this.$bitmapHeight=n,this.$offsetX=a,this.$offsetY=o,this.$textureWidth=s,this.$textureHeight=h,this.$sourceWidth=c,this.$sourceHeight=l},Object.defineProperty(i.prototype,"scale9Grid",{get:function(){return this.$scale9Grid},set:function(t){this.$setScale9Grid(t)},enumerable:!0,configurable:!0}),i.prototype.$setScale9Grid=function(e){var i=this;if(i.$scale9Grid=e,i.$renderDirty=!0,t.nativeRender)e?i.$nativeDisplayObject.setScale9Grid(e.x,e.y,e.width,e.height):i.$nativeDisplayObject.setScale9Grid(0,0,-1,-1);else{var r=i.$parent;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp());var n=i.$maskedObject;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp())}},Object.defineProperty(i.prototype,"fillMode",{get:function(){return this.$fillMode},set:function(t){this.$setFillMode(t)},enumerable:!0,configurable:!0}),i.prototype.$setFillMode=function(e){var i=this;if(e==i.$fillMode)return!1;if(i.$fillMode=e,t.nativeRender)i.$nativeDisplayObject.setBitmapFillMode(i.$fillMode);else{i.$renderDirty=!0;var r=i.$parent;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp());var n=i.$maskedObject;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp())}return!0},Object.defineProperty(i.prototype,"smoothing",{get:function(){return this.$smoothing},set:function(e){var i=this;if(e!=this.$smoothing&&(this.$smoothing=e,this.$renderNode.smoothing=e,!t.nativeRender)){var r=i.$parent;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp());var n=i.$maskedObject;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp())}},enumerable:!0,configurable:!0}),i.prototype.$setWidth=function(e){var i=this;if(0>e||e==i.$explicitBitmapWidth)return!1;if(i.$explicitBitmapWidth=e,i.$renderDirty=!0,t.nativeRender)i.$nativeDisplayObject.setWidth(e);else{var r=i.$parent;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp());var n=i.$maskedObject;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp())}return!0},i.prototype.$setHeight=function(e){var i=this;if(0>e||e==i.$explicitBitmapHeight)return!1;if(i.$explicitBitmapHeight=e,i.$renderDirty=!0,t.nativeRender)i.$nativeDisplayObject.setHeight(e);else{var r=i.$parent;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp());var n=i.$maskedObject;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp())}return!0},i.prototype.$getWidth=function(){return isNaN(this.$explicitBitmapWidth)?this.$getContentBounds().width:this.$explicitBitmapWidth},i.prototype.$getHeight=function(){return isNaN(this.$explicitBitmapHeight)?this.$getContentBounds().height:this.$explicitBitmapHeight},i.prototype.$measureContentBounds=function(t){if(this.$bitmapData){var e=isNaN(this.$explicitBitmapWidth)?this.$textureWidth:this.$explicitBitmapWidth,i=isNaN(this.$explicitBitmapHeight)?this.$textureHeight:this.$explicitBitmapHeight;t.setTo(0,0,e,i)}else{var e=isNaN(this.$explicitBitmapWidth)?0:this.$explicitBitmapWidth,i=isNaN(this.$explicitBitmapHeight)?0:this.$explicitBitmapHeight;t.setTo(0,0,e,i)}},i.prototype.$updateRenderNode=function(){if(this.$texture){var e=isNaN(this.$explicitBitmapWidth)?this.$textureWidth:this.$explicitBitmapWidth,i=isNaN(this.$explicitBitmapHeight)?this.$textureHeight:this.$explicitBitmapHeight,r=this.scale9Grid||this.$texture.scale9Grid;r?(this.$renderNode instanceof t.sys.NormalBitmapNode&&(this.$renderNode=new t.sys.BitmapNode),t.sys.BitmapNode.$updateTextureDataWithScale9Grid(this.$renderNode,this.$bitmapData,r,this.$bitmapX,this.$bitmapY,this.$bitmapWidth,this.$bitmapHeight,this.$offsetX,this.$offsetY,this.$textureWidth,this.$textureHeight,e,i,this.$sourceWidth,this.$sourceHeight,this.$smoothing)):(this.fillMode==t.BitmapFillMode.REPEAT&&this.$renderNode instanceof t.sys.NormalBitmapNode&&(this.$renderNode=new t.sys.BitmapNode),t.sys.BitmapNode.$updateTextureData(this.$renderNode,this.$bitmapData,this.$bitmapX,this.$bitmapY,this.$bitmapWidth,this.$bitmapHeight,this.$offsetX,this.$offsetY,this.$textureWidth,this.$textureHeight,e,i,this.$sourceWidth,this.$sourceHeight,this.$fillMode,this.$smoothing))}},Object.defineProperty(i.prototype,"pixelHitTest",{get:function(){return this._pixelHitTest},set:function(t){this._pixelHitTest=!!t},enumerable:!0,configurable:!0}),i.prototype.$hitTest=function(t,i){var r=e.prototype.$hitTest.call(this,t,i);if(r&&this._pixelHitTest){var n=this.hitTestPoint(t,i,!0);n||(r=null)}return r},i.defaultSmoothing=!0,i}(t.DisplayObject);t.Bitmap=e,__reflect(e.prototype,"egret.Bitmap")}(egret||(egret={}));var egret;!function(t){var e;!function(t){var e=function(){function t(){this.type=0,this.drawData=[],this.renderCount=0}return t.prototype.cleanBeforeRender=function(){this.drawData.length=0,this.renderCount=0},t.prototype.$getRenderCount=function(){return this.renderCount},t}();t.RenderNode=e,__reflect(e.prototype,"egret.sys.RenderNode")}(e=t.sys||(t.sys={}))}(egret||(egret={}));var egret;!function(t){var e;!function(t){var e=function(){function t(){this.type=0,this.$commands=[],this.$data=[],this.commandPosition=0,this.dataPosition=0,this.$lastX=0,this.$lastY=0}return t.prototype.moveTo=function(t,e){this.$commands[this.commandPosition++]=1;var i=this.dataPosition;this.$data[i++]=t,this.$data[i++]=e,this.dataPosition=i},t.prototype.lineTo=function(t,e){this.$commands[this.commandPosition++]=2;var i=this.dataPosition;this.$data[i++]=t,this.$data[i++]=e,this.dataPosition=i},t.prototype.curveTo=function(t,e,i,r){this.$commands[this.commandPosition++]=3;var n=this.dataPosition;this.$data[n++]=t,this.$data[n++]=e,this.$data[n++]=i,this.$data[n++]=r,this.dataPosition=n},t.prototype.cubicCurveTo=function(t,e,i,r,n,a){this.$commands[this.commandPosition++]=4;var o=this.dataPosition;this.$data[o++]=t,this.$data[o++]=e,this.$data[o++]=i,this.$data[o++]=r,this.$data[o++]=n,this.$data[o++]=a,this.dataPosition=o},t.prototype.drawRect=function(t,e,i,r){var n=t+i,a=e+r;this.moveTo(t,e),this.lineTo(n,e),this.lineTo(n,a),this.lineTo(t,a),this.lineTo(t,e)},t.prototype.drawRoundRect=function(t,e,i,r,n,a){var o=.5*n|0,s=a?.5*a|0:o;if(!o||!s)return void this.drawRect(t,e,i,r);var h=.5*i,c=.5*r;if(o>h&&(o=h),s>c&&(s=c),h===o&&c===s)return void(o===s?this.drawCircle(t+o,e+s,o):this.drawEllipse(t,e,2*o,2*s));var l=t+i,u=e+r,p=t+o,d=l-o,f=e+s,g=u-s;this.moveTo(l,g),this.curveTo(l,u,d,u),this.lineTo(p,u),this.curveTo(t,u,t,g),this.lineTo(t,f),this.curveTo(t,e,p,e),this.lineTo(d,e),this.curveTo(l,e,l,f),this.lineTo(l,g)},t.prototype.drawCircle=function(t,e,i){this.arcToBezier(t,e,i,i,0,2*Math.PI)},t.prototype.drawEllipse=function(t,e,i,r){var n=.5*i,a=.5*r;t+=n,e+=a,this.arcToBezier(t,e,n,a,0,2*Math.PI)},t.prototype.drawArc=function(t,e,i,r,n,a){a?n>=r&&(n-=2*Math.PI):r>=n&&(n+=2*Math.PI),this.arcToBezier(t,e,i,i,r,n,a)},t.prototype.arcToBezier=function(t,e,i,r,n,a,o){var s=.5*Math.PI,h=n,c=h;o?(c+=-s-h%s,a>c&&(c=a)):(c+=s-h%s,c>a&&(c=a));var l=t+Math.cos(h)*i,u=e+Math.sin(h)*r;(this.$lastX!=l||this.$lastY!=u)&&this.moveTo(l,u);for(var p=Math.cos(h),d=Math.sin(h),f=0;4>f;f++){var g=c-h,$=4*Math.tan(g/4)/3,y=l-d*$*i,v=u+p*$*r;p=Math.cos(c),d=Math.sin(c),l=t+p*i,u=e+d*r;var m=l+d*$*i,b=u-p*$*r;if(this.cubicCurveTo(y,v,m,b,l,u),c===a)break;h=c,o?(c=h-s,a>c&&(c=a)):(c=h+s,c>a&&(c=a))}},t}();t.Path2D=e,__reflect(e.prototype,"egret.sys.Path2D")}(e=t.sys||(t.sys={}))}(egret||(egret={}));var egret;!function(t){t.fontMapping={}}(egret||(egret={}));var egret;!function(t){function e(){var t=Object.create(null);return t.__v8__=void 0,delete t.__v8__,t}t.createMap=e}(egret||(egret={}));var egret;!function(t){var e=function(t){function e(e,i,r,n,a,o,s,h){void 0===e&&(e=16711680),void 0===i&&(i=1),void 0===r&&(r=6),void 0===n&&(n=6),void 0===a&&(a=2),void 0===o&&(o=1),void 0===s&&(s=!1),void 0===h&&(h=!1);var c=t.call(this)||this,l=c;return l.type="glow",l.$color=e,l.$blue=255&e,l.$green=(65280&e)>>8,l.$red=e>>16,l.$alpha=i,l.$blurX=r,l.$blurY=n,l.$strength=a,l.$quality=o,l.$inner=s,l.$knockout=h,l.$uniforms.color={x:c.$red/255,y:c.$green/255,z:c.$blue/255,w:1},l.$uniforms.alpha=i,l.$uniforms.blurX=r,l.$uniforms.blurY=n,l.$uniforms.strength=a,l.$uniforms.inner=s?1:0,l.$uniforms.knockout=h?0:1,l.$uniforms.dist=0,l.$uniforms.angle=0,l.$uniforms.hideObject=0,l.onPropertyChange(),c}return __extends(e,t),Object.defineProperty(e.prototype,"color",{get:function(){return this.$color},set:function(t){this.$color!=t&&(this.$color=t,this.$blue=255&t,this.$green=(65280&t)>>8,this.$red=t>>16,this.$uniforms.color.x=this.$red/255,this.$uniforms.color.y=this.$green/255,this.$uniforms.color.z=this.$blue/255)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"alpha",{get:function(){return this.$alpha},set:function(t){this.$alpha!=t&&(this.$alpha=t,this.$uniforms.alpha=t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"blurX",{get:function(){return this.$blurX},set:function(t){var e=this;e.$blurX!=t&&(e.$blurX=t,e.$uniforms.blurX=t,e.onPropertyChange())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"blurY",{get:function(){return this.$blurY},set:function(t){var e=this;e.$blurY!=t&&(e.$blurY=t,e.$uniforms.blurY=t,e.onPropertyChange())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"strength",{get:function(){return this.$strength},set:function(t){this.$strength!=t&&(this.$strength=t,this.$uniforms.strength=t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"quality",{get:function(){return this.$quality},set:function(t){this.$quality!=t&&(this.$quality=t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"inner",{get:function(){return this.$inner},set:function(t){this.$inner!=t&&(this.$inner=t,this.$uniforms.inner=t?1:0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"knockout",{get:function(){return this.$knockout},set:function(t){this.$knockout!=t&&(this.$knockout=t,this.$uniforms.knockout=t?0:1)},enumerable:!0,configurable:!0}),e.prototype.$toJson=function(){return'{"color": '+this.$color+', "red": '+this.$red+', "green": '+this.$green+', "blue": '+this.$blue+', "alpha": '+this.$alpha+', "blurX": '+this.$blurX+', "blurY": '+this.blurY+', "strength": '+this.$strength+', "quality": '+this.$quality+', "inner": '+this.$inner+', "knockout": '+this.$knockout+"}"},e.prototype.updatePadding=function(){var t=this;t.paddingLeft=t.blurX,t.paddingRight=t.blurX,t.paddingTop=t.blurY,t.paddingBottom=t.blurY},e}(t.Filter);t.GlowFilter=e,__reflect(e.prototype,"egret.GlowFilter")}(egret||(egret={}));var egret;!function(t){var e=function(e){function i(){var i=e.call(this)||this;return i.$stageWidth=0,i.$stageHeight=0,i.$scaleMode=t.StageScaleMode.SHOW_ALL,i.$orientation=t.OrientationMode.AUTO,i.$maxTouches=99,i.$stage=i,i.$nestLevel=1,i}return __extends(i,e),i.prototype.createNativeDisplayObject=function(){this.$nativeDisplayObject=new egret_native.NativeDisplayObject(13)},Object.defineProperty(i.prototype,"frameRate",{get:function(){return t.ticker.$frameRate},set:function(e){t.ticker.$setFrameRate(e)},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"stageWidth",{get:function(){return this.$stageWidth},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"stageHeight",{get:function(){return this.$stageHeight},enumerable:!0,configurable:!0}),i.prototype.invalidate=function(){t.sys.$invalidateRenderFlag=!0},i.prototype.registerImplementation=function(e,i){t.registerImplementation(e,i)},i.prototype.getImplementation=function(e){return t.getImplementation(e)},Object.defineProperty(i.prototype,"scaleMode",{get:function(){return this.$scaleMode},set:function(t){this.$scaleMode!=t&&(this.$scaleMode=t,this.$screen.updateScreenSize())},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"orientation",{get:function(){return this.$orientation},set:function(t){this.$orientation!=t&&(this.$orientation=t,this.$screen.updateScreenSize())},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"textureScaleFactor",{get:function(){return t.$TextureScaleFactor},set:function(e){t.$TextureScaleFactor=e},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"maxTouches",{get:function(){return this.$maxTouches},set:function(t){this.$maxTouches!=t&&(this.$maxTouches=t,this.$screen.updateMaxTouches())},enumerable:!0,configurable:!0}),i.prototype.setContentSize=function(t,e){this.$screen.setContentSize(t,e)},i}(t.DisplayObjectContainer);t.Stage=e,__reflect(e.prototype,"egret.Stage")}(egret||(egret={}));var egret;!function(t){var e=function(){function t(){}return t.NORMAL="normal",t.ADD="add",t.ERASE="erase",t}();t.BlendMode=e,__reflect(e.prototype,"egret.BlendMode")}(egret||(egret={})),function(t){var e;!function(t){function e(t){var e=n[t];return void 0===e?0:e}function i(t){var e=r[t];return void 0===e?"normal":e}for(var r=["normal","add","erase"],n={},a=r.length,o=0;a>o;o++){var s=r[o];n[s]=o}t.blendModeToNumber=e,t.numberToBlendMode=i}(e=t.sys||(t.sys={}))}(egret||(egret={}));var egret;!function(t){t.ChildrenSortMode={DEFAULT:"default",INCREASE_Y:"increaseY",DECREASE_Y:"decreaseY"}}(egret||(egret={}));var egret;!function(t){t.CapsStyle={NONE:"none",ROUND:"round",SQUARE:"square"}}(egret||(egret={}));var egret;!function(t){var e=function(){function e(){}return e.compileProgram=function(i,r,n){var a=e.compileFragmentShader(i,n),o=e.compileVertexShader(i,r),s=i.createProgram();return i.attachShader(s,o),i.attachShader(s,a),i.linkProgram(s),i.getProgramParameter(s,i.LINK_STATUS)||t.$warn(1020),s},e.compileFragmentShader=function(t,i){return e._compileShader(t,i,t.FRAGMENT_SHADER)},e.compileVertexShader=function(t,i){return e._compileShader(t,i,t.VERTEX_SHADER)},e._compileShader=function(t,e,i){var r=t.createShader(i);return t.shaderSource(r,e),t.compileShader(r),t.getShaderParameter(r,t.COMPILE_STATUS)?r:null},e.checkCanUseWebGL=function(){if(void 0==e.canUseWebGL)try{var t=document.createElement("canvas");e.canUseWebGL=!(!window.WebGLRenderingContext||!t.getContext("webgl")&&!t.getContext("experimental-webgl"))}catch(i){e.canUseWebGL=!1}return e.canUseWebGL},e.deleteWebGLTexture=function(e){if(e&&!e[t.engine_default_empty_texture]){var i=e[t.glContext];i&&i.deleteTexture(e)}},e.premultiplyTint=function(t,e){if(1===e)return(255*e<<24)+t;if(0===e)return 0;var i=t>>16&255,r=t>>8&255,n=255&t;return i=i*e+.5|0,r=r*e+.5|0,n=n*e+.5|0,(255*e<<24)+(i<<16)+(r<<8)+n},e}();t.WebGLUtils=e,__reflect(e.prototype,"egret.WebGLUtils")}(egret||(egret={}));var egret;!function(t){var e=function(t){function e(e,i,r){return void 0===i&&(i=!1),void 0===r&&(r=!1),t.call(this,e,i,r)||this}return __extends(e,t),e.FOCUS_IN="focusIn",e.FOCUS_OUT="focusOut",e}(t.Event);t.FocusEvent=e,__reflect(e.prototype,"egret.FocusEvent")}(egret||(egret={}));var egret;!function(t){var e=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.PERMISSION_DENIED="permissionDenied",e.UNAVAILABLE="unavailable",e}(t.Event);t.GeolocationEvent=e,__reflect(e.prototype,"egret.GeolocationEvent")}(egret||(egret={}));var egret;!function(t){var e=function(e){function i(t,i,r){void 0===i&&(i=!1),void 0===r&&(r=!1);var n=e.call(this,t,i,r)||this;return n._status=0,n}return __extends(i,e),Object.defineProperty(i.prototype,"status",{get:function(){return this._status},enumerable:!0,configurable:!0}),i.dispatchHTTPStatusEvent=function(e,r){var n=t.Event.create(i,i.HTTP_STATUS);n._status=r;var a=e.dispatchEvent(n);return t.Event.release(n),a},i.HTTP_STATUS="httpStatus",i}(t.Event);t.HTTPStatusEvent=e,__reflect(e.prototype,"egret.HTTPStatusEvent")}(egret||(egret={}));var egret;!function(t){var e=function(e){function i(t,i,r){return void 0===i&&(i=!1),void 0===r&&(r=!1),e.call(this,t,i,r)||this}return __extends(i,e),i.dispatchIOErrorEvent=function(e){var r=t.Event.create(i,i.IO_ERROR),n=e.dispatchEvent(r);return t.Event.release(r),n},i.IO_ERROR="ioError",i}(t.Event);t.IOErrorEvent=e,__reflect(e.prototype,"egret.IOErrorEvent")}(egret||(egret={}));var egret;!function(t){var e=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(t.Event);t.MotionEvent=e,__reflect(e.prototype,"egret.MotionEvent")}(egret||(egret={}));var egret;!function(t){var e=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(t.Event);t.OrientationEvent=e,__reflect(e.prototype,"egret.OrientationEvent")}(egret||(egret={}));var egret;!function(t){var e=function(e){function i(t,i,r,n,a){void 0===i&&(i=!1),void 0===r&&(r=!1),void 0===n&&(n=0),void 0===a&&(a=0);var o=e.call(this,t,i,r)||this;return o.bytesLoaded=0,o.bytesTotal=0,o.bytesLoaded=n,o.bytesTotal=a,o}return __extends(i,e),i.dispatchProgressEvent=function(e,r,n,a){void 0===n&&(n=0),void 0===a&&(a=0);var o=t.Event.create(i,r);o.bytesLoaded=n,o.bytesTotal=a;var s=e.dispatchEvent(o);return t.Event.release(o),s},i.PROGRESS="progress",i.SOCKET_DATA="socketData",i}(t.Event);t.ProgressEvent=e,__reflect(e.prototype,"egret.ProgressEvent")}(egret||(egret={}));var egret;!function(t){var e=function(e){function i(t,i,r){return void 0===i&&(i=!1),void 0===r&&(r=!1),e.call(this,t,i,r)||this}return __extends(i,e),i.dispatchStageOrientationEvent=function(e,r){var n=t.Event.create(i,r),a=e.dispatchEvent(n);return t.Event.release(n),a},i.ORIENTATION_CHANGE="orientationChange",i}(t.Event);t.StageOrientationEvent=e,__reflect(e.prototype,"egret.StageOrientationEvent")}(egret||(egret={}));var egret;!function(t){var e=function(e){function i(t,i,r,n){void 0===i&&(i=!1),void 0===r&&(r=!1),void 0===n&&(n="");var a=e.call(this,t,i,r)||this;return a.text=n,a}return __extends(i,e),i.dispatchTextEvent=function(e,r,n){var a=t.Event.create(i,r);a.text=n;var o=e.dispatchEvent(a);return t.Event.release(a),o},i.LINK="link",i}(t.Event);t.TextEvent=e,__reflect(e.prototype,"egret.TextEvent")}(egret||(egret={}));var egret;!function(t){var e=function(e){function i(t,i,r){return e.call(this,t,i,r)||this}return __extends(i,e),i.prototype.updateAfterEvent=function(){t.sys.$requestRenderingFlag=!0},i.dispatchTimerEvent=function(e,r,n,a){var o=t.Event.create(i,r,n,a),s=e.dispatchEvent(o);return t.Event.release(o),s},i.TIMER="timer",i.TIMER_COMPLETE="timerComplete",i}(t.Event);t.TimerEvent=e,__reflect(e.prototype,"egret.TimerEvent")}(egret||(egret={}));var egret;!function(t){var e=function(){function t(){}return t}();t.CompressedTextureData=e,__reflect(e.prototype,"egret.CompressedTextureData"),t.etc_alpha_mask="etc_alpha_mask",t.engine_default_empty_texture="engine_default_empty_texture",t.is_compressed_texture="is_compressed_texture",t.glContext="glContext",t.UNPACK_PREMULTIPLY_ALPHA_WEBGL="UNPACK_PREMULTIPLY_ALPHA_WEBGL";var i=function(e){function i(i){var r=e.call(this)||this;if(r.format="image",r.$deleteSource=!0,r.compressedTextureData=[],r.debugCompressedTextureURL="",r.etcAlphaMask=null,t.nativeRender){var n=new egret_native.NativeBitmapData;n.$init(),r.$nativeBitmapData=n}return r.source=i,r.source=i,r.source&&(r.width=+i.width,r.height=+i.height),r}return __extends(i,e),Object.defineProperty(i.prototype,"source",{get:function(){return this.$source},set:function(e){this.$source=e,t.nativeRender&&egret_native.NativeDisplayObject.setSourceToNativeBitmapData(this.$nativeBitmapData,e)},enumerable:!0,configurable:!0}),i.create=function(e,r,n){var a="";a="arraybuffer"===e?t.Base64Util.encode(r):r;var o="image/png";"/"===a.charAt(0)?o="image/jpeg":"R"===a.charAt(0)?o="image/gif":"i"===a.charAt(0)&&(o="image/png");var s=new Image;s.src="data:"+o+";base64,"+a,s.crossOrigin="*";var h=new i(s);return s.onload=function(){s.onload=void 0,h.source=s,h.height=s.height,h.width=s.width,n&&n(h)},h},i.prototype.$dispose=function(){"webgl"==t.Capabilities.renderMode&&this.webGLTexture&&(t.WebGLUtils.deleteWebGLTexture(this.webGLTexture),this.webGLTexture=null),this.source&&this.source.dispose&&this.source.dispose(),this.source&&this.source.src&&(this.source.src=""),this.source=null,this.clearCompressedTextureData(),this.debugCompressedTextureURL="",this.etcAlphaMask=null,t.nativeRender&&egret_native.NativeDisplayObject.disposeNativeBitmapData(this.$nativeBitmapData),i.$dispose(this)},i.$addDisplayObject=function(t,e){if(e){var r=e.hashCode;if(r){if(!i._displayList[r])return void(i._displayList[r]=[t]);var n=i._displayList[r];n.indexOf(t)<0&&n.push(t)}}},i.$removeDisplayObject=function(t,e){if(e){var r=e.hashCode;if(r&&i._displayList[r]){var n=i._displayList[r],a=n.indexOf(t);a>=0&&n.splice(a,1)}}},i.$invalidate=function(e){if(e){var r=e.hashCode;if(r&&i._displayList[r])for(var n=i._displayList[r],a=0;at;t++)this.matrix2[t]=this.$matrix[t];return this.matrix2},set:function(t){this.setMatrix(t)},enumerable:!0,configurable:!0}),e.prototype.setMatrix=function(t){if(t)for(var e=0;20>e;e++)this.$matrix[e]=t[e];else for(var e=0;20>e;e++)this.$matrix[e]=0==e||6==e||12==e||18==e?1:0;for(var i=this.$matrix,r=this.$uniforms.matrix,n=this.$uniforms.colorAdd,e=0,a=0;et;t++)8===t||13===t||18===t||23===t?n[t]="-":14===t?n[t]="4":(2>=a&&(a=33554432+16777216*Math.random()|0),e=15&a,a>>=4,n[t]=r[19===t?3&e|8:e]);return n.join("")},s=function(e){function r(t,r,n){void 0===n&&(n={});var a=e.call(this)||this;a.$padding=0,a.$vertexSrc=t,a.$fragmentSrc=r;var s=t+r;return i[s]||(i[s]=o()),a.$shaderKey=i[s],a.$uniforms=n,a.type="custom",a}return __extends(r,e),Object.defineProperty(r.prototype,"padding",{get:function(){return this.$padding},set:function(t){var e=this;e.$padding!=t&&(e.$padding=t,e.onPropertyChange())},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"uniforms",{get:function(){return this.$uniforms},enumerable:!0,configurable:!0}),r.prototype.onPropertyChange=function(){if(t.nativeRender){var e=this;egret_native.NativeDisplayObject.setFilterPadding(e.$id,e.$padding,e.$padding,e.$padding,e.$padding),egret_native.NativeDisplayObject.setDataToFilter(e)}},r}(t.Filter);t.CustomFilter=s,__reflect(s.prototype,"egret.CustomFilter")}(egret||(egret={}));var egret;!function(t){var e=function(e){function i(t,i,r,n,a,o,s,h,c,l,u){void 0===t&&(t=4),void 0===i&&(i=45),void 0===r&&(r=0),void 0===n&&(n=1),void 0===a&&(a=4),void 0===o&&(o=4),void 0===s&&(s=1),void 0===h&&(h=1),void 0===c&&(c=!1),void 0===l&&(l=!1),void 0===u&&(u=!1);var p=e.call(this,r,n,a,o,s,h,c,l)||this,d=p;return d.$distance=t,d.$angle=i,d.$hideObject=u,d.$uniforms.dist=t,d.$uniforms.angle=i/180*Math.PI,d.$uniforms.hideObject=u?1:0,d.onPropertyChange(),p}return __extends(i,e),Object.defineProperty(i.prototype,"distance",{get:function(){return this.$distance},set:function(t){var e=this;e.$distance!=t&&(e.$distance=t,e.$uniforms.dist=t,e.onPropertyChange())},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"angle",{get:function(){return this.$angle},set:function(t){var e=this;e.$angle!=t&&(e.$angle=t,e.$uniforms.angle=t/180*Math.PI,e.onPropertyChange())},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"hideObject",{get:function(){return this.$hideObject},set:function(t){this.$hideObject!=t&&(this.$hideObject=t,this.$uniforms.hideObject=t?1:0)},enumerable:!0,configurable:!0}),i.prototype.$toJson=function(){return'{"distance": '+this.$distance+', "angle": '+this.$angle+', "color": '+this.$color+', "red": '+this.$red+', "green": '+this.$green+', "blue": '+this.$blue+', "alpha": '+this.$alpha+', "blurX": '+this.$blurX+', "blurY": '+this.blurY+', "strength": '+this.$strength+', "quality": '+this.$quality+', "inner": '+this.$inner+', "knockout": '+this.$knockout+', "hideObject": '+this.$hideObject+"}"},i.prototype.updatePadding=function(){var e=this;e.paddingLeft=e.blurX,e.paddingRight=e.blurX,e.paddingTop=e.blurY,e.paddingBottom=e.blurY;var i=e.distance||0,r=e.angle||0,n=0,a=0;0!=i&&(n=i*t.NumberUtils.cos(r),n=n>0?Math.ceil(n):Math.floor(n),a=i*t.NumberUtils.sin(r),a=a>0?Math.ceil(a):Math.floor(a),e.paddingLeft+=n,e.paddingRight+=n,e.paddingTop+=a,e.paddingBottom+=a)},i}(t.GlowFilter);t.DropShadowFilter=e,__reflect(e.prototype,"egret.DropShadowFilter")}(egret||(egret={}));var egret;!function(t){var e=function(){function t(){}return t.LINEAR="linear",t.RADIAL="radial",t}();t.GradientType=e,__reflect(e.prototype,"egret.GradientType")}(egret||(egret={}));var egret;!function(t){function e(t){return t%=2*Math.PI,0>t&&(t+=2*Math.PI),t}function i(t,e){for(var i=[],n=0;e>n;n++){var a=r(t,n/e);a&&i.push(a)}return i}function r(e,i){var r=0,o=0,s=0,h=e.length;if(h/2==3){var c=e[r++],l=e[r++],u=e[r++],p=e[r++],d=e[r++],f=e[r++];o=n(c,u,d,i),s=n(l,p,f,i)}else if(h/2==4){var c=e[r++],l=e[r++],u=e[r++],p=e[r++],d=e[r++],f=e[r++],g=e[r++],$=e[r++];o=a(c,u,d,g,i),s=a(l,p,f,$,i)}return t.Point.create(o,s)}function n(t,e,i,r){var n=Math.pow(1-r,2)*t+2*r*(1-r)*e+Math.pow(r,2)*i;return n}function a(t,e,i,r,n){var a=Math.pow(1-n,3)*t+3*n*Math.pow(1-n,2)*e+3*(1-n)*Math.pow(n,2)*i+Math.pow(n,3)*r;return a}var o=function(r){function n(){var e=r.call(this)||this;return e.lastX=0,e.lastY=0,e.fillPath=null,e.strokePath=null,e.topLeftStrokeWidth=0,e.bottomRightStrokeWidth=0,e.minX=1/0,e.minY=1/0,e.maxX=-(1/0),e.maxY=-(1/0),e.includeLastPosition=!0,e.$renderNode=new t.sys.GraphicsNode,e}return __extends(n,r),n.prototype.$setTarget=function(e){this.$targetDisplay&&(this.$targetDisplay.$renderNode=null),e.$renderNode=this.$renderNode,this.$targetDisplay=e,this.$targetIsSprite=e instanceof t.Sprite},n.prototype.setStrokeWidth=function(t){switch(t){case 1:this.topLeftStrokeWidth=0,this.bottomRightStrokeWidth=1;break;case 3:this.topLeftStrokeWidth=1,this.bottomRightStrokeWidth=2;break;default:var e=0|Math.ceil(.5*t);this.topLeftStrokeWidth=e,this.bottomRightStrokeWidth=e}},n.prototype.beginFill=function(e,i){void 0===i&&(i=1),e=+e||0,i=+i||0,t.nativeRender&&this.$targetDisplay.$nativeDisplayObject.setBeginFill(e,i),this.fillPath=this.$renderNode.beginFill(e,i,this.strokePath),this.$renderNode.drawData.length>1&&this.fillPath.moveTo(this.lastX,this.lastY)},n.prototype.beginGradientFill=function(e,i,r,n,a){void 0===a&&(a=null),t.nativeRender&&this.$targetDisplay.$nativeDisplayObject.setBeginGradientFill(e,i,r,n,a),this.fillPath=this.$renderNode.beginGradientFill(e,i,r,n,a,this.strokePath),this.$renderNode.drawData.length>1&&this.fillPath.moveTo(this.lastX,this.lastY)},n.prototype.endFill=function(){t.nativeRender&&this.$targetDisplay.$nativeDisplayObject.setEndFill(),this.fillPath=null},n.prototype.lineStyle=function(e,i,r,n,a,o,s,h,c){void 0===e&&(e=0/0),void 0===i&&(i=0),void 0===r&&(r=1),void 0===n&&(n=!1),void 0===a&&(a="normal"),void 0===o&&(o=null),void 0===s&&(s=null),void 0===h&&(h=3),e=+e||0,i=+i||0,r=+r||0,h=+h||0,t.nativeRender&&this.$targetDisplay.$nativeDisplayObject.setLineStyle(e,i,r,n,a,o,s,h),0>=e?(this.strokePath=null,this.setStrokeWidth(0)):(this.setStrokeWidth(e),this.strokePath=this.$renderNode.lineStyle(e,i,r,o,s,h,c),this.$renderNode.drawData.length>1&&this.strokePath.moveTo(this.lastX,this.lastY))},n.prototype.drawRect=function(e,i,r,n){e=+e||0,i=+i||0,r=+r||0,n=+n||0,t.nativeRender&&this.$targetDisplay.$nativeDisplayObject.setDrawRect(e,i,r,n);var a=this.fillPath,o=this.strokePath;a&&a.drawRect(e,i,r,n),o&&o.drawRect(e,i,r,n),this.extendBoundsByPoint(e+r,i+n),this.updatePosition(e,i),this.dirty()},n.prototype.drawRoundRect=function(e,i,r,n,a,o){e=+e||0,i=+i||0,r=+r||0,n=+n||0,a=+a||0,o=+o||0,t.nativeRender&&this.$targetDisplay.$nativeDisplayObject.setDrawRoundRect(e,i,r,n,a,o);var s=this.fillPath,h=this.strokePath;s&&s.drawRoundRect(e,i,r,n,a,o),h&&h.drawRoundRect(e,i,r,n,a,o);var c=.5*a|0,l=o?.5*o|0:c,u=e+r,p=i+n,d=p-l;this.extendBoundsByPoint(e,i),this.extendBoundsByPoint(u,p),this.updatePosition(u,d),this.dirty()},n.prototype.drawCircle=function(e,i,r){e=+e||0,i=+i||0,r=+r||0,t.nativeRender&&this.$targetDisplay.$nativeDisplayObject.setDrawCircle(e,i,r);var n=this.fillPath,a=this.strokePath;n&&n.drawCircle(e,i,r),a&&a.drawCircle(e,i,r),this.extendBoundsByPoint(e-r-1,i-r-1),this.extendBoundsByPoint(e+r+2,i+r+2),this.updatePosition(e+r,i),this.dirty()},n.prototype.drawEllipse=function(e,i,r,n){e=+e||0,i=+i||0,r=+r||0,n=+n||0,t.nativeRender&&this.$targetDisplay.$nativeDisplayObject.setDrawEllipse(e,i,r,n);var a=this.fillPath,o=this.strokePath;a&&a.drawEllipse(e,i,r,n),o&&o.drawEllipse(e,i,r,n),this.extendBoundsByPoint(e-1,i-1),this.extendBoundsByPoint(e+r+2,i+n+2),this.updatePosition(e+r,i+.5*n),this.dirty()},n.prototype.moveTo=function(e,i){e=+e||0,i=+i||0,t.nativeRender&&this.$targetDisplay.$nativeDisplayObject.setMoveTo(e,i);var r=this.fillPath,n=this.strokePath;r&&r.moveTo(e,i),n&&n.moveTo(e,i),this.includeLastPosition=!1,this.lastX=e,this.lastY=i,this.dirty()},n.prototype.lineTo=function(e,i){e=+e||0,i=+i||0,t.nativeRender&&this.$targetDisplay.$nativeDisplayObject.setLineTo(e,i);var r=this.fillPath,n=this.strokePath;r&&r.lineTo(e,i),n&&n.lineTo(e,i),this.updatePosition(e,i),this.dirty()},n.prototype.curveTo=function(e,r,n,a){e=+e||0,r=+r||0,n=+n||0,a=+a||0,t.nativeRender&&this.$targetDisplay.$nativeDisplayObject.setCurveTo(e,r,n,a);var o=this.fillPath,s=this.strokePath;o&&o.curveTo(e,r,n,a),s&&s.curveTo(e,r,n,a);for(var h=this.lastX||0,c=this.lastY||0,l=i([h,c,e,r,n,a],50),u=0;un||a===o)){i=+i||0,r=+r||0,n=+n||0,a=+a||0,o=+o||0,s=!!s,a=e(a),o=e(o),t.nativeRender&&this.$targetDisplay.$nativeDisplayObject.setDrawArc(i,r,n,a,o,s);var h=this.fillPath,c=this.strokePath;h&&(h.$lastX=this.lastX,h.$lastY=this.lastY,h.drawArc(i,r,n,a,o,s)),c&&(c.$lastX=this.lastX,c.$lastY=this.lastY,c.drawArc(i,r,n,a,o,s)),s?this.arcBounds(i,r,n,o,a):this.arcBounds(i,r,n,a,o);var l=i+Math.cos(o)*n,u=r+Math.sin(o)*n;this.updatePosition(l,u),this.dirty()}},n.prototype.dirty=function(){var e=this;if(e.$renderNode.dirtyRender=!0,!t.nativeRender){var i=e.$targetDisplay;i.$cacheDirty=!0;var r=i.$parent;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp());var n=i.$maskedObject;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp())}},n.prototype.arcBounds=function(t,e,i,r,n){var a=Math.PI;if(Math.abs(r-n)<.01)return this.extendBoundsByPoint(t-i,e-i),void this.extendBoundsByPoint(t+i,e+i);r>n&&(n+=2*a);for(var o=Math.cos(r)*i,s=Math.cos(n)*i,h=Math.min(o,s),c=Math.max(o,s),l=Math.sin(r)*i,u=Math.sin(n)*i,p=Math.min(l,u),d=Math.max(l,u),f=r/(.5*a),g=n/(.5*a),$=Math.ceil(f);g>=$;$++)switch($%4){case 0:c=i;break;case 1:d=i;break;case 2:h=-i;break;case 3:p=-i}h=Math.floor(h),p=Math.floor(p),c=Math.ceil(c),d=Math.ceil(d),this.extendBoundsByPoint(h+t,p+e),this.extendBoundsByPoint(c+t,d+e)},n.prototype.clear=function(){t.nativeRender&&this.$targetDisplay.$nativeDisplayObject.setGraphicsClear(),this.$renderNode.clear(),this.updatePosition(0,0),this.minX=1/0,this.minY=1/0,this.maxX=-(1/0),this.maxY=-(1/0),this.dirty()},n.prototype.extendBoundsByPoint=function(t,e){this.extendBoundsByX(t),this.extendBoundsByY(e)},n.prototype.extendBoundsByX=function(t){this.minX=Math.min(this.minX,t-this.topLeftStrokeWidth),this.maxX=Math.max(this.maxX,t+this.bottomRightStrokeWidth),this.updateNodeBounds()},n.prototype.extendBoundsByY=function(t){this.minY=Math.min(this.minY,t-this.topLeftStrokeWidth),this.maxY=Math.max(this.maxY,t+this.bottomRightStrokeWidth),this.updateNodeBounds()},n.prototype.updateNodeBounds=function(){var t=this.$renderNode;t.x=this.minX,t.y=this.minY,t.width=Math.ceil(this.maxX-this.minX),t.height=Math.ceil(this.maxY-this.minY)},n.prototype.updatePosition=function(t,e){this.includeLastPosition||(this.extendBoundsByPoint(this.lastX,this.lastY),this.includeLastPosition=!0),this.lastX=t,this.lastY=e,this.extendBoundsByPoint(t,e)},n.prototype.$measureContentBounds=function(t){this.minX===1/0?t.setEmpty():t.setTo(this.minX,this.minY,this.maxX-this.minX,this.maxY-this.minY)},n.prototype.$hitTest=function(e,i){var r=this.$targetDisplay,n=r.$getInvertedConcatenatedMatrix(),a=n.a*e+n.c*i+n.tx,o=n.b*e+n.d*i+n.ty,s=t.sys.canvasHitTestBuffer;s.resize(3,3);var h=this.$renderNode,c=t.Matrix.create();c.identity(),c.translate(1-a,1-o),t.sys.canvasRenderer.drawNodeToBuffer(h,s,c,!0),t.Matrix.release(c);try{var l=s.getPixels(1,1);if(0===l[3])return null}catch(u){throw new Error(t.sys.tr(1039))}return r},n.prototype.$onRemoveFromStage=function(){this.$renderNode&&this.$renderNode.clean(),t.nativeRender&&egret_native.NativeDisplayObject.disposeGraphicData(this)},n}(t.HashObject);t.Graphics=o,__reflect(o.prototype,"egret.Graphics")}(egret||(egret={}));var egret;!function(t){var e=Math.PI,i=2*e,r=e/180,n=[],a=function(a){function o(t,e,i,r,n,o){void 0===t&&(t=1),void 0===e&&(e=0),void 0===i&&(i=0),void 0===r&&(r=1),void 0===n&&(n=0),void 0===o&&(o=0);var s=a.call(this)||this;return s.a=t,s.b=e,s.c=i,s.d=r,s.tx=n,s.ty=o,s}return __extends(o,a),o.release=function(t){t&&n.push(t)},o.create=function(){var t=n.pop();return t||(t=new o),t},o.prototype.clone=function(){return new o(this.a,this.b,this.c,this.d,this.tx,this.ty)},o.prototype.concat=function(t){var e=this.a*t.a,i=0,r=0,n=this.d*t.d,a=this.tx*t.a+t.tx,o=this.ty*t.d+t.ty;(0!==this.b||0!==this.c||0!==t.b||0!==t.c)&&(e+=this.b*t.c,n+=this.c*t.b,i+=this.a*t.b+this.b*t.d,r+=this.c*t.a+this.d*t.c,a+=this.ty*t.c,o+=this.tx*t.b),this.a=e,this.b=i,this.c=r,this.d=n,this.tx=a,this.ty=o},o.prototype.copyFrom=function(t){return this.a=t.a,this.b=t.b,this.c=t.c,this.d=t.d,this.tx=t.tx,this.ty=t.ty,this},o.prototype.identity=function(){this.a=this.d=1,this.b=this.c=this.tx=this.ty=0},o.prototype.invert=function(){this.$invertInto(this)},o.prototype.$invertInto=function(t){var e=this.a,i=this.b,r=this.c,n=this.d,a=this.tx,o=this.ty;if(0==i&&0==r)return t.b=t.c=0,void(0==e||0==n?t.a=t.d=t.tx=t.ty=0:(e=t.a=1/e,n=t.d=1/n,t.tx=-e*a,t.ty=-n*o));var s=e*n-i*r;if(0==s)return void t.identity();s=1/s;var h=t.a=n*s;i=t.b=-i*s,r=t.c=-r*s,n=t.d=e*s,t.tx=-(h*a+r*o),t.ty=-(i*a+n*o)},o.prototype.rotate=function(e){if(e=+e,0!==e){e/=r;var i=t.NumberUtils.cos(e),n=t.NumberUtils.sin(e),a=this.a,o=this.b,s=this.c,h=this.d,c=this.tx,l=this.ty;this.a=a*i-o*n,this.b=a*n+o*i,this.c=s*i-h*n,this.d=s*n+h*i,this.tx=c*i-l*n,this.ty=c*n+l*i}},o.prototype.scale=function(t,e){1!==t&&(this.a*=t,this.c*=t,this.tx*=t),1!==e&&(this.b*=e,this.d*=e,this.ty*=e)},o.prototype.setTo=function(t,e,i,r,n,a){return this.a=t,this.b=e,this.c=i,this.d=r,this.tx=n,this.ty=a,this},o.prototype.transformPoint=function(e,i,r){var n=this.a*e+this.c*i+this.tx,a=this.b*e+this.d*i+this.ty;return r?(r.setTo(n,a),r):new t.Point(n,a)},o.prototype.translate=function(t,e){this.tx+=t,this.ty+=e},o.prototype.equals=function(t){return this.a==t.a&&this.b==t.b&&this.c==t.c&&this.d==t.d&&this.tx==t.tx&&this.ty==t.ty},o.prototype.prepend=function(t,e,i,r,n,a){var o=this.tx;if(1!=t||0!=e||0!=i||1!=r){var s=this.a,h=this.c;this.a=s*t+this.b*i,this.b=s*e+this.b*r,this.c=h*t+this.d*i,this.d=h*e+this.d*r}return this.tx=o*t+this.ty*i+n,this.ty=o*e+this.ty*r+a,this},o.prototype.append=function(t,e,i,r,n,a){var o=this.a,s=this.b,h=this.c,c=this.d;return(1!=t||0!=e||0!=i||1!=r)&&(this.a=t*o+e*h,this.b=t*s+e*c,this.c=i*o+r*h,this.d=i*s+r*c),this.tx=n*o+a*h+this.tx,this.ty=n*s+a*c+this.ty,this},o.prototype.deltaTransformPoint=function(e){var i=this,r=i.a*e.x+i.c*e.y,n=i.b*e.x+i.d*e.y;return new t.Point(r,n)},o.prototype.toString=function(){return"(a="+this.a+", b="+this.b+", c="+this.c+", d="+this.d+", tx="+this.tx+", ty="+this.ty+")"},o.prototype.createBox=function(e,i,n,a,o){void 0===n&&(n=0),void 0===a&&(a=0),void 0===o&&(o=0);var s=this;if(0!==n){n/=r;var h=t.NumberUtils.cos(n),c=t.NumberUtils.sin(n);s.a=h*e,s.b=c*i,s.c=-c*e,s.d=h*i}else s.a=e,s.b=0,s.c=0,s.d=i;s.tx=a,s.ty=o},o.prototype.createGradientBox=function(t,e,i,r,n){void 0===i&&(i=0),void 0===r&&(r=0),void 0===n&&(n=0),this.createBox(t/1638.4,e/1638.4,i,r+t/2,n+e/2)},o.prototype.$transformBounds=function(t){var e=this.a,i=this.b,r=this.c,n=this.d,a=this.tx,o=this.ty,s=t.x,h=t.y,c=s+t.width,l=h+t.height,u=e*s+r*h+a,p=i*s+n*h+o,d=e*c+r*h+a,f=i*c+n*h+o,g=e*c+r*l+a,$=i*c+n*l+o,y=e*s+r*l+a,v=i*s+n*l+o,m=0;u>d&&(m=u,u=d,d=m),g>y&&(m=g,g=y,y=m),t.x=Math.floor(g>u?u:g),t.width=Math.ceil((d>y?d:y)-t.x),p>f&&(m=p,p=f,f=m),$>v&&(m=$,$=v,v=m),t.y=Math.floor($>p?p:$),t.height=Math.ceil((f>v?f:v)-t.y)},o.prototype.getDeterminant=function(){return this.a*this.d-this.b*this.c},o.prototype.$getScaleX=function(){var t=this;if(0==t.b)return t.a;var e=Math.sqrt(t.a*t.a+t.b*t.b);return this.getDeterminant()<0?-e:e},o.prototype.$getScaleY=function(){var t=this;if(0==t.c)return t.d;var e=Math.sqrt(t.c*t.c+t.d*t.d);return this.getDeterminant()<0?-e:e},o.prototype.$getSkewX=function(){return this.d<0?Math.atan2(this.d,this.c)+e/2:Math.atan2(this.d,this.c)-e/2},o.prototype.$getSkewY=function(){return this.a<0?Math.atan2(this.b,this.a)-e:Math.atan2(this.b,this.a)},o.prototype.$updateScaleAndRotation=function(e,n,a,o){if(!(0!=a&&a!=i||0!=o&&o!=i))return this.a=e,this.b=this.c=0,void(this.d=n);a/=r,o/=r;var s=t.NumberUtils.cos(a),h=t.NumberUtils.sin(a);a==o?(this.a=s*e,this.b=h*e):(this.a=t.NumberUtils.cos(o)*e,this.b=t.NumberUtils.sin(o)*e),this.c=-h*n,this.d=s*n},o.prototype.$preMultiplyInto=function(t,e){var i=t.a*this.a,r=0,n=0,a=t.d*this.d,o=t.tx*this.a+this.tx,s=t.ty*this.d+this.ty;(0!==t.b||0!==t.c||0!==this.b||0!==this.c)&&(i+=t.b*this.c,a+=t.c*this.b,r+=t.a*this.b+t.b*this.d,n+=t.c*this.a+t.d*this.c,o+=t.ty*this.c,s+=t.tx*this.b),e.a=i,e.b=r,e.c=n,e.d=a,e.tx=o,e.ty=s},o}(t.HashObject);t.Matrix=a,__reflect(a.prototype,"egret.Matrix"),t.$TempMatrix=new a}(egret||(egret={}));var egret;!function(t){var e=[],i=function(i){function r(t,e,r,n){void 0===t&&(t=0),void 0===e&&(e=0),void 0===r&&(r=0),void 0===n&&(n=0);var a=i.call(this)||this;return a.x=t,a.y=e,a.width=r,a.height=n,a}return __extends(r,i),r.release=function(t){t&&e.push(t)},r.create=function(){var t=e.pop();return t||(t=new r),t},Object.defineProperty(r.prototype,"right",{get:function(){return this.x+this.width},set:function(t){this.width=t-this.x},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"bottom",{get:function(){return this.y+this.height},set:function(t){this.height=t-this.y},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"left",{get:function(){return this.x},set:function(t){this.width+=this.x-t,this.x=t},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"top",{get:function(){return this.y},set:function(t){this.height+=this.y-t,this.y=t},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"topLeft",{get:function(){return new t.Point(this.left,this.top)},set:function(t){this.top=t.y,this.left=t.x},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"bottomRight",{get:function(){return new t.Point(this.right,this.bottom)},set:function(t){this.bottom=t.y,this.right=t.x},enumerable:!0,configurable:!0}),r.prototype.copyFrom=function(t){return this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height,this},r.prototype.setTo=function(t,e,i,r){return this.x=t,this.y=e,this.width=i,this.height=r,this},r.prototype.contains=function(t,e){return this.x<=t&&this.x+this.width>=t&&this.y<=e&&this.y+this.height>=e},r.prototype.intersection=function(t){return this.clone().$intersectInPlace(t)},r.prototype.inflate=function(t,e){this.x-=t,this.width+=2*t,this.y-=e,this.height+=2*e},r.prototype.$intersectInPlace=function(t){var e=this.x,i=this.y,r=t.x,n=t.y,a=Math.max(e,r),o=Math.min(e+this.width,r+t.width);if(o>=a){var s=Math.max(i,n),h=Math.min(i+this.height,n+t.height);if(h>=s)return this.setTo(a,s,o-a,h-s),this}return this.setEmpty(),this},r.prototype.intersects=function(t){return Math.max(this.x,t.x)<=Math.min(this.right,t.right)&&Math.max(this.y,t.y)<=Math.min(this.bottom,t.bottom)},r.prototype.isEmpty=function(){return this.width<=0||this.height<=0},r.prototype.setEmpty=function(){this.x=0,this.y=0,this.width=0,this.height=0},r.prototype.clone=function(){return new r(this.x,this.y,this.width,this.height)},r.prototype.containsPoint=function(t){return this.x<=t.x&&this.x+this.width>t.x&&this.y<=t.y&&this.y+this.height>t.y?!0:!1},r.prototype.containsRect=function(t){var e=t.x+t.width,i=t.y+t.height,r=this.x+this.width,n=this.y+this.height;return t.x>=this.x&&t.x=this.y&&t.ythis.x&&r>=e&&i>this.y&&n>=i},r.prototype.equals=function(t){return this===t?!0:this.x===t.x&&this.y===t.y&&this.width===t.width&&this.height===t.height},r.prototype.inflatePoint=function(t){this.inflate(t.x,t.y)},r.prototype.offset=function(t,e){this.x+=t,this.y+=e},r.prototype.offsetPoint=function(t){this.offset(t.x,t.y)},r.prototype.toString=function(){return"(x="+this.x+", y="+this.y+", width="+this.width+", height="+this.height+")"},r.prototype.union=function(t){var e=this.clone();if(t.isEmpty())return e;if(e.isEmpty())return e.copyFrom(t),e;var i=Math.min(e.x,t.x),r=Math.min(e.y,t.y);return e.setTo(i,r,Math.max(e.right,t.right)-i,Math.max(e.bottom,t.bottom)-r),e},r.prototype.$getBaseWidth=function(t){var e=Math.abs(Math.cos(t)),i=Math.abs(Math.sin(t));return e*this.width+i*this.height},r.prototype.$getBaseHeight=function(t){var e=Math.abs(Math.cos(t)),i=Math.abs(Math.sin(t));return i*this.width+e*this.height},r}(t.HashObject);t.Rectangle=i,__reflect(i.prototype,"egret.Rectangle"),t.$TempRectangle=new i}(egret||(egret={}));var egret;!function(t){t.$locale_strings=t.$locale_strings||{},t.$locale_strings.en_US=t.$locale_strings.en_US||{};var e=t.$locale_strings.en_US;e[1001]="Could not find Egret entry class: {0}。",e[1002]="Egret entry class '{0}' must inherit from egret.DisplayObject.",e[1003]="Parameter {0} must be non-null.",e[1004]="An object cannot be added as a child to one of it's children (or children's children, etc.).",e[1005]="An object cannot be added as a child of itself.",e[1006]="The supplied DisplayObject must be a child of the caller.",e[1007]="An index specified for a parameter was out of range.",e[1008]="Instantiate singleton error,singleton class {0} can not create multiple instances.",e[1009]='the Class {0} cannot use the property "{1}"',e[1010]='the property "{1}" of the Class "{0}" is readonly',e[1011]="Stream Error. URL: {0}",e[1012]="The type of parameter {0} must be Class.",e[1013]="Variable assignment is NaN, please see the code!",e[1014]='the constant "{1}" of the Class "{0}" is read-only',e[1015]="xml not found!",e[1016]="{0}has been obsoleted",e[1017]="The format of JSON file is incorrect: {0}\ndata: {1}",e[1018]="the scale9Grid is not correct",e[1019]="Network ab:{0}",e[1020]="Cannot initialize Shader",e[1021]="Current browser does not support webgl",e[1022]="{0} ArgumentError",e[1023]="This method is not available in the ScrollView!",e[1025]="end of the file",e[1026]="! EncodingError The code point {0} could not be encoded.",e[1027]="DecodingError",e[1028]=". called injection is not configured rule: {0}, please specify configuration during its initial years of injection rule, and then call the corresponding single case.",e[1029]="Function.prototype.bind - what is trying to be bound is not callable",e[1033]="Photos can not be used across domains toDataURL to convert base64",e[1034]='Music file decoding failed: "{0}", please use the standard conversion tool reconversion under mp3.',e[1035]="Native does not support this feature!",e[1036]="Sound has stopped, please recall Sound.play () to play the sound!",e[1037]="Non-load the correct blob!",e[1038]="XML format error!",e[1039]="Cross domains pictures can not get pixel information!",e[1040]="hitTestPoint can not detect crossOrigin images! Please check if the display object has crossOrigin elements.",e[1041]="{0} is deprecated, please use {1} replace",e[1042]="The parameters passed in the region needs is an integer in drawToTexture method. Otherwise, some browsers will draw abnormal.",e[1043]="Compile errors in {0}, the attribute name: {1}, the attribute value: {2}.",e[1044]="The current version of the Runtime does not support video playback, please use the latest version",e[1045]="The resource url is not found",e[1046]="BitmapText no corresponding characters: {0}, please check the configuration file",e[1047]="egret.localStorage.setItem save failed,key={0}&value={1}",e[1048]="Video loading failed",e[1049]="In the absence of sound is not allowed to play after loading",e[1050]="ExternalInterface calls the method without js registration: {0}",e[1051]="runtime only support webgl render mode",e[1052]="network request timeout{0}",e[3e3]="Theme configuration file failed to load: {0}",e[3001]="Cannot find the skin name which is configured in Theme: {0}",e[3002]='Index:"{0}" is out of the collection element index range',e[3003]="Cannot be available in this component. If this component is container, please continue to use",e[3004]="addChild(){0}addElement() replace",e[3005]="addChildAt(){0}addElementAt() replace",e[3006]="removeChild(){0}removeElement() replace",e[3007]="removeChildAt(){0}removeElementAt() replace",e[3008]="setChildIndex(){0}setElementIndex() replace",e[3009]="swapChildren(){0}swapElements() replace",e[3010]="swapChildrenAt(){0}swapElementsAt() replace",e[3011]='Index:"{0}" is out of the visual element index range',e[3012]="This method is not available in Scroller component!",e[3013]="UIStage is GUI root container, and only one such instant is in the display list!",e[3014]="set fullscreen error",e[3100]="Current browser does not support WebSocket",e[3101]="Please connect Socket firstly",e[3102]="Please set the type of binary type",e[3200]="getResByUrl must be called after loadConfig",e[4e3]="An Bone cannot be added as a child to itself or one of its children (or children's children, etc.)",e[4001]="Abstract class can not be instantiated!",e[4002]="Unnamed data!",e[4003]="Nonsupport version!",e[4500]="The platform does not support {0} adapter mode and has been automatically replaced with {1} mode, please modify your code adapter logic"}(egret||(egret={}));var egret;!function(t){t.JointStyle={BEVEL:"bevel",MITER:"miter",ROUND:"round"}}(egret||(egret={}));var egret;!function(t){t.$locale_strings=t.$locale_strings||{},t.$locale_strings.zh_CN=t.$locale_strings.zh_CN||{};var e=t.$locale_strings.zh_CN;e[1001]="找不到Egret入口类: {0}。",e[1002]="Egret入口类 {0} 必须继承自egret.DisplayObject。",e[1003]="参数 {0} 不能为 null。",e[1004]="无法将对象添加为它的一个子对象(或子对象的子对象等)的子对象。",e[1005]="不能将对象添加为其自身的子对象。",e[1006]="提供的 DisplayObject 必须是调用者的子级。",e[1007]="为参数指定的索引不在范围内。",e[1008]="实例化单例出错,不允许实例化多个 {0} 对象。",e[1009]="类 {0} 不可以使用属性 {1}",e[1010]="类 {0} 属性 {1} 是只读的",e[1011]="流错误。URL: {0}",e[1012]="参数 {0} 的类型必须为 Class。",e[1013]="变量赋值为NaN,请查看代码!",e[1014]="类 {0} 常量 {1} 是只读的",e[1015]="xml not found!",e[1016]="{0}已经废弃",e[1017]="JSON文件格式不正确: {0}\ndata: {1}",e[1018]="9宫格设置错误",e[1019]="网络异常:{0}",e[1020]="无法初始化着色器",e[1021]="当前浏览器不支持webgl",e[1022]="{0} ArgumentError",e[1023]="此方法在ScrollView内不可用!",e[1025]="遇到文件尾",e[1026]="EncodingError! The code point {0} could not be encoded.",e[1027]="DecodingError",e[1028]="调用了未配置的注入规则:{0}。 请先在项目初始化里配置指定的注入规则,再调用对应单例。",e[1029]="Function.prototype.bind - what is trying to be bound is not callable",e[1033]="跨域图片不可以使用toDataURL来转换成base64",e[1034]='音乐文件解码失败:"{0}",请使用标准的转换工具重新转换下mp3。',e[1035]="Native 下暂未实现此功能!",e[1036]="声音已停止,请重新调用 Sound.play() 来播放声音!",e[1037]="非正确的blob加载!",e[1038]="XML 格式错误!",e[1039]="跨域图片不能获取像素信息!",e[1040]="hitTestPoint 不能对跨域图片进行检测! 请检查该显示对象内是否含有跨域元素",e[1041]="{0} 已废弃,请使用 {1} 代替",e[1042]="drawToTexture方法传入的区域各个参数需要为整数,否则某些浏览器绘制会出现异常",e[1043]="{0} 中存在编译错误,属性名 : {1},属性值 : {2}",e[1044]="当前的 runtime 版本不支持视频播放,请使用最新的版本",e[1045]="没有设置要加载的资源地址",e[1046]="BitmapText 找不到对应字符:{0},请检查配置文件",e[1047]="egret.localStorage.setItem保存失败,key={0}&value={1}",e[1048]="视频加载失败",e[1049]="声音在没有加载完之前不允许播放",e[1050]="ExternalInterface调用了js没有注册的方法: {0}",e[1051]="runtime 只支持 webgl 渲染模式",e[1052]="网络请求超时:{0}",e[3e3]="主题配置文件加载失败: {0}",e[3001]="找不到主题中所配置的皮肤类名: {0}",e[3002]='索引:"{0}"超出集合元素索引范围',e[3003]="在此组件中不可用,若此组件为容器类,请使用",e[3004]="addChild(){0}addElement()代替",e[3005]="addChildAt(){0}addElementAt()代替",e[3006]="removeChild(){0}removeElement()代替",e[3007]="removeChildAt(){0}removeElementAt()代替",e[3008]="setChildIndex(){0}setElementIndex()代替",e[3009]="swapChildren(){0}swapElements()代替",e[3010]="swapChildrenAt(){0}swapElementsAt()代替",e[3011]='索引:"{0}"超出可视元素索引范围',e[3012]="此方法在Scroller组件内不可用!",e[3013]="UIStage是GUI根容器,只能有一个此实例在显示列表中!",e[3014]="设置全屏模式失败",e[3100]="当前浏览器不支持WebSocket",e[3101]="请先连接WebSocket",e[3102]="请先设置type为二进制类型",e[3200]="getResByUrl 必须在 loadConfig 之后调用",e[4e3]="An Bone cannot be added as a child to itself or one of its children (or children's children, etc.)",e[4001]="Abstract class can not be instantiated!",e[4002]="Unnamed data!",e[4003]="Nonsupport version!",e[4500]="该平台不支持 {0} 适配模式,已经自动替换为 {1} 模式,请修改您的代码适配逻辑" +}(egret||(egret={}));var egret;!function(t){var e;!function(t){}(e=t.localStorage||(t.localStorage={}))}(egret||(egret={}));var egret;!function(t){var e;!function(t){function e(t){r.indexOf(t)<0&&r.push(t)}function i(t){var e=r.indexOf(t);return e>=0?(r.splice(e,1),!0):!1}var r=[];t.$pushSoundChannel=e,t.$popSoundChannel=i}(e=t.sys||(t.sys={}))}(egret||(egret={})),function(t){}(egret||(egret={}));var egret;!function(t){}(egret||(egret={}));var egret;!function(t){var e;!function(t){t.GET="GET",t.POST="POST"}(e=t.HttpMethod||(t.HttpMethod={}))}(egret||(egret={}));var egret;!function(t){}(egret||(egret={}));var egret;!function(t){var e=function(){function t(){}return t.TEXT="text",t.ARRAY_BUFFER="arraybuffer",t}();t.HttpResponseType=e,__reflect(e.prototype,"egret.HttpResponseType")}(egret||(egret={}));var egret;!function(t){}(egret||(egret={}));var egret;!function(t){var e;!function(e){var i=function(i){function r(r){var n=i.call(this)||this;return n.isStage=!1,n.$renderNode=new e.BitmapNode,n.renderBuffer=null,n.offsetX=0,n.offsetY=0,n.offsetMatrix=new t.Matrix,n.$canvasScaleX=1,n.$canvasScaleY=1,n.root=r,n.isStage=r instanceof t.Stage,n}return __extends(r,i),r.create=function(i){var r=new t.sys.DisplayList(i);try{var n=new e.RenderBuffer;r.renderBuffer=n}catch(a){return null}return r.root=i,r},r.prototype.$getRenderNode=function(){return this.$renderNode},r.prototype.setClipRect=function(t,e){t*=r.$canvasScaleX,e*=r.$canvasScaleY,this.renderBuffer.resize(t,e)},r.prototype.drawToSurface=function(){var i=0;this.$canvasScaleX=this.offsetMatrix.a=r.$canvasScaleX,this.$canvasScaleY=this.offsetMatrix.d=r.$canvasScaleY,this.isStage||this.changeSurfaceSize();var n=this.renderBuffer;if(n.clear(),i=e.systemRenderer.render(this.root,n,this.offsetMatrix),!this.isStage){var a=n.surface,o=this.$renderNode;o.drawData.length=0;var s=a.width,h=a.height;this.bitmapData?(this.bitmapData.source=a,this.bitmapData.width=s,this.bitmapData.height=h):this.bitmapData=new t.BitmapData(a),o.image=this.bitmapData,o.imageWidth=s,o.imageHeight=h,o.drawImage(0,0,s,h,-this.offsetX,-this.offsetY,s/this.$canvasScaleX,h/this.$canvasScaleY)}return i},r.prototype.changeSurfaceSize=function(){var t=(this.root,this.offsetX),e=this.offsetY,i=this.root.$getOriginalBounds(),r=this.$canvasScaleX,n=this.$canvasScaleY;this.offsetX=-i.x,this.offsetY=-i.y,this.offsetMatrix.setTo(this.offsetMatrix.a,0,0,this.offsetMatrix.d,this.offsetX,this.offsetY);var a=this.renderBuffer,o=Math.max(257,i.width*r),s=Math.max(257,i.height*n);(this.offsetX!=t||this.offsetY!=e||a.surface.width!=o||a.surface.height!=s)&&a.resize(o,s)},r.$setCanvasScale=function(e,i){r.$canvasScaleX=e,r.$canvasScaleY=i,t.nativeRender&&egret_native.nrSetCanvasScaleFactor(r.$canvasScaleFactor,e,i)},r.$canvasScaleFactor=1,r.$canvasScaleX=1,r.$canvasScaleY=1,r}(t.HashObject);e.DisplayList=i,__reflect(i.prototype,"egret.sys.DisplayList")}(e=t.sys||(t.sys={}))}(egret||(egret={}));var egret;!function(t){}(egret||(egret={}));var egret;!function(t){}(egret||(egret={}));var egret;!function(t){var e;!function(e){function i(t){for(var e=[],i=0;in;n++)r+=arguments[n]+" ";e.$logToFPS(r),console.log.apply(console,i(arguments))},t.warn=function(){for(var t=arguments.length,r="",n=0;t>n;n++)r+=arguments[n]+" ";e.$warnToFPS(r),console.warn.apply(console,i(arguments))},t.error=function(){for(var t=arguments.length,r="",n=0;t>n;n++)r+=arguments[n]+" ";e.$errorToFPS(r),console.error.apply(console,i(arguments))}),this.showFPS=!!r,this.showLog=h,!n){n=new FPS(this.stage,r,h,c,l);for(var u=a.length,p=0;u>p;p++)n.updateInfo(a[p]);a=null;for(var d=o.length,p=0;d>p;p++)n.updateWarn(o[p]);o=null;for(var f=s.length,p=0;f>p;p++)n.updateError(s[p]);s=null}},h}(t.HashObject);e.Player=r,__reflect(r.prototype,"egret.sys.Player");var n,a=[],o=[],s=[];e.$logToFPS=function(t){return n?void n.updateInfo(t):void a.push(t)},e.$warnToFPS=function(t){return n?void n.updateWarn(t):void o.push(t)},e.$errorToFPS=function(t){return n?void n.updateError(t):void s.push(t)};var h=function(){function e(e,i,r,n,a){this.showFPS=i,this.showLog=r,this.logFilter=n,this.styles=a,this.infoLines=[],this.totalTime=0,this.totalTick=0,this.lastTime=0,this.drawCalls=0,this.costRender=0,this.costTicker=0,this.infoLines=[],this.totalTime=0,this.totalTick=0,this.lastTime=0,this.drawCalls=0,this.costRender=0,this.costTicker=0,this._stage=e,this.showFPS=i,this.showLog=r,this.logFilter=n,this.styles=a,this.fpsDisplay=new t.FPSDisplay(e,i,r,n,a);var o;try{o=n?new RegExp(n):null}catch(s){t.log(s)}this.filter=function(t){return o?o.test(t):!n||0==t.indexOf(n)}}return e.prototype.update=function(e,i,r){var n=t.getTimer();if(this.totalTime+=n-this.lastTime,this.lastTime=n,this.totalTick++,this.drawCalls+=e,this.costRender+=i,this.costTicker+=r,this.totalTime>=1e3){var a=Math.min(Math.ceil(1e3*this.totalTick/this.totalTime),t.ticker.$frameRate),o=Math.round(this.drawCalls/this.totalTick),s=Math.round(this.costRender/this.totalTick),h=Math.round(this.costTicker/this.totalTick);this.fpsDisplay.update({fps:a,draw:o,costTicker:h,costRender:s}),this.totalTick=0,this.totalTime=this.totalTime%1e3,this.drawCalls=0,this.costRender=0,this.costTicker=0}},e.prototype.updateInfo=function(t){t&&this.showLog&&this.filter(t)&&this.fpsDisplay.updateInfo(t)},e.prototype.updateWarn=function(t){t&&this.showLog&&this.filter(t)&&(this.fpsDisplay.updateWarn?this.fpsDisplay.updateWarn(t):this.fpsDisplay.updateInfo("[Warning]"+t))},e.prototype.updateError=function(t){t&&this.showLog&&this.filter(t)&&(this.fpsDisplay.updateError?this.fpsDisplay.updateError(t):this.fpsDisplay.updateInfo("[Error]"+t))},e}();__reflect(h.prototype,"FPSImpl"),__global.FPS=h,t.warn=function(){console.warn.apply(console,i(arguments))},t.error=function(){console.error.apply(console,i(arguments))},t.assert=function(){console.assert.apply(console,i(arguments))},t.log=function(){console.log.apply(console,i(arguments))}}(e=t.sys||(t.sys={}))}(egret||(egret={})),function(t){if(t.nativeRender=__global.nativeRender,t.nativeRender){var e=egret_native.nrABIVersion,i=egret_native.nrMinEgretVersion,r=5;if(r>e){t.nativeRender=!1;var n="需要升级微端版本到 0.1.14 才可以开启原生渲染加速";t.sys.$warnToFPS(n),t.warn(n)}else if(e>r){t.nativeRender=!1;var n="需要升级引擎版本到 "+i+" 才可以开启原生渲染加速";t.sys.$warnToFPS(n),t.warn(n)}}}(egret||(egret={}));var egret;!function(t){var e=function(){function e(t,i,r,n){this.arrayBuffer=t,this.isInvalid=!1;var a=new Uint8Array(this.arrayBuffer,0,12);if(171!==a[0]||75!==a[1]||84!==a[2]||88!==a[3]||32!==a[4]||49!==a[5]||49!==a[6]||187!==a[7]||13!==a[8]||10!==a[9]||26!==a[10]||10!==a[11])return this.isInvalid=!0,void console.error("texture missing KTX identifier");var o=Uint32Array.BYTES_PER_ELEMENT,s=new DataView(this.arrayBuffer,12,13*o),h=s.getUint32(0,!0),c=67305985===h;return this.glType=s.getUint32(1*o,c),this.glTypeSize=s.getUint32(2*o,c),this.glFormat=s.getUint32(3*o,c),this.glInternalFormat=s.getUint32(4*o,c),this.glBaseInternalFormat=s.getUint32(5*o,c),this.pixelWidth=s.getUint32(6*o,c),this.pixelHeight=s.getUint32(7*o,c),this.pixelDepth=s.getUint32(8*o,c),this.numberOfArrayElements=s.getUint32(9*o,c),this.numberOfFaces=s.getUint32(10*o,c),this.numberOfMipmapLevels=s.getUint32(11*o,c),this.bytesOfKeyValueData=s.getUint32(12*o,c),0!==this.glType?void console.error("only compressed formats currently supported"):(this.numberOfMipmapLevels=Math.max(1,this.numberOfMipmapLevels),0===this.pixelHeight||0!==this.pixelDepth?void console.error("only 2D textures currently supported"):0!==this.numberOfArrayElements?void console.error("texture arrays not currently supported"):this.numberOfFaces!==i?void console.error("number of faces expected"+i+", but found "+this.numberOfFaces):void(this.loadType=e.COMPRESSED_2D))}return e.prototype.uploadLevels=function(t,i){this.loadType===e.COMPRESSED_2D&&this._upload2DCompressedLevels(t,i)},e.prototype._upload2DCompressedLevels=function(i,r){i.clearCompressedTextureData();for(var n=i.compressedTextureData,a=e.HEADER_LEN+this.bytesOfKeyValueData,o=this.pixelWidth,s=this.pixelHeight,h=r?this.numberOfMipmapLevels:1,c=0;h>c;c++){var l=new Int32Array(this.arrayBuffer,a,1)[0];a+=4;for(var u=[],p=0;pu?s=Math.round(c*l):o=Math.round(h*u);break;case t.StageScaleMode.SHOW_ALL:l>u?o=Math.round(h*u):s=Math.round(c*l);break;case t.StageScaleMode.FIXED_NARROW:l>u?h=Math.round(i/u):c=Math.round(r/l);break;case t.StageScaleMode.FIXED_WIDE:l>u?c=Math.round(r/l):h=Math.round(i/u);break;default:h=i,c=r}return t.Capabilities.runtimeType!=t.RuntimeType.WXGAME&&(h%2!=0&&(h+=1),c%2!=0&&(c+=1),o%2!=0&&(o+=1),s%2!=0&&(s+=1)),{stageWidth:h,stageHeight:c,displayWidth:o,displayHeight:s}},i}(t.HashObject);e.DefaultScreenAdapter=i,__reflect(i.prototype,"egret.sys.DefaultScreenAdapter",["egret.sys.IScreenAdapter"])}(e=t.sys||(t.sys={}))}(egret||(egret={}));var egret;!function(t){var e=function(){function t(){}return t.NO_SCALE="noScale",t.SHOW_ALL="showAll",t.NO_BORDER="noBorder",t.EXACT_FIT="exactFit",t.FIXED_WIDTH="fixedWidth",t.FIXED_HEIGHT="fixedHeight",t.FIXED_NARROW="fixedNarrow",t.FIXED_WIDE="fixedWide",t}();t.StageScaleMode=e,__reflect(e.prototype,"egret.StageScaleMode")}(egret||(egret={}));var egret;!function(t){var e;!function(t){function e(t,e){return console.error("empty sys.mainCanvas = "+t+", "+e),null}function i(t,e){return console.error("empty sys.createCanvas = "+t+", "+e),null}function r(t,e,i,r){console.error("empty sys.resizeContext = "+t+", "+e+", "+i+", "+r)}function n(t){return console.error("empty sys.getContextWebGL = "+t),null}function a(t){return console.error("empty sys.getContext2d = "+t),null}function o(t,e){return console.error("empty sys.createTexture = "+e),null}function s(t,e,i,r){return console.error("empty sys._createTexture = "+e+", "+i+", "+r),null}function h(t,e,i){return console.error("empty sys.drawTextureElements = "+t+", "+e+", "+i),0}function c(t,e){return console.error("empty sys.measureTextWith = "+t+", "+e),0}function l(t,e,i,r){return console.error("empty sys.createCanvasRenderBufferSurface = "+e+", "+i),null}function u(t,e,i,r){console.error("empty sys.resizeContext = "+t+", "+e+", "+i+", "+r)}t.mainCanvas=e,t.createCanvas=i,t.resizeContext=r,t.getContextWebGL=n,t.getContext2d=a,t.createTexture=o,t._createTexture=s,t.drawTextureElements=h,t.measureTextWith=c,t.createCanvasRenderBufferSurface=l,t.resizeCanvasRenderBuffer=u}(e=t.sys||(t.sys={}))}(egret||(egret={}));var egret;!function(t){var e;!function(e){e.$START_TIME=0,e.$invalidateRenderFlag=!1,e.$requestRenderingFlag=!1;var i=function(){function i(){this.playerList=[],this.callBackList=[],this.thisObjectList=[],this.$frameRate=30,this.lastTimeStamp=0,this.costEnterFrame=0,this.isPaused=!1,e.$START_TIME=Date.now(),this.frameDeltaTime=1e3/this.$frameRate,this.lastCount=this.frameInterval=Math.round(6e4/this.$frameRate)}return i.prototype.$addPlayer=function(t){-1==this.playerList.indexOf(t)&&(this.playerList=this.playerList.concat(),this.playerList.push(t))},i.prototype.$removePlayer=function(t){var e=this.playerList.indexOf(t);if(-1!==e){this.playerList=this.playerList.concat(),this.playerList.splice(e,1)}},i.prototype.$startTick=function(t,e){var i=this.getTickIndex(t,e);-1==i&&(this.concatTick(),this.callBackList.push(t),this.thisObjectList.push(e))},i.prototype.$stopTick=function(t,e){var i=this.getTickIndex(t,e);-1!=i&&(this.concatTick(),this.callBackList.splice(i,1),this.thisObjectList.splice(i,1))},i.prototype.getTickIndex=function(t,e){for(var i=this.callBackList,r=this.thisObjectList,n=i.length-1;n>=0;n--)if(i[n]==t&&r[n]==e)return n;return-1},i.prototype.concatTick=function(){this.callBackList=this.callBackList.concat(),this.thisObjectList=this.thisObjectList.concat()},i.prototype.$setFrameRate=function(t){return 0>=t?!1:this.$frameRate==t?!1:(this.$frameRate=t,t>60&&(t=60),this.frameDeltaTime=1e3/t,this.lastCount=this.frameInterval=Math.round(6e4/t),!0)},i.prototype.pause=function(){this.isPaused=!0},i.prototype.resume=function(){this.isPaused=!1},i.prototype.update=function(i){for(var r=t.getTimer(),n=this.callBackList,a=this.thisObjectList,o=n.length,s=e.$requestRenderingFlag,h=t.getTimer(),c=t.lifecycle.contexts,l=0,u=c;ld;d++)n[d].call(a[d],h)&&(s=!0);var f=t.getTimer(),g=h-this.lastTimeStamp;if(this.lastTimeStamp=h,g>=this.frameDeltaTime||i)this.lastCount=this.frameInterval;else{if(this.lastCount-=1e3,this.lastCount>0)return void(s&&this.render(!1,this.costEnterFrame+f-r));this.lastCount+=this.frameInterval}this.render(!0,this.costEnterFrame+f-r);var $=t.getTimer();this.broadcastEnterFrame();var y=t.getTimer();this.costEnterFrame=y-$},i.prototype.render=function(t,i){var r=this.playerList,n=r.length;if(0!=n){this.callLaters(),e.$invalidateRenderFlag&&(this.broadcastRender(),e.$invalidateRenderFlag=!1);for(var a=0;n>a;a++)r[a].$render(t,i);e.$requestRenderingFlag=!1}},i.prototype.broadcastEnterFrame=function(){var e=t.DisplayObject.$enterFrameCallBackList,i=e.length;if(0!=i){e=e.concat();for(var r=0;i>r;r++)e[r].dispatchEventWith(t.Event.ENTER_FRAME)}},i.prototype.broadcastRender=function(){var e=t.DisplayObject.$renderCallBackList,i=e.length;if(0!=i){e=e.concat();for(var r=0;i>r;r++)e[r].dispatchEventWith(t.Event.RENDER)}},i.prototype.callLaters=function(){var e,i,r;if(t.$callLaterFunctionList.length>0&&(e=t.$callLaterFunctionList,t.$callLaterFunctionList=[],i=t.$callLaterThisList,t.$callLaterThisList=[],r=t.$callLaterArgsList,t.$callLaterArgsList=[]),e)for(var n=e.length,a=0;n>a;a++){var o=e[a];null!=o&&o.apply(i[a],r[a])}},i.prototype.callLaterAsyncs=function(){if(t.$callAsyncFunctionList.length>0){var e=t.$callAsyncFunctionList,i=t.$callAsyncThisList,r=t.$callAsyncArgsList;t.$callAsyncFunctionList=[],t.$callAsyncThisList=[],t.$callAsyncArgsList=[];for(var n=0;n=this.maxTouches)){this.lastTouchX=e,this.lastTouchY=i;var n=this.findTarget(e,i);null==this.touchDownTarget[r]&&(this.touchDownTarget[r]=n,this.useTouchesCount++),t.TouchEvent.dispatchTouchEvent(n,t.TouchEvent.TOUCH_BEGIN,!0,!0,e,i,r,!0)}},i.prototype.onTouchMove=function(e,i,r){if(null!=this.touchDownTarget[r]&&(this.lastTouchX!=e||this.lastTouchY!=i)){this.lastTouchX=e,this.lastTouchY=i;var n=this.findTarget(e,i);t.TouchEvent.dispatchTouchEvent(n,t.TouchEvent.TOUCH_MOVE,!0,!0,e,i,r,!0)}},i.prototype.onTouchEnd=function(e,i,r){if(null!=this.touchDownTarget[r]){var n=this.findTarget(e,i),a=this.touchDownTarget[r];delete this.touchDownTarget[r],this.useTouchesCount--,t.TouchEvent.dispatchTouchEvent(n,t.TouchEvent.TOUCH_END,!0,!0,e,i,r,!1),a==n?t.TouchEvent.dispatchTouchEvent(n,t.TouchEvent.TOUCH_TAP,!0,!0,e,i,r,!1):t.TouchEvent.dispatchTouchEvent(a,t.TouchEvent.TOUCH_RELEASE_OUTSIDE,!0,!0,e,i,r,!1)}},i.prototype.findTarget=function(t,e){var i=this.stage.$hitTest(t,e);return i||(i=this.stage),i},i}(t.HashObject);e.TouchHandler=i,__reflect(i.prototype,"egret.sys.TouchHandler")}(e=t.sys||(t.sys={}))}(egret||(egret={}));var egret;!function(t){var e;!function(e){var i=function(e){function i(){var t=e.call(this)||this;return t.image=null,t.smoothing=!0,t.blendMode=null,t.alpha=0/0,t.filter=null,t.rotated=!1,t.type=1,t}return __extends(i,e),i.prototype.drawImage=function(t,e,i,r,n,a,o,s){this.drawData.push(t,e,i,r,n,a,o,s),this.renderCount++},i.prototype.cleanBeforeRender=function(){e.prototype.cleanBeforeRender.call(this),this.image=null,this.matrix=null,this.blendMode=null,this.alpha=0/0,this.filter=null},i.$updateTextureData=function(e,r,n,a,o,s,h,c,l,u,p,d,f,g,$,y){if(r){var v=t.$TextureScaleFactor;if(e.smoothing=y,e.image=r,e.imageWidth=f,e.imageHeight=g,$==t.BitmapFillMode.SCALE){var m=p/l*v,b=d/u*v;e.drawImage(n,a,o,s,m*h,b*c,m*o,b*s)}else if($==t.BitmapFillMode.CLIP){var x=Math.min(l,p),T=Math.min(u,d),_=o*v,D=s*v;i.drawClipImage(e,v,n,a,_,D,h,c,x,T)}else for(var _=o*v,D=s*v,O=0;p>O;O+=l)for(var w=0;d>w;w+=u){var x=Math.min(p-O,l),T=Math.min(d-w,u);i.drawClipImage(e,v,n,a,_,D,h,c,x,T,O,w)}}},i.$updateTextureDataWithScale9Grid=function(e,i,r,n,a,o,s,h,c,l,u,p,d,f,g,$){e.smoothing=$,e.image=i,e.imageWidth=f,e.imageHeight=g;var y=o,v=s;p-=l-o*t.$TextureScaleFactor,d-=u-s*t.$TextureScaleFactor;var m=r.x-h,b=r.y-c,x=m/t.$TextureScaleFactor,T=b/t.$TextureScaleFactor,_=r.width/t.$TextureScaleFactor,D=r.height/t.$TextureScaleFactor;0==D&&(D=1,T>=v&&T--),0==_&&(_=1,x>=y&&x--);var O=n,w=O+x,E=w+_,R=y-x-_,S=a,C=S+T,F=C+D,P=v-T-D,M=R*t.$TextureScaleFactor,j=P*t.$TextureScaleFactor;if((x+R)*t.$TextureScaleFactor>p||(T+P)*t.$TextureScaleFactor>d)return void e.drawImage(n,a,o,s,h,c,p,d);var A=h,B=A+m,N=A+(p-M),k=p-m-M,L=c,I=L+b,U=L+d-j,H=d-b-j;T>0&&(x>0&&e.drawImage(O,S,x,T,A,L,m,b),_>0&&e.drawImage(w,S,_,T,B,L,k,b),R>0&&e.drawImage(E,S,R,T,N,L,M,b)),D>0&&(x>0&&e.drawImage(O,C,x,D,A,I,m,H),_>0&&e.drawImage(w,C,_,D,B,I,k,H),R>0&&e.drawImage(E,C,R,D,N,I,M,H)),P>0&&(x>0&&e.drawImage(O,F,x,P,A,U,m,j),_>0&&e.drawImage(w,F,_,P,B,U,k,j),R>0&&e.drawImage(E,F,R,P,N,U,M,j))},i.drawClipImage=function(t,e,i,r,n,a,o,s,h,c,l,u){void 0===l&&(l=0),void 0===u&&(u=0);var p=o+n-h;p>0&&(n-=p),p=s+a-c,p>0&&(a-=p),t.drawImage(i,r,n/e,a/e,l+o,u+s,n,a)},i}(e.RenderNode);e.BitmapNode=i,__reflect(i.prototype,"egret.sys.BitmapNode")}(e=t.sys||(t.sys={}))}(egret||(egret={}));var egret;!function(t){var e;!function(e){var i=["none","round","square"],r=["bevel","miter","round"],n=function(n){function a(){var t=n.call(this)||this;return t.dirtyRender=!0,t.type=3,t}return __extends(a,n),a.prototype.beginFill=function(t,i,r){void 0===i&&(i=1);var n=new e.FillPath;if(n.fillColor=t,n.fillAlpha=i,r){var a=this.drawData.lastIndexOf(r);this.drawData.splice(a,0,n)}else this.drawData.push(n);return this.renderCount++,n},a.prototype.beginGradientFill=function(i,r,n,a,o,s){var h=new t.Matrix;o?(h.a=819.2*o.a,h.b=819.2*o.b,h.c=819.2*o.c,h.d=819.2*o.d,h.tx=o.tx,h.ty=o.ty):(h.a=100,h.d=100);var c=new e.GradientFillPath;if(c.gradientType=i,c.colors=r,c.alphas=n,c.ratios=a,c.matrix=h,s){var l=this.drawData.lastIndexOf(s);this.drawData.splice(l,0,c)}else this.drawData.push(c);return this.renderCount++,c},a.prototype.lineStyle=function(n,a,o,s,h,c,l){void 0===o&&(o=1),void 0===c&&(c=3),void 0===l&&(l=[]),-1==i.indexOf(s)&&(s="round"),-1==r.indexOf(h)&&(h="round");var u=new e.StrokePath;return u.lineWidth=n,u.lineColor=a,u.lineAlpha=o,u.caps=s||t.CapsStyle.ROUND,u.joints=h,u.miterLimit=c,u.lineDash=l,this.drawData.push(u),this.renderCount++,u},a.prototype.clear=function(){this.drawData.length=0,this.dirtyRender=!0,this.renderCount=0},a.prototype.cleanBeforeRender=function(){},a.prototype.clean=function(){this.$texture&&(t.WebGLUtils.deleteWebGLTexture(this.$texture),this.$texture=null,this.dirtyRender=!0)},a}(e.RenderNode);e.GraphicsNode=n,__reflect(n.prototype,"egret.sys.GraphicsNode")}(e=t.sys||(t.sys={}))}(egret||(egret={}));var egret;!function(t){var e;!function(t){var e=function(t){function e(){var e=t.call(this)||this;return e.type=4,e}return __extends(e,t),e.prototype.addNode=function(t){this.drawData.push(t)},e.prototype.cleanBeforeRender=function(){for(var t=this.drawData,e=t.length-1;e>=0;e--)t[e].cleanBeforeRender()},e.prototype.$getRenderCount=function(){for(var t=0,e=this.drawData,i=e.length-1;i>=0;i--)t+=e[i].$getRenderCount();return t},e}(t.RenderNode);t.GroupNode=e,__reflect(e.prototype,"egret.sys.GroupNode")}(e=t.sys||(t.sys={}))}(egret||(egret={}));var egret;!function(t){var e;!function(e){var i=function(e){function i(){var i=e.call(this)||this;return i.image=null,i.smoothing=!0,i.bounds=new t.Rectangle,i.blendMode=null,i.alpha=0/0,i.filter=null,i.rotated=!1,i.type=5,i.vertices=[],i.uvs=[],i.indices=[],i}return __extends(i,e),i.prototype.drawMesh=function(t,e,i,r,n,a,o,s){this.drawData.push(t,e,i,r,n,a,o,s),this.renderCount++},i.prototype.cleanBeforeRender=function(){e.prototype.cleanBeforeRender.call(this),this.image=null,this.matrix=null},i}(e.RenderNode);e.MeshNode=i,__reflect(i.prototype,"egret.sys.MeshNode")}(e=t.sys||(t.sys={}))}(egret||(egret={}));var egret;!function(t){var e;!function(t){var e=function(t){function e(){var e=t.call(this)||this;return e.image=null,e.smoothing=!0,e.rotated=!1,e.type=6,e}return __extends(e,t),e.prototype.drawImage=function(t,e,i,r,n,a,o,s){var h=this;h.sourceX=t,h.sourceY=e,h.sourceW=i,h.sourceH=r,h.drawX=n,h.drawY=a,h.drawW=o,h.drawH=s,h.renderCount=1},e.prototype.cleanBeforeRender=function(){t.prototype.cleanBeforeRender.call(this),this.image=null},e}(t.RenderNode);t.NormalBitmapNode=e,__reflect(e.prototype,"egret.sys.NormalBitmapNode")}(e=t.sys||(t.sys={}))}(egret||(egret={}));var egret;!function(t){var e=function(e){function i(i){var r=e.call(this,i)||this;return r._verticesDirty=!0,r._bounds=new t.Rectangle,r.$renderNode=new t.sys.MeshNode,r}return __extends(i,e),i.prototype.createNativeDisplayObject=function(){this.$nativeDisplayObject=new egret_native.NativeDisplayObject(12)},i.prototype.setBitmapDataToWasm=function(t){this.$nativeDisplayObject.setBitmapDataToMesh(t)},i.prototype.$updateRenderNode=function(){var e=this.$bitmapData;if(e){var i=(t.$TextureScaleFactor,this.$renderNode);i.smoothing=this.$smoothing,i.image=e,i.imageWidth=this.$sourceWidth,i.imageHeight=this.$sourceHeight;var r=isNaN(this.$explicitBitmapWidth)?this.$textureWidth:this.$explicitBitmapWidth,n=isNaN(this.$explicitBitmapHeight)?this.$textureHeight:this.$explicitBitmapHeight,a=r/this.$textureWidth,o=n/this.$textureHeight,s=this.$bitmapWidth,h=this.$bitmapHeight;i.drawMesh(this.$bitmapX,this.$bitmapY,s,h,this.$offsetX*a,this.$offsetY*o,a*s,o*h)}},i.prototype.$updateVertices=function(){var e=this;if(e._verticesDirty=!0,e.$renderDirty=!0,t.nativeRender){var i=this.$renderNode;this.$nativeDisplayObject.setDataToMesh(i.vertices,i.indices,i.uvs)}else{var r=e.$parent;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp());var n=e.$maskedObject;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp())}},i.prototype.$measureContentBounds=function(t){if(this._verticesDirty){this._verticesDirty=!1;var e=this.$renderNode,i=e.vertices;if(i.length){this._bounds.setTo(Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);for(var r=0,n=i.length;n>r;r+=2){var a=i[r],o=i[r+1];this._bounds.x>a&&(this._bounds.x=a),this._bounds.widtho&&(this._bounds.y=o),this._bounds.height>16,r=t>>8&255,n=255&t;return"rgba("+i+","+r+","+n+","+e+")"}function r(e,r,n,a,o,s){var h;h=r==t.GradientType.LINEAR?e.createLinearGradient(-1,0,1,0):e.createRadialGradient(0,0,0,0,0,1);for(var c=n.length,l=0;c>l;l++)h.addColorStop(o[l]/255,i(n[l],a[l]));return h}function n(t,e,i){void 0===i&&(i=0);for(var r=0,n=e.length;n>r;r++)t[r+i]=e[r]}function a(t,e,i,r){for(var n=r[0],a=r[1],o=r[2],s=r[3],h=r[4],c=r[5],l=r[6],u=r[7],p=r[8],d=r[9],f=r[10],g=r[11],$=r[12],y=r[13],v=r[14],m=r[15],b=r[16],x=r[17],T=r[18],_=r[19],D=0,O=e*i*4;O>D;D+=4){var w=t[D+0],E=t[D+1],R=t[D+2],S=t[D+3];t[D+0]=n*w+a*E+o*R+s*S+h,t[D+1]=c*w+l*E+u*R+p*S+d,t[D+2]=f*w+g*E+$*R+y*S+v,t[D+3]=m*w+b*E+x*R+T*S+_}}function o(t,e,i,r,n){s(t,e,i,r),h(t,e,i,n)}function s(t,e,i,r){var a;a=_?new Uint8ClampedArray(4*e):new Array(4*e);for(var o=4*e,s=2*r+1,h=0;i>h;h++){for(var c=h*o,l=0,u=0,p=0,d=0,f=0,g=0,$=4*-r,y=4*r+4;y>$;$+=4){var v=c+$;c>v||v>=c+o||(f=t[v+3],l+=t[v+0]*f,u+=t[v+1]*f,p+=t[v+2]*f,d+=f)}for(var $=c,y=c+o,m=0,b=$-4*r,x=$+4*(r+1);y>$;$+=4,m+=4,x+=4,b+=4)0===d?(a[m+0]=0,a[m+1]=0,a[m+2]=0,a[m+3]=0):(a[m+0]=l/d,a[m+1]=u/d,a[m+2]=p/d,a[m+3]=d/s),f=t[x+3],g=t[b+3],f||0==f?g||0==g?(l+=t[x+0]*f-t[b+0]*g,u+=t[x+1]*f-t[b+1]*g,p+=t[x+2]*f-t[b+2]*g,d+=f-g):(l+=t[x+0]*f,u+=t[x+1]*f,p+=t[x+2]*f,d+=f):(g||0==g)&&(l+=-t[b+0]*g,u+=-t[b+1]*g,p+=-t[b+2]*g,d+=-g);_?t.set(a,c):n(t,a,c)}}function h(t,e,i,r){var n;n=_?new Uint8ClampedArray(4*i):new Array(4*i);for(var a=4*e,o=2*r+1,s=0;e>s;s++){for(var h=4*s,c=0,l=0,u=0,p=0,d=0,f=0,g=-r*a,$=r*a+a;$>g;g+=a){var y=h+g;h>y||y>=h+i*a||(d=t[y+3],c+=t[y+0]*d,l+=t[y+1]*d,u+=t[y+2]*d,p+=d)}for(var g=h,$=h+i*a,v=0,m=h-r*a,b=h+(r+1)*a;$>g;g+=a,v+=4,b+=a,m+=a)0===p?(n[v+0]=0,n[v+1]=0,n[v+2]=0,n[v+3]=0):(n[v+0]=c/p,n[v+1]=l/p,n[v+2]=u/p,n[v+3]=p/o),d=t[b+3],f=t[m+3],d||0==d?f||0==f?(c+=t[b+0]*d-t[m+0]*f,l+=t[b+1]*d-t[m+1]*f,u+=t[b+2]*d-t[m+2]*f,p+=d-f):(c+=t[b+0]*d,l+=t[b+1]*d,u+=t[b+2]*d,p+=d):(f||0==f)&&(c+=-t[m+0]*f,l+=-t[m+1]*f,u+=-t[m+2]*f,p+=-f);for(var x=4*s,$=x+i*a,T=0;$>x;x+=a,T+=4)t[x+0]=n[T+0],t[x+1]=n[T+1],t[x+2]=n[T+2],t[x+3]=n[T+3]}}function c(t,e,i,r,a,s,h,c,f){var g=l(t,r);u(g,e,i,h,c),o(g,e,i,a,s),p(g,f),d(g,t),t.set(g),_?t.set(g):n(t,g)}function l(t,e){e||(e=[0,0,0,0]);var i;_?i=new Uint8ClampedArray(t):(i=new Array(t.length),n(i,t));for(var r=e[0],a=e[1],o=e[2],s=e[3],h=0,c=i.length;c>h;h+=4){var l=i[h+3];i[h+0]=r*l,i[h+1]=a*l,i[h+2]=o*l,i[h+3]=s*l}return i}function u(t,e,i,r,a){var o,s,h=Math.sin(r)*a|0,c=Math.cos(r)*a|0;if(_){o=new Int32Array(t.buffer),s=new Int32Array(o.length);for(var l=0;i>l;l++){var u=l+h;if(!(0>u||u>i))for(var p=0;e>p;p++){var d=p+c;0>d||d>e||(s[u*e+d]=o[l*e+p])}}o.set(s)}else{o=t,s=new Array(o.length);for(var l=0;i>l;l++){var u=l+h;if(!(0>u||u>i))for(var p=0;e>p;p++){var d=p+c;0>d||d>e||(s[4*(u*e+d)+0]=o[4*(l*e+p)+0],s[4*(u*e+d)+1]=o[4*(l*e+p)+1],s[4*(u*e+d)+2]=o[4*(l*e+p)+2],s[4*(u*e+d)+3]=o[4*(l*e+p)+3])}}n(o,s)}}function p(t,e){for(var i=0,r=t.length;r>i;i+=4)t[i+3]*=e}function d(t,e){for(var i=0,r=t.length;r>i;i+=4){var n=t[i+0],a=t[i+1],o=t[i+2],s=t[i+3]/255,h=e[i+0],c=e[i+1],l=e[i+2],u=e[i+3]/255;t[i+0]=h+n*(1-u),t[i+1]=c+a*(1-u),t[i+2]=l+o*(1-u),t[i+3]=255*(u+s*(1-u))}}function f(t,e,i){return t*(1-i)+e*i}function g(t,e,i,r,a,o,s,h,c,l,u,p){var d;d=_?new Uint8ClampedArray(t.length):new Array(t.length);for(var g,$,y=r[3],v=0,m=0,b=h*Math.cos(s),x=h*Math.sin(s),T=7,D=12,O=3.141592653589793,w=a/T,E=o/T,R=0;e>R;R++)for(var S=0;i>S;S++){for(var C=0,F=S*e*4+4*R,P=0,M=0,j=t[F+0]/255,A=t[F+1]/255,B=t[F+2]/255,N=t[F+3]/255,k=0;2*O>=k;k+=2*O/D){g=Math.cos(k+C),$=Math.sin(k+C);for(var L=0;T>L;L++){v=L*w*g,m=L*E*$;var I=Math.round(R+v-b),U=Math.round(S+m-x),H=0;if(I>=e||0>I||0>U||U>=i)H=0;else{var X=U*e*4+4*I;H=t[X+3]/255}P+=(T-L)*H,M+=T-L}}N=Math.max(N,1e-4);var Y=P/M*c*y*(1-l)*Math.max(Math.min(p,u),1-N),W=(M-P)/M*c*y*l*N;N=Math.max(N*u*(1-p),1e-4);var G=W/(W+N),z=f(j,r[0],G),V=f(A,r[1],G),q=f(B,r[2],G),K=Y/(W+N+Y),J=f(z,r[0],K),Q=f(V,r[1],K),Z=f(q,r[2],K),te=Math.min(N+Y+W,1); +d[F+0]=255*J,d[F+1]=255*Q,d[F+2]=255*Z,d[F+3]=255*te}_?t.set(d):n(t,d)}var $=["source-over","lighter","destination-out"],y="source-over",v="#000000",m={none:"butt",square:"square",round:"round"},b=[],x=[],T=function(){function n(){this.nestLevel=0,this.renderingMask=!1}return n.prototype.render=function(e,i,r,n){this.nestLevel++;var a=i.context;a.transform(r.a,r.b,r.c,r.d,0,0);var o=this.drawDisplayObject(e,a,r.tx,r.ty,!0),s=t.Matrix.create();if(r.$invertInto(s),a.transform(s.a,s.b,s.c,s.d,0,0),t.Matrix.release(s),this.nestLevel--,0===this.nestLevel){b.length>6&&(b.length=6);for(var h=b.length,c=0;h>c;c++)b[c].resize(0,0)}return o},n.prototype.drawDisplayObject=function(e,i,r,n,a){var o,s=0,h=e.$displayList;if(h&&!a?((e.$cacheDirty||e.$renderDirty||h.$canvasScaleX!=t.sys.DisplayList.$canvasScaleX||h.$canvasScaleY!=t.sys.DisplayList.$canvasScaleY)&&(s+=h.drawToSurface()),o=h.$renderNode):o=e.$renderDirty?e.$getRenderNode():e.$renderNode,e.$cacheDirty=!1,o){switch(s++,i.$offsetX=r,i.$offsetY=n,o.type){case 1:this.renderBitmap(o,i);break;case 2:this.renderText(o,i);break;case 3:this.renderGraphics(o,i);break;case 4:this.renderGroup(o,i);break;case 5:this.renderMesh(o,i);break;case 6:this.renderNormalBitmap(o,i)}i.$offsetX=0,i.$offsetY=0}if(h&&!a)return s;var c=e.$children;if(c)for(var l=c.length,u=0;l>u;u++){var p=c[u],d=void 0,f=void 0;if(p.$useTranslate){var g=p.$getMatrix();d=r+p.$x,f=n+p.$y,i.save(),i.transform(g.a,g.b,g.c,g.d,d,f),d=-p.$anchorOffsetX,f=-p.$anchorOffsetY}else d=r+p.$x-p.$anchorOffsetX,f=n+p.$y-p.$anchorOffsetY;var $=void 0;switch(1!=p.$alpha&&($=i.globalAlpha,i.globalAlpha*=p.$alpha),p.$renderMode){case 1:break;case 2:s+=this.drawWithFilter(p,i,d,f);break;case 3:s+=this.drawWithClip(p,i,d,f);break;case 4:s+=this.drawWithScrollRect(p,i,d,f);break;default:s+=this.drawDisplayObject(p,i,d,f)}p.$useTranslate?i.restore():$&&(i.globalAlpha=$)}return s},n.prototype.drawWithFilter=function(t,e,i,r){if(t.$children&&0==t.$children.length&&(!t.$renderNode||0==t.$renderNode.$getRenderCount()))return 0;var n,s=0,h=t.$filters,l=h.length,u=0!==t.$blendMode;u&&(n=$[t.$blendMode],n||(n=y));var p=t.$getOriginalBounds(),d=p.x,f=p.y,v=p.width,m=p.height;if(0>=v||0>=m)return s;var b=this.createRenderBuffer(v-d,m-f,!0),T=b.context;if(s+=t.$mask?this.drawWithClip(t,T,-d,-f):t.$scrollRect||t.$maskRect?this.drawWithScrollRect(t,T,-d,-f):this.drawDisplayObject(t,T,-d,-f),s>0){u&&(e.globalCompositeOperation=n),s++;for(var _=T.getImageData(0,0,b.surface.width,b.surface.height),D=0;l>D;D++){var O=h[D];if("colorTransform"==O.type)a(_.data,b.surface.width,b.surface.height,O.$matrix);else if("blur"==O.type)o(_.data,b.surface.width,b.surface.height,O.$blurX,O.$blurY);else if("glow"==O.type){var w=O.$red,E=O.$green,R=O.$blue,S=O.$alpha;O.$inner||O.$knockout||O.$hideObject?g(_.data,b.surface.width,b.surface.height,[w/255,E/255,R/255,S],O.$blurX,O.$blurY,O.$angle?O.$angle/180*Math.PI:0,O.$distance||0,O.$strength,O.$inner?1:0,O.$knockout?0:1,O.$hideObject?1:0):c(_.data,b.surface.width,b.surface.height,[w/255,E/255,R/255,S],O.$blurX,O.$blurY,O.$angle?O.$angle/180*Math.PI:0,O.$distance||0,O.$strength)}else"custom"==O.type}T.putImageData(_,0,0),e.drawImage(b.surface,i+d,r+f),u&&(e.globalCompositeOperation=y)}return x.push(b),s},n.prototype.drawWithClip=function(e,i,r,n){var a,o=0,s=0!==e.$blendMode;s&&(a=$[e.$blendMode],a||(a=y));var h=e.$scrollRect?e.$scrollRect:e.$maskRect,c=e.$mask;if(c){var l=c.$getMatrix();if(0==l.a&&0==l.b||0==l.c&&0==l.d)return o}if(!(c||e.$children&&0!=e.$children.length))return h&&(i.save(),i.beginPath(),i.rect(h.x+r,h.y+n,h.width,h.height),i.clip()),s&&(i.globalCompositeOperation=a),o+=this.drawDisplayObject(e,i,r,n),s&&(i.globalCompositeOperation=y),h&&i.restore(),o;if(c){var u=c.$getRenderNode();if((!c.$children||0==c.$children.length)&&u&&3==u.type&&1==u.drawData.length&&1==u.drawData[0].type&&1==u.drawData[0].fillAlpha){this.renderingMask=!0,i.save();var p=t.Matrix.create();p.copyFrom(c.$getConcatenatedMatrix()),c.$getConcatenatedMatrixAt(e,p),p.prepend(1,0,0,1,r,n),i.transform(p.a,p.b,p.c,p.d,p.tx,p.ty);var d=this.drawDisplayObject(c,i,0,0);return this.renderingMask=!1,p.$invertInto(p),i.transform(p.a,p.b,p.c,p.d,p.tx,p.ty),t.Matrix.release(p),h&&(i.beginPath(),i.rect(h.x+r,h.y+n,h.width,h.height),i.clip()),d+=this.drawDisplayObject(e,i,r,n),i.restore(),d}}var f=e.$getOriginalBounds(),g=f.x,v=f.y,m=f.width,x=f.height;if(0>=m||0>=x)return o;var T=this.createRenderBuffer(m,x),_=T.context;if(!_)return o+=this.drawDisplayObject(e,i,r,n);if(o+=this.drawDisplayObject(e,_,-g,-v),c){var u=c.$getRenderNode(),p=t.Matrix.create();if(p.copyFrom(c.$getConcatenatedMatrix()),c.$getConcatenatedMatrixAt(e,p),p.translate(-g,-v),u&&1==u.$getRenderCount()||c.$displayList)_.globalCompositeOperation="destination-in",_.save(),_.setTransform(p.a,p.b,p.c,p.d,p.tx,p.ty),o+=this.drawDisplayObject(c,_,0,0),_.restore();else{var D=this.createRenderBuffer(m,x),O=D.context;O.setTransform(p.a,p.b,p.c,p.d,p.tx,p.ty),o+=this.drawDisplayObject(c,O,0,0),_.globalCompositeOperation="destination-in",_.drawImage(D.surface,0,0),b.push(D)}t.Matrix.release(p)}return o>0&&(o++,s&&(i.globalCompositeOperation=a),h&&(i.save(),i.beginPath(),i.rect(h.x+r,h.y+n,h.width,h.height),i.clip()),i.drawImage(T.surface,r+g,n+v),h&&i.restore(),s&&(i.globalCompositeOperation=y)),b.push(T),o},n.prototype.drawWithScrollRect=function(t,e,i,r){var n=0,a=t.$scrollRect?t.$scrollRect:t.$maskRect;return a.isEmpty()?n:(t.$scrollRect&&(i-=a.x,r-=a.y),e.save(),e.beginPath(),e.rect(a.x+i,a.y+r,a.width,a.height),e.clip(),n+=this.drawDisplayObject(t,e,i,r),e.restore(),n)},n.prototype.drawNodeToBuffer=function(t,e,i,r){var n=e.context;n.setTransform(i.a,i.b,i.c,i.d,i.tx,i.ty),this.renderNode(t,n,r)},n.prototype.drawDisplayToBuffer=function(t,e,i){var r=e.context;i&&r.setTransform(i.a,i.b,i.c,i.d,i.tx,i.ty);var n;n=t.$renderDirty?t.$getRenderNode():t.$renderNode;var a=0;if(n)switch(a++,n.type){case 1:this.renderBitmap(n,r);break;case 2:this.renderText(n,r);break;case 3:this.renderGraphics(n,r);break;case 4:this.renderGroup(n,r);break;case 5:this.renderMesh(n,r);break;case 6:this.renderNormalBitmap(n,r)}var o=t.$children;if(o)for(var s=o.length,h=0;s>h;h++){var c=o[h];switch(c.$renderMode){case 1:break;case 2:a+=this.drawWithFilter(c,r,0,0);break;case 3:a+=this.drawWithClip(c,r,0,0);break;case 4:a+=this.drawWithScrollRect(c,r,0,0);break;default:a+=this.drawDisplayObject(c,r,0,0)}}return a},n.prototype.renderNode=function(t,e,i){var r=0;switch(t.type){case 1:r=this.renderBitmap(t,e);break;case 2:r=1,this.renderText(t,e);break;case 3:r=this.renderGraphics(t,e,i);break;case 4:r=this.renderGroup(t,e);break;case 5:r=this.renderMesh(t,e);break;case 6:r+=this.renderNormalBitmap(t,e)}return r},n.prototype.renderNormalBitmap=function(t,e){var i=t.image;if(!i||!i.source)return 0;if(e.$imageSmoothingEnabled!=t.smoothing&&(e.imageSmoothingEnabled=t.smoothing,e.$imageSmoothingEnabled=t.smoothing),t.rotated){var r=t.sourceX,n=t.sourceY,a=t.sourceW,o=t.sourceH,s=t.drawX,h=t.drawY,c=t.drawW,l=t.drawH;e.save(),e.transform(0,-1,1,0,0,l),e.drawImage(i.source,r,n,o,a,s+e.$offsetX,h+e.$offsetY,l,c),e.restore()}else e.drawImage(i.source,t.sourceX,t.sourceY,t.sourceW,t.sourceH,t.drawX+e.$offsetX,t.drawY+e.$offsetY,t.drawW,t.drawH);return 1},n.prototype.renderBitmap=function(t,e){var i=t.image;if(!i||!i.source)return 0;e.$imageSmoothingEnabled!=t.smoothing&&(e.imageSmoothingEnabled=t.smoothing,e.$imageSmoothingEnabled=t.smoothing);var r,n,o=t.drawData,s=o.length,h=0,c=t.matrix,l=t.blendMode,u=t.alpha,p=!1;c&&(e.save(),p=!0,(0!=e.$offsetX||0!=e.$offsetY)&&(e.translate(e.$offsetX,e.$offsetY),r=e.$offsetX,n=e.$offsetY,e.$offsetX=e.$offsetY=0),e.transform(c.a,c.b,c.c,c.d,c.tx,c.ty)),l&&(e.globalCompositeOperation=$[l]);var d;u==u&&(d=e.globalAlpha,e.globalAlpha*=u);var f=0,g=t.filter;if(g&&8==s){var v=o[0],m=o[1],x=o[2],T=o[3],_=o[4],D=o[5],O=o[6],w=o[7];t.rotated&&(x=o[3],T=o[2],O=o[7],w=o[6]);var E=this.createRenderBuffer(O,w),R=E.context;f++,t.rotated&&e.transform(0,-1,1,0,0,O),R.drawImage(i.source,v,m,x,T,0,0,O,w),f++;var S=R.getImageData(0,0,O,w);a(S.data,O,w,g.$matrix),R.putImageData(S,0,0),e.drawImage(E.surface,0,0,O,w,_+e.$offsetX,D+e.$offsetY,O,w),b.push(E)}else for(;s>h;)if(f++,t.rotated){var v=o[h++],m=o[h++],T=o[h++],x=o[h++],C=o[h++],F=o[h++],w=o[h++],O=o[h++];e.save(),e.transform(0,-1,1,0,0,O),e.drawImage(i.source,v,m,x,T,C+e.$offsetX,F+e.$offsetY,O,w),e.restore()}else e.drawImage(i.source,o[h++],o[h++],o[h++],o[h++],o[h++]+e.$offsetX,o[h++]+e.$offsetY,o[h++],o[h++]);return p?e.restore():(l&&(e.globalCompositeOperation=y),u==u&&(e.globalAlpha=d)),r&&(e.$offsetX=r),n&&(e.$offsetY=n),f},n.prototype.renderMesh=function(t,e){return 0},n.prototype.renderText=function(i,r){r.textAlign="left",r.textBaseline="middle",r.lineJoin="round";for(var n=i.drawData,a=n.length,o=0;a>o;){var s=n[o++],h=n[o++],c=n[o++],l=n[o++];r.font=e(i,l);var u=null==l.textColor?i.textColor:l.textColor,p=null==l.strokeColor?i.strokeColor:l.strokeColor,d=null==l.stroke?i.stroke:l.stroke;r.fillStyle=t.toColorString(u),r.strokeStyle=t.toColorString(p),d&&(r.lineWidth=2*d,r.strokeText(c,s+r.$offsetX,h+r.$offsetY)),r.fillText(c,s+r.$offsetX,h+r.$offsetY)}},n.prototype.renderGraphics=function(t,e,n){var a=t.drawData,o=a.length;n=!!n;for(var s=0;o>s;s++){var h=a[s];switch(h.type){case 1:var c=h;e.fillStyle=n?v:i(c.fillColor,c.fillAlpha),this.renderPath(h,e),this.renderingMask?e.clip():e.fill();break;case 2:var l=h;e.fillStyle=n?v:r(e,l.gradientType,l.colors,l.alphas,l.ratios,l.matrix),e.save();var u=l.matrix;this.renderPath(h,e),e.transform(u.a,u.b,u.c,u.d,u.tx,u.ty),e.fill(),e.restore();break;case 3:var p=h,d=p.lineWidth;e.lineWidth=d,e.strokeStyle=n?v:i(p.lineColor,p.lineAlpha),e.lineCap=m[p.caps],e.lineJoin=p.joints,e.miterLimit=p.miterLimit,e.setLineDash&&e.setLineDash(p.lineDash);var f=1===d||3===d;f&&e.translate(.5,.5),this.renderPath(h,e),e.stroke(),f&&e.translate(-.5,-.5)}}return 0==o?0:1},n.prototype.renderPath=function(t,e){e.beginPath();for(var i=t.$data,r=t.$commands,n=r.length,a=0,o=0;n>o;o++){var s=r[o];switch(s){case 4:e.bezierCurveTo(i[a++]+e.$offsetX,i[a++]+e.$offsetY,i[a++]+e.$offsetX,i[a++]+e.$offsetY,i[a++]+e.$offsetX,i[a++]+e.$offsetY);break;case 3:e.quadraticCurveTo(i[a++]+e.$offsetX,i[a++]+e.$offsetY,i[a++]+e.$offsetX,i[a++]+e.$offsetY);break;case 2:e.lineTo(i[a++]+e.$offsetX,i[a++]+e.$offsetY);break;case 1:e.moveTo(i[a++]+e.$offsetX,i[a++]+e.$offsetY)}}},n.prototype.renderGroup=function(t,e){var i,r,n=t.matrix,a=!1;n&&(e.save(),a=!0,(0!=e.$offsetX||0!=e.$offsetY)&&(e.translate(e.$offsetX,e.$offsetY),i=e.$offsetX,r=e.$offsetY,e.$offsetX=e.$offsetY=0),e.transform(n.a,n.b,n.c,n.d,n.tx,n.ty));for(var o=0,s=t.drawData,h=s.length,c=0;h>c;c++){var l=s[c];o+=this.renderNode(l,e)}return a&&e.restore(),i&&(e.$offsetX=i),r&&(e.$offsetY=r),o},n.prototype.createRenderBuffer=function(e,i,r){var n=r?x.pop():b.pop();return n?n.resize(e,i,!0):n=new t.sys.CanvasRenderBuffer(e,i),n},n}();t.CanvasRenderer=T,__reflect(T.prototype,"egret.CanvasRenderer"),t.getFontString=e,t.getRGBAString=i;var _=!1;try{_=void 0!==typeof Uint8ClampedArray}catch(D){}}(egret||(egret={}));var egret;!function(t){t.DeviceOrientation=null}(egret||(egret={}));var egret;!function(t){}(egret||(egret={}));var egret;!function(t){}(egret||(egret={}));var egret;!function(t){var e;!function(t){t.WEB="web",t.NATIVE="native",t.RUNTIME2="runtime2",t.MYGAME="mygame",t.WXGAME="wxgame",t.BAIDUGAME="baidugame",t.QGAME="qgame",t.OPPOGAME="oppogame",t.QQGAME="qqgame",t.VIVOGAME="vivogame"}(e=t.RuntimeType||(t.RuntimeType={}));var i=function(){function e(){}return e.language="zh-CN",e.os="Unknown",e.runtimeType=t.RuntimeType.WEB,e.engineVersion="5.2.31",e.renderMode="Unknown",e.boundingClientWidth=0,e.boundingClientHeight=0,e}();t.Capabilities=i,__reflect(i.prototype,"egret.Capabilities")}(egret||(egret={}));var egret;!function(t){var e=function(e){function i(){var i=e.call(this)||this;i.$renderBuffer=new t.sys.RenderBuffer;var r=new t.BitmapData(i.$renderBuffer.surface);return r.$deleteSource=!1,i._setBitmapData(r),i}return __extends(i,e),i.prototype.drawToTexture=function(e,i,r){if(void 0===r&&(r=1),i&&(0==i.width||0==i.height))return!1;var n=i||e.$getOriginalBounds();if(0==n.width||0==n.height)return!1;r/=t.$TextureScaleFactor;var a=(n.x+n.width)*r,o=(n.y+n.height)*r;i&&(a=n.width*r,o=n.height*r);var s=this.$renderBuffer;if(!s)return!1;if(s.resize(a,o),this.$bitmapData.width=a,this.$bitmapData.height=o,t.nativeRender){egret_native.activateBuffer(this.$renderBuffer);var h=!1,c=0,l=0,u=0,p=0;i&&(h=!0,c=i.x,l=i.y,u=i.width,p=i.height),egret_native.updateNativeRender(),egret_native.nrRenderDisplayObject(e.$nativeDisplayObject.id,r,h,c,l,u,p),egret_native.activateBuffer(null)}else{var d=t.Matrix.create();d.identity(),d.scale(r,r),i&&d.translate(-i.x,-i.y),t.sys.systemRenderer.render(e,s,d,!0),t.Matrix.release(d)}return this.$initData(0,0,a,o,0,0,a,o,a,o),!0},i.prototype.getPixel32=function(e,i){var r;if(this.$renderBuffer){var n=t.$TextureScaleFactor;e=Math.round(e/n),i=Math.round(i/n),r=this.$renderBuffer.getPixels(e,i,1,1)}return r},i.prototype.dispose=function(){e.prototype.dispose.call(this),this.$renderBuffer=null},i}(t.Texture);t.RenderTexture=e,__reflect(e.prototype,"egret.RenderTexture")}(egret||(egret={}));var egret;!function(t){function e(t,e){r[t]=e}function i(t){return r[t]}var r={};t.registerImplementation=e,t.getImplementation=i}(egret||(egret={}));var egret;!function(t){var e=function(e){function i(){var i=e.call(this)||this;return i.$graphics=new t.Graphics,i.$graphics.$setTarget(i),i}return __extends(i,e),i.prototype.createNativeDisplayObject=function(){this.$nativeDisplayObject=new egret_native.NativeDisplayObject(8)},Object.defineProperty(i.prototype,"graphics",{get:function(){return this.$graphics},enumerable:!0,configurable:!0}),i.prototype.$measureContentBounds=function(t){this.$graphics.$measureContentBounds(t)},i.prototype.$hitTest=function(t,i){var r=e.prototype.$hitTest.call(this,t,i);return r==this&&(r=this.$graphics.$hitTest(t,i)),r},i.prototype.$onRemoveFromStage=function(){e.prototype.$onRemoveFromStage.call(this),this.$graphics&&this.$graphics.$onRemoveFromStage()},i}(t.DisplayObject);t.Shape=e,__reflect(e.prototype,"egret.Shape")}(egret||(egret={}));var egret;!function(t){var e=function(t){function e(e,i){var r=t.call(this,e)||this;return r.firstCharHeight=0,"string"==typeof i?r.charList=r.parseConfig(i):i&&i.hasOwnProperty("frames")?r.charList=i.frames:r.charList={},r}return __extends(e,t),e.prototype.getTexture=function(t){var e=this._textureMap[t];if(!e){var i=this.charList[t];if(!i)return null;e=this.createTexture(t,i.x,i.y,i.w,i.h,i.offX,i.offY,i.sourceW,i.sourceH),this._textureMap[t]=e}return e},e.prototype.getConfig=function(t,e){return this.charList[t]?this.charList[t][e]:0},e.prototype._getFirstCharHeight=function(){if(0==this.firstCharHeight)for(var t in this.charList){var e=this.charList[t];if(e){var i=e.sourceH;if(void 0===i){var r=e.h;void 0===r&&(r=0);var n=e.offY;void 0===n&&(n=0),i=r+n}if(0>=i)continue;this.firstCharHeight=i;break}}return this.firstCharHeight},e.prototype.parseConfig=function(t){t=t.split("\r\n").join("\n");for(var e=t.split("\n"),i=this.getConfigByKey(e[3],"count"),r={},n=4;4+i>n;n++){var a=e[n],o=String.fromCharCode(this.getConfigByKey(a,"id")),s={};r[o]=s,s.x=this.getConfigByKey(a,"x"),s.y=this.getConfigByKey(a,"y"),s.w=this.getConfigByKey(a,"width"),s.h=this.getConfigByKey(a,"height"),s.offX=this.getConfigByKey(a,"xoffset"),s.offY=this.getConfigByKey(a,"yoffset"),s.xadvance=this.getConfigByKey(a,"xadvance")}return r},e.prototype.getConfigByKey=function(t,e){for(var i=t.split(" "),r=0,n=i.length;n>r;r++){var a=i[r];if(e==a.substring(0,e.length)){var o=a.substring(e.length+1);return parseInt(o)}}return 0},e}(t.SpriteSheet);t.BitmapFont=e,__reflect(e.prototype,"egret.BitmapFont")}(egret||(egret={}));var egret;!function(t){var e=function(e){function i(){var i=e.call(this)||this;return i.$smoothing=t.Bitmap.defaultSmoothing,i.$text="",i.$textFieldWidth=0/0,i.$textLinesChanged=!1,i.$textFieldHeight=0/0,i.$font=null,i.$fontStringChanged=!1,i.$lineSpacing=0,i.$letterSpacing=0,i.$textAlign=t.HorizontalAlign.LEFT,i.$verticalAlign=t.VerticalAlign.TOP,i.$textWidth=0/0,i.$textHeight=0/0,i.$textOffsetX=0,i.$textOffsetY=0,i.$textStartX=0,i.$textStartY=0,i.textLines=[],i.$lineHeights=[],t.nativeRender||(i.$renderNode=new t.sys.BitmapNode),i}return __extends(i,e),i.prototype.createNativeDisplayObject=function(){this.$nativeDisplayObject=new egret_native.NativeDisplayObject(11)},Object.defineProperty(i.prototype,"smoothing",{get:function(){return this.$smoothing},set:function(e){var i=this;if(e!=i.$smoothing&&(i.$smoothing=e,!t.nativeRender)){var r=i.$parent;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp());var n=i.$maskedObject;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp())}},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"text",{get:function(){return this.$text},set:function(t){this.$setText(t)},enumerable:!0,configurable:!0}),i.prototype.$setText=function(t){t=null==t?"":String(t);var e=this;return t==e.$text?!1:(e.$text=t,e.$invalidateContentBounds(),!0)},i.prototype.$getWidth=function(){var t=this,e=t.$textFieldWidth;return isNaN(e)?t.$getContentBounds().width:e},i.prototype.$setWidth=function(t){var e=this;return 0>t||t==e.$textFieldWidth?!1:(e.$textFieldWidth=t,e.$invalidateContentBounds(),!0)},i.prototype.$invalidateContentBounds=function(){this.$renderDirty=!0,this.$textLinesChanged=!0,this.$updateRenderNode()},i.prototype.$getHeight=function(){var t=this,e=t.$textFieldHeight;return isNaN(e)?t.$getContentBounds().height:e},i.prototype.$setHeight=function(t){var e=this;return 0>t||t==e.$textFieldHeight?!1:(e.$textFieldHeight=t,e.$invalidateContentBounds(),!0)},Object.defineProperty(i.prototype,"font",{get:function(){return this.$font},set:function(t){this.$setFont(t)},enumerable:!0,configurable:!0}),i.prototype.$setFont=function(t){var e=this;return e.$font==t?!1:(e.$font=t,e.$fontStringChanged=!0,this.$invalidateContentBounds(),!0)},Object.defineProperty(i.prototype,"lineSpacing",{get:function(){return this.$lineSpacing},set:function(t){this.$setLineSpacing(t)},enumerable:!0,configurable:!0}),i.prototype.$setLineSpacing=function(t){var e=this;return e.$lineSpacing==t?!1:(e.$lineSpacing=t,e.$invalidateContentBounds(),!0)},Object.defineProperty(i.prototype,"letterSpacing",{get:function(){return this.$letterSpacing},set:function(t){this.$setLetterSpacing(t)},enumerable:!0,configurable:!0}),i.prototype.$setLetterSpacing=function(t){var e=this;return e.$letterSpacing==t?!1:(e.$letterSpacing=t,e.$invalidateContentBounds(),!0)},Object.defineProperty(i.prototype,"textAlign",{get:function(){return this.$textAlign},set:function(t){this.$setTextAlign(t)},enumerable:!0,configurable:!0}),i.prototype.$setTextAlign=function(t){var e=this;return e.$textAlign==t?!1:(e.$textAlign=t,e.$invalidateContentBounds(),!0)},Object.defineProperty(i.prototype,"verticalAlign",{get:function(){return this.$verticalAlign},set:function(t){this.$setVerticalAlign(t)},enumerable:!0,configurable:!0}),i.prototype.$setVerticalAlign=function(t){var e=this;return e.$verticalAlign==t?!1:(e.$verticalAlign=t,e.$invalidateContentBounds(),!0)},i.prototype.$updateRenderNode=function(){var e=this,r=this.$getTextLines(),n=r.length;if(0==n)return void(t.nativeRender&&e.$font&&(e.$nativeDisplayObject.setDataToBitmapNode(e.$nativeDisplayObject.id,e.$font.$texture,[]),e.$nativeDisplayObject.setWidth(0),e.$nativeDisplayObject.setHeight(0)));var a,o=[],s=this.$textLinesWidth,h=e.$font;t.nativeRender||(a=this.$renderNode,h.$texture&&(a.image=h.$texture.$bitmapData),a.smoothing=e.$smoothing);for(var c=h._getFirstCharHeight(),l=Math.ceil(c*i.EMPTY_FACTOR),u=!isNaN(e.$textFieldHeight),p=e.$textWidth,d=e.$textFieldWidth,f=e.$textFieldHeight,g=e.$textAlign,$=this.$textOffsetY+this.$textStartY,y=this.$lineHeights,v=0;n>v;v++){var m=y[v];if(u&&v>0&&$+m>f)break;var b=r[v],x=b.length,T=this.$textOffsetX;if(g!=t.HorizontalAlign.LEFT){var _=d>p?d:p;g==t.HorizontalAlign.RIGHT?T+=_-s[v]:g==t.HorizontalAlign.CENTER&&(T+=Math.floor((_-s[v])/2))}for(var D=0;x>D;D++){var O=b.charAt(D),w=h.getTexture(O);if(w){var E=w.$bitmapWidth,R=w.$bitmapHeight;t.nativeRender?o.push(w.$bitmapX,w.$bitmapY,E,R,T+w.$offsetX,$+w.$offsetY,w.$getScaleBitmapWidth(),w.$getScaleBitmapHeight(),w.$sourceWidth,w.$sourceHeight):(a.imageWidth=w.$sourceWidth,a.imageHeight=w.$sourceHeight,a.drawImage(w.$bitmapX,w.$bitmapY,E,R,T+w.$offsetX,$+w.$offsetY,w.$getScaleBitmapWidth(),w.$getScaleBitmapHeight())),T+=(h.getConfig(O,"xadvance")||w.$getTextureWidth())+e.$letterSpacing}else" "==O?T+=l:t.$warn(1046,O)}$+=m+e.$lineSpacing}if(t.nativeRender){e.$nativeDisplayObject.setDataToBitmapNode(e.$nativeDisplayObject.id,h.$texture,o);var S=e.$getContentBounds();e.$nativeDisplayObject.setWidth(S.width),e.$nativeDisplayObject.setHeight(S.height)}},i.prototype.$measureContentBounds=function(t){var e=this.$getTextLines();0==e.length?t.setEmpty():t.setTo(this.$textOffsetX+this.$textStartX,this.$textOffsetY+this.$textStartY,this.$textWidth-this.$textOffsetX,this.$textHeight-this.$textOffsetY)},Object.defineProperty(i.prototype,"textWidth",{get:function(){return this.$getTextLines(),this.$textWidth},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"textHeight",{get:function(){return this.$getTextLines(),this.$textHeight},enumerable:!0,configurable:!0}),i.prototype.$getTextLines=function(){function e(t){return m&&n.length>0&&f>m?!1:(f+=c+u,s||h||(l-=p),n.push(t),o.push(c),a.push(l),d=Math.max(l,d),!0)}var r=this;if(!r.$textLinesChanged)return r.textLines;var n=[];r.textLines=n;var a=[];r.$textLinesWidth=a,r.$textLinesChanged=!1;var o=[];if(r.$lineHeights=o,!r.$text||!r.$font)return r.$textWidth=0,r.$textHeight=0,n;for(var s,h,c,l,u=r.$lineSpacing,p=r.$letterSpacing,d=0,f=0,g=0,$=0,y=!isNaN(r.$textFieldWidth),v=r.$textFieldWidth,m=r.$textFieldHeight,b=r.$font,x=b._getFirstCharHeight(),T=Math.ceil(x*i.EMPTY_FACTOR),_=r.$text,D=_.split(/(?:\r\n|\r|\n)/),O=D.length,w=!0,E=0;O>E;E++){var R=D[E],S=R.length;c=0,l=0,s=!0,h=!1;for(var C=0;S>C;C++){s||(l+=p);var F=R.charAt(C),P=void 0,M=void 0,j=0,A=0,B=b.getTexture(F);if(B)P=B.$getTextureWidth(),M=B.$getTextureHeight(),j=B.$offsetX,A=B.$offsetY;else{if(" "!=F){t.$warn(1046,F),s&&(s=!1);continue}P=T,M=x}if(s&&(s=!1),w&&(w=!1),y&&C>0&&l+P>v){if(!e(R.substring(0,C)))break;R=R.substring(C),S=R.length,C=0,l=C==S-1?P:b.getConfig(F,"xadvance")||P,c=M}else l+=C==S-1?P:b.getConfig(F,"xadvance")||P,c=Math.max(M,c)}if(m&&E>0&&f>m)break;if(h=!0,!e(R))break}f-=u,r.$textWidth=d,r.$textHeight=f,this.$textOffsetX=g,this.$textOffsetY=$,this.$textStartX=0,this.$textStartY=0;var N;return v>d&&(N=r.$textAlign,N==t.HorizontalAlign.RIGHT?this.$textStartX=v-d:N==t.HorizontalAlign.CENTER&&(this.$textStartX=Math.floor((v-d)/2))),m>f&&(N=r.$verticalAlign,N==t.VerticalAlign.BOTTOM?this.$textStartY=m-f:N==t.VerticalAlign.MIDDLE&&(this.$textStartY=Math.floor((m-f)/2))),n},i.EMPTY_FACTOR=.33,i}(t.DisplayObject);t.BitmapText=e,__reflect(e.prototype,"egret.BitmapText")}(egret||(egret={}));var egret;!function(t){var e=function(){function t(){}return t.LEFT="left",t.RIGHT="right",t.CENTER="center",t.JUSTIFY="justify",t.CONTENT_JUSTIFY="contentJustify",t}();t.HorizontalAlign=e,__reflect(e.prototype,"egret.HorizontalAlign")}(egret||(egret={}));var egret;!function(t){var e=function(){function e(){this.replaceArr=[],this.resutlArr=[],this.initReplaceArr()}return e.prototype.initReplaceArr=function(){this.replaceArr=[],this.replaceArr.push([/</g,"<"]),this.replaceArr.push([/>/g,">"]),this.replaceArr.push([/&/g,"&"]),this.replaceArr.push([/"/g,'"']),this.replaceArr.push([/'/g,"'"])},e.prototype.replaceSpecial=function(t){for(var e=0;ei;){var n=e.indexOf("<",i);if(0>n)this.addToResultArr(e.substring(i)),i=r;else{this.addToResultArr(e.substring(i,n));var a=e.indexOf(">",n);-1==a?(t.$error(1038),a=n):"/"==e.charAt(n+1)?this.stackArray.pop():this.addToArray(e.substring(n+1,a)),i=a+1}}return this.resutlArr},e.prototype.parser=function(t){return this.parse(t)},e.prototype.addToResultArr=function(t){""!=t&&(t=this.replaceSpecial(t),this.stackArray.length>0?this.resutlArr.push({text:t,style:this.stackArray[this.stackArray.length-1]}):this.resutlArr.push({text:t}))},e.prototype.changeStringToObject=function(t){t=t.trim();var e={},i=[];if("i"==t.charAt(0)||"b"==t.charAt(0)||"u"==t.charAt(0))this.addProperty(e,t,"true");else if(i=t.match(/^(font|a)\s/)){t=t.substring(i[0].length).trim();for(var r=0,n=void 0;n=t.match(this.getHeadReg());){var a=n[0],o="";t=t.substring(a.length).trim(),'"'==t.charAt(0)?(r=t.indexOf('"',1),o=t.substring(1,r),r+=1):"'"==t.charAt(0)?(r=t.indexOf("'",1),o=t.substring(1,r),r+=1):(o=t.match(/(\S)+/)[0],r=o.length),this.addProperty(e,a.substring(0,a.length-1).trim(),o.trim()),t=t.substring(r).trim()}}return e},e.prototype.getHeadReg=function(){return/^(color|textcolor|strokecolor|stroke|b|bold|i|italic|u|size|fontfamily|href|target)(\s)*=/},e.prototype.addProperty=function(t,e,i){switch(e.toLowerCase()){case"color":case"textcolor":i=i.replace(/#/,"0x"),t.textColor=parseInt(i);break;case"strokecolor":i=i.replace(/#/,"0x"),t.strokeColor=parseInt(i);break;case"stroke":t.stroke=parseInt(i);break;case"b":case"bold":t.bold="true"==i;break;case"u":t.underline="true"==i;break;case"i":case"italic":t.italic="true"==i;break;case"size":t.size=parseInt(i);break;case"fontfamily":t.fontFamily=i;break;case"href":t.href=this.replaceSpecial(i);break;case"target":t.target=this.replaceSpecial(i)}},e.prototype.addToArray=function(t){var e=this.changeStringToObject(t);if(0==this.stackArray.length)this.stackArray.push(e);else{var i=this.stackArray[this.stackArray.length-1];for(var r in i)null==e[r]&&(e[r]=i[r]);this.stackArray.push(e)}},e}();t.HtmlTextParser=e,__reflect(e.prototype,"egret.HtmlTextParser")}(egret||(egret={}));var egret;!function(t){var e=function(e){function i(){var t=e.call(this)||this;return t.stageTextAdded=!1,t._text=null,t._isFocus=!1,t}return __extends(i,e),i.prototype.init=function(e){this._text=e,this.stageText=new t.StageText,this.stageText.$setTextField(this._text)},i.prototype._addStageText=function(){this.stageTextAdded||(this._text.$inputEnabled||(this._text.$touchEnabled=!0),this.tempStage=this._text.stage,this.stageText.$addToStage(),this.stageText.addEventListener("updateText",this.updateTextHandler,this),this._text.addEventListener(t.TouchEvent.TOUCH_BEGIN,this.onMouseDownHandler,this),this.stageText.addEventListener("blur",this.blurHandler,this),this.stageText.addEventListener("focus",this.focusHandler,this),this.stageTextAdded=!0)},i.prototype._removeStageText=function(){this.stageTextAdded&&(this._text.$inputEnabled||(this._text.$touchEnabled=!1),this.stageText.$removeFromStage(),this.stageText.removeEventListener("updateText",this.updateTextHandler,this),this._text.removeEventListener(t.TouchEvent.TOUCH_BEGIN,this.onMouseDownHandler,this),this.tempStage.removeEventListener(t.TouchEvent.TOUCH_BEGIN,this.onStageDownHandler,this),this.stageText.removeEventListener("blur",this.blurHandler,this),this.stageText.removeEventListener("focus",this.focusHandler,this),this.stageTextAdded=!1)},i.prototype._getText=function(){return this.stageText.$getText()},i.prototype._setText=function(t){this.stageText.$setText(t)},i.prototype._setColor=function(t){this.stageText.$setColor(t)},i.prototype.focusHandler=function(e){this._isFocus||(this._isFocus=!0,e.showing||this._text.$setIsTyping(!0),this._text.dispatchEvent(new t.FocusEvent(t.FocusEvent.FOCUS_IN,!0)))},i.prototype.blurHandler=function(e){this._isFocus&&(this._isFocus=!1,this.tempStage.removeEventListener(t.TouchEvent.TOUCH_BEGIN,this.onStageDownHandler,this),this._text.$setIsTyping(!1),this.stageText.$onBlur(),this._text.dispatchEvent(new t.FocusEvent(t.FocusEvent.FOCUS_OUT,!0)))},i.prototype.onMouseDownHandler=function(t){this.$onFocus()},i.prototype.$onFocus=function(){var e=this;this._text.visible&&(this._isFocus||(this.tempStage.removeEventListener(t.TouchEvent.TOUCH_BEGIN,this.onStageDownHandler,this),t.callLater(function(){e.tempStage.addEventListener(t.TouchEvent.TOUCH_BEGIN,e.onStageDownHandler,e)},this),t.nativeRender&&this.stageText.$setText(this._text.$TextField[13]),this.stageText.$show()))},i.prototype.onStageDownHandler=function(t){t.$target!=this._text&&this.stageText.$hide()},i.prototype.updateTextHandler=function(e){var i,r,n=this._text.$TextField,a=this.stageText.$getText(),o=!1;null!=n[35]&&(i=new RegExp("["+n[35]+"]","g"),r=a.match(i),a=r?r.join(""):"",o=!0),null!=n[36]&&(i=new RegExp("[^"+n[36]+"]","g"),r=a.match(i),a=r?r.join(""):"",o=!0),o&&this.stageText.$getText()!=a&&this.stageText.$setText(a),this.resetText(),this._text.dispatchEvent(new t.Event(t.Event.CHANGE,!0))},i.prototype.resetText=function(){this._text.$setBaseText(this.stageText.$getText())},i.prototype._hideInput=function(){this.stageText.$removeFromStage()},i.prototype.updateInput=function(){!this._text.$visible&&this.stageText&&this._hideInput()},i.prototype._updateProperties=function(){return this._isFocus?(this.stageText.$resetStageText(),void this.updateInput()):(this.stageText.$setText(this._text.$TextField[13]),this.stageText.$resetStageText(),void this.updateInput())},i}(t.HashObject);t.InputController=e,__reflect(e.prototype,"egret.InputController")}(egret||(egret={}));var egret;!function(t){}(egret||(egret={}));var egret;!function(t){function e(e,i,n){n=n||{};var a=null==n.italic?i[16]:n.italic,o=null==n.bold?i[15]:n.bold,s=null==n.size?i[0]:n.size,h=n.fontFamily||i[8]||r.default_fontFamily;return t.sys.measureText(e,h,s,o,a)}var i=new RegExp("(?=[\\u00BF-\\u1FFF\\u2C00-\\uD7FF]|\\b|\\s)(?![。,!、》…))}”】\\.\\,\\!\\?\\]\\:])"),r=function(r){function n(){var e=r.call(this)||this;e.$inputEnabled=!1,e.inputUtils=null,e.$graphicsNode=null,e.isFlow=!1,e.textArr=[],e.linesArr=[],e.$isTyping=!1;var i=new t.sys.TextNode;return i.fontFamily=n.default_fontFamily,e.textNode=i,e.$renderNode=i,e.$TextField={0:n.default_size,1:0,2:n.default_textColor,3:0/0,4:0/0,5:0,6:0,7:0,8:n.default_fontFamily,9:"left",10:"top",11:"#ffffff",12:"",13:"",14:[],15:!1,16:!1,17:!0,18:!1,19:!1,20:!1,21:0,22:0,23:0,24:t.TextFieldType.DYNAMIC,25:0,26:"#000000",27:0,28:-1,29:0,30:!1,31:!1,32:0,33:!1,34:16777215,35:null,36:null,37:t.TextFieldInputType.TEXT,38:!1},e}return __extends(n,r),n.prototype.createNativeDisplayObject=function(){this.$nativeDisplayObject=new egret_native.NativeDisplayObject(7)},n.prototype.isInput=function(){return this.$TextField[24]==t.TextFieldType.INPUT},n.prototype.$setTouchEnabled=function(t){r.prototype.$setTouchEnabled.call(this,t),this.isInput()&&(this.$inputEnabled=!0)},Object.defineProperty(n.prototype,"fontFamily",{get:function(){return this.$TextField[8]},set:function(t){this.$setFontFamily(t)},enumerable:!0,configurable:!0}),n.prototype.$setFontFamily=function(e){var i=this.$TextField;return i[8]==e?!1:(i[8]=e,this.invalidateFontString(),t.nativeRender&&this.$nativeDisplayObject.setFontFamily(e),!0)},Object.defineProperty(n.prototype,"size",{get:function(){return this.$TextField[0]},set:function(t){this.$setSize(t)},enumerable:!0,configurable:!0}),n.prototype.$setSize=function(e){var i=this.$TextField;return i[0]==e?!1:(i[0]=e,this.invalidateFontString(),t.nativeRender&&this.$nativeDisplayObject.setFontSize(e),!0)},Object.defineProperty(n.prototype,"bold",{get:function(){return this.$TextField[15]},set:function(t){this.$setBold(t)},enumerable:!0,configurable:!0}),n.prototype.$setBold=function(e){var i=this.$TextField;return e==i[15]?!1:(i[15]=e,this.invalidateFontString(),t.nativeRender&&this.$nativeDisplayObject.setBold(e),!0)},Object.defineProperty(n.prototype,"italic",{get:function(){return this.$TextField[16] +},set:function(t){this.$setItalic(t)},enumerable:!0,configurable:!0}),n.prototype.$setItalic=function(e){var i=this.$TextField;return e==i[16]?!1:(i[16]=e,this.invalidateFontString(),t.nativeRender&&this.$nativeDisplayObject.setItalic(e),!0)},n.prototype.invalidateFontString=function(){this.$TextField[17]=!0,this.$invalidateTextField()},Object.defineProperty(n.prototype,"textAlign",{get:function(){return this.$TextField[9]},set:function(t){this.$setTextAlign(t)},enumerable:!0,configurable:!0}),n.prototype.$setTextAlign=function(e){var i=this.$TextField;return i[9]==e?!1:(i[9]=e,this.$invalidateTextField(),t.nativeRender&&this.$nativeDisplayObject.setTextAlign(e),!0)},Object.defineProperty(n.prototype,"verticalAlign",{get:function(){return this.$TextField[10]},set:function(t){this.$setVerticalAlign(t)},enumerable:!0,configurable:!0}),n.prototype.$setVerticalAlign=function(e){var i=this.$TextField;return i[10]==e?!1:(i[10]=e,this.$invalidateTextField(),t.nativeRender&&this.$nativeDisplayObject.setVerticalAlign(e),!0)},Object.defineProperty(n.prototype,"lineSpacing",{get:function(){return this.$TextField[1]},set:function(t){this.$setLineSpacing(t)},enumerable:!0,configurable:!0}),n.prototype.$setLineSpacing=function(e){var i=this.$TextField;return i[1]==e?!1:(i[1]=e,this.$invalidateTextField(),t.nativeRender&&this.$nativeDisplayObject.setLineSpacing(e),!0)},Object.defineProperty(n.prototype,"textColor",{get:function(){return this.$TextField[2]},set:function(t){this.$setTextColor(t)},enumerable:!0,configurable:!0}),n.prototype.$setTextColor=function(e){var i=this.$TextField;return i[2]==e?!1:(i[2]=e,this.inputUtils&&this.inputUtils._setColor(this.$TextField[2]),this.$invalidateTextField(),t.nativeRender&&this.$nativeDisplayObject.setTextColor(e),!0)},Object.defineProperty(n.prototype,"wordWrap",{get:function(){return this.$TextField[19]},set:function(t){this.$setWordWrap(t)},enumerable:!0,configurable:!0}),n.prototype.$setWordWrap=function(e){var i=this.$TextField;e!=i[19]&&(i[20]||(i[19]=e,this.$invalidateTextField(),t.nativeRender&&this.$nativeDisplayObject.setWordWrap(e)))},Object.defineProperty(n.prototype,"type",{get:function(){return this.$TextField[24]},set:function(t){this.$setType(t)},enumerable:!0,configurable:!0}),n.prototype.$setType=function(e){var i=this.$TextField;return i[24]!=e?(i[24]=e,t.nativeRender&&this.$nativeDisplayObject.setType(e),e==t.TextFieldType.INPUT?(isNaN(i[3])&&this.$setWidth(100),isNaN(i[4])&&this.$setHeight(30),this.$setTouchEnabled(!0),null==this.inputUtils&&(this.inputUtils=new t.InputController),this.inputUtils.init(this),this.$invalidateTextField(),this.$stage&&this.inputUtils._addStageText()):(this.inputUtils&&(this.inputUtils._removeStageText(),this.inputUtils=null),this.$setTouchEnabled(!1)),!0):!1},Object.defineProperty(n.prototype,"inputType",{get:function(){return this.$TextField[37]},set:function(e){this.$TextField[37]!=e&&(this.$TextField[37]=e,t.nativeRender&&this.$nativeDisplayObject.setInputType(e))},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"text",{get:function(){return this.$getText()},set:function(t){this.$setText(t)},enumerable:!0,configurable:!0}),n.prototype.$getText=function(){return this.$TextField[24]==t.TextFieldType.INPUT?this.inputUtils._getText():this.$TextField[13]},n.prototype.$setBaseText=function(e){e=null==e?"":e.toString(),this.isFlow=!1;var i=this.$TextField;if(i[13]!=e){this.$invalidateTextField(),i[13]=e;var r="";return r=i[20]?this.changeToPassText(e):e,t.nativeRender&&this.$nativeDisplayObject.setText(r),this.setMiddleStyle([{text:r}]),!0}return!1},n.prototype.$setText=function(t){null==t&&(t="");var e=this.$setBaseText(t);return this.inputUtils&&this.inputUtils._setText(this.$TextField[13]),e},Object.defineProperty(n.prototype,"displayAsPassword",{get:function(){return this.$TextField[20]},set:function(t){this.$setDisplayAsPassword(t)},enumerable:!0,configurable:!0}),n.prototype.$setDisplayAsPassword=function(e){var i=this.$TextField;if(i[20]!=e){i[20]=e,this.$invalidateTextField();var r="";return r=e?this.changeToPassText(i[13]):i[13],t.nativeRender&&this.$nativeDisplayObject.setText(r),this.setMiddleStyle([{text:r}]),!0}return!1},Object.defineProperty(n.prototype,"strokeColor",{get:function(){return this.$TextField[25]},set:function(t){this.$setStrokeColor(t)},enumerable:!0,configurable:!0}),n.prototype.$setStrokeColor=function(e){var i=this.$TextField;return i[25]!=e?(this.$invalidateTextField(),i[25]=e,t.nativeRender&&this.$nativeDisplayObject.setStrokeColor(e),i[26]=t.toColorString(e),!0):!1},Object.defineProperty(n.prototype,"stroke",{get:function(){return this.$TextField[27]},set:function(t){this.$setStroke(t)},enumerable:!0,configurable:!0}),n.prototype.$setStroke=function(e){return this.$TextField[27]!=e?(this.$invalidateTextField(),this.$TextField[27]=e,t.nativeRender&&this.$nativeDisplayObject.setStroke(e),!0):!1},Object.defineProperty(n.prototype,"maxChars",{get:function(){return this.$TextField[21]},set:function(t){this.$setMaxChars(t)},enumerable:!0,configurable:!0}),n.prototype.$setMaxChars=function(e){return this.$TextField[21]!=e?(this.$TextField[21]=e,t.nativeRender&&this.$nativeDisplayObject.setMaxChars(e),!0):!1},Object.defineProperty(n.prototype,"scrollV",{get:function(){return Math.min(Math.max(this.$TextField[28],1),this.maxScrollV)},set:function(e){e=Math.max(e,1),e!=this.$TextField[28]&&(this.$TextField[28]=e,t.nativeRender&&this.$nativeDisplayObject.setScrollV(e),this.$invalidateTextField())},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"maxScrollV",{get:function(){return this.$getLinesArr(),Math.max(this.$TextField[29]-t.TextFieldUtils.$getScrollNum(this)+1,1)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"selectionBeginIndex",{get:function(){return 0},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"selectionEndIndex",{get:function(){return 0},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"caretIndex",{get:function(){return 0},enumerable:!0,configurable:!0}),n.prototype.$setSelection=function(t,e){return!1},n.prototype.$getLineHeight=function(){return this.$TextField[1]+this.$TextField[0]},Object.defineProperty(n.prototype,"numLines",{get:function(){return this.$getLinesArr(),this.$TextField[29]},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"multiline",{get:function(){return this.$TextField[30]},set:function(t){this.$setMultiline(t)},enumerable:!0,configurable:!0}),n.prototype.$setMultiline=function(e){return this.$TextField[30]==e?!1:(this.$TextField[30]=e,this.$invalidateTextField(),t.nativeRender&&this.$nativeDisplayObject.setMultiline(e),!0)},Object.defineProperty(n.prototype,"restrict",{get:function(){var t=this.$TextField,e=null;return null!=t[35]&&(e=t[35]),null!=t[36]&&(null==e&&(e=""),e+="^"+t[36]),e},set:function(t){var e=this.$TextField;if(null==t)e[35]=null,e[36]=null;else{for(var i=-1;i0&&"\\"==t.charAt(i-1);)i++;0==i?(e[35]=null,e[36]=t.substring(i+1)):i>0?(e[35]=t.substring(0,i),e[36]=t.substring(i+1)):(e[35]=t,e[36]=null)}},enumerable:!0,configurable:!0}),n.prototype.$setWidth=function(e){t.nativeRender&&this.$nativeDisplayObject.setTextFieldWidth(e);var i=this.$TextField;if(isNaN(e)){if(isNaN(i[3]))return!1;i[3]=0/0}else{if(i[3]==e)return!1;i[3]=e}return e=+e,0>e?!1:(this.$invalidateTextField(),!0)},n.prototype.$setHeight=function(e){t.nativeRender&&this.$nativeDisplayObject.setTextFieldHeight(e);var i=this.$TextField;if(isNaN(e)){if(isNaN(i[4]))return!1;i[4]=0/0}else{if(i[4]==e)return!1;i[4]=e}return e=+e,0>e?!1:(this.$invalidateTextField(),!0)},n.prototype.$getWidth=function(){var t=this.$TextField;return isNaN(t[3])?this.$getContentBounds().width:t[3]},n.prototype.$getHeight=function(){var t=this.$TextField;return isNaN(t[4])?this.$getContentBounds().height:t[4]},Object.defineProperty(n.prototype,"border",{get:function(){return this.$TextField[31]},set:function(t){this.$setBorder(t)},enumerable:!0,configurable:!0}),n.prototype.$setBorder=function(e){e=!!e,this.$TextField[31]!=e&&(this.$TextField[31]=e,this.$invalidateTextField(),t.nativeRender&&this.$nativeDisplayObject.setBorder(e))},Object.defineProperty(n.prototype,"borderColor",{get:function(){return this.$TextField[32]},set:function(t){this.$setBorderColor(t)},enumerable:!0,configurable:!0}),n.prototype.$setBorderColor=function(e){e=+e||0,this.$TextField[32]!=e&&(this.$TextField[32]=e,this.$invalidateTextField(),t.nativeRender&&this.$nativeDisplayObject.setBorderColor(e))},Object.defineProperty(n.prototype,"background",{get:function(){return this.$TextField[33]},set:function(t){this.$setBackground(t)},enumerable:!0,configurable:!0}),n.prototype.$setBackground=function(e){this.$TextField[33]!=e&&(this.$TextField[33]=e,this.$invalidateTextField(),t.nativeRender&&this.$nativeDisplayObject.setBackground(e))},Object.defineProperty(n.prototype,"backgroundColor",{get:function(){return this.$TextField[34]},set:function(t){this.$setBackgroundColor(t)},enumerable:!0,configurable:!0}),n.prototype.$setBackgroundColor=function(e){this.$TextField[34]!=e&&(this.$TextField[34]=e,this.$invalidateTextField(),t.nativeRender&&this.$nativeDisplayObject.setBackgroundColor(e))},n.prototype.fillBackground=function(e){var i=this.$graphicsNode;i&&i.clear();var r=this.$TextField;if(r[33]||r[31]||e&&e.length>0){if(!i)if(i=this.$graphicsNode=new t.sys.GraphicsNode,t.nativeRender)this.$renderNode=this.textNode;else{var n=new t.sys.GroupNode;n.addNode(i),n.addNode(this.textNode),this.$renderNode=n}var a=void 0,o=void 0;if(r[33]&&(a=i.beginFill(r[34]),a.drawRect(0,0,this.$getWidth(),this.$getHeight())),r[31]&&(o=i.lineStyle(1,r[32]),o.drawRect(0,0,this.$getWidth()-1,this.$getHeight()-1)),e&&e.length>0)for(var s=r[2],h=-1,c=e.length,l=0;c>l;l+=4){var u=e[l],p=e[l+1],d=e[l+2],f=e[l+3]||s;(0>h||h!=f)&&(h=f,o=i.lineStyle(2,f,1,t.CapsStyle.NONE)),o.moveTo(u,p),o.lineTo(u+d,p)}}if(i){var g=this.$getRenderBounds();i.x=g.x,i.y=g.y,i.width=g.width,i.height=g.height,t.Rectangle.release(g)}},n.prototype.setFocus=function(){this.type==t.TextFieldType.INPUT&&this.$stage&&this.inputUtils.$onFocus()},n.prototype.$onRemoveFromStage=function(){r.prototype.$onRemoveFromStage.call(this),this.removeEvent(),this.$TextField[24]==t.TextFieldType.INPUT&&this.inputUtils._removeStageText(),this.textNode&&(this.textNode.clean(),t.nativeRender&&egret_native.NativeDisplayObject.disposeTextData(this))},n.prototype.$onAddToStage=function(e,i){r.prototype.$onAddToStage.call(this,e,i),this.addEvent(),this.$TextField[24]==t.TextFieldType.INPUT&&this.inputUtils._addStageText()},n.prototype.$invalidateTextField=function(){var e=this;if(e.$renderDirty=!0,e.$TextField[18]=!0,e.$TextField[38]=!0,t.nativeRender);else{var i=e.$parent;i&&!i.$cacheDirty&&(i.$cacheDirty=!0,i.$cacheDirtyUp());var r=e.$maskedObject;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp())}},n.prototype.$getRenderBounds=function(){var e=this.$getContentBounds(),i=t.Rectangle.create();i.copyFrom(e),this.$TextField[31]&&(i.width+=2,i.height+=2);var r=2*this.$TextField[27];return r>0&&(i.width+=2*r,i.height+=2*r),i.x-=r+2,i.y-=r+2,i.width=Math.ceil(i.width)+4,i.height=Math.ceil(i.height)+4,i},n.prototype.$measureContentBounds=function(e){this.$getLinesArr();var i=0,r=0;t.nativeRender?(i=egret_native.nrGetTextFieldWidth(this.$nativeDisplayObject.id),r=egret_native.nrGetTextFieldHeight(this.$nativeDisplayObject.id)):(i=isNaN(this.$TextField[3])?this.$TextField[5]:this.$TextField[3],r=isNaN(this.$TextField[4])?t.TextFieldUtils.$getTextHeight(this):this.$TextField[4]),e.setTo(0,0,i,r)},n.prototype.$updateRenderNode=function(){if(this.$TextField[24]==t.TextFieldType.INPUT){if(this.inputUtils._updateProperties(),this.$isTyping)return void this.fillBackground()}else if(0==this.$TextField[3]){var e=this.$graphicsNode;return void(e&&e.clear())}var i=this.drawText();this.fillBackground(i);var r=this.$getRenderBounds(),n=this.textNode;n.x=r.x,n.y=r.y,n.width=Math.ceil(r.width),n.height=Math.ceil(r.height),t.Rectangle.release(r)},Object.defineProperty(n.prototype,"textFlow",{get:function(){return this.textArr},set:function(e){this.isFlow=!0;var i="";null==e&&(e=[]);for(var r=0;ri;i++)switch(t.charAt(i)){case"\n":e+="\n";break;case"\r":break;default:e+="*"}return e}return t},n.prototype.setMiddleStyle=function(t){this.$TextField[18]=!0,this.$TextField[38]=!0,this.textArr=t,this.$invalidateTextField()},Object.defineProperty(n.prototype,"textWidth",{get:function(){return this.$getLinesArr(),t.nativeRender?egret_native.nrGetTextWidth(this.$nativeDisplayObject.id):this.$TextField[5]},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"textHeight",{get:function(){return this.$getLinesArr(),t.nativeRender?egret_native.nrGetTextHeight(this.$nativeDisplayObject.id):t.TextFieldUtils.$getTextHeight(this)},enumerable:!0,configurable:!0}),n.prototype.appendText=function(t){this.appendElement({text:t})},n.prototype.appendElement=function(e){var i=this.$TextField[13]+e.text;return t.nativeRender?(this.textArr.push(e),this.$TextField[13]=i,this.$TextField[18]=!0,this.$TextField[38]=!0,void this.$nativeDisplayObject.setTextFlow(this.textArr)):void(this.$TextField[20]?this.$setBaseText(i):(this.$TextField[13]=i,this.textArr.push(e),this.setMiddleStyle(this.textArr)))},n.prototype.$getLinesArr=function(){var e=this.$TextField;return t.nativeRender&&e[38]?(egret_native.updateNativeRender(),void(e[38]=!1)):this.$getLinesArr2()},n.prototype.$getLinesArr2=function(){var r=this.$TextField;if(!r[18])return this.linesArr;r[18]=!1;var n=this.textArr;this.linesArr.length=0,r[6]=0,r[5]=0;var a=r[3];if(!isNaN(a)&&0==a)return r[29]=0,[{width:0,height:0,charNum:0,elements:[],hasNextLine:!1}];for(var o,s=this.linesArr,h=0,c=0,l=0,u=0,p=0,d=n.length;d>p;p++){var f=n[p];if(f.text){f.style=f.style||{};for(var g=f.text.toString(),$=g.split(/(?:\r\n|\r|\n)/),y=0,v=$.length;v>y;y++){null==s[u]&&(o={width:0,height:0,elements:[],charNum:0,hasNextLine:!1},s[u]=o,h=0,l=0,c=0),l=r[24]==t.TextFieldType.INPUT?r[0]:Math.max(l,f.style.size||r[0]);var m=!0;if(""==$[y])y==v-1&&(m=!1);else{var b=e($[y],r,f.style);if(isNaN(a))h+=b,c+=$[y].length,o.elements.push({width:b,text:$[y],style:f.style}),y==v-1&&(m=!1);else if(a>=h+b)o.elements.push({width:b,text:$[y],style:f.style}),h+=b,c+=$[y].length,y==v-1&&(m=!1);else{var x=0,T=0,_=$[y],D=void 0;D=r[19]?_.split(i):_.match(/./g);for(var O=D.length,w=0;O>x;x++){var E=D[x].length,R=!1;if(1==E&&O-1>x){var S=D[x].charCodeAt(0),C=D[x+1].charCodeAt(0);if(S>=55296&&56319>=S&&56320==(64512&C)){var F=D[x]+D[x+1];E=2,R=!0,b=e(F,r,f.style)}else b=e(D[x],r,f.style)}else b=e(D[x],r,f.style);if(0!=h&&h+b>a&&h+x!=0)break;if(T+b>a)for(var P=D[x].match(/./g),M=0,j=P.length;j>M;M++){var E=P[M].length,A=!1;if(1==E&&j-1>M){var S=P[M].charCodeAt(0),C=P[M+1].charCodeAt(0);if(S>=55296&&56319>=S&&56320==(64512&C)){var F=P[M]+P[M+1];E=2,A=!0,b=e(F,r,f.style)}else b=e(P[M],r,f.style)}else b=e(P[M],r,f.style);if(M>0&&h+b>a)break;w+=E,T+=b,h+=b,c+=w,A&&M++}else w+=E,T+=b,h+=b,c+=w;R&&x++}if(x>0){o.elements.push({width:T,text:_.substring(0,w),style:f.style});var B=_.substring(w),N=void 0,k=B.length;for(N=0;k>N&&" "==B.charAt(N);N++);$[y]=B.substring(N)}""!=$[y]&&(y--,m=!1)}}m&&(c++,o.hasNextLine=!0),y<$.length-1&&(o.width=h,o.height=l,o.charNum=c,r[5]=Math.max(r[5],h),r[6]+=l,u++)}p==n.length-1&&o&&(o.width=h,o.height=l,o.charNum=c,r[5]=Math.max(r[5],h),r[6]+=l)}else o&&(o.width=h,o.height=l,o.charNum=c,r[5]=Math.max(r[5],h),r[6]+=l)}return r[29]=s.length,s},n.prototype.$setIsTyping=function(e){this.$isTyping=e,this.$invalidateTextField(),t.nativeRender&&this.$nativeDisplayObject.setIsTyping(e)},n.prototype.drawText=function(){var e=this.textNode,i=this.$TextField;e.bold=i[15],e.fontFamily=i[8]||n.default_fontFamily,e.italic=i[16],e.size=i[0],e.stroke=i[27],e.strokeColor=i[25],e.textColor=i[2];var r=this.$getLinesArr();if(0==i[5])return[];var a=isNaN(i[3])?i[5]:i[3],o=t.TextFieldUtils.$getTextHeight(this),s=0,h=t.TextFieldUtils.$getStartLine(this),c=i[4];if(!isNaN(c)&&c>o){var l=t.TextFieldUtils.$getValign(this);s+=l*(c-o)}s=Math.round(s);for(var u=t.TextFieldUtils.$getHalign(this),p=0,d=[],f=h,g=i[29];g>f;f++){var $=r[f],y=$.height;if(s+=y/2,f!=h){if(i[24]==t.TextFieldType.INPUT&&!i[30])break;if(!isNaN(c)&&s>c)break}p=Math.round((a-$.width)*u);for(var v=0,m=$.elements.length;m>v;v++){var b=$.elements[v],x=b.style.size||i[0];e.drawText(p,s+(y-x)/2,b.text,b.style),b.style.underline&&d.push(p,s+y/2,b.width,b.style.textColor),p+=b.width}s+=y/2+i[1]}return d},n.prototype.addEvent=function(){this.addEventListener(t.TouchEvent.TOUCH_TAP,this.onTapHandler,this)},n.prototype.removeEvent=function(){this.removeEventListener(t.TouchEvent.TOUCH_TAP,this.onTapHandler,this)},n.prototype.onTapHandler=function(e){if(this.$TextField[24]!=t.TextFieldType.INPUT){var i=t.TextFieldUtils.$getTextElement(this,e.localX,e.localY);if(null!=i){var r=i.style;if(r&&r.href)if(r.href.match(/^event:/)){var n=r.href.match(/^event:/)[0];t.TextEvent.dispatchTextEvent(this,t.TextEvent.LINK,r.href.substring(n.length))}else open(r.href,r.target||"_blank")}}},n.default_fontFamily="Arial",n.default_size=30,n.default_textColor=16777215,n}(t.DisplayObject);t.TextField=r,__reflect(r.prototype,"egret.TextField")}(egret||(egret={}));var egret;!function(t){var e=function(){function t(){}return t.TEXT="text",t.TEL="tel",t.PASSWORD="password",t}();t.TextFieldInputType=e,__reflect(e.prototype,"egret.TextFieldInputType")}(egret||(egret={}));var egret;!function(t){var e=function(){function t(){}return t.DYNAMIC="dynamic",t.INPUT="input",t}();t.TextFieldType=e,__reflect(e.prototype,"egret.TextFieldType")}(egret||(egret={}));var egret;!function(t){var e=function(){function e(){}return e.$getStartLine=function(t){var i=t.$TextField,r=e.$getTextHeight(t),n=0,a=i[4];return isNaN(a)||(a>r||r>a&&(n=Math.max(i[28]-1,0),n=Math.min(i[29]-1,n)),i[30]||(n=Math.max(i[28]-1,0),i[29]>0&&(n=Math.min(i[29]-1,n)))),n},e.$getHalign=function(e){var i=e.$getLinesArr2(),r=0;return e.$TextField[9]==t.HorizontalAlign.CENTER?r=.5:e.$TextField[9]==t.HorizontalAlign.RIGHT&&(r=1),e.$TextField[24]==t.TextFieldType.INPUT&&!e.$TextField[30]&&i.length>1&&(r=0),r},e.$getTextHeight=function(e){var i=t.TextFieldType.INPUT!=e.$TextField[24]||e.$TextField[30]?e.$TextField[6]+(e.$TextField[29]-1)*e.$TextField[1]:e.$TextField[0];return i},e.$getValign=function(i){var r=e.$getTextHeight(i),n=i.$TextField[4];if(!isNaN(n)&&n>r){var a=0;return i.$TextField[10]==t.VerticalAlign.MIDDLE?a=.5:i.$TextField[10]==t.VerticalAlign.BOTTOM&&(a=1),a}return 0},e.$getTextElement=function(t,i,r){var n=e.$getHit(t,i,r),a=t.$getLinesArr2();return n&&a[n.lineIndex]&&a[n.lineIndex].elements[n.textElementIndex]?a[n.lineIndex].elements[n.textElementIndex]:null},e.$getHit=function(t,i,r){var n=t.$getLinesArr2();if(0==t.$TextField[3])return null;var a=0,o=e.$getTextHeight(t),s=0,h=t.$TextField[4];if(!isNaN(h)&&h>o){var c=e.$getValign(t);s=c*(h-o),0!=s&&(r-=s)}for(var l=e.$getStartLine(t),u=0,p=l;p=r){r>u&&(a=p+1);break}if(u+=d.height,u+t.$TextField[1]>r)return null;u+=t.$TextField[1]}if(0==a)return null;var f=n[a-1],g=t.$TextField[3];isNaN(g)&&(g=t.textWidth);var $=e.$getHalign(t);i-=$*(g-f.width);for(var y=0,p=0;py)return{lineIndex:a-1,textElementIndex:p}}return null},e.$getScrollNum=function(t){var e=1;if(t.$TextField[30]){var i=t.height,r=t.size,n=t.lineSpacing;e=Math.floor(i/(r+n));var a=i-(r+n)*e;a>r/2&&e++}return e},e}();t.TextFieldUtils=e,__reflect(e.prototype,"egret.TextFieldUtils")}(egret||(egret={}));var egret;!function(t){var e;!function(t){}(e=t.sys||(t.sys={}))}(egret||(egret={}));var egret;!function(t){var e=function(){function t(){}return t.TOP="top",t.BOTTOM="bottom",t.MIDDLE="middle",t.JUSTIFY="justify",t.CONTENT_JUSTIFY="contentJustify",t}();t.VerticalAlign=e,__reflect(e.prototype,"egret.VerticalAlign")}(egret||(egret={}));var egret;!function(t){var e=function(){function t(){}return t.encode=function(t){for(var e=new Uint8Array(t),i=e.length,r="",n=0;i>n;n+=3)r+=chars[e[n]>>2],r+=chars[(3&e[n])<<4|e[n+1]>>4],r+=chars[(15&e[n+1])<<2|e[n+2]>>6],r+=chars[63&e[n+2]];return i%3===2?r=r.substring(0,r.length-1)+"=":i%3===1&&(r=r.substring(0,r.length-2)+"=="),r},t.decode=function(t){var e=.75*t.length,i=t.length,r=0,n=0,a=0,o=0,s=0;"="===t[t.length-1]&&(e--,"="===t[t.length-2]&&e--);for(var h=new ArrayBuffer(e),c=new Uint8Array(h),l=0;i>l;l+=4)n=lookup[t.charCodeAt(l)],a=lookup[t.charCodeAt(l+1)],o=lookup[t.charCodeAt(l+2)],s=lookup[t.charCodeAt(l+3)],c[r++]=n<<2|a>>4,c[r++]=(15&a)<<4|o>>2,c[r++]=(3&o)<<6|63&s;return h},t}();t.Base64Util=e,__reflect(e.prototype,"egret.Base64Util")}(egret||(egret={}));for(var chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",lookup=new Uint8Array(256),i=0;ii&&(i=0),this.bufferExtSize=i;var r,n=0;if(t){var a=void 0;if(t instanceof Uint8Array?(a=t,n=t.length):(n=t.byteLength,a=new Uint8Array(t)),0==i)r=new Uint8Array(n);else{var o=(n/i|0)+1;r=new Uint8Array(o*i)}r.set(a)}else r=new Uint8Array(i);this.write_position=n,this._position=0,this._bytes=r,this.data=new DataView(r.buffer),this.endian=e.BIG_ENDIAN}return Object.defineProperty(i.prototype,"endian",{get:function(){return 0==this.$endian?e.LITTLE_ENDIAN:e.BIG_ENDIAN},set:function(t){this.$endian=t==e.LITTLE_ENDIAN?0:1},enumerable:!0,configurable:!0}),i.prototype.setArrayBuffer=function(t){},Object.defineProperty(i.prototype,"readAvailable",{get:function(){return this.write_position-this._position},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"buffer",{get:function(){return this.data.buffer.slice(0,this.write_position)},set:function(t){var e,i=t.byteLength,r=new Uint8Array(t),n=this.bufferExtSize;if(0==n)e=new Uint8Array(i);else{var a=(i/n|0)+1;e=new Uint8Array(a*n)}e.set(r),this.write_position=i,this._bytes=e,this.data=new DataView(e.buffer)},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"rawBuffer",{get:function(){return this.data.buffer},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"bytes",{get:function(){return this._bytes},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"dataView",{get:function(){return this.data},set:function(t){this.buffer=t.buffer},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"bufferOffset",{get:function(){return this.data.byteOffset},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"position",{get:function(){return this._position},set:function(t){this._position=t,t>this.write_position&&(this.write_position=t)},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"length",{get:function(){return this.write_position},set:function(t){this.write_position=t,this.data.byteLength>t&&(this._position=t),this._validateBuffer(t)},enumerable:!0,configurable:!0}),i.prototype._validateBuffer=function(t){if(this.data.byteLength>0)+1)*e;i=new Uint8Array(r)}i.set(this._bytes),this._bytes=i,this.data=new DataView(i.buffer)}},Object.defineProperty(i.prototype,"bytesAvailable",{get:function(){return this.data.byteLength-this._position},enumerable:!0,configurable:!0}),i.prototype.clear=function(){var t=new ArrayBuffer(this.bufferExtSize);this.data=new DataView(t),this._bytes=new Uint8Array(t),this._position=0,this.write_position=0},i.prototype.readBoolean=function(){return this.validate(1)?!!this._bytes[this.position++]:void 0},i.prototype.readByte=function(){return this.validate(1)?this.data.getInt8(this.position++):void 0},i.prototype.readBytes=function(e,i,r){if(void 0===i&&(i=0),void 0===r&&(r=0),e){var n=this._position,a=this.write_position-n;if(0>a)return void t.$error(1025);if(0==r)r=a;else if(r>a)return void t.$error(1025);var o=e._position;e._position=0,e.validateBuffer(i+r),e._position=o,e._bytes.set(this._bytes.subarray(n,n+r),i),this.position+=r}},i.prototype.readDouble=function(){if(this.validate(8)){var t=this.data.getFloat64(this._position,0==this.$endian);return this.position+=8,t}},i.prototype.readFloat=function(){if(this.validate(4)){var t=this.data.getFloat32(this._position,0==this.$endian);return this.position+=4,t}},i.prototype.readInt=function(){if(this.validate(4)){var t=this.data.getInt32(this._position,0==this.$endian);return this.position+=4,t}},i.prototype.readShort=function(){if(this.validate(2)){var t=this.data.getInt16(this._position,0==this.$endian);return this.position+=2,t}},i.prototype.readUnsignedByte=function(){return this.validate(1)?this._bytes[this.position++]:void 0},i.prototype.readUnsignedInt=function(){if(this.validate(4)){var t=this.data.getUint32(this._position,0==this.$endian);return this.position+=4,t}},i.prototype.readUnsignedShort=function(){if(this.validate(2)){var t=this.data.getUint16(this._position,0==this.$endian);return this.position+=2,t}},i.prototype.readUTF=function(){var t=this.readUnsignedShort();return t>0?this.readUTFBytes(t):""},i.prototype.readUTFBytes=function(t){if(this.validate(t)){var e=this.data,i=new Uint8Array(e.buffer,e.byteOffset+this._position,t);return this.position+=t,this.decodeUTF8(i)}},i.prototype.writeBoolean=function(t){this.validateBuffer(1),this._bytes[this.position++]=+t},i.prototype.writeByte=function(t){this.validateBuffer(1),this._bytes[this.position++]=255&t},i.prototype.writeBytes=function(t,e,i){void 0===e&&(e=0),void 0===i&&(i=0);var r;0>e||0>i||(r=0==i?t.length-e:Math.min(t.length-e,i),r>0&&(this.validateBuffer(r),this._bytes.set(t._bytes.subarray(e,e+r),this._position),this.position=this._position+r))},i.prototype.writeDouble=function(t){this.validateBuffer(8),this.data.setFloat64(this._position,t,0==this.$endian),this.position+=8},i.prototype.writeFloat=function(t){this.validateBuffer(4),this.data.setFloat32(this._position,t,0==this.$endian),this.position+=4},i.prototype.writeInt=function(t){this.validateBuffer(4),this.data.setInt32(this._position,t,0==this.$endian),this.position+=4},i.prototype.writeShort=function(t){this.validateBuffer(2),this.data.setInt16(this._position,t,0==this.$endian),this.position+=2},i.prototype.writeUnsignedInt=function(t){this.validateBuffer(4),this.data.setUint32(this._position,t,0==this.$endian),this.position+=4},i.prototype.writeUnsignedShort=function(t){this.validateBuffer(2),this.data.setUint16(this._position,t,0==this.$endian),this.position+=2},i.prototype.writeUTF=function(t){var e=this.encodeUTF8(t),i=e.length;this.validateBuffer(2+i),this.data.setUint16(this._position,i,0==this.$endian),this.position+=2,this._writeUint8Array(e,!1)},i.prototype.writeUTFBytes=function(t){this._writeUint8Array(this.encodeUTF8(t))},i.prototype.toString=function(){return"[ByteArray] length:"+this.length+", bytesAvailable:"+this.bytesAvailable},i.prototype._writeUint8Array=function(t,e){void 0===e&&(e=!0);var i=this._position,r=i+t.length;e&&this.validateBuffer(r),this.bytes.set(t,i),this.position=r},i.prototype.validate=function(e){var i=this._bytes.length;return i>0&&this._position+e<=i?!0:void t.$error(1025)},i.prototype.validateBuffer=function(t){this.write_position=t>this.write_position?t:this.write_position,t+=this._position,this._validateBuffer(t)},i.prototype.encodeUTF8=function(t){for(var e=0,i=this.stringToCodePoints(t),r=[];i.length>e;){var n=i[e++];if(this.inRange(n,55296,57343))this.encoderError(n);else if(this.inRange(n,0,127))r.push(n);else{var a=void 0,o=void 0;for(this.inRange(n,128,2047)?(a=1,o=192):this.inRange(n,2048,65535)?(a=2,o=224):this.inRange(n,65536,1114111)&&(a=3,o=240),r.push(this.div(n,Math.pow(64,a))+o);a>0;){var s=this.div(n,Math.pow(64,a-1));r.push(128+s%64),a-=1}}}return new Uint8Array(r)},i.prototype.decodeUTF8=function(t){for(var e,i=!1,r=0,n="",a=0,o=0,s=0,h=0;t.length>r;){var c=t[r++];if(c==this.EOF_byte)e=0!=o?this.decoderError(i):this.EOF_code_point;else if(0==o)this.inRange(c,0,127)?e=c:(this.inRange(c,194,223)?(o=1,h=128,a=c-192):this.inRange(c,224,239)?(o=2,h=2048,a=c-224):this.inRange(c,240,244)?(o=3,h=65536,a=c-240):this.decoderError(i),a*=Math.pow(64,o),e=null);else if(this.inRange(c,128,191))if(s+=1,a+=(c-128)*Math.pow(64,o-s),s!==o)e=null;else{var l=a,u=h;a=0,o=0,s=0,h=0,e=this.inRange(l,u,1114111)&&!this.inRange(l,55296,57343)?l:this.decoderError(i,c)}else a=0,o=0,s=0,h=0,r--,e=this.decoderError(i,c);null!==e&&e!==this.EOF_code_point&&(65535>=e?e>0&&(n+=String.fromCharCode(e)):(e-=65536,n+=String.fromCharCode(55296+(e>>10&1023)),n+=String.fromCharCode(56320+(1023&e))))}return n},i.prototype.encoderError=function(e){t.$error(1026,e)},i.prototype.decoderError=function(e,i){return e&&t.$error(1027),i||65533},i.prototype.inRange=function(t,e,i){return t>=e&&i>=t},i.prototype.div=function(t,e){return Math.floor(t/e)},i.prototype.stringToCodePoints=function(t){for(var e=[],i=0,r=t.length;i=0;l--){var u=s[l];if(!u.$maskedObject&&(c=u.$hitTest(e,i))){if(h=!0,c.$touchEnabled)break;c=null}}return c?this.$touchChildren?c:this:h?this:(c=t.DisplayObject.prototype.$hitTest.call(this,e,i),c&&(c=this.$graphics.$hitTest(e,i)),c)},i.prototype.$measureContentBounds=function(t){this.$graphics.$measureContentBounds(t)},i.prototype.$onRemoveFromStage=function(){e.prototype.$onRemoveFromStage.call(this),this.$graphics&&this.$graphics.$onRemoveFromStage()},i}(t.DisplayObjectContainer);t.Sprite=e,__reflect(e.prototype,"egret.Sprite")}(egret||(egret={}));var egret;!function(t){function e(t,e,i){var r=t.prototype;Object.defineProperty(r,"__class__",{value:e,enumerable:!1,writable:!0});var n=[e];i&&(n=n.concat(i));var a=r.__types__;if(r.__types__)for(var o=a.length,s=0;o>s;s++){var h=a[s];-1==n.indexOf(h)&&n.push(h)}Object.defineProperty(r,"__types__",{value:n,enumerable:!1,writable:!0})}t.registerClass=e}(egret||(egret={}));var egret;!function(t){t.BitmapFillMode={REPEAT:"repeat",SCALE:"scale",CLIP:"clip"}}(egret||(egret={}));var egret;!function(t){var e=function(){function t(){}return Object.defineProperty(t,"logLevel",{set:function(t){},enumerable:!0,configurable:!0}),t.ALL="all",t.DEBUG="debug",t.INFO="info",t.WARN="warn",t.ERROR="error",t.OFF="off",t}();t.Logger=e,__reflect(e.prototype,"egret.Logger") +}(egret||(egret={}));var egret;!function(t){var e=function(){function t(){}return t.isNumber=function(t){return"number"==typeof t&&!isNaN(t)},t.sin=function(e){var i=Math.floor(e),r=i+1,n=t.sinInt(i);if(i==e)return n;var a=t.sinInt(r);return(e-i)*a+(r-e)*n},t.sinInt=function(t){return t%=360,0>t&&(t+=360),egret_sin_map[t]},t.cos=function(e){var i=Math.floor(e),r=i+1,n=t.cosInt(i);if(i==e)return n;var a=t.cosInt(r);return(e-i)*a+(r-e)*n},t.cosInt=function(t){return t%=360,0>t&&(t+=360),egret_cos_map[t]},t.convertStringToHashCode=function(t){if(0===t.length)return 0;for(var e=0,i=0,r=t.length;r>i;++i){var n=t.charCodeAt(i);e=(e<<5)-e+n,e|=0}return e},t}();t.NumberUtils=e,__reflect(e.prototype,"egret.NumberUtils")}(egret||(egret={}));for(var egret_sin_map={},egret_cos_map={},DEG_TO_RAD=Math.PI/180,NumberUtils_i=0;360>NumberUtils_i;NumberUtils_i++)egret_sin_map[NumberUtils_i]=Math.sin(NumberUtils_i*DEG_TO_RAD),egret_cos_map[NumberUtils_i]=Math.cos(NumberUtils_i*DEG_TO_RAD);egret_sin_map[90]=1,egret_cos_map[90]=0,egret_sin_map[180]=0,egret_cos_map[180]=-1,egret_sin_map[270]=-1,egret_cos_map[270]=0,Function.prototype.bind||(Function.prototype.bind=function(t){"function"!=typeof this&&egret.$error(1029);var e=Array.prototype.slice.call(arguments,1),i=this,r=function(){},n=function(){return i.apply(this instanceof r&&t?this:t,e.concat(Array.prototype.slice.call(arguments)))};return r.prototype=this.prototype,n.prototype=new r,n});var egret;!function(t){var e=function(e){function i(t,i){void 0===i&&(i=0);var r=e.call(this)||this;return r._delay=0,r._currentCount=0,r._running=!1,r.updateInterval=1e3,r.lastCount=1e3,r.lastTimeStamp=0,r.delay=t,r.repeatCount=0|+i,r}return __extends(i,e),Object.defineProperty(i.prototype,"delay",{get:function(){return this._delay},set:function(t){1>t&&(t=1),this._delay!=t&&(this._delay=t,this.lastCount=this.updateInterval=Math.round(60*t))},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"currentCount",{get:function(){return this._currentCount},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"running",{get:function(){return this._running},enumerable:!0,configurable:!0}),i.prototype.reset=function(){this.stop(),this._currentCount=0},i.prototype.start=function(){this._running||(this.lastCount=this.updateInterval,this.lastTimeStamp=t.getTimer(),t.ticker.$startTick(this.$update,this),this._running=!0)},i.prototype.stop=function(){this._running&&(t.stopTick(this.$update,this),this._running=!1)},i.prototype.$update=function(e){var i=e-this.lastTimeStamp;if(i>=this._delay)this.lastCount=this.updateInterval;else{if(this.lastCount-=1e3,this.lastCount>0)return!1;this.lastCount+=this.updateInterval}this.lastTimeStamp=e,this._currentCount++;var r=this.repeatCount>0&&this._currentCount>=this.repeatCount;return(0==this.repeatCount||this._currentCount<=this.repeatCount)&&t.TimerEvent.dispatchTimerEvent(this,t.TimerEvent.TIMER),r&&(this.stop(),t.TimerEvent.dispatchTimerEvent(this,t.TimerEvent.TIMER_COMPLETE)),!1},i}(t.EventDispatcher);t.Timer=e,__reflect(e.prototype,"egret.Timer")}(egret||(egret={}));var egret;!function(t){}(egret||(egret={}));var egret;!function(t){function e(e,i){for(var r=[],n=2;na;a++){var o=r[a];if(e=e[o],!e)return null}return i[t]=e,e}var i={};t.getDefinitionByName=e}(egret||(egret={}));var egret;!function(t){}(egret||(egret={}));var egret;!function(t){function e(t){var e=typeof t;if(!t||"object"!=e&&!t.prototype)return e;var i=t.prototype?t.prototype:Object.getPrototypeOf(t);if(i.hasOwnProperty("__class__"))return i.__class__;var r=i.constructor.toString().trim(),n=r.indexOf("("),a=r.substring(9,n);return Object.defineProperty(i,"__class__",{value:a,enumerable:!1,writable:!0}),a}t.getQualifiedClassName=e}(egret||(egret={}));var egret;!function(t){function e(e){if(!e||"object"!=typeof e&&!e.prototype)return null;var i=e.prototype?e.prototype:Object.getPrototypeOf(e),r=Object.getPrototypeOf(i);if(!r)return null;var n=t.getQualifiedClassName(r.constructor);return n?n:null}t.getQualifiedSuperclassName=e}(egret||(egret={}));var egret;!function(t){function e(){return Date.now()-t.sys.$START_TIME}t.getTimer=e}(egret||(egret={}));var egret;!function(t){function e(e){var i=t.getDefinitionByName(e);return i?!0:!1}t.hasDefinition=e}(egret||(egret={}));var egret;!function(t){function e(t,e){if(!t||"object"!=typeof t)return!1;var i=Object.getPrototypeOf(t),r=i?i.__types__:null;return r?-1!==r.indexOf(e):!1}t.is=e}(egret||(egret={}));var egret;!function(t){function e(e,i){t.ticker.$startTick(e,i)}t.startTick=e}(egret||(egret={}));var egret;!function(t){function e(e,i){t.ticker.$stopTick(e,i)}t.stopTick=e}(egret||(egret={}));var egret;!function(t){function e(t){0>t&&(t=0),t>16777215&&(t=16777215);for(var e=t.toString(16).toUpperCase();e.length>6;)e=e.slice(1,e.length);for(;e.length<6;)e="0"+e;return"#"+e}t.toColorString=e}(egret||(egret={})); \ No newline at end of file diff --git a/bin-release/web/191201225322/js/egret.web.min_d1451e99.js b/bin-release/web/191201225322/js/egret.web.min_d1451e99.js new file mode 100644 index 0000000..f6c2006 --- /dev/null +++ b/bin-release/web/191201225322/js/egret.web.min_d1451e99.js @@ -0,0 +1,5 @@ +var __reflect=this&&this.__reflect||function(e,t,r){e.__class__=t,r?r.push(t):r=[t],e.__types__=e.__types__?r.concat(e.__types__):r},__extends=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);r.prototype=t.prototype,e.prototype=new r},egret;!function(e){var t;!function(t){var r=function(t){function r(r){var i=t.call(this)||this;return i.onUpdate=function(t){var r=new e.GeolocationEvent(e.Event.CHANGE),n=t.coords;r.altitude=n.altitude,r.heading=n.heading,r.accuracy=n.accuracy,r.latitude=n.latitude,r.longitude=n.longitude,r.speed=n.speed,r.altitudeAccuracy=n.altitudeAccuracy,i.dispatchEvent(r)},i.onError=function(t){var r=e.GeolocationEvent.UNAVAILABLE;t.code==t.PERMISSION_DENIED&&(r=e.GeolocationEvent.PERMISSION_DENIED);var n=new e.GeolocationEvent(e.IOErrorEvent.IO_ERROR);n.errorType=r,n.errorMessage=t.message,i.dispatchEvent(n)},i.geolocation=navigator.geolocation,i}return __extends(r,t),r.prototype.start=function(){var t=this.geolocation;t?this.watchId=t.watchPosition(this.onUpdate,this.onError):this.onError({code:2,message:e.sys.tr(3004),PERMISSION_DENIED:1,POSITION_UNAVAILABLE:2})},r.prototype.stop=function(){var e=this.geolocation;e.clearWatch(this.watchId)},r}(e.EventDispatcher);t.WebGeolocation=r,__reflect(r.prototype,"egret.web.WebGeolocation",["egret.Geolocation"])}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r=function(t){function r(){var r=null!==t&&t.apply(this,arguments)||this;return r.onChange=function(t){var i=new e.MotionEvent(e.Event.CHANGE),n={x:t.acceleration.x,y:t.acceleration.y,z:t.acceleration.z},a={x:t.accelerationIncludingGravity.x,y:t.accelerationIncludingGravity.y,z:t.accelerationIncludingGravity.z},o={alpha:t.rotationRate.alpha,beta:t.rotationRate.beta,gamma:t.rotationRate.gamma};i.acceleration=n,i.accelerationIncludingGravity=a,i.rotationRate=o,r.dispatchEvent(i)},r}return __extends(r,t),r.prototype.start=function(){window.addEventListener("devicemotion",this.onChange)},r.prototype.stop=function(){window.removeEventListener("devicemotion",this.onChange)},r}(e.EventDispatcher);t.WebMotion=r,__reflect(r.prototype,"egret.web.WebMotion",["egret.Motion"])}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){function r(e){if(window.location){var t=location.search;if(""==t)return"";t=t.slice(1);for(var r=t.split("&"),i=r.length,n=0;i>n;n++){var a=r[n],o=a.split("=");if(o[0]==e)return o[1]}}return""}t.getOption=r,e.getOption=r}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r=function(r){function i(t){var i=r.call(this)||this;return i.$startTime=0,i.audio=null,i.isStopped=!1,i.canPlay=function(){i.audio.removeEventListener("canplay",i.canPlay);try{i.audio.currentTime=i.$startTime}catch(e){}finally{i.audio.play()}},i.onPlayEnd=function(){return 1==i.$loops?(i.stop(),void i.dispatchEventWith(e.Event.SOUND_COMPLETE)):(i.$loops>0&&i.$loops--,void i.$play())},i._volume=1,t.addEventListener("ended",i.onPlayEnd),i.audio=t,i}return __extends(i,r),i.prototype.$play=function(){if(this.isStopped)return void e.$error(1036);try{this.audio.volume=this._volume,this.audio.currentTime=this.$startTime}catch(t){return void this.audio.addEventListener("canplay",this.canPlay)}this.audio.play()},i.prototype.stop=function(){if(this.audio){this.isStopped||e.sys.$popSoundChannel(this),this.isStopped=!0;var r=this.audio;r.removeEventListener("ended",this.onPlayEnd),r.removeEventListener("canplay",this.canPlay),r.volume=0,this._volume=0,this.audio=null;var i=this.$url;window.setTimeout(function(){r.pause(),t.HtmlSound.$recycle(i,r)},200)}},Object.defineProperty(i.prototype,"volume",{get:function(){return this._volume},set:function(t){return this.isStopped?void e.$error(1036):(this._volume=t,void(this.audio&&(this.audio.volume=t)))},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"position",{get:function(){return this.audio?this.audio.currentTime:0},enumerable:!0,configurable:!0}),i}(e.EventDispatcher);t.HtmlSoundChannel=r,__reflect(r.prototype,"egret.web.HtmlSoundChannel",["egret.SoundChannel","egret.IEventDispatcher"])}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r=function(){function t(){}return t.decodeAudios=function(){if(!(t.decodeArr.length<=0||t.isDecoding)){t.isDecoding=!0;var r=t.decodeArr.shift();t.ctx.decodeAudioData(r.buffer,function(e){r.self.audioBuffer=e,r.success&&r.success(),t.isDecoding=!1,t.decodeAudios()},function(){e.log("sound decode error"),r.fail&&r.fail(),t.isDecoding=!1,t.decodeAudios()})}},t.decodeArr=[],t.isDecoding=!1,t}();t.WebAudioDecode=r,__reflect(r.prototype,"egret.web.WebAudioDecode");var i=function(i){function n(){var e=i.call(this)||this;return e.loaded=!1,e}return __extends(n,i),Object.defineProperty(n.prototype,"length",{get:function(){if(this.audioBuffer)return this.audioBuffer.duration;throw new Error("sound not loaded!")},enumerable:!0,configurable:!0}),n.prototype.load=function(t){function i(){a.loaded=!0,a.dispatchEventWith(e.Event.COMPLETE)}function n(){a.dispatchEventWith(e.IOErrorEvent.IO_ERROR)}var a=this;this.url=t;var o=new XMLHttpRequest;o.open("GET",t,!0),o.responseType="arraybuffer",o.addEventListener("load",function(){var t=o.status>=400;t?a.dispatchEventWith(e.IOErrorEvent.IO_ERROR):(r.decodeArr.push({buffer:o.response,success:i,fail:n,self:a,url:a.url}),r.decodeAudios())}),o.addEventListener("error",function(){a.dispatchEventWith(e.IOErrorEvent.IO_ERROR)}),o.send()},n.prototype.play=function(r,i){r=+r||0,i=+i||0;var n=new t.WebAudioSoundChannel;return n.$url=this.url,n.$loops=i,n.$audioBuffer=this.audioBuffer,n.$startTime=r,n.$play(),e.sys.$pushSoundChannel(n),n},n.prototype.close=function(){},n.MUSIC="music",n.EFFECT="effect",n}(e.EventDispatcher);t.WebAudioSound=i,__reflect(i.prototype,"egret.web.WebAudioSound",["egret.Sound"])}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r=function(r){function i(){var i=r.call(this)||this;return i.$startTime=0,i.bufferSource=null,i.context=t.WebAudioDecode.ctx,i.isStopped=!1,i._currentTime=0,i._volume=1,i.onPlayEnd=function(){return 1==i.$loops?(i.stop(),void i.dispatchEventWith(e.Event.SOUND_COMPLETE)):(i.$loops>0&&i.$loops--,void i.$play())},i._startTime=0,i.context.createGain?i.gain=i.context.createGain():i.gain=i.context.createGainNode(),i}return __extends(i,r),i.prototype.$play=function(){if(this.isStopped)return void e.$error(1036);this.bufferSource&&(this.bufferSource.onended=null,this.bufferSource=null);var t=this.context,r=this.gain,i=t.createBufferSource();this.bufferSource=i,i.buffer=this.$audioBuffer,i.connect(r),r.connect(t.destination),i.onended=this.onPlayEnd,this._startTime=Date.now(),this.gain.gain.value=this._volume,i.start(0,this.$startTime),this._currentTime=0},i.prototype.stop=function(){if(this.bufferSource){var t=this.bufferSource;t.stop?t.stop(0):t.noteOff(0),t.onended=null,t.disconnect(),this.bufferSource=null,this.$audioBuffer=null}this.isStopped||e.sys.$popSoundChannel(this),this.isStopped=!0},Object.defineProperty(i.prototype,"volume",{get:function(){return this._volume},set:function(t){return this.isStopped?void e.$error(1036):(this._volume=t,void(this.gain.gain.value=t))},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"position",{get:function(){return this.bufferSource?(Date.now()-this._startTime)/1e3+this.$startTime:0},enumerable:!0,configurable:!0}),i}(e.EventDispatcher);t.WebAudioSoundChannel=r,__reflect(r.prototype,"egret.web.WebAudioSoundChannel",["egret.SoundChannel","egret.IEventDispatcher"])}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r=function(t){function r(r,i){void 0===i&&(i=!0);var n=t.call(this)||this;return n.loaded=!1,n.closed=!1,n.heightSet=0/0,n.widthSet=0/0,n.waiting=!1,n.userPause=!1,n.userPlay=!1,n.isPlayed=!1,n.screenChanged=function(t){var r=document.fullscreenEnabled||document.webkitIsFullScreen;r||(n.checkFullScreen(!1),e.Capabilities.isMobile||(n._fullscreen=r))},n._fullscreen=!0,n.onVideoLoaded=function(){n.video.removeEventListener("canplay",n.onVideoLoaded);var t=n.video;n.loaded=!0,n.posterData&&(n.posterData.width=n.getPlayWidth(),n.posterData.height=n.getPlayHeight()),t.width=t.videoWidth,t.height=t.videoHeight,window.setTimeout(function(){n.dispatchEventWith(e.Event.COMPLETE)},200)},n.$renderNode=new e.sys.BitmapNode,n.src=r,n.once(e.Event.ADDED_TO_STAGE,n.loadPoster,n),r&&n.load(),n}return __extends(r,t),r.prototype.createNativeDisplayObject=function(){this.$nativeDisplayObject=new egret_native.NativeDisplayObject(1)},r.prototype.load=function(t,r){var i=this;if(void 0===r&&(r=!0),t=t||this.src,this.src=t,!this.video||this.video.src!=t){var n;!this.video||e.Capabilities.isMobile?(n=document.createElement("video"),this.video=n,n.controls=null):n=this.video,n.src=t,n.setAttribute("autoplay","autoplay"),n.setAttribute("webkit-playsinline","true"),n.addEventListener("canplay",this.onVideoLoaded),n.addEventListener("error",function(){return i.onVideoError()}),n.addEventListener("ended",function(){return i.onVideoEnded()});var a=!1;n.addEventListener("canplay",function(){i.waiting=!1,a?i.userPause?i.pause():i.userPlay&&i.play():(a=!0,n.pause())}),n.addEventListener("waiting",function(){i.waiting=!0}),n.load(),this.videoPlay(),n.style.position="absolute",n.style.top="0px",n.style.zIndex="-88888",n.style.left="0px",n.height=1,n.width=1}},r.prototype.play=function(t,r){var i=this;if(void 0===r&&(r=!1),0==this.loaded)return this.load(this.src),void this.once(e.Event.COMPLETE,function(e){return i.play(t,r)},this);this.isPlayed=!0;var n=this.video;void 0!=t&&(n.currentTime=+t||0),n.loop=!!r,e.Capabilities.isMobile?n.style.zIndex="-88888":n.style.zIndex="9999",n.style.position="absolute",n.style.top="0px",n.style.left="0px",n.height=n.videoHeight,n.width=n.videoWidth,"Windows PC"!=e.Capabilities.os&&"Mac OS"!=e.Capabilities.os&&window.setTimeout(function(){n.width=0},1e3),this.checkFullScreen(this._fullscreen)},r.prototype.videoPlay=function(){return this.userPause=!1,this.waiting?void(this.userPlay=!0):(this.userPlay=!1,void this.video.play())},r.prototype.checkFullScreen=function(t){var r=this.video;if(t)null==r.parentElement&&(r.removeAttribute("webkit-playsinline"),document.body.appendChild(r)),e.stopTick(this.markDirty,this),this.goFullscreen();else if(null!=r.parentElement&&r.parentElement.removeChild(r),r.setAttribute("webkit-playsinline","true"),this.setFullScreenMonitor(!1),e.startTick(this.markDirty,this),e.Capabilities.isMobile)return this.video.currentTime=0,void this.onVideoEnded();this.videoPlay()},r.prototype.goFullscreen=function(){var t,r=this.video;return t=e.web.getPrefixStyleName("requestFullscreen",r),r[t]||(t=e.web.getPrefixStyleName("requestFullScreen",r),r[t])?(r.removeAttribute("webkit-playsinline"),r[t](),this.setFullScreenMonitor(!0),!0):!0},r.prototype.setFullScreenMonitor=function(e){var t=this.video;e?(t.addEventListener("mozfullscreenchange",this.screenChanged),t.addEventListener("webkitfullscreenchange",this.screenChanged),t.addEventListener("mozfullscreenerror",this.screenError),t.addEventListener("webkitfullscreenerror",this.screenError)):(t.removeEventListener("mozfullscreenchange",this.screenChanged),t.removeEventListener("webkitfullscreenchange",this.screenChanged),t.removeEventListener("mozfullscreenerror",this.screenError),t.removeEventListener("webkitfullscreenerror",this.screenError))},r.prototype.screenError=function(){e.$error(3014)},r.prototype.exitFullscreen=function(){document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.oCancelFullScreen?document.oCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()},r.prototype.onVideoEnded=function(){this.pause(),this.isPlayed=!1,this.dispatchEventWith(e.Event.ENDED)},r.prototype.onVideoError=function(){this.dispatchEventWith(e.IOErrorEvent.IO_ERROR)},r.prototype.close=function(){var e=this;this.closed=!0,this.video.removeEventListener("canplay",this.onVideoLoaded),this.video.removeEventListener("error",function(){return e.onVideoError()}),this.video.removeEventListener("ended",function(){return e.onVideoEnded()}),this.pause(),0==this.loaded&&this.video&&(this.video.src=""),this.video&&this.video.parentElement&&(this.video.parentElement.removeChild(this.video),this.video=null),this.loaded=!1},r.prototype.pause=function(){return this.userPlay=!1,this.waiting?void(this.userPause=!0):(this.userPause=!1,this.video.pause(),void e.stopTick(this.markDirty,this))},Object.defineProperty(r.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(e){this.video&&(this.video.volume=e)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"position",{get:function(){return this.video?this.video.currentTime:0},set:function(e){this.video&&(this.video.currentTime=e)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"fullscreen",{get:function(){return this._fullscreen},set:function(t){e.Capabilities.isMobile||(this._fullscreen=!!t,this.video&&0==this.video.paused&&this.checkFullScreen(this._fullscreen))},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"bitmapData",{get:function(){return this.video&&this.loaded?(this._bitmapData||(this.video.width=this.video.videoWidth,this.video.height=this.video.videoHeight,this._bitmapData=new e.BitmapData(this.video),this._bitmapData.$deleteSource=!1),this._bitmapData):null},enumerable:!0,configurable:!0}),r.prototype.loadPoster=function(){var t=this,r=this.poster;if(r){var i=new e.ImageLoader;i.once(e.Event.COMPLETE,function(r){i.data;if(t.posterData=i.data,t.$renderDirty=!0,t.posterData.width=t.getPlayWidth(),t.posterData.height=t.getPlayHeight(),e.nativeRender){var n=new e.Texture;n._setBitmapData(t.posterData),t.$nativeDisplayObject.setTexture(n)}},this),i.load(r)}},r.prototype.$measureContentBounds=function(e){var t=this.bitmapData,r=this.posterData;t?e.setTo(0,0,this.getPlayWidth(),this.getPlayHeight()):r?e.setTo(0,0,this.getPlayWidth(),this.getPlayHeight()):e.setEmpty()},r.prototype.getPlayWidth=function(){return isNaN(this.widthSet)?this.bitmapData?this.bitmapData.width:this.posterData?this.posterData.width:0/0:this.widthSet},r.prototype.getPlayHeight=function(){return isNaN(this.heightSet)?this.bitmapData?this.bitmapData.height:this.posterData?this.posterData.height:0/0:this.heightSet},r.prototype.$updateRenderNode=function(){var t=this.$renderNode,r=this.bitmapData,i=this.posterData,n=this.getPlayWidth(),a=this.getPlayHeight();this.isPlayed&&!e.Capabilities.isMobile||!i?this.isPlayed&&r&&(t.image=r,t.imageWidth=r.width,t.imageHeight=r.height,e.WebGLUtils.deleteWebGLTexture(r.webGLTexture),r.webGLTexture=null,t.drawImage(0,0,r.width,r.height,0,0,n,a)):(t.image=i,t.imageWidth=n,t.imageHeight=a,t.drawImage(0,0,i.width,i.height,0,0,n,a))},r.prototype.markDirty=function(){return this.$renderDirty=!0,!0},r.prototype.$setHeight=function(e){if(this.heightSet=e,this.paused){var r=this;this.$renderDirty=!0,window.setTimeout(function(){r.$renderDirty=!1},200)}t.prototype.$setHeight.call(this,e)},r.prototype.$setWidth=function(e){if(this.widthSet=e,this.paused){var r=this;this.$renderDirty=!0,window.setTimeout(function(){r.$renderDirty=!1},200)}t.prototype.$setWidth.call(this,e)},Object.defineProperty(r.prototype,"paused",{get:function(){return this.video?this.video.paused:!0},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"length",{get:function(){if(this.video)return this.video.duration;throw new Error("Video not loaded!")},enumerable:!0,configurable:!0}),r}(e.DisplayObject);t.WebVideo=r,__reflect(r.prototype,"egret.web.WebVideo",["egret.Video","egret.DisplayObject"]),e.Video=r}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r=function(t){function r(){var e=t.call(this)||this;return e.timeout=0,e._url="",e._method="",e}return __extends(r,t),Object.defineProperty(r.prototype,"response",{get:function(){if(!this._xhr)return null;if(void 0!=this._xhr.response)return this._xhr.response;if("text"==this._responseType)return this._xhr.responseText;if("arraybuffer"==this._responseType&&/msie 9.0/i.test(navigator.userAgent)){var e=window;return e.convertResponseBodyToText(this._xhr.responseBody)}return"document"==this._responseType?this._xhr.responseXML:null},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"responseType",{get:function(){return this._responseType},set:function(e){this._responseType=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"withCredentials",{get:function(){return this._withCredentials},set:function(e){this._withCredentials=e},enumerable:!0,configurable:!0}),r.prototype.getXHR=function(){return window.XMLHttpRequest?new window.XMLHttpRequest:new ActiveXObject("MSXML2.XMLHTTP")},r.prototype.open=function(e,t){void 0===t&&(t="GET"),this._url=e,this._method=t,this._xhr&&(this._xhr.abort(),this._xhr=null);var r=this.getXHR();window.XMLHttpRequest?(r.addEventListener("load",this.onload.bind(this)),r.addEventListener("error",this.onerror.bind(this))):r.onreadystatechange=this.onReadyStateChange.bind(this),r.onprogress=this.updateProgress.bind(this),r.ontimeout=this.onTimeout.bind(this),r.open(this._method,this._url,!0),this._xhr=r},r.prototype.send=function(e){if(null!=this._responseType&&(this._xhr.responseType=this._responseType),null!=this._withCredentials&&(this._xhr.withCredentials=this._withCredentials),this.headerObj)for(var t in this.headerObj)this._xhr.setRequestHeader(t,this.headerObj[t]);this._xhr.timeout=this.timeout,this._xhr.send(e)},r.prototype.abort=function(){this._xhr&&this._xhr.abort()},r.prototype.getAllResponseHeaders=function(){if(!this._xhr)return null;var e=this._xhr.getAllResponseHeaders();return e?e:""},r.prototype.setRequestHeader=function(e,t){this.headerObj||(this.headerObj={}),this.headerObj[e]=t},r.prototype.getResponseHeader=function(e){if(!this._xhr)return null;var t=this._xhr.getResponseHeader(e);return t?t:""},r.prototype.onTimeout=function(){this.dispatchEventWith(e.IOErrorEvent.IO_ERROR)},r.prototype.onReadyStateChange=function(){var t=this._xhr;if(4==t.readyState){var r=t.status>=400||0==t.status,i=(this._url,this);window.setTimeout(function(){r?i.dispatchEventWith(e.IOErrorEvent.IO_ERROR):i.dispatchEventWith(e.Event.COMPLETE)},0)}},r.prototype.updateProgress=function(t){t.lengthComputable&&e.ProgressEvent.dispatchProgressEvent(this,e.ProgressEvent.PROGRESS,t.loaded,t.total)},r.prototype.onload=function(){var t=this,r=this._xhr,i=(this._url,r.status>=400);window.setTimeout(function(){i?t.dispatchEventWith(e.IOErrorEvent.IO_ERROR):t.dispatchEventWith(e.Event.COMPLETE)},0)},r.prototype.onerror=function(){var t=(this._url,this);window.setTimeout(function(){t.dispatchEventWith(e.IOErrorEvent.IO_ERROR)},0)},r}(e.EventDispatcher);t.WebHttpRequest=r,__reflect(r.prototype,"egret.web.WebHttpRequest",["egret.HttpRequest"]),e.HttpRequest=r}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r=window.URL||window.webkitURL,i=function(i){function n(){var e=null!==i&&i.apply(this,arguments)||this;return e.data=null,e._crossOrigin=null,e._hasCrossOriginSet=!1,e.currentImage=null,e.request=null,e}return __extends(n,i),Object.defineProperty(n.prototype,"crossOrigin",{get:function(){return this._crossOrigin},set:function(e){this._hasCrossOriginSet=!0,this._crossOrigin=e},enumerable:!0,configurable:!0}),n.prototype.load=function(r){if(t.Html5Capatibility._canUseBlob&&0!=r.indexOf("wxLocalResource:")&&0!=r.indexOf("data:")&&0!=r.indexOf("http:")&&0!=r.indexOf("https:")){var i=this.request;i||(i=this.request=new e.web.WebHttpRequest,i.addEventListener(e.Event.COMPLETE,this.onBlobLoaded,this),i.addEventListener(e.IOErrorEvent.IO_ERROR,this.onBlobError,this),i.responseType="blob"),i.open(r),i.send()}else this.loadImage(r)},n.prototype.onBlobLoaded=function(e){var t=this.request.response;this.request=void 0,this.loadImage(r.createObjectURL(t))},n.prototype.onBlobError=function(e){this.dispatchIOError(this.currentURL),this.request=void 0},n.prototype.loadImage=function(e){var t=new Image;this.data=null,this.currentImage=t,this._hasCrossOriginSet?this._crossOrigin&&(t.crossOrigin=this._crossOrigin):n.crossOrigin&&(t.crossOrigin=n.crossOrigin),t.onload=this.onImageComplete.bind(this),t.onerror=this.onLoadError.bind(this),t.src=e},n.prototype.onImageComplete=function(t){var r=this.getImage(t);if(r){this.data=new e.BitmapData(r);var i=this;window.setTimeout(function(){i.dispatchEventWith(e.Event.COMPLETE)},0)}},n.prototype.onLoadError=function(e){var t=this.getImage(e);t&&this.dispatchIOError(t.src)},n.prototype.dispatchIOError=function(t){var r=this;window.setTimeout(function(){r.dispatchEventWith(e.IOErrorEvent.IO_ERROR)},0)},n.prototype.getImage=function(t){var i=t.target,n=i.src;if(0==n.indexOf("blob:"))try{r.revokeObjectURL(i.src)}catch(a){e.$warn(1037)}return i.onerror=null,i.onload=null,this.currentImage!==i?null:(this.currentImage=null,i)},n.crossOrigin=null,n}(e.EventDispatcher);t.WebImageLoader=i,__reflect(i.prototype,"egret.web.WebImageLoader",["egret.ImageLoader"]),e.ImageLoader=i}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r=function(t){function r(){var e=t.call(this)||this;return e._isNeedShow=!1,e.inputElement=null,e.inputDiv=null,e._gscaleX=0,e._gscaleY=0,e.textValue="",e.colorValue=16777215,e._styleInfoes={},e}return __extends(r,t),r.prototype.$setTextField=function(e){return this.$textfield=e,!0},r.prototype.$addToStage=function(){this.htmlInput=e.web.$getTextAdapter(this.$textfield)},r.prototype._initElement=function(){var t=this.$textfield.localToGlobal(0,0),r=t.x,i=t.y,n=this.htmlInput.$scaleX,a=this.htmlInput.$scaleY;this.inputDiv.style.left=r*n+"px",this.inputDiv.style.top=i*a+"px",this.$textfield.multiline&&this.$textfield.height>this.$textfield.size?(this.inputDiv.style.top=i*a+"px",this.inputElement.style.top=-this.$textfield.lineSpacing/2*a+"px"):(this.inputDiv.style.top=i*a+"px",this.inputElement.style.top="0px");for(var o=this.$textfield,s=1,l=1,c=0;o.parent;)s*=o.scaleX,l*=o.scaleY,c+=o.rotation,o=o.parent;var h=e.web.getPrefixStyleName("transform");this.inputDiv.style[h]="rotate("+c+"deg)",this._gscaleX=n*s,this._gscaleY=a*l},r.prototype.$show=function(){this.htmlInput.isCurrentStageText(this)?this.inputElement.onblur=null:(this.inputElement=this.htmlInput.getInputElement(this),this.$textfield.multiline?this.inputElement.type="text":this.inputElement.type=this.$textfield.inputType,this.inputDiv=this.htmlInput._inputDIV),this.htmlInput._needShow=!0,this._isNeedShow=!0,this._initElement()},r.prototype.onBlurHandler=function(){this.htmlInput.clearInputElement(),window.scrollTo(0,0)},r.prototype.onFocusHandler=function(){var e=this;window.setTimeout(function(){e.inputElement&&e.inputElement.scrollIntoView()},200)},r.prototype.executeShow=function(){this.inputElement.value=this.$getText(),null==this.inputElement.onblur&&(this.inputElement.onblur=this.onBlurHandler.bind(this)),null==this.inputElement.onfocus&&(this.inputElement.onfocus=this.onFocusHandler.bind(this)),this.$resetStageText(),this.$textfield.maxChars>0?this.inputElement.setAttribute("maxlength",this.$textfield.maxChars):this.inputElement.removeAttribute("maxlength"),this.inputElement.selectionStart=this.inputElement.value.length,this.inputElement.selectionEnd=this.inputElement.value.length,this.inputElement.focus()},r.prototype.$hide=function(){this.htmlInput&&this.htmlInput.disconnectStageText(this)},r.prototype.$getText=function(){return this.textValue||(this.textValue=""),this.textValue},r.prototype.$setText=function(e){return this.textValue=e,this.resetText(),!0},r.prototype.resetText=function(){this.inputElement&&(this.inputElement.value=this.textValue)},r.prototype.$setColor=function(e){return this.colorValue=e,this.resetColor(),!0},r.prototype.resetColor=function(){this.inputElement&&this.setElementStyle("color",e.toColorString(this.colorValue))},r.prototype.$onBlur=function(){},r.prototype._onInput=function(){var t=this;window.setTimeout(function(){t.inputElement&&t.inputElement.selectionStart==t.inputElement.selectionEnd&&(t.textValue=t.inputElement.value,e.Event.dispatchEvent(t,"updateText",!1))},0)},r.prototype.setAreaHeight=function(){var t=this.$textfield;if(t.multiline){var r=e.TextFieldUtils.$getTextHeight(t);if(t.height<=t.size)this.setElementStyle("height",t.size*this._gscaleY+"px"),this.setElementStyle("padding","0px"),this.setElementStyle("lineHeight",t.size*this._gscaleY+"px");else if(t.height=0&&(a=o[s],void 0===n[a]);s--);try{Object.defineProperty(n,"imageSmoothingEnabled",{get:function(){return this[a]},set:function(e){this[a]=e}})}catch(l){n.imageSmoothingEnabled=n[a]}}return i}var i=function(){function t(t,i,n){this.surface=e.sys.createCanvasRenderBufferSurface(r,t,i,n),this.context=this.surface.getContext("2d"),this.context&&(this.context.$offsetX=0,this.context.$offsetY=0),this.resize(t,i) +}return Object.defineProperty(t.prototype,"width",{get:function(){return this.surface.width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){return this.surface.height},enumerable:!0,configurable:!0}),t.prototype.resize=function(t,r,i){e.sys.resizeCanvasRenderBuffer(this,t,r,i)},t.prototype.getPixels=function(e,t,r,i){return void 0===r&&(r=1),void 0===i&&(i=1),this.context.getImageData(e,t,r,i).data},t.prototype.toDataURL=function(e,t){return this.surface.toDataURL(e,t)},t.prototype.clear=function(){this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.surface.width,this.surface.height)},t.prototype.destroy=function(){this.surface.width=this.surface.height=0},t}();t.CanvasRenderBuffer=i,__reflect(i.prototype,"egret.web.CanvasRenderBuffer",["egret.sys.RenderBuffer"])}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r=function(t){function r(r,i){var n=t.call(this)||this;return n.onTouchBegin=function(e){var t=n.getLocation(e);n.touch.onTouchBegin(t.x,t.y,e.identifier)},n.onMouseMove=function(e){0==e.buttons?n.onTouchEnd(e):n.onTouchMove(e)},n.onTouchMove=function(e){var t=n.getLocation(e);n.touch.onTouchMove(t.x,t.y,e.identifier)},n.onTouchEnd=function(e){var t=n.getLocation(e);n.touch.onTouchEnd(t.x,t.y,e.identifier)},n.scaleX=1,n.scaleY=1,n.rotation=0,n.canvas=i,n.touch=new e.sys.TouchHandler(r),n.addListeners(),n}return __extends(r,t),r.prototype.addListeners=function(){var t=this;window.navigator.msPointerEnabled?(this.canvas.addEventListener("MSPointerDown",function(e){e.identifier=e.pointerId,t.onTouchBegin(e),t.prevent(e)},!1),this.canvas.addEventListener("MSPointerMove",function(e){e.identifier=e.pointerId,t.onTouchMove(e),t.prevent(e)},!1),this.canvas.addEventListener("MSPointerUp",function(e){e.identifier=e.pointerId,t.onTouchEnd(e),t.prevent(e)},!1)):(e.Capabilities.isMobile||this.addMouseListener(),this.addTouchListener())},r.prototype.addMouseListener=function(){this.canvas.addEventListener("mousedown",this.onTouchBegin),this.canvas.addEventListener("mousemove",this.onMouseMove),this.canvas.addEventListener("mouseup",this.onTouchEnd)},r.prototype.addTouchListener=function(){var e=this;this.canvas.addEventListener("touchstart",function(t){for(var r=t.changedTouches.length,i=0;r>i;i++)e.onTouchBegin(t.changedTouches[i]);e.prevent(t)},!1),this.canvas.addEventListener("touchmove",function(t){for(var r=t.changedTouches.length,i=0;r>i;i++)e.onTouchMove(t.changedTouches[i]);e.prevent(t)},!1),this.canvas.addEventListener("touchend",function(t){for(var r=t.changedTouches.length,i=0;r>i;i++)e.onTouchEnd(t.changedTouches[i]);e.prevent(t)},!1),this.canvas.addEventListener("touchcancel",function(t){for(var r=t.changedTouches.length,i=0;r>i;i++)e.onTouchEnd(t.changedTouches[i]);e.prevent(t)},!1)},r.prototype.prevent=function(e){e.stopPropagation(),1==e.isScroll||this.canvas.userTyping||e.preventDefault()},r.prototype.getLocation=function(t){t.identifier=+t.identifier||0;var r=document.documentElement,i=this.canvas.getBoundingClientRect(),n=i.left+window.pageXOffset-r.clientLeft,a=i.top+window.pageYOffset-r.clientTop,o=t.pageX-n,s=o,l=t.pageY-a,c=l;return 90==this.rotation?(s=l,c=i.width-o):-90==this.rotation&&(s=i.height-l,c=o),s/=this.scaleX,c/=this.scaleY,e.$TempPoint.setTo(Math.round(s),Math.round(c))},r.prototype.updateScaleMode=function(e,t,r){this.scaleX=e,this.scaleY=t,this.rotation=r},r.prototype.$updateMaxTouches=function(){this.touch.$initMaxTouches()},r}(e.HashObject);t.WebTouchHandler=r,__reflect(r.prototype,"egret.web.WebTouchHandler")}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(e){e.WebLifeCycleHandler=function(e){var t=function(){document[r]?e.pause():e.resume()};window.addEventListener("focus",e.resume,!1),window.addEventListener("blur",e.pause,!1);var r,i;"undefined"!=typeof document.hidden?(r="hidden",i="visibilitychange"):"undefined"!=typeof document.mozHidden?(r="mozHidden",i="mozvisibilitychange"):"undefined"!=typeof document.msHidden?(r="msHidden",i="msvisibilitychange"):"undefined"!=typeof document.webkitHidden?(r="webkitHidden",i="webkitvisibilitychange"):"undefined"!=typeof document.oHidden&&(r="oHidden",i="ovisibilitychange"),"onpageshow"in window&&"onpagehide"in window&&(window.addEventListener("pageshow",e.resume,!1),window.addEventListener("pagehide",e.pause,!1)),r&&i&&document.addEventListener(i,t,!1);var n=navigator.userAgent,a=/micromessenger/gi.test(n),o=/mqq/gi.test(n),s=/mobile.*qq/gi.test(n);if((s||a)&&(o=!1),o){var l=window.browser||{};l.execWebFn=l.execWebFn||{},l.execWebFn.postX5GamePlayerMessage=function(t){var r=t.type;"app_enter_background"==r?e.pause():"app_enter_foreground"==r&&e.resume()},window.browser=l}}}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){function r(e,t){var r="";if(null!=t)r=i(e,t);else{if(null==o){var n=document.createElement("div").style;o=i("transform",n)}r=o}return""==r?e:r+e.charAt(0).toUpperCase()+e.substring(1,e.length)}function i(e,t){if(e in t)return"";e=e.charAt(0).toUpperCase()+e.substring(1,e.length);for(var r=["webkit","ms","Moz","O"],i=0;i=0||r.indexOf("ipad")>=0||r.indexOf("ipod")>=0;if(a)try{t.WebAudioDecode.ctx=new(window.AudioContext||window.webkitAudioContext||window.mozAudioContext)}catch(s){a=!1}var l,c=i._audioType;c==n.WEB_AUDIO&&a||c==n.HTML5_AUDIO?(l=!1,i.setAudioType(c)):!o&&r.indexOf("safari")>=0&&-1===r.indexOf("chrome")?(l=!1,i.setAudioType(n.WEB_AUDIO)):(l=!0,i.setAudioType(n.HTML5_AUDIO)),r.indexOf("android")>=0?l&&a&&i.setAudioType(n.WEB_AUDIO):o&&i.getIOSVersion()>=7&&(i._canUseBlob=!0,l&&a&&i.setAudioType(n.WEB_AUDIO));var h=window.URL||window.webkitURL;h||(i._canUseBlob=!1),r.indexOf("egretnative")>=0&&(i.setAudioType(n.HTML5_AUDIO),i._canUseBlob=!0),e.Sound=i._AudioClass},i.setAudioType=function(t){switch(i._audioType=t,t){case n.WEB_AUDIO:i._AudioClass=e.web.WebAudioSound;break;case n.HTML5_AUDIO:i._AudioClass=e.web.HtmlSound}},i.getIOSVersion=function(){var e=i.ua.toLowerCase().match(/cpu [^\d]*\d.*like mac os x/);if(!e||0==e.length)return 0;var t=e[0];return parseInt(t.match(/\d+(_\d)*/)[0])||0},i._canUseBlob=!1,i._audioType=0,i.ua="",i}(e.HashObject);t.Html5Capatibility=a,__reflect(a.prototype,"egret.web.Html5Capatibility");var o=null;t.getPrefixStyleName=r,t.getPrefix=i}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){function r(e,t){return i(e,t)}function i(e,t){var r=document.createElement("canvas");return isNaN(e)||isNaN(t)||(r.width=e,r.height=t),r}function n(e,t,r,i){if(e){var n=e,a=n.surface;i?(a.widthr;r++){var i=e[r],n=i["egret-player"];n.updateScreenSize()}}function i(r){if(!s){s=!0,r||(r={});var i=navigator.userAgent.toLowerCase();if(i.indexOf("egretnative")>=0&&-1==i.indexOf("egretwebview")&&(e.Capabilities.runtimeType=e.RuntimeType.RUNTIME2),i.indexOf("egretnative")>=0&&e.nativeRender)egret_native.addModuleCallback(function(){if(t.Html5Capatibility.$init(),"webgl"==r.renderMode){var i=r.antialias;t.WebGLRenderContext.antialias=!!i}e.sys.CanvasRenderBuffer=t.CanvasRenderBuffer,n(r.renderMode),egret_native.nrSetRenderMode(2);var s;s=r.canvasScaleFactor?r.canvasScaleFactor:r.calculateCanvasScaleFactor?r.calculateCanvasScaleFactor(e.sys.canvasHitTestBuffer.context):window.devicePixelRatio,e.sys.DisplayList.$canvasScaleFactor=s;var c=e.ticker;a(c),r.screenAdapter?e.sys.screenAdapter=r.screenAdapter:e.sys.screenAdapter||(e.sys.screenAdapter=new e.sys.DefaultScreenAdapter);for(var h=document.querySelectorAll(".egret-player"),u=h.length,d=0;u>d;d++){var f=h[d],p=new t.WebPlayer(f,r);f["egret-player"]=p}window.addEventListener("resize",function(){isNaN(l)&&(l=window.setTimeout(o,300))})},null),egret_native.initNativeRender();else{t.Html5Capatibility._audioType=r.audioType,t.Html5Capatibility.$init();var c=r.renderMode;if("webgl"==c){var h=r.antialias;t.WebGLRenderContext.antialias=!!h}e.sys.CanvasRenderBuffer=t.CanvasRenderBuffer,i.indexOf("egretnative")>=0&&"webgl"!=c&&(e.$warn(1051),c="webgl"),n(c);var u=void 0;if(r.canvasScaleFactor)u=r.canvasScaleFactor;else if(r.calculateCanvasScaleFactor)u=r.calculateCanvasScaleFactor(e.sys.canvasHitTestBuffer.context);else{var d=e.sys.canvasHitTestBuffer.context,f=d.backingStorePixelRatio||d.webkitBackingStorePixelRatio||d.mozBackingStorePixelRatio||d.msBackingStorePixelRatio||d.oBackingStorePixelRatio||d.backingStorePixelRatio||1;u=(window.devicePixelRatio||1)/f}e.sys.DisplayList.$canvasScaleFactor=u;var p=e.ticker;a(p),r.screenAdapter?e.sys.screenAdapter=r.screenAdapter:e.sys.screenAdapter||(e.sys.screenAdapter=new e.sys.DefaultScreenAdapter);for(var v=document.querySelectorAll(".egret-player"),g=v.length,x=0;g>x;x++){var y=v[x],m=new t.WebPlayer(y,r);y["egret-player"]=m}window.addEventListener("resize",function(){isNaN(l)&&(l=window.setTimeout(o,300))})}}}function n(r){"webgl"==r&&e.WebGLUtils.checkCanUseWebGL()?(e.sys.RenderBuffer=t.WebGLRenderBuffer,e.sys.systemRenderer=new t.WebGLRenderer,e.sys.canvasRenderer=new e.CanvasRenderer,e.sys.customHitTestBuffer=new t.WebGLRenderBuffer(3,3),e.sys.canvasHitTestBuffer=new t.CanvasRenderBuffer(3,3),e.Capabilities.renderMode="webgl"):(e.sys.RenderBuffer=t.CanvasRenderBuffer,e.sys.systemRenderer=new e.CanvasRenderer,e.sys.canvasRenderer=e.sys.systemRenderer,e.sys.customHitTestBuffer=new t.CanvasRenderBuffer(3,3),e.sys.canvasHitTestBuffer=e.sys.customHitTestBuffer,e.Capabilities.renderMode="canvas")}function a(e){function t(){r(t),e.update()}var r=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame;r||(r=function(e){return window.setTimeout(e,1e3/60)}),r(t)}function o(){l=0/0,e.updateAllScreens()}var s=!1;window.isNaN=function(e){return e=+e,e!==e},e.runEgret=i,e.updateAllScreens=r;var l=0/0}(t=e.web||(e.web={}))}(egret||(egret={}));var language,egret;!function(e){var t;!function(t){var r=function(){function t(){}return t.detect=function(){var r=e.Capabilities,i=navigator.userAgent.toLowerCase();r.isMobile=-1!=i.indexOf("mobile")||-1!=i.indexOf("android"),r.isMobile?i.indexOf("windows")<0&&(-1!=i.indexOf("iphone")||-1!=i.indexOf("ipad")||-1!=i.indexOf("ipod"))?r.os="iOS":-1!=i.indexOf("android")&&-1!=i.indexOf("linux")?r.os="Android":-1!=i.indexOf("windows")&&(r.os="Windows Phone"):-1!=i.indexOf("windows nt")?r.os="Windows PC":"MacIntel"==navigator.platform&&navigator.maxTouchPoints>1?(r.os="iOS",r.isMobile=!0):-1!=i.indexOf("mac os")&&(r.os="Mac OS");var n=(navigator.language||navigator.browserLanguage).toLowerCase(),a=n.split("-");a.length>1&&(a[1]=a[1].toUpperCase()),r.language=a.join("-"),t.injectUIntFixOnIE9()},t.injectUIntFixOnIE9=function(){if(/msie 9.0/i.test(navigator.userAgent)&&!/opera/i.test(navigator.userAgent)){var e="\r\n\r\n\r\n\r\n";document.write(e)}},t}();t.WebCapability=r,__reflect(r.prototype,"egret.web.WebCapability"),r.detect()}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r=function(){function t(t,r,i,n,a){if(this.showPanle=!0,this.fpsHeight=0,this.WIDTH=101,this.HEIGHT=20,this.bgCanvasColor="#18304b",this.fpsFrontColor="#18fefe",this.WIDTH_COST=50,this.cost1Color="#18fefe",this.cost3Color="#ff0000",this.arrFps=[],this.arrCost=[],this.arrLog=[],r||i){"canvas"==e.Capabilities.renderMode?this.renderMode="Canvas":this.renderMode="WebGL",this.panelX=void 0===a.x?0:parseInt(a.x),this.panelY=void 0===a.y?0:parseInt(a.y),this.fontColor=void 0===a.textColor?"#ffffff":a.textColor.replace("0x","#"),this.fontSize=void 0===a.size?12:parseInt(a.size),e.Capabilities.isMobile&&(this.fontSize-=2);var o=document.createElement("div");o.style.position="absolute",o.style.background="rgba(0,0,0,"+a.bgAlpha+")",o.style.left=this.panelX+"px",o.style.top=this.panelY+"px",o.style.pointerEvents="none",o.id="egret-fps-panel",document.body.appendChild(o);var s=document.createElement("div");s.style.color=this.fontColor,s.style.fontSize=this.fontSize+"px",s.style.lineHeight=this.fontSize+"px",s.style.margin="4px 4px 4px 4px",this.container=s,o.appendChild(s),r&&this.addFps(),i&&this.addLog()}}return t.prototype.addFps=function(){var e=document.createElement("div");e.style.display="inline-block",this.containerFps=e,this.container.appendChild(e);var t=document.createElement("div");t.style.paddingBottom="2px",this.fps=t,this.containerFps.appendChild(t),t.innerHTML="0 FPS "+this.renderMode+"
min0 max0 avg0";var r=document.createElement("canvas");this.containerFps.appendChild(r),r.width=this.WIDTH,r.height=this.HEIGHT,this.canvasFps=r;var i=r.getContext("2d");this.contextFps=i,i.fillStyle=this.bgCanvasColor,i.fillRect(0,0,this.WIDTH,this.HEIGHT);var n=document.createElement("div");this.divDatas=n,this.containerFps.appendChild(n);var a=document.createElement("div");a.style["float"]="left",a.innerHTML="Draw
Cost",n.appendChild(a);var o=document.createElement("div");o.style.paddingLeft=a.offsetWidth+20+"px",n.appendChild(o);var s=document.createElement("div");this.divDraw=s,s.innerHTML="0
",o.appendChild(s);var l=document.createElement("div");this.divCost=l,l.innerHTML='0 0',o.appendChild(l),r=document.createElement("canvas"),this.canvasCost=r,this.containerFps.appendChild(r),r.width=this.WIDTH,r.height=this.HEIGHT,i=r.getContext("2d"),this.contextCost=i,i.fillStyle=this.bgCanvasColor,i.fillRect(0,0,this.WIDTH,this.HEIGHT),i.fillStyle="#000000",i.fillRect(this.WIDTH_COST,0,1,this.HEIGHT),this.fpsHeight=this.container.offsetHeight},t.prototype.addLog=function(){var e=document.createElement("div");e.style.maxWidth=document.body.clientWidth-8-this.panelX+"px",e.style.wordWrap="break-word",this.log=e,this.container.appendChild(e)},t.prototype.update=function(e,t){void 0===t&&(t=!1);var r,i,n;t?(r=this.arrFps[this.arrFps.length-1],i=this.arrCost[this.arrCost.length-1][0],n=this.arrCost[this.arrCost.length-1][1]):(r=e.fps,i=e.costTicker,n=e.costRender,this.lastNumDraw=e.draw,this.arrFps.push(r),this.arrCost.push([i,n]));var a=0,o=this.arrFps.length;o>101&&(o=101,this.arrFps.shift(),this.arrCost.shift());for(var s=this.arrFps[0],l=this.arrFps[0],c=0;o>c;c++){var h=this.arrFps[c];a+=h,s>h?s=h:h>l&&(l=h)}var u=this.WIDTH,d=this.HEIGHT,f=this.contextFps;f.drawImage(this.canvasFps,1,0,u-1,d,0,0,u-1,d),f.fillStyle=this.bgCanvasColor,f.fillRect(u-1,0,1,d);var p=Math.floor(r/60*20);1>p&&(p=1),f.fillStyle=this.fpsFrontColor,f.fillRect(u-1,20-p,1,p);var v=this.WIDTH_COST;f=this.contextCost,f.drawImage(this.canvasCost,1,0,v-1,d,0,0,v-1,d),f.drawImage(this.canvasCost,v+2,0,v-1,d,v+1,0,v-1,d);var g=Math.floor(i/2);1>g?g=1:g>20&&(g=20);var x=Math.floor(n/2);1>x?x=1:x>20&&(x=20),f.fillStyle=this.bgCanvasColor,f.fillRect(v-1,0,1,d),f.fillRect(2*v,0,1,d),f.fillRect(3*v+1,0,1,d),f.fillStyle=this.cost1Color,f.fillRect(v-1,20-g,1,g),f.fillStyle=this.cost3Color,f.fillRect(2*v,20-x,1,x);var y=Math.floor(a/o),m=r+" FPS "+this.renderMode;this.showPanle&&(m+="
min"+s+" max"+l+" avg"+y,this.divDraw.innerHTML=this.lastNumDraw+"
",this.divCost.innerHTML=''+i+' '+n+""),this.fps.innerHTML=m},t.prototype.updateInfo=function(e){this.arrLog.push(e),this.updateLogLayout()},t.prototype.updateWarn=function(e){this.arrLog.push("[Warning]"+e),this.updateLogLayout()},t.prototype.updateError=function(e){this.arrLog.push("[Error]"+e),this.updateLogLayout()},t.prototype.updateLogLayout=function(){for(this.log.innerHTML=this.arrLog.join("
");document.body.clientHeight")},t}();t.WebFps=r,__reflect(r.prototype,"egret.web.WebFps",["egret.FPSDisplay"]),e.FPSDisplay=r}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r;!function(r){function i(e){return window.localStorage.getItem(e)}function n(t,r){try{return window.localStorage.setItem(t,r),!0}catch(i){return e.$warn(1047,t,r),!1}}function a(e){window.localStorage.removeItem(e)}function o(){window.localStorage.clear()}t.getItem=i,t.setItem=n,t.removeItem=a,t.clear=o}(r=t.web||(t.web={}))}(t=e.localStorage||(e.localStorage={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r=function(r){function i(e,t){var i=r.call(this)||this;return i.init(e,t),i.initOrientation(),i}return __extends(i,r),i.prototype.init=function(r,i){console.log("Egret Engine Version:",e.Capabilities.engineVersion);var n=this.readOption(r,i),a=new e.Stage;a.$screen=this,a.$scaleMode=n.scaleMode,a.$orientation=n.orientation,a.$maxTouches=n.maxTouches,a.frameRate=n.frameRate,a.textureScaleFactor=n.textureScaleFactor;var o=new e.sys.RenderBuffer(void 0,void 0,!0),s=o.surface;this.attachCanvas(r,s);var l=new t.WebTouchHandler(a,s),c=new e.sys.Player(o,a,n.entryClassName);e.lifecycle.stage=a,e.lifecycle.addLifecycleListener(t.WebLifeCycleHandler);var h=new t.HTMLInput;(n.showFPS||n.showLog)&&(e.nativeRender||c.displayFPS(n.showFPS,n.showLog,n.logFilter,n.fpsStyles)),this.playerOption=n,this.container=r,this.canvas=s,this.stage=a,this.player=c,this.webTouchHandler=l,this.webInput=h,e.web.$cacheTextAdapter(h,a,r,s),this.updateScreenSize(),this.updateMaxTouches(),c.start()},i.prototype.initOrientation=function(){var t=this;window.addEventListener("orientationchange",function(){window.setTimeout(function(){e.StageOrientationEvent.dispatchStageOrientationEvent(t.stage,e.StageOrientationEvent.ORIENTATION_CHANGE)},350)})},i.prototype.readOption=function(t,r){var i={};i.entryClassName=t.getAttribute("data-entry-class"),i.scaleMode=t.getAttribute("data-scale-mode")||e.StageScaleMode.NO_SCALE,i.frameRate=+t.getAttribute("data-frame-rate")||30,i.contentWidth=+t.getAttribute("data-content-width")||480,i.contentHeight=+t.getAttribute("data-content-height")||800,i.orientation=t.getAttribute("data-orientation")||e.OrientationMode.AUTO,i.maxTouches=+t.getAttribute("data-multi-fingered")||2,i.textureScaleFactor=+t.getAttribute("texture-scale-factor")||1,i.showFPS="true"==t.getAttribute("data-show-fps");for(var n=t.getAttribute("data-show-fps-style")||"",a=n.split(","),o={},s=0;sa||l==e.OrientationMode.PORTRAIT&&a>o);var c=s?o:a,h=s?a:o;e.Capabilities.boundingClientWidth=c,e.Capabilities.boundingClientHeight=h;var u=e.sys.screenAdapter.calculateStageSize(this.stage.$scaleMode,c,h,r.contentWidth,r.contentHeight),d=u.stageWidth,f=u.stageHeight,p=u.displayWidth,v=u.displayHeight;t.style[e.web.getPrefixStyleName("transformOrigin")]="0% 0% 0px",t.width!=d&&(t.width=d),t.height!=f&&(t.height=f);var g=0;s?l==e.OrientationMode.LANDSCAPE?(g=90,t.style.top=n+(o-p)/2+"px",t.style.left=(a+v)/2+"px"):(g=-90,t.style.top=n+(o+p)/2+"px",t.style.left=(a-v)/2+"px"):(t.style.top=n+(o-v)/2+"px",t.style.left=(a-p)/2+"px");var x=p/d,y=v/f,m=x*e.sys.DisplayList.$canvasScaleFactor,b=y*e.sys.DisplayList.$canvasScaleFactor;"canvas"==e.Capabilities.renderMode&&(m=Math.ceil(m),b=Math.ceil(b));var w=e.Matrix.create();w.identity(),w.scale(x/m,y/b),w.rotate(g*Math.PI/180);var T="matrix("+w.a+","+w.b+","+w.c+","+w.d+","+w.tx+","+w.ty+")";e.Matrix.release(w),t.style[e.web.getPrefixStyleName("transform")]=T,e.sys.DisplayList.$setCanvasScale(m,b),this.webTouchHandler.updateScaleMode(x,y,g),this.webInput.$updateSize(),this.player.updateStageSize(d,f),e.nativeRender&&(t.width=d*m,t.height=f*b)}}},i.prototype.setContentSize=function(e,t){var r=this.playerOption;r.contentWidth=e,r.contentHeight=t,this.updateScreenSize()},i.prototype.updateMaxTouches=function(){this.webTouchHandler.$updateMaxTouches()},i}(e.HashObject);t.WebPlayer=r,__reflect(r.prototype,"egret.web.WebPlayer",["egret.sys.Screen"])}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){function r(t,r){s||(s=e.sys.createCanvas(),l=s.getContext("2d"));var i=t.$getTextureWidth(),n=t.$getTextureHeight();null==r&&(r=e.$TempRectangle,r.x=0,r.y=0,r.width=i,r.height=n),r.x=Math.min(r.x,i-1),r.y=Math.min(r.y,n-1),r.width=Math.min(r.width,i-r.x),r.height=Math.min(r.height,n-r.y);var a=r.width,o=r.height,c=s;if(c.style.width=a+"px",c.style.height=o+"px",s.width=a,s.height=o,"webgl"==e.Capabilities.renderMode){var h=void 0;t.$renderBuffer?h=t:(h=new e.RenderTexture,h.drawToTexture(new e.Bitmap(t)));for(var u=h.$renderBuffer.getPixels(r.x,r.y,a,o),d=new ImageData(a,o),f=0;fn;n++){var a=t.childNodes[n];if(1==a.nodeType)return i(a,null)}return null}function i(e,t){if("parsererror"==e.localName)throw new Error(e.textContent);for(var r=new a(e.localName,t,e.prefix,e.namespaceURI,e.nodeName),n=e.attributes,s=r.attributes,l=n.length,c=0;l>c;c++){var h=n[c],u=h.name;0!=u.indexOf("xmlns:")&&(s[u]=h.value,r["$"+u]=h.value)}var d=e.childNodes;l=d.length;for(var f=r.children,c=0;l>c;c++){var p=d[c],v=p.nodeType,g=null;if(1==v)g=i(p,r);else if(3==v){var x=p.textContent.trim();x&&(g=new o(x,r))}g&&f.push(g)}return r}var n=function(){function e(e,t){this.nodeType=e,this.parent=t}return e}();t.XMLNode=n,__reflect(n.prototype,"egret.web.XMLNode");var a=function(e){function t(t,r,i,n,a){var o=e.call(this,1,r)||this;return o.attributes={},o.children=[],o.localName=t,o.prefix=i,o.namespace=n,o.name=a,o}return __extends(t,e),t}(n);t.XML=a,__reflect(a.prototype,"egret.web.XML");var o=function(e){function t(t,r){var i=e.call(this,3,r)||this;return i.text=t,i}return __extends(t,e),t}(n);t.XMLText=o,__reflect(o.prototype,"egret.web.XMLText");var s=new DOMParser;e.XML={parse:r}}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r=function(t){function r(){var r=null!==t&&t.apply(this,arguments)||this;return r.onChange=function(t){var i=new e.OrientationEvent(e.Event.CHANGE);i.beta=t.beta,i.gamma=t.gamma,i.alpha=t.alpha,r.dispatchEvent(i)},r}return __extends(r,t),r.prototype.start=function(){window.addEventListener("deviceorientation",this.onChange)},r.prototype.stop=function(){window.removeEventListener("deviceorientation",this.onChange)},r}(e.EventDispatcher);t.WebDeviceOrientation=r,__reflect(r.prototype,"egret.web.WebDeviceOrientation",["egret.DeviceOrientation"])}(t=e.web||(e.web={}))}(egret||(egret={})),egret.DeviceOrientation=egret.web.WebDeviceOrientation;var egret;!function(e){var t;!function(t){var r=function(){function e(){}return e.call=function(e,t){},e.addCallback=function(e,t){},e}();t.WebExternalInterface=r,__reflect(r.prototype,"egret.web.WebExternalInterface",["egret.ExternalInterface"]);var i=navigator.userAgent.toLowerCase();i.indexOf("egretnative")<0&&(e.ExternalInterface=r)}(t=e.web||(e.web={}))}(egret||(egret={})),function(e){var t;!function(t){function r(t){var r=JSON.parse(t),n=r.functionName,a=i[n];if(a){var o=r.value;a.call(null,o)}else e.$warn(1050,n)}var i={},n=function(){function e(){}return e.call=function(e,t){var r={};r.functionName=e,r.value=t,egret_native.sendInfoToPlugin(JSON.stringify(r))},e.addCallback=function(e,t){i[e]=t},e}();t.NativeExternalInterface=n,__reflect(n.prototype,"egret.web.NativeExternalInterface",["egret.ExternalInterface"]);var a=navigator.userAgent.toLowerCase();a.indexOf("egretnative")>=0&&(e.ExternalInterface=n,egret_native.receivedPluginInfo=r)}(t=e.web||(e.web={}))}(egret||(egret={})),function(e){var t;!function(t){var r={},i=function(){function t(){}return t.call=function(e,t){__global.ExternalInterface.call(e,t)},t.addCallback=function(e,t){r[e]=t},t.invokeCallback=function(t,i){var n=r[t];n?n.call(null,i):e.$warn(1050,t)},t}();t.WebViewExternalInterface=i,__reflect(i.prototype,"egret.web.WebViewExternalInterface",["egret.ExternalInterface"]);var n=navigator.userAgent.toLowerCase();n.indexOf("egretwebview")>=0&&(e.ExternalInterface=i)}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r=function(r){function i(){var e=r.call(this)||this;return e.loaded=!1,e}return __extends(i,r),Object.defineProperty(i.prototype,"length",{get:function(){if(this.originAudio)return this.originAudio.duration;throw new Error("sound not loaded!")},enumerable:!0,configurable:!0}),i.prototype.load=function(t){function r(){i.$recycle(o.url,s),a(),l.indexOf("firefox")>=0&&(s.pause(),s.muted=!1),c&&document.body.appendChild(s),o.loaded=!0,o.dispatchEventWith(e.Event.COMPLETE)}function n(){a(),o.dispatchEventWith(e.IOErrorEvent.IO_ERROR)}function a(){s.removeEventListener("canplaythrough",r),s.removeEventListener("error",n),c&&document.body.removeChild(s)}var o=this;this.url=t;var s=new Audio(t);s.addEventListener("canplaythrough",r),s.addEventListener("error",n);var l=navigator.userAgent.toLowerCase();l.indexOf("firefox")>=0&&(s.autoplay=!0,s.muted=!0);var c=l.indexOf("edge")>=0||l.indexOf("trident")>=0;c&&document.body.appendChild(s),s.load(),this.originAudio=s,i.clearAudios[this.url]&&delete i.clearAudios[this.url]},i.prototype.play=function(r,n){r=+r||0,n=+n||0;var a=i.$pop(this.url);null==a&&(a=this.originAudio.cloneNode()),a.autoplay=!0;var o=new t.HtmlSoundChannel(a);return o.$url=this.url,o.$loops=n,o.$startTime=r,o.$play(),e.sys.$pushSoundChannel(o),o},i.prototype.close=function(){this.loaded&&this.originAudio&&(this.originAudio.src=""),this.originAudio&&(this.originAudio=null),i.$clear(this.url),this.loaded=!1},i.$clear=function(e){i.clearAudios[e]=!0;var t=i.audios[e];t&&(t.length=0)},i.$pop=function(e){var t=i.audios[e];return t&&t.length>0?t.pop():null},i.$recycle=function(e,t){if(!i.clearAudios[e]){var r=i.audios[e];null==i.audios[e]&&(r=i.audios[e]=[]),r.push(t)}},i.MUSIC="music",i.EFFECT="effect",i.audios={},i.clearAudios={},i}(e.EventDispatcher);t.HtmlSound=r,__reflect(r.prototype,"egret.web.HtmlSound",["egret.Sound"])}(t=e.web||(e.web={}))}(egret||(egret={})); +var egret;!function(e){var t;!function(e){}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(e){var t=function(){function e(){this.drawData=[],this.drawDataLen=0}return e.prototype.pushDrawRect=function(){if(0==this.drawDataLen||1!=this.drawData[this.drawDataLen-1].type){var e=this.drawData[this.drawDataLen]||{};e.type=1,e.count=0,this.drawData[this.drawDataLen]=e,this.drawDataLen++}this.drawData[this.drawDataLen-1].count+=2},e.prototype.pushDrawTexture=function(e,t,r,i,n){if(void 0===t&&(t=2),r){var a=this.drawData[this.drawDataLen]||{};a.type=0,a.texture=e,a.filter=r,a.count=t,a.textureWidth=i,a.textureHeight=n,this.drawData[this.drawDataLen]=a,this.drawDataLen++}else{if(0==this.drawDataLen||0!=this.drawData[this.drawDataLen-1].type||e!=this.drawData[this.drawDataLen-1].texture||this.drawData[this.drawDataLen-1].filter){var a=this.drawData[this.drawDataLen]||{};a.type=0,a.texture=e,a.count=0,this.drawData[this.drawDataLen]=a,this.drawDataLen++}this.drawData[this.drawDataLen-1].count+=t}},e.prototype.pushChangeSmoothing=function(e,t){e.smoothing=t;var r=this.drawData[this.drawDataLen]||{};r.type=10,r.texture=e,r.smoothing=t,this.drawData[this.drawDataLen]=r,this.drawDataLen++},e.prototype.pushPushMask=function(e){void 0===e&&(e=1);var t=this.drawData[this.drawDataLen]||{};t.type=2,t.count=2*e,this.drawData[this.drawDataLen]=t,this.drawDataLen++},e.prototype.pushPopMask=function(e){void 0===e&&(e=1);var t=this.drawData[this.drawDataLen]||{};t.type=3,t.count=2*e,this.drawData[this.drawDataLen]=t,this.drawDataLen++},e.prototype.pushSetBlend=function(e){for(var t=this.drawDataLen,r=!1,i=t-1;i>=0;i--){var n=this.drawData[i];if(n){if((0==n.type||1==n.type)&&(r=!0),!r&&4==n.type){this.drawData.splice(i,1),this.drawDataLen--;continue}if(4==n.type){if(n.value==e)return;break}}}var a=this.drawData[this.drawDataLen]||{};a.type=4,a.value=e,this.drawData[this.drawDataLen]=a,this.drawDataLen++},e.prototype.pushResize=function(e,t,r){var i=this.drawData[this.drawDataLen]||{};i.type=5,i.buffer=e,i.width=t,i.height=r,this.drawData[this.drawDataLen]=i,this.drawDataLen++},e.prototype.pushClearColor=function(){var e=this.drawData[this.drawDataLen]||{};e.type=6,this.drawData[this.drawDataLen]=e,this.drawDataLen++},e.prototype.pushActivateBuffer=function(e){for(var t=this.drawDataLen,r=!1,i=t-1;i>=0;i--){var n=this.drawData[i];!n||(4!=n.type&&7!=n.type&&(r=!0),r||7!=n.type)||(this.drawData.splice(i,1),this.drawDataLen--)}var a=this.drawData[this.drawDataLen]||{};a.type=7,a.buffer=e,a.width=e.rootRenderTarget.width,a.height=e.rootRenderTarget.height,this.drawData[this.drawDataLen]=a,this.drawDataLen++},e.prototype.pushEnableScissor=function(e,t,r,i){var n=this.drawData[this.drawDataLen]||{};n.type=8,n.x=e,n.y=t,n.width=r,n.height=i,this.drawData[this.drawDataLen]=n,this.drawDataLen++},e.prototype.pushDisableScissor=function(){var e=this.drawData[this.drawDataLen]||{};e.type=9,this.drawData[this.drawDataLen]=e,this.drawDataLen++},e.prototype.clear=function(){for(var e=0;er;r+=6,i+=4)this.indices[r+0]=i+0,this.indices[r+1]=i+1,this.indices[r+2]=i+2,this.indices[r+3]=i+0,this.indices[r+4]=i+2,this.indices[r+5]=i+3}return t.prototype.reachMaxSize=function(e,t){return void 0===e&&(e=4),void 0===t&&(t=6),this.vertexIndex>this.maxVertexCount-e||this.indexIndex>this.maxIndicesCount-t},t.prototype.getVertices=function(){var e=this.vertices.subarray(0,this.vertexIndex*this.vertSize);return e},t.prototype.getIndices=function(){return this.indices},t.prototype.getMeshIndices=function(){return this.indicesForMesh},t.prototype.changeToMeshIndices=function(){if(!this.hasMesh){for(var e=0,t=this.indexIndex;t>e;++e)this.indicesForMesh[e]=this.indices[e];this.hasMesh=!0}},t.prototype.isMesh=function(){return this.hasMesh},t.prototype.cacheArrays=function(t,r,i,n,a,o,s,l,c,h,u,d,f,p,v){var g=t.globalAlpha;g=Math.min(g,1);var x=t.globalTintColor||16777215,y=t.currentTexture;g=1>g&&y&&y[e.UNPACK_PREMULTIPLY_ALPHA_WEBGL]?e.WebGLUtils.premultiplyTint(x,g):x+(255*g<<24);var m=t.globalMatrix,b=m.a,w=m.b,T=m.c,E=m.d,_=m.tx,C=m.ty,S=t.$offsetX,R=t.$offsetY;if((0!=S||0!=R)&&(_=S*b+R*T+_,C=S*w+R*E+C),!f){(0!=o||0!=s)&&(_=o*b+s*T+_,C=o*w+s*E+C);var L=l/n;1!=L&&(b=L*b,w=L*w);var D=c/a;1!=D&&(T=D*T,E=D*E)}if(f){var A=this.vertices,I=this._verticesUint32View,$=this.vertexIndex*this.vertSize,M=0,B=0,O=0,P=0,W=0,k=0,G=0;for(M=0,O=d.length;O>M;M+=2)B=$+5*M/2,k=f[M],G=f[M+1],P=d[M],W=d[M+1],A[B+0]=b*k+T*G+_,A[B+1]=w*k+E*G+C,v?(A[B+2]=(r+(1-W)*a)/h,A[B+3]=(i+P*n)/u):(A[B+2]=(r+P*n)/h,A[B+3]=(i+W*a)/u),I[B+4]=g;if(this.hasMesh)for(var H=0,F=p.length;F>H;++H)this.indicesForMesh[this.indexIndex+H]=p[H]+this.vertexIndex;this.vertexIndex+=d.length/2,this.indexIndex+=p.length}else{var U=h,N=u,X=n,z=a;r/=U,i/=N;var A=this.vertices,I=this._verticesUint32View,$=this.vertexIndex*this.vertSize;if(v){var Y=n;n=a/U,a=Y/N,A[$++]=_,A[$++]=C,A[$++]=n+r,A[$++]=i,I[$++]=g,A[$++]=b*X+_,A[$++]=w*X+C,A[$++]=n+r,A[$++]=a+i,I[$++]=g,A[$++]=b*X+T*z+_,A[$++]=E*z+w*X+C,A[$++]=r,A[$++]=a+i,I[$++]=g,A[$++]=T*z+_,A[$++]=E*z+C,A[$++]=r,A[$++]=i,I[$++]=g}else n/=U,a/=N,A[$++]=_,A[$++]=C,A[$++]=r,A[$++]=i,I[$++]=g,A[$++]=b*X+_,A[$++]=w*X+C,A[$++]=n+r,A[$++]=i,I[$++]=g,A[$++]=b*X+T*z+_,A[$++]=E*z+w*X+C,A[$++]=n+r,A[$++]=a+i,I[$++]=g,A[$++]=T*z+_,A[$++]=E*z+C,A[$++]=r,A[$++]=a+i,I[$++]=g;if(this.hasMesh){var V=this.indicesForMesh;V[this.indexIndex+0]=0+this.vertexIndex,V[this.indexIndex+1]=1+this.vertexIndex,V[this.indexIndex+2]=2+this.vertexIndex,V[this.indexIndex+3]=0+this.vertexIndex,V[this.indexIndex+4]=2+this.vertexIndex,V[this.indexIndex+5]=3+this.vertexIndex}this.vertexIndex+=4,this.indexIndex+=6}},t.prototype.clear=function(){this.hasMesh=!1,this.vertexIndex=0,this.indexIndex=0},t}();t.WebGLVertexArrayObject=r,__reflect(r.prototype,"egret.web.WebGLVertexArrayObject")}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r=function(r){function i(e,t,i){var n=r.call(this)||this;return n.clearColor=[0,0,0,0],n.useFrameBuffer=!0,n.gl=e,n._resize(t,i),n}return __extends(i,r),i.prototype._resize=function(e,t){e=e||1,t=t||1,1>e&&(e=1),1>t&&(t=1),this.width=e,this.height=t},i.prototype.resize=function(e,t){this._resize(e,t);var r=this.gl;this.frameBuffer&&(r.bindTexture(r.TEXTURE_2D,this.texture),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,this.width,this.height,0,r.RGBA,r.UNSIGNED_BYTE,null)),this.stencilBuffer&&(r.deleteRenderbuffer(this.stencilBuffer),this.stencilBuffer=null)},i.prototype.activate=function(){var e=this.gl;e.bindFramebuffer(e.FRAMEBUFFER,this.getFrameBuffer())},i.prototype.getFrameBuffer=function(){return this.useFrameBuffer?this.frameBuffer:null},i.prototype.initFrameBuffer=function(){if(!this.frameBuffer){var e=this.gl;this.texture=this.createTexture(),this.frameBuffer=e.createFramebuffer(),e.bindFramebuffer(e.FRAMEBUFFER,this.frameBuffer),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,this.texture,0)}},i.prototype.createTexture=function(){var r=t.WebGLRenderContext.getInstance(0,0);return e.sys._createTexture(r,this.width,this.height,null)},i.prototype.clear=function(e){var t=this.gl;e&&this.activate(),t.colorMask(!0,!0,!0,!0),t.clearColor(this.clearColor[0],this.clearColor[1],this.clearColor[2],this.clearColor[3]),t.clear(t.COLOR_BUFFER_BIT)},i.prototype.enabledStencil=function(){if(this.frameBuffer&&!this.stencilBuffer){var e=this.gl;e.bindFramebuffer(e.FRAMEBUFFER,this.frameBuffer),this.stencilBuffer=e.createRenderbuffer(),e.bindRenderbuffer(e.RENDERBUFFER,this.stencilBuffer),e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_STENCIL,this.width,this.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.RENDERBUFFER,this.stencilBuffer)}},i.prototype.dispose=function(){e.WebGLUtils.deleteWebGLTexture(this.texture)},i}(e.HashObject);t.WebGLRenderTarget=r,__reflect(r.prototype,"egret.web.WebGLRenderTarget")}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r={},i=function(){function i(r,i){if(this._defaultEmptyTexture=null,this.glID=null,this.projectionX=0/0,this.projectionY=0/0,this.contextLost=!1,this._supportedCompressedTextureInfo=[],this.$scissorState=!1,this.vertSize=5,this.surface=e.sys.mainCanvas(r,i),!e.nativeRender){this.initWebGL(),this.$bufferStack=[];var n=this.context;this.vertexBuffer=n.createBuffer(),this.indexBuffer=n.createBuffer(),n.bindBuffer(n.ARRAY_BUFFER,this.vertexBuffer),n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,this.indexBuffer),this.drawCmdManager=new t.WebGLDrawCmdManager,this.vao=new t.WebGLVertexArrayObject,this.setGlobalCompositeOperation("source-over")}}return i.getInstance=function(e,t){return this.instance?this.instance:(this.instance=new i(e,t),this.instance)},i.prototype.pushBuffer=function(e){this.$bufferStack.push(e),e!=this.currentBuffer&&(this.currentBuffer,this.drawCmdManager.pushActivateBuffer(e)),this.currentBuffer=e},i.prototype.popBuffer=function(){if(!(this.$bufferStack.length<=1)){var e=this.$bufferStack.pop(),t=this.$bufferStack[this.$bufferStack.length-1];e!=t&&this.drawCmdManager.pushActivateBuffer(t),this.currentBuffer=t}},i.prototype.activateBuffer=function(e,t,r){e.rootRenderTarget.activate(),this.bindIndices||this.uploadIndicesArray(this.vao.getIndices()),e.restoreStencil(),e.restoreScissor(),this.onResize(t,r)},i.prototype.uploadVerticesArray=function(e){var t=this.context;t.bufferData(t.ARRAY_BUFFER,e,t.STREAM_DRAW)},i.prototype.uploadIndicesArray=function(e){var t=this.context;t.bufferData(t.ELEMENT_ARRAY_BUFFER,e,t.STATIC_DRAW),this.bindIndices=!0},i.prototype.destroy=function(){this.surface.width=this.surface.height=0},i.prototype.onResize=function(e,t){e=e||this.surface.width,t=t||this.surface.height,this.projectionX=e/2,this.projectionY=-t/2,this.context&&this.context.viewport(0,0,e,t)},i.prototype.resize=function(t,r,i){e.sys.resizeContext(this,t,r,i)},i.prototype._buildSupportedCompressedTextureInfo=function(e){for(var t=[],r=0,i=e;rr;++r)for(var n=e[r],a=n.supportedFormats,o=0,s=a.length;s>o;++o)if(a[o][1]===t)return!0;return!1},i.prototype.$debugLogCompressedTextureNotSupported=function(t,i){if(!r[i]){r[i]=!0,e.log("internalFormat = "+i+":0x"+i.toString(16)+", the current hardware does not support the corresponding compression format.");for(var n=0,a=t.length;a>n;++n){var o=t[n];if(o.supportedFormats.length>0){e.log("support = "+o.extensionName);for(var s=0,l=o.supportedFormats.length;l>s;++s){var c=o.supportedFormats[s];e.log(c[0]+" : "+c[1]+" : 0x"+c[1].toString(16))}}}}},i.prototype.createCompressedTexture=function(t,r,i,n,a){var o=this.checkCompressedTextureInternalFormat(this._supportedCompressedTextureInfo,a);if(!o)return this.$debugLogCompressedTextureNotSupported(this._supportedCompressedTextureInfo,a),this.defaultEmptyTexture;var s=this.context,l=s.createTexture();return l?(l[e.glContext]=s,l[e.is_compressed_texture]=!0,s.bindTexture(s.TEXTURE_2D,l),s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,1),l[e.UNPACK_PREMULTIPLY_ALPHA_WEBGL]=!0,s.compressedTexImage2D(s.TEXTURE_2D,n,a,r,i,0,t),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.bindTexture(s.TEXTURE_2D,null),l):void(this.contextLost=!0)},i.prototype.updateTexture=function(e,t){var r=this.context;r.bindTexture(r.TEXTURE_2D,e),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,t)},Object.defineProperty(i.prototype,"defaultEmptyTexture",{get:function(){if(!this._defaultEmptyTexture){var t=16,r=e.sys.createCanvas(t,t),i=e.sys.getContext2d(r);i.fillStyle="white",i.fillRect(0,0,t,t),this._defaultEmptyTexture=this.createTexture(r),this._defaultEmptyTexture[e.engine_default_empty_texture]=!0}return this._defaultEmptyTexture},enumerable:!0,configurable:!0}),i.prototype.getWebGLTexture=function(t){if(!t.webGLTexture){if("image"!=t.format||t.hasCompressed2d()){if(t.hasCompressed2d()){var r=t.getCompressed2dTextureData();t.webGLTexture=this.createCompressedTexture(r.byteArray,r.width,r.height,r.level,r.glInternalFormat);var i=t.etcAlphaMask;if(i){var n=this.getWebGLTexture(i);n&&(t.webGLTexture[e.etc_alpha_mask]=n)}}}else t.webGLTexture=this.createTexture(t.source);t.$deleteSource&&t.webGLTexture&&(t.source&&(t.source.src="",t.source=null),t.clearCompressedTextureData()),t.webGLTexture&&(t.webGLTexture.smoothing=!0)}return t.webGLTexture},i.prototype.clearRect=function(e,t,r,i){if(0!=e||0!=t||r!=this.surface.width||i!=this.surface.height){var n=this.currentBuffer;if(n.$hasScissor)this.setGlobalCompositeOperation("destination-out"),this.drawRect(e,t,r,i),this.setGlobalCompositeOperation("source-over");else{var a=n.globalMatrix;0==a.b&&0==a.c?(e=e*a.a+a.tx,t=t*a.d+a.ty,r*=a.a,i*=a.d,this.enableScissor(e,-t-i+n.height,r,i),this.clear(),this.disableScissor()):(this.setGlobalCompositeOperation("destination-out"),this.drawRect(e,t,r,i),this.setGlobalCompositeOperation("source-over"))}}else this.clear()},i.prototype.setGlobalCompositeOperation=function(e){this.drawCmdManager.pushSetBlend(e)},i.prototype.drawImage=function(e,t,r,i,n,a,o,s,l,c,h,u,d){var f=this.currentBuffer;if(!this.contextLost&&e&&f){var p,v,g;if(e.texture||e.source&&e.source.texture)p=e.texture||e.source.texture,f.saveTransform(),v=f.$offsetX,g=f.$offsetY,f.useOffset(),f.transform(1,0,0,-1,0,l+2*o);else{if(!e.source&&!e.webGLTexture)return;p=this.getWebGLTexture(e)}p&&(this.drawTexture(p,t,r,i,n,a,o,s,l,c,h,void 0,void 0,void 0,void 0,u,d),e.source&&e.source.texture&&(f.$offsetX=v,f.$offsetY=g,f.restoreTransform()))}},i.prototype.drawMesh=function(e,t,r,i,n,a,o,s,l,c,h,u,d,f,p,v,g){var x=this.currentBuffer;if(!this.contextLost&&e&&x){var y,m,b;if(e.texture||e.source&&e.source.texture)y=e.texture||e.source.texture,x.saveTransform(),m=x.$offsetX,b=x.$offsetY,x.useOffset(),x.transform(1,0,0,-1,0,l+2*o);else{if(!e.source&&!e.webGLTexture)return;y=this.getWebGLTexture(e)}y&&(this.drawTexture(y,t,r,i,n,a,o,s,l,c,h,u,d,f,p,v,g),(e.texture||e.source&&e.source.texture)&&(x.$offsetX=m,x.$offsetY=b,x.restoreTransform()))}},i.prototype.drawTexture=function(e,t,r,i,n,a,o,s,l,c,h,u,d,f,p,v,g){var x=this.currentBuffer;if(!this.contextLost&&e&&x){d&&f?this.vao.reachMaxSize(d.length/2,f.length)&&this.$drawWebGL():this.vao.reachMaxSize()&&this.$drawWebGL(),void 0!=g&&e.smoothing!=g&&this.drawCmdManager.pushChangeSmoothing(e,g),u&&this.vao.changeToMeshIndices();var y=f?f.length/3:2;this.drawCmdManager.pushDrawTexture(e,y,this.$filter,c,h),x.currentTexture=e,this.vao.cacheArrays(x,t,r,i,n,a,o,s,l,c,h,u,d,f,v)}},i.prototype.drawRect=function(e,t,r,i){var n=this.currentBuffer;!this.contextLost&&n&&(this.vao.reachMaxSize()&&this.$drawWebGL(),this.drawCmdManager.pushDrawRect(),n.currentTexture=null,this.vao.cacheArrays(n,0,0,r,i,e,t,r,i,r,i))},i.prototype.pushMask=function(e,t,r,i){var n=this.currentBuffer;!this.contextLost&&n&&(n.$stencilList.push({x:e,y:t,width:r,height:i}),this.vao.reachMaxSize()&&this.$drawWebGL(),this.drawCmdManager.pushPushMask(),n.currentTexture=null,this.vao.cacheArrays(n,0,0,r,i,e,t,r,i,r,i))},i.prototype.popMask=function(){var e=this.currentBuffer;if(!this.contextLost&&e){var t=e.$stencilList.pop();this.vao.reachMaxSize()&&this.$drawWebGL(),this.drawCmdManager.pushPopMask(),e.currentTexture=null,this.vao.cacheArrays(e,0,0,t.width,t.height,t.x,t.y,t.width,t.height,t.width,t.height)}},i.prototype.clear=function(){this.drawCmdManager.pushClearColor()},i.prototype.enableScissor=function(e,t,r,i){var n=this.currentBuffer;this.drawCmdManager.pushEnableScissor(e,t,r,i),n.$hasScissor=!0},i.prototype.disableScissor=function(){var e=this.currentBuffer;this.drawCmdManager.pushDisableScissor(),e.$hasScissor=!1},i.prototype.$drawWebGL=function(){if(0!=this.drawCmdManager.drawDataLen&&!this.contextLost){this.uploadVerticesArray(this.vao.getVertices()),this.vao.isMesh()&&this.uploadIndicesArray(this.vao.getMeshIndices());for(var e=this.drawCmdManager.drawDataLen,t=0,r=0;e>r;r++){var i=this.drawCmdManager.drawData[r];t=this.drawData(i,t),7==i.type&&(this.activatedBuffer=i.buffer),(0==i.type||1==i.type||2==i.type||3==i.type)&&this.activatedBuffer&&this.activatedBuffer.$computeDrawCall&&this.activatedBuffer.$drawCalls++}this.vao.isMesh()&&this.uploadIndicesArray(this.vao.getIndices()),this.drawCmdManager.clear(),this.vao.clear()}},i.prototype.drawData=function(r,i){if(r){var n,a=this.context,o=r.filter;switch(r.type){case 0:o?"custom"===o.type?n=t.EgretWebGLProgram.getProgram(a,o.$vertexSrc,o.$fragmentSrc,o.$shaderKey):"colorTransform"===o.type?r.texture[e.etc_alpha_mask]?(a.activeTexture(a.TEXTURE1),a.bindTexture(a.TEXTURE_2D,r.texture[e.etc_alpha_mask]),n=t.EgretWebGLProgram.getProgram(a,t.EgretShaderLib.default_vert,t.EgretShaderLib.colorTransform_frag_etc_alphamask_frag,"colorTransform_frag_etc_alphamask_frag")):n=t.EgretWebGLProgram.getProgram(a,t.EgretShaderLib.default_vert,t.EgretShaderLib.colorTransform_frag,"colorTransform"):"blurX"===o.type?n=t.EgretWebGLProgram.getProgram(a,t.EgretShaderLib.default_vert,t.EgretShaderLib.blur_frag,"blur"):"blurY"===o.type?n=t.EgretWebGLProgram.getProgram(a,t.EgretShaderLib.default_vert,t.EgretShaderLib.blur_frag,"blur"):"glow"===o.type&&(n=t.EgretWebGLProgram.getProgram(a,t.EgretShaderLib.default_vert,t.EgretShaderLib.glow_frag,"glow")):r.texture[e.etc_alpha_mask]?(n=t.EgretWebGLProgram.getProgram(a,t.EgretShaderLib.default_vert,t.EgretShaderLib.texture_etc_alphamask_frag,e.etc_alpha_mask),a.activeTexture(a.TEXTURE1),a.bindTexture(a.TEXTURE_2D,r.texture[e.etc_alpha_mask])):n=t.EgretWebGLProgram.getProgram(a,t.EgretShaderLib.default_vert,t.EgretShaderLib.texture_frag,"texture"),this.activeProgram(a,n),this.syncUniforms(n,o,r.textureWidth,r.textureHeight),i+=this.drawTextureElements(r,i);break;case 1:n=t.EgretWebGLProgram.getProgram(a,t.EgretShaderLib.default_vert,t.EgretShaderLib.primitive_frag,"primitive"),this.activeProgram(a,n),this.syncUniforms(n,o,r.textureWidth,r.textureHeight),i+=this.drawRectElements(r,i);break;case 2:n=t.EgretWebGLProgram.getProgram(a,t.EgretShaderLib.default_vert,t.EgretShaderLib.primitive_frag,"primitive"),this.activeProgram(a,n),this.syncUniforms(n,o,r.textureWidth,r.textureHeight),i+=this.drawPushMaskElements(r,i);break;case 3:n=t.EgretWebGLProgram.getProgram(a,t.EgretShaderLib.default_vert,t.EgretShaderLib.primitive_frag,"primitive"),this.activeProgram(a,n),this.syncUniforms(n,o,r.textureWidth,r.textureHeight),i+=this.drawPopMaskElements(r,i);break;case 4:this.setBlendMode(r.value);break;case 5:r.buffer.rootRenderTarget.resize(r.width,r.height),this.onResize(r.width,r.height);break;case 6:if(this.activatedBuffer){var s=this.activatedBuffer.rootRenderTarget;(0!=s.width||0!=s.height)&&s.clear(!0)}break;case 7:this.activateBuffer(r.buffer,r.width,r.height);break;case 8:var l=this.activatedBuffer;l&&(l.rootRenderTarget&&l.rootRenderTarget.enabledStencil(),l.enableScissor(r.x,r.y,r.width,r.height));break;case 9:l=this.activatedBuffer,l&&l.disableScissor();break;case 10:a.bindTexture(a.TEXTURE_2D,r.texture),r.smoothing?(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR)):(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST))}return i}},i.prototype.activeProgram=function(e,t){if(t!=this.currentProgram){e.useProgram(t.id);var r=t.attributes;for(var i in r)"aVertexPosition"===i?(e.vertexAttribPointer(r.aVertexPosition.location,2,e.FLOAT,!1,20,0),e.enableVertexAttribArray(r.aVertexPosition.location)):"aTextureCoord"===i?(e.vertexAttribPointer(r.aTextureCoord.location,2,e.FLOAT,!1,20,8),e.enableVertexAttribArray(r.aTextureCoord.location)):"aColor"===i&&(e.vertexAttribPointer(r.aColor.location,4,e.UNSIGNED_BYTE,!0,20,16),e.enableVertexAttribArray(r.aColor.location));this.currentProgram=t}},i.prototype.syncUniforms=function(e,t,r,i){var n=e.uniforms;t&&"custom"===t.type;for(var a in n)if("projectionVector"===a)n[a].setValue({x:this.projectionX,y:this.projectionY});else if("uTextureSize"===a)n[a].setValue({x:r,y:i});else if("uSampler"===a)n[a].setValue(0);else if("uSamplerAlphaMask"===a)n[a].setValue(1);else{var o=t.$uniforms[a];void 0!==o&&n[a].setValue(o)}},i.prototype.drawTextureElements=function(t,r){return e.sys.drawTextureElements(this,t,r)},i.prototype.drawRectElements=function(e,t){var r=this.context,i=3*e.count;return r.drawElements(r.TRIANGLES,i,r.UNSIGNED_SHORT,2*t),i},i.prototype.drawPushMaskElements=function(e,t){var r=this.context,i=3*e.count,n=this.activatedBuffer;if(n){n.rootRenderTarget&&n.rootRenderTarget.enabledStencil(),0==n.stencilHandleCount&&(n.enableStencil(),r.clear(r.STENCIL_BUFFER_BIT));var a=n.stencilHandleCount;n.stencilHandleCount++,r.colorMask(!1,!1,!1,!1),r.stencilFunc(r.EQUAL,a,255),r.stencilOp(r.KEEP,r.KEEP,r.INCR),r.drawElements(r.TRIANGLES,i,r.UNSIGNED_SHORT,2*t),r.stencilFunc(r.EQUAL,a+1,255),r.colorMask(!0,!0,!0,!0),r.stencilOp(r.KEEP,r.KEEP,r.KEEP)}return i},i.prototype.drawPopMaskElements=function(e,t){var r=this.context,i=3*e.count,n=this.activatedBuffer;if(n)if(n.stencilHandleCount--,0==n.stencilHandleCount)n.disableStencil();else{var a=n.stencilHandleCount;r.colorMask(!1,!1,!1,!1),r.stencilFunc(r.EQUAL,a+1,255),r.stencilOp(r.KEEP,r.KEEP,r.DECR),r.drawElements(r.TRIANGLES,i,r.UNSIGNED_SHORT,2*t),r.stencilFunc(r.EQUAL,a,255),r.colorMask(!0,!0,!0,!0),r.stencilOp(r.KEEP,r.KEEP,r.KEEP)}return i},i.prototype.setBlendMode=function(e){var t=this.context,r=i.blendModesForGL[e];r&&t.blendFunc(r[0],r[1])},i.prototype.drawTargetWidthFilters=function(e,r){var i,n=r,a=e.length;if(a>1)for(var o=0;a-1>o;o++){var s=e[o],l=r.rootRenderTarget.width,c=r.rootRenderTarget.height;i=t.WebGLRenderBuffer.create(l,c),i.setTransform(1,0,0,1,0,0),i.globalAlpha=1,this.drawToRenderTarget(s,r,i),r!=n&&t.WebGLRenderBuffer.release(r),r=i}var h=e[a-1];this.drawToRenderTarget(h,r,this.currentBuffer),r!=n&&t.WebGLRenderBuffer.release(r)},i.prototype.drawToRenderTarget=function(e,r,i){if(!this.contextLost){this.vao.reachMaxSize()&&this.$drawWebGL(),this.pushBuffer(i);var n,a=r,o=r.rootRenderTarget.width,s=r.rootRenderTarget.height;if("blur"==e.type){var l=e.blurXFilter,c=e.blurYFilter;0!=l.blurX&&0!=c.blurY?(n=t.WebGLRenderBuffer.create(o,s),n.setTransform(1,0,0,1,0,0),n.globalAlpha=1,this.drawToRenderTarget(e.blurXFilter,r,n),r!=a&&t.WebGLRenderBuffer.release(r),r=n,e=c):e=0===l.blurX?c:l}i.saveTransform(),i.transform(1,0,0,-1,0,s),i.currentTexture=r.rootRenderTarget.texture,this.vao.cacheArrays(i,0,0,o,s,0,0,o,s,o,s),i.restoreTransform(),this.drawCmdManager.pushDrawTexture(r.rootRenderTarget.texture,2,e,o,s),r!=a&&t.WebGLRenderBuffer.release(r),this.popBuffer()}},i.initBlendMode=function(){i.blendModesForGL={},i.blendModesForGL["source-over"]=[1,771],i.blendModesForGL.lighter=[1,1],i.blendModesForGL["lighter-in"]=[770,771],i.blendModesForGL["destination-out"]=[0,771],i.blendModesForGL["destination-in"]=[0,770]},i.glContextId=0,i.blendModesForGL=null,i}();t.WebGLRenderContext=i,__reflect(i.prototype,"egret.web.WebGLRenderContext",["egret.sys.RenderContext"]),i.initBlendMode()}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r=function(r){function n(i,n,a){var o=r.call(this)||this;if(o.currentTexture=null,o.globalAlpha=1,o.globalTintColor=16777215,o.stencilState=!1,o.$stencilList=[],o.stencilHandleCount=0,o.$scissorState=!1,o.scissorRect=new e.Rectangle,o.$hasScissor=!1,o.$drawCalls=0,o.$computeDrawCall=!1,o.globalMatrix=new e.Matrix,o.savedGlobalMatrix=new e.Matrix,o.$offsetX=0,o.$offsetY=0,o.context=t.WebGLRenderContext.getInstance(i,n),e.nativeRender)return a?o.surface=o.context.surface:o.surface=new egret_native.NativeRenderSurface(o,i,n,a),o.rootRenderTarget=null,o;if(o.rootRenderTarget=new t.WebGLRenderTarget(o.context.context,3,3),i&&n&&o.resize(i,n),o.root=a,o.root)o.context.pushBuffer(o),o.surface=o.context.surface,o.$computeDrawCall=!0;else{var s=o.context.activatedBuffer;s&&s.rootRenderTarget.activate(),o.rootRenderTarget.initFrameBuffer(),o.surface=o.rootRenderTarget}return o}return __extends(n,r),n.prototype.enableStencil=function(){this.stencilState||(this.context.enableStencilTest(),this.stencilState=!0)},n.prototype.disableStencil=function(){this.stencilState&&(this.context.disableStencilTest(),this.stencilState=!1)},n.prototype.restoreStencil=function(){this.stencilState?this.context.enableStencilTest():this.context.disableStencilTest()},n.prototype.enableScissor=function(e,t,r,i){this.$scissorState||(this.$scissorState=!0,this.scissorRect.setTo(e,t,r,i),this.context.enableScissorTest(this.scissorRect))},n.prototype.disableScissor=function(){this.$scissorState&&(this.$scissorState=!1,this.scissorRect.setEmpty(),this.context.disableScissorTest())},n.prototype.restoreScissor=function(){this.$scissorState?this.context.enableScissorTest(this.scissorRect):this.context.disableScissorTest()},Object.defineProperty(n.prototype,"width",{get:function(){return e.nativeRender?this.surface.width:this.rootRenderTarget.width},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"height",{get:function(){return e.nativeRender?this.surface.height:this.rootRenderTarget.height},enumerable:!0,configurable:!0}),n.prototype.resize=function(t,r,i){return t=t||1,r=r||1,e.nativeRender?void this.surface.resize(t,r):(this.context.pushBuffer(this),(t!=this.rootRenderTarget.width||r!=this.rootRenderTarget.height)&&(this.context.drawCmdManager.pushResize(this,t,r),this.rootRenderTarget.width=t,this.rootRenderTarget.height=r),this.root&&this.context.resize(t,r,i),this.context.clear(),void this.context.popBuffer())},n.prototype.getPixels=function(t,r,i,n){void 0===i&&(i=1),void 0===n&&(n=1);var a=new Uint8Array(4*i*n);if(e.nativeRender)egret_native.activateBuffer(this),egret_native.nrGetPixels(t,r,i,n,a),egret_native.activateBuffer(null);else{var o=this.rootRenderTarget.useFrameBuffer;this.rootRenderTarget.useFrameBuffer=!0,this.rootRenderTarget.activate(),this.context.getPixels(t,r,i,n,a),this.rootRenderTarget.useFrameBuffer=o,this.rootRenderTarget.activate()}for(var s=new Uint8Array(4*i*n),l=0;n>l;l++)for(var c=0;i>c;c++){var h=4*(i*(n-l-1)+c),u=4*(i*l+c),d=a[u+3];s[h]=Math.round(a[u]/d*255),s[h+1]=Math.round(a[u+1]/d*255),s[h+2]=Math.round(a[u+2]/d*255),s[h+3]=a[u+3]}return s},n.prototype.toDataURL=function(e,t){return this.context.surface.toDataURL(e,t)},n.prototype.destroy=function(){this.context.destroy()},n.prototype.onRenderFinish=function(){this.$drawCalls=0},n.prototype.drawFrameBufferToSurface=function(e,t,r,i,n,a,o,s,l){void 0===l&&(l=!1),this.rootRenderTarget.useFrameBuffer=!1,this.rootRenderTarget.activate(),this.context.disableStencilTest(),this.context.disableScissorTest(),this.setTransform(1,0,0,1,0,0),this.globalAlpha=1,this.context.setGlobalCompositeOperation("source-over"),l&&this.context.clear(),this.context.drawImage(this.rootRenderTarget,e,t,r,i,n,a,o,s,r,i,!1),this.context.$drawWebGL(),this.rootRenderTarget.useFrameBuffer=!0,this.rootRenderTarget.activate(),this.restoreStencil(),this.restoreScissor()},n.prototype.drawSurfaceToFrameBuffer=function(e,t,r,i,n,a,o,s,l){void 0===l&&(l=!1),this.rootRenderTarget.useFrameBuffer=!0,this.rootRenderTarget.activate(),this.context.disableStencilTest(),this.context.disableScissorTest(),this.setTransform(1,0,0,1,0,0),this.globalAlpha=1,this.context.setGlobalCompositeOperation("source-over"),l&&this.context.clear(),this.context.drawImage(this.context.surface,e,t,r,i,n,a,o,s,r,i,!1),this.context.$drawWebGL(),this.rootRenderTarget.useFrameBuffer=!1,this.rootRenderTarget.activate(),this.restoreStencil(),this.restoreScissor()},n.prototype.clear=function(){this.context.pushBuffer(this),this.context.clear(),this.context.popBuffer()},n.prototype.setTransform=function(e,t,r,i,n,a){var o=this.globalMatrix;o.a=e,o.b=t,o.c=r,o.d=i,o.tx=n,o.ty=a},n.prototype.transform=function(e,t,r,i,n,a){var o=this.globalMatrix,s=o.a,l=o.b,c=o.c,h=o.d;(1!=e||0!=t||0!=r||1!=i)&&(o.a=e*s+t*c,o.b=e*l+t*h,o.c=r*s+i*c,o.d=r*l+i*h),o.tx=n*s+a*c+o.tx,o.ty=n*l+a*h+o.ty},n.prototype.useOffset=function(){var e=this;(0!=e.$offsetX||0!=e.$offsetY)&&(e.globalMatrix.append(1,0,0,1,e.$offsetX,e.$offsetY),e.$offsetX=e.$offsetY=0)},n.prototype.saveTransform=function(){var e=this.globalMatrix,t=this.savedGlobalMatrix;t.a=e.a,t.b=e.b,t.c=e.c,t.d=e.d,t.tx=e.tx,t.ty=e.ty},n.prototype.restoreTransform=function(){var e=this.globalMatrix,t=this.savedGlobalMatrix;e.a=t.a,e.b=t.b,e.c=t.c,e.d=t.d,e.tx=t.tx,e.ty=t.ty},n.create=function(e,t){var r=i.pop(); +if(r){r.resize(e,t);var a=r.globalMatrix;a.a=1,a.b=0,a.c=0,a.d=1,a.tx=0,a.ty=0,r.globalAlpha=1,r.$offsetX=0,r.$offsetY=0}else r=new n(e,t),r.$computeDrawCall=!1;return r},n.release=function(e){i.push(e)},n.autoClear=!0,n}(e.HashObject);t.WebGLRenderBuffer=r,__reflect(r.prototype,"egret.web.WebGLRenderBuffer",["egret.sys.RenderBuffer"]);var i=[]}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r=["source-over","lighter","destination-out"],i="source-over",n=[],a=function(){function a(){this.wxiOS10=!1,this.nestLevel=0}return a.prototype.render=function(t,r,i,a){this.nestLevel++;var o=r,s=o.context;s.pushBuffer(o),o.transform(i.a,i.b,i.c,i.d,0,0),this.drawDisplayObject(t,o,i.tx,i.ty,!0),s.$drawWebGL();var l=o.$drawCalls;o.onRenderFinish(),s.popBuffer();var c=e.Matrix.create();if(i.$invertInto(c),o.transform(c.a,c.b,c.c,c.d,0,0),e.Matrix.release(c),this.nestLevel--,0===this.nestLevel){n.length>6&&(n.length=6);for(var h=n.length,u=0;h>u;u++)n[u].resize(0,0)}return l},a.prototype.drawDisplayObject=function(t,r,i,n,a){var o,s=0,l=t.$displayList;if(l&&!a?((t.$cacheDirty||t.$renderDirty||l.$canvasScaleX!=e.sys.DisplayList.$canvasScaleX||l.$canvasScaleY!=e.sys.DisplayList.$canvasScaleY)&&(s+=l.drawToSurface()),o=l.$renderNode):o=t.$renderDirty?t.$getRenderNode():t.$renderNode,t.$cacheDirty=!1,o){switch(s++,r.$offsetX=i,r.$offsetY=n,o.type){case 1:this.renderBitmap(o,r);break;case 2:this.renderText(o,r);break;case 3:this.renderGraphics(o,r);break;case 4:this.renderGroup(o,r);break;case 5:this.renderMesh(o,r);break;case 6:this.renderNormalBitmap(o,r)}r.$offsetX=0,r.$offsetY=0}if(l&&!a)return s;var c=t.$children;if(c){t.sortableChildren&&t.$sortDirty&&t.sortChildren();for(var h=c.length,u=0;h>u;u++){var d=c[u],f=void 0,p=void 0,v=void 0,g=void 0;1!=d.$alpha&&(v=r.globalAlpha,r.globalAlpha*=d.$alpha),16777215!==d.tint&&(g=r.globalTintColor,r.globalTintColor=d.$tintRGB);var x=void 0;if(d.$useTranslate){var y=d.$getMatrix();f=i+d.$x,p=n+d.$y;var m=r.globalMatrix;x=e.Matrix.create(),x.a=m.a,x.b=m.b,x.c=m.c,x.d=m.d,x.tx=m.tx,x.ty=m.ty,r.transform(y.a,y.b,y.c,y.d,f,p),f=-d.$anchorOffsetX,p=-d.$anchorOffsetY}else f=i+d.$x-d.$anchorOffsetX,p=n+d.$y-d.$anchorOffsetY;switch(d.$renderMode){case 1:break;case 2:s+=this.drawWithFilter(d,r,f,p);break;case 3:s+=this.drawWithClip(d,r,f,p);break;case 4:s+=this.drawWithScrollRect(d,r,f,p);break;default:s+=this.drawDisplayObject(d,r,f,p)}if(v&&(r.globalAlpha=v),g&&(r.globalTintColor=g),x){var y=r.globalMatrix;y.a=x.a,y.b=x.b,y.c=x.c,y.d=x.d,y.tx=x.tx,y.ty=x.ty,e.Matrix.release(x)}}}return s},a.prototype.drawWithFilter=function(t,a,o,s){var l=0;if(t.$children&&0==t.$children.length&&(!t.$renderNode||0==t.$renderNode.$getRenderCount()))return l;var c,h=t.$filters,u=0!==t.$blendMode;u&&(c=r[t.$blendMode],c||(c=i));var d=t.$getOriginalBounds(),f=d.x,p=d.y,v=d.width,g=d.height;if(0>=v||0>=g)return l;if(!t.mask&&1==h.length&&("colorTransform"==h[0].type||"custom"===h[0].type&&0===h[0].padding)){var x=this.getRenderCount(t);if(!t.$children||1==x)return u&&a.context.setGlobalCompositeOperation(c),a.context.$filter=h[0],l+=t.$mask?this.drawWithClip(t,a,o,s):t.$scrollRect||t.$maskRect?this.drawWithScrollRect(t,a,o,s):this.drawDisplayObject(t,a,o,s),a.context.$filter=null,u&&a.context.setGlobalCompositeOperation(i),l}var y=this.createRenderBuffer(v,g);if(y.context.pushBuffer(y),l+=t.$mask?this.drawWithClip(t,y,-f,-p):t.$scrollRect||t.$maskRect?this.drawWithScrollRect(t,y,-f,-p):this.drawDisplayObject(t,y,-f,-p),y.context.popBuffer(),l>0){u&&a.context.setGlobalCompositeOperation(c),l++,a.$offsetX=o+f,a.$offsetY=s+p;var m=e.Matrix.create(),b=a.globalMatrix;m.a=b.a,m.b=b.b,m.c=b.c,m.d=b.d,m.tx=b.tx,m.ty=b.ty,a.useOffset(),a.context.drawTargetWidthFilters(h,y),b.a=m.a,b.b=m.b,b.c=m.c,b.d=m.d,b.tx=m.tx,b.ty=m.ty,e.Matrix.release(m),u&&a.context.setGlobalCompositeOperation(i)}return n.push(y),l},a.prototype.getRenderCount=function(e){var t=0,r=e.$getRenderNode();if(r&&(t+=r.$getRenderCount()),e.$children)for(var i=0,n=e.$children;i0)return 2;if(a.$children)t+=this.getRenderCount(a);else{var s=a.$getRenderNode();s&&(t+=s.$getRenderCount())}}return t},a.prototype.drawWithClip=function(t,a,o,s){var l,c=0,h=0!==t.$blendMode;h&&(l=r[t.$blendMode],l||(l=i));var u=t.$scrollRect?t.$scrollRect:t.$maskRect,d=t.$mask;if(d){var f=d.$getMatrix();if(0==f.a&&0==f.b||0==f.c&&0==f.d)return c}if(d||t.$children&&0!=t.$children.length){var p=t.$getOriginalBounds(),v=p.x,g=p.y,x=p.width,y=p.height;if(0>=x||0>=y)return c;var m=this.createRenderBuffer(x,y);if(m.context.pushBuffer(m),c+=this.drawDisplayObject(t,m,-v,-g),d){var b=this.createRenderBuffer(x,y);b.context.pushBuffer(b);var w=e.Matrix.create();w.copyFrom(d.$getConcatenatedMatrix()),d.$getConcatenatedMatrixAt(t,w),w.translate(-v,-g),b.setTransform(w.a,w.b,w.c,w.d,w.tx,w.ty),e.Matrix.release(w),c+=this.drawDisplayObject(d,b,0,0),b.context.popBuffer(),m.context.setGlobalCompositeOperation("destination-in"),m.setTransform(1,0,0,-1,0,b.height);var T=b.rootRenderTarget.width,E=b.rootRenderTarget.height;m.context.drawTexture(b.rootRenderTarget.texture,0,0,T,E,0,0,T,E,T,E),m.setTransform(1,0,0,1,0,0),m.context.setGlobalCompositeOperation("source-over"),b.setTransform(1,0,0,1,0,0),n.push(b)}if(m.context.setGlobalCompositeOperation(i),m.context.popBuffer(),c>0){c++,h&&a.context.setGlobalCompositeOperation(l),u&&a.context.pushMask(u.x+o,u.y+s,u.width,u.height);var _=e.Matrix.create(),C=a.globalMatrix;_.a=C.a,_.b=C.b,_.c=C.c,_.d=C.d,_.tx=C.tx,_.ty=C.ty,C.append(1,0,0,-1,o+v,s+g+m.height);var S=m.rootRenderTarget.width,R=m.rootRenderTarget.height;a.context.drawTexture(m.rootRenderTarget.texture,0,0,S,R,0,0,S,R,S,R),u&&m.context.popMask(),h&&a.context.setGlobalCompositeOperation(i);var L=a.globalMatrix;L.a=_.a,L.b=_.b,L.c=_.c,L.d=_.d,L.tx=_.tx,L.ty=_.ty,e.Matrix.release(_)}return n.push(m),c}return u&&a.context.pushMask(u.x+o,u.y+s,u.width,u.height),h&&a.context.setGlobalCompositeOperation(l),c+=this.drawDisplayObject(t,a,o,s),h&&a.context.setGlobalCompositeOperation(i),u&&a.context.popMask(),c},a.prototype.drawWithScrollRect=function(e,t,r,i){var n=0,a=e.$scrollRect?e.$scrollRect:e.$maskRect;if(a.isEmpty())return n;e.$scrollRect&&(r-=a.x,i-=a.y);var o=t.globalMatrix,s=t.context,l=!1;if(t.$hasScissor||0!=o.b||0!=o.c)t.context.pushMask(a.x+r,a.y+i,a.width,a.height);else{var c=o.a,h=o.d,u=o.tx,d=o.ty,f=a.x+r,p=a.y+i,v=f+a.width,g=p+a.height,x=void 0,y=void 0,m=void 0,b=void 0;if(1==c&&1==h)x=f+u,y=p+d,m=v+u,b=g+d;else{var w=c*f+u,T=h*p+d,E=c*v+u,_=h*p+d,C=c*v+u,S=h*g+d,R=c*f+u,L=h*g+d,D=0;w>E&&(D=w,w=E,E=D),C>R&&(D=C,C=R,R=D),x=C>w?w:C,m=E>R?E:R,T>_&&(D=T,T=_,_=D),S>L&&(D=S,S=L,L=D),y=S>T?T:S,b=_>L?_:L}s.enableScissor(x,-b+t.height,m-x,b-y),l=!0}return n+=this.drawDisplayObject(e,t,r,i),l?s.disableScissor():s.popMask(),n},a.prototype.drawNodeToBuffer=function(e,t,r,i){var n=t;n.context.pushBuffer(n),n.setTransform(r.a,r.b,r.c,r.d,r.tx,r.ty),this.renderNode(e,t,0,0,i),n.context.$drawWebGL(),n.onRenderFinish(),n.context.popBuffer()},a.prototype.drawDisplayToBuffer=function(e,t,r){t.context.pushBuffer(t),r&&t.setTransform(r.a,r.b,r.c,r.d,r.tx,r.ty);var i;i=e.$renderDirty?e.$getRenderNode():e.$renderNode;var n=0;if(i)switch(n++,i.type){case 1:this.renderBitmap(i,t);break;case 2:this.renderText(i,t);break;case 3:this.renderGraphics(i,t);break;case 4:this.renderGroup(i,t);break;case 5:this.renderMesh(i,t);break;case 6:this.renderNormalBitmap(i,t)}var a=e.$children;if(a)for(var o=a.length,s=0;o>s;s++){var l=a[s];switch(l.$renderMode){case 1:break;case 2:n+=this.drawWithFilter(l,t,0,0);break;case 3:n+=this.drawWithClip(l,t,0,0);break;case 4:n+=this.drawWithScrollRect(l,t,0,0);break;default:n+=this.drawDisplayObject(l,t,0,0)}}return t.context.$drawWebGL(),t.onRenderFinish(),t.context.popBuffer(),n},a.prototype.renderNode=function(e,t,r,i,n){switch(t.$offsetX=r,t.$offsetY=i,e.type){case 1:this.renderBitmap(e,t);break;case 2:this.renderText(e,t);break;case 3:this.renderGraphics(e,t,n);break;case 4:this.renderGroup(e,t);break;case 5:this.renderMesh(e,t);break;case 6:this.renderNormalBitmap(e,t)}},a.prototype.renderNormalBitmap=function(e,t){var r=e.image;r&&t.context.drawImage(r,e.sourceX,e.sourceY,e.sourceW,e.sourceH,e.drawX,e.drawY,e.drawW,e.drawH,e.imageWidth,e.imageHeight,e.rotated,e.smoothing)},a.prototype.renderBitmap=function(t,n){var a=t.image;if(a){var o,s,l,c=t.drawData,h=c.length,u=0,d=t.matrix,f=t.blendMode,p=t.alpha;if(d){o=e.Matrix.create();var v=n.globalMatrix;o.a=v.a,o.b=v.b,o.c=v.c,o.d=v.d,o.tx=v.tx,o.ty=v.ty,s=n.$offsetX,l=n.$offsetY,n.useOffset(),n.transform(d.a,d.b,d.c,d.d,d.tx,d.ty)}f&&n.context.setGlobalCompositeOperation(r[f]);var g;if(p==p&&(g=n.globalAlpha,n.globalAlpha*=p),t.filter){for(n.context.$filter=t.filter;h>u;)n.context.drawImage(a,c[u++],c[u++],c[u++],c[u++],c[u++],c[u++],c[u++],c[u++],t.imageWidth,t.imageHeight,t.rotated,t.smoothing);n.context.$filter=null}else for(;h>u;)n.context.drawImage(a,c[u++],c[u++],c[u++],c[u++],c[u++],c[u++],c[u++],c[u++],t.imageWidth,t.imageHeight,t.rotated,t.smoothing);if(f&&n.context.setGlobalCompositeOperation(i),p==p&&(n.globalAlpha=g),d){var x=n.globalMatrix;x.a=o.a,x.b=o.b,x.c=o.c,x.d=o.d,x.tx=o.tx,x.ty=o.ty,n.$offsetX=s,n.$offsetY=l,e.Matrix.release(o)}}},a.prototype.renderMesh=function(t,n){var a,o,s,l=t.image,c=t.drawData,h=c.length,u=0,d=t.matrix,f=t.blendMode,p=t.alpha;if(d){a=e.Matrix.create();var v=n.globalMatrix;a.a=v.a,a.b=v.b,a.c=v.c,a.d=v.d,a.tx=v.tx,a.ty=v.ty,o=n.$offsetX,s=n.$offsetY,n.useOffset(),n.transform(d.a,d.b,d.c,d.d,d.tx,d.ty)}f&&n.context.setGlobalCompositeOperation(r[f]);var g;if(p==p&&(g=n.globalAlpha,n.globalAlpha*=p),t.filter){for(n.context.$filter=t.filter;h>u;)n.context.drawMesh(l,c[u++],c[u++],c[u++],c[u++],c[u++],c[u++],c[u++],c[u++],t.imageWidth,t.imageHeight,t.uvs,t.vertices,t.indices,t.bounds,t.rotated,t.smoothing);n.context.$filter=null}else for(;h>u;)n.context.drawMesh(l,c[u++],c[u++],c[u++],c[u++],c[u++],c[u++],c[u++],c[u++],t.imageWidth,t.imageHeight,t.uvs,t.vertices,t.indices,t.bounds,t.rotated,t.smoothing);if(f&&n.context.setGlobalCompositeOperation(i),p==p&&(n.globalAlpha=g),d){var x=n.globalMatrix;x.a=a.a,x.b=a.b,x.c=a.c,x.d=a.d,x.tx=a.tx,x.ty=a.ty,n.$offsetX=o,n.$offsetY=s,e.Matrix.release(a)}},a.prototype.___renderText____=function(r,i){var n=r.width-r.x,a=r.height-r.y;if(!(0>=n||0>=a)&&n&&a&&0!==r.drawData.length){var o=e.sys.DisplayList.$canvasScaleX,s=e.sys.DisplayList.$canvasScaleY,l=i.context.$maxTextureSize;n*o>l&&(o*=l/(n*o)),a*s>l&&(s*=l/(a*s)),n*=o,a*=s;var c=r.x*o,h=r.y*s;(r.$canvasScaleX!==o||r.$canvasScaleY!==s)&&(r.$canvasScaleX=o,r.$canvasScaleY=s,r.dirtyRender=!0),(c||h)&&i.transform(1,0,0,1,c/o,h/s),r.dirtyRender&&t.TextAtlasRender.analysisTextNodeAndFlushDrawLabel(r);var u=r[t.property_drawLabel];if(u&&u.length>0){for(var d=i.$offsetX,f=i.$offsetY,p=null,v=0,g=0,x=null,y=null,m=null,b=0,w=u.length;w>b;++b){p=u[b],v=p.anchorX,g=p.anchorY,x=p.textBlocks,i.$offsetX=d+v;for(var T=0,E=x.length;E>T;++T)y=x[T],T>0&&(i.$offsetX-=y.canvasWidthOffset),i.$offsetY=f+g-(y.measureHeight+(y.stroke2?y.canvasHeightOffset:0))/2,m=y.line.page,i.context.drawTexture(m.webGLTexture,y.u,y.v,y.contentWidth,y.contentHeight,0,0,y.contentWidth,y.contentHeight,m.pageWidth,m.pageHeight),i.$offsetX+=y.contentWidth-y.canvasWidthOffset}i.$offsetX=d,i.$offsetY=f}(c||h)&&i.transform(1,0,0,1,-c/o,-h/s),r.dirtyRender=!1}},a.prototype.renderText=function(r,i){if(t.textAtlasRenderEnable)return void this.___renderText____(r,i);var n=r.width-r.x,a=r.height-r.y;if(!(0>=n||0>=a)&&n&&a&&0!=r.drawData.length){var o=e.sys.DisplayList.$canvasScaleX,s=e.sys.DisplayList.$canvasScaleY,l=i.context.$maxTextureSize;n*o>l&&(o*=l/(n*o)),a*s>l&&(s*=l/(a*s)),n*=o,a*=s;var c=r.x*o,h=r.y*s;if((r.$canvasScaleX!=o||r.$canvasScaleY!=s)&&(r.$canvasScaleX=o,r.$canvasScaleY=s,r.dirtyRender=!0),this.wxiOS10?(this.canvasRenderer||(this.canvasRenderer=new e.CanvasRenderer),r.dirtyRender&&(this.canvasRenderBuffer=new t.CanvasRenderBuffer(n,a))):this.canvasRenderBuffer&&this.canvasRenderBuffer.context?r.dirtyRender&&this.canvasRenderBuffer.resize(n,a):(this.canvasRenderer=new e.CanvasRenderer,this.canvasRenderBuffer=new t.CanvasRenderBuffer(n,a)),this.canvasRenderBuffer.context){if((1!=o||1!=s)&&this.canvasRenderBuffer.context.setTransform(o,0,0,s,0,0),c||h?(r.dirtyRender&&this.canvasRenderBuffer.context.setTransform(o,0,0,s,-c,-h),i.transform(1,0,0,1,c/o,h/s)):(1!=o||1!=s)&&this.canvasRenderBuffer.context.setTransform(o,0,0,s,0,0),r.dirtyRender){var u=this.canvasRenderBuffer.surface;if(this.canvasRenderer.renderText(r,this.canvasRenderBuffer.context),this.wxiOS10)u.isCanvas=!0,r.$texture=u;else{var d=r.$texture;d?i.context.updateTexture(d,u):(d=i.context.createTexture(u),r.$texture=d)}r.$textureWidth=u.width,r.$textureHeight=u.height}var f=r.$textureWidth,p=r.$textureHeight;i.context.drawTexture(r.$texture,0,0,f,p,0,0,f/o,p/s,f,p),(c||h)&&(r.dirtyRender&&this.canvasRenderBuffer.context.setTransform(o,0,0,s,0,0),i.transform(1,0,0,1,-c/o,-h/s)),r.dirtyRender=!1}}},a.prototype.renderGraphics=function(r,i,n){var a=r.width,o=r.height;if(!(0>=a||0>=o)&&a&&o&&0!=r.drawData.length){var s=e.sys.DisplayList.$canvasScaleX,l=e.sys.DisplayList.$canvasScaleY;(1>a*s||1>o*l)&&(s=l=1),(r.$canvasScaleX!=s||r.$canvasScaleY!=l)&&(r.$canvasScaleX=s,r.$canvasScaleY=l,r.dirtyRender=!0),a*=s,o*=l;var c=Math.ceil(a),h=Math.ceil(o);if(s*=c/a,l*=h/o,a=c,o=h,this.wxiOS10?(this.canvasRenderer||(this.canvasRenderer=new e.CanvasRenderer),r.dirtyRender&&(this.canvasRenderBuffer=new t.CanvasRenderBuffer(a,o))):this.canvasRenderBuffer&&this.canvasRenderBuffer.context?r.dirtyRender&&this.canvasRenderBuffer.resize(a,o):(this.canvasRenderer=new e.CanvasRenderer,this.canvasRenderBuffer=new t.CanvasRenderBuffer(a,o)),this.canvasRenderBuffer.context){(1!=s||1!=l)&&this.canvasRenderBuffer.context.setTransform(s,0,0,l,0,0),(r.x||r.y)&&((r.dirtyRender||n)&&this.canvasRenderBuffer.context.translate(-r.x,-r.y),i.transform(1,0,0,1,r.x,r.y));var u=this.canvasRenderBuffer.surface;if(n){this.canvasRenderer.renderGraphics(r,this.canvasRenderBuffer.context,!0);var d=void 0;this.wxiOS10?(u.isCanvas=!0,d=u):(e.WebGLUtils.deleteWebGLTexture(u),d=i.context.getWebGLTexture(u)),i.context.drawTexture(d,0,0,a,o,0,0,a,o,u.width,u.height)}else{if(r.dirtyRender){if(this.canvasRenderer.renderGraphics(r,this.canvasRenderBuffer.context),this.wxiOS10)u.isCanvas=!0,r.$texture=u;else{var d=r.$texture;d?i.context.updateTexture(d,u):(d=i.context.createTexture(u),r.$texture=d)}r.$textureWidth=u.width,r.$textureHeight=u.height}var f=r.$textureWidth,p=r.$textureHeight;i.context.drawTexture(r.$texture,0,0,f,p,0,0,f/s,p/l,f,p)}(r.x||r.y)&&((r.dirtyRender||n)&&this.canvasRenderBuffer.context.translate(r.x,r.y),i.transform(1,0,0,1,-r.x,-r.y)),n||(r.dirtyRender=!1)}}},a.prototype.renderGroup=function(t,r){var i,n,a,o=t.matrix;if(o){i=e.Matrix.create();var s=r.globalMatrix;i.a=s.a,i.b=s.b,i.c=s.c,i.d=s.d,i.tx=s.tx,i.ty=s.ty,n=r.$offsetX,a=r.$offsetY,r.useOffset(),r.transform(o.a,o.b,o.c,o.d,o.tx,o.ty)}for(var l=t.drawData,c=l.length,h=0;c>h;h++){var u=l[h];this.renderNode(u,r,r.$offsetX,r.$offsetY)}if(o){var d=r.globalMatrix;d.a=i.a,d.b=i.b,d.c=i.c,d.d=i.d,d.tx=i.tx,d.ty=i.ty,r.$offsetX=n,r.$offsetY=a,e.Matrix.release(i)}},a.prototype.createRenderBuffer=function(e,r){var i=n.pop();return i?i.resize(e,r):(i=new t.WebGLRenderBuffer(e,r),i.$computeDrawCall=!1),i},a}();t.WebGLRenderer=a,__reflect(a.prototype,"egret.web.WebGLRenderer",["egret.sys.SystemRenderer"])}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(t){var r=function(e){function t(t,r,i,n,a,o,s,l){var c=e.call(this)||this;return c._width=0,c._height=0,c._border=0,c.line=null,c.x=0,c.y=0,c.u=0,c.v=0,c.tag="",c.measureWidth=0,c.measureHeight=0,c.canvasWidthOffset=0,c.canvasHeightOffset=0,c.stroke2=0,c._width=t,c._height=r,c._border=l,c.measureWidth=i,c.measureHeight=n,c.canvasWidthOffset=a,c.canvasHeightOffset=o,c.stroke2=s,c}return __extends(t,e),Object.defineProperty(t.prototype,"border",{get:function(){return this._border},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"width",{get:function(){return this._width+2*this.border},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){return this._height+2*this.border},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"contentWidth",{get:function(){return this._width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"contentHeight",{get:function(){return this._height},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"page",{get:function(){return this.line?this.line.page:null},enumerable:!0,configurable:!0}),t.prototype.updateUV=function(){var e=this.line;return e?(this.u=e.x+this.x+1*this.border,this.v=e.y+this.y+1*this.border,!0):!1},Object.defineProperty(t.prototype,"subImageOffsetX",{get:function(){var e=this.line;return e?e.x+this.x+this.border:0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"subImageOffsetY",{get:function(){var e=this.line;return e?e.y+this.y+this.border:0},enumerable:!0,configurable:!0}),t}(e.HashObject);t.TextBlock=r,__reflect(r.prototype,"egret.web.TextBlock");var i=function(e){function t(t){var r=e.call(this)||this;return r.page=null,r.textBlocks=[],r.dynamicMaxHeight=0,r.maxWidth=0,r.x=0,r.y=0,r.maxWidth=t,r}return __extends(t,e),t.prototype.isCapacityOf=function(e){if(!e)return!1;var t=0,r=0,i=this.lastTextBlock();return i&&(t=i.x+i.width,r=i.y),t+e.width>this.maxWidth?!1:this.dynamicMaxHeight>0&&(e.height>this.dynamicMaxHeight||e.height/this.dynamicMaxHeight<.5)?!1:!0},t.prototype.lastTextBlock=function(){var e=this.textBlocks;return e.length>0?e[e.length-1]:null},t.prototype.addTextBlock=function(e,t){if(!e)return!1;if(t&&!this.isCapacityOf(e))return!1;var r=0,i=0,n=this.lastTextBlock();return n&&(r=n.x+n.width,i=n.y),e.x=r,e.y=i,e.line=this,this.textBlocks.push(e),this.dynamicMaxHeight=Math.max(this.dynamicMaxHeight,e.height),!0},t}(e.HashObject);t.Line=i,__reflect(i.prototype,"egret.web.Line");var n=function(e){function t(t,r){var i=e.call(this)||this;return i.lines=[],i.pageWidth=0,i.pageHeight=0,i.webGLTexture=null,i.pageWidth=t,i.pageHeight=r,i}return __extends(t,e),t.prototype.addLine=function(e){if(!e)return!1;var t=0,r=0,i=this.lines;if(i.length>0){var n=i[i.length-1];t=n.x,r=n.y+n.dynamicMaxHeight}return e.maxWidth>this.pageWidth?(console.error("line.maxWidth = "+e.maxWidth+", this.pageWidth = "+this.pageWidth),!1):r+e.dynamicMaxHeight>this.pageHeight?!1:(e.x=t,e.y=r,e.page=this,this.lines.push(e),!0)},t}(e.HashObject);t.Page=n,__reflect(n.prototype,"egret.web.Page");var a=function(e){function t(t,r){var i=e.call(this)||this;return i._pages=[],i._sortLines=[],i._maxSize=1024,i._border=1,i._maxSize=t,i._border=r,i}return __extends(t,e),t.prototype.addTextBlock=function(e){var t=this._addTextBlock(e);if(!t)return!1;e.updateUV();for(var r=!1,i=t,n=this._sortLines,a=0,o=n;athis._maxSize||e.height>this._maxSize)return null;for(var t=this._sortLines,r=0,n=t.length;n>r;++r){var a=t[r];if(a.isCapacityOf(e)&&a.addTextBlock(e,!1))return[a.page,a]}var o=new i(this._maxSize);if(!o.addTextBlock(e,!0))return console.error("_addTextBlock !newLine.addTextBlock(textBlock, true)"),null;for(var s=this._pages,r=0,l=s.length;l>r;++r){var c=s[r];if(c.addLine(o))return[c,o]}var h=this.createPage(this._maxSize,this._maxSize);return h.addLine(o)?[h,o]:(console.error("_addText newPage.addLine failed"),null)},t.prototype.createPage=function(e,t){var r=new n(e,t);return this._pages.push(r),r},t.prototype.sort=function(){if(!(this._sortLines.length<=1)){var e=function(e,t){return e.dynamicMaxHeight=0)return void console.error("DrawLabel.back repeat");e.clear(),i.push(e)}},t.pool=[],t}(e.HashObject);t.DrawLabel=i,__reflect(i.prototype,"egret.web.DrawLabel");var n=function(t){function i(i,n){var a=t.call(this)||this;a.format=null;var o=0;r&&(o=i.textColor,i.textColor=16711680),a.textColor=i.textColor,a.strokeColor=i.strokeColor,a.size=i.size,a.stroke=i.stroke,a.bold=i.bold,a.italic=i.italic,a.fontFamily=i.fontFamily,a.format=n,a.font=e.getFontString(i,a.format);var s=n.textColor?n.textColor:i.textColor,l=n.strokeColor?n.strokeColor:i.strokeColor,c=n.stroke?n.stroke:i.stroke,h=n.size?n.size:i.size;return a.description=""+a.font+"-"+h,a.description+="-"+e.toColorString(s),a.description+="-"+e.toColorString(l),c&&(a.description+="-"+2*c),r&&(i.textColor=o),a}return __extends(i,t),i}(e.HashObject);__reflect(n.prototype,"StyleInfo");var a=function(t){function r(){var e=null!==t&&t.apply(this,arguments)||this;return e["char"]="",e.styleInfo=null,e.hashCodeString="",e.charWithStyleHashCode=0,e.measureWidth=0,e.measureHeight=0,e.canvasWidthOffset=0,e.canvasHeightOffset=0,e.stroke2=0,e}return __extends(r,t),r.prototype.reset=function(t,r){return this["char"]=t,this.styleInfo=r,this.hashCodeString=t+":"+r.description,this.charWithStyleHashCode=e.NumberUtils.convertStringToHashCode(this.hashCodeString),this.canvasWidthOffset=0,this.canvasHeightOffset=0,this.stroke2=0,this},r.prototype.measureAndDraw=function(t){var r=t;if(r){var i=this["char"],n=this.styleInfo.format,a=n.textColor?n.textColor:this.styleInfo.textColor,o=n.strokeColor?n.strokeColor:this.styleInfo.strokeColor,s=n.stroke?n.stroke:this.styleInfo.stroke,l=n.size?n.size:this.styleInfo.size;this.measureWidth=this.measure(i,this.styleInfo,l),this.measureHeight=l;var c=this.measureWidth,h=this.measureHeight,u=2*s;u>0&&(c+=2*u,h+=2*u),this.stroke2=u,r.width=c=Math.ceil(c)+4,r.height=h=Math.ceil(h)+4,this.canvasWidthOffset=(r.width-this.measureWidth)/2,this.canvasHeightOffset=(r.height-this.measureHeight)/2;var d=3,f=Math.pow(10,d);this.canvasWidthOffset=Math.floor(this.canvasWidthOffset*f)/f,this.canvasHeightOffset=Math.floor(this.canvasHeightOffset*f)/f;var p=e.sys.getContext2d(r);p.save(),p.textAlign="center",p.textBaseline="middle",p.lineJoin="round",p.font=this.styleInfo.font,p.fillStyle=e.toColorString(a),p.strokeStyle=e.toColorString(o),p.clearRect(0,0,r.width,r.height),s&&(p.lineWidth=2*s,p.strokeText(i,r.width/2,r.height/2)),p.fillText(i,r.width/2,r.height/2),p.restore()}},r.prototype.measure=function(t,i,n){var a=r.chineseCharactersRegExp.test(t);if(a&&r.chineseCharacterMeasureFastMap[i.font])return r.chineseCharacterMeasureFastMap[i.font];var o=e.sys.measureText(t,i.fontFamily,n||i.size,i.bold,i.italic);return a&&(r.chineseCharacterMeasureFastMap[i.font]=o),o},r.chineseCharactersRegExp=new RegExp("^[一-龥]$"),r.chineseCharacterMeasureFastMap={},r}(e.HashObject);__reflect(a.prototype,"CharImageRender");var o=function(o){function s(e,r,i){var n=o.call(this)||this;return n.book=null,n.charImageRender=new a,n.textBlockMap={},n._canvas=null,n.textAtlasTextureCache=[],n.webglRenderContext=null,n.webglRenderContext=e,n.book=new t.Book(r,i),n}return __extends(s,o),s.analysisTextNodeAndFlushDrawLabel=function(a){if(a){if(!t.__textAtlasRender__){var o=e.web.WebGLRenderContext.getInstance(0,0);t.__textAtlasRender__=new s(o,512,r?12:1)}a[t.property_drawLabel]=a[t.property_drawLabel]||[];for(var l=a[t.property_drawLabel],c=0,h=l;cm;m+=d){p=f[m+0],v=f[m+1],g=f[m+2],x=f[m+3]||{},y.length=0,t.__textAtlasRender__.convertLabelStringToTextAtlas(g,new n(a,x),y);var u=i.create();u.anchorX=p,u.anchorY=v,u.textBlocks=[].concat(y),l.push(u)}}},s.prototype.convertLabelStringToTextAtlas=function(t,i,n){for(var a=this.canvas,o=this.charImageRender,s=this.textBlockMap,l=0,c=t;la;a++){var o=t.getActiveAttrib(r,a),s=o.name,l=new e.EgretWebGLAttribute(t,r,o);i[s]=l}return i}function n(t,r){for(var i={},n=t.getProgramParameter(r,t.ACTIVE_UNIFORMS),a=0;n>a;a++){var o=t.getActiveUniform(r,a),s=o.name,l=new e.EgretWebGLUniform(t,r,o);i[s]=l}return i}var a=function(){function e(e,a,o){this.vshaderSource=a,this.fshaderSource=o,this.vertexShader=t(e,e.VERTEX_SHADER,this.vshaderSource),this.fragmentShader=t(e,e.FRAGMENT_SHADER,this.fshaderSource),this.id=r(e,this.vertexShader,this.fragmentShader),this.uniforms=n(e,this.id),this.attributes=i(e,this.id)}return e.getProgram=function(t,r,i,n){return this.programCache[n]||(this.programCache[n]=new e(t,r,i)),this.programCache[n]},e.deleteProgram=function(e,t,r,i){},e.programCache={},e}();e.EgretWebGLProgram=a,__reflect(a.prototype,"egret.web.EgretWebGLProgram")}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(e){var t=function(){function e(e,t,r){this.gl=e,this.name=r.name,this.type=r.type,this.size=r.size,this.location=e.getUniformLocation(t,this.name),this.setDefaultValue(),this.generateSetValue(),this.generateUpload()}return e.prototype.setDefaultValue=function(){var e=this.type;switch(e){case 5126:case 35678:case 35680:case 35670:case 5124:this.value=0;break;case 35664:case 35671:case 35667:this.value=[0,0];break;case 35665:case 35672:case 35668:this.value=[0,0,0];break;case 35666:case 35673:case 35669:this.value=[0,0,0,0];break;case 35674:this.value=new Float32Array([1,0,0,1]);break;case 35675:this.value=new Float32Array([1,0,0,0,1,0,0,0,1]);break;case 35676:this.value=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}},e.prototype.generateSetValue=function(){var e=this.type;switch(e){case 5126:case 35678:case 35680:case 35670:case 5124:this.setValue=function(e){var t=this.value!==e;this.value=e,t&&this.upload()};break;case 35664:case 35671:case 35667:this.setValue=function(e){var t=this.value[0]!==e.x||this.value[1]!==e.y;this.value[0]=e.x,this.value[1]=e.y,t&&this.upload()};break;case 35665:case 35672:case 35668:this.setValue=function(e){this.value[0]=e.x,this.value[1]=e.y,this.value[2]=e.z,this.upload()};break;case 35666:case 35673:case 35669:this.setValue=function(e){this.value[0]=e.x,this.value[1]=e.y,this.value[2]=e.z,this.value[3]=e.w,this.upload()};break;case 35674:case 35675:case 35676:this.setValue=function(e){this.value.set(e),this.upload()}}},e.prototype.generateUpload=function(){var e=this.gl,t=this.type,r=this.location;switch(t){case 5126:this.upload=function(){var t=this.value;e.uniform1f(r,t)};break;case 35664:this.upload=function(){var t=this.value;e.uniform2f(r,t[0],t[1])};break;case 35665:this.upload=function(){var t=this.value;e.uniform3f(r,t[0],t[1],t[2])};break;case 35666:this.upload=function(){var t=this.value;e.uniform4f(r,t[0],t[1],t[2],t[3])};break;case 35678:case 35680:case 35670:case 5124:this.upload=function(){var t=this.value;e.uniform1i(r,t)};break;case 35671:case 35667:this.upload=function(){var t=this.value;e.uniform2i(r,t[0],t[1])};break;case 35672:case 35668:this.upload=function(){var t=this.value;e.uniform3i(r,t[0],t[1],t[2])};break;case 35673:case 35669:this.upload=function(){var t=this.value;e.uniform4i(r,t[0],t[1],t[2],t[3])};break;case 35674:this.upload=function(){var t=this.value;e.uniformMatrix2fv(r,!1,t)};break;case 35675:this.upload=function(){var t=this.value;e.uniformMatrix3fv(r,!1,t)};break;case 35676:this.upload=function(){var t=this.value;e.uniformMatrix4fv(r,!1,t)}}},e}();e.EgretWebGLUniform=t,__reflect(t.prototype,"egret.web.EgretWebGLUniform")}(t=e.web||(e.web={}))}(egret||(egret={}));var egret;!function(e){var t;!function(e){var t=function(){function e(){}return e.blur_frag="precision mediump float;\r\nuniform vec2 blur;\r\nuniform sampler2D uSampler;\r\nvarying vec2 vTextureCoord;\r\nuniform vec2 uTextureSize;\r\nvoid main()\r\n{\r\n const int sampleRadius = 5;\r\n const int samples = sampleRadius * 2 + 1;\r\n vec2 blurUv = blur / uTextureSize;\r\n vec4 color = vec4(0, 0, 0, 0);\r\n vec2 uv = vec2(0.0, 0.0);\r\n blurUv /= float(sampleRadius);\r\n\r\n for (int i = -sampleRadius; i <= sampleRadius; i++) {\r\n uv.x = vTextureCoord.x + float(i) * blurUv.x;\r\n uv.y = vTextureCoord.y + float(i) * blurUv.y;\r\n color += texture2D(uSampler, uv);\r\n }\r\n\r\n color /= float(samples);\r\n gl_FragColor = color;\r\n}",e.colorTransform_frag="precision mediump float;\r\nvarying vec2 vTextureCoord;\r\nvarying vec4 vColor;\r\nuniform mat4 matrix;\r\nuniform vec4 colorAdd;\r\nuniform sampler2D uSampler;\r\n\r\nvoid main(void) {\r\n vec4 texColor = texture2D(uSampler, vTextureCoord);\r\n if(texColor.a > 0.) {\r\n // 抵消预乘的alpha通道\r\n texColor = vec4(texColor.rgb / texColor.a, texColor.a);\r\n }\r\n vec4 locColor = clamp(texColor * matrix + colorAdd, 0., 1.);\r\n gl_FragColor = vColor * vec4(locColor.rgb * locColor.a, locColor.a);\r\n}",e.default_vert="attribute vec2 aVertexPosition;\r\nattribute vec2 aTextureCoord;\r\nattribute vec4 aColor;\r\n\r\nuniform vec2 projectionVector;\r\n// uniform vec2 offsetVector;\r\n\r\nvarying vec2 vTextureCoord;\r\nvarying vec4 vColor;\r\n\r\nconst vec2 center = vec2(-1.0, 1.0);\r\n\r\nvoid main(void) {\r\n gl_Position = vec4( (aVertexPosition / projectionVector) + center , 0.0, 1.0);\r\n vTextureCoord = aTextureCoord;\r\n vColor = aColor;\r\n}",e.glow_frag="precision highp float;\r\nvarying vec2 vTextureCoord;\r\n\r\nuniform sampler2D uSampler;\r\n\r\nuniform float dist;\r\nuniform float angle;\r\nuniform vec4 color;\r\nuniform float alpha;\r\nuniform float blurX;\r\nuniform float blurY;\r\n// uniform vec4 quality;\r\nuniform float strength;\r\nuniform float inner;\r\nuniform float knockout;\r\nuniform float hideObject;\r\n\r\nuniform vec2 uTextureSize;\r\n\r\nfloat random(vec2 scale)\r\n{\r\n return fract(sin(dot(gl_FragCoord.xy, scale)) * 43758.5453);\r\n}\r\n\r\nvoid main(void) {\r\n vec2 px = vec2(1.0 / uTextureSize.x, 1.0 / uTextureSize.y);\r\n // TODO 自动调节采样次数?\r\n const float linearSamplingTimes = 7.0;\r\n const float circleSamplingTimes = 12.0;\r\n vec4 ownColor = texture2D(uSampler, vTextureCoord);\r\n vec4 curColor;\r\n float totalAlpha = 0.0;\r\n float maxTotalAlpha = 0.0;\r\n float curDistanceX = 0.0;\r\n float curDistanceY = 0.0;\r\n float offsetX = dist * cos(angle) * px.x;\r\n float offsetY = dist * sin(angle) * px.y;\r\n\r\n const float PI = 3.14159265358979323846264;\r\n float cosAngle;\r\n float sinAngle;\r\n float offset = PI * 2.0 / circleSamplingTimes * random(vec2(12.9898, 78.233));\r\n float stepX = blurX * px.x / linearSamplingTimes;\r\n float stepY = blurY * px.y / linearSamplingTimes;\r\n for (float a = 0.0; a <= PI * 2.0; a += PI * 2.0 / circleSamplingTimes) {\r\n cosAngle = cos(a + offset);\r\n sinAngle = sin(a + offset);\r\n for (float i = 1.0; i <= linearSamplingTimes; i++) {\r\n curDistanceX = i * stepX * cosAngle;\r\n curDistanceY = i * stepY * sinAngle;\r\n if (vTextureCoord.x + curDistanceX - offsetX >= 0.0 && vTextureCoord.y + curDistanceY + offsetY <= 1.0){\r\n curColor = texture2D(uSampler, vec2(vTextureCoord.x + curDistanceX - offsetX, vTextureCoord.y + curDistanceY + offsetY));\r\n totalAlpha += (linearSamplingTimes - i) * curColor.a;\r\n }\r\n maxTotalAlpha += (linearSamplingTimes - i);\r\n }\r\n }\r\n\r\n ownColor.a = max(ownColor.a, 0.0001);\r\n ownColor.rgb = ownColor.rgb / ownColor.a;\r\n\r\n float outerGlowAlpha = (totalAlpha / maxTotalAlpha) * strength * alpha * (1. - inner) * max(min(hideObject, knockout), 1. - ownColor.a);\r\n float innerGlowAlpha = ((maxTotalAlpha - totalAlpha) / maxTotalAlpha) * strength * alpha * inner * ownColor.a;\r\n\r\n ownColor.a = max(ownColor.a * knockout * (1. - hideObject), 0.0001);\r\n vec3 mix1 = mix(ownColor.rgb, color.rgb, innerGlowAlpha / (innerGlowAlpha + ownColor.a));\r\n vec3 mix2 = mix(mix1, color.rgb, outerGlowAlpha / (innerGlowAlpha + ownColor.a + outerGlowAlpha));\r\n float resultAlpha = min(ownColor.a + outerGlowAlpha + innerGlowAlpha, 1.);\r\n gl_FragColor = vec4(mix2 * resultAlpha, resultAlpha);\r\n}",e.primitive_frag="precision lowp float;\r\nvarying vec2 vTextureCoord;\r\nvarying vec4 vColor;\r\n\r\nvoid main(void) {\r\n gl_FragColor = vColor;\r\n}",e.texture_frag="precision lowp float;\r\nvarying vec2 vTextureCoord;\r\nvarying vec4 vColor;\r\nuniform sampler2D uSampler;\r\n\r\nvoid main(void) {\r\n gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor;\r\n}",e.texture_etc_alphamask_frag="precision lowp float;\r\nvarying vec2 vTextureCoord;\r\nvarying vec4 vColor;\r\nuniform sampler2D uSampler;\r\nuniform sampler2D uSamplerAlphaMask;\r\nvoid main(void) {\r\nfloat alpha = texture2D(uSamplerAlphaMask, vTextureCoord).r;\r\nif (alpha < 0.0039) { discard; }\r\nvec4 v4Color = texture2D(uSampler, vTextureCoord);\r\nv4Color.rgb = v4Color.rgb * alpha;\r\nv4Color.a = alpha;\r\ngl_FragColor = v4Color * vColor;\r\n}",e.colorTransform_frag_etc_alphamask_frag="precision mediump float;\r\nvarying vec2 vTextureCoord;\r\nvarying vec4 vColor;\r\nuniform mat4 matrix;\r\nuniform vec4 colorAdd;\r\nuniform sampler2D uSampler;\r\nuniform sampler2D uSamplerAlphaMask;\r\n\r\nvoid main(void){\r\nfloat alpha = texture2D(uSamplerAlphaMask, vTextureCoord).r;\r\nif (alpha < 0.0039) { discard; }\r\nvec4 texColor = texture2D(uSampler, vTextureCoord);\r\nif(texColor.a > 0.0) {\r\n // 抵消预乘的alpha通道\r\ntexColor = vec4(texColor.rgb / texColor.a, texColor.a);\r\n}\r\nvec4 v4Color = clamp(texColor * matrix + colorAdd, 0.0, 1.0);\r\nv4Color.rgb = v4Color.rgb * alpha;\r\nv4Color.a = alpha;\r\ngl_FragColor = v4Color * vColor;\r\n}",e +}();e.EgretShaderLib=t,__reflect(t.prototype,"egret.web.EgretShaderLib")}(t=e.web||(e.web={}))}(egret||(egret={})); \ No newline at end of file diff --git a/bin-release/web/191201225322/js/game.min_16249d0f.js b/bin-release/web/191201225322/js/game.min_16249d0f.js new file mode 100644 index 0000000..85fb4ee --- /dev/null +++ b/bin-release/web/191201225322/js/game.min_16249d0f.js @@ -0,0 +1,2 @@ +var __reflect=this&&this.__reflect||function(t,e,r){t.__class__=e,r?r.push(e):r=[e],t.__types__=t.__types__?r.concat(t.__types__):r},__extends=this&&this.__extends||function(t,e){function r(){this.constructor=t}for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);r.prototype=e.prototype,t.prototype=new r},egret;!function(t){var e=function(){function t(){}return t.BINARY="binary",t.TEXT="text",t.VARIABLES="variables",t.TEXTURE="texture",t.SOUND="sound",t}();t.URLLoaderDataFormat=e,__reflect(e.prototype,"egret.URLLoaderDataFormat")}(egret||(egret={}));var egret;!function(t){var e=function(t){function e(e,r,i){var o=t.call(this)||this;return o._name=e,o._frame=0|r,i&&(o._end=0|i),o}return __extends(e,t),Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"frame",{get:function(){return this._frame},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"end",{get:function(){return this._end},enumerable:!0,configurable:!0}),e.prototype.clone=function(){return new e(this._name,this._frame,this._end)},e}(t.EventDispatcher);t.FrameLabel=e,__reflect(e.prototype,"egret.FrameLabel")}(egret||(egret={}));var egret;!function(t){var e=function(e){function r(){var t=e.call(this)||this;return t.$mcData=null,t.numFrames=1,t.frames=[],t.labels=null,t.events=[],t.frameRate=0,t.textureData=null,t.spriteSheet=null,t}return __extends(r,e),r.prototype.$init=function(t,e,r){this.textureData=e,this.spriteSheet=r,this.setMCData(t)},r.prototype.getKeyFrameData=function(t){var e=this.frames[t-1];return e.frame&&(e=this.frames[e.frame-1]),e},r.prototype.getTextureByFrame=function(t){var e=this.getKeyFrameData(t);if(e.res){var r=this.getTextureByResName(e.res);return r}return null},r.prototype.$getOffsetByFrame=function(t,e){var r=this.getKeyFrameData(t);r.res&&e.setTo(0|r.x,0|r.y)},r.prototype.getTextureByResName=function(t){if(null==this.spriteSheet)return null;var e=this.spriteSheet.getTexture(t);if(!e){var r=this.textureData[t];e=this.spriteSheet.createTexture(t,r.x,r.y,r.w,r.h)}return e},r.prototype.$isDataValid=function(){return this.frames.length>0},r.prototype.$isTextureValid=function(){return null!=this.textureData&&null!=this.spriteSheet},r.prototype.$fillMCData=function(t){this.frameRate=t.frameRate||24,this.fillFramesData(t.frames),this.fillFrameLabelsData(t.labels),this.fillFrameEventsData(t.events)},r.prototype.fillFramesData=function(t){for(var e,r=this.frames,i=t?t.length:0,o=0;i>o;o++){var n=t[o];if(r.push(n),n.duration){var s=parseInt(n.duration);if(s>1){e=r.length;for(var a=1;s>a;a++)r.push({frame:e})}}}this.numFrames=r.length},r.prototype.fillFrameLabelsData=function(e){if(e){var r=e.length;if(r>0){this.labels=[];for(var i=0;r>i;i++){var o=e[i];this.labels.push(new t.FrameLabel(o.name,o.frame,o.end))}}}},r.prototype.fillFrameEventsData=function(t){if(t){var e=t.length;if(e>0){this.events=[];for(var r=0;e>r;r++){var i=t[r];this.events[i.frame]=i.name}}}},Object.defineProperty(r.prototype,"mcData",{get:function(){return this.$mcData},set:function(t){this.setMCData(t)},enumerable:!0,configurable:!0}),r.prototype.setMCData=function(t){this.$mcData!=t&&(this.$mcData=t,t&&this.$fillMCData(t))},r}(t.HashObject);t.MovieClipData=e,__reflect(e.prototype,"egret.MovieClipData")}(egret||(egret={}));var egret;!function(t){var e=function(e){function r(t,r){var i=e.call(this)||this;return i.enableCache=!0,i.$mcDataCache={},i.$mcDataSet=t,i.setTexture(r),i}return __extends(r,e),r.prototype.clearCache=function(){this.$mcDataCache={}},r.prototype.generateMovieClipData=function(e){if(void 0===e&&(e=""),""==e&&this.$mcDataSet)for(e in this.$mcDataSet.mc)break;if(""==e)return null;var r=this.findFromCache(e,this.$mcDataCache);return r||(r=new t.MovieClipData,this.fillData(e,r,this.$mcDataCache)),r},r.prototype.findFromCache=function(t,e){return this.enableCache&&e[t]?e[t]:null},r.prototype.fillData=function(t,e,r){if(this.$mcDataSet){var i=this.$mcDataSet.mc[t];i&&(e.$init(i,this.$mcDataSet.res,this.$spriteSheet),this.enableCache&&(r[t]=e))}},Object.defineProperty(r.prototype,"mcDataSet",{get:function(){return this.$mcDataSet},set:function(t){this.$mcDataSet=t},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"texture",{set:function(t){this.setTexture(t)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"spriteSheet",{get:function(){return this.$spriteSheet},enumerable:!0,configurable:!0}),r.prototype.setTexture=function(e){this.$spriteSheet=e?new t.SpriteSheet(e):null},r}(t.EventDispatcher);t.MovieClipDataFactory=e,__reflect(e.prototype,"egret.MovieClipDataFactory")}(egret||(egret={}));var egret;!function(t){var e=function(e){function r(t,r,i,o){void 0===r&&(r=!1),void 0===i&&(i=!1),void 0===o&&(o=null);var n=e.call(this,t,r,i)||this;return n.frameLabel=null,n.frameLabel=o,n}return __extends(r,e),r.dispatchMovieClipEvent=function(e,i,o){void 0===o&&(o=null);var n=t.Event.create(r,i);n.frameLabel=o;var s=e.dispatchEvent(n);return t.Event.release(n),s},r.FRAME_LABEL="frame_label",r}(t.Event);t.MovieClipEvent=e,__reflect(e.prototype,"egret.MovieClipEvent")}(egret||(egret={}));var egret;!function(t){var e=function(){function e(){t.$error(1014)}return e.get=function(t){return-1>t&&(t=-1),t>1&&(t=1),function(e){return 0==t?e:0>t?e*(e*-t+1+t):e*((2-e)*t+(1-t))}},e.getPowOut=function(t){return function(e){return 1-Math.pow(1-e,t)}},e.quintOut=e.getPowOut(5),e.quartOut=e.getPowOut(4),e}();t.ScrollEase=e,__reflect(e.prototype,"egret.ScrollEase");var r=function(e){function r(t,r,i){var o=e.call(this)||this;return o._target=null,o._useTicks=!1,o.ignoreGlobalPause=!1,o.loop=!1,o.pluginData=null,o._steps=null,o._actions=null,o.paused=!1,o.duration=0,o._prevPos=-1,o.position=null,o._prevPosition=0,o._stepPosition=0,o.passive=!1,o.initialize(t,r,i),o}return __extends(r,e),r.get=function(t,e,i,o){return void 0===e&&(e=null),void 0===i&&(i=null),void 0===o&&(o=!1),o&&r.removeTweens(t),new r(t,e,i)},r.removeTweens=function(t){if(t.tween_count){for(var e=r._tweens,i=e.length-1;i>=0;i--)e[i]._target==t&&(e[i].paused=!0,e.splice(i,1));t.tween_count=0}},r.tick=function(t,e){void 0===e&&(e=!1);var i=t-r._lastTime;r._lastTime=t;for(var o=r._tweens.concat(),n=o.length-1;n>=0;n--){var s=o[n];e&&!s.ignoreGlobalPause||s.paused||s.tick(s._useTicks?1:i)}return!1},r._register=function(e,i){var o=e._target,n=r._tweens;if(i)o&&(o.tween_count=o.tween_count>0?o.tween_count+1:1),n.push(e),r._inited||(r._lastTime=t.getTimer(),t.ticker.$startTick(r.tick,null),r._inited=!0);else{o&&o.tween_count--;for(var s=n.length;s--;)if(n[s]==e)return void n.splice(s,1)}},r.prototype.initialize=function(t,e,i){this._target=t,e&&(this._useTicks=e.useTicks,this.ignoreGlobalPause=e.ignoreGlobalPause,this.loop=e.loop,e.onChange&&this.addEventListener("change",e.onChange,e.onChangeObj),e.override&&r.removeTweens(t)),this.pluginData=i||{},this._curQueueProps={},this._initQueueProps={},this._steps=[],this._actions=[],e&&e.paused?this.paused=!0:r._register(this,!0),e&&null!=e.position&&this.setPosition(e.position)},r.prototype.setPosition=function(t,e){void 0===e&&(e=1),0>t&&(t=0);var r=t,i=!1;if(r>=this.duration&&(this.loop?r%=this.duration:(r=this.duration,i=!0)),r==this._prevPos)return i;var o=this._prevPos;if(this.position=this._prevPos=r,this._prevPosition=t,this._target)if(i)this._updateTargetProps(null,1);else if(this._steps.length>0){var n=void 0,s=this._steps.length;for(n=0;s>n&&!(this._steps[n].t>r);n++);var a=this._steps[n-1];this._updateTargetProps(a,(this._stepPosition=r-a.t)/a.d)}return i&&this.setPaused(!0),0!=e&&this._actions.length>0&&(this._useTicks?this._runActions(r,r):1==e&&o>r?(o!=this.duration&&this._runActions(o,this.duration),this._runActions(0,r,!0)):this._runActions(o,r)),this.dispatchEventWith("change"),i},r.prototype._runActions=function(t,e,r){void 0===r&&(r=!1);var i=t,o=e,n=-1,s=this._actions.length,a=1;for(t>e&&(i=e,o=t,n=s,s=a=-1);(n+=a)!=s;){var c=this._actions[n],l=c.t;(l==o||l>i&&o>l||r&&l==t)&&c.f.apply(c.o,c.p)}},r.prototype._updateTargetProps=function(t,e){var i,o,n,s,a,c;if(t||1!=e){if(this.passive=!!t.v,this.passive)return;t.e&&(e=t.e(e,0,1,1)),i=t.p0,o=t.p1}else this.passive=!1,i=o=this._curQueueProps;for(var l in this._initQueueProps){null==(s=i[l])&&(i[l]=s=this._initQueueProps[l]),null==(a=o[l])&&(o[l]=a=s),n=s==a||0==e||1==e||"number"!=typeof s?1==e?a:s:s+(a-s)*e;var h=!1;if(c=r._plugins[l])for(var u=0,p=c.length;p>u;u++){var _=c[u].tween(this,l,n,i,o,e,!!t&&i==o,!t);_==r.IGNORE?h=!0:n=_}h||(this._target[l]=n)}},r.prototype.setPaused=function(t){return this.paused=t,r._register(this,!t),this},r.prototype._cloneProps=function(t){var e={};for(var r in t)e[r]=t[r];return e},r.prototype._addStep=function(t){return t.d>0&&(this._steps.push(t),t.t=this.duration,this.duration+=t.d),this},r.prototype._appendQueueProps=function(t){var e,i,o,n,s;for(var a in t)if(void 0===this._initQueueProps[a]){if(i=this._target[a],e=r._plugins[a])for(o=0,n=e.length;n>o;o++)i=e[o].init(this,a,i);this._initQueueProps[a]=this._curQueueProps[a]=void 0===i?null:i}else i=this._curQueueProps[a];for(var a in t){if(i=this._curQueueProps[a],e=r._plugins[a])for(s=s||{},o=0,n=e.length;n>o;o++)e[o].step&&e[o].step(this,a,i,t[a],s);this._curQueueProps[a]=t[a]}return s&&this._appendQueueProps(s),this._curQueueProps},r.prototype._addAction=function(t){return t.t=this.duration,this._actions.push(t),this},r.prototype.to=function(t,e,r){return void 0===r&&(r=void 0),(isNaN(e)||0>e)&&(e=0),this._addStep({d:e||0,p0:this._cloneProps(this._curQueueProps),e:r,p1:this._cloneProps(this._appendQueueProps(t))})},r.prototype.call=function(t,e,r){return void 0===e&&(e=void 0),void 0===r&&(r=void 0),this._addAction({f:t,p:r?r:[],o:e?e:this._target})},r.prototype.tick=function(t){this.paused||this.setPosition(this._prevPosition+t)},r._tweens=[],r.IGNORE={},r._plugins={},r._inited=!1,r._lastTime=0,r}(t.EventDispatcher);t.ScrollTween=r,__reflect(r.prototype,"egret.ScrollTween")}(egret||(egret={}));var egret;!function(t){var e=function(e){function r(r){void 0===r&&(r=null);var i=e.call(this)||this;return i.scrollBeginThreshold=10,i.scrollSpeed=1,i._content=null,i.delayTouchBeginEvent=null,i.touchBeginTimer=null,i.touchEnabled=!0,i._ScrV_Props_=new t.ScrollViewProperties,r&&i.setContent(r),i}return __extends(r,e),Object.defineProperty(r.prototype,"bounces",{get:function(){return this._ScrV_Props_._bounces},set:function(t){this._ScrV_Props_._bounces=!!t},enumerable:!0,configurable:!0}),r.prototype.setContent=function(t){this._content!==t&&(this.removeContent(),t&&(this._content=t,e.prototype.addChild.call(this,t),this._addEvents()))},r.prototype.removeContent=function(){this._content&&(this._removeEvents(),e.prototype.removeChildAt.call(this,0)),this._content=null},Object.defineProperty(r.prototype,"verticalScrollPolicy",{get:function(){return this._ScrV_Props_._verticalScrollPolicy},set:function(t){t!=this._ScrV_Props_._verticalScrollPolicy&&(this._ScrV_Props_._verticalScrollPolicy=t)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"horizontalScrollPolicy",{get:function(){return this._ScrV_Props_._horizontalScrollPolicy},set:function(t){t!=this._ScrV_Props_._horizontalScrollPolicy&&(this._ScrV_Props_._horizontalScrollPolicy=t)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"scrollLeft",{get:function(){return this._ScrV_Props_._scrollLeft},set:function(t){t!=this._ScrV_Props_._scrollLeft&&(this._ScrV_Props_._scrollLeft=t,this._validatePosition(!1,!0),this._updateContentPosition())},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"scrollTop",{get:function(){return this._ScrV_Props_._scrollTop},set:function(t){t!=this._ScrV_Props_._scrollTop&&(this._ScrV_Props_._scrollTop=t,this._validatePosition(!0,!1),this._updateContentPosition())},enumerable:!0,configurable:!0}),r.prototype.setScrollPosition=function(t,e,r){if(void 0===r&&(r=!1),(!r||0!=t||0!=e)&&(r||this._ScrV_Props_._scrollTop!=t||this._ScrV_Props_._scrollLeft!=e)){var i=this._ScrV_Props_._scrollTop,o=this._ScrV_Props_._scrollLeft;if(r){var n=this.getMaxScrollLeft(),s=this.getMaxScrollTop();(0>=i||i>=s)&&(t/=2),(0>=o||o>=n)&&(e/=2);var a=i+t,c=o+e,l=this._ScrV_Props_._bounces;l||((0>=a||a>=s)&&(a=Math.max(0,Math.min(a,s))),(0>=c||c>=n)&&(c=Math.max(0,Math.min(c,n)))),this._ScrV_Props_._scrollTop=a,this._ScrV_Props_._scrollLeft=c}else this._ScrV_Props_._scrollTop=t,this._ScrV_Props_._scrollLeft=e;this._validatePosition(!0,!0),this._updateContentPosition()}},r.prototype._validatePosition=function(t,e){if(void 0===t&&(t=!1),void 0===e&&(e=!1),t){var r=this.height,i=this._getContentHeight();this._ScrV_Props_._scrollTop=Math.max(this._ScrV_Props_._scrollTop,(0-r)/2),this._ScrV_Props_._scrollTop=Math.min(this._ScrV_Props_._scrollTop,i>r?i-r/2:r/2)}if(e){var o=this.width,n=this._getContentWidth();this._ScrV_Props_._scrollLeft=Math.max(this._ScrV_Props_._scrollLeft,(0-o)/2),this._ScrV_Props_._scrollLeft=Math.min(this._ScrV_Props_._scrollLeft,n>o?n-o/2:o/2)}},r.prototype.$setWidth=function(t){this.$explicitWidth!=t&&(e.prototype.$setWidth.call(this,t),this._updateContentPosition())},r.prototype.$setHeight=function(t){this.$explicitHeight!=t&&(e.prototype.$setHeight.call(this,t),this._updateContentPosition())},r.prototype._updateContentPosition=function(){var e=this.height,r=this.width;this.scrollRect=new t.Rectangle(Math.round(this._ScrV_Props_._scrollLeft),Math.round(this._ScrV_Props_._scrollTop),r,e),this.dispatchEvent(new t.Event(t.Event.CHANGE))},r.prototype._checkScrollPolicy=function(){var t=this._ScrV_Props_._horizontalScrollPolicy,e=this.__checkScrollPolicy(t,this._getContentWidth(),this.width);this._ScrV_Props_._hCanScroll=e;var r=this._ScrV_Props_._verticalScrollPolicy,i=this.__checkScrollPolicy(r,this._getContentHeight(),this.height);return this._ScrV_Props_._vCanScroll=i,e||i},r.prototype.__checkScrollPolicy=function(t,e,r){return"on"==t?!0:"off"==t?!1:e>r},r.prototype._addEvents=function(){this.addEventListener(t.TouchEvent.TOUCH_BEGIN,this._onTouchBegin,this),this.addEventListener(t.TouchEvent.TOUCH_BEGIN,this._onTouchBeginCapture,this,!0),this.addEventListener(t.TouchEvent.TOUCH_END,this._onTouchEndCapture,this,!0)},r.prototype._removeEvents=function(){this.removeEventListener(t.TouchEvent.TOUCH_BEGIN,this._onTouchBegin,this),this.removeEventListener(t.TouchEvent.TOUCH_BEGIN,this._onTouchBeginCapture,this,!0),this.removeEventListener(t.TouchEvent.TOUCH_END,this._onTouchEndCapture,this,!0)},r.prototype._onTouchBegin=function(e){if(!e.$isDefaultPrevented){var r=this._checkScrollPolicy();r&&(this._ScrV_Props_._touchStartPosition.x=e.stageX,this._ScrV_Props_._touchStartPosition.y=e.stageY,(this._ScrV_Props_._isHTweenPlaying||this._ScrV_Props_._isVTweenPlaying)&&this._onScrollFinished(),this._tempStage=this.stage,this._tempStage.addEventListener(t.TouchEvent.TOUCH_MOVE,this._onTouchMove,this),this._tempStage.addEventListener(t.TouchEvent.TOUCH_END,this._onTouchEnd,this),this._tempStage.addEventListener(t.TouchEvent.LEAVE_STAGE,this._onTouchEnd,this),this.addEventListener(t.Event.ENTER_FRAME,this._onEnterFrame,this),this._logTouchEvent(e),e.preventDefault())}},r.prototype._onTouchBeginCapture=function(e){var r=this._checkScrollPolicy();if(r){for(var i=e.target;i!=this;){if("_checkScrollPolicy"in i&&(r=i._checkScrollPolicy()))return;i=i.parent}e.stopPropagation();var o=this.cloneTouchEvent(e);this.delayTouchBeginEvent=o,this.touchBeginTimer||(this.touchBeginTimer=new t.Timer(100,1),this.touchBeginTimer.addEventListener(t.TimerEvent.TIMER_COMPLETE,this._onTouchBeginTimer,this)),this.touchBeginTimer.start(),this._onTouchBegin(e)}},r.prototype._onTouchEndCapture=function(e){var r=this;if(this.delayTouchBeginEvent){this._onTouchBeginTimer(),e.stopPropagation();var i=this.cloneTouchEvent(e);t.callLater(function(){r.stage&&r.dispatchPropagationEvent(i)},this)}},r.prototype._onTouchBeginTimer=function(){this.touchBeginTimer.stop();var t=this.delayTouchBeginEvent;this.delayTouchBeginEvent=null,this.stage&&this.dispatchPropagationEvent(t)},r.prototype.dispatchPropagationEvent=function(e){for(var r=e.$target,i=this.$getPropagationList(r),o=i.length,n=.5*i.length,s=-1,a=0;o>a;a++)if(i[a]===this._content){s=a;break}i.splice(0,s+1),n-=s+1,this.$dispatchPropagationEvent(e,i,n),t.Event.release(e)},r.prototype._onTouchMove=function(t){if(this._ScrV_Props_._lastTouchPosition.x!=t.stageX||this._ScrV_Props_._lastTouchPosition.y!=t.stageY){if(!this._ScrV_Props_._scrollStarted){var e=t.stageX-this._ScrV_Props_._touchStartPosition.x,r=t.stageY-this._ScrV_Props_._touchStartPosition.y,i=Math.sqrt(e*e+r*r);if(i100&&r-this._ScrV_Props_._lastTouchTime<300&&this._calcVelocitys(this._ScrV_Props_._lastTouchEvent)},r.prototype._logTouchEvent=function(e){this._ScrV_Props_._lastTouchPosition.x=e.stageX,this._ScrV_Props_._lastTouchPosition.y=e.stageY,this._ScrV_Props_._lastTouchEvent=this.cloneTouchEvent(e),this._ScrV_Props_._lastTouchTime=t.getTimer()},r.prototype._getPointChange=function(t){return{x:this._ScrV_Props_._hCanScroll===!1?0:this._ScrV_Props_._lastTouchPosition.x-t.stageX,y:this._ScrV_Props_._vCanScroll===!1?0:this._ScrV_Props_._lastTouchPosition.y-t.stageY}},r.prototype._calcVelocitys=function(e){var r=t.getTimer();if(0==this._ScrV_Props_._lastTouchTime)return void(this._ScrV_Props_._lastTouchTime=r);var i=this._getPointChange(e),o=r-this._ScrV_Props_._lastTouchTime;i.x/=o,i.y/=o,this._ScrV_Props_._velocitys.push(i),this._ScrV_Props_._velocitys.length>5&&this._ScrV_Props_._velocitys.shift(),this._ScrV_Props_._lastTouchPosition.x=e.stageX,this._ScrV_Props_._lastTouchPosition.y=e.stageY},r.prototype._getContentWidth=function(){return this._content.$explicitWidth||this._content.width},r.prototype._getContentHeight=function(){return this._content.$explicitHeight||this._content.height},r.prototype.getMaxScrollLeft=function(){var t=this._getContentWidth()-this.width;return Math.max(0,t)},r.prototype.getMaxScrollTop=function(){var t=this._getContentHeight()-this.height;return Math.max(0,t)},r.prototype._moveAfterTouchEnd=function(){if(0!=this._ScrV_Props_._velocitys.length){for(var t={x:0,y:0},e=0,i=0;i.02?this.getAnimationDatas(s,this._ScrV_Props_._scrollLeft,h):{position:this._ScrV_Props_._scrollLeft,duration:1},_=l>.02?this.getAnimationDatas(a,this._ScrV_Props_._scrollTop,u):{position:this._ScrV_Props_._scrollTop,duration:1};this.setScrollLeft(p.position,p.duration),this.setScrollTop(_.position,_.duration)}},r.prototype.onTweenFinished=function(t){t==this._ScrV_Props_._vScrollTween&&(this._ScrV_Props_._isVTweenPlaying=!1),t==this._ScrV_Props_._hScrollTween&&(this._ScrV_Props_._isHTweenPlaying=!1),0==this._ScrV_Props_._isHTweenPlaying&&0==this._ScrV_Props_._isVTweenPlaying&&this._onScrollFinished()},r.prototype._onScrollStarted=function(){},r.prototype._onScrollFinished=function(){t.ScrollTween.removeTweens(this),this._ScrV_Props_._hScrollTween=null,this._ScrV_Props_._vScrollTween=null,this._ScrV_Props_._isHTweenPlaying=!1,this._ScrV_Props_._isVTweenPlaying=!1,this.dispatchEvent(new t.Event(t.Event.COMPLETE))},r.prototype.setScrollTop=function(e,r){void 0===r&&(r=0);var i=Math.min(this.getMaxScrollTop(),Math.max(e,0));if(0==r)return void(this.scrollTop=i);0==this._ScrV_Props_._bounces&&(e=i);var o=t.ScrollTween.get(this).to({scrollTop:e},r,t.ScrollEase.quartOut);i!=e&&o.to({scrollTop:i},300,t.ScrollEase.quintOut),this._ScrV_Props_._isVTweenPlaying=!0,this._ScrV_Props_._vScrollTween=o,o.call(this.onTweenFinished,this,[o]),this._ScrV_Props_._isHTweenPlaying||this._onScrollStarted()},r.prototype.setScrollLeft=function(e,r){void 0===r&&(r=0);var i=Math.min(this.getMaxScrollLeft(),Math.max(e,0));if(0==r)return void(this.scrollLeft=i);0==this._ScrV_Props_._bounces&&(e=i);var o=t.ScrollTween.get(this).to({scrollLeft:e},r,t.ScrollEase.quartOut);i!=e&&o.to({scrollLeft:i},300,t.ScrollEase.quintOut),this._ScrV_Props_._isHTweenPlaying=!0,this._ScrV_Props_._hScrollTween=o,o.call(this.onTweenFinished,this,[o]),this._ScrV_Props_._isVTweenPlaying||this._onScrollStarted()},r.prototype.getAnimationDatas=function(t,e,r){var i=Math.abs(t),o=.95,n=0,s=.998,a=.02,c=e+500*t;if(0>c||c>r)for(c=e;Math.abs(t)!=1/0&&Math.abs(t)>a;)c+=t,t*=0>c||c>r?s*o:s,n++;else n=500*-Math.log(a/i);var l={position:Math.min(r+50,Math.max(c,-50)),duration:n};return l},r.prototype.cloneTouchEvent=function(e){var r=new t.TouchEvent(e.type,e.bubbles,e.cancelable);return r.touchPointID=e.touchPointID,r.$stageX=e.stageX,r.$stageY=e.stageY,r.touchDown=e.touchDown,r.$isDefaultPrevented=!1,r.$target=e.target,r},r.prototype.throwNotSupportedError=function(){t.$error(1023)},r.prototype.addChild=function(t){return this.throwNotSupportedError(),null},r.prototype.addChildAt=function(t,e){return this.throwNotSupportedError(),null},r.prototype.removeChild=function(t){return this.throwNotSupportedError(),null},r.prototype.removeChildAt=function(t){return this.throwNotSupportedError(),null},r.prototype.setChildIndex=function(t,e){this.throwNotSupportedError()},r.prototype.swapChildren=function(t,e){this.throwNotSupportedError()},r.prototype.swapChildrenAt=function(t,e){this.throwNotSupportedError()},r.weight=[1,1.33,1.66,2,2.33],r}(t.DisplayObjectContainer);t.ScrollView=e,__reflect(e.prototype,"egret.ScrollView")}(egret||(egret={}));var egret;!function(t){var e=function(){function e(){this._verticalScrollPolicy="auto",this._horizontalScrollPolicy="auto",this._scrollLeft=0,this._scrollTop=0,this._hCanScroll=!1,this._vCanScroll=!1,this._lastTouchPosition=new t.Point(0,0),this._touchStartPosition=new t.Point(0,0),this._scrollStarted=!1,this._lastTouchTime=0,this._lastTouchEvent=null,this._velocitys=[],this._isHTweenPlaying=!1,this._isVTweenPlaying=!1,this._hScrollTween=null,this._vScrollTween=null,this._bounces=!0}return e}();t.ScrollViewProperties=e,__reflect(e.prototype,"egret.ScrollViewProperties")}(egret||(egret={}));var egret;!function(t){function e(e){var r=e.url;return-1==r.indexOf("?")&&e.method==t.URLRequestMethod.GET&&e.data&&e.data instanceof t.URLVariables&&(r=r+"?"+e.data.toString()),r}var r=function(r){function i(e){void 0===e&&(e=null);var i=r.call(this)||this;return i.dataFormat=t.URLLoaderDataFormat.TEXT,i.data=null,i._request=null,i._status=-1,e&&i.load(e),i}return __extends(i,r),i.prototype.load=function(r){this._request=r,this.data=null;var i=this;if(i.dataFormat==t.URLLoaderDataFormat.TEXTURE)return void this.loadTexture(i);if(i.dataFormat==t.URLLoaderDataFormat.SOUND)return void this.loadSound(i);var o=e(r),n=new t.HttpRequest;n.open(o,r.method==t.URLRequestMethod.POST?t.HttpMethod.POST:t.HttpMethod.GET);var s;if(r.method!=t.URLRequestMethod.GET&&r.data)if(r.data instanceof t.URLVariables){n.setRequestHeader("Content-Type","application/x-www-form-urlencoded");var a=r.data;s=a.toString()}else n.setRequestHeader("Content-Type","multipart/form-data"),s=r.data;else;for(var c=r.requestHeaders.length,l=0;c>l;l++){var h=r.requestHeaders[l];n.setRequestHeader(h.name,h.value)}n.addEventListener(t.Event.COMPLETE,function(){i.data=n.response,t.Event.dispatchEvent(i,t.Event.COMPLETE)},this),n.addEventListener(t.IOErrorEvent.IO_ERROR,function(){t.IOErrorEvent.dispatchIOErrorEvent(i)},this),n.responseType=i.dataFormat==t.URLLoaderDataFormat.BINARY?t.HttpResponseType.ARRAY_BUFFER:t.HttpResponseType.TEXT,n.send(s)},i.prototype.getResponseType=function(e){switch(e){case t.URLLoaderDataFormat.TEXT:case t.URLLoaderDataFormat.VARIABLES:return t.URLLoaderDataFormat.TEXT;case t.URLLoaderDataFormat.BINARY:return"arraybuffer";default:return e}},i.prototype.loadSound=function(e){function r(t){e.dispatchEvent(t)}function i(t){n(),e.dispatchEvent(t)}function o(r){n(),e.data=c,window.setTimeout(function(){e.dispatchEventWith(t.Event.COMPLETE)},0)}function n(){c.removeEventListener(t.Event.COMPLETE,o,s),c.removeEventListener(t.IOErrorEvent.IO_ERROR,i,s),c.removeEventListener(t.ProgressEvent.PROGRESS,r,s)}var s=this,a=e._request.url,c=new t.Sound;c.addEventListener(t.Event.COMPLETE,o,s),c.addEventListener(t.IOErrorEvent.IO_ERROR,i,s),c.addEventListener(t.ProgressEvent.PROGRESS,r,s),c.load(a)},i.prototype.loadTexture=function(e){function r(t){e.dispatchEvent(t)}function i(t){n(),e.dispatchEvent(t)}function o(r){n();var i=c.data;i.source.setAttribute&&i.source.setAttribute("bitmapSrc",a);var o=new t.Texture;o._setBitmapData(i),e.data=o,window.setTimeout(function(){e.dispatchEventWith(t.Event.COMPLETE)},0)}function n(){c.removeEventListener(t.Event.COMPLETE,o,s),c.removeEventListener(t.IOErrorEvent.IO_ERROR,i,s),c.removeEventListener(t.ProgressEvent.PROGRESS,r,s)}var s=this,a=e._request.url,c=new t.ImageLoader;c.addEventListener(t.Event.COMPLETE,o,s),c.addEventListener(t.IOErrorEvent.IO_ERROR,i,s),c.addEventListener(t.ProgressEvent.PROGRESS,r,s),c.load(a)},i.prototype.__recycle=function(){this._request=null,this.data=null},i}(t.EventDispatcher);t.URLLoader=r,__reflect(r.prototype,"egret.URLLoader")}(egret||(egret={}));var egret;!function(t){var e=function(e){function r(r){var i=e.call(this)||this;return i.$texture=null,i.offsetPoint=t.Point.create(0,0),i.$movieClipData=null,i.frames=null,i.$totalFrames=0,i.frameLabels=null,i.$frameLabelStart=0,i.$frameLabelEnd=0,i.frameEvents=null,i.frameIntervalTime=0,i.$eventPool=null,i.$isPlaying=!1,i.isStopped=!0,i.playTimes=0,i.$currentFrameNum=0,i.$nextFrameNum=1,i.displayedKeyFrameNum=0,i.passedTime=0,i.$frameRate=0/0,i.lastTime=0,i.$smoothing=t.Bitmap.defaultSmoothing,i.setMovieClipData(r),t.nativeRender||(i.$renderNode=new t.sys.NormalBitmapNode),i}return __extends(r,e),r.prototype.createNativeDisplayObject=function(){this.$nativeDisplayObject=new egret_native.NativeDisplayObject(11)},Object.defineProperty(r.prototype,"smoothing",{get:function(){return this.$smoothing},set:function(t){t!=this.$smoothing&&(this.$smoothing=t)},enumerable:!0,configurable:!0}),r.prototype.$init=function(){this.$reset();var t=this.$movieClipData;t&&t.$isDataValid()&&(this.frames=t.frames,this.$totalFrames=t.numFrames,this.frameLabels=t.labels,this.frameEvents=t.events,this.$frameRate=t.frameRate,this.frameIntervalTime=1e3/this.$frameRate,this._initFrame())},r.prototype.$reset=function(){this.frames=null,this.playTimes=0,this.$isPlaying=!1,this.setIsStopped(!0),this.$currentFrameNum=0,this.$nextFrameNum=1,this.displayedKeyFrameNum=0,this.passedTime=0,this.$eventPool=[]},r.prototype._initFrame=function(){this.$movieClipData.$isTextureValid()&&(this.advanceFrame(),this.constructFrame())},r.prototype.$updateRenderNode=function(){var e=this.$texture;if(e){var r=Math.round(this.offsetPoint.x),i=Math.round(this.offsetPoint.y),o=e.$bitmapWidth,n=e.$bitmapHeight,s=e.$getTextureWidth(),a=e.$getTextureHeight(),c=Math.round(e.$getScaleBitmapWidth()),l=Math.round(e.$getScaleBitmapHeight()),h=e.$sourceWidth,u=e.$sourceHeight;t.sys.BitmapNode.$updateTextureData(this.$renderNode,e.$bitmapData,e.$bitmapX,e.$bitmapY,o,n,r,i,s,a,c,l,h,u,t.BitmapFillMode.SCALE,this.$smoothing)}},r.prototype.$measureContentBounds=function(t){var e=this.$texture;if(e){var r=this.offsetPoint.x,i=this.offsetPoint.y,o=e.$getTextureWidth(),n=e.$getTextureHeight();t.setTo(r,i,o,n)}else t.setEmpty()},r.prototype.$onAddToStage=function(t,r){e.prototype.$onAddToStage.call(this,t,r),this.$isPlaying&&this.$totalFrames>1&&this.setIsStopped(!1)},r.prototype.$onRemoveFromStage=function(){e.prototype.$onRemoveFromStage.call(this),this.setIsStopped(!0)},r.prototype.getFrameLabelByName=function(t,e){void 0===e&&(e=!1),e&&(t=t.toLowerCase());var r=this.frameLabels;if(r)for(var i=null,o=0;ot)return e;e=r}return e},r.prototype.play=function(e){void 0===e&&(e=0),this.lastTime=t.getTimer(),this.passedTime=0,this.$isPlaying=!0,this.setPlayTimes(e),this.$totalFrames>1&&this.$stage&&this.setIsStopped(!1)},r.prototype.stop=function(){this.$isPlaying=!1,this.setIsStopped(!0)},r.prototype.prevFrame=function(){this.gotoAndStop(this.$currentFrameNum-1)},r.prototype.nextFrame=function(){this.gotoAndStop(this.$currentFrameNum+1)},r.prototype.gotoAndPlay=function(e,r){void 0===r&&(r=0),(0==arguments.length||arguments.length>2)&&t.$error(1022,"MovieClip.gotoAndPlay()"),"string"==typeof e?this.getFrameStartEnd(e):(this.$frameLabelStart=0,this.$frameLabelEnd=0),this.play(r),this.gotoFrame(e)},r.prototype.gotoAndStop=function(e){1!=arguments.length&&t.$error(1022,"MovieClip.gotoAndStop()"),this.stop(),this.gotoFrame(e)},r.prototype.gotoFrame=function(e){var r;"string"==typeof e?r=this.getFrameLabelByName(e).frame:(r=parseInt(e+"",10),r!=e&&t.$error(1022,"Frame Label Not Found")),1>r?r=1:r>this.$totalFrames&&(r=this.$totalFrames),r!=this.$nextFrameNum&&(this.$nextFrameNum=r,this.advanceFrame(),this.constructFrame(),this.handlePendingEvent())},r.prototype.advanceTime=function(e){var r=this,i=e-r.lastTime;r.lastTime=e;var o=r.frameIntervalTime,n=r.passedTime+i;r.passedTime=n%o;var s=n/o;if(1>s)return!1;for(;s>=1;){if(s--,r.$nextFrameNum++,r.$nextFrameNum>r.$totalFrames||r.$frameLabelStart>0&&r.$nextFrameNum>r.$frameLabelEnd)if(-1==r.playTimes)r.$eventPool.push(t.Event.LOOP_COMPLETE),r.$nextFrameNum=1;else{if(r.playTimes--,!(r.playTimes>0)){r.$nextFrameNum=r.$totalFrames,r.$eventPool.push(t.Event.COMPLETE),r.stop();break}r.$eventPool.push(t.Event.LOOP_COMPLETE),r.$nextFrameNum=1}r.$currentFrameNum==r.$frameLabelEnd&&(r.$nextFrameNum=r.$frameLabelStart),r.advanceFrame()}return r.constructFrame(),r.handlePendingEvent(),!1},r.prototype.advanceFrame=function(){this.$currentFrameNum=this.$nextFrameNum;var e=this.frameEvents[this.$nextFrameNum];e&&""!=e&&t.MovieClipEvent.dispatchMovieClipEvent(this,t.MovieClipEvent.FRAME_LABEL,e)},r.prototype.constructFrame=function(){var e=this,r=e.$currentFrameNum;if(e.displayedKeyFrameNum!=r){var i=e.$movieClipData.getTextureByFrame(r);if(e.$texture=i,e.$movieClipData.$getOffsetByFrame(r,e.offsetPoint),e.displayedKeyFrameNum=r,e.$renderDirty=!0,t.nativeRender)e.$nativeDisplayObject.setDataToBitmapNode(e.$nativeDisplayObject.id,i,[i.$bitmapX,i.$bitmapY,i.$bitmapWidth,i.$bitmapHeight,e.offsetPoint.x,e.offsetPoint.y,i.$getScaleBitmapWidth(),i.$getScaleBitmapHeight(),i.$sourceWidth,i.$sourceHeight]),e.$nativeDisplayObject.setWidth(i.$getTextureWidth()+e.offsetPoint.x),e.$nativeDisplayObject.setHeight(i.$getTextureHeight()+e.offsetPoint.y);else{var o=e.$parent;o&&!o.$cacheDirty&&(o.$cacheDirty=!0,o.$cacheDirtyUp()); +var n=e.$maskedObject;n&&!n.$cacheDirty&&(n.$cacheDirty=!0,n.$cacheDirtyUp())}}},r.prototype.$renderFrame=function(){var t=this;t.$texture=t.$movieClipData.getTextureByFrame(t.$currentFrameNum),t.$renderDirty=!0;var e=t.$parent;e&&!e.$cacheDirty&&(e.$cacheDirty=!0,e.$cacheDirtyUp());var r=t.$maskedObject;r&&!r.$cacheDirty&&(r.$cacheDirty=!0,r.$cacheDirtyUp())},r.prototype.handlePendingEvent=function(){if(0!=this.$eventPool.length){this.$eventPool.reverse();for(var e=this.$eventPool,r=e.length,i=!1,o=!1,n=0;r>n;n++){var s=e.pop();s==t.Event.LOOP_COMPLETE?o=!0:s==t.Event.COMPLETE?i=!0:this.dispatchEventWith(s)}o&&this.dispatchEventWith(t.Event.LOOP_COMPLETE),i&&this.dispatchEventWith(t.Event.COMPLETE)}},Object.defineProperty(r.prototype,"totalFrames",{get:function(){return this.$totalFrames},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"currentFrame",{get:function(){return this.$currentFrameNum},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"currentFrameLabel",{get:function(){var t=this.getFrameLabelByFrame(this.$currentFrameNum);return t&&t.name},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"currentLabel",{get:function(){var t=this.getFrameLabelForFrame(this.$currentFrameNum);return t?t.name:null},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"frameRate",{get:function(){return this.$frameRate},set:function(t){t!=this.$frameRate&&(this.$frameRate=t,this.frameIntervalTime=1e3/this.$frameRate)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"isPlaying",{get:function(){return this.$isPlaying},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"movieClipData",{get:function(){return this.$movieClipData},set:function(t){this.setMovieClipData(t)},enumerable:!0,configurable:!0}),r.prototype.setMovieClipData=function(t){this.$movieClipData!=t&&(this.$movieClipData=t,this.$init())},r.prototype.setPlayTimes=function(t){(0>t||t>=1)&&(this.playTimes=0>t?-1:Math.floor(t))},r.prototype.setIsStopped=function(e){this.isStopped!=e&&(this.isStopped=e,e?t.ticker.$stopTick(this.advanceTime,this):(this.playTimes=0==this.playTimes?1:this.playTimes,this.lastTime=t.getTimer(),t.ticker.$startTick(this.advanceTime,this)))},r}(t.DisplayObject);t.MovieClip=e,__reflect(e.prototype,"egret.MovieClip")}(egret||(egret={}));var egret;!function(t){var e=function(e){function r(r){void 0===r&&(r=null);var i=e.call(this)||this;return i.data=null,i.method=t.URLRequestMethod.GET,i.url="",i.requestHeaders=[],i.url=r,i}return __extends(r,e),r}(t.HashObject);t.URLRequest=e,__reflect(e.prototype,"egret.URLRequest")}(egret||(egret={}));var egret;!function(t){var e=function(){function t(t,e){this.name="",this.value="",this.name=t,this.value=e}return t}();t.URLRequestHeader=e,__reflect(e.prototype,"egret.URLRequestHeader")}(egret||(egret={}));var egret;!function(t){var e=function(){function t(){}return t.GET="get",t.POST="post",t}();t.URLRequestMethod=e,__reflect(e.prototype,"egret.URLRequestMethod")}(egret||(egret={}));var egret;!function(t){var e=function(t){function e(e){void 0===e&&(e=null);var r=t.call(this)||this;return r.variables=null,null!==e&&r.decode(e),r}return __extends(e,t),e.prototype.decode=function(t){this.variables||(this.variables={}),t=t.split("+").join(" ");for(var e,r=/[?&]?([^=]+)=([^&]*)/g;e=r.exec(t);){var i=decodeURIComponent(e[1]),o=decodeURIComponent(e[2]);if(i in this.variables!=0){var n=this.variables[i];n instanceof Array?n.push(o):this.variables[i]=[n,o]}else this.variables[i]=o}},e.prototype.toString=function(){if(!this.variables)return"";var t=this.variables,e=[];for(var r in t)e.push(this.encodeValue(r,t[r]));return e.join("&")},e.prototype.encodeValue=function(t,e){return e instanceof Array?this.encodeArray(t,e):encodeURIComponent(t)+"="+encodeURIComponent(e)},e.prototype.encodeArray=function(t,e){return t?0==e.length?encodeURIComponent(t)+"=":e.map(function(e){return encodeURIComponent(t)+"="+encodeURIComponent(e)}).join("&"):""},e}(t.HashObject);t.URLVariables=e,__reflect(e.prototype,"egret.URLVariables")}(egret||(egret={}));var egret;!function(t){var e=function(e){function r(){var i=e.call(this)||this;return i._timeScale=1,i._paused=!1,i._callIndex=-1,i._lastTime=0,i.callBackList=[],null!=r.instance,t.ticker.$startTick(i.update,i),i._lastTime=t.getTimer(),i}return __extends(r,e),r.prototype.update=function(t){var e=t-this._lastTime;if(this._lastTime=t,this._paused)return!1;var r=e*this._timeScale;for(this._callList=this.callBackList.concat(),this._callIndex=0;this._callIndext&&(t=1),r.autoDisposeTime=t,r.frameCount=0,r}return __extends(r,e),r.$init=function(){t.ticker.$startTick(r.onUpdate,r)},r.onUpdate=function(t){for(var e=r._callBackList,i=e.length-1;i>=0;i--)e[i].$checkFrame();return!1},r.prototype.$checkFrame=function(){this.frameCount--,this.frameCount<=0&&this.dispose()},Object.defineProperty(r.prototype,"length",{get:function(){return this._length},enumerable:!0,configurable:!0}),r.prototype.push=function(t){var e=this.objectPool;-1==e.indexOf(t)&&(e.push(t),t.__recycle&&t.__recycle(),this._length++,0==this.frameCount&&(this.frameCount=this.autoDisposeTime,r._callBackList.push(this)))},r.prototype.pop=function(){return 0==this._length?null:(this._length--,this.objectPool.pop())},r.prototype.dispose=function(){this._length>0&&(this.objectPool=[],this._length=0),this.frameCount=0;var t=r._callBackList,e=t.indexOf(this);-1!=e&&t.splice(e,1)},r._callBackList=[],r}(t.HashObject);t.Recycler=e,__reflect(e.prototype,"egret.Recycler"),e.$init()}(egret||(egret={}));var egret;!function(t){function e(e,r,c){for(var l=[],h=3;hi;i++){e=arguments[i];for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a])}return t},__awaiter=this&&this.__awaiter||function(t,e,i,s){return new(i||(i=Promise))(function(a,n){function r(t){try{h(s.next(t))}catch(e){n(e)}}function o(t){try{h(s["throw"](t))}catch(e){n(e)}}function h(t){t.done?a(t.value):new i(function(e){e(t.value)}).then(r,o)}h((s=s.apply(t,e||[])).next())})},__generator=this&&this.__generator||function(t,e){function i(t){return function(e){return s([t,e])}}function s(i){if(a)throw new TypeError("Generator is already executing.");for(;h;)try{if(a=1,n&&(r=n[2&i[0]?"return":i[0]?"throw":"next"])&&!(r=r.call(n,i[1])).done)return r;switch(n=0,r&&(i=[0,r.value]),i[0]){case 0:case 1:r=i;break;case 4:return h.label++,{value:i[1],done:!1};case 5:h.label++,n=i[1],i=[0];continue;case 7:i=h.ops.pop(),h.trys.pop();continue;default:if(r=h.trys,!(r=r.length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){h=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]3&&(this.status=1,this.speedBall=0),this.status>2?this.cxk.texture=RES.getRes("paddle_2_png"):this.cxk.texture=RES.getRes("paddle_1_png"),this.status=this.status+.1,this.changeBall()):1===this.step?(this.cxk.texture=RES.getRes("paddle_2_png"),this.ball.y=30,this.cxk.height>40&&(this.cxk.height-=.6,this.cxk.y+=.6)):2===this.step&&(this.cxk.texture=RES.getRes("paddle_3_png"),this.cxk.height=62,this.cxk.y=0,this.shotStatus+=.4,this.shotStatus>1&&(this.cxk.texture=RES.getRes("paddle_4_png")))},e.prototype.changeBall=function(){this.status>2?this.ball.y=15+10*this.speedBall:this.ball.y=40-10*this.speedBall,this.speedBall+=.15},e.prototype.createBitmapByName=function(t){var e=new egret.Bitmap,i=RES.getRes(t);return e.texture=i,e},e}(egret.DisplayObjectContainer);__reflect(CXK.prototype,"CXK");var LoadingUI=function(t){function e(){var e=t.call(this)||this;return e.createView(),e}return __extends(e,t),e.prototype.createView=function(){this.textField=new egret.TextField,this.addChild(this.textField),this.textField.textColor=5619787,this.textField.width=480,this.textField.height=100},e.prototype.onProgress=function(t,e){this.textField.text="正在加载..."+t+"/"+e},e}(egret.Sprite);__reflect(LoadingUI.prototype,"LoadingUI",["RES.PromiseTaskReporter"]);var getTimer=egret.getTimer,Main=function(t){function e(){var e=t.call(this)||this;return e.ballT=0,e.gameStatus=0,e.powerEarn=0,e.ballCount=10,e.totalPoint=0,e.addEventListener(egret.Event.ADDED_TO_STAGE,e.onAddToStage,e),e.addEventListener(egret.TouchEvent.TOUCH_BEGIN,e.onTouchBeginState,e),e.addEventListener(egret.TouchEvent.TOUCH_END,e.onTouchEndState,e),e.addEventListener(egret.Event.ENTER_FRAME,e.onEnterFrame,e),e}return __extends(e,t),e.prototype.onAddToStage=function(t){egret.lifecycle.addLifecycleListener(function(t){t.onUpdate=function(){}}),egret.lifecycle.onPause=function(){egret.ticker.pause()},egret.lifecycle.onResume=function(){egret.ticker.resume()},this.runGame()["catch"](function(t){console.log(t)})},e.prototype.runGame=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(t){switch(t.label){case 0:return[4,this.loadResource()];case 1:return t.sent(),this.createGameScene(),[2]}})})},e.prototype.loadResource=function(){return __awaiter(this,void 0,void 0,function(){var t,e;return __generator(this,function(i){switch(i.label){case 0:return i.trys.push([0,3,,4]),t=new LoadingUI,this.stage.addChild(t),[4,RES.loadConfig("resource/default.res.json","resource/")];case 1:return i.sent(),[4,RES.loadGroup("preload",0,t)];case 2:return i.sent(),this.scale_intro=RES.getRes("scale_intro_mp3"),this.scale_circle=RES.getRes("scale_loop_mp3"),this.shotSound=RES.getRes("launch_mp3"),this.bingoSound=RES.getRes("point_mp3"),this.dieSound=RES.getRes("die_mp3"),this.stage.removeChild(t),[3,4];case 3:return e=i.sent(),console.error(e),[3,4];case 4:return[2]}})})},e.prototype.drawBallCountAndScore=function(){this.ballCountText.text="x"+this.ballCount.toString(),this.pointText.text="得分:"+this.totalPoint.toString()},e.prototype.createGameScene=function(){var t=this.stage.stageWidth,e=this.stage.stageHeight,i=new egret.Shape;i.graphics.beginFill(16777215,1),i.graphics.drawRect(0,0,t,e),i.graphics.endFill(),this.addChild(i);var s=this.createBitmapByName("bg_png");this.addChild(s),s.width=t,s.height=t/(1102/1172),s.y=(e-s.height)/2,this.cxk=new CXK,this.addChild(this.cxk),this.cxk.x=349,this.cxk.y=s.y+231;var a=new Ball;this.addChild(a),a.x=156,a.y=325,a.alpha=0,this.ball2=a,this.touchEnabled=!0,this.scoreboardImg=new ScoreBoard,this.scoreboardImg.touchEnabled=!0,this.scoreboardImg.addEventListener(egret.TouchEvent.TOUCH_TAP,this.restart,this);var n=new egret.TextField;this.addChild(n),n.textColor=1748249,n.x=200,n.y=900,n.text="长按蓄力,松开投球",this.pointText=new egret.TextField,this.addChild(this.pointText),this.pointText.x=400,this.pointText.y=5,this.pointText.textColor=3355443,this.pointText.size=28,this.ballCountText=new egret.TextField,this.addChild(this.ballCountText),this.ballCountText.x=60,this.ballCountText.y=5,this.ballCountText.size=28,this.ballCountText.textColor=3355443,this.ball3=this.createBitmapByName("ball_png"),this.addChild(this.ball3),this.ball3.y=5,this.ball3.x=25,this.ball3.width=25,this.ball3.height=25,this.drawBallCountAndScore()},e.prototype.restart=function(){console.log("restart"),4===this.gameStatus&&(this.removeChild(this.scoreboardImg),this.gameStatus=0,this.totalPoint=0,this.ballCount=10,this.drawBallCountAndScore())},e.prototype.onEnterFrame=function(){(2===this.gameStatus||3===this.gameStatus)&&this.ballSport(),1===this.gameStatus&&(this.powerEarn=this.powerEarn+1/66)},e.prototype.onTouchBeginState=function(){var t=this;console.log("touch begin"),0===this.gameStatus&&(this.gameStatus=1,this.powerEarn=0,this.ballT=0,this.scaleChannel=this.scale_intro.play(0,1),setTimeout(function(){1===t.gameStatus&&(t.scaleChannel.stop(),t.scaleChannel=t.scale_circle.play(0,0))},2200),this.cxk.prepare())},e.prototype.onTouchEndState=function(){console.log("touch end"),1===this.gameStatus&&(this.ballT=0,this.gameStatus=2,this.scaleChannel.stop(),this.shotSound.play(0,1),this.cxk.shot(),this.ballCount--,this.drawBallCountAndScore(),this.ball=new Ball,this.addChild(this.ball),this.ball.alpha=0)},e.prototype.ballSport=function(){var t=this,e=.015,i=this.ballT,s={x:350,y:445},a={x:250,y:200+320*(.5-this.powerEarn)},n=__assign({},a),r={x:100+160*(.5-this.powerEarn),y:400},o=3*(a.x-s.x),h=3*(n.x-a.x)-o,l=r.x-s.x-o-h,c=3*(a.y-s.y),u=3*(n.y-a.y)-c,d=r.y-s.y-c-u,p=l*(i*i*i)+h*(i*i)+o*i+s.x,g=d*(i*i*i)+u*(i*i)+c*i+s.y;this.ballT+=e,this.ballT>1&&(this.ballT=1),this.ball.alpha=1;var x=function(){t.gameStatus=0,t.cxk.reset(),t.removeChild(t.ball),t.ballCount<=0&&(t.gameStatus=4,t.addChildAt(t.scoreboardImg,10),t.scoreboardImg.x=(t.stage.stageWidth-t.scoreboardImg.scoreBoard.width)/2,t.scoreboardImg.y=(t.stage.stageHeight-t.scoreboardImg.scoreBoard.height)/2,console.log(t.scoreboardImg.x,t.scoreboardImg.y),t.scoreboardImg.setCurrentPoint(t.totalPoint)),t.drawBallCountAndScore()};if(3===this.gameStatus)this.ball.y=g,g>=r.y-1&&(this.totalPoint++,x());else if(2===this.gameStatus){var y=this.ball2.hitTestPoint(this.ball.x+5,this.ball.y+5);y&&(this.bingoSound.play(0,1),this.gameStatus=3),this.ball.x=p,this.ball.y=g}this.ball.y>=r.y-1&&this.ball.x<=r.x+1&&2===this.gameStatus&&(this.dieSound.play(0,1),x())},e.prototype.createBitmapByName=function(t){var e=new egret.Bitmap,i=RES.getRes(t);return e.texture=i,e},e}(egret.DisplayObjectContainer);__reflect(Main.prototype,"Main");var ScoreBoard=function(t){function e(){var e=t.call(this)||this;return e.currentPoint=0,e.maxPoint=0,e.addEventListener(egret.Event.ADDED_TO_STAGE,e.init,e),e}return __extends(e,t),e.prototype.createBitmapByName=function(t){var e=new egret.Bitmap;return e.texture=RES.getRes(t),e},e.prototype.setCurrentPoint=function(t){this.currentPoint=t,t>this.maxPoint&&(this.maxPoint=t),this.currentPointText.text=this.currentPoint+"",this.maxPointText.text=this.maxPoint+""},e.prototype.init=function(){var t=new egret.DisplayObjectContainer;this.scoreBoard=this.createBitmapByName("scoreboard_png"),t.width=this.scoreBoard.width,t.height=this.scoreBoard.height,this.width=t.width,this.height=t.height,t.addChild(this.scoreBoard),this.currentPointText=new egret.TextField,this.maxPointText=new egret.TextField,t.addChild(this.currentPointText),t.addChild(this.maxPointText),this.currentPointText.y=this.scoreBoard.height/2.5,this.currentPointText.textColor=13369344,this.maxPointText.textColor=13369344,this.maxPointText.y=this.scoreBoard.height/1.65,this.currentPointText.x=this.scoreBoard.width/2,this.maxPointText.x=this.scoreBoard.width/2,this.addChild(t)},e}(egret.DisplayObjectContainer);__reflect(ScoreBoard.prototype,"ScoreBoard"); \ No newline at end of file diff --git a/bin-release/web/191201225322/js/promise.min_83a6a5d.js b/bin-release/web/191201225322/js/promise.min_83a6a5d.js new file mode 100644 index 0000000..765fa21 --- /dev/null +++ b/bin-release/web/191201225322/js/promise.min_83a6a5d.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.ES6Promise=e()}(this,function(){"use strict";function t(t){return"function"==typeof t||"object"==typeof t&&null!==t}function e(t){return"function"==typeof t}function n(t){I=t}function r(t){J=t}function o(){return function(){return process.nextTick(a)}}function i(){return"undefined"!=typeof H?function(){H(a)}:c()}function s(){var t=0,e=new V(a),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function u(){var t=new MessageChannel;return t.port1.onmessage=a,function(){return t.port2.postMessage(0)}}function c(){var t=setTimeout;return function(){return t(a,1)}}function a(){for(var t=0;G>t;t+=2){var e=$[t],n=$[t+1];e(n),$[t]=void 0,$[t+1]=void 0}G=0}function f(){try{var t=require,e=t("vertx");return H=e.runOnLoop||e.runOnContext,i()}catch(n){return c()}}function l(t,e){var n=arguments,r=this,o=new this.constructor(p);void 0===o[ee]&&k(o);var i=r._state;return i?!function(){var t=n[i-1];J(function(){return x(i,o,t,r._result)})}():E(r,o,t,e),o}function h(t){var e=this;if(t&&"object"==typeof t&&t.constructor===e)return t;var n=new e(p);return w(n,t),n}function p(){}function v(){return new TypeError("You cannot resolve a promise with itself")}function d(){return new TypeError("A promises callback cannot return that same promise.")}function _(t){try{return t.then}catch(e){return ie.error=e,ie}}function y(t,e,n,r){try{t.call(e,n,r)}catch(o){return o}}function m(t,e,n){J(function(t){var r=!1,o=y(n,e,function(n){r||(r=!0,e!==n?w(t,n):S(t,n))},function(e){r||(r=!0,j(t,e))},"Settle: "+(t._label||" unknown promise"));!r&&o&&(r=!0,j(t,o))},t)}function b(t,e){e._state===re?S(t,e._result):e._state===oe?j(t,e._result):E(e,void 0,function(e){return w(t,e)},function(e){return j(t,e)})}function g(t,n,r){n.constructor===t.constructor&&r===l&&n.constructor.resolve===h?b(t,n):r===ie?j(t,ie.error):void 0===r?S(t,n):e(r)?m(t,n,r):S(t,n)}function w(e,n){e===n?j(e,v()):t(n)?g(e,n,_(n)):S(e,n)}function A(t){t._onerror&&t._onerror(t._result),P(t)}function S(t,e){t._state===ne&&(t._result=e,t._state=re,0!==t._subscribers.length&&J(P,t))}function j(t,e){t._state===ne&&(t._state=oe,t._result=e,J(A,t))}function E(t,e,n,r){var o=t._subscribers,i=o.length;t._onerror=null,o[i]=e,o[i+re]=n,o[i+oe]=r,0===i&&t._state&&J(P,t)}function P(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r=void 0,o=void 0,i=t._result,s=0;si;i++)e.resolve(t[i]).then(n,r)}:function(t,e){return e(new TypeError("You must pass an array to race."))})}function K(t){var e=this,n=new e(p);return j(n,t),n}function L(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function N(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function U(t){this[ee]=O(),this._result=this._state=void 0,this._subscribers=[],p!==t&&("function"!=typeof t&&L(),this instanceof U?C(this,t):N())}function W(){var t=void 0;if("undefined"!=typeof global)t=global;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=t.Promise;if("undefined"!=typeof egret_native&&egret_native.capability&&!egret_native.capability("Promise")&&(n=void 0),n){var r=null;try{r=Object.prototype.toString.call(n.resolve())}catch(e){}if("[object Promise]"===r&&!n.cast)return}t.Promise=U}var z=void 0;z=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)};var B=z,G=0,H=void 0,I=void 0,J=function(t,e){$[G]=t,$[G+1]=e,G+=2,2===G&&(I?I(a):te())},Q="undefined"!=typeof window?window:void 0,R=Q||{},V=R.MutationObserver||R.WebKitMutationObserver,X="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),Z="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,$=new Array(1e3),te=void 0;te=X?o():V?s():Z?u():void 0===Q&&"function"==typeof require?f():c();var ee=Math.random().toString(36).substring(16),ne=void 0,re=1,oe=2,ie=new T,se=new T,ue=0;return Y.prototype._enumerate=function(){for(var t=this.length,e=this._input,n=0;this._state===ne&&t>n;n++)this._eachEntry(e[n],n)},Y.prototype._eachEntry=function(t,e){var n=this._instanceConstructor,r=n.resolve;if(r===h){var o=_(t);if(o===l&&t._state!==ne)this._settledAt(t._state,e,t._result);else if("function"!=typeof o)this._remaining--,this._result[e]=t;else if(n===U){var i=new n(p);g(i,t,o),this._willSettleAt(i,e)}else this._willSettleAt(new n(function(e){return e(t)}),e)}else this._willSettleAt(r(t),e)},Y.prototype._settledAt=function(t,e,n){var r=this.promise;r._state===ne&&(this._remaining--,t===oe?j(r,n):this._result[e]=n),0===this._remaining&&S(r,this._result)},Y.prototype._willSettleAt=function(t,e){var n=this;E(t,void 0,function(t){return n._settledAt(re,e,t)},function(t){return n._settledAt(oe,e,t)})},U.all=F,U.race=D,U.resolve=h,U.reject=K,U._setScheduler=n,U._setAsap=r,U._asap=J,U.prototype={constructor:U,then:l,"catch":function(t){return this.then(null,t)}},U.polyfill=W,U.Promise=U,U}),ES6Promise.polyfill(); \ No newline at end of file diff --git a/bin-release/web/191201225322/js/tween.min_6c5a88f9.js b/bin-release/web/191201225322/js/tween.min_6c5a88f9.js new file mode 100644 index 0000000..abe1c4b --- /dev/null +++ b/bin-release/web/191201225322/js/tween.min_6c5a88f9.js @@ -0,0 +1 @@ +var __reflect=this&&this.__reflect||function(t,e,n){t.__class__=e,n?n.push(e):n=[e],t.__types__=t.__types__?n.concat(t.__types__):n},__extends=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);n.prototype=e.prototype,t.prototype=new n},egret;!function(t){var e=function(){function e(){t.$error(1014)}return e.get=function(t){return-1>t&&(t=-1),t>1&&(t=1),function(e){return 0==t?e:0>t?e*(e*-t+1+t):e*((2-e)*t+(1-t))}},e.getPowIn=function(t){return function(e){return Math.pow(e,t)}},e.getPowOut=function(t){return function(e){return 1-Math.pow(1-e,t)}},e.getPowInOut=function(t){return function(e){return(e*=2)<1?.5*Math.pow(e,t):1-.5*Math.abs(Math.pow(2-e,t))}},e.sineIn=function(t){return 1-Math.cos(t*Math.PI/2)},e.sineOut=function(t){return Math.sin(t*Math.PI/2)},e.sineInOut=function(t){return-.5*(Math.cos(Math.PI*t)-1)},e.getBackIn=function(t){return function(e){return e*e*((t+1)*e-t)}},e.getBackOut=function(t){return function(e){return--e*e*((t+1)*e+t)+1}},e.getBackInOut=function(t){return t*=1.525,function(e){return(e*=2)<1?.5*(e*e*((t+1)*e-t)):.5*((e-=2)*e*((t+1)*e+t)+2)}},e.circIn=function(t){return-(Math.sqrt(1-t*t)-1)},e.circOut=function(t){return Math.sqrt(1- --t*t)},e.circInOut=function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},e.bounceIn=function(t){return 1-e.bounceOut(1-t)},e.bounceOut=function(t){return 1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},e.bounceInOut=function(t){return.5>t?.5*e.bounceIn(2*t):.5*e.bounceOut(2*t-1)+.5},e.getElasticIn=function(t,e){var n=2*Math.PI;return function(i){if(0==i||1==i)return i;var s=e/n*Math.asin(1/t);return-(t*Math.pow(2,10*(i-=1))*Math.sin((i-s)*n/e))}},e.getElasticOut=function(t,e){var n=2*Math.PI;return function(i){if(0==i||1==i)return i;var s=e/n*Math.asin(1/t);return t*Math.pow(2,-10*i)*Math.sin((i-s)*n/e)+1}},e.getElasticInOut=function(t,e){var n=2*Math.PI;return function(i){var s=e/n*Math.asin(1/t);return(i*=2)<1?-.5*(t*Math.pow(2,10*(i-=1))*Math.sin((i-s)*n/e)):t*Math.pow(2,-10*(i-=1))*Math.sin((i-s)*n/e)*.5+1}},e.quadIn=e.getPowIn(2),e.quadOut=e.getPowOut(2),e.quadInOut=e.getPowInOut(2),e.cubicIn=e.getPowIn(3),e.cubicOut=e.getPowOut(3),e.cubicInOut=e.getPowInOut(3),e.quartIn=e.getPowIn(4),e.quartOut=e.getPowOut(4),e.quartInOut=e.getPowInOut(4),e.quintIn=e.getPowIn(5),e.quintOut=e.getPowOut(5),e.quintInOut=e.getPowInOut(5),e.backIn=e.getBackIn(1.7),e.backOut=e.getBackOut(1.7),e.backInOut=e.getBackInOut(1.7),e.elasticIn=e.getElasticIn(1,.3),e.elasticOut=e.getElasticOut(1,.3),e.elasticInOut=e.getElasticInOut(1,.3*1.5),e}();t.Ease=e,__reflect(e.prototype,"egret.Ease")}(egret||(egret={}));var egret;!function(t){var e=function(e){function n(t,n,i){var s=e.call(this)||this;return s._target=null,s._useTicks=!1,s.ignoreGlobalPause=!1,s.loop=!1,s.pluginData=null,s._steps=null,s.paused=!1,s.duration=0,s._prevPos=-1,s.position=null,s._prevPosition=0,s._stepPosition=0,s.passive=!1,s.initialize(t,n,i),s}return __extends(n,e),n.get=function(t,e,i,s){return void 0===i&&(i=null),void 0===s&&(s=!1),s&&n.removeTweens(t),new n(t,e,i)},n.removeTweens=function(t){if(t.tween_count){for(var e=n._tweens,i=e.length-1;i>=0;i--)e[i]._target==t&&(e[i].paused=!0,e.splice(i,1));t.tween_count=0}},n.pauseTweens=function(e){if(e.tween_count)for(var n=t.Tween._tweens,i=n.length-1;i>=0;i--)n[i]._target==e&&(n[i].paused=!0)},n.resumeTweens=function(e){if(e.tween_count)for(var n=t.Tween._tweens,i=n.length-1;i>=0;i--)n[i]._target==e&&(n[i].paused=!1)},n.tick=function(t,e){void 0===e&&(e=!1);var i=t-n._lastTime;n._lastTime=t;for(var s=n._tweens.concat(),r=s.length-1;r>=0;r--){var o=s[r];e&&!o.ignoreGlobalPause||o.paused||o.$tick(o._useTicks?1:i)}return!1},n._register=function(e,i){var s=e._target,r=n._tweens;if(i)s&&(s.tween_count=s.tween_count>0?s.tween_count+1:1),r.push(e),n._inited||(n._lastTime=t.getTimer(),t.ticker.$startTick(n.tick,null),n._inited=!0);else{s&&s.tween_count--;for(var o=r.length;o--;)if(r[o]==e)return void r.splice(o,1)}},n.removeAllTweens=function(){for(var t=n._tweens,e=0,i=t.length;i>e;e++){var s=t[e];s.paused=!0,s._target.tween_count=0}t.length=0},n.prototype.initialize=function(t,e,i){this._target=t,e&&(this._useTicks=e.useTicks,this.ignoreGlobalPause=e.ignoreGlobalPause,this.loop=e.loop,e.onChange&&this.addEventListener("change",e.onChange,e.onChangeObj),e.override&&n.removeTweens(t)),this.pluginData=i||{},this._curQueueProps={},this._initQueueProps={},this._steps=[],e&&e.paused?this.paused=!0:n._register(this,!0),e&&null!=e.position&&this.setPosition(e.position,n.NONE)},n.prototype.setPosition=function(t,e){void 0===e&&(e=1),0>t&&(t=0);var n=t,i=!1;if(n>=this.duration)if(this.loop){var s=n%this.duration;n=n>0&&0===s?this.duration:s}else n=this.duration,i=!0;if(n==this._prevPos)return i;i&&this.setPaused(!0);var r=this._prevPos;if(this.position=this._prevPos=n,this._prevPosition=t,this._target&&this._steps.length>0){for(var o=this._steps.length,u=-1,a=0;o>a&&!("step"==this._steps[a].type&&(u=a,this._steps[a].t<=n&&this._steps[a].t+this._steps[a].d>=n));a++);for(var a=0;o>a;a++)if("action"==this._steps[a].type)0!=e&&(this._useTicks?this._runAction(this._steps[a],n,n):1==e&&r>n?(r!=this.duration&&this._runAction(this._steps[a],r,this.duration),this._runAction(this._steps[a],0,n,!0)):this._runAction(this._steps[a],r,n));else if("step"==this._steps[a].type&&u==a){var p=this._steps[u];this._updateTargetProps(p,Math.min((this._stepPosition=n-p.t)/p.d,1))}}return this.dispatchEventWith("change"),i},n.prototype._runAction=function(t,e,n,i){void 0===i&&(i=!1);var s=e,r=n;e>n&&(s=n,r=e);var o=t.t;(o==r||o>s&&r>o||i&&o==e)&&t.f.apply(t.o,t.p)},n.prototype._updateTargetProps=function(t,e){var i,s,r,o,u,a;if(t||1!=e){if(this.passive=!!t.v,this.passive)return;t.e&&(e=t.e(e,0,1,1)),i=t.p0,s=t.p1}else this.passive=!1,i=s=this._curQueueProps;for(var p in this._initQueueProps){null==(o=i[p])&&(i[p]=o=this._initQueueProps[p]),null==(u=s[p])&&(s[p]=u=o),r=o==u||0==e||1==e||"number"!=typeof o?1==e?u:o:o+(u-o)*e;var h=!1;if(a=n._plugins[p])for(var c=0,_=a.length;_>c;c++){var f=a[c].tween(this,p,r,i,s,e,!!t&&i==s,!t);f==n.IGNORE?h=!0:r=f}h||(this._target[p]=r)}},n.prototype.setPaused=function(t){return this.paused==t?this:(this.paused=t,n._register(this,!t),this)},n.prototype._cloneProps=function(t){var e={};for(var n in t)e[n]=t[n];return e},n.prototype._addStep=function(t){return t.d>0&&(t.type="step",this._steps.push(t),t.t=this.duration,this.duration+=t.d),this},n.prototype._appendQueueProps=function(t){var e,i,s,r,o;for(var u in t)if(void 0===this._initQueueProps[u]){if(i=this._target[u],e=n._plugins[u])for(s=0,r=e.length;r>s;s++)i=e[s].init(this,u,i);this._initQueueProps[u]=this._curQueueProps[u]=void 0===i?null:i}else i=this._curQueueProps[u];for(var u in t){if(i=this._curQueueProps[u],e=n._plugins[u])for(o=o||{},s=0,r=e.length;r>s;s++)e[s].step&&e[s].step(this,u,i,t[u],o);this._curQueueProps[u]=t[u]}return o&&this._appendQueueProps(o),this._curQueueProps},n.prototype._addAction=function(t){return t.t=this.duration,t.type="action",this._steps.push(t),this},n.prototype._set=function(t,e){for(var n in t)e[n]=t[n]},n.prototype.wait=function(t,e){if(null==t||0>=t)return this;var n=this._cloneProps(this._curQueueProps);return this._addStep({d:t,p0:n,p1:n,v:e})},n.prototype.to=function(t,e,n){return void 0===n&&(n=void 0),(isNaN(e)||0>e)&&(e=0),this._addStep({d:e||0,p0:this._cloneProps(this._curQueueProps),e:n,p1:this._cloneProps(this._appendQueueProps(t))}),this.set(t)},n.prototype.call=function(t,e,n){return void 0===e&&(e=void 0),void 0===n&&(n=void 0),this._addAction({f:t,p:n?n:[],o:e?e:this._target})},n.prototype.set=function(t,e){return void 0===e&&(e=null),this._appendQueueProps(t),this._addAction({f:this._set,o:this,p:[t,e?e:this._target]})},n.prototype.play=function(t){return t||(t=this),this.call(t.setPaused,t,[!1])},n.prototype.pause=function(t){return t||(t=this),this.call(t.setPaused,t,[!0])},n.prototype.$tick=function(t){this.paused||this.setPosition(this._prevPosition+t)},n.NONE=0,n.LOOP=1,n.REVERSE=2,n._tweens=[],n.IGNORE={},n._plugins={},n._inited=!1,n._lastTime=0,n}(t.EventDispatcher);t.Tween=e,__reflect(e.prototype,"egret.Tween")}(egret||(egret={}));var egret;!function(t){var e;!function(e){function n(e){if("function"==typeof e)return e;var n=t.Ease[e];return"function"==typeof n?n:null}function i(t,e,n,i){var s=t.prototype;s.__meta__=s.__meta__||{},s.__meta__[e]=n,i&&(s.__defaultProperty__=e)}var s=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.name="",e}return __extends(e,t),e}(t.EventDispatcher);e.BasePath=s,__reflect(s.prototype,"egret.tween.BasePath");var r=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.props=void 0,e.duration=500,e.ease=void 0,e}return __extends(e,t),e}(s);e.To=r,__reflect(r.prototype,"egret.tween.To");var o=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.duration=500,e.passive=void 0,e}return __extends(e,t),e}(s);e.Wait=o,__reflect(o.prototype,"egret.tween.Wait");var u=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.props=void 0,e}return __extends(e,t),e}(s);e.Set=u,__reflect(u.prototype,"egret.tween.Set");var a=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.delta=0,e}return __extends(e,t),e}(s);e.Tick=a,__reflect(a.prototype,"egret.tween.Tick");var p=function(e){function i(){var t=e.call(this)||this;return t.isStop=!1,t}return __extends(i,e),Object.defineProperty(i.prototype,"props",{get:function(){return this._props},set:function(t){this._props=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"target",{get:function(){return this._target},set:function(t){this._target=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"paths",{get:function(){return this._paths},set:function(t){this._paths=t||[]},enumerable:!0,configurable:!0}),i.prototype.play=function(t){this.tween?(this.tween.setPaused(!1),this.isStop&&void 0==t&&(t=0,this.isStop=!1),void 0!==t&&null!==t&&this.tween.setPosition(t)):this.createTween(t)},i.prototype.pause=function(){this.tween&&this.tween.setPaused(!0)},i.prototype.stop=function(){this.pause(),this.isStop=!0},i.prototype.createTween=function(e){this.tween=t.Tween.get(this._target,this._props),this._paths&&this.applyPaths(),void 0!==e&&null!==e&&this.tween.setPosition(e)},i.prototype.applyPaths=function(){for(var t=0;t=0&&e===this._paths.length-1&&this.dispatchEventWith("complete")},i}(t.EventDispatcher);e.TweenItem=p,__reflect(p.prototype,"egret.tween.TweenItem"),i(p,"paths","Array",!0);var h=function(t){function e(){var e=t.call(this)||this;return e.completeCount=0,e}return __extends(e,t),Object.defineProperty(e.prototype,"items",{get:function(){return this._items},set:function(t){this.completeCount=0,this.registerEvent(!1),this._items=t,this.registerEvent(!0)},enumerable:!0,configurable:!0}),e.prototype.registerEvent=function(t){var e=this;this._items&&this._items.forEach(function(n){t?n.addEventListener("complete",e.itemComplete,e):n.removeEventListener("complete",e.itemComplete,e)})},e.prototype.play=function(t){if(this._items)for(var e=0;ePx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2op&}K~z{r#aCNw z99J3s=d!bF@7kW&ab4_`Yy#;uAOk{`Qi-^{l$+EP@kAe*^3bPBRZ%70s1Of4AW;eN z2x@t%kPr#9o(NZCik{YFnpl-ZL+r*B&_FiV^b}qyBpEJ9Qo3!a0zxD5&nK|?S z-}(N_Ii~-oT)fzGopSuKWph1hdam14S$;f^`r)9xMODwGS}hOPxtk2)p+4qU1QxlD; zAJm$2Eov0M+TMg_ETe&P zNKJ;c@8DrEJvaYMxPRtn&eEJN&F+z#0@z-?-1G|lJXX1^WghyNRj*BuuM663w~2~^ z0#}ocx5>>TD&X8vk_xR2h(s2Yxm8j@or*?C`w!mv+liU*iN-yP*Gm^8xdFiY=Pos! zEPu&MqGdlHz_6f-=ToKPgJnfYzXujFDioZ`0l6|EEd{w+8DknCmE)2ij~oDyl_|<= zQ&d|x@M^Gc{%Z@Ly(6-otn2}>ajq4LLH{M$-C3!Ll&UHPwJ8Oa3b`<Q3z5y z+uvUQ^V!do?u?88Tt0Ux%+usKPb4(qD)Ll<)gc5rF-`@*WJtIy!5Gd3oC`SNq!f}B zAow0*3CB_+3;@Y47cG7w+0j$6N zR;Z)?i2xbx%Gfw$?>0XQ^Ip-F@=_Nmut zKg)j4pFfYxg6J$=k-gofhu9YBfCMJ;hcd^?u?j;iuCkP|IfrzHet~gCXXJu~L3{f+`!)bn7B3eWBZlKFB?+ej z&e$YPWhXEyqK z2F)1+CmIao0L4ip%#~MeON@>4`vT5bZOM(tCO43X1}MH^HWY^xt9Q}BWZG$t0i^sA z*$o!hIhT})x5S44V(T63aL-5M;pZAx9uIYV&#T5aY{xJL=5TLpvJI0L$g?yG*Is_P zX+ywS3$$E8j-#;>7=#)}<(OAD9%KH<=@1OSVZKq=V~5P1Wst+hEN~aK)e}citI$Qq zy>j+K=mbHN8-|7x{2(hC1bRC*9S3a|Rn3`d#^BwI86*QK*f~1|OWdkC=6toFY^5lG z;c%I8nLAmMc8+}YD;*d6JDcyoG*-_Pa5u4uq}c(3fn!uRu6%EwTP;@(Wwr#Auk5gZ zbF0i0&*8Z?VFjwETAO6@$-UzXcXx`yIg_J}r9hS-GkvN$JBvevM+$pC;aVUXXt3z< zY^c-{lre~0vEeE81AqK=!HRbd=5ikK( zIee7ky~@w*DJcP+JFz6UK7G1**S)_l-5J>ffaSoULk}(;x$n)Ss8XUUI9&Rcda%Ka zI~G2^+#qlL;gx2z+g^YB z?`O#AUZ=?d=LGCxCclwrESzZgG2POLY2yymG&X=Ps2j!9MrB7q_`}qj_~}nhpT;?F zuiO*>%ld0)!;SZ@yt4Mj>&trkU8)J}VrV>W3Bpta=*16a0|Y9_K?!TeL&6EV-o;5s zIsc4x@uMIA_1v$m)f?qQ0Sx7}7k_hN=iT+^-oNlh(}~(t#b)KBUE56u4GBzm6_3dC zs1qf$n@Fn7F4D~HOTSCv=sV9m|Ke6@>ZWo_07F^(<6ll*Yh8Nmz00kYYwK&&ZEt{T z{6A2uk%Sc={|C&@&b1DH>aH`3%}@VweyREILl4}4t^E8$C~wKoJNiy%`9Ilu)E8MJ03rMWh#z-a7~(Ac7DGEws>)F4ClT5KuZn zdhfl2-s?Y}nKS44KM(JDzrG)SA2O3+cJ^NPy6<(ZwXSPzf?li0-Md3~2L}h|o`O6? z4F~6z7xoiNbQ}8@sY3fk92^o#OKIuX3ewUnubu48ENx72aO8txGzqodc2K40su3wX z!X?P`pC(v)XSK@0!f4~q_WThp<>%mf?#Ehh08PP#!H;UFo(~50MesjG@;n2B>EGREk&6I_knS0?vx5W`ByfDC-r?ZH z^Z=GlWo5odlgLi{ppGlQf}=NvBekx_uMB0rbWu9uJWpp)Sqc^vBWK3P8ChH;-p6Gr zds*ApeIZWF^hryZh#2qrFOaByfDlOZT|k=x>_dh&`8m$>?2@r&7o1g!>25rgryI%_I3q($oa~oBAS?jHZrEmjV>{9?VC59)!!o=R_d9yVYtw#0{v2q+wC# z$IcLLEy1t2ICrXSuKD1uEW_mHzfU`hC3GKQ?q2p0d3(#}GvwTH&RE**!+YTdsS-!; zkr=cSO}A3s`W14Lxr;B&5+Ha_LL&~4$g&V5Oue(f%91TT$=exB9CZv+k8291*#!h= zfRaKVdZXA$LSj$fCy1pZ>-gwNb)Qlt-HlWAmbLkj4~}i81O8;QS)r;Mxz)($88n6C4T9quC1hqJ0E1v+?HF2+4Jy^M57q#K+GF318?>G5c;ss z4nOg(J`w+V{q_ZKJHbW8)tUE+>M#Y-=yRfeTr#aL9##p8Odh7`pN#ja zj(6hU`g7$v_!z3=_r%iLw@i-e;~huR!cgcO(??OSv*+b)`i_-I?^jvKH$k`%pAUTe z5f=QNe)!tv(hu;i8jHU)iIACb%mHaS=Ah!uZ(kD5@z1fRAsncG`Em3=aw=N8_}!cu zC)fn}b1UOkXQ|R9|Fg;aC2q}^4yx_UPHjRCw(moqHNWz5w2w=qEW2udE#8TN^7t^R zHlMY5ExOf!rWDXX*MqJfvi06!&1Y${dMBjkW0bmKjK6h$IFFicvT2aTjnd}hTK`s2 z*jat`5tvNOnjxc9ZQ3My0brh>n~{%R+R;_Qc<5LhCJOd!QsTpz_IpV1LZ0ZJ z5sMC7^22AXhevR(`7Z=4bMj9j{WDqC;5YzQXCz3TSS?tcqkLv#_d+Z9eV=07lH3(960>RDTvqn3X_WB5OJkVmLqaP1-3}4j^IUwV76j~(@bE$SwC(+tr|xz z>HwK9Kg=-^h2PO(g6qLw9a5L-l`yH`Ez6|#T7&P6gC<;k_Hnm{R>lwAv^R4JFN>PV zWxjln-Oc=^Ccue!v=pt=d8-q@Q&&btMp{PXw?eSj?=Qhi!GRCJoNip+>EG3Oa=F*< ze~+t4s6lzgdZNx^Wi#UYy(~J)yvD6`gfQY50ERXBMP*vxpX!5K2a2AI^-))f3NJb! z9h#O2YH4cm{cp0Y6)!vQbY^#Qn^x?3Eh#Qhc2>p^zN2~U_89qC>@nB7qdYwgk3vN? zp?CLQFMa2IHUOr#cR)I_pjdVR-pUi&YwXf?5;hmA&7bY|Y9)>=!B`0P#3SK%Lf{j7 zEAQbCR<|rnEei&|k9d9ywbr##?N77O|ng?t^34u<=gVR<+?T_7RRmA{VB$VmOd@M%jBy+ex^0em1o4T_BtjmFmeP8 zKypk~lvNCq^^?A!%h532R$fkCT|K+n@71!^g)a4rvJU&sy0dQmn5f!PXu~<+xKTV` zqD1@%DxUgY*jL2p*q=#NTD4+DrI#0+trgrAc>FB2r+VNrLp4 zPx(5ztz-wcqu^2L?C(@O>1?SbL~1|*06_^epYC(5#!;c-+hj@+Ce|+T3snUd2lfj-xNO~C}kpJhUuY0tF%i-OQRJ!#2&tWU_zYWeCTAp|tCcO1NMg%sPuYCoI!->p!W4rfkDM?|_JUtD4&LuW_{&tHJh&$s7!1*d(-qA|zn34(1XusoRJ2j*RBXs! z%&#lyw0n2@eQwAyZ(>-qXsjZ(O5?}T@Y8MAbH#Uxca@;Ss(OZ%zSU_TTWUiGL=1SH zv3Cn9QK-w!6R)c?D&1W!Pi#~-QJ>5|$P+JCGyEteQo``~&XF4iF+HM(QPZzCG`~)uE0fh5 zaDU(Fd*pXTNN-hO?atIMs_sO?K*j96tJ`T`8RpMu`E=d0>?p3In5T`l4Y3hXGvpAYJXr!n~l`lV8I_Mv0F~8GGlG5{R!iV=#Pj%oR z`+SA6cg7-RaMJDJW^)$8m%6v|q#~($(PM4V^tg+ou*x8}aowxDa47figjvOh!QR;} zuXfp~AZ@CkzS#I>+nUNY+Ii%%$gmFJw6NX-Ph_l|x0|Y#SaKU-+)7??FWqiv&~&h0 zy=o@(C;Uwo!yGHo@1cH3hVWrnciMV7gqfK-6J6fDWK!wv;z;K(^h8N!N$^0kuk+8U zFZZKhzAy}!y>S&5f9&+FaaA=&sop3wj zHgkQihtxsZNycy+ELBgc+)L%;!p35mx*xSyL}f_d_yq>#OA-`MYNIO2lEWo=oDh5a zXJS3hpV|1&eWbl)E@M+lkKvmQk7Q=0jK(fsJx1dUHlr5Xd!F9?Y4k1owWTBuvaB!aEC_rAQf5hFa*R^LH z^RUxjoR7Z`TF-amaHM!fzbm{6L+07AXjWhGHl!vtlE3G8fk!}3{AX(vV^^Lz9Axf< zJZCIDiO3pKuf?$O4EM*a&*!&@hw1P|AgS$nk~G)2DIz`*u(9A0%Rk5a_pf}Oc!-P{ zU;6*^6)e88&*wJCUi`;T|NDkNlgMA6pgRyQ^#6YI|GwfA!TpA-+y4g(uora`<9^vr zs*|sLc%zN~b(^^j`~S55zaQ|A34eX_j~D*&!aou5uSoV!MEnyG|3t(;5%KSZ&p){E z4=((J3;*E4Ke%vHQ}z!!{)3MHZ=s`BLKLj(-e3MAgU!L)dzy!v+iPW9H?eTs%e~aS z^=q%oQ_MGxD22+Zs!?<=8a?jSeOkK=Gk*@g;e6BF!e#Z6+fC5RBw*tc#)A(tZ0kZ( z-ZmELRji%uPLC8$F_TC)W@Kb+&CY&(CLv*K{Q@U7DXGl**S34ldGh|r>;I%eeCd^b z63x(`Tj|ANZ%Tz%I`8uFvOe8HX)qRD?^a8TIIC@)_psJ&A@4bdbvbyQ(VU*cI>uD~ z<4z8O#N30|#Xj|>Rq-3H@BT6>S6xIGlGppkl4G4TVp>|QA)?Bc`iSh_bD-UT)S>G_ z_Yubzd{fV-7&N-KCMzq;0B_`a+*#SEE*f&>WN+$`rJLmCW0b_75Bl#-{U0`{ik2W` zr=E7Z=^fU$% zuCQ}+`8mmPD&nrDq?X;1fWdfH*JT=SIOb`Z66s7?hhB@DIK8CLj92`K&P`AF>+-~N zJH7b7PoRAM^{Sy{zvf7@Kemim6Hqm#0J|EUrT4pwgs(7g8;WjBhJ9ciM z^f$u)#|?kK@=4;|nc1xu)a1q`zMuv?>N!KV^#kSKnkS5HOy-2?B}=S$Is)dPFR4s&xXk-pPWii+y9Mc!TwP0eR}r+Z#nWNn=cEzlMrPu~9|wSHC+ zJ@RThY|tyfnr^7@Rgb&hUCZqE%I4t@TQo8okW-CHxSBB!Da-Mm`8Xp)3d=SJd2zv7 zIyw}h>bknRQ0XW~b5@TvzeniOZMsIGz3?0OJ&}}8VqW$aTu#1NYRHG$cQ5(fc&dB$ zb1$HDV>k|Dr#3neboq9l+tzGjV}g8aBD{USjP__LiSCp+Lv56EM}BQZ|qZX!Q`PL)~hF~6sxA|wSWfNz4Idx|cT`WT+S}@~#j~l$V#=%j}w6&7E*_8M9T|4a!Jd&*NkUwJ%2q6*>^=lcI3gz}HGH|wo=4B z`hlOKYJ5)xde4_@?7X)X{`1T^loCJkvOhX^bj5BFA&?yRyf#}kng;`f<_5NH(je>B z=!2fsEsMWICE#~-IeK|bhNT_APWMcYCuXiHf($cxomqUbLRx?3HX5x`SyHlB;3{(@ zFymg};YN1TA;-cC_JPY#M=Y}ZBzracv?&ofh^($gEy*-Hg^Gth(br3IiRzfI1iG@i z26Zkac|LMMRzsGVn3&vZYip;juDp+rFcTWv7)*Hr)KdB};n_Y(Q6`-s_ok1v#6SgwJDfkGKbk(mB8W1{3e(GYb4+Us_xgqvcIs)Hd?R4C*=nR ztHWQ*Y{`hv`Z{buqFRwyewL6u0&dWcVPCO} zjWCxVf&2p6=a>(4sozCb2DMI2fu6c=3s|}PTz?&BDnF9f8wU&_h_aWN`b9odYuDD) zj7$Cun5=hRQK_u2pDHLSs#L!h&MdVh8c_{7i=6f?K6yVeKCVOA6w*|qB^defQ3$Jd zY31h7jaC7$R&Btlb%-bB@!+b8R%ljou~eQGH;*HjjPV)i#EL;{I+G;xG;_t0_((ya z?d#O!)N;=_H(c#bSE#|tAVbh7=rf8nomxB5g(TCAWgd%CR_U(Qf!$eT3oM3!Vj^7v z9w$^?ZPNZ+xrV)s+XnrH@?KnMh#9&|2@hp>YnUXLeHh#n;zJ^x@9A zZ{K|LJG$V99KAQ>6B-UIlP@}xm>2t#kmFP4t2qW*x`)B?5ItTn4<*yNN*WJgGr#d4 zH;q5bW9M6BggtSCWxf11g5t~-+Yxma^!ay*5$!V56&4f0trDX78IZ>#ljcQbFQ%Ow zqyS~&IXr|VLV((`oO^0ir*uZ=t9=<;SC{8JbkrV*ZkauxEubvvEvxSuVG-Y5=GMho zx;NdYErDdUy;9e8=X+gX-2?Cf1#P$BaC3_JOm9Tg%1uxcj)fYp?d}Ikvwi^hecSY% z4-WugE#^tAY=GQM>E}*rqTzb=tJB{POu5lB9Dael7Kuk|s>&S+0llo5$m)<(>-BDt zWT)%0ENzw?yL6YJZV(WqP8@^|CAnHowAW$7dR@ZY`2FO+z}p-22PA|K zsM)aIm@>%?-&qo~U3>|?oCpyG2bBPEJtE( z=QYerjQr_ChP(KIfb#>A6`9>}x2xMjmJuLUr|Q4<12QUb^!k0a{&IVjWh#G_YKK>R zscNyqq|*|+04l+QJe^1%!i%X2TwD?r7u_TcCk1~2M~c`+MWGT-$*bY&zqm;v3X-Cp zQ5z{m^SY+Hcr=uh=*SVz1%EO~IzU!yOF_*VTl_pqWYK{kqt@C7c1Fehg6f8B0>>88 zx~(tH*lVhMZ%kOuO3&w>RTd40D$F(pK94Fee~?rAXC--wt`Dvk^3~LAOO8~8Q~S6- zY^5xxZ1=k@8_1RP%=u6FLjE!cPvlJvEsFn<-arF&y`1to&@4&`MdygPSiJa+pq?5r z^qEov{|O|^Wn|biG!SHOj#j?|nFl(ZzNcHcUwHa@-0z&Mru?wHLN?t+b3_At%YJX0 zT~S2L9oZ6cFEBs;(3z3F!P3lv!M3&~^_x@FYC&rK`RJCOR6 zFg=z(O2yY=O1w4%UEf}u=v7N(fDT%e@pLMCG;M|YX1E-}fJHkyL?`Ga>dD=~Oxfq7 z6uF4!OYgDiRWIGDRH}7u)&O1Vqvh~3u>J?BB28bIIfL>#snu52A3LM|yZd}gVm6|p z9P_C1;^ECyvA5$i<+0Hry*f9^gdr&GfvVd^$0*HWURRBrYbRKLwTAQT1%SMUOm8f zR5hk zP+XcsPzn~9F0v9LT{|}#BBjk8q@oD_az->^nOfoN$SE#&RKl@G(qjF{OOQ$^3zLzo zFJow^r*lKvalO)OB^})BgkXYFGiHnnfjuM!qsqxC9z`wQjc&q*GOKFSqqOu%ot*b?6a0lh@Qmu7d3 z1$uw{3FLQ5wWg6f5fC9kZXB$fZYP+FHrxoQf!I?dzTFw4I4ev3oJQDEON^wQ@|kYJ z1@}zQYseXU@7DfG?|-2*6bo`2pX)#Z)PSH(5C&%+wW_ZOvuZvY$m+I!Cbr}pZT}m!HU=! zP*YwlJmxT*bbi7}J~@qOYb$?NTgu$?-_(XK*Jnl7@>sL+?A>wr z^-1{D%tg)hRu{F^7Wwj^q#Vi4N7$^L<9;+fUti21aX$9dWT!GIR zUd&TZ8D1Y6x=UTIsp=kZ3J5f#8W@6xO>J6V`SXsnD~>yCyXY`KX~kpsd2)kz4xjgW_t5Yg>$E@K71s_);=Q5;Z!d#P(3jpeDM$N#;gN?X zVIgwKUL9p!q7EPdx)*4MO;o$pc*%^>M0cOvncRQ$k}SS`6j;-bhN>NiFLnrkw^;9& z;+cH#2lrJ(x67M=`;mhrMDjqD?Wx)k3Ga)OJ!z|;SyR2%G&0-Wyn)D?j^nPXNx6?| zp8TF5&r;I$Xrhs;GsPsQ9=cMFLP3MGUdfz$rd2+z;o?i$tzBA!v>d%o%FsKPg6u;3 z$Cu~Tg}P+DExx-|TW#AQv4!TxfWD9yOf!pnGT#RzjT^gyrm1cy9$MwG>9@6VIRUhT zOMIZVs~9Hx8b~Tug)Q3p0cjp9=;T-wO0R@SpAFm#bO>4m;l<#e%G2Lj0CkEumBTCw zQe-~%n>|w2Z99u9&ql-2oj4V4z3>U!^i2?+RKlLyE~Is99Cz%GrI~J;YBZK)V6{#+ z3)yt9x_!i$U25D1Ha5{4AH*mH-K9JMx^qH~Bl~fERdnwxylpPgKl$Ii?4^ZA)MCJQ zH1Aj}NfGcq#D9@i0J$MA2ZXu1yC*s@WV3u#_BUqZI2NS|gfiS;pG*ZsNalJ-+9V3e zq?3Nx9xF3Be8~)&sQq(yOvx4b`}399bbM{fh}FzoQ{DY>GHY~8mc%zHZTsN_$(D0V zB?-M28{L$^H~wIOc()N^!|~>n6>ULdt(*9!f2oNZ%VRqhoc3L%{Ze}Z zLe`2C!o%9ISA|!OV9@>u1@C!|;dmyjwNq#HSrWo|xCzOBmU||&!XzXH7mH}cG$M)x z*k4U+25cxKPA)t({$V~XGu$OO?l=Ryp%K3LJJQoz>%u{Cf=jHYpvE4mZd2j(Bl!1k zF5=)5wsM@v-9-Ba%VyLQG9vjf#CDXvV!yoZ_zHtqN0V1HQI~tBDGv_}s5_A221v=$ zpU^7nIeR-`KZ+6-qhVdi_uYk)$_{25w$6DhXK$VB7d%_YRDq6@w$T-W7W!hnIgjDe907XUcg^L1lZ5+`^H&J zw=1$4r$a4!34cX2c!`GSm558r1EJxnVTt0QUTjO!txeXl!LnxkVdr|R`bFagS&{F( zmX~NT6m#QSs@7< zI7YO|R%nZcE+faCkNCV&oX7j5K-S%Hxkj#>&IsyDEquAw^yLJ%MY?QdT{&wsQwA$G;Y@KkH&I|&M$a+0jj2Sv zi;V2ie5Cwf-Z%BFhZM+gxZ&PVqyfvz($LrV`o!J7{xa>ujqFds1Xd8!)=&#G1~jev zQ;F|2)E&sU7Pqo2DY-`PE%n?}c#3U~kl`KUl7>NTt`d~Qn~!c9)xN!4PI1jo&&A+R zQl8w-|3Ws&L(;ELj(IgGhylzWSTdI{NIUtJ^Ksa!l?3eXUrD=RXzLV--tHxdX|n~LvEyn#Q#P^i>?b9#R(39XFU89Wb0@z+Vn}9w!r=c_g*C`1>Sdf7)oUu{1M_H zoU0vq{|zm2ER#L>_$6F;PJ2Pn4k}EZa$qzmz99o%BZ+A9da|{c{De}QS;+Rh{D}G8 z0+U_L>X?SykyHHs@aj6*KC24t%6Ar6(W0xU{>O=7Zm5z}y7f$*$AJII@UTYea=K0m zZ;}BiJ(5vFyWhb!KWi6DDD+yiiD$aa(#c1ti4}9))ZzwX>oN7BuHTBY zX5_0fAHcFo_QKi-n-H8V-j#8ncA`Iblf3`h@UWQ@&knYJ1jtKevK!06OD5Xe zi4@0y)QKgAMLOc~es&lwA%BnD;-l`U>e7Zy%hA9JZF*y;G7l;a+t8%S zdX3rx^XWNcHF*KiDnqxFL;>0GyZZvrx&La=Co1g?v#Z}TEPplevf4VVoKe>0ucaE_ zdkoK)WqTWe$>+44=s6RFCZFHP4kEDY(cA7CQk-oihkw!&Z=|Si`TdX_P}#2V%M|QY zIo{T?ium}--yZV#*itFz(_+GYnx2dnP(k6|3-5994EA|c1~Ya`@g8u9^ zS@@=(Ic;LY=EDUnM~a8KYKashuf}qUJodbA>cEB#Hf?#DMNdhOUL0Vs{aC_l@15Bf ziG&ZuO?)SppKcJR&LvHDNm?Xc5g9t2lmu4V&j^oQ+Fcv?leO*X-B2(%{w)~x>#MDZ zy&UiWh;3b>m%Dr491KlZ-(&~9mpK8x1Y`s90MU*)En)&1zaBToKp_XRJHStG17Kp| zKTLT|wqH*Qkb;~^+TfxxKLxHftB9tIJnxJbbBr@Fr>ZY*y@;x5HwdE!8@SAP?JFN& zobGRRfg3mf(wLVWsTT^zQK=W1=ZjIQ<61=TTiXq^sZZhBN?WG&+SbF8wUQ}<(?>^c z#)q3@rNT!KHn`sC+jF_qIi7y$>H*#BJSoG3q7E6kf_W_#S=o1O!czI zxF()o7v>>*;F|&kxlg|`VQQi*T7Y(<5&1s(*XuD$FGuG&@z46>6Powo zy6FyLT7pg})_q4ZB)zXPf$f&e?c=@Ussf($7>@{aIFp3ce#G);xM8boNGaK{^7&wr z;Z~^lZ|bCga}v>U$Fh3EOqW?dhy0+!pZw>qn5}Orf>g0Z(3SftDVu{aF$+B>GM1>V zpr_#M^(~+#$=o}I zjLe_cDK=6}fVBC6Z+CHJP>pp9_0xAS zjCD_@`doP&ANyP%E1v+3wei(FA2qSMf=6^pP;Q)?QN~((3}Rsx=H5pk2TSk6qr1Fs zpOEf){HMY|1H$rfj|>wLu|ESj$m7ooVpvQGkvZbwA0bXacR&PugxyOiA=2*CE_pbu zNQuaTc?f)LztghobZy>Jj%lvc5-b&zV9Jy!K)3*+L($DCyl?|L04my5fAMa-m~>i9 zGEdqUkBsKmB9kK!*atc(bbZnTar|YW6nG4>@;t@a{h3xiTU-V8Dc^~Fc z$#e@bjJE9cJGpC!!39SmZb8krqSF}A5>`jOTHSZa6oIj0l-6H+xVMM@NZkZnVc0-- zDeAtZgas~moO1HJhmVkflf8oepj*}OO;CTdFrbjAuPkR-J8TR~ZM}F*Ih9zvQ5K{= zF82+nf-IHS-&>{#QYzy;MrL(nbxD};_A2B(4_(Xx17n0(m9SLVmoA!3LS&Z&x>{~x z6M58bXhqtu%3@f`G2HR=V=HXsA{lo#>jPhvVvi(*q2OVx@a4=Un zx=T4Mp+^S0kxfa&nm@VSJA|bc$)5vdbx3=)Ng@HXV%kYAh$zVqDC;d&c0d@>8!MnC zvVjQQuF$%WWLTkB60kXr(^W)lD_ibUv1PK9BLhJNwo?E2(L8~8@ z7bOq7P~gP6EUEN(`NjM%D+d`QZFB-wWE;IZOvWn-u8@kif^xvbG3HwyD(Cs-|F>j+ zg6(&1BmFMusZy|;6BP}YL$fjgzQf;Uvc8P{rg8QL$RK!o;lNl0{Ke!Khpi>*P_G=5 zVOTAjBG6`@3LD;AyqcQ1)IaVryec^#kh&aTceQ05&0YM1oOI2;t*%amXsT;++M@aDnK8Nx9&Dk(URG5l1Bz#KRQbkgBUy zxl}iwQp~71W)+t2E7|_m-}S6A@G#JtR58W0j>uH>b;OS( zK`L=zL_8NB^pRJK@0_Ld841v(I<>k4ttaU2Z?C4$r#d`JHGdO*E&CUI&oozWv+cA{ zz*$0GGoZZx$Jks+3xGGQ%WwGJ_|}(73T7Hf(Nh`a#C<&b;byfT%3D^DEW!;sA^|>IQyy63YxN zc>5F@;7N(%LKa-Jh}+M;>HPYT$sv>;nIJp}DT`F}y?+~W3KTncJYQMs5>Hxbud5C_ z>2YP_On>6sAJDFm4h`~O(%#zws!=K@76+bNLu<%~lLjPRC4p@x4Bc`aI^Q^H!TqQW z`H8_Y)@GEv3BgBTK(*8}rsIGwy8>;SmvchakRt)IHHPuFIhC{a#XPsmgrY);s2dEn zAvgo$gxU@jYT{8;AqmLC0SLg?!FCO7tx*8)#e%ns&w-rJ;38|kdtATo5ktt^tE$5n zA+q0P<48f~TQUrS)amyfJH2#ub*KCY$!ahY6Ur_PA9vF`%uK+TaXp!6M<>YEvY55v zeLHaUc~TSR^ra74siP)fflnh$y!URV)P~H<7Gm0Std>a8_rO>8+|0mV=rVF6t^ql6 z5Xfa)s`m9g51m!UbcIGp<1KW^7+(2rva$tLm)4MLG6jhuAKmlYBQJ=iJzo|c1 zje<7F#p`5eE@nqU-0E{={ht)SEAtf?T|nAS);(hr$wILlWqg)s!Z7^Kg2MnfIIe&sq*%nnLJlsZiB-dd}9-a)*8C)DT_&i5(8qx zbbD>X>lfvI70jY6*0kZ551lv>Q7MAP{#>@zW|CWuf5H!o-GFeT7qvu&DQ`=ttZrJx zzp%M1Sn!+?IdyGz7!7nLVBbTwzsp?gb4+dhci@DZyF1va(;!HR z%`^<&Gso^B8?@Oi$i@zgSt)e}!UUNyvFw`6AG`Eu-9?4p_DS0AZBA9^0hFw|tb9r` z-K`Vu9o?qfBZ+eQyt_A7VQ}I7>`rCD_J@QK17lcN zl&6b8T=Hu`xcgE3L2m4K#4M?&MP#)y(KXe}vrh?)f4;|#Kgdw9M#TrR0)CJ5EJ)mB zrwrE4!s8_?&`uLEg#D`FZW^-yXgI#u>~u#xT3Gis2{a4VKFORSU;8 zSDHaPEtGJ1n?swhaUIg*8O@JWbBXW?uPPqA*l)vSwY;9O#esN&&i7W9PETc?5~4k* zI$rsM34t;9DIgUk_r?z{&)}mW&+-F%#Z+n0$xzE@b?DO{*^DnyhYuS8{XdLg@-qt= z3rcf$!?!;OJmc7yH(dTIdjf>U2d;D%`~10UIBay2U~us_E%*d(VF#-Meuhkhp1ewy z5yEIW@t06n$K#&{e`4!DSn5LY^hbLm9=OssjfL3U&U^YH%2O*~Kf7ng*tA^*!T~6R z8>q=g2t0gKu_nk6wLi%`TxuII(&8q@Txct5w#;pPki$!mkU6(Y zY`OL zlBAGL2#Nq27CU7MfzRT@pHM(9%*4|XGl1`Y?b^$h){X4Rzc=X`T4W5-4**?p`9biN z(8JIQCMS~ZEzD8#G4S!z$pGhjS@!6C@$+_ZJ}q6{`d7@j_*JYZOXL52hcj3{c|k;h zj;xwN7CnKT5n=6`l9{dhMDy}WTlxwe_HtEt4_~@ekin`0)j{cT9zk0&Cr&J0w6%vt ztMl$>hKu-i3sDbHtK;5h73j?`D@iNgxa{gHGxe8E8#DE^cpfS}oTq)L^!;`fHW@Mg zU^02NZe$eJ-NJzE;^S*}m+y4`j|lmBf*ti~yC$9TC9o6sWmi**X8$1aG7>(KoLtLO z@?aM}3wa6T;9P4HJMOo4WHI%SrG1KS?}MY;Re%;9b4n)sPVuLrqN<7c#mr@>Z{pUs zMs&~HPdXAOq%JP6W&iY3<|c-Je^W^`6WIU}E@fY4sOYuX&R=1in=FcP%V$QaOt8l& zeQfbPhn!&bDI3AU8-+}^A5YMxwN_Y}+=c+i&dRGTg?EH)iDRvN#Y;xAwB*l;6bb`D z6fQ=---ZoZv+wniCj%Ly@7!=$P|xFjZ$Xt8^2Z$7d=?P{o# zhYxtByDFC`uVS^xdutA1B75S*+|m7FkgIo<{#1#18FHqErdEn2-8&bi4PjgQ=Di&| zS0n0k>~SQJZ`m{nk!ZmOB(_hqrUzK|R}A-fO@w z-72Y&q6=BqQmbGTH{Qz=4pFjXHOx2oQPMWGS1@kcH2w$>Fjl?19Ap} z2YF;MlIOX8Lgk12cA;axc7Bg`M@NcT*4CBi!8oS+cKfo(RiE9+%lt+AY4?>*kOM0b z1P-K|;S@y4%PLy2E%D9AUS(1}f4&DO-?#&V&IK=Swjl<8TknZ4u9u^_F2OdQD`SXkHZi*E zmqu;Vn-L7NF>9dGyvpOxA2TG!E6N-Cl2IX&h3yli6#e2{wUbKIbXf;mLsgg>+Z^=w z!77P(E+z>-$t-*_tb*Mik4+vQ9GrC0>kEpQn;UN;HU4MDLY5q^r3|b7rq$L(ugL-F z!^-)hy={Xhug4J7V4cVK{Tw?P8#_$yqSK!@xlm$xBT$j~yi+sm$_6F?S+0wm+ zsaDUw1A==?TxB+uuGY1{P)%J=zl^8_JICBir=Y%p(t)j=lON9>@xOw7RL|v5QT!E~ zsh{+tgQ7X-u&#N+%_{yU;iY{yqe(R@o|+NRg)7rd_bjKs?oD0CZPXbOR4d zy4y`{F-`gW;n6(6Tun@EeO2RSU}hTn7_~LrYF4QLaS77#-+!d6@@#CO zk8GLTkfLy}UAmX@Dz;{&*Rag*fHW~tx8Ty7c(5fnU;mryLu^$dQAjkp5Lwd(QYPcV zJEfV^#Y2((j@jaw!*U5iS1*I~2<)rp*`eC^DBRN)_r)SBvAW#Yctyig%Z;V0HOJHj zBdBv}E%aQaQpbzD0ct<|t@!Tw<2w1i&<$D<8dI=IW>;m{Gh} ztY-WZCz0!M+<*TsfWC?JkJhPC^W*!|>%xjm%nVF}-ek1{6n!_!wyHnFD?+asYw(Ff zf^nLuJLtufk_Sl_cR`)hFO(F1@$LzKX`j+YihE6?Ee((rWeW+b(^-+3nk61t3cXWP zQ(Nz3P6WWGPO6GYk@H4Q8p!&A^4QW!R5s*yVVPHT4hUum)roZ1S-A^(b9$XLWIkV$ z@J)s)b)>FJk3ym>Yh;N4po`~`c7%9U`1_#udsFMWPGxb)aPm+?$4sqy@5o~e!Geks z0rT+LD84v(jZHXw=68?cu-esH80e{%ithi>yjl$Lee5NsdGKl`^pE)(nw5sM~D;^ zDO=-u5ie`Sr7g0VT`3#o`_{W&L~oppdmdM$n~NQ}9VZ+>-~u8Il(`7F!9$*x1@^|q z^~5uNmsYiv6aAb?v0p*svE@;k$93r@s!BM=%qiCBN>tg9PsylHh^?A25XN=CYWVX5 z$!!g;m|to#Tfi(;RTbSWgLD^UPl&5JvJMK$$#F${4nG!fF9rHmewUry8cI;v(B?@~ zR-85hhV_Oi?NGeYgPN25V5yf$cFBw3`k3K#s|ERJre2ZJQA^1BVa@nWO0DSMEPpz! zS56?S^y%a+8!I7R7j-AV=4XpjRvqgbKf>i(Ovz&U^Gg*(k$13djQoce zgk-F%Fa5Q3DyqNYY_SgY4HT>t$vY@F0CcWSHD^hOosmrJgghF?bkc^%!*=IAx_S^0 z&^oH@t~t>(MZH{1(edp2#w075&f&m;6LLCct-P?QaVMFpLZFpWwuYhqcC-Jg!Qz(3 zhL4WZNt`-hpz~7q@D1^(U*vZvWHa_X$bIWgDD;P+>(bg~w$mM-!zIlr>c%VOWBcoq z-l>_Z>ubY;G&aZ3M*YvR;ppVyNw1U8`iGH@qdR)sfLEL&A#--zajEr{@=G5k&(wV& zy9H%1v2g0kwgVx3bdnc#F$n&ms5sp0G2jjLr zc%igtx3rbTV+r^^^)lw;9MA5e@0%1?teMhhKvz40JcD1xfqrGb>n7+r!HR#}5x0 zZlZ|(&OJ3LIR#O~iQpj{;EE7CwWs7k!Lw{7u`Yz-Ihhjuv5__UBv&L81Lj(*emj}$ z&Btysm0Oe51DN_LTMs9X);<@@@`v*%vK(ZgZyI@%d3iP`pc;BU3 zR2kuRg|Tn6P&>KuBjmYvYav>*`ytv29J&&rH?37iEQxK0+cc z3NbNNpmFzpf6PY0hO*2;q2_gRt$VGi(tW9MugUbxv5DvdN>EHZWt#5X&na!#U_oB@ zeOu-7LOhLpbd9EvB%t+&w?=iy%%Fk1>5Ywf-QS!6b1&4x%U~y0=wgRMKx#3A`0`_3 zkPvk;qF$m8XN&F2L0XJqG3PB$dui!+mC80+Tg{>}?G=x_FAoQ>x~b0u2GdZ`hfe%4 z#gp49BydobX>q=)lVv`dN7j|B(HV3PXb$L)X_%`^hjy_YBb#GHj>`&rHzeOQ!KXmu z8s7s7CMs)npSgc8^s0*~{rIJQlA?hjN|CHs4cP`^W=65GKWJIt2v<^^u>&&5LhfBp zG+ye;9c-7H8*0|T7p(R(YxQj_9*-Yau?cM+WkUtpLaRVFHS+v=~Aa+GEJ4_WWq>DSCo|gLL+9}fXa>;`VorU6}eX19) z3TK0f3gMGO!QE4j0JX)iyjtgNyUO~~0b4=Uj+vpJP{o$l%~eMMn@h9!ZeKEV#S>gA zD-`KQr2Or{4b(bU)1}y7au7OXA+>lU9e`lIbI9`6yWpUa^5sfUUe1HuSB3ALaD22+ zk(P-2Tc==+hD8)+!96o_cEOehSVb0_lD3+41A-W1)fC3AM5knmIBGni--zzJ?V5M` z^4c{>3Bbs2*h9lmF8|)2*H(=8mfePjYY!~U=ve~Ghf^9Im=i|rM8!(nX+mJzo=fMb zO7dGP15s~AaKsdN?tFPD?~G=`vC?3T*{;Ce#eHiA+*do9{H`q{T2eZLvQQ{9f|$SXYYC z9o?h9@;~-Pn$uKwAA`0Gx$s0Ud%x40Chy+-9aq>ZueKl#NyPae{Kc7#t*?&AFkL%H z4fd|tH3#?s83m~Bn4`z-rV&^2w>JSFi`i#o>u^_(zsvrd>7tc?s-ak8H#~a1?{it= zwA8R_P+v`+7gLe;)SW9Pcy4;3ZR#?(ycgwtl*cC+qbP^JOm36kS0AC5D^emic~c;5m8h?LPtP^P^E?z1qmQsnlwd< zjSdMAn)D_}FCp|I5IQ7u-sXPyy?f5@2nPzf8kCp~+(a_5LcXZj^2a z!Ip)OXgwFB5Gt8+qbhr~z%f@o-ErzapQv^VYH8w-&IEs=%`pXr5=# zQI!8yQ3W<3HyEqWtu7vIyT;Tp@G30uD0=BfyO${b!S)dG?s@Bbqc*ak!F*Y~g}7VN zs`-NMlC)6I&(K6Os&ZKcXuq1&w6|t8n`|Wya*vKX{0`s0KNrCpTUynV?zIz1Sh|(1O1AHkyZlSwIaRx{3dO|PK4I^0jDugKa1sm$kMYSUsAS=Pm8dxL|g!@y=@ zvL-)X7(gw0j*8(V9d7X0k{nJXZCQttb{_xsRqm-7Ph&{w3+hN=^Fse+3by6`)qpb*CcZRx(g1uM8E6 zss!qP8_}2B%No$k}Q-Fy+bc=#w~qo7zr)WXKKJAibjB!v&5C*pdyguf71>=fJ^ zxSZd8`@Z%S;;F8xn~lCkF&z_M6lriW&vNCfZ2<^sG|DSJ(`;OeZ0Xq>KYYVlf`2lF z#TeEjxedkjo=E5^=u*o*HCH+0x3~{G+k@(!lYrPOtwD)0L~m zncS|kx1mBb>}I$4zp+RlT*RJkicGQvYc3OoA64FLy6~v&qR7%uGnJ{-*!K!~48?0d zvAEduiN2yaVo_eI8wzM$(dLmSEyp@$jv419{V{^R;Xvg8hrMEyfOK}(8EA`*GeaWr zc*LIIneB{5qW%~O>(Cc8fpw6kt27p7*Oy+L8Rx3hx^aC^=w&?EICV_|`*eNX_%Y^= zpo7!i3!=&;@m~gT*O(=}6fX{M*Cn7m`(KUcQnQ_LLpiq|w|k;M$Tb^tC{+z{7bZl~&1ql^a)Ym6Rxb zkI3rNpT?=s@N#pz!FQ!v_9l~-JvBxLfJ(Q#RHYT;-ksgnmlQyrva@rDn!6W~U(1gwC|>3F?#>xd>scPD9wQEy_2f7p-Mn8f7YEn@#e;YP%qRHP=-}Yh zM11=hTZg8lyY@eVD>uKw)Vq{--zs+FOix5Ud{J%~TOMF*f|;I~Xb2(+UJt=-ak^Fg zv4T-iw7vixVQO3DhCe{FZ%%aIjKX1t!3N7}C#t`x8z>s8ep>SKF+3-%$+>Xv{qN_3 zcU%f|#263m$w5sapSj+poHF}R79Ld&d)3+MAj!1Bt5+WQCS;tL7m>xy^W?b`-AG-z zqS*ZYu4T(;^zTmJJ%W9nqM)>b{DS&Q{?j||Xv3=5zh3_#h7kxv10VLV%agzEl{jWA zp27L=6U&I)eIIZu{c63-%TJP+%3%SXs=lV{e;zCdI4;_90(yFEA$p64yF2TQt*C7K z;P;z)&g+s#nKPn)`Pe8dxaF3$Rfg`}9PEqvj`A@%I_?Pn&pvxAAY7NIRu~XNLzrGf zRm6t)GkF5Fb-z{rI3MnAExJXJ)lFY63)stE9uXJ@IY+sM4S<@0@soldw{j~OV5?Vu9?%+$1{D>yuA*!?(FOk!7Uk3#(%z9Hk)ZUAQg39$+Hjc zjK(%USnqQVFI5>-B}aFlQNqQR_m}55I>(+o7xP31bIn@VW|(;FlAci-225OOW6RMu zQ*?V*if8pdynmj%gS}ExJ8Pvv>@VNGJbaP&-uD-iTerq8|HMBPW|3M*&<$95S%No` z^@!>@d$z9{>M;QLh+6kWC{4l*dd=7nw0w0_iFG}aH_F?X*Xw&PYlHu5l4uiQ<;~4L z-^(!udb@lfJ2fLuJ<~=iUrtc7@QveIo}-mPZlLE2qP~fYseoBWm1YZNv*eWjCVq=Z z^I2~ZB5t%sq4thOmzAgvEtOFW!_i#SSj=1 z9ZhzDB*@@RL)kH={+qPXY^oFW8<_^DcF?lpuFo7R-?X*urBcbLu66-k+rF>zM$R7> zD5_r)>ngR5y>jwX*`sKdU{tmajL!p7ZQ{MAg1FWhSvev=JOy+sfkzywcCxrTub9WX zKt0_x46+8pPcQ-N1#3ydyZgnh?}D2Y!=2OH@mFjQ-O*IG2O=$$R^G3b0WLp!P@ zLlT6Qe}9HEm~{Wzt$a0E&)0nR%j&4_IcS=QgA;S5Pp&x>#il7G@P4m*PI#8fjhgbT zXb)I&#NGiOb=;p78Lh6l0MC;Oenu06%CK(^8aSL!JNz0v3^Y7QN8Lj`7pI-Sh#Ar9 zwbzm2^Wd;Rq42@Pl#~?v?@+g>W;mk&3Wv3KwS`$h@EBQK5_wUnd&Mju?9`X0CrVSWB5Lu^W*ooPS$r&LZVv!;nBMIQFr%s$M9m6a~mh6p0DJK zcHx0SI z@MNrNVxvi5!14PciXC!XD|Hk`^1h7bL^pH7Vp<09`cq;9w=~bX&z0z|)A07m^j!4Q zk)%{)n(JTwTG^fL#20a@5C=zo9cNt{>6Yb7v<+|YdK=l%H2fhst21y=Mc-v}q5J{0 zl2q?rKn&sCT6EuF+Rg_>R@D6&HO}S1ebK+P0#vmdwEng15>}JhdEB_7t#nW*(W?_`!Yw~8om(l1P zmS>uRe@#oC7L`lUEk>3I0HI6;BKF8VyT1U4^OJsD)f-%KZX@7zknzFmIoRwBn=d=@ zFB4Q0_jQrYyd!7sNYmg_r9BZ8^{H#m5^g9K3lTv#_ZASDsI5FyrR4I;4p7SWAC86( z9RXz4C{sR^WkVX?cQu*Hq6NXLVVg6GI;?1*1o%;@p@6GKgEA1g%c$)FWFtNP3ouTC zC-8--jzT2OB+#-fdKyFt*Q|daLahC{eB0f_u@@Sm2b`@aY)?pGN^0NO2lr1T+xcF> zC&53AUGwr+^LF#NzF5T=x_@KCdG1F7i zdU-{FymZsO-);%5Ucfm&BbZ6LmqN_b78pN1n{dU{kmlO+qx; zuqQ&1D_M;!$@-{bdV7X%O#D&Rh){YQLq<+szuHiou5Ea98B9mJb5X#i1RIB9dxV(l zDR;k>gHk6j{lpBl+*1MRJpt+t7Rhez-$6Hc(VQRj>sOgJwE3Kf(M9r9Xd(o}P>^ z+8UV64zIo^mt%V$7~Hu6$~PBE>~5Z}kyu_>9Tv_>;F!f~P;* ziM}og5X__-WJ--Hm;cOd!=P@hd_%O*RX?%PzJ)R3mizsZ%F&+4k|;rKwg!=(uaTim1|iqeB#$VSl82B zBgInHODh?}c~=Lj)E6Hv8jDV#${$$>SW_78aSf=AsWW#yed4k-@gr56HQwL~E%aTm zvf}rf5~7A3R~k;meeiLLv@VS;=Y9}ck_|r~GfCi7K zV&btCIaZ>r?w@AOl#)2%Ck9BcD26K~aPedjFZaYRGp%R6`HQkeZ!Jl-!roEYGv1w%cq2OEF3!NyU8oJtI8bEp*Azc0+ZvXv`O%qo0&%6Z zWqiXX)8k84Omtpbn+Wlx&uY%3%c4z5E=u%XqPp>!#qSD|n>v}9`nk+H;`vp~>9LDL ztuKA-a-Xl7X9grZx#1G?TZnD%lf{ABh}hngfMd+9Qu{~MzZNAOo;!@iRTuBLwNwu6 z5=1Mhl@53uXGi~Aar&r|1C`L+)cJ4~d8eq;Nb`ayBfCw{O4TK%dwtiAY2W;k`^w}C$`)qLtK>20v%al? zd&-NnI9Gq|D6%GYCTk& zC|j@eaBXdoB~aO0aq?@!j*)j!H`qu;W5W1@yKR2H0ZOl|_NWZ6SWN?Jo)0>&zXAdC ziWvC(lP?*>3&6}-yEKa(m=o9vrIxz0=$^g%qoPp{Ahf#!u3LyCeYo+)SA?^lzVK<%yM==MsSpS zt=%p&*qGN4FVxm#($;*atCs~8Nv}(*5QsWxg%p?c`zl)Y>WJp;0D4X4&u^a42W^?%NcXw^;N@`1i^1+p?>SPj zj&ySWL$#i%u-F+K+v!sEqAEJ7jamzG%oP zEOg^TECvAQew+U69o8tVX^BTw8CD+wCU;Q2+y5gzx$*_^M_Dk@;3y-Ud{U;-;pin@ zyo~;7n5*B6$-nCE{6UI5$GmvX2>+O_{X7~xVh0w!w0d-e+Ahkmowtgk8yC)BbBw>+#FZRGI4Qv;5HAj=fl}&l?IczFlojg zi4o7nx^fMByA(TgEySNbcZ3zb;Pn^q6VKeroC>V@^&x5Bl8CH#SIue62>nB8VE_N{ z_IGh7qGP@cnk^dxw9$vzjC1FM7L!>LYO{@Y^ve$BBCp-ueX@DUlPj;Whd<(1eH@Q` z-K*)LuR5<}FHbs)8(b%^d=qeZc4{Yh?>$Q_8Ml7u%n;Q+ER!wT%{G6Za5#$Zs!bH1 za!zrbqdLcgm-m>wP&$YOpxKZUUpdKS@~~6NstN|^gE*aJ%g6T?&;hq*Kfi$Y%yQhU zb#-wmB9ysg%J6aMEQ8kdJ;)#lu{?Ktkxm{r?QEgP$Y*f%qWK4VqQqE9rdZ`&V|GeujqkBJPK4-^T@4d$|j~D!>JTS zvClNsuX>It&17(va%t~y8S-%K203IpejNMJKJ%frlymgOr9THjTv&Li$$?(AG`u7VJ8Z*nv-`xA6cPINwDpGv~k_ zKaNaSH(Yi}-8|c?PJo{hFcOATWdw|Kyruv%h5){&Cq}rY8*p{YF??i&Xs_fjEPe7F zxl&)?K+-|(t5UHRu$|dF*p|v-E$Xe(-pL@Z#Z{+eq7ks^0z!nxi&vaCHrG4G6(dbIbZPE_e9~-8?)8}VwjIKFmMqxx2kGt1NVr)Q9t+g*%WHhPPY8Ygc*$)}P` z0iuK|AegNdmmmP&CjDAD-6X0UQUV8NH3BoKik{hJh<9EN&R@#3<2A!$vHebb-WrRM z5-*C1^Lr`644fRCW`u~S#6y3t#wF~U__AgA%Eg--eredTo8g`Rmav)Fl}>I)~@nJ8tbQyL`t}QXj`!!xnQZ2fXwsq^t_xIfcc`+s4F!fgz3Y zZ!mx5i)*nOD*MYJf-xJ{Hh_~QUk8)@s zbi_*JuYhsfsMq(9TJYy-HNH$9S18lt_zg@2A6F`^2(nmW2l-)L%0Vci$G1Dhj)0|d zEK4QnfaOaZ`1J^|g1{5zSIsVaM32SsPn+N6Q)<$%NGrZ*T$9#Yed4hem0w5Jq%uBS zB{H|W0mX(S){}5O5K*@`Y|g$_J!q1&%2gn}B_mibIB);!ryG@zi>!G70e&tVjRn~F zRp77NaW3+CRbqLv-o<>Pb!d$q3#lq`-gy&7^*Sj-VbBHdy!RqAGB7^$BN}ia=_jJn zo3fQxT==Q()#6)B`P~Vr9h)2G;>J~Ln_7uqsq8Ai)xp5`3+uHy0m%mhm~YrhE@;=n z&bG+MOTxZQU>i!pe%huT=+Rx}9xf*HQ1gB0r-J!@v9xo8#|xAkapI1>ytlwY7X4hk zo8K7rYE#Ar6ZklemnV~fVZ@{pXmAxU81gX$%i;}rj(8MT zI1RI8hj<6=QQ{VE79%%huXjn$W&KP4I(FYfz>3EEoFH7PlwsUJ#9KpcE*i2^SW+Rc&N{E{c-C7(Y z!>Ed7-6JCHr4%}<=@1bJAh0Virwm@sFXngFZmr_qu{MK|565E&*RZx_+Xf{z0Sp? zkP=J8SWAD^V|1yg!(#94O~Q$Rx_|!Ba<;DVw*Hi zdB#&lV~fQgPw}zAP1k`%EWLF{^1PIkRC!@b9h`j`7lJ{yNKuu;VqqVHR$7fO(gIs$ zc==?#K6y>SW7X7syaqkre-4ZT7r$Q`tF9)DjQp@H*5t-I4vxqp0w%W%9*hDohVRMN z)>e1}2^Jtn>#mh923mxlr+R2&!G9+3_w?$Ho5t9*_{^`SFQZTGeRm9H)bu6BQ$~ia zbn6&5469}=QAi4i(-Yu^><1|etLxlvH)CGuQ=LA?q<{K&GaXsDfZcL@27*pw=k?#r z%n=(4ZF%m9@!Ke@QJW#eR9bs%&1P)v6M!{ufS~Jw@f(Vlv@|p{`+rm@b(E#z&kHe7 z0isg#V-zfi??3|vE{fLOZisRJwue=n@sMK}#Z(c7&VAT;@^8ubB;Ah-C;f_%nPNe2 z0CW}$J3+H@HGFA=QG3*EuO(uTu(C*SSouBNnEPu(pX$#q0=BQW6e7a|9G!H!A30m* z;!5pUY~GQR)Wu-+r1uKk&hKj4oWhs`WzrqGhm@@dcQX!uvdhI*FaZx^ zqT{R8Ex>`R_CmJhSiPLwZ8caNHDfUq7Cco$JWz9ov3?IF1nL@D+7@c_E$dAeykB_)4#HSjvDig37i;))dkKXNx3adIUUb zhWT=MIVOK?eWrBZPm`VbWz2y6{57HN2fo$FAC;oq2~_U`jJvP=)4heQW*I01YketjOi^ho8>xpbrO>3#dj8929NQuAVGLt1lM{Gg z$beh8ay=o##&emgbJVy_Ywbo@4I!(i_UG*=FIw4DDrt2-^b9k*dm!SllSN{Gn+S$E2hCp>;2bJdmjd1E`5n ztjL56@O@_muVMYf(#6t63s}r#v)<`%geuvYtTC5Kz>`UcriPiA4nNdc{iu&+CuQxRhf9zcj+>`Zu-iIIG zeNf|H1MQNwvX~JTQ0dLt+hILf%I2|`!>{A;VZd7ZyH2Xiug!lKLI7vr2lyB*rtip{ z16;K=IA8QGc_bwS8zMH56=_@ zq6gIdk1WP6_b>j8pD0duu#Nc?%_i5KthSnCT+^3+6hltBN)0U|Yg&(&Hc@jz8Ccp- zenvBF4zq;RYX=dsxtiy~Bkbje*s`*+hB_QlVCm}1I&Z44agJtr0)K9S3DN)i_g3-@#Iiv@fW&y4d4#mk5g~>Opj1UU#8;)`ESqrn(l%LQI-HM0G9{5 z{55k)swEG)GMy1pV|nzKoeU4NH_qwIgBa?(=j$==2^s4+#t6ZOo5uA+QY3<2y|FpO z=do_!NP4d`55J7%SHhXi>GBu$hnt*oXxP zTArK3@(3VP2osaMNipt>cTpJf`}f#WF&;DtkWZm==^pZ{f5#e>z>L|qBvF9`2ak?m>H*Zd~)d8ZSxTo z9uP}`cI<11b;$&B@)WoV>1(G&)!M%?0h`??GF5tPN6?4UBVRvi1{(KrFHaCqyQ-_) zUOUhQ)xpen7FdsFDF#PQz-ZTHpc9Kq`4^Umf zKF98EP?Tn`m3-cIu75%IEG7?JO3T3WBWlXUdJoBdSpYh%nh|z_3*gv;c6N5X%@H`r z<>Otq86M7&9ikRmGL=37z$N}(hZg`2_kba2oD%Uaps`c5^shX23n})XVW}L%y43ZL zJm?E}a22MyCF1-HT}xXT)rbZl=D1h-f?ImZDW)=KHEC+tv?%b@+|!L58}WT8i79%PcGUR+LN@m;wQQ*}jfg7n6c#)m zJzz|wH)!md7@gdsg2WLrjONm$ud~|Zb(KMtRjujd(iemvGej!YsLqn{cbz*&@6u!7 z8Fn;l#VQ#&=!`#Q5SJ$S7^YTbvAROdbai6^)BR@5(FBwR8s0#E8f^1~ z6U{7IBBUKU3IxOvvX@}u637zQXltrJkJAA7PvYhhuphu@K|$ zsv?THyQG`y4!a-hO2ty!+crTUNd0dv2ZLPpB6(ac7rjGD_=70Sw%jAjI z`W3@w`YsTLZ#f=ZrFIz#k!5@B&zi5DfHT7xUS8UV>%gGW64zW z7`NPmpx6%%4_-svzo0t3L|Ie7mz;F@w~YY*|I9HY{|udsJT_6jhw`orJo3N)JC-AL zB+EXgOg3yBk9|G-!dc1p2TG1sgHO+J$+bR6xz(4V=u=LAd8Rlhg{rLb<0631Pw~+3 zW8<--0hibfIRcXXat-TougrmlL#rkan<@Im2uw};EH-T-myb(-Bb;}WqW)3=~o{X zCgfD8hRPyv;6Mk8y}f%JalNh4ZIOnO?*A5zUWSh#PZJZ3OdjM-!>YMe7KFs-kSO8n z|I1k%kE8#;2bu}3^4fM?qsaACQw#5+-F;G+PitfScmcMZ$~Y`QY`FxSoI zRy3xtP8GT;$Q?IVAsX>fuH8Ze<0c1QFt_;6`lA1`Z2;eXy0hekSO7APSb}o>02up~ zeFCfXSSqeD#y$53=_2H(^ipNmGfQ}@`}@~gv7@u2;+hmsm4$It z9hSNd)F$}1GbM$_R3h&-WaI4T^VR<}U|CR)aV6PAk8NzN^Fn4gbe8Xz8UCS(hx-Vh--*UUA}nhD{Sdss}k~JP+rWoYU%-hF`Wx7H!5C zCTCY@6=+;dgRC7%j^-i=xc((XlF#1wo#B^2E@-MkDDiQa_g!G)i>-Gl25w!)QF(&a1F>K&~*! zMr_v($~r9mR$UjUh-6ZimXdn;?s9K`j_NVNASc%hx(q7fmi*s#dLtU07Q$v81H3b% zK=T<&k&A8asZ2`6i>#);DV$$*#m;Qf(-$+RzMZ1oj{N55Cwfu(fGN6zuC)Q>k<&Yt zYu}hsV0Ay^eP6lCAFaKDPI-;T(l)Jc=USxyiJj!PfW?nGV%Y%fiKl~q9L!C+VtOAG zk6{Z9pj#JsWjByz2{d~RD5fW2-}CnoFkG1sClaDvX6(^xKfu4`B%6^kCrboydwa+xU8^GBv^@2sPF z_cH1zG$q0UO8hH9QsR~~S~?6pJVG|t$(W3K%#RE^@i)qvtvj}PmHjC)PU)zPFzN5V zQA;HQx)YSu3EL1yRDKA~<4_R#C(8$JH>|FHBNYNetk{;%+;)vLwPLTAHN`7? zEBDvih~M+73T7%^fsW5havmn*-X3(P&2W5<-ko& zK3C*>6w|Mmi$eCKM?EYIBHWt&_6TF6MArc$Zqxykam=yq{8N9+ioxFxu>LQak|kij zN@bhGu+!FJnBUVBmxa?Sz1qX^zu+tX$>rLF07%)l9S0xNFsT0t$Qo43Ih>E_r}WOC zYQFmDwXksrg1m48*q`sW`8qc@cjQComhJ33*@}gmFyFsEZrfF$%VNo12~6yeqZogB zz&Rw%#$XIJ7d01qEovk0t^u)JOHgp0R%fw?*vYD9z^cPD-@QJZve8TeE-CY-Z1!lo zi~Ag9F53!K^(&AEE&8V7cS#h@=MUCsd`VXt!RBr+SD&Az29{ zL{NLI5u+YkS=_S_vr=DX^IGARp~1v|Qq{j_mH5!&?R4sB){ikrX^>=*6J=d+f9yV{=SYo#GSVAD{`Wy^og ztKp}{HAXSiHgs%p~bxnWtYPyWY zonn~kjn2KOSC>~Mv)U8iJE?4Dp0g6gO~^|9^-pMUI93%z9Z&$_bNf&OPrIG{)qr$A zFOl3E%5lJx1QBEuYplJN#w!rgjQ)N5{+C)+;vT;&ASTrqGmp!@bJQ5~e7o_(T7Joe zi?d#<{^3GVyf}JFYW!ztlYNETkPh0%er>pcne8W=wqeKD(3+6d5XK~4lg|v3=u`Wv z!)V#gkZx$Ka-gZLO3rPpVBU@49Xf}9kU8N(r#Z-)Ocy>Nejsppitc{K zc^xvS@$K)9n|JI*wpH0XP|q$*|icZ%) z!rkBV`rtozBzgiZ~Y9WMZz0%KH8 zsQD>Hqop9e#AnLrHIcz4$S5R}X9+ILlqdIjY%=Ix?_xv2BR2*(k?r>Ze@06;EjyiP zm)0gv>6!ECo--JVaYHUCvt0lFs|s4XUcGLJL#<3!YQm>4HN1((XklM8`<9WSI3o-y zoMfBo;wv2&baLN$=5rMpb3P1S*F(^kG#hhaP2@Jc6B#1=hkd6MQrIhZzFnD zvsE8#_TV0$($o`huKNDp>sQg4ObI#gxLfDsjt36sZ-5LSP;+?w#HQ-u4$U1k5yxaX z#FNAw2cNV&x;6lMjreL@IK+E(z26DFET85OoPCpqiQbptn7o{dw+m);cqVVPR;uC{ z<}OkzHj0%V^L7b((Hil&A(Ry@jkt4-XF+GBy)m)e!5-^uD(@-olpv*>l5kq zwZAW@cw-zP4&_*1IP0+OMvtOrJ?4saX!E10!DMsbsF>1$JnT0NV+0+OUFthMs-dJt z7wOI$sd!8!=Cel~^gVPPnl-wQO~NNRl$F`H`R9iY-mAw;LCh|Ex(Qo+9%{nSnEe}u9c@s-Y6oxH*_b8q6-#M%s>-Y0pJR2?lspI@T z8As2=?zNCLey3+2qowbHZWXAUQyGN8BG}C+IX#vPW9w#2P^9=5GC}G2gNlu9 zrKLwo7W`Uvvhep-E5_t}VckC41SIcZ1iK*63-rozmAK-In|<_l;M!;#yux>gB8@r` z!=`Pu`*P3XzI7XpS2C_$cIrPVXZSJYEI4M}fQj-M8+!Z+WFZOM;k!5O@goI$0A{ay zh2OP6eh>n(2v<+SRk4bE&~Yoyfa&U;*_O#)yRE&zEIbpC9_T6Duztk7a?z-7isj^u znIZa<6ReO6h=6CH2cT!rN#J(j3_GVtH;aLe_wKa(D=Fa2j0!c(;$EBXdF#E6!R#$v;@TxPFs3&i`=i~eM0e%S;>T+k)q@6?Cs4>l# zofayNFyvdVTCF|ns%;U@>$BO_8trAbr~Lfzm@#TWI@ThyM*b%#Jr=XBrU6^Jo`)7V zj`-0hCgGqk40{O&93ej;cv3Fld_^Z1VkTp+Fy76&16qJsyvc`O;_G;56;w=|OXqyoa=`JsmAk+U~H ze?=>?X9=-5Rx}ZFV?zVg(kVOtThKCe{c+XfdB^+h*#|hA?A-$Hzf+cXK;abkXY*75 z?$<%XDspER;UJpUthpH(lb?dTKQX^iz5FBO+7mPy!}rUv4uT>1+Cov10bI3?w@t1e z2%r_9H42)Src+^BT=W8+a8JXKX6f(Otp>0}Ebr}toHwGKPa7pKTqw{&flIj5xPFxq z$io%^#vqk?T^)dCsR5n!G?!jq>%5M*z*jYiPEvR=ROs)$TPFy$oBiq0Y{3Q8rP;bq zb#X2lS8O6Ev!XtHq;9{-jZUR8g{|Jlt~|xT{_j>pW$v}I(t$rhWC)8tM_jmv%VL`J z!5mXRcxaa2-9tneF1%Hm;{VOCWR_I6t{6J5F1sO+nXCx0EXWS?Sks9sC@48yk*I_^ zsy%Ts`5+=uWaSwN;$x;9AdDnBZ-^4npXb=Td)O@UriKTqZ8?B@$`g?(yq0vm8b5#v zkKIV-xfab2QqkQHI9Z2Eq%4{^v~`Bf+MjN6e>VkI_J7W;TLN%q=}(o&0x+}!&d2bG z{U(eG*Zn0Skls-Sy;yH+hn!SUP3dwAabz?*c{@<%<$&8l0muz~f?~8>sT*)dxwZ~> z{_Z2;Ei2@EP85@sXUlwAAojs-+Xkyy^u~09Z-49lBRdVxEJj}0tQ>g+7qd;Me1IX` z2y3hS9KH&J%Ik!Cd9IqSG=zQ$ZALUS6jmzBd$vTZ-U9C7(6fVUV+GjlHIz->ot!A# zTDQCpuJPE7J_5$`=ti-1u|=2$Ji^L;T)AaZU)6%g$iw@toQRVj)mXa8WgKHJ>BAsF z+Zd{)k8P@xbxz$wD>@r)%%hx5qH0qm)^g8D@4h$%m4Mz#hLqP`nv}aEkNkN;f}O|F zV}`8vjXj)l4QX|_c{-vZZEjZt=h_%AYdxYNoOX7jE=A;n+^40VF4y%GWfIAE-3jCZ zDLs91wVZ8c?yOy#KPJ>a#Do2|^xn#(jpn8C z+aZj>FEB#lcc4%QtZlGI!qO@A7Q_wu**0%XKznBD{lgle$?N7qG}l%_A7^X#E#8)0 zdG7#(m3>pL3rIuq*{X>@=lcjOYl#KWi$IX_FocbyZ+gEtQQ~$CLzZOFdyBj59Sm~0 zr`_nbDln}T0wM$HOl<@zODQMy1aHpAJyJ(*D-mA=-Am#GTXz&R^qx$^-hDM&V^%eV9rC%T8 zA^2xyYJb;F2W0`JahXdK0fg9b%Kj>@TfMDbO7qXJK6^C~xbqxcWts3}0QW3-K#}pn z_7VKVP=~MPo|XDIfWQO?=arH>EWhYGTiO)luG+33S{Zv7i-5#`eHGZYI6l&C$LpZV z=b)~?KiH_dn0HOgM<@J6Gf*`vGkCpI{`$eEYw$bu@cMReAm$C=WHFWCAWY!2(M!{j zLG;ErvkB(GJh&M?^>|G-yn z(eqcXo_rp}yMTW@F^unAj8H4X1jN*JF2%i{x5~nA+)%CJ`xGQa;##;{Y6-f9ch;%u z8khCLw1M_wooD(m{i0)@g?79CtetWfeJ0l&;*yJ7Plx>9b?KUAW*~b=;UEC%tNb<) z)OqvHU&cY#8L$|3k8S9ciLfBtSjigt0_F%^Xu7MsF+^eQ5T-QXE@Pa_GLWoTm-=4W7o^b` zdVUVn5j;4X;B5zBSTil>f@ zFci0xz`5R@8c1PZORh{9J0#<@QKl7kerOM^W-bmBx%l>|om$CvIzhf)dkAaoo8Gmb zq>K-rkJ=>dUz?UWa5QWJF34*z0Zq4Z&+4=P4WKUpT*|7oag=Q9@Lv!Tti1U0CiC^e zhrD779B{m2=f`0cMbCrRRcwlkG~LD|Em(dMs8kKXAGs&-`hu`oCD_$yM~@rP>S8iy z{2*kBC5Xm9W|^tDY#L&6^Fpn@_2td)6i?tv1D9ps3)&_-Kx~-yrlK^+{J007Fmnh@cnlw z^24=n-+K?gJ3kZ9`}v*v7aPw8);nABe)(bUV!}M_(~wdnNKF~rc1>8ql545BjMeDK z+1{!0y1*LR6RXPbPLGz(gl@H5wmIQCu^AG_uLKLdHbKPIO{wcuU*CvY2x%p0e67BG zf9S~r`J^HS1J*tXpcMFj4z`>YkXTO{RA2q1#pw_X0w%k_6s1)UmC7J-X#} z2bUy>o)j=$L|RrchX=1kj~rRy@~ycj>K|u`O)%{3RJ)Pyt3k#Kgf-% zj!F(fhAOMK#thj{87J?X>iHI*HH(l>6$XvLK?*eHe3O^cN4Exeg?aD?3<>;>(B%T; z9kO?rw1ZqY*l~*knYz;+d}B&`xSs)M;0K*nxfDh;u`y!C5PR%J}0Frg<8c zCP`BPZjYMsxL~2ivlTQ|C$^%!8#*Aq5f<;h%rM%SKYr?DxQ!C;i5kFdn$&>I5}FTc z6=HugxVZgdH({5kYR|6JO>~%L=PA}OhPqzX=cWOC@*BZSG926LQ(y=aRW@!!YB_?{UuWe7}#+-`gMi?EQYdUeDWWJ;oeZ z^4#hEM>9u)cWx+fi^HGjXn^WSd0)ad-x~YYP$R+w<%g4I^GUMr;(xB}tMh81mOXWt z3r0FWuajBf(3K(F)}Kox))m+;>C;B$GDufG1Q?O-ME9wP=k2Pv9P;+I>N&H;T?Ag| z=M zgS0^fA%yR|<;O;S+ZcyL$kGr!zg~nVJ*}aNN(~TqYEc4x_D;&c+`3ARC@k^VZ_(Hu zu`quqFlmg?Ja|so$H1EgIEj?fhK=tauWay~HYIkcEY+OadkgHej;@gkW*2i31j|AE{6BU?QD$|d`8U+E2C7<~mF&;ut> z`4+TP@*W10FwWqX$w)`0%s_!_acmndkr;RrPuw4b~Z`lIpjlApm_uuZ2O z`ZdcWbkA1n@`%D{LWwDF*Q?1z@5Ri-z_eha?&Vtc;rbMl9^8S`;!|&rf;?&Gg~dks zm9tr&o*qO?3(;D6%Kky0l8o@u_vH~*dnf!sB=p_!&ocT9kE#@9Vo>$lN@&`}hL$<) zwWav8R=4`SCT|C)84ol_Io;&T=f~s$MWcf0zcQm>DcT+R;gxp7H;}Yp*vx=#5 zJjvd8)#_Q1xCb^;C4TdhDWNk-E%wAf6RG~@T(WOC({9`;3SVv<)5gP%MTeO2F4z@5 zrZWC6O^U+0(BwPe0f%0tbNs_+=U?v5cH-ZGg!B@w8N3#;NBoV62|D33egPof3EHva zw;Lj=jo=H*LC-?s8T?{`rXLiUa{m#{3;xE}Q2u2mHN}NLU)3yU{Q*G%jT8v70W96U z(!{HbqW|*_Hqx>@SIlxYC`ATa`u47NIPsp)=9A*qKo3*Rn&NKSiVV(~?c2S;LO6k` z17={9hqCr0MF2r$j~-UH3O;8Wx|UGE!NchN#FoT!oM}NrlnS-@JY`)Fe-@fQ;*7er zb%WnV7mI03Kgh3UMr`$1{sqX|GTERJd)ZWC;@HgJT=?96JwTyN*=CDrNi$y>oke@Q z*+ktq(DR%OcLSUbgcF&j!Pe8bm>QN{=L_38b#i%13m+8Bl32&1d`UjJLFMnyX)$m^ zNp5`V1it^2*2gC>MO-zFPGdmLK0dW~)iLW4)}-#a2$_X)Z5ml`}U{)0II%Btm5%AA_ zU2m5+?`ib9MvQ zLdK8AEmM@MBei@B5jJeo>dON=IJvh0AJ-gE$J)nvj^nM-YUK^IU0eg`Xbw~g#R!0Xe{YYYamv%plSPy57%B@ zHbr3}n5)Nx@N4gT0(?W`om_kj`|Equb99s9f25I*|9ygp@vBknT2LOle|0u_KaC&=8Jqn@x;>svHZdb5p2 zG4Q5abYm#|P(;gibr_D5g*fTi>ce*RY-hAqwR9!@IEOCmu<%mKAxozDkOv!VOOa0{ z6^3uu%H=vxvy0%^c>!UsGNG58!^-^o>L9BYL(7l%ldNV9QNI}A*iXzC#~B$Wi`E;v zf|#luC^62&5rdlvr{ceM!c2H=-^IiNgDUW=J1kB_p2Wx37zE~daksYqK-ZQ!OD0%? ziGZ^C{tubnDdx}fl#^K3Q9el;`w*)cS37Y(cgAon3F8m*)rNPi91mu}T_bL*HC+%G zdL%8eKLzPi@?aW?x%J7kGX;y=G<2S z;NEENiw|m#0@e50HcxKy`+AC;^DW~v&sMn~>9FC99Q_DE>qGh5>q0Xsnmr5@_G=0h zGHtT9^Y#^FEU!fv!>5-q%bi32kwrHc+9N-YH)?uVo#@?4IljiPRSL>JXn#&MfM>7) z0e6-eAm_jmrsxR!B+TqSrQxcU>M_FW+@ zbh1%gY3;hmv!ij5mK5`#J;(N16~pJQ@o$(xA>~WnPwUdw+>L_|_lO&IM~iknewz1@ zni)Y=^U3|W&4K6fi{~gxE$JEZi-Et?oFJ-;844+ z)b)T%m>u=iMhsx({^(KFJ36gve;_Uwm5@w~1mUl_BtSw*FBtzLNo|p#s|TkHYL(~$ zwl#q;sUz9KXep%8zMWN?dGQ!3j6=tP;FWElu~M*Y&Ucp8M&|T}(S}Y$35yNnO4;;d zJ6Oq@s~Qf@eVS*E8_2FBX*Y)umlb#y^EAeuC4K?GNV~mtmlxknep?NDiSv;QhsUh1X z+^)H8iCyhQY~_ftZAa&VFN|Y>_`qPKkvyQ@0Nre?VQDevk{!*gMF=LOO9BCwrM_V6 zI%W<>{QYd=h-T*RnCH1iidr75M#euYt-Sib!+Dfp3r!A94#`SwlD-APT_f#c$%m8S z70zoNH-;PsBUXEknwfhwyZh2%UxBajzjFb)TQ7>%5|wSsB(m+9a0xj_z^U$rB`;#C z49H~=zNC+3>t~PdR#E73u@v|>d2T;;a+Rw&s?%qu-KbMH+8H8U6<*gxQaVCpJfD4( zBCw8&CS_!bp7i+|-HkEKqPmycE>FkLXc1`}1?f~;!2W&7o{Gee(PJCXX>#rjg0QX7 zuEAcSAU83=m+8mku}PAXqvW`E(zroimHri?-0#t~%on&M7*J@;lRcvI<9J)}nj>%e6V@WpDS@KwS3FVpFHZ@ix!Xv= zIcD-e?)s)%E}+8>JRM6v;9KKd;Y6>iz8bTU0XN-t+BAcaK3y_lO+Eqw`Rm^Q^(T~b zGr1i9tmkf=h(77muL`#?Ktts<_SN>3)~f^!PqpwV%y-lsF8oAPRo zT}BKN*i{u`d=0X(QuCK6)*E$)UoTN!?#?8RXMwDt^hFe_jfs|#JTZpC$xu-1Il#RL zyIe*`{qM;_BmUTBCSc;=Ks>oG@uqVHUs_k%YT(8s>T3*yuRLdhGA8Wwe7&%X29ek3 zKMngy@yA|sMy>PXG%es#1p*EY%ZfA;h`3+W`ojhvNiXRKML*qEmot2r9+oOruzTEZ z`H9hJ*$E|lD{_AA7- zAj#!dE^+vsLlk#&Li90o*QZmufkPN1gceOF~ym zJ^bF$;BI^`V}lB@@*BA5J#d|>v4TIQdN&heskW#_+PGuYi-agILK+}JS^qXdwY)dC zx7!D_bi*TU_fx#j(hC59>$I)ix@1D<>gO|3Y`c$bLkrZ2G)}+Mn6Y4>u;s_$v!Bm8 z>g)fk?$ymzlF(yus6ce_2%pn!wY)Qx&ucMMq1Fy2h&>oZ8mPy%2XjMn{f(%^-@Bd2 zO8SymmFULzz{kKdS)(!u2SNQWMB!+ zuf4l$fm=((e`6Y09!$muZq66PY{g5j`+5rRR?tmWGl?<3Xo>7^F55Qtxv>j@z|U#Bu)q<1n`HvJbR+=u;5__1%${>2?^1@ z!d(fXZQ>Lw>)V=?DHr#xR`8blh81VMF`7}#v03^5F z-wd|@<9%w5G(RQ{aF;+<-#;bx$RV$uI@YWC%eibd!iF3BITU-X-`gXluq0cy()i#0 zlNQ2>UBa(4QshLI{q9t}Iahv1Wc(=lOB{?F2&r%;;$&>yMB=@pl9ATxT;17uLB-tH zWqfMc`f&z+2arU?E+x;k+8m7K{yr%<$x@n&{#QVoy$56tz9hYKXe^szZ ztQvpK81iSYw|gG=0g3y4=Z3C_V;1x}&aWD;`)k2Ab_=6)76B&Rp?y+D!L+tN0sJ=U zDhC4dIhNL#vPt)RpyO~TI+vV(s~M$*9QX#ez3ytVFDSjkq0qgIVuz@&d%LILD@fJm zcU9$K&uk5o_>DMk8JtS`8$U~(^u_#vEAO=`_t?td3c=*Q;bFjO;sqDzc_eIBF9Y|o zv7`aHcC`HE6=LGX4WMT+{>mW#M6kk z^0<9)M@MGO_~&{SR;xWkVz`nbR}%NcJ!E>=YO=TYQ|`p#egtgDidPpi`r9dbuw#^! zb<1<}ixpp^L5T&^p1xvtN@?Qo1A5ho69x32>B_b7I!^z5qJ<26P(a47R%9DI%5J%8QwPLX4ZX3tdYJStDyM zWmHzUQgq8+EG5xiNi8-eq)R#LA3*XoZK@cCPs8~+d1hW6E`k&8u%`a}4Bm}R9X4|$8F3B)mLZ|mW_Gc1 zd_M6d{{p32UYwk*TczP&PS~+zZLV4fx8HqrprqxRixB)DPUwDnDJwguvqaYo6C`+m9fS{DgfU6szuvgj=1&?fH$ zo>8G2E%i3)w#O=L5v(cLt_YaN+?@<$t7Xse#RKHQ>e!NVf?uD_PPYXkUPUw#brGy-%n24B0y^Tx}znEd4aaC(*_Um^~;Uj=0IT>~NRY?;sS4Q6*h;)B=lZIgi+lc-kRI z-S;mH&Bhh5@b(qwS;+dFkIr__+vg^$HOsMNrMkw=T~a4G4ci9LDXs$HY#*9+@|Ti4 zJ>W zLZ<3Z-~LIiMCf?Z@?);kr2)Bo8y2O?pW@ymdS$Gd_h|IgT-_UGqzHc&6=()%Y~P!r zP{u2qcDklQ|3-&?rKj~k8>~GWeg@O%lAN_LzOYni=25Lykgdv+m7w6=C4px@f|kmi zq^b>I=+N>>oQKuBiqW$&a{yRE<8XT%@i(*952Wn@Th*)gB&9sp_=+}}WZ$K3W~D>i z8y=H5ITO1WLQHeusrJ*h;LQof44(|-=Rmaf6Dwk9)*)Y4Eh)j`LRCytL4(3_6MerY zIGeo5OCH$yn5g?HuJ>n|Pj2<{@G(wTAQ_B35$XOvrsIc9SY|^fA?bJWNy3ulo!61# z4)6LV5~VGx0&}jU5ypSo5fe?ZXe9QMP$CEvH<+O$e7z(0X8inkeqx31niaU{D1&_+ zNN@7dX~Ia}=j|g+QVaX=it9=++UU#62%vDA7m&NhS6bom(nTe@6Z{Koo+p3+TxCAZ z>CG%J>S&^#>(HFQ?7$tC4zkiS(bLzvCvux$+cT$VJh1^~lVT%>py0$9F)uuG>?dgF=`s}TdzP(OdLxF7zEU; z+q_;RyAec3ne@4O{Did%w-`wPO1ugO`=EZa_c$=vv2e5t05nt9*C;g9u z=>Ni&#pZMrd8aH{gf0)12|pG8kYQzC*k8)uxqOdx?Og^a{6_pLr&<2MBzatIiGA|(xsAr9`$;xX1m(mw|(|FG6Cqn_%b87_opAO z+k%^T#yi^G#6g>wr1Te7nUB<~ToA6_5 z@u@@j5eD<>_z-hE30pC?`~F!-%Qi|ogf7j0IQLE(@YOue$c>Gdwj2?<65kZd3&I#2 zpv9c-JYfr1F%KLJnJ!Dn(`cjux|Y<@Vqq1?ofPvP-}8W_c;(Fsr!E5ZBit}sYBT=v zDzgr8?|8QcBnx8EP@bZu1736B9JKGQkxONDp|VVdwGb)0&<*_*MTMsEM zG$yAiBn5dU5#3gU{}l#8Zz+Cgt5;&3El+4!u0q1h(X;)l}&FBj8Z5&b|pRbhFd&DU&myE6pD{AX}1UYf5K@h3AEL zeGp#j-OIT#f7P-TDHaU2%Ylc&j~;N}=W<8~h&1hW%KF0(ir`OhFbs5hm`2Za_n|0i zkrj8Qmjvj8g^vDRg0mzu$;Wdkv(x%2A7OzJu<>->tU0Ak(ANZuDBxCecztzd`&aXs z#nfommk2)|g{CD?cd)*y~65_n6Q1|Fx=F3WQC3_X%<; zcRlI-(oOAaPdSGf3l>Nv!$N&cdgjw2iD)eP)oGKQ5l`kc@B^;)4ymMQe+hGIBd2tv zif325JpR*^T2p1sLLCf`|AeTvUVU#@?b%rN>r3`4DXAV%)zjOy=)5LHy8(&by_81{ zJ`-#uN9BDv9JhD!53OXgu{0gr!8Wksyf+gt%926|sal%|B0Rfnvo$VK`LsQtnL2gg zw~m2r_^y1W*5y&_Hokyp&vyt0KXf{DSn&12UP9yfcHjU&$<^vRz zd*Qz9XMrxata??%)u5>2^iyM50W3lkwxFQUJDk6kZF{Iuhb(3M7RRm3pdUdeEX-8l zY_T2f#pO^5Llze{#tk>r@V>nWMcEH1?t5%1VEp~z=D~J%ps>DUR$~=CYNYoGQTX`T zQNBLbQ?GdwdR%IH)K>^k`SCu$i}X&RY%AY(>D^6#x0De5M@xDO?E;pqX`akmbL=>` zt;Ew0NV#+u!v|7$Qs6&iq5IgdTgzL^Pj$~1JIo}6feDT&^6vngOUY1%27QlqS%}Mk zTfEYLF0>O9_pP${FLb@mfSw@R{k}>b)Ay;#NN0Z6iYzCtpHhyh2v}h@8T`6qi+hO^gFHK(_?#P|k_7ZRnGcNZswdFZVGurrBBjl{Dg(7f4u1yT z6QfzR94}du+Ev^Li~KkOq*iIeD5gd_H+I5ZS?hVHZMHs>Emj}Z$@z}DTv9VI08 zQ%v9YdQ~{Wfeu?s^tZHCV23r(zCEbJBZA;K9g9!6<(!bISuv+VxhwhWo-F^ncVkfo z`z488kC{(zuxpOb`nAwHXzdNxlffGzq17bqD)Vix-ATpC=E<(fnV5#a?4bd>!%n+b z$J^$|BQ$Io?Fpq75L*87blBT&n5iIyiZ_(+{aV;|txdtnUTPBO*XKNWcu$z&xn>Jb z(uyO-O)CsP=i9=A*0nB^juyqpZSGY+o{`|(TtLElD$EzMK`%t+RZTT_7svzlGoBIC zuDL;l!KcW0&zZv|a|i=>yW{t0Zk z6E>g?I#~1whxoTqyjbVtrTyQoJ?2!rrS1^YitB5v)IU|0qW$ylod_;M0(@8_-gqZ2 zYRpBJE8`dMRJ~40zwSoDq=8Idz%3I)hm;+e<2@X~NXuD6rdAo`_8$S?fjwFAZPZ`9 z&yxvSeP0%bfDtaY+euTuc0mQ1O~DCm+o>;Sta6##c3A4$IfjNLmO0`dMtj9SzB=tk zhiIkN3aIET&sSR1DlKdH$CX&pEl6lN>+iGb8(}d`F$yuABY5nPI7|`Ag6fNeMtLuW zigqSdIAyK&6Xl*Y1^z?2*>Q~w!a_s+IA-g8XE^G#2s^ilIT4e}D5pZo{W@k}*`E|{ zWOeveifHn>5yvYD{MDU-fTk*H8+X$nZ6c3mH8p(yTC(50OF#TDaX2B9=c*i%!Mt2yPF)F4Ram>@pulC{0}b<; zmN!I9TcTigE4D%V?>Dxsi&moz0#A{J{y|3BTk~30O);WktK0oPOD8#)WNqijyR2m^ z`ZM4Mc%0Hh1|*glk!oY_{v9CnD66H31oEQ6_e*zGuI8Lzi>eH$dICeWRfpr-L!PR8 zqQWYIABAS;3cAOhiKyI*veZe?&I)$^W{X{G#FuM@{PhahMt}L!z}bp866WzSv5sk} zPI2NIv$A(mJTLW8B*7~?65ed-YS$auYQ`%cPpVE);w5)Rjfk$VmgWBK9lw}qx1`!| zn_Jnv^i1xnNoI^D)#I{jooo!y-VOMP={FNGvhil@T5oKCz?*ZQ2ItKirze?XqnvTpr1GSeD(Ksb(aR>USNk=7QKQ|b;zHJMVdUMCzV*@!rj7)xBq=vH z+Y^Tdf?-@fn+q^B^Oa-z$Tk7nt;$<(+9~n;(?nFE4MuB@&_>K@|4^nWO*L^H36T^b zVNrq4ftScOK(~~)(6l4gg!sz7PcF9eprzX%O_NrN``Mz)c~-?fzw&VVa`wa0WjP0< zhS=1i{`_Io0|f0&(R%8eL+I(^j)eCCz?lnypF=XX>FnP~0QaV3hGRRG>36#4)vcs9 zHXcuVVUQXzl+_)rO-*2JirD%pzG#llqGNEjNjTsC_KF7fll}HT(SM(xG>;xaayB0? zuwVD&&gbW}uDC?k1xvlK$o0Q2;%I(HHU1S>uT+y&gvdQF6LqE`eXOYo^v`pWxT6EQ z^G)^<2SixuHqRUiO*1&u7=$u(v!g~@NdhaBu3j5SZg2o`zYDd&VWVFowRN$&g(@!rcv-Hqqil44V%^%`IHYqv?z zEONm^{K^l(s2-LDwdE%@%c=vZ6HO7v$$3x-icR;2N#CjfHh&%HAWst(s1Z zxQ%Nq##RHN*gk6R;fP2c3#it zxy?MA_(ML<(d~(|(|SRG6bui^)69MOUsj2h7bkHS{j2j|>1UD5p)F<5!N+E$4d|_W zZPw$MHYn3%k*0K~+nsC`C?Zz5=X^imwT?AJ{hPVQ8ul&noy+|xnQ}}j%mHZewYLq- z2IHbiVXFd{!Rz^&%lce@BT{Recm&!n78Y~ZM+csEU22(Z_fkm@?2gpJ(_bM=-C9HZ zo;P9P+s2=<1CX9B|J=cEE(Td!@3rVym5ZLW+q}t)OC1T}p*~YsdGC@fAN}j0botX$ zt@ADT^wsSZb9ns*ky;wiSRAa`L>ED=Y97u39wWe5{DDD!;nfINY!st}lOuQqV3w&I zlq%{oV2Pu?)qIfd)c(idwR={;nXbA~BSq^C)(wei*-5QQas3ThLRT($1IM&cqGTU{ z(V&dD#-svN_FBRNe!Bm^EC9Uc@vdjX47G8lxD79^wcowb6}r|%&@kiOyo;J8AO5~Q z?ZD5u65XUaz4BJ`dAgJ3wO!cn<-=x4UJJXX9nai~)ch%w8E)4a2QK~=&~yok3J5YJ zmd;)wZFYPcUYt?_!Y7W?0hvi4E!$={?W~Ym{j1Y<^hUXjT*62SGIyay?;iNr4QeLK zD~gx0hBe;9aSIo=b?g0anVv5XjHl}abX(0ZZ@&4dY7&oM-&+MD+EG>c=xKSJy#8FY< zUEv5XevEZTS;eU@lgj+jR%pY<7<8&ohF9YqpjB=Nse5DdXk)WpyytNh9IqVuWw+Ze zzdt1At^1V<>CbHV?j55UBZ*#b^bpq9qxOJxA;{CU2lhK^Qv4P`cEm`PVrs3$0P_FV z4*Ni5v!*vcM@s_eT&IW`OvsYr6o~d4^oMc@a|HvkzF?o??-uPJG$V?5l?ckhwGIv- zoDOm#ZD$irGu@=GV4bHg6-wdre%`|PjJml02DzR$s(IqkAEulg3$gbIiRt75prBiS zMSXHzK^= z@$daI3+*e+HAi#tF}<$1GqcX1rhA(F%NzT}Q<#k`MK`~GZDTkZY}Fgyf2*Z*}MP z-{~gX490|ZOON?a+aN03->t?&dgktGO6bZsvT2ofG!+4~4!tOV<1N4xck^E7#u%Mt zQ3u0_q56SGzv;jA23;JLHT}5S2!?gewgKrL^wEAV6(rp3`uPqX`jKV9P`EC@NA}uc zQ+MMB@BphSsEIAG5KEWa7!WE-w0B#UtPW4Uaw7mv32=utlhvCoG$ueHTdgDi7z%j4s_mbR3WKwx@A>1ZB)wMT=`g{z($>%i49PRA}Bc)DGI z^k`9lL*p)X)laCe?Y;DAmgOO$%nW8DYxxEAz13h5j#d# z*Q#n=WdeUFfVg&24JMr{5KnXLy3OIdhU$e2$w`TI(#?ZT2kz~kkDl-)eT#-H_1uaN zOkRz)Y< zAq|}^pCveCr23RvIHGe@^ZApx5Ga;KP~lO+!KUt3uplx>1npf3V+dTc1!CBuSHOgTYkOFzG=}jbQYsTQFZzx zAVh(o?<>j@0r-ueEevi!?=7h|f1O0FSib<5r`;_3{G_Qy#1O{ET;hlTILfyh*%@|0z723wo#rtuLi@C2h)zZn$b^hSw# zbdb8*+AMjP)een)3-?q>(&%yuBRPDeDQ$}_*BIwGWVP>>^I_jAyBIe8|I5_|LT7Xu zv87+h$t?^F@mv-eo;BC8C7t(iu1P5hg~%Cx@q!Q@%MKFWhA*ozu!Z60()*k754pa_ zd@18@rR*s8$fDCLw~cV)MHk$9{>GC!SgyrzN>#?D{@fkuR(1aIyLTviO*)Je1ClU- zRww&Mb&VIUZGCEgct^kX+Moa%DUiW6J6mx>t?Z~ld0-^1?C7&)W-i<9VPAd?@|W!0Di|uo5!{_L3{N6^Pfgo zCO|8}kDd=;9w~=?4e%9TXc97Ip=76A=(=sYl%9$*5ZW;sUKX|{KMvO}wNn2ur-4gb z%t@y@JU526Q)PC##Yr#c8snB}oLzZ;1rBPW>yN3&N1nH+k#>8L8|k4d>Gg<^1(BVm z+uMs*BWolmuW~0)Wp$W9f5qHwzxyi-jlJW;W_8r9gwwPZFe#|(qR4eJgo$a9jnxJ- z2}*ds+Jn3r(vlYRCy0J4C}DPw#azuMK^+bs8xN_be6Xyl-EvRrLIyyT&`=!07CrL+ zjcld<3?jwT#ju_Ma|W%iOfGE>TvpPoT$b%}F3Qz))B{yBEV7&DAmkFd`*WjJ zhXvX($>4_kv}3+LSG7J@O^k>Bnx)jmq0n`wH?P555ms`K+GC}i^>xuWY|0q=h00!v z($Iy@tgMjrdS!aXV73?*salwQsqBYhS@yT(1^G~}o|x+_A7gSt5U8tx~&+lSO&ukrGSUUF5sup`oX`DLGvcV*G|8mHZZN7bs4C;h-*3 z>YnHf&3*&BQrk4i7BnWe6qR+%F2`_AB@b15a0Qhz^OdH9z{>KmV?p`wetX`OVgZaH-4vO!?#s zPF$%gT1cxH0$<4I7rp(ibH{P?|e?s{Q<}9>T@%T zhD*Y)Q_zfDz*7z5L$+ugJIHg4qW=R@iX%o92i$6QXi4&ZG}m}Ij^*>*oo)zR7bea7 z-B#_QvjSJqK_@LS4TA54_TL&yI}B~0Z%%%DH;!jA$xkK9IosDXgB!2wVJ--2UCr4H zaXm4pTu7#H!-?DtC*b2w^b|+kw`lP#MgaI8-10(L#<~#Je@Ng*ZD_Ue2lwuslCk>0 zKModtGu?}cPlqM}`NQ`-M4~L&emnr;I70k!#$H`>{x_Qd6}6iMP|=PDKZ-cV7K-bH9Dvnw9S2Ql?VrY zhqa((pGJ}nm-V6`ft-7LPjn%t&3oEt@kToSNW(xAxgQ`cu|H`T;x10%q?6M5W+Y#X z*Yr|nF4!Z+Ef19-4jC%?S9y@8qw{5Hk}KeAUIGkKuPXoYDw+mar$ut+Dibrh8CV;n zKHe!Fx9-Dg(>j`BGj&Q7J-(Fmd9SA#Sh+Euj)ySZwF_LU+66q^pq?#C|d z^zY*D=D39_PLGsb?#a9HJiU4;JvC z056?JRuA*HKO@4`545(*7Z(8EL&4%_+dhNY90;zbvzvxoh7y#WOz*08sbb`vwEr69 zFJpmKuGj2D(ed2gr**>W1Ygjl-2!i?gO+n13hF-7z6LpCw8pt2J5TU3i2gQE7iY7SRC-Z_!)1%rl}FfTT44MbCvf}(Q7Pq`vT1xaQ?TWjQvSw`jQ zZj2TsgfdB{<*rO<(UJ`X=yn3|pLJPKy>r>CX{)ZJtHrrElyP8@&{~n{g9GF1VmpoP zelvF9H$;w?GpmPGOtW>6@_ktf>w3QQ!Cm{c^#)0$^~OKgLYYM;rHWhsKga8_FkR~` zN&K$r!n!7RnoCXUUFB@|8wt01cTAP`i{Wum(}rx>?|jxhRv|zu4wELbmE_?7?oP6h)jk}QF_g$dHMT>S7S;7;8I@G{ER zD2RC`7+11$u&6N*U80W+7Zg3FulVts@e93^0$3q6Ej6~nT2vwPv|d%nvW7u(#7f2o zr|IQ!Z`pE+Cz=OJ;7CDSU1pm0hGbR$IoG=~M*T5Q`ri!*k9p}!2-a^jd^9s;zyW^= zUstkPI8RnJ??BqA@34JEzHC0l$9=|WtZ+q~R(KvT-5)CsU~mu?_{5(g%*0{!anyj2 z?}Po}CX(wyR9jQ z44#Wz^Su9|9ug=0#*XXvmJlNKjI6JT39pmmn$;`c0bPD#q=Bk)Y@hGVOVg3#ulmM? z+C=VZQrD{f=$)5;4GYBg^9f}jMJy|yGQQyeemWJV?1=X|@6Zi)Y`0laZ`=86`B*T8 z=p)O?G3H=ye;C^r?xgR7$~}ph*f=S*_4JFid9&%@PuZyJEF)--&heQXYy>nnoLk%v z4uN=WMTfc}UI*$mJ21~Ad?`U!-M*TuW$6^oEr=hu^?Y3;P22c2G=myNjepIu7bzR^ ziP{A}?AkE4J9yBD*t5r<=usL@@Y5aooK8)IN`p+QA;G9BCM=xK9^=an72f=Wimy#$ zdO+BEIjeEJ#OLWRn;TfMQ8T~=@YvZpv8oZ%SAYF%p8Lh_XXi&(zGz^Y7V}YMe~Z`? z!gh^fnb7*`38It-gav^wX71@eq*&ByOoV?@b(iYze|2rQ8OX;!{ca5ms?r4s+yy1_F(Ajk{xg#W|PiQeeaBoc=C%cWUuW(x}0@E%)u4CFNkQ!Fng)?O0Co`*QlIxYP zDZ%UB=M}^Ta21tbO|6D(Y8}*56~zf}A57bYA4PAfV00VSx%u>sJG8lI`lX!vOyI^n z>}D*t`N-;R+;(J4LPq>-j9lW!cKPHo7$@*Gk>QIc)7rY;=C`X^eTb&o$A8m_oR3B2 z&;~+INgvNKC$Y)}(=~L~6T&|Pvxy>>%_Pa@p~h_*>HR8+F@Q1+^`w0OpRX{Ved3)c zGJC#E)qf>RfdR=+PLN+Jzcxb;C>Lsh4NuF0k3mOU(W_M$GG_F`i8l?lG@;A|fKRhV zz!n+H*K^;qt=MICG6fon`6LDo><_*lvpAA=-}lY-?IF(zZ+>+zZ7j6aL;js@2ZKZR zch7U`3GsLzt1Wy6kG_Zwsx^Rr>gkBDwD9{XnLl^A7AO5Sf&AE`+C6-mX(7O7YX&Q zVo?uV>jiJ1vjMn?q1)Zs*W%vl(_)NR!eb&??k_ln3*Jgt;H)sR@oXCC7EUtYbB@U8 zcTMmE8lvy~LSchfTr&#Qe4lg2^H z3uK$+r#3pHeXhkl(!FL6$MLvYS4p_CZt0^rP(cF+mAQ-HaUhcNM-E zHt}Nr?vXPzbY@9K4DD@YA1Wd0JET5TzP*L9$jk_Z0Sm=fUPlAS0 zg}E)-0NznADCx%KpKvBiX#wo!p5ng}PpS`;`YhJXgNkhF8lk zv7 z@O!Hk+`uzO`uesWZqcVw`m3tSwA<5v)dr7NxrY4mCs;kUrk6P`&aazeq?e+Lnr-eW zsQ}r%*Ylitd;0(5{-tix2mS+xvmi%7mXuLw^@vD8l7lO&NuGPt%EhL|#vU>TD!v(! zzoWJ#`%lH9MyqNV=?PM^;Wnx$aC2*V`N>6~|Nd+o=rw+Zo5@ZydtnAJ?GR!a<7LuQ zqqi3jL5+kP2YN1Ez0;$vfOkEQn-QTkb7wN|MvNREPc%?0pT-kHX93Gz%sOljLN7ab z-e+P;z7be+-S#`uZMXx8G-N} z4_xrSr*p5BEv}_*D+>eOq`+LYP}FS3Wfs>>#ntQyU+XFtx>;(#Fr*Rltl-S#Im+|>*QKwx; z*OXIM*W2R$)zda_kx1}YHm0K6Vni;GKs0FOlaWgaQTdfHVs9vC00K8jOn~(9{>686 z4=&*fHN^w=&D`W=3iH~cRhk?JJBotatLo>NX1c4m44Y7|4^C%SE3TVar=%+&3d>4x zo3iM=A*QoH$eF;KXZO!nVFk@L7EDJI1Qu?XXJh1$m6Z?7Hx>327*0sX{jEafMz_6* zJeYHx2sw7AdNPt*vw>%L;M?u=>Y3Okg$Flser1`z+ zr3)RL(AfG(GIYr`v@od^0N-nGcTRu$sOu|dZr!L(5FS&zhL?Va(+Yhh`eHpB(PzO1 zmZ?|Ox^zP;_-@e3enr>dsAuk(ZEmLx&QJpDPF&u;Z*!_If%3h$^a@?vRyHCD%03)j zMzejX@Sb1%BTqGN4uHQVvwk;gZ|IZ&Ih&>V(=bgY?B7rSwXm04QznfQ zxFOLk4$-&l_u`y~Q@6e0H?LfDVtJQdZVGbc9IMaAJ#%g^u;~%|F|EX}xwkF`GE?#( za6OK$)*iw~zYJst#r6VZuFOk+opGUmL^;}-(Pro=PH@0fhj$TI34s>wk>(d7Wf%2C zLbv9NjLT+6@D%Qh_OW&OIf?zX7I#XqRE zwS6X>N95dux+-k@zTsnhLrRL>5h;BYfugl*9qLI_PI|60lwU8dKN?sj^&C9I{^1ey z8)NClpyzq)mdm~=aM>|`5)WWaP@AmnR}tfkLjL*lM@Q$QHI#EZe=fni;}!m z1bv%sALP+)ggrvC*7(|~z`B@ie+A1MyDm&v_YS<$d1drx)}UEGI!J6y%^!7}!R+s! z?az1(b#OE|034pp;O{(`s61_17Vbq*eoSW#0x$e_eZII|R_p%WhWSnCUY9bMxYY$X z_6i5o=%s7_>uGU$r>(sAvT%A0vT|`8aPhgaL5YLecwwJ}-r27n9~|#IOYrgh&WRd& zfGiOA@O2jX#XQ8&nmA_+KHIfWU^4Z5;G7sDud)PWJI`$A{p!gR#dq$g1y`pSxZAw9 zbjfU)Q029Y;86bQ2y1~9F^wIAsJU)*dP;8P;WlEpL1|d&j}k_+$l0r+ZueWsO_IZ< zXC}{hs_Xo}_lP5v77@@je3TQ&cP*qnM_rKk(bhg;d~593v|%U&{F5eU$~`tPo1fDf zkGOEhdQO}_JA3}_;cwD#)K>Ik1;*s8qgb7Ep$Mmc(jP5b%U8dZ7%b}X7S9fB^O_`f zvAbq_qqj~X2d;$Vky4A!!^w0C?vO~w*}R5LmD!8(LW6Hz&{}sh=NnMpL}6=03X&hG zcPU(G_ucDIZ_>H-Jvx(v5Sp$n64uw~f5_8?{==EO6`__^TDSBeD3)g@+oK4cYCfU* z0I;Uant@qT6LfWOlh)_H6E847%y|CCtJKQh?pqO4hBHSj-?mR3ZWk~2W}0hM5sLI` z(o!a?(!Z95c-2&;G~sQBhH<7^?K%o3xFDCM6=FNfYV4haP%IdJCZ=kc1W>zzye) zbI<N~29zt+!vb%6*s=SsD4IAsJA} znxVNZtI&nq(wZu>ZaT3_H(XbZ6sQ-Gy4MKfAYQcAS&&RW6c>sqX<}j8qt7mknOl%D z1`#DPImEFc7)F=l(zVK$&`;J##cxP)XmC#C8Q z8=M`DjroMvjo2H@YLs+Oi+1WwN>d=JdsI8==u80FW+iphJ#V zNlY#x2gc33Vl2C0y+*n5m_FD<;0}LYcp(($cxW#fY(Q&RQps=HNC{b3(H=^A@D`YW zFa6-+Af0GhV&GE63Y>Up2|MER`mF1Ab5;wgV`qiw9RGfU)-ACsGr#t3FaA38s@LWq z8?%)V?KE!$0A?a?7bVBFqpqu7RJIf4;4r0D^E5?ZV|aa2u02=!bKUKjP_(g#%o%wn zguQN_W-p=#=C#1u(r~)b!0fwk=KGEbw36&;v+1j11PXw8^r$_1^HT8x?C~5nbgCwk zQ#FgYMp(Ko5?^m823g~Va{*NIZBmiw!(Q7_7>VO=PYA?UW-s~3?%qeA;m3=d^*O$+ zy}mXhim@k`iA1g_mH~bpi@(_u>YckE?5+cI5WZR=^1_5wx4N}6O6@*cSWoEpGF@s1 z5G0>tLW@?W+M)Z!&)dZxDgssxF@r%{7neOlQ=!(q(r>igtlj@&|9`i8`}}qp>&K@C z?iaCK?+8W!10pn{!aW%4M2TYex^zviQnst+?Gt)A**0vTHEd>PT<>>z&hpFw8%Vdo zh($*%u006t2Jwc3VucR9q(gJHq!T}(!^LicsZdS`LsmwI*gwE0{S&!S{6MOq{$qcWT}1vzKeAP`7v=oTDOr zh{v;2zg%RIQTzp{28)xj`zRex*>#aDgvAla;|03dIM2X~(AJ^~B}V_wMG=<(D^<*j zQ2Hpv`F0IlQyRmr{*>>Uw#nyYum<0e{_Kr`H}P7+{jX#Zv*Pdkkksf078|i!37C1$ zAvMrjT%o1ae-Id;UoJV`wEA6Fw|cMvSTbcd1N5i-h3A>A+gm>Q)VZ{ORnJuQkK$_Q z^;64szruU+Z4S5!;ItPePivS``&E2abbsRSBtU%YtN4DGdTo#lZG(j` zLJvx^B`stp6$P?Jg6pl#x}K+e5yNP&w&I^vxUsV6pF~>pO)>F(v z7+vApw#WN~R zZV%qJ(BnE~R!~|@X9z2UivTcHjUV&8c(cgEkp6k62KA2*sc^C4d~56<8L2EVQ3Oh; z^=c*9hY;p0KT9#Ocdi?x87Am494HnHnLK&<7W{;l$ZDI|c_eV{dU&H0*jW+g~3C*fa948yl-Nj40I}!`J(k z*KaWSn!L$RRBYQOgoCKOtxz0b4AYDfj36EXm_(uL_C|H-#v-J1I^V0#@lRpfd8xdI z`rzI-lhRZi6>Pd5=Y|acoChbtwn_p}E|Gjy9ZZK9_uN7Vtvskj|M+qCS5?CyEdzjC z=u$?N{nDi(upwm)ep(0xV+-=~M%axggQF=E&L7yz&}_3i%hSC@7l=m# zpE+Ou_w6P=x;QgmOD|h2m8SmD_WnolBA$*?LUHIqrIEX}55&;CobxBdyZbNC%=27; z$ccmNY9JkHNGSvu5W6^%AX~wP`^}UXZfdS^GN5Dn@=E7*zz3*j}+54+m zl-Rs9Qp*TnaojE@TTJB&B5wpDU9u>RC%;%Ga+lN@NoAx1b@SYS9ZpU;u+V_v{F_YM z77RMXFQ9tjk}3@ghsizI51(r)yzrk(Pj$@8*XXmEp#z38R5L@44AF$jB%G_kth z+s17taZbLD!eq_QZsnLxJ{rkp7HE6$jn$4(P;*pc%9JNZ%cHwi!aY?3ye;zis83(c z^61WzIR0+t*A*DIS-SPFtW1R*Wd-{kB?Y@j&mX1O9~q_$esKCBU2iNXHt8<&)R#(8 zY<0^*R@l1`MHG60vre|_y0T5r-q*xzoMCuZimt}A^KCR9CS4V} z6A(EkuNq_fV$j+t4y>~(+yA<+GzPtM6M@WJ&^!~nQoG*tesKWbBf&TL4U{))lA08) z%QU=w+KchQ`05%MjM7_seu)uHk-o|Cqsb5xhUD*3f!HESeArLg}4^;UC5DmW%T=U$iy^ zL;1U1*KcGbj|8OvIu=cEH%=|nh@i6Twi{pMMhDA2BoJ8=MdLLrDA}W|qdf9Kk${*0 zP)dtqb6R&ud!rHS`eK1rEhH0?y@0r<>ECQprm!W7%l-vQ@p4dT+So0KanRg38i^wu zVjsDA{4$BNG`eNGOw>(T;XJtcvOLC$wdh{w+oltW;vZ_ z2|hRRYWZN6^tKB{PIdX?>8)PB-d9ziHGShpCv929D7Z9ZSs%ywOEVg}na+%O1QNRDQ#9JaKe-1fNKR#kfPk@H1Tysk|S$bTv~3gE6E z2B zP@c`E*`mq3GfQE3j?=E!m;UdTJ3nGnM57i*3VJtRsq#p2>1ysn_29OX6DM@)x4p-g zMTRB=&3e`ZgbDMeFG9QNIKTvU69DbQE;38{=MyQ;W9x(psDzRsww1k%eXl;~AtC1jPF~%Se9eiGB2FZ`jb+Zmjk{qz$61mbGRCn{ zt|L82O=9Y2n0}RomGe--&VT2m7l3IyN#pOQrbNgbeLw7$;2I7uD6~kqgEqgw!6`XJ z9z5UxY7ph6ix2vSJwG}=Z+tKEPE0sHoYUhTt*&e&Gkn0=)g7Hmc;T{+B#f1-Nln`+ zOETNmn&_T*VE7ID4f=I`(5TM6>-jcevwZez&M0KDa1WK`Pvr{X8+=?fLefnEi4xX< zQUwV;0iv+up9}%rKdaYC$FBkJge+t<4r6 zyI1g+kJ5OC^0dkP<6(*^ z0eDzDR6T-#*Wb|2B*}Gw-L?U~O}a89eiph&es*YcqT9qiqnls5=uxw305ukDw3JD6 zw-yosq0@%`Sj|T59&gn)bVa-xqvuWOk!y<&&$Q$Oe2MG5$*5^0TfLES4W7uF0DV=y z7O1^sUa5WCtBu8XW=`??Km$igwEf1$hRfd>5B7z=c3!gs=a9I6(-sjsgL6u6MiwP#H% z4Kf6Qxz3Lt>%i2`zs(>oRvx@HC>=J7ergSGqOs_&YZScD?llz5E!Pf14hIh;#IF%l zVHb}Ahix0BWtPW3;ggvDnT&jTFsq$>KUv6sbqKK%Pm79WIUUKq*?ucqMgjfdepK;w z?rYwk^2#F8Mr)eY-^k7YcH5dx4s5}2{ORXaXX3%p1|p~>!A?ql>U27Fo@U?#a5i9wU55*r;r4sj_m%jPdd+Eo-BjeJ$Fxi)e5RpGs!vhQr zT}?P8^@%{-)SD*yXD}XgIo&Uo`LyI3{)36&eiFa-wM0cXrI4xO`T@bj_KrZK@NW9M zw1$0V-HSm|2V38)5jC1DR2I#M+vNe@bj|KdB;Z{x&qx1pMWQ*Ia!%*F`I0l)ZO z3~$YSR`yVw{0n)nP|h#}$1V{&0dhX(wS0>QtnljjGZ3whAy?QKkR#9 z`(PN``0deV?vUb9ye4WNIUIPT2){ke3GXt_1JxhvU-bOe=+yJ1@Bxwl@cy=fu1k-Y zd~0aM;b~CfF`I0U;n)k~%=W2|-TOA$t<#5;uI5?TpRz5i5eLId4Tv{ei`!!hZ6c)W z)|K`+HmK_S@jWXUW(H+dSVJ`ANr3yJf~_|PM-JN+av`Ft6(MDySJsb!S|qOZy^7V z`A;4{mYtSy)Aw0g_)95svZP6LW?d11H#{`bBE2q4HvR6NB3uRj5UcXm~CmE~LNzXy3P(1YHc&}vVQ@1@%^)>0tETrgVC z8+W6~5;!1QQ2%{Tu%CM^c}0`j(><6CDf=e`^2{KaMk~3cfsD^b|JLokL0q_3r(?L0)62yN1svN+Q_{eQ=bmfk5~+jO;UHdxp{th{0jxGjHCX;xjn<>`+THGOi~ zeT$bP94~n^NzW997ITynN!FY(X5t-1-7@rxHwq=J?H-QtKT8Riyh@Bz+#+GCaNV6V zM4Y86Q2bQP?Ko6^LX&D+Yit3r8Cben3uy>B(7%{ZR_+CKlD@HVVKa8xPd`{9U=yUS zOY<j4D1Af&(COYh)W@ZEBgIWz5$uV{3%D&IXUZWNP?S319k-c|TSYJgvM*O|2x|abZ zs&Ot@Dw`~q>}KHg8=M#$j! zPY@GXDZde78-yxh5KE@fR8flhDtOJRPFA=0X1(_lKtVwy{~rrh;XJlQH`uYcWSea(r|2GBO}>2 z0xs~hWJ?%Xn~yP&TFelm7Ov5c6sWj#v>Gz=8EeRoI5l++YX5zg@t4?gzlOKDu2fLE z-jBfh12%W}zrLBE8;Rj#5`#0Z>@u`i=ph;yp`txk%vep}RO~DhZ_3D*ry5&Dem{3Z z)l~(@-4gsD30^ag<%aRgCtp)u9a=THKWOqk@)0is}^VMM0an&sTE4E#sWqhT%Xd^bPoh{dD^+s)#|UqY`WN$=uls zr_IP3nZvGdlX7pPtC})sa`Xu4&pY!VgRrTV|6Qy8MNajL-q~fvN4btu_lx?kcktcu zQ7@W#BRIsa@~g!8SK>dPO$6gJt@vI?P+?4GO#^HL`u}MyV#Ntl+d&Q?Y!lC#XhfgU zr&|tRJ8CL)H&LdQawjbDx0D~|7%EI$<>&3GN(AaSUT||e`Yau{w#m}Y?d3~D5tE7&{Wlw8^GMc*u`%%uY8$7g(T^6xZ*gqfu%ak# zQ@(UV2cebF=_^Ol*l&LC^uoX>kIAAko#Z4z9IcZ7fJQY5z9nrqDM9|hj@5N{3{7jQ z3ZY~@^0Lrgp`C|O6uT|wTySQX@6m7w61|&gavGUUS`sMCW9M7GGP&8QS(gEYcF40a z`?@96EH-V}eN=k{%xbV-=D4_9TzDVQGVS`=3jw~uqo_!Df9*I$*nj3(+s(E`p<^piLs7im3%MLEExRK=Vs8Oed(PXo&+o-SW`U>PCT;B8h< zd$(pVOah!NWB4kyzn}l3^LKT8wM8v~&ZT;|YJ_RQ^TFRq$t$Ts?5CZk?=s>y{_h7d z|LFd)yYD`+++Cr4pUxOw!C&xc7jo2Xi79iRSt7+k2 zPH>{c!QY9D!yakQ!ZHD83-#`>UHmQgH$3W|ch5)`Aw)eqX_fI*vB(9NgYaTbjVrPC z=>6-v|KTF$CE^UDiqTeo56m0OK2qT@L54FqeLfUw`)6R6vbu8k;DdR>Ehk=+mQqJ& zs%UqK&T!~YVUj!l^<)mfe5Q3;7@r6j;5vgnCa);^x@|e8=!T<#haIZH=Z4dJJl&K` zn#$R;4Xu^9xVZJZ48aILS;AEiH&3G(12!PVrTkEVysDlWu_jiq3p=`|y{3L>K=$6W zG~_Ix$nSoed0&Uk4dv7u0#BgR54c{me=UBRBH|_H^kp8;8ezcT6DIXXXd(H;I$`x8 zG!;Bm%%iaWv{+Pw?)lCX?SXAWgTb}73x5|2kvs-IRYZS-ML^Wr`=zAQo69S0j+2AL zB*|+A)D}QPAAFn?aCnr2*O3X*{J-DAnqa9B9d7{HpSUowdLi-d)-T@3TP}aOw(X4VdMT2uGRXbuDhp1g;#GSrf1;2* z=S_^5(GtF0RX~N}L7VM%xQ<(FDX;eEfky}==CJ-w8_P~Wu;@Yb7@I8Ar_7f)E)fD0 z?XN<0^(?5|>@CbDn^|ngv57}%cf4U$!zBu6Gy15)(>qfgKNQ13`Mb@i)fvB! z8|Y<9ri-^}(enIq4??(0w=v|;(>5fPcH#tV8O>(@$h=*CyIf3Myow8U!HC?6EFSN4 z4Q2vA_p0$a-(jDdEOq~3hVl4d*?rP(1rF{_h;d)g;iY!|!Xhl+q^9>?7U?h~%jI@` zzzh@S^SS+{^xpLd=;;s={U#jkb7LS3lHJ5nvujUTI@iZN%H<7It*m0^_n=mA_lKZF zkwhUIC(W*>>_Z_=K#@`1`V53*0KxVJY>Y*-igVjQc+S3^d#?=KQs{msB3^7aPm+FG z@30ZSalg#DGu9SkU_x!dYcLEk8Fl0z`#&V1aPaxwljJ?FJ8&OgbT3LniM;pEi=8&> zTU{<`lNBZY=H0OFj&9n(G}Z4$&pyy*0lbn(CG?*dKRzkX`AWque0g)EyE59pkgG*h zR&z^izb0mk<+sSzZ{(}5*T!hq%Z4>`F*&GdtRv(-sWfc?=bkWlm;9jRz4NnbUY2?K zZ9NjR4apVxhFR8dL1gwsYd3!vy;bd~ zQ)Ri^Oa;SL7>Jpd^+b(y9D|fQBQr|O=RIMd1rxJ}x$iTm1#HL%?GdnD%B%$DH!V;nHy*h{xCR^kegn>5?hq9#GoYNUtTc*d%YLyP%Ko`T~H?;08c>*G6vt zq0-s#{h}uqF$tn=woN1pro2tJ=h7ymp>I60tC+#ZgPBblDB!K#47Xj7o;%kJ{h~dh z98*`^AGHD9?P0NG1NkIfSVjf*pEMMF|8%b+-u~`vs3COa2mfBBADxAsaT^_}*|FPJ zw<6^KbfOjKZy)@?a0RXYG3B1f%>3Wb_jnxLTox5R+r25&79Kt9tyW6F0!F2Sb!l~I z`6No!LSLy*^R>}_WkE(GsharsQ&gVQnaf^-$FvSuYPF6p(s{hbaQ@c|;2r8=>9sCX zMxV*X6?~nX`3`|IxusItT}!@JdSrom!oZgpiNnDbRW6?=f6ATs z=u{O38w}pbEvei7;H;c>P}d)u_Snd8p{!D+vT+C0?!Zk+w51d^ z2T~J&VI}lmS{^JLGwRhDr{6ry^6B2z(`0%*MAB0icOP1KEkWW>kDROtO!{lJqZJQM z%6m9#)iSz#fIp3Ugvi6d^(2$yi);2?X8)3ZH+GA`ipWv(3IE5e5#aP=P`WI~l{jsx z0Kcv&Cmgg_N+gM}0D6hvaLGWnbX(D($-kAfhEDj@Jaz%hcX#9IUxxL|ouMF2fXHhwdO#EPc$}rwfr{jUBu+FeqHt# zt>!5!i^rDre>XW)uy$0tT?4}1Jxcp?v({2n-tcvm!4*KIQ21)XfVzRY)(j>5xozhY zW3pJ9T(9{u+~jd9F<*; zDe>xO&-OobM+c6L^pDZju)R3U2|a=R8yydhIp_3M32!jE(#y-!zi-@T8qa(4V0Jck zf)h1Bu{dqX;^kxs9$)K(Ch}n<6w%Gnw|icG48S1^Y$+>+&rg(FOgm{q2>)E`1mU1D zyUP5ce}4~W1s8`A!kdKZI;lNB!|-D}%G60!&)qsxIxfN{L{xavhB20ti@Qv>y0Qus z2n~VZ$z{mvw=IK5QE0JKRHGPQz18jGU3NVjyANahnk_sIJ5pu5*cEvw!lrKao@OHa*f+mT!OoZdVBqH)(6$Abe@y1sI5J0s!*fPkQ0kW-SE;fD_#eH0SHXD;bF zfbK9YX?9TlrO!*|tu(~M)9}=6>-B~C_N#&jn8}~*OZ8fN2(RYl2h#!tRi8-bH2p~z z#eJ8-r|f@#e#)G%WxlJbxy08CtGK7!+{}9PtH6_tvnoIP7E=Gqr7*+={mnM&mN%(F z$TEdJ&%qjl%1iafiFy|?%DaD(F)DvdVv3^)CBxbhEC`TQxUM#?>L-2gfQCZ;v-A`a zQKn`>8kuF4Db>x&+!1NH5gi%9{zs2tbtuzd*Zp+bYo~W_%Mj#eTSvegSt)hP|5UB6 zd*OI%{HQ}d49&c``rc-SM)0$({rO8{0G8QoK9n*x&84IrVre@f|50qSMgJJ_-r3dO)-?{ zT~X5$d@^wK*n5h#9wN7HblXn*LCZVM=gUvRv=9gjRCr{shTn?_`Gt-_zqgF9J-@x` zYJ;(Y9+qx?o9O|ZOVq|grV*z1z0`;nGK&c#V4uW_j-c%>3(Mo^Sg@g1 z^HT_M)5%9MoYO5V0>PsWA;LQRy!xnX{-V!opvqEkDX%iPq_xddN(ttK5UGH^b)OPr zqOCm!Kw`_6@W~nq98r-Hdln(XRpu2Y_#}vS142up=P{^@+;~+LGa2JTY)caEUTN!U zf;+jLlau5(KJ?!*piq6aTei<-TiU#-K!H!Kw}$~BJX^vlt3w3i-IQv>V8+8Q72G@I z>vlhEwMGASMC!&E8vo3Od5qTXVcz%rLJhJ*UGI_ZxY@tayr^O(-w*mkadZId483B(=os0;f`%?>!2IRP zW5=#irKC|A&DL7h83y^IXoKv;9p3VxnZ&KOdjTTUMPg2+E3*{OMlCY@cXB+$o3=+l zvk^s6@|jJ}beZ?)ylAdSy0e4ZC$tSJT<{g5fUZY!|LX0ipHh$x&(z%~EAZjxsrqD{ z2bGC~5EPBmrD!*{0`_Y4V?1qvYK}xJ&ktKa?x?l;s$RBq7b_9LuJ5qLxcq z4wpw0JG;%DLkPd7hU{LPR*WWIwz{Lrc*mC4;l%_>+P?!33-ta}R!ZnJL$K}Tu%1+C z4CSJ}Mqe~Y93z%z+vyfCZRbo&G!#kUjO^FVzLsWJ9hFv(Ky7BidtZ?4;;AOeg5y82 zC8Y;d98E$hO-6K=bRYw#atTRfd|Nx%e62^|^F=!(HV;Ltr0185{WhDlm zGjx2qIGEv=c)>WTQ$LAdT~LDdyLaoLu4S;Q591Bs(Ll&=$4Pc(cu|qd0#jU5xRjo~6RBieod;298O|Gkb>+hw8X=EpT(UV?b>*+BHP(wpNJ=O5VAD%A;WRBbq` zyaccpPTmbAG!?PLf_R0+&YETvf8mzDsSD?vIwtR+4p~k(c&YZ%JIhO8r(5KZuMKiK z3bu}FA1B76M%Pa*!jN(F5p@t?^4`4#BC zvqYy{h!hx_7a@5xRleTMTLCJ9#}`%EuxZvn?!==Wi`4prIc&9%!1U1NzGQMdCfROm zk$sR~osG*p1#4;NneqQE`9H?|hsNwqcd*QT`TBcbEV^>~L!Hh`-S_=z0C7N!PRCDK zC^ZZG30t3#%^m(0Vm)7rnhbsOaMjUD*>lm9$2IM&9lDl`zdH9|n#m%U7RB*|z&p2a z*;vFg$V2E`o=B%uhA z%QLquPCFuF@^~;%TnHgv^c{*??km;K?C}=&GTCLP9BI5isMn zTf5w6#TbF4)QHs!Cvnhd*eS_!r3|8gZ(I=Ws?d+t9hx^K_gTcoZ0hm=oGtN|@a~jD zH=z=dz6}ekSlY7Kl?B?p@&GHpqWy2Mqj*HeT;x8Dt89D^)zYq{-fryJS>>F)r{oj& z4;N6H@*8=j!61b-wYLod>C7fWsyBJ=;&A-@ynB~rmyNMu zt#p)2p#=-?-|Jzvi}vrUBR(<*A&w1nWrCrHn13D$soZj=RjrzFN|TF|k!^z2^N%eo zG)b4dlJr5n`^312;I8xAEhKdO>R!6xX23X7mL9=Cv)DgRtW3^BlNQ1@Sgy(Fd+$$}jro{dx}mx~qz>i=_!<(wAsGb(1X`+BP`cY3 z(7iIP74N*Q9Dk8IobvIm*2Yh|AwFsIXJ)Ivs@lHiruduf2AS-XV}$azz;~6{O~A+ zApDnw{>@2gVASE=$ekX!ead!#{Z)eMGF$x%U}DH_akbmtA8i&2^WP+CXSrx)HYSC< zXyoi%UeE-HqJ&bN#kn7n=oI?bLRabb23W|et??ROO9?G705kd33VsY4qQ|NARrpVv z`{~a(kMwO;Tldv}@wfvtF821Fezf$kwM91a@=}HM?Xj(Tc0aCl>r;{mTN3;%2J2G~JfVw$&mPbNXCO{9y>fmn@_L*bB=L z((kih+M+v4jQ`-kma`qnwDg4`=t8G>_yw9xMrnn~;&$3{U!G6B|PsVIS34i5;@qaWFxNjE}XvkH|*Opwb)YWAIsgpeqUpJQy)gAZg zFO_ZUyN+r#ESsZ8@Ffv_rd&L}?{_19Bjco`dIyilg8eU@zaQ-8$_v*CI)N05+#-H# z+$_>7d2K_U@q1;4xC~DgLGh<5pOM7W_Mf@t`BK8ajw1WxR?qmudHy$ekM~@c&X7m6 z-)uIuF|pM}Hkw8~O32atJ88bM`v!57ZCdn`M&b{R+93QEWXSV14RIxGSM5Gy734C6 z&UKp5>%hJ(wLz;S%gdsCHCYCO`s3iRm=UA-o0CR`6C;f=FiO1a6+9PjCXcvfS!~~- za!0T!^cvrR-OsnMbPdgjj2=@0ySF)9qARWI%e3j3=NsiwtGQUFH(gCj8Jt?iDe_`h zd=~Hb10*nkrP#1E5GG~5J%ls8sBG8B>yV?;d|lCtLs9dA3H-D2!gqVJ4#u(9Y?vWoMR3dKt}>QeWia;*>f`|o_lY#S*C0z-dTKKS*~EmCueFd z)>6;WpMa8yt=Qs7&%d`SdflBf6da*?$`D=OdtjO!)HNj1YpqjVr|X5c+xn=AbusPR zV1GFe3!SX?{~>FT(o2xJ=-A$A-Fj=f@=IOB$_m9WLk2g7iB=O+(djHY7&=IVJg=ti zetM(CuEMR4Z|<%RU}kaZ0jWt+<(9VO<;q|P=!sxOTxX6VR5@%HH5x|v$N_X?o~y-u zn3#+oLY4I9B!;yrOF1o9by5r+C!t(YYD1qrhwIyH!_oPS%T@P_|EX0n|Cu)DUncF% zXC-(kqe<#rNpa7zSmGm-p#$;&eRvMbT-LRMA~_oGb&D6GvXh8gstZ&q>43Z}xB&cu z(A5SebxT5EXF*a}Ii8lBZf$*>r7wga z%$qJG8hdV58EjclZR$qxrctb0xLF7=ATO|w6+i8F`w&Q*Zp_#z1h&>yO=`O>VnFp1 zjbM_{xw;aIy<0fIJX6tQN^&|nlcb(1@4w?j#mZuS0|WmU(+DDt|LCA&lwWwrU=LzjE$h<+}he8sa? zD)!R)T@O>cjs-~ubEarEWn@tOQ(Lx!rv9HPg;re?Tp|^C;3X5R6>Hx?(s`{z{%MvN=qFqCaO|Q~ej8IIRgqVpr)zLlpb9s1Uu;oS??z?}fToFgzX2sNc zQtj5v&B`J`;ZLrBO-A1_raixWx$8Zj0Ai(dd zcV@TKD>Y{L{cOA)3Zb}-rsM=GANu^=pjhE}C~&XSHB29DUJ^;#`QFZ@Ey6bDof@Wk z;$tgn1ptO11&k0f@O!EH_%dEUZFqd7Dyb9ZIf_%1fc%6pC+xV3W^)gfCk}6Q+;!CY zad@NJ=R9cXWPk4LWUl4>&zM<@rQz`;_Pj(;lG@Ei4^vLD)F+K;>023NJ^!H`e~i2? z0u$FxFKqLdnS#n?wsdl7O82Yn^vm{Zvl*-ocN!jcX)lBKPcCFT8x*|hVj!P0H&0Wu z&AiRu@|bR1uL}e@w_?G4>Z;m@_)05%vWQ(SE51AE-DC*bDQbW883ot>FGvL&iF(xwipuReC7~~6~f>1LG2xTM>nC}cROE;HuXI`_S znz)J&7|SZh#+x>$u}|Wq7~aVALS9EJZyrCaUE1U_k$Zj{>!No*d~QGC`VfM94dRIS zB#IE-7x^tpob?*+ZP9Mn|KpEc+1j4d_jQZ(M-pCC7e~zFtuixny4_3$>60oZ+^S9)VXcVL|ETBALm4Ne&X7arq;y>b96u-PvxSQIcQKe&_ zO!jhNLBZ&;-=Is4;K9j)NuK(gkY=#Dwkn1ZRh`(&UDoVMV%T<5=Ny=Pk!rnMvcJX| zbsDEid)xa)b?Am%KZ_zGW$7LWAuUn1;8;pK?4vNVap(t4Sog)~J2fdujhO%Et|+Sa zk5CoYgv#3I^I(r~x3)HCGWSW( zMX%o6QP_JTz4xiuUA-yB z%U~^K=0J356*}_g>Y~SY1d4Xt8hU z(iKMv(f=v*o?t3R(2mqjJ8I!#!c^!^3@xlGe0YUo9-BGHuv=!ylSfszD0$H4?|he9 zB}w!>7`JEmh`rKK2}jy6rwE!Kz#1Hvd~E2JYJx zJxfi&E4=rpsdQ{nZ;XuiFfPp21eti(gadheSjmyhb(5t&!FF_RaY}Mk`hN_Ck|1OeVjAAZG?+&!AzrXr! zmQ2F#rO!F z?YAPyRs0RnT8UuPuDw@y&GQ;*UVk5&=y3F?Du?R1KH`ey_IfCo zCkPi-F7h$it*2nIzjxj?F&N;#9De_Fp|2`^7*B(549c$1xS2-gXdfPjR#~Kw5#{qX zZVd>Q&0$R;`I*Yzix z*tP1Kavj%46sy^dPv1+ia71afTpl2lMZt_^?9%kk}ZD=y+t`Dvn$?U+dn8O*2YOwpVTNr^&+TC-E~Mk;>Cm66#+ok8lHOO-~1 zD^IyxDZgG;6F`e#2h&t}J)XZ*C;;D8^lpjj7MZ7E#ibUTOp7cIsd;60?4&>5z2ePh zO`%!0v@4zxu*7a~;TT=jHWIqC&_vm)>o}8d(Bg2C)yDb*SmY!00;O19* zsN)+?c%GEa^$^e1Q6j%v0?v*K7s37rQRnkVK~f2(6@b; zdZnO`JnQX0Tsxw0s)YR&o;P}Z*3T`y0croeCEQ#j}>lIste7hmx})SP1;wl2ZMik^5I9h8{2A5m~B(Qf)?GF~(M*+GdgzE={nR3ItkM#ovvemrMP#iWZF%WMu2nMUL z-k1vVWZR{@VFO|qstBg@vb zLt~0}qa%l6c_j4gsIQwU+a2H)ekb??uC2aTbDP4o)?yINA`Yss2LiG9)-g8nCjGjp z(`dVSFpr@;TyQT9R7hj5In@H<2_^>08;>otJ?;8a$Kem*k}dg?=&@dfV(QJ{{>Nu3 zncsJEu@%V#1u-j{bVTxQNPCl7Jbm7`hXK8u&MH0iIcPXc*O(H0X!YS3mLd*yuiy`0 z7J%O#?*C!xEc}|_8n-VXAg!W=l!!2p4(U)35GfTE$&n7Fd%)-tX#o)#LvkY0-902n zBOx(jj2tjvjC#j?KhN`fKj#mC&vtg=I@k5RB%a5+qQgn?iwrvjwrfgoAnkT7 zBX(Ppf*`gxp1(E23J!RM?&a2GQhKR3L?$r_kJ-vR$H5~RAPZzw&MdweLtcL)K-71w z{gFsh<~SboKf4iw87b~M=-d}JYz=YOu0QUV>0Wm)C}^iq0)HQI)s6Ps2V9}l^}Lpo z#_aw)FKu#N3|Vx0FFbxe*y76JlJmq(7goO&KW=oljDOdzfy#lw!Bmj6aY`oZ{2D@Q z=l^yjV%XZ0^ek-0tqwOv#60nlL>oB)Tid;qO22}Z@sH&mr=A$N_Yx&X_v{HOAbfMd zL{YL>R(-^gTFBxz_lVgyr$f@%6NJab64)07yGwB?EtgP|&EoP~d<=Z~L`s4w4~ z%G0%BzT0q!D|TJ%=1g&Cu4UGdKBEoM!(S$y85?oe&5{_+QQe#;U$avYey}_?8j=GW zhYw_&(`ET0a2+|(+OfXcQ`k`>2v6)I5^LP{EGaZp0t>VaZC({uk}cBY@PHHcY}LSb zDSdC*K!lP&Seb7?^kW{-9>_&M(7vUP0VzqEaN9>=YU9;T%h^oJIBv4#{NTVw)LK+6 z0LF{>CSivOtjvoFjVa4pDzn0=TwY82?qBCXQbODx?!E!>IzH=eTw1Q7H{T0ev5n)) zaKc%AofDgHx?6GB&&)9a#}$IYr0Tzs{NZRFiId;^vFNI@TkDH-o`A>n;KINb6BT%(Ah@mGTC82!}yK00fl$m zNR5!eg{|;r-l#EO6cdVx=Aqf`wVoZt`iz)yEF`lmNti`$Up7T77CHOddtQF8N_#F7QypjUIiNoIXyUN;bP+xA zb4UH=-=ktkZ$q+=&13d)GRJl&mMbe30k}jGO(4*HAhodVNR5l|{C0;rvze44S`L{u z-!j{qKZwboX%ZC`H47WptWK<`{Pz_5ryY({)G!=c?GErB(b5537;lhcF8cE56ch1pdl#MzREMn6jQq@BC}M!7tgj@0}RWfd!;H zaQf*oR-!SnD93c-EGce&`S{ht%7tuZW(dY*y8fn9U%NfGL{No7V|72z z4ZV{Q3Qs=agPPNbKv}}%AMrOa=_lJw&b3F)euXbm2~!6ftmr;?y@GnBw=m9dDh92nM&^g^*DOEWRg)FRZCbe-0&pR zJNZD?be!z0Wb1+~Q3&0=IxqVozJ4?{Q6J10sj!Nq@JWy^)gMf(5)^%8vzgE&&E+|k zcp%sLdxvuRbOAQnbU|#7d};d+CA>quYoQN2m;e(Gr{_s92sEkwk{YoR=U@TrC1Z6L zFd$l`E>93mpC1*LWEV=*T>pv`EfI(kAytk*uoIy|&7S+S($(zAk z@J4IB&#EUJ2e>(uJGOg!pPl)(-eK0=FrlzO-iol4p9zlWp2y*T7FHng3NetlVzjne z!~gNjTHAz(K2xQyel0a;K?#qT`h_Kp!T?(*^DPZ?-m6J=2&QNtn_~p={u03uZHl-J z;D!`$N)Zn!jMroCGR>{4rZcVzO|yb>jlQ}QMO1c*+q**3;YnP|YLW*wSzPttM}4a> zwP>2ZLs4AkH_Os#%Xtp?o2ip=70Zha!jmIb&_VR~WjGxP*wjSY$3VqXi{VUQFo(l= zhMS%FxDo;y93j!$yd#5%HZbz|Ojp+c-9Xpc<}|&O-im=k4EcuCk6mF7?FV$eHbS~h zkBs;3@icZ~m|qKZ9**vf6cSExoAAF7Q>xyd1_}=xb=ClU!wQ zP}$MtW1P$QYePD&vo+0)R6ge0YCF-uQ`7@PjX=>{*m(wm%nyVuO^SjVz|?IHfnuVOlKrri8bmFDK;{0|xD86KR!RK+RXUR#Rk~ieBY9Q$BB`fCt ziwe-cq!RL~pe(rJTOpHwRS0KXYB$TM)7M(^Ub5pe-Z#D9)|TrPNR3kX3W#-}TFAOE z$t~c|NAd8!RbwMh$-$|&l33&GCQ=FyL9X^?Py>3%pcYkg(rZ6s+`Bf;0KugSl|@NN zt`f>(Gh!P10m?RtXl|2XzEkz+ILD!Pe?{Llq!0K7AY5sn9AF~7IP@_SM>Z9IihF3c z!Ur2j@<`{oZtBX$xuxFy)$Ju8+{f%9QGdHhHt6Ki+;$0mc*yR3>gpNF{B13pC+-bu z<0C(QspO>2R`cb>ALp3Q`UQ1@Xd{?CgA~LPZtcF}%nTT?e z4H*pSyx$%r;-)%rASS)wGu-(*z0ii`$YFsj=9&U@PYBR%Z2qN+e7>mfPja>OBuc~# z(-Yk|BNbt*^5BOq?M)o|wxOx`W#IBxV$IXD=;dt2xJOnZy%1r7VbFD3S?}1;)M&lK<^^(5mO-VX*$+dnTbiAM zn+29X_~Y+c;~35LSA}Caw~4yipQfwXWcaiW$LaEsy~n**RcalZOY82OE>OUQM+bLv zyCVbtEUrYyqVgXx_?`3Xi>jPq^fOC9zs#V7gOrGavJ#!k3c<;Pa?t08rCugvCVaBl_fPcjL+^yf5$Vav^SVM)n!)b{9Nf^We`w56^34(uO%@T ziU{SpVe%t9zfveH99}y@8pA(-yzTw-MmTp@`}lh~gd9%j?e0g|i3sZpD9ZCgY;afh zgw-46SuEE)%G03(wXfjg+S_kgO$@bQ|JLX35(5__r0<=z0Y0ZiCVz|Sf8-3y?ruvAFcXV*J2>G-)T zTl356gW;$o&U#GrGH;V`x~sA#U8JUsSpZ-f#SBTTWXVo^+CW>h$%z5Ka2SeiYg}+%Y9%zq)x{aCnwzfw*4t6RQNAxe?eHocB4IhqNe3F zT@zC}Q#NfwtLkX`L%_Z_m0NGIrDduJ66UE~-QCnGKA%KU_J|g*M!Bd|zt^l4Ebkp+W($vJ(aPRV z-`(dcklV3E1utrf6g;cnQ>BYi-rI~r+n$PaApZ>TIT`D*$~sO-izw+$g_)dsNlNEs z`pz`#8M`E<`l=~_M@U*YcyM%@qQm-n+Hwz9elj4;mnelb%niGSw58{z7jX<`op?dB z>1~8QxKq>Su3|V=SvM0gn*ZfXWj_GlwQ00*lP|iFJx3x z+iI9J0()Z`@}B6wC!;>aTTJyLXP_X%uR3g{&yW35eT(`E8e2?;~!fHmk&ku~7KgbJx*0NkgnRT0hYPWme z?R)x5(^(SEHZOhO232wN`wf?-(};0`X52{6Lsv`d=(6q07lKpSl%ytF@Ve{gqw$h} z11zx@r6R6u2=r%nuPvI~LqRAp$bWj;=_`-!2|RX#&51}Aeu8W>nA74@ao}ZVS2m91 z%#LT$Fg+`Vtp2GSToy#SXi^?$2RXTQb=UL>%n=h@ex6C2orSv=?6M?-!`kMwfB4bH ztkw_NR&5Uo4E&+ePxu_cN@<&p^3%e(&C*45pus0_xwO+txRN87n8H(loGx*3ogW2W z)Z7v38Ts2>48OMdr#S~EH2TJaUW!Ab*oW`Q;i6Kr*YLwDPB2~!+uo?MV`z653rd^h z=s*J3j8@ty&^Z4`mEI>x3%=o@j2?(ki8W5Uy(rrH%Ntm!`2Fh{Oig+vE3ILTkVTE7 z?X26JC@mnC4oeMEBLK$!@=T!YBFP_H)!p8QbA;W@^C?0{o$ zea-}VU_a)YB_sn_d%fZbo0R znlg8uj7UYpY8^a6X#hT1Np7dPRrnqTVf&xU`@(mQjUWtWf?m70%|$)s0oKDP#}j%qd|Mj`0S-Tu`U# zq&a^t@rN?9M5WWZ^4En4H1we&S4FfX(Dt@Z0^8T60SRJ2lEV4R+1=CJ{S@H}Cv$zf zs~~6yk6Kn?j4QX3!KN)EvCcOdjT!? zkoc<<4xLk41n9AB9}g=X+zm(Hu@>RjF+yK;DHbXpJXFL9l{$rVC(y3>*jtF2XAm4W zI+z0<=nba^WBUxN&oh;dvfYoVCfzDfTEHa3>&D;Og9Tu?#^;3AnpPT2{Kd?JAO7Omr!e3&F@axlD3e@KkDvC=c zCRPcHn)HyMqp~LKyTSq6C)#&>6V;zHt$_R`O#bwyG6TQTh-#HwJJV0Oa{Q-pjbZSs zq!*rG4l5P6Y21xca-i8z&Q(cn>RvY`)N`0ae6hw8j z<@&*u@LYoNQ>8`0a;msdz3JsbYG0;6+HWL?pu*z%pNH`q)W5@pM)<%Ow)boB!69(2 z|LK}Hk|iPvXJiwf86#tP`dNPlSOi_ZSc7rVP0qWVxeyJOlU$&a1xgj!MxuZC7a;pg zjI9m|MlGR5Nrzq*pZ-S&F4e#JUB7xBxIHF(^m$a!!^od6r3Ba*WWw;veN6=^C_l&1 zjI;8vX?EG|NP^mbkhSMUl4)2=LEfW{*17<9nuDmnlkaWbh*#Eqs|=d~-94WqbA*x_ zPuN3C_izf|)&-}lo7wf`j;_aVFbXWW-!ShoQ&m~{XBE3tqD$p?OV15J?$tFlA3~qD zw%c5#X{@68E@V30rJeo-TZ>`udsgur_24b8|L1Q~!RQ{NuJKUh^Q3xwkTW-i5f9C^ z(XqVm;`ZoUR~~s9d2SaEPdYh&!V$5wyzveY+WMqh!_4dwt^=92%fuxC#y2>UYlbR^ zIt-YanEX9=P1Z@K{@BxSb~qE!yvZpOz3)sfgu9Xcoom$*oVb^fUHKPz)pa^aTwG3( z2fPXAVOjCzrJ0Ao+q=Jjp{dIHMy`k%2VZ(;32OFQMymR7HS;?aW_?I{!K2`Q>iPAv(bL01{{q=TzZ>*@3 z@a!ycp41Y5wD_pSOB*5J+i6f*thkx=sSb(C`og1i>Wh(uu$@XWq~67oCgwnjx2r;ipN+&l^Pj)4v!9MF>17)i zYC2_{j0mb;Q#&3eA-3$si(Z`##5gUf5OP$0s+$wf#q=%s=oZ<3;x@!2W8sTVut1k! z#&4eo8)N@HgGSy9R&>UQ_=cbVB;>8J6W&o{*UHx_-Zx7$`({s?Wv8aVLEcQi{B+9u)Cbq)no=zt3$6FlRSpu$`YsGD^_Mw+j^}FNFt?0P! zcyhq@R>aYiQyNqKFp?g&!s0-KYOVFQ|2}@{@&~K+cH}6k5_M~K*_&eb3vXn_^g~qH zwuLNE3r3}HU0jVC`2`(zyCOwnOLVZucLUb#&Kw|)0j%$=`)_-x4!*Brv1c`B@f5zN z?|Z7%K?Q(4-;u3+T8XWEN*BNW=S9G&rRH&-WhLuJ));^Dt;%58&=7KfTE>aLu;Oqk zUoj`mYYH~__59Mp#+9SvK%1PiqF_;s%}v&xl5){b7C$16#8gT%&c)PoI)fL zvD!`w4C@+&zs1VKd1euL80M7)$wqaqqAc6New@)Nyu2^yMe24|5{sL^>)IO1z za+4Swsd8rZ@%M6GdIoxB{>&di&Y@o8GBt)$QT*BBXn-rg5n-TN3c@@hqEf^ror=>) z>NQvUM;=yJ>E}Myw|1)`l+wg;0YsM<(LY|GPe&|NI(aZ9)3`|2QF1n2lG;#`DPDqj zmwDc;lBSDZXWzX+ZwL25cBdcXru$WVN2Ymb2)Xruu#Ta8n5DlSvjn?Il3!N6!gI>z-SN5M5*@Hk zLvEfD&TB?*D=GD`%`vOX>#n8KJo_0G&n)Ve80 zd0nJ(k-FUzVnaQ1$xvbXMvS8gT9dp_#Aw#AaE~#Q(cfHmr7YAx_?!6~yW}nzaVMhb zeY&t7gMx?DVWR#<`^)9)tWN^2VTgi)SG;CuZhJ>vb;%54yvuB(*s#8SC zPQ|#CRGnGLq_gyVN449F`7Ce`&4*;-9!Lg@Sx%BVeYO`Bp<>tBKXyi^nMqas|b| zMI3d_1orKY@vYW(-2iNgNhEf3V=gfQab>C}tj!neCFeiyv@9wNpC}O9vHvw|P*3k8 zD)_eI6l36P!YluIw%Uxoy2gTpF|Cy;=4do2E3++X0LWE#7qsCum=fEK`@TcI3h)3W z!7UO~lEve7O_yP-P206_blN)24Zjff{vXKPm#KvDR5ZxLbtE*hWX+zC%m_4KdP#zD zR5l)Ywy|MM5+_w0p1cS@C&J7AYY&!&|3fZ0+(01G z#CVHBhDd`a-t3zD8g|YD9%dWi95u|k6^P*(2h+c|@m_%qYMvx5VJtxNqwcB?X_ zeC@Qy_{*;TU#1+|4yH_6<@Hh)q6ot^{=;N%9K=m~&pUH;YgQSS5O><)2f-(LyX01V z-@@=feiU}_lPtyFV6YKVuSPH!u?EJ7n_uZH)r6rlyv>!2NReQ2X^A38kGWiCThD)4 z031eGHhT=&sEuJAm;Tv$vPesZD(P}N>k=mQ+nd#x3*pwDw`hg;z<1r>&Y!=za3MIR zHIB}E#5Y^cq8&6ae9BE0JP$a;Ix_;#kM|qE7?R3Zf&Fg*Sv+f`ice(nbW@%l=g@&A z%^$7Qu)H9%d!}7iz`zh&+j-2I+RzYqV@@sDM@fAQd;^FL8?lpm?(MSTz8ERAW(lwS z&Hw0d^)|>{poG@wLDF8E%5%tmM!=BaDsIsPQE~-K6z5O<9w#uT6<;~VMyi;`Houc2gI~jn$0cilHDxMCB=guh5x=`w8pEE8g+cv^>!UTu=d9hzG@=Lxi~p) zpCRE~a3l#BmR>Ad?sfS2RxJCu%Rp@EPbjEFlX zF9bTzctU+nkQ-!fUh4^h{lF}h-u&{cKZ?ovC1ik|u1063cQ4rmCdKR77y_s6f+G#kk@ z)7nepiHnpIQxH?&+?qn$#(kE|$K&~6YOrN#)FLHaWp2Stds1|pdVn59Eq%KvskXKs ztB247$J&gEzI#b+N4-R%Q1lB=-uWmp4GfWHU|b@<0e^RR>`7kxhSR3}V5r^Tcv98o zleFP3^*ph9W~f*8eUWG;ZBTWjMznirM9&0RiWA3p{N%8GFGIo-dqLEIWG)qx&}Q$< z)%Wm>H~T#zOVN+{BK$mlD^UQ!i7n@&;pBO!k2UFZwUi2#){2XGhR?cbK*aH2#?t%V z-=@Zh2C?HL_jEoby+Hq+hIzK;gDvOr5-O`T@64a#cL%RKn07wZ0vx|cBlbf0PXF$? zFKMJT-JK*>&Q(z{ z10lQEZ04pP&CmCEqjvKKf_}`%|K=5yO9Ix{{%0NqBtF7PH}TM}N%|_tI~m_-T<8eR zl)~UFS}TSE!5&12MGLIXymBOUVyPIo)F7C7o~y0Ypro?Nsu+ElIHg)R(QgPmy}9#o zZ>e^r?|~v*m-t6NB5i}_v9u~u3)Ph$rtW3C<>&|BD2YfO{{25YJ7o%Sp*s4$zD+ms zr+&M9ftBvA(O26SV%n-dy!Ff4z{KN;{_klJ@T=ex(`N4}3cw=vWyezN_iQnFX%8^Wf;8uSQiRlaKc} z?mscjklfzrD|oXjz{oJtf@f5=(TncGm`!#+t&q!uq{~Z3Iw+@2f|Hv&*n}i@`OG;s zW~nD_t*}4#Yge^>Rb8gJl+(dkWl7$(1js`@WBt^-TP(F>DZbuSkN?`QCjyQiQ1@Qr z2zQM+1piW|y682f>hItkJ9m)!U`<;&ogn=l0D_3WN?=^>y7ZTHT{fN`RvtC&_@5Cd zmZDE35hI5V4_JYaUON4{5=SrgTJQQVe6CGHyP)S5#IbNq;L*e%T7dIf$?NJj=A3o+ zm)p@{K5@lKxXvTmt@yo8b>-at-+reezO_SDAC^huML*BuAA}Mkpo&wm$bfx>v&f*& zo}8KV=)u|tc*eAiSL$TaEPXtkvg+2hqj9gK?3kC~pWn7E14B9;N(SQgZA!qXSp9^(SYHc)>lUuB=+Ci?heXQz)b4t=3BpvF!=-$Z zWxS{R-4}eG-D?yoP3a1krfpX43UA?>w#0jGbr8dBLv(X{Vx;1?>g;Kuqd~Xc0BYQn z!lhl0AJOboIhZV z#2d6OkqswFcrCIjm8wh^fVfF1Q*1dwH#mnrgDR%Aa5Pu(Y+=ZgRS<@FAr{+wSeO9M z)WmptCFM~%?BpQkzc0M%TuzHeZrvVrL6^0!?}q2p(P;2 zFv;$LV}l-5}HW^s<00^|nnk7tXI+VXn-j{)iY}H)8ckDMYfGC+CUoCTF-d zkGdhuE7!{z-p8pJc_pyvhmwYp#`9Az)Zyu2A(tNprrToO=18J%%C2Z7W55NHeY* za@h_djiwE9wWxw(pmvi|*6FZFEnf35OH(?H<}F;`?$uKF{`b~@M@|xH$HK|l=A@>2 zA^-hkcJ91b()%&ls%2$(n=!WsaW7Y;N{;yLU}v?rZMFF`NK#)I{#GHnPfVZ_dQI{i znpuo5>-X5L-W@dwrWQGIBgfH=Xw9g4(usx9xCJg*OK7D}8fxhAnX2-jq$#VzaKvtR zM)56uNA*;wMf1uRlQ#ecw+j|ES=)W6JM3HzN#0!TM4((a8uvF+<#bUmU*$MS1w+9~ z@hCb{lG9zIfpI%o?})`qLZ1aJ3;4KEd&BTVt7W%?LnpX@Yy7L1?>iq}(zPKcQNmwO z&`Dwy@H~5-GEQbun=tb(xsI47xc@DOFmIL6CJYc7*u?@A1=CfeT~Q&C-u^^T9K+Fh zfCVUr58GzK51cj{B}=Mr4F>>#bYuXL6{>x9n3$-{aU7qH(R;Nb2C{DqI}6z&K1)^F ztgfg7s`I{uR&5!>JONF9J+PvgOStxO%Jp-(_p692K z8T!JL*I>uFJxR6aIk13IFH9?cdg_Y{32em>cx}S+t-m zw^%6V8FMnZ%8GJxe;K^umrMpAbfOI-KA(OK2^Z%5$s^lFLLw`Pv2|u<#>~i*z)ZjX zSW~YKRX((nsLMb{H*S`q3#YR>-7Z~1KECx7m{o8-R)aVg*m^<$DetFsU4kYL6-yv1 zg3QHkm-N^1lhEBEh9Kxf3=Vei5EPu?npif?IL+k`4-A94zV0@SXAgXH>spg)MU;cz zs2->P*T#!c{j<~WqMKOW{p(1p<#FT!_TK(Le5Zq>;{nKhnoo})vHvV{+gts~hJv2i zNN0K^D%^FXwNw8XK9Hjb|Ft}IE8pQ5)#=zPs_b#y4Q0Hw#m&o}E=H`kJNf3?%;jl3 zk!GCR4bZn^HYT4S}bQ5Zhz3mSE6N+HhIMK8qu&hRN{39xs?@TQ8uJhv+dW(U*V&utnFFYevOzr5#@|^;dcNga^+E3b-!cpx>pGBN|JNo1qcqH#^bat(qqB8(Ur$ko$@cQ_N=$M;S$x(U){`XG`|YTe zU%S!mxD&aN|6?`TO^;s8*V)n0(>BqPy@>@1m9Po33UZqs60Pnwc=UJi;~S$*0||p_ zJb#8uFwoh#LvBk)A*{_%cJ>Jgh3i>lbFv?T>Fl#XCh?`NkeS&Wyht=8fz@TM-RU#6 zW37MZnhni0Vs{DFf*`aBZK(V2qc&K(GjDGV{TdPWD1R%JiYbFC?(|A2rPXEeVq&*5RF0 ziQyYv4OeK)a~)BtXq?aVujZlW#&hvp=h z#uH~JfGNWjD*RYhW8+bz?Kd>GvlFQ%G3Wdt;bC*`clX7CMp01*($U+{D}yKc0jEh_ z1~5YMxY9bdHP!m+8w#^_1%ML48(fWl7Fo$Fm7+ZRzpX6wpRH_bMibJIlcc+7ouQu6s{7Cn9$rk^ob4bOunA{;kI$E+P$qftY!L;WVFZ1`> z>?!jSxJ_XNy3?+}i?P&fj8uU__vv)0em~2# zl9u+ueqMLpBM@|$#tdACoKmdeQUrbH6Ff$-$t@YsstPqduD?~NL0wpcWJ zn9o3E9NmA|GNo;s!AL0eX$P;3EdKIwf@rpA9^YB>{In@Z%%h@+c@!W~Q*~Zb!P|9^ z=+9^McmM;YU$4YSvl*;?^{8CBnF=cHrEQWQ!b|dt5r<3ItyYul8I%m3nrqG=nkJr^ z85Thq70&>X@sc)^S|L})sQO^bG4gm0wH<^aUGDf;^xKq4^E15=x607C)nX6uV#)gT zOu7JhS^W#9XWp{magPu^&Pj1?e*~=d^y}%g%K1gM%ooda{)C@w^Xinx{k!B5_tF;{ z!5kPYzx^McCb_Uvb0?9`Hh{ivA##6@G*j$TEBp5IogS{*u{3-mpecfuH^xx0D;&k6 z_xtr;j-4Bk_;C%lO?ed+b@Io)skVR!>ueB_ch3z@rLPCx3GHFcGcEZ_Tv6hk zxT!d`B*h6k-7kZ&x_hDR$6rTh1Qxuyu5>YO9kW2kGra(tPwWC0GIu|_%tcVAgDmsZ zV^wBB2OO_i?UPT`Qc|j4&yMIxQJD?V`HR*rgeWt|IA$Kbz_#JkpT76ASB=ixzN0(U z#_Op46-VG?&mG6Naz?w%9jc8p;^j298V1QHP=FpTC|U$k}$()IT&Q%UiH5L5-NWV@_XTEMd# zY{JY*9|Nh{tj;w2}bEgXor}%}}7>f8#L+C`;IBr+*-?=Dz z>+AmKV?SZ*LG3*9=DpHy@b>;CKOfqTK1M{aZd$`a+u!+M@9Y`-B#G#gBi-_k^m_Bf z2%}aU>3f_jr2tDf2e|G4JzC}I;UXWQYtuMwd1V6%xsAh1rVk&v#&4Y}`g(g{f6E@U zrcW04?oU?3+ah5Pm0a5u3v=2#pEe89lWGHiHmi?)*!uG!Ju2;wgZ~{J@YZI8hj)n- zy~<7yB!U0C_J}Z*!ENrh)Hly zNmkjDcp$MXku2NQ=hFTb^)q6|sig>AHI!c~<}3c~xm#FWe$eOpN)c)Pj@;XlCNxtE zFMpbyeDxaZ91^zFRhUNW9yt6YgLrN%kS1M+EZqE*RIK0my8bzVWy%LL7e2>YgrnL? zD?2I#o_%PcdC7Xq@a($^|IZjh@oLGd3TJ(_c{>k8um$u^v`p&Ty$;|Zcyi<%L+Sx)TZ|4!`aZ>rx%A3gQV)r&4?mr8!`Vzd&SS@1A zmZ%s?OK+mhzSb9(=^2gGj*SC*xoi&^8|R%3GfyXRg0uM4Bspodeg*{a^fwiFNhO^- zjci2LvqKQ?_)}80XY|K{zW2j`PgAiqxYpdwu;6(?C|ZgAk3f9$bnqKc?@hn^vYW}} z#~4_{%x#q;9iUGFBP+xD81pK*{C-u7B;_I_RET(e>CqP0^7D8mddFGz28J`MSdndk9Mpd zkg^tjq%P|FVm|2O zU|1UulId7nWBe2Yh!FPA;Tlvvfp!sXbEi%p`voi_!~nfe)$bn4=qaR;DK>)<7WhT>+`6?AEq8^{kvh-2ByuBp0C?@UG%d(ob@_*xHozl4JV!h8)pQ{JcP91-V-&=40N*haw4U zvp3H_%2f(N8Ct6v_39{58ED!iAGJ~xqweZ)&H7LNjc(X(E>!75_BcB< zQvKvhB)o)cp%Yd3cDUO?RNdWy#vZL+V{{g5a!~-8k52}iJr@f$W9HPFYvqHc)(8a9 zdrR#w6&Oi@7JngeOAv>#=2wObZNW8*Kb%=1b(2loo@azm8X(wmN6nR0e=hX^CZ&ujpz~i@%ptq=#%@v?ePv;P(})+zc7R+q z!5j4VAfJ8j3h;>id^-&ux$mwSxUlPk08Xk77y1WlG7Sx!U6;%$E#cgSl#Z|lv4-|& zc|LKnt(a;6(<`6O@+$4lk;&-O=(HQ>qbEk3Oy^Pp)ml98yiNk5mdN?%0|Z9S$aY>I z&3|X8OZE#3C{}4uNzd-aAKGj^Nr?bkZh1{Q2PUYETWX^AW8w!1=}pvE>d_bT3N^WL zIL<#4j=33p?d6K$iUmi&joS4xzrMR`%Qtw#Yxq5lr6@W#vF+hyVJ|!0s%G^RJpZIc z`&m51Cv%AbJ#@|Kg~KWs_G5?egv-5(3oWJ16_WIBR@Sz)wDq?IyO^px>*_5I+fj@x zfZmCSZFRclzCvcbBAI#IAJCgRf(iTSdmyaFLY5}$KX|uMZ#bMR=j!ZYiul`ZUo7+9 zxa}sN$P)0k0G!au@nF+a_4f!{WxzeB$$d}3{IFzrMV!KT-09zdFBNPM6SkCm%{w7keHijQdE8_Cj`y^;^ zUf1__kmZ0=?zLr}cT3}_sSlRa`SE5U#m?WmGpkCJ8b+vHs&t3uT9@g*RWg|Uuk+p# z#XMH8nv-mm)1w}AWeM@W#4B@#*3_dGKg)+`$Fl@dkpDa4SjpSncU?tx5~)zTJ`mZs z?bL%?W>;yC`CyF|)mB(uGE?nkEG-KHxWP|2m;zOa@*tH9H~xC0oE~bdUvKC3&G#<9 z=QeUOOYXgUd!CxvOs5XkCO4cedbGfr3F$4;Bg~Gw<*6gTb;KV1cTe~F<8*xyZ*W&t z(vk_-=8#d!bJ1$T?gmRL>ArpZb{`(+GleqHv$zQeWG3|0lWHy?xN6}UvhrfWKUQ*} z*qHk-G&YqLxF_|o)#bAXy$jtgsw9i7{;UvIG66x;bvS?LQP?3Iwa!Y%!ZYa)OI8H9 zebiuOU6C``}b^ALj0;@D2If&X@QC`&l2p*fMdhf~na zkRClEr0-#-WDVZk(nS((iHLh$y;u-qSXq>A(_-kq>0#cvuH;hqaU~Q?;auGQHMQD` zAZyA5^T3ByfB&fl&;UGBaNZOoQ&J1W3K*uXa)u^&oG+s8cq%+_`Q?9I{yXvsyh(g6 zICJ5H(L+$Ub_RmMIMQ6%>}W8``ZQWxw+$`7MA@fsEclB*>;lF zSx4qUu2)w-W9ASYZiA4Gdh5!CWQZXp#AyPR_ntz}i~TuS{09J{tSgZZN{FozT|~)x z{)XFGFqf43%U&u+5q~=e*DBigb8;(QllhO=brGJe+bCuNx!#(x%iw39Inz6z#+pfQS&43CV;_P%Z+>kn_A!TOk=QmAj z!~bQHuj=_v%hj)b+87X_Xv|fiOv-efKw-j=*kT zX4#$ok#UGG96aO*s`=PlpS7FUPOeE=h6SRoJqeMSQvjGj6Iurc9Tq;YfJ-4)%hdBn z!C_}tclKcg4lbs>7|}kJb*oz2R_pt&y`u`e9i+zWJlHMo*}2$&1y)s-XF}PT=aq2% zPkoqCD%ogl+4l_wv0i!Mg6!Yg5UO9bXHV-!Y{#2-nHg0_zwTl7KUfg;SM|!7&HMArtQIUtnxlxuxr$@I* z5c-Y*q0YgkHCX%GFT77y%eXx`>G|opPl3g%67J{0)53k(gIep!_`=te6Y%8#izv(4 z)5nY|IL|pB^nt;M9SMDr^+!uPw7^C3q1rHf;@Co^BZWbCh^R5dk$8>f)7G~3Sy4v@ z?7V-bhXA3f{70G&f4-Q+6!b z!H!e7jvqfjXk6#~K;q2P&U_nO=q08HB$gjV7ZnvLOADV$>g9F6mtoMiepvfVlgIt8 zV}kVmbd$22E6Qxl%A)i;0L|L9`Pb6-8P3@$o1H1D?SIVL#@868r4lJ^9DD7rUrpHA zF!`sSI~J`d0pGq$O1P0GqU^nHNJ*(u>l<%6%(UCPT#-oiZqCaEm7E4y1~$rfcB9SG z_75xu$ee2byQXna$1pZ4RLVN(U%hQe&b7#r^`MDHRvO87*GD7^{cTdgaMZq8z>|>f zd(Bh~ARKsCu-!=U@gVP@!cwt1|I#&{xr?)%3*ms>J|K?#hj%ovU714h+0`9JgCi>W z;rEY?U0+3#1G+yx)Mw;kudI<*8Dqi^RpiH`S;@U-7zudQmVno4Y<{pMzd;Hv>o**d zBP{Xya@I!-(z(*5F(5q-Synk2Q?Z}NiQFysMF+rT+^xS?4VN=sNxma`A47sQ(x3qm zjEX1hMiB*moOdKwhs`4p^2K|K3@Pcg7@s?-ZI5R~rlahfKBdFXUPs7MH!%7s11`D) zPrKx;(faZsD2gM-D=$1dZR*Kd(-m0HT2Hu;C(Qe?A4bZSylcU$pM2YC!B_V8a;_d9~ zBkHIEpl~N%DCB<4%rW&CSdr=0&?F*NE@Td`_Hgr)3`J|A<_M{M(o4?t7eo{csG*Em zuVt65rK}eBS=%o&b9nnBWs>g*x?uF{i(+qoIwsl@ky8PmaMKaV2*2gM_{wDAWR=r4 zu;=F^gG|CJbgJAyLsivyV9ZvyD8zD}zxQpbp%1iv5nLGi!O6u+`s#qj@+sq>CzyYJt4i`t_~?QyqCs7>vl)fO$H zs%o!VRa=aN*sCR0X>Dp(t=1l~i7hrYV#g{XR?Pm=`?>Gu_ZHr|Q3Ll;vt{B)nk7eF?kCIUsN# zG*m#Idonrc@rI7pyIPkc5w57mAHRCEsk7CSt1&5_Qxf#1x)n_Z6rq`J2O(*ZFTmh~dV|$x5Yc2y zN_S%-i8kJGkxTL&ZeEz0e^@!p{jpS4qHS7E5SP1JF8W&zt4D-TS5J+ zRjX1`hwQ1261u@dC9=D1=xdV1s7hcYwQ+7it)}a(02I&^adDfB>dEto_0w2Kx6NJ8sw@SD%(!opcSzsf}R4dwW}WV{b@*kAZT zzw^#K!pUCeFN~9t&cX<<2jiqtQI(3f$amTIO4LE@|goHaqix~o&2jZHzp3St?oqL-rE?Mr4~K{hqaX97Gk+a5Q_!=*N{ zQByICiPAf>c0*eDJWf~R{MwArVZai{38HWi?O=$mHcV-I$`SE8#V*lVHQy*!kTbo; zb@Y{Q>w@2jX$BK6DvFRSaFE*#L|pxvc2H2PiZC8&Jk)=CyWvKSH2-O5*wtH>j?)Zp z^aOsYbp8c~vAm1g9~oExTp^EjUpORe{$+9usedMl#SD8T=+-u`eCi_8zZ@)dd6(sU z-=&jV@rK0fP)z2JFXo48XLrFbm4gVK^~5X7etW*=%4;Mc%IB5J#)z|t@?AiKu-E== z@B!K@m6A?Fu5{xnM6%C2$0Q@Ol2y;RQW8{n1B!fx3_F2mE&fU{)|X!N107xwtj@Zk zqn~KX3AFE-YTUM&BV~LO$HkkT9r_(Q1Xe%o$JVtD_B8C;yGwLFnao}X%|H864r9v2 z#_c&iG`o^k&C>SL3K-%#3Pk}~kcMZHte=6S9Cfbq#Pe$MR-!*w4n^g9Kh&~1Tg}bH z%q{iMpVdh8Fyrh-eM_jknjM3vSo6#_<8%AsVtHco^qA)u00FKp+QsX6vHxn>7Lqr- zz|(`SJZq0~u4Suk(65r*X=Bd*e826n>-^FVTlhO4BX-B+SG_DPVTPy_Z zOd?!;PP%}2e&M^FQc~X;LjSQnvnV@_!@~;{(YdlheRKslv_ld2gPm3k8CjM`|p0) zl!(lDM!Kp8P{~2pCD@$>$lw+5L3w9Ww-qwceWI+{Omy?i=^t;sf7Z$IvDdo&j1`c* z18?Hm3(=L?GtGFLE3))XM2c(N_Ra%&6CB?!ivK@$#Pc7nQkb#(M=5s~R;2E-?qS~f z@8QDMrzBeU1-ii|xHvWI4;4;cgfJJ;%;p(KhYsV}aOi5jZY#XCIr$Bv*Uh$YxeVje zL%uUz4`&}e>(~mOlVCdFB1ihI_I`>b-#x-07}6+#Yvi%$1T$P%&yf-$zL)>m;)wBo z&-rujs=Hlq-7V2??~^Z?PR%n08X2fgXN)TeD6S>icfV?eHcZ}(Jl{(TRkCEcQ^%x4`L!KjPG9{|V1&6Q3Aaiw<)*&p1NtRoW^-y+p9 zDc7~wVqeP%?7WI}vjDO@-bicK$~yK*vNBGE9Fgh!dE$B%vbF&MGgTr_$WGe|{I(ZW z=SFm{X48l>4;P8PnPJHe zm*&Jb_l~8gFC*y?_deK!pmM)Ix48ZC;wEic;M`a}pRbd+Bds{x4pG6-O+pj?X zoqKZ#3lc}~x}7h5kF|qTFNvLG#&Y7Xt#Tsvi}=;vZ{AhW>WSjHsAx5bsKSwZMp+`~ zXI&gl@@ur)n-sL({&@Cw-6J02$#4}~)g?*HmhHr>59Im4kN{hroZtk81Xz6gLYkW) zXY(MU)aKrA4!*T8)m|RPLdBpWoAj@!jW;HtG23r>oJ}v%YoO&T?k^?0rJ2TwML_e3 zvZT$gwf3^$D@wb>1}di+lLH2~*`|;l$nV3l1?hzLE#+VK$Wm^}#2#1EU=XHJW@b;*vJI@f%)cP`i$_qXtP(62Q%S`i7F{j^hNc4#u8uIaJgccF7 zztPSO7*al#s$xa7Fq(DhcI)Cku)pBbRjnH@?asFlhcn^*rdXq_!iD^8b4ZzM#=aO- zH%3BIxwA;pzQ`){kJK^`8|FqToxM&~o0Q95wf>k;N$BJ4X4W_NJ6bl~^U-giIzb!^ z8D|*WT~D-0-)un$s+n$fD*=oHz6tIZEkNRBKu~nFIihd6T0DN=;rfoojU89Y`GU}} zs%Q$UpUIf$*{w6YJKHx_7e(WeTFlA*7N-)@!E;&AfBSS|$bK=^`@di%;m-9?YBpJj z2WTm5DGO;j$H{DagbUEIO7^B0sp8ryFh_IK0SSf)T(mJ9#n@__RT9IewFOD4&Ld6G zDO^1orK-TP{Zt}q$-tncF4txHaDKh31ylu0mLZ( z`_^pygR(UCxLuf$|G58aE2o;OG2cSTgnF&Eu4=fnaFM06(|Gt+GPUX!FMOW>LbZRO!GU(!88LJh3E1ZGg$5p-Qvp}$y7rqnSKxRg&VM|w@8;`e$lrHNXQ78vcLEmc%D;Yc4XoGIco99R^Ec!TML*K2Q_JXk%%Mn#vsCF)M!=yh2 zm+RtEhSI}@VOjh3x>OO6(&kp629DG}lrEiUldMX52u^iavv_aYxo)X{C*o(B2?5$N z-wZdy4Hp*g{_+Hr2`U}7xDPzFdTpq5=cs@E3?4Lzs4TJ=+Uy_bK2(+k;#!03l~Cui z;f$H9_sX}~2)`)Yte|4)QZ3+6Eo$oWY@2C4L%G)iFQ|Jux?MP zQIk3&q1YgE*C#gn_GxxDA=;cXa4(gENbY~tw#ByWYf1wv^(wT=e6e^fT40LU`ce=f zof`!fkes@E4`g7eSU50VE&@_lvOO4U6n*8Gv89o2C+oJn%m5ewld=6*rl$RK$8tUSxWfD>ZjjlUe8*D6% z#h_ou>wKZ$GvRi*!Vd(sI+@~K)Np!mrEB%jB-jyGCvlik+3Txs#8bTL+9|4c90zu51Vd>iq6 zSh^A!b8c!KT3^`AFGw3vwOYD1?t$WvZLWbnXAOwGabwhO!vT#3qk^Qp3dVjTZ>{V~ zO_@~Uha;56nG5~^nTAN!FFIwV(C}*PJuz_i+jke= z%(>QB7i2`soxVTxst(mQH(gnNkm%mzQawl&WxZ1SnTBl5R){qOv7bc4v*S(qExOK> ze?t7eb~^49Zs)pDMEk&SgqQWdJ5g*Pe_)H(R4{f+&xDYsEVxG|sMy@R=Q5>PdY-`~ z?^kA`Yt}aa?o&^$2(##^m7}$&?;%HdNSGUrl=mvQzvP&YMhm~9TW(YU-^q> z&y|RFrhFYkfD}(xLD_Tvj(desR&nB9(S%BO&9!%Q>p$ykNebd5D)2uF{usjCR-$E& z8-vUbbC{2y^!Z~H7RXKl7tXauYoPjMbD~IB(cTIPv-pVNq%IW3YNh#DpYte+eIVA) zko%@+-{{dNj{2bQ3>!Rm^|wv5dw){jlz?a#VsbYk(XM!bJqq&wIg<*1!$gm~Hshe2 zx@!GqgL#JXaa!mnkuxfkwdQ(a|Cb>!tFF`@0wur56|l;=JN+^cz9Jd$$yu}B1q;qP zpIf%#J~wD-e{?asaCLmu;Yi5P)i}2$c#(gM$~0Z0=dSc0Jy|Uo%pU_~Aw!!{$!RFR z@6tx|zIZ~rYi^dh-7n9EsbxH&4#4P-&;3`pofR8Oe8_#7LJ8qMxR+QCx)8E@5Vg{( zj|kz;q|f}y;Yq$NJL%}Gl<5Fv=)^1hqrYJv@&}?+vtEE8`(_tRKqwD^{dgpcB9!%* zB;!KBeU#}Q64{@5X-qzG3-o7)CCs?64#(GRB9p3JFxc#z0=4T<7dlHDV zLo`D~`K!hh4;7fj9$hnjBdMpUr?Sc=^xu1rOxJ=1Mpw}57JKI{kE1Xa5*+jBE~%OK zeR24ln{VSffe_oE(u~p^Dtv%2)h%SC7_Q9pm|Xs#?ej)i%Q|S2(d2dk3BUddB1(J4 zY%?f6>n{+x>Z#A@-LDESP8kez(kwX4-Xy25@Y3bx|GtFQzs;((d#)({`*muV$Y$+} zdwU0Bo100i+86Pmtg~BRO7>0q7_-(B1w~dmOcwdm#UZ55rajlJ%jzV@=vq?%n2%%R z82XU!4@gy?S107IX9Zlf-@Y!b#u7Mxy;zBhW^n-W##vmNP%UIOJ-OQ@*GJvOGNCi>2bUdT}sBaWKb2dk|YupWEx3te5`X0{L<^$1W`k zL6Z>+TjiNwJSX@mir9Ueyl|LmxxtjZv%=%(^?}@mRz{a0GU*i->UzhEXhY~t|>&loS_ZoTtG%#4-P4g!A;yoKFz0O{9 z2`a}e+fL7yvSocSJw4+ZF>(4Tr&DqbQcdz_(u%S4$t6sq-J5HxDT6TOPN6)Fgiogp zLz0TI0N>nz@|g)HmY;)z!%2)?8>_!uwMb zB+=-uy%Kb?lU!XzK3FnoQKLLE*jvPHY!<{S;Bc#g!NlTYdGm>#bSzD~>>6*m&%qq` zOxF0P6SiRUB(wff0(%Kgl-;3o;*ZWY-7wqKT_MsRTSwjY&%`L&kcdDaH?p74;e=(0&2=BrTwJKK#U3TewP)e^Ue|A9;Z*p1L8eGJv$V^cm;X<^mhOha@aA&Wxl zN0!#Mu_jma+Dz>I_%K~fM7^VCTEFz`4F1%+QhS zb$^9KoL3W(+U zrbfz5)|+xSn=@b3b3lK907Yws)YuQ@C@B&AVcnY-1-YuyK{|xpdb|h(e7^Nm{dGdF zv=-;fyOLnaX;NjsSx+_EYqG4GO!|e6YeTb!mdJnHFCRcb8MhA}tA8LT*L&UegPBqa zMLUO9@HqfR7*Byt#}eEpKY3QIJtbGYCNXDZ@a?e)h|*A9ejmxwrQSZxz7nIW;-yR> zr}FVf(!;7R)e83$n}_lh{n~1)+TT%`-?(f*Y%gOx$V+c!y+G&jrYDhoj_6*hBb_H5 zX^X2K3ei;?kf$uk{n=2b1Ce1)RCg0hngN){z z2BE=kG3zkz$ormoOl}^)#4e78dqxi_(eY@$R!Ct@F?k6Qy%oHYJvXvi3f$4YaBW(x z)8jh{0@Jkipz(WH?ah_8BCqsLVd6}%RVX%p|ejro8WO~C~GSX$GNFg)czK& z@StVKj~kEaf<%iC^(;C8zd2N)ZbAEID+x;f{3W^ht&g3tUBg><*_I>TIO1Mq0d<=> z9~pcQn+VC)hEfDSp3o&!h1=MS0L%H#e_Z={w-)kji*q~(Wr>3d9_2H ztw;{f0q=S;dl@Y{rOoh3e>1_ZO2csZ?1)9U1muI?KybJ+;LmWnF|e5mkpPRBd(_HI z7(+KJU9o?&0Q}dczPAiq-9rJhPPFj6gmA?JP}=cHbEF$nlggM;wMS<0QD@u-rLzzQ zyI*X&%j;>MF?m|U>C_eK4<_dZcZSg3%?BA#e}W=8#V>rq*68L& zNl_-46zx|NU3Ct3-W{lMm_TsTkk_?x+NyTDYSObF?VoEVR`c~+KA%5(?4^54 zSY<@P>C(mAd9mom%y}&6bomYzkS+ zQc=ieamg;Nk`q`GbSp{3 z!+U0i0t&%&;Bq*ZP_}J$Px5vm`y=6QwB!l`&Lx>*vJ8`%u4a?!0Uj$D$`;zT;b>CcZsGzsRiOGYtB z;VqU2+x8RuFpMkwxm?ljKb8l<2*$a9^V$Go6SuD08L|9nmI8fFj2frwwB>CPDpcN8 zdPyE`*>>wTZv(`9%>)jX?8#;TODAXr(}bW1@xb#Zu^)F2yeJhK>=~>eAh1~I{>Dea zx0uL=r`KA_Oxvn!cu`~1*qZKZ9~(FxpIL}9*FA3IxbG*Le$wYFYu|+W9N4+l?BxS9 z%kp;JZ&d{N(<+yHdvi9DMN}ybeSRgh;mD`WI zME!rTr?cipn_8ViQNCu%hQB&Lo<38J(*7y1_ptH#6W;;TJ9J2hzWK5|(GKcDabF6^ zkxWKpeh{<%FBoF=B#7o4Wu`yBOhm75yVj|Ld`&x{Q=cGk zH23wBpJ|(}VodgQYoxx@%x!!)?Cmi#Z}uZpsO{mVV}%nAR?DJI-KTs~uP5tHHG5$< zR*zTQJsi`@z=m_Pm5wiGq}OKcJ!VFzoC1i{)P~x~#g@mKfm3Iz%vl#layDdqvI7VD zb^k*Dd5n;rJuHnRb>(Fv_y8uk}Tjwyfo}g7?z1BvRX8 zVnHv!!l4(|+*6E193mDjMhzXJ<;%9+-%<>x38$y(giQ+FyD3avDSNLDLS=&fkX^NH zA*4F+XF;6JZ*i4Uj={?lTTwrRD`AT3w<{|Z_UbAHVTl8<(ZP-FSH<;1I!3Ja2dr#X zrO>qVUY2nD#b4<_tXmif4^B_tv>IRBa#rlW^=M}A61^vE_WNw=MB!1!lcCLSY(yVb z;#jnC^hv%`yR52k-HIPBqIO(@NRT9=aLEqt43ceUP^|jd_~5~tUp_-%|I+G9`=%!B zxEEJeR7F-o?1q_}F0-gJgVOC9>7ZJB%K`SiQ_5}@{W6EU1CI`7?~WyZR(9v0EmHRU5+R*U zXQD!N+6n%ko%vrQDm5jC17%!enZUb`<^4H5xf@gzbhT#g@bv(uB=1X=4|H@aI4OvyhOiY!;!63b;C87KOA?olQwuD;sKdd;Jy3#r8W7 zP$Rn1=b}_X$xj#Gv2{!>dPX!q4L)S7^DWS=qY5y0=^y8E%?`11TD=8W#Z>La?`V6F zY;L_qy8dS%?hYm*i)_6_@ON!qva)U5MEj<@l z%~3x&7MfjT9ZDa5Mx|PhaCi)PHdDG&?FXgR?m(pjz1m;$XIl0%lOsfL4quO%vCxeq zQpyMi=C*vO#u)-E5zmXZJX zZd^<8?&3JikgBri`fvH;Z5HqKL%QD%4GH>9OsSwU$<@?#%soRVSYvw|tVXAp6H|Dz zq~Y5bdO&I)eL8G)`*l|VlUOF%Klm@{jTrhHe5_UH4f#E2Q@sHX;#2ARGOEPRR@G)L zPf&#@N^gOo5YA$#oA{XC!`l6d5ZUTERivl@ywf68Q|{+T6vC6s8nT%~dq<2bDwh7! zK!mPG@M5XI`&n~=;GRoE#YtW3YSXstj$rNOiE)TFj!Wc_iwg#u$wIV`+g$2&H3PR7 z9nk-KB5C7alL$)gs4_1+6UwOCdP>G6Nv%t*IhsFlXyaD=7uJycxyARt$UlDe$rGSr zC?6skT|Qh_{{2*8?Rd<8lqQ6kaDDi`PYjhjPbLZiG{dw_7>$X1GW$5nW z4HwIq6mOd@yd+8n{pUY1srwh$>>Z;hc>9G2FnH8%C~X~H0l9V+$o>BOv{c#rVxwDm zi(T1&x_5#M|5zG|B@VZs6n;#f|LUuWYhMRXr#LW#I5r|wbm{u3(KR!C>tn+Z8(t@P`aq@d5`R%fo2_%ff5ObobT|n$=F9xH)#2q&u6YvDphV|^(v-d zKacA>(s;*rpP)vr=heC0cG;a4`_X2J7Q09l{F5NKAoio)LN~E?L-#cn)a3fA9BR7f zDec9YP^^84Y#B5RHv`A&Og%%FN)I{NvUJZ_iP$z{@)RM5*BMNzM8Q;MnITDWbnq9= zskQ&J`UxTGjw2em@s;sZ9)MFfLflvE=FLoxbWBj4R2?Eyg{`I&lbzI*zhwX@%UW(l za}2qt$Ub}o3RqWIFvKfTg&ULcIi59)wxy;bczri%t-UWyz0uXOJBMRuk4RiS>>30V zr5YYI=>b_mGG!u8w3(~5br-79H76&09c>;{JsuX&30B1*vyV0Tj?hI7Ivvso=f$@B zf=d7TZm8TEZ)Od-l4-xa1;zlcWG~j#}~jnt%E+h>vEIE3LNaV zcJ{D(vOHu_VR<+Q*f?-Nrm(2Cx`wL55ynn!czB_*)qd4+isYRGyyWcA>aTGu<;mm# zIgwkNp*nwO&{Acq)&=>WuZcF6D8)E}tcm!x*&`jRxz+U{L?<)s)~=*SA#Esx6urbC z_58kB4loj6^Etk^mjpn`8vbdpwg3C=m5bW!UXikhH%&Tjy6xafsO8x%0|jU!le<^F-rNq$H$cl+EEgv2&}fJ+Rv;p zzCDZK7hEVHhq2fkoCw|&Pqon*W((bokH9n3#{(5?zWlDL(>Of~Be?V{>WZmSi}t(& zDh$S=>D)&Rsy8G+!pkg1PT?>@DDt-VYD2{mAw}vJ04myaINHUVWKvOwZKu*dv6?-M zQwF6Cgb3wzCVbkDswoSO@L>Oexx<4S+&L6kac*uG*G_b>{ECheY51DOIP=aba}E>N zc{wqYGXOXB>73I#oF1`J*&dd`ep3CwzVt6p_N6uC(RGQhWdL2WQ>OZAhUXdVL2Wy* zUdgqEkvloL->d?RmG_kGPmqGAtWd3_FJy6ps}iRHgHlr-rmgxmhi@zJQUrQw`35t> z!fm9Bxs8(Txe=V@uYnxR_sdTZ-Po9xcF)3x0*yc0yyBeG1F5qxR<(0aH zn2%WGYDS=C-4BE6ht`MRZ+dRMx9Dw;Zw0fxx2yWmLGGW>9}H~2X5w0o*8qqumBjeG zd8hl6$Dbf!F81&TM#$c1TV(QovwMVp&3M(Ouk@L1Knq4_961o3NxI&G*hx~1`509z z`|05$&*0aF1b@$Q1NsK4=NU5H)|$UV4V&m_(5B{xE*7U2!IL~@N9@Z0seb3EM-)EO zR|c{av8D)gAfg351(HS#lgH>GrVu)g@gVImt~M%Xx0&QF)eUm=K@c$+so2Cl;&tt_Y#xghpaxS70U z&=4za$r?u=gY*>QSbM-E3U-lVicBR&nj=xK&JJZD*$HlC7jVym0Z8rFDzS^J0RMpf z5bmolwOx3xH<$WZ`^8a}D7nU1JKP+{;$XF7&iGk{MYRD~k3l{!mWVkWQP}d1rS5;9 zQ*@MZx+8Qif18ND7cvf`{<1SJB8yADSjn?R-BF&*qQf}MiY--@;0WFjG1vg#fw%eISB-RvXO5RwY3 z3$x4%CZ7W-=%}8^zQ%}fFEKAAdpYRCT$v(?dAI{`&$I%C_LfSV#>+gZ7OUL;UTCPP z1z|a|>*vL4$oE2D0qd2==@YYs;!c4$P+ zKx`I8;T9kY1=D_6-n?tNMgrv+<%`x8acrb6cdjIAag8L@7vh)kkivHH6PfSgScn1IOxLrcAs|+{(`(_}&N=(@q=WB&XPxsq8Nm8nLk^TPPugHZmt~}m! zgubV`XFQTSr3W0$*U)(JSv1Bm4-l7fh|D`3{bg5sRkEEiIbG(6GiK(#SR`v)N;0Ej zHgBxYT}ZM%wUl<)9p^MvKXrwJR7j&V{0<$%ZG6f^ebdhdpIMx_N~g0zGA{I#6&uYO zy)Y|7zbcI9tIa&~xnwm?%OvNO(tjZY>ZR}-5%pz?X=_g{p$wSaJ{bBrE%_OL`A#Det~mNBcSL%4fgJ3}@CeyC!JU`Tm|YiIs=vXi!@M{j=n9 za$HL4@aDpfZQT6KoA-W3Ewi=qpkq`j+-( z5QK$=#a@}4h2!hVxiBXC1n;u@bC3hS!H1dWv%^G9!>Y+Z0jr^Y-=G!kLR~^F+7cIO z=kNo|w;I!I)n#axHPKzWZ=22@AfO;Sagz%Z`-4-ChHS;?k|~i1vP<-uo48!d&`J^DJz+!p zm5K{nbcl6~FKlA1&Hm7^=bXl&wEtisFQmBYI^l(~xX|ySo3G>kv}301pU3YX69Lvj zCy+WaohJ=vwsN--BOB+kTH@iup~lpwK^Hx6OdCVny73$pec{~`gved%DDadrzx4e4^c*{^EKu(>89(>dJ!)Gmmy_;5&8|X zhF8yv{4%tazo=p5-s)_pD(60$pvcoVZEX|{btKiVs~@`dues$Pnf3yo?jHmR$f~w5 zHFtqsv@(XEA$%wZy*N>n>l=PA>;aj-$b)y8fB!>VR~dUu zBnKs?Bv2BypX9Sns`e?-;SSxZ}z}5TmwR<7DG;oV$S)f2&pq^SHzDg<*Scesp9atiwD{DXi zs7*1JgOZtrKbYA{bIE*=V)sbnI1qluvwh)rcN*%##-=9`fHaKTUngiPZPRq=d~34u0LfS||^=+`ha=_furBuG-CV38~Q5 z-@PapJ-0Ue7g**j^i1e(*hRWow(e+Cnz_m7nZ{{?gd=sek-}X3a2=x**Z&M@$wVWH zy*xNU+^ej|e*OV)dJ}%zj^Q z%zx`)Ix1PT8NVzN3d8gUejICLdJnoTe$3T3;YDf=?X|z?#ls(#EWz!p?(V>MKcdk6S{)Y>*!1Wt4(l}(27`EDMjUv)~^m$!RZs_mn1HdxEWa~5DSFWl*d>&)xDu+`PWY% zAuZ^9%_*ue6{s)6(F2K+ppq_}h<5Y*IPvpP{Z#v{avu)wMfUv+oRcI}K9oEG%C4A5 z6W>uY26Ki$T+?fU+*Ir)%KPhIZq|M)%r|tLlxP*O627><0{Ktq)Zf8V(v0s*blK#P z-SOHZOCQZ_5i?=+z!#Jp%prRm_5-3+U-QDU zsix}1dOhuH7yQ*EF;`#N-2)EIm5nY=vs+Mkia5KRz-hCu~VRg}> zgiUQTts}d!`2l9NR;&VVIqo@{E_2oMlGNM}CBAGlU^wnn%^=S740LQOo>)V&Uhk;E zK3)nt*~5XBrb}+y5tAs*SS_t3A?7dF$rfPoR{L)+@}pVpigY>qA}VENLoyoP8NI&| z>uEXjUBt&e#Je;uV?CG*Yw#x$LoNwXt2fTdCv>dfrkD1 zB9V#|xR+LlmO;d~o=s5#!lq>Q>*^7!*_th%iXZ!x7?}2qSIs>Qql=whwpr1z2#{* zjn60R#|xe7+THR+r?gf*Q`G)(d(yvHyd#4T7w-@ssNJu}crkS>C-8+Ohzqqv5a7kOu%=&AGvc~`I>v+u2-3hd?iDhs!AuZ;&ss2oUOcI z)FxJ1RbKghR|^4tGI5l$Vb@*_rpi~yT3xa;!Rxq2JjTa~f!JG-QTigurg)jxLoc}4 zf{Hh{o|#~`=wq?U)lF)%i8H_Z9v90sO^yhOF#rwa{g4#WYb+i6gc9pEHuRr?Ss=_iN$czjB#n)t}l5hPaJOfvB6N zOu&Q7g#Js{Zan86M6HD~$iyrEmYfq$@{g$`MR1{`5~0MVD6>Zc)uxE;d!D|Y7?00$ z`Z%%pEtla3{b~f7rF?VTgRvpbn~QT}tn91BVgAYRhiQflzF5VTA5oV8E$_=Q$uo+@ zd>xq%Mh(J(GWPL-{CytE3CQmk?Cbm|ZKlfKwHyCOu#d#0-83IyEABQ^%CP z913p?y=m)seI3oIg512@euJTgCEAiS!S>#rygzGQkuP)NolVEpbeWLM(-b#qxWsxP^O{bK2X^T?(3ibh%{{!4WMFhGQ zo2?0asyoZSNDT(*!+u$D8=FAaK3%Tz>2(Xb=%#|Gvcw zXp1k(452c;gKxXB8()Yf7F=!B&ZN#f%wH`!Z7uNk95t5pv=(vt4g4a zHt!!&_{f{`w`jG}W?z<7;55B|R^7=sF1Gr|8E*9`C?vq^(jc)xjTPd`^5eUNi6*UN z^|k1S6uGyN!-3hig#44cg2!`)b2R*kI(xa`lPbeRiGQd_brVw$A2Js^+5}`Ag-~IL z@?kceCvorOm@!hnQOuL6B( z8|=5D%=rVIRqGxp?tDF^Nz0_uV4I9u0l_7p@P4nLreZtxktfn1%v(<2j+RMZtJ=Oa zkggn@A2LRn_=?>`1xx*w+Kai`{F(pmLFTOTGhH)0JIj%t_MO+UvY_OX$j77Du9?Y9 zdph}}!+pEEx}?h=xi%Mu=X{q{{&b=3dL>=r(8dzuiU`6q2NsUoZyVMKpLwvxYQ_pZ zb^P*8Ez6d}@M~Ne^8Jly1_kR9Su626g2@W7w^hPrw)(B{ARS%(7T0@^HOmLCSY@8bnK^HMw4vyrO)x)QBAGS0GTI_z$M|zObuU=`kR@dbw7KfCU~_{bY~vaG0;gL zQAxUVPF3X5{70<&XV&`5oe$TGv`R>9YUn8%rwJcu&NWSf%oaHjgt9m1$$?(lQ>j_-D+lvfj<)$?+S(c$gdS3?T(x{kl4#|1i7r0<&k1QuX?+za z79s2A1}!`2uf&HkT7uDYHa8ivpo*d>-@fNpi*XVijji{|=xzqb5~s;yYgo*6U*n(= z#_)F_N?p~AJnI+W`)!*f=2DAL|GZIV8u+_JoiuBRW2V#leKdCfW`(&>8FTnag=_AZ zGGu{66=sqt$ocVDop!9O!|CzPUdN#B(&*ILEQRUbDtrC?bmWbYy()Xk7}#x>?4vqK z?kQ%0)o)rL6;k$!IRU=W-YY|e z@k~+3yD82b-^L&^sBytVXM{H*Nj4}gwtCo{ZKkiom#MobjiI|=cWffw=WelsV$f~m zTK8^eS0Sw>=9`@jDf9n3U#Tg9$&Bx*)A}37pJBwUKTc661M8i@$63Emv(AGAl}Roz zGA;Gy5$eur%2i4+2)<&Th4I@^!59ElSNDfmUJYX-*HW=e20A5A5=R_>oeWw|zrJv}J;k({L+&cJ|Clru z4RjXY%RaYBwS-a7F=q=ohfZ|=Woa3yb4z5O=_{d3qQvz(w(?rnJ>iGq&(Q7TB1TMa z!0Ev)H^-XJGrg9J6xVfivvC!5uVN+qGT#K91<}F2F!y55kuuFcBt3UdKB$stO1*p% z82F*}MWFmjr#>5>R*ztAqx0T;lZ9r(_s=U$4MzUa+^7&Dfc%YtXnEzWIl~i;4S!F(;f6{fXXF#7mV?~Mt*6Uf$gj<-y{~X%cL$e4ewb&R z!BMJTl_s)~a64Qg^*~N&_QGDW>)DxP}1MXf-}g zfHuoHYV94qqkn>Z2GDBwChN5BTffuK4~TN`TlIUKy{+++qo%We!ADB^q)_5;l|j; zsL?`#R~H%ng=H_@;nzOdSDZY4fA$n{j2i#~7A2eDHXqt~^Daqi_;re@wn7AyWy$io z&pM~Ki1X!X>18MDN-%>eQ=!Vh%b!d>>*@3G#&yj`3#N2&F@wA}fgq*~uQPkWjvX`n z+X#=Oyme;v2{7(ibbKaI_(}-GnrsCdvMZP}^`7tBIRBH&zh^Cf+TRUP*=UP>EP6D^ zT7??{?r*KDSe@p1BR*4e4ON?tuB_=XmBZOYW8Gh>ZP6nq+!Bc(=<`i;-$zJK@kasB}wywA=#*Xw#-uUDsL<#TYwuY9fDJ=uJSQ(YBH>W^R9 zBlne+x*x1Q0YEkk(Qap`51k^xN4p?^ZwB(UTC$qaP17G4e_w0D-RFE3+*=#);i=p` zDrse#FEJDJsfXMTF-?+&K0Elfl~}j3!F%vgAAGYXUPO$|3sbBa1KLU>gRkx9*A51Y z{>`%6Pv5*7#)hxhixKp|quG*fkI+ z1-?PG&H;^&|8V+vMR)o9bwe|_2UGP{5A%w@F%X!DF+Ab*FTv&~ea(F%J?PXl60 zL3L3W_mGBnaDn6WjXP}waD|SQIa4|d$D#`8?B+x2TK=2`w;z}W@ro?1iKaHc zfDCz(OM;bK#wo0zrfhqP9x?Ik_?$p;Y%Sae!k;rET=&S0tpS8{Tu6lsQ|i$JU9hdwuw=uqOEz_%B*Wp>ds(U+D^!QjdMDpzoDW zR$s6SN0ZfcHS)B|qZ1dvR+-JO-|X5s9P4AfW-_hMy5%o!Z!3Cf)ZzuXf!u%y zkKZ{vl7!M5W4Pck^VQ(?7{Nk+WoH?QYq;+c(6qAqp>E1xFqStJ@d&0AinI>VSGd=+ z{Hw)ZMnXII;?W|D)d7uq{yKL`gKp|l2rcQz+^C=QnV%<~^cki&_PJ@I!(;QADW%i> zCLtBwU=hvin%35<>D-2m(JH4Kt&OBYzg4MR-c0q;(w-i%dscsGklg-{Tj!NTtlVN{ORwv(^N5Ct9ecr_wq?OK z0Qg8P`%yE6({YRyqI%- zDL&zJ#~*Kj;Y8Z!x8yIb+;jb(XWVPN$%@lNpxhrJv1 z?n1ve9mNpG93wXpU!En_og_j^lY6gXUm)+A_3IfzSV~=6Zu%=FXKDE!UCKB+{i+t9 zIE1@}RnDj$k?&3b1{ND14Q6qHgDu~7p9&oKJy)9l53L0XS{PSB(}7oZ?}SqC&g{CQ zlN=wK-f3lKJ=}5i8v0D45Sc#OL5DUpU}8Ide{8T6<^~6tVAsBofhes9cng+|JJ-)_ zJ4|B8e45xrn+vPfytC^B=%`cUeoxQW&6Lv6-QL2=r`nJjo+)J8#1Sc5rC{kWOuCA4 z>ttLtaZy$C>!W$+Mywt>teF!HX%W~t}Ryp*({mvZidF8y}UHw<1M1{=Z|BqS_J_f^so8zNRSzpH< z9ikcSY@|w&VWGCs7WQv-+l%)fZpTGB@+zyQ#y&R}mlBhUp5B*bFM$$rC{DM>`lx1b zU(5Fg(M#nnLhuwC6OUvr5Pjm-oMuvhAXB4nCV!)kOiof2t!OXHW;WGT1S zl?L#zO2QQX+>E#)4uUs86!HLEC(%pOkkzWPp6ngC<|PUq*G zV*u#q46XFIGVKTaZP$OM%#&np)w4IA?mnn}hc+O%h?QR&Y$?y+Uzpn-b&EXXd)C&~h}x~y23sZiZL)D=mYCu6DXV&{UK4%v-_C!b zU%%D{oa@QD`1=9JZz~Bcwd_TqC|WXWa4^6L3UfFYdmNj7wnXPcn%%QTq-H1b~^`}Lm))lLf~tNYd9WDI(1>3rs>cGQZ< z!X59REv9s|YfJEpM-0=R2uaPqSSABkAQ7vJHD&khOSS%Isqk`+Ufqw6U)iJQf<2G$pgK+cV+g_t^POn%M;OC~sL=}hCAkqlI;g{~0{s&if z(BLi?nycVF=|lV<$84`PcIW*05$&|~=P3sk2E)%`%2}8gl+xygocChdc+aK)Kl^IF zPKJhB-3MQ{?JL3NZq@DNah7YUJ`4N0cmqyWM*C~b1TeDtylnEcA}J!fo`cXi4H?#* zR0I-n{svbmSeEO~)c5sQBVXNy7Lj(WEVC$!I8~z@ZARa*z6;mmN6F0!A8-NK?U$Jz+r2G z(oGf!6EckddU`X4-iX6+gaGCY=Yv(afEwsXs)*>;!p}ZxL38Q+yl2b`7cEUZn8pWL z$Ivj}JrT5MAwO@$19eU~b4X|oW?_KuOxb3a12`=yM{sIQKBG|v!BrgQWRL6V5sf98 z>_sS2Yf3q8-ZBL%@WcwTpiJB=;J$@6DGQvoEs$x?wTsHmySWgvA-#?NdRG3xp{D(82YteGHcHK} zonTj8n%-IQ<@CJ$eG&ZiBwMU!n+Lx`qV*nivC}03jM-zQ+)Wo&j*a0UE(#N`S*JL zC_PX;uIV@yxJ~|G9mkDNTG*074(fP(q;M;(_US{J#*9PWq+vkvh1%tMVHa>j!KpD8 zb+$8~qYdE%KA(IOz8^c8iV7C}Xwb>>4_-C@$_P5yQ90Xu*tLDgdhSjLUZzlTBYv`l z>Y#vRSNwe>>czmtSK0!|FyESUc}>NO16dlWA%i+LXlt2r`P}#<)LwogHb{84n=Q_0 z@0Yv?m)Kq}wqFrl847Snf6DUCzH?#vF1zaCNf&_N{oO(UG*4REln(!d-^j8>4GB-N z&+G&t7DnmN#_jQz)D#WU-N0=|Z&xOK1J9a@S^a%?orIy41Tu8h@z9_AzX=xqoh zoBI22$nEq{W&E_WJg^-NoIk^RX_^-GAo64uK8qchgTPT)@40Vn5pnFbNnDh6IYBB8 z4MN6qj9G>hEuPD}?f9gkT{ssw0&IYLRkG`i^QTI3Q%X!8zjj+a+&>4c2e$`%2F?gT z=3>;@@H?ybA(i%Yo6&WhvND|+5w<5CLZRE|D@S;Xl%*PNfRrpNymU~Fk9GTD##v{{ z$|Ytd`RSzVn}fw!o^oJAFWEjVX8XCrpaOty^R#_-clNiWEY*u;;O{a(Dxpn@grk> zHx;Qt$D7!}i_O4UvhfH7X&&Ze``?2@QVkwK95ZTl8OrkK8zlt=zr5bYY1c#Aol@#7 z4t}aD{ytArNDKh}Tr=I5sInyFh(uD^^p`H_#y9t)#100Sc|25$#e}Qy@%oo}GE2X? zQ^nu~Cp4vb;EgKrG4G_7aX)N&?T+VZLN|Quy-#y}ue0Q8CHLe? zKT{fB5_*Dbskwd6w0Y09@2=xL=JeO|cZu&tejJA^&`YQUEj`Z7V;Z`zQAY7+BE_-f zX@!+^s^J*%0^1pM8*QwF)LM-Zds{Xb$h*%9+DpeT_Yu`*BL5x0#x$)4v7gv4gN zL$&nSa)Y6xR3f@GwLBkt@AHMDTXXs=>?{d2lyz5E51m=79Gv|S z{B!ZaK7}|WyW~YioQ6*fm*&Hsd@)}MZ`-)pv^EDp{SyX`elRMH##~?7Oz|(rD#sWn znGPv*PHL1`O_=&ft&jbYl}ht6rWqhePSF@}2R_!sHKGK#X)%_^Ub9AQt~rNIl}qC5 zrNjLVp9%=LYuYDDDF&z*xgn5;JS4B=i~q{rYXes$xj`x17=QC{WXNik&S$kLln!#% z5Hv7Z>eMTnE%aL@<+=WW>MW^vehrTwFazCI1prdLMW)bb=f09ngp2xp z_8L=5dC#>Bk*BY_(2Tda$ymxlbZ&mg0T<^7O{nQ95Tom(r)+ zfAr=((S)DsziaNv{G&tr)ea8;0dXr8;xZUHVe7=mB@*(K{to9YZY{bbjK&3QO}L44 zKvD>l;2f6dKR(frjmAU0RP7`!_>6y3pl?7;#7GkS_%DG$8?tpe8l zd!TP#wE3$oTphq5Zeks^i0?UnW|ul?%Mvk&!{Sg4V2yL00F4Z%jMJlt>tl8TgebB+ zglUSQ1yFeL`v`?%I(tv+ts1-Dw;XZ09pIn2UorFR@T>iwC~KbpU6c?_UhUwAQ2Ap> ztcV5RVS4RtU)SvLlw(T8}jPbEilYJ2Wcp}{ zN>3}C0&e?I_s3%W8`;-pp!KJ%KLp)#{5A5k6e_?$HzW3wsp=ZR7-H~_#)DLOhJx6( z!jCk6vR2-ZrwEk4+IfAHID5Rjunx<&b=XXXFMqSqHk!tmzvKiwnJ92cMO;ehsA%(A zo&ZeJ56OBd1$v#mn8}6@jbF0cO0`Z z$XGM_7GNpcy^HLgg+SUU_phpg^yuU!R`6Dn{O;%eCdnamly(*LV2!# zyVwZ!QjzxF+ekoB>nfaW5-Rrf-g|aBhLMEUBjdPgFs)EoS=q$2JP6#DF6#Dv!hKN^ zpsYaULox7JP&%QHBxn$|57^ZaIisM8@g02R9krPAT9=~gb>A99 zxw-YHg^hJZJ$JFnVE$6C@SAs$0M^Re53zPt4m8yi9%Y1#yk!lAjW=}|XV z!|}$`I$-1%?lNu>_%dE>xWDgLp1YO(K)($(U0G@I#l=u&%|{bsi?w{hIcMaac>o$n3M^v_#&ksnng7qq56Ka?cq$A5bvb|6#=AY;Se$vk-bxE+ce2|b)3~1 za6BkVV|7Lq{c!!>!CJL(O@NDzPs}n_zI3E2xA8v2;Rh2(14_ZzG_JzY8J}8G*jY&l zHC|pAJX~JaiDwH23Lh|ZrUty_f*RNBi@S@}jojvzwkW5a|7D|CS|-v;dE)iQB=67H z<8E*zcVo5d@mt#vrIn}o2j_nxyshO~7dnH;6n7qn4swgkoT&Ayt0qaVnJ0dp_Xv5R zjgP#@(wuG%P$dT`rAkUzVSh1tHKd+txesq%{d@m=kt{tLQ7Gwm_#0eYt2eq(-arF% zGdaGojm<5cuCn!ZOIsyCMeorB?}Ycq9{U|&1a83%vEnwt4+%n_&Te0X1}p6IY(6O{ zkwgUq*NUt&?!jC#$+XfX@p{lub^%?V9dfYDZpBVsR!hU1R2=dbV2L3MG=bCPB;OO< zc0@ISo0q8w*~uQsL>9G6hefG8V=~c)Cic{gkPCLG^K-cmDbn&t*VS+|FvcWfVR1dLD3OY|9fuwGWA8nXCZ_Z%5S! zr*T?Gn?vRA=Xp}-%d~?dCPt(c-Vb`oU|2Lqu-cl6(^n6ZBKvv`c}gzUr)5uMCB51I z>jl6^)xn@tl!-HasM>Mz;L}`O6Fu|sk3igAAaC(qR4fUGKf7KRw#5N{-%v`E@NCvs z;GiDnDGg%Z#YZB3azn1d#5>_unvfe#uy?IRI5$K>*QkTI&nNQA8a~s)K>t) z^DYgn{J`eT1zWsNRp0UZoO2L8+H`eS{=1+|w0%S@4x3nH(!r=w#N)htr$ft;4?vqu z$>cc~<~%EwuPMR9hvzMv8<2!qtZjI6PNLkLT_ybZJFKsuS&A8$|Tj?ZRJG&`{6J(VpKn5-#{^7s@Q9 zlay{3BCtWhA?13@3HJDw@s5-|b@j+LEci=mPa3yH6kTt!EuB{%(PR~;+4N@`*v*zy zH@wMu31fuL#sx=mQ0t>sG<&DD&f;tC+T4iF=xxzZr+KgjwU3TSreLAp+SRT4@2daY z>6h!RcUhEAkvHnh3AAq*AJp5Mu3O*FM3pZPlCf5peJ)mfW(Jfh-QriTD3DY7e7uRl zK^no*$v^koz<5TeF6t}+K%0-Zf`bbVQ2f9wg_N)0L7J3{rSUiCzgvS}z`0yFNKg(> z&T-K*;@EMHvAbDYK9?&#iJ)i9rbiCv%ozpRwX}5idW>?tV6YrcO%uR}#59Y>9`?4+ z;DgpMW#j$H9kmD0cP>->dH?)w3*BgwaLF6Bd!ec4XBL~}bx_>C8UO%F7FHx=nNC{V zLHuZ;i~P1UgInq`VhYkU;ISyeX``MBGrou4zBbUgkZpBBum6k8ynvP~^w-Ul^@vZQ zH@Pk{X^*YLuz>)3>GE3@#70SFHLr?&L*=z>iZ3cL-nP39bO`%-vKbkGKPz%Na}|Cw zmuY|Z&B!@fgW^oarvmC56MRO2mh*k|K+dXcYzNukKYO>M?YiS#F^`9IOM4C(?(En! zbbHK@hMd_zgJ>tOOIcTjKAENqzs65NMgnT1VgmgN0e1e!)3+~pK zov)S7bDobe_=eY;P2@qi2N8fa()>eZ_&P!TSoZidN2M%~5+)8$+I}2J# zYrj$StE!y_z94D+c^+)~Oe+SMIK>8l&0l-_NZT%C?^%Vvcsl;G-S6teGd&KCgglq@ z@&(FGinxZRVFfFhqFsj9RjewkPW%%Y{YP1@jg2d=wKx6<%M9lvIaT>bZ{oRMl=Y;d z{9|oT^k&(2cF2UZl!#bowPf> zH5*Y_v;MZ=Bbh%(D*;ydm^!LE-DCXSpv&@$!U63hov|6su(`p=Q0{pLGihz(erdU* zB`00P7zL?T=53@d#c1EgyG4g$&fLBF?Kf?E8lE3XbReCpdJZ^~?3<2%poQ#({Dm44 z`lRnn{PG$au0sPWFHyE@M+6^Am%e&C6_IP~KF%)}cjxJRjvL3`fNQ13Lfki>?d=GR za!m~8-#jm)53Bv>fzH8624dwK0&0pSc6tflb*>?pDNYG^5;*oU9nBeC^uq0&m@H6g z!kAP%pNK^?11$%d&x!9($0UwbBlwbEn=AWbC=VBOw^7_Z+urlJdOZ1j4j0$S?sMt* z`kyARul&R+G(2mpJRIk#){con==jQibic!Ei&QAwf-gr$7Kt z?6MJt#m1`J#D(%M)@Sqg-{cH(sWu){E1(==3?~cz{TTL+j=s6^RiZE()5NdpTq9L) z5A){8hF&QN-?p4Qv)63mcV5jgUe`3vJ{j;@Cq+=A&L$$PlIw^1CSU<=@+|^C zo{6t73q>E9 z74G0YUVGRii6u%J0qt}Sq_}qu*mfcv_=%KTIODlo|8LDxNV+UhP~cW8d6sr`RCif( zxTuGCzjD6qbJ=KDk6wKW)K?&6hZ`nc73COSne8{JXpi@t#;NG!a|6Xv9!90aMEs&xsg;Yq=S!UfIv#FgXcBWYZ99UM+%!(KnjO~Aw zEaQe7J$703MVX6#AZLDG(56uVWn}mpEyVh$e zlDbO1o>yTV=rYz2{u{*BN~3WFH5KjM38F<&C}9+gKi@*a5XZWXdOMF{f=tFi(bXVPoVMRQj) z;b%MwFNjifl{XSf@KaNKcWoZzun!sK5$fSD;hVkgQz?VmSAXEYD^W&7P%Fnp)yp}j z{p0kD4vFrG`^vDXTg%VZhCSqyme40(6LobZE5A2zT{*@<#ZyGH#)&SL?Jmsa`xd+2 z*KH7DeXGDjkP)a$Zq7*8V9>1ld`=EbAbt&x$l-<_4EH!XX!&T<37a`LXoHjUJ4!QS zUhTDM8#|!7m{#)8*;#1<+h)n^*rtSuY zW)9v~Tf|ca$k~zbRg*i7y*2;5Fhu@( z>$68=AWr>~jO~;NnTa2JY9cObh%n4k$odd&=PuUh*kn_ob)<8LESYRAoa~(Jxm}x! zqmxnjqR(JOxaLjs3%)5K3jvxzcYB+U$~HflQ_(|lO0Um{=yllIf42Xc<2_y8A<<#g zqXDlsR{u&7v#-pF&~yOXSk zKf4}C`;M`~!wg~wEi(6|$H>JxuLFd-tKwYDZS!7Xs*+I&`+i=-lw_!~`2ec!qztOD z@?E813zog2QOS_nr6t6Xn~$5r;kbpgYJsA`h!5TuRa1(wQmwX(&rlX=tk0|~74(kB z(S#LM5dJJKu3o>}m_pm4+u-XKDqA`BBeeeor)(NBtOD9k3?H_#~TRBMmi zW^IE{KaPEybxAd@=`g=w=Z);SpgXp_XK8y#GM>0+`B z`g4NTpu64#4apFV6|%D$RTy)ws!w#9&23q`8unxUM_IXhpF7;zBU!GLf7l=_B$3pM z&%)BTtNBv_)dbQjEx1ziH!}Eo(j8X(cg!&(*P6h^Vw{+NoZ}oQ`|3RtdWBL8ZA}Er z`0q(07NwblaXz@1RP>H{{J^+UnpmyDJ*xzzR-DqDtCwI{E(k2k&MVX*orb@h$e46YVa0xgRe>W+on?O)%dAU zs^4e_q!l8=Uv|rovQV22?di_y&EG6~*qi(*d0=|*zvmF4Y?G#aXR;xebRd78Yu3@l zW;p6?c3VfG;s!S-ul>3_+O(!jc_CZG?@RABU0lg?;0~{K7<6m-d%#?kb!WBAaXS1jD;A%h~;aF@mm|TA3f|rmmw?l`uPBp zoOaH7TzBxta--1j$NKLlKB2-@iR|({WS7(#VgCHj4PX~K8IB<(cN`rTemI(5CB*CM;_K6=Zg z0M-gcb$Y5cc{-UC>nA^k0-h~24RHeM2kLdKeln_}v$X5VUM>1*z3T!Y-7}TF!yWH_ zxg@@g_jcSHOg%5DVdWD{K09cQzjpiPo%)Cz$Hl66IDT;SL50@xiLrL9Pzz<$E~1fmo0-YLW{ zjLGf0bmB8gVLhRU-0(0pUAO;ze*iC8+4lXQ06H37QHl zNEql=vy{nLk@Y+tgA?Gq`cMk8k?=UFm|l*U)Jn#9HKh3%J=EYrk^*73d(RCuXS12nzrRjpk9ha z*KeS!koK!Iw41ATDw|8J_hWSp*GJIJ*=7yNxO3!idr2z32DDQDx!G@x<6DLe(8-Q5 zx3ZT%HIVgd?0d5DozVGO83~(=E=Tdz$9hz3-?6FnT21wud!?MRBAG;jV5$4G;EB8< znd3ksRtF!Mvv(~=wMVlyLO)78SYObJZ@o6>-8+*zRNQvK9Nri*-y&q3A1yRot~6}s zP`wbk|5YXN@GdO#q)$AvZeVEfe>U}$?FW9#ZO1`@<-ztyFxu%7X6 zRV3h`5cC`g&@wck)}Oy*J{rnvsIPwS!E>ItoP6?P#F034iVSp^I{5q9u$k zkA3SDxa>p@WHV9j$A>zyn? z|2G^o>FU+PSiKHa<_YXBz3m!Nd@OxEt1hk~_v}g3tL&;8sU*Ym==C?9uS172-k#C%-M5i+j#uN_+g9QP&mp$E0PP9?F$R zsumw+?HPVk^3$k`X0Fy7DBU)ie+~Auf+7f~VOuEC9_j3W2VY4pH3*LWY?Zzj6qG({ zH5=jm*CZ6|y{=6YQ2v!Kt6XgBuyoAE#-_BZN`sL`*WUcY5UyEVul`MwWv36T>Upbb zE3rzb?_KKOgWEgm2=~|(9?Ya^D)S=MeHGS*1@RAcv1_AHVD;ak7D8}>>s*iGKUHr5 zg;e9-Xs~=d2GKYk>N$N1$y4-a6y}MS4Yq~6w8!ZuDYuKE?Y3iCkRj2-iNW<)Y_v)Aq^c9 z9bM(n(pELym!tXu5o8uZ;j}yu<9h#J2kiAbZCv4qxw*kBM$A>Z096kX#y33d-TpmB zro5qt`3UgbQ=ORjgQ?ifVox*<4bPxCeQ*ji<~T?0YCz5(KEM(H5W*v)-AgmxwarSd z_pRAC-EYDDcG_Sil$X_F67AMQa^S1l)8uX8{Ii9)P&%(UBB9ijWFkfozDT^k&Rc7% z9Jo~Zx@3!_J7?@+w}b1K5>EXAGULvVkhzcF6iS?Ign_5xd1S&;;?CbD<7z2q35R2w zKhdH9VZokM$!Aj^9lLeC z4bG9*G;y>U%g*dAVG~V`~!vLa7?xO1Rx#&&ny6iEe4s?{unFyw?Q=IK5lJ zZxq-;wX0%|rneDp)v2R&1(m5sed($_yg%d%id=0D zE)Ef9F@VnIpS_fUixNQ*gTu>(jxH9Iv`fF!INRz5?T_RO-$CXG#D2!))ZRc76_f6- zlj~1p48=QFH+)IiV@?Y*e46NjYCg~O+TNCX&6kTaiQjTO)2rNP-dxw^P76_m1ik`# z=WJ%%60Vr=`()wnjc)l4jFHBD^->PhAGTUAYyO<4#XnzVel~k~aRd~uT#7Ec`S9{! zp7cg|nPADmugn?t}u&H=#odsqRRRYPh=}#I#cyLClki0PSYZNDu>n>F&34^Ndn`NTZZ) zR$@A9^jGSEtYocLC59dSfm%+lzny%ooHoTc3ahzBL7i}NPE521{;EpA2<=n@@|0vt ztJ|I2GVKZ}(W`+OjOf^>i4p*E7AGv6r(?1?N>?FpkV*?chE{NjexyG|DvZ;(?BkGS zPRKJH`NQ8cc#&yIpEe`xt%qc_xtRQCONH zL6&kcpIJ~*Ds>t~Pw;>{DedBhIDMCPircHAkg$};zwxKnZ!(;ybva2qWvy@-C2KatUhTs5n?0G` zYgyFm8_|M&U;o-)YZgTLDq*bFcCY`r2cf%_ykl0ER#2?l&WPXquG&P!vS+(q!g_9) zMD?YyTd~Uf@UELZ$uv$QAT}qockYwmt6-{B|7x=<46n_PXp*M3$;)P=o0e2KVC=i) z2i8J9J3jl>(qB^a)0{Ads@L@{bTf$7D^~%-chp+-EDSZ?JU6X-ZS3b!y~JJjEo0drrqb*wAfg?RMmf={WRMWFol@wOCgu#OO1y_|wRD>%ibsxA- zh0R-+`ne0neSDB2@$*N3w!1_=yH`YzXU&#P!*!=SMGI+@1x`XX?V*AUq-wIMvMlZr znS$^J`lrtmbRlM{cp_oS5Au1Qdxd({Cs}Ih_U+~2@4yc}Q`eeK9n5lr7QI%ghUsz} z)>^)!48kfvf0vyELejxa3mu9fyiXlLR>)8>z512@u#o|JTLT}PkEqkA`wH)9g+&IO z$%NPby5y}nQ(zCD9G2t*_p2qZB>bGcPTg9^T|!bJdX02YRc!yWjLh6{zGBSFNfiY4 z>uFXWzp}{WoX%~JA5L>+*!r?RRY?K+28+`b7VLAIIb<|-^a3ff``4PB{_w_!E^^q8 zZ_*{t_|cF_b4*xzoJVFY7F)OzCQw6VHNeuB97FC4jHzR^oCAyfY#!aJ4#tP?nAF6oV*waco3%g4f#@cN2}9 z*ozD?jj#469nw#R1=!qp7L){9Badq(+;z%qcWlr-Q33YAFrU>oSY( zgR^}COM>JV<;UbxtxfSx$Fpy1?*E;?S&jLI^Er}~HzkOLE53g);I>VP8tzVid6#+W zneIxY-)C!9vxpP4q4C5$?$^eOxsi`H+BEacz{6wDvG#^vL?iL7luXoPTov4uz2dJ{g@g)?TLd)V)?;_U+eB`X;P9o`Q{)UoV-*1Fv9P@eF z#*K>pX&@1q7@3&#mzDmn61}=6mA#6KwY^T>64DEE8Es8Gu}sVp%oQW^69tCV$9U=5 znXO?dpG_)`k@ive{^jbK^-CP5xwucype&g(H!DMxYK~lI(B+4&W0Bxs*doEh(d2mZ z@yFDm)qJP9caBD8J3ZGxCam=oSc?XUXB)^!J0}`-sjh~_p3uO7f;e1d^93*W$us%q zlv`I^#8oPnfx^Kru#Fv5Q^w9zlP{+0-u%YBejQ7Vcq!??M0^Fsg*!F_CVl>^k<@NK zQMX(vk;SVYdJ-IL5Su7l+ko9mGJZ@j^(rVk84G`0gckiNAoC%?H}r9$?Xqk=}p z2t6vQ%vnCT&+)n8)vj;ot~O%XxKUQ2gNXaY2I6FoeFL++F}gJQTJ+=YcLNeSZ1{B) zPK{|-%1r9R(pP!+yr=6iqDwR_on4J+k$Vy7LdWl@-0#GcHGR?0(XxGBV@v0|eyTok zEq)q$1FPKo$`6f-CW@n>=kFqL@|}k}7Hs*E`_KLd5^Tm3*_?CWQ7$iav0ps=C0z`3 zJ{;SN=lEbhs7O6VN5nwV>M0$V(1PiGEKCH4caYTHeTf}9kC(K*|G z0wP#iQ3G;;&ufC8y>Hw%``d&kn~#RBJzpLHgc zM%-L^xT*e~?0ioB#DpuNOwduK?q3PTl5|!xOCrIUZ&;+J%;wF;HO!+jdR@#lDSqqx zO6xuv*X&%uG+hYX?381f#?D#qfKW!iu zZ8e6MZ0Ahenyv?LaL4RF!t|7fo!>QD=$CfUvZqcJ4#0@tAkwMXx#!XV4m3l?i_lWf zkgBJ!Hhn%*c%SVn+3x(-bL{||Xz{nL&tk+ON}{-E>DV&#&I{eWG70yTb4NkiFnEob_Wo7QgI#cxf%i1B6&QU3u_@y)| zlLDZ>0ZhHE{j=in^d`Jb{tF-|v)Jw__jJgpl3}w)cv)XQ&rS!s&gJ~oVGg++Z3B_`K|FZgFK_p+cP(gaV(s`A~2TrN9_x(Dxj~F-d8)kh{JRYM0nY4_w zxU47dwwwF^Hitaf0My0&S$eB4*^Ll<{Rl+UXdrHm`VI@TpBK6v3USjqW^u{0Vl4Ik`V zcy%XtxovPqK#-l$;)EqS*`kwOlWp^Va1sGgT6{FpUIj9rCNWYhYn#j6rGBh8x^_40 z(P2jZA5VrSf~&}9#(7LZ?bT>k_^o}4a^ zwWOFf(F=oSa4qcFe|%yi?Lw#r?e99)yG!L)N@WED$JUQ~+`;4^uQ$bH({8>{>R|yc z2jM+3#9pFBE_Nje&drVtuv}L3BvG}8?2N_uI<5AtL4(JC^ccEQrMn*R*zo0^4_u5z z^xsib2V?#b|1Fg#zJAW=XG>*>3Vgt*St%o(XVE7BJ6XnFzkkn~9OY92UDHga zbb8<1f6F+&!Wp+C2B=o46LC1drcI(HG@4ymOKKjDBEnyvwKToczVJXo_Otq4RTj_3)b#Eu)DX|HTA|5}G)Z}rm9ps4O|lC|#woVk zzxI4-TO3E&Z8Wdc|6wb4a$mtc3>JeVztNj`0NXX*eg7586~97VQVB(ctzfZ(Y9ZRx zxj1+cGWtHTdYQV^y>7Z}isY&L0_`nmiM!eD^~la4Y|CJF(?!ThA`wgRTN^w0z(MUH%_8&?=dY+~Nd3ltX(;^M!M!)0A-^$=BAL z5*x!&$UgFgNhXz-Ax711JsYfYDw^s)n7Im`$R7RCGr3p12@L4yfll^-AxXGAZB++t=BDwsh0#d`1`fGoG)M;OIZc3l^ z{y(bDGpecWi}or?M5-bZYD5I2cL-fTK?Q<{fOL>9y%S21uF|DNeY(0|90|0hTB=BKNlLw0!beJ74ly9_uvXpSZ2uOgFI&n>f=J4q@2CKkv`b z(f)`GDz%yU62zJ)+$L+d)+|JDDA3j=u;+1aTgoA$+G3E-SpYe2jr%7t#E7_2`e@A) z;O4sg&>erTuL962`@z$(B|>4eRZO8O8oFpz=IgW@bSBy;lk*Phs?_2=FVO>-;FNY8 zGPt#5pQ_F!eSn{~-}uPDgp(T)ZX)y#;s?jA^s?OZ&Z@QJW|QvAYpi-v3{*dLjCh2(kE}^>X(!W0zTijzbY+c zl8vga@mp}6Ape>}S>n}8gE4kq`4ooc9E{7ON9;l>y13Mffu%dLU`2kcntPi{xs-$( z3f09#;<)(#+WmgHJhUx{shGFqe`s&0)j8Gof@@&WHZmbU9GgBf`6&y(!jTrMBV+tX zvbFD19Eiq$g%$LdtjS2AYnUIiOz&VnlVg!Z%qMaiDuPLK19*L}Y0+64)9HNL@y>!$ zRr$u%H2>$y$Df{$JsE%b9TsaCHS@5R0P;ZwZ6 zh8r#PNI0$Hv2c_0W92>1g)?4eyg&2ojz-;ClKj;Ciq4+kpT4}(n`$^)*_rTUxZl9u zp@`4lpDQh51j1AH<}(n-7Wk!Frewey?d@Cx>&3L-g3Ri3w|J7o8ZL#nKXc`dge__& zFe3k8P|hFy$4a)skfddC`@^-9qNzjIl(*9qhOTj3BGs?jvm}z^nFa+8!#p-uvRO}E z+XC-h)27RA8@GB`dXaAH6ukNdrF}70i?i{eNIFImx+d8i9A`s7)(97cgZk|z;n`dG z$m57cUBKW+` z(fy{O#sb)<^Pl>{#cNoJR_vEsOLsqnRH@#erSx3U+9F-;$`Q3#?nw$OD~dB-vW0Hl zA&L{QSd8N^I?&9QHZuDE=X)iw6X@zh{z$3Ai~1<8@FoS2Gb(tvlaw$e1Vj+P5*MYr z@;e;HM?Z9UGYP9i9J!aV@3!ut7ww>6ytK*4h|tYZR6JHDX$?_A7io4{s8P=9tgXM{ZmU>W&;k2~g}1j~>y&^YodW|nK5a?O#L9K>X_ZTc7ZH$GYJA@^Z8W0XBh&zPnlzv|*?GfoXJ zHl!&D(^a4>6s*4M2CoxK1O@aE4X|ehwHFOuWgCT465Q6|+-0@j>HK*|(mxY?dh3HG+`ls9r5p$=lRtd=RdaxXk3ECulsy|l_3Ae zVy}NZV?g7;B~|(Jfl~T=*Ygv&vF{~rU%Z_+q|3Kbo}kNIoxbHN!SA{llq4;5`RDn( zbOZ*;MeLdo_*?nz`<+!zb@$Ac{N~BrQO>6wK+G!=`9|WCp+Cvd%Ec5WneqJ zN2MuHJ9gJ4AY)lu8%<0xAThN_-ak^rYFBAjSX}y#C+ffM{XS#2UWTafb`GqsFWj0x ztF+)a27+nYRCD}b92+X9udg3oAic^Ne&y#5KNygL8!nir-}N&SDIbyV6qVW?(ZWg; z`0<$q_vF3;E^oC!j23yl z*<)X>2`7_z5X)s<8cP9hxaQ8U;MNH;Z<;$NXZ0@@M6W$CR0;-Ac;e^J=1=rmzukhd zB;C@K(v&31DH)b_bkOHGn^DIFM}H2AZHiM(0t2wH$gfmx>L)eYUyRd(=7$P#y%+HU@NuqI>A zf}__Ec1Yul&1h6p(({AA=3ms~)NJ=J+g^D`9InRQu^CWmUVfno#Bx7_kcNS-^c1Qf zb09>W9>M~4>BMK(uKWlwfX9p;xyuHK7YNY`uYd6B8Vxo6VFbHT1-eknf?Fl7KageP zKds6bQ!nIkO53_6hJ0w+!OaZLzAhXy;ROy+p*Qej?xAFAXw;NA`tLw`Em3aB&cwIP zWfvJOWY<`&#IBXBhPIi@T`E`F=@h-&OD3jNtrcK3U{5d}g?LhUngns1VmxW0mYV}U zm~k+=itOBMEunp92}rSFW*p(1v_i5U> zRz$PWBMH>kAYO|07^!2(vC>NPFNu^ukJ?8km2|bJXZ0g;$Fv=03kiABrrbmQ_J@>w zF<#x~sWSV0;3}%a!o{AxJ3vae9p$QdsVPg|u1?HJ%zh)`gfnrpIk;$u^t!@{vK$U= zLUnD z(GM6fwuSwNaGH2IpKPl;X;xHjqi%Vo!SY>i6beQ(f;H~syD{DBWs{r4lSVJ4AFDT{ zO+#R9Ln3N@S$(9w`=E&~=we(5n5P z1pq7rD3O^6+Yr^tn%fL{Gf`5dF~AZuM{k?6UZNQPL24KD8KZTkGFRAUmGL6^*9Ps& z{ri?ob2o`RQ5>^3^$&(+*2R`y$k}G7m8W5B=gvF1nKCupt9VWm9;{+H`3F6F7ghjC zn4OBTa1Bwf)>VtD`oE)jeimd6muS%C@NtBWp}ST?j<^qT{Q#*ED)2aAgE|ux?4b(2c5e!_m$%!SV2*zJ zeFX&`>OUuI+o7<#E1g`#N?kF?-~qAkXG>aqYZ>XP^&w$+<1>N=(5JliK@p~a)?=5$ zylbqS*>t^JdS^W;3_91c;m1^k0 zDw(7LBiz^WH7x{^K8ZYeT~CFQFEhlEW?sndi36R#Do^J)SJL-qA146>XmWU<@*IJf zRGpw~M1SVQ-G_gX*2&7o7HWVr!Vh>h^$B=%{k+o&X6F$081I?AmW9LoP6(QVr}>l} z>F&`w!vF30I1!38^L2++i-|;=#xZrM7rUGV<_*8;VsL=en+!eAAJp26G@e_JODu}0 z>6Maqw|%zM+81?)r3(S=TWLG?rqdFSqTXz==(Qn!=qpL-r`$cmfg8h( zW?dXE6V&Jaqx;5~uSu1lP!ICiAm$a7A)lI2LwlS=K_YUi%R z3)X0!M?pWrRoRjr`LhzL=~#=ZrlgvUrqv1bmb8F0z!RkcfMYa{g~9yr`-amhEx8ol zkGe|H6Jv|F$q+WeC``SS7$bO(c)^X8a=tC2LxfVcleoMWh<=YC2$D^!LGEW$U9uBH zP|f#uPbQ8dga_VT$x3)DYr8tGyrOdZD}c)kw80>#b>V6fx?raj5i0Pf>{GScnxYCzeK&g zeA*Xg`u^_XRx(}I!7)Cbqs09%L?sJVhxWQ1UDIxCCWI7H(lLuSxQoHGeq4{#DVT`V z@>6X@%u@9hyZ4C54vu*VC!R*wA_tRK>>V(HtQ<2TbXg{8JngtV7HR1WQdjztL@n5) zmDYhL14pr9m&3MO?Z1A=xBwzoOajk5JSciF^}e*bOewbFqA*VMX-3N=Vlg$;h8rAT zVAN)lah^L`V*@mp{&k$~$Dy;GlcB=QxCJ6nMg^_kW0x~U-Ek##(o^ho z7P-wa$0`|qvC6h@

!dgyu6#SM5hol2LA&c}aAsR}LjL5yqBP=if#VO~mf!3p&lX zaixi%P}>XG`sGqfVLSR^ zwsu3E+zi`M+ht-6Qpb$7{bWsa_ciE4(p#N>fF3eH(jtkfEo$U#mQfHKq2gSyqwXZU zfubWF83RI_*R%XDmQM%$VP|$-=c*5|K(x@ephwAv0P}SIt??=mwKJhg7WB4|ANaLzsa`GRNRFUtDVS$hx~XZ%Z7l!N{^GVmW`>` zmGha;^oHH~A}ATI=`>bPere7^L}}HTBbX>?j-PWI9a;223S2lauSUawwnk5Z#ZKMD z=k1QaIu#h8?D4YpwM3HzRm*1Hh%iZpw3PxQBkkLCfpKzv6H5!RZ76m;bz7CO@AmNo z(mi9+?EmTv!7)cKe7PKLQ!okoWxAYMy<1#^<1e8dpyZNf&f@Z(AXfX&lzkrv)rWyg zUA_w874W8Ifk5TkB91!;-h=;-AS*lo9b<2;TH*qv28=TOCO9-qzrHlgeLzX zTM3kA-w0`=-=M`Y3^|OTF${^ChHdp0BS;)hKZjk==g&4pJ3!>_6--L~F}*w?c&5D2 zgpHnhW7&e=N4Mcet0_pbMiYS;bu;o%KlyMdylX3bNK!l+mPYKSwh{Jo)AS!FRXT$4 z)1S70-#w8`}^#(N=o;vC_j{IeP&JsGpJ|By&ddlfN=@Y|x8}axjQ?L0IV# z&k84H1TM2wkUD9-`&&;k?QHyu&T8KWN>BP&a}PL`$eacLXvmUS8Zk_(%-jv0rr}7Y z3lPpcP-yo;a>kIfe%ej~b1<{c(RV#`3L9O&{~AS5Y?@&8xpGF(OVLAMtJxr;Qmlpy z5Ml(A0dF3XQ~1eO5IBrq&hXTXt>Wa_rO=ViXPNL?jDDyswF496lNYn*{^^RuXV;NT zsVr&JkVwSK!l>gGYhgDas5REt0^NI$mYCQGU(NaRB|1G}^>nGq%JSg5sOe3Zc0MP(mYye28rs~=8seWuigE1}cM8A1* z`yY2G_%B$1qoAG0LKoDdV|!g!#*q4b@-1p#(Gpav4DE#E=OAkJ8J~oMtT$K1}QD2HOX82O}#VmCHNxaqFq)?Tn@V%b~iFQ|!C(YGk&eKID3 zk}ygnXyI64i3T_r64n0vLv&x)uJd>mFy7 z*zK|v7vkU6x281Qq)c(}ivw|#fttF@#Y<{$2oq$I$Hp_UJvRP&@B+$2qOQ5cwASwo z%-|$xqBp+j&xqR#%`F6O^4$sOaT!m7>lvJOaHrjH+O3+b7HrQMPfDJpI(ildD#i=8OD_ExqZU7EOmziagNt-*Yf#M{8Z zc2>G6d$Qj?#7A|z!Ty?b9sHdJ#7}#_#SBl{1P6mcbl_H9{yxsd;E+jR0mQ0hz5~RQ_fF2EVpqQR;l{x zH76E0vs08HLaF7uygPZH*=Gdi1rXp^Mcef6`-PG|% zc(gV-p1YsLA9oKQj;D5nzIM**rw?35NB3p_;=Ir+==yiDsucbD=F?4_BY!XHdVD!W zFxmZ}i8fVeOxHWJUtWFNsbPbDd#>RGH<7=gfiJp)yfn^rJ>%q0haw0Ub8NXn@Ea^U zZJm^uw$1t@AB#N90a_C=P5=2=<`#0y%*+EoWvu6$>R}j{iITj7V@8R4SNml&2S;7| z56Bp&epishl-YkI8Hh+2N}zHOh}UsM2XcpYr&EcA_LC4>X5(85;q!z3V(CvWHr4fH zy=~93S)taYhoQ{9mC&4p-cd)EX8Hw{>zSA_+P2nh{prHhv(GxxpGlERCFopR|51lh zettg{+1NhvNQPSlE2PEbnb?McdyWF25rfT9&W_W}exPvDP zG?_kJc*l~fVs$trRI6t50q25|{~WW|HVtShG^a$osDZcA8Y|b5$M5v6k4OhShA8oi z99f+vN-P$6oPl^iv7ONL*|E=fVmwOJbB>s2=1giW!v2;zc|!4m6VF+Sq=NlU=PfIf zf}=M^iuht1$(wSe4CxIdImQ9xnU%4X<);{f)?(X;K)82=Tc)R19zs$_v^H+iM!b`f z032Ghb>!GH>bvr-?!MhOV?IbuJpPsLu*L@VwH`?n3(SI)+C%Er4WaQ(-(*ArwX(vl zragqu^W%qjPDIb_^pKmR?5OIwDbpEKi9&!?B3njsX;kJGPO(lbYt=2@D} zWq~FKnCA_&Ca@d}j=F?u*8M{kKA*{M_0!E9SWDVPOFIXzsx&s(CnoNe#!DXt(^!5H6d=yLo}?Lm(m3d+b5f{>&)7QJq(tr$o-cK75r15P|MY`> z21j4)*1?9V5|I>kIHtAK_mwR>F?LK>bc9v8KcEpMI;fNbby$|DOU1{N9Q+A}?q#~t zIBYQmv#OF<2hP^Uu93KT2A%ImBBP;NijF2N#k9zBUkI!>klMhvmpXrcWZ7AiPhAp9 zLd5-6?))~T?WqHj#uGJG-npbIiOmys?1+2d9SThhC}IIp7>Htf!?VYgo}#b8&0Qs9Z~x~6eTl?#Ou zv$#$oPL#|S^L4;`Y9lj-g8jS*Cr_}2w@l!tqp-=$*8H{)6E`8H{F(JMSzbX5TV%zj zA1y`N0M*Mc8dG(UoC}VHYQ6!&-Z@^@Hr@kHrO8db(UX~A+NK}EyaoHuvLc#P29I7I zaLA%RclgX7WO`T-Nnh;^v{&JDX_+10&_iLeZa`Jv0bGZ!vXt`MfW?oZnQ z4#QOfaIgx;;?3WVy&84QUEje0h)p~%Ww$hjsHWIj?46? zp33=Sw4}*A+g6z%y~>EcSrgMYMT6PFtdpf#SDQ(Z8dPzOuK_ncC zY|~xJKP0%phu)!s%Tj9=yzKo6(QVU;fPc*GS45bWR_BL8;3dYjZhXt*41xMEwK_?($yq#PE7n% z?;%P$hnYtRWg2|8D@94{rV*L`WWx$gxyS7ZHLs=GrY=pAn8;mA(rnthbjM8Y>%^vz zwTvhf_!svVyU6)HIvWvRP0-$qXEQc(?Wsgl`3j zw8LL6VH;kWynoGAOQwX)5&4wn6wk0K%W}uJcH?1#qt%p!D*#( zZ|U|+=(cBlh1<8mWs4sxxT4&q1LhEBvaug{wVr^ySXRR7WGwakO5bc-k0b>{^5j?zp3 z4A_l<-Vz3MKxy`IiSBq`pEptUut;Us5U1>sd%u1wWo!uzkwt0QuOi!8l{JylC+A!y z6~hu>=tj;Yl9Ypg_tOE6I|2gC>`}?sq0Y6DPc1VZkg+0*XoBw4XN<0xQ)-H|FyTG!ZqD{E!Tq;nP>0Edg*1cnN=%f8zdm21M7|^GM?;Q0RZs5r+ZOM zfT)I6&oXXiZ{mb<^802M5_iW0O_s^($zGtG>0-7tWy!p#+dhiZ$sVK(^2`&S0Dgk- zk-w5l9onn;0MTP|gHh7W`e#+u_A4CVG~ zyNb%12S-uAN`_cJJ4qcZrEPxe--e`;*$v0Ej0vD4?jGHcBIkB+vdIbk97MkNg##=W z(yEWP3lqJbh_us<@!&E*jUoOw6PS_%bWa1>d#36gB7}V62V;BMx|e_Y+NH@_RIo=I zz3%h)&WEduf$i3ixL{d`Wo(>HAsi$Jd1Zc-!G!GoaAWLs6FG2wP`9Gd`Pg+`F?PihVlBQVX|A7X8RY!ByKWclnxx zf~8Xd1^+h!eO_7VZQWPAM9PgQYKk|dJ;F9F97gr^-2zZuf@z!^hP$VZC@0R5XW z32+hqGKzM7e?m%Hfg!DY)2{%Mj0^W`Bck_Kb|DmV*&Hq)1Rfh-Ah&ogtF3qcmpexk z$nS5f4f|Ox8<81bgkkH``kKk}w zTb3AvLNra54jw!^S9PF%E?dz5gqSzyQo@NsH6)N2wQ#Ul7eSi+>nDWU=Efmyf!)H3 zl~Xo5LPwlXqyhXK794&T_luUsgbetxGILonYBP?)lKB<4i=FROw*f2uroWZ;iPTB= zDP{0FPiYtKDz20EbC>j?2ouY9&)*zk@z>Nf$zQ7Mx1sk%5qpkk8t~3#rb(LFgoH>L z+4Kf_mN;V<^f=JLVT#cbQcJ20D&6)^Jbu)WmlKqk|9+yr5KTaEh43#Af{2?9#VEr` zYQ}Eq#Vh=Biyd!eAw;eB>0ReD$^bnAp6&IQDNhm6)Zk6s!Xl+ zxBZ(XQv2y84~G29wy~6Axuhi7y33(_o!gXtLq;s2hCbIV5bY01Ru8sn=?9Vm#ro4_ zwY*na8~XXllX@3l0EwRB;;EXjEw8wvK?3Ax(WX#0N`Hll*Pu31ti)+%h7gM~JlEKz zmr$Xkw=2s1*ab|MAuzoit4YR9*t6!#Gci8k10c`{HVw z*C7e+4PBzqh`S5U=J~~iY3^lkd2GW%tGjSd*gsJC*N@O%pk=9qla4a++1I&nVPYfx z$!-(C!yeOZL4ysa6S!h@wAXLeX-<=EaJp06?sSn`0Z5Ba8|aqnKmEG%Rz6#(9Qk_7 z_3G5UC>cQ18Hq6^g5sl^;h$?7nE|YPa^PG}IyzrY>fS!9Ir1lXV!h}hx>5!ZY5Kn0z*JAG6%%2C*mo=`p!0ueGr4bXMP|-rv&pEuj zy-0OGYM6hNWp^f9b-hDR@H!y+mKhb$xS%{#S|?^d!C!H=%1 z`ieDJzX^rRuf?*6y3M>EDXl1CbY}x_O@wj1(b3&{&L7lJrnd1#nFs`9%XC{D`UJwY zzR=yyyEKv5{SIoBShA&T5xlu@2|F>yZ^`((Ki9O@4$}c3VBw^B9j#xGVTX_baCg0a z`%1xFh7)5E8Q=N9L0lO=CYo~7AN7|I;gx*yrUiUPXw#0$ie6mBePIjy>HVLb(ZIbr zuK477!h1rhV5ZW2iuGVQTr1Radhh@~Xb3Y{?j5J;gqGo0vjA!QID)2NqMkrW$cO&t z9GW5Q^>;Gy4@nk1d(R^fOl?ytgp*4lm%hu{rRtkAfj*zpQK_pMD3pxQU4rA6%<2@3oJ!|4}sG06n9d+;`yoBgUI%<0>bt; z_Zk+?_m;0b8Vyok(1Z+y(?3rJ;B8GSZ2UH!FHe77bIi^OrkjFF-3#G8^7fi>YI)Z! zJUAsJ7EvSt$fRaB+UB5)iXaGt@A_BrVLhoQe)@>)e&|c<$({_$PT3wc$o!J#@H4h7+jiMeJ|fv9GveS6<-GSRLT0Oe0Oo|GtX?1tmF^%xeNshz*1X~ z&6$%9j`DkHRL*}(%4FqZRp4x7I=OLZNvr*&?be#hJKj{j99V=4WPO@!jkcL?4Y=hC z<2RP@)6b~1vR~eO?z=3w)@ibNzr;(S-lg}uj^J0!_#%TZ>xIUpXf=#xHAO%I- zV|D4%q9iIN1KuQB=Au4zrsO-cjI7K^yWhHKi1VS_RjIL?MWm&jTeH%}UU$FledH&y zgaQg^V%2E<-P3!}Tg`|?bsv(Y9?AQ&8{IffB#2FI^HN`~tnata;Q1Ik+=1ppt2=^=k(Sfs3Ak_~0kM*O!DH}8#$Z>sq4R&ZkbfrW; zj}ZZ1UQ^6$;CB8EAX9isb~t2f;^~QEoDvh8j%`g5Bg@L8NJqz0Rf4=~+XdLS3NCwP zq#(&&TWlrBVp(L1_{})E-m$Fuzmi1BXa@08aW%^LGMr?%iTzf4OAoSVtwVh&2Bp9>Ekb&4+(KeEZYG zobAgXld1YZ2#XsoIqJy*iJBFNoKLgI2Z(jPU@^?f8wMqs~cS zj~SJvK$op7LR&ct9hW`XsmmB0ESpy~c-s-3-aIq6CkuSHKWhTigStnpRMvpPy3(6M z`JwrlVZP^MaKvMi9Sec-EZmk(bA9dBkK*ZzErJT#x8Vm1f#Bpt*Kj1t;iJgvy%Zuh zXh`S%mBPL#4jtpBP`kXEXVjL;!8{clKzfne>hW(Nfy+ao_tb!RWrvTkW!uWVJt8hz zz|(vl_j{Cl+0vO2s&!N_s7VQV>?HYL3?&dVo2u+V0Q2xGcxK_Q|o!FMr5tOs<{|P{f#sFgELO!U~Snw{ZGQasAJ8p1AUy2y<-gu z&{{mLjZGBHtfZoRLekb7ok&m|oW3$6n6CasneY6$Uhv`lY+i-XvQVu=k?WlMWGP_; zCOtid7IPBw6|*A?JJbzT_WU6vhO5+kvipoH$AB!3EY@uycp|hu^ppBrZRSv&*tX`x zxGBTTM1};T6T4hCq8{>6rv_S@|CSkIwWW>kA&P2}2qR{&VX#cI#=9$U4gNkTFFLkc zc^TyT9mun}cF;yr`Twn90o_RlXDfziq7aJimbc#AlBE!>50`ek~0DQf4je*Ui~>FnY?Vguf)P0ou!@V0JJrdUst)?g!NOxkc#c9P*AM?ds6vy|7FYBe_Gm@TiNt?fRB3d+?(IPX?TG^q)slZn)RMhB zs=X5zAd|>=F}YZF#MyFs{mYdMd^gEF1AjhNAX`;Suuy5=HaeT0tmbAmu*(23bbnr; z84~&)=~bD{c}LkqIhFjd>ba&-+^xP6lme4QO7cj&u4l_z;AstD5?dY?Ww+egjTBwT zZN+r9#BSZ15dNFHF}o^xSrAisXpw-&Rr?lg{|&svuFAyS86{-GT5%EB+TzHz9j z^y2!cSYC1diGo>a%>uSNKL@F0&#Lnt#3D_g0%V^_I_SKhWUwdi3brF!1uA z725!V^|zeK1qFDLn8o$`XlIsc{yJtker%Gk)S#(F)b^Xm|%5R82gDIjf85@ zF6(+jQj&7<`Pb1uWQ`HmJ71?;(X~Hc>xf@#xg#9C1sn>ilQh}rZ$orL&KKW`OTRFh ze(7B%{cp0%24hP=cWQTjcVh4vL7SfkGY8iFv0ze%DjWv0*Hicm$4)rZ_IUEM_IMfL zLqYT9*uURwe`~Md2t^iCz|TpNMfCH$;&3GiN2XuIP-st3=`T=5b}T+KZpkG7eBp64 zw?Rm3mIsEXQWTKW_$sWP#vyJXS?q>f2j#x~u7hUKev_p7sjSJ|0FjV$@O&>r_Z5Nn zO!V)Sx27KzuI-p#L&$TOi3pQD%--#<5@(=K!AA5W09l4aP!_hYpww(|!SDqaYp^#}}7hU0R6C8!fmhkRL5}_&Kd4|6aAa zYgj3Ut}jF2Mo1Pe`IcwLGM=))^dg~KgwVKI1q0$)6~t6kV3ECK`_QR zk4zHER8oGsv+rHfYl8jP7CQoINt~ugZ)G+04$fQjM<40fWy1%u+B5G=*k=ia1yn}N zwe?T#)%~j!X;^Q0=(tn#NXpaL*)e8?y+%_iASFmM@#r&8R3j(Uz41}AD_E$&|8iUI z(iUB1+dNUG)aU^wSIu9qXT~YH#Q=j7plES-r>;y<-Z&*dn2}$kW6G*JELc-};(_zg zUu22j7FW2=0H-2AS&m2t$|1LVr8-YQcqx6@2LpRv`IHQ;Y>*DH&?eK{&mcgiU8O?^7vJnj~ynFGXkMBWeD zSxXufMes1uP5j=>Jk%zZ#}$GzCfLIVU%o~Uea|?r?}eW)zLrBwsh^O`G3tqhGc$)s-l1fhiKeVYo?M}69jjYqc5T#c9joa4 z$v+THQzA5KRln4d4K2b??{hPgt$r#%S(w}sGbPp@Nn3m~|Njsw{u%qE5NV9$L@zy` zi6{3VvcM2gcVzHAXp9^Hf*5-@quXjXtQ&^=eI--QJkCD}43>8aSFTdL%hJI4&f6Fo zComEEsQ40pXi_G1CRxJ~w~(8;Vo=i$<5&BkS0fTK_*(DrSI?n$A+ z*pr8Dap(GH_=O7Gs@tfVxQFXN#enYqw9nj$f9Z+gwzj%0dv?%7fa5X{ zygunm8-$cTsB+=X*?Y{umep4OA2Z?TI4fb=Hvm)2-@E6P{!R6KH}3=}e4|RHLg_P{ zjyfP`UOeDA{mCGBXlEjvz+6}927&8(5TvF}gGzQr%! zFpxl_g-&sAoosS_DkhI%V+-2*7`8!`JwWYh3#c|rHHE7TknRV-v%!I7rw#UWa zLk{}p#zg*7E||zi&f<4G)-xX?0`<^5#OZD$FWY04ng8C`{52kS8ZEia5gqMAI#Uq) zK!S}H@Y4_54sz(o@>>3E|I^geH2X-t4QYK(*{tuNFl|4uF2d(jDCOfp_$mmIx=>sC zSq^5`q`92H`R~6l<$QbPBqeRZVA2a>xAF!SzD`boJdv4gca(#sguDo!5b<$+Q6$*m z<#saXStG9OM2qY)4P%;kP+oxE$U}mwtct_YL3!tWKLBywNA8(hkRZ=xDL z?_P3$^%*2h(lw`XSg0_Xu!{e8m$fBsEI~~+PN^@QWEsD-=HQ-t`o^HN3{1UPG9Pd= z1@Lk6!2i_z>7?Au$y2de%=Fn~+MVN7rx&7>IYfaaa2lFV1T-G4u)U}N{1ERn7@a@D z<>KiqIFqgoKI67vM?9yOi_aj56cA$+cCPN)b)L)g^)SzN;b0o6d53;@ze_=I@N|{k`+(?7HR~)1%g-?Md-cE`5P#$lhQ*Nx!e< z$x4Z}l@&ZW>FHB9zcB&uOs<$_46@dcMrJ*P`_C!*fS!j_F;h*yMx>k1!F5m z^6%!^|E``X=;@`@wxn3y`bp9ZgIQ?p(gWCKMN7ud&sokL$?@WEc-W^4<{#A@J}9rC zm60#+uuE;mQpuM;cVx7-jT9P>+9AB z!)lAuw75~b3`*@bhi-4l3tKDNVrnICW%J)#J*sa|;x&d#Y$A3_Yv!lFf57{n!!O-O zkE=R@qEv)gm1LJ6Zubtc6bzU>`uXg}8H7!ifmLn9*}ZyQF-+yWkN5w1NEhp#Jv8{t z5QGeoThb*V9i|;v3>oh37F2jjJhmsuh*iRc+R z2dA0LUp2woE~f{qw~rPWE~eElZJj%13ra^XakYJhDmnYlXTB^>q=yhogd|+WKBhgc zQ2X@jHgtD}L9tsUw&O-H_-_;6l5;|mWU;4klLOKJ!^#w@wkWPu^ktd3*SG248mIAlr7L z1Xjqb$z2_2k8*kuo@5X!K4`d-bF(R&JX`a(B(Fp+m?^wC*2hKNHKun+J+$14F(aa{_+$0SD@Lj>lMTC;c&f{6K$o8fsJ2_fOdTcs=(?^jNO2s zQRTL_w&z?Di`^@!x@nPAW&9C|eFikphm`96+do=-jfW#1*wjhe8uKfIBgGXeI;|xM z^95$xHpj3)H&{|4?bA!k@8=wc<2%k+VKwBDYh@6J3@*w-Yxy(@H$AtYR80= zV0zyXW_6x8$bful2kXo00V4HeF)Gs1xBTyNSkQ$%I=EA?6eg^jj5s^V;{)lgONf-=x$404tT428j;Rs%^QSKP;YL=vx4mHDBPa*jhW~<+a`W3D3{Q zho{&?a(Zn2jUI&M4u2KOG&-e6*MspeC++OiP^)=>u zn)l=UWDa~A7ZP#MWoOqpIafp4t6TZ{_73dC=$RY5WxhvrCDNL$u{! z7$DjSg5Ak+g1Lh;Qwkr$8JG^g1f{l2Do8--johy&8X>Ou&uj1+2!+%R%G7izrn4Bq zmM80VkB&)#Vbb-dxz*OF{;EpFOzLKeW|r867(^hl4jQG4P0knZp%&{!mmJvOuu|LJ z;~%j30V7Z7ndFtKlY<)u?%bAR;%J))hPvN*iNVFw+{qZ7Zz6`MFTCna7Wt=*Qr^GDKvNT2Ai16sMW*17=AI-`Tw6+nHwxfulp5@{%!Dg&h#9N zr_4IDK!fP&y=ecP*Izfk@!SxCb1uWGk1^BuD+PV$>FtTz9%xzo@Z;dXk1y5P*}xVN z-qkN(h!-s;y?ncs2f_5Y-X#+=W#N;;RW!boF01rQ@k5k0W}3{tyTI&3*u^@j>wtZ#6irN36>M9(XT-3fI3Mi6F zr<5ML8w3?ZO64d>BN7t^Oq#(aA&8{XIh0a~fx@Vb0i#oL^cW+g8wL#c#<};LbHD#! z+xzZ`Up-G|TRGjiN^6(DkDQU&du)XwqhZdTE^w08M_Ljn`WIx-vU^V6}_V>uKvZLMSz={t7OLu?!0wxAt_QUQkB={2HxSX@%^8{N5Kl&Rv8fL z(h@fKz&V^#0L86l}$pZZ8mvo)Ct;u%C7($K6ugZJxjO-88Qi=26EoFIaPUk8jQiCdNXEImgr8ni+o4$Tw4MxDgkx zpP}v+3GjBJ>W2^)RSNUx&~`P4dc#VgiP_kbmjs>!kKwtoMwc=8K`1Y2hSoiO0UosG z5)n$L@|C;UXA;zQ{o1u_CD0GAU@a-@ngCL|$6)b5pL@-Ga&pA!NvmQ#$Zu-J8oMAM z7rJNYowL+iYdkfS?zQ zmn32RgfgNhM)XMSP{i1tk}h#e%)ezX8Cf2>7E{8_MbxRoYUjS|0&e!jFVj9J;{a2Ws-;b(4ca!8RSUSfi>Y<7oi@w?f6vJzwn-rfgff6 zvh0}y^K442i;%F zb6D`tJtkH~t&tvb6FMcZAVQnrVgJL0sxG#8aiiZ)3vDOrXrfk>)5d-Z&Ah0_?`{vY zZm;hwVh>F0Pp1^7NIeeH&Ir0}UAc#T_nJRy@s?WEs%L|-ro7TqyDc%+X z^?+6+ng6ZT#VnKtEFRLrAu^ef`?pR7xqP)r*itL3k`2o`jb9d*p~jlq^E3Mn$N9?e4=8LiBMsI zZ4Yt7G%MzdC)#x@8RHrIuH!Dt%;dn7ed?iPKXgZFXzrb4zue6z8`4YF)E?&7p5{iB zsEWQGSy$;<`O)2o-HgOs=yKJzDb@Hh%KD1Y9tW{EsedvH%gTN4)i_?o=Oq}u#!)>I z6CT)3(2aK5q0Nq=xZc8!Kk{1sq#|fo^WX1^)}U-MJYqWBL(q3^AaQTDE3VT`aLqrn z)Tzc1trbQJVd!2ZM!JOE?LMMyw2YC)Q5T5wy$uOn;0(yDT`8>_uMUGVUa_E*_vsik zdtE+AbUL$fw;B8Neg?~8QF3aJoHk3`)pT$A8SS*a@7mfqRfcC(^ zk~?SPRS+`%b;Qe8aQdZB!k~}RS-p9|t&%SnhQE@Jb!+M;;xj#a0V4RPT2&&EMoKhL z8yTO0e3b6?<;StHEipC^2gL?!|Eb61>TG*c;H`*!{fMD<(_p~q-1r=yIkGgX!`9up zNg^U5RnAXn`qf1n%;3?u8b()4(4t1SMsTF~_JVW)mu{-|f-h{eYj+_qr&TY%5$mj+5wk*s3 ze33mNDT>PwIbCg2+8dNyXzR%-I4jk!G@q`oU0)9+mg z8RIPdc>Hm-=i2t1en$UXXh&X?eChkXZ>EH(C{2ZLpF+rK|}qRNRg~jxo?5)Lv3mW8|bBo*|t2` z;nBGXhW;T?v5-7|RHkJ#k)z)|tG7U@-P`4$&{F-1?;9&ErE! zI)R`aFx&u38ud@u0@Typu}Qx^{Wb+M>63&P;lg<`a7j4fr-R* zL=|QSyawAx!DQ4Eq!WAC(rfeRD%UZf97Gm$~xHKl6g=bPAXdMsff{#Dh|! zah2br{nbkq9O)ky6F7x$N%E%i*HcG>vzCDFV2hP78?wMI{5;RZTc>c5i7q41tfXCd zc>nFa0EV*EA&bMlKXG|?s{UV>47=bK9)UM3HT3cj11IW)_KR+vdzPkH=06^jZ_%9? z+E$j8{jxq0n5m@C)YGoe4*487QM4?8zQ%h4ahwjCt&paAYcR=R)0KBOb5qfOH_(k) zL-}g>J7bW@+DGXOAIUg>0SQh4tARH7WLCso9Lu<{4$iKJms+joa`n;INad0pPIqKE zklweA+qWX}_C-k{#-M~Na3D)J_wJJurIXtZzwM=iGyx|Lt1_KVPuq5lA;R@Eiv!6& z@>s30gOXIb zpopymg>Z@82i^Ja5 z^72v8klSRBU#siW#rmhJTLHr^#AVkPpx>(Q^^|~&dXw$JRF#U}#>%H}&7^0|)127- z%T)x>HtMHEhz)9{#R@I$Y0bj~O#o;Ie^;>(KR(^~M-8gV>p64sG~b_{DbV&Oyw=$N z*BEsuH>J7mBwS*fF(m7G;0}%4_^Kpwdd@++!iliB2TbL!0^aR$KW?S%BWD zpI}rJK7^mt#2nETMqg{>X9@Y{vRx*^BW`ynnqtT^D`>sFgLLiG&&<0C@AizlyJ=IJ z7nToPApH6wbl=--T#@W?$B$UJ1DT(UBS~!Li-<5;T`3zr1NoX^MK-t6#beVWT4>M% z+#7Mo0u!m3AkuvhZbJ+8RVrF!B@+dBvNi5;)GTg9POiSr79f8 ze$+TIuL(klUZS&3#(S*I@l@$={RoF@xw$;+Q~=E4nHj8(8f zg+9Dd7s|nLB1!_r?d+d+K7ZsJvkyBt7hfU39(O5rB+us2u6do`FB#grT2izoa$>Rx zr}YENNc(R;C6j+_3(Xd|y15TX9~KTSL?s?K8$)W0vuh;(-(Pj{YH)T$Sniy6t-ldd zJ*H)lAuwvy@5aSpE5b!yQ*xfmChTkn>Nebxf7+pWC}Mc~T{poz>`#_)fWK=;o~!qx znn;+GL@7(GJg>%9b%!E=$tlk_CReX0dcHHQgHrq;Yw~M^KT)*K<+K116xhG)8!uLUaC;)$$1QR>_pb_fGx{z>Q}N(E#58Swwnfs7yu~UI^wy87 zGwRlNmf&q%6V;+tkh6Ej{+wL}qa7(lfrKF>XqqCpq&#ZBwCeGuHt82p|M&5XF%Q=| zbmkO)?v)?B(0UCUml^-#g0(ZP>~zOH_KzDiP9|}OKaQpKMuoRpo!Uok)NLqS9Zd;G zy-+w&5&^D?HTjii2D+2~_Y}9eRcwJ25H&@@ql{Q=VHEmRm%Pq3UcDSF!qTFrs;zyk z3OBt!w{4yX7Ct_F!>CcXHm*=1cH4zYw^A!*J2k??1-MW+J@fgeH!hl6p+*k!; zoW{{_VI_>e_6$fwIP>dNcTgB7@Q(GYs{~B^-L;G+M$)&_tLV3B~&DR(mVyfBetbd>(x`V>vsD~_A_5D1Gx*5Ikw$HsdqiPf zo$69wqHLTtr8(fAtyqAeeN-A|+WN`=EDPjr`MZth zAQ}`hqj-EeaMZ$z0^NJ=v?@dr+RQ&$N$2I4O1T-X*~?jdJ0bYpk0X#?wRH4Hh%!>9 zmqxafopW)A4=0;_wQIEM&W`hg;`+Gx3sdGd@~k9I7Dx&1*KB@Hl)3fPE+k$5EMNAF zDz6=K>md$DPE=HwZGLdHs`&-OXS&a*<(fD6b;*{)hMiygaCsq^UuGhlmFm0*Dq44QPfhWc(9#PKC;XdKnf$nG@nL`^snAbiN{_v4MV0_ zzR@dc|I2FyyiYl`5dk&Bj?8Uq#30Fvjp(eE22EEy@1s?<|1r zaNGk{tD#R5oY+%jqUs3TM$^+!3^3B#t`EiPF0N!N^-LM0JVYr*a^gJ}?^xGEJGU~| z)j9E^C4Qbvds|t|i@c{8=qR1XPU{zC+IyQWrP|JQ8&Uhf@y3O_X{krO`dx-o+m@Yk zecXy>fO!$4BHY)TNykG^EU|wBKiOc)ZBEi;%I>PZln=Y^ak*R#dmC|ZrsX=l>S~$r zD%mFj9j}1KVCmk<`lz=1lG#Ef(k3S3X~EXmMUUy~Mhla0=|1%$SGIEYj5pkhA!K-$ zsyApm{0NOC@e@#4VdLknRI(qV=eJ%n zo^jK7x>_tsvGDA3Qw*)AjsQ=B47J)ZggNFJ==N)+x=ZN7A-h>;dO$kr=+5UmF`mZ{ zE#BG!aSb+yU4|Sckma&TPnro90b`&0WdLCjamyKTvC%v=ND~eCh0^9u;Qs!}!PzOU z%5?^`Ub9FilI1n9s*FN8f9fV$9}pdk@FZsN3(l@3#Y6tT9`A?T1+$5dg1lQPKsq>0`rt?L#!uH>O zfG*pA1&t6Lie(q1TjfCPgz_IX(ZpE?+8b4%R2Fky)teWu_q=`_^XiKolRZ@QI2t*Z zF9~RFhnP{nw7&Nz0M4&ceX(X>bg0YwYS>jRhk5Q>iQ!nrffwYUqpT3TB8_i~%Cjir zUlT74c*#6@5OnInx32%CTM;xDGjAb`->;N41xR4}M13oy7~a5Vte_`*7$_<3tXxRs z;c?;FE=)muI>AT{P!@D4W|}Q8Er)HaHDmMhCWo7n$!toUDF5BxAF_ThLwl_K0IF-O z8R>;Vhl{oJQM@TxM-9LKC=|fZ5SA5Z(~8q7#`>OX4lD9Pht}sjy|46wdiFi*@}}{hF%~l*_Iart zP-sgrYGM4F(D#3+XIr|91ijWo)c%{+5jn(u|GuUz)9+7JjO!9&Vse)$Kcu(H*sHZr z5Kvp)!QT;fD!ae#P0W^TWk*Zcr)6S&G~G8OJvgra%BYdRO2uvI*&`on5@4@EK1)$aB)2%{j2SMk8LiOX z_fp}4%W51NMQf!=jG=s2O{nH&f~X!XMrL?T&N0s}X+VOIe+xkVTH9@17#noI061e4 zTY%{|{B+^!ce+QeD^7WtFpKrqR+F~7EI{oF_yHP`OsTDa0YpnQ3+CjmzdCZZE^asNV~b;#xYc7(%aN9mTY96 zQ@$cig?vT}RcQ;gxfU;3(r>}zl;u6Ld4xsR1JWlt#VrGHxJh4PPZ0Fy-WdyMOThb) z+I-tDM|phnVUUe^7Bi8ndim3lAlTuLj9I;9#{vC>>A;1RszB6ml+TTwk8y!{^IG;e zuC}6|%JD|iQVxbqHQQk&i@qCaX^CC1v|-?+;uv1BPoAaZ*Wc)c-}J5ctrlYA41GZRA2@aI}z4 z8K9cyI@S#KJXxHJW#uI@sg+G6TV>OpSmX3)X2N!~h8K_*pU$8Rzxl(6q2iP6EMa=@ z2`4ttQnf5c#cF?rF)6A5wdVUZV7KHn)WAG|mK0xRDCWAFWh%IM2NU+%N& zEl(I-rRT@uf&Y>l=YW$C-&@l#Qb4wc;N&INrX)+|H~j^h0mu?gjidg!Ub;H%);`TM z(m9UBZlu09wEuwwIY#--i4FQ(4{P4$zyHX8`_Jcnpyw3XqTB2S0o_gA5S7rB@S@jU zY}hSqeS&4n7 zxQeTgdN)W$gHkqVNYLOZ|L?#<9Qg3INw%=}5lW*Yk7U`U>YWMKUmj)B(Bx)^au;I8* z!>`3p{B?3-0x?TNi9)!l%+1^@IDyhb9)K-ilM)~3mIvc(*m2yS#=FgmWrmA*2}6av ztS#cf8NU~Kzt!5P{V*P z&*D$eUOB7YLdFSPI%%#$T~@LxvD^0BLTq=Q3FI|-A*B~mA%k>ja`PyY{6Dx!djeMY)YaOWrE%>%KznDn~!;|(z=D5<9**PZY`6Mlm%pKZ5vxD>no(N=S%(x91AM@zJK zt8Zu8oVVW}kQu{3cOt`Sz(m`Gb6A7oRN$Zo_FyA@ZOer#kws*NiPlp*{nKTg^Kik$FJTWo;N;ms`KGKUaEAB}_FSB9Df->ZHLxyZveRQuJ zBzC>xC61&BE6)G+Pj5J99o+DAqDi|SVTe#{Y2A8lLCq2LY~u{Lb!#XPTQ@ELJIb%-G_oz@ zm$;L2qp1qorM>&H5L*$?)gG71*MjxGqTSH2HS|Q^><`8-(fK~7#RN% zTOb)@V;85k{SXY@;GyI+1)oWrJE?a{v4_Va5?$If~GBY!CW^w2HX`)H6 zc27#$>Z@K+A(WOe5w-0^IAZcW^X{o{%?T!9rR9>tZ`L~szC~$$p!P0#3wzUf$1tj) zD0;u>o>CUE%ba~PJ+1mVl^08Lt7O6(ZS!N9fsaqC4$G#|-aqVyYPS?MOw#^$h{+bG z!1IOKur$!T^|*D)Qk~`WR%$StG^lwp_&oaLF%9+$zq95qYA{MCVnuB0yPlaKl%=p^ zg;?6+{X2Oj&mYnEbSc|{(&O>kyTKnv)a%_6P6G=ALZv>*&)G1VK@$Gdm~XtKj!?`c z&48S}dyj7H=b-jREHY+f7F|h2&^Kem_tPsRTS_G z?d5HQ<0`L1l{QnV5FR~OQj*Iw{^5?D?lvgBB>irCrI*cd@M{mj zZg0?K#)|bDJg#~_6%iQoV$Qu)+?~kfJ@iDj$HqeI@ym7#7jlmB!MNXVK2vQQ?U#hS zcTWT5j?X&j3mZI>B;6J4zicJH$fohWS=_bAbMe)?;oI#Wj0)`6%6;NSzVeH6Na8u_ zQg(UE&Mt~eKqu5lQ@9f=m(BB%b7{qvTJ#DWJhc*jo{?GN=_eDxu2znZOooH^-uIKg zaG;1=1YhwBbG&i-zk@URS&mv$Hfed}TDKD_m0l6guM$#Kkke;iE)T}2hDCQOz$lq@ z!>`n&Y~nC;%tOKxKRW1P-9lTnPNKbsG@K9_@ik@4n^7ul!20MatM7Ga7JM)K$u*I! zilEuoP5{DU_DA1RK=R-(5MNY6HTpce;Q`fEmT0{+l(VtM;oQRP)Dgd1w%Su;|2;^j z-HrG zsJ_yb*ihA2=BYU#?Ik4$JOEixVfWLR7Xk>kFX(*sV!+Emwe<7@r;r+?RutP@CPko9A`6SuCq^W0lNE+^dRJ5!DpsiG1ev|F%J%i-DIK zg@zi9o$vD1BRs0-lP$vGf%BpmhZL)ktHi3aeH`L4FvL0vU%?xoA-lbt9M_IFD-|h~ zrx|6^q)?s|0l)vQn`Xs&F-VAFpyDQaUf60plaVL*)vQpQ+Bdya^@Cj$HThMG*k3@A z(_zeq&KYN3=ah+3EojTPtu0oRGy1vCHld&t-@lyOi=S$m^1QR7k|Sg{a82LFyN|k% zp~<`=H6IoN+baxQG%UjY{zgX=2dg$5UAeYci!sj{630p67kH_713j2$1~L^y4#{>b zd8PRA%ogkS73ql&HbsM29OgvM62<9OG}vfNtw~8Q{-O6%b#r+2EhAWW38`|CDJ}DpR;yhY|a1^!Uej!S9Dyb=PF z+A8IV>LwT$qHbtBZ)4W3gAb5$Jj}5?t5UKnuVl;2GNZ*4Qw4ghlc9Ood_x${)?}5A zRKx{(s@^_4KZl!{iikNO_NpID3eTypRSY_&&u^O=Eo*V!Oxfu2=9@{c?2^3owf2v^ z^)!L%6so$+t?16}E7N7zH`3Wzus3ZSl`2A1YZUXX||u@d1Z(b7WPn@CB z9Hk5V>G2vg#PSf~?_oQ6M+7EAK()N&M={6rGJI+B#$_BHdr5%?`n?3R?gucZQ@;aj zGLck1AN7!(f3|VBb8^ff4mm)2VD>HE=@Ovm;&bY`w197y29je_j`B&T(|dtg%+~*W z+;gIHBIH80_NF7;8eTot8T@&8Q}VP0?Hpmp4QggIEK+Rdpl^JljclPW1oc1(UzIzi zf(V}+bG)`2a+3+K29n3T8Gf}=MhPAO;2ytN6vEr6=`~x^1a91rSWSsLdE>YFnTk_V z*mn1IzT&*W_tORU(*kjs_h2&YO|Q!vIlWO&v{2f_`uZ6mLhh6h$6=jSc2Ji1wrA~Mp>at0=EsJdoT~+|vIf>=|voMq? zQ%3u?-fU%Ks;eQAQd-;ZBp*j>f?&xIF8ww}?}aQs_C4Tj9Y<=c22i`zcp@Qam1g|nC@~j^>2E`1zX^N&ktCAp38~ovV zFuKCQ{PMxi#PTIBe#3!V8l*#hpzapaN}ZdgCS;q7K2`+Mgai3b zeq6FvSe0*`a)GN`94_a?-cb$m`aW2(3?o-iZ+@ckN( z-}I6jr?rWpVU4kA@`U*vvE2)u40b_W?e8;4b)A}#QfP%B6GdXx_eTqcqfD!Uc677^ zwF+wGu1}QHb=nSVrE1*FRZA}{vD6*{9V0vr^AcFQHdl^qs;hUm4=kGm7?Onh){n;6 zmd1ucGmcAoRQ%+WtT;+mN4 z5?G9WC$k=6!YO9h0K3kT^xwK^J1-y=BSLK6)d9B>qVKRL$Vy!KNLIbRgQGT8G@kzn&-o4X#_0c?C#8CF0kc zXU0hV-W@cCi9aR$5sjVpU{-6#y~^%2HdkU&-)3*hWpE0q3InBiWZi)uO+I5ZON>D* z17v~eh{0Y|LlRp2vU9BG3*^YkC#;q4)TR@3-)W6cAx-)1T8Vp*3;3FmW|y`9e%H^S z_mO`_2M$u1)I;(}yCR^epWkd|cMquvFs~BLI4c>z0_M)kUu++s+vC=X^IeJ#B7H0f zGdEIzB0#-p3IZ%v^R*hhs~Xq z%)~~DcKbO6u3rBvsp)fea^OCWUd-~fCMZnL7M@se)T_T#B?P!ShdC+W*;MaxOw8H4 z7~p~j_~$!hsEw@^b32a78UN_DozM1WT5+JqAt)_6<+*qkqo_t6G~!*^Yo1&am1mD% z1dT0Q{nL5R5wW!gGoK@PUc-HCy!s!k*?ySw?Urt%b%!2LP_1XL?7LdN%D#seu@1#N ziQn+ocn6=+Y4;SEvR_b#Jz+VUmDdWwdJQ_-%PQvfP%~hP-sz^MibyGcX#_9&u5+!| z9AuAFalL;DYV_f!Z1jU;;<%fW*Ep&D4yIj(__%BQZ^$^OEZ_SUp^;B_l&g|Q|A0-o zCF3Z&TAGxWX9(FjZAx%jxH^EJ^LN|R%L)U+msWCC=M6{%;p^C+gGM1V*JS%jPvxM1 z=S8aXOd*y|(bQ+XRVfQ1vfQapB{@^mPl9k}6G@q)YzyOeK>{%3dl%_xQ7 zR87l1X2;4PXu60arB0of*L8ljKX4U#HBq*CL96xFVVA0Zc-^BEX|cno1d!}jz5}yv zwTpeB^v8Ypao*1ypeBil_&PWXz@n=2J^sqvf{I;VYm%-?#ICj0y;!qxw1RKJuxW^;qhp56 zL~h0T1<3Tx-sUWNIQaz5DCN$BNrfox0HrplVh^y(_fAxXkHHIdShF$U1M}@=cT0;f zzxj_Nzn_^}4I?~qZh)F-L}io%`7*`vKd{&pp)=}At9E}QyJI;_zYvBvRf z)zbLMg7U^2fVprKZ>OIB7R*={lFL+aZ}Rj-_8rXWi(ygkXYRPQz>OM%Z6nKsml1uL z9Z>tYH%PjGYZk zQqOx;?K+I%8Er{)DJ4)@lii53^`?4Xe;>PR{{>UK#uwG0Y`Cph--?dc`%ir6X!Q9E zGCDTidX0yR@+!S5im@GdRw?lh2J65m72BP$&<0LKNw8}0;(}UpA!>`*LSJ=W4VdXR zJ7CzEg|+(nX4LTNPKL3|s(kXSjL>G5u9L{5OR>28=*XXXxj%xeO|s=UlIg^>An{Mf zQG%!KC8n_A#KCEy?gzyNKkA7sk_ttnbLTxKqYd-NfImYCgB%3)Vm+JpR@-|0yOKY& zDUKI^@070m3v>8E_!xTM4*kHZkiaghtm}Jj7KSH#HqbyduUV5d{;eDEVbx6W34;zQ z*i2^xjr+rT(!y^VxQr@w@Qg&=>3E)VdYpmmr+Re-(_P`Ex`!wzv}BDP7#k%++0f6| zBM({OW2P#%@)>h5%r&(PS~`Gi9E^*ekrlvm4Nu=T#EenXwmeHF?LP4~t84qJ_tP-| zu{rjOTs>^ZB_>gW{w**6W9oE-B_P zOoe2o%|i;=pRTIkE7>|~`x#LYw+txE8kv^4MY;*&d&qIv&I~I{UCRbc+GB1rxLxbc zfCfRHKeTdXrr2Bq;^;_Ih2kEn$(p$**(1-RkWc)!XCH-X7SPkg#XsgjeeOAKxI|wu z_#KtM-!2eGORqt+WoDZ#8^i8xoSmR?`wK#IEp{}1^OBkzxknD}iGAJK0Jq+G|Di#> zaR-ICyGNn>KdEG5Y;jZ5)VYC8!@>&`t_GA13%ujT6YTHPf&C&&7Gv}%4j8e!SXwaCA(9^F{a4bn;2Ex zVK06z!PxD1sY9Pb;!`qd>Zf|YFE0hIEk!5dhHv%-1ntUyv@CzUtl5gxYy@_Da4UoW zrIcb!q!B>wb)M{DZE(ex7uhV7ezjMOM!QH+st`jew(UR>@fLXMjdtx%hBc}T!JE|; zPLx2v&W)ta5gtOab$Y0c!H&%;Gbup>WPT)_<>yL!HtES-;pp;%99!o}BvVZqmH|uo zn46}S{a+?Nt)5@;1}DUXPyn|ubgHfe$Q*;tE0nEaF(|$l)8C@}%D+V%w}RE5dRI2c zc!F2`nu^k%^wv%KnrObX`$OE&B}#2td#E0fGl)QVl~Lcnuv#Z+v-HxkaFv*3@%Ot@ ze1$R^KIo^~G4)zM;^x3Ihqq2%tn9_hfG zkbe)|^X8_9LG zGh(Is>QzbV5#yK;GbpWfTP^T-N8+k>CFYZqwZWp2*c$db%D`aXOqFKUB3c?J()J*v zaCN8dcKd|OnsrF}6S|9QlF-90geF|EfAewRuy&(Risb+$`qo(}bdx?@5w&D!$mw-X z@0tB<%hP)FIao^CvL6+Y?`EQx;8D8)kA!VjS5`9!CRdXIia(}a`6V;caQooH zX2zoUBDGp2YUSCJQTw<`y~M~QlMg5gCvR>VoymBy2&+-uD0SjYXhy-tx5Di4{gGUG zJDfPY{feg#hj9+-paX_ORF9 zi#iWiU~f&2XD!Et6d;WIZx(w3C&?}`NxKcCW3>k`s&Jvqj-uf_SR13OvHdYQlObiG z(SI=u%W{otS67uwQAjQNaF{^Qav|7M7oH}b3dJsNxla11ALXA3$2IHwZP;KlUMj}v zdR+H8jG5UFZYi*mR+3Z(cCeyRBFVc(;C!J*clMnq+=)g&L@{D^p6!h== z>#9jX)OCF$;2b4wM4+R4otwpO2j9e!Pab2=H`_4vYKnVc)(HOJ4)Z;(es9!PmpVjR zK{%drmx++=3aI5?TGRQsYSbm6%l%h|KEyUD_m z7vbvJHIzXt)Mh91l4skJ6N4!7**52(a560tx_Y)8_`&}t*@-R-^zi0iedd$R-zP8? zm~|)=_y)8TX?#s|r<=N)P<)*v_Sfau5-#*Skw`Y7bM)M7+ z{afph}+x<#@QSGizE4m3hChYJV7*IcducQegMqzH@+L=RQZojY+sc>MF2(bkJ z=5KqSWGZQOzL@lo{p&TDC%WA7T)vYa40&T24{O<<{_soDJ5|J?3jqC!LoUJGHHy)! zl6|;i?Eg$>qyUEB?<6X;V|q@MV%;a9XD1j##i=2dgky6u-1&J4D1dCy22sB6=K^l& z9`=UEaGGaM=?3?w%Y)@kpQ`2PdbU{?S|zv;S$JrCxr`^6nwd96AmfH=ko7wkolPa6 zkm^E@aU|k3k(~FfK6$QS?oq@|B3!E1Ygf$sZ!lRO)MBrnM>&{0YS7%{2~G>B$uBZ#R3EExFTKq-3EZ!=xO6L;JtEi`6U+T_4iSMx)ZD) zO~c=O+)5pa>uNS6BC016d@MS@RsX9=EW1O&h}?{s5wf@-*sWw}F=(OX*L*HUd?CC6 zIjEb^GOReJ_N6|hp0%u6^Wt!Ah_se@Xc*< zISVhorC$0mKl?(B!eOJ++Q-(-6#^eltS7n+y5~1IaQFB8yT|C+n{em!I%Cpuq;R)T z!%YZT?a)itLnL3S9z=xZ_-heD;;T`P2NqOx;5GHE5V7lDMvO-iGgKnH$eQcDzWBxQ z@rs-9f2I9Cv=ps-n^&}}qWjpffal}7!=gu&0jRPAak6sVW4B+o3i#QBBD}$rhp2~PH#{cR2J3tG3B!t+oOT)I=dM7^MJlde)3J5WiRUxv{*B;;GK$0ai`)W z6iQJTGTGp#T6~A%9w3!Eo|;2oQeU}gzRpe!86!$QfnjgexoSo^!|C=lCIDF(RYpBk zaVf*+s-{32#uRjGgiP47){spW040K3Xxm|Hkz%J)9|y?g&~FdWS+u zy-byEP4zRi(6XTz-ULWO?Y6$zWLV41LW796{#T4N(``rI^-8UuSYl+iDx+|e!0wp- z)`gpl#Dc6Arvc$@J5Si|zx0?WdvHF;J@As7kmm2#0SLL*?MCgc?Q~*HZQj(6H(1Z6 zALPj5nNpIHwW^&bewCS#B`X3WaF-LtDz@9^XbU>>AI&Hq@b(}aBBlB$Z4he^s&TG>CPj=qwpD^ zA8MicK7s%!tgw5nRd<|$BRQ)2t&zI`AjJ9vPv-nzr=w=i@VuvXgqYs2Un10gTRP*} z<4Qo7+OWupzSUDIJZab@D@2^2Og9k8>l?5xBt(6fG^Rosk~`WL zW-%U_;j_@%-sOIwh+AOOFcA2M(YPq^|NWxe7wvDQKc&Fk92ww9)^gK+s~x~3oQWHv zNpAmxB2(`DGwP=UdI=SJam^8{BD9SKjV^KW$AN^PuysbPy?Y^*A!QGnu5%27+7_i70Gh3nEt+@ z(8vrAyJcP5)$}Ae_j)06fC)w~h1BdmhHYbEcx$>ESW(f2L?4G88tIlzv<>2gCXay4l@)J(X&FU{v&tDlJH-e*~JaEc-(Tb0ZoKz`Fdn{v1k*^>2A)}N8<{xg} zhoqzy?{-{z#ow+T*aVH&71U84JJgwE!z5DEWBUTpAv)24Wm$Pp<~X=zkYpg z0dF=^DH`&?H>^AwFUJr?rqIW}XQkZjvwKFAxI10`C&pRerV-81U9x-VkAHBv+mt>M z6zo;U(khwSJz*1_!N1}PoM`za`D0sb)Mom1d0i+JDbyEC33lX=Ed%o`N}uhGu34;K zli!ub)`BN$G~o%*8ZvEK9pTbjRZgRGgPMB9LpAEOYVu8&$5MVu@BTu|-g(-30o#nY zl@lO&lhX=%xYV2t`fpC8BhphSq={L?zqZeNU|vJQPV%(perjg* zd@L6?wdYRUya&zxj@|gU28xBcTDok+X_x;*5U9s#HZgagP3oD?LU#U>$Mal<;(UWD zIi6Fx_~wtjbpoInB}_YuF}v=hbNT@+?lKY+QC4E5YM6Zg?kMMzPmY;t@*%3Vw9xxv z_y3qn;r-DEE5pvku)t5StNlK|f~n+7K5#7yOHQc&x*~i-XWN)Om^5m6^dlK`v$uP9 zHbwuNs`3}2!b5?lrj%xE-L8)N2SxNBIFIET{i z3-t2!d?t5_Rn);X^V9Jr_Yb>Ek^r2B)xWJml>MT;O`qN)a>qC4ykp(F8|LKMWWB^h zU!Kp73CrYnZAzInpcDtq^0MLw`khG&m7-zO_g!(UYpTU$%?NSb7p+PnlgG}5(%=%w z1GQvF3P*sJNKmkPu-R=LFqW6rPM4gLMW~}8>+7)Wc|O@L5+fOmZ7jJ&^%CxqYKx3%{qq(X<0UP(N(`8mxBu&1E@i z?*FJd4}U8E|Np;}GBeB0NLENjRvbl=tWY+Gti&;r?U0=inb`@c>~+j@>`kZaeQ#%8gh=QG8k`^=CFejcUa+3OV?#tKBS2@N1oL z8_aD5{n?$FOW=74pVL~vxzbMiy@fez$HDT;%!jRf&&qzXbER+}c#G-}M|#v6o)p1s z;ccbi27m#n?K9juUDwOIXaM*|%vcX|Q`_45A+YtJU%jqJva2aa1>OOSEYSY+f0T~rX%n1= zS7#a=@EiDrleBA*uW-oLAkVMTsVz_c0HX?7f{2H6C+g?@N_y1$TacbNm2x4^Z9iey z-m9$B`};XhEVsaY8A-X^`^DRS8^wGHKz|@v*55F@S2Dj|iF96}zng{_4DHw2kSeDK z8er&Td8~BjXE=zJxCsd&|l{{jR z2hy7GE?vPqs*8<)H^x~@7c84 zg!Hq?sE=c_ja5EaWctYm)K<7m)rk+$a5G;MNT`{5))eL!QSPu-EI#RKs=3PMRaZq3 zl`gx3-v(wyrfYS#eM;WQ>NBSuO^56Dp-|77aQ<4ne!F8emR~Lzx$WwNFT4pOeZ+HQ zOx^Jwu#3t}2B41POFKfuqwEfzPH7qq|8J_-ysB!sW;C|iQIO@&PT#$%@F{GV7tDKQ z%4U#`WPdOP@k$n0_NQ&7EN{}Qar~50r9-T*sHuc@#=-$T&sxbmkmft#+I)^oYAooI zcy~@kswQ3KLaBlYSHq^b7N@d^3SBGA4x|=ZI_Aiu44&6{#_!c;pQHB^U;>?@EE#2rFB_P& zD`g^Xjz{$cLC8)=gS5_nFz6-@F=-qRwjz|KSN(|Fz~2UG9xkb1dZl){dHtIVU(Fb= zgoC@et;Cea8I|te$}8hDI{t;;J^k;l02%$de1xT+#gF%g`lEn@b3xqao-sKEZbyNu z-0EUcu|urc=q}sCu19O~OBj%C>17!sZ-n}IL#R(#cV#`Tohz*jS^(nxWbncrJkj>y zmwEczwmG-N&F4H#(JgfC$3sDogfaK1iI@;~+=Etp*XpSTLOw@fsw> z*!@mo;u4ybhyG~w{0iA2=UV#FTe#oVQ#_jM%=_Y7(b;!*Hfl$kc0~{0pfEX`pGyUh z#uq*Q$J=>KUL-*Z+*ZA8$8`bIbPZYUqDc;WGwn{-ycZ;3KHfko`K+1E#+(XG7M$d{ z-gX@lTGG+5@;QC7r(a5!u7$ACP?|4km4{8IAPu(1#jD%(I;6hhI%Z^cc$MjkC#}%X zOZoSAw?$3PqGOCMa`UKj`_RiYDPJtzG{AKSNvEo?fOYPw1T zI+%kkC98}9ik@aWFm54*n!r^Sh_=S1#7b00_}=JJhC5pI&YGc&=&{wkT-TubfdgJo z{R&Vo&f2%30*f>5Gg)nEilbElxyTt{9@_@^I+Rr6)&}qE1lsd{5v4@e1eY`7aCv?qO3XQ8JzOBt{kQck%X?v~ z*AP)bfz9l*+|K-%GWQOcrUnYV*g=| z6bR*m4pM?^#zELx^GLN+XmjZLWV0t5uDRg(j=bO+5=byJ&FbO`JSO4`V1_H(5>dN= zlnn2bZP8jIvfrmC6KgfneC`hVL8VCL+#GI2l($Eii!C9Gch?D+s){{@-p@{{c?EpHnJD- zjT>sPnCbc7^S&dn${lP#ob&X;Ge!@Om z>rEC;22{P$a=rW0OY0F81?NJ%AonaZv>6!G?M7;GGH-7A+#Xb zzG0G^Ii(QJ#=XjYnF2R?wqSbhM?XT}!at=zG~UGLPF z9G?rRv4UqT9&MO|$gVs@BwDVwh=z36^n@E0_`=LoX*kxX)gq$mWG+I9W&O$tFc+v+ zMVd8}yqEcBfZiXqhnjUNY1(sJt^YHFG}0m$5w9BA9o{QK%8@9pDDPr=5Uv6I{M0pC zv$xt*EA0lP)XTfFd(K&vj*;mArYmWly7_SS$-;1$pJl4%ElqAMWlffe=NTVDxg%3q z(zpk7J`QV~wC5N<`Hvt8b~PwEUvJ-9VgCE6*h~{VORG&Pym`!%#0zNSoeBl4Iz5AV zU@-$%1L?lUZoQ!>eJ&%sem-knC&n-aH$07&D5=|8kkEl}TxgB*J6lkw@}U@}7&Ri9 zC8CuNh_YmrH9#m8I3Z7h-kh)|j3_)rEH{XlDUgve?3%p(J?n34mv#os>bPc)Zb@D-sAfIOq4@Dac0h{k zzq7bP3St@fdGz$Qg7C92*Dy;S>(p1=U>@t%v2}#qK4r=+d~{FH(*S;xYy9jMtY*M0 zF8#{~@9wt32+}5TqBMRg3%rl#;{Yve@rH-(QDOJQNYKNo{)}8~oe!<0qDE8@aIM*Y z|6o}2C@-B=cKL1Pt6yX4#C(9bsbm^255HHG?m9mn7RFw@WxYNtOLeS63Te@;1{Gh}(I*q&R=b$P#+~Q$6zQHTN zt9FUKhB^ft;G^Ny!9yR==PL~!s^-Q^SW>G>jFwORYL9VAM7T|DpcC(TdK ziv%}QS5cJz`dvTL88MwBVGhoWUWvSauofrg=VsCzLyx*vvPB$?Ivlg^q~7KQm)&ym z`#c-1Q6*`mL#n{qM(`G%pWKdt@#6&4r!GdZ;Vc%KDtXg7QzyVoOh@T+wzW@kQIR@4nzBuI)g z*KGQ6dZbee12N{)^fLdH_If;pIvzkti5y=XufT>fYCk8a5#YCI<7jzfcXM_d5ZPZ< z{yKpyZ}UDTL5)lwA%9l#n!+I+(HVVt(f67s?+K$hJ_*=~x*p%1m1s#9c*)~Kle2f_ z=no6vdG0wI5*6M#pjcwrpLRs1HXB+HmAmOugJ#Bnr-`j;8n8FzY2BiT)^h$3_t-;U zV5y>Sq?GT!;XA04Mw)wBV{&&v2?zHe4x#W_4R#);Yx>J)QNo9lgJl?qF8fWa68DmrX z3u#xDR%wkn-gq{hw)_&CR5}@(@&yAyGT{Jm%{if%Lj*M5IbYUB<48qELzNhDnt;GG zloXBo%zh7?bx}QMPW!jmaXJTl@XqHlC?`Ehef37bc)7h(p1{^aJWPl2S{JSQZZCJp z@z3cc0h)VdDje%)c%l}bm|SC`a5!k0!)JM|oq@&gcJ!QKt%4rc^+fRB_x6#_+moC{ zEvA5e{W|k$QJb;D0b)hVU@AK&Z=dC}yoEeF zRB|!3ZN5rNG;v1|H7?l3kSbbc#16m52dk!W#IbeQyxue@%az}mitEa`DsXC2#NDGH z0p1L)vn}X%#h@)@z<%YZVJYHhb-olJtg!{AbYA;W2tHYbCAGDFDVmqzHbZ?1_8&|c zMCDDjE5NB-7|dk;)WXe=)II`JV|bWX>rU9~uyvV^+4snZ_54TV>{_(jEcb6-zZKA< zVKf+V-;SgwKlSCHy1;GGe-7n6(k`|T;oP|7&MXhDwIu|h6MCMOwI)RNrIFGG#d>we zIz_UA>8C$VXrc<%KIXOf?MWyrlF%Q0NGfMBvu`4UwP@7{|B-UnsGf-Sa3(=*y#~?Z zl$Y+4*Q<|HHf%>bxookK&CDx$#Spme#0`9^sY(BxcKfCFJ2A3vzMWCWDOjqs(~;R< zoqg^Z&TXJo5*wzpWMTvcoo(H|P?wxM0GFuvpk2ELDOFIzLEf)fckq5Z%Tro$m-=3L zYrdfrC9%H_1#bND0OrOdd#h_Mrvp@8OUz0qU*Y#^-{c`i@krIpmw!!ePeX{Oqn7@e zFX!d*Gyy~Ml(VdH0SmM0wIR8ulVDz#D8`5YlJ~EG6559TVLP%K%c*&T?ok2{35r8= zVXp&qGJ}G+J@24n!Bqd$^bAmZ^Hk{X>!4Kmc!@B?!g+4~`fl#_9fuI#XUb}=YJ^v8 zO;@i!7>cbsScr-sW}slTIIXL~jFq{}{vnIYUL*HOM5kR1QM&^Nac=yOfMx|YzcIMZ za{~a108r4_DVPEH6lWN&@7S1{uTN zDaz_Ob*rtsV`cKCoJjuK;nZdO#8$`L4(VTQkog}qPgiv}dX>44r}g(TX5bxHsTff} z25|&&W{(vr{^^lI=ygDlr64!SotxRB&2 zbo>6&Kp*`2q>byetd6P5%AJ6%`OR+flOoy0H)0gA#R4Q2Bw!K?Q~7bG^PF26?7Ii; zItSN3X8%ZI{>Yd0cx(YRE1Cxs{4Nm^=;b4TK54;Sy4WXnB6X4qUULkv5P1@PA^~;pIA=!t z?v472){~^G^ajUdo27GN6G8vwe4!`-R?fTkhIu*T@(Mlesr|P(HC`BL#RZ5a#}FBV2YOCHKdP z%?nKp%9G%V9&_d(k}7WBE42x2qygvBQwY0=%OzqzhR~!{@iNyX`!6wDdCxwlM7}rd zUH-1b+w=htuJEthE--uHijiO$5{Jt7k<#~$C6h}d?|e_&h1L&LJD}{_BcZrRx9k;x zfRU;L>;xdO-~5dqkmjR4`HRMf}M zqz%VH|08R#A+|;Frd|RH>FPa1t-noq_T4X!-hjIerw?D?z?BciGWglmQ@qnP1kA=a z9Fw&-rL8LPDJM{^03uZZrpB#>0tP3!whpK}eq&!75`qEi>07NtqXZ59JVRF8-iv(4 zl_UFswdBDqnH&ZIo1~^!>n}gYrqse4%+mfS@qvBP6;cU)yTBb`ic+@&u8&eU6{B`TKm^1xAXxckdmi>$owE*vHzjK zyZT)NZ_PoBg+jn;w^m(A%EDl<`2y)6UGxl~`x%)0v7gUTE-f!+bi#`L_{ChwvgW6pA@cS)U)K!7?b zqC?CrsplJQG`6dwJPYrbQy!H!gVa%6*GuN#Y4lw1;r))1;9yRHZvx+jbVcR*@p zq=_Ev8CP_S%y-0)8i!l^7NFUJUln|)GGpq6Xt*qX%ryS2nE7absb1T7=X7I-qc1E8 z{6{KM#zrR?wE5!s($j-za_-2O+=!!KY%Qq+YF<#?)e6y}?29gxaPyH+%+_Y~M2ASMd@Px>6e zf`%p!PK@~ju%G``d75(sNz=TuwjfN&#yEa+GUFXzWY}QQaac5oyZvD5nfiF(2@pfF z9}4p+dwu8KTkEuhNm<0y0cB0w#AL04#nhegXQk!IT-N6dELcO#C3jl6Js@N%LRRA1 zO=ZFeSqeuaOxB<;HjoKAQ*+F;7U$@bXK_4TD0az$WP`je@N_4eb{2H>oA`lo`Sk_lBK$FY-RHH6SBd0Z-4~|7RMH-o@@KvJvvi zLaBDH4nU7wxYSs;b&Ok+_5ek<)PRKv9MMK&TjeFT1FZHMpkoeSrd%dRuN!~a_M_u* z$BF!B^9vN2#L&+hXh^=0Vtgbl z=A)in!I+Y5pVRX&ffZj%9GM_K!<^qd?%$^lwL3fDIz#{F*u0Zl{=mP!*AK{HU7~|G z;r2d-DaT8W<>~*J$*s1ER{GNYn1!Ynh^^+IIt^wVA@PH5luQPjWP0j=_ITF$&`X!AU=00 zlPh?ikbjil4yWyMNAW*+C``io?8P&OYql=nG>M3-p5v~76R+A(K&!sdw^R0U>mq~C zZTh6}iws(%jM}z62?N!ydY#!cd3g+yaVlRr7_%r`$RVrziV5~{+G*|S%Kye#jqlOj zvM7&siyAmcnY8QgH)1&#tN0xLlsD#rv7aw7miYt4-BKWpgGpO>RQe)~f0Tix6#bIA zWxt@IaaFYBzI4laH$96LTnlPCcfg|++9}Feys#bH#C7-3@Y8HCG0i>207*n=t_wzk{H#CDc3 zzs^1z>Uk$)n~0psxPy5ih{E@KwR?%9zG^XyY5h6qACm*-6rf1uuf2iWp$MY;88}UgtP1`?s z{eFaQb$wn~aY1wKfiJ&}iMbi?fEJ^}_S3q!)hySV(0}*0>%rtU>uZI{fZq zXickr%m>Fg#w%SDZhB>AT$qq#)3Kp#Vm@=@hAhKpj_oVU?*lpz2<`b%G^nYQu8iZGS^jOMdQ|O@yd}lk1_MHqA)=x z_b=?HzpsHUicti=ePUbD6&lc@WlxL|t3!x-c2AZxy-l4cA$Ce*UD8;>AwdfJY`%Fc znS6M#_R}BR+T2QTv;VpTEVA!|!r{<3|E$rkt)b|F%lEvCTIGP@{^aPRB2Tf#t=0>q zK*$JLI?2;|@dIM^;oIxfuorp)dUl;A)>{?gSHuvDkqcC%+Z=m`RmDpa_BTw87L_KSY;( zoYU%rJ9eUn@Ooh9;e>_-f|y(0MU8~fvc0(%>VAtzcHhr%nSvGfwD|CEHsBE*OhS`$ z)>@OplwXwo%o^_UY<-~@4BN~NFOk^jA*ZvU$R~YtlTmzXgZ{eYJQeah8mDdbJ;#wF zM{=x)fxL*u9bnV}p zZKC_&w>ARZRDQkFM+O7!%Fq zhnEY^2mojbc1$=sMV(C@3#wcVUPfapJBztt(M)whhCV!Kk=3s8(EKn%3v9pQeYfa{ z+=KWM=e>$od5NFbs{>a6Z$M+&uakBG(9hK>fo))WDl^`fXpMcoMrk$mVDB=Y=_;lG zdvGLOprt6riDzJ5?_kEl$ro8&BWO1(`R%olLA2}%3OC>wj~E6_YOf??n5#cw_hr_e zsSDhr_GqNoj^$2@|Lf60Y+QK3RClK?j%gcR>c2 z`XcTM`Fqh8Ecm8fyZcb;-rALtP<6@)&9uDKC*_}b%pM8E=?ydJ{pPJYrFEP8EG20* zd+2$;Sr{9X5^ys8wtQD+v}Njn@Wt)k`8XU!d4})dn~#Nxt65Yq@Ad(-Y3I@3o@U*O zoCO)}#aa{kemgo|%|9_;_m@qE`@lSOE(j%MVSPQyJh=?!Y^m5i<2eN>o+c9aVzQHR z%2PVTI$qEibR=%e;9kpm+?X0q_k5$K*z{^_k@PTTWifQoO9!xBoF1)BMObk~2(@-! z07i|5ramC@Y(V@80RwS^AUmT8m_*}NHr!QqE0qlPGEvpIA5*0UpTw}K8a!u4XTKlH zz7Xa@U(WW!v*h^>PaH-b>F$qo%ewu=J9%AA6dt&-h-_fnRoJXS1^89|s&0~2V>$&Y zW2WSNx8-SfB;;i|M4h9P#ddSoS?R|tA7snSuV6T=D#+|zyUVVbO!&V~;xY;QwKAma zmt@jf9)+Z>R}Y$VwZ262-eTa#X0OFn(dDFA_M}97)Trfq{k><_kJKcgHXC)aGhfeT zJ_hr=RY!HQ&2_fD1^jW(-+rr(QqgNh)WZ5F4k<@^1qbBg^xjF#oNj%S3G#hne~@MS z*GZ#2bce~^FRSV%76!9`NFqkB>Br7|l>;II(%O0Be)n8VX^G$`u)rAl(+*XH<398yJZLmjft=O+a znAb?#f6vQBxp`-9rpJ8-Wjb4~pyTZ;poj!#y>E=j(m^5|xg;AyfadDw7SY2Ee)1mr z#rPYMjfO>sV;TdIBblC>0B!?+2isKu!TH)n{T+`g&%Ng@%YCr+K1ElKGDwl;97%2@ zTTc9sH1&jVhHEvbCa6celvaS|GI=sRXxmmg!XE3=649oS3YTce^}WVS6I{^%8&0WGUwo)0IDvLq7=; z-CrzgvewM@92#lcqqQlo@I$d~3%P;}V&G2ALWgy%V;|{T0rZK|ahs9|_u&F_)A)X` z?UEx04A=Q0(}*QpH?`B~ZP9Sb{uhn9lW~oEg`)d{Pi2JF`X&w+jCPK=H4VJ+4XBw! zi&gui{>cy2cW37Yle>ji^*t{St*YvhYUo&O!y6am$A6x^>!@-xNMDe{Kdr*^&iTwA z&%TGakNLpN{q}dv7Fl~FG4j{Hk6r?mOv`SlKnmm8oojP?;9Q5@YOT`8E7_+jzwxEm zT&m#<7Dz8xe1jP*^JZWnu`^-OwTsk%HAAV9(yBF73j$+TYm1s(j zmI^N>D{9jTkg9D@QB~^0`TY|ZCif1SzWlkxy-j%H+@9p-YBERzMiz@iZSQ!2}$q50V^6{HXv#ywtD|6px=Ys5io$$#8!rdU^9&l zzRC2ibxxn;EG|4wG;0xrL~^C(_00xPhS|p$l-?V=+{_q07=mGQ3EP(@9aW-o!u7+iv^ByE=A8IciIQ9|8ZEj+*0oHLg_t2Y{YHS_*h=2Uaosj zOvD5kA8nUSTG`sHn2j<)WEeIECDe*8u5v~S#wT8as8T~#Yect;q2XUzk$?e1fH z{NWS+OYXZD)~l)ZS#p3l1?7O=9BVq=GuR}0&^wLMlKF+@DI}xgTDq!-eUuWT;i5yU zTuY9HOKY$g%bDk5XTOJkECi!8tTETCV)C)Yi)Ue<==fAQk;H$K4`&ovd>w{7<034XD)3MxJqrG05w zq^A9c2HIj>4&A2Gk3Oe6zerxAd8o+>IJ*OX?hjiSv(^avw9L1)L~u;c3T(#XLpLW> zR}*ynezc(*Hcb>5VpBAx;CR*l)Gp(6K<#4PR{C-?hn$W@hQS8o5Ni3zKv{e~p{Qs$P6DH^=)%XRPJmQ3|s7B z$=Du0aG<(QX&O=XY5hv?wUoV0;(Z#lfZsej-Ar%W0c7E&LSNU*U2NacmiBhbvirP# znT#`@0oDmm+af@_IYIF??em&WSfK z*;WE)N9xO9-CoRQbYgt#7m%3L~T6*GthB-UV7S%az+{xVJAPNEJfw2^ai1_UlDP6w% zYTWNEZ^lXwTsTO48t|uVEEBkPH}(FZN{@rnojF!AYJzjB$jPVBPlWP#)q3&aar;L1 znCME@^ZHq}TcNb2_0cUwjK)hxzkG@5nJU9K5eLsiVgwyTm1H*b3|K>;{!jT;OB-uu zJWVSXpMDliGomyt4k0E&Qe(3GobP;i3L>l2yQPn-klnb_eIS|TsMLE>6*c1M)(v-? z9~ei{s;l8bmE0nAd}7>=84-E-rLclyIMunPI?Nl!eNAuh5h{Riek!6NFu=<+$FmFT zRaNHoCU{JZ2C4Y0PTR9uK$^;@LO3<)Q_7x?3r{I%^JSLRp5F2|e9lj!XZ~!arbie< zS#9Y1uU!R=d$iE>eCEH`T3GW2&tpo|OxxGmtZ;H0lKXF{BmG>fY`lNvthiowAnlpC z!q0nGfGcO1^ylru*+kwAqJ)$2gQ&QzP)mw4!&@U3`Ya?6p$6k?@9llWn5D&()R*)1 zW}lLP#z!XOz`sY1BFDL2i_w6~TAk9?+)-fbTVZkAF%=Jw{QWagX|LX19~LfYFARBU zaMfUDuClfB+zU{n-hrOYL~_vHwNFLRsi|4%MqppgS?nJB0$U~{WSau_A!@m6@>jft zJcuM}-Jg4{KP$Eq?Pi|)edf>%vuCYSV|kwI>EQK+3&VS7E(*vdqA_sS0}1Fnk7pe% zee%fUFr6$&f!znBz?{{jz_s|qUPm^1AmY7-7`#fZLbw7O8OsB*JLqotmZB;aR$3e9 z6{B(ZHMgg$2?4BTxLlhhM->S@Q#HkbWQiE)1Dmx|xcV&aFJwj8a*RB&)oYC9N|#0G zU4Fe(4*JJvPmFYel8+gq=6iKV9l#cad{7v9hiUYINPsbU>izv)3@{ebI&|bxo>De? z_Tpuao}d9^=(9b#H@up{DktSvhNzP`!V~0D_PRD`FG!jTu@U0u9&Hs741?K~h^~ zxU%xqvL4Dojaj1-!kdr@zP?J0+e0N=*Fj^)GxIBl$w@y`YD6;R7w`%@xaF~V^W>B( zzgBhVU{{ZA50B(6**Le|?p&6NiW4Xi+x(e0!Yq2$sFfAwbJbd7=JaMy!@PAT081R2 zrQlLpSG^jx`Fk2P0LW!NWf0Tu*k=zqWnd>?R4bONF}E>wn^(#vzxod=l@|Hb#7^D+ zXmkLJ+R%wL-w?%@nB|q6LN_Z6%l;G_!0IaKE_S|w>h%quO=U~3u!EQl-z?Og+0XPw zq|bLNbl%nv>7MI0_yQ&XsD*Mi1&k5 zkz#dT&rl~yg3z5AnxF(4RWk`!z~OD*tU1`*IwyLCx{A09V2$B>2#dYici9-hy{^qE zm~JgH9jE7sQ;5eczE@hJ1n6LW^qXAyE?n92=!Emo?y~y+{p)~e!i%`9_dFnGEfx7G zZi2!eug2@c*?-H=yJ$8wY;-n zrS{(uBs)@LywovsBPqNbW;;%Nib&^Jx53NONe$sHU@^q3R<(}L766;f;~2yB3#|-R z=~|q^@v~DRKE~U6yArZ=za!nSk2n;(TP`q*y!8XrYj-&O*2@PbGmCnHGaJ*ej}o)} z%x%8?Co)|@lvoQ5E!cm105YfN7G$iVm?;wAU_h5iCo?5?roNd3-`Wim^Uu-J)OrBk zuSmHhEG!K9`c-B2NIy=DVj%+QqP(~;=w*TRRI*ISM*62+wj;^=)6*|k#vlzl&@o7Z|=ud`}O=^^?)^G zQq6!&mjZ7i27YVaH$_x8s>Vb8>y(aim0l3mr}l%C`$sj3!eiz)1n@U<3AYVCt!r^y zDE4&Ym1qMIv=5{@`2rIonWc5#G}zld2ohn}to1*JEXDeaup%gOs~-*0JbK*wBQJL1 z^PAhFs&6V}JbF+=CIJ^}OTTJvyUk~V1p>T|RU5=(wJc}qqX)A<5Mwh9e0ua*9wzlN zEpm1#Yr9#xX+;4H#wcX$WAKks4-)%?#BO3&4)s3EE_qAirqF;G>-(K4(1;QcdvI|h zLh0D5(xm1o1+(u?I%+!0(KLBHb}|5-wdth)X??wEX2a+BA9S7Qf4YSNT9WFB%^^(9 zw`7nOeOdHys7!*9GEi(P9roy?<^PO9^GNXL(e#$Ne1wj~sV@;H0WD0l1sVRmu8V!| zoS2yT{YhUg(YNY`27+>$Vv&nHpwq+lVx6@%Z(V-SAZ(+iI`otx`RIQ%g|c%btSQkx zt=$Kg?G@;`@}Gh=JIe(}^^(gU%G%l#B^X}8Pwzy1uFe0_>ZoA*(@`~sZ=KkknBImx z{`AYYN5f(;(M-fMCJJY4Ze0rQ1H$xrbfizm5c}0Js9H_&<-5Xfsj_piWyqTdl%?l<}HyVhtWu zwExZXm&xS@h|;V|)(lK?`)7!5FrGV4#C9K_UNzg*wwLJHwK;Ud?2mNjGKmf+aYBtN zD@l_UCkeHB3r^@E|G^L8k0A9VkWY@Kgl&S)_P}Cs&r}z0$&4}s-%=Z3$W`Rztd!8! z15fW?>$e%pi~E5RPEN|C==szv{<_9%kbDXLc+)rA4OhPT%bp}&;?ZkbhCj8nh)T1p zTKVl5zJ!-_*|mbNC6{*p~^-4ZML#AMt#C(57)mJbXPkz`$(4nACdAn3h-eEJm8Ok^z>xpqrPDCTmF%;gK zGdxC6kIFu#eqr2pZBOl#9K4C&!*B0wRaCU`LX71i(dZ!chi2JX-lv~RMqC$grnTRp zS_gW+v=8$Jgql=)wcsV}n(YPUuM_2vP3!g8&Bpqep5gFnl=$)Ga?m5dlPn5}x`>o( zJ7*d+(RoinWB-S-eddUWkB;0@BJ5?qyI(g?L>29o7RO8_1X%)~m`H(NH$1<8)&)PM z_G&(JX>I(5(SKeb9q|PQzb<}86~uj)MOyr0G~XBfyoy1^xz`RoHxT5T`_wio8s0Jv z)frNYThT=A7Nnx*QQM-P+5Ue1V`)}tiatF(#*4dK-X;ZJGn9ri7g-)Bue5DaK%4~&zw*6z&QT10<2aI&IX`gGhWXYJ7W1ksq-o?NEy z3Cz<}2R<1pg3_`Aj#eQ3{j+(xqeowkitH7srh?afUW{D2AdY&$u~*LY`7Z2If;gM* zK7f34fkZS+;95QuHNr#!I9}nW|K(s81c+#3a8rte^hl`(TRg`=LbR zv$QHZ<>-`P8M2}eW`%0?(l!-?2b~9U^D!6nLQge~mK*w7RhMN3xAOYgsxbou}=6GG6LyCy5PAGD7O+eM&kyexnBkj~zoi zi)K}h6D2XIUnYp*_xnom5`zHVbl<1zjw4q+p?>K5aO$zUf+88zFJ8y^q_UyA$(O6A z(g4BX$TelogX9dm>1dw30+MwV87pY>50w9mn!1cggcGsmeV97=oqowF_YHJ-EQcK4 z>a3VRYl=rrE+S9QzqL2_8{9C6Q{rq|id_!Qr`=^)JU!Z_{7>VrA945UV~__hlr z>1dvvay5nR8%vjK>UTer^S|NsJJ;FU+5!oM8fYZv$(yID5YhS(UWlDc$g>y0cjsi@ z56mLy8xKzwb8Rh7DnmXhb-J_*gKYP0pVa=T@;~reHgzQhw4#{PIoi{Y#xtCr<5q3GwHF4X0tl+u^Fm97&__c| zOM1T^SY1(i3udZQ>=D*#j4dt_5zVQ|)Z5oO=~h#!=zfXo5s>Ly0CsVoU+0!tJFrSD zvzJPqHiTbd9vqGCSr~j^<)H2r^Wf>)Vl4W$#fmGnSRiYDMm25;T)J+aEaPz%Oa!Pb4)mKG=WCM@zFfEhYRE64?Z_R4lFXT3GR)f7o z3rVKbCQ)oj|ESe1;6%mvO|l2A!Mm0IgTH?P4rsmO}(+78UqrSiU$ z{X}t;oV2eD;xRYhzVgXJVcM*$i#dg|Z73zZ>fhd3j^yM6Z!z{#(`MSUhrXR{(dvf> zsTF`=E?}Ziijc&{b+vPu8)me_cK&Qp=QIy%_(CM_7)L++!8R)FJgq{Rkdx#^VME!s zhI@{&-rv1NV!eUL4Pm#6MUd4aa4$v>BbZ&KbLKqv_Z`&<;r{rHR_0jy^bvX7`*}dwdO}PQyaYf>Z7Nxm zc7L>W`U+C@zvAO6@$OnJ zD@~ITA|b_Uy7D^ND-Y@jlK8-#aa#lVsXZ(Ybc;~r%^-fcF+H4qk(WKLcFRVQ?Fi|z;ujm#hzPI z%@HmtiB34E3R-~3OF368=O4tAZJM!)(pvQ1c?2f2D?f%qI0^tea<=yt`gqYsr2%O$->xCtCbeUicbVM?lSxsK!Jg29;6@Gk|I1yxx>EmH(kh$3uv>QF6 z?yeNMwqwU0a_AD)BsW^V7C36-0^+>fWG-@;>wg)XQ)oQqR+?WL<-DZfh@XI1Unx=b zYXF*z>n^=CG?6mlNxJv^l7sYg{a>kzK4Q=(p8! zu1gE?iUrWMy z?D@~JA39TKVoLG>XNI7t2;yF^E?ARng3P0M`z9R^I|H^+J$s(kcQ87(>Dtjp8Q@KYPRz^5D#WyJt zL#rUMR)orMk*1oH^VtlsgGgxEZj9|qkzgSbp>yVKw6x#`&y=b=O)bfy`+MMQefb5# zRl+uyqsWrM*b2IFTh*mk-54%bG=0oelEj|kcv>R3_Z;S@&I&K39?O|dKhh1bpEuwn zH|S%KDKPRQK&)13?2`H-cc`}*J5}a|Gi~KnHvz|dMTwEY9FcvOexcOf()S%LTQ>SU zGZ)|SDCpv%oY%~3`Nr(DzUu(AResTH%H?U3k)c{Q&C{=vT=(NnCcNPTc=_ormes>MfyL^gW>^TBHU7weR7^#oZS(oR0bCc$gviQ?^Mqv&1b20fzze~T$9qXy{4P5 zZRpp|f6m9kBr2*hRX1JE_Fcq4&)LQVryh6SaC5hJj4U=4u)R53_0+FAQ(4S9OZNMR z4?9~Qn83dZ(4qVKOC^4^FW z6$}xA)kR}B|T)zi4- zBMbpUiCwqw{-Wj43uF8D$YZu z(46ar)0Cxfct%~Bi3j1tX}-l*#-LHoY#{kM$mRgP^L|#1stK}cs6Cm9YTcxZ5Ua(_ zkb&moP|jy3**~++5N0d$%*eWT8UX==XuQL}0}5c-Octbfup!r^T5Thy`ud~R96t+E zfOg09`~6T9)kG=_=^s?4Tt%|tDwz}MM8()}x z5f{Yz6)?J~`g9expIpEG70B{_b_d)N5xG8+ff8+ET!(XAZq&s& zUkyasD_B>|nO~N@h|}aNNfE{%?H215N^x`e26ULJpIVpqm=G1XH!Xz+;pL4Yi{cmwo9&*0V^A*SOJOW%lZpHg3bHH9k zOEU(Lweip!2W*qh7EgYDsgYq$W9j0tAvQ!cRkbM7l#^gO%EQVN!E>k0rb{q$5)jsl zt0d^JbE&uY&8f;%gSinXy{026N!(?a#dr4zK66UD^?=sXJ^V z4oL`3)=B5J8BG=kVd=oW_(f-au8p-d6+`d3FVvStQ0E-TuW}y}6yqLd9GPG6l)>Rg^A>$UA1r5vF3Ax1vOe2d#P><#<;RP_CbCy%~rA0pO39eb| zKx*#tV)h7ReFh7%Aa*0ot3ma^9ZHe9^f@h2?wyNq#}txF7?^ zTyHgoFK!qio&V0)FP8JQWbG`?lzi(Kn>di?Z;h{QqP6V3IA$Jd=tyn))B|6&j`Zj_7dcOO6&!T>&oqg! zsig}ge09$~^0pPst`l9pPn68{m8;Q-<(r55)j4<$HbJFc2o%`w`AF5i zMTN8wCXeFIQb4bm+`NU6Y(S!V=81Fc&MPD+54>OQ1S+S_UHs7qy}yuQ>AAxxOID+c z20kZp)riKFOp)L*vN76^SBvfk-XCvL^QQz^K3yS|7;ees3!kNhAj;I!epf|&jGbE2 zV44r+qnSYXZCtE6{+Y7g)MFXCXsL}6-|=|Os-d;!?$%lL{YPA+TAK0h&Q9E?>5Pea z4vfKIwR3SO@}khmTNgFc?c+5r>*~pa=eV_Z__MQW)AOUzEPf_zYMTYCmIQl|c6`c! zH?C-9U*|%&9PvrcsTrM!FzX!VA}Yd68GkqN8yR3UeAaHQ{qMvBIiB>ysxv3q^~Q1Z zm+3Ck1c)|#cB&QlCi&5m_)QMK8aj>ikjF3oyI@?ca~Zyvk@N5;#OH0pTaj%-Wxz&| z&m)Zo=eYqvtSrYu;&>80wlth``p|c@D&Ge)Ja8tQmpl7+vpZ}=vwQ+M{95cUpDX3q zdm`%*&ODk&;RIyXJJ&|`=`uH6dZfAJgEUsqWcP>w+?ptLLmQ=vfYqW5a z&w2ui_}x5*Hjt`GNRyRkS;$`soz;aI%(;xV+SJ&tz)?2I9vcV7&YPch)!DYguLN0x zZAW7svn|-&W#6|?3Z8KEWwu$3*m~YzY0W)9LI%a&KVQN2zIO=SO(~SiixsQ(`fe?{ zuz>Chg4cXP{9vugzG{RCV_!SGs`!uiN?hnN6Z7JwJ#*@`ZEohtk#_g1@qcM?<1V4v_?&gihk#KWF>9sOP9+36DRMQZsr zJYxS9Ilp-30Dp2ic;S8ue}O*%8%SF2V=By2YvmVo*tnCCPyUoo8*QxVfP7_rPO`Ob zp9A9xJ0r1MFh1W6F-MT$&N85vW+QBSsdST402<|w0St}3Y%e(boNrwGwt&l)P!m4a zQF)fFAiYH5o~zyp^MJqEZIT9x$`(X_lH21DDn2bV4Z6$GpgU#BtjY!rUbkV zs7|i)`|!UoAm81&)l?y0WQRa$+KDXF^(9$E5xDW8CZV&y*k0^h z{j+*WKVtV~LRWFQ^~>U-AAaj!UGG4oQ}wUyr#kb%R)zoDHGaL(D~~$edq0Bf~6~_JVJ=F81H3oYY%94G-RhIpKF}D6H)um4`bE zRV&F?K2=dbPq%|X-NN!z5HR`n4oS6K7BD%nNTZ|O+e zik-7DDlfK-Xb-d`{ zQz;eRK1?@t6;E9NC!{K3T_8myV5#iId7^`5gLHRYlUSfz?p;%h^~+W6E*vF>h}<^) zSs>ShEfJVT!z3@8Zlb1FJl+W=!qw=~L(o(KZd6Z&0)?zaeAfypkOgdlr8)CC+Z!uW z=VN{{DZq+F<0!fISepm@Ds~SY`vP%X_BgqBCdVGf9qDaThyTYJB1YUBX;pKT|9Gg% z2>XDnxp-8aJ&fIQ{4)r>^{KgZuitSg>zg+d6fPh)7vg)C1`|A~gH<|@3!H}v6y7@D z^*iq_c__Vw+8xz>e4tgHeGYJMRE#VelZGDa$^A^metpbg!vx(dUz%8-G27R7;xlHa z@QVAF5%AH{1|8$-mcY?T zrKKkwBh-NG&{Idb*QGOk+PJB#JGid9)GBQ#;rR?OVi@M4*%nEDv-EV)x>q=b%+(|F ztJ|f|Dkz@~ASl;w>p?4vs4;A#TxgQbhpLb4Z_E+^Rbs63F#EC(u-06h-+E2?cgQdv zmCC|h^it!W&t|=QZz$PIweybxQ--rApS)#ROv~X5@7aZ62R#O#aUsF5$3CC!j0=_E z*@Jt`skG3qR1GGKxyFfsu7a%nJjNs>@9t%W2^-QMBF+cuZchTdOUhPOcVn4{YEZ`< z(y7X*I8LqmW8`h*G;RhF-G=^|GWLe_#{R9>iMlU`%2QYT-t0b2bUm}sp6WuI?l9-f z#3D#QtDYn{Y zQsJeX;|Ps#^84b*rD~+@P#A}`e^PS~>a`~|^YVQ%WB$FtIJuIeHAvR>V)dcg%vhGz zjDi`pay*p4R2>1Ncd1IhAQW(2b%MJ!Y`s}|BcMAbXLzt^ zI!~vW+@yCt7ktTXsZJ5d@PeQX}Rz{KTX+WcMV+VsMdIPmMG|Hqzm;g z&UgB^y(RLRe>hgik=cU%6~7Eq7#D@0z=M)c#l~OPLl;G?b>PAR(+^tqaZf`_6zom? zdfB4uydZK&Y$JB|qd~eZ`IK^i?*qom5TVParlBt|msmqX)T9|el|?Ero<5$zXJ}I? zTUy8iJ9#KWU14g51GQ4F^94XC)*t`ThpIbW07+mA?Z-@|7d;z_fLGG$Xw9rLEz@o= zB3LQ#ql=NU3{vN0o%yTy!GFi?^;XJ{Zixn@VHw()n}8AH5L5zXz4-@eJ$GEixJh<1Wt zMh5i9ErOy!BK5L<^yuF9l(6HKJ1u^$Bl_q4i6X8O3ALr$nGvZE99_a-5L?)O4dWG7>-n%Qk`Vh97PPBOkS?tT}o#F^~Gz(_h0B8B3%J1S+m} z{Wf8pP2lHZxT=@&x5?KC{Qwpf_TlH-OHC=067yXxF)#!KwJY8>7+z9xW(vu%jpcOy zH~cVG^ufdyKo$eiNRq|22oil=mb?jqG~WYjG}((hDwgX3`1K1mbt znP#pCx(XTGT{Pb_BTtP1k+?ryy|=KhjiX&)eg?_3Ll{H*$VxCYJ>DrDVr*dzP9;~? zT%y(Vo;nYRt)oXjMxH86+kE&y6;j?`LZ!Id_sW8^b4w;%z24m9=_>)bQ^FdjyO|)$ z$>JW`m{VDsx=jG>T1_x}pwIUa751zwr%1vv=T;}X1IlrJW*q=e&uLuM(L>-hl6MYL z%h&$%x`|UHbJdsYIIt(`ZC@{kx37~3v*$o z(PsBBI~ndG8IydK|M}^*ECeHTQOpq)@Xsn2Kg&>PbMbvN%wI( zI_^ySURDk|ThS4{mJRZGlm6i1pnQOZTCU8h_=f-exhKa~gQ&m!{(+ZzkbL9X$CVAml zuAEPf5Z!oe#c6BAhbd0;cPB!FzDc@xW1HkDThra3ori5QT>Awjb}w2qOCvWRXnf7A zd$+U4t}HGt+TF%_;f3KpB7K0{%WN` zrAyy{i8_p?t-a2wwkKHFK6*Ny0Gpp?SmzvD7oD6}?}ue;@SOvdjz=cVSDxlRwlAL1 z1Br~IwkZ)pAm6F)@2pPeqlFPDn|g6n8>8E%9msx zY5;Oo1*Yvx#@ZkJKe<@7duQ_)n<3u+X_41ENtYSP!rx2+nQ>%A9=(3F zd-40RM@7n6$SsdcNhJz6S|x)$7h*^}inxyu>s#PRO~|g8B;d(dbd?r_EfE9EEVh$& zbFn3T!W$i5X&;wG(oI(QIE_1UkcQ29e<*thO=SK;ZDVw_M)SchE$~ZY7)#dgbjy&C zu#Xa!zahsWP&vNyV_6<%tc!*-;2hJ3w#d2(Ibx?YhUdf9Tys$UjPkNonv>hSwf}6H z6wDlz?#xYd)hf^Bpp0W@ben2LZc=*+ihQWW$#Ga+2geMTkC3}FK3f=3WKHbCq2@sYFusF+bU)jBEn3U(;x-6bExMjR+> zkSKyd_i)nPacz6OJx`Qeo|`BK!Hou3hb!BEB7Mus6|H%}7FAn+DQ_n|X7*P)oQ?9La*Ptto8R6xeDu5g^={><&ver-Kn|KyvAVdF?m(mqn+r+CaiS zj>qxZubkL87r!qW_~d-|W95VCZ(2WXlgVtDTD47&U_6(PQkM$ooZ}r=;?DAJlTg0^Hui1cS_N|JPJ zZk=Y8ijHYxZ{@OFTLKls`!?D1%!4KO3-8L4B^?%%z=ujydraQW9`>)QX#PN>%=yg% z=Q6EVwltVV-Iu=wBR9JETxr-&>C17keo`~&arg>2r?25z`rKFCHt+aJBksuvR=GS! z@zb|+V6yK=+{?f0^bS=RT@>NGdPyImv4ijZ7UXU_cIdqNl{S|$HG&%@O*?2xUp)l% zJKH8W!w7WO0iGkgFyIA`FQofU+5*GR1XoZ!=jD^{C3;Gh&+22+YryiK4Ny_yjUG_f ziQ0^pB)U{BKOV_)w=t|(PT33rWjiAgR~ zhK4*vri08@BL7oUY$&d>yfqKj(pYgTS5IEJZ0VI43)}feL}W_f&K}+GiFV%ZJwf$u zQz(R8^W~Wj4~t*5+L!dSh2{oFV2kp9*V{Thk;{i2iCtI+Q{)ku)gFNF&Wv)284}zonV88YB$U6ZMF$a|9IlHM}2@N zbfCDyF?v7uZ^c&2;{Vxvg<_(xlC-L@k8v$B_B%W8boKWi1L-<@lfEY#fAI`R+dF%s zFq8C&J|LX(oG^D_)s$Yzo*~!~*;nTE;vaCj?GB_q;FMK?B%aVJwLSB^?|JmGXHfi6h+1OdKthP#?7uA5 zR>X^QGg(zbsqG}lRUCrXO$m8dS$kdj;a6`}haC4dBpJM-@l=07#PkNwE=KJ<2Y(Z2 zobrbFoa{wa8nAdlBe*5(D!Fkr*|oPUQny3q_`J-c!z%Rf)fdxz>fde1-v-~0e0yDF zXYaA6cK@vN)Enzzu^^N4ZxRNgN%d(+QbeAuy8eaQG#_EwCP(hC{<-f53Te9d?iPRy zqd<=~Om_zuqf|6-d^)Ya^0QY0M4}<7-p*&gjdE32)V`S|23R)IQxM$q!31`djn%F^ z0IDtHZX{SmScUVTuG%xhE3$Nac;?~lq5Bi%bL;xTOw zwSm2EARE^`hyb6rhZSRYzdP5tkrW?YQYQ7?bWI-%m|BwCIx??2MY)}c`0mR*-)Q&~ z!??enYwuGND;$A!!=jFPkBoU7@txNJGOVd($Lg*gzL=w^-b*61{j03?{?5pS@)Ij& zleDKY)p$#Dd32eg2gzz$B5QB;XI5O{q7HKDq1!uy{}bY_$C0kz=jqzSMTdtxxDiGx zPHr%y!qrON$`3sT`Y35&)F*FuOl*_yT0m=+ai=>aUx}-!ms>xuMQd4marC4A_%nVr z6}4B)2ECG?j@-WGzUJ}`L2B>Cq6^UjN8BSy7JO}Tg*Bx5Alap8!>?|%_Z8$g?w3$t z{Wa3%&yuXrt)j4QwN7fsP}L>zo#jj4;lG0;5wRI}bd{wkQ&Ui3nieU=A+Q+=sN_A0 zGznkJ8pn)|awbnWc7#zoG2hQ1VI{*yN``>_)~h=nSfi)FDE)M0a|rq8^SI@|_sPL| zGPfpzg80~`QN)%c)Rf%xWOvn-3@gaRQpQx`)v1VxMSi?_wbxO7i?;3oAf_? zgL5993(nD1J>-v8+bv{B5MN(C)L^nj_YPI?cRQ{wbYrJp%K1$Gdk#`ab6@;o@qCK% z@Jsav!chzJac25d+_504knx*4FGj6BkHsL068oV;JeoPW^zJf?DKH3<;0BpoPHlP> z%sQCwyx}g;;R1XXEeh_pFWLoS*E2eeEr!}iW;r2yE;hYK9m#Y&jwBUJ1NlAHBtQV$c+5zX9eon@J<^W*5r z0Gv*+?;jE3g?)H6gEQ9@V)N{!&i!%k-OeVVit%2gd*#8XZE`t?`w8S?M*cMT{rw)G z|4EwFUs}&gp^}-Oe3v$wiGJrT(=TU5$~L3IbULmUIbhz93#w@ZZq4mI z*UYyw@XR}6-%U-KPxM{RO^sRVqpZm&#iqjgLt0J=jwH9fl23_?$A zEg!CNaxxbMOo}tqBu-b4&?Sv{d((%vkeg`va+)A(BJhhpDzJ znD(u~*10j(q}{l{t<4NwSwe;PfpM5ae1$k(%=SD6G&jPhIa#?aC;-X*zPq$G{0=Q` z51lYQ?oAMHzQQeR`I{GTlh6-%57r_5o{{)x;pP<(!H#cez%GpeLY<~ zKdiLup@8WDf1(S{7O*vtYS$yY%64qTy^u=tv(*wb5rhRS%eFTQKI9A_!H1qmTiH%VC3Hi0a6*k(blb>qF(5@1cj~7OtA)ySH&O(f1{_U4t z4j%RPkzi!B96Qf}h`XUE^ib3PXpd|GJkRRHi_2irg}LODM--v^)KK2PnA z)#cV1JC8TA_F&dunjjP1YyRK2SxF>LQ{J)qr1*na>s%I^nsUa=atW=;urX>dLc+PJpjU<4N>TQUP!hH&Tsz68LT(FwoVwcgYga2;=X=e zl5^p}5K8k63`d&+-Tuf}))!=-vkUZZZyI(s3k9S)0!`xAf@Y zu9x)XpjW5sRcmGs2dfM1Tkk~L+Hbg#`^ZH;WEp2u0e{{6@`3>kn?o2Lz95x-OnQrw zlHMEhGFveR{*1SM$a8HyQWlqUg~F7CWMyxMz`-yqi-=2-bGJJw67k&;edClLz%Qh* zimj)A8tC7UVRqm4O41pZGUgEvbqw-iQ0tG3;U(K-@zX^K^alsW&;`nXFI7OvA6Wlg z;Zb@dtftZ2j>i*H8g4(VRkhN^m(4XuUzf7F8yi9Cu#nJD|W7|Ng=WgcXm(_;;7+9febFOTFm)wvJr}CXg3|{4r$hyY}P} zwS>zF+C!@ow=CMz#c`jEFayHQMZ+S6R`2V+nRQV|^lop>WgIUC*PKcLlBQHHZNe{F z#Bo{LfK{Z|f6dIq_2_k?KS^YlJapZ=*}T~ns`804Y>Lp%6Vy!3fad@oc~O~DA>Goj z0cfF9uLZxfEF@}t^r1i3_ewHeN+b2+*VVE3a{s62g5@hDUp&vN3GT^Sc7M`HnKg>z zvOR$)8mb)Vs%I>NybaAe#v${IgZcxKpp(s7NBsU-ox^&-2I>4UCam?-aETmM-UM)U z`D|p}dNoQS(&f((umQxIcmyMJgzeK-A$eBkqe7jut0n&^s0fJl&X7l-i%y!);c<9V zFg>rFOXiWNlwBGLlvh`iyjw+iyfJ!e{aMuM1J(PEx~B5H-Q(llQX~Kysv7z9uM)7~ zyjpigdRxyB0!Jb|ngxOYi^NQJtmfMwZkc#k|!r6 z(f|fxZZzQ$45Dg1qgG5)vhXS50^sVJuJ77Pl@K*wqJ160kV~by*yB4l^oKGaMD!V7 z1-qcgbkKjU5pUAv(mifIBlNO-6q?)T8uZjcrH3qs3mRbONt);5>&$l+`B2uiq+_$t zuiCb9=9oDseSAL_x$5tR7@!8WvkAboGNVsZ#@=J7W>PH0YxSo+^~1~MVBIQkq4Owf zFT3jxgpqztQ?hT_2D7YT6#f6{8VN&5b<(I<{j`#56XiKeDpYe*bTOU-$KWZtG7}R0 zV!jwG=XvB~fC0Z*8%@!#E-{!N4e~F3M71xLjy}{oq^hf2V$@i{CM9&(vYX~P@_Q}q z0r3jII)|8S&ITRNbVY^RFeW13#cdQJl5$C&T*2UmA`tl3B7nVDY*+Pu0sq;rkN{^1=?XD#Hm ziLKt~;1a@#@Ct*8_w-hVI3KO@_U4jBUKmXkcZ1>CGUT|&LJGdPFvwRCH)Cjz{{GYB zXH-)3iqJPBDQBMYyNTUpcwlIKeVhhX5eeJp~+aEc$}7bnJw@Mjv>^T!Lx{jf;~5Udw+#FkP92VPpc^f zFNCA!pKSt=kvGBL6ZMQ#YSe#XU4~xSbot(A7e|OoNGQ8UB}rBIcy6={2u>RN`fjaS zRdT2GO1Q3#8*L^aHcquxS&njLu2apVPx;}(*jS<#f4XRXD2~04faDN%GQp3e z?NZJDKV{B~6$ z0#GP3e~8e{#8{#z+!N-0x*P|5HuKkP>*v4xIhTR$pPeT0p4RcTZ0Mtv8rpQU#UylD zEwe~N{NE)7@ZEO?h+4~g+u!wAyJB!~0Ef-wk>qsxoCNIr7P%4$dx8A7@}2N7+`c@|6EWzFl|+0&(HlgK zOXNWEYD*UGfMt6F<_1+K-P*hp_k}4;^6Dg2O&7E)Rq2#xu%A~k0th?RDYS*i+!p%G zJ(#g>zIl#GMwtrWK0nb}{4Qtl$lfX^EFrA9(8GoEHL5;S>aY)+z%Q`>7P=`nv)yqv zzj78IT>RVPL(P3v@cv@;)z$7GQh4B2P|phm;G}iX^t7*TA88fN{#j|^hD!Hz#BA+c+$H7^f!Zgd(bCTAV*YMic(0j01{uf8Hz&*^0F;%Fp z?Gvs$#UVjk6@U>ls202tF52}*_a?Hg7~{Xi#i&NHuobTDw`viBa$9Q&HQwN?l$SLW z;yNk^Hfn?$8K^w|{s3f{B6LTg`DKA6#dPhzqp!Aq(Li!S3#4s?x>s4=u_3MF=-zfi)y@OvNf$N;}d zoB5jXYgv*m)O^p= zPutTe39RtaJuxSy`m~djB`OkD@1D%-OyS23im+ZKbc5iK&(U8^erMRDW5F}{HX7-0 zD-g5C7<<1EVs!GgUjVk$X3$xGd(K+E23Cf`=kgSl*7ppJw2u47ft@&DyMS$Q%Z|Oa zzcus_U>3YuoAYMDDi`Z7V6rwW2ju~qkmI>=+heuU)ql|<{)*bv ztsg`+v?(tZ*XD~Q{N#jnTK?oyTgVaI2zfm;Su^4{^j6>HE*Fst*P2Nv6gNkRegNB2 z0D3D&Hch~DY(?MvtR7v1g!Er4;T+lgV9j!W{UZEq?0~YXMQZ!QmE>8&larH?Z`%W; zBIYTwRS?g)_=RSyP*yhg1&S4mi|&R6o|L!ycj>tf z*hId5C z-?PY5uoca?{e;=rZJ*Jpi?b;Z7(T+h@zp%SMwbx*WIF`)LF8*Uetx&hyJI)@NT2%W z)B*KsPwr3l^y*`Dc?I(8{M!CUabID$xNQYY#{sGYIF0{(vPC(gs<@9r!k_4lnQ&S= zTS&T^SR@y=In6)Cj1wsHtcIFa4;hioLjW8e`9mocUWH?GX)A3#HA;5Agf+>77Lb-o zIMSmr)X`g&ZGJnk=Wk9)D&&We?$6_q%~J*jqc>=S)Mm9?3dfWpH24>`$O$$N@^7ky z-{R_JX$!RvJ}=iuq<3QX$I5~WDSP?3Gwp5$w@yz#@v^9&-@dbgexn_Ok5SQb0ig6> zFfn;SYQk07LgqH%bL`|$YXy-o~YDf<({vDWui_hZm&MBL?n zWezZ|%k-7RPCi5ehG$yD-DtnhMZy~1$N6Yz`}^zp9tDO)uOI8nzX!s#sR$9dpL$*~ z0q~bDCxC%2@ok(0q_*yIUrE64g}5W@)uX4(Ee=B*amUZ@g3ofr%g}BwhF9HT{sxAl zT?vS-WTRJe={B&?pBI}a^VtdiVu%LTTRpvlqi27LbeWh(I-9Ea8n)TzJ$eOr(GFw! z*2~qzEy~r-J6gS5p*!VB(N zh2BA7oJi0^zblqMVeMzl2@;3DA^Ngxk{Q2q!#&UEzkndPU;1 z&iU(a(b@#0K>_6nL!fZ=awc*J@lMy}phot1IV<_HeoBL;Pg_P5sPwEJ_y#e8gr-`Y z@iMW)Aj2`a59Iis&$Wc}%lCkvN_?2tXm9sOBZ=|Tx#VDiC#+NIL#OFHF-$@3_zXDd zNRb8xDj=M)gRiVEgKXg#LyEwtdYJmrciI4LzKIP2-L)^PiSowuSW_(den0Esv8?!? zDD1x%H<^DMWM0J8WYeF-n=c*w-MTBWs?b<#HHIjV-_2nCd|6rkZ9FR9qnQvxZ65oS z-?u92Wmi<}mA?f@ z+S99NAv>!^qT)+4iD>G;_F&yF(KH+F zSnC(tYbU-Fx;9#ylU{2D_G~AFOyo6kZV-@-<7j6j`h0oxSJbJEEvUG=830u^RkrYW2S1!CMkyBn5<}KuMN|#vF9-g{yj|)UBI6N&F5Gq_SDiB54 z81-r^_bv_1>OgTV?(EF%z5I@%C%^);qt15%#<9&ub3a4M&G!UvsZ)oDwPa-soBXNx zJ>#pOFTdvegGXJSVjNd^(@Z(ShRl@tUAsY>Ob#_?$nVdq2sxox;Tk)$1?Egy1E#tU z(y9GmCG=Ox{ec71B!NmUC?PnacyOzNcnjEwzBCG)R)o9kIb#Muzx3*Uu9tC~qwHrDd*MxF zYuM~HwP;__4Yx13xo{!j{gsZIdtL|s8VwUVm~~>J;JgXvR#y8$uL-vyF{$WpG4|x` zKGEzZhj4px`+Z9)+njrWj*CC%%i7#(QNx%!lLeu{7WGx$j7Rr(qUjdC7>}GpGtO<< zQILxKz|HGHj4{bix_|o5W6{@<04j0V$GN?4)8>=Bjn3(K7^=3T=JA0Bvx$+k-Do=6 z0d>P;kJRFlYVg`^Ah4@7qW5U+Gu_~WIg?6fs9EYcswqCWR3aLcA7uYxt0)Udba8Ov zC+Ulv_I^0^eyFw@n^fv^4m&#&cD>X7C6CV{JrK!9pO@v;LMb{)UmfCEs^tUbicg8ajSyqT>nQQ4{~bi zbO9GKJh*tH#*d8=;V0EZI`X1;XJ@DgVug~u-F4M;gRx%ov?*SkkDr!C2 z6Oj8Nyq)(%TyAsjCSDx4zIL7mKZ##ksLobd@-lFYVIM*-tA!0XP$1%m$kWcEh5aB^ z@eEbk#V}zU6r-oaLTX+5isSDJcTYG}dFLI6Bxa3^mZ)aRq2b*2fC^yHH#0(IjXh=p z3v7;~MY|-kSkq>rR4^uksM98>6Mh@DB=7jgx-G+(y{bRmSNJggWU+fp$Z=D^rf`== zy=vAxn&o`l5z{h<)=|RaIc)x)zl1Ce>60{-k!YD&ohLD!3Ucyk9nIOXu98m*4dD+= zdD-Q6YC&j(nqjYz{~UYCoy4g1mMR{Y6rw@gbTOIAT!hAOO6LMD-_{4J8EB znXWhqdh&Z!dDfC^F|Ll~bVhG*b_2lb-UT(o$V8E`T8f7*Q)FA?fC{Pdkm-7T4Agte z1zHtsyoHJ{KgdaopGvz~Gty-eSI5+cZFCnsUv=vSOcvoEx`sc9u)h#r9lze;YO0a6 zTN80}ykzgJRdGtc-vDeMc{h}aoY6?i*!O55tj1zxP3@QEuy}Jtzt`B0qUeO?trSWT z^z?1X^2ad#7XjA~#*L50sa?+Q#GRx}B}?z*P}q5Vq00_~E+G=Kl!6_s1-yao($Yc#d?e%oKgE2D;vRaQqLikV^lstVlA(#Y&ol2{ z0LHe&sN8N#fsn-AvD^a6!x7#1Bpngr<&cj<@z=YYBv*fAjk5H;vMrd%LRGt6tgvy0 z9eAE>ql9{0sO8ct!JTr8X)rW6Mb>A0GaxoHeagE0IKCE=o{&)Hd0Miz{XNYXG*?hL zp_n1~7kdA9NzOt9Lst8 z^XF+17beNKo^{uZc(mA4BjqLS9i!aGNdOdqS9)|&leplYKI`Ga8Q1g^XpimPL4s*^iFW}6xh`#$xqg+;SHFe6V=P`-cCoYUhUacvx z38tJiz%8Bz%?s4s@F@99YGK~_g&*y{Uu5ku#pnE27&@3h|(3l z#vy7y0K|x(CMucyjjVo(n*jl&ECEEJcUOqXJ_g-q41M0P6;d*k@aA%8bu1|KXIe!g z&@Vi>qu{YQ0b@+4M9Fy8We5M>-+Dc%wY4Fd=3M_(++cS$!HV5<5GCmGSLVD|uD(SO zd~O42)nd(5?D%?;zy0C90I>)8q<+$mz9-)h?$O2nsFMHQ&~^&MnI7D^(Q$2#u2KMg zw{O;~>~mbJEI&pc$Dj&^O$G5}4Y2+uf}31K;zwDDI?4rBDQy&4#&w za<+i1IB|jtA*vv{D#xCg;BORtK*I$II z2b}a)KfeQ>_;Tp2F2{ z$7TP=Ml8H6!MSAYdGSGogTn{}hY45z5b9RR(myI$bS+t(xme#u-fd+Z%Zdbhy(-U5oweQ*OSiST8y_d_u;sCG5p@BmHpBEH>GM61r1!pbEE=e_s0*Vi( zX;ErBpU{$CD$g?LIBFCAcNq-KE&n49PQFf5qAd?`nZQCUc)L)cbu`ge+VyAL3&z__ z<{yWStuNUYHV^aOg|52Y0D1N(`!Uqyd!(LlM$pt>Wi-A&O{TSoKAG5Ji;zFZ2fj{t z93{=?F=u?3jrR2&X1_7C`?B(ehX`Sx5$o?VpatBxkph>mIjV9fd?XsEADwNvlFa7) z<~Xz3ZSB0%P~v9kB=?;glvh8ur8@3%8S$Vi{1CXej%#qbuda= zgX9p{rY8BQ>DL>Bg=LYCa6L^~E*|MNTl}7i^rk7WuM`wBKz7bBGtG8{2P4;Su z1@>%7uKR==;U3)mZGH*HSgRLs#N6sLgvK|6#Iawxy%$CKOUQNzW6(7^!FJa>V?c#3 zZ#RbQ1)qB?DPq)TwKQBGk)P#P4PT84Cpt2pFHd8atY{m?2D|d4!Y|oUB5K$}DUCv7XW(eW&!m>BB|3! zEa`z9c=BhBugj3r*hWS96^U)&E$$68yNE-0TQ+RURj7A2FvDvneX#rMO;)xE>viAl zM_11_QeoTYwz2M&lT%mAZvH zHeYd_hk}TK)CAI1jiT$=JwET${1j>C3rY47@I6mP~3Be_K5X|)=5eCLmC)(V$s z-G5OgfCEv)=HKCpj~?T6m7`tYo#cZIm~GzVev1*~6$LsO*R%a0YO2-uw-7>S9T!nY z>=dSX@&@b2`0nZi^*3trxYvvDRdb7g{>N47i)trEjo18K>Y|x)Ma0btmw^jUA;XFf za--;_9nc=h7Lz_HetV;K3w>f}nRPZ%G&QIaZE^qmtx(Po_MCiB*+{^})o#DXC&#c8 z){2S+Ilp~9zw$Sga(+TrTe%QIcSx_nm4fTc=xNjTJ9L!;ZlW7fogUqA>RkG5D-djK z%at~9lZD}W9&pGXDg&iqz^koi#O^auho8(gS)mX4MLML0l6sTUwIMk|KmkFznWF|H1{?8Q^Lszv`2EG7 zzT9?Q=jS{=$MHUxX2H)c@p`&4(eTzhWRy76Jol1)&48y;n{j(~rGvV}D(Z&fe8MsA zBzlVa$`QF(t8G~M8d3jgon}S6g1&j&)u`i(r23W>(J+E+v5-G50Y}^X$p5204cthZewen{W8%J+S}@#WvUs@M388JJnwlQWE)`ds z03TPc?ths(Z2_u}02r{jvO?l(HpQh_=}2;Adk1-)xjL1f9y;D4=`PcfNG}~Vl2#)O zA#HSga)i;|hiNzWzQ=bLo&w)p@r978ZTOwX6^i7OSdu5q2~{>6cCV8z}|xU_=Io`pWBC3rEXgfDpprctUVBdRcv<85yy+gVKx9fGN|4^<+=Jr&;|lJ}Em%~rKi zz0DgldZdv9RQCTUN|h5#H^sa5O&^A29=(^rv!)+0A;7v`ERH0xv6iPEiBvfQ54dYQ zJIIIbw0!wDI(yoRbmWFTEQ>O&#cTyqD46kGnKAKvsXIT z4O{3w-B!HAxp7*05*UQ@BOD=J5~N+`m4_78E&VG<#4TjddUNhcX>B=*xaM%zr(d*Q z})7w!(@ST{~>8Bxk1ueCKm*T%?sfe%P=T5_wPTZEC9w<^1n1z*b zTC>U2vuNM+^^v-sT2gGaks3F$`FQHvdo!>h*5N1Qc+`f>MY;mYR}@037kMZ)T6h|=HjG?e4#i#BuZa_bM>B(+@rxmsG zI8%>120_^9QjmkkuTX}5OB$E%4(<30Nv;{}Km)x)>I5n>ID*160IXBX=x1_(qBKeIw%O$Q8s!Id*kd9i1qi>jpo znd~dxL0_G1GF%j=S+A$#zdtRu$<)ng^Vfn{N<+iPZLNj^cl3_?hO)i%q4tEREpT^1 z@Q}eWbmuL9l2`kKYG3EI+n#TK`wDfr%Sh;Bze|Hjpc<4kN>o1+g57>^y6~(cCeI7! z%6BWRMJrTU7D^(UUbQrxH%kKg!O^Pt9zH7T_{}{(z-uKoS*+rZtM)d&0x7`{J9zR+ z^PKM!7P{y~by3+n+wn_KT#oS`_;5a~gRCiNA?-PJ$4O-5mWW~~!}BwMUWqbudW<(Z zU><64)Bz89qa0&skSxRekp8V;ACjB??r>QD&HPgjQa1%th~*yCCz<%&^|4_(n_ph zKD7HXGVJJgJWFKjLdZpLW3lv!^fk7M(`|XMApBu-l4kZEq}s#PkY*`EB&*gobK!HG z;n~374F!xolw@sHn%e8h6W}pXVhahZd{WgWOY;*vINu+`w@CMuJ)3@7A)dK!{u|T7 zdx6)&t{rR2pa2I5!=HX5YE3OP2Y}IhO7*}7X$V#S!i=CKBCkE<-CQPYzE1s_`@lx- z-q+pLj0bBf!U&}yK`Gp{6uqo1iH!LX``!RBILMc>mlp1%uM1?f0O@wet1wR$H_(p7 zmy3oDtj)e-D$XwoR$-a8XLPsdb4C1RNis)VKhl%_kuv`I<9V^YF+5yV;o8#e8jbt&Uis)ud#pyQo#GQGEBZS7T-86@Lkq~hT`*$nRU+`8V6 zNVxZCd~`0Qp3hvD)P8=&P@@lm9g|;H9`xnMatv`E72v~R6ID*^*)_n$bLb-Z;(6ExHdk^|QES z>B0O_^gV?6wW_(6v#gHs)}8&jekmQR@HxsDppT+AZ=IaXizH`_%F54v$K@&A0Tm(L$Z zhpX*0x_lM-xmUl_=1OmM4LSDvuFg8Sg~z|RiL}*BDuBVPG|rJJd&b*~cG+%b8;h^v z_!_v_P`3ua@dg?yhn$ImoWqSZ3n9ZU_*!|I#SCoKo&~W-upz%-@ZiOSavC4-rrrhw ze&^f&emz=TEOPZQbfBEvzweu=R($Mf?|uR04A(~bYon3?(;K3u+F5OG6>LES z4=POjkTG7vR=7Pv@KMVwHtd{knQsw?>;vJ|Kf*oww?6s?VuZX4YV3+Ojh9j8Pr38n zY4M?WX2FPGHWXj#!3RM{;%D}Tzky_FW*f1kq@<(+*fxxo%8F#QhjyTomF4<)*Y=Lx zI;-#E+~2-G*=Z>(z3pM1w8=A_U_8-V&y%PB9~%uIn5Z*Sd+WH%y5tKkB;)zdA_Ih8 z4;W-#R7wZy`{3VZxj*Q$^uOy9Ull$}&Lh=jtMyg$RCtSnNM<{Wp{+X{tv|-rRelRl z2~7O@W!R>;m66oM{84{>r>d%p)QN%XWY*+@1i|QIUv3Neokb%-)dkw1kDOKy5F;=Qi`Kk*p_`KLnUDTI#K=H9R5{h7lG5GN<$(J0+2 zt2BEZR2b*JX);UgEiYMwyXKHA_Y_r> zYYzPjHM?lS#o9i39oi9K|Fr(VJuY9uxK~;KeN|pV-e~@NUYqoO)X<~OC+s!BZPW|<8MCDkyhq7ux*TgfL-_9`N$8_G2J|pMai1yk4s&NOH9mvcJoRv}y=#Rs>A$Nz#(MQ`c+N)-Pe^P6&sQMncMwoVe;51*IWm3j=Y(VK%xuZG z4aL*LrK#>;tVo9d*V$&?wZ7&NhwP_H?E)jk%kkoRlfoi!J>nrea~Zbh|1L|cy_>?6 zXkaw!QFk==MM+7d&teiGAh7ZBM5jtD)JVgB?tSg92}E<&{E)sxU5~{|>6t@%*_HI0 zz*i>l;jhPkesW50&J~KTTUux8Nk6l+k0j6eaJZ4YZ6^< zHeHpr`V8-$?SYRNMO%AWN55@mI9;qMTy8i{g`-7POR|WC_DJqg>F?5znyz63A^0k zAgMQvKs|AC=@HOiFcn!ns0f{;UD>vFw)ie0jx&peO0iT86$CoX4*51HW36+8xDi!J zMXKJqi>g0db>vASyJI!=22$+`eVJ(u@uo^oowGgsHzaEvs{?!M5P^62_np!lnYatL z0GyXdyCcj@$#PWMAl)bMt?`!Ws`AWYfGBFn1l_85!9SKwJRNT$Ug-9RU{aaI7i=-% zaxSJ32PM!G0mxUO&jq?$lSd7$heimWxu14E>Fjb~}XCx8_H z@~?o+pDB*W3vu?6yy^?Jn_pbrn+(s3AnzMpcWt>YW8Tvp(zL>LwfEwV7SR_`Te`A& zfjYc&U(G9SY9IOylB2voKD-~N)8KxzE0sVxmw`)XVcH6W5`I17!mn^I3QMm9uYIHf z-Pj@#;T=G7N^;s`M318X9T~wvul{1jh+gEb6@V_U^AGa$tTo$vmRu%?hqznUJy2%I zmbJee_0$I#y#I4h*~n>}i_f>|`iUR>?z32+JsqsuFii<=Ow)fKkT%$d_OkC+YiG!b zlDid9QRXk2)=dKZ2#Ns&r8%yxlQksFefnjv@*7@i zX+1&hiq*DWqy*BwqJ@7SDsFXs@Y5!wLc-O+By=SCXdtsG0>9%lS#F&!{F5AZ1CjSranWGVhW&-_{P zDovtVQQcN83Y#S(%YXezGwp@M5K~l&EwI0eHlUn6EE^_P_w&vx9${27%1NJ&L88LM z^$lWOjh!FlwpI*Dh+mxWupB<{~S2k(<8C3PS?Kk)7!gfzQh#hs3<1ANV z1vL%&tp<9vPqfo!0m&!$>U^wx<=r|J9yTZJU(04FI60+56j6q4Ev^5%YJ&Wto4FdY z%@^onQTg?1R%``b{+bH~ng*1uwVJ6n-y_#i>!P)ookRelYTCje=Yj@$>)mqvHUqa4 zrMQE)WWblF6#|^6!`1G`L&yNOB$xEw$brz zZ=d92H~v6ER#Hu_kOQAnl+I(4sgyjtMb+l{Ym4<(%GrV4SXlm@z6z_IBIV^bq3@jY zFZ64_xW_tVFJa=;&Ky_z&=8Fipm6J3Us^ky(EK3ykS7Q7M8xW-+_QWak^dyJwtS^f z*%LNn++PmgVuBD4M}@&OzoyeCJUUdI*psJPT}UoVdU99DE3x64RcpYG0DCnXBZ&C5 z<*t)^bEhw34zmW7b-{O-ner-Bwt^txLit-0^e*H7B}Hr$QP1nkGq)wXv}-kRi>X)r zWwDrkglDuU!I;mw-VR6w>0_?Ty`Z+?tK)EPaXkc_c$2eX;h)DzZ#@oFd`GfoM@#+K zDLB2SUEfZ`^-oGNjEH4R!iQy7x_KL&*Oi@vxJ3?;I+>mIRpYTj%!I$-_LmHN!?4D% z^|&Gf(y%y2;fhnctgv&nOZ^bFx4(68Ka2LZPNr|h!K%&UVYP7t+Y&d;m`*v>L`y|GNs&8ttf|XW3;Y&A)fJSrDwqOuma4L15 zDrlRkqgOC@S|kWQp%H0%YUHDyApFRB|E8Yd;Ad5e7sCf(O_g+Mc>XdOO1Qo$2=M6z z9Wc4T8O_K0@2*vNFA~>pqYOq^#KwKOG2qqk=6W~lUPmk=$2l6!<+9fPXB|k`W#%ys z!2OBY21x!v=UJie+=o=^MJHSUZi5`uYQ16~TDd>;i1?ia<(p;Pu)W8#scZ2s?8!fx z&_+4+yq5gc%bGN*tmE#V5VVxykmPc4KG4*Pp%{0X2mV*sGJwi>ef*tHlV%Rco;r2t zif8R1fPeHYoTFu_a`mp#u*2&U-HMv1x%yTHTzm)Z(X>U4XU5)wank0k)Ju5D^&56fD~iV|$y_9bB;T{^j_PTWY0H{3s?czuXO zOx6s@y|u7n0Kog}x5EG2bP<#n#)=jbSdB-Sc;3t=uuw2YZ05K6c=-G#Eln2Xw-a`A zTRq8mDY6gvh3#D-@k`eu%IRsXfXAg?NMBa0au(9bwqM7+rUfpY<5(0BC;Ua(LRWS4 zKuo-_R!YZ9^y0KZPaQN3I*6;NZ}8*|Kh}LAqQaE!KY|=?rGC8Z*0)jSP)NA1W_67- zr9~FhvdCgWXWd8;e)lVgOb+8$-G2dlb&X@o4kR{O`1<7W(?S2YR(-Rg=7O}o5N%=^ z7eC>XY}!Ac|380T$DJFDfOfq+7vJ92fKa=09@D2360m6Jv1l39b~$i0M^HoXko}Ul zm=F23oNno5R=s@!#58|8C=}TrINQ+KJYCWj%#q;))=V&kiW;?<&#D#%7Cw3MFy6&l zHRU;l`p>bzudt=3)vW1rYzzQ1`DD%!_#{!){&<)<06L)8%y#`!!~O-j`6KpN|_)jATT-g6Ta=MklYPr&+R3mGO;67MDqhHs^9hV_dj2a7xno* zi7VK9Z|LMzgs@aRZ=MxI7gp4knrh7YEC9J|f@3ZJcD}q4z@d)fdm4Y;suD+= z*)9rwrp+l}N~sWLLph3?rN0y}ILS7S?qym088yCB9UlzkV4kfnvaGJ9ze{vM>glFpsWd(bUpZw4$99*S6Q%>@ zhdk4sHl-wzs&Ty*y?4YfoE3`0A&2d3D2ZP$9xH%N0}iTlEnn1D8^}Zw=efTj(`9Q1>osy}t&|arsR4cm7+kejRyEjIBIc zDZ;Lc!K4FMa8-tsSug@Ft}~D-+dX))U{A-ULVV0ijy?+E`l3_T&DJK>__Re8qfN@@f2_Y z)ou9XWv|n?tPHAiEUvl^_4$q@dIu}t=L<#hv!qQ4TeE=0Z!K)Y8iE~?UrpV$wVaW? zmYaf9NmKHBXXJS7o3$3;ez7h{ZCV-D_0PlojqyFhd&+V;4Ojxl<#sKq8?I}`eN!$2 zCQjHtg`K7Rtw3g7wCJH3h5(FTPPLXmM^A@3o8@R)+`V8^b6#CQV{&%yVSIiq!e(tw zmbr%R?{?<$@7azYR?;_!)XRP=vuoxeBK+Qph#rVmGZYcfI6DYWkkA|QP$2+(0CJ_F z9PQqeQ*)W#klJs)pfjM}EaYdT=Xh!3!5fp7JTs?5p9R!bmr91;&(ET;}8p>J)`s+><6$?*1QP%(L*>;a@}fq45p!wmwfe%WoO9?>qqE2L3A8xVyVfPUuy$ zsNxgjYdns259(XtUtUmH{pP}uHBNtL+e&8rJ1Vp2#2U%zD?@w`mWaFqu|e|P@rSX5cFr{cb&mu0Sl2bi+5k>fNv8By zlHwLrq5l!hoKj-wHtVE z&cDKyuR(TDKMZDV!iAfp4i9b|?1ZO6x$zr;ZpfMRVcZw0!nGHY3#Tj^%hIAlc-~T9 zSk(>ybflm2n>T;=ea>^-QdIxhdbwr5PFDvR=1*1vAj>&-D@dlkYX=V)OJWanW7kig z(eNfY+N^VPOk z5^gB8K@6Pb{ovFtKCXI>JBv=d-SY^W>jjv3e;f1f>_q5rqz4vRmkS9)uluY1l3KK7 zpeF>&>s#P(bf}zzf*FI~6*Ku;iFHc6e|Em@s=vYXoOZGx2gSq_{` zKKeHk?vI|^{Z(g}D0|As?m}$SyY5)YjJSW7%aZGABlTs0%y;w&cc90oKdn!m@R>zF zT_yyb5zL>Be7d5%{q&T_{eYHiF|m--fZe>3V}Rql`Z^?Hd+*3?;ND2d%2QVsGU zG|#DU1|BYSoTuWH(C;VhFGTajy&S`eeDl}l7)_Ub73S{B1A|zvcbEptCn?)8T;pJ- zVQAD*4KJia{~u9doq8`@!G!FMzkQq`(rw-EK96j*$gL=2 zjZwR+WAa~IAjx3#=j0^!A;T{l78dO*=C}IBDEr24+Z54|hZUz0GhF)u0IhR=wr)~1+cEXK!fd_ME5d$~X8hi%*h3x3#+S6NyW=S#~ z0_erUkt<1owaGg~8vX044MnG;$x=pgK}ziXZlK$mxuNT(YDys7D9{xFc_d37KeFtM zCI6fm%0d??A5x^Zu?z9Cf2WJ>ylEdi_~C^Oi=YL9?n6qg*2u>w?#ZI@>be#{M9FHe zzdCwii-kg{uAx}n$(Of8NU3zk_`oe%nHl7JvTm)K4L_Jzf_n~snz!UC9mo=R zXu8qlI3qp9&C$DMDz+Kf z74#puft)hEaY5cF``oeX;%gQ*+T!*Rmpjbr`GmKi)9r;He-ox)@l2G0fJ`Wt#q_9R zBNe?mEYD|mF7iC-opkeP>Oi1tM@m1N=0eY+98T5eW;t4++lj#K=o^!6Wje>UPviJ; z`t%(-CYLmP$8n8MV7ZCcbUKdawA3J_O#ZX|cX?ZfzMX-;SU_DcVnNwMuq!=a`KOC$ zcV!tTsW`ESjb!$%Juz^3D_((*UVr1b?qBN3#e&N!XPFhX9FEM|&EFpIFRwhc3UM4J z5RBHKp0PLzS+1eTr8Ky41>v%9VTSX@^o?I9z5Cx(Ce`%_UvJb6U&4U(xZ(*xA^!{m z+a-K9!M%X1@rsb-ZD#94c*F)3PuR8bo<8}$=b{`AIvqM|?9c$y6}3x!sEgh)puWGhNEojF!cehfNf9zF4$&(&2_XEn zr39HaQ8}ua4%HhMnR6j$bVzsX%^WuYXuf0hbgfuLp+-i&; z1eObOy-kJ9Bqy_}-BPVw$LFHE?a2;epP}4VnE#$=$Ymhzh*sG0U%;hpi}@0F`PGP9 zT>>5FvNWYBzp|uhe^M-w;+Egm zu7Qvj(kc|tR?5)}D#STT)_FkFns)=07*x|3D2d@vDEuNE9S&DSYo2#4BtkloVcdl9PLi6s=3KSV&ps)7T079uB!7FGM)i-~a%@)6>+D2Jc z@FeX#+h>Wx8!n{MAK$^?ix!G^y-Sv$slqa7Uku`yTkF1r6n(AhhY{z%T3fo<~UBp|2AL+c& z(djd*28v}Vhv_cyk{t(=bd}>Rt9NN5xYaA9cEuLtJ)?Fb)bJgo&Ud$(XoY7G!hN8` zsG2=!NQ2E93qoo8+BPv z`}^eiGlvJQ z_^r!S=*n%ewQTWsRoTWaSuu~yj$bV1pX;hC1mE`E7pAd})IV$q+-|hFcX_rrEN8DW z^oKE=p$A!0id+i$-k&wbghYj>d78JK(fETCiR_n~ZC}_i<{97qw2B{-4Fy_O$xVW5>Y`uNut-!{MlPrEW{10~hh* z7%4-`L*A}J@5>~GX*gj#!dbeLc^9Kh{f@Ho`&T>(zZZ=7?K`q8ODo_b+w{T&nlJ^T-Kj+8@rGWc!dc zfvA1-dq%iV^TcaV9fCELU$HOs*_kRx_1;=`eOKU$l$Y=9&0T5)1%&Y^%VT!VuUgik zX~5Y~?TPjGN#l)6+s?n_2~Ll8M6DFsiOTIO+CFJ{A52Y9(C@7s2k*@v4XUi>bT#*q z9RX<)HL4J%C&X;kG7NQjEh5^!e^iR;!-3Hk`;lfirV;FS%u;e z&Iy2{nLJD9ga?B*j$b-{&tMZpot?*x2*QSM3R8XyfZT1UIw<_MYrnq)I`gTLIg<-q zlAH8nQ+l8;+<|RLnhW#bC1qc^jn{SfQqsIzC`lJymjJ#kRr*Gcr zr(EXYVOrM42A7n#De;C@G%T7wV3Y#ta;O&FJwj~-9A;h@I{ah!A~C1%a#c8YL|Gly zT%z}jix?a`A|SSdoLkhe_lh^Rt~*!_2;ATd+#xMp19nlv%5UZ@a#!QKbzm&WttKJ9 zmE{{NnS$knLRan$p#VE=y~`V%r*uZ&9(bs%LLU~F#l9C2e89Ak`E|x~JMQ86AqB6B z$L+?Yf|kQg8V2ga>3eEcKA6mXdu77<_yFi4Ld5&G}h;HBK z)0&DQYnr*6PyfYU9b&!^SV?~?FndWx-3OI9Id9Y7;9%JK^^lB&XgE2TqRJ8i%67Tl zjmpbLYm`>+cgvw%=Z>Smct(Gwo+Xd;liRRS#a zxn`xf7A z8a0p=yU|in^Uzw=creivsy1X@d>bdd?pZWo=(muF4>x!voTz_elU6m3*&sWxPy}l? zQNpPqnSvDY6#8Pe_6*Vf#hX7;%Kc-Fz2vKEg}!@lUY`_+uxi-$6id9250ma^iEtM2 z+W9@NT#-L0crkDO-SBv$f5LM_VJ%cJ&d^vSs>_&Bu*|*xRZmAQZI?3C2B#qMrHpT5 zy4IauDAdvsC%46(2EN)A z%C>-Rc5hPHeAoqc#i!Ai&2zD?>^zmWXj zo^i+1z$LmPO7(cbVWouIcw5YGSG_|L%{_vOZl1mPkv>M<$T+Hj5r*b@xHzI8*b^@E zf9_ZYp!1w1n9EDMfgHurrH8C9*G$y>HR_eFQ_?S&~_t!j{e z#LX+*rzMs?zWxLV{QCIJjDM~z4t}e|s83D5DM?Us{>u(Un>e?n^{sX#y;iq`pHpE|jg**8B>Gpho)Ph+ zC1t8DHTca<6y)i~h*F+>+#c>p9EM=9rpvuTfc3#AXv|5{T?U|M%LeRaC`mWJOd_YJ z#lL2x?N}b0oB3b&DZposHUyi_G7x9cZ<9fdUpoJ=hGnr$r^I!R9m(s=E5t>}rs$h{ z(7N*Sa@nM?Ux%;$7D2N}W_jrh>QPG20-BI5IHI;VT$T!@FK0+wU~a z@lo9;;Re5%%Ea~u=jy=7*ANo}pF$Qvy~$Zj+0s7-yMO)^$Dgyh9;m0SA^FC?Yrfs} zqIH&%>*0+-_S0ycOs`JyS*m&!T7NKtnas%%Nx+= zLp0O!c}{5!4Kk?yo{;>8)%9^(an;v8DW149JNN>< z8NAkz!Zi>T+LyTOFGg&0+!`WH5fpwkSTDO9IPZtp(C;c-8E!Di+kSURBI3*-keFQb zdx%?Zi+06_uu_mZgbubURUepmC|1p707Uj21_p0Fnz9fcA6LQpi8qh+>CWxAxKfv`>iA)ozK?r z$u5H&cHL|OMe=@bcUqm7HcK%I)AU>TGG$y?nBA~-RzWhQ#>w3zvA(H1;1ez6^ z{12Wd0ljGi5(7NwaEpMN(%K^TP5&}&Z+iNtaGDoncE42Zb=i;g>yXPw-Z{qgO*Q7E zTUF2R%ukME?@E=ZF81zXiFH>1N9RA(C-NVJ{l)gK#|Fx!nDopscO5kHA4LT_)_)MXStn)05Ief(5QT)eK{NWO!@{+;`hqc1BR5hc70@ zEGMrCJdv-Em%^pX7RQ>xWYuR30u_&s*;Jj6p6GSLjwUM_ z9l(h^KAWDhfLNL4*vgp}CT&4mlObjE(^QQ`ZNYPd{+;95B#qqpmG=eN%U5Tc!=0l( zZ!8V9`4sD&Zq$EdMbXa^jsI*=t7E@T#_zXWP5B(J3WiJ4Wh6)9#U3e91fTCX=Xh?p z)O>~Z^ofb(&osXthl}{@Um1DU-OAz$w#eCX4{KKKmmzEPf9`o? zQ3CM6OubII`>Z8t8;afo%E4~-%d=mJs$cpo&wc4CcncoP6D=^;!eEL{s~SZxAdi!S z@CK6(Lv;7AQ@gO*&a(R%GH~|`fr?YQn<)mh!lPJ*d@JR}q;RzM;VtCu(?8X(rm*W| z@rT0-X*-_V33{>moa5z*&;M>mNr->~My%)r%20p-I6F9{a$E0WPwCRPhtiq8>3 zIxu+EPKk_L=x;0d{!f_kyU~3zt8XBa?flM9cA<}*nvb)Ea|^7{8I;S<3d`F0i0s;+ zMZuPTw`~0DS|P=F+FN)J$`>!?T>cY1>jlJlc2v2+w8M#pEaPSD!iM60==P+?fCnEx z+Yg(W;8HZR+Kt6$NC5KYly;rWu_G;Vu9VBZ%EepCjq?(sDpsgd>fEvEQfiF1j3h0g z*c0*pwsZkof>p+^nA`VUn_6h+y;RWMIE7FuBdHiPAd8D$AJ~u{8DjN%V|^@TVbtV} zT(|7_)0{*O;!slb{VwC*MSK)}XmJSjkr2zM)hcX@is;o@zN`s5zXaMbM127}Bs>s0 znZdRVi`2X|ow1Am%|EqeeUWzuVM zd%l>`>}muTTH{Ny+{}<`BZ51=QQwev%4EgY-HAyu0ocWC@noa_ImLSz4yOrA&hyU> z@^kOMHF#jUNEp!EW)$qF2-t^O!zkF*^FlTzp%t6Sf2`>46Qct)VviO|oeM?RzMYF< ze5YnCoL}p0p$pDZe0}>+!7mA#H-z<$Z(L__ORQ<45%ggUQ!?689@%&xV!`po@{#ZO zMTIlxv(47pfYYz1f0UzClQNlgDF21tN(b?ED>Tz4KJ*@A^yplDmuIrRIbTfrtgE;- znoTYqH!|k>pVcy;+I_8vyyx>m-s{leQAb$C`tiwz}DFmW7++#yRH*j4SB>=omCnU*yhw{n6G2vP^0p2#O`AImj)RY zCS0K@P|HWErtiMJR{fBos~o%6Ag)FkDUi~_3KNH8`@6kb8zQt@GhPM}`QCZKR+)#! zx3=xkdOlDYUn>oHLW;}MTne8D`}pj8Vx#A^*S8(n(?pUBAZa5mmd1xPL-1OWxvENa zGw67yLV%^+g}GT#VLn?tV9`o7{DM2_J;9>(+Cq5r9W4F2TPiLWGuH9H(HrIySyp)Z zb<0dg)klA(;^=WwAkCa3?gu_#`jbB3$hcin>-gGuiwVA-<3C8>vyM~s1@6=S4Bw`+N+Gy}raKYJKF4+#i!Q zJ;COlV%s0wv+5kOQBU*%c+Op7a-EY-8z70KR}DQX6V{7rI;3P!teVh9^wYCjOdrz?6JV9Y`qyH9 zI88mhwXV6KzM|QkB0XfqfV}uyI~pq;*~dkn*>Ls?&}+}d(=z2(Qj9fM_MlUNdkGGb@(E>zA+Gd2z~u6hTjLku&n=wZj--PjY<&%7;Fm<;A^ImsjNBwmn~j4jOAcSsIjhDsMZSJm2Q6XH&(OM07J)_1kNBl-zXGXMJlpF=gU-C#=_Q zs+-|r{JW>EODAeZ>E3dL%@ab9dv=VkLG>|`+`4!F31CY`qwcVx5JI@&Y;S0!;`Blk z7nsxMdk8$O>x*N%`^rREOcTLl;Z+dJ$3jKK35 z55C4%hd{vcm*aKJlLi}?4mW)`8KuqJjResVQ^s-*r-qMk ze!oo``L3fRZ`C~w$Ab#+DM^rtM4fNTb7hJJ&W~X{K1FVk>h8-%|Wt)*A^3C z56=sE>oHCTaFJW=X0$5Z=)M81H#?P0O^SL9H;U;D_u9F9U64e4D!nt939T?biyC;> z5L-_Z`idoD89P$@VC;0y9+O!#4YuU^?@^*N;GG!yYiK-KOzI%B{UcVybgZ7Xl=`_^_gP)*$(1c zTkcy@b@g?8_7qiRbn0L)Fz2Uutn@KJki*v(L<*3%!jVR^6r4CJ2BNj79tUN+EjmZO zQ?>}=vedD~clYLcUq{0&72?DZv9yx9RMo9%P9IuS=DVn3DIZhO3okWikPZ?xOI1&* zpUTqO^yA_46rf)Tq;^{I*93*IJGjv;7%pIP^(bcFInI6Pl{sr`Y;lgD7@@3kKGg>k z$7jF5!T&EX=)4*5m3vVZ(3wJL@ZqB|1PU=Q?N(DXKn+)=&h&a!miTgQ%$15XvX=^my{V!e{*c?RioLq zh<^`Rlxxn}LsQKDKEI$IY$j)#{>|;i1lP3~AGFf!k0J`5Wv%kc(%x>xkM(suDj)S8 zB6nq%{j@r?m#lszLX%NNu_>*5z9iK6|9RWT@qFJMP#`czX&U8a@^t611vzSceYpfc z$(=Mf;d()Pnn5x^!rU2BO}K5mbI++?o>YP5MR%@UZq+$iX!;`iSCRYzYvVA%b#c=q zWV}jZOiU*Yk_FkGe1x6q&zki(-EJDsx%&){kSL9%k$F>Ty0lg6S#yKC7+DNkTgrw~ z0nRP$qeb}uS(FES5>>j)qCq_Fd+a^5+a+kJWJ*dt-oZeK+u%9(9r^2*-mbudkKDSN z1KRii|CjK}qvZ9ut&m!d^kGzbN@74va;x{{T+&*cvBsLmjP}-vNdBS%W6|p&R@(XI zt)>!~%x~mS(jBDF6;ZUKHuF#(22GMdpM%;5P)?scJn7pMI2rD4@zzQ9QmlKZ4tAgx zTz?jfs!=3U?a7{rZpNN?&pY23{EoxLcS$lQU+3lfkb&Dqk!|79@V7>ZD=z~mnA){2 zeT54PaZdLOb zZW!LOPxbQ?C^~dOy4(-s-+c9^K=OUnTm0LhX#T8@jIIMR9JXPjsz0grsMNQX7Tx8~ zB^Q=t_@nE)ZH9pJnwHWqCFW3)oypu~Vf$wRttvxMdf=M565cVa06`y;m94u{>JIg! zfgXDJhO6cZoQ$F8*@D(cHD@|5?@8{jlj<389k*pj?%0$Jw`6h1qF{iubQQrfOKv{(_;pvZ@VI`{kH}=2wh*URIZo?6nxq1BL_GSZ26CXMEH0-NX2U0 zA>>u7V~0`!=`L>Us4_2b@pKJ`NfBs;d#oDK%qj2!S!nW{Qym-(f~d~!f?QPB0)La* z9z84X)oLi}!hv#ornLO3Ael0Fd%x5WUh69(>b5D!b|DvlL^OUyFvr8F8VvL)0EzbL zVM=j+df#O}NJ^@iuom||ug$5d^}}2XhOoet7Wf?9cM*0|%gTBCiC}8;=GUjG1l$R- zb-ajRD##wl{takQWFJkfuy{V78+|0M8T72_eioiLVO_M8ZK1CpnOgA!e#3Y5sB>Ms zn6A9w&kpJT>nt`HK1Q_=m$T7(kdy)Vj!xvoqB!aA@B7&uvn8{AS2Oa@w7a z8<6@|xD!?P#i2T&@$?+OpQ3se!=Fqtt%x#<^6UFX$K5ohenY0R0o8Qj>@$4>vpaPmPhl-;-57$qrG0{I*xylAu@47wWDr6`Dd>pb%DL}FtGCE zG2fG;HY*utP6O#rG|6Kh(ku3RjH5HEOfO#d2{-O@xM4yWJz7kMpATcGyN?bIuQ5vs zRuiMYl_&>5vctNtdRr!tThC1z^M%U!y{p|BMviJN z@$d~ha_J`W_a*0zC3ZJ@Al;!lwAGViP zUFr?=6)$~AO+Op4n#ZM`PDtOL+a6!OT;Yib zNRD4JFy)8gi%P>s?4>FbE7&l`-#cfz0Qc1{n8qKh9j_TDsHg5{4Xb#w&JNxq9!Wvq_eY#{Dh)4c4HN6sO&K!sZvk5W;*4(`r zYd!;v7AFM~FH$$IZv#t^ zdFCq;3jSszow?Uiys~oF7Or+^*EnLv#F8Y+Uq*S^pLdFOU26n!ANrVsyGBpSK5nmm z=SrhLjzGzA3vbLFhbLfaK$E8!PSt3CcuLORX`dHTrWh>88^~+`9$}^dkDO5Z9S6G7 zfMoEt0*yu=VeD$=kMv2|u=58qeJqmQbI8UCzzTV$HuQHvgSt)VOv~KZw{h4L@%v{$ zsaWr&I;Nqz=ATX12(Q^@3%x>pP~10X72%2DipkRqvRp++Nu)A~(yE#>^S-V4c_|On zo?q!trOSTwD~!b|Jj;P+Bu|W%`B!*VzO#VE1}c**m&!kVBevkKD`Vz6x^x}!d!TF8 zKWUyAF{Ir0Zn`!u`tI7H#&?mVSS#E`(1;8TH%%T6Fl0{B&mlWtuXlKzD`fPkl99hl z!pduAjMxJ&{@Pvn?WyM?_HaPVv8HZUAz^ z?Gub$E=j&ehWxBb2;(#L3tzd^9EIz=$ard0u9RA}kEd80RGYO42HSKCY_vJoVITnl%kEzjwdYZTyw+w~vj^ZK%zW)xlNU;^!z)sNb$g651)1Iam{}PnW%mSB zJYDSwX*t|c5NDa^-^?qM8_WS(hK+LfNlG6qUe*^0{5wFpXIffcXy!~l1n%T9?17f+jr$>$<3V{ZCCK$ z3X5OZRG$#3lr%p&O@5E%GMA2An3*4K$|PPHWLNt&#AkM116O5IWhpb{{Oa%yPI4@y zXWVLttbP0tC6}F$XXavb)6lUHR74|(|Ajqe_iOY=*bcwjdyz3}F!tkOVAf1{LIzTi z(y*|n#n}RM`feh=1PDnGoC__`Kam}rH{F#e+Nb9-@Ui+1rt6yd)B!kH>$d5{5a!9B zwC2A?5J1N^OH0O1B{AHHed@=P`M8e9v!%d?f6-pHsgu~3_{$rpEdSBZRFTSz>l+uS zl4SMYJ!P5cy(mDIUULz$#%r+cEGr_b>9f&n&Kp0(c$Rjc`}vjn#MA`b7XIEegQ1wl zhr|b}G6#>SS=x#d8`VJp6k;umWYi?3U}knj{`YR> z0`)Q2B;aOna2YLkY~o!=i}8DIe2xNm=8%^U&5QDA%`@4~wErQ(S>io{?BXsw~TXEE~qw%Gby|^Q8CYexGLl`m|o{iCyWwa>#R&zvo>|B2kJYDZQ_H zKb9LcU@3We25jbx7`QbW2s$lnnjSo+x}8Zi5nt_ZUg}CwKzUZ!cvL9==gCk|Q4 zCK-)r=&<^9UG_Mr!IoqB+ET%dz7SIGp65({ymfSc0TDJ*hlz#auSQ{wMZTZUrw2;d zRt8rn%rEDfUv<7>=FhNlTy@|sHN#(mw{@ng;+I`&Hy?qu0YLRXFTq7=>p>TYRdU`s zjCZ3Z&10fcI9a-xqx3$2(;&xi&zvPzm`Qu1N2j=4&TAaE)=OehOlgTTJ?UP-eLXzd5R#iQfbnwz!j1umA7-2)P7?MhVbh_;w{HnPzS z7H8JB@84U&uh}x~SX(ezfsaznu=Qz4=o4A3eHLavT3_LDTzTQzb(SK1^oS0{)&3n0 ztzF&L@ZGX=vq^SPZm5$BD}uFSt1Ra{NGQLh9}kUGp<;`?&>si)Z#EhDbd8yQ}tqV~O`l zg4d>c;t}4aShn&eXh5^ShuM$Lg@G!+xa@a~$(w$am^nK|+x9uW@B4#>I2Ld9e+!xc zphXM2dpGuhtd2KIu3dX7q1;QC2^YCIqCzR(tbb+|y^ z91nyuO?(=C7sA$2r*udH(kFS$YyWiVw$x}ST!g5&Dl(2xN}qz{i9c;hb25t8S`b;6 zUT3FAdBuzZqxX_EJ`1PkG_woC!7IBi;+d=bh-3$5hCcc2=Wc@i|84^R*EwU?Z@<%? zk3~nn;G|Tzu9ZIUM)X;#hxE3j8@^B$59E$)7!CeR;-yh&FaQ_XJ9~G09_{#HmskeN zJBdjZ^BmGq6+?EtoBy2?d-EWmAAZYNvfyYKW5PO=w{h8?J4PZda^|b)B!hGR&6UdR zq;2hhok4V&bDWrM!dsv76V!PFGkC5U@iK9#r>H+_(3jByTN-VQI|LkfW6$Z_wtQUh zVAnU9Sh!3h9r!F5!wj93`HH!>l7QMG?Ai*$%+@af&8V=q`B@XG{IBE(+b$bYF=Lz< zAU4uaQvVd%p6tKvt}=1H8*rwb;EFl+H>%#46|5ut^Y(eFUZ#A+9RE5~33aLS)(7Mq zg~XS#S7JPe^QZ^ti^)O8`=JiIHqrYw1B!MZt)wgh4-Jn)dFB=xdCHn-DRPktt?Doh)oVpP`f zA#bh?bMT+ck^uaP$r;2fY(x+rh{GbexaFO-;?_e+(6inH}$Q# znXE>I{6la6w4-8n3J;k8-TGbIy(>6V=GXEBrql5dCc^I30QzgdnSDB*T`3A-yiLmP z_oIdY&l(2sifv1uL^OKx8cLJ4O#N&#m5wivr2dM+M58yQXI%ZE+sIXkufWEz z^6!Gr)8jIw4RgHDfL+u41E%Ih6BZ(x&tZGaUnn2ZH;-JeJ3l*?;CN+GA^5?8kKd2V zN<7QWsg>OJDiPN}H}jVv$ESl;Lp`rr-qcZk8wihDo17(Ct|WL-^ZL8L&67yLI9F0h zx}CpXiACHu*W%pr!^p5USJJVj5EwM zy4a|BJ_B0gCwM~DNl`s`lxq#=$b4X6$nO}!n=uy({Yo!qmtYEPm}3HT2llKUiaWZc z(}i)`pHnX7Lo!otN9aM!8>>1LAJpzVE`gwTaup=STS=Xp0(zY)RND&_PFFfck3F*h zm4&krISDQOQ+(rVsCskmO1_y!d^#zzr@ALf= zuvb;Cn*5z{?6x}2&jG(Odjgj$6gM61)5VLA0cg&@To+AWkWN921EEcHM9)uPcdjH- zmo3CkGH#rI&OZ?&Gvc2)dSJA`SoZekI6nFW&3({+&3sqYiH$uv>vvRXEe(teLR?sNz(@A^`}p3DOcq;mpYtB+o{EOsJMQ zQ4*X6{uDO~I9%yu_( zAcM?I$lR;oTnX|R=@5GT5t|n-E+?y=ibjfCj>uo(CSfVeSrWQgdEB&W}iYCR-x63JU?Rv8cTw@80D7 zhO%G#CpUy&9NAsN=Hk}(w-zZ&8p8C*WDY2O!uBWoDdQ5#{^^6JSqU;J!73b747Z#~ zK!R;_YW@vMswc?f4H>p7l%?}S^5oJYn~hbzo3$Gux?^=J`LI&6`>9z#)Fn|5iJHC@ zcBlQBukaUXtz-OYQ~HjG1;)gfs{B?Zw6BOCjuPrw_#rd19V7&FreuU4&_=YFb0u z1LDYor@{{PRdDe*+l@oKsGhc85uLl`6`r1AbeG+n%6Os4$;m~BZ(Nu{D4o$}6hIHk zx6nmGFbKsAwzb9@mE-G%x@7C0$!c7WX}Dlq^YXE4*&;ZkZ^rIP1(ea1$Q4DhondiE zBJ%kA=rJHO{^XCfT#{j2(%FHzcQ9|H8Q)MS`Z8LPOC72{;HI34hi7aZF2Xri;Gg*Y zFfT{Je|;b7g$S94@Fa=h3mbj@b>`RHZzaEvR|tx}f5jw2`e`Z4qM^jo%bf!fwkQ4U zr#h@(G%Q7)cEv&M=Ac^j@z04e2n2#$+3kE8vh_mYW}|(9XqWf(`tCe+o-49~BPc_qlKh-|1jIYJcwXiI0|wU2~R-5!dW~b#b)X`_l@ME%m$% zzqe)>oLot`7GijEFRGgw-y2GR0~RR6mYD-*_iP)M0^?6hkr`+L~@_e=tkL$Mz= z2xFo#$T6bSNWk#g=*NzMl>P6Tx8oPoL5OEUnvio`K%>BxA~=ekk2`V^>7p!3^pPOh zD#i6m4DYM+Gl026KhDqlSB=jl9J1N{*hVVo`wrDe_`08kgxfd0fN*a|0A3px5l+hL zaMYlOf8-diV!ir*^q9bZV$MjFLpGM3d^Ac}?8HSEuMx@a;I44!rjt3WAs#uC;ZpbY z`>?|`IGH2T5L>n?2lxuopR)r-EZs1woVtAYy8mQ?{?Q`cNZ3NrM7}ATV4=UbXL)q1 z!m<51fA1@Kd8d&Ku5k@Md*{bG8all!-bG&#q~44iyFMZN&TeM9WU>adZVGyt%gm7_ zr?sQIH#6-OS-_I0bQ;c?hrRbIO+Lom`UsGi08_YU+X)JnZMfT0^_p%V>@YbiEcU?)g&?i?Gh+ADDecD_z^`bMcz(+4>+^S z0jKil#8Bx4HrH7zkaiYmFJk<3@ds8%QNo5QrF&wub_70=Mz>)tl8)OfHqMcOzpiW* ze8~bfD6RD~`^9L$a_Dl!oaml9ad2vONx|vIVn5~4rVM26Y}}TV5%_n>o0g=!#_mwk zpW!voNy2}Mgg=c%6JWnR-kt8&`Q3PQv@y%W&2~ORNZC!0O8(n4`crqOrMnTptBflLa4zQ! z{1ldWMS?tM@wl9m=T(qzs#55()gL~e@glOhA%S&AM~v5plx~$qan2!o({?TZbtcN^U*p6(uV zPI&-C0&TOEaA9@yh@=XS zrW7mu^aKN9H$1u>LBeJJ(C7pLfJhyKhmMd&3!~8LC=jwnQ(H;2;%kP|5LBv1)DOtl zyHN}bBcBcXsm&yPfZr}hroZ6pePJ`AIye%Jw29YDt+J=pG{>)G%iCFK2IK&WTAYk+ z^8X!v09^ewV5eONn^pPBNlDta&z2$F+cej&%FbF~bZ&zO;#MU6R`s%9=_3GIvjM{m zn`ZlbmYx|v+}H8Yz5gM#l+A|@0*Z+b&Y%`J_q?RwMptc>BsIt@wj@8R`{TN;yZ7*O z1FG}Q+0%OZNx$x?YQ%;!(C72K4-Dbz!#Y!E=PAa{b)ef2>*Bt|_DaLqUzjU*@uzC(}K(y;xVFA$kaChIy22+?hD@!{%iKX3$wZwuX53AEM< zjYQ;_$(kvOh8;CD#s46<#DpZIL8L7|?AslmqL&ktLP6Pq+(fzxhTR1Xw2DEzEkDMK z2v^|6#cn%I)i;@L`u%Qxlq-P32GaO_3^}&`rL1VguUr(Q?Cumf)kEWdh+VZdn`UTI zg;#R=4`>nbFka2_R2!5*PXsloWiQ>>Q)15{)2GgfRt56Oj zV_W5jR&7?O&_F*`rcr8L-mQ7wH$Ga0CY#&NaS{ucBVWB8lkL{1F+6zmsnA&*R23W) zleE3G_kDZHzgqmPWJ^-QCF9_p^{dXh9cIXCO6+G7c}oY6o~MA#$&{V|_Z{~PS7hId z(Aa@ZLWnxB4GZMBn`&K-S!N@rM)%r}KiLC{_wg^TK7$z(q}NgDu1Ru2^XMZ2e;)_>0R^Z8Qwv^-Im zyDU!>r^J&$z->#u6_*#V9c4E4W4jq7Q$vSx@EWY2%xAnHMMb`ncZ@VMRQpTYVy;Q` znZA=vIK$KC>H03Yx*v%F=lA^S;8D5-Ga}+?8t#3o+bufm z6-F#28#8p9ohF9@6)mMJWH)1SVmdm3i61PnKjm$QhZV@W?(hTu9D5MT29k{jAK?3T z*LgX?Nt}WZUO!g)zY>>$_soLLjv**S>28opTy%4U$glW_%dz^G78EPeg4ygW<|)>C z#(lF9VL>=K?+c1;*f6L546{<)@b( zgX?u}Wf446D6(!SI`5{R>ExZHc#q5tVD?K&E2-Ln{-@7PC!2c>l|#GNu;vxIMd}V# z@p@lmPF8KT0pa0|Pd9T_w}4=gjO*+nt7U+laAcFxpp86YXL}N>ck-c?wUwJUJD3h# z@a=0b&bV8&6Ws%acARBqvFp?hR(Nf6`oxm0C_6VQ|(X?MH@t zDvu`}yy7e{ZCT#BB&B_BdqNe0?ck!7JY^m=Il93xz08; zk88W$;+(T`4IG-$vik{^5Vixg>fGBfc166!16pBZRsx3R97~h&zEiq}UWQ(_$S2}; z65|;FnBAJp5a-tJkv*dm1er^@&+|s?sn#d0jp<$k5M;I`@Pj7F^ON1lbVQM#(ZQoM zKC`pA_PD*yCycY@u08X5`rSN@wD`#fALUpbeft)XJr(q`a?*|35{}xi0Qqf#rA~#j z?FY4Ma(kfk zurq0`bkAR>yoou~(bD`EO^k)tBMzdjYnB!k4&`Ut=Mf3jH8*&@%))_fak99hv5}Dx zze{$rz}g+=`~F6MiAje;OyhyEHtj6qbDQK~9(zS7NXxJLtwt_pPa=p{q3s15ojBDD zYf?K9(Ysr?CkOr)b_kG}T_KD1ndwwr(r#2XLbYQhu4KB&vh@i;!UlDAg86h0CRE>l zPH846ezNU*eu{H_Nvm$gnr&2q`xr$1s-hlR_*17>bY1A43zWBrQ5O31@C&>JuQz$O zk5_?MAVtzY!nU~bVE|BUQC+ZJ!vc=9&mGL4XGqxtSU!ZLaIw>)Oz}t15)+rSJ@;MY z9fW8`JC`Q#viB)BRqTvaIh;;U)r0f#ceY+<4D*@7h&vt(Ttj8k$Wulmu^}MJi&fC1 zD!b!uU;D1gIIvbW=)f6NJoUd6`Gph3JWF~l!SmI*opW!+Fs!7^Sg1j5+|S{?Qj7Zk z)RX}7JdgJNN1c<7SC;3e=0oCk6|E}>+|1;NmT(rywrAgX;MiSy@j}J-0YGM}XjCX; zgT<`7=`5r8>kKVBH%w;&r#rJ-yX_S-l3(JAC3FOqeTO95@ga*_r%=o(VgI>>USb!#axbk2ARi~Jviyoh75=&ROIt4y}2C6 zpxUK=%lRvL2Q3tVP;L&{jlGv6o+NAOUk3;bJ;g4|l7c;N9FLyGb%LoY({@I{?02VX z{SI$DezBDxZV$J^nR-o&P5JHivWnBC#Clg5{uB`{*S}b@i9GXJQ8$wY2+Kzv%U(*X z;y;e8k?7i)c)Rf@YgQ>>qx8yBUA#Pjf>h$Xn2C-_V&%9&;fy@L_M;!B@S6 z)zN5>(cyS6*4-v{Y1>|YHw~SbePUDbNF!?{MGnN1$6K(yVg}8jzQXJMk~BIPQ0W6> zNwEBpr+D5LQ#>Z*b5aJM>GYZjEC-4P<5(>oedQu@twD#Pk?uK1{^LFM$uK2M0?E(+j}EHNDIi@Ml7-rOH8c zUqKm4xc@Qe;HH^maYSg-3)bGI$Tt}-_8iEInCy#-xHnJd91rY~t1g{$DnM)`7k@pR zsB0=?o2eVE;W%5kb_7{xeJ(`%1=Cw97Tp6#j7+H{n}SRaMeEPFYMNi&dOl?5!oJn-v&-=lE)}y76=) z@NH19s7AfeX=u4&TAM`%sKoh_nXlzj^AR<5X@|Ue9XG` zU`=B=1vr>>PZ{pTW zyy4ZPO5aGlx|PlQ_DkGi^(|C!DZG8#%(u9NebdkW3Bd7XNO-RG&&&IeL;2c@7}HKf zbArgn*CYnX$V^-IqO7)-(fOkyh<{cdw%5ll*%ObLJx1u?eBB7_qN*Es4Q||;h>bX+ z>YJeF_M4wwyJNz9$^mOQ0oRoNhmmN0BM{pjk*&!Vn?RhBQ8Rf|e%S+3px+~HND^&% zNoDK0fk|0b5`TN_5-k%Y+wQ7$C}*tfXJ#rJk$kryH$;r{3rxhWS!_|c5gve$WQHB9 zJ=7%)NVgT|O=I`@{izE1`(hXBci3a@;&9p=!7Mzc7)d4e7_sUemvQJO!ozqBA2}`U+!>2%$ zWxz~vb&)qS=oQ0Bx%%hn#tpXsv&XA2iV@uBg3oT*t6s%BK$gj|yCdG|;UO zkB;*5)0AYq$;}q9xZnkq#Z7r=i%^E!ZZ+7_%WeVA0T$Qj4+Qc|c@C>j?QDvYNm@%NyWkS7_Ir#B9;wn%Pcg256(3@F1B?QnZTNaQrlJEc=Jms zrn6hMtDQ!E=c(Fd z;gOd5y>$c*w%{`zC;ISK#Y6x5+cVy?FIO5hep2Qw%5635PLOgudf1(3qo0kL^vx+f zS@wqDm?TUWWnJkUd`BVIuGS`=>f$$T6bozq2&1!t6iL*HY!rB;&HRLJkZx*pRm7iN za0Csr8E>h&(3wVU>S15FonJ7n+*a~Zsz}l&4gf=aiDs`zOxS>d5qvr&N515X`SZqo7Hu)+ zEd&B3OR6hF-KWj?t?drUle>UbGS&()&yx#H^yHIZ+U6|)X8jlzLa<=?L=RWC}>lb3S!kdwZ<;yWN+|apsz~Y?%@6D7@t``~mcXeHVB}JLD?} zl{!m;IgD}RcWz17_1>t~kdo0;L)VM+7nT2+DtJm0l5|4ui%CAJa?TjBe;xZnZ{S7A z&lLTU`Vk|McyrHj+g6M`uGYp;{*6a~_=b>|^i`V5S(1MuVO~2kY zF;^4=?vD>0v~v(1bN$lruY4N-7$8n4$>cbyf$2b4?T2OPY(BQ;y)Vzz>(zKXT_s-- zGj8}};){czJq)~zO|EXpW2Q;f%%3v*JoQPD8nd?G!A707dt=)ernB|Ue<77RXt999KLXm$kokzOZZS@iRYM9bM1+wCEyt>Y^+Vmm{nI zJp^^Ohr<~QQoQL)d9P8JcY?=#n=2L-M+9D4ev4&9ILH8AE(Z!}*YwyF=>Yq$2BxP` zGRlVFNw9nM8^N0$qNkA>G}H-Z|FI2Cs$Saqyw^O9Ee>`Q75LHF&*Pg7%*+8&@_Zy; zsKQZ>Li*Yzh(-(d>&Kw z();&YGmtXz)BLgJ&=zsx>pI+iZCLl>4?~U$lMWKL_XIB|-y_^yGceEMpICkv>YJi* zc30y}oQYG5zO_WOnq~yNeL^t{B)?*`dObd^-wINL$r^hn?lD~49XEY5rJu=r7 zgi3z%b}zv_Z!ftZsw8f~*#AaUKI&8`<5fLC&Aig}t>AB)g+=1+``@$~d7dIDj~Tyg z$P0kMUvI;A5Fba2j6~Rg!#{@Jx9j2?z>3EqfEd1Xb_>vJipH{?rRZ!_KAyZU#TfMV zJyV#Xqd8;;?rd!GA0*xiZBv=ymhR%51;3GRAD3JMz#74s6?HG zp~F+!ZY#7sX5gcbs0clIHvQ9ya#x+2;#&IeHME8aWHkkH=MPNs@bwna2QxTi!Tva+ z_bQAc3}Av)2=v*JeAzH#Q`M5$fTMqkpqw^Yf3od+Dc;}@ZD(-Wlcn2OeE6gTCXjR7 z<*lO&Te@yi@aCcN{*^w}v1fq0Ml-}__%ECVFoy4<{m~-=`t@vG<#7YquI|q$y*g2w zw>!_htX9x@>ngp^gT6|g2&v%r#BTJZyofymsy5eZj`O05J{I6mK~+9aGkWs$=v&X| zEbRikAp7uMX5A7O$F2X|bQ#ovZt{ACIZn-p7S5c#_H+I|&+T@`YOxzUYUG=bx+;A3 zSJ7?PwAo^%SHD>9yBCJ##L9ou9CZn?3xMWeKe=fF5Fc0w`Y3_bC9K*dRV4drUuuoP z(O3sp&iYcqd%j4A>>TKj-8UV4dLDxgH}P{Qa=?vV%Z(6yW#G7Vp8IO&M;oupb#((Yc+K)V@heOLN%w z(USEg1VTL!v~PQ^VVF0vC!rro6l??=2UiYIu-#O?!B}r!1t3t)7eCzpr##JIA^^#O zR!7ZpO0$6Qx(HkgGzIvETa~=re@~g#8&&yXd_09aWFwIDrlcRfmEFbM*~q69Tl#Sl zDB`QdXpwm#$){yzXzVVay24p*jfnJlP7}t$)yy^YC z#ZSN6aYM{&@{={$(r(&*q9!0V(c{(CYCT+smF+cMl7ct#adHQS75e#2xBC?Q63e?k z>(V!x$OMDdwCSHz<>V$bPOsl?oA9`~6Oe_>54g@qXiP|ed)on-sNULoXPZH z@Uj8mBuP9yknWg`0|IMHYTdU_+#*_TMEX2|ksgC*cKq(5DxiRTZX}mnIlVM>F%6n> z#K4Ek$W3a&Nhp1f{in$&BIEeXU}IcnHBYG!19s?+8eklUK?3a*Z0X#W5V;>_O+Cl+ zh$D?BNhnB2!;e~X0%kA9C>!l1y%#(q0Y5-g#zrl(UV6}OfS6Fc3wM2Mt@pa2XbG&- zvxOTxkNmgudPbfQukSs#i)#D@{ZzxaCIiObwxubYxnTb}14^we7pl(kQTWC+Ey+(t zINgJJPkuaGq2T+6>D0j3NfDT1#yv1JgKA0jl~o1YAl8a)=PZaDEWp70ix1f$*k;m< z2kNZd^Vz`(ud@9Q97HB_-EEbIxN_I04r2j;p7D9zlR0NS^^gyrAz(=hF?N=PCSKwr))3v zpgDKBJ_JNNU+4Ix0IFLX$CRV^`+PT%_B8-?88fxN^u}=SO5<^TF<5YLz%gp zSPbX9)V2w0P?fzMd}q68vGzJ2NC5RLJLS#(6W9G-`HZRv!&>A_av3=UsN2XDi|+k% z@!udc3)PueZV&%?8)Fs>^wVbX7B+9ErE?oS!e>n$XvFG-37cWTWx6A}6W>rNbAJ6Q z5ISP_;OAs{TNg2y;);^<;hYm3%_$Z^!BWh#(}z22vi}H7{`n5kPZJhy*GB)J->6XN7)}X-dsH5fGD7br&#dp$^t6Nb6DyG4K?|wl=D%e1gEV7_S zWCJ`QuczK*3?6^AmIfZzW7MGz54zdN`wI747@Y}po6z?8YND&LDLUt1INQIoFeT~r z#72_o*T(q=7QDb(`(XVF6mgL&PtqaH@M^JcD=)?D1^oDo+OQ&og5Fw+U0qh9BN|48 z3a&F}wa-%1YsB~$-0)2I?Mq7YwfpTV!)b=P>7MCxyQ-2iOL9geZHKp-cb+A}*N0Tm7W!f;%#zL`q3Mc2xH4>MZ4bM!0KOQJo z&}3QU&W)}qX+3)*H}J0qJ(fVGye-tbjZNiIc4InJK3e2Fw{bT+0i9eZuN{*Sc8)qn zegHAu)a})jhd+?4{8Et3O-{eeo0W^2+(1n>YoumaRwZM>yt|-euyf2@gH5D&IKM~C z7j0Bb#vRGWHpCA%+>y2eek1_~MF#poAF){!?}sA~52x-Y*?o!Tx?~MEE(6d##K^4m zrh`(QeGRIo;sadPw+#N)^%}bhEC7ADoDgR$A0=W2AcR}ZPlwF~CY%LL`hZpALBstS zp#y8?5*lU1X$8N)={1U##0KI4Uf<(A=+*)f2B}wY(Q`^^@zVQf`1VheF5IpNr!J@?7qq3jI+CV2Ay( zXei1$BgD3vtVadsd)ZaQ zqJ{(#=5AZQ=cTQ&*9dc5Z^?CsHRPiF9)9=rH}xH_mYvSo%es9w@cQSQ8v_z|R~-&J z=vYBjWvzUO|7&j6jJ@RY9`!U|V>h)U;}J2&A$q#a ze(tVEhRXtc3N*zlnas3U%}DEVtGg@p&XGXGR44_XXDXik z?Yd}ww+ja+$mzs8C|V6@lVaat%H$FknDS3EZa8`;2T%E)`lpIk>JrvhCv7BsMZ7kY za?Yg|QrRjjX_$b4*R`H1Dvt)sOP_Or==V^@zTX6cbx6059a>o_^j)U-5a{94|g zY3*y<9^*axS4BfO-~OFOrTOJA9%U}j7B8V^_rCw>GBT7eZF88lR2juyq;_d;*L!YE zh-;DweZp=KAJ%Mlu!dc1Q#P2cSS_}cnW)h2FBQU-BCQ{U$9w7}(86-_Xqe~57#At% z94KsLLsoWwoLO~m5_gXL8Rq>hL)zjXbPr0pi;?U}rH$pxCyN{wbO{mRRUda8xgLPX zf1Lr-q#NoH>SPni3^+R^GOw0ol0S$_2@q=7S>@|3kFVU)jn8yFO4wblPx&lS+`fp5 z6dL)^7g*N9rrJi@88G-Ze-o%`X6Xq~S!L=SVqm*z#}0`H^7A$(Ip3$EoTo(Ax^Go* zaN~~J-W!ZZCr)9$8WhQI$nE^*bY6c8#PL?e$>C;vT|FGE^q1j9W(Xf3R8(Z56ISD% zCRkyDQ%9Su8(;m01yFBN;*@3ZXINPhqe!NXyvrI)#(vU7njseM+!kC&Iv94-58KR8 z<2$!z5PlMNj%6pI2w$)5g!OK`xBkFr!)8erE?&v~^TXb=f%a~4Irr`|-ehU+bq{`i|!M8AE-eN1XN!hEc+iU9`hk(wg%a1|HdD=tly@ zbtna>!41EY(%A5uw|v>YtEalsK4AFU^Hv~IYMRpHwc=3%5@V9k$Tkmdl5+m(vGkbLEq;jq6LDv<@j3ID;rs0%CDHg4 zFkcKM?NEn}H{-1@ik}(HGmwDT>*aN&RSuixK&Ps*a?9=SlKo zk4>q74H++n9)-g$?d2({z0(!}ULRkDhFAbjCeBEhh;bLz6LNkWwRrQU>OG_^{MZPF z5y0hR?sq=kb&8bR?FM(4n{OXsi*InBDL@F_4MAB(MB6sCDkH&WSEw zS!%FObl{e4*~jY(4=TI$AQxlB)+GZI`Ba@@iee8S>rSj^Mo(MrZJ&L~k-yDovart4 zUZ=~rbL2+EYyJkUfW4F!96%#*x>B+tFU~;G=j$4GDWN}#H-LmxUv}ou z6v&7hh$q&=TukVeXK@$fQS;1_+U4|R^Vq^LvrS;NkbkGD^pY1XAPRKUyUNMMFc!}7 zc!J`IT0s0~;-Kv9OSZXEcZq_?1Jn6OK55x5+R_eR%Y+;Kt9J#u#fISWs{x;e{D6UP zdgZ;?>(qO|MfsxcERC!E0U)QWpFQ3DoQ&{BrP;&A>E-PV+IOBC@4$m(w!s+<0`8lG z&RS4J;t;V~sg6-7>kBwASN$mxO4`2V^X%1emSR)IPzPVm_a}Nso-tK>?z0{n4|~@Z z=A$O#y3z9f2@=eOl0%TyHwwq^&{9j?ZJ)=Xh$%_3DDv59d2HtEZr%k|SZf$?vlhe* zk9=pfe-az;a40W^X)0H918)0kn;Tcx#hSbnbD@6py%J>+Yn zdMADLDH)9@%yi0A7T4;Q`RK&5_#^zP7_1K1qo&)s+G*trl$E8@$eg_KJs>W|otXAZ z6mtkCi_BaNm$gzjbs+CqF8~7h*58k;{Hb+Lj>w$WRT^8VO#qxG)zzVIY=nV7nck7z z8t3OPBJ6oJs#c1d_MLU>tsE6)*Bg|pJ6z7lNCI7*FBA*ecB$VOc>w(p8_}ZgRLc1~ zNSt^w|CyLG)`_$Gw)idK?!~prX03lQ@r~&NKh!C2zb}aAdD)h@GG8Jw!x_gXkhwBq z?CRWYc4gM#6a8shr-D$Cl)Yxg#P>76{rJ|&e!gB0Ec=7hr{RaVS%|iP97LH;JRsED zl>Z|}FU(W0PxXAeG2y{n)&mYy^mZub$Em%qPv&O@7-oNs*JHGo*ZjsT>5?DWPD9F0y(}O=r2s+M)*V8yi?IB*Y^{Mr zzH%?VO+=)w25^TQ*_4+&_ae2H)(t)iQz8!9#zPEHjb)UqFzSX(wLX^XQ=xbYI zE!!#YS7cKA8b6SN9J15DIJ%uj?xgsv&Ona)4RB+dg==>!Zr37vIEx!6uJ1@Rd*n6l z1TWnM;0!JX@V@^|-8p_W?iriYKu zoABV07o8iAnnor`K(ki@Z0xhD1_%eyUv8$7R5;;u=-qzle{cWIy>u%E;qbSqU+jR0emO ziQk`kk_+1#uHfWRWmp?E;jWsG(Z##8GnUl-g{}f->tH%XLdvW0VMVKT3)G3jCV7W1 zV)!|h$&|HkKH!gMofHuf>3uQULTDn5f8`H=s^BVQnIY|Je*FypkF2i@i)wA#21L3+ zLO{Bt8ziMA1ymZ86k$l|l9on5P+C%@yGv41X&5@BnPG^58RA>xyLIp9_+juTdhEyKBWeRgEZOExc1I{EeWVetG;l6MXxGTG5=MT`)qI zof!hy#y|Lt(tI<_EHgN}Pa9s^Ti(l&J=eyR4G2FTd#YGCCK=!4iw!X0>koRpg;@kU%UH{YM-g#mf zogDp;_*3f#kWu`A`N4^2>yG*DGh#ne6ZR;+oKNZ{od^bmkS-TcR_rO? z96cH2ldb@~1RNwT6+YRqUeXO`x8e4OX2|cy1ZQI(UXO8?nD_BFEP8@nfHl4DNQVcG zJVq6SL?rlcu<(AswO3(H^P1O7+mbKUnLpBWNZwZMvl-m8QdsVDTjUFexV2S#nE!Jg zAFwg39c6T`8U`n&j5XjWFfo$yRebldcoa2FYX5PToBo1c|6M)k5hHcDJ=ix>+pI;et%tAg5-8$bMGS^vsK-><-8*` z+Oi=u+AAVwitgUEP6hr^NxbEixh=4YYX5xzLeq+P<0rJ9V>sP>6Ba8eBF5EVIcnJ3 zc6E6?CT`KzCj|(qXU;P%giU>S3cD4FWojSZG&)J_e$I~oaujS=a*%Is5m8fjZ%C?T zAl7JfJ0z?a?`R+1JPJBh6;N~!s5yh=h+EYWHdjt@04se-N0`T-#;X{nl|mhbOe*eU zTYI&bFA?Ab*<3wh%Lx;`FsSCdg3~Vpf1;}GM~%J&+J@)M{0=ka^oCboBTcX|KT}y$ zRIk8^8mM-FeC%ULlKbZ_+jzERrPbr3Cu>h66uZ$ExCT1U^ zV}F|)pfdMfHtMzn(qmpa86UPI4};k{h#&Ob&mJ*1JXYC3oiKI1bDXcE>ZP}Kr-_2v zDC*B9%n_S3WJya1>3jSZE_}Px2~HmT#W}#5T3lkZ^$!Lo5cwv}SMAtzt)l4@QIEpH zjGa`^Lpqw|Ei9t4VKv!r^y6uX@pM*#4ThhFhldI5vV5kYouS0F_S!&)32_G5EHl;y z5aLO9Ua0^j&3c+|6H~E(#fy8D2C^BSsg0aHVYcuVesr^}J||vM@}J_G=X*+M3~wzX z^H^IM2g&V3M?4T#cPrA(B(!AW$=4O8`6~OmP^oK06uYFBQw|To!lM#amG>~N3qT%l z)8Y0L&Vuodc8fvQ4rePa(3W&2ZMmIR$Zk3kd+};#tvoJI!i`>T=c?>NFK&X|588Pm_Xsgo=$XmZT;U(J_+Kccn zKQ1M3LC(20bC^venv=8XiaDt%GWM2R_4lEx6n~pSU8ryQG0)cZBcB@5 znFC+Sa?t_M9SyMn4!D~HjIZt{#q0uz-)eEIkPi@Qg!4llT&T07~brrxp=7yMR zu#?(}Dn3pd0*oeUL+?wEe_x=vD3O8^X^A_N#?DI|{Y&jfs=F5_brQ5Nt2-um=BJO( zwPPwacMGYX9j=5D-8-A}%CSAzEAdt`v6l--qO6X9&gvxc@%Dd?vOs(gZ=5o>vcM;(46x6p z3%z}sTiR4AMT%L#8}ap1y;vTd`Ym-vUBizoVMp?P@Ir`+CFN(n?YRAitb< z_?M(X8ghOa{VJ-kV#^|1_R*M3yJ6dVG2;U&oPSp(VEltV^-Xmj6Q#%#VtPu>O^u27 zQ3xjwdTImi+-`&TIJ4+KD-sn@_<$Kh&!~rS6n^OyxaAeGo*>u$j&a~1& zJ+7XeiLp+mP;Sz%^8*8(oQF?c{=57yJ-}GS^j56l3GjH0EwCF04dc9%&!blY8{bsr zjNx>{R5zb!HM%wnx;iaWOKAg!&Tg*aOd(+0V4!&xcUZz167?W_lk=)6ytoZ%260-b zyh&WnkxHW;le@Wuej*O|{9=)NNss9In~2l=Hdyl_I!zp-{9>;{hvygsw?eyI7EV8U zc(ZTo$mo1%ZpkZs?M}c}Ru%IxD$T<40%{j@Z3ptZt2HLvP08>Y<<+4?2|!1-*=%@W zMQtZ6aQi+1*f^X{|40E7K%z(z=KtBv0MuU+1Dp_(oJex#XfL14oBFhvh9cZ0GLc32 zC{DcQmF+ADzL>5cE_+xG+{Z;w(4DbsMguHO;IaleF>?A}v`PVlNCa`vdH2W~mZY9n z`#4zqx#EukdwqtJ$nf~rNhfnf_wWB}f(KEfO9wyYVk3^1|Nhn@k@E#K>U^$;i%!x0 z5tFqonGL@I5k*_Wg4+;=2mldJ{+0?3GE%;wwD0~%SHkPzU?-`*9>wxZ;;zq3%W_@t zH*uQ{J6#?ph827UL;NdIU9lwps%EkzizApyrw3dU?=USEKeG-w>aJy}yC>^Lz*f3t z?%T&T*alFMAo`?!h9H0Mlb@hKoQ_0--l-62%s%CCwU@6AO>ppLNK&QSIJ>lJL- z*_7`H>Yp8$S6}_a2OOyZrcP1we&HX!X4V=9n4-Y}h2S{#m4j&=*mRt1IjoTGBeNvY z9H}9QdjIV^p467Jpv!fJ24!NB``jzAASy}Zehs#4;JZf7RKi3dUUkWUd?=9p`7Pyu z59~%^(nb59NCXACIA4&-E-mmJ9a42so3eRrA)J<&z#%x&U zZh`_1eD#;Q%>3@1Cz7^JJrdLpa8$t*4&FIv#QK|AK`CyOPJTc-A^=s?cTR1G40*ip z;36vCJJM~CUQ6fHuLdzE`gH}!?~@}BYYP0%*7)ZG*vDjgn3umfn$`$NH$lJQM*_b6 z+NpO8Ry4AoFLo9I%4a^34tV{5am}`=B6~9JY#+akGwr%4Cm;~Suk@VB7ytNG#h>Q| zym>4bOd?W;Z+~c(z7mb>WPHlBTxIz%mDA^44xk7+d%6(fRBDM58WuqhS{#&3^^5$Y zmYqAU?tVg)EhEb688PxGA6?BstO62q+RuFI%>MOffhjR`>mTp0VJnnEgsjx=j*{6B z@_mZ+AN&Mh0!3Vr8&GwlsJPH8>M_MCC??hYYSgq$63sxe8g! zm%`DeAe=+ht8F&;-Z{OMTSt7=F^M`Qs>C{GUGK}EL$8zl;q&ycuu|4Gj=3vFytyc~ z^UndVn z-D>^^4i*~IrkCK3D=>%`BlS&6#(A{;#xC20dT!ILw28i+PPcEpFP&9`Me&z`#DUVX zEz~A9(zGZPmwmeN^@t_t+^RBxc_gr6(xWX5+O~;lku_wZ*jdBc<2F-|M2C;{--Rdm zGng*$XCH9-S@^H^{!%zZWrLTu!Uk7?B+6H*zl;qMVA&Syzfs*0OW?g+7@_GN(2s8v zuX~StYJ4~{$yOFceE0ezucV)U^?mcV@?8E@Yr1~_K1fwYrQ1ii@7_&w`-!HDRJpaa z);pO}*i51q^ZDRV#hBqe2QXI@!UkCJ@A5To=dC*5oH=jt$fax^8~9j{e!Iu>&@lKh z^)bXDSDxT=E$I0t9!op4v~cp;@ZA5a!}vd3sy-6!9`g#0E~B21aYm5Msz44b%DGA3~Q z&@DoMwLnHdpV25ZV{Ghod)|co8${!#o(0PIZMyE$o-SfYKBpA4^A=bHF?^Z&XF~FN_BtzmNzPI>ijE3z>S>F$;-^F&NwRWTx>!d~0-E)i_RsqJ z0E5{E%#e$+rYGGo#)9@68OxWpEIPn@`CEHnguE-iG1THV|FB*tyu?`t5U>5iZ9c|v zl)?$i--tbk?4ON)Or*Q?7!65sz#?K(A;6o`cC%}7Rq|^Y=$JKCY-7Fr;;d>C;5Xsn zbb!2S>KbpVskUab?^=33nZptE_44AddWcW!0xKw5sQ+sM21pO`Qc}kJJ~&xm)o)V&-7?&psPY^C1xI%4d0Jl@M;L=UlZEo^xCEGOpPzrD zYX4zc>eh``^4nLU6QmOrcEXzCJ7v5Ur*JZIc=G}N&_*Ef0O;d8%9jP)WqO0xIFn#a(FBC zjz?KwT;@jw`@#1WkljgxjS(?rfxKUI|4|n`2P@}pVZ=3P?klU7tzss-q;n=UhNJo> zBZ2xqNMCr?As9`<39pgmIj-85N9dVic@*Q?6giFWDi>G{NAE6-W|{LamCc|Lt8 z!Jik)8RrMA5g0D99Dr~a_MM~QW0Ibps6a zVyqg9a`SY)zr8e7a&Fms69QA!N-K#VBGdMWv zVUlEM>MP_XQjockxz!lv50Vu0r8&E{zbzqu#Ju}hJdaX0)utcty3M?$+M}7^x)@W~ z2dqk;R+QIJNWU$;BjV0YJ5C1w|F%)cGvcub;@)&>nO{tCcb{>yQ-<=losUB&?1JW} z$=_;x@$B3u=ALx#zip=jbfNU=KxvW?-`+t}YwtLTnDkc1Q0kvO*n+AG28si_MJ9kY z9asT3K#H3{4K@Eg4kG6se81o=ME#GYFo%e=Gn-d_7fdUmA$!`Etgvwne!>u9JlhMl z#o6w)=ss-9msSD_=&c_fpH%P4{Q6)u-%kq%08=i=(y1f1#CZ!C%*G?z~$&to%i2yz9C8;OJHKk8k%&{izPUS1Di}1x(XcEvlwJ? zQcJuv^qI9K4EbR6BaZFudk@}k&zo(mZRyl5LxZ5ici+LLa>mp24CROa=UY@n>)(DK zxyqPWIWjJe2d*2d0O@xe5lnQkoX0*Ol09Fsy)$5ZM;zB;yia87V@Z%>XxLtD*5-+D zwz)v~PZ3HN!COPvJ`+3q%`dA}ZsBllgsnt(aOni6J@ET%9+V|F=@UqENyQCjFaVo~ zVjTC52{@&&Otwv2_*d(!a+*!6SoCUIDs zNX6@1EaZ$Q+e&R&wOBJ@04&&B)q~#=<)}kHg94q^T98>tw_7{?u14#NjCe>?`?r{> zC`K(9`^7+_8qFPIg7%8-j@1+Bd=2a^N-9g zf24k~C_6f`YiEeb@f!@Ejf!eNv(`3->4|Nz0))apLkMtu`e1&0NVY{ESE80Lkr!L* z)Csh~j;FLxw371CHL_GbrX{kx>!W10tF|~U-bd&*>=xxd+BM^5943PzUQ4AkV_1A2XQV=mw|uGGJ5DVyg!Lf$3Q~Z~5k&;U<4kal%gfi-WFMA0vuy$`DkWb6|RCg^?!Yj0a4R+;nm-2D5Rgm?auf4*TAS1KYT zf@oIsO-!@L5N6VF9tlyVSJTCLvYRm(WjfLlDSu5Oj2Y(<7aXcAuesX1QindY(QhsbU7}Rr>fJ#L0V$6iOt1 zr-gTXn#=y%!;=Bkjgs=_SB+~h?uZshd&^Nodojw><^pKa#dC6O2~Q!X&u#`JCxKak zAp_*&oRZ^aqOp*pajrL(@4~)=(K-xUyGdcIAck~YZt~NLySGzpk2kGORV69?Y&18j`3n`(|8hV z#n1$8#RoP3%fAlsZ{9_6`&JmTs-k7FWqlb}jMqxz05ETged_3_KA;8<&T3~~?zB%{ zXRth`Ya0c{!}R<^$*3`B*ej-Zf~CjtIQJ+ z8AdJu-{XjH&vV{~87RyMr3SNonuM;_QJH}rikKMnUp{$pjUO04f~Lp=>OEUOshD${ zu&Mp;cW*)x{C&^A{8oyvPh`!Z4cj@&8gM?;aXBPeA{QR;vZ!F=-k{?rPG)+IZ&W?b ztj?)7D*aA`K3yz$0_sxsA@0SE$6fS6>tACE*@D`6zD5zlF`PKYFq{U9+g(alsFgnj z+@zko&$?6EI#cFXwy0s+xQgUCLd`IQlpdZ7 zfMH|F|JV(CD-a0PUr%2)A6)J&aBkU5Xn4|6v$WDQ+V;V_%9s0K2DRXJ$l7`+{TW~@ zpE8qRP_CsV3%Cf}`LTlkMQS5aF#?6tI6V{}Tr$6R&mb5j_f1zukFl5#)Y?+Gd{%Bc zhjnMLMuKD#!Yz{>>CT*qMWsd`^Cqz+@rlnMNq}}`MX8&lit&G@Jn5rd8b9Ye2z$}GCj-R<-1HlY^&iw z^DkI|a?{u#xb20Y@+u&DF`Ep(#YzVUoWZS4Zk-nwOQZeig;7sV@8e8P(6Itmzke3< zR7s41dpqw7$MfJtJ2AZDi(y;)#O)m_s^$DRxT9Fxa$39`mI}aG$Gb z23wn(53#RkuWK2 z;o#pcm!Ym}vyrD1HWeR4UtM1Nb)>a=V1D~lZz8ALTr+v~BT`n{ZVIsWUsea?b^suo zNulf{ez~&$MS3(u!e86h^wx%PV|KY~1&{xpOlcBI1sqhaPatWky0Z$uI@Ld{o0*Oq z+nToxPUx^evD6G#KN;%Eo3C}D>MP7)381kZ6xyB%sL>DR78kajo;u${ZH_)JWyXK` zH@0vzSmXjrAXC_bmlkjJ?(E=yRAS_E%tsTG2LmEfT2hgx$sTA!q#J^kT_nLl{FV=x zV$g082r5?xTIZ7LrHdg0`u7Yd#_KoXR|ZA@ofc>?^YTw+*_TFm{J1EO&?kCum6N`# zhYb}Ak4e|?o`hkiIKGuX*KzY@Xdhp>L?DiCo$rx{^Tf07w;uN-R0vV7G;b~WIr1d} z34g^#<~2A)!@{?Qs?IIE--Ga!4pv_F)=|ngvU-}bNYnEZsS=CFuPvR{W^En!Qdu~f zWPgY{}x(dYmtU@>WgM7TbP5pfYtL|Z!m`5+?C&)Hm zM4tJ#@Gm$w=}czTQLd*pR3fjEW_3 z&^K-TLJ1TKFAza}GC1zpVqEt<-^+u%~Mkro=8vOX})rVi6MQ2`r0%gDKl4 zD@OT589WQ?`X`!Bp_@k7Fj(>sYtpQ1jN)|`z59}HF{~`rwuu4bvX&p8F#-RX z9f07kQKl7ot*Y0k4BLj~K%{B+ILp#OF_7Aaa`zGH8Ltjy?iG@;>3yeV>6{mD zwZoWET20FjdEuQti|y^d4;b`c86KC>3DzyY4x)<<89RLo#Jk@&Psa%hjWOGTzIHA3 z|-?DMxPibY4f#-L-mLxbVn9%R`?Dfjxyo_AEUGf}G(+&xYI#RZ< z0P$;~t}l@ajnl7x-uT%K97Y!wgFP%F{4z|Tmv2Qumh=x18bqm*pn{maF=++z_U2ZE8WC}=K|uNkQNx@95JHSqVf@10sVAc z3Kdc?>Ng7&vVBsu)_OW^vK6g|=H74w7>!$wM1@Pw4Wy3_SDdy(`N<5^d^(nw#-3*k%Uz!dMbPPyDA!~#>E$o{>O*aXe22%kDfES z_N=Pba)o2j?3yDl=K%^kZshv$d^M3JTMCyAu$Mn~hgX7~TIzNpboZIl7ZkT+>|=_U z&#w0O$`1bgML-hY362t1kNOis$H8+{hekaPg)GT;Ra2yM(d@7wSdSptK75{bHSA`f zzs0e8My#BD5&QMGgTAAFhGhxkjy{Y{MsYMq&aD$Eyo4if-Q_3UA8&eP&jBM&1-(uV%J+n}{0 z=ht#)psBNQ)F7y_W&A|v-_IvnzJgA9zV9Zkm5u%*`2cH>P(TTX_h6C#gN%S%gd52= zkH!HJD120lSh((3KL-IsUjpWttdWinUCeoRFHquT|7hLo(cxi{m>2p)`gU^9hXsMe zfj=Kmr&K6fAqm^sEn?{(JpNP;??c|T6fJsz+g#CXz6suyTlxMe7LzK}37ua9-5*q7 zL5mYe8SYHsHvVn1ab|5E9bWyIuVlm!fim!fK9{*YC?9QUGu(RLC>^JK=VZEZ!vn z?x$&&_g@qK{yW*_(Tw)G)i!@Euz!|SHx7-|T#OExVtgonsenPBzi(Yxb(N|2%$MK) zm^oGL{%r_q%IER$%W>lh0>nBE2(EBKz4P0$|LAR9Y88BLtY0+z+nyvDK=1(9eddsZ0F)6L+7%Mb)T302>55+o&$DmD| z{#=d*j&er+BlR@8-UbxS<@or^ocYpKrvj$> z<>O-PrsBU-!tIvm1^JR%O_`)5$ql%;Z9|wFn^$E0@FO4psUuGZw{gbb z=bxm&2&rt>U$T3&Jlhh-eAI=_;Mo2*|-A{YWWf383Rkw6KeF5mVe9uke;B z4#AI%d&x2H9>y3RI}tE!Zk11!Ce6xbE7NEOM~1rAc%Y142E;~_8d(Mw0Ur1iZRIpU z?Xs2ncx3Qy)2kZfc=DMoTqFOf^QwOl_-CKq`%HHP6;HJseX;+bjofCEQ_x*(WH}3) zY(6f75w-Ru5DiV;4lG24(M_`+u^r~pcOzwin|;evVr4HZB%59?(% zd}k;laeZ@*671jVu)0LJUFBW_u|Um6m*vKFuSPqZu~>Fh!&neEDpy24+RN?>h?%W` zvvPS1T;V)VQ=NJ<#y)Lnlrun9F9<$lc z77ps*=G{hiSyL%ZDQEuYXKu)Y24eqaDatE1#-@h7j(Myt`-H50-$j7Op)(D?GnGy^d&r9 zecNY4t899Wwaix^<}G64EXTIN(|->y&94e_42f?`fz%uYZX+SEvo< z-@^}$vX3o>gCDMsy+)h_4nA!aAvHY0&gU5^e_HYPGEsOg$?|5Hxn$t;ZB_y$!y7#; zTFtXt>JlzDjF7aB^G#??&P}Nic7|-UKXVI3Kld|Do+J`*pa7Ws2^eF%Bv#;E)c7n~ z9WgA?8Wg42r_X*m@=Q{iUf+8M#6tE;| zQTZiO3XQU$ADD?N0conp?G$+HIu}731XO&@M)>2|d=n>?8Mz_2n1sSD%WK|#OIPw{ zbyWu9ql0YJ-T~ul|1$JYdN(_U*acUXna@a$mmlrNAIPd@k6P?E?znN)6k2Y57Y+aT z9OSqE)?M30d;CaI`d!|%XZfwzdfJ={e@)kW3&~pJ4GuPDEFPbSTqU-Ek$=v%LwC^K zOJxp4tBiK#(z)()$R0(#7)ci$3GY^wg}v)5F|&dVSzK42a?55GklG@0A; zMo<0?J$W^~f^3|U1yAB>G$h<0WU6x@5k-oO(PmR^r8}C%>;gZ}65H-l4o`C4*rFS_l z>~Y~8N~=<8}` zg09DIXvzW8>nboaIX{*#m!VYd3%anCJ&qNQoa(Q*$1`3JcrE&J?s&!>*H=dD4Se3^rU50>M=B4(}j%k6_4&0{u4d*Saw{ zv`s`IqU`r~LEv@dhZDM7w#hND!kduVeu^dUgxc%|>kLtTIPC^1=O}vc^_%e|9gBW$ zNV*=;R`!5Q5|U$P&ST8u5Sipl6+@Nc&{uox)bGcx^d}2|gmQz|6DpNRdH9*@>boS^ ztNluHDAXVX)-LP@M5Q#vLZGcAv=ac9RPUVQL%Qo`YK!wu89wkTTvxi;$C7 z7B4aVdAM~h!U&9??N?fk3SmU?e_LQI{nG|shJy|ffvj)_Bj6U=iZo1+mpe;QlyNA# zYXmA4%6-t>#}AMdxpbmq6UdIItIG=C&uZl`q9g--*2tP4k&=LHKl>agMu?Gr$KHi- zx+%VC+8)PZZDt1BZH8*uZP9XPXz&CuNH{V~nOR8>6Y$v7(=L*3Jg7&g7~e6ci03c^ zzYCPI56HYcFg3g z4yHlX9wVh`OxT@#ZsO^=Y3;;F{v*;M5Vj8xIA?NMR}oOgb#m}K3J4X%5TF0!HLq*= zj5$L9W<`#3WCn>!=^>j(au28&44DAoyTft%n>6H4xW?3%Ev_^zHoG6d1DeaEy-2_v zvT`M$@?mdZ;F{r2&l68=^I8a0Z6Rvp!_}!LbZ_@f0N@c%Eush8xi5g+2Y0?FDNMQo zd&y@Lb~D+mZ3mNM)hf9>|NnU#N8#LI>Ag8+fHg5g^7DK}IfPU%l?{uO#{>8f#$3@q zw3%pL40&_|iJ^kx)UFYiW3GG8)4zOiep}NOUC-%H_)4L&5EqMio`i$9sv6g5fIZB} z52t-yO{d62;p#8jszHqo;e|A|&a_TcYZ-0GXf|zRov-2Zi*YN)D7#jq%!x_10Rl-! z2_Tsv1M)aEcL6PNGR>>7If-2k@(j$DK^e@+v`Xj|<54Bx!Mir$G5m^Q@`ztJAIj-t zs}yD7y&68vRa1rn;TuFK3uKG9V-mh}aQRDd8^E6e$uA2Rh9+&o&= zb4AR-MYouosQL5urz}4BWz&J>+{furaVx98GMw+V1EH(pF|VBHc%s$vazRq-30tvy z6j(&Em6fGl2h?hxb6Qe8_WF!oSuqCq&F4w~GFCPU;4`|$NePF*I{G{!{+rNLHC{OzTN5ICo)^)p6ihi++}UO&g3OB1eO+tgOUumAfg`-4tuO zLI>&va=A~(IWrLH8f~@^jd7G};zR?a;X-~pY@tB;l^6+M<4VZUI#Tvve(h-r5{MMI z{h42VV_+$j~i(YCe7dBU8K6n);fo4;$5W;UG?bWxcOTR_=B=emJt#o72z!^}(XeB`2! z0~=(nbA~iz?sNoTezO94F)Z zf4@E%?x0Ijq8~8MZn{(F*)|ag{BqmIXvNW*hmk&`?_ayZ5VgEb^sVe;F@C;o7E(IQ z%U8~+cV!>dGnAEh-JK~`qxtYHH4l!8b_Wv2oCyG_3#cZ=wlQ(5nqC@t+{+*6YFJ~d zRkL3RCA0uJl-#A+lVQ|9ZYegMZLWBu339L|FT7)@;aJE;f$Y@G^?bvpu%cO zdW83J!g+hkq$!CgqgO|}QuHagET=m#j6@LkZf5CY%|u^*qI%2O zv9>ez%ow{WTHm`BC%IV;oqa_8p4`3aV{LNn-f=kK{RZ`N9-$gvY>$STk*KXYSRvVM zyecIpUJyAbvvTcwP}gf}u7xOM2(cnZ$ex0&z6W~6fW%`}zRt@@rL=V!19Bc0mz)@b z(hpFTX!AqeK-jQOI#|&3G%tqlRXH7kd;+W74>c0*t=vV05v@G9J(}Gm?Et(zRv|W) zK0EsLr(djr?h%T1@bqbU&0kqqJr4%U3$adspe7_UAjJ8462%V`Ay+i`_lP}H8I;hL z+?cKc^bVk|cPO|I$Wg(b$LsZn19f!Y)|lG^j8t$2+lOK5`E;60~)G1Cyn*wpwC^G**j^~M- zAFczMZm74K*@J%e-FG!&5s-5;nl3it_$y4LzyQP-1U!kr!^XOw(ngLUL*vb=bMszY zt#TIs_I~`jh~&35s-rs)04wVT#Lg1Z0C+L7wE}>QKPi1`ewc(Qk3+7OAaz}(!EwPQ zy=r;qS~+*WGekAFlkSiP(D}(4UyYi0vR3?gxlr4ZHU~gG6grZ?l5`59+XXV)eUV||q6)8GDX8p;olYp^chFP2Z9vgdk zPCZ6H+TIAG@7;T-bc%MwR0W@JedImgm%=KQ z=DmQ7Km-*^Jn}S}#@;3Li=kgVZ)bhrz5zJ9tv=@I!a5zG{4=m0A`S+;iX9Hdc2E8& z=y=R9Rk9g|u*2Thk%VN5;F%!Rs)HlYIrhkQut?vERHx@^zU410voFMAE7dCXjs2ig z!AV5tMDGM>qk`og6wG)2N>n7Wr|f8f)FUOBKN5tTC|||xCu}@Wl0(K_j%m-BH0K(O z{avbkFntSkmK<~$3CX<*Lg$21+GMlmvr~!vp|`qak%z)iUQPLt(Ls(Fz-P`I*z;f-J zIf+fiCs@?$C@NdkdlNgG*&G+AxNnC%tlG?*cW z$WhO9Y|q&4uk4Y>2$RINV4_n|0MJ<|DsdT+PHZTD;vT8uNz$aM<0YQ+FDtF_CWHg2|pP(bH4cy-tlP%Jj2KkC)}O?R|`?ci8*QfCjSO+Ay_s^$2#aj@PUy zNh?O)TfI>oVn_LlBB)8sc(hJ8kT0M>()$h(Yh$|vX<<2X!{T}y|8e z8hi;9$B)rc>Bqkfzq9_$1_;u#=&7(7y)LL&qnp{{4+mZ0J#*2N1Cb*YM#J^4P#kAD z?XXY_&^>l{tAHY*b25@b1<#waWC_L1Ha+@C^S;fcxRY&HYf*yBi)L?HYawGtF{BzX zCuj2A-GB69QxfPF@LZi}XPQQ<|1P0IIAM*<{XArvkAxdZ5_NY5zM^kvuQM~VOo5Q& z!i?_{PR<4m`?n0MzJyi1 zMentslmCol9&`UOsq%jtNGF*pBSdX+|7zd2!KVW+#XroW$VdQ15M?g^NEJk`vv3zy z?EKQz{63BqKIsY8qD;~&7J)dBv3(RPOaszppKHwFn9N}QTIFqOZ`6RTBurGQj0moZ zj=PUQ^Tm)m1D}rWM_;3g6h=~Z{en=r`J0sqd$w9OFXWuC>w^NmK~iQ?p|;ge4ijAT z&%d$3q23K+M(Wty464-Bh6W)>{Dq0gWb?VbRx8m2_rSB79D0=Z@dYqlGEnn)*X!j} zyL6^aw2K4)ol`+6p(R)Mq`-q)(sUMpRR&NKfz}_)82#1GXkZ1C1YlBpsw3$usc3s3 zj`nhJ;ZFYT?w7sbk$4A8F(pcSHm1sfvMzhIa$mWVPsDZdq_Il0Ji*6 z#+`P{&JS479Hb*V4P3Oy3)WTJLd>(ROc~UbFWJ?#)YqUq3>{?|D~i6dc$Ip+h3AEA zmZ&^)y5D`f@BM%#QXqv%N?ci>w+g}1B)$)aD|Td6)5hrcTlTl=E@ez{1S$Q{NuDI; zZzS2OUXLeFyR+BdOOg}xV#$DiZ;QL4)eRMaVmx>0ZO%EX11L~znfQO1L>^kQ-T%xMMV*p?w%gP4o~C9Q-x#) z$#%dA?GPl~c<6IZL)@D^lH2~}QH?KT{o)!8wtMT`V)x!z6_C!1pPC2;hFJ)j3rCw@ z4#;$pO=)r-(xdm7{|qS-KvFcZ zXmB8VZ;!y@6=AHL#7F-;nNJlpHkwzQ%M58qiC(>gM&~iXQeUH!J{<_)(p#EN8mNlm z@}r^5^q4ksk2bFvbQ!8$Zs8kp9nIO8-&W)w<+aBjb>En%DmPDDVlV{{QKAlTu!af8 zU!UPRuTmJQQm^|kA@ zOj+Z`_o$*gB^vS*7;NJVG3h<6c|_WY?Z&I;>fIv}q#jrvaMmlyj^_{W1x~2aAg%x- zFZZo3=BF93Cg0csI5jv};w7;rg*j43obK6MVf7!O_8A z;!L`8DCxQd(RP#i6F1K1TNa-F^(YaD-Z5<_^@pm;_lmCa?w))BSk^swFpUp}1#w0I-X4c}8 zvlWV&X!!RU)oJhrS_V!Dlsbg_Rt=mAanvm%-9{cF^9cf|4KrW)!I}@BD?v@pGKTM0 zhh;^aMK5dVomP}R)SY+EyBeL~o61&_m2x!^u4P}a0vfBx^6h^!9+6!9?=BuQ;k+=U zZodLc9+v&{rW)**j=95N$*imW-W;m47;9=*;=SFR;=hLJme#IiCpJ^QKfObP)iiTl zR47vr1~*;ikO$H)Gcj*dQ1~3G2Kr`TpNiG!Q8($qljRbjE4D4UCN-a#T0hzqJlIAH zxMH_Pp2#w@|IM-0JaW{tZjz1I{h4XKTqJfz2ypV>aUdJK z@P<~sP5EzBavPm0=bid^Z%UJSH(ZC4>zLZSYmaB=%TSFgV?!9G3YmH!Ai1S-L4;D} z9DRXnEzPPd2^_&IXpWZS!J*_t^ArSQanK5Xi8lA9_J?npd~BrhxO%pm=7vk-YYpJ9 zbRTSe%0-^_NY=@~H31UfAG(l-%n$Atp+8247PTpi{wZ3**eqJqMXKN5D7fjF27exl|$~q-amAxFbmiCcf1AT^>$~f=B%IbJXDa2g zWy;pu0XF0dLwG7Qlk4&EANT;+7DdvKHK0k8Yt_T)i_Ch1ZH|*0UvtP4QCD}RPb8>98UlVh)CT5zV$!S2J(#3z14OTjPbFDcv0c}J1acc87^ z4Ye$5xITb1qbov?tezi)rW>x*6V|SW@%{O`ZJAsNzV`!q9vHH@qPf=@S^{U30rxVm z$=INv!^u%!#;W^KRaC*Q{bbwdvM&B@bcBi8UM7iI_KK9n?n4s9W>&?Vy91Gz9x;UCc3+yH| zAm94jii?zTw=o=9i;E`UfFKiZ0vLSt-Vf@v;w=lIl8ck>jr!p5jpM#+#Yb=rVB~JS zW%H!v&+{cnoJvf{)pl22HJN@UHP=`k>+Met0 zf3w|qJBQU^$`5Po9TT8!b_xsQ7Up_pkzcv*bv{xOk%}kg1kNP2$T?Ilyb0RU?XX*9 zaN}fDn3VfhI1UbPLk5XM9Q{V7m;`G?R1N@8;^xK}SHE18CAz?Z4Lv7a9H7(#wVbT> zztXVoxu-QTnW{#>@uA!dJN?xs$aC&n*-f`3mIwWhEWXAmWh^T(wA3dArIv4e-K-o~ z)$Qr1-@e%t{iHm8bMoF!1?X*UM{MEpzWVIZcaZ}R4y@#-i3pUOMe8Yx$ygTYiZq;W zyHC(>oci?S?dfB==n0dxb~*hce+$7c*~0V8?bqUg-q7L4K)kq_VDf?bOhxjf^1;>V zk8gA{os6=FYw~H1yzxp2ShR7=#_M|#&440xtm)BC}R7&vHi zipDoI=^jGB4xyxabRgGLm|LRcNmaUVWSg*L`HyUG$B=gC)^1K;K##{*Qzttx(k`|H zpq*#N4;~(2mNT&qabS-Cgsw&X;a&^fTC;=0pT7(+S6beAoX7*z}q_)G@ui;+>Hd-p^lQ!{;GfZ#qYA zWB(_~HCx2-=XeEC4%{)y{wIprTMqoz-<1QPx`q_f{qXkIrwHu1rfLnW={o@C^AA_$ zvA=~zM+UClHZQZE1mZQw@R|wYRA{TlS<{lKD#^__6EXJ9{oDvcZkmRjZwIPDqiy*}K}|2+=O1v6RJ#7kKX@fX`Fs zR%T4x$S|y|QCrrVz6Y9%2db|V=YsshjPNfDH^%rwo^0M(e+C>)oU4vMC%y4P z9~ChBbl*NSuXg7Cl>p`Iep;-3e}ZqqZp9eVoE(m*Njud{o(Vdw0H6DcDFOzgk>4EylhnLD5{rJVIu1gxV< zzlfyd0!t0G*&O|IdO;foLn%aQ0y-Z+wITG~uZ%f-jm6t_5O;^wXKmB{P2aiy+)YSE z?>RT(%LCv%q512v#UC&gJcxKL`{%YVa&23B5#V$&e3m`|+;4QRouU zwrsC$A1G_wlxOpvcsR6#1)TVt4O{TID`)!0yUC|A7psWskk?MJBv+F`{aGutE+Wt8Zhc3vo!gAz;n87q%}Vxd ztWrjhsGP$|_Q8qIa)9&4jT@2%&RyEHA!bHryd1gaBZBvm5Jhs-XZE{#vO)&DImb8ZG(gmO(FPbvjG*&`U z&=}X2W2D-Chk4oU+#xS1y%?F#?t1EJj%|nK$lhDx^~iDaq9OI5(THTwh~&2Ji@T;R z?K1U}Rw0rIscxYZJfcd&sbcYpx!2j^6@exRv93)|BH!p+jmV`3UNo8cvbWbNE*egAT87*_HfH9Wz0p-)4$UqCo@dt>mOfR8x)jEfb9*)B?UHe>lCRl6 zAn)dtORY?gD6}zI0fK$w;;_n*_^zt7QKKA$Mi7qwUK3L`4n$ zL(ah#9tAJ-xdnLu{d>U7<|-bo%xPsvS6ZC`Of8kpfLRA>KumTtU{LRZz0qB z+rsRKE3_l{QR{rQ_Pbh*f78>LI&&rWmF8eyMp3 zDg%0~h{=3X?aQ@rnqarmyf_Nk=)L!-*H?8TQq>^9lM?e%@swAVX_;xgM>};Cj@4&d z2kbW*Zx*-ibc|2{wH`iG_^iX`25`GeVQ8Dx{pE{Ad16XZ}zwXWR5^(02Z& z3jn0;+F=4RyGq^8L$kEDc?QULy%)onYG)NgVw^x;q*vi1?VKylntIrZdp!0*mGk*# zTEUbCuoDqtAC3@-qirR_AOE1Og2aa8gn4hy$_&-qH9gsH5I+ZE8DFZzWqmQy@=IG< zRC}qHU7O4}&(DyG-}oZG0321o^1U?O*GG?fnRO**X$_z)JF=G*D~a-z#wWUiz2BUgo#b;|TA!xxG4x zCKE{pYEB%T=raU@$O}Vn`#FM=J$>f;7JehjMcvGH&ZB3m6A)g(r^)Kt7PQYXG-~pj z<(;WR&WbUEEnnK`x z6zkhG5gq}ECdI{8E3R%52ROb0DI1%Wi(?~}@&?I*N~COUGro`XZ&$bE4`$ASCX3Fu zw$Q_5ITe5X-RDm!)9lPF`Vy`9mScAgGG+DV9d@n8(Afy3i3!@CCEik9&&iJSzc((^z4|rEX(tI$nfoxEVrf z1@Lxy8sG<5rpL>4x?FTm;G<#}zgXg)?;Y8T)p|_RYO#&3R+3;cA%i!fnvhu)SbU-t zYZcy3uoI6?DGjBr*vWITg3>SW!hGrM0nMhE!EK&!q?uls@>DO6%v0^@cf38tXaQ;6 zjT?@$Ejl-t2piSjQ?xXyecJd3URAUD!6ioiU0W^iwaxMH>!s?xE}F5t{7-piug9d9 zHLQR2=w`OW!vV6mSWl``6h?bLit_Gn#6#iR(F!@JE6`L1bkVV=4uZN8bU5?EKp8Vl z%^%g|#4e`A`R9-g5-n=7{!g#{E-0$MA01Vs`uu%*n~^z5@(nZ(&! z=S>J_;cb)taJTuaufQ%T<>=j6ONq4faf-U7lef7bKdjX&@l+XkZe4 zfD%57<_?do7-p~EORr*7$lKk|_WG@pP~>i9mTK+p>~&T}I*55l_b8LbdCY8Dg{gfI z17V{I{sScV^!Yy@-~pGIC?~AC0}}Gp=&x#l2R#F?Jx8x1S->q1IF=otJq+aerEp@Q z8=%K{KB5LrA=J~M;kP0tzEqv}Vk+T|8W3qdCnmo7=#Qr{0B{SP52I&@BX+Kzf14*G91PRVUWF3QW2HQ=_xS|WO>295TwYZy`5?|>rc@ozl&&O$Z*7V44wtlqto+-WwWRR%y zW<0&7wa11MuoggN6f^(VT5d4(Dz;6M53V7!b5ff1$gXVH{Xt&QpkIkO11Urh=XI{@ z?PTzGThZ1MrUDhfWG>XbY&Xh+kW`%4wWkDlb%Ax7nAcFTNfkcf6J;B|ldyheGvc%C zvr=Ep#y#JC+%!vZK+#DHN2t)x-cGN`_Q@PFiUvDwgvla1JM?IAGB)NQE%-QXYe)$9 zjo=)>SjVKpmW2lMjM8r|vds&{bm9&7sPVhBdz&kZ!V|>YzT~?vxdY@Z)}i`T!f={U zaG5y*!WNt8;d3A(=JSxN98jvZ`}*pCmj3tD>64YbB>0d;z@cicTd!5jGZmom5F~$} zNRPgU$!uqR_u!{dgjUa7Aq=p zyoP}Ry>eIw?P)^`vL;KiZz>tPOS{hWQkCBUj$|AJW$}mL03WN^Ap((Y(WT1|R+n~B zjX1n4%!JL#_1n_5ek2Frnj}V6+?6St*^3X4(wQ8iT4{M>CY7R#v9SBxtMBwBR(_3+ zZ`@pX_h)TlrmW{$uJ5_~(mjD%G3tjRW8fiXQt(Wz zOeWKPiVhPFzD`u!WS5o8O^W_E?R5~h8|4hnw`_s`_qSNB9L$w~_zN6%6#KmO(lYv` zzA980)42Fqv3!u^$+WbM`%{02-Ctiu)E0=;+B(UE5IU#4Zz=-t`_#vg?MCm=H8jRD zh`>D;K7d`(NrLU$?_Y~Z3z4C2;~^F2#s^SumHuTb2-h;LOx-a{L>WpZyWRqtQCc_?g>5 zE33lol2^dLufpk>jGj-PjP0H}&{^dgN5%?N((vp69z+sm;^CeCcuw*ciAA%T>}Je9 z7RR5oOOmS1g`s^a*?%|hp6@$Q(QNZLt2+<6AXmDqT^TiUz>A()sjopJwQTLodNjh? zwz>655OW%zr~i4Vf%CgVMMl#dU@uEz*-x+$TSCh2Zsj~Mkh+E@7hqF%nXUJz2i7}H zT`Wlukg+)NDNWvK%!xhk;e8%Hfqnv8(XLrYGKsUeG9UjI@OAShOK|x-D&!#?@ANwKbrg!@~2;d8P8Gn5Lra znnUrx@j4Dk`@SD5Cv3uco)(YEHgDnkP4oQE=KqdK41``}G`-||Z_4#J(|CF|katas z$+z-~$VM1?l4F@|S1kAdvr*xhZaMt+WjSPTbrAqI*`PqI+3ip;tIJur^FCfvC8ePr zDBn+xw!Wgvz~jo2CB)jjea*+&8HSF7v6OK%+gIkqSpHK-qX>w`m>Yf1)_jH7Tclkw z1zLqDo>N#JD`tWX*23CI!&H*qb&Gxhc`_VpL?ucgv^6a;BdVnA6KakS+4F{xAUB%v zG&XNQEJ2AkNv!m_4Xrh{;|Pe^AJ6x=R?xWwhoq;&MaX+SPLUf)n*12&wFv zc+wl$5I0dnGN-lSWxkG(D(+OX0_g8hv|Ib**#E+?Q?!=|6-TH#AQW}98{~(yt4YrB zSqg>Eo^hz7e>&#Q`Fvdcz}?hY2qZK)@Gzu6#&Y3NaK;1r0o^5X5iVQjo^oxI_1Leg ztH<0v=noM(*8Hn$pZ5Md$J8OaMb>9GGRg+P#G&AM&4(LxJgue_7VLLUVh4zZf~XU} ze*E#K?Lpl2)-Nr&$7LsOg||GD4}`H+OZCg~ta0)upAN0ensHYF%|RKz-VkeGFd)9D zg#y@<-rn|)IEt>SAZu%DS^Q*f=D;JfvdW2Np%=fx5xB#(tSC7Io0nJLE;vAS(=ZHl zIK;*>$tX@(uwI<`=Ges;I_`W_TQKJYZinxsr{4b{#K5P+Nk%jH(6fhl9~sn8d7jnr zv9!`Jeuwvil{NzvOb~x4T-aOjY%E|pN?i@7>N?a3w2bOiJ{GvhXGsu}v2e^!7vp6` zfat=U?%m5!)6rK;{?jLKDwBOnVBpC>#OXuRvaVkK_UT9KbdFC76CuZK!j|Zno}tTq z_gcPSdZj$`MW{tUQ`-oK{*!$i-UXT8p!sMiS_g`8&;F3MJK4DhIhjM?<`%1fC~o)m z%S^YA@Bbo|cxqQzV!QQG9Nus$NMgArJ#OD?uB+{tSL+ILW#s4(0V`y$d^P&~<^La0 zz<0tg6LcF?9uoLW+S8q-CDV5s-;o1eE18TAT2bpLsk|+5EspUfUyd8LqjSJqs1wx5Og_5$XuNKDkFlI!GaJyOL@H zM+DJgZ^o}W1E%>BglncDG7(3y+`B}8y+U)>uzVPt6LB?;_yLPon=mw!eQE-g&9Q-s$?o+sB|jumLob zpXkTryNG<}?O1JLmcZr6bn!#Etc_QOmkD*kxwURWErSq&GAqRczGB{qMMx)MG$IQ_ zGb{J=?%fh#d$+b(;{ZP#15sL2o70LeX?_h!A3(fmv-G%7Pp^YM0%xrei#-QLoP4Qb zvXsQ(aNYWhD~ElbN4?3fh<#WSkh4SFzi_Ji>+%1oosBA-g#H;C&2mTN@w9^|F$!=La4u2gl@((mx+;Bwz7UW$MzB3X;p{R z7sq6$q_Ee`^xJCGk z*RY&pJ@T#gQ$JGhy*U7c7w&)D;pjB7lXRbxu`i=e4#w(6lvF%4#0_yuNMp<8cnaY2$fu0&6@NV6{S>NRX?ErU17ha1 zEv(tLS_5oOy5FM$A~Cp_m;ywt>-ehE_-?I9rr*ZKn(C2t#EnVz=LsQxXn*}}YXFl_ zp0~?41vh&q%wAp1o;*CXx**=O4_ui{tjW)2b1G^^Icd)9wg(8hX02UEzR8-LXEc?J zMO;DU(M(YSC!>*-^GVYGxg}~=7U^()wE+5GS|3_Oz1S`(^)L|h*Fuw@M>3HYsGCNq z!+3xB;$5fKasu4;W`h9zN;qJ=@qDVkDRfFW+}=Q z2bCX(EY{ArIa^nq)OI+r3_!{C6pts|`#Y-jUPbK8_x9u3We2YQ%;+hg0tVLiD<-C< zUXGhJhi19*%gC>edv%BAMJ5_I7zh=#02o1`r||jzd1UzrlgX~A=n)^zFU-J8Ukpw? zr%;1lY?M^;UTF{)QkmYlPy1Q*7|?Q0B~va7VxM#Kh%HytHW{9uja)S8xYn(Y>nR5T z^jFI$#elTmc%ji6_>e>ZfSb7bG{&RAYnA8%@}yU^KdT&@!;Mw|8k4MwC2P(4Q- zK;~H`efLq+>548pK`V)@pxdmq^9h+@ljZPqD>m&as~B9Oe+*W&=i=VEy$wKIm1 zXB&q_Ak^%NTk(QFI-3D?ugtce!tI*wO+i(vWeEbSe$FVKPbpIb3ea4q#Z_Rvz&-eEjxl;9JB%>Nz+3$pTbn;XqNa9 zKs(G>mj*AtqxvU%VhT&U(?}PZ4w|^2I&QXp{g&w(AqPKUOT_UlO~(E+A>ZwQ2RSC= zHZ#++E^jldxde*U<&5}0^cqh4HQsNKAeq+#`V3dS%hpw|d+{-trnz|0dBP@ap``+H zOI^I7U)`6z6_jA>?l3qc@5%8_easSML%o@;2N&p~Ddjty1h{Q5WaE zJn%SU;y&Uq;Y+By!vF7~ljlJf* z?AZ2kUzy6c$I>Mnh-dOUFZq`ff)fB^2RZDV*4|pFdqq}aDwol(FM!madU$65s%&e5oYd zd8>haneiGSfE_}PwyEy_DEwFCawWu9g|kuyO-Bg%WklOwqZ9QqH_!>xKV0oG9BAq) zNRR(c4Cnx}-jUk{%b0=I37_|j%SIvyztczhG@@28)khL|Tuy2wyhv1!sbA67Q?CrH zRE)kxzm`njpKcsrVgKT0I}dIRCc1Jm0v8hgyVm%D$@ZJ3?jBWE=B&xbd2BWh88%-H z@r`VIHoiZ{YkD`4BPJE?(vL*O=x+o?oJ!+-EgL-gZs4$%azvt`uG>Uhtmg~V=kFnB z{$jt~6!5E|KAai!f} ztaFLBwqQ%%C0z;RfY;M#VLB)E0Wos z*t5F!{Q@Y(%w^~2KU|Y!!|f!lqpi9vVv2Tw!1!@b3|qhA%z$~R&2C=W2)C&N zrI@SJZIP2Ai@B1(61b(wqi(}nT;4m0Jh(phGFzwNzIw&jI$nY23UNwQV_%1rlJk(o z=}|@AMGxHEyzJffsw;Xhy*blD+Wk@mBNI8|{`dHYq}CPmrt_5aPLUg@HTh<_`3v*# z#l{m?V@XB#Uuzz-bz$Ci!M5Z)OK9srTS4Ja(FveM`uA-%)*!p{-qh)y!WRSGdUd%~ za~pM;6=?>!i?h85Sm26qC*HQp=1d6~VQ%J!8eJ1&{Sdq>daf};5Y{8AA)uhY_tytI znvdieCRZ27~^}+Hs!u)_&49Wqr~%aB)lVc7X?wu zmKJB<$2~HFaP6q_lvkk(Ac$hOy2&4#vBG4m!pTXl%vK}vs1k>S1I8cl*7F0#0W9E; zdIKNS67qoW=j;|>V}7IMs7q8@E}};?bc>6WLxL@^7r8Z{?}%fin)(iUwbrR&hr_2X zyZ7;>QLxImu>sYw!NJdgf4eg(p0{ki?uIpUyAT~*J`Pa=&tZCFh8jeZ+Xz*^WJGHE_giV9ZJd&>AuCc zHL!5?-N%2w6G6bVjF=3%>$51uO-o2#W5H(z;BVnGaLeGJ^2Tb)IkIpI<+F9Y;IEtg zLUj0%e+O^63TDjVqv!$!LnsV*6DkV&+79+@|9Al$H3r2noeix1pj}ZnCmtm$eD{X) z{?A0mEvMWaYA4e_P{e5{K@KYsQO*p#1>5uPS6xZ_qcBmu8KC$F-MEAS_68ha#NE|v zIl*ONzWQ3JOE^}4z_HPE&@!_T@@)8M;O>Js%uW_X_e&RBSx<(BEg+TUKGx(Mi08=f z)23EBvSRIFHDg~zbJV-mO;5>^sv7w34b^4n-~aWPBT8js_G^}7 zw&&U-;`tVE_ot@+J!A`WTw*NOQ(5_K*nS<~RARegX;c^tAlI$jD$#@1dDsHx<-DnRhu&Sg7G~eMR`Fhm>zT@xh7=KgF9XbOt>ozC zc*22whbydXH5Z#Q79QZ6@fw51C7BHdrorG={U<$mKyagc&?AUoLX7fl1 zSd;Sh49Qh{C-?~E=lvi2-u-ppTzA8`38(0_Li7GD+DeBZW`u8r62?3D=CMLSd=o{B zzTkfZCu&xrnlA|i9jF%Y~`QZLK?DdPt64!pd3&Tkf_48K}< zviGKbt9B-1seK?#qFwt4nWW2($AY8_eICB@``UDVGBVQuAuD~u`B}HDwB|K;`R5D3 z=kw?@1wK;`*g7!NF5Wn|g*aXHJgqw>)cX}?;;rB>0nfa^ooa83Ygddf?P z{A-bRJ`gn&!Zq2fQs{ZX2G|n~bsCb1fHld{JHPVcZ>zgfcLT2md^#ADlwB_&bNOv3bC@fV|132E1M=&lW|X$!JDIF&k;1b-t|II$6ur_=o>1}aw+*0A z*!Q^qZr(yBPO9anlz*`shoWgB zwEbbg1XeP_4hjMEb0^xS!PKMhr)6%T;f)h zX#5_}mZu0X4xS1Qw2q2_5e*(g?RU=)-+YiWEAnzZaqhc5ac`r4Vdi~V{QoIWZp38% z7UG*>t!592?KLOK5|dx5EBpM~8TDZL#SU}rBE@^st^?en1?zJF zh5McMvefs`pAlN|J^6B!Iz{EIiq6kq+Xv1lU=C9s9T zU+-?~LnX5$Z!N4hFA8h{H2onHF|$yBNtbwomfvLwn$F_cpl|Q*$I*FVN3}R^umjm2 zi$Jk=BDb)_Z5TyZp4M18yY|_~RCRNuaZw{#5?G!=HvD^UQSHb8`{Aictso?J^4hYP zNo<8&?d5)9SXNkaxu&h;?Y%4f7eYy9MtVBzs4I^+L>^uHISknttL^j7(}!a` zM#5{rqVZKT{e3~vNKnwVgXIEO%Uq~%O0hPF+!&Q|rYJZi`hZ3F`0?6x#&||*iNY~9 z$650JKAM;!H%m#kd})iulis#<$=I)Kr!nt#dyibRMMZS zWFx|<2M;+d{7@ql#C>7LPgBQ6tef{n!Vih`WO{P3}38J7(2MsQpl^$ZCPn9A_p66Fzn z7rk~1X4VbI>t(u*_^yigzAa+59YUY)Ep#urp+bhA<+>o))4P>xQmAq%1cG==0{n@5PQgP<|!{4Wfh}Pc9l%2Ea z#jQfLN4|KLxWtn)C>5CJPV+8Dh+}95{CPNvEOMmeq&0KvlFFKtWi0f*Mm0J& zrMM4FA5^#@(cjbRIs#*s?VDHoryYJAn^sVWJ_25jJOAI8WB--IYnwE6_t|nN!z-p{ zgN#IPhN%?oru#JLWWP`P4nXSY&S-sr<(~dxv6^^f4~&NTjVDF{aBLrPeoY!RbXO2W zJSpYOFD}_lxD{~e$8|nblz6*8CMx4l(eB?rL*)tG=3*SvS*gaUFnP;=H zvoYJCWK0rrEY`tui<{A8-=;R$`$C=J>q?QdlRS5cGZ>IXgTAJf=d*5@l z_AlkBzoemNsq>!d)0$@X&G40IbI5ry5IBvFqga=hWqp5q_)fsqk+RPqrwQEph&6m~ z^{0Y``s6z$&wCB6LjC?W$=hqAlUN;0P$ruQzgCnL_lO6pDAD7;nWev@p~|s5D(=Z- zIkYE}aqMR2w2Zbd`5ru{zucW-AksANXj=;)e??t!%UjwkEg?AcCC=U!YmQSILJ|$hEv0s9b$D zRx?*;A=+M?%iEt_yPZA4m}2w#J%?~2EW!}Ww8Jv*4hMffX~ZOmb<*t_d$S?za8gmhh; zQLmerP6RYUNIfHqx2XSS(wp?i9<*K>AdPNMyX3$Zl^8P0)p}F72G37eYP2bK)K400 zU-o{x$KOh3Cw49XC#&ErwoPB&b!MaP3G=slV}EwdFof1nE%@Z(eBFJQk4eUMqobq4 z{d)*0C9LJ}`4=y0Nf!r;<-{Ma!`_$`Sx>4P@>D_6m0c$qD-_e~lvta|mD}~74emSP z!nloP!t|ffi$beod-wyunek>3GT+`f2Td|Qa zEz;Wv8Q^-k`3rQ`*C1|7V?;`gyYZ#2%mAG4|%P)AWINTuuDLx!uE2XW7ir z6>#31!a)S3?Lj6uhI*p=yMvA7-c)!>YbLUhODKNvd{jI?V``|y0MrS26Y!n@&KxLU z@>SY(Pv-yjR4`4>S4COwKd;U-iINrc^KjDdXC|fuD)d+PAL!f<4!2a}9ig?j4APT! zou061H}@KnQm{J2247%@B-4#vWq*NOG2r(r`{q}YbYPq&#YcPcaCqfU4dS36RBY`D zo&k4UG1wjKybuUQU!nXA$oYC`IpY(Om`8g>#d*JO_CAq(XU|~Hd^JUzt6L7NyZfyP zNH}{+$Bt4y@3~0luR1$aaO21;Z&AcE;6wV2Pz z$LxsR?H5xYYz1MRMc?U%JL!?j+SZ*jGyFWy%5+*D$%dD7GIQCNds0dhIV?CN@LgS! zDdQnQl*puC2Cv20s&wUfW}zPB9((RBn{2SWpBVt#5|s1wuDz~69U zW{PxPi>Z=cUnWcRUISNE&7Roo{~*czk?WC`n09FjasM2M^q~T}KrK_>$xec-Rz9K4MSSfY*L+ zXukh20G)5Z&Obk4F;d=N3qD`F*$S*YWvKDwuq`SPw$zyDQM3#T@pS+BZjTmd-?Xc- zvo}dnTWXS#kmfuC$BVoYxpf;3VM9p%`^YLWTaj7<|^E%o!yv;nZ#dRnt z+t*=g&=_~Xtlc0HXqOXXA6o|ATOH~I6qXl0E%y`z3^0K{*-Zwv3_dPH8_bf~+S5ro zp+r0aq8kUx7T0DNWe95d>%~%^4_s39qtx^bN0@0L4X^e|9m3x(SC3q-mku(w6!Xgd zy)v+t?OW@xVPjTDC8TMlX&&xQvNXrFcbch{8lF-Sv+gRt`;H}Y_j%xS4JQPUYLG5I zH~3@Qfrp{~(&8jkYEK}z{)pXLN{v%BnNwIJVd7T4NKjKDV?0$yU91+_5I*4|Lb$B{ zW7iH&?_yoK03`x&gs9A&d&UCk7&`uRRHm%0NxbgswUT?sU&V)c(aV3vbS%@Qrb+Z` zHgV3oTp-z29`Pgp??wQ|G(wgT&F#E0AK5fvSGemleRznxL?M8ExWQv9KARZbbo`B3 zs0EgA705Auyte@0_Q%Sip;JL?TS7t1WPN&eLfv}y-D3QnBlqnLU>IT6@sN;LH`t$e6bt&psXIR9e?l*EdyzBear zUG45y3fPv*3^8lfIPTc9&6iuh4Xqh^S{h;`ik{zn)a`8Yb=Ayhx;pTop&_a1qTKoB z$a#s}{iDV=?_B1w_hWu^fZe~kXSKF^cXpUXGG(KHR+Z7w+an-%g@4#DZK9ci)4mZO_ttdCXkDE(*k;9E;a$ZOH@agOX-a6m( zR8i$Ev)Y;rEEA2$byh&kKV@-;;0{3pO_M?t9R+C?({{SHyZb5K8$PA|`{Pibp>Jb{ zY%UTf&*?X2e#szYy3K(T)Aknu;g*Vt&FBT3!;T63eDFYSL;Q zM870SrMh1SMb%9UNBRPFUC{c!ANKluAoy6c6MVi39`0w-v=8G}S?8*!b9u;+ zQu5^*K%)I`Y(9-r0q=AT@a5Pxk==-Z?hdSb+l7B*4tUg~{}{Ln)MN?Sy?o6s0Bwqm zt>l*}z7CGJ-xAPXdXV}^i&5chhv(@#Tk0Pifa)*RCHWMG4sMNgVz;hlR)m!Kf4?Q7 zLJ%&^Mp5e+@8P43*OgSt{=yKW7}Db9CAmY zJH=Q{QQ(hYrL|P)$Mp zK{^`pK&};HEAQ7T2QgnthXg66pBQKR5Nk&!{6))8o^rxPC`)uJWP+I?25gMogbPW}vXT69jHCmJCF&0|akN0w*13C>vl9?b z&X9wa1^XjqG~b;++k6CkD>7t9^J|T{%UM0W{CX@_W4C&?CHrt%g>RF3dJWj?vwWtV zZbn}IGM9SOlq4MS9S>>r154$HAu@utpUrGU_&YV?BBxKC#@^!YS4_D|UZFPa2V%4G-zpFE4GPGSy% zXiFw!n7Tooea)K(72>tZV3e}ZLHJcK>H7mW_nD7P1LCd%8E_7r+^8XhVK(taD7Czw zaUImZD((`yPrvfv=%_9B8Z@#vanp&Y zAp?Lg|4+S=CngIZZeN9bFU?W8@nO`%S#mX2^POdY8dsE+P+E1GnsZP6*Ap2oPX-YK ztpq93_FVm;m#oy+*joX-Ra=rll5s7i2_1wE_#HeXwK#_gvN`Kk4-@|h+GA+1wFFO2 z*KMKJ1`LV<3tECs<$uR^0gWob2vt`-4^=*8{)s#_M#-~RD?^okD`~mt=vi)&TY=fk zM>Q+(9Vs}8yp1qd6OzT`9F<>MIPdnqWxETdn$w79VEQC^10Y>Ks?x@nb zT7T-1;5A=pk!y@*97e^Qj7)+h-oP^%d9E3E3Um(JbCXtQ`l1IC#?DpGG&bQI*T*a_ zV$vYYw{Dn5`!sTEns!gu%?CQ;san^$$(($p$O_5fD;q;$$o?8z3TfCe-s9)c@SXIe zQ|_DI^8W9BD}!|dWlrlShQ=4h`SH?O*SUK#X0H1gUM+3=ghF4ZMvuKWVdUX#_PnR%_?69Z5HK2bFYk(eCjhM`PC@*xbmi|yAMdfZe-?xu^ zi#6G`@sKVaSEM3DC-!^PDvGQ!=JMMiKITAh%ke7Xm)LgS9A@9(vtECo439@w@L{5JiN$(r4!>C!+@FbvJJW<}D$m_zr ztX@nL(k*jJbCTOvC8E!_+g+Et>rJ(mS5dH;$1eWr(TlVM?Dhct6gGUUfo zbZhHYtko6vb`Ug7bm4Nz2mp`GE}cbXvdZ<#*Tv6&*#6n89Vd{7e8HiWb3ezY0mf32 zc*0J4(A|eC%emzBvG1zXLHC1;WAS}G#7?2~YP}EU%QCNR-PbNq&v=%0xZ}!d;-Kp+ z4S1U6n4ZqJXF@^s!NJMM)9w8>spwJ^SfZ7E5B6ftBopMkb@~@|4W>jgEV==0B)E(O z@L1K4e^m1S`*3WCGpy=)_lC;y$&*orpVDiX?PqmAJ=h)YH~b48A$H?($il#Q2yMvD z>G4Q#OISd8@r)i6leAjUL9el4`Q$9^0%IvHDzS1Bxf}5P=wwEf^kx@Gl1YQFqsoi0 zEWgPd?Wc(0=X4f(6le4__~g*_WVeWRqv|&--pmoQBL^xIpr+h4hlRna*J(x+K++5r z8K9M;3;^pNBq+A*xP{EAi(|GnH#)5o zloZn1Hu1(iO>v~?x!ZVtuA5u%wICp<0HudG_Ly1VXwy=*jO!78#%%XB<$SVu#$c3S8AmRYvf8mMr?f}_fGG%ut za7oa|%c6--_o}Z@(AZaJV7aefAXfKWd@*TF8z%s%M!OwDZm}heaAZKkHYWzUgPJ zCq2iI_jZ)L09~2&)2`b5z}{&_K9*x|uc!$)=9Zf8Wh#dUn6}BW5A5iAxO%30LMKf1 z**_&!y?&7{U{NA%!K(#vSJ$Om{XqR?VcutiHLWQ*y>jws5-?ab7x(0G{(o$}by$>Z z*FG$Wl)z9T-Ko+gI55%(BBfH&Eir`13=AMr(lv^Nbm*pAVCZf|1q7r+dIlIezI$*# z&%5{Y`~LFS$KiJ1n)_bYTIV{WxT?f|`rLoG{FwRR0AW5I`;|@n{>eqtx1AN8{?OV{ zQ0lTfym@)MG!KlJ5q|8H_V1&~SJvU?XK91L^3VW3A#L;i9bT4L^U!Oo&8bo@&oO?T z#x$uyHe3mi!yw3emsv|Pznn~+`;;Nd)a_B|jrUo1u?)g>QdAXOv@0m+f@DAcZ2^F} zhMUJ4S%CPF^p&|n)_S-)A5Vu;Krz|<`QZ6&(JNT&=I5V|@0cEmnJ+(NJ#T2If1*RY z5k$PVqr8QewEDR@BQ4Q7PM)k{5#UUE+1v)1`k(J+fB@ac#rl3`XyDj6ahr{)?`E}N zHC|UN^~Q^<3yBYhmd+2`N|Ak@LN zv+z-oBx~zS6Mw*PIrVi`Mmax~=vLoYOsPuO^}A;Em@85c4c{&@fi{3~cJ@up1iNhX zAl%6P>k~uV;M8IkeE*P%YfIbw*wMG0GwUU~C0z)R)B}ip7DGmx_>ZvIq21mnIrDVU z=<>??s!u?}okWTLkfeClnCPpJe4?wkns~xf(U04FgSQ%0mMo*S+(Y2+`9OWWy26cn zdQR+ z8+D%qsssow&7JtO8(aVTzK|er-T)GfkL`49VbzvXB3p^AlLpk+Ch5-lO0p5obV@;#9sU1Z5hdS!U#?qnQ^wCXPq6}}TNy$3x&V1%rczKjf zk*Q{u;d+U6BfQqRz>9zj#M^&Kuv7nnOrj)AbTuya;k}=`=*@MHMluapn+IBWwOR=)WDZiV?;yajhMB~ zBf|B!6V-%R-M^oe7O=3VkmwbXLN1%2yK6Xq6FY=Rk~bg&l}aD{61=i}!_%)_ya2Ik zy6N9UpCWF*gCo3`HM7T^@EpYWa;T0>@wF;WRvGY4m((oYv3%MiE@kqJzHu98p;YsU zX`xiQ2$!Bt_H8<0o}`G4LE{+b=CO4KJ6-m#7CNhT@%YA11kc>Mo9i+9+(KWpFX zD{Z}fN4r_>t-Y!5^K*YQCr3vrrI~P}p9s^TZiLTxO>muP|Li0eKzh6XXN39l$2JL` zs%f~D2s|o^wJGQHQxrajJ+a-#Jmh#t3SQtrsmBT}y$s$MJsDLLB`y~X{cGF5wy{QC zA%0$<$VE}+w>DmRAqpjpHa5_==#o1AsMgp<-D=#x+{~x*m*?dt6;cMGrB6XnyZdcU za}cd7QCQ7qow&36G-C+DHBfRoZ*q^93Hc(YqY zC2zn2CxqWs>f*Rs$Hp^#uz1U*=P_$;VkFX6edr1T@a+fTqO(%L%l-$UiK0FFF@r19 z(o$k{*3i)(q}{P;2Nn8j#!ay1f)8Td4`iS&2CZt%LvnR#w(IW=e-lrU-Zsv1j$aaT zdPX>7>-PP>rZaygJzs@aWsFJ!otD0n4_$Vy=s(J`824fxQIiQ-0$AKBoq5(9jle2) z#QELz3-&t%D!l2pqI$b>7k}GRSlh{aDvKIbhVE44BIsfHkE6TmLZ5Xz&&&Rejj3G; zP!jzTdh?$B;!i-vhsMo;3;`#aazH#CQ|!LTqf;Hi>?p}<@vXfpf@j}_p_OUd`KFgg zbbpa*4DgTk6pQybc(h0feXzRFN(NV9G2-)ObSO3Z5GFdE2>=f`&U=tBytm7hgQ+n- zc4{}Oo2)ISxbw4(KyRHpR=O7ccB$zdpRF_ewv#qIf1ybTyKC#a10Jj78$&D1>JiS! zo!u-x`sWBS9!AM7p|8Wwf>P!uMqaZOZF`<$W=cyOaV@CyFy2gi5%1xu#pBQ0O(%?s zLo^pjwcDV8!}ht-i{sK%>h?kvwuqRQwAA5>G(n+tyef_nk@jDTRN(w$?82Apa0_$g zE9R<)Io5MdXlKkf=;yi6{d(_!Ux0Acd7)G)Ji#YO*z9Lz|0-fWqf^b77GV6or*s=$ zl3(4O%^7GEkQtTtNVN8d$)yk-U2gTBPM4hvrb!t`6t@)t6xT#J^kE;!pTFWT$Vx9u~!mdW71>kX@F=86kz z%-ked6K?$4-P>H3)A2m-)%N$8-CPIfBIG~m)3L7OROIGVZftuVx@2{A!r%Fp%t)U) zR=z~s6DWV7PnR6YU+GHLINR#OT9RmAgagUIyJxwqr9+7x`RZo}>#NfIl=j z>ss6g+}$p1)HfcV6J_~q<=7_LNNvc|)TjaM<@fXXy&sH2+c8^jqhLp>w35=l5<2B@O+1K-wUaY zp!d3@$ixycLT^|zvdKu5dTG!meRoSrKKFwq0{@Ug`ga6R+14mP~&3@l7 z&yBrX%aOtB{A=!)C{o&MwkVYm)q6|S*Aza8O*esG#6so{=KxlhOJ9U(UIvieYxyl- zs~xa4yl9N(I8Vz3=d!8%2Ii%-kO;Ia7grgkm}6SXNbOiiK*C9thcE9BQV4w1tM1UT zPLcMH?dSysCXbD|n{B>4s^+D!VSAFJL;Tj;fBhOd2G}3K-)s@7x8e6PtpojHYh*^A zsQBqk^yosTc)ktHgbnp7vYm{l=jyDMdeVEuChVUQy#<1gw_lqGn z%^aM19(~tMC>p-YPx{u{)}(eK&E`Er*js?Xj5};$jxW1*h*6nzfrk{<6bmI`j&eYd zi#g*Ez^7wi8!cGL@S8lptD3p!XNu#uT*q&^*d^3Eh*RG0DM#_0eNPPU(O-PuqZ42K z-AOti_LH_RREOjjdsAuIovt0XXX;_;$oNu}WC-6l`xyP=ZB^@aO_<=4ga0%@Rwdmm z(po!s++;k81xf}OaqwOGujT)`6ahW01)GY6nT4P4NrD)SihUD#-qp?q@5%kVUzyl= z*jpV5u}}jV97bE?$dtFZR#@tKuRl_aFRS^ap_vI66Py1Y#*@r3p6_O+mVYSXVR(J1 zlW`H5k6kYq<6Ig0Nmv~Fr){Gmu(I)xIb@OV|JcsI2MAuO3Ln#znlUNO<$0Xyu_2IO z`A+ppN(#~nw9E|v9(+^Gt8KZTJjfFc_?kxmw|3)+1mQ1#vd!EouI^l@O6&gkN!l_%w<387;U^wh0 zzo-Yk#i&F!152}U?)ue{j@bLEmYNhHHL76QtE#*#Mp#PcMMl3IL;Vi(XZK`buE37a zjydQv_rc`Rbtjc~UzN0EMk}6Dk(7D@yC10_D*teUg~Y~I=|g($HhrdTHt7#I2K)&V z{^ki}n(yemL6~zTcgT;sZe~h59^%2)`mpZ%fj6_5UE(LY{wP7m1%Dn*p7=nNT<7Eg z&eZszs%c-t;*=bIw*(Svp2dbH^tgFMI@5E!#IadfQp7QqC{-x1J=VlGhI=vw(7rpR zMxOst*p_nKpEe(noA^;|TIhB(G<0T56EI}4gzMU$)0#CDgA~AWkUfQvsc)2y$7K6E6Iwlih=miYc1jpurbV zK{@5vuM!7EFRh_$(SQK^(~BefErlJL%aC!mqQbpmFi6yYaaLO&%3!u+gmGsropGkegPha#F1HM(Gjuv z3H8PI)-jH%q!VqBa{bmu%u=KB?)ZsqHS~(l z`1Z~WqIUhJ`%iCU1%tLVK0Y@3=d1uQ+yRQ>P)X83T!Gp z1r8#kyt;b)EP%>xzvX)Lj@83Z@>EK=)=xqnvNkFIlMX(4(Or%3Hja$u7^&6yZVIm) zzn3SInoK2o>j1$5I2Jfruo#I~k>Irds-($@IM zjG%>RFr`YkOjLcs^!t;ZB3s|6WrR7It((n5H3>hU?Y$}&FdRu3-9r<|OI(@1ihs1l z7f|5zD0Q)Tliz9yVE~8hBTP{D^|q$%36`_^-85qodejszmjIQGATvOfSd%=dCH+eR za4(h={C?G_Kgbg)`s<+abYXhTfq^$@d__(aU1HMUdUtg(F%*ZzGS(iunD8l8h_=m$#fEw3 zd@4BWH|(5z4Y0Uc!XmHK@u?aeh+Vy1r{r;=xyT896u#-?DGh>64J%q=F@D8UXC&wr=TtbRb`kuO6!NtMQxRXv@A<4s4F5*E zx9zjPfP~Qhm|Ej5Ll7rrXQrU#3u3OrgT6POBr4+tndqH7b{z?R64WE)E|_ZU02k$A z$-E&y9JKk?z>J~kXb@WCj(7(2)a|%R@fl0iO|AP3)<|z}Z{vczsqqk*P$axwBjlC! zw#4$MSApf<#{(js6+YDIk!cDwknKurQ#Y7I>yb*Mhgf1Th#B4yzex{ezX^X2m>Fr4 zfgpfKAdd7|-p%UNy9NPNH)J?_8(#-9vQ` zzXV1$hM9z0KK2BC?FSz)pCScBmwYE1HxGB;}i!bkOXkE<1!j(+2yT^m)_{Oi{O*>I5W;KI#qb~c8f zXYb&>5^c|ZjvFL<_KM0|nZh(tfyIM$)jY|cZE_e+?=b_CWFqyy{xlT-IWh}vt}g_K zDl6o#&%i1z1(fR1U3R*3*&RAU^lk#Tej=mAIQMhKNPC0t6?PA&OJG2B9u5Q*dgauzr^{&1`Syv=AX5Jv1reUdwQ`L&0tZ|g@;|i1 zl1`*5i0i`Q4|=#D^73~f&igvJ-FxSe*Ua^xCCj6B5M*j!{Se?v|4_UiSNGkKM#**A z2^82R87$nBSacm4?~`t;C6h547UpOw5ev9>tWbUWkFmht2l6EH3bYE=yssD_o+;#- zVuxAt$#y`CSe{}vvdPtP8IX1acJFU&S*D}%)m!I2SS3=2g1TwR`(iOsOe(f|;Cy&a znT{*PxLb=D51&_W^w-!#ulIa?2FvOI41t4?P&WzMOxge?Hij8|T@<~ugT4PS%5&OB z?gP%CfchGNrfKT{dQQfugdDrU(<)}b zp-!kfXXu}h@uf*!@R1n<$2iTgHNRI$x*~g?-!VYu%i541cy?0Yw&Vw3(^*DvH=eIshFqDaDVhZ{W8ZcL%WiHsM+rG+eW^^OoOpm=3jqzoim+r_p7v@ladC!brnoj`+)KIrGJzV z2+NaS{aaMid<(yF@Ee^Gmpp@#_Cf|1q;1&w2`6mWJ#>p;i&ij)CVjF<$^sj((LGs+stiF zzs5396glnHGXc`Z?1UO55@7IK-39QXQ2j?Twsr&6ITBoI;K#2i76@~~4CuB$FT~X7 z%W21)}?;v0T~^gb3lx^qa(^krK929H(@)U4B$S+i!6C(Kip?{(F^B#7Ur9ol_i2O?l1QzW*DcE*WJW zJ0X!Rb%?5K5kEB`ri1vbvBK_)UkRAIZcZ;$|2x~R;}AffM!M$X+uq!H^uZvF!B1QM zXz{5U9@RopJXaRiVseAI?`WpW=m??F>F-H9zsn^hP%Y4|R4oB*e3++D1!uN}j04mS zDCstB|JWq?p{aJ)Atp9p3UxFjf3mUvyw+!F&S`yAh#}&8^5nP&(yJ=*7}q<1t_4nI z)Lks_7ifGI?!EZy zHBe9vTPWQ?^%vX+wp)W;AiDLb94+}Z)}clD^dwt<%&~B2MzefKtyQjyq7-^Z4rmBd zz$&a_tnf8poKH4oVjyLM_84n4CG27ND{WQ=lQUAO0cy0!Ti0AHhJ z9f%*AxY5!7`@{g|q0%e2SmHgsm;#jFQ1EHhgL~D;Ys#YPaN4x*Di3rr3|}NCwFd39 z#&Mu7qeL0yS?Q(SP98BG00yh9xv(o4054rjmugx8p=s@-g|TM4_u{cme)NN=Vz5)n zaz=?Ze0iw8MvyVLSlY{F=kkHT8PvQw$V78?&q>GpSnwsg-N#@KCODZ|ksmv>usWJI z=wSlkc5vcT4uzm$v+uxwMhAKMbh`G_0`ABxC>_$z7J^(=$EPCuz*pLCj>baoxlBs^ zkQpP?R-c?Y85)DqOMhnR*6X^f>B?EkuLc0o8&Mf)@a5!o=xGWd-D*X7N6pk7a^ zK3qRSbj;3;btrLg=gO^$RIrEc=v((&=8BnML{izu9N-iG(E&dRy`o?iF{1G4P5Jjn zL%QHQlkN$gXI7{<`?UP1J3bexmS6nSVexO&x~-G&#t5OvblkSH$?=~3?;G0*-NM3j z<^F@dzq8n!m{M}}m%X*-$yXRpo|*W;JCp^!mHvTTyd&=qLl|JEYID&sn7b(ZvwCcC z8eXXG0YLq8>Mb0X!$CT66fA7cohK#ajXe$3lK$G!2ZD?V$2*tY9S~h$4}+cMLmulM z>o2y?K8zeEXFV~&PUIE)zNeBp08h86-`;pz^Jc(G9@GTEglm&szkXei?44&8%NF1{ zJu1XzBXp|DB6F+D0{V#LER&6sCjP^KOYx{4Fc&P%HHZm4G5!aC6@c)3RZHoBG{N!v^vTYE1IczR6pc?BKc{|t!rrVf43}=7ZSzg6z z$&&jesreMBALb{<_m+;Vm`S656$xl8SE=^J+X$Xv?FI=Qx{}GB{gJ?JQ{hb`4mE~P z-eKBRMkAo`Suen4t*T6N_ge&JeU47MNeSR8p})o=s$3p^GVNN2Go`PgR;qWcM{)lE z!j1Uz!PG&#v`2_mzFO$9uuB=wES;lv(^ESx-{XKP&Mu&8^>Ms{CYdj z0w8L@@Qkb6h3u4OpJEr#sZsG_U?R+TB5WFP(6M&8T3hw@`oSwAQC;iI(p-C=U2Qg(w|XaZN+4$=yjWm8|2K;QO@t`n zTl%Cw#1(7LB0K{$4cX9%7zP`(9BUI`?QmQ){TZfv_`S#q{JVR*A6QWF6UZ|Ycw{7s z#+_6*+gFkvY-@-;HitCb5gE^nr=l&k6*QLD;yA9#z(k#D1T2s}e_Yn30`v-${*TUVp3yx!>y6-uh%|=)w-# zlsq8BSn1#34H=%IWT3pGz2g2*A9;t9fnQhO?5eeMMA+ipCBJ)Kw4`3ZhN>D~C#hn! z$GqIzcIb}to5MNL?7HczJt(i6)W`+ph1N!B&B88r^si)53VS^INh`(*g>A&U>TzIoRhnD`ykynS0bWk1gY3oKU>ow%eA01}pY zr98=YfH%zm1kr>@ILU0AoodvHh%NHlP7D1GcUFEh(c~AQHr=lh^YxyoKFk7o1#k;E zLlhpt>Ka;}n>iL2|Fa$|S~TB(b-ytoaMqyy@M~dvKI?7WQs<(_5C|kIWBz_%Cb5nV zy+e)z?8DD;cX%oSu+DHPmGeFOvdo2~A?+!yot{XLfnU3*4A>twCcCFW5z&E8R8Mq>qLAYle7JNRP zl7Oa1g(AFwD0ng)UuZ{Psv>v|-L)oYIC~$a69)WxlyCktF zp-m(Y*7jIfxLa-JCoJvU_m(hdMlJ*~X!7skyhimts_|PF7a1p}?a9z9D%<&%t6gY{ zj6;}j@z3>P(b);xW1KJEoGd(F$CW+y&~0|KQZX`7j%jGkU7M|_%b8;%gZK@(D;oj$^}`@@n8SIvHo~ggm_zSBUI4S0 z+u;Ydl}7>MNj(`iR6~?(fe%KLOsefMbR|kH1T^Pvlf|ITXv>3gXdqg)ZgQDS0Iy8> zRDI|*S}6Bi>MD1&cAb=Bc&}gU99X!R3+#j!LAw3_xY2?8-O!X+f~#}XMT;Zzt}>i` zie{g|qB@IKWJGKhcxlS+#*UFF5w{Deyyh@4x2ddkDyg&k4A==zKKg-7g4KSM7P_Vc z@zfQ|rd8pHKL8Z9fN_io>+tU8Nz)}3bs~??6-GaLN1iz)ibdbyJ$T^t{X_Lw!gjLu z>*v^h^K%cPt7OwFgV*Z9o*XjxhtNOXyWZTP1c+l4EiP1N2c@T-Q3RxO5LowI7>hhk zE1OEDV%MhW{7#dwJr#Wetj?e8RNDCRu(0{Kke6#tH@>mQl6aWodM|dHO%Z@&;EE6j zwrRdtj+?`KYz)_hcVEeO&GkIjkNkl(BAoewJ^1+J-}e;&ep->m4`1Iy1|z#Eoqr-p zNJ*`Ql}e*yI%*a_WuI;}Y){Xv!45T|8jH_~sBp}IzgKU1d|NbxT8F2XDPB#JWm z`HwYS&T`@la81p=IRU+B%4W8&2vXc;_BdkH+aDMi@^W3b>?rt+uMhSqtJjZsI-h?zOQrLpzaveMjvZx{gZMPu+?H} z!f68Edy(Cm;O$UCUXLKk5y?~W8^!K_{QNN|lYgaEO(4EX_irna1yJN^rnG;s0Raa> z04vbmj;2r5$AzdA(+7Ng`ayINXFGo#y1=};pm4+L)hgWab`fqdIKEBU!qx_Ajw2lJUFzLwE6D!~OmC5|t{g4kp=ZOl5}#bu z?$gGGk$2%TNLDf(WlnyWEKMKvwrQe-?pDzM%i9A$7#4i0S(4ocM%+0nv;-Pgueu_M zyr`Fgvs)LElC}#VXRC9-8sCXDYTu;Bx!0}o^pfhY!_NguL{SOId7b+}O+$wiA2w+pOSbV?qGT4~2IPDUT!3pOCt zUnmaU9fmYx?)lL_-0P(mMOQt##5Yd_@fVY(Ga2QTW8A0u%?}CN1&#Vl^l{q@oKqwj z(@iOg$u2FgUOiYmtZ6z)N_ zfct%w;~o>l4d_Y(-lg1T7^`4u^SO_&OZ?b&q;TUnSqqaCvxrXvq6&_BZ;(BJcK#`Q zi+Opq@$o>`bUl5H0N2{zFZwHY&aP;*09^Yptb?CRG@;{F+pI5uY+(l{VH4sXae0(! zol}b;eBYxm(Nxy`6+>QnK%GBf!C%Znl`G4)GI6%gYA@bARl4WJ`jXARV=gG#-DP8$ z{1!O;bg4K9c7mTU;EChkYk77aONQ1K?}^fx-I%rqAd57yiYIGTgA;m55TyTHY+uzk zJ4syzguyrSoKf6|{NLDEwnoW*O0&V!?ZDFtS@JWD$sy1o=Eewi<^q8Q{h`CaxEq89 zp%y4RgXVW|qQhbE?!)WY`*jSeYO?7~@FiW7by3zlHP>j-@451Q*Ht2R0G$W$30DZv zp}FYK>%8Z z3uvHXj*|7lQizroE9J3HWi{yrMgBz^NDn59BQq# zi6rGTmMploODYBgeKPk1=-8nP25T6JC6s@3WB>z=QLI;w zE~K<#y3oMXrn$*<{WGaNV37F#S0=;n3!@L(Pz!H|1ju*2`Y3tuL=QEP1f-E^Uk?BW zokh3Ryd(<1-Njj>CnqO~)QUeJ1&dC(i6)nx`Z8~$_b7@X*4#<*DecV_-Sp+L?}V40 z9pj~x?=it&W6EC+_7tk-xaNqak}+$hDugz#a?MH4$*|s;lLPEy`rJ-7Yil{G6uL0` z_^c~hgsFn?-`` zeRMfV3QNnW&`}p6YOX{N&Z(=ms*2zz+zZK?&fqMLXIJ}DCU7RPfDS+G%5=NVB$Ff~ zF&Eq9`TpY9Q2PgRb1YGefJsgFc4$`+y)MpK3IGP!9UdvqvvEwf`lg0_EU$bROMJK=dnb4K0nk z`>4Up=#5_XfP0is7p6}fbR)Hz1<(ym1)uG$2Pr4rPF$c7j`L`b@k0|zLeFOkM zxxvXKJ`rKr1$u3{&Rl~>*_k%KT;l)y8aMFgo(RdF_PQUww+1VkI!M?LOoRrAyqUEe zhFqNDvbw5?3@Z1n1HdF14S+~HrFBf{FCCZ-B;XHM;*2N|{TiJH!`|vP-*F@6oRjOt z+}uoC598~cyxB}u68Mbg#XCRhMer;55otUYAn!{+&7lwTAo9OCfLfN0$%7}~TG~06 zHC}nLr%O2VWUu>U-aiW>uqu`(Al`lORIO#(GlIzWRW^GpHFZ!Z%UTYq2fHn2G+JWn zz^C zM>xZ9;0<8IpHnMg4(O4Yo+szoq2+8IC_u+DWEe9mozza65Iao-p%Wj;euAIvoOdPx zSr2qt@2JvwHiA0nomp5j7fhDPZRK`7nG7*15|D;)Aw2_kIQ zLR#3MNP2^6gA9YbY6aR<*p%$3&|;csNVX{a^byb^w%{xjci&le{0LLH24}%3L>xHS zVUwT4359Q#$`}J?mt#V%ZOFPy{=gXx9+;EFJRxlXk_DeG0E3FEo@~!0{8C4hI+lvP<5f`%A!g^ zn;QsVb9v*G>N&~(U4%HQaUm#>7)`as)kA~!4N>-^#p{ZpN32XL>wclLMRYSHCW$DK z|j2brXYja zCqFv`3CV2dlweO`w2NsA`qTWdt-6&I`)AYli7&ox0dLKRPC9#-rE>4o<=$dEfQq=3 zMELhGhU!$Ygf)Y627TJ;i!5fd-kMj5F{vO~I)t2(UW~+UV9R6uiy9@DTI+~@_kkt& zG_f`mXBa85cT!yzBFj7jacMGdO)AT|oeW(b11-`1%}?0>dEOZb>>@g{6)i0Z5D~#u zc6}Y)g?hcFW;$40MU0UNHOpXC%c3Li5XPZ+9EqN+CX5&WUkRk0mK-N42 z4ul`+$;S;&Z2|k4IUH-w%zN;?cu8RSnBlRuQwEaTFWW&z)hKC4r_Vz^qhRx1_2dVs z-G$3n0u?~~8R8jR&(;oYYaR%Od`zr*vSKLXQDRQU3iMvbZr`+|1q(gfA}QEtQV56J znsvHd_q@2Ir8#LBg?z3MDDGMH zOUL!8yKq>Esm&*@Sa3zJ)?q>;2#jniz)ksdiD`kC;e4kX_hybBr7D>~O&Nm7?9b6X z1Cu*+7hN06=E-4N)%X03g;SbCt2X-eLvjxS^kW&L8N;bPXB&>ueA$*HHp~su z;t<%Yj?sZF;PUsR)}N%UiwB7WT?u?oglC8BsXzX8Fgnuzu9dK;G4CY)c+*U-)Ysd)xaq`b z*f^Gn2BwzgDH>pglJVMw)F#EdG|E~ zgEfY?`vt&<(}cdNt801`-k)ar@(yO%o!BIJ8z9!mn7vhPc{A+eJ|ttFnhxwX<^Xcd zA=|->pt_m8arEXJ`P>%ebPBaL4uxil{CTD{+c>0Lo7 ztv>nCFWFX4g~_M6X(<)?i8xH3qE}9h<0Xjst_Y9_;Md-}Ubl|Z+smY96a}R>P&N}= zoKcVz3qDH6uCQQsNh6b{k&8FV*V}*KnaqDz_}=Uf8M*5?!QeGKm-o2cJ6!dDj?sdN zlky~mbxY|Z>=1MWDA2|zT;6I5H@=9gJvrE(*%2Bq++|$QTNvZTqY6TmTk4kH-L&Bf zOe@cFW8nj-B?vnnhbu3CPeiQg1nju{>{X=;5K>CGlf;9l?TDZ^Nsvaj9D|4_@Vs_1GXH^Kk36gXvl+Q4YFxaQwml|#94 z)lqe!{ld)%R5Y%bMB5k6oNamciXrkV7po~`4DA=jIFMe0bG{ViMJ`4&MYcO`HsFf^ zW7PaExceY#CC&*sX}Gs1?iKC9w4URm_f(D>4)K6qi1hb-&G^T&bopS_@Zr-cE{FLM zkP6a*j(Utz$q0nRLFy(_VlJ}dSxQwCNJ@C6=x3l=FPL;~aB-OaYG>IHVDtJXM^u@eSoe@=mOGoT^A75;};`cl2iOqTh5iLUs76V7oS2ID=7Zyd* z%k`3rINk<$v791~35s%O=I3})q>u12bgH03(t>0J-t3F5+g7%m-t>^JKBM1|lUi6xf&#>z@|N9+tRwAenMb}rA zMF(mTb4txC%q(~0F9E1}O4G&Jwl?m|C}{LOh|$8SO+OT+Hht#HKzKO2#SGLeWS77G ztZPt(p)D(aQ&Upre@FTz3G`_bRaxLyZ6PN12RjD9n>-FDwkh!yG#anBapm%jzuA2J zqg3@-53%>}`w@53c8n$3lDLPDed4ex>DJ#I&W0AdLqBM)zQuiYEd>fK$4f>_QQz!e zA4GlYZmk1pnE{3r3uO@j6OIM3D|xo}aINVJpgW1S7n^9t^?A#Ih;%=_T946t>pTIT zEFZ>n;CHPy7v5QRphtKdSlGO7*G?-hNd9`FF{&IN^NdycE}11&IE{R$LaIW#`YcWpiolSpARs1DN*La0A}gP+=oJQ`S^k<+Aw^ZAE9=gRi(^~qztkWl3Fi}4xd{Jvqi+^aPWi0*vK2K5DUG4gS~g$sAT)sKX9QL^9 zS=eui@!ryavvunf5B@E|Pm|DQKQIIr^I>~9zFDL9vGB!G^Ftsc?tqZNxm`g#WVrEot&k@B06;HUy(TsW zOrp!n4P8avG0}Pz2sx#~a{npX2#0Gt)IPN9)44U_1-}LAKUIdtXgPa=)JODOK7?Nb3i;r!X;X2 zS(KFTcYZ!Nifb%P7#+x&XzkzOK?LcX{kxQukyD}3O+KFwo}7Tf z@}WJ(Org%ailLvc1-}uq4_Ml;oX6{J6Jp7JPd5#;G&}M4@&*-Yw)2wA8B=dg+?vRj zi9%%!Qb)hFHQ90I;mA7*no5=ykOFu2H$P#CzKyS9;mc{UDOyV+W}VNRpJe9a7{^YL zGtPLh-|EpcD-w2ps1{8Bz*KEl_Wp#=8N&@M?k-DY#anMH za37_C>R{xgjiBJ`M(xb$;wqlNmg6DLAOaRs(FBi~sD;jmj^A28A(;oUB3`0?WSR|| zO*f5nGY>Rhw63+tJEd2QqL%z@$QLyaPCIzEE8P8FS}dEd#hJBvhwJ@6w+)vFE0Fs+ zJfzeZb}`;v?XF&L5*J!j-Fm;QC+ss;Lo#{>8gMeXP_4q)B!PBzGXrufv$Db{&&LAJ z##RAmP3Ba}W#+hn2}4)jIMI>^Z+;ER>x`x*=1!KqN#gU47(mJuw1c-oqFr_ z$YhN)@V41|ni@i(jJyt)rK!nd@r=9hAH#e+2qLmG0o=d*fA7xZ%|PcX;0`W>3XEYw zV;E?d(PJu<{PU7h^F7baAIibo(#=PMt8LeXnF$5~H*KkhvPCm;#dHKQV{|Uh#{c4y z5}x>x^vm~YDs3u#${h*wy|*?>In5I_fqEHQ8hx=*xX-g#VHaUrG_+QHW=QmTz;AaN zd~nUzsavlIvSVa|lWCW;J}{WBw~Q`(T133~+1R|Rd~*Tv^kEOm0d{-)Yv z=F;141TrmDYaZ=nd=DO3)HL(Y4Ti>jH2-h^_UFzOz-K)TC%TAZCMoFetvvq{duPsB z$XU!;Dy}B&uCcdSbxn8{6>|ciqjiqQjNgG4V4c>D-c@c)SS^y$5Y1*-I$-d?dkXB=`U9E|dVTN4a z!&~AY1aBm4lQw%b4|kS*lrP&nPV`Mq3-Vss`JY`rl|Chyr8kQ?>uUzG3zUS%e zdVJXP^flSjP#}owj{M_nxzu!r!r-2_PzR=A|6{(=7k*!ou;hbJU8G8Yhs-7P3i%A& z%*3~1E7(n>xwH6TJ6PuI{Ggf5DXN{rN{(}&mmQJp)#DTACFpcDulYdT6vz!77+a*}bTgo>Nl4_Ln7Zq@Ou2%jh+ujW7LK zvWe2^?UXHRI!V}Qs1_~nvCS{CIcGWU(PmqQx#Ha5?WZ3la6i^R%A_+F0eEpm0b+Tc zu&3@*zd2#YQ3}X*<|YX7Wr7y5DUvQXwt!rl3|BzIx|-rt!r&-HCB;v`FmT$AOLAW2 z1N>TkYj1q(Etu{ZFB*t|^~>j#?vVbcr!bv^sB-}`1Te6;pu-w#lk$JFUg zxKSh*vGq_4rDP5j(U5WrIrVRuiqGAf+%#R5$)7j7{3*{#35w*@p9~$(AMxiFO1KK7 zTjz2)7h9)ifHl8vEpY|-U2PSolX>y`%a?r>f)n{R$k{hYG?-$fdd0$wX>EXG+~Z91 zWWI`JC521o4b7uxB<2o}|1-G!IfoW0m6jlRElOAas+sTS#O}9PI5=72Q^WjMs~+#C z)l{h1UuBPmDz%b$N(uhV{erTtS75F<0MNlHYKA437>CnibSi4C_NY8O-t`;zkR7j| zzR|?5iuub9+=Z%a+J>c0O%gQFsjFum{sQhNAK5uu(eR%1TFFT6F>v%_6dg zyLbNi2$&N%-*pE3%ibxw_-t63v&z5jAPi*U?h9qJg4My*%~F|C$&7FH(3i4K>=9R1 zuKsYcv~`K93i@q3lT<^>=OVlK4I0B<{{J*m zVaKMs>jMqaRT|EO;Bipf%h8CFwvDH&YUV@(zigDs{<6*!mF@$kbyapgQ&VP-(XOi` z3)LOC7VjI-2dPZ~>pBPv7$))rdW^&8)yITWZb>|Kw)k#;)i%ePrm`x$*61_tOL$3( zzg+Fbf6C# z*xSK96`*d3kx1MZ*}`|9ef@fZgt7qs`+Eo*EXMdudRxmUCShj6 zF50^GG~#v%J<%@CFiy15>YKsYXqCf>kCVm;v4s;?uW^AZ{M)vz?Qv$wUS9Av^@q^Q z+vmR*W{Z>(I|%E$40=-}#dte9VUXxNxoR+!3v|50p>=m&7W*cLeB*~Bf#yy`zf-it z3&)wCMQ&A3zkdK#9pOt3f|s!EU143*EZ$S1XSO#6GY;R+uSDU0Zpx zKa%mRzcxyE?q24a_83ro-vo@V?X>8ZtGx1bP_6@yx_H={y z_Ls*%ey~Yb=x^L=cbu6AiYRsGigJ1HunQ0QY8SGcaU8?P@%r8BJatBs&^MY#tYZN} z8GAgId+zY1Qs86C6k8CzX(X%h)g8>VHD+ik26YP?HT7to7&E9U;)|8ib3^f-yKyOg zP=b%*yH7qirZ%Hkubuq4NysS6n%K3K_FSt+ZO9X9gy!E7l-CzU%0~e|*pG$Gbs&3@ z3I6`2VT6*HEy>Q|p!5tg^pPPH%V)<|1*{&7j|cchG!7~F|6EL$$j{|(UIW4JCl3uf zE0$v1Qf$gInNB|R5{&!ql*r*?>MTMjeiInK4l|jeO>Kn4x_LwM`|8UkSG`>K{gMMS zv0<~iNm5mHZ^v^fSKI1h0!}?N{Pv!BmTQ)a&VMf`S@=m=J`>bS-;3A4P~0Q8hknF{CL$&G(fz@k32@RX==EJOBOx&U7)Jj{WPhh>UT? zRr3uijk36Fx_`j(W8nFe+Y8Ut@E+*^U^JAQNGD2Zb0h8e#ny z)Hr|k=r>+ShCas+=(^$x8eO$%ASKS;@LCid0Q^WH0bV}O1esjIv9EU1wI-J?Ny|+@ zeBmhuXL$3N>e#_(wHa@mn?o!8(jlz`C3S7MTI-aJe?OtsxSE7>rjPr80%io1EI;Rn zxC(g^WcVu7Q!C?k8;(tLFwkn14{rP@9exGlyq z#(ttid?ioqhNz&Tx)x@(Ht>r7Hb?&YqqN7T#_ZCQfz{4Y>I3^n(`Tn{X_^FMDwca5 z+K!eHEPK~Y+07^oJ%^QgG>$6>EhZYuUYbhe{Ex02{KLdJHcCLEuEMMA)JN-`HAZn=_4Ni#oUhXk8;o1jL#?J5Kft5w(;_Sn*8_86_SRT*_JV(#{fd){6yj^ zr9;S|CK<0M}T^57}by7JU(3;7PycAwS*jI$eE zZI#<=Y*I*aF|@Z>m`FQaElMqBC5y7DKaVkkaCQihPi~@~j2|fwfag2^gErbWBA&7& zf4$TJIykEBU z#qrVlS37@kr;jAkt61fUN}h7P@H(AC6qiym1X&81 zq`cXm_VlefJ3W%rWCZI42rhw%JAx+J*JcFioQd=b!HoB#(|+(4do?e~mTF8W8Lq7h z+xCpk`_slF-escNiFU_f-`l>vCRR}4qu{vYOY@>L0Z!2(Dkd#uR*)2mM!s888Awlz z?T?~CvO}f*%?0xw2nVBE%){mSA6}L{ zfY{1&^zqB~zZQh8ZVwNQ%2{B(1v%trDH*%G9J1)T?~6Ch=!j4H-&GPgEsJ{5IR=jW>m-P&ZT!DMM z@U2TPhtGO^Pq(|oE-8hdY~#M_JUVa8Z(87RKWeI~|Hv#C!h_z+Q~Y8zC4COk(Amqt z6Q@OrrlQ4AnTVBd^I1Z;$XEurvcA0KNWXw0~fM#WC_(7#mZv%9@8e9AVl5Rq)8-uMs&|nx##Ym*V)CN-qw3;7VC^oWsHpo^5$ipAZGe;SNftz;{#~GVjkh*-jzGL^!)Wh1xmk<2HhRLW(P~mRVf*9#+!B?^e_Z8}^20~i4R zs6sv-Ze2%UXLI)-xioMDAaTHPMX#2adO*6EAXM9bzbc$f5WjeGc8G18meEI0i2_(&elrp(s<8jZ(+}M84`+ z8iU_aqP|r2jI;6}=3TxcsA%wQC6ieotc_>oabotXE`mp`3V~Q$nK{Ps`o6;frj+-G zC96G3(={IXR9mc(wXJmzBn2t$AgIk0&Na=u*!9K~JtdYiJaWNIzV#tCx)z;HDCnVI zKhwinSna4v$pIJ_@eW0E&tc!bS*cJjhdw*K5^@NVo((QeiNg0Dk2q)E9%h1)yaa>( zydZ-#4a-xHZtN^MYSQ3HOcv>xvXw7g`b7bK}u%g-EN*!(V=Tk0Xyd=P(lptMg zQ|(c~@cc$e8#zN~o*OHBOwmZC_jCX9bxo}Wpt%|EJvE)sIx)gB2`HB7TINjxK4~Mm zP{hU~N^v<3H7zuvD5%N0MwXIY{aD>pp~`D4Dl76F`gg;*@=;V{&9D?Nq4-uODk(kZ zggb~$54Tf!=HBB1k39U+GXS?o6jfUJ6kg-yLf1CZ%m)gmSH+CXs4c4){C?LVQnWon zdPniKr%IBJ^B+D2&1;|xIn&kh@>BWyCzP8gf`9JD$67G@F z{q=@hTPuD~1z2qc!ANb+l{I`?Hi*Es+?2O5L`zbpRY6H|FxN*d%hzf|T+WZl`!sRl zsUx_Z*Kpt@?n6S`Pol-p6$hCCtpM_iM6ZJ>hxo}nv!vcFgo%4pL$Ur+RO_UCqL+~M zuUK6_7)}C%Y&@^_cU7qTAd=3 zV5Q7}?Ux?{MtFpHd2H;YYjB@KJ~~UPp0lzyYDprozVk~^7l;Uz;v49s?si7+a63KC z$nF&O!65Ca*M-WqUNl2CpLvWQQ<899Zrg!ka0%LbXzf>KNNIN~liCLwtkBuh5fv2# zY<5*8^53l^Ml*}|s27kR8U!5(n&7qWkE0{qu524HAima01a?SNEoKdRf`y1+j{J7$ zU(-_wqDy0mW&>0lrq*;wXxIC}Xr_v}|~Quc-&-g0j%*m@dDeuSAa!yFOsENB4Y?=4s-E;AY{ z_FZ5xvXR;>sM1WG$m#Fe2UBrYaX(6_ZJjh|wqu2gOmZd+#=bro&=+d{4EZEN<*}_q4j~ks2E@v}l z7rWn0KRu=v{Cpn3qz(vTud+^z_4D|4DQ>??bV|iq61-X*Zi7Fj?6mdYf+hofmin(M zRWFZH7#kW7=!h=oooAZz%a?}ft@VcmNAxoCUJMJZAoa2<)kV^E$73XWc(9LO@DCog zScQ6Rp5mIG+&8M`@2Aw7^Mpa8@qZsKz%`yr3Glr#Bia7zA@jENhyaa>aI&jBPL?W0 z3H8*>#y+ZCVzkV4V`_->V_~I>0hqgPH`ZDR{9T3Z1?$>Onoe!=qOHt=mRvcE<9H+VmdBvC8 z*d+dz-yh^M%upYBv`fU`+djr4E%&Y z&G_)&g*YkF*onx($+5aC>~5)W2$Kq?S#j82&JZ9@yTG);T~>b~)WXMMu<#fjR9m846#yV>`JebraLpzK{83I@#S{IDjN{^1Kk@tt0- zecHM`xb*4~v2$*ulKzt`9D@4vjmSs2HcvmOG+l+>u?e!I8wspzU{xh3qLU3{IhS%Ps9* zs%TTR4*Cb}t3}xqIOFkMsHQPyrY|z^Egg>A{L$vyw^#Ge%50Sj$40JIgq)tkpM}mc zJ3z3F(yEn~i3VPQ65Y3+%N;C;t|+@SBJYFK2Z$+R!P9=Ygz8i=!DF~qhqIs8K^f%g zwe>JP(+L@Jg_~c8#!+NG%8es4nrA%BiMkEVYJTO4@hEL$S=^pxwhxg|5)oPEidajF z*jVBgJ?9V84bw3+YN2K!r2ba6Y$w|k`fjy7r}`9f-%#d@-rez>b! z(>n=o$D_F%^~Bx_Z?*6Z|3+mA6zX}ec>ZDyT^2o17~lP8UiuqHod73_6E*LjY2)m4BS?D#au^oJw9@-=$y^GU#}|RBdR*a5pM^)vx;0e! zD7mPes8Xc!_a(*Pu_(3W`1k_@LK*9bNQNHT3bYb-E+z+j-UB#SLMLALH{5VTrx^D2 zvz_$QfnE&1~^i?g`p6R9jRho^P6Qyjd9B4Y%K-*I=d-#NfvFn zG^h$v)cFlfRfXwliTmnKf12^+IWhO-{Qm&r^D)113Vl?UQWZH*U}RK?Q;jmLD~SZr zCDyb7LXRM{pQ^EMoYCkn#lwPYbmUfS)ZD7u30J~&nliR1Wm+GHC?IX?vy$*mq-lxV z_g9UUdNR|Mbsk$%cPIN}LJ=v2`0U2}^$Tg44_?)OeEEE;*c z7f{sZG*4H%>isbp{p%9av!9%jB*smm*h)Gcqud|OZ(y@|SN4zrLHQQ!avh*`MtH6k zFM+~4&KzD;P}zERI(_B|mmjYLBxFI8fB}*BpO>#4yBXM7GwnI2g+?~)7g_)XH^VIsDothBO z0;xTvZ7)r>ILn*i8QMrR&$v8W&s zcnU77JUpSZFQGR+9r(o`lyOsIE)8AF=LAtsB(7XZ-UqX*rUT;)EJvL%g&NBFwsl$z z)nJ7{%kU5Gxc&1HP*Ee1u7nPV5i`D>E`QLXR{3xwA||ijo~zYPNjOlnoo)BylHa6t zmg%Q^0*PbPEqt~*-(7SAJ(Y&wqDb; zs0;Z=@4>(NRlFH;u)2O%pVU3Z75=UDXLyB8(?NT-SO3V$vNIGcxCr4j=wdGJNb0iQ zZf~F=3cONVc>pTA@MrFLYbc7^{zNnB(_}^1eAWlS?cQp>#U?zb-vv;c|MOjTYXiLL z*d@*h&-3^6pO#b<=LMVtX(IFdaRxC@Afh2qV;+CY@3lM}`6%RgwiYu~sH$V&@V#hb z#q@7JpL9TSTw2OWr@@vVzGDxTdOV%r!euLCs}Rbyrbx+cHneqEYa>g89iv$II;?Y| zZMW{Kmpuc{gKl#s`sQtu)q(QG&WX+d2$_niB(R6HgQlv*^-agpu#^!fiTAGdc$Ekw zemx${H!|vkRvi@iBFr31a2TbH)EhrP&Z9_ov$#BGXyK0U3O_-Bl>Zy?fTb|&JU z6?$2rCo-=ZOshAq6-XN*L?ntYx`ksjnUEz0U_YhwXVBKzB{0}VIEgWEG>~E) znn`=eoNwE#BR#QJ`-yiw??GW;v<=qD$*!wI57T|z3>M%X)$Sr}UT z79reOz6V)m5~W|JaHqF9CEo5&<*&<3F>MrUN{#<4^>7NNM7^cR_?zmoYK)U-k!lf2 zTq}A&I9BjSOZ+DA0uS!(Ds}%rKEoK!u?n^ghnrt`Uc8Nn%0+4}+>9*p26NPwW?Tn< z*!yA#V7Ts?&gWCd%7?05HAEZm`4T&sC9NZ)2!!k*XkS@g%Z=Q7>*&z_ zM9|-Ene1klBql3zEAAtpl@eWa3dlom_qo%i$sQy#+hCLD3chble6f4&WE-J;1PsVT zW~qK1SZ0(_eNf_JCaP_x_sp`^!S3!U%KzUN{f$$Sy`^%n-Yfa&D*%Q5`%GNuE-A&s zYn6IAyp%)M^AfYhS(9H=WNF(cqe{#SKn8l9KWISyDZ>?bw;X4ciflc^cdW=t^T5@{b)aIFaw)Bz4U{nEWtV43>mJMQo=O{v-u?zg)6 zrGIg(M5B&oE4ynhYWaenSx6Z!RI+ui6Tk^=h_Wx|f#5$m)aBBp);CdX4J%EN6~TN2 z$i^&#hW@C$RQq6h9FCV3H9iZ`3aKJ+mDG{%WBWC~-iHQ;qsIMbhp;;X8abjVwS@KV z0jcpDfN;oD=4(Y3Q(9Zr&!PGl=e17zP|JFugq5dzdO_t~BB7gbuEO}tTx?>cEyutr zzvQDkjN3ukoSt^lo)<1iT~L;jzTah-P5tPLjv>_;m{t~nmOhNY-m9tW;ai&BTrI;5 zzzozyP<20>dUKV&U|$zUof=2XNtYzw9o)A!b)Fk#|GaNDlsNJJIh+0Yt~~y~N>nkU zqrncFUQKc|D^tBuXusA?SKf}cGuAx)~~ z#c5#KNkS|%PvR&TdpgN_a|40*lzc6VqmaK?+f1Jf2e#)b!d))gdscpQvg#GF5 z47RRu!i@|IAPGo!kRlSR1 zeQKvrx0hker~a^o&bY9Z&cEc=p=!AKr0!&*E_{N&C6fe~7d`Vp$B=*R$5&UX*>*d^Y`koLGEDS7I3!hEc6ese1QT|8e`l?>a zxKeoRYD}hG923XV)|bvNwD)2qwuN{@N)Mk;MmH*=USyI7@5o<8#z&Qxxk6<#wCEj7 zknsg0+;DnV3hN|3nbz$?rlkn4Bfz@kGGeumy@BU%hDr8dIGN|<$H}69M&BM_TeRxef96Oj$r4_FcZ&eVRcJNx12hjj`vJ)0mG=p9z%Oz&A z7vO0g5cZ<~NlpQSqzU@xt65{AVe-SYZrGKVo8lXj+kxe@`O~~TB2FG>HTyXugf$Y> zLiWbuM->WOA5*e9=@K*Wg6%a?u=kdWftC-6RoY0xn|30zH*kY=%7Zf8SqQ&8IQz0{ zOdnd0Cs!{NsUPzJsd?`k`B}$Pny#6^riWss@aqY=~N} zbyPjCG< zTn<>v2>+|WIFFRaYDAkN?n+vjtfZJLW1+7Xf)4Qeo(=1vD8^r|`W+@xQr5Jd6Y4uo z2RQC?${c`JjjH@PQ6r2Q=QXB5h1plh0_P^_OSTg-@2Q$)*VbHi(cV@%KvhOzoiRKK|mOlNLvcr@s3;kFr0tDy}no+S=}|sdulaXT4`IG zpW+H{Df4@lO>OxXYsTr|mz@Fi!|1a7f~*JUPhf%wJb{U=!hVT=0YQ~?&p+rr+0Jhr z%5V`Q%2mpOe=CD6I8etZij*W|Z$NC6NhtEP8X@c^?hZN}w9c5EUL*=jB~~QS{SnM! z+p;$9T$XO7Q?q2JWbV*WTUh|K1+SzCZbt|{&T1jwcUalasIF|xyF74*Kzp>?s2ywt z;Rjqd`>NSjtOAm=w;FWaokGlfvg|r4qD`VL=B_jKrI`PJJOpF#Yft+rDV6dE1y}xO z6D|BD^So7XT2#K5f7AiI_I6`JgxTS;PMwGmJK>VQ>eb5m&kpWU>R<;Hlq8mb+eD%d z*c}*2SceSh5py~vo6HMIB)l77Gc56i<1ll&Q~XzoSbL`L3f9vQr<~+cl6CXiVPf1Z zW_IZ_&rXd3Q9%gIn)#V-Db2Y^4~US>mY8|k7D zk&*n}Dt*}3Oi#c8n)HA;L;=O2L(bm4f5o8``sba}uN@ndDCfZrKjohcY&7rMncHj5 zrc`@t_t%+<8K|S5L52Vg`%tnej4b_e1ZIpj?vc0zRAgq{GNXz)md8(I#e-*qB?1%s zdxYEv1Rdh&ielld#}D^}<*d>3Jdu16@nT;`36#_)xFYE~kuKgvT`eRDk9=r-lYH%4 z8_N8IcFiT)(l5Ww!|&fQVO5@vNT_{~^cy=oy#)f$iT>M3f%6OXUk`Xx8%FCMC8!BIv#9KbR1!)H4ld*kyralI_ah{{+*KaY`l}F!=27ZecmPZm> zO(e1;iMGb--s6C%Z=p7|AG9`Y_*KWOaIe2`M|2kglK;ABn%G1tAQ?aBDZIgB*Qq~W zP}!2{hh=0BLd@>3P2^N@2MuCDIjgY`q;?;Uz`&kno6nhZG0J1mE`s%oD&@_m$C*7# zEB|j83Q+)IDCG27*}odJQ#6cCc_c~>X&)1~DNTj+mEjAZ?Kd%zBWY;E&Ga9NKJH_v z2DVb!cHS%cvfHE=!`vQ@NZd!T8{2+bS^F|ggGLwuEgn(M)53xk);@*9>^jCbSJ+O* zF2cxio7wcbE6r06IzMAAO?fw3>rB*;+mVP8L0m?3w2*VMtP1x&G~~TkC){4+~9ZSTYCvgC-QJM6wJnPL6NymfM-V2Y* zFIFa3Bj3pgAYTbNf9SAAm$^mD2WJAdsjt^yc%*?QVHYYnkjT0Ca+vO;;Tgz6@Y#gz z7yPdoh1JLHEQ|cRoZd@$eSwY}HAhoSGb;}#mQq&k5{=@)5(!nfBSxre1s&)&nw`;U zSgR>v7VgMS-t9;sp?AV{H-b1M*0U#p+N}ut?MtVLZS+Das+)alY5x;SF=WMD^fySa z&Tt77mkfutU;kNKLZZ!jTImg6fhA=jr&OBv`YMq3+BriA1c)&HV6mA)FO5 zD?LSK-2s3ypb2)~-(V`H>~}sfB9=t2UlFF7s6jtOldGYe8Wkr&Gd4}F6@EDhfVtk5 zy+CanXG)VKijKlGB&m$IO=?Ue?cce{Y}X%Q^?~&KbV!21>5#yDQqBb_{{d>CaP|Cc z$hE$ssb2JnF%&)ATer;{i>%R3xYd_`ErR-Pb#;inUHn zd&?9HU;iyNx%nGBiEmKjbug4|(Y4e_^*DPGZqpC>J|Z~7%Ke>+bJ!kb3}eq%*@=@M z+;&mbXhlA>H&@@}JKK%M;C4E{Bv~Shg5tI^J&z`2-%6AeIXI zYX9p;K8Gzf1?4Z?^J}H12&BXz2(NX{uVs8kU;PZ}ebCBePLB-93Xtn=nZ&#hq^OfT z_(qtWTTt~RstywHu|x#RXhOB`0MuHZ?0u=DHjAr@Qtv0yX;^X^2eW~4-b*Xn%BY~g zjXb?{KBu521nG7Uk9XDsU$fZNuIjiEF^3P1pryl?A>C5xBzOGP`)+AS2SxpG2Tj*M zf(*r46(sAJ36B^u8=V*&(&zs!l{jE|Q=H=*HCB>;J`kXbF~yOI=LpG)5}B3xWh1|t zsfy_+eH|s=Z-uFf$NdJySamSYAIXONz^XlbAZjKbal)Q=f-_|9Evw(R@(bcZ&zssq zT&*0+f;y9`*>+aYYVi0r${UN)N4dvI(0PRj-%POfL95Tc*RwnA@9df+=|S2jsl8hZ z9W^9vT8C(&dgWfx)nz_bJ*=Us+KY;Zl`cO^jqD1~bHl{N7f+z(MCQ-t-|Yl;>v^Qykx5kYV3Ru<-j{I3)dTtZ10A842+LAQqj{I*uL58vvgZ>kKx^ z^Tk3tz`F%s^I%c(3|n-ubBaqwIFlE3vZU27qn@kk8=v{`FhQ(iWnN!{^3C`Gmcjj8 zS_N+vqC9Q5BQqP@vfCfhZj&jKZEgAe#$m({=&H=_U$XASx z&3%RR1>+@ht(97_6^8;6yVQVRUApK{!9CYCBddu}rw?dFuKxg%AuckADX0qI`L;IRQFoEc(n3g zMdLXJ^)pk3R!;3W{7cu_Cr?%CtuLSC9@+%crC6TQJuj?9FE4?W^;C}$O#^afBMG#5 zX+DQbOQ%O0={~!;D778{O!nSTco`j48LXR0OuF`H4VjsZ^*!V_`Z)dbeXIl~Y+M^V zh-7bi(2qrW##&_P*3fP0Ad7@K7PsOzx9+qHy|y!KLV9)G&RqMtQ6m~W3sv)@+x$J9 zjJV87sO`VTR(ct6iVhQSDOQ36tt7YWCrO6Ov2daUF=dVPIcB@x?2{a6@Oe4Xh30>j zH9(m{d{K^=PLP1e-?9pL*W^H6zT=?OruEH|1P~1gWvxEmd(u8ReIoboiVYrWC#g=| zmR`u7iGV6Q_;x9pgrFe2qIVUw|Ni%3y9pn3FA$ zL+Z2bND?MYQ)TzD$|Q?u$}8FsO48quq1RndcKY1CpkMuGUZUHyg2V3JxOAP6}L3%Zw&i(_vEl@S&d|?0Aoz8=g4}9_{?3R1ASWfqoD)YU&M0{sxOCx z?Ne!oZ3*Yl+jQXylyng$Z=uuNU$Q)A)~^Obs~%=NYbQf(CrkOMyA!YK)eMfMZ}?Ww z1r4#+o(DxBF=m-L(tA59@;_oC<0WKX)ZIRout4KrMzal&v$ZHjN6NX7Chj9SqZ(=g4<8Jz3mtA;c>Yq)W>#tb9a}O;@WJg%>A07Y1j!pa1e(mRZ{tl@f(1!( z5PwrCfwYhHETQ|b|AV48`CNyO&CpZy70IQQ1zroyoSpN*_0Iv?zZ>=k-j0;~SK0i3 zu|Ol_LQDuf@}BH*Uab7=!aL{SWBG%_50q=umvISHK@l@qBG?bF2{x14OtGsKZa{t; zBqbL1{`(%R82(_1)X`P`E@F(qBaYJC;%j|6n%-4^N(w*^6qlOm68v5b>B{fWFnXG1 zJRA=y&7TaL19~!3Ezuu}6N$=|Cwmi$*T}ayEL&ounk+z_cdy%^-GIzF*SE1Pz3c#e zZBfJluZO$w#@*RCNKOI>iR@6MW`D{4hZ+>zsRLFbDdJ+mSDW$&y@LyitoJ-xAJn?J zTT=D!$RC!-zj_|i9HO{PXCGZ6HwIZX{&qaTCis%u(zz4qVLtN86^dxD6&Qt+5(sB; zj3@~>BZNzM=H9BdC#(i&F4zUs&wyRnZf^YDyslv_Ly3mrI&;$%H$mCZO!f8~Yqyx$ zWzXAuXsg4!f`yh?pz4yaHIuOPQ>iWs7MtW@U&{5N=}O`G-HD}N0o6|Wm74fJnQwrh zeicXN(4P&T``P^F6={ATG933Fyk*sTrLcYBO7>`H&i zp9hP>5OUn_$%UzoYJ*WYo1ac^3TKPG6ht)0JXzW=z|z}#?&Xzv$a-uIwB(Q58W0`i z!MTR7d=qiXN+LuzMJ4ISm5aRArGBlXQpIOF&acJN?6rFM)SUDPLesF0qc3;5kfD{v zG#~ADEY_uzCL<4ne`UaIrWzHJGH&CaxAhX#(D6|Fu>UdRfR5)rjP?y&8OQ3z7i%U@ z*B<{TWp)c048aVuu=m%t{PP|SzYqoQ1D7Z-4O;ye>re5QfX`sas0Se8Gw-RSdn|vv z7kDM(FnDiJ<9z^?rpowIPGPW#JKRu-^R#4=Wip*^Q<&B`&!IVet5dNkh8|JSYUE#7 z`LdUvBg7hEITyAY=03i@%pE};45!$E0(numZLOt7>g8M5=8A$lM8Uqb)(`!$63nNzmMG=4YuCg2%CjK#J$wB;> z0Xk&%aLA_}@ufCY9n6acmKP~$YgS;UZvK?5#Vq)zdM*c%pw3VY5eE^0O)C@c_YlYkc z437a2&C5soIoC_+w(SZb5vRDfM%u0m;6O{L;0!Omj4Z(_W}0YWn@!REN~ykK)8@%; zbBWCb!jS1is*&4Pz!ESbrI3HEqaY$W$~Tp=>#Re?r4}!Z9ZL zb`4@MrjtNdjoDb=_TTY1miD<49c#>;az#_Z8&;n`na8pubH?e#Uvt0N5YmjaMG=t8 zTW@8jJWcjFXhaZz_woTCkx%c3+4}&X?A#c^11yrsfebX7f>;!u_8rD;l!@nhd?t~$ z%-?6W+6}E=40-NQ$DoZ{`RdmXXSP0Tue52~&nqzi5{N8mX!;h? z2;Y{X38FuScP#0w8qxb%tL0`@wLN-pMkGmui& z1)CsT2AaoE!k(7GPZ~c9%*)&0kytHt#N+doz`O!sv?j87bS~lIayHG#X_LR0I|a%K zk;z)KuSx4X_dlstDQKnbtwUw!+Qb*mzD7aCL>Y+m9i-shYC=)J%y{^SBZV|+j%>Q} zqp94)Z_a>4czvJgSWgvtSm&SP&hzXK=%;0bvfB8XPng2BoBCc|k12n4N3GVmfu)I6 zCLV}oyp;w>iO_!9!5`IHN4%2JuFZ@{(3DwmL!Vk8(fH%a9U6v~P;?nBa@xmnqq4MNGaXv7yAeRAj9 ziaY7KzjLPwR8huTmKXe!^8m?lQNdEdtY$YJv6!vJh#3-BDleW1OTqZlND5YLG9tPTFG+nJJ}466Vu@rcrZlXVS+C*}3f;4@}tXn_oTa{_K!mob=2*AmljJ8ars=CA!L` z1Fx8ce{MAtD5Nh0{|gs3%8zh-2Xo%$&FWR|mh&zS3~PJeJz3KC+FJTzKZ`X>5}<=* za`m@E0PLZK>6!W$?qU2D;2zRf9rUC5XJ;)r4{3+Av6C8@@2F<>wydTBqs)b`t^x!0 zW9A8JkT{A_4Wjt?w~pT(^c$3c)dA0&#T3R+c~mJ#pvhSfD_(LGecDs=Q|L?pIf) z=bV-EG4B8`E>qJ;T2US8zX3F~OOPQ#@2NS{r9Sy6jn>-{Y#Z!mY?3q4R;T16tc>52 zid9zIQD{=ImsO&6QaRMuMy*Cf55Bn{u3wkaMCsW9#&paY%~oic*)Zl93>wD6KmHXX z41c$kQVk8Tdw1mb+ATP~YowJG7ThHA9=skZtkCajvasVI&h8!)0l$@F&k;nM1FP}Q9EfB*`X0$W@3TK1NI&HZzSE>t zMx{mO9*{X3rHh;rV*JW4I%Ehh-b0~jxf%74*cePe>GIoFd%C3 z+8nj-cTa3we{`p?g1-HIS8yINfk_tOxSAKn>Kaj?u|9G2tgPGGlsJj0lOb{_lfAKk zRo<8tC+v1pL2&|iLNUEs^%iUQI~YbsVlFOl9rO_5pW*~(|85$+9~di{{H={%l3CnI zD!E#P`OPm}MIfeb_}wqWgVbvHz7JAl|1-J%ydi&Kt4WJOu}&1j=k(>Lun;Pwgs_+wir(<(IB86NWt zr-%nwV}sl1=Q@xEwYM)^daKpW1+Vf}wyCdnVZz zj-$Ob%6T$k&`%N+XLH#4_r51Op7NA<{<(iM4pEsU`4z1*rgM5PygACSJtrc{;*hAH z-D>3ounC__HD5=(>(E~3O6Q6ceROQLT1kUNW24<==6;y8f?u96w4!nVcqSkxS_Lm{ z6Rx4MX~M>WFJHxF_HxE5y{igYAzFMC@hT+9bg`+}B~SKlPTebQP#Fk)CSsZKd~$Z; zx&P1Of`H%`7h>>C{QYJ2uF}7Iug99!ya8D?Lavm4tv7=zpbYp$j@t@Sd_4n-0d)w! zZq*pLN15}+<&gFj(YG=-*;mM-vRsYX9Y*hg$FrF$^gK2djjU=v;ZE&<^sohoB|S+^ zbvayav`jHuQ9zo8cZhMRhx0RVP}V4+TnZOVnxQ?Tl#Jn9orD73fD%xKeIY=BX-`D7 zTWOsvcLC!Qb%bFgR%*bFgG9NG2R(9>?ge#xLZ1Qp;rZmG#`DX+Ka8D7iY&nLCc!s< zsag2FU?vH=YwrRs)NVCX<{(afDax*lYbJ%Y2lq{6ox*ayKV?O=@ zz5dM)HwVbY2`{7k3mS>gf75{cd(XwI(>_g+&ws2{JB|18=cUGwjUFa-0)*aYgxb$} z?y0%g$_P=k1{P^};Z;5K+63QO{vU<%yng+ChW1zKxhAgRzoU5B;T+5;A$^Bk`GGr; zx)M7M*AZCi`#mw_~CH!QNxW-xt6 z&|eQ$9DVemVV-3=ovtWCs=3#(ItT|%siC4j-0XvvZhi>U!KJ}Ir*us4ww|?b9E~T8 zRvq}!GC8k!K(WZW&7{~R%EDYH(8=D-|AixD`i`ymIg&5r3|+kC<9yGYe_y;gI=JI) zoY!G|}0|LwG?4Qs9L~HQ)>wdw%TiF)c=X?)|6&v~<%ZVTp_g0Of zQHbu$)o8-)7iCtKEOfb1x_sWk{)Ho8(&p2}KN6-hG8BYE4>L8Ph=NAAJJ3d#>Z@mQ zg{k7peG=P5UUH=p_DiO%RX?24WgL|=ka^T63wI!8IhkPUR*XZe13yg1)OzHe=FmaR zQ>qyEW-6zA8q=Wz*SFskPccbOx~~YyDE5I5>poP&*a8X23x#Hn!yH2w@5oLj8l~pX zJ7Mm%ZeU;zJt4g5h<}w0;NFpCk`l+u8X%*hj9_{20%SA5K5lPWq&ghZCc_`M2P=vp zt1a1iw(E69&fR=^YB}G(%Fghp-a7?6Z+scuH>$EqvCPSl}G*u(Q)mjmm?b&SPWy+^cIXmP4q$R71uKe2A(N zvsJ3llHZM#Mh1VoRt}uCgu0!DB^63Ec~q^$=H8l}ujc`b6HOasLL}gIcF-cJUU&3k zBM_Y-@L5_vQ3cU|1!XXsaKehcd4I*1>Jm3ejDtB)yhMj_k9>8_C*bo>*p{JrPrxx3 zAOE%34FDE|;jWLVrT{II$f7$68aE`mv7-YBCB3)0$lP#Nw{`uVQx-x1ZiQm#9ALW32 zD0?eZKTh!$VxqTlF-^2HS!kXM4P_nS^!fY4qXHZ71_Hs(q(o(M+a5XIE|2#pInZR( ze*OQirkO4wBW0+NsG) za2!%1^^x}8t7||n@&@d1MyWzdEZT2TkAgo(Ic?PKpFVRdxBV13-jTbxggPwMtQR|+ zVcl8*QUq26!3rkfHHvd$WzFw-U4}ysR@9<%LHimBZ=N;IlJffGb{T5t(y=V)J;;uzQ0{AY&2BJ;oPF(M*YA&f$l6y zSOf?2c#_8y@{C-y1c$Z$OA;meKM>+oxYThIyY)>$SiW9IFY7{wSZ>*aR56EHdgOQQ z!n6$v2GXxtg5YvMdPM1Yx*Es}_Xajtqmfik;W7pYN>Yr#0N!N(zAs2!Ls2#3gl*0? z2yHZrjFGj}R90R^@l9zLo3SCqQUb)OakT^jU&TBD8}H0t%}cboKOcsV!*%B7J2!8L z7TgPSGWFjWpYazX5DD|7sI%FV0Dj=6Y@E?Nwc*=>(_T(;g{q=n4ui#m)gyw=pQfdi zo6Qb0i}<#-bk=O({o9J9-<{+D?G_9v388v0tjqwfN|l!B>gBK8$Ha4xoQHLI7f_(Tb;G5%wCfOgR23+D3P!^=GlI( zBs#Yf=Z!M)*M;Sk<)?DZvd-&Z^7fOu=d>NmsyzrI+1l3+8&t`9#FDs_Yvvwp#qP-8 z_nWx!A}j=6({ePym_7klKjqdYC~P&F^GS->ZETlQE0vown z+#&>ugo*R_OvfL>J31sjS_q>JN!)iFmWVl_>3V(J3lJV-=Qc*a{#nw$g{9i#zztM+ zHlyDmvt<~zGWe6a>8xsoX~NHENl|rB{LPLx#Wd&OuU@u;l}Xl|rsJyX~f4pGe3%Q5$}k zW}DVWOVI#2IH<^kn0>~JAeFf;p015=|Jf_PsxO!M*_tK=Rw~{NYMtX(Y&9P>y zzSfJ7H*xGt{P8PyFKj5Py~DG$CaeJ(Y#J*2qwgHEqkg1dccZptxhs>v%`Y3*yASi3B(E&6(gT^}ka^`Cpe{Oigz%EKT=<``{)8!VLEtMADC8 z51U4ysV$#Rz)(=4j3rigqUxY1?f`66wLF9jZz7J{kr70w!^{(DKHnm`l+UD^suVAU z3i~<`FLm|TL+L*%`pjg0Cv+(H6ijJgWmEWenpy@U!)2%~HWxFa!n5$|um~et{C^00 z&!{H5Xj?c5gbqOv=|uq%kd72-K@_ATD4_H%(gXxT4~hcPYv`a-q(~P*S_BMLP--aB zLMKS?#qY^`&iU@S_vN1Zli?W19?xED&o$>?WO3>AS2(-gMLKPb6RPOv9t81l{!ngT_`iYQ|AhL$ z1ekXH@LzFX=kB}}ZkwBr_N2esiIx4`v!Y8*6Q5^H(2 zv6Ij(RS7M1xl7pLBt<6T7%ns(f3>}R1!y;X^V`b(I5Fs2YbbrW`3le0X{gZ_cfAsy zEQI-s=CqIlm55vLEn7pJY5*p3%T7yti@@AbuY0=__F>;}4WLhN##Bj$inSVIjr$O) z;)UireBK2uqL}?(zC}7XV!pWzl|4jS+A07*A5E)m?8>#g-SIV8*FIz|CJnt-; zUl@FNcgmy2Z=oL8Q&S*VUgvRW{z^^XcOmfa>G6r-os%u#oz6)0gP(H%MNN&m0bP;m zhlJ3&M;74{>w!SSJnog-oJwAP7A&^3b7lAz-QkT8l>8|zvXyrr_xZNQ`3T0Kefso6 z@WC)vtS{PyW=nw6#lmL7*r7NidKFkz#yuSE-g)}Ucb1ljxp%R=G62|t5-l$2f9cyI zEu*;4ty-hn@(=4JF6-CQlaHQSNN2bb$`MwX@8iE0GZT~{PetDx z-jTW57N_1C&s)#KaWz>+5hX)>Q~xdEwVAvJo-l&wd?NV74fo3M9}#Gsuj znXOA_aF1UQLs&x*nK)0y?Ff0Yy0jG5z~@SxvS;y9wu=Z)kqFJ-B~)tKaQxJ*=}}DB z?*zlY^D106(zxFUQPP;+FruBG%s4*Z6rY>`GNZoPmtu~9H}t#0CYopv7`dnvTS>5* zM$Hk%uJB=#@ko zvT3a7y%^u$ztw)%(j8&{?#)W4#}jPZTy;aQ)-#@UD_k9j z>pH%nw0-m7VKd`1zVcA6A2QyB=jVd0J{**k(a*16iHb}j@4AiYcHWWQ!lV+Br#D~* zMF3=lgDi`N0w4UL0-23X`bIj_Af{F^%>q-q8+Eel6J=u0wdiX|$f6G1Ko)iQdp3UZ z?<`uY%tf3+b2Xzb&RAXL_SJ8Oq1Y{#*@DuqappX>j{-u4S|jaoz_dj9${l}TW;d0- z)OcL?RewTj=GFu0bTna-egR>1LgMC~kpiVvMcl4Lfx-^yXm}8;gc_Jy`6p5&cDwy^ za|x-tk?auwYzn)w#KbVY0TTdWRmXx;H;Gwm-(siQ%;&a_ua)#Unm#<1E+7nAd%87X zYSDc@R!UyYyQsVfy(68zwkjDMwZ&#T&&BJQX7RzTp?J2T{mbmN3Sf%RY=gmHk9D7a zk$1rE3FO@;Ute4z-~UEhW9KlDU#%kk+LqcX-KlwZo;;-3-1j?oMW?KVf& zwfGTQQXiCyLYN-k>`gNuv$By0lmWc3yL}C6w}SIastF*bPYvLQ`~I@-(_9daG$FKV z0ii?PpK93Sb>~oj5Yk+*R)O}B1hT%86~*?H*vhR-E&tF9`}b0Pe`l>vk@*+K0&b>% zCV3qWT(a%7_Ijog{P~la4q~#cG)pTb&|*&!7%e_^#3+8ai@yCUG2yoR1b+P>5oR!xi4-@=P@SXX0uuX$SAc{5gvszG^& zk&u2v$&6v=2X4HW--IDQ&QE%JI5vS_+$5_ywi5^}OTYwpbbfRE@(;p%ML?KKZew!) zN2@bXUi^bFC4#@Iw_Y<)4;N`47!Zo63{~-~*Ll3h_5CpX^HZMdI_C2?qwf=s{-cL; z$3JE?ef}*Jv|srpNoAF8eiU$C77!c`$AroBRuruzn_Y$GF3%OezHX$JP4SP+Y3@Gx zcEU+@N88-aL*&D+^Gr#y!wJvxX7_s8QRW_I33XhdGe&n?c!w-fI>zzvcBrV7V;Sox zrt%0mlZ?4bzP@Mi_jnYS+h$y_RaWYLUyzAB>awA5ZP4fh-V2B&IaWYMk~`TLo%%mI zYk^NzOAS#YFaI#!^lCRfLf^LNd8i@xcErTn%{%GBpZN?9{+I#H`_!xr-Cd~dBDqmA z(RQXPluAHE17PJ*(!XwJ0nDIyM;!s*2`L4dv0cuWCo(?dklDFT4!%*HKUVlis=O3* z>Dhg$poRInTsUzXIU6aQ_}11t%K-Z*nyl%^J3diqzLPiC=%r$|m8HE{Tb6Qs&bj>i z0Tn?Rd;25T0BW0nYTID;oT*4In!9n0nU$rS$LZ(aEk^#CyDA4G9B#vHgyVw4DL^tp z4JA37`kJ`{;Jgrn3y z1iFH9o*qpF?EDz?Y2L{alNu|b8O!iE1wgkh%G9Ilu#;8dx>gKRwV1`VenXp|hZ3qs zYKoJ7Hw92qdrgGsj3A`Wh`+2gr2pnK6KO)?3^jv&6X)WsuVPZ}KIpy~QElh9s;=0+ zNhV?*jUpw#_bUFwulqfyh%mrB^Ze=kYmId~i$?RDe#_sqUp^VDIRJD;n8`=UAObAj zvXVZ#v+c3^sKed@K&ix!?~Crm5Aoj=vUMBK4|A$2wR!BFJU+c13P1Pm5ff}2o)+>& z1z|MiMmDq?kLM+XJDDxyZK9TXL>dB~7D`M!2Sg-xgNL%7y;$itW5wPI1~n=sShbm` zS=?u(aC6%Y)eHfPefO~(yHl~O<$FM^273Z@#`%w{Zm<4*+H0G>Ky9xfx0dG-&R>r9 zXFmsY#MJY);6s=SK#?wRyP8BC5_~Oj4mAOe8rQ~Z@`26l0oP*Ihm@0kylpiAH2$91?6lVwU~dwN>m@FbxcQwyw2(hS=Dz^P3bC-YNF2{0^t zR1LCM?*s}4jEtrnrjm%V;F`yCt4!4rqqHHnQkD%Ny({~f=gCBjTi z0wZ(u%C%gl9PpHPs!gC=hIk#X+=+TTMB6ML#wE8}E}1m=MY(|ee1_@05bO3?h*jek*;~M|QmG@@uUZb6J1iFai-)qPx zTzT+jna;j{DD2bI`%}P@l~=@5fNgWp5zs1X8893UmHT26Bxq zGti^kTLbt-RTQbKycS2|46l~$YRb={vJ5!C5iHbvK>J5&&KcgJWBr)$#C1*smPB8_ z-Ct^9wIZ#IV2o+#aSc1rLl*TbDJrsvG>^4P+v3hw{)}_ZFWlOPfALveo@O0hm<(c> z@N4(tXXGJlJPGe_Xr$aUsm!W#MwK*nwlM~c1X+Q*}pMq%|s&+s%%@`(9H=&F)hACQay# zZ`|zVmKa>6P6A5SX|l&kwL-mYMWyI-&qnIFHRNw4aD+6%5wvU%-d}VC$;+T;U9VF1 zKo8MoU<)|I`YKT=%b?=*RykVw&m|>-KQd({{%m!cwFI5{fW)6iZy~Mcj=g<+Nbfcv zX02In`8`BRj@Sq-jvfm@JF%>R*8PFQ*?t>)i`o-T+m6`oYEu>TL(pgQ6o0{qy6ZL) z`5lPvY&?52)5w3#0zjnNG_-%jc(VKBLcYJIWb9sH8O4f;_;K5k!z7mbU%@zD#!3Ed za!#zW`!wyW8yyj71uaDz7@^SzMVf!0pZ?eP_^*#Mqb|tx{K-qn+{?6@$VdL56y--n zv6E6DJBDe-R7y!eVn1lLp$k_%BrzW+!SnvEbLX}OCNq2yaT%}Smk&Dfm3Nv`SC`|W zsVKLe{e!}qZL)6+YqU=t5 zzvH2xUUs!})p^mQoIrn85R-p95h@P_ea7a3m8lF|>dRuSEv;+9Iw)Kk3Gw52x*7M9 z&dsV-1sEWd+U}R0;omF)U#bmi$nWc-Fb;9}fDGBF{`I@$$^Q`}z!}i=4?*E?`L4~> z>=xLmb3IBcqQ7gP05arAL_hXbhcwr9thw*w$5w!AO;fIJ$@ILG_-XsW0^csMm!7;_ zeUbPpc-|OhiBaqt=i}vH-GH_K&2JgpG|ZK^F)MLC?xIYL`#r$PD$wB`+aV$qb!HuG zy0iJdx?19xt~EppvN^Zj5O}hW$o+=Er-)${B90y#kWXN;i`<-0d=*d3fWLUNhCy^Q zaQv;m!v7xN|9k+%dkRn%MBYxf?U$@P(WnMo0DYM`SCjua6x;eLp6)&s53X<%F8t%_ z$9o9UAeMg0%FT4!7?{$jUXP?uTI^Q4-uDTVaSPH6&QhuWnZ(_n930ZYbEdw1$Mtrl zV2%@Xb7&!0AF-Zt@Os@)A^k74e}Ane1iPB=gcWzORWL;t_!=t*STyCiOw_uFl_|=> zL_zJNbASkN~nnh}dzrJn$0@1Yq6HOPE*BjORXO{Y3x5zkzuM`e1 zJ8hNh27Mi4j;CAB*B|A*OwUGt3N?>sA`0LoLW61y3bZ2XnzsY+tE(Eet6Pu}w)Vf@ z{kI45H64LV;kZ8jnH){>oaDML!saV6(9xn(8^KyxY3(o!spvd=r59*h3~I;7HzXXsKpj|t&QaW zJ!$!?DQH+49!I;&EylTKRT3cbF&L}RL40mQxJVCxppWQWRlgwUa~Up!e$K5UmdYCK z)bjUh@oA~S-ZWGOByYi=h`&FCG>hN>(t5PaY~jVLvXFMfE?rq@@9p+41=+q}bP}w( zUzz>{0|ZP*F%U2|$%BcH{~a*!k{ckdL?dA?3fhqr75OM;x$AI-inljqcsosAT42OT zc>}jB*|HQ|)mhZoIa(y_`@(ZNamo>4B1##gZ+^XDU32`#DzSaQlK+bl$nUTqb%-&V^OOtIFWLV_{KPtrjPTR-^pU z!s(q_eyhTv9V8^3ZpSrgnE?gypT@Sa=wm^zIiIR@}lLZP1SzvHV z(B$8TLeuMm&`>llxORS+l9>L!kd<)uXQbpef#lujtugL|%I#EJSMj*WyTKUTIwk&5 z)N~(yPtFDt1#${?x71dyXTtss%lSdn53)xb&uwX*J{*e}B0Y`ZPYoiU*V`@6)y><^OP?K=GwLi$$0%OFx?_QL`k8o7(pS zC=!g^8}yw!^nmp~qRRy4LRlbA=_uxU(~i6QuhxO@qi(%W`&_m#sTNY;l?D0^Mdgr5gl$% z<|x0*u`g401<*1zfgv3B2wlivUyc$dJw>lO(fzgtpZ;tGa5T7k=y&s@rf}f-NcXpt z9%k6Nv7nnR{%6o739st}K1u2hG$>R&=2tq{Ejk!PpmfbczV7e&uOt1;w~d0gGFCI9 z+p;?~Oo_a}EtDS47Us(&R3w|$l-Lh+R_vF{h)oK$vse5&-#7DG+H;OmdJep4>RNpB ztgu{P*4$Gs#b$UkpMl8{co$=8=ns}Y|0|(IfuO{J#IIL5)BNU+C`P*1DyPcFniff- zz@Oi6$O#ZlSI+XP8;8|_lkL#LJiohU_I zWQRz0Li;N89EgO*hh+?3P|e#3#LvBad^#!&`7+UhLDW}348x|QHxZKN`@@Wqx*|gu z{@KZB*MUt+KyHBpev|cb$=v}q zT}@ncDH|c}iqJ&}2H`$gw}l%RDl!<{T^Z!AA<9mI3pXNkGi5Gqer^^#1`YLP$&GFv zGFTFEB|_U)Z9=R|wdu43PbkKJse!1Us#@3`gZ|vudRy?@5h0LU{oR#Z?q#8{yD#|$ z`W3k|wXTIZ-1xfl+fbk5?~#my!zD%^IBRv;E0N5R+La{P?bwVzYf@nfQ_X>V_;gZU zJGoKpwV$c7w*Bdv{`?0^PJ*HXmqj<(9r^zBJNvs&r42_MYO#!pkYizp`kl)&sp(*hoH;`nj5}Ta&O|&RFl9-7I1NkYyWfJma9BK6= z#~;ot8Wr@i!PLm}(N@&ThhCwE11S_O5_A>{Ej6hpz=UUE;j=-X)opaPme- z@d=9R1K5VWh;O6c<)Xuwfqafl{TQ)xt4S#&L$*+5yLY{jC0g3JM%arO5ye%2|@uvnt8 zjHr7t41}ditL`uaRn0S61c;f>z3C9CK-CQ}3Y(I#mI{UlS>dqTK6=GgyS6=0^7#Cff2cXU<9v}s(4LF`u zUj#Z09)T>s|9x5Tz&=(LEToakWFEJDxUjTw8W41}z2JC$di1NWe>oZ11g`-G@D{Mk zdFLha>5|Bh1d#WE=Rmd#w^?+_$qeiRF%&VCYU@Te@7?x$Z=MwWSlBdxZzd&Z&Eb7> zL1ZMSkN|S&mxUXRzB|{P+bZ!PWueqog<&-88m!W;&Y>^RQ}>gqBtC^SSv!4DTL_~G za61&~|L|~})8?s@{THk9GpVvl;ZNxM`e?KdPgbo`$wl!05%kYw6TNxdO^TVfnN5yh zBOdURMm9&Hyh}L7^68kEn7R%F6v~P^8TmXk5RE(NU6ELs%a0Tj*`v3}WXjbBMakB{ zX3{~dd*hV(@N`fHhO+F}v?GEaJ?1fmd}ysPT^GcS&ut3SY9q>&@*Ur{d}%x+pNW=Z zXFUg)u&~R}hP9Oy$Myp|VSJV^vI8r)Hr)`Ww)MM0?K<~vTdJ6i4Ge$j#8#-8(bQ== zD!J(yeXSAytVbR{kPrrRCUZtFN(ku?5WjK}T?M27SzN=v3;7wTl^P~aG-z06%524H z-=EEnz9M3QW{pTK>Zo#9AmnTy9pUUACtla4(A7dRu2o2xCx+V2WK%si&{taR;jvUL zTC4g!+NKM3Mv{_+>Vsct|4i&u?DqAeU|2E)OH})YnxbwS zTxmsDi~OyZu+q~O4uIHAtwLQNpMyB}j}fDk`0uLqm_CfX$dre+b4sA7(mG<#x&a^Z zS+IXv%xds>s(s4iCfR!A01!QQ3DGlGbRuyPSTlG4njwyY=!1>GMi4sz=&zcq(cq_- zCVaN%yTHHdFsyVNX7c>?9SwA}Z`2CtI9dP)du-0=Utqb2765)Db0&4u#Cbt12fGet zx#?&YToL_E+!KGnZ;yRH-7=$rK`V3jZ)!7 z5ibEn>e+?}y4*!a>7!9ne;$#vul`W-?dPJNi7XV(P6RM8wR$J1`8I}WMwpArnB)aF z_*bp-Sc2l=%&QkSJC1q5erc}~LJzh+xw(C(Tm(HU&2Oqy^yenu{T}_7N)sxxQPINI z^lsxEgkNauzW%Xm^P-#PJucLbb-F9hLAM39lbak`)@4Sf7PG4`IkZW!Mfnm zB#=;U5?ml(9tre9n+}p}zRyBEo&8L?yuP~nmeCFzR5a1#?}J#|wwAVhoTihb$S%sn zq`FMn7<5#muolItB#abyf9MD!%LI$tLHnzG?52oDb%2;3V_jkwmE!dD`a`r|r056A z^&Ud2WL9GN$o=z`q#}%NbF9eQ&RDhUiGAE6E>I$mwP*}X^E{=*vF_DWjsQ@Q<(-zX zX4?K?^JYS;>4q&-^*wMN?yaG-vdFP%U_R z+tnt9s`ADPDO1}71FQ)(TdmT^0IU*|AFuRZ{4V8dsjSW})&CW* z7U8sR=0$jQ{>MA$1@)8QqCcdIqYHoLR01mJ5cL71_WSm?R% zlbRc!OzXwDHUP&LD~z$bvQQ`Mt=JIw{nox6ES>(uR%fJf8fE20^6TX=KKR9XknH1- zctWLpU%@xn^&)a-j$(K3k%)Cqa~wFA_<4vS*h8X};=XF*5LLC`#=>)069fE1xx6>@ zb;vXHE%X&yd>^|!(*HvaP|ECnFG*-dN(UXsbd)D7+Ho`r#4gk|JM?8n=+VNZFkru} z;&yri+Ssj{_^dZMkW9haUny3O{{H)meFxY)r0{4B(G&hkq48ZL=hLeoW(8oDOYFJ;-j7sQtE_ z+#q3P+isuS2JutwW)Xi#cRa`zDQ;azw`$e)hI*D+i_`ie9ckTe@lcQ>U*bbX=_A-# zm&)go9E~6O3CG8ot83d`0$dr^$=g&9Eff(mjop4+f^n#7KC7@vHG%9)qNFn^VblOI zp-UKDJn)u55JHwC?<>wF?kNHD_S;(>uFy7@mvNhFJmh!~`#Yh+%TnAazGvg{i>KR# zr_Pd2O-dcE8Cq)sfb;=J*u~cm zkNDQoTfmwUuhxHXv_y5_P>gnj)NLuUc}2IY2PG2hppna*mNQ{d_xvhoVzw=;t%NSF zqo;QBaM%G<7hi8=KR}mBei}IKFq(>S=-i2VYy5qBtUxfk3Q{G3kLV5b9*J(RHz*{f z%Jj^0euWiwsbX{vVQP`TJHukqmW@bbmFj4cf4wE{ma?onX?_O|3aPhe<7kne1pa;a zNzxOG9V?qWKZU?8!-AnY%+fDQl;Mo5ey*R_oM(-d+wcW2suaDG2WJ;nc)9@_ls*Ri z201Z*B~NOtsGqmr};0+Ftv`w?Wk1MvL#K(Qi+~>XANh zsn>p%uD*|+^@A+I5*U4pKe18?piOkMAemYQX8zq)eQIJ*@u>0fZ3QS4Xz7f}dpxIg zU!Z=m6fq-uS#nsGf`lm20f1{2UXxh&OTouJEhlETUo7jje((V(LoL>bpFAdCT%*?j z=ax93WeEoJa%MbP1e0dB^=c0^+d35Evd@a}JzK#?H^y1do)Uq2rX(3%bPQ*F_0Sy6 z{cZfdu@`)1ODF{tq|cLVI{Gd-_lg%4bAlphlfEeq0ivf*>YKni8*kmv3=C80u) zcdqf*Oa^Z?I;~;m(X|RSKoqG0gL>OSBN;^s0Ij;?@R-y3aBenIVeT^xl|5Bu3IAiG z+R*i+{WjA{8zThUbdx{d@f>@v%zn6;wSNG|DpkN5-^_`j5pb$cL3gHdE_nKlLpC0O zxE{4ycoqIRKU?M71sTh8Z4E%*Zf%#Am6f&YE=Np98ZE@I%SlRh1EIuMH86eldm8%m z1Q@M)ty$zJj7iAO9df3@LVV%5 zaLy-)yZM>Jhn?Y=7v`DL=ttf!e^|!a-U$P_I1+sowrG~0)5Jyh_521k@Ng)``K*sK z8~}!uV0N1dm^oPo8{8I8XKA8n91cDUF8+D-pe?0FX^h1`Pv_)j$I&=N%~#0&rpq4v z_W1>f08K&l4)k2ZQak_aYBn7Lx_gZXy&2b@k&x4hdmQ1zO-o>*SkANP;8X$Ms}oR8 zvmsr#;8dHGmPAwW>gX>>`+KEUpNR&rC@$8M;(eK!E=|_6F_D>=b42W%Z&B@r^8iEt zLvR+qgX&_l7WS=W89v^Bj3`jnlSAvpix;6T);_&EfbTZRfck5}Uw|%T;bQ7HTP54c zRY-Qy>$r_&s1-S}7QtRka~iWa^Q3w*DQ%bw1Jk) zzv1;GV4QVy_mc-Sz|p`Wd6)j~6}`N^qR*Fa^ruO--pQ ziN9=2by~=ir4+2lVHf~3xD+)s$St<-u%-3{Rdjh+R5ca5&MbI1GsYt50zu8Y{0B_Y z0H^-M6rh`~C~>*V<*);+X-euK{+lAo=(FA}fJbH@R# ziyKdri^};0OGbV}Tf-}YtYM)V!?sZW!#9z|Axq)Atcv(jadZ1HFa0yC-qd|iZ7A2(AtG<}01M2f^*8aM z`}`oM3XZ8IEN}K2UIivKgiBbMxLx{v;gRb?np=I|Rm2r+XM=LU)v=1IEbcqy_i|CLw@bnUaQr)r4 zm4UubLw?MyYxYh9gAW9nfJL;IO45C8QAwrB_S$3V`}*VDqurlMYJKdX%_RV?@ww$5 zePIq+(g>l`SN0+OJ!)AFXG3c08J=x<_ujafE28JJ*qi1!Qu^3kH)=@2p^vJl2T)xh zz`W0~!NJ5bvxX~r)JQFoipsv_U(DFWx@L$gTv0qifqa<)P2TrFe`)9|#j+OkNLIw| z+tl%&%7|`Z0sr>vT|;7=`x=ugEw|H(Qk(d%E_Bi3>PxL{UpHZWUCj z`$pOX%lBGp@2gw8tVaWdsJt%WbLkc?G+p?)nC^stWgdAk)p4Fyzp!KzrL5qsgAx<@ z{ciG+=3?SV-acMnfxjUY-7+{TlCRL>NG#<>1HOvp8t?V-7pp@>NT*#J4m8U<&gIdO zzjV^ylt=6W7k_0F`ycV_8mMz7bk}X=r063hu6w@8EJT*~MeVe=W&FKAlsKFtwi;;` z$E?D>nX*ZPz2QyVVCmCO)^o{fN8&Q()D`{Vcdzsg#Rvn)0`b9pWF<4YVy8O0NBuiG}crqC{yBxgr3h z=1|?#n_d3(fhzJdvQ7hg2oU4%IXPOeytVxS$a!^ozWjYQjh6~>wmww~KXCug0AsoX z1{d{yx<;Kuq@=?5w5^CPjjXQU(XpTW0 zW#&!eSmr4-!UEzK%PyA!@I5HPC{<~+=yPM*xGmE`UAQhXx{LUC4dW-Tll@Qak&8@f z-p_=f-8%!Hy^UKDOJ7qn~TPkFEzdZ;$YvlGS#zAV5Su?M0I|XF1=-Q*_H?;hqlC#a6 zfA}k}gQ4ya`8>tGA?$K-96JmB((jG4tRKP?@CEW-V_s(_naEFivD%h4g9X}=jP+Ki zUhNzJPdQ<8>B=oyl`<6rZ?8`^$q`h`Xm$xH`M@;Y6U(@Lsi%->z zf3t6ZmXEm1#3uM?Mw?614*5Gs)aby2xNab}a()YkDXhc^z*VEB0SlW#6EHW8fQ)}_ z0F^5kwXhedCgK$aek60BauJWX6t)f%X5!8 zzCad^I$2R)tFoQOWjr#s-moq7HOc8SjzdxJkNfJtCi$&_Dy*@z83#Z{=| zsZR`AaVSzskVWHQKcKZ`ui{_F(b_f>$;Umfg7jwqTtojvgm24*NcUU|3Mt#OuS@w$ zWZmV7azwhKMH4{jmTnJ6&P5r|{HvFEIT{g$eW}?Nt5QBXZ=4NSvXkY!@gJkLz;nb= zTOWCFMWs=vBN)k^l~obrt;0Z;csiyi#!W!WA^o=M z5mo*PUIN^|iDEun;059~;B@Jw0R3D=*U(H5V^@EcO;Xq_^NCU&^1fL;+`>UX{pq&^ z2`iM;&CJX$?au--5qO{Y5XiOhUmF^5e0vSv>l!)1=f3Gm!9l&`AmYtufyqBW(|R25 z7tHHN9Oj?wxc|PH95}3F_V{n0=hMs{a1*Iy+ar`3jA1@MJ4&HzKQCjP1Y;=lW7SL1 zWlYZ0(<%pXl2EB`t%KXs>?CdU>lqpxq(`H$%>ax4mXro7=_w}7v6{DSr7oMjHW}UW zD@SZEaIpApgSgj^;{jpTQHK!(P^Kvp-m&}aUoJc}6A1;`m7>yMo?(NOqEa_+>L|K6 zh|cUgN-geoBC(*YIO1(OL55tZhpmxxu^RF>j~o@!+}p2|!M6`VE@){wC&(LU+~bBx zi~5+{bd5d1ljSFYFLaA;Yw#{U_p5*mJkIyyW;d@3B?HfS76{}!HQAOfKFC;Py&?GA zwAO~NHyR}(@&ae~D%5W#q?Mq>h}P6uD=i_MRs){=29bM5vNr4Fh$wyEsZrGW+T_7hJS~BsAUJlR?B=3H6jD?u8 zv^9yN-_lYcPPXZ!LY}lr%se{UpKvRLQeMd;7tspO`GIl*`RiuOr)}<=HF&$At!BhT zoZ9G<80*AZ#BDw^mKBYjLkAufoAbux_Z9^jEr76g&8ilzZ|^FkiS_ET6uXJ_qP(EU z=Cda$c4O=P!?)n#!N>GV+ z3{KTL2%0Yh*mCsh=5SH-r%z3@TagaDTMy-K-v;`LMh9zMCOAG`e@@+x@m%V^w@hkX z4rxVtoyzCj0=d9NUnetVS?mMKm{OC&O^!4?O3@Y*m!_8eEif>kAcQe2IY*Z^&38*x z=o^P8=$-oN0U9=sDJ(a#@?qKmp zh8QC#ZHvb_@|H1b%^q1x+!_^6J(wfqeC5QBBVo}haN_a(IVD&Ta6T1^1=kDDR|=$U z%J6G~fP`K|ln~PwcbQ4beJ&6G;7I>8i9S)KqzL3Un!&P zk)e&i(_WTd!PH5mrpPM>NKZ(f#~VbBjS`mko!aKLB`{=`gV2ACL{q3hhz;jLh};8# zk4ji9ru4e7!u;k9nV#EK_r{26jcPR>Pf1Acb5G<&%XacC>J`9Fe5xQY0&;E>SO~iC zu&Nahh>q7`mqK<`U?4*&#na?+urUu>WQO7=$!3AAg>eoA8BL)BOs^KdWV`I!x>Uc*yqsWvdN|^e{eN(an$7mw& z^T#xl%SzZ%EPtf6n#sgYC&XgJ=nAp@JFHX7x^>IKtG6EbxD1b13^xD;Tc~|A|DxIe zEGSw7fjqKn#c|x#B7|Jtj0JfuldyU|f z0-#I*2@~SG@epG>k+ItS)xu?n$;(24q9qn2rhk=D#5~jR(-Q_>+SE-NgfUI>=11bP zSp{_q^9raf(e)krz(u3gwNG>JQ_NHFMxeMLuQzdF3He>YVu1zvwxNz%#1kH;(p$X{K6H!SzEQWhiny-pys0%?pE zrF)J-G{dI>rG}Kr<|Z-<)o`g9TtS)iq1n_Ekk0<`>gj5Zr%?jzxk1clKS2@APvp)v z!s6%J=iE2=`t6S6hs$r?!q_?SBbTIebE;dfcS{h>1K9ElIABaxDun&g99Y-W zInE!?G?A|8;@4Oj9n{;CS(U@B789!AimkXB&1t0Y!t!P|SWSMrMMIUqLq z?!C5OAO^?`Z3G9hs6c(}|K&Q~2P2cjsX;=#-);?4l8vr;!R8@(;EBz$fU~{PL15(M zCB0}pnr-i)Q-O%;ZnoZ72VRa81qB80k5m{|%DWdU>58x0lppcqMc~qppkp--$t)`B z1IEAA^8eQ4L8|2Xs95Q>9+^5i6K|OK&a7%Z(ya^g-C4}H>q*J)E9*nlPyEP`=5}?H z$Y?*uM18uWWEl&nn3OV6GB)EKc@NIEN}+yG#2!3!&ynbQHR;GtO|s#UgggEQLV)AV zt%p5A+V-N?F!vS%EiF-QvhNM1e7_Ls5Md0Y8uT1U6tU`!H?~UWzdx36=%w1Y4`&LD z*z3_7{o*aKEs?KmdarA9nj4WoaQO(HUi}qtJv86A8eBnvB-?okE2t! z%GgSzj^#cVKp=&9ny1CR3Jw(W(9#hrk#!!7jY@k4MtE!FJIzY0gY4CN6}$?34VmdQx+8Yx1}EI?koapxPlOAQ|M9(Oo`In6pW9fbWxf54-k< zE>2Fm0LG4~zm=mg!yFgw#jN>})RLJaZK#q2t+Pg6oSdWPG-w!rq{9&=Y@!Js z<8a9L?2zglvSOU~dr#vp(9t4#{#w#*HR&JI4X_fZ2B?UTpW8D=UPX9h|M~Oh?nlzr zlsHg3V3?2gtyJN7Zkaeg&|I~$)I`&m7hSu3@}O)MaQP$w2UFq4`CT9j0Sz@7K2uzsEdn!!h~`(z^_&+q6mmA8q{-$xB8W z{a6K}mv#+RT@-Mj9c(CmOvLG%0-az0YAeJ;Iuz1LW-%fBZ zC6Er-a8-pIuWzjbwjM{CBH)m(hxPJapa}v{BeW4Z0@BRvnWn;3b}THy7x^6Ecy>I1 zq`hSjaJ<5IhHO0c^F{gYqRm%y-}9EPWTj3N-VbsD-h(5R+@zFW0u0ve9Dz{ zso;-E@ezuzJX^jvYpYlqlGh-ew>@m-Jrh872;=VR1iJgR&u3flW=G~v2*j{-BX7BB z{ebc7oO#dS-Q{03z#?~KGty=x?-OxIX;0(0w3CzDP;!O#iS^a-%qK?RF{Y(Z_GE99 z?5yz#)h~9_Gu_!e&FNv)B37dNp+3S3gysgIZ#APS$Rc(V1|;Fx*~r^be3N9kjQ*1q zRx05nWGODcNLlTvS9i@Ur{_IdK9$t@j8FhqvbL2U0lN@$JuwF(A4A`1&|+#Aj&9IW zqzcSl-hMP3!mKjL3CtrHzH5q0}8PxrG0gOS-*#6|)QYIo^w0>Yp7v>IbV=yAo5~a}v-i08G%=5?j9r=E#4k-K-M4IfEJ~VmJ87vvA zVc!1wfR`iLHi$&`3KvoBrzf8U2+cOD5jd0UK{~Nv3xIWb;H%e~HO)Tw{`Jb38J3fQ zuM2FZ5^wsoPL>}qA4*xd@A6CFmN#~HFT;cT)T9a|gnV)(4Aog3G)H9mQ1x?-C+l}S zf2vvC4_}i5@Ot=0k4m_axi7B}AnV+Tw=55R3R)Go^lToO;p+$#Lo128iV>uYSWeF> zj?uj1W=DU$;)%55(X}4gAvG`9YKfw-i4lOiMif{#dN0CVXwP>@IFn^DP2nL3n6Kz- zwqIzj9{8f%<6$tHd@Qh02oib{*Y+-r3Rgx>%2 z(i7dU9(x*Jr+t*T5Vgr-6YD7qiaDU&Y;I&N#uT6OIK_1ORb)407i2(LTA zy`V=`p$b?~{cnOr2?Nzq2&+``CwyEx`gg!CaGAj7D%-d}^;d4-z7ju0s{QH7^Iq+i z?N)3Kx(ltUe|H8`=QSNZwEw3M;nMw*_BJvM9VbidH1Im)Q!)zQWeW3L>Z5)udj_m2 z;;kA0=36VhHrqlH`D3owX;uXu7whoWhMTQ4n?F0(`xtR|w*}Q=aopXl%Ab`DgW_jT z0x}bQ952E&XbM{>QU@eCm!S_SB+i>Dw!ze>of=q*heC_Q0x8OIgA(o%-MG1}-#OWV^ z*>on|q(FXewzWwreb-C;@++3d`%U1l*fnvd(kpf}(GEA$>hGt&a@xa<7u_NVjz2ts z9{zuKx&fyOxlREp1zCVU{4r88D`cfDrl|m;>{g>^hzoE7v;ox-9GLcs(VjXPQO}y2 z>P2?;e4#t}2H15-qMU9m;W2DOQ+$-Ckq3}W*m*rK+2<b={wi$39l4%?R9QCWZXraV{T#o?zSTX(N+IRw_Fu+-{AuRNE!R zTC4HtWZnmQ&eWYo%cA4Bdo?-b`_o?euBg!^3Ax1kjZH3}zE>{uRle#Z%4oxiJLbGA z%9rN*l+TG~(eoLh9mC|nxl!WcljRm5&D)^}x+r}{bh13ZCKB2S$plP@Ht^3tS|}vc zA%Om@%ATEw5;l8VMC^V`gclvXRWs{Io@Ar2NCG(+Zj8PqH7+4)Q;rW2w=~HP1J+w` zRt;`GgiDD670~9N#Z&bm8v``ZWC3j1Dkl(L8u;addq}g*e?jbBZRD9O1_%ZL zW4yKOhSYK|JMBdUZ5V=!Ocb>fc{in{p!3Qt>l^Sknnji8Y}tcADf)E>+a~=NLEKq= zU{6DHUYw{mjDzI+Y57=2_g_$9!~_I#muhX4G%Yjsp8HK2In{lRq6MTshD?NWz}Ycz zg7ld0%d$i1DPN#Sq@80Ss(nmvH@bHBmc7NCMg7Z}3F|#xbfLq^W>My!0`Gi4MO4ct zr$A3W47r?HzZX*fC|{?LDq{O=f-V$FWsu(m^PXw`@HIQ+fm!Qq!#2p*u`{0P5f5wJZNCM0&g^A@t zPXw0zquTMnsw0vYv%jT|CMSnHv$c6lvm*G)kkoWPx{Mxw$^Ci;u@DMck35KaL3|*l zGW-WJg8#}Q2 z!}gC#?N78RmC^qNt)(A}dp8BvJ^a(Fn-|R$c-C~=Qs^dZXJc4$6%CiLYJo)W6{msnW# zmE=z>$1#go(W}f5+nW9`23nOG5%9&zyl{CIqU@bhwa%tx8w8Jk&@M z_znLJ7+4qRfZ;;&xPz~_=|1Hg=6jr982u0<)(L^H1m$xZ#u#tuMV?2 zJEILod7b(qTrKN&PPQGuniy2*Wtke5zgK9S`$dR+Os|q4mAZngK8mE`1#v$SqJ8^j z?JfPMGgZ%J)){fqfCYUA40U&0H~&DMpTP@^Uw;uJOnb60axOqQdxO{q3x+pP)c|07ItgmKF4kqvQkB}LxwVMksWLy}!CSX_qYl87k9tP3t^lT?f#0ybdrb08|f6JT1(aTgJ^bcWk28{TDC-ig9yu`>d2E zZt}|h3(cW5_7iJGUEM(77l;4n1;8;%K1q2X0XC9kb%iLoiR8ZnhU%J-J(8eXR}xf!)jC8b??q$xy-kpdRBwLLSa4)%DM=`s_4KdEJY={W>l+)dJ@N}Zw~BZ1?yfehcWjOHIDw=5q?Ix*04J?}|khB+;FA?oFE_VveNh~Jml z0``diaQCc#u^GAoI4*1uCfYY?!pl)5`F)igH~GHju~)pXFH>7p8kHVeDz00)&ytHb z7}#6;!Hb>)5Pf>|;Xk?|{&X}>SAu>89C-nw;~Io%e%*tVMB;ZfT)aib}Wfz>j(4Ok$B*4+v(at)b0`MeGmCkxR>F zezt|L;My!AG{d&#wYsu-^)F#|I#SVFaZVy-wtVv}i$e>3u|N|s&TzE<4|GxSDJQ30 z0MNaiH9JEHcYfztrh2q^jf<=4Wu=slvt}4Ec_AE){Un&mTd-?Tccd-RINDx52@Jo1 ztSn&>07x|m;UL-R@pC1lBo`** zYnG1)7Ez-WYCE}c zOPxmrna;dQmZv#PQ(nE=QlGwfuTh9oczOK&o5cm*gs>80hzyh==UziY>3_MjM`bRK zyLhp($3lQCXIBho#O7HVGSeDCzF_&vEH4V$(nZNjMs%)*(#?7oQ_@gPPfP#omP=|S=76?4eT4?L>M7j8VE#_ik^OnnGAv z$VNBSKV@fUF9ves+W@=}OIVvs1#4s`7!L{imb`Ci8S1V%KEioyOgO1WsAPoWu<>Lu z{p~>;Sv8LX>@ZVHy7DGVmey$&3;U;-7x(6FpZ8GAq2DwAi}>R|&zuDjq{7^zl(^8w zU~&nd*w9>v-C65=Fuvx=h=?ul1Q^`iL^@nw$ONEGUYZe}I7h28op&q6h7u|oE~+BP z6Vy3DLcFMwRg4oF>hKl&lNkFnO-6Afu}5z{*S$yYxLT*S2i%l^R#9Qr{O(Lb;>Rde zc|YjAu&Ma<>3xQX1K@~5pPF#6JX9RWD7DOs_r-JYjt>oum52~pk1B}MEVD;-t-Zcw z71~;HcwA;cC6V!=c?j!l1;J~7M?L`8tCtG$8KR4Zd9JEbK1dI5ItF6znM_@zF7Psd zPiKSUG$gRdw8$c%Le zzlp){HQH-IJ0VZZT3N(wnVyo2up*X_pUmTskWP1|1-?V@<){{P*9~7_c0ZQG8H}de z#!Jb;4u^Ih9tZr!Q`pI;E*YoM-$KJH|K9O{>Z1+yz75feugVVFZro$MQgZGEko%Rr zFsOBNhKP6y)Pp9t0-%46@6e5CQ&%IR`Mq{Ab_}3uDFKlHt%@nrxLa6gsx2 zUyG|)+NkMb6>RC9>mQ|}cw44|e<#Aid$^m@4Lh`MJ->o^y1GGggOs;B?$Y&F=OPT3 zK;r1^3xjWOtov($D0r&b{ZHHb3IH2zgLUFBeujxzp!Eo`83pdVo&TAiJWN1k#yOa` zW-{{B(9yz?5TE1sC9-7%wwPlt5{K%{+KIromUsisswDFa<7M}Vw=|1_eT5CFlYgHz zkk?5`G)Y~cnnXHC5u#f3E1$yKVjIoD);+%^H$J$T@E;@Z4g%1eY=yK$yHU_=pJ5QX z(4vNi8P!~TeMWkQM(W=$eY$}ssVs%vl_PM!RxoC8w#XjTLT@p2U1*zq-2R&{=53>^ z=|-B|A3QPF9<+_KcJ4M)T2IutLhS&d=QB2W%%u--QwP3ibj*1-7d-q(j$1z) zc4JogO2rWMNcvwrC;EZ67x<(z`d#j)dJ9=_kBg`cJHMK7ibnOjT#sD{s6@VM9SMCv zfAlwD;eVjY^&BcluABRzut_fN$`&+(qztV=4%TbGeDe`9aO&iYwv1=<{9oCYGZ z>k@%VGMR=|f)3VxE%bhTPl|M6+jaDi@$rChCP7FWNe;kwkDMEKNSN)-2F=yb!VK-0=t6g3`A(bdENj};7B_Ij6)#$C5h;V0^M~v8By6odV0uCDRX*LPGa6^?k!U#`J zyJ^`O*BmlR!GDh_5Uk9_2bWh@RV`{zF(-5OCp_avbI)av5KiK_cE3;zyEpb(TrJFG$h(fWb{=a?Aey-CI1+BFZ|A@YRU; zbG?n{;usM^v#@@6Bs~Vx$$n&i)Va|Nw;$Vlfpx8!^5k%Dcx%GO$>h{bE zuuL_l>(tNH-u-yC;`(O7>k^~3JO9x7PPs0p`NUClnon{js#N6eQxmz$ru`_=Cj+W% zY0(do5cumdmRn83++yCck$S}PA#4oyNM5J}%bMN?d%aN4?i0ZP*I=XbBz4FQGe1t~ z^_lb3k1v;mtv!IhdH#ffR{c+R*F+~a|Kv)sP&YxSZ)tn{;e|I&)RXU@Lr-e{{_q%c zO-L`13G^vtj{X2lW)G`9Mh-#i8Zhh&S{OeFJ3dw7NH z7mcL^u`o@PKAB3-@jyhK{C#}HZF^&RfvZ>0l`(&oBlqCNCM zd0n-(k>%VPeF%R&+(Vxg({tcpg_DzZsVva5)0wag^E(e;XP^Dg4D?`+-Zp5s){m3< zmQc7X#3zDXHbFH-hIwLTlo8N(N7&s5MJ@OBy(jdEvdMYT&(S*?`c>X0%(P56p1(I! zXXtzb6yR!djUZ1NnXM+PCN4Azcg5MyLY?Ik2aT zT?dDK_4n6$WI_s-(CtK1+tYW@%xEh0b7;~i4f1FkdlpvJPbAN5@2Q8l32#Mi^pFk; z0M(_8=SDxb!pp@Cl~Xq}R0~6S45JP7&#=fLwCFw5wV+dq$Zf~fV^WF=vfZYfr0@D_ z7;4o;Ow#alXDU>*PL5m*ZPZ3~GiEl7kL8nA(gNTr__e}d)D~>bQG+K5F=a~Z2%LY> z8YM0N$G9d#qLG5^Z&eHSLti?Tp*_i=ugK~uss8oijv%CHK4|_ytp(HqeG77ly;fda z#){NqAjK#A%t-PNF(k|rsS{N-Skt6u z^!1g|0nV3}=zxKpD5s^ag2#M#_k-%_FWSl`jqZFU2c=k|Mrg^U7}xrk3~|IZ%D zP97${1%t|StKl7{7lP9Bg>H!|q%pBH3V_?E@jm1C>8XZLW|2mo0Rf8kZv}UQ#n%sZ zmVYIP+BDiElhfLb@F6BI;1fMP)beD*ds5TC6|IIOo-DmL6Zxd_0ozsmdNm0?X-7N> zb>E2jSF>?)n-r}F)jKdPCL>PEVbs%>wWORP>E~5>kts*y5Xu#>xIjH~wvKPSQv>qp zC}Ao!F2V1WZ+%kN+CFVak4o*GtZ@~Q@!L4CWLwhn%4za|WI9eb7T*uktZgAquX=7< zzA<~HdsKAt5q~CSCf?s>AYG+`w4zYvjivDt8dls^HXB>Rizah6t}Rln@= zLxDyUExQ+42<=>KhR{oX_}8VB2RFxt+-Bvp6gg0@iuS*Hi`{iD+OZG!Ui%=yjs3^o zliHmWttNldn-OJ#Ik$7a0WqqA<_^*hFCKbm5TI4yuXr8SJKg;1Oi~qL1fiR#K^hXZ zLln@Q49oA=6(&l}6%T+%D>2QMlN-<*Guc03*y6QL!hKL4wbuN8AkHVMP@-(U?=jUd zLOZdb$e}zJMtFW9d|k?#>v-9UZe{-y+#&Cc>C(U7Vc-I9q@p0Ad_g&vOH$PxFLI+69Fi{J5H+c)7>s)fVe=?gj6xFa@L6x+}mhz0al+O z^G}J)iUl=(7KX{+F{n?PQO}qV7b&X0pww3YFnG)wjTm7 z6_DP}ingQTTt>Jvm()_NzQp1=SOyT5#UoP0m3bVQwvlojv!2d{p5IQLIvr&WuW7cj zSIw2@hr6NHG9{hOTXgDqOjgRRu*`cW)q%K^e?EC1RWw>@J+SOCghQCUzNY`lL|rIp z)tQt zucej0w@RAFM7%z56w2RVbZ1XZS8s!%_gU>=uJyLpHzHs6A~X1^*|QY zKKi{*+_K&+)lqK5v8%npw>}`ud3u`s=jW42O}R5Z zJGF-wP7?X?Uj>ByI}!5AbFapaU;T7^wC^k=Fz}KQ*t=QcfYyGn(%N*t~D&8z0{) zqP&0a1wC4bKv80Go&ggVcsVqi-Jtm#Q%RRwSJ+DQ+Y7`Y@G{Z7H&2wp9VF|D391}L z`XOu3c$=k1LPe9B$%l7$TqQiMRVxqu7Ja##nz{ye=RVm0gU7X3W%s2X zU5)$a@gSp$#yy(w&HMEhEtgUD=UGX#jR~De7*igwqM^bBWZN6V`>*M|l(nu?`oNP3 z#x_OXAoG2z9pFLpr0cxxg~!irNt1$Rr6eW<4tc$S%A83~g|g=(*TGlq4a4fJdQO%V zFwQ(hJN4fu>IvE6S(NdPO5(;u)k)o7+W5n*vyC4q|G~m`XdyGj2BrnU1>enHqVLT- z)ja(al_5rE>3;qYN3-QFDEhf9p}(!!_k*M37aRLp)IbQyB9}Dq8&&s{ijw2vc2YO4 z)Yu(4PLy%`9W=ox;B0*H+wy~#8 zv>pZWtypI5J+~6|fSnJgu;9h9{?2J4sri)j)%ie*-LmXg@P12}sd@GF(jkROLq%z4 z<#a{Mszg~gX3cO->BAwW4#g*~(uy|mIB7nIoX$R%&VH+2v$i3%&zgt ztg#sjVI9@~YaRKojzorxG~q56ls9Hpc!`#zaf?Cz0h|61MAU>IaLD8ZC(uCn0n2{p z24Oe%HnEs4NRe{Bl`P?Ktw^8TBpX@qIBn+-efzgZ`NgjM-JIV0#mW=zonbR~!oB(L^0f?yR_wyT zVsg7PN-^^#b&3Z9WtU%nJ*d-i`_LD348pge7;K+gqf?IDKUXK9p>K{qDz_P3@EJV zm%yhASgY7kt)H3lG|td3ki6ldbaOBwHzqPC@<6IAZRHeRF%HIf4)l1a76N9{{lR_f z!2SVjYI&xyHtj_=q&!4jJBO&IrBt&~4&tR-_$(%t-{5j-4)n{J@s;IAS_5t!e%M>h znrHI7P9;6H6HDAy&kV#KCOTHTpxAeYP_-7JEgDhV@%h-@1q@?^OM~^?kW2hd&W-ZR z-#(q2)R1xC_dEfqAi4)2EsObbJ4RQz>L1*NGau|UBBj|f=i#Q>D9ne|n*$t7*D;w= z@|Ryfa!|dYmXdT?z>vx02|SQIW$NaBnxF1k;n>$}EwI-gskbek$d@(Bl*q-SUK$PZ zoF6qf*_R6T^s(!D_|{GCBJavmf=+Cbc*<9d5rS~TAcNLf%6$o1hXjsy^WBMYC7Pp@ zy05|fO-|K##m@!90+b0xz%~WXmdKqHOu!^qL=9dxY1RpLmIXNdTA8*SacabgA-u>> z@y;Y8A(*G&2F!Z!=WeK+Ulqudg*BG%f-oK$rXm#6o-*aXi)afK#90}gVG}c&va0`K;0vj>E8FYerQUk(R?(MFLsv#A3x{j%#Co8`#4_qyCOkB<7;?e9&WZaU@& zx7=ERR7gS6i)=5fhjkp?@Oobct<%4|HYtXB2TeVr(}Fosl{sh zu80Zg3o}M!p;_GUjfrnQUw|&>$r*(D447`a?a#)|TqUa1<1ss8mq7~JIsvDE4NfAH zceUlTINnL(mG@sdGq4v+6&!zHj^$zAh?jTN##6}MPD}U(O;VBT5zGeOjs&96ScMlY zvUDEf-<&t1DnYD$J=A^Qwr0Htvm2P~t@u}M2%xItN_l&!1)(v~Z=U4dev#!qhx_KI z-w%x>8Gx9)tOv*=n!o1O{{B&ZaorU}4AmMs`;R*1$Cls7y-i2)8a`6AJ~6II%I6j4 z*6K*=Q@pf0sxqud#wRyUQE({K0nlf!sF$6FN(>3xv<@qt)W5e#l+vBM>QF4TN{pOi zSU5B3C0Xa538SgvPI<%Z=_j<~H~y1R&3IZ}(=5Gd24&iK4(g+S!5|X=p6nLB_y}y; zMMA=g?qT6r`N45yl=Fd`(_+NyFf*r5hkV?cgm5Y{cDLX33B zsZIx16E~RtRUv_?axq$7O;W`9`j-KfQIecSC*dDlX_w;bv~g2I>hq&AW?udjGHq(`AfdcUh}I^bDB}6^jhJT zT<42)6fsuz)gnES8RfbxI~~Ic)^S9M+uC5^cC|9FwfJ5HL{=J@C;?leK5)}=wZLpB z`(DbT1uKKe@f;wvw!{dZhkCq2Bv#1X+v!%Oe^5#rMJR|0yih}@x;s0cv8usP8mO;3 zsaZ4WI>owGCeDz00Xy*@*BtEWk=nIT;*C%xw~xS6m#pq;$mu^8kvh0VzFz8!=SibT z5{5HdVz_74zj4pqz`aWiAPzx4;?^^#-nHQT&;l8L-kor%Bu*kv-ehjN*-n1q6T>nU z)di=R*K|m&GIGx>EOtk!;9Nzc3O$^1 zTh>EfyJs8ApVQ*sL?9wb}7gT8OOE9Ch4%p1B``B`PL@FzFv; z`-sOL4rVn$k#d>GiwW4gE*0{akF<%|8Oa;)I~&zMH84PGjOl{$4@;L;p83vP)jk0* zm+Ul)&6B$C`1p$so~M%8Ra+eYJ`dSN@@$u5aQPEDlZGQb5;*?#Ad<9~Nb2XDnXc*l zlOmVf-hg@J1(!meFzoxaJH(v9aW#M=)s%!pO#jR$Ng`69pJcS3JX^KNUpnN3y2l5i zN-ona6AGywiOWBmATN1$tp0SZKY{ACf`x7H76~#+DT&1{qb#GiZ1j%W8-bG?L}i}q z`s#mZzys1iG;&MTuJRJQ@@)Wr;G=C0%x&)wbF^8z)CK+lx?W86cp-3d%51xNGqOzvfs`-C66ACI?Q`!V*>!&%lQ063Jl5%o}x zYf_287e?7>Mr+*v=3i}>d{d@j&*{Btf%!~ z>4H)dpKShetw8|=lKKznO~Bd?%ltB=@URZU_t6=mjXWUo^VTi!-MxyYqUgF(K-&LV z)~VrcT1nEcp~6oPtLBj?3F#iKc=ssVP@56hRVw8d%Bb{0bW@&gJ8L(CSh%c!UI}OI zW(Qv`$eA!xH@7)c2FWfoD57L`@buEnT*;wE=AFabsewEDGW|Dy`^^2E=)kItr(f@G zcf+5LRGBlSb_m(Uk9+`&5C#k*%ors`Q1N2VDB&=HwPSWQRDYQNeMb#8M@$##1c~+{ zl_0DGHo;}dQlq57Rpfq9d+%Bz-IqgpkoQIU#3fA7*FRAxg5 zhms4z-kRTbvZg_Eu7?WJA-RYq7s!8GvX;cvy_2LOwJ;LydW_3Isou9$#p-$6#tze1 zg^rtuL=)8|F|U*rZ{BuJvD8N_f4C`DGO7i0A2@R36ha+rugl%IEb2VW3v&mkdibYd zmSEYuV^Bz->Tu9YH>qGD^=NH;)W?RdhkegHCWK4Hg;SFaCv8S{O^Z6K^*-#hR7AAX z>#r(Sy#v^MtIL^R&D3nCOY|D;q*_avm&_6=>SqTKE=0Th^P`a=C0+L;nGU@|`Z%v> zxl?ClNxV1E4Wm>3AQ2ZWf9drT=ZX(iRy4}o@*g2A>@jDzAX3Zm$@Ki3e4Z3jdRW|d zAdwY-2&q$*1TgZT@?H7%_>dIKg9zqgEh2bPOojdUxjqMDdrg3Es83F~6T4e=`L@J3 zg;p)wUYp(Tckbx0{K=>N;zKe>Z#4-2zkW-83DyvmjcQ zpHm#7(KpR&=F zVgBJ!I!|OM_u}Z0?GFLxqRIWE^$E}Of%vWDy8|EZ&W~rPu_}!VIKoG6(q1o7lkp7R z=oA&}tU;!8NWFQ{TYxsSjeN@~NKjhv19I%p&MZkYI4dr>vd2Aw}04SpVk32Tl5y+Z$1AgY|4&}L}JM{j@lwf?x! zyO_k`ACQ@zH+``@{IuH;7_b_9O2(isam!Oh1`KgwE@LVkXFImHQcq0K*TU?Hm_k6St7Y>_jjHJ%6?c-yw#c? z=GL8VGssttVYM8IJ5epnMfcFMMCl5AdITVk3+#($W55~zD{1S@Wg779%Pus^(|P*Q zQOWea^jf1EA{=T>bEn3=Bhy-^~v#1j1IeWwD z4I&TkmreW4`3!20FiaTRoF)mJ?rzL#(AGJV<+|U=3YHL%><27yDNC&FyoK+I5$>5q zSa6Syq?#nQDDEB!Z8I+vS2vb3ug!VF%sH>bm*)LC5-_+A?NQJd>m4!}A+l=mB~Iht z@NnhzZiP8R3>!nYx3@j!eSyy?K#}`E{?U&M$ACf)^)6K$-6ZJUYp?5=rD z+&4E|Q$fijqWV^$3t_Sb%!(UXPR@Ateono+?{-L%L22xszX~n)+V36R4{Eof_2shzx{j?+{o^E8f<|U4-O6mKSQiF>6IQ zvPhPM=z$)r=)D;SX~rzVJy>=-5Yg+Y6${U0?9U8aJ^DG{cO}e0>(6z)$F-gW<1c&m z`MhX5QGVQG=g3QoZ*fKgns? zL&vY$6D;IXyW}$g&P5=b>8x)9cSTA*9B%B(;RO9Xgi4 zrGELt4zb)_7y{ocM|tTk+f1<1ZCsXQz`^ZNldktu33I&?U%q<)*Le3*7Ch9zMt-v9 zi+i)mo`p2T!1f(ezr3+b-v-YRPjTsM>GC7I6*NnuxR*>kUC1?~i zo(S%Wdu@r+hnB)8_p|pyo30z?lOvc<`e=Pb2dm#;HT)Y#)?OLyT;1(nHeorO`^NtJ zVWw9=wEVhA5`JK5K!T&G2r!P2UUmgeyc#_4Q1&^kq-4?jKH z(i_%+O&(6{b^u3RGnOeBR2X{$%QrtG**zb8yg=S+{;4E4Iq7Nf>7k9pk0s^ z&Re+=IAbZ%wZSx^V(Qi7I%MS1e1`_a>F}PZl}}gA4vlsFX)lvrRF{YT&mZ0*nrKM$ z`eNJ99+fnTIK6|sb(cSF-f;=%3+O+iWSg$FeGX3xiF_xiNtwpv-IkQ&XBTSr8^FN2 zM89Iao`M;3wamOV9Ql)_fwh(EQI99v{^p~j4{nWuJ>!cu*{L2qa%DYhwW(WIs%Ye_ zKFNAtQ9(`qUOm`8_uAO;kL?LXWbL%)VCoY&&EXqs{P0KXGD6pq8NY87Y=+Y3Fw}Tz zn=Ua>rF*(&P39{cZBE|}PxgjkRppE&kM9N4ZYOSO4o3*Of~k3S9)9Yo4{miA3;S@x zEZL#9jZG%MT9Tg7)mlP=P3J>KqyFPH-(_b%`}G6G|MgD*ze+ffQhZoCw}lf*iLoo-6BMD51MrW#1DkyZh#c zZlihl{hSubt(xjA)OMowKt1)rUXq<7{6Mch{OB=Cz(MAeS_!(U5$kbzi@iK-KC-cL z!pht32=abQRiq=%HFMw8dw%(73kw5K)!K=C!!}jdSfYPqY%b%{?1cLoKZyLb3EktC zm>Xt|u!_0Iv03ABqv{wOo|$^+y@@!4TdvGz8<*|7sH^rTyZwhz)gUxgM1jC?&{J#j zDk+4`HC&SLNOA8i=W#xoh>ADufBZ;VB%+TMTC*cbO)mL5IECw~r1;jZ@YDF2 z`NmyVW~D^DSCPoYE>8=Tr;BU_>89MT&MFtKyxuyu%aqRgNV%Ib#Gw>ejVb2FGFt!n zXsc+~*RY!PMyBK*Cj_lo`V^-Zl7`aXRSs^R87R}_At_b^tpwJzOHUN-B$!-s?CU?9mN-lX^LWsZ;o~Sz}2RiS9!22 zxdWa(pPKE2I9YV>(ddw4_4N|22bjfXzouG@G06XOxE0=fLSj_$$zr&J&xU}_~wXMs>;%EtheBy;I}vqdZvxe zgtgnia#jEc`oaW1u0&dsE1X)-dU>RPV93jt7p0lH#07JT}{J z2z_ZkgM93~Ky0V;j|tY1#N%!b*rsGXXk0p;h>u@{y)eH*PGni+OP45mZeDPGwn*=9 zwZRab78LyqZynnAo`vrN5TL#XO}6>BQ?G37>=2)3z{YDD#uS~T7%pl(0e4!#G62mP$w zUSzRyMwqn;Z5{MAN_zY(`(Gcye}2`1>XCn9-{v{z-1S}s)5I`IF7{mg3iMgb_hyQb zmj(ek%n#^43$@-n$8EgOLhb2c9`u-M_lW-lp+iN&^p^}zrXnv zY+H+egM87A0s$bW^~^!yOItfY_x1y?x*N~^d!<(F%J|zcJIj$WOUv237)!82{VAT} zdLSRv{S+3yUTCwY|ChpepH%pENN;Za!Tja`{9(2Qrw&K8ihRetARUe;i91Rk?;5h- zSa#}udvBCkkM@v;PX!lL-J=jQK0qT^x2Aru`l6>p|$NTjKJ?7EPz zkhPUgat`Y(caAksV0n51d1D>R7!B&5j>=>iq9J z^6YvLAz`XEAg%GU+~JHi3HCQx^wJDUB@0R0^zf@png`afv%pUH_9?;s^fK3V%5t#h z)|WfG&M5*VX-tjC+_yt;yV8^Us{3=|^~?=IcUhf|%Pi2XqJQcnqoSM~!>PMZ#D^B@ zvenRs%8wGT55%cgU0+$Zsz6**s&*x>B^@t$+aM@c^oJGNHNG5SFcjM$;H}x|pgi^X zw&!cyez$9m6GuA`*zcBWxWWCvb zlylpmCxtGOvx@zNm2q_}-YTVarC&!h<`>jp2wW zth}5w-evG(dB?C*OUoTv=8iKHuniya6fC$B`LYaf`du?k4KKZr6OtS@;Y!ktW`s{& zDYDW&6M!Kpt#ENmxEjxaVw26gK-dISh>6`%7rHr zt<Kx$uytbX_7@+2xLxs<<6?!HutaW83VwLeS>w(`i(iNMxnriC6ZaCtmlB1U7 z)G`Q0)}G8fyuD>O>(uJ7Kx_(|&rb22D|cNk{MvGdrVGH+OZ^nS)*tSQ!W8~UxBf}m z_oY0PZrmmDtp7{lv#OLQvHVl3%{lOWyMsgFBx9+x=x zNX|!tk^1r+p>`^O#VmvCG#Uj=Z^r2&dPBHRZ_1wbpCr3X1ix?SM-fJ>#(&1T8a9^7 zz-^R^+=&|tA{4&BlSDc&OBO3Hzwd2ar0g%;?`ka9EXHciqB>SaQdW-IBFD;6M}r!* z6@?Q;C&Z7w8tr(SZ{FVUB}#48;_`~0*##W)&|IdEi3fQ5BsRD_aK3}3SQF-x{Axm< zTXl;he!7F*->uuNb=>L}Z{5BwbIO{C(pwsO-}*UxrX(wAkLqjAX2k#LfOyj|@we4! zzq_%W7=QhlV$E_8?%c>5t~j2SNu?ISy3*CG{2v`4(~1gHB~Zf)TlZy9EHeGv8#a$P z??yo+;WG`^)NwA8DDit=fVLqP$Y5f$^L1iEV097-mSrNxoDVv^-Wt>XQXOp_)sN7I zQOe-Anzd*LOp!P{1c^Mv-FfaQutAZpBrm=f<9XIDKq31TFP?QkO0HBCP>|@R24*e_*oi@?!GqOQCk8;hfqY%>qt?5l+!8R zclpY(G#M=cw+0%MPE*~;LsA-{9a?7A$<)z z4T61nY2NSUIB0gD+*Jt2hvK`$NV;9+4iX!T&n`Mu&eVK7 z(=OqWDE5v`%9qurVUOo0ION_)%n`cheGgRCn~Y#!@IJc--* z>p54a<5XV`u+zpoY>x~p*(tD3x&&Pn&#Ts;>}1OPj@+1LV%tACT#KWX+e=%=E{X)1 zp8^SFQJy554MkI%nYxY6Lsp9sOM~#uruUd?SbFRJl()vbj4!Na@1AW3hk%3t zmfOb1lnO3q=scip3G|NxZ|Kf(?EyZ+J(oZBck)jDI4O87`J0#ahj`l?{lNb1J!Wg8 zO+wT|)?+k6qN!(vn`RHI9Ok3X!D>n#gJ`O`eamCuMA};CXJ@Rq#hYe6%U!d0dU#0St z-c+E_zz^^m7&RpXzrw~SeCqQ++-UaEPmW`aYJ6E|2cT@2H^CZM8tmTdnE*4g7F1^*wKItCeu+RbKH4r1|4n%$9-)Ol;d`QBc!>7z*YtW z#7nz$EAB8ASpTRMnoWz^5y#>)Tzo-2Ds5aP-`F@Us`(`wLc}Zo*4JXExhMsZIGb0-KqD$~Zr! zZ-t8)qhZ~vNa)->rkDT#$z?7NSL-pp;u?lu5_GW|j@y>2amxm;sxyCs8-l(Cv~T=* z%qXQ7t#Tu9F}kwZg$`=6Es3JQB1i)&e6ag4p|;zK&sTTVKD;LL{Mbn9``X)~*Uw~| zooAsR%~zS&R9O&xvDg>$`T|176fmlz9+x`JqUyPXk6sBS;$C`fbP2=`h*)YzNd-di zjAklUZrOI8VzTP|iN;^bJrfm?-?M7Emm0$T9r7Vka^E<@n_TxV|gOV@g^I3;?+$;9 zA8yQX^7+krsi)GwzV^$}6vv5a_4GTw4!nN(Or~!&?J~8iB!~Z&#p#}>hx-i*c6>e5 zcr+mTZ^zB#5e1zIeM;GCfW0mxdb0L2)T3g5xU%miY+EkyxuJr}^?Gr*4NWSE;uJTS=wKcKXyF znvGxn*0V&?b7DFm;phd|dReN;SH3%`HcB2~67HQY-!;@auxg{U zKqs(uqT}2duj1P@EdS)ZcQB@W9zP%de!6SyJAg!f^AED}`C52B=48tH?L1^O3v6ik z&%(Spt|>$?kE1+C0-ZK%`c>rM1zYiE$;Xz-r^yy0sO_J6!@DW&tHJd3`MSjdj7D!XE=?q>IQzZEfAEGi z{5CN)yhFf7(&w~vwxBvVV-CCTO`QlSi=Tr_2%5#kmC1r@cs3h;Y+Zwceci%u8g6z8 zu{~lBTmjB%mZlYZNn7*L<*g~>s5(jV!=JIoOa2F}qAADI%$=3CR;LqYxG}zIm;VXB z{-;2C|KgEfh=C5r1=bft_4ho|Ut+RUNo$#Zq3NIJSGE(C?n&AF;>QL>^R??N8l*1= zHhN@te=}K20?iWuwPA11mYFVB0uMIa;HPKoG1fQ}am6E`V5ye&e^BQU!uWPJr)$D| z?-+ot_M0c`9)EVJbzIe#ptpB^+ar2g$~VC}ruCaAx8IMWDh#jVsHX6OrNvpUDHYcb zNyfXc*x^I{7Zw!i^X^WgxTN78f1Do6Vx^ZoiWGIyBMuM9=2Dp!LcP}@etds@I#{Hs zK*P`!j8?HqnX~oY$BwsD-dCoEOz%zQsjJ}>a4J_Xc2@e8la#Q2kZP<1&M_^IjPJ=H zmRd?()+UVDkvQ*R`04uQS89^@?=e_Fj`DH^jr~lsVVu!heNgXgI?62n>%w~%C}Yq5 zW2g5bj(HjphR-LOq}LvH%MfuBTjoL*e(TxA!VhckzpF(MJ%pwUY7f>Eb(@_OA)Tc_ zLt_`ZWC?m|(YLOxrq@Dqote+n7H6Y$_nXn8U{<|@mehwII4 zZRv{4F(Z`Tl=Vwf%%-!Qi^+@P5yf8JtgAG+kZ>>ww&%osm0>4 zDus@*)Jk4t=!}-Ben4%1xjl)^z`Pq>*Y^3E-Y~j&FE=&F&1XNKi8 zS!c#;XJ8Yvc~iroI=c7g>k~3d%D!usbhRDB`vBul$T&VA`X%~?@^?c*#kx;qImN5) zK35e1RL^76a?b}zGCsOW+GD42ri|Tmhf@LL)2^zg)BUi68E+280#q0GiR3f?QwecA z|N9g|Sy|xsrN4zTvzZ6bvS}ys-zUGx$L_qDkLu6oL(AH9Ep%*;I)d~7t1*xgZjF5~ zH#?g#r+V1mx8A+S5EyKjq=ND%H^YMTft%e#0$})_U>6l$L=R^Jl06~&kPGq%<)-Pq z#780C+i#QoNmiW|(}VuCT1#3d?zA2<)H1y6{>UEr;6(d{#_M?gZ<7gvE+FoUr$WlJ zhEy8}1X8mxS{Fqr#!f)-D0mV)w|obRu>fsq7fLW^Z-1AgZG9cST;D zY)7Scl{v!(uYS~XC1K2YB88o5haFj_=2mpW#KEyoJSOWW)<^D{CV2qst;$ZvF6K}* z5yoV_5a~fgU!#P>#ni6W9S2$U6G6Owsi{wAEUTDl(D6=iout9mAmX4JWa563`jJ2m z15R^8ar~!`nW)GxD04}!Ds*M8-0n#dF|Wp!d!TH8<2I4rD(Z>-$4&REyE841aAv6` zAK4bK=PMfM!PECSCepnIOp6syO76IW#zgANH9k?-W5w34NcI#~xUa;5N+UiIb&fw#5Mo~I z>!Gu)W?ADhS^*SUg-zGbKBvceNrtKC`tz^Zpb?q}AgDwx7wk|Y6x(#K$P&%z-awhz z|CW}Hm6W3W&U|(_-pcM2TK>i@<^GRnHkpwfT$qtTp5?J+H6~SeR7bPU?>m)`SQe^y zoS)omaOg-Z{UE->>EtZp@L<~kl?@;{6xgsO6@dqg#Urry_uhl-i92ugpsGQERlrc* zzA@WwGd>Rbm{QVrGqdrJY-ma zuqPG9ov$gjzbqm^7uln+$*5jQ&LBlV#Sgn(*ILpi$6Jrcuy*MM+cD zd@pT4*_y{jlEyD`=qY(xqSV~ zbz9YVX2?7@YEtp=Qq)Iu_g2C?D>tkNdb#nl`@iOf#61N;yJ8$fdnB*1^R$G1?|-R%G_`vn{BJX1h^|}i_}>=ij#^a&y+Pey)e&7= zsagGQ!~!S~Kz-{%pf%U{g=k!~_oAPIgIm+7Tt3o0(iifSs z!U?rk}5q6zFo$ijSqT63iE!i9f74Z>DSN&F$#y>ye-c7%H zCz=YYC?e@hC(Sbx#&s)M;8Li-B%c$mAHb*aVB+MQbFm8|00{eQ?bZ)%pgfyJ=oaOj zj;IQi4{>b2{R8OfKqq9uE(a8XkawG@(5LKIyfp|{2QOFhK=>RJ8eH94l3a#X7a6%W z{ez4bYvs)KA}jQLJ|^!}UNCKU2pfSQPAf#5Z&0Scrg__tOCAH5dM>|1(CsAv(o|m4 z1^<14WygQ4(xX_iB;hkpi5TFGEc(5BZ=G*G{E$vc1b5B*od}oyUSeSS5Xp;^mQZ-} zr_I&>Cv*HClw9^G#2r0>?vZR%$0=zv2C`k)BuigPAO|uyCar`j&?u|afvcL0)s=u% z9-u7oX`Bf@A_g=5cX{{GNb)WHGkdMA-_cM|Y-X3I^x};DP)dV!WR;*M>w>qgdQpq_ zInC6KG&^|g9!7q$`b&GeQ|`TUDoBEfd%oEUp{~vutRt9PL@oauthRz#IUkw?cH3-t z%7&3CEyl_ys994+JgPfch;7N_Q_j;CY!kt0JGgqeRgl#3e^VeQ=}*xugz`QJ&zCPr z;Ez60bdl#r48*T7 zjip~QeVplDcWj%f8l%lSdn5-DL4Ld8`uSTiLbQ_{y5mzYb2kfQWS;ri!L}9)oxW=~ z{RjFv#!F!Y)q}OhN>w`SSa$7cp4Xy^T!-4XyN!6l50q#*HOL^p>fDOdvItK~P9ftj zEp$Q0SFg`BPe_yS+9W9h$8HdzVmARd9(Py4CzNX9-n@JiZ&u+Jp}dQ949 zo=O%$EiVny(EURzM7&M*7uIUVz|8~aZr0?W1nY^{uc!_GYN3U{$C7$t?G#Vn)@;Tx&`^rt z5E|ANocQ$(rKN7Npi%ySj&RH&zxl^>r};Cl0=h?YSGVgEdP^yXX@Spbd@(iRs0~To zdCOL#GhGA__>!Q*JxD;(H#w#PU$%2dodMGo?EcCIkPnuM)jjh|lD4~RU8^Q> zljz(n+m%6_L!MK?<0K~x&3PsR{!v#>rE+v?`}B}KE^+M>iB^t2TfggPy>QrUwn~Fr zYi%0$Zztl%YQ&2q^5R+Rmpd%Rz?=v z{)xNR2HXqQXH7=zvy=sdP@VM&F8v%Y?bl3LULgsx1vOTVb{$?e30aDRjoVZB@(gft z#WP;)xg1*?CAA=dt6XWVp0-MKfCr{!ZWs#1XPX1ajcu&^OYSKDr_RhY7jo2ElK)a) z8u3a7Lxn@@enW*JKsEGoa`6V#@ThY%;qJmr3y=*@fwA@z?@-dU?f#NnIog%@ydJv* ziEGo{+z3}Jd9DQXWg8$GFCHvZKSt|go@4r#jqCOv_+qyQ%x3oq$3b+dbnkRvl2*9z z|L`6^27dvwv!_{6tk zFj46R(UEg9^ms~ytH_`^@*bt{(&VvAHQ$k_; zW}z_Lb9jCA+;z4GH^qC&!|$+H>P44#+x1X*L|BA87v-ZGvc^DK{~bYuB6S zfQpbvBvZ{eL`|Ym0cXZYU|2TcAlaoba}R5_$_CmKZ18(E$1@pkqnE>@!sEo~>H(SL zK=-b;a+yM(gLevAO_gPa{_8*{S&`r z=JUyF?POiq6_Xs+FVi~8USdNsai`*=mVSY41OT0WJt7ibT4uvHGS^~8YS^e=EO?zT zC;q5b1ZP2NknN7?R$Cz;wnH7lWO?M46}#1lJY}6k;cv*X|Mk7RNb|tktoa`{I`$!b z={&)XcKx(|hY38>uc1#D>Fi%7W;>I+G*TFd_g-4A1ISH`GBD7+E3=t_8N&OSh&HxQ z;(-V^0eml2Mx=2G5u&HL$nEV@o-@~oZET+q#`TG)y~qEq&s9sC&mQr}Z`h5UPTd&q zS)mNo{AuKO4E|DI_0k$VAij?6?;_@iKPh%Gi(=Z+TR*2A!Vib+@Sz-F^pmm8} z&@b`lRwSE`Zt-A8?RQKi2%ZvDLljx6)76$uTTI<)#oq5GnlA_jls+ymA5A~%om&(; zg++WSz*Ez2Jo%&+H_G16*7NgbQ-efgQQ`QNMzydu=1Zm=TeH9QG$ZC-K3?Fu(RP3( zrukUp!>WIO;7V)bWQigzp9u`uZ)pFO?l+eNfkUM_uCoE_gZS(7;%J+l3Sz*i&sF04 zX$0h9%E-?`ndq2BCCyX0W%v60*GyG4FBHSJ#Z2K6`^0r*K=>CFewEhnG4OQ=hamyl zttBn!gmkr_At1Yz{*P54sy+ItbW`1<5+ho*c>hSr2{$4`uF~-GuKW_nReB4f2 zpL9B~nb^NE<^P1*-Qvx(b;?(`Ci#6icRto|kmsZhL>>U@Txp6y2fGx;+ERh`PVBtlHJoc8p&+R$7O-~Rsh!Lq@jQ|EPD5#wJXJe~R4}bfoznO}I zZ<1i7Du_YYpiBp>f>p;v3ojV}fttot^M zf)lghTm(V8Oeci}uI$e+wJhLmnih8Ijt@&fBA+yv9&k(q$aQFMvbud_(iXDgw^UA{ zthH>T*+_})Jhy%X=I3=rsPEi%Z#vdp2WO)3@EobL!jGABhef3{4OPPH6`o&~)!(g` zg1s72@KE0u%6$%`<-aQ0DLh&z{E$8&8?Bz$gS;03RHMV&PTbTx>YXN7P{@3t@tf7^E5C ze$ZiH+u-ZdWDT(w$Uod@Nys^NcVMIqyBEKtr#$wt4%%d|?6j9M*oh6y<;`-6{Fn;c z>0azc&K5subXX7_Mpv7E8Ce+ORV|1nqm$Yb&zIXxCjSmjSJav>L5-9-&Mtf{lmJu$ zI;LMIxS@c57>{6%P$T;n+NIRW=riiic-WFZojn39y1}Q6kQnU2isb9wv z#=CV~^b2h=vJ995U$mta@lid%hao45FYu3?VUXeM?0LH^zY*)Q{r1N5UdY|Az4Gm5$<6dM0Sl0fB>ra|O-SeD70RERk0EeK+P2TS~X(0r^1Z(!X6 z=N9f7`Izdt1<^pArG?ZYBdZD!E|Fh`)A?gHSUWU|T7$raY9!HK`_$-aA3H0JOjumc zhU)RAs$k{e%zM2{Wi#+4y|;HJBV5Hg_G>CG%+~-I8=}IX&YnUOhE8ewYIiy zkr;DkD_gfGcZw1Pu8vCIUcQ(;0vqj-V9HXjzaL$lcG$aB48@^mnH7bDlU6+yNGVR-!uPE zvc~}n`nn*xbaS8Cv1(jjP%F+xFu6f;*-xEYFcuN8Twdb(OX150cZ`mgdL5*I9JDsk zkcbPbdM)*+)c#(_sP>R{eVUcqqo1p{F3KHNIgfaV`(>1L-Z$aiJsVMD$w#exMCPa| z7j+iN3~n=Bf!ofDLsLuibhUd%BlR)0&QTKy@=qC@x}gEO6hzRv$?cHdKJ__k?EM>` z#C<_q&_?Nbs)*@k6g7Dqh*idyfPGtuGKsA5L9AgVGuUvfRy4_Yav^c$^+<`^mK?45 zK%fJH5tS*ikaRKYDmjfmj;$h922pnI%+uf}+T3$XsNY#H+9*q+DVOJ?*Inyy7JD%| zY;3zkO}@ED^Iw#Hip^E#4LwoeQK#7$0;3acQ;Lw-Qq;DfMRizKUVP?I(}$5=Q~u>s zzj=)cEW;dd5{EOd9AeflMSHnrone|39F>t2ioNV^d#|-;9XKG-k_rAAUGp-z2`O$^ z`LJH#+r}LH)>8dvnvKz660UPtPZ_Y_66#W+R}F$0v0yi>IR~b#7cpRAAh{zfn!@!ugE2r#ovaR`4o3%lnV0D8^sBrej)c zgFh>KtF=h3PKI5+9c*LbHI$chfWaJXsu>yaA9ICliBeE z5$`Y3UIlqG&w*S;^ZaCRnZK5iBrQ;wg*;4iYDJd5so;6v>HtY_H|X4F;J{m4h!`?Odfa$%eApx1z18GAdmqTr+Dj$ie=l;c9bP%vxPIqZYk&o{KGq86UZVEa|6Eujv-jq#t*K9boy=4mm>RbuCZulSUH2ckC*g&a z(vldd}&B&oUu4VQRnceHDZ=;TopU4^x$Q&Su{Apax@CRT+doefP$D|TP<7kDDH zJG)EQx%C_?O_PMZUs6X`>UXbfS|-9PkZ+i*JJAu#u_d4-%5gwCM-rIHWufcloLjOp zf+0y3fxXQh%c&U^`D8?TLbceo%0|*e!m>G&(Bb0#4E9ri@`r`BSNePND=|c4Du~8? z%S6bQrW=%Xqonlc>9`4_ONk0hk@VG|CNPF;J3LAZ`qDs4QDYeL<_`Hwhx9jO$N2OL zkhX>y=4wpba-now6pPDm^ulbV@HMcwLConZTPd*pIGTcJUVtg<$u(vcIyG zlObn}hWlNRP_W7lp0_rtR?WsTn^!@O2md9W(A!H^0{`W%ODw@Wnz} zF@jnP@b5YP>zDg&(@xq%7N=DOL`VDP+>oeH{cqq7zrKfN~CESJXgc@3ppH#NS?i$Cpt;v@~Gji?HSqp7uHg1 zy#M$#tB6v&Vx2-8!n&Aws@9lY$vV5O28G$_8mKsZP4`x*MFHE?=lVD{h)=Gb+}!iyf^gUc~|xUcgqTyfckN1!Gyt zr8f${O7|<+1yie@oLpyVpg+>ZCOVvK16JRSnhZwwnIQ<@rAmynme6}bfp**{CA3#= zN@@=U0P6R=W)o%m5Y4?XM6SW^y@+Yn5P;LGp3|_#>1%eE^b10P93zXO6TKEd!#XhUljhyjD@}X~y`U|WblD^eFh6IB3H5VIXT)3J$x)1M>^#bqBDc6^y$3 z)@@;~_jDZ9Cfc###n4^$y}3No-0NJ5-p*vu*;pr^#+h5Z`~JF*%g+o377kfhWp#jz zaZQH8$2GDV2q04ltOjb%X3uem_tzVP%@no37?u-fpX=c}6QgBq3p}+Ehx0OqGCc%; ztG!4NVs>7W7ZJGLyq>holTl$Vw_nnKZ!u#L|2257R?J1@6xO9uo1{;LvQ-N;mK%`Cx?uphPfp#O@(gM#cw94;3YOz$f-z(WzV@O5%ITmCdsjmtC;|1_ zKGXU>J2?geW#+KvuqSR4gBo32CKSh3@&>7qU72dpYLWTjX=33yQSXGD?F1lKScR7C zteRHC88|+m<=ufdn+v(az95Zd1DKf(TDja`aqTU0NxFf1lxgAf7)MqX;uMf zM4n8`WC327!DrZsnzS8mLk}^6&bB3!oshBDoET5KpZXkL6nKR{P1fa6J`v;x7+#kA zm$pwya*C93OwO=D;Ktv_QIZRP$?^pscto88?JdxJ?{2+fO$G>LAYZ*O2Q2H>ZG8w>c2=^&-YR&P3eb zE)3?y2TX*Xwr+x1i6a+}##aw5qFQDv!<%(Zs_$y=irDxfBIsEejk&!_^QK;2Z^oX5VBo3IVU-!f*;6^CdFCbi$HD{#RcYxM> zHL@*Dkngw#P?WnHl+;Ge9qGTC`b7=fhi$siekg``px1RO#5|-ZZ%l~esW957d$;)0 zW|N%?M1caz#cE}oQa*r40EV-~*@QXlsrX;-Q+sAH_WdZlm&Xkry>(-)Q@Dwmh%$tx z@qT6@BNA$*ov3Z;zuVpj9FOlUpLHZoXFDLr%?3C%3^lh(u3WcwMOeK2{`--}!(7w^ z7r?7c{lIrzw`Y2H>1KUf>>0X(<29D!`vBlFqWJzwY+K(Yc7>{-D0=Pc9ZJ@+HJ|1Y z`&fy%)?5%+g(b{${7zfqm3-K|_NgCHN^?qq-9`RezomYXS-cvjnBVHbha@TEXq0Pi z!Url1aAtigooACogWIYG{BA2-d3bqLWRC6cpqPkneLT_s&_cylcTJAtlf(73!~!8h#Wjs@fCP^P_hABX4nE8d219^(uFDXJ8u{k3dOFv~7d#-r zyxH9{hZ)IDI*ySI<>ynnPevI$cU63T&fK3|RshP$d0bt= z7egHU{6@hA*#_j?)=dCI#G1*vjhj<^w{YFVA>n->1v5I!6RqO0A_hd=KL6=eKpb-$ zaGM)l0XLnXx7LHrtsfO~9dpT_yM?0Pd;E4k6T~~2;xqC;y@nwnvY+fMx2|Q0YojDa znImMly7&`W9y`7nb zu*-)3u2Skhp{wrIDHhb!jUhD3G!M>RI4L3^5-O}6&#XyK&p-wg$ovh?^=d>#FIItb z6e)1~N{90PQmG)F{XKZQ_OMCf^iGmPx??z|3~<93Kb1LBjybaP#(x@N%3WXN(>5a- zp^r%;3Dyk0xAFpkJ(F<1GsAA!(wTDm(aAE|HC|nxJ|}8u%>7KQ5cl^nnDF$&pHGZ6 z=j_*7MG)skW?~_MD`m^!HT{P8t+VoH=o(z(Q%Rw#eqwVwb`}WD`3=u+Kqnjz>@ECr z%R+0*;#&aH*m{lf%QB0vS*gCJftX{mzq}rkt#vo}Mh;!5#J>Jev`XK36+XU(F@~!B z{bjyyi2sb=9djIE zFaibwuTtJKLm4qu&e^svJD#158si1JrzB8@D73KE$SE4jxt(974tm4YUQWZ`+z^vO zuBM6KLo1@z4jWj4?o$@7AxUU%If=bHh|*)I0mqhS(4M-$TBnosy}_X_;@&$VkFFCf zVe*+AhFbo^NqT=eh!%sQ%#aXsXMJogw13W(?gJ`Yp~3AF@4gR?z{RW0HO9e??AY`0 zR9uD@x8F9WF~f~(!!TveBW0qR`|K+l*5Af)Ov6W8ddFq|*>-?Tf{k;qn+?SS`6O>F zytYg?=)5RCoPN}FgZW3UPew(M+?vZ`S}B3r=)iaoPZR!ut|aQE&|1ekE5{&VuFePr zmBGfT2AsjjjEDTi2-KctD*PKo#pUS$>i_pN83~dAvjtGH4Fh6ho2KICY@eR0_-gH@ zE*%C8N>MQwifz&_RNnPs-FWo0*A_q=Pwr$;4K_TnH(EC7TQ?6cYn_Pe#fpVj8Gh0ge=n?u z_6yosCGa6nbb}5&H`ww5WR5PE=UXKjAq?E0-CS*R|a$7DC&3# zLj@QNq4}5X_Zf?Bg~fbnz@I1Dhb7cV{Y!iDzqWIe#Lh^3J*-K36O~XryE9yD7#!w;E-!M9l+KGkGJcrD1o(ZqmUW?xYi(i{?4tFDKPhp;` z1>Jf;Fm^`1r~2R-McnVw`!|j&!L$7rbNW`A^fB@q-^RPTg&E;Fjjt{S8B&>XfW4~F zG-RSe<;Km(`hH>yp$kHo2E4P@>C#T=%8=0235fw}@-5(f9lWeoq#cry<%YU&T6b9P zL-MH4%zBaBXdhawQcm(Hxq7&*@xpG!M#Zor^=EYL?MVsadY!XBW3l?4&tU43Ov@$W zR&GJ7Wu#S0u-5VUXA`Pg#t@oM=KNY)_U!Bor?swbA2wpg?_ktpAL9aHo(E}Wi0DnE_*>EhGMiw`UjY%U1%v%Hp3-|Mi4FSzf z`Rojh?!3Dv_cyA%U}n82XG@hYgFiCd?V<{}ozow2ucUB)y)i0Ug@zqDLf|NtMI+)A{`AeEvV{d=3x|gw=`hvut4}z@Iy} LbpI~UunhY@Ot(X7 literal 0 HcmV?d00001 diff --git a/bin-release/web/191201225322/resource/assets/bg2.png b/bin-release/web/191201225322/resource/assets/bg2.png new file mode 100644 index 0000000000000000000000000000000000000000..384b2accf1ba75237c3877d24843c92353391a5a GIT binary patch literal 182553 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

+
+
+ + + + \ No newline at end of file diff --git a/libs/modules/assetsmanager/assetsmanager.d.ts b/libs/modules/assetsmanager/assetsmanager.d.ts new file mode 100644 index 0000000..97a9ee1 --- /dev/null +++ b/libs/modules/assetsmanager/assetsmanager.d.ts @@ -0,0 +1,1522 @@ +declare namespace RES { + /** + * Version control loading interface + * @version Egret 2.4 + * @platform Web,Native + * @includeExample extension/version/VersionControl.ts + * @language en_US + */ + /** + * 版本控制加载的接口 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample extension/version/VersionControl.ts + * @language zh_CN + */ + interface IVersionController { + /** + * Get the version information data.
+ * Before calling this method requires the application of any resource load, we recommend starting at the application entry class (Main) The first call processing. This method is only responsible for acquiring version information, is not responsible for downloaded resources. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 获取版本信息数据。
+ * 这个方法的调用需要在应用程序进行任何资源加载之前,建议在应用程序的入口类(Main)的开始最先进行调用处理。此方法只负责获取版本信息,不负责资源的下载。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + init(): Promise; + /** + * Get the actual URL of the resource file.
+ * Because this method needs to be called to control the actual version of the URL have the original resource files were changed, so would like to get the specified resource file the actual URL.
+ * In the development and debugging phase, this method will directly return value passed. + * @param url Url used in the game + * @returns Actual loaded url + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 获取资源文件实际的URL地址。
+ * 由于版本控制实际已经对原来的资源文件的URL进行了改变,因此想获取指定资源文件实际的URL时需要调用此方法。
+ * 在开发调试阶段,这个方法会直接返回传入的参数值。 + * @param url 游戏中使用的url + * @returns 实际加载的url + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + getVirtualUrl(url: string): string; + } + /** + * Manage version control class + * @version Egret 2.4 + * @platform Web,Native + * @event egret.Event.COMPLETE Version control loading is complete when thrown + * @event egret.IOErrorEvent.IO_ERROR Version control failed to load when thrown + * @includeExample extension/version/VersionControl.ts + * @language en_US + */ + /** + * 管理版本控制的类 + * @version Egret 2.4 + * @platform Web,Native + * @event egret.Event.COMPLETE 版本控制加载完成时抛出 + * @event egret.IOErrorEvent.IO_ERROR 版本控制加载失败时抛出 + * @includeExample extension/version/VersionControl.ts + * @language zh_CN + */ + interface VersionController extends IVersionController { + } + /** + * @version Egret 2.4 + * @platform Web,Native + */ + let VersionController: { + /** + * Constructor initialization + * @language en_US + */ + /** + * 初始化构造函数 + * @language zh_CN + */ + new (): VersionController; + }; +} +declare type ResourceRootSelector = () => T; +declare type ResourceNameSelector = (file: string) => string; +declare type ResourceMergerSelector = (file: string) => { + path: string; + alias: string; +}; +declare module RES { + /** + * Get resource information through file path + * @param path file path + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 通过文件路径获取资源信息 + * @param path 文件路径 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function getResourceInfo(path: string): File | null; + /** + * @private + */ + interface ResourceInfo { + url: string; + type: string; + root: string; + crc32?: string; + size?: number; + extra?: 1 | undefined; + name: string; + soundType?: string; + scale9grid?: string; + groupNames?: string[]; + promise?: Promise; + } + /** + * @private + */ + interface Data { + resourceRoot: string; + mergeSelector: ResourceMergerSelector | null; + fileSystem: FileSystem; + groups: { + [groupName: string]: string[]; + }; + alias: { + [aliasName: string]: string; + }; + loadGroup: string[]; + } + /** + * @class RES.ResourceConfig + * @classdesc + * @private + */ + class ResourceConfig { + config: Data; + constructor(); + init(): Promise; + /** + * 根据组名获取组加载项列表 + * @method RES.ResourceConfig#getGroupByName + * @param name {string} 组名 + * @returns {Array} + */ + getGroupByName(name: string): ResourceInfo[]; + __temp__get__type__via__url(url_or_alias: string): string; + getResourceWithSubkey(key: string): { + r: ResourceInfo; + key: string; + subkey: string; + } | null; + getKeyByAlias(aliasName: string): string; + getResource(path_or_alias: string): ResourceInfo | null; + /** + * 创建自定义的加载资源组,注意:此方法仅在资源配置文件加载完成后执行才有效。 + * 可以监听ResourceEvent.CONFIG_COMPLETE事件来确认配置加载完成。 + * @method RES.ResourceConfig#createGroup + * @param name {string} 要创建的加载资源组的组名 + * @param keys {egret.Array} 要包含的键名列表,key对应配置文件里的name属性或sbuKeys属性的一项或一个资源组名。 + * @param override {boolean} 是否覆盖已经存在的同名资源组,默认false。 + * @returns {boolean} + */ + createGroup(name: string, keys: Array, override?: boolean): boolean; + /** + * 添加一个二级键名到配置列表。 + * @method RES.ResourceConfig#addSubkey + * @param subkey {string} 要添加的二级键名 + * @param name {string} 二级键名所属的资源name属性 + */ + addSubkey(subkey: string, name: string): void; + addAlias(alias: any, key: any): void; + addResourceData(data: { + name: string; + type: string; + url: string; + root?: string; + extra?: 1 | undefined; + }): void; + removeResourceData(data: { + name: string; + type?: string; + url: string; + root?: string; + extra?: 1 | undefined; + }): void; + } +} +declare module RES { + /** + * @class RES.ResourceLoader + * @classdesc + * @private + */ + class ResourceLoader { + /** + * 当前组加载的项总个数,key为groupName + */ + private groupTotalDic; + /** + * 已经加载的项个数,key为groupName + */ + private numLoadedDic; + /** + * 加载失败的组,key为groupName + */ + private groupErrorDic; + private retryTimesDic; + maxRetryTimes: number; + private reporterDic; + private dispatcherDic; + private failedList; + private loadItemErrorDic; + private errorDic; + /** + * 资源优先级队列,key为资源,value为优先级 + */ + private itemListPriorityDic; + /** + * 资源是否在加载 + */ + private itemLoadDic; + private promiseHash; + /** + * 延迟加载队列,getResByUrl ,getResAsync等方法存储队列 + */ + private lazyLoadList; + pushResItem(resInfo: ResourceInfo): Promise; + /** + * 加载队列,存储组的队列 + */ + pushResGroup(list: ResourceInfo[], groupName: string, priority: number, reporter?: PromiseTaskReporter): Promise; + /** + * 更新组的优先级顺序 + * @param list 存储数据的队列 + * @param priority 优先级 + */ + private updatelistPriority(list, priority); + /** + * 搜索单项资源的优先级 + * @param item 单项资源 + */ + private findPriorityInDic(item); + private loadingCount; + /** + * 最大线程数目 + */ + thread: number; + /** + * 加载下一项资源,线程控制 + */ + private loadNextResource(); + /** + * 加载单向资源 + */ + private loadSingleResource(); + /** + * 获取下一个待加载项 + */ + private getOneResourceInfoInGroup(); + /** + * 设置组的加载进度,同时返回当前组是否加载完成 + * @param groupName 组名 + * @param r 加载完成的资源 + */ + private setGroupProgress(groupName, r); + /** + * 加载组的最后一项,同时派发事件 + * @param groupName 组名 + * @param lastError 最后一项是否成功,此项为错误信息 + */ + private loadGroupEnd(groupName, lastError?); + /** + * 删除事件派发器,Promise的缓存,返回事件派发器 + * @param groupName 组名或是root+name + */ + private deleteDispatcher(groupName); + /** + * 加载资源 + * @param r 资源信息 + * @param p 加载处理器 + */ + private loadResource(r, p?); + /** + * 释放资源 + * @param r 资源信息 + */ + unloadResource(r: ResourceInfo): boolean; + } +} +declare module RES { +} +declare module RES { + type GetResAsyncCallback = (value?: any, key?: string) => any; + /** + * Convert the file name of the resource to the Key value used in the project. + * @param url Resource Name. + * @returns The key value used in the project + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 将资源的文件名称转换为项目中所使用的Key值。 + * 在加载合并图集的时候使用,例如图集加载A_json,需要加载对应A_png,这里就是转换的机制 + * 一般项目中无需更改,只有没有使用默认的key和文件对应的需要修改 + * @param url 资源名称。 + * @returns 项目中所用的key值 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function nameSelector(url: any): string; + /** + * Get the read type of the file. + * When using getResByUrl does not specify the type of the read file, it will find the corresponding type according to this method. + * File types not found are loaded by default in binary format + * @param path file path. + * @returns Processor type used to read the file + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 获取文件的读取类型 + * 在使用getResByUrl没有指定读取文件的类型,会根据这个方法寻找对应的类型 + * 没有查找到的文件类型以二进制格式默认加载 + * @param path 文件路径 + * @returns 读取文件所用的Processor类型 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function typeSelector(path: string): string; + /** + * Conduct mapping injection with class definition as the value, Deprecated. + * @deprecated + * @see RES.processor.map + * @language en_US + */ + /** + * 以类定义为值进行映射注入,已废弃。 + * @deprecated + * @see RES.processor.map + * @language zh_CN + */ + function registerAnalyzer(type: string, analyzerClass: any): void; + /** + * Set whether it is compatible mode + * When the value is true, the assetsManager will output the design of Res. When it is false, all the loaded resources will be returned as promises. + * The default is false, run in strict assetsManager mode + * @version Egret 5.2.9 + * @platform Web,Native + * @language en_US + */ + /** + * 设置是否为兼容模式 + * 当值为true时,assetsManager会以Res的设计输出,当为false时候,所有的加载资源都会以promise的方式返回 + * 默认是false,以严格assetsManager方式运行 + * @version Egret 5.2.9 + * @platform Web,Native + * @language zh_CN + */ + function setIsCompatible(value: boolean): void; + /** + * Load configuration file and parse. + * @param url The url address of the resource config + * @param resourceRoot The root address of the resource config + * @returns Promise + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 加载配置文件并解析。 + * @param url 资源配置的url地址 + * @param resourceRoot 资源配置的根地址 + * @returns Promise + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function loadConfig(url: string, resourceRoot: string): Promise; + /** + * Load a set of resources according to the group name. + * @param name Group name to load the resource group. + * @param priority Load priority can be negative, the default value is 0. + *
A low priority group must wait for the high priority group to complete the end of the load to start, and the same priority group will be loaded at the same time. + * @param reporter Resource group loading progress prompt + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 根据组名加载一组资源。 + * @param name 要加载资源组的组名。 + * @param priority 加载优先级,可以为负数,默认值为 0。 + *
低优先级的组必须等待高优先级组完全加载结束才能开始,同一优先级的组会同时加载。 + * @param reporter 资源组的加载进度提示 + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function loadGroup(name: string, priority?: number, reporter?: PromiseTaskReporter): Promise; + /** + * Check whether a resource group has been loaded. + * @param name Group name。 + * @returns Is loading or not. + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 检查某个资源组是否已经加载完成。 + * @param name 组名。 + * @returns 是否正在加载。 + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function isGroupLoaded(name: string): boolean; + /** + * A list of groups of loading is obtained according to the group name. + * @param name Group name. + * @returns The resource item array of group. + * @see RES.ResourceItem + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 根据组名获取组加载项列表。 + * @param name 组名。 + * @returns 加载项列表。 + * @see RES.ResourceItem + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function getGroupByName(name: string): Array; + /** + * Create a custom load resource group, note that this method is valid only after the resource configuration file is loaded. + *
You can monitor the ResourceEvent.CONFIG_COMPLETE event to verify that the configuration is complete. + * @param name Group name to create the load resource group. + * @param keys To be included in the list of key keys, the corresponding configuration file in the name or sbuKeys property one or a resource group name. + * @param override Is the default false for the same name resource group already exists. + * @returns Create success or fail. + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 创建自定义的加载资源组,注意:此方法仅在资源配置文件加载完成后执行才有效。 + *
可以监听 ResourceEvent.CONFIG_COMPLETE 事件来确认配置加载完成。 + * @param name 要创建的加载资源组的组名。 + * @param keys 要包含的键名列表,key 对应配置文件里的 name 属性或 sbuKeys 属性的一项或一个资源组名。 + * @param override 是否覆盖已经存在的同名资源组,默认 false。 + * @returns 是否创建成功。 + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function createGroup(name: string, keys: Array, override?: boolean): boolean; + /** + * Check whether the configuration file contains the specified resources. + * @param key A sbuKeys attribute or name property in a configuration file. + * @returns Whether you have the specified resource + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 检查配置文件里是否含有指定的资源。 + * @param key 对应配置文件里的 name 属性或 sbuKeys 属性的一项。 + * @returns 是否拥有指定资源 + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function hasRes(key: string): boolean; + /** + * The synchronization method for obtaining the cache has been loaded with the success of the resource. + *
The type of resource and the corresponding return value types are as follows: + *
RES.ResourceItem.TYPE_BIN : ArrayBuffer JavaScript primary object + *
RES.ResourceItem.TYPE_IMAGE : img Html Object,or egret.BitmapData interface。 + *
RES.ResourceItem.TYPE_JSON : Object + *
RES.ResourceItem.TYPE_SHEET : Object + *
1. If the incoming parameter is the name of the entire SpriteSheet is returned is {image1: Texture, "image2": Texture}. + *
2. If the incoming is "sheet.image1", the return is a single resource. + *
3. If the incoming is the name of the "image1" single resource, the return is a single resource. + * But if there are two SpriteSheet in a single picture of the same name, the return of the image after the load. + *
RES.ResourceItem.TYPE_SOUND : HtmlSound Html Object + *
RES.ResourceItem.TYPE_TEXT : string + * @param key A subKeys attribute or name property in a configuration file. + * @see RES.ResourceItem + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 同步方式获取缓存的已经加载成功的资源。 + *
资源类型和对应的返回值类型关系如下: + *
RES.ResourceItem.TYPE_BIN : ArrayBuffer JavaScript 原生对象 + *
RES.ResourceItem.TYPE_IMAGE : img Html 对象,或者 egret.BitmapData 接口。 + *
RES.ResourceItem.TYPE_JSON : Object + *
RES.ResourceItem.TYPE_SHEET : Object + *
1. 如果传入的参数是整个 SpriteSheet 的名称返回的是 {"image1":Texture,"image2":Texture} 这样的格式。 + *
2. 如果传入的是 "sheet.image1",返回的是单个资源。 + *
3. 如果传入的是 "image1" 单个资源的名称,返回的是单个资源。但是如果有两张 SpriteSheet 中有单个图片资源名称相同,返回的是后加载的那个图片资源。 + *
RES.ResourceItem.TYPE_SOUND : HtmlSound Html 对象 + *
RES.ResourceItem.TYPE_TEXT : string + * @param key 对应配置文件里的 name 属性或 subKeys 属性的一项。 + * @see RES.ResourceItem + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function getRes(key: string): any; + /** + * Asynchronous mode to get the resources in the configuration. As long as the resources exist in the configuration file, you can get it in an asynchronous way. + * @param key A sbuKeys attribute or name property in a configuration file. + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 异步方式获取配置里的资源。只要是配置文件里存在的资源,都可以通过异步方式获取。 + * @param key 对应配置文件里的 name 属性或 sbuKeys 属性的一项。 + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function getResAsync(key: string): Promise; + /** + * Asynchronous mode to get the resources in the configuration. As long as the resources exist in the configuration file, you can get it in an asynchronous way. + * @param key A sbuKeys attribute or name property in a configuration file. + * @param compFunc Call back function. Example:compFunc(data,key):void. + * @param thisObject This pointer of call back function. + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 异步方式获取配置里的资源。只要是配置文件里存在的资源,都可以通过异步方式获取。 + * @param key 对应配置文件里的 name 属性或 sbuKeys 属性的一项。 + * @param compFunc 回调函数。示例:compFunc(data,key):void。 + * @param thisObject 回调函数的 this 引用。 + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function getResAsync(key: string, compFunc: GetResAsyncCallback, thisObject: any): Promise | void; + /** + * Access to external resources through the full URL. + * @param url The external path to load the file. + * @param compFunc Call back function. Example:compFunc(data,url):void。 + * @param thisObject This pointer of call back function. + * @param type File type (optional). Use the static constants defined in the ResourceItem class. If you do not set the file name extension. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 通过完整URL方式获取外部资源。 + * @param url 要加载文件的外部路径。 + * @param compFunc 回调函数。示例:compFunc(data,url):void。 + * @param thisObject 回调函数的 this 引用。 + * @param type 文件类型(可选)。请使用 ResourceItem 类中定义的静态常量。若不设置将根据文件扩展名生成。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function getResByUrl(url: string, compFunc?: Function, thisObject?: any, type?: string): Promise; + /** + * Destroy a single resource file or a set of resources to the cache data, to return whether to delete success. + * @param name Name attribute or resource group name of the load item in the configuration file. + * @param force Destruction of a resource group when the other resources groups have the same resource situation whether the resources will be deleted, the default value true. + * @returns Are successful destruction. + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 销毁单个资源文件或一组资源的缓存数据,返回是否删除成功。 + * @param name 配置文件中加载项的name属性或资源组名。 + * @param force 销毁一个资源组时其他资源组有同样资源情况资源是否会被删除,默认值 true。 + * @see #setMaxRetryTimes + * @returns 是否销毁成功。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function destroyRes(name: string, force?: boolean): boolean; + /** + * Sets the maximum number of concurrent load threads, the default value is 4. + * @param thread The number of concurrent loads to be set. + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 设置最大并发加载线程数量,默认值是 4。 + * @param thread 要设置的并发加载数。 + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function setMaxLoadingThread(thread: number): void; + /** + * Sets the number of retry times when the resource failed to load, and the default value is 3. + * @param retry To set the retry count. + * @includeExample extension/resource/Resource.ts + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 设置资源加载失败时的重试次数,默认值是 3。 + * @param retry 要设置的重试次数。 + * @includeExample extension/resource/Resource.ts + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function setMaxRetryTimes(retry: number): void; + /** + * Add event listeners, reference ResourceEvent defined constants. + * @param type Event name。 + * @param listener Listener functions for handling events. This function must accept the Event object as its only parameter, and can't return any results, + * As shown in the following example: function (evt:Event):void can have any name. + * @param thisObject The this object that is bound to a function. + * @param useCapture Determine the listener is running on the capture or running on the target and the bubbling phase. Set useCapture to true, + * then the listener in the capture phase processing events, but not in the target or the bubbling phase processing events. + * If useCapture is false, then the listener only in the target or the bubbling phase processing events. + * To listen for events in all three stages, please call addEventListener two times: once the useCapture is set to true, once the useCapture is set to false. + * @param priority Event listener priority. Priority is specified by a 32 - bit integer with a symbol. The higher the number, the higher the priority. + * All listeners with a priority for n will be processed before the -1 n listener. + * If two or more listeners share the same priority, they are processed in accordance with the order of their added. The default priority is 0. + * @see RES.ResourceEvent + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 添加事件侦听器,参考 ResourceEvent 定义的常量。 + * @param type 事件的类型。 + * @param listener 处理事件的侦听器函数。此函数必须接受 Event 对象作为其唯一的参数,并且不能返回任何结果, + * 如下面的示例所示: function(evt:Event):void 函数可以有任何名称。 + * @param thisObject 侦听函数绑定的 this 对象。 + * @param useCapture 确定侦听器是运行于捕获阶段还是运行于目标和冒泡阶段。如果将 useCapture 设置为 true, + * 则侦听器只在捕获阶段处理事件,而不在目标或冒泡阶段处理事件。如果 useCapture 为 false,则侦听器只在目标或冒泡阶段处理事件。 + * 要在所有三个阶段都侦听事件,请调用 addEventListener 两次:一次将 useCapture 设置为 true,一次将 useCapture 设置为 false。 + * @param priority 事件侦听器的优先级。优先级由一个带符号的 32 位整数指定。数字越大,优先级越高。优先级为 n 的所有侦听器会在 + * 优先级为 n -1 的侦听器之前得到处理。如果两个或更多个侦听器共享相同的优先级,则按照它们的添加顺序进行处理。默认优先级为 0。 + * @see RES.ResourceEvent + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function addEventListener(type: string, listener: (event: egret.Event) => void, thisObject: any, useCapture?: boolean, priority?: number): void; + /** + * Remove event listeners, reference ResourceEvent defined constants. + * @param type Event name。 + * @param listener Listening function。 + * @param thisObject The this object that is bound to a function. + * @param useCapture Is used to capture, and this property is only valid in the display list. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 移除事件侦听器,参考ResourceEvent定义的常量。 + * @param type 事件名。 + * @param listener 侦听函数。 + * @param thisObject 侦听函数绑定的this对象。 + * @param useCapture 是否使用捕获,这个属性只在显示列表中生效。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function removeEventListener(type: string, listener: (event: egret.Event) => void, thisObject: any, useCapture?: boolean): void; + /** + * Adding a custom resource configuration. + * @param data To add configuration. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 自定义添加一项资源配置。 + * @param data 要添加的配置。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function $addResourceData(data: { + name: string; + type: string; + url: string; + }): void; + /** + * Returns the VersionController + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 获得版本控制器. + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function getVersionController(): VersionController; + /** + * Register the VersionController + * @param vcs The VersionController to register. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 注册版本控制器,通过RES模块加载资源时会从版本控制器获取真实url + * @param vcs 注入的版本控制器。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function registerVersionController(vcs: VersionController): void; + /** + * Convert the address of the loaded resource (via version controller conversion) + * @param url path to the original resource + * @returns converted address + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 转换加载资源的地址(经过版本控制器的转换) + * @param url 原始资源的路径 + * @returns 转换后的地址 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function getVirtualUrl(url: any): any; + /** + * @private + */ + class Resource extends egret.EventDispatcher { + vcs: VersionController; + isVcsInit: boolean; + constructor(); + registerVersionController(vcs: VersionController): void; + /** + * 开始加载配置 + * @method RES.loadConfig + */ + loadConfig(): Promise; + /** + * @private + * 版本控制器加载后的加载配置 + */ + private normalLoadConfig; + /** + * 检查某个资源组是否已经加载完成 + * @method RES.isGroupLoaded + * @param name {string} + */ + isGroupLoaded(name: string): boolean; + /** + * 根据组名获取组加载项列表 + * @method RES.getGroupByName + * @param name {string} + */ + getGroupByName(name: string): Array; + /** + * 根据组名加载一组资源 + * @method RES.loadGroup + * @param name {string} + * @param priority {number} + */ + loadGroup(name: string, priority?: number, reporter?: PromiseTaskReporter): Promise; + private _loadGroup(name, priority?, reporter?); + /** + * 创建自定义的加载资源组,注意:此方法仅在资源配置文件加载完成后执行才有效。 + * 可以监听ResourceEvent.CONFIG_COMPLETE事件来确认配置加载完成。 + * @method RES.ResourceConfig#createGroup + * @param name {string} 要创建的加载资源组的组名 + * @param keys {egret.Array} 要包含的键名列表,key对应配置文件里的name属性或一个资源组名。 + * @param override {boolean} 是否覆盖已经存在的同名资源组,默认false。 + * @returns {boolean} + */ + createGroup(name: string, keys: Array, override?: boolean): boolean; + /** + * 检查配置文件里是否含有指定的资源 + * @method RES.hasRes + * @param key {string} 对应配置文件里的name属性或subKeys属性的一项。 + * @returns {boolean} + */ + hasRes(key: string): boolean; + /** + * 通过key同步获取资源 + * @method RES.getRes + * @param key {string} + * @returns {any} + */ + getRes(resKey: string): any; + /** + * 通过key异步获取资源 + * @method RES.getResAsync + * @param key {string} + * @param compFunc {Function} 回调函数。示例:compFunc(data,url):void。 + * @param thisObject {any} + */ + getResAsync(key: string): Promise; + getResAsync(key: string, compFunc: GetResAsyncCallback, thisObject: any): Promise; + /** + * 通过url获取资源 + * @method RES.getResByUrl + * @param url {string} + * @param compFunc {Function} + * @param thisObject {any} + * @param type {string} + */ + getResByUrl(url: string, compFunc?: Function, thisObject?: any, type?: string): Promise; + /** + * 销毁单个资源文件或一组资源的缓存数据,返回是否删除成功。 + * @method RES.destroyRes + * @param name {string} 配置文件中加载项的name属性或资源组名 + * @param force {boolean} 销毁一个资源组时其他资源组有同样资源情况资源是否会被删除,默认值true + * @returns {boolean} + */ + destroyRes(name: string, force?: boolean): boolean; + /** + * 设置最大并发加载线程数量,默认值是4. + * @method RES.setMaxLoadingThread + * @param thread {number} 要设置的并发加载数。 + */ + setMaxLoadingThread(thread: number): void; + /** + * 设置资源加载失败时的重试次数。 + * @param retry 要设置的重试次数。 + */ + setMaxRetryTimes(retry: number): void; + addResourceData(data: { + name: string; + type: string; + url: string; + }): void; + } +} +declare namespace RES { + /** + * Print the memory occupied by the picture. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 对文件路径的一些操作,针对的是 C:/A/B/C/D/example.ts这种格式 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + namespace path { + /** + * Format the file path,"C:/A/B//C//D//example.ts"=>"C:/A/B/C/D/example.ts" + * @param filename Incoming file path + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 格式化文件路径,"C:/A/B//C//D//example.ts"=>"C:/A/B/C/D/example.ts" + * @param filename 传入的文件路径 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function normalize(filename: string): string; + /** + * Get the file name according to the file path, "C:/A/B/example.ts"=>"example.ts" + * @param filename Incoming file path + * @return File name + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 根据文件路径得到文件名字,"C:/A/B/example.ts"=>"example.ts" + * @param filename 传入的文件路径 + * @return 文件的名字 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function basename(filename: string): string; + /** + * The path to the folder where the file is located,"C:/A/B/example.ts"=>"C:/A/B" + * @param filename Incoming file path + * @return The address of the folder where the file is located + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 文件所在文件夹路径,"C:/A/B/example.ts"=>"C:/A/B" + * @param filename 传入的文件路径 + * @return 文件所在文件夹的地址 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function dirname(path: string): string; + } +} +declare namespace RES { + /** + * @private + */ + class NativeVersionController implements IVersionController { + private versionInfo; + init(): Promise; + getVirtualUrl(url: string): string; + private getLocalData(filePath); + } +} +declare module RES.processor { + interface Processor { + /** + * Start loading a single resource + * @param host Load the processor, you can use the processor to load resources, directly use http to get the resources back + * @param resource Resource information + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 开始加载单项资源 + * @param host 加载处理器,可以不使用这个处理器加载资源,直接用http获取资源返回即可 + * @param resource 资源的信息 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + onLoadStart(host: ProcessHost, resource: ResourceInfo): Promise; + /** + * Remove a single resource, usually call host.unload (resource); + * @param host Load the processor + * @param resource Resource information + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 移除单项资源,一般调用host.unload(resource); + * @param host 加载处理器 + * @param resource 资源的信息 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + onRemoveStart(host: ProcessHost, resource: ResourceInfo): void; + /** + * Get the submap of the merged atlas + * @param host Load the processor + * @param resource Resource information + * @param key The key value of the resource + * @param subkey Collection of subset names + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 获取合并图集的子图 + * @param host 加载处理器 + * @param resource 资源的信息 + * @param key 资源的key值 + * @param subkey 子集名称的集合 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + getData?(host: ProcessHost, resource: ResourceInfo, key: string, subkey: string): any; + } + /** + * Register the processor that loads the resource + * @param type Load resource type + * @param processor Loaded processor, an instance that implements the Processor interface + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 注册加载资源的处理器 + * @param type 加载资源类型 + * @param processor 加载的处理器,一个实现Processor接口的实例 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function map(type: string, processor: Processor): void; + /** + * @private + * @param url + * @param file + */ + function getRelativePath(url: string, file: string): string; + var ImageProcessor: Processor; + const KTXTextureProcessor: RES.processor.Processor; + /** + * + */ + function makeEtc1SeperatedAlphaResourceInfo(resource: ResourceInfo): ResourceInfo; + /** + * + */ + const ETC1KTXProcessor: Processor; + var BinaryProcessor: Processor; + var TextProcessor: Processor; + var JsonProcessor: Processor; + var SoundProcessor: Processor; +} +declare module RES { + /** + * The events of resource loading. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 资源加载事件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + class ResourceEvent extends egret.Event { + /** + * Failure event for a load item. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 一个加载项加载失败事件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + static ITEM_LOAD_ERROR: string; + /** + * Configure file to load and parse the completion event. Note: if a configuration file is loaded, it will not be thrown out, and if you want to handle the configuration loading failure, monitor the CONFIG_LOAD_ERROR event. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 配置文件加载并解析完成事件。注意:若有配置文件加载失败,将不会抛出此事件,若要处理配置加载失败,请同时监听 CONFIG_LOAD_ERROR 事件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + static CONFIG_COMPLETE: string; + /** + * Configuration file failed to load. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 配置文件加载失败事件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + static CONFIG_LOAD_ERROR: string; + /** + * Delay load group resource loading progress event. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 延迟加载组资源加载进度事件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + static GROUP_PROGRESS: string; + /** + * Delay load group resource to complete event. Note: if you have a resource item loading failure, the event will not be thrown, if you want to handle the group load failure, please listen to the GROUP_LOAD_ERROR event. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 延迟加载组资源加载完成事件。注意:若组内有资源项加载失败,将不会抛出此事件,若要处理组加载失败,请同时监听 GROUP_LOAD_ERROR 事件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + static GROUP_COMPLETE: string; + /** + * Delayed load group resource failed event. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 延迟加载组资源加载失败事件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + static GROUP_LOAD_ERROR: string; + /** + * Creates an Event object to pass as a parameter to event listeners. + * @param type The type of the event, accessible as Event.type. + * @param bubbles Determines whether the Event object participates in the bubbling stage of the event flow. The default value is false. + * @param cancelable Determines whether the Event object can be canceled. The default values is false. + * @version Egret 5.2 + * @platform Web,Native + * @private + * @language en_US + */ + /** + * 创建一个作为参数传递给事件侦听器的 Event 对象。 + * @param type 事件的类型,可以作为 Event.type 访问。 + * @param bubbles 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。 + * @param cancelable 确定是否可以取消 Event 对象。默认值为 false。 + * @version Egret 5.2 + * @platform Web,Native + * @private + * @language zh_CN + */ + constructor(type: string, bubbles?: boolean, cancelable?: boolean); + /** + * File number that has been loaded. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 已经加载的文件数。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + itemsLoaded: number; + /** + * Total file number to load. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 要加载的总文件数。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + itemsTotal: number; + /** + * Resource group name. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 资源组名。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + groupName: string; + /** + * An item of information that is finished by the end of a load. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 一次加载项加载结束的项信息对象。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + resItem: ResourceItem; + } +} +declare module RES { + /** + * Resource term. One of the resources arrays in resource.json. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 资源项。对应 resource.json 中 resources 数组中的一项。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + namespace ResourceItem { + /** + * XML file. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * XML 文件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + const TYPE_XML: string; + /** + * Picture file. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 图片文件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + const TYPE_IMAGE: string; + /** + * Binary file. + * @version Egret 5.2 + * @platform Web + * @language en_US + */ + /** + * 二进制文件。 + * @version Egret 5.2 + * @platform Web + * @language zh_CN + */ + const TYPE_BIN: string; + /** + * Text file. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 文本文件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + const TYPE_TEXT: string; + /** + * JSON file. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * JSON 文件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + const TYPE_JSON: string; + /** + * SpriteSheet file. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * SpriteSheet 文件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + const TYPE_SHEET: string; + /** + * BitmapTextSpriteSheet file. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * BitmapTextSpriteSheet 文件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + const TYPE_FONT: string; + /** + * Sound file. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 声音文件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + const TYPE_SOUND: string; + function convertToResItem(r: ResourceInfo): ResourceItem; + } + interface ResourceItem extends ResourceInfo { + /** + * Name of resource term. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 加载项名称。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + name: string; + /** + * URL of resource term. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 要加载的文件地址。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + url: string; + /** + * Type of resource term. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 加载项文件类型。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + type: string; + /** + * The raw data object to be referenced. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 被引用的原始数据对象。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + data: ResourceInfo; + crc32?: string; + size?: number; + soundType?: string; + } +} +declare module RES { + /** + * assetsManager underlying storage resource information + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * assetsManager底层存储资源信息 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + interface File { + url: string; + type: string; + name: string; + root: string; + } + /** + * @private + */ + interface FileSystem { + addFile(data: { + name: string; + type: string; + url: string; + root?: string; + extra?: 1 | undefined; + }): any; + getFile(filename: string): File | null; + profile(): void; + removeFile(filename: string): any; + } +} +declare module RES { + /** + * Print the memory occupied by the picture. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 打印图片所占内存 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function profile(): void; + /** + * @private + */ + interface ProcessHost { + state: { + [index: string]: number; + }; + resourceConfig: ResourceConfig; + load: (resource: ResourceInfo, processor?: string | processor.Processor) => Promise; + unload: (resource: ResourceInfo) => void; + save: (rexource: ResourceInfo, data: any) => void; + get: (resource: ResourceInfo) => any; + remove: (resource: ResourceInfo) => void; + } + /** + * @private + */ + class ResourceManagerError extends Error { + static errorMessage: { + 1001: string; + 1002: string; + 2001: string; + 2002: string; + 2003: string; + 2004: string; + 2005: string; + 2006: string; + }; + /** + * why instanceof e != ResourceManagerError ??? + * see link : https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work + */ + private __resource_manager_error__; + constructor(code: number, replacer?: Object, replacer2?: Object); + } +} +declare namespace RES { + /** + * Resource group loading progress prompt + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 资源组的加载进度提示 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + interface PromiseTaskReporter { + /** + * Progress callback, asynchronous execution, load number and order have nothing to do + * @param current The number of currently loaded + * @param total Total resources required in the current resource bundle + * @param resItem currently loading resource information + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 进度回调,异步执行,加载数目和顺序无关 + * @param current 当前已经加载数目 + * @param total 当前资源包内需要资源总数 + * @param resItem 当前加载资源信息 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + onProgress?(current: number, total: number, resItem: ResourceInfo | undefined): void; + } +} diff --git a/libs/modules/assetsmanager/assetsmanager.js b/libs/modules/assetsmanager/assetsmanager.js new file mode 100644 index 0000000..8a02b53 --- /dev/null +++ b/libs/modules/assetsmanager/assetsmanager.js @@ -0,0 +1,2992 @@ +var __reflect = (this && this.__reflect) || function (p, c, t) { + p.__class__ = c, t ? t.push(c) : t = [c], p.__types__ = p.__types__ ? t.concat(p.__types__) : t; +}; +var __extends = this && this.__extends || function __extends(t, e) { + function r() { + this.constructor = t; +} +for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]); +r.prototype = e.prototype, t.prototype = new r(); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +////////////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2014-present, Egret Technology. +// All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// * Neither the name of the Egret nor the +// names of its contributors may be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY EGRET AND CONTRIBUTORS "AS IS" AND ANY EXPRESS +// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL EGRET AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, +// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////////////////// +var RES; +(function (RES) { +})(RES || (RES = {})); +var RES; +(function (RES) { + /** + * @internal + */ + RES.resourceNameSelector = function (p) { return p; }; + /** + * Get resource information through file path + * @param path file path + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 通过文件路径获取资源信息 + * @param path 文件路径 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function getResourceInfo(path) { + var result = RES.config.config.fileSystem.getFile(path); + if (!result) { + path = RES.resourceNameSelector(path); + result = RES.config.config.fileSystem.getFile(path); + } + return result; + } + RES.getResourceInfo = getResourceInfo; + var configItem; + /** + * 注册config的相关配置 + * @internal + * @param url config的地址 + * @param root 根路径 + */ + function setConfigURL(url, root) { + var type; + if (url.indexOf(".json") >= 0) { + type = "legacyResourceConfig"; + } + else { + type = "resourceConfig"; + } + configItem = { type: type, root: root, url: url, name: url }; + } + RES.setConfigURL = setConfigURL; + /** + * @class RES.ResourceConfig + * @classdesc + * @private + */ + var ResourceConfig = (function () { + function ResourceConfig() { + } + ResourceConfig.prototype.init = function () { + if (!this.config) { + this.config = { + alias: {}, groups: {}, resourceRoot: configItem.root, + mergeSelector: null, + fileSystem: null, + loadGroup: [] + }; + } + return RES.queue.pushResItem(configItem).catch(function (e) { + if (!RES.isCompatible) { + if (!e.__resource_manager_error__) { + if (e.error) { + console.error(e.error.stack); + } + else { + console.error(e.stack); + } + e = new RES.ResourceManagerError(1002); + } + } + RES.host.remove(configItem); + return Promise.reject(e); + }); + }; + /** + * 根据组名获取组加载项列表 + * @method RES.ResourceConfig#getGroupByName + * @param name {string} 组名 + * @returns {Array} + */ + ResourceConfig.prototype.getGroupByName = function (name) { + var group = this.config.groups[name]; + var result = []; + if (!group) { + return result; + } + for (var _i = 0, group_1 = group; _i < group_1.length; _i++) { + var paramKey = group_1[_i]; + var tempResult = void 0; + tempResult = RES.config.getResourceWithSubkey(paramKey); + if (tempResult == null) { + continue; + } + var r = tempResult.r, key = tempResult.key; + if (r == null) { + /** 加载组里面的资源,可能不存在 */ + throw new RES.ResourceManagerError(2005, key); + continue; + } + if (result.indexOf(r) == -1) { + result.push(r); + } + } + return result; + }; + ResourceConfig.prototype.__temp__get__type__via__url = function (url_or_alias) { + var url = this.config.alias[url_or_alias]; + if (!url) { + url = url_or_alias; + } + if (RES.typeSelector) { + var type = RES.typeSelector(url); + if (!type) { + throw new RES.ResourceManagerError(2004, url); + } + return type; + } + else { + console.warn("RES.mapConfig 并未设置 typeSelector"); + return "unknown"; + } + }; + ResourceConfig.prototype.getResourceWithSubkey = function (key) { + key = this.getKeyByAlias(key); + var index = key.indexOf("#"); + var subkey = ""; + if (index >= 0) { + subkey = key.substr(index + 1); + key = key.substr(0, index); + } + var r = this.getResource(key); + if (!r) { + return null; + } + else { + return { + r: r, key: key, subkey: subkey + }; + } + }; + ResourceConfig.prototype.getKeyByAlias = function (aliasName) { + if (this.config.alias[aliasName]) { + return this.config.alias[aliasName]; + } + else { + return aliasName; + } + }; + ResourceConfig.prototype.getResource = function (path_or_alias) { + var path = this.config.alias[path_or_alias]; + if (!path) { + path = path_or_alias; + } + var r = getResourceInfo(path); + if (!r) { + return null; + } + else { + return r; + } + }; + /** + * 创建自定义的加载资源组,注意:此方法仅在资源配置文件加载完成后执行才有效。 + * 可以监听ResourceEvent.CONFIG_COMPLETE事件来确认配置加载完成。 + * @method RES.ResourceConfig#createGroup + * @param name {string} 要创建的加载资源组的组名 + * @param keys {egret.Array} 要包含的键名列表,key对应配置文件里的name属性或sbuKeys属性的一项或一个资源组名。 + * @param override {boolean} 是否覆盖已经存在的同名资源组,默认false。 + * @returns {boolean} + */ + ResourceConfig.prototype.createGroup = function (name, keys, override) { + if (override === void 0) { override = false; } + if ((!override && this.config.groups[name]) || !keys || keys.length == 0) { + return false; + } + var group = []; + for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) { + var key = keys_1[_i]; + if (this.config.groups[key]) { + var groupInfo = this.config.groups[key]; + group = group.concat(groupInfo); + } + else { + group.push(key); + } + } + this.config.groups[name] = group; + return true; + // var groupDic: any = this.groupDic; + // var group: Array = []; + // var length: number = keys.length; + // for (var i: number = 0; i < length; i++) { + // var key: string = keys[i]; + // var g: Array = groupDic[key]; + // if (g) { + // var len: number = g.length; + // for (var j: number = 0; j < len; j++) { + // var item: any = g[j]; + // if (group.indexOf(item) == -1) + // group.push(item); + // } + // } + // else { + // item = this.keyMap[key]; + // if (item) { + // if (group.indexOf(item) == -1) + // group.push(item); + // } + // else { + // egret.$warn(3200, key); + // } + // } + // } + // if (group.length == 0) + // return false; + // this.groupDic[name] = group; + // return true; + }; + /** + * 添加一个二级键名到配置列表。 + * @method RES.ResourceConfig#addSubkey + * @param subkey {string} 要添加的二级键名 + * @param name {string} 二级键名所属的资源name属性 + */ + ResourceConfig.prototype.addSubkey = function (subkey, name) { + this.addAlias(subkey, name + "#" + subkey); + }; + ResourceConfig.prototype.addAlias = function (alias, key) { + if (this.config.alias[key]) { + key = this.config.alias[key]; + } + this.config.alias[alias] = key; + }; + ResourceConfig.prototype.addResourceData = function (data) { + if (RES.hasRes(data.name)) { + return; + } + if (!data.type) { + data.type = this.__temp__get__type__via__url(data.url); + } + RES.config.config.fileSystem.addFile(data); + }; + ResourceConfig.prototype.removeResourceData = function (data) { + if (!RES.hasRes(data.name)) { + return; + } + RES.config.config.fileSystem.removeFile(data.url); + if (this.config.alias[data.name]) { + delete this.config.alias[data.name]; + } + }; + return ResourceConfig; + }()); + RES.ResourceConfig = ResourceConfig; + __reflect(ResourceConfig.prototype, "RES.ResourceConfig"); +})(RES || (RES = {})); +////////////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2014-present, Egret Technology. +// All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// * Neither the name of the Egret nor the +// names of its contributors may be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY EGRET AND CONTRIBUTORS "AS IS" AND ANY EXPRESS +// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL EGRET AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, +// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////////////////// +var RES; +(function (RES) { + /** + * @class RES.ResourceLoader + * @classdesc + * @private + */ + var ResourceLoader = (function () { + function ResourceLoader() { + /** + * 当前组加载的项总个数,key为groupName + */ + this.groupTotalDic = {}; + /** + * 已经加载的项个数,key为groupName + */ + this.numLoadedDic = {}; + /** + * 加载失败的组,key为groupName + */ + this.groupErrorDic = {}; + this.retryTimesDic = {}; + this.maxRetryTimes = 3; + this.reporterDic = {}; + this.dispatcherDic = {}; + this.failedList = new Array(); + this.loadItemErrorDic = {}; + this.errorDic = {}; + /** + * 资源优先级队列,key为资源,value为优先级 + */ + this.itemListPriorityDic = {}; + /** + * 资源是否在加载 + */ + this.itemLoadDic = {}; + this.promiseHash = {}; + /** + * 延迟加载队列,getResByUrl ,getResAsync等方法存储队列 + */ + this.lazyLoadList = new Array(); + this.loadingCount = 0; + /** + * 最大线程数目 + */ + this.thread = 4; + } + ResourceLoader.prototype.pushResItem = function (resInfo) { + if (this.promiseHash[resInfo.root + resInfo.name]) { + return this.promiseHash[resInfo.root + resInfo.name]; + } + this.lazyLoadList.push(resInfo); + this.itemListPriorityDic[Number.NEGATIVE_INFINITY] = this.lazyLoadList; + this.updatelistPriority(this.lazyLoadList, Number.NEGATIVE_INFINITY); + var dispatcher = new egret.EventDispatcher(); + this.dispatcherDic[resInfo.root + resInfo.name] = dispatcher; + var promise = new Promise(function (resolve, reject) { + dispatcher.addEventListener("complete", function (e) { + resolve(e.data); + }, null); + dispatcher.addEventListener("error", function (e) { + reject(e.data); + }, null); + }); + this.promiseHash[resInfo.root + resInfo.name] = promise; + this.loadNextResource(); + return promise; + }; + /** + * 加载队列,存储组的队列 + */ + ResourceLoader.prototype.pushResGroup = function (list, groupName, priority, reporter) { + if (this.promiseHash[groupName]) { + return this.promiseHash[groupName]; + } + var total = list.length; + for (var i = 0; i < total; i++) { + var resInfo = list[i]; + if (!resInfo.groupNames) { + resInfo.groupNames = []; + } + resInfo.groupNames.push(groupName); + } + this.groupTotalDic[groupName] = list.length; + this.numLoadedDic[groupName] = 0; + this.updatelistPriority(list, priority); + this.reporterDic[groupName] = reporter; + var dispatcher = new egret.EventDispatcher(); + this.dispatcherDic[groupName] = dispatcher; + var promise = new Promise(function (resolve, reject) { + dispatcher.addEventListener("complete", resolve, null); + dispatcher.addEventListener("error", function (e) { + reject(e.data); + }, null); + }); + this.promiseHash[groupName] = promise; + this.loadNextResource(); + return promise; + }; + /** + * 更新组的优先级顺序 + * @param list 存储数据的队列 + * @param priority 优先级 + */ + ResourceLoader.prototype.updatelistPriority = function (list, priority) { + if (this.itemListPriorityDic[priority] == undefined) { + this.itemListPriorityDic[priority] = []; + } + for (var _i = 0, list_1 = list; _i < list_1.length; _i++) { + var item = list_1[_i]; + if (this.itemLoadDic[item.root + item.name] == 1) { + continue; + } + var oldPriority = this.findPriorityInDic(item); + if (oldPriority == undefined) { + this.itemListPriorityDic[priority].push(item); + } + else { + if (oldPriority < priority) { + this.itemListPriorityDic[priority].push(item); + var index = this.itemListPriorityDic[oldPriority].indexOf(item); + this.itemListPriorityDic[oldPriority].splice(index, 1); + } + } + } + }; + /** + * 搜索单项资源的优先级 + * @param item 单项资源 + */ + ResourceLoader.prototype.findPriorityInDic = function (item) { + for (var priority in this.itemListPriorityDic) { + if (this.itemListPriorityDic[priority].indexOf(item) > -1) + return parseInt(priority); + } + return undefined; + }; + /** + * 加载下一项资源,线程控制 + */ + ResourceLoader.prototype.loadNextResource = function () { + while (this.loadingCount < this.thread) { + var isload = this.loadSingleResource(); + if (!isload) { + break; + } + } + }; + /** + * 加载单向资源 + */ + ResourceLoader.prototype.loadSingleResource = function () { + var _this = this; + var r = this.getOneResourceInfoInGroup(); + if (!r) + return false; + this.itemLoadDic[r.root + r.name] = 1; + this.loadingCount++; + this.loadResource(r) + .then(function (response) { + _this.loadingCount--; + delete _this.itemLoadDic[r.root + r.name]; + RES.host.save(r, response); + if (_this.promiseHash[r.root + r.name]) { + var dispatcher = _this.deleteDispatcher(r.root + r.name); + dispatcher.dispatchEventWith("complete", false, response); + } + var groupNames = r.groupNames; + if (groupNames) { + delete r.groupNames; + for (var _i = 0, groupNames_1 = groupNames; _i < groupNames_1.length; _i++) { + var groupName = groupNames_1[_i]; + if (_this.setGroupProgress(groupName, r)) { + _this.loadGroupEnd(groupName); + } + } + } + _this.loadNextResource(); + }).catch(function (error) { + if (!error) { + throw r.name + " load fail"; + } + if (!error.__resource_manager_error__) { + throw error; + } + delete _this.itemLoadDic[r.root + r.name]; + _this.loadingCount--; + delete RES.host.state[r.root + r.name]; + var times = _this.retryTimesDic[r.name] || 1; + if (times > _this.maxRetryTimes) { + delete _this.retryTimesDic[r.name]; + if (_this.promiseHash[r.root + r.name]) { + var dispatcher = _this.deleteDispatcher(r.root + r.name); + dispatcher.dispatchEventWith("error", false, { r: r, error: error }); + } + var groupNames = r.groupNames; + if (groupNames) { + delete r.groupNames; + for (var _i = 0, groupNames_2 = groupNames; _i < groupNames_2.length; _i++) { + var groupName = groupNames_2[_i]; + if (!_this.loadItemErrorDic[groupName]) { + _this.loadItemErrorDic[groupName] = []; + } + if (_this.loadItemErrorDic[groupName].indexOf(r) == -1) { + _this.loadItemErrorDic[groupName].push(r); + } + _this.groupErrorDic[groupName] = true; + if (_this.setGroupProgress(groupName, r)) { + _this.loadGroupEnd(groupName, error); + } + else { + _this.errorDic[groupName] = error; + } + } + } + _this.loadNextResource(); + } + else { + _this.retryTimesDic[r.name] = times + 1; + _this.failedList.push(r); + _this.loadNextResource(); + return; + } + }); + return true; + }; + /** + * 获取下一个待加载项 + */ + ResourceLoader.prototype.getOneResourceInfoInGroup = function () { + if (this.failedList.length > 0) + return this.failedList.shift(); + var maxPriority = Number.NEGATIVE_INFINITY; + for (var p in this.itemListPriorityDic) { + maxPriority = Math.max(maxPriority, p); + } + var list = this.itemListPriorityDic[maxPriority]; + if (!list) { + return undefined; + } + if (list.length == 0) { + delete this.itemListPriorityDic[maxPriority]; + return this.getOneResourceInfoInGroup(); + } + return list.shift(); + }; + /** + * 设置组的加载进度,同时返回当前组是否加载完成 + * @param groupName 组名 + * @param r 加载完成的资源 + */ + ResourceLoader.prototype.setGroupProgress = function (groupName, r) { + var reporter = this.reporterDic[groupName]; + this.numLoadedDic[groupName]++; + var current = this.numLoadedDic[groupName]; + var total = this.groupTotalDic[groupName]; + if (reporter && reporter.onProgress) { + reporter.onProgress(current, total, r); + } + return current == total; + }; + /** + * 加载组的最后一项,同时派发事件 + * @param groupName 组名 + * @param lastError 最后一项是否成功,此项为错误信息 + */ + ResourceLoader.prototype.loadGroupEnd = function (groupName, lastError) { + delete this.groupTotalDic[groupName]; + delete this.numLoadedDic[groupName]; + delete this.reporterDic[groupName]; + var dispatcher = this.deleteDispatcher(groupName); + if (!lastError) { + var groupError = this.groupErrorDic[groupName]; + delete this.groupErrorDic[groupName]; + if (groupError) { + var itemList = this.loadItemErrorDic[groupName]; + delete this.loadItemErrorDic[groupName]; + var error = this.errorDic[groupName]; + delete this.errorDic[groupName]; + dispatcher.dispatchEventWith("error", false, { itemList: itemList, error: error }); + } + else { + dispatcher.dispatchEventWith("complete"); + } + } + else { + delete this.groupErrorDic[groupName]; + var itemList = this.loadItemErrorDic[groupName]; + delete this.loadItemErrorDic[groupName]; + dispatcher.dispatchEventWith("error", false, { itemList: itemList, lastError: lastError }); + } + }; + /** + * 删除事件派发器,Promise的缓存,返回事件派发器 + * @param groupName 组名或是root+name + */ + ResourceLoader.prototype.deleteDispatcher = function (groupName) { + delete this.promiseHash[groupName]; + var dispatcher = this.dispatcherDic[groupName]; + delete this.dispatcherDic[groupName]; + return dispatcher; + }; + /** + * 加载资源 + * @param r 资源信息 + * @param p 加载处理器 + */ + ResourceLoader.prototype.loadResource = function (r, p) { + if (!p) { + if (RES.FEATURE_FLAG.FIX_DUPLICATE_LOAD == 1) { + var s = RES.host.state[r.root + r.name]; + if (s == 2) { + return Promise.resolve(RES.host.get(r)); + } + if (s == 1) { + return r.promise; + } + } + p = RES.processor.isSupport(r); + } + if (!p) { + throw new RES.ResourceManagerError(2001, r.name, r.type); + } + RES.host.state[r.root + r.name] = 1; + var promise = p.onLoadStart(RES.host, r); + r.promise = promise; + return promise; + }; + /** + * 释放资源 + * @param r 资源信息 + */ + ResourceLoader.prototype.unloadResource = function (r) { + var data = RES.host.get(r); + if (!data) { + console.warn("尝试释放不存在的资源:", r.name); + return false; + } + var p = RES.processor.isSupport(r); + if (p) { + p.onRemoveStart(RES.host, r); + RES.host.remove(r); + if (r.extra == 1) { + RES.config.removeResourceData(r); + } + return true; + } + else { + return true; + } + }; + return ResourceLoader; + }()); + RES.ResourceLoader = ResourceLoader; + __reflect(ResourceLoader.prototype, "RES.ResourceLoader"); +})(RES || (RES = {})); +var RES; +(function (RES) { + /** + * Decorator, determine if the parameter is null + * @internal + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 装饰器,判断参数是否为null + * @internal + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + RES.checkNull = function (target, propertyKey, descriptor) { + var method = descriptor.value; + descriptor.value = function () { + var arg = []; + for (var _i = 0; _i < arguments.length; _i++) { + arg[_i] = arguments[_i]; + } + if (!arg[0]) { + console.warn("\u65B9\u6CD5" + propertyKey + "\u7684\u53C2\u6570\u4E0D\u80FD\u4E3Anull"); + return null; + } + else { + return method.apply(this, arg); + } + }; + }; + /** + * 功能开关 + * LOADING_STATE:处理重复加载 + * @internal + */ + RES.FEATURE_FLAG = { + FIX_DUPLICATE_LOAD: 1 + }; + /** + * @internal + */ + var upgrade; + (function (upgrade) { + var _level = "warning"; + function setUpgradeGuideLevel(level) { + _level = level; + } + upgrade.setUpgradeGuideLevel = setUpgradeGuideLevel; + })(upgrade = RES.upgrade || (RES.upgrade = {})); +})(RES || (RES = {})); +////////////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2014-present, Egret Technology. +// All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// * Neither the name of the Egret nor the +// names of its contributors may be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY EGRET AND CONTRIBUTORS "AS IS" AND ANY EXPRESS +// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL EGRET AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, +// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////////////////// +var RES; +(function (RES) { + /** + * Convert the file name of the resource to the Key value used in the project. + * @param url Resource Name. + * @returns The key value used in the project + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 将资源的文件名称转换为项目中所使用的Key值。 + * 在加载合并图集的时候使用,例如图集加载A_json,需要加载对应A_png,这里就是转换的机制 + * 一般项目中无需更改,只有没有使用默认的key和文件对应的需要修改 + * @param url 资源名称。 + * @returns 项目中所用的key值 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function nameSelector(url) { + return RES.path.basename(url).split(".").join("_"); + } + RES.nameSelector = nameSelector; + /** + * Get the read type of the file. + * When using getResByUrl does not specify the type of the read file, it will find the corresponding type according to this method. + * File types not found are loaded by default in binary format + * @param path file path. + * @returns Processor type used to read the file + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 获取文件的读取类型 + * 在使用getResByUrl没有指定读取文件的类型,会根据这个方法寻找对应的类型 + * 没有查找到的文件类型以二进制格式默认加载 + * @param path 文件路径 + * @returns 读取文件所用的Processor类型 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function typeSelector(path) { + var ext = path.substr(path.lastIndexOf(".") + 1); + var type; + switch (ext) { + case RES.ResourceItem.TYPE_XML: + case RES.ResourceItem.TYPE_JSON: + case RES.ResourceItem.TYPE_SHEET: + type = ext; + break; + case "png": + case "jpg": + case "gif": + case "jpeg": + case "bmp": + type = RES.ResourceItem.TYPE_IMAGE; + break; + case "fnt": + type = RES.ResourceItem.TYPE_FONT; + break; + case "txt": + type = RES.ResourceItem.TYPE_TEXT; + break; + case "mp3": + case "ogg": + case "mpeg": + case "wav": + case "m4a": + case "mp4": + case "aiff": + case "wma": + case "mid": + type = RES.ResourceItem.TYPE_SOUND; + break; + case "mergeJson": + case "zip": + case "pvr": + type = ext; + break; + default: + type = RES.ResourceItem.TYPE_BIN; + break; + } + return type; + } + RES.typeSelector = typeSelector; + /** + * Conduct mapping injection with class definition as the value, Deprecated. + * @deprecated + * @see RES.processor.map + * @language en_US + */ + /** + * 以类定义为值进行映射注入,已废弃。 + * @deprecated + * @see RES.processor.map + * @language zh_CN + */ + function registerAnalyzer(type, analyzerClass) { + throw new RES.ResourceManagerError(2002); + } + RES.registerAnalyzer = registerAnalyzer; + /** + * Set whether it is compatible mode + * When the value is true, the assetsManager will output the design of Res. When it is false, all the loaded resources will be returned as promises. + * The default is false, run in strict assetsManager mode + * @version Egret 5.2.9 + * @platform Web,Native + * @language en_US + */ + /** + * 设置是否为兼容模式 + * 当值为true时,assetsManager会以Res的设计输出,当为false时候,所有的加载资源都会以promise的方式返回 + * 默认是false,以严格assetsManager方式运行 + * @version Egret 5.2.9 + * @platform Web,Native + * @language zh_CN + */ + function setIsCompatible(value) { + RES.isCompatible = value; + } + RES.setIsCompatible = setIsCompatible; + /** + * @internal + */ + RES.isCompatible = false; + /** + * Load configuration file and parse. + * @param url The url address of the resource config + * @param resourceRoot The root address of the resource config + * @returns Promise + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 加载配置文件并解析。 + * @param url 资源配置的url地址 + * @param resourceRoot 资源配置的根地址 + * @returns Promise + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function loadConfig(url, resourceRoot) { + if (resourceRoot.indexOf('://') >= 0) { + var temp = resourceRoot.split('://'); + resourceRoot = temp[0] + '://' + RES.path.normalize(temp[1] + '/'); + url = url.replace(resourceRoot, ''); + } + else { + resourceRoot = RES.path.normalize(resourceRoot + "/"); + url = url.replace(resourceRoot, ''); + } + RES.setConfigURL(url, resourceRoot); + if (!instance) + instance = new Resource(); + return compatiblePromise(instance.loadConfig()); + } + RES.loadConfig = loadConfig; + function compatiblePromise(promise) { + if (RES.isCompatible) { + promise.catch(function (e) { }).then(); + return undefined; + } + else { + return promise; + } + } + /** + * Load a set of resources according to the group name. + * @param name Group name to load the resource group. + * @param priority Load priority can be negative, the default value is 0. + *
A low priority group must wait for the high priority group to complete the end of the load to start, and the same priority group will be loaded at the same time. + * @param reporter Resource group loading progress prompt + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 根据组名加载一组资源。 + * @param name 要加载资源组的组名。 + * @param priority 加载优先级,可以为负数,默认值为 0。 + *
低优先级的组必须等待高优先级组完全加载结束才能开始,同一优先级的组会同时加载。 + * @param reporter 资源组的加载进度提示 + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function loadGroup(name, priority, reporter) { + if (priority === void 0) { priority = 0; } + return compatiblePromise(instance.loadGroup(name, priority, reporter)); + } + RES.loadGroup = loadGroup; + /** + * Check whether a resource group has been loaded. + * @param name Group name。 + * @returns Is loading or not. + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 检查某个资源组是否已经加载完成。 + * @param name 组名。 + * @returns 是否正在加载。 + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function isGroupLoaded(name) { + return instance.isGroupLoaded(name); + } + RES.isGroupLoaded = isGroupLoaded; + /** + * A list of groups of loading is obtained according to the group name. + * @param name Group name. + * @returns The resource item array of group. + * @see RES.ResourceItem + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 根据组名获取组加载项列表。 + * @param name 组名。 + * @returns 加载项列表。 + * @see RES.ResourceItem + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function getGroupByName(name) { + return instance.getGroupByName(name).map(function (r) { return RES.ResourceItem.convertToResItem(r); }); + } + RES.getGroupByName = getGroupByName; + /** + * Create a custom load resource group, note that this method is valid only after the resource configuration file is loaded. + *
You can monitor the ResourceEvent.CONFIG_COMPLETE event to verify that the configuration is complete. + * @param name Group name to create the load resource group. + * @param keys To be included in the list of key keys, the corresponding configuration file in the name or sbuKeys property one or a resource group name. + * @param override Is the default false for the same name resource group already exists. + * @returns Create success or fail. + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 创建自定义的加载资源组,注意:此方法仅在资源配置文件加载完成后执行才有效。 + *
可以监听 ResourceEvent.CONFIG_COMPLETE 事件来确认配置加载完成。 + * @param name 要创建的加载资源组的组名。 + * @param keys 要包含的键名列表,key 对应配置文件里的 name 属性或 sbuKeys 属性的一项或一个资源组名。 + * @param override 是否覆盖已经存在的同名资源组,默认 false。 + * @returns 是否创建成功。 + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function createGroup(name, keys, override) { + if (override === void 0) { override = false; } + return instance.createGroup(name, keys, override); + } + RES.createGroup = createGroup; + /** + * Check whether the configuration file contains the specified resources. + * @param key A sbuKeys attribute or name property in a configuration file. + * @returns Whether you have the specified resource + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 检查配置文件里是否含有指定的资源。 + * @param key 对应配置文件里的 name 属性或 sbuKeys 属性的一项。 + * @returns 是否拥有指定资源 + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function hasRes(key) { + return instance.hasRes(key); + } + RES.hasRes = hasRes; + /** + * The synchronization method for obtaining the cache has been loaded with the success of the resource. + *
The type of resource and the corresponding return value types are as follows: + *
RES.ResourceItem.TYPE_BIN : ArrayBuffer JavaScript primary object + *
RES.ResourceItem.TYPE_IMAGE : img Html Object,or egret.BitmapData interface。 + *
RES.ResourceItem.TYPE_JSON : Object + *
RES.ResourceItem.TYPE_SHEET : Object + *
1. If the incoming parameter is the name of the entire SpriteSheet is returned is {image1: Texture, "image2": Texture}. + *
2. If the incoming is "sheet.image1", the return is a single resource. + *
3. If the incoming is the name of the "image1" single resource, the return is a single resource. + * But if there are two SpriteSheet in a single picture of the same name, the return of the image after the load. + *
RES.ResourceItem.TYPE_SOUND : HtmlSound Html Object + *
RES.ResourceItem.TYPE_TEXT : string + * @param key A subKeys attribute or name property in a configuration file. + * @see RES.ResourceItem + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 同步方式获取缓存的已经加载成功的资源。 + *
资源类型和对应的返回值类型关系如下: + *
RES.ResourceItem.TYPE_BIN : ArrayBuffer JavaScript 原生对象 + *
RES.ResourceItem.TYPE_IMAGE : img Html 对象,或者 egret.BitmapData 接口。 + *
RES.ResourceItem.TYPE_JSON : Object + *
RES.ResourceItem.TYPE_SHEET : Object + *
1. 如果传入的参数是整个 SpriteSheet 的名称返回的是 {"image1":Texture,"image2":Texture} 这样的格式。 + *
2. 如果传入的是 "sheet.image1",返回的是单个资源。 + *
3. 如果传入的是 "image1" 单个资源的名称,返回的是单个资源。但是如果有两张 SpriteSheet 中有单个图片资源名称相同,返回的是后加载的那个图片资源。 + *
RES.ResourceItem.TYPE_SOUND : HtmlSound Html 对象 + *
RES.ResourceItem.TYPE_TEXT : string + * @param key 对应配置文件里的 name 属性或 subKeys 属性的一项。 + * @see RES.ResourceItem + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function getRes(key) { + return instance.getRes(key); + } + RES.getRes = getRes; + /** + * Asynchronous mode to get the resources in the configuration. As long as the resources exist in the configuration file, you can get it in an asynchronous way. + * @param key A sbuKeys attribute or name property in a configuration file. + * @param compFunc Call back function. Example:compFunc(data,key):void. + * @param thisObject This pointer of call back function. + * @see #setMaxRetryTimes + * @example The following code demonstrates how to load a resource via getResAsync + *
+     *       RES.getResAsync("resource/example.json");//Only pass the key value to get the resource
+     *
+     *       RES.getResAsync("resource/example.json", (data) => {
+     *          console.log(data)
+     *       }, this) //Pass in the key value, compFunc and thisObject get the resource, the latter two must appear at the same time
+     * 
+ * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 异步方式获取配置里的资源。只要是配置文件里存在的资源,都可以通过异步方式获取。 + * @param key 对应配置文件里的 name 属性或 sbuKeys 属性的一项。 + * @param compFunc 回调函数。示例:compFunc(data,key):void。 + * @param thisObject 回调函数的 this 引用。 + * @see #setMaxRetryTimes + * @example 以下代码演示了如何通过getResAsync加载资源 + *
+     *       RES.getResAsync("resource/example.json");//只传入key值获取资源
+     *
+     *       RES.getResAsync("resource/example.json", (data) => {
+     *          console.log(data)
+     *       }, this) //传入key值,compFunc和thisObject获取资源,后两个必须同时出现
+     * 
+ * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function getResAsync(key, compFunc, thisObject) { + return compatiblePromise(instance.getResAsync.apply(instance, arguments)); + } + RES.getResAsync = getResAsync; + /** + * Access to external resources through the full URL. + * @param url The external path to load the file. + * @param compFunc Call back function. Example:compFunc(data,url):void。 + * @param thisObject This pointer of call back function. + * @param type File type (optional). Use the static constants defined in the ResourceItem class. If you do not set the file name extension. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 通过完整URL方式获取外部资源。 + * @param url 要加载文件的外部路径。 + * @param compFunc 回调函数。示例:compFunc(data,url):void。 + * @param thisObject 回调函数的 this 引用。 + * @param type 文件类型(可选)。请使用 ResourceItem 类中定义的静态常量。若不设置将根据文件扩展名生成。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function getResByUrl(url, compFunc, thisObject, type) { + if (type === void 0) { type = ""; } + if (!instance) { + var message = egret.sys.tr(3200); + egret.warn(message); + return Promise.reject(message); + } + return compatiblePromise(instance.getResByUrl(url, compFunc, thisObject, type)); + } + RES.getResByUrl = getResByUrl; + /** + * Destroy a single resource file or a set of resources to the cache data, to return whether to delete success. + * @param name Name attribute or resource group name of the load item in the configuration file. + * @param force Destruction of a resource group when the other resources groups have the same resource situation whether the resources will be deleted, the default value true. + * @returns Are successful destruction. + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 销毁单个资源文件或一组资源的缓存数据,返回是否删除成功。 + * @param name 配置文件中加载项的name属性或资源组名。 + * @param force 销毁一个资源组时其他资源组有同样资源情况资源是否会被删除,默认值 true。 + * @see #setMaxRetryTimes + * @returns 是否销毁成功。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function destroyRes(name, force) { + return instance.destroyRes(name, force); + } + RES.destroyRes = destroyRes; + /** + * Sets the maximum number of concurrent load threads, the default value is 4. + * @param thread The number of concurrent loads to be set. + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 设置最大并发加载线程数量,默认值是 4。 + * @param thread 要设置的并发加载数。 + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function setMaxLoadingThread(thread) { + if (!instance) + instance = new Resource(); + instance.setMaxLoadingThread(thread); + } + RES.setMaxLoadingThread = setMaxLoadingThread; + /** + * Sets the number of retry times when the resource failed to load, and the default value is 3. + * @param retry To set the retry count. + * @includeExample extension/resource/Resource.ts + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 设置资源加载失败时的重试次数,默认值是 3。 + * @param retry 要设置的重试次数。 + * @includeExample extension/resource/Resource.ts + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function setMaxRetryTimes(retry) { + instance.setMaxRetryTimes(retry); + } + RES.setMaxRetryTimes = setMaxRetryTimes; + /** + * Add event listeners, reference ResourceEvent defined constants. + * @param type Event name。 + * @param listener Listener functions for handling events. This function must accept the Event object as its only parameter, and can't return any results, + * As shown in the following example: function (evt:Event):void can have any name. + * @param thisObject The this object that is bound to a function. + * @param useCapture Determine the listener is running on the capture or running on the target and the bubbling phase. Set useCapture to true, + * then the listener in the capture phase processing events, but not in the target or the bubbling phase processing events. + * If useCapture is false, then the listener only in the target or the bubbling phase processing events. + * To listen for events in all three stages, please call addEventListener two times: once the useCapture is set to true, once the useCapture is set to false. + * @param priority Event listener priority. Priority is specified by a 32 - bit integer with a symbol. The higher the number, the higher the priority. + * All listeners with a priority for n will be processed before the -1 n listener. + * If two or more listeners share the same priority, they are processed in accordance with the order of their added. The default priority is 0. + * @see RES.ResourceEvent + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 添加事件侦听器,参考 ResourceEvent 定义的常量。 + * @param type 事件的类型。 + * @param listener 处理事件的侦听器函数。此函数必须接受 Event 对象作为其唯一的参数,并且不能返回任何结果, + * 如下面的示例所示: function(evt:Event):void 函数可以有任何名称。 + * @param thisObject 侦听函数绑定的 this 对象。 + * @param useCapture 确定侦听器是运行于捕获阶段还是运行于目标和冒泡阶段。如果将 useCapture 设置为 true, + * 则侦听器只在捕获阶段处理事件,而不在目标或冒泡阶段处理事件。如果 useCapture 为 false,则侦听器只在目标或冒泡阶段处理事件。 + * 要在所有三个阶段都侦听事件,请调用 addEventListener 两次:一次将 useCapture 设置为 true,一次将 useCapture 设置为 false。 + * @param priority 事件侦听器的优先级。优先级由一个带符号的 32 位整数指定。数字越大,优先级越高。优先级为 n 的所有侦听器会在 + * 优先级为 n -1 的侦听器之前得到处理。如果两个或更多个侦听器共享相同的优先级,则按照它们的添加顺序进行处理。默认优先级为 0。 + * @see RES.ResourceEvent + * @see #setMaxRetryTimes + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function addEventListener(type, listener, thisObject, useCapture, priority) { + if (useCapture === void 0) { useCapture = false; } + if (priority === void 0) { priority = 0; } + if (!instance) + instance = new Resource(); + instance.addEventListener(type, listener, thisObject, useCapture, priority); + } + RES.addEventListener = addEventListener; + /** + * Remove event listeners, reference ResourceEvent defined constants. + * @param type Event name。 + * @param listener Listening function。 + * @param thisObject The this object that is bound to a function. + * @param useCapture Is used to capture, and this property is only valid in the display list. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 移除事件侦听器,参考ResourceEvent定义的常量。 + * @param type 事件名。 + * @param listener 侦听函数。 + * @param thisObject 侦听函数绑定的this对象。 + * @param useCapture 是否使用捕获,这个属性只在显示列表中生效。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function removeEventListener(type, listener, thisObject, useCapture) { + if (useCapture === void 0) { useCapture = false; } + instance.removeEventListener(type, listener, thisObject, useCapture); + } + RES.removeEventListener = removeEventListener; + /** + * Adding a custom resource configuration. + * @param data To add configuration. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 自定义添加一项资源配置。 + * @param data 要添加的配置。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function $addResourceData(data) { + //这里可能需要其他配置 + instance.addResourceData(data); + } + RES.$addResourceData = $addResourceData; + /** + * Returns the VersionController + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 获得版本控制器. + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function getVersionController() { + if (!instance) + instance = new Resource(); + return instance.vcs; + } + RES.getVersionController = getVersionController; + /** + * Register the VersionController + * @param vcs The VersionController to register. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 注册版本控制器,通过RES模块加载资源时会从版本控制器获取真实url + * @param vcs 注入的版本控制器。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function registerVersionController(vcs) { + if (!instance) + instance = new Resource(); + instance.registerVersionController(vcs); + } + RES.registerVersionController = registerVersionController; + /** + * Convert the address of the loaded resource (via version controller conversion) + * @param url path to the original resource + * @returns converted address + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 转换加载资源的地址(经过版本控制器的转换) + * @param url 原始资源的路径 + * @returns 转换后的地址 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function getVirtualUrl(url) { + if (instance.vcs) { + return instance.vcs.getVirtualUrl(url); + } + else { + return url; + } + } + RES.getVirtualUrl = getVirtualUrl; + /** + * @private + */ + var Resource = (function (_super) { + __extends(Resource, _super); + function Resource() { + var _this = _super.call(this) || this; + _this.isVcsInit = false; + /** + * @private + * 版本控制器加载后的加载配置 + */ + _this.normalLoadConfig = function () { + return RES.config.init().then(function (data) { + RES.ResourceEvent.dispatchResourceEvent(_this, RES.ResourceEvent.CONFIG_COMPLETE); + }, function (error) { + RES.ResourceEvent.dispatchResourceEvent(_this, RES.ResourceEvent.CONFIG_LOAD_ERROR); + return Promise.reject(error); + }); + }; + if (RES.VersionController) { + _this.vcs = new RES.VersionController(); + } + return _this; + } + Resource.prototype.registerVersionController = function (vcs) { + this.vcs = vcs; + this.isVcsInit = false; + }; + /** + * 开始加载配置 + * @method RES.loadConfig + */ + Resource.prototype.loadConfig = function () { + var _this = this; + if (!this.isVcsInit && this.vcs) { + this.isVcsInit = true; + return this.vcs.init().then(function () { + return _this.normalLoadConfig(); + }); + } + else { + return this.normalLoadConfig(); + } + }; + /** + * 检查某个资源组是否已经加载完成 + * @method RES.isGroupLoaded + * @param name {string} + */ + Resource.prototype.isGroupLoaded = function (name) { + var resources = RES.config.getGroupByName(name); + return resources.every(function (r) { return RES.host.get(r) != null; }); + }; + /** + * 根据组名获取组加载项列表 + * @method RES.getGroupByName + * @param name {string} + */ + Resource.prototype.getGroupByName = function (name) { + return RES.config.getGroupByName(name); + }; + /** + * 根据组名加载一组资源 + * @method RES.loadGroup + * @param name {string} + * @param priority {number} + */ + Resource.prototype.loadGroup = function (name, priority, reporter) { + var _this = this; + if (priority === void 0) { priority = 0; } + var reporterDelegate = { + onProgress: function (current, total, resItem) { + if (reporter && reporter.onProgress) { + reporter.onProgress(current, total, resItem); + } + RES.ResourceEvent.dispatchResourceEvent(_this, RES.ResourceEvent.GROUP_PROGRESS, name, resItem, current, total); + } + }; + return this._loadGroup(name, priority, reporterDelegate).then(function (data) { + if (RES.config.config.loadGroup.indexOf(name) == -1) { + RES.config.config.loadGroup.push(name); + } + RES.ResourceEvent.dispatchResourceEvent(_this, RES.ResourceEvent.GROUP_COMPLETE, name); + }, function (error) { + if (RES.config.config.loadGroup.indexOf(name) == -1) { + RES.config.config.loadGroup.push(name); + } + if (error.itemList) { + var itemList = error.itemList; + var length_1 = itemList.length; + for (var i = 0; i < length_1; i++) { + var item = itemList[i]; + delete item.promise; + RES.ResourceEvent.dispatchResourceEvent(_this, RES.ResourceEvent.ITEM_LOAD_ERROR, name, item); + } + } + if (RES.isCompatible) { + console.warn(error.error.message); + } + RES.ResourceEvent.dispatchResourceEvent(_this, RES.ResourceEvent.GROUP_LOAD_ERROR, name); + return Promise.reject(error.error); + }); + }; + Resource.prototype._loadGroup = function (name, priority, reporter) { + if (priority === void 0) { priority = 0; } + var resources = RES.config.getGroupByName(name); + if (resources.length == 0) { + return new Promise(function (resolve, reject) { + reject({ error: new RES.ResourceManagerError(2005, name) }); + }); + } + return RES.queue.pushResGroup(resources, name, priority, reporter); + }; + /** + * 创建自定义的加载资源组,注意:此方法仅在资源配置文件加载完成后执行才有效。 + * 可以监听ResourceEvent.CONFIG_COMPLETE事件来确认配置加载完成。 + * @method RES.ResourceConfig#createGroup + * @param name {string} 要创建的加载资源组的组名 + * @param keys {egret.Array} 要包含的键名列表,key对应配置文件里的name属性或一个资源组名。 + * @param override {boolean} 是否覆盖已经存在的同名资源组,默认false。 + * @returns {boolean} + */ + Resource.prototype.createGroup = function (name, keys, override) { + if (override === void 0) { override = false; } + return RES.config.createGroup(name, keys, override); + }; + /** + * 检查配置文件里是否含有指定的资源 + * @method RES.hasRes + * @param key {string} 对应配置文件里的name属性或subKeys属性的一项。 + * @returns {boolean} + */ + Resource.prototype.hasRes = function (key) { + return RES.config.getResourceWithSubkey(key) != null; + }; + /** + * 通过key同步获取资源 + * @method RES.getRes + * @param key {string} + * @returns {any} + */ + Resource.prototype.getRes = function (resKey) { + var result = RES.config.getResourceWithSubkey(resKey); + if (result) { + var r = result.r; + var key = result.key; + var subkey = result.subkey; + var p = RES.processor.isSupport(r); + if (p && p.getData && subkey) { + return p.getData(RES.host, r, key, subkey); + } + else { + return RES.host.get(r); + } + } + else { + return null; + } + }; + Resource.prototype.getResAsync = function (key, compFunc, thisObject) { + var _this = this; + var paramKey = key; + var tempResult = RES.config.getResourceWithSubkey(key); + if (tempResult == null) { + if (compFunc) { + compFunc.call(thisObject, null, paramKey); + } + return Promise.reject(new RES.ResourceManagerError(2006, key)); + } + var data = this.getRes(key); + if (data) { + if (compFunc) { + egret.callLater(function () { + compFunc.call(thisObject, data, paramKey); + }, this); + } + return Promise.resolve(data); + } + var r = tempResult.r, subkey = tempResult.subkey; + return RES.queue.pushResItem(r).then(function (value) { + RES.host.save(r, value); + var p = RES.processor.isSupport(r); + if (p && p.getData && subkey) { + value = p.getData(RES.host, r, key, subkey); + } + if (compFunc) { + compFunc.call(thisObject, value, paramKey); + } + return value; + }, function (error) { + RES.host.remove(r); + RES.ResourceEvent.dispatchResourceEvent(_this, RES.ResourceEvent.ITEM_LOAD_ERROR, "", r); + if (compFunc) { + compFunc.call(thisObject, null, paramKey); + return Promise.reject(null); + } + return Promise.reject(error); + }); + }; + /** + * 通过url获取资源 + * @method RES.getResByUrl + * @param url {string} + * @param compFunc {Function} + * @param thisObject {any} + * @param type {string} + */ + Resource.prototype.getResByUrl = function (url, compFunc, thisObject, type) { + var _this = this; + if (type === void 0) { type = ""; } + var r = RES.config.getResource(url); + if (!r) { + if (!type) { + type = RES.config.__temp__get__type__via__url(url); + } + // manager.config.addResourceData({ name: url, url: url }); + r = { name: url, url: url, type: type, root: '', extra: 1 }; + RES.config.addResourceData(r); + r = RES.config.getResource(url); + if (!r) { + throw 'never'; + } + } + return RES.queue.pushResItem(r).then(function (value) { + RES.host.save(r, value); + if (compFunc && r) { + compFunc.call(thisObject, value, r.url); + } + return value; + }, function (error) { + RES.host.remove(r); + RES.ResourceEvent.dispatchResourceEvent(_this, RES.ResourceEvent.ITEM_LOAD_ERROR, "", r); + if (compFunc) { + compFunc.call(thisObject, null, url); + return Promise.reject(null); + } + return Promise.reject(error); + }); + }; + /** + * 销毁单个资源文件或一组资源的缓存数据,返回是否删除成功。 + * @method RES.destroyRes + * @param name {string} 配置文件中加载项的name属性或资源组名 + * @param force {boolean} 销毁一个资源组时其他资源组有同样资源情况资源是否会被删除,默认值true + * @returns {boolean} + */ + Resource.prototype.destroyRes = function (name, force) { + if (force === void 0) { force = true; } + var group = RES.config.getGroupByName(name); + if (group && group.length > 0) { + var index = RES.config.config.loadGroup.indexOf(name); + if (index == -1) { + return false; + } + if (force || (RES.config.config.loadGroup.length == 1 && RES.config.config.loadGroup[0] == name)) { + for (var _i = 0, group_2 = group; _i < group_2.length; _i++) { + var item = group_2[_i]; + RES.queue.unloadResource(item); + } + RES.config.config.loadGroup.splice(index, 1); + } + else { + var removeItemHash = {}; + for (var _a = 0, _b = RES.config.config.loadGroup; _a < _b.length; _a++) { + var groupName = _b[_a]; + for (var key in RES.config.config.groups[groupName]) { + var tmpname = RES.config.config.groups[groupName][key]; + if (removeItemHash[tmpname]) { + removeItemHash[tmpname]++; + } + else { + removeItemHash[tmpname] = 1; + } + } + } + for (var _c = 0, group_3 = group; _c < group_3.length; _c++) { + var item = group_3[_c]; + if (removeItemHash[item.name] && removeItemHash[item.name] == 1) { + RES.queue.unloadResource(item); + } + } + RES.config.config.loadGroup.splice(index, 1); + } + return true; + } + else { + var item = RES.config.getResource(name); + if (item) { + return RES.queue.unloadResource(item); + } + else { + console.warn("\u5728\u5185\u5B58" + name + "\u8D44\u6E90\u4E0D\u5B58\u5728"); + return false; + } + } + }; + /** + * 设置最大并发加载线程数量,默认值是4. + * @method RES.setMaxLoadingThread + * @param thread {number} 要设置的并发加载数。 + */ + Resource.prototype.setMaxLoadingThread = function (thread) { + if (thread < 1) { + thread = 1; + } + RES.queue.thread = thread; + }; + /** + * 设置资源加载失败时的重试次数。 + * @param retry 要设置的重试次数。 + */ + Resource.prototype.setMaxRetryTimes = function (retry) { + retry = Math.max(retry, 0); + RES.queue.maxRetryTimes = retry; + }; + Resource.prototype.addResourceData = function (data) { + data["root"] = ''; + RES.config.addResourceData(data); + }; + __decorate([ + RES.checkNull + ], Resource.prototype, "hasRes", null); + __decorate([ + RES.checkNull + ], Resource.prototype, "getRes", null); + __decorate([ + RES.checkNull + ], Resource.prototype, "getResAsync", null); + __decorate([ + RES.checkNull + ], Resource.prototype, "getResByUrl", null); + return Resource; + }(egret.EventDispatcher)); + RES.Resource = Resource; + __reflect(Resource.prototype, "RES.Resource"); + /** + * Resource单例 + */ + var instance; +})(RES || (RES = {})); +var RES; +(function (RES) { + /** + * Print the memory occupied by the picture. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 对文件路径的一些操作,针对的是 C:/A/B/C/D/example.ts这种格式 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + var path; + (function (path_1) { + /** + * Format the file path,"C:/A/B//C//D//example.ts"=>"C:/A/B/C/D/example.ts" + * @param filename Incoming file path + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 格式化文件路径,"C:/A/B//C//D//example.ts"=>"C:/A/B/C/D/example.ts" + * @param filename 传入的文件路径 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function normalize(filename) { + var arr = filename.split("/"); + return arr.filter(function (value, index) { return !!value || index == arr.length - 1; }).join("/"); + } + path_1.normalize = normalize; + /** + * Get the file name according to the file path, "C:/A/B/example.ts"=>"example.ts" + * @param filename Incoming file path + * @return File name + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 根据文件路径得到文件名字,"C:/A/B/example.ts"=>"example.ts" + * @param filename 传入的文件路径 + * @return 文件的名字 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function basename(filename) { + return filename.substr(filename.lastIndexOf("/") + 1); + } + path_1.basename = basename; + /** + * The path to the folder where the file is located,"C:/A/B/example.ts"=>"C:/A/B" + * @param filename Incoming file path + * @return The address of the folder where the file is located + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 文件所在文件夹路径,"C:/A/B/example.ts"=>"C:/A/B" + * @param filename 传入的文件路径 + * @return 文件所在文件夹的地址 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function dirname(path) { + return path.substr(0, path.lastIndexOf("/")); + } + path_1.dirname = dirname; + })(path = RES.path || (RES.path = {})); +})(RES || (RES = {})); +////////////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2014-present, Egret Technology. +// All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// * Neither the name of the Egret nor the +// names of its contributors may be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY EGRET AND CONTRIBUTORS "AS IS" AND ANY EXPRESS +// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL EGRET AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, +// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////////////////// +var RES; +(function (RES) { + /** + * @private + */ + var NativeVersionController = (function () { + function NativeVersionController() { + } + NativeVersionController.prototype.init = function () { + this.versionInfo = this.getLocalData("all.manifest"); + return Promise.resolve(); + }; + NativeVersionController.prototype.getVirtualUrl = function (url) { + return url; + }; + NativeVersionController.prototype.getLocalData = function (filePath) { + if (egret_native.readUpdateFileSync && egret_native.readResourceFileSync) { + //先取更新目录 + var content = egret_native.readUpdateFileSync(filePath); + if (content != null) { + return JSON.parse(content); + } + //再取资源目录 + content = egret_native.readResourceFileSync(filePath); + if (content != null) { + return JSON.parse(content); + } + } + return null; + }; + return NativeVersionController; + }()); + RES.NativeVersionController = NativeVersionController; + __reflect(NativeVersionController.prototype, "RES.NativeVersionController", ["RES.IVersionController"]); + if (egret.Capabilities.runtimeType == egret.RuntimeType.NATIVE) { + RES.VersionController = NativeVersionController; + } +})(RES || (RES = {})); +var RES; +(function (RES) { + var processor; + (function (processor_1) { + /** + * @internal + * @param resource 对应的资源接口,需要type属性 + */ + function isSupport(resource) { + return processor_1._map[resource.type]; + } + processor_1.isSupport = isSupport; + /** + * Register the processor that loads the resource + * @param type Load resource type + * @param processor Loaded processor, an instance that implements the Processor interface + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 注册加载资源的处理器 + * @param type 加载资源类型 + * @param processor 加载的处理器,一个实现Processor接口的实例 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function map(type, processor) { + processor_1._map[type] = processor; + } + processor_1.map = map; + /** + * @internal + */ + function promisify(loader, resource) { + var _this = this; + return new Promise(function (resolve, reject) { + var onSuccess = function () { + var texture = loader['data'] ? loader['data'] : loader['response']; + resolve(texture); + }; + var onError = function () { + var e = new RES.ResourceManagerError(1001, resource.url); + reject(e); + }; + loader.addEventListener(egret.Event.COMPLETE, onSuccess, _this); + loader.addEventListener(egret.IOErrorEvent.IO_ERROR, onError, _this); + }); + } + /** + * @private + * @param url + * @param file + */ + function getRelativePath(url, file) { + if (file.indexOf("://") != -1) { + return file; + } + url = url.split("\\").join("/"); + var params = url.match(/#.*|\?.*/); + var paramUrl = ""; + if (params) { + paramUrl = params[0]; + } + var index = url.lastIndexOf("/"); + if (index != -1) { + url = url.substring(0, index + 1) + file; + } + else { + url = file; + } + return url + paramUrl; + } + processor_1.getRelativePath = getRelativePath; + processor_1.ImageProcessor = { + onLoadStart: function (host, resource) { + var loader = new egret.ImageLoader(); + loader.load(RES.getVirtualUrl(resource.root + resource.url)); + return promisify(loader, resource) + .then(function (bitmapData) { + var texture = new egret.Texture(); + texture._setBitmapData(bitmapData); + var r = host.resourceConfig.getResource(resource.name); + if (r && r.scale9grid) { + var list = r.scale9grid.split(","); + texture["scale9Grid"] = new egret.Rectangle(parseInt(list[0]), parseInt(list[1]), parseInt(list[2]), parseInt(list[3])); + } + return texture; + }); + }, + onRemoveStart: function (host, resource) { + var texture = host.get(resource); + texture.dispose(); + } + }; + processor_1.KTXTextureProcessor = { + onLoadStart: function (host, resource) { + return host.load(resource, 'bin').then(function (data) { + if (!data) { + console.error('ktx:' + resource.root + resource.url + ' is null'); + return null; + } + var ktx = new egret.KTXContainer(data, 1); + if (ktx.isInvalid) { + console.error('ktx:' + resource.root + resource.url + ' is invalid'); + return null; + } + // + var bitmapData = new egret.BitmapData(data); + bitmapData.debugCompressedTextureURL = resource.root + resource.url; + bitmapData.format = 'ktx'; + ktx.uploadLevels(bitmapData, false); + // + var texture = new egret.Texture(); + texture._setBitmapData(bitmapData); + var r = host.resourceConfig.getResource(resource.name); + if (r && r.scale9grid) { + var list = r.scale9grid.split(","); + texture["scale9Grid"] = new egret.Rectangle(parseInt(list[0]), parseInt(list[1]), parseInt(list[2]), parseInt(list[3])); + } + // + host.save(resource, texture); + return texture; + }, function (e) { + host.remove(resource); + throw e; + }); + }, + onRemoveStart: function (host, resource) { + var texture = host.get(resource); + if (texture) { + texture.dispose(); + } + } + }; + /** + * + */ + function makeEtc1SeperatedAlphaResourceInfo(resource) { + return { name: resource.name + '_alpha', url: resource['etc1_alpha_url'], type: 'ktx', root: resource.root }; + } + processor_1.makeEtc1SeperatedAlphaResourceInfo = makeEtc1SeperatedAlphaResourceInfo; + /** + * + */ + processor_1.ETC1KTXProcessor = { + onLoadStart: function (host, resource) { + return host.load(resource, "ktx").then(function (colorTex) { + if (!colorTex) { + return null; + } + if (resource['etc1_alpha_url']) { + var r_1 = makeEtc1SeperatedAlphaResourceInfo(resource); + return host.load(r_1, "ktx") + .then(function (alphaMaskTex) { + if (colorTex && colorTex.$bitmapData && alphaMaskTex.$bitmapData) { + colorTex.$bitmapData.etcAlphaMask = alphaMaskTex.$bitmapData; + host.save(r_1, alphaMaskTex); + } + else { + host.remove(r_1); + } + return colorTex; + }, function (e) { + host.remove(r_1); + throw e; + }); + } + return colorTex; + }, function (e) { + host.remove(resource); + throw e; + }); + }, + onRemoveStart: function (host, resource) { + var colorTex = host.get(resource); + if (colorTex) { + colorTex.dispose(); + } + if (resource['etc1_alpha_url']) { + var r = makeEtc1SeperatedAlphaResourceInfo(resource); + var alphaMaskTex = host.get(r); + if (alphaMaskTex) { + alphaMaskTex.dispose(); + } + host.unload(r); //这里其实还会再删除一次,不过无所谓了。alphaMaskTex已经显示删除了 + } + } + }; + processor_1.BinaryProcessor = { + onLoadStart: function (host, resource) { + var request = new egret.HttpRequest(); + request.responseType = egret.HttpResponseType.ARRAY_BUFFER; + request.open(RES.getVirtualUrl(resource.root + resource.url), "get"); + request.send(); + return promisify(request, resource); + }, + onRemoveStart: function (host, resource) { + } + }; + processor_1.TextProcessor = { + onLoadStart: function (host, resource) { + var request = new egret.HttpRequest(); + request.responseType = egret.HttpResponseType.TEXT; + request.open(RES.getVirtualUrl(resource.root + resource.url), "get"); + request.send(); + return promisify(request, resource); + }, + onRemoveStart: function (host, resource) { + return true; + } + }; + processor_1.JsonProcessor = { + onLoadStart: function (host, resource) { + return host.load(resource, 'text').then(function (text) { + var data = JSON.parse(text); + return data; + }); + }, + onRemoveStart: function (host, request) { + } + }; + /** + * @internal + */ + processor_1.XMLProcessor = { + onLoadStart: function (host, resource) { + return host.load(resource, 'text').then(function (text) { + var data = egret.XML.parse(text); + return data; + }); + }, + onRemoveStart: function (host, resource) { + return true; + } + }; + /** + * @internal + */ + processor_1.CommonJSProcessor = { + onLoadStart: function (host, resource) { + // let text = await host.load(resource, 'text'); + return host.load(resource, 'text').then(function (text) { + var f = new Function('require', 'exports', text); + var require = function () { }; + var exports = {}; + try { + f(require, exports); + } + catch (e) { + throw new RES.ResourceManagerError(2003, resource.name, e.message); + } + return exports; + }); + }, + onRemoveStart: function (host, resource) { + } + }; + /** + * @internal + */ + processor_1.SheetProcessor = { + onLoadStart: function (host, resource) { + return host.load(resource, "json").then(function (data) { + var r = host.resourceConfig.getResource(RES.nameSelector(data.file)); + if (!r) { + var imageName = getRelativePath(resource.url, data.file); + r = { name: imageName, url: imageName, type: 'image', root: resource.root }; + } + return host.load(r) + .then(function (bitmapData) { + if (!bitmapData) { + return null; + } + var frames = data.frames; + var spriteSheet = new egret.SpriteSheet(bitmapData); + spriteSheet["$resourceInfo"] = r; + for (var subkey in frames) { + var config = frames[subkey]; + var texture = spriteSheet.createTexture(subkey, config.x, config.y, config.w, config.h, config.offX, config.offY, config.sourceW, config.sourceH); + if (config["scale9grid"]) { + var str = config["scale9grid"]; + var list = str.split(","); + texture["scale9Grid"] = new egret.Rectangle(parseInt(list[0]), parseInt(list[1]), parseInt(list[2]), parseInt(list[3])); + } + } + host.save(r, bitmapData); + return spriteSheet; + }, function (e) { + host.remove(r); + throw e; + }); + }); + }, + getData: function (host, resource, key, subkey) { + var data = host.get(resource); + if (data) { + return data.getTexture(subkey); + } + else { + return null; + } + }, + onRemoveStart: function (host, resource) { + var sheet = host.get(resource); + var r = sheet["$resourceInfo"]; + sheet.dispose(); + host.unload(r); + } + }; + var fontGetTexturePath = function (url, fntText) { + var file = ""; + var lines = fntText.split("\n"); + var pngLine = lines[2]; + var index = pngLine.indexOf("file=\""); + if (index != -1) { + pngLine = pngLine.substring(index + 6); + index = pngLine.indexOf("\""); + file = pngLine.substring(0, index); + } + url = url.split("\\").join("/"); + var index = url.lastIndexOf("/"); + if (index != -1) { + url = url.substring(0, index + 1) + file; + } + else { + url = file; + } + return url; + }; + /** + * @internal + */ + processor_1.FontProcessor = { + onLoadStart: function (host, resource) { + // let data: string = await host.load(resource, 'text'); + return host.load(resource, 'text').then(function (data) { + var config; + try { + config = JSON.parse(data); + } + catch (e) { + config = data; + } + var imageName; + if (typeof config === 'string') { + imageName = fontGetTexturePath(resource.url, config); + } + else { + imageName = getRelativePath(resource.url, config.file); + } + var r = host.resourceConfig.getResource(RES.nameSelector(imageName)); + if (!r) { + r = { name: imageName, url: imageName, type: 'image', root: resource.root }; + } + // var texture: egret.Texture = await host.load(r); + return host.load(r).then(function (texture) { + var font = new egret.BitmapFont(texture, config); + font["$resourceInfo"] = r; + // todo refactor + host.save(r, texture); + return font; + }, function (e) { + host.remove(r); + throw e; + }); + }); + }, + onRemoveStart: function (host, resource) { + var font = host.get(resource); + var r = font["$resourceInfo"]; + host.unload(r); + } + }; + processor_1.SoundProcessor = { + onLoadStart: function (host, resource) { + var sound = new egret.Sound(); + sound.load(RES.getVirtualUrl(resource.root + resource.url)); + return promisify(sound, resource).then(function () { + return sound; + }); + }, + onRemoveStart: function (host, resource) { + var sound = host.get(resource); + sound.close(); + } + }; + /** + * @internal + */ + processor_1.MovieClipProcessor = { + onLoadStart: function (host, resource) { + var mcData; + var imageResource; + return host.load(resource, 'json') + .then(function (value) { + mcData = value; + var jsonPath = resource.name; + var imagePath = jsonPath.substring(0, jsonPath.lastIndexOf(".")) + ".png"; + imageResource = host.resourceConfig.getResource(imagePath); + if (!imageResource) { + throw new RES.ResourceManagerError(1001, imagePath); + } + return host.load(imageResource); + }).then(function (value) { + host.save(imageResource, value); + var mcTexture = value; + var mcDataFactory = new egret.MovieClipDataFactory(mcData, mcTexture); + return mcDataFactory; + }); + }, + onRemoveStart: function (host, resource) { + var mcFactory = host.get(resource); + mcFactory.clearCache(); + mcFactory.$spriteSheet.dispose(); + // refactor + var jsonPath = resource.name; + var imagePath = jsonPath.substring(0, jsonPath.lastIndexOf(".")) + ".png"; + var imageResource = host.resourceConfig.getResource(imagePath); + if (imageResource) { + host.unload(imageResource); + } + } + }; + /** + * @internal + */ + processor_1.MergeJSONProcessor = { + onLoadStart: function (host, resource) { + // let data = await host.load(resource, 'json'); + return host.load(resource, 'json').then(function (data) { + for (var key in data) { + RES.config.addSubkey(key, resource.name); + } + return data; + }); + }, + getData: function (host, resource, key, subkey) { + var data = host.get(resource); + if (data) { + return data[subkey]; + } + else { + console.error("missing resource :" + resource.name); + return null; + } + }, + onRemoveStart: function (host, resource) { + } + }; + /** + * @internal + */ + processor_1.LegacyResourceConfigProcessor = { + onLoadStart: function (host, resource) { + return host.load(resource, 'json').then(function (data) { + var resConfigData = RES.config.config; + var root = resource.root; + var fileSystem = resConfigData.fileSystem; + if (!fileSystem) { + fileSystem = { + fsData: {}, + getFile: function (filename) { + return fsData[filename]; + }, + addFile: function (data) { + if (!data.type) + data.type = ""; + if (root == undefined) { + data.root = ""; + } + fsData[data.name] = data; + }, + profile: function () { + console.log(fsData); + }, + removeFile: function (filename) { + delete fsData[filename]; + } + }; + resConfigData.fileSystem = fileSystem; + } + var groups = resConfigData.groups; + for (var _i = 0, _a = data.groups; _i < _a.length; _i++) { + var g = _a[_i]; + if (g.keys == "") { + groups[g.name] = []; + } + else { + groups[g.name] = g.keys.split(","); + } + } + var alias = resConfigData.alias; + var fsData = fileSystem['fsData']; + var _loop_1 = function (resource_1) { + fsData[resource_1.name] = resource_1; + fsData[resource_1.name].root = root; + if (resource_1.subkeys) { + resource_1.subkeys.split(",").forEach(function (subkey) { + alias[subkey] = resource_1.name + "#" + subkey; + alias[resource_1.name + "." + subkey] = resource_1.name + "#" + subkey; + }); + // ResourceConfig. + } + }; + for (var _b = 0, _c = data.resources; _b < _c.length; _b++) { + var resource_1 = _c[_b]; + _loop_1(resource_1); + } + host.save(resource, data); + return data; + }); + }, + onRemoveStart: function () { + } + }; + /** + * @internal + */ + processor_1._map = { + "image": processor_1.ImageProcessor, + "json": processor_1.JsonProcessor, + "text": processor_1.TextProcessor, + "xml": processor_1.XMLProcessor, + "sheet": processor_1.SheetProcessor, + "font": processor_1.FontProcessor, + "bin": processor_1.BinaryProcessor, + "commonjs": processor_1.CommonJSProcessor, + "sound": processor_1.SoundProcessor, + "movieclip": processor_1.MovieClipProcessor, + "mergeJson": processor_1.MergeJSONProcessor, + "legacyResourceConfig": processor_1.LegacyResourceConfigProcessor, + "ktx": processor_1.KTXTextureProcessor, + "etc1.ktx": processor_1.ETC1KTXProcessor, + "pvrtc.ktx": processor_1.KTXTextureProcessor, + }; + })(processor = RES.processor || (RES.processor = {})); +})(RES || (RES = {})); +////////////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2014-present, Egret Technology. +// All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// * Neither the name of the Egret nor the +// names of its contributors may be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY EGRET AND CONTRIBUTORS "AS IS" AND ANY EXPRESS +// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL EGRET AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, +// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////////////////// +var RES; +(function (RES) { + /** + * The events of resource loading. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 资源加载事件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + var ResourceEvent = (function (_super) { + __extends(ResourceEvent, _super); + /** + * Creates an Event object to pass as a parameter to event listeners. + * @param type The type of the event, accessible as Event.type. + * @param bubbles Determines whether the Event object participates in the bubbling stage of the event flow. The default value is false. + * @param cancelable Determines whether the Event object can be canceled. The default values is false. + * @version Egret 5.2 + * @platform Web,Native + * @private + * @language en_US + */ + /** + * 创建一个作为参数传递给事件侦听器的 Event 对象。 + * @param type 事件的类型,可以作为 Event.type 访问。 + * @param bubbles 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。 + * @param cancelable 确定是否可以取消 Event 对象。默认值为 false。 + * @version Egret 5.2 + * @platform Web,Native + * @private + * @language zh_CN + */ + function ResourceEvent(type, bubbles, cancelable) { + if (bubbles === void 0) { bubbles = false; } + if (cancelable === void 0) { cancelable = false; } + var _this = _super.call(this, type, bubbles, cancelable) || this; + /** + * File number that has been loaded. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 已经加载的文件数。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + _this.itemsLoaded = 0; + /** + * Total file number to load. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 要加载的总文件数。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + _this.itemsTotal = 0; + /** + * Resource group name. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 资源组名。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + _this.groupName = ""; + return _this; + } + /** + * 使用指定的EventDispatcher对象来抛出事件对象。抛出的对象将会缓存在对象池上,供下次循环复用。 + * @method RES.ResourceEvent.dispatchResourceEvent + * @param target {egret.IEventDispatcher} + * @param type {string} + * @param groupName {string} + * @param resItem {egret.ResourceItem} + * @param itemsLoaded {number} + * @param itemsTotal {number} + * @internal + * @version Egret 5.2 + * @platform Web,Native + * @language en_CN + */ + ResourceEvent.dispatchResourceEvent = function (target, type, groupName, resItem, itemsLoaded, itemsTotal) { + if (groupName === void 0) { groupName = ""; } + if (resItem === void 0) { resItem = undefined; } + if (itemsLoaded === void 0) { itemsLoaded = 0; } + if (itemsTotal === void 0) { itemsTotal = 0; } + var event = egret.Event.create(ResourceEvent, type); + event.groupName = groupName; + if (resItem) { + event.resItem = RES.ResourceItem.convertToResItem(resItem); + } + event.itemsLoaded = itemsLoaded; + event.itemsTotal = itemsTotal; + var result = target.dispatchEvent(event); + egret.Event.release(event); + return result; + }; + /** + * Failure event for a load item. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 一个加载项加载失败事件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + ResourceEvent.ITEM_LOAD_ERROR = "itemLoadError"; + /** + * Configure file to load and parse the completion event. Note: if a configuration file is loaded, it will not be thrown out, and if you want to handle the configuration loading failure, monitor the CONFIG_LOAD_ERROR event. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 配置文件加载并解析完成事件。注意:若有配置文件加载失败,将不会抛出此事件,若要处理配置加载失败,请同时监听 CONFIG_LOAD_ERROR 事件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + ResourceEvent.CONFIG_COMPLETE = "configComplete"; + /** + * Configuration file failed to load. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 配置文件加载失败事件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + ResourceEvent.CONFIG_LOAD_ERROR = "configLoadError"; + /** + * Delay load group resource loading progress event. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 延迟加载组资源加载进度事件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + ResourceEvent.GROUP_PROGRESS = "groupProgress"; + /** + * Delay load group resource to complete event. Note: if you have a resource item loading failure, the event will not be thrown, if you want to handle the group load failure, please listen to the GROUP_LOAD_ERROR event. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 延迟加载组资源加载完成事件。注意:若组内有资源项加载失败,将不会抛出此事件,若要处理组加载失败,请同时监听 GROUP_LOAD_ERROR 事件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + ResourceEvent.GROUP_COMPLETE = "groupComplete"; + /** + * Delayed load group resource failed event. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 延迟加载组资源加载失败事件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + ResourceEvent.GROUP_LOAD_ERROR = "groupLoadError"; + return ResourceEvent; + }(egret.Event)); + RES.ResourceEvent = ResourceEvent; + __reflect(ResourceEvent.prototype, "RES.ResourceEvent"); +})(RES || (RES = {})); +////////////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2014-present, Egret Technology. +// All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// * Neither the name of the Egret nor the +// names of its contributors may be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY EGRET AND CONTRIBUTORS "AS IS" AND ANY EXPRESS +// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL EGRET AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, +// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +////////////////////////////////////////////////////////////////////////////////////// +var RES; +(function (RES) { + /** + * Resource term. One of the resources arrays in resource.json. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 资源项。对应 resource.json 中 resources 数组中的一项。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + var ResourceItem; + (function (ResourceItem) { + /** + * XML file. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * XML 文件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + ResourceItem.TYPE_XML = "xml"; + /** + * Picture file. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 图片文件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + ResourceItem.TYPE_IMAGE = "image"; + /** + * Binary file. + * @version Egret 5.2 + * @platform Web + * @language en_US + */ + /** + * 二进制文件。 + * @version Egret 5.2 + * @platform Web + * @language zh_CN + */ + ResourceItem.TYPE_BIN = "bin"; + /** + * Text file. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 文本文件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + ResourceItem.TYPE_TEXT = "text"; + /** + * JSON file. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * JSON 文件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + ResourceItem.TYPE_JSON = "json"; + /** + * SpriteSheet file. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * SpriteSheet 文件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + ResourceItem.TYPE_SHEET = "sheet"; + /** + * BitmapTextSpriteSheet file. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * BitmapTextSpriteSheet 文件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + ResourceItem.TYPE_FONT = "font"; + /** + * Sound file. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 声音文件。 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + ResourceItem.TYPE_SOUND = "sound"; + function convertToResItem(r) { + var name = r.name; + if (!RES.config.config) { + name = r.url; + } + else { + for (var aliasName in RES.config.config.alias) { + if (RES.config.config.alias[aliasName] == r.url) { + name = aliasName; + } + } + } + var result = { + name: name, + url: r.url, + type: r.type, + data: r, + root: r.root + }; + return result; + } + ResourceItem.convertToResItem = convertToResItem; + })(ResourceItem = RES.ResourceItem || (RES.ResourceItem = {})); +})(RES || (RES = {})); +var RES; +(function (RES) { + /** + * @internal + */ + var NewFileSystem = (function () { + function NewFileSystem(data) { + this.data = data; + } + NewFileSystem.prototype.profile = function () { + console.log(this.data); + }; + NewFileSystem.prototype.addFile = function (filename, type) { + if (!type) + type = ""; + filename = RES.path.normalize(filename); + var basefilename = RES.path.basename(filename); + var folder = RES.path.dirname(filename); + if (!this.exists(folder)) { + this.mkdir(folder); + } + var d = this.resolve(folder); + d[basefilename] = { url: filename, type: type }; + }; + NewFileSystem.prototype.getFile = function (filename) { + var result = this.resolve(filename); + if (result) { + result.name = filename; + } + return result; + }; + NewFileSystem.prototype.resolve = function (dirpath) { + if (dirpath == "") { + return this.data; + } + dirpath = RES.path.normalize(dirpath); + var list = dirpath.split("/"); + var current = this.data; + for (var _i = 0, list_2 = list; _i < list_2.length; _i++) { + var f = list_2[_i]; + if (current) { + current = current[f]; + } + else { + return current; + } + } + return current; + }; + NewFileSystem.prototype.mkdir = function (dirpath) { + dirpath = RES.path.normalize(dirpath); + var list = dirpath.split("/"); + var current = this.data; + for (var _i = 0, list_3 = list; _i < list_3.length; _i++) { + var f = list_3[_i]; + if (!current[f]) { + current[f] = {}; + } + current = current[f]; + } + }; + NewFileSystem.prototype.exists = function (dirpath) { + if (dirpath == "") + return true; + dirpath = RES.path.normalize(dirpath); + var list = dirpath.split("/"); + var current = this.data; + for (var _i = 0, list_4 = list; _i < list_4.length; _i++) { + var f = list_4[_i]; + if (!current[f]) { + return false; + } + current = current[f]; + } + return true; + }; + return NewFileSystem; + }()); + RES.NewFileSystem = NewFileSystem; + __reflect(NewFileSystem.prototype, "RES.NewFileSystem"); +})(RES || (RES = {})); +var RES; +(function (RES) { + var __tempCache = {}; + /** + * Print the memory occupied by the picture. + * @version Egret 5.2 + * @platform Web,Native + * @language en_US + */ + /** + * 打印图片所占内存 + * @version Egret 5.2 + * @platform Web,Native + * @language zh_CN + */ + function profile() { + RES.config.config.fileSystem.profile(); + console.log(__tempCache); + //todo + var totalImageSize = 0; + for (var key in __tempCache) { + var img = __tempCache[key]; + if (img instanceof egret.Texture) { + totalImageSize += img.$bitmapWidth * img.$bitmapHeight * 4; + } + } + console.log("gpu size : " + (totalImageSize / 1024).toFixed(3) + "kb"); + } + RES.profile = profile; + /** + * @internal + */ + RES.host = { + state: {}, + get resourceConfig() { + return RES.config; + }, + load: function (r, processorName) { + var processor = typeof processorName == 'string' ? RES.processor._map[processorName] : processorName; + return RES.queue["loadResource"](r, processor); + }, + unload: function (r) { return RES.queue.unloadResource(r); }, + save: function (resource, data) { + RES.host.state[resource.root + resource.name] = 2; + delete resource.promise; + __tempCache[resource.root + resource.name] = data; + }, + get: function (resource) { + return __tempCache[resource.root + resource.name]; + }, + remove: function (resource) { + delete RES.host.state[resource.root + resource.name]; + delete __tempCache[resource.root + resource.name]; + } + }; + /** + * @internal + */ + RES.config = new RES.ResourceConfig(); + /** + * @internal + */ + RES.queue = new RES.ResourceLoader(); + /** + * @private + */ + var ResourceManagerError = (function (_super) { + __extends(ResourceManagerError, _super); + function ResourceManagerError(code, replacer, replacer2) { + var _this = _super.call(this) || this; + /** + * why instanceof e != ResourceManagerError ??? + * see link : https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work + */ + _this.__resource_manager_error__ = true; + _this.name = code.toString(); + _this.message = ResourceManagerError.errorMessage[code].replace("{0}", replacer).replace("{1}", replacer2); + return _this; + } + ResourceManagerError.errorMessage = { + 1001: '文件加载失败:{0}', + 1002: "ResourceManager 初始化失败:配置文件加载失败", + 2001: "{0}解析失败,不支持指定解析类型:\'{1}\',请编写自定义 Processor ,更多内容请参见 https://github.com/egret-labs/resourcemanager/blob/master/docs/README.md#processor", + 2002: "Analyzer 相关API 在 ResourceManager 中不再支持,请编写自定义 Processor ,更多内容请参见 https://github.com/egret-labs/resourcemanager/blob/master/docs/README.md#processor", + 2003: "{0}解析失败,错误原因:{1}", + 2004: "无法找到文件类型:{0}", + 2005: "RES加载了不存在或空的资源组:\"{0}\"", + 2006: "资源配置文件中无法找到特定的资源:{0}" + }; + return ResourceManagerError; + }(Error)); + RES.ResourceManagerError = ResourceManagerError; + __reflect(ResourceManagerError.prototype, "RES.ResourceManagerError"); +})(RES || (RES = {})); diff --git a/libs/modules/assetsmanager/assetsmanager.min.js b/libs/modules/assetsmanager/assetsmanager.min.js new file mode 100644 index 0000000..bd155e9 --- /dev/null +++ b/libs/modules/assetsmanager/assetsmanager.min.js @@ -0,0 +1 @@ +var __reflect=this&&this.__reflect||function(e,r,t){e.__class__=r,t?t.push(r):t=[r],e.__types__=e.__types__?t.concat(e.__types__):t},__extends=this&&this.__extends||function(e,r){function t(){this.constructor=e}for(var o in r)r.hasOwnProperty(o)&&(e[o]=r[o]);t.prototype=r.prototype,e.prototype=new t},__decorate=this&&this.__decorate||function(e,r,t,o){var n,i=arguments.length,a=3>i?r:null===o?o=Object.getOwnPropertyDescriptor(r,t):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,r,t,o);else for(var s=e.length-1;s>=0;s--)(n=e[s])&&(a=(3>i?n(a):i>3?n(r,t,a):n(r,t))||a);return i>3&&a&&Object.defineProperty(r,t,a),a},RES;!function(e){}(RES||(RES={}));var RES;!function(e){var r=function(){function r(){this.groupTotalDic={},this.numLoadedDic={},this.groupErrorDic={},this.retryTimesDic={},this.maxRetryTimes=3,this.reporterDic={},this.dispatcherDic={},this.failedList=new Array,this.loadItemErrorDic={},this.errorDic={},this.itemListPriorityDic={},this.itemLoadDic={},this.promiseHash={},this.lazyLoadList=new Array,this.loadingCount=0,this.thread=4}return r.prototype.pushResItem=function(e){if(this.promiseHash[e.root+e.name])return this.promiseHash[e.root+e.name];this.lazyLoadList.push(e),this.itemListPriorityDic[Number.NEGATIVE_INFINITY]=this.lazyLoadList,this.updatelistPriority(this.lazyLoadList,Number.NEGATIVE_INFINITY);var r=new egret.EventDispatcher;this.dispatcherDic[e.root+e.name]=r;var t=new Promise(function(e,t){r.addEventListener("complete",function(r){e(r.data)},null),r.addEventListener("error",function(e){t(e.data)},null)});return this.promiseHash[e.root+e.name]=t,this.loadNextResource(),t},r.prototype.pushResGroup=function(e,r,t,o){if(this.promiseHash[r])return this.promiseHash[r];for(var n=e.length,i=0;n>i;i++){var a=e[i];a.groupNames||(a.groupNames=[]),a.groupNames.push(r)}this.groupTotalDic[r]=e.length,this.numLoadedDic[r]=0,this.updatelistPriority(e,t),this.reporterDic[r]=o;var s=new egret.EventDispatcher;this.dispatcherDic[r]=s;var u=new Promise(function(e,r){s.addEventListener("complete",e,null),s.addEventListener("error",function(e){r(e.data)},null)});return this.promiseHash[r]=u,this.loadNextResource(),u},r.prototype.updatelistPriority=function(e,r){void 0==this.itemListPriorityDic[r]&&(this.itemListPriorityDic[r]=[]);for(var t=0,o=e;ti){this.itemListPriorityDic[r].push(n);var a=this.itemListPriorityDic[i].indexOf(n);this.itemListPriorityDic[i].splice(a,1)}}}},r.prototype.findPriorityInDic=function(e){for(var r in this.itemListPriorityDic)if(this.itemListPriorityDic[r].indexOf(e)>-1)return parseInt(r)},r.prototype.loadNextResource=function(){for(;this.loadingCountr.maxRetryTimes))return r.retryTimesDic[t.name]=n+1,r.failedList.push(t),void r.loadNextResource();if(delete r.retryTimesDic[t.name],r.promiseHash[t.root+t.name]){var i=r.deleteDispatcher(t.root+t.name);i.dispatchEventWith("error",!1,{r:t,error:o})}var a=t.groupNames;if(a){delete t.groupNames;for(var s=0,u=a;s0)return this.failedList.shift();var e=Number.NEGATIVE_INFINITY;for(var r in this.itemListPriorityDic)e=Math.max(e,r);var t=this.itemListPriorityDic[e];if(t)return 0==t.length?(delete this.itemListPriorityDic[e],this.getOneResourceInfoInGroup()):t.shift()},r.prototype.setGroupProgress=function(e,r){var t=this.reporterDic[e];this.numLoadedDic[e]++;var o=this.numLoadedDic[e],n=this.groupTotalDic[e];return t&&t.onProgress&&t.onProgress(o,n,r),o==n},r.prototype.loadGroupEnd=function(e,r){delete this.groupTotalDic[e],delete this.numLoadedDic[e],delete this.reporterDic[e];var t=this.deleteDispatcher(e);if(r){delete this.groupErrorDic[e];var o=this.loadItemErrorDic[e];delete this.loadItemErrorDic[e],t.dispatchEventWith("error",!1,{itemList:o,lastError:r})}else{var n=this.groupErrorDic[e];if(delete this.groupErrorDic[e],n){var o=this.loadItemErrorDic[e];delete this.loadItemErrorDic[e];var i=this.errorDic[e];delete this.errorDic[e],t.dispatchEventWith("error",!1,{itemList:o,error:i})}else t.dispatchEventWith("complete")}},r.prototype.deleteDispatcher=function(e){delete this.promiseHash[e];var r=this.dispatcherDic[e];return delete this.dispatcherDic[e],r},r.prototype.loadResource=function(r,t){if(!t){if(1==e.FEATURE_FLAG.FIX_DUPLICATE_LOAD){var o=e.host.state[r.root+r.name];if(2==o)return Promise.resolve(e.host.get(r));if(1==o)return r.promise}t=e.processor.isSupport(r)}if(!t)throw new e.ResourceManagerError(2001,r.name,r.type);e.host.state[r.root+r.name]=1;var n=t.onLoadStart(e.host,r);return r.promise=n,n},r.prototype.unloadResource=function(r){var t=e.host.get(r);if(!t)return console.warn("尝试释放不存在的资源:",r.name),!1;var o=e.processor.isSupport(r);return o?(o.onRemoveStart(e.host,r),e.host.remove(r),1==r.extra&&e.config.removeResourceData(r),!0):!0},r}();e.ResourceLoader=r,__reflect(r.prototype,"RES.ResourceLoader")}(RES||(RES={}));var RES;!function(e){e.checkNull=function(e,r,t){var o=t.value;t.value=function(){for(var e=[],t=0;t=0?"legacyResourceConfig":"resourceConfig",o={type:t,root:r,url:e,name:e}}e.resourceNameSelector=function(e){return e},e.getResourceInfo=r;var o;e.setConfigURL=t;var n=function(){function t(){}return t.prototype.init=function(){return this.config||(this.config={alias:{},groups:{},resourceRoot:o.root,mergeSelector:null,fileSystem:null,loadGroup:[]}),e.queue.pushResItem(o)["catch"](function(r){return e.isCompatible||r.__resource_manager_error__||(r.error?console.error(r.error.stack):console.error(r.stack),r=new e.ResourceManagerError(1002)),e.host.remove(o),Promise.reject(r)})},t.prototype.getGroupByName=function(r){var t=this.config.groups[r],o=[];if(!t)return o;for(var n=0,i=t;n=0&&(t=e.substr(r+1),e=e.substr(0,r));var o=this.getResource(e);return o?{r:o,key:e,subkey:t}:null},t.prototype.getKeyByAlias=function(e){return this.config.alias[e]?this.config.alias[e]:e},t.prototype.getResource=function(e){var t=this.config.alias[e];t||(t=e);var o=r(t);return o?o:null},t.prototype.createGroup=function(e,r,t){if(void 0===t&&(t=!1),!t&&this.config.groups[e]||!r||0==r.length)return!1;for(var o=[],n=0,i=r;n=0){var o=t.split("://");t=o[0]+"://"+e.path.normalize(o[1]+"/"),r=r.replace(t,"")}else t=e.path.normalize(t+"/"),r=r.replace(t,"");return e.setConfigURL(r,t),P||(P=new D),a(P.loadConfig())}function a(r){return e.isCompatible?void r["catch"](function(e){}).then():r}function s(e,r,t){return void 0===r&&(r=0),a(P.loadGroup(e,r,t))}function u(e){return P.isGroupLoaded(e)}function c(r){return P.getGroupByName(r).map(function(r){return e.ResourceItem.convertToResItem(r)})}function l(e,r,t){return void 0===t&&(t=!1),P.createGroup(e,r,t)}function f(e){return P.hasRes(e)}function p(e){return P.getRes(e)}function g(e,r,t){return a(P.getResAsync.apply(P,arguments))}function d(e,r,t,o){if(void 0===o&&(o=""),!P){var n=egret.sys.tr(3200);return egret.warn(n),Promise.reject(n)}return a(P.getResByUrl(e,r,t,o))}function v(e,r){return P.destroyRes(e,r)}function h(e){P||(P=new D),P.setMaxLoadingThread(e)}function m(e){P.setMaxRetryTimes(e)}function R(e,r,t,o,n){void 0===o&&(o=!1),void 0===n&&(n=0),P||(P=new D),P.addEventListener(e,r,t,o,n)}function E(e,r,t,o){void 0===o&&(o=!1),P.removeEventListener(e,r,t,o)}function y(e){P.addResourceData(e)}function _(){return P||(P=new D),P.vcs}function S(e){P||(P=new D),P.registerVersionController(e)}function L(e){return P.vcs?P.vcs.getVirtualUrl(e):e}e.nameSelector=r,e.typeSelector=t,e.registerAnalyzer=o,e.setIsCompatible=n,e.isCompatible=!1,e.loadConfig=i,e.loadGroup=s,e.isGroupLoaded=u,e.getGroupByName=c,e.createGroup=l,e.hasRes=f,e.getRes=p,e.getResAsync=g,e.getResByUrl=d,e.destroyRes=v,e.setMaxLoadingThread=h,e.setMaxRetryTimes=m,e.addEventListener=R,e.removeEventListener=E,e.$addResourceData=y,e.getVersionController=_,e.registerVersionController=S,e.getVirtualUrl=L;var D=function(r){function t(){var t=r.call(this)||this;return t.isVcsInit=!1,t.normalLoadConfig=function(){return e.config.init().then(function(r){e.ResourceEvent.dispatchResourceEvent(t,e.ResourceEvent.CONFIG_COMPLETE)},function(r){return e.ResourceEvent.dispatchResourceEvent(t,e.ResourceEvent.CONFIG_LOAD_ERROR),Promise.reject(r)})},e.VersionController&&(t.vcs=new e.VersionController),t}return __extends(t,r),t.prototype.registerVersionController=function(e){this.vcs=e,this.isVcsInit=!1},t.prototype.loadConfig=function(){var e=this;return!this.isVcsInit&&this.vcs?(this.isVcsInit=!0,this.vcs.init().then(function(){return e.normalLoadConfig()})):this.normalLoadConfig()},t.prototype.isGroupLoaded=function(r){var t=e.config.getGroupByName(r);return t.every(function(r){return null!=e.host.get(r)})},t.prototype.getGroupByName=function(r){return e.config.getGroupByName(r)},t.prototype.loadGroup=function(r,t,o){var n=this;void 0===t&&(t=0);var i={onProgress:function(t,i,a){o&&o.onProgress&&o.onProgress(t,i,a),e.ResourceEvent.dispatchResourceEvent(n,e.ResourceEvent.GROUP_PROGRESS,r,a,t,i)}};return this._loadGroup(r,t,i).then(function(t){-1==e.config.config.loadGroup.indexOf(r)&&e.config.config.loadGroup.push(r),e.ResourceEvent.dispatchResourceEvent(n,e.ResourceEvent.GROUP_COMPLETE,r)},function(t){if(-1==e.config.config.loadGroup.indexOf(r)&&e.config.config.loadGroup.push(r),t.itemList)for(var o=t.itemList,i=o.length,a=0;i>a;a++){var s=o[a];delete s.promise,e.ResourceEvent.dispatchResourceEvent(n,e.ResourceEvent.ITEM_LOAD_ERROR,r,s)}return e.isCompatible&&console.warn(t.error.message),e.ResourceEvent.dispatchResourceEvent(n,e.ResourceEvent.GROUP_LOAD_ERROR,r),Promise.reject(t.error)})},t.prototype._loadGroup=function(r,t,o){void 0===t&&(t=0);var n=e.config.getGroupByName(r);return 0==n.length?new Promise(function(t,o){o({error:new e.ResourceManagerError(2005,r)})}):e.queue.pushResGroup(n,r,t,o)},t.prototype.createGroup=function(r,t,o){return void 0===o&&(o=!1),e.config.createGroup(r,t,o)},t.prototype.hasRes=function(r){return null!=e.config.getResourceWithSubkey(r)},t.prototype.getRes=function(r){var t=e.config.getResourceWithSubkey(r);if(t){var o=t.r,n=t.key,i=t.subkey,a=e.processor.isSupport(o);return a&&a.getData&&i?a.getData(e.host,o,n,i):e.host.get(o)}return null},t.prototype.getResAsync=function(r,t,o){var n=this,i=r,a=e.config.getResourceWithSubkey(r);if(null==a)return t&&t.call(o,null,i),Promise.reject(new e.ResourceManagerError(2006,r));var s=this.getRes(r);if(s)return t&&egret.callLater(function(){t.call(o,s,i)},this),Promise.resolve(s);var u=a.r,c=a.subkey;return e.queue.pushResItem(u).then(function(n){e.host.save(u,n);var a=e.processor.isSupport(u);return a&&a.getData&&c&&(n=a.getData(e.host,u,r,c)),t&&t.call(o,n,i),n},function(r){return e.host.remove(u),e.ResourceEvent.dispatchResourceEvent(n,e.ResourceEvent.ITEM_LOAD_ERROR,"",u),t?(t.call(o,null,i),Promise.reject(null)):Promise.reject(r)})},t.prototype.getResByUrl=function(r,t,o,n){var i=this;void 0===n&&(n="");var a=e.config.getResource(r);if(!a&&(n||(n=e.config.__temp__get__type__via__url(r)),a={name:r,url:r,type:n,root:"",extra:1},e.config.addResourceData(a),a=e.config.getResource(r),!a))throw"never";return e.queue.pushResItem(a).then(function(r){return e.host.save(a,r),t&&a&&t.call(o,r,a.url),r},function(n){return e.host.remove(a),e.ResourceEvent.dispatchResourceEvent(i,e.ResourceEvent.ITEM_LOAD_ERROR,"",a),t?(t.call(o,null,r),Promise.reject(null)):Promise.reject(n)})},t.prototype.destroyRes=function(r,t){void 0===t&&(t=!0);var o=e.config.getGroupByName(r);if(o&&o.length>0){var n=e.config.config.loadGroup.indexOf(r);if(-1==n)return!1;if(t||1==e.config.config.loadGroup.length&&e.config.config.loadGroup[0]==r){for(var i=0,a=o;ir&&(r=1),e.queue.thread=r},t.prototype.setMaxRetryTimes=function(r){r=Math.max(r,0),e.queue.maxRetryTimes=r},t.prototype.addResourceData=function(r){r.root="",e.config.addResourceData(r)},__decorate([e.checkNull],t.prototype,"hasRes",null),__decorate([e.checkNull],t.prototype,"getRes",null),__decorate([e.checkNull],t.prototype,"getResAsync",null),__decorate([e.checkNull],t.prototype,"getResByUrl",null),t}(egret.EventDispatcher);e.Resource=D,__reflect(D.prototype,"RES.Resource");var P}(RES||(RES={}));var RES;!function(e){var r;!function(e){function r(e){var r=e.split("/");return r.filter(function(e,t){return!!e||t==r.length-1}).join("/")}function t(e){return e.substr(e.lastIndexOf("/")+1)}function o(e){return e.substr(0,e.lastIndexOf("/"))}e.normalize=r,e.basename=t,e.dirname=o}(r=e.path||(e.path={}))}(RES||(RES={}));var RES;!function(e){function r(){e.config.config.fileSystem.profile(),console.log(t);var r=0;for(var o in t){var n=t[o];n instanceof egret.Texture&&(r+=n.$bitmapWidth*n.$bitmapHeight*4)}console.log("gpu size : "+(r/1024).toFixed(3)+"kb")}var t={};e.profile=r,e.host={state:{},get resourceConfig(){return e.config},load:function(r,t){var o="string"==typeof t?e.processor._map[t]:t;return e.queue.loadResource(r,o)},unload:function(r){return e.queue.unloadResource(r)},save:function(r,o){e.host.state[r.root+r.name]=2,delete r.promise,t[r.root+r.name]=o},get:function(e){return t[e.root+e.name]},remove:function(r){delete e.host.state[r.root+r.name],delete t[r.root+r.name]}},e.config=new e.ResourceConfig,e.queue=new e.ResourceLoader;var o=function(e){function r(t,o,n){var i=e.call(this)||this;return i.__resource_manager_error__=!0,i.name=t.toString(),i.message=r.errorMessage[t].replace("{0}",o).replace("{1}",n),i}return __extends(r,e),r.errorMessage={1001:"文件加载失败:{0}",1002:"ResourceManager 初始化失败:配置文件加载失败",2001:"{0}解析失败,不支持指定解析类型:'{1}',请编写自定义 Processor ,更多内容请参见 https://github.com/egret-labs/resourcemanager/blob/master/docs/README.md#processor",2002:"Analyzer 相关API 在 ResourceManager 中不再支持,请编写自定义 Processor ,更多内容请参见 https://github.com/egret-labs/resourcemanager/blob/master/docs/README.md#processor",2003:"{0}解析失败,错误原因:{1}",2004:"无法找到文件类型:{0}",2005:'RES加载了不存在或空的资源组:"{0}"',2006:"资源配置文件中无法找到特定的资源:{0}"},r}(Error);e.ResourceManagerError=o,__reflect(o.prototype,"RES.ResourceManagerError")}(RES||(RES={}));var RES;!function(e){var r;!function(r){function t(e){return r._map[e.type]}function o(e,t){r._map[e]=t}function n(r,t){var o=this;return new Promise(function(n,i){var a=function(){var e=r.data?r.data:r.response;n(e)},s=function(){var r=new e.ResourceManagerError(1001,t.url);i(r)};r.addEventListener(egret.Event.COMPLETE,a,o),r.addEventListener(egret.IOErrorEvent.IO_ERROR,s,o)})}function i(e,r){if(-1!=r.indexOf("://"))return r;e=e.split("\\").join("/");var t=e.match(/#.*|\?.*/),o="";t&&(o=t[0]);var n=e.lastIndexOf("/");return e=-1!=n?e.substring(0,n+1)+r:r,e+o}function a(e){return{name:e.name+"_alpha",url:e.etc1_alpha_url,type:"ktx",root:e.root}}r.isSupport=t,r.map=o,r.getRelativePath=i,r.ImageProcessor={onLoadStart:function(r,t){var o=new egret.ImageLoader;return o.load(e.getVirtualUrl(t.root+t.url)),n(o,t).then(function(e){var o=new egret.Texture;o._setBitmapData(e);var n=r.resourceConfig.getResource(t.name);if(n&&n.scale9grid){var i=n.scale9grid.split(",");o.scale9Grid=new egret.Rectangle(parseInt(i[0]),parseInt(i[1]),parseInt(i[2]),parseInt(i[3]))}return o})},onRemoveStart:function(e,r){var t=e.get(r);t.dispose()}},r.KTXTextureProcessor={onLoadStart:function(e,r){return e.load(r,"bin").then(function(t){if(!t)return console.error("ktx:"+r.root+r.url+" is null"),null;var o=new egret.KTXContainer(t,1);if(o.isInvalid)return console.error("ktx:"+r.root+r.url+" is invalid"),null;var n=new egret.BitmapData(t);n.debugCompressedTextureURL=r.root+r.url,n.format="ktx",o.uploadLevels(n,!1);var i=new egret.Texture;i._setBitmapData(n);var a=e.resourceConfig.getResource(r.name);if(a&&a.scale9grid){var s=a.scale9grid.split(",");i.scale9Grid=new egret.Rectangle(parseInt(s[0]),parseInt(s[1]),parseInt(s[2]),parseInt(s[3]))}return e.save(r,i),i},function(t){throw e.remove(r),t})},onRemoveStart:function(e,r){var t=e.get(r);t&&t.dispose()}},r.makeEtc1SeperatedAlphaResourceInfo=a,r.ETC1KTXProcessor={onLoadStart:function(e,r){return e.load(r,"ktx").then(function(t){if(!t)return null;if(r.etc1_alpha_url){var o=a(r);return e.load(o,"ktx").then(function(r){return t&&t.$bitmapData&&r.$bitmapData?(t.$bitmapData.etcAlphaMask=r.$bitmapData,e.save(o,r)):e.remove(o),t},function(r){throw e.remove(o),r})}return t},function(t){throw e.remove(r),t})},onRemoveStart:function(e,r){var t=e.get(r);if(t&&t.dispose(),r.etc1_alpha_url){var o=a(r),n=e.get(o);n&&n.dispose(),e.unload(o)}}},r.BinaryProcessor={onLoadStart:function(r,t){var o=new egret.HttpRequest;return o.responseType=egret.HttpResponseType.ARRAY_BUFFER,o.open(e.getVirtualUrl(t.root+t.url),"get"),o.send(),n(o,t)},onRemoveStart:function(e,r){}},r.TextProcessor={onLoadStart:function(r,t){var o=new egret.HttpRequest;return o.responseType=egret.HttpResponseType.TEXT,o.open(e.getVirtualUrl(t.root+t.url),"get"),o.send(),n(o,t)},onRemoveStart:function(e,r){return!0}},r.JsonProcessor={onLoadStart:function(e,r){return e.load(r,"text").then(function(e){var r=JSON.parse(e);return r})},onRemoveStart:function(e,r){}},r.XMLProcessor={onLoadStart:function(e,r){return e.load(r,"text").then(function(e){var r=egret.XML.parse(e);return r})},onRemoveStart:function(e,r){return!0}},r.CommonJSProcessor={onLoadStart:function(r,t){return r.load(t,"text").then(function(r){var o=new Function("require","exports",r),n=function(){},i={};try{o(n,i)}catch(a){throw new e.ResourceManagerError(2003,t.name,a.message)}return i})},onRemoveStart:function(e,r){}},r.SheetProcessor={onLoadStart:function(r,t){return r.load(t,"json").then(function(o){var n=r.resourceConfig.getResource(e.nameSelector(o.file));if(!n){var a=i(t.url,o.file);n={name:a,url:a,type:"image",root:t.root}}return r.load(n).then(function(e){if(!e)return null;var t=o.frames,i=new egret.SpriteSheet(e);i.$resourceInfo=n;for(var a in t){var s=t[a],u=i.createTexture(a,s.x,s.y,s.w,s.h,s.offX,s.offY,s.sourceW,s.sourceH);if(s.scale9grid){var c=s.scale9grid,l=c.split(",");u.scale9Grid=new egret.Rectangle(parseInt(l[0]),parseInt(l[1]),parseInt(l[2]),parseInt(l[3]))}}return r.save(n,e),i},function(e){throw r.remove(n),e})})},getData:function(e,r,t,o){var n=e.get(r);return n?n.getTexture(o):null},onRemoveStart:function(e,r){var t=e.get(r),o=t.$resourceInfo;t.dispose(),e.unload(o)}};var s=function(e,r){var t="",o=r.split("\n"),n=o[2],i=n.indexOf('file="');-1!=i&&(n=n.substring(i+6),i=n.indexOf('"'),t=n.substring(0,i)),e=e.split("\\").join("/");var i=e.lastIndexOf("/");return e=-1!=i?e.substring(0,i+1)+t:t};r.FontProcessor={onLoadStart:function(r,t){return r.load(t,"text").then(function(o){var n;try{n=JSON.parse(o)}catch(a){n=o}var u;u="string"==typeof n?s(t.url,n):i(t.url,n.file);var c=r.resourceConfig.getResource(e.nameSelector(u));return c||(c={name:u,url:u,type:"image",root:t.root}),r.load(c).then(function(e){var t=new egret.BitmapFont(e,n);return t.$resourceInfo=c,r.save(c,e),t},function(e){throw r.remove(c),e})})},onRemoveStart:function(e,r){var t=e.get(r),o=t.$resourceInfo;e.unload(o)}},r.SoundProcessor={onLoadStart:function(r,t){var o=new egret.Sound;return o.load(e.getVirtualUrl(t.root+t.url)),n(o,t).then(function(){return o})},onRemoveStart:function(e,r){var t=e.get(r);t.close()}},r.MovieClipProcessor={onLoadStart:function(r,t){var o,n;return r.load(t,"json").then(function(i){o=i;var a=t.name,s=a.substring(0,a.lastIndexOf("."))+".png";if(n=r.resourceConfig.getResource(s),!n)throw new e.ResourceManagerError(1001,s);return r.load(n)}).then(function(e){r.save(n,e);var t=e,i=new egret.MovieClipDataFactory(o,t);return i})},onRemoveStart:function(e,r){var t=e.get(r);t.clearCache(),t.$spriteSheet.dispose();var o=r.name,n=o.substring(0,o.lastIndexOf("."))+".png",i=e.resourceConfig.getResource(n);i&&e.unload(i)}},r.MergeJSONProcessor={onLoadStart:function(r,t){return r.load(t,"json").then(function(r){for(var o in r)e.config.addSubkey(o,t.name);return r})},getData:function(e,r,t,o){var n=e.get(r);return n?n[o]:(console.error("missing resource :"+r.name),null)},onRemoveStart:function(e,r){}},r.LegacyResourceConfigProcessor={onLoadStart:function(r,t){return r.load(t,"json").then(function(o){var n=e.config.config,i=t.root,a=n.fileSystem;a||(a={fsData:{},getFile:function(e){return p[e]},addFile:function(e){e.type||(e.type=""),void 0==i&&(e.root=""),p[e.name]=e},profile:function(){console.log(p)},removeFile:function(e){delete p[e]}},n.fileSystem=a);for(var s=n.groups,u=0,c=o.groups;u = T | null; + /** + * The HashObject class is the base class for all objects in the Egret framework.The HashObject + * class includes a hashCode property, which is a unique identification number of the instance. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * Egret顶级对象。框架内所有对象的基类,为对象实例提供唯一的hashCode值。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + interface IHashObject { + /** + * a unique identification number assigned to this instance. + * @version Egret 2.4 + * @platform Web,Native + * @readOnly + * @language en_US + */ + /** + * 返回此对象唯一的哈希值,用于唯一确定一个对象。hashCode为大于等于1的整数。 + * @version Egret 2.4 + * @platform Web,Native + * @readOnly + * @language zh_CN + */ + hashCode: number; + } + /** + * @private + * 哈希计数 + */ + let $hashCount: number; + /** + * The HashObject class is the base class for all objects in the Egret framework.The HashObject + * class includes a hashCode property, which is a unique identification number of the instance. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * Egret顶级对象。框架内所有对象的基类,为对象实例提供唯一的hashCode值。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + class HashObject implements IHashObject { + /** + * Initializes a HashObject + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个 HashObject 对象 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(); + /** + * @private + */ + $hashCode: number; + /** + * a unique identification number assigned to this instance. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 返回此对象唯一的哈希值,用于唯一确定一个对象。hashCode为大于等于1的整数。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly hashCode: number; + } +} +declare namespace egret { + /** + * The EventDispatcher class is the base class for all classes that dispatchEvent events. The EventDispatcher class implements + * the IEventDispatcher interface and is the base class for the DisplayObject class. The EventDispatcher class allows + * any object on the display list to be an event target and as such, to use the methods of the IEventDispatcher interface. + * Event targets are an important part of the Egret event model. The event target serves as the focal point for how events + * flow through the display list hierarchy. When an event such as a touch tap, Egret dispatches an event object into the + * event flow from the root of the display list. The event object then makes its way through the display list until it + * reaches the event target, at which point it begins its return trip through the display list. This round-trip journey + * to the event target is conceptually divided into three phases:
+ * the capture phase comprises the journey from the root to the last node before the event target's node, the target + * phase comprises only the event target node, and the bubbling phase comprises any subsequent nodes encountered on + * the return trip to the root of the display list. In general, the easiest way for a user-defined class to gain event + * dispatching capabilities is to extend EventDispatcher. If this is impossible (that is, if the class is already extending + * another class), you can instead implement the IEventDispatcher interface, create an EventDispatcher member, and write simple + * hooks to route calls into the aggregated EventDispatcher. + * @see egret.IEventDispatcher + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/events/EventDispatcher.ts + * @language en_US + */ + /** + * EventDispatcher 是 Egret 的事件派发器类,负责进行事件的发送和侦听。 + * 事件目标是事件如何通过显示列表层次结构这一问题的焦点。当发生鼠标单击、触摸或按键等事件时, + * 框架会将事件对象调度到从显示列表根开始的事件流中。然后该事件对象在显示列表中前进,直到到达事件目标, + * 然后从这一点开始其在显示列表中的回程。在概念上,到事件目标的此往返行程被划分为三个阶段: + * 捕获阶段包括从根到事件目标节点之前的最后一个节点的行程,目标阶段仅包括事件目标节点,冒泡阶段包括回程上遇到的任何后续节点到显示列表的根。 + * 通常,使用户定义的类能够调度事件的最简单方法是扩展 EventDispatcher。如果无法扩展(即,如果该类已经扩展了另一个类),则可以实现 + * IEventDispatcher 接口,创建 EventDispatcher 成员,并编写一些简单的映射,将调用连接到聚合的 EventDispatcher 中。 + * @see egret.IEventDispatcher + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/events/EventDispatcher.ts + * @language zh_CN + */ + class EventDispatcher extends HashObject implements IEventDispatcher { + /** + * create an instance of the EventDispatcher class. + * @param target The target object for events dispatched to the EventDispatcher object. This parameter is used when + * the EventDispatcher instance is aggregated by a class that implements IEventDispatcher; it is necessary so that the + * containing object can be the target for events. Do not use this parameter in simple cases in which a class extends EventDispatcher. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个 EventDispatcher 类的实例 + * @param target 此 EventDispatcher 所抛出事件对象的 target 指向。此参数主要用于一个实现了 IEventDispatcher 接口的自定义类, + * 以便抛出的事件对象的 target 属性可以指向自定义类自身。请勿在直接继承 EventDispatcher 的情况下使用此参数。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(target?: IEventDispatcher); + /** + * @private + */ + $EventDispatcher: Object; + /** + * @private + * + * @param useCapture + */ + $getEventMap(useCapture?: boolean): any; + /** + * @inheritDoc + * @version Egret 2.4 + * @platform Web,Native + */ + addEventListener(type: string, listener: Function, thisObject: any, useCapture?: boolean, priority?: number): void; + /** + * @inheritDoc + * @version Egret 2.4 + * @platform Web,Native + */ + once(type: string, listener: Function, thisObject: any, useCapture?: boolean, priority?: number): void; + /** + * @private + */ + $addListener(type: string, listener: Function, thisObject: any, useCapture?: boolean, priority?: number, dispatchOnce?: boolean): void; + $insertEventBin(list: any[], type: string, listener: Function, thisObject: any, useCapture?: boolean, priority?: number, dispatchOnce?: boolean): boolean; + /** + * @inheritDoc + * @version Egret 2.4 + * @platform Web,Native + */ + removeEventListener(type: string, listener: Function, thisObject: any, useCapture?: boolean): void; + $removeEventBin(list: any[], listener: Function, thisObject: any): boolean; + /** + * @inheritDoc + * @version Egret 2.4 + * @platform Web,Native + */ + hasEventListener(type: string): boolean; + /** + * @inheritDoc + * @version Egret 2.4 + * @platform Web,Native + */ + willTrigger(type: string): boolean; + /** + * @inheritDoc + * @version Egret 2.4 + * @platform Web,Native + */ + dispatchEvent(event: Event): boolean; + /** + * @private + */ + $notifyListener(event: Event, capturePhase: boolean): boolean; + /** + * Distribute a specified event parameters. + * @param type The type of the event. Event listeners can access this information through the inherited type property. + * @param bubbles Determines whether the Event object bubbles. Event listeners can access this information through + * the inherited bubbles property. + * @param data {any} data + * @param cancelable Determines whether the Event object can be canceled. The default values is false. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 派发一个指定参数的事件。 + * @param type {string} 事件类型 + * @param bubbles {boolean} 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。 + * @param data {any} 事件data + * @param cancelable {boolean} 确定是否可以取消 Event 对象。默认值为 false。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + dispatchEventWith(type: string, bubbles?: boolean, data?: any, cancelable?: boolean): boolean; + } +} +declare namespace egret.sys { + /** + * @private + * 事件信息对象 + */ + interface EventBin { + type: string; + /** + * @private + */ + listener: Function; + /** + * @private + */ + thisObject: any; + /** + * @private + */ + priority: number; + /** + * @private + */ + target: IEventDispatcher; + /** + * @private + */ + useCapture: boolean; + /** + * @private + */ + dispatchOnce: boolean; + } +} +declare namespace egret { + /** + * @private + * @version Egret 2.4 + * @platform Web,Native + */ + class Filter extends HashObject { + /** + * @version Egret 2.4 + * @platform Web,Native + */ + type: string; + /** + * @private + */ + $id: number; + /** + * @private + */ + $uniforms: any; + /** + * @private + */ + protected paddingTop: number; + /** + * @private + */ + protected paddingBottom: number; + /** + * @private + */ + protected paddingLeft: number; + /** + * @private + */ + protected paddingRight: number; + /** + * @private + * @native Render + */ + $obj: any; + constructor(); + /** + * @private + */ + $toJson(): string; + protected updatePadding(): void; + onPropertyChange(): void; + } +} +declare namespace egret { + /** + * @private + */ + const enum RenderMode { + NONE = 1, + FILTER = 2, + CLIP = 3, + SCROLLRECT = 4, + } + /** + * The DisplayObject class is the base class for all objects that can be placed on the display list. The display list + * manages all objects displayed in the runtime. Use the DisplayObjectContainer class to arrange the display + * objects in the display list. DisplayObjectContainer objects can have child display objects, while other display objects, + * such as Shape and TextField objects, are "leaf" nodes that have only parents and siblings, no children. + * The DisplayObject class supports basic functionality like the x and y position of an object, as well as more advanced + * properties of the object such as its transformation matrix.
+ * The DisplayObject class contains several broadcast events.Normally, the target of any particular event is a specific + * DisplayObject instance. For example, the target of an added event is the specific DisplayObject instance that was added + * to the display list. Having a single target restricts the placement of event listeners to that target and in some cases + * the target's ancestors on the display list. With broadcast events, however, the target is not a specific DisplayObject + * instance, but rather all DisplayObject instances, including those that are not on the display list. This means that you + * can add a listener to any DisplayObject instance to listen for broadcast events. + * + * @event egret.Event.ADDED Dispatched when a display object is added to the display list. + * @event egret.Event.ADDED_TO_STAGE Dispatched when a display object is added to the on stage display list, either directly or through the addition of a sub tree in which the display object is contained. + * @event egret.Event.REMOVED Dispatched when a display object is about to be removed from the display list. + * @event egret.Event.REMOVED_FROM_STAGE Dispatched when a display object is about to be removed from the display list, either directly or through the removal of a sub tree in which the display object is contained. + * @event egret.Event.ENTER_FRAME [broadcast event] Dispatched when the playhead is entering a new frame. + * @event egret.Event.RENDER [broadcast event] Dispatched when the display list is about to be updated and rendered. + * @event egret.TouchEvent.TOUCH_MOVE Dispatched when the user touches the device, and is continuously dispatched until the point of contact is removed. + * @event egret.TouchEvent.TOUCH_BEGIN Dispatched when the user first contacts a touch-enabled device (such as touches a finger to a mobile phone or tablet with a touch screen). + * @event egret.TouchEvent.TOUCH_END Dispatched when the user removes contact with a touch-enabled device (such as lifts a finger off a mobile phone or tablet with a touch screen). + * @event egret.TouchEvent.TOUCH_TAP Dispatched when the user lifts the point of contact over the same DisplayObject instance on which the contact was initiated on a touch-enabled device (such as presses and releases a finger from a single point over a display object on a mobile phone or tablet with a touch screen). + * @event egret.TouchEvent.TOUCH_RELEASE_OUTSIDE Dispatched when the user lifts the point of contact over the different DisplayObject instance on which the contact was initiated on a touch-enabled device (such as presses and releases a finger from a single point over a display object on a mobile phone or tablet with a touch screen). + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/DisplayObject.ts + * @language en_US + */ + /** + * DisplayObject 类是可放在显示列表中的所有对象的基类。该显示列表管理运行时中显示的所有对象。使用 DisplayObjectContainer 类排列 + * 显示列表中的显示对象。DisplayObjectContainer 对象可以有子显示对象,而其他显示对象(如 Shape 和 TextField 对象)是“叶”节点,没有子项,只有父级和 + * 同级。DisplayObject 类有一些基本的属性(如确定坐标位置的 x 和 y 属性),也有一些高级的对象属性(如 Matrix 矩阵变换)。
+ * DisplayObject 类包含若干广播事件。通常,任何特定事件的目标均为一个特定的 DisplayObject 实例。例如,added 事件的目标是已添加到显示列表 + * 的目标 DisplayObject 实例。若只有一个目标,则会将事件侦听器限制为只能监听在该目标上(在某些情况下,可监听在显示列表中该目标的祖代上)。 + * 但是对于广播事件,目标不是特定的 DisplayObject 实例,而是所有 DisplayObject 实例(包括那些不在显示列表中的实例)。这意味着您可以向任何 + * DisplayObject 实例添加侦听器来侦听广播事件。 + * + * @event egret.Event.ADDED 将显示对象添加到显示列表中时调度。 + * @event egret.Event.ADDED_TO_STAGE 在将显示对象直接添加到舞台显示列表或将包含显示对象的子树添加至舞台显示列表中时调度。 + * @event egret.Event.REMOVED 将要从显示列表中删除显示对象时调度。 + * @event egret.Event.REMOVED_FROM_STAGE 在从显示列表中直接删除显示对象或删除包含显示对象的子树时调度。 + * @event egret.Event.ENTER_FRAME [广播事件] 播放头进入新帧时调度。 + * @event egret.Event.RENDER [广播事件] 将要更新和呈现显示列表时调度。 + * @event egret.TouchEvent.TOUCH_MOVE 当用户触碰设备时进行调度,而且会连续调度,直到接触点被删除。 + * @event egret.TouchEvent.TOUCH_BEGIN 当用户第一次触摸启用触摸的设备时(例如,用手指触摸手机屏幕)调度。 + * @event egret.TouchEvent.TOUCH_END 当用户移除与启用触摸的设备的接触时(例如,将手指从屏幕上抬起)调度。 + * @event egret.TouchEvent.TOUCH_TAP 当用户在启用触摸设备上的已启动接触的同一 DisplayObject 实例上抬起接触点时(例如,手机点击屏幕后抬起)调度。 + * @event egret.TouchEvent.TOUCH_RELEASE_OUTSIDE 当用户在启用触摸设备上的已启动接触的不同 DisplayObject 实例上抬起接触点时(例如,按住屏幕上的某个对象,然后从它上面挪开后再松开手指)调度。 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/DisplayObject.ts + * @language zh_CN + */ + class DisplayObject extends EventDispatcher { + /** + * Initializes a DisplayObject object + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个显示对象 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(); + $nativeDisplayObject: egret_native.NativeDisplayObject; + protected createNativeDisplayObject(): void; + /** + * @private + * 是否添加到舞台上,防止重复发送 removed_from_stage 消息 + */ + $hasAddToStage: boolean; + /** + * @private + * 能够含有子项的类将子项列表存储在这个属性里。 + */ + $children: DisplayObject[]; + private $name; + /** + * Indicates the instance name of the DisplayObject. The object can be identified in the child list of its parent + * display object container by calling the getChildByName() method of the display object container. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示 DisplayObject 的实例名称。 + * 通过调用父显示对象容器的 getChildByName() 方法,可以在父显示对象容器的子列表中标识该对象。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + name: string; + /** + * @private + */ + $parent: DisplayObjectContainer; + /** + * Indicates the DisplayObjectContainer object that contains this display object. Use the parent property to specify + * a relative path to display objects that are above the current display object in the display list hierarchy. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示包含此显示对象的 DisplayObjectContainer 对象。 + * 使用 parent 属性可以指定高于显示列表层次结构中当前显示对象的显示对象的相对路径。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly parent: DisplayObjectContainer; + /** + * @private + * 设置父级显示对象 + */ + $setParent(parent: DisplayObjectContainer): void; + /** + * @private + * 显示对象添加到舞台 + */ + $onAddToStage(stage: Stage, nestLevel: number): void; + /** + * @private + * 显示对象从舞台移除 + */ + $onRemoveFromStage(): void; + /** + * @private + */ + $stage: Stage; + /** + * @private + * 这个对象在显示列表中的嵌套深度,舞台为1,它的子项为2,子项的子项为3,以此类推。当对象不在显示列表中时此属性值为0. + */ + $nestLevel: number; + $useTranslate: boolean; + protected $updateUseTransform(): void; + /** + * The Stage of the display object. you can create and load multiple display objects into the display list, and + * the stage property of each display object refers to the same Stage object.
+ * If a display object is not added to the display list, its stage property is set to null. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 显示对象的舞台。 + * 例如,您可以创建多个显示对象并加载到显示列表中,每个显示对象的 stage 属性是指向相同的 Stage 对象。
+ * 如果显示对象未添加到显示列表,则其 stage 属性会设置为 null。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly stage: Stage; + /** + * A Matrix object containing values that alter the scaling, rotation, and translation of the display object.
+ * Note: to change the value of a display object's matrix, you must make a copy of the entire matrix object, then copy + * the new object into the matrix property of the display object. + * @example the following code increases the tx value of a display object's matrix + *
+         *     let myMatrix:Matrix = myDisplayObject.matrix;
+         *     myMatrix.tx += 10;
+         *     myDisplayObject.matrix = myMatrix;
+         * 
+ * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 一个 Matrix 对象,其中包含更改显示对象的缩放、旋转和平移的值。
+ * 注意:要改变一个显示对象矩阵的值,您必引用整个矩阵对象,然后将它重新赋值给显示对象的 matrix 属性。 + * @example 以下代码改变了显示对象矩阵的tx属性值: + *
+         *     let myMatrix:Matrix = myDisplayObject.matrix;
+         *     myMatrix.tx += 10;
+         *     myDisplayObject.matrix = myMatrix;
+         * 
+ * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + matrix: Matrix; + private $matrix; + private $matrixDirty; + /** + * @private + * 获取矩阵 + */ + $getMatrix(): Matrix; + /** + * @private + * 设置矩阵 + */ + $setMatrix(matrix: Matrix, needUpdateProperties?: boolean): void; + private $concatenatedMatrix; + /** + * @private + * 获得这个显示对象以及它所有父级对象的连接矩阵。 + */ + $getConcatenatedMatrix(): Matrix; + private $invertedConcatenatedMatrix; + /** + * @private + * 获取链接矩阵 + */ + $getInvertedConcatenatedMatrix(): Matrix; + $x: number; + /** + * Indicates the x coordinate of the DisplayObject instance relative to the local coordinates of the parent + * DisplayObjectContainer.
+ * If the object is inside a DisplayObjectContainer that has transformations, it is in + * the local coordinate system of the enclosing DisplayObjectContainer. Thus, for a DisplayObjectContainer + * rotated 90° counterclockwise, the DisplayObjectContainer's children inherit a coordinate system that is + * rotated 90° counterclockwise. The object's coordinates refer to the registration point position. + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示 DisplayObject 实例相对于父级 DisplayObjectContainer 本地坐标的 x 坐标。
+ * 如果该对象位于具有变形的 DisplayObjectContainer 内,则它也位于包含 DisplayObjectContainer 的本地坐标系中。 + * 因此,对于逆时针旋转 90 度的 DisplayObjectContainer,该 DisplayObjectContainer 的子级将继承逆时针旋转 90 度的坐标系。 + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + x: number; + /** + * @private + * 获取x坐标 + */ + $getX(): number; + /** + * @private + * 设置x坐标 + */ + $setX(value: number): boolean; + $y: number; + /** + * Indicates the y coordinate of the DisplayObject instance relative to the local coordinates of the parent + * DisplayObjectContainer.
+ * If the object is inside a DisplayObjectContainer that has transformations, it is in + * the local coordinate system of the enclosing DisplayObjectContainer. Thus, for a DisplayObjectContainer rotated + * 90° counterclockwise, the DisplayObjectContainer's children inherit a coordinate system that is rotated 90° + * counterclockwise. The object's coordinates refer to the registration point position. + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示 DisplayObject 实例相对于父级 DisplayObjectContainer 本地坐标的 y 坐标。
+ * 如果该对象位于具有变形的 DisplayObjectContainer 内,则它也位于包含 DisplayObjectContainer 的本地坐标系中。 + * 因此,对于逆时针旋转 90 度的 DisplayObjectContainer,该 DisplayObjectContainer 的子级将继承逆时针旋转 90 度的坐标系。 + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + y: number; + /** + * @private + * 获取y坐标 + */ + $getY(): number; + /** + * @private + * 设置y坐标 + */ + $setY(value: number): boolean; + private $scaleX; + /** + * Indicates the horizontal scale (percentage) of the object as applied from the registration point.
+ * The default 1.0 equals 100% scale. + * @default 1 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示从注册点开始应用的对象的水平缩放比例(百分比)。
+ * 1.0 等于 100% 缩放。 + * @default 1 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + scaleX: number; + /** + * @private + * + * @returns + */ + $getScaleX(): number; + /** + * @private + * 设置水平缩放值 + */ + $setScaleX(value: number): void; + private $scaleY; + /** + * Indicates the vertical scale (percentage) of an object as applied from the registration point of the object. + * 1.0 is 100% scale. + * @default 1 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示从对象注册点开始应用的对象的垂直缩放比例(百分比)。1.0 是 100% 缩放。 + * @default 1 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + scaleY: number; + /** + * @private + * + * @returns + */ + $getScaleY(): number; + /** + * @private + * 设置垂直缩放值 + */ + $setScaleY(value: number): void; + private $rotation; + /** + * Indicates the rotation of the DisplayObject instance, in degrees, from its original orientation. Values from + * 0 to 180 represent clockwise rotation; values from 0 to -180 represent counterclockwise rotation. Values outside + * this range are added to or subtracted from 360 to obtain a value within the range. For example, the statement + * myDisplayObject.rotation = 450 is the same as myDisplayObject.rotation = 90. + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示 DisplayObject 实例距其原始方向的旋转程度,以度为单位。 + * 从 0 到 180 的值表示顺时针方向旋转;从 0 到 -180 的值表示逆时针方向旋转。对于此范围之外的值,可以通过加上或 + * 减去 360 获得该范围内的值。例如,myDisplayObject.rotation = 450语句与 myDisplayObject.rotation = 90 是相同的。 + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + rotation: number; + /** + * @private + */ + $getRotation(): number; + $setRotation(value: number): void; + private $skewX; + private $skewXdeg; + /** + * 表示DisplayObject的x方向斜切 + * @member {number} egret.DisplayObject#skewX + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + */ + skewX: number; + /** + * @private + * + * @param value + */ + $setSkewX(value: number): void; + private $skewY; + private $skewYdeg; + /** + * 表示DisplayObject的y方向斜切 + * @member {number} egret.DisplayObject#skewY + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + */ + skewY: number; + /** + * @private + * + * @param value + */ + $setSkewY(value: number): void; + /** + * Indicates the width of the display object, in pixels. The width is calculated based on the bounds of the content + * of the display object. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示显示对象的宽度,以像素为单位。宽度是根据显示对象内容的范围来计算的。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + width: number; + /** + * @private + * 获取显示宽度 + */ + $getWidth(): number; + $explicitWidth: number; + /** + * @private + * 设置显示宽度 + */ + $setWidth(value: number): void; + /** + * Indicates the height of the display object, in pixels. The height is calculated based on the bounds of the + * content of the display object. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示显示对象的高度,以像素为单位。高度是根据显示对象内容的范围来计算的。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + height: number; + $explicitHeight: number; + /** + * @private + * 获取显示高度 + */ + $getHeight(): number; + /** + * @private + * 设置显示高度 + */ + $setHeight(value: number): void; + /** + * 测量宽度 + * @returns {number} + * @member {egret.Rectangle} egret.DisplayObject#measuredWidth + * @version Egret 2.4 + * @platform Web,Native + */ + readonly measuredWidth: number; + /** + * 测量高度 + * @returns {number} + * @member {egret.Rectangle} egret.DisplayObject#measuredWidth + * @version Egret 2.4 + * @platform Web,Native + */ + readonly measuredHeight: number; + $anchorOffsetX: number; + /** + * X represents the object of which is the anchor. + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示从对象绝对锚点X。 + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + anchorOffsetX: number; + /** + * @private + * + * @param value + * @returns + */ + $setAnchorOffsetX(value: number): void; + $anchorOffsetY: number; + /** + * Y represents the object of which is the anchor. + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示从对象绝对锚点Y。 + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + anchorOffsetY: number; + /** + * @private + * + * @param value + * @returns + */ + $setAnchorOffsetY(value: number): void; + /** + * @private + */ + $visible: boolean; + /** + * Whether or not the display object is visible. Display objects that are not visible are disabled. For example, + * if visible=false for an DisplayObject instance, it cannot receive touch or other user input. + * @default true + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 显示对象是否可见。不可见的显示对象将被禁用。例如,如果实例的 visible 为 false,则无法接受触摸或用户交互操作。 + * @default true + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + visible: boolean; + $setVisible(value: boolean): void; + /** + * @private + * cacheAsBitmap创建的缓存位图节点。 + */ + $displayList: egret.sys.DisplayList; + private $cacheAsBitmap; + /** + * If set to true, Egret runtime caches an internal bitmap representation of the display object. This caching can + * increase performance for display objects that contain complex vector content. After you set the cacheAsBitmap + * property to true, the rendering does not change, however the display object performs pixel snapping automatically. + * The execution speed can be significantly faster depending on the complexity of the content.The cacheAsBitmap + * property is best used with display objects that have mostly static content and that do not scale and rotate frequently.
+ * Note: The display object will not create the bitmap caching when the memory exceeds the upper limit,even if you set it to true. + * @default false + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 如果设置为 true,则 Egret 运行时将缓存显示对象的内部位图表示形式。此缓存可以提高包含复杂矢量内容的显示对象的性能。 + * 将 cacheAsBitmap 属性设置为 true 后,呈现并不更改,但是,显示对象将自动执行像素贴紧。执行速度可能会大大加快, + * 具体取决于显示对象内容的复杂性。最好将 cacheAsBitmap 属性与主要具有静态内容且不频繁缩放或旋转的显示对象一起使用。
+ * 注意:在内存超过上限的情况下,即使将 cacheAsBitmap 属性设置为 true,显示对象也不使用位图缓存。 + * @default false + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + cacheAsBitmap: boolean; + $setHasDisplayList(value: boolean): void; + $cacheDirty: boolean; + $cacheDirtyUp(): void; + /** + * @private + */ + $alpha: number; + /** + * Indicates the alpha transparency value of the object specified. Valid values are 0 (fully transparent) to 1 (fully opaque). + * The default value is 1. Display objects with alpha set to 0 are active, even though they are invisible. + * @default 1 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示指定对象的 Alpha 透明度值。 + * 有效值为 0(完全透明)到 1(完全不透明)。alpha 设置为 0 的显示对象是可触摸的,即使它们不可见。 + * @default 1 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + alpha: number; + /** + * @private + * + * @param value + */ + $setAlpha(value: number): void; + /** + * @private + * The default touchEnabled property of DisplayObject + * @default false + * @version Egret 2.5 + * @platform Web,Native + * @language en_US + */ + /** + * @private + * 显示对象默认的 touchEnabled 属性 + * @default false + * @version Egret 2.5 + * @platform Web,Native + * @language zh_CN + */ + static defaultTouchEnabled: boolean; + $touchEnabled: boolean; + /** + * Specifies whether this object receives touch or other user input. The default value is false, which means that + * by default any DisplayObject instance that is on the display list cannot receive touch events. If touchEnabled is + * set to false, the instance does not receive any touch events (or other user input events). Any children of + * this instance on the display list are not affected. To change the touchEnabled behavior for all children of + * an object on the display list, use DisplayObjectContainer.touchChildren. + * @see egret.DisplayObjectContainer#touchChildren + * @default false + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 指定此对象是否接收触摸或其他用户输入。默认值为 false,这表示默认情况下,显示列表上的任何 DisplayObject 实例都不会接收触摸事件或 + * 其他用户输入事件。如果将 touchEnabled 设置为 false,则实例将不接收任何触摸事件(或其他用户输入事件)。显示列表上的该实例的任 + * 何子级都不会受到影响。要更改显示列表上对象的所有子级的 touchEnabled 行为,请使用 DisplayObjectContainer.touchChildren。 + * @see egret.DisplayObjectContainer#touchChildren + * @default false + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + touchEnabled: boolean; + /** + * @private + */ + $getTouchEnabled(): boolean; + /** + * @private + */ + $setTouchEnabled(value: boolean): void; + /** + * @private + */ + $scrollRect: Rectangle; + /** + * The scroll rectangle bounds of the display object. The display object is cropped to the size defined by the rectangle, + * and it scrolls within the rectangle when you change the x and y properties of the scrollRect object. A scrolled display + * object always scrolls in whole pixel increments.You can scroll an object left and right by setting the x property of + * the scrollRect Rectangle object. You can scroll an object up and down by setting the y property of the scrollRect + * Rectangle object. If the display object is rotated 90° and you scroll it left and right, the display object actually + * scrolls up and down.
+ * + * Note: to change the value of a display object's scrollRect, you must make a copy of the entire scrollRect object, then copy + * the new object into the scrollRect property of the display object. + * @example the following code increases the x value of a display object's scrollRect + *
+         *     let myRectangle:Rectangle = myDisplayObject.scrollRect;
+         *     myRectangle.x += 10;
+         *     myDisplayObject.scrollRect = myRectangle;
+         * 
+ * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 显示对象的滚动矩形范围。显示对象被裁切为矩形定义的大小,当您更改 scrollRect 对象的 x 和 y 属性时,它会在矩形内滚动。 + * 滚动的显示对象始终以整像素为增量进行滚动。您可以通过设置 scrollRect Rectangle 对象的 x 属性来左右滚动对象, 还可以通过设置 + * scrollRect 对象的 y 属性来上下滚动对象。如果显示对象旋转了 90 度,并且您左右滚动它,则实际上显示对象会上下滚动。
+ * + * 注意:要改变一个显示对象 scrollRect 属性的值,您必引用整个 scrollRect 对象,然后将它重新赋值给显示对象的 scrollRect 属性。 + * @example 以下代码改变了显示对象 scrollRect 的 x 属性值: + *
+         *     let myRectangle:Rectangle = myDisplayObject.scrollRect;
+         *     myRectangle.x += 10;
+         *     myDisplayObject.scrollRect = myRectangle;//设置完scrollRect的x、y、width、height值之后,一定要对myDisplayObject重新赋值scrollRect,不然会出问题。
+         * 
+ * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + scrollRect: Rectangle; + /** + * @private + * + * @param value + */ + private $setScrollRect(value); + /** + * @private + */ + $blendMode: number; + /** + * A value from the BlendMode class that specifies which blend mode to use. Determine how a source image (new one) + * is drawn on the target image (old one).
+ * If you attempt to set this property to an invalid value, Egret runtime set the value to BlendMode.NORMAL. + * @default egret.BlendMode.NORMAL + * @see egret.BlendMode + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * BlendMode 枚举中的一个值,用于指定要使用的混合模式,确定如何将一个源(新的)图像绘制到目标(已有)的图像上
+ * 如果尝试将此属性设置为无效值,则运行时会将此值设置为 BlendMode.NORMAL。 + * @default egret.BlendMode.NORMAL + * @see egret.BlendMode + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + blendMode: string; + /** + * @private + * 被遮罩的对象 + */ + $maskedObject: DisplayObject; + /** + * @private + */ + $mask: DisplayObject; + /** + * @private + */ + $maskRect: Rectangle; + /** + * The calling display object is masked by the specified mask object. To ensure that masking works when the Stage + * is scaled, the mask display object must be in an active part of the display list. The mask object itself is not drawn. + * Set mask to null to remove the mask. To be able to scale a mask object, it must be on the display list. To be + * able to drag a mask object , it must be on the display list.
+ * Note: A single mask object cannot be used to mask more than one calling display object. When the mask is assigned + * to a second display object, it is removed as the mask of the first object, and that object's mask property becomes null. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 调用显示对象被指定的 mask 对象遮罩。要确保当舞台缩放时蒙版仍然有效,mask 显示对象必须处于显示列表的活动部分。 + * 但不绘制 mask 对象本身。将 mask 设置为 null 可删除蒙版。要能够缩放遮罩对象,它必须在显示列表中。要能够拖动蒙版 + * 对象,它必须在显示列表中。
+ * 注意:单个 mask 对象不能用于遮罩多个执行调用的显示对象。在将 mask 分配给第二个显示对象时,会撤消其作为第一个对象的遮罩, + * 该对象的 mask 属性将变为 null。 + * + * 下面例子为 mask 为 Rectangle 类型对象,这种情况下,修改 mask 的值后,一定要对 myDisplayObject 重新赋值 mask,不然会出问题。 + * @example 以下代码改变了显示对象 mask 的 x 属性值: + *
+         *     let myMask:Rectangle = myDisplayObject.mask;
+         *     myMask.x += 10;
+         *     myDisplayObject.mask = myMask;//设置完 mask 的x、y、width、height值之后,一定要对myDisplayObject重新赋值 mask,不然会出问题。
+         * 
+ * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + mask: DisplayObject | Rectangle; + private $setMaskRect(value); + $filters: Array; + /** + * An indexed array that contains each filter object currently associated with the display object. + * @version Egret 3.1.0 + * @platform Web + * @language en_US + */ + /** + * 包含当前与显示对象关联的每个滤镜对象的索引数组。 + * @version Egret 3.1.0 + * @platform Web + * @language zh_CN + */ + filters: Array; + /** + * Returns a rectangle that defines the area of the display object relative to the coordinate system of the targetCoordinateSpace object. + * @param targetCoordinateSpace The display object that defines the coordinate system to use. + * @param resultRect A reusable instance of Rectangle for saving the results. Passing this parameter can reduce the number of reallocate objects + *, which allows you to get better code execution performance.. + * @returns The rectangle that defines the area of the display object relative to the targetCoordinateSpace object's coordinate system. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 返回一个矩形,该矩形定义相对于 targetCoordinateSpace 对象坐标系的显示对象区域。 + * @param targetCoordinateSpace 定义要使用的坐标系的显示对象。 + * @param resultRect 一个用于存储结果的可复用Rectangle实例,传入此参数能够减少内部创建对象的次数,从而获得更高的运行性能。 + * @returns 定义与 targetCoordinateSpace 对象坐标系统相关的显示对象面积的矩形。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + getTransformedBounds(targetCoordinateSpace: DisplayObject, resultRect?: Rectangle): Rectangle; + /** + * Obtain measurement boundary of display object + * @param resultRect {Rectangle} Optional. It is used to import Rectangle object for saving results, preventing duplicate object creation. + * @param calculateAnchor {boolean} Optional. It is used to determine whether to calculate anchor point. + * @returns {Rectangle} + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 获取显示对象的测量边界 + * @param resultRect {Rectangle} 可选参数,传入用于保存结果的Rectangle对象,避免重复创建对象。 + * @param calculateAnchor {boolean} 可选参数,是否会计算锚点。 + * @returns {Rectangle} + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + getBounds(resultRect?: Rectangle, calculateAnchor?: boolean): egret.Rectangle; + /** + * @private + */ + $getTransformedBounds(targetCoordinateSpace: DisplayObject, resultRect?: Rectangle): Rectangle; + /** + * Converts the point object from the Stage (global) coordinates to the display object's (local) coordinates. + * @param stageX the x value in the global coordinates + * @param stageY the y value in the global coordinates + * @param resultPoint A reusable instance of Point for saving the results. Passing this parameter can reduce the + * number of reallocate objects, which allows you to get better code execution performance. + * @returns A Point object with coordinates relative to the display object. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将从舞台(全局)坐标转换为显示对象的(本地)坐标。 + * @param stageX 舞台坐标x + * @param stageY 舞台坐标y + * @param resultPoint 一个用于存储结果的可复用 Point 实例,传入此参数能够减少内部创建对象的次数,从而获得更高的运行性能。 + * @returns 具有相对于显示对象的坐标的 Point 对象。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + globalToLocal(stageX?: number, stageY?: number, resultPoint?: Point): Point; + /** + * Converts the point object from the display object's (local) coordinates to the Stage (global) coordinates. + * @param localX the x value in the local coordinates + * @param localY the x value in the local coordinates + * @param resultPoint A reusable instance of Point for saving the results. Passing this parameter can reduce the + * number of reallocate objects, which allows you to get better code execution performance. + * @returns A Point object with coordinates relative to the Stage. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将显示对象的(本地)坐标转换为舞台(全局)坐标。 + * @param localX 本地坐标 x + * @param localY 本地坐标 y + * @param resultPoint 一个用于存储结果的可复用 Point 实例,传入此参数能够减少内部创建对象的次数,从而获得更高的运行性能。 + * @returns 一个具有相对于舞台坐标的 Point 对象。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + localToGlobal(localX?: number, localY?: number, resultPoint?: Point): Point; + /** + * @private + * 获取显示对象占用的矩形区域集合,通常包括自身绘制的测量区域,如果是容器,还包括所有子项占据的区域。 + */ + $getOriginalBounds(): Rectangle; + /** + * @private + * 测量子项占用的矩形区域 + * @param bounds 测量结果存储在这个矩形对象内 + */ + $measureChildBounds(bounds: Rectangle): void; + /** + * @private + */ + $getContentBounds(): Rectangle; + /** + * @private + * 测量自身占用的矩形区域,注意:此测量结果并不包括子项占据的区域。 + * @param bounds 测量结果存储在这个矩形对象内 + */ + $measureContentBounds(bounds: Rectangle): void; + /** + * @private + */ + $parentDisplayList: egret.sys.DisplayList; + /** + * @private + * 渲染节点,不为空表示自身有绘制到屏幕的内容 + */ + $renderNode: sys.RenderNode; + $renderDirty: boolean; + /** + * @private + * 获取渲染节点 + */ + $getRenderNode(): sys.RenderNode; + $updateRenderMode(): void; + $renderMode: RenderMode; + /** + * @private + */ + private $measureFiltersOffset(fromParent); + /** + * @private + * 获取相对于指定根节点的连接矩阵。 + * @param root 根节点显示对象 + * @param matrix 目标显示对象相对于舞台的完整连接矩阵。 + */ + $getConcatenatedMatrixAt(root: DisplayObject, matrix: Matrix): void; + /** + * @private + * 更新renderNode + */ + $updateRenderNode(): void; + /** + * @private + */ + $hitTest(stageX: number, stageY: number): DisplayObject; + /** + * Calculate the display object to determine whether it overlaps or crosses with the points specified by the x and y parameters. The x and y parameters specify the points in the coordinates of the stage, rather than the points in the display object container that contains display objects (except the situation where the display object container is a stage). + * Note: Don't use accurate pixel collision detection on a large number of objects. Otherwise, this will cause serious performance deterioration. + * @param x {number} x coordinate of the object to be tested. + * @param y {number} y coordinate of the object to be tested. + * @param shapeFlag {boolean} Whether to check the actual pixel of object (true) or check that of border (false).Write realized. + * @returns {boolean} If display object overlaps or crosses with the specified point, it is true; otherwise, it is false. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 计算显示对象,以确定它是否与 x 和 y 参数指定的点重叠或相交。x 和 y 参数指定舞台的坐标空间中的点,而不是包含显示对象的显示对象容器中的点(除非显示对象容器是舞台)。 + * 注意,不要在大量物体中使用精确碰撞像素检测,这回带来巨大的性能开销 + * @param x {number} 要测试的此对象的 x 坐标。 + * @param y {number} 要测试的此对象的 y 坐标。 + * @param shapeFlag {boolean} 是检查对象 (true) 的实际像素,还是检查边框 (false) 的实际像素。 + * @returns {boolean} 如果显示对象与指定的点重叠或相交,则为 true;否则为 false。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + hitTestPoint(x: number, y: number, shapeFlag?: boolean): boolean; + /** + * @private + */ + static $enterFrameCallBackList: DisplayObject[]; + /** + * @private + */ + static $renderCallBackList: DisplayObject[]; + /** + * @private + */ + $addListener(type: string, listener: Function, thisObject: any, useCapture?: boolean, priority?: number, dispatchOnce?: boolean): void; + /** + * @inheritDoc + * @version Egret 2.4 + * @platform Web,Native + */ + removeEventListener(type: string, listener: Function, thisObject: any, useCapture?: boolean): void; + /** + * @inheritDoc + * @version Egret 2.4 + * @platform Web,Native + */ + dispatchEvent(event: Event): boolean; + /** + * @private + * 获取事件流列表。注意:Egret框架的事件流与Flash实现并不一致。 + * + * 事件流有三个阶段:捕获,目标,冒泡。 + * Flash里默认的的事件监听若不开启useCapture将监听目标和冒泡阶段。若开始capture将只能监听捕获当不包括目标的事件。 + * 可以在Flash中写一个简单的测试:实例化一个非容器显示对象,例如TextField。分别监听useCapture为true和false时的鼠标事件。 + * 点击后将只有useCapture为false的回调函数输出信息。也就带来一个问题「Flash的捕获阶段不能监听到最内层对象本身,只在父级列表有效」。 + * + * 而HTML里的事件流设置useCapture为true时是能监听到目标阶段的,也就是目标阶段会被触发两次,在捕获和冒泡过程各触发一次。这样可以避免 + * 前面提到的监听捕获无法监听目标本身的问题。 + * + * Egret最终采用了HTML里目标节点触发两次的事件流方式。 + */ + $getPropagationList(target: DisplayObject): DisplayObject[]; + /** + * @private + */ + $dispatchPropagationEvent(event: Event, list: DisplayObject[], targetIndex: number): void; + /** + * @inheritDoc + * @version Egret 2.4 + * @platform Web,Native + */ + willTrigger(type: string): boolean; + /** + * inspired by pixi.js + */ + private _tint; + /** + * @private + */ + $tintRGB: number; + /** + * Set a tint color for the current object + * @version Egret 5.2.24 + * @platform Web,Native + * @language en_US + */ + /** + * 给当前对象设置填充色 + * @version Egret 5.2.24 + * @platform Web,Native + * @language zh_CN + */ + tint: number; + /** + * @private + * inspired by pixi.js + */ + $sortDirty: boolean; + sortChildren(): void; + /** + * @private + */ + private _zIndex; + /** + * the z-order (front-to-back order) of the object + * @version Egret 5.2.24 + * @platform Web,Native + * @language en_US + */ + /** + * 设置对象的 Z 轴顺序(前后顺序) + * @version Egret 5.2.24 + * @platform Web,Native + * @language zh_CN + */ + zIndex: number; + /** + * @private + */ + $lastSortedIndex: number; + /** + * Allow objects to use zIndex sorting + * @version Egret 5.2.24 + * @platform Web,Native + * @language en_US + */ + /** + * 允许对象使用 zIndex 排序 + * @version Egret 5.2.24 + * @platform Web,Native + * @language zh_CN + */ + sortableChildren: boolean; + } +} +declare namespace egret { + let $TextureScaleFactor: number; + /** + * The Texture class encapsulates different image resources on different platforms. + * In HTML5, resource is an HTMLElement object + * In OpenGL / WebGL, resource is a texture ID obtained after the GPU is submitted + * The Texture class encapsulates the details implemented on the underlayer. Developers just need to focus on interfaces + * @see http://edn.egret.com/cn/docs/page/135 The use of texture packs + * @see http://edn.egret.com/cn/docs/page/123 Several ways of access to resources + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/Texture.ts + * @language en_US + */ + /** + * 纹理类是对不同平台不同的图片资源的封装 + * 在HTML5中,资源是一个HTMLElement对象 + * 在OpenGL / WebGL中,资源是一个提交GPU后获取的纹理id + * Texture类封装了这些底层实现的细节,开发者只需要关心接口即可 + * @see http://edn.egret.com/cn/docs/page/135 纹理集的使用 + * @see http://edn.egret.com/cn/docs/page/123 获取资源的几种方式 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/Texture.ts + * @language zh_CN + */ + class Texture extends HashObject { + /** + * Create an egret.Texture object + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个 egret.Texture 对象 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(); + /** + * Whether to destroy the corresponding BitmapData when the texture is destroyed + * @version Egret 5.0.8 + * @platform Web,Native + * @language en_US + */ + /** + * 销毁纹理时是否销毁对应BitmapData + * @version Egret 5.0.8 + * @platform Web,Native + * @language zh_CN + */ + disposeBitmapData: boolean; + /** + * @private + * 表示这个纹理在 bitmapData 上的 x 起始位置 + */ + $bitmapX: number; + /** + * @private + * 表示这个纹理在 bitmapData 上的 y 起始位置 + */ + $bitmapY: number; + /** + * @private + * 表示这个纹理在 bitmapData 上的宽度 + */ + $bitmapWidth: number; + /** + * @private + * 表示这个纹理在 bitmapData 上的高度 + */ + $bitmapHeight: number; + /** + * @private + * 表示这个纹理显示了之后在 x 方向的渲染偏移量 + */ + $offsetX: number; + /** + * @private + * 表示这个纹理显示了之后在 y 方向的渲染偏移量 + */ + $offsetY: number; + /** + * @private + * 纹理宽度 + */ + private $textureWidth; + /** + * Texture width, read only + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 纹理宽度,只读属性,不可以设置 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly textureWidth: number; + $getTextureWidth(): number; + /** + * @private + * 纹理高度 + */ + private $textureHeight; + /** + * Texture height, read only + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 纹理高度,只读属性,不可以设置 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly textureHeight: number; + $getTextureHeight(): number; + $getScaleBitmapWidth(): number; + $getScaleBitmapHeight(): number; + /** + * @private + * 表示bitmapData.width + */ + $sourceWidth: number; + /** + * @private + * 表示bitmapData.height + */ + $sourceHeight: number; + /** + * @private + */ + $bitmapData: BitmapData; + /** + * @private + */ + $ktxData: ArrayBuffer; + /** + * @private + */ + $rotated: boolean; + /** + * The BitmapData object being referenced. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 被引用的 BitmapData 对象。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + bitmapData: BitmapData; + /** + * Set the BitmapData object. + * @version Egret 3.2.1 + * @platform Web,Native + * @language en_US + */ + /** + * 设置 BitmapData 对象。 + * @version Egret 3.2.1 + * @platform Web,Native + * @language zh_CN + */ + _setBitmapData(value: BitmapData): void; + /** + * The KTX object being referenced. + * @version Egret 5.2.21 + * @platform Web,Native + * @language en_US + */ + /** + * 被引用的 KTXData 对象。 + * @version Egret 5.2.21 + * @platform Web,Native + * @language zh_CN + */ + ktxData: ArrayBuffer; + /** + * Set the KTXData object. + * @version Egret 3.2.1 + * @platform Web,Native + * @language en_US + */ + /** + * 设置 KTXData 对象。 + * @version Egret 3.2.1 + * @platform Web,Native + * @language zh_CN + */ + _setKtxData(value: ArrayBuffer): void; + /** + * @private + * 设置Texture数据 + * @param bitmapX + * @param bitmapY + * @param bitmapWidth + * @param bitmapHeight + * @param offsetX + * @param offsetY + * @param textureWidth + * @param textureHeight + * @param sourceWidth + * @param sourceHeight + */ + $initData(bitmapX: number, bitmapY: number, bitmapWidth: number, bitmapHeight: number, offsetX: number, offsetY: number, textureWidth: number, textureHeight: number, sourceWidth: number, sourceHeight: number, rotated?: boolean): void; + /** + * @deprecated + */ + getPixel32(x: number, y: number): number[]; + /** + * Obtain the color value for the specified pixel region + * @param x The x coordinate of the pixel region + * @param y The y coordinate of the pixel region + * @param width The width of the pixel region + * @param height The height of the pixel region + * @returns Specifies the color value for the pixel region + * @version Egret 3.2.1 + * @platform Web,Native + * @language en_US + */ + /** + * 获取指定像素区域的颜色值 + * @param x 像素区域的X轴坐标 + * @param y 像素区域的Y轴坐标 + * @param width 像素区域的宽度 + * @param height 像素区域的高度 + * @returns 指定像素区域的颜色值 + * @version Egret 3.2.1 + * @platform Web + * @language zh_CN + */ + getPixels(x: number, y: number, width?: number, height?: number): number[]; + /** + * Convert base64 string, if the picture (or pictures included) cross-border or null + * @param type Type conversions, such as "image / png" + * @param rect The need to convert the area + * @param smoothing Whether to convert data to the smoothing process + * @returns {any} base64 string + * @version Egret 2.4 + * @language en_US + */ + /** + * 转换成base64字符串,如果图片(或者包含的图片)跨域,则返回null + * @param type 转换的类型,如 "image/png" + * @param rect 需要转换的区域 + * @param {any} encoderOptions 编码用的参数 + * @returns {any} base64字符串 + * @version Egret 2.4 + * @language zh_CN + */ + toDataURL(type: string, rect?: egret.Rectangle, encoderOptions?: any): string; + /** + * Crop designated area and save it as image. + * native support only "image / png" and "image / jpeg"; Web browser because of the various implementations are not the same, it is recommended to use only these two kinds. + * @param type Type conversions, such as "image / png" + * @param filePath The path name of the image (the home directory for the game's private space, the path can not have "../",Web supports only pass names.) + * @param rect The need to convert the area + * @version Egret 2.4 + * @platform Native + * @language en_US + */ + /** + * 裁剪指定区域并保存成图片。 + * native只支持 "image/png" 和 "image/jpeg";Web中由于各个浏览器的实现不一样,因此建议也只用这2种。 + * @param type 转换的类型,如 "image/png" + * @param filePath 图片的名称的路径(主目录为游戏的私有空间,路径中不能有 "../",Web只支持传名称。) + * @param rect 需要转换的区域 + * @version Egret 2.4 + * @platform Native + * @language zh_CN + */ + saveToFile(type: string, filePath: string, rect?: egret.Rectangle): void; + /** + * dispose texture + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 释放纹理 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + dispose(): void; + } +} +declare namespace egret { + /** + * The Event class is used as the base class for the creation of Event objects, which are passed as parameters to event + * listeners when an event occurs.The properties of the Event class carry basic information about an event, such as + * the event's type or whether the event's default behavior can be canceled. For many events, such as the events represented + * by the Event class constants, this basic information is sufficient. Other events, however, may require more detailed + * information. Events associated with a touch tap, for example, need to include additional information about the + * location of the touch event. You can pass such additional information to event listeners by extending the Event class, + * which is what the TouchEvent class does. Egret API defines several Event subclasses for common events that require + * additional information. Events associated with each of the Event subclasses are described in the documentation for + * each class.The methods of the Event class can be used in event listener functions to affect the behavior of the event + * object. Some events have an associated default behavior. Your event listener can cancel this behavior by calling the + * preventDefault() method. You can also make the current event listener the last one to process an event by calling + * the stopPropagation() or stopImmediatePropagation() method. + * @see egret.EventDispatcher + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/events/Event.ts + * @see http://edn.egret.com/cn/docs/page/798 取消触摸事件 + * @language en_US + */ + /** + * Event 类作为创建事件实例的基类,当发生事件时,Event 实例将作为参数传递给事件侦听器。Event 类的属性包含有关事件的基本信息,例如事件 + * 的类型或者是否可以取消事件的默认行为。对于许多事件(如由 Event 类常量表示的事件),此基本信息就足够了。但其他事件可能需要更详细的信息。 + * 例如,与触摸关联的事件需要包括有关触摸事件的位置信息。您可以通过扩展 Event 类(TouchEvent 类执行的操作)将此类其他信息传递给事件侦听器。 + * Egret API 为需要其他信息的常见事件定义多个 Event 子类。与每个 Event 子类关联的事件将在每个类的文档中加以介绍。Event 类的方法可以在 + * 事件侦听器函数中使用以影响事件对象的行为。某些事件有关联的默认行为,通过调用 preventDefault() 方法,您的事件侦听器可以取消此行为。 + * 可以通过调用 stopPropagation() 或 stopImmediatePropagation() 方法,将当前事件侦听器作为处理事件的最后一个事件侦听器。 + * @see egret.EventDispatcher + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/events/Event.ts + * @see http://edn.egret.com/cn/docs/page/798 取消触摸事件 + * @language zh_CN + */ + class Event extends HashObject { + /** + * Dispatched when a display object is added to the on stage display list, either directly or through the addition + * of a sub tree in which the display object is contained. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 在将显示对象直接添加到舞台显示列表或将包含显示对象的子树添加至舞台显示列表中时调度。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static ADDED_TO_STAGE: string; + /** + * Dispatched when a display object is about to be removed from the display list, either directly or through the removal + * of a sub tree in which the display object is contained. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 在从显示列表中直接删除显示对象或删除包含显示对象的子树时调度。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static REMOVED_FROM_STAGE: string; + /** + * Dispatched when a display object is added to the display list. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将显示对象添加到显示列表中时调度。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static ADDED: string; + /** + * Dispatched when a display object is about to be removed from the display list. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将要从显示列表中删除显示对象时调度。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static REMOVED: string; + /** + * [broadcast event] Dispatched when the playhead is entering a new frame. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * [广播事件] 进入新的一帧,监听此事件将会在下一帧开始时触发一次回调。这是一个广播事件,可以在任何一个显示对象上监听,无论它是否在显示列表中。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static ENTER_FRAME: string; + /** + * Dispatched when the display list is about to be updated and rendered. + * Note: Every time you want to receive a render event,you must call the stage.invalidate() method. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 渲染事件,监听此事件将会在本帧末即将开始渲染的前一刻触发回调,这是一个广播事件,可以在任何一个显示对象上监听,无论它是否在显示列表中。 + * 注意:每次您希望 Egret 发送 Event.RENDER 事件时,都必须调用 stage.invalidate() 方法,由于每帧只会触发一次屏幕刷新, + * 若在 Event.RENDER 回调函数执行期间再次调用stage.invalidate(),将会被忽略。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static RENDER: string; + /** + * Dispatched when the size of stage or UIComponent is changed. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 舞台尺寸或UI组件尺寸发生改变 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static RESIZE: string; + /** + * Dispatched when the value or selection of a property is chaned. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 属性值或状态发生改变。通常是按钮的选中状态,或者列表的选中项索引改变。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static CHANGE: string; + /** + * Dispatched when the value or selection of a property is going to change.you can cancel this by calling the + * preventDefault() method. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 属性值或状态即将发生改变,通常是按钮的选中状态,或者列表的选中项索引改变。可以通过调用 preventDefault() 方法阻止索引发生更改。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static CHANGING: string; + /** + * Dispatched when the net request is complete. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 网络请求加载完成 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static COMPLETE: string; + /** + * Dispatched when loop completed. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 循环完成。循环最后一次只派发 COMPLETE 事件,不派发 LOOP_COMPLETE 事件。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static LOOP_COMPLETE: string; + /** + * Dispatched when the TextInput instance gets focus. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * TextInput实例获得焦点 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static FOCUS_IN: string; + /** + * Dispatched when the TextInput instance loses focus. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * TextInput实例失去焦点 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static FOCUS_OUT: string; + /** + * Dispatched when the playback is ended. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 动画声音等播放完成 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static ENDED: string; + /** + * 游戏激活 + * @version Egret 2.4 + * @platform Web,Native + */ + static ACTIVATE: string; + /** + * 取消激活 + * @version Egret 2.4 + * @platform Web,Native + */ + static DEACTIVATE: string; + /** + * Event.CLOSE 常量定义 close 事件对象的 type 属性的值。 + * @version Egret 2.4 + * @platform Web,Native + */ + static CLOSE: string; + /** + * Event.CONNECT 常量定义 connect 事件对象的 type 属性的值。 + * @version Egret 2.4 + * @platform Web,Native + */ + static CONNECT: string; + /** + * Event.LEAVE_STAGE 常量定义 leaveStage 事件对象的 type 属性的值。 + * @version Egret 2.4 + * @platform Web,Native + */ + static LEAVE_STAGE: string; + /** + * Event.SOUND_COMPLETE 常量定义 在声音完成播放后调度。 + * @version Egret 2.4 + * @platform Web,Native + */ + static SOUND_COMPLETE: string; + /** + * Creates an Event object to pass as a parameter to event listeners. + * @param type The type of the event, accessible as Event.type. + * @param bubbles Determines whether the Event object participates in the bubbling stage of the event flow. The default value is false. + * @param cancelable Determines whether the Event object can be canceled. The default values is false. + * @param data the optional data associated with this event + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个作为参数传递给事件侦听器的 Event 对象。 + * @param type 事件的类型,可以作为 Event.type 访问。 + * @param bubbles 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。 + * @param cancelable 确定是否可以取消 Event 对象。默认值为 false。 + * @param data 与此事件对象关联的可选数据。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(type: string, bubbles?: boolean, cancelable?: boolean, data?: any); + /** + * the optional data associated with this event + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 与此事件对象关联的可选数据。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + data: any; + /** + * @private + */ + $type: string; + /** + * The type of event. The type is case-sensitive. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 事件的类型。类型区分大小写。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly type: string; + /** + * @private + */ + $bubbles: boolean; + /** + * Indicates whether an event is a bubbling event. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示事件是否为冒泡事件。如果事件可以冒泡,则此值为 true;否则为 false。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly bubbles: boolean; + /** + * @private + */ + $cancelable: boolean; + /** + * Indicates whether the behavior associated with the event can be prevented. If the behavior can be + * canceled, this value is true; otherwise it is false. + * @see #preventDefault() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示是否可以阻止与事件相关联的行为。如果可以取消该行为,则此值为 true;否则为 false。 + * @see #preventDefault() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly cancelable: boolean; + /** + * @private + */ + $eventPhase: number; + /** + * The current phase in the event flow. This property can contain the following numeric values: + * The capture phase (EventPhase.CAPTURING_PHASE). + * The target phase (EventPhase.AT_TARGET) + * The bubbling phase (EventPhase.BUBBLING_PHASE). + * @see egret.EventPhase + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 事件流中的当前阶段。此属性可以包含以下数值: + * 捕获阶段 (EventPhase.CAPTURING_PHASE)。 + * 目标阶段 (EventPhase.AT_TARGET)。 + * 冒泡阶段 (EventPhase.BUBBLING_PHASE)。 + * @see egret.EventPhase + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly eventPhase: number; + /** + * @private + */ + $currentTarget: any; + /** + * The object that is actively processing the Event object with an event listener. For example, if a + * user clicks an OK button, the current target could be the node containing that button or one of its ancestors + * that has registered an event listener for that event. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 当前正在使用某个事件侦听器处理 Event 对象的对象。例如,如果用户单击“确定”按钮, + * 则当前目标可以是包含该按钮的节点,也可以是它的已为该事件注册了事件侦听器的始祖之一。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly currentTarget: any; + /** + * @private + */ + $target: any; + /** + * The event target. This property contains the target node. For example, if a user clicks an OK button, + * the target node is the display list node containing that button. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 事件目标。此属性包含目标节点。例如,如果用户单击“确定”按钮,则目标节点就是包含该按钮的显示列表节点。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly target: any; + $setTarget(target: any): boolean; + /** + * @private + */ + $isDefaultPrevented: boolean; + /** + * Checks whether the preventDefault() method has been called on the event. If the preventDefault() method has been + * called, returns true; otherwise, returns false. + * @returns If preventDefault() has been called, returns true; otherwise, returns false. + * @see #preventDefault() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 检查是否已对事件调用 preventDefault() 方法。 + * @returns 如果已调用 preventDefault() 方法,则返回 true;否则返回 false。 + * @see #preventDefault() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + isDefaultPrevented(): boolean; + /** + * Cancels an event's default behavior if that behavior can be canceled.Many events have associated behaviors that + * are carried out by default. For example, if a user types a character into a text input, the default behavior + * is that the character is displayed in the text input. Because the TextEvent.TEXT_INPUT event's default behavior + * can be canceled, you can use the preventDefault() method to prevent the character from appearing. + * You can use the Event.cancelable property to check whether you can prevent the default behavior associated with + * a particular event. If the value of Event.cancelable is true, then preventDefault() can be used to cancel the event; + * otherwise, preventDefault() has no effect. + * @see #cancelable + * @see #isDefaultPrevented + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 如果可以取消事件的默认行为,则取消该行为。 + * 许多事件都有默认执行的关联行为。例如,如果用户在文本字段中键入一个字符,则默认行为就是在文本字段中显示该字符。 + * 由于可以取消 TextEvent.TEXT_INPUT 事件的默认行为,因此您可以使用 preventDefault() 方法来防止显示该字符。 + * 您可以使用 Event.cancelable 属性来检查是否可以防止与特定事件关联的默认行为。如果 Event.cancelable 的值为 true, + * 则可以使用 preventDefault() 来取消事件;否则,preventDefault() 无效。 + * @see #cancelable + * @see #isDefaultPrevented + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + preventDefault(): void; + /** + * @private + */ + $isPropagationStopped: boolean; + /** + * Prevents processing of any event listeners in nodes subsequent to the current node in the event flow. This method + * does not affect any event listeners in the current node (currentTarget). In contrast, the stopImmediatePropagation() + * method prevents processing of event listeners in both the current node and subsequent nodes. Additional calls to this + * method have no effect. This method can be called in any phase of the event flow.
+ * Note: This method does not cancel the behavior associated with this event; see preventDefault() for that functionality. + * @see #stopImmediatePropagation() + * @see #preventDefault() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 防止对事件流中当前节点的后续节点中的所有事件侦听器进行处理。此方法不会影响当前节点 currentTarget 中的任何事件侦听器。 + * 相比之下,stopImmediatePropagation() 方法可以防止对当前节点中和后续节点中的事件侦听器进行处理。 + * 对此方法的其它调用没有任何效果。可以在事件流的任何阶段中调用此方法。
+ * 注意:此方法不会取消与此事件相关联的行为;有关此功能的信息,请参阅 preventDefault()。 + * @see #stopImmediatePropagation() + * @see #preventDefault() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + stopPropagation(): void; + /** + * @private + */ + $isPropagationImmediateStopped: boolean; + /** + * Prevents processing of any event listeners in the current node and any subsequent nodes in the event flow. + * This method takes effect immediately, and it affects event listeners in the current node. In contrast, the + * stopPropagation() method doesn't take effect until all the event listeners in the current node finish processing.
+ * Note: This method does not cancel the behavior associated with this event; see preventDefault() for that functionality. + * @see #stopPropagation() + * @see #preventDefault() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 防止对事件流中当前节点中和所有后续节点中的事件侦听器进行处理。此方法会立即生效,并且会影响当前节点中的事件侦听器。 + * 相比之下,在当前节点中的所有事件侦听器都完成处理之前,stopPropagation() 方法不会生效。
+ * 注意:此方法不会取消与此事件相关联的行为;有关此功能的信息,请参阅 preventDefault()。 + * @see #stopPropagation() + * @see #preventDefault() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + stopImmediatePropagation(): void; + /** + * This method will be called automatically when you pass the event object as the parameters to the Event.release() method. + * If your custom event is designed for reusable,you should override this method to make sure all the references to external + * objects are cleaned. if not,it may cause memory leaking. + * @see egret.Event.create() + * @see egret.Event.release() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 当事件实例传递给Event.release()静态方法时,实例上的clean()方法将会被自动调用。 + * 若此自定义事件的实例设计为可以循环复用的,为了避免引起内存泄露,自定义事件需要覆盖此方法来确保实例被缓存前断开对外部对象的一切引用。 + * @see egret.Event.create() + * @see egret.Event.release() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + protected clean(): void; + /** + * EventDispatcher object using the specified event object thrown Event. Objects thrown objects will be cached in the pool for the next round robin. + * @param target the event target + * @param type The type of the event. Event listeners can access this information through the inherited type property. + * @param bubbles Determines whether the Event object bubbles. Event listeners can access this information through + * the inherited bubbles property. + * @param data {any} data + * @method egret.Event.dispatchEvent + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 使用指定的 EventDispatcher 对象来抛出 Event 事件对象。抛出的对象将会缓存在对象池上,供下次循环复用。 + * @param target {egret.IEventDispatcher} 派发事件目标 + * @param type {string} 事件类型 + * @param bubbles {boolean} 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。 + * @param data {any} 事件data + * @method egret.Event.dispatchEvent + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static dispatchEvent(target: IEventDispatcher, type: string, bubbles?: boolean, data?: any): boolean; + /** + * @private + * + * @param EventClass + * @returns + */ + static _getPropertyData(EventClass: any): any; + /** + * Gets one event instance from the object pool or create a new one. We highly recommend using the Event.create() + * and Event.release() methods to create and release an event object,it can reduce the number of reallocate objects, + * which allows you to get better code execution performance.
+ * Note: If you want to use this method to initialize your custom event object,you must make sure the constructor + * of your custom event is the same as the constructor of egret.Event. + * @param EventClass Event Class。 + * @param type The type of the event, accessible as Event.type. + * @param bubbles Determines whether the Event object participates in the bubbling stage of the event flow. The default value is false. + * @param cancelable Determines whether the Event object can be canceled. The default values is false. + * @example + *
+         *    let event = Event.create(Event,type, bubbles);
+         *    event.data = data;    //optional,initializes custom data here
+         *    this.dispatchEvent(event);
+         *    Event.release(event);
+         * 
+ * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从对象池中取出或创建一个新的事件实例。我们建议您尽可能使用Event.create()和Event.release() 这一对方法来创建和释放事件对象, + * 这一对方法会将事件实例在内部缓存下来供下次循环使用,减少对象的创建次数,从而获得更高的代码运行性能。
+ * 注意:若使用此方法来创建自定义事件的实例,自定义的构造函数参数列表必须跟Event类一致。 + * @param EventClass Event类名。 + * @param type 事件的类型,可以作为 Event.type 访问。 + * @param bubbles 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。 + * @param cancelable 确定是否可以取消 Event 对象。默认值为 false。 + * @example + *
+         *    let event = Event.create(Event,type, bubbles);
+         *    event.data = data;  //可选,若指定义事件上需要附加其他参数,可以在获取实例后在此处设置。
+         *    this.dispatchEvent(event);
+         *    Event.release(event);
+         * 
+ * @see #clean() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static create(EventClass: { + new (type: string, bubbles?: boolean, cancelable?: boolean): T; + eventPool?: Event[]; + }, type: string, bubbles?: boolean, cancelable?: boolean): T; + /** + * Releases an event object and cache it into the object pool.We highly recommend using the Event.create() + * and Event.release() methods to create and release an event object,it can reduce the number of reallocate objects, + * which allows you to get better code execution performance.
+ * Note: The parameters of this method only accepts an instance created by the Event.create() method. + * if not,it may throw an error. + * @example + *
+         *    let event = Event.create(Event,type, bubbles);
+         *    event.data = data; //optional,initializes custom data here
+         *    this.dispatchEvent(event);
+         *    Event.release(event);
+         * 
+ * @see #clean() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 释放一个事件对象,并缓存到对象池。我们建议您尽可能使用Event.create()和Event.release() 这一对方法来创建和释放事件对象, + * 这一对方法会将事件实例在内部缓存下来供下次循环使用,减少对象的创建次数,从而获得更高的代码运行性能。
+ * 注意:此方法只能传入由Event.create()创建的事件实例,传入非法对象实例可能会导致报错。 + * @example + *
+         *    let event = Event.create(Event,type, bubbles);
+         *    event.data = data;   //可选,若指定义事件上需要附加其他参数,可以在获取实例后在此处设置。
+         *    this.dispatchEvent(event);
+         *    Event.release(event);
+         * 
+ * @see #clean() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static release(event: Event): void; + } +} +/** + * Is debug mode. + * @version Egret 2.5 + * @platform Web,Native + * @language en_US + */ +/** + * 是否为 debug 模式。 + * @version Egret 2.5 + * @platform Web,Native + * @language zh_CN + */ +declare let DEBUG: boolean; +/** + * Is release mode. + * @version Egret 2.5 + * @platform Web,Native + * @language en_US + */ +/** + * 是否为 release 模式。 + * @version Egret 2.5 + * @platform Web,Native + * @language zh_CN + */ +declare let RELEASE: boolean; +declare namespace egret { + /** + * @private + */ + function $error(code: number, ...params: any[]): void; + /** + * @private + */ + function $warn(code: number, ...params: any[]): void; + /** + * @private + */ + function getString(code: number, ...params: any[]): string; + /** + * @private + */ + function $markCannotUse(instance: any, property: string, defaultVale: any): void; +} +declare namespace egret { + /** + * The Point object represents a location in a two-dimensional coordinate system, where x represents the horizontal + * axis and y represents the vertical axis. + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/geom/Point.ts + * @language en_US + */ + /** + * Point 对象表示二维坐标系统中的某个位置,其中 x 表示水平轴,y 表示垂直轴。 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/geom/Point.ts + * @language zh_CN + */ + class Point extends HashObject { + /** + * Releases a point instance to the object pool + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 释放一个Point实例到对象池 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static release(point: Point): void; + /** + * get a point instance from the object pool or create a new one. + * @param x The horizontal coordinate. + * @param y The vertical coordinate. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从对象池中取出或创建一个新的Point对象。 + * @param x 该对象的x属性值,默认为0 + * @param y 该对象的y属性值,默认为0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static create(x: number, y: number): Point; + /** + * Creates a new point. If you pass no parameters to this method, a point is created at (0,0). + * @param x The horizontal coordinate. + * @param y The vertical coordinate. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个 egret.Point 对象.若不传入任何参数,将会创建一个位于(0,0)位置的点。 + * @param x 该对象的x属性值,默认为0 + * @param y 该对象的y属性值,默认为0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(x?: number, y?: number); + /** + * The horizontal coordinate. + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 该点的水平坐标。 + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + x: number; + /** + * The vertical coordinate. + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 该点的垂直坐标。 + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + y: number; + /** + * The length of the line segment from (0,0) to this point. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从 (0,0) 到此点的线段长度。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly length: number; + /** + * Sets the members of Point to the specified values + * @param x The horizontal coordinate. + * @param y The vertical coordinate. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将 Point 的成员设置为指定值 + * @param x 该对象的x属性值 + * @param y 该对象的y属性值 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + setTo(x: number, y: number): Point; + /** + * Creates a copy of this Point object. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 克隆点对象 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + clone(): Point; + /** + * Determines whether two points are equal. Two points are equal if they have the same x and y values. + * @param toCompare The point to be compared. + * @returns A value of true if the object is equal to this Point object; false if it is not equal. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 确定两个点是否相同。如果两个点具有相同的 x 和 y 值,则它们是相同的点。 + * @param toCompare 要比较的点。 + * @returns 如果该对象与此 Point 对象相同,则为 true 值,如果不相同,则为 false。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + equals(toCompare: Point): boolean; + /** + * Returns the distance between pt1 and pt2. + * @param p1 The first point. + * @param p2 The second point. + * @returns The distance between the first and second points. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 返回 pt1 和 pt2 之间的距离。 + * @param p1 第一个点 + * @param p2 第二个点 + * @returns 第一个点和第二个点之间的距离。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static distance(p1: Point, p2: Point): number; + /** + * Copies all of the point data from the source Point object into the calling Point object. + * @param sourcePoint The Point object from which to copy the data. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将源 Point 对象中的所有点数据复制到调用方 Point 对象中。 + * @param sourcePoint 要从中复制数据的 Point 对象。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + copyFrom(sourcePoint: Point): void; + /** + * Adds the coordinates of another point to the coordinates of this point to create a new point. + * @param v The point to be added. + * @returns The new point. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将另一个点的坐标添加到此点的坐标以创建一个新点。 + * @param v 要添加的点。 + * @returns 新点。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + add(v: Point): Point; + /** + * Determines a point between two specified points. + * The parameter f determines where the new interpolated point is located relative to the two end points specified by parameters pt1 and pt2. The closer the value of the parameter f is to 1.0, the closer the interpolated point is to the first point (parameter pt1). The closer the value of the parameter f is to 0, the closer the interpolated point is to the second point (parameter pt2). + * @param pt1 The first point. + * @param pt2 The second point. + * @param f The level of interpolation between the two points. Indicates where the new point will be, along the line between pt1 and pt2. If f=1, pt1 is returned; if f=0, pt2 is returned. + * @returns The new interpolated point. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 确定两个指定点之间的点。 + * 参数 f 确定新的内插点相对于参数 pt1 和 pt2 指定的两个端点所处的位置。参数 f 的值越接近 1.0,则内插点就越接近第一个点(参数 pt1)。参数 f 的值越接近 0,则内插点就越接近第二个点(参数 pt2)。 + * @param pt1 第一个点。 + * @param pt2 第二个点。 + * @param f 两个点之间的内插级别。表示新点将位于 pt1 和 pt2 连成的直线上的什么位置。如果 f=1,则返回 pt1;如果 f=0,则返回 pt2。 + * @returns 新的内插点。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static interpolate(pt1: Point, pt2: Point, f: number): Point; + /** + * Scales the line segment between (0,0) and the current point to a set length. + * @param thickness The scaling value. For example, if the current point is (0,5), and you normalize it to 1, the point returned is at (0,1). + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将 (0,0) 和当前点之间的线段缩放为设定的长度。 + * @param thickness 缩放值。例如,如果当前点为 (0,5) 并且您将它规范化为 1,则返回的点位于 (0,1) 处。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + normalize(thickness: number): void; + /** + * Offsets the Point object by the specified amount. The value of dx is added to the original value of x to create the new x value. The value of dy is added to the original value of y to create the new y value. + * @param dx The amount by which to offset the horizontal coordinate, x. + * @param dy The amount by which to offset the vertical coordinate, y. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 按指定量偏移 Point 对象。dx 的值将添加到 x 的原始值中以创建新的 x 值。dy 的值将添加到 y 的原始值中以创建新的 y 值。 + * @param dx 水平坐标 x 的偏移量。 + * @param dy 水平坐标 y 的偏移量。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + offset(dx: number, dy: number): void; + /** + * Converts a pair of polar coordinates to a Cartesian point coordinate. + * @param len The length coordinate of the polar pair. + * @param angle The angle, in radians, of the polar pair. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将一对极坐标转换为笛卡尔点坐标。 + * @param len 极坐标对的长度。 + * @param angle 极坐标对的角度(以弧度表示)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static polar(len: number, angle: number): Point; + /** + * Subtracts the coordinates of another point from the coordinates of this point to create a new point. + * @param v The point to be subtracted. + * @returns The new point. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从此点的坐标中减去另一个点的坐标以创建一个新点。 + * @param v 要减去的点。 + * @returns 新点。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + subtract(v: Point): Point; + /** + * Returns a string that contains the values of the x and y coordinates. The string has the form "(x=x, y=y)", so calling the toString() method for a point at 23,17 would return "(x=23, y=17)". + * @returns The string representation of the coordinates. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 返回包含 x 和 y 坐标的值的字符串。该字符串的格式为 "(x=x, y=y)",因此为点 23,17 调用 toString() 方法将返回 "(x=23, y=17)"。 + * @returns 坐标的字符串表示形式。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + toString(): string; + } + /** + * @private + * 仅供框架内复用,要防止暴露引用到外部。 + */ + let $TempPoint: Point; +} +declare namespace egret { + /** + * The DisplayObjectContainer class is a basic display list building block: a display list node that can contain children. + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/DisplayObjectContainer.ts + * @language en_US + */ + /** + * DisplayObjectContainer 类是基本显示列表构造块:一个可包含子项的显示列表节点。 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/DisplayObjectContainer.ts + * @language zh_CN + */ + class DisplayObjectContainer extends DisplayObject { + /** + * @private + */ + static $EVENT_ADD_TO_STAGE_LIST: DisplayObject[]; + /** + * @private + */ + static $EVENT_REMOVE_FROM_STAGE_LIST: DisplayObject[]; + /** + * Creates a new DisplayObjectContainer instance. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 实例化一个容器 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(); + /** + * Returns the number of children of this object. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 返回此对象的子项数目。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly numChildren: number; + /** + * Set children sort mode. + * @param value {string} The sort mode + * @see egret.ChildrenSortMode + * @version Egret 5.2.19 + * @platform Native + * @language en_US + */ + /** + * 设置子项目的排序方式 + * @param value {string} 排序方式 + * @see egret.ChildrenSortMode + * @version Egret 5.2.19 + * @platform Native + * @language en_US + */ + setChildrenSortMode(value: string): void; + /** + * Adds a child DisplayObject instance to this DisplayObjectContainer instance. The child is added to the front + * (top) of all other children in this DisplayObjectContainer instance. (To add a child to a specific index position, + * use the addChildAt() method.)If you add a child object that already has a different display object container + * as a parent, the object is removed from the child list of the other display object container. + * @param child The DisplayObject instance to add as a child of this DisplayObjectContainer instance. + * @returns 在 child The DisplayObject instance that you pass in the child parameter. + * @see #addChildAt() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将一个 DisplayObject 子实例添加到该 DisplayObjectContainer 实例中。子项将被添加到该 DisplayObjectContainer 实例中其他 + * 所有子项的前(上)面。(要将某子项添加到特定索引位置,请使用 addChildAt() 方法。) + * @param child 要作为该 DisplayObjectContainer 实例的子项添加的 DisplayObject 实例。 + * @returns 在 child 参数中传递的 DisplayObject 实例。 + * @see #addChildAt() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + addChild(child: DisplayObject): DisplayObject; + /** + * Adds a child DisplayObject instance to this DisplayObjectContainer instance. The child is added at the index position + * specified. An index of 0 represents the back (bottom) of the display list for this DisplayObjectContainer object. + * If you add a child object that already has a different display object container as a parent, the object is removed + * from the child list of the other display object container. + * @param child The DisplayObject instance to add as a child of this DisplayObjectContainer instance. + * @param index The index position to which the child is added. If you specify a currently occupied index position, + * the child object that exists at that position and all higher positions are moved up one position in the child list. + * @returns The DisplayObject instance that you pass in the child parameter. + * @see #addChild() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将一个 DisplayObject 子实例添加到该 DisplayObjectContainer 实例中。该子项将被添加到指定的索引位置。索引为 0 表示该 + * DisplayObjectContainer 对象的显示列表的后(底)部。如果添加一个已将其它显示对象容器作为父项的子对象,则会从其它显示对象容器的子列表中删除该对象。 + * @param child 要作为该 DisplayObjectContainer 实例的子项添加的 DisplayObject 实例。 + * @param index 添加该子项的索引位置。 如果指定当前占用的索引位置,则该位置以及所有更高位置上的子对象会在子级列表中上移一个位置。 + * @returns 在 child 参数中传递的 DisplayObject 实例。 + * @see #addChild() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + addChildAt(child: DisplayObject, index: number): DisplayObject; + /** + * @private + */ + $doAddChild(child: DisplayObject, index: number, notifyListeners?: boolean): DisplayObject; + /** + * Determines whether the specified display object is a child of the DisplayObjectContainer instance or the instance + * itself. The search includes the entire display list including this DisplayObjectContainer instance. Grandchildren, + * great-grandchildren, and so on each return true. + * @param child The child object to test. + * @returns true if the child object is a child of the DisplayObjectContainer or the container itself; otherwise false. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 确定指定显示对象是 DisplayObjectContainer 实例的子项或该实例本身。搜索包括整个显示列表(其中包括此 DisplayObjectContainer 实例)。 + * 孙项、曾孙项等,每项都返回 true。 + * @param child 要测试的子对象。 + * @returns 如果 child 对象是 DisplayObjectContainer 的子项或容器本身,则为 true;否则为 false。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + contains(child: DisplayObject): boolean; + /** + * Returns the child display object instance that exists at the specified index. + * @param index The index position of the child object. + * @returns The child display object at the specified index position. + * @see #getChildByName() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 返回位于指定索引处的子显示对象实例。 + * @param index 子对象的索引位置。 + * @returns 位于指定索引位置处的子显示对象。 + * @see #getChildByName() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + getChildAt(index: number): DisplayObject; + /** + * Returns the index position of a child DisplayObject instance. + * @param child The DisplayObject instance to identify. + * @returns The index position of the child display object to identify. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 返回 DisplayObject 的 child 实例的索引位置。 + * @param child 要测试的子对象。 + * @returns 要查找的子显示对象的索引位置。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + getChildIndex(child: egret.DisplayObject): number; + /** + * Returns the child display object that exists with the specified name. If more that one child display object has + * the specified name, the method returns the first object in the child list.The getChildAt() method is faster than + * the getChildByName() method. The getChildAt() method accesses a child from a cached array, whereas the getChildByName() + * method has to traverse a linked list to access a child. + * @param name The name of the child to return. + * @returns The child display object with the specified name. + * @see #getChildAt() + * @see egret.DisplayObject#name + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 返回具有指定名称的子显示对象。如果多个子显示对象具有指定名称,则该方法会返回子级列表中的第一个对象。 + * getChildAt() 方法比 getChildByName() 方法快。getChildAt() 方法从缓存数组中访问子项,而 getChildByName() 方法则必须遍历链接的列表来访问子项。 + * @param name 要返回的子项的名称。 + * @returns 具有指定名称的子显示对象。 + * @see #getChildAt() + * @see egret.DisplayObject#name + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + getChildByName(name: string): DisplayObject; + /** + * Removes the specified child DisplayObject instance from the child list of the DisplayObjectContainer instance. + * The parent property of the removed child is set to null , and the object is garbage collected if no other references + * to the child exist. The index positions of any display objects above the child in the DisplayObjectContainer are + * decreased by 1. + * @param child The DisplayObject instance to remove. + * @returns The DisplayObject instance that you pass in the child parameter. + * @see #removeChildAt() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从 DisplayObjectContainer 实例的子列表中删除指定的 child DisplayObject 实例。将已删除子项的 parent 属性设置为 null; + * 如果不存在对该子项的任何其它引用,则将该对象作为垃圾回收。DisplayObjectContainer 中该子项之上的任何显示对象的索引位置都减去 1。 + * @param child 要删除的 DisplayObject 实例。 + * @returns 在 child 参数中传递的 DisplayObject 实例。 + * @see #removeChildAt() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + removeChild(child: DisplayObject): DisplayObject; + /** + * Removes a child DisplayObject from the specified index position in the child list of the DisplayObjectContainer. + * The parent property of the removed child is set to null, and the object is garbage collected if no other references + * to the child exist. The index positions of any display objects above the child in the DisplayObjectContainer are decreased by 1. + * @param index The child index of the DisplayObject to remove. + * @returns The DisplayObject instance that was removed. + * @see #removeChild() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从 DisplayObjectContainer 的子列表中指定的 index 位置删除子 DisplayObject。将已删除子项的 parent 属性设置为 null; + * 如果没有对该子项的任何其他引用,则将该对象作为垃圾回收。DisplayObjectContainer 中该子项之上的任何显示对象的索引位置都减去 1。 + * @param index 要删除的 DisplayObject 的子索引。 + * @returns 已删除的 DisplayObject 实例。 + * @see #removeChild() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + removeChildAt(index: number): DisplayObject; + /** + * @private + */ + $doRemoveChild(index: number, notifyListeners?: boolean): DisplayObject; + /** + * Changes the position of an existing child in the display object container. This affects the layering of child objects. + * @param child The child DisplayObject instance for which you want to change the index number. + * @param index The resulting index number for the child display object. + * @see #addChildAt() + * @see #getChildAt() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 更改现有子项在显示对象容器中的位置。这会影响子对象的分层。 + * @param child 要为其更改索引编号的 DisplayObject 子实例。 + * @param index 生成的 child 显示对象的索引编号。当新的索引编号小于0或大于已有子元件数量时,新加入的DisplayObject对象将会放置于最上层。 + * @see #addChildAt() + * @see #getChildAt() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + setChildIndex(child: DisplayObject, index: number): void; + /** + * @private + */ + private doSetChildIndex(child, index); + /** + * Swaps the z-order (front-to-back order) of the child objects at the two specified index positions in the child + * list. All other child objects in the display object container remain in the same index positions. + * @param index1 The index position of the first child object. + * @param index2 The index position of the second child object. + * @see #swapChildren() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 在子级列表中两个指定的索引位置,交换子对象的 Z 轴顺序(前后顺序)。显示对象容器中所有其他子对象的索引位置保持不变。 + * @param index1 第一个子对象的索引位置。 + * @param index2 第二个子对象的索引位置。 + * @see #swapChildren() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + swapChildrenAt(index1: number, index2: number): void; + /** + * Swaps the z-order (front-to-back order) of the two specified child objects. All other child objects in the + * display object container remain in the same index positions. + * @param child1 The first child object. + * @param child2 The second child object. + * @see #swapChildrenAt() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 交换两个指定子对象的 Z 轴顺序(从前到后顺序)。显示对象容器中所有其他子对象的索引位置保持不变。 + * @param child1 第一个子对象。 + * @param child2 第二个子对象。 + * @see #swapChildrenAt() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + swapChildren(child1: DisplayObject, child2: DisplayObject): void; + /** + * @private + */ + private doSwapChildrenAt(index1, index2); + /** + * Removes all child DisplayObject instances from the child list of the DisplayObjectContainer instance. The parent + * property of the removed children is set to null , and the objects are garbage collected if no other references to the children exist. + * @see #removeChild() + * @see #removeChildAt() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从 DisplayObjectContainer 实例的子级列表中删除所有 child DisplayObject 实例。 + * @see #removeChild() + * @see #removeChildAt() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + removeChildren(): void; + /** + * @private + * 一个子项被添加到容器内,此方法不仅在操作addChild()时会被回调,在操作setChildIndex()或swapChildren时也会回调。 + * 当子项索引发生改变时,会先触发$childRemoved()方法,然后触发$childAdded()方法。 + */ + $childAdded(child: DisplayObject, index: number): void; + /** + * @private + * 一个子项从容器内移除,此方法不仅在操作removeChild()时会被回调,在操作setChildIndex()或swapChildren时也会回调。 + * 当子项索引发生改变时,会先触发$childRemoved()方法,然后触发$childAdded()方法。 + */ + $childRemoved(child: DisplayObject, index: number): void; + /** + * @private + */ + $onAddToStage(stage: Stage, nestLevel: number): void; + /** + * @private + * + */ + $onRemoveFromStage(): void; + /** + * @private + */ + $measureChildBounds(bounds: Rectangle): void; + $touchChildren: boolean; + /** + * Determines whether or not the children of the object are touch, or user input device, enabled. If an object is + * enabled, a user can interact with it by using a touch or user input device. + * @default true + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 确定对象的子级是否支持触摸或用户输入设备。如果对象支持触摸或用户输入设备,用户可以通过使用触摸或用户输入设备与之交互。 + * @default true + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + touchChildren: boolean; + /** + * @private + * + * @returns + */ + $getTouchChildren(): boolean; + /** + * @private + */ + $setTouchChildren(value: boolean): boolean; + /** + * @private + */ + $hitTest(stageX: number, stageY: number): DisplayObject; + private _sortChildrenFunc(a, b); + sortChildren(): void; + } +} +declare namespace egret { + /** + * SpriteSheet is a mosaic of multiple sub-bitmaps, comprising a plurality of Texture objects. + * Each Texture object shares the set bitmap of SpriteSheet, but it points to its different areas. + * On WebGL / OpenGL, this operation can significantly improve performance. + * At the same time, SpriteSheet can carry out material integration easily to reduce the number of HTTP requests + * For specification of the SpriteSheet format, see the document https://github.com/egret-labs/egret-core/wiki/Egret-SpriteSheet-Specification + * @see http://edn.egret.com/cn/docs/page/135 The use of texture packs + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/SpriteSheet.ts + * @language en_US + */ + /** + * SpriteSheet 是一张由多个子位图拼接而成的集合位图,它包含多个 Texture 对象。 + * 每一个 Texture 都共享 SpriteSheet 的集合位图,但是指向它的不同的区域。 + * 在WebGL / OpenGL上,这种做法可以显著提升性能 + * 同时,SpriteSheet可以很方便的进行素材整合,降低HTTP请求数量 + * SpriteSheet 格式的具体规范可以参见此文档 https://github.com/egret-labs/egret-core/wiki/Egret-SpriteSheet-Specification + * @see http://edn.egret.com/cn/docs/page/135 纹理集的使用 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/SpriteSheet.ts + * @language zh_CN + */ + class SpriteSheet extends HashObject { + /** + * Create an egret.SpriteSheet object + * @param texture {Texture} Texture + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个 egret.SpriteSheet 对象 + * @param texture {Texture} 纹理 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(texture: Texture); + /** + * @private + * 表示这个SpriteSheet的位图区域在bitmapData上的起始位置x。 + */ + private _bitmapX; + /** + * @private + * 表示这个SpriteSheet的位图区域在bitmapData上的起始位置y。 + */ + private _bitmapY; + /** + * @private + * 共享的位图数据 + */ + $texture: Texture; + /** + * @private + * 纹理缓存字典 + */ + _textureMap: MapLike; + /** + * Obtain a cached Texture object according to the specified texture name + * @param name {string} Cache the name of this Texture object + * @returns {egret.Texture} The Texture object + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 根据指定纹理名称获取一个缓存的 Texture 对象 + * @param name {string} 缓存这个 Texture 对象所使用的名称 + * @returns {egret.Texture} Texture 对象 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + getTexture(name: string): Texture; + /** + * Create a new Texture object for the specified area on SpriteSheet and cache it + * @param name {string} Cache the name of this Texture object. If the name already exists, the previous Texture object will be overwrited. + * @param bitmapX {number} Starting coordinate x of texture area on bitmapData + * @param bitmapY {number} Starting coordinate y of texture area on bitmapData + * @param bitmapWidth {number} Width of texture area on bitmapData + * @param bitmapHeight {number} Height of texture area on bitmapData + * @param offsetX {number} Starting point x for a non-transparent area of the original bitmap + * @param offsetY {number} Starting point y for a non-transparent area of the original bitmap + * @param textureWidth {number} Width of the original bitmap. If it is not passed, use the bitmapWidth value. + * @param textureHeight {number} Height of the original bitmap. If it is not passed, use the bitmapHeight value. + * @returns {egret.Texture} The created Texture object + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 为 SpriteSheet 上的指定区域创建一个新的 Texture 对象并缓存它 + * @param name {string} 缓存这个 Texture 对象所使用的名称,如果名称已存在,将会覆盖之前的 Texture 对象 + * @param bitmapX {number} 纹理区域在 bitmapData 上的起始坐标x + * @param bitmapY {number} 纹理区域在 bitmapData 上的起始坐标y + * @param bitmapWidth {number} 纹理区域在 bitmapData 上的宽度 + * @param bitmapHeight {number} 纹理区域在 bitmapData 上的高度 + * @param offsetX {number} 原始位图的非透明区域 x 起始点 + * @param offsetY {number} 原始位图的非透明区域 y 起始点 + * @param textureWidth {number} 原始位图的高度,若不传入,则使用 bitmapWidth 的值。 + * @param textureHeight {number} 原始位图的宽度,若不传入,则使用 bitmapHeight 的值。 + * @returns {egret.Texture} 创建的 Texture 对象 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + createTexture(name: string, bitmapX: number, bitmapY: number, bitmapWidth: number, bitmapHeight: number, offsetX?: number, offsetY?: number, textureWidth?: number, textureHeight?: number): Texture; + /** + * dispose texture + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 释放纹理 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + dispose(): void; + } +} +declare namespace egret { + /** + * @private + */ + let $locale_strings: any; + /** + * @private + */ + let $language: string; +} +declare namespace egret.sys { + /** + * @private + * 全局多语言翻译函数 + * @param code 要查询的字符串代码 + * @param args 替换字符串中{0}标志的参数列表 + * @returns 返回拼接后的字符串 + */ + function tr(code: number, ...args: any[]): string; +} +declare namespace egret { + /** + * The Bitmap class represents display objects that represent bitmap images. + * The Bitmap() constructor allows you to create a Bitmap object that contains a reference to a BitmapData object. + * After you create a Bitmap object, use the addChild() or addChildAt() method of the parent DisplayObjectContainer + * instance to place the bitmap on the display list.A Bitmap object can share its texture reference among several + * Bitmap objects, independent of translation or rotation properties. Because you can create multiple Bitmap objects + * that reference the same texture object, multiple display objects can use the same complex texture object + * without incurring the memory overhead of a texture object for each display object instance. + * + * @see egret.Texture + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/Bitmap.ts + * @language en_US + */ + /** + * Bitmap 类表示用于显示位图图片的显示对象。 + * 利用 Bitmap() 构造函数,可以创建包含对 BitmapData 对象引用的 Bitmap 对象。创建了 Bitmap 对象后, + * 使用父级 DisplayObjectContainer 实例的 addChild() 或 addChildAt() 方法可以将位图放在显示列表中。 + * 一个 Bitmap 对象可在若干 Bitmap 对象之中共享其 texture 引用,与缩放或旋转属性无关。 + * 由于能够创建引用相同 texture 对象的多个 Bitmap 对象,因此,多个显示对象可以使用相同的 texture 对象, + * 而不会因为每个显示对象实例使用一个 texture 对象而产生额外内存开销。 + * + * @see egret.Texture + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/Bitmap.ts + * @language zh_CN + */ + class Bitmap extends DisplayObject { + /** + * Initializes a Bitmap object to refer to the specified Texture object. + * @param value The Texture object being referenced. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个引用指定 Texture 实例的 Bitmap 对象 + * @param value 被引用的 Texture 实例 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(value?: Texture); + protected $texture: Texture; + $bitmapData: BitmapData; + protected $bitmapX: number; + protected $bitmapY: number; + protected $bitmapWidth: number; + protected $bitmapHeight: number; + protected $offsetX: number; + protected $offsetY: number; + protected $textureWidth: number; + protected $textureHeight: number; + protected $sourceWidth: number; + protected $sourceHeight: number; + protected $smoothing: boolean; + protected $explicitBitmapWidth: number; + protected $explicitBitmapHeight: number; + protected createNativeDisplayObject(): void; + /** + * @private + * 显示对象添加到舞台 + */ + $onAddToStage(stage: Stage, nestLevel: number): void; + /** + * @private + * 显示对象从舞台移除 + */ + $onRemoveFromStage(): void; + /** + * The Texture object being referenced. + * If you pass the constructor of type BitmapData or last set for bitmapData, this value returns null. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 被引用的 Texture 对象。 + * 如果传入构造函数的类型为 BitmapData 或者最后设置的为 bitmapData,则此值返回 null。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + texture: Texture; + /** + * @private + */ + $setTexture(value: Texture): boolean; + $setBitmapData(value: any): void; + /** + * @private + */ + protected setBitmapDataToWasm(data?: Texture): void; + /** + * @private + */ + $refreshImageData(): void; + /** + * @private + */ + private setImageData(bitmapData, bitmapX, bitmapY, bitmapWidth, bitmapHeight, offsetX, offsetY, textureWidth, textureHeight, sourceWidth, sourceHeight); + /** + * @private + */ + $scale9Grid: egret.Rectangle; + /** + * Represent a Rectangle Area that the 9 scale area of Image. + * Notice: This property is valid only when fillMode + * is BitmapFillMode.SCALE. + * + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 矩形区域,它定义素材对象的九个缩放区域。 + * 注意:此属性仅在fillModeBitmapFillMode.SCALE时有效。 + * + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + scale9Grid: egret.Rectangle; + protected $setScale9Grid(value: egret.Rectangle): void; + /** + * @private + */ + $fillMode: string; + /** + * Determines how the bitmap fills in the dimensions. + *

When set to BitmapFillMode.REPEAT, the bitmap + * repeats to fill the region.

+ *

When set to BitmapFillMode.SCALE, the bitmap + * stretches to fill the region.

+ * + * @default BitmapFillMode.SCALE + * + * @version Egret 2.4 + * @platform Web + * @language en_US + */ + /** + * 确定位图填充尺寸的方式。 + *

设置为 BitmapFillMode.REPEAT时,位图将重复以填充区域。

+ *

设置为 BitmapFillMode.SCALE时,位图将拉伸以填充区域。

+ * + * @default BitmapFillMode.SCALE + * + * @version Egret 2.4 + * @platform Web + * @language zh_CN + */ + fillMode: string; + $setFillMode(value: string): boolean; + /** + * The default value of whether or not is smoothed when scaled. + * When object such as Bitmap is created,smoothing property will be set to this value. + * @default true。 + * @version Egret 3.0 + * @platform Web + * @language en_US + */ + /** + * 控制在缩放时是否进行平滑处理的默认值。 + * 在 Bitmap 等对象创建时,smoothing 属性会被设置为该值。 + * @default true。 + * @version Egret 3.0 + * @platform Web + * @language zh_CN + */ + static defaultSmoothing: boolean; + /** + * Whether or not the bitmap is smoothed when scaled. + * @version Egret 2.4 + * @platform Web + * @language en_US + */ + /** + * 控制在缩放时是否对位图进行平滑处理。 + * @version Egret 2.4 + * @platform Web + * @language zh_CN + */ + smoothing: boolean; + /** + * @private + * + * @param value + */ + $setWidth(value: number): boolean; + /** + * @private + * + * @param value + */ + $setHeight(value: number): boolean; + /** + * @private + * 获取显示宽度 + */ + $getWidth(): number; + /** + * @private + * 获取显示宽度 + */ + $getHeight(): number; + /** + * @private + */ + $measureContentBounds(bounds: Rectangle): void; + /** + * @private + */ + $updateRenderNode(): void; + private _pixelHitTest; + /** + * Specifies whether this object use precise hit testing by checking the alpha value of each pixel.If pixelHitTest + * is set to true,the transparent area of the bitmap will be touched through.
+ * Note:If the image is loaded from cross origin,that we can't access to the pixel data,so it might cause + * the pixelHitTest property invalid. + * @default false + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 是否开启精确像素碰撞。设置为true显示对象本身的透明区域将能够被穿透。
+ * 注意:若图片资源是以跨域方式从外部服务器加载的,将无法访问图片的像素数据,而导致此属性失效。 + * @default false + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + pixelHitTest: boolean; + $hitTest(stageX: number, stageY: number): DisplayObject; + } +} +declare namespace egret.sys { + /** + * @private + * 渲染节点类型 + */ + const enum RenderNodeType { + /** + * 位图渲染节点 + */ + BitmapNode = 1, + /** + * 文本渲染节点 + */ + TextNode = 2, + /** + * 矢量渲染节点 + */ + GraphicsNode = 3, + /** + * 组渲染节点 + */ + GroupNode = 4, + /** + * Mesh 节点 + */ + MeshNode = 5, + /** + * 普通位图渲染节点 + */ + NormalBitmapNode = 6, + } + /** + * @private + * 渲染节点基类 + */ + class RenderNode { + /** + * 节点类型.. + */ + type: number; + /** + * 绘制数据 + */ + drawData: any[]; + /** + * 绘制次数 + */ + protected renderCount: number; + /** + * 在显示对象的$updateRenderNode()方法被调用前,自动清空自身的drawData数据。 + */ + cleanBeforeRender(): void; + $getRenderCount(): number; + } +} +declare namespace egret.sys { + /** + * @private + * 路径类型 + */ + const enum PathType { + /** + * 纯色填充路径 + */ + Fill = 1, + /** + * 渐变填充路径 + */ + GradientFill = 2, + /** + * 线条路径 + */ + Stroke = 3, + } + /** + * @private + * 2D路径命令 + */ + const enum PathCommand { + MoveTo = 1, + LineTo = 2, + CurveTo = 3, + CubicCurveTo = 4, + } + /** + * @private + * 2D路径 + */ + class Path2D { + /** + * 路径类型 + */ + type: number; + $commands: number[]; + $data: number | number[][]; + protected commandPosition: number; + protected dataPosition: number; + /** + * 当前移动到的坐标X + * 注意:目前只有drawArc之前会被赋值 + */ + $lastX: number; + /** + * 当前移动到的坐标Y + * 注意:目前只有drawArc之前会被赋值 + */ + $lastY: number; + /** + * 将当前绘图位置移动到 (x, y)。如果缺少任何一个参数,则此方法将失败,并且当前绘图位置不改变。 + * @param x 一个表示相对于父显示对象注册点的水平位置的数字(以像素为单位)。 + * @param y 一个表示相对于父显示对象注册点的垂直位置的数字(以像素为单位)。 + */ + moveTo(x: number, y: number): void; + /** + * 使用当前线条样式绘制一条从当前绘图位置开始到 (x, y) 结束的直线;当前绘图位置随后会设置为 (x, y)。 + * @param x 一个表示相对于父显示对象注册点的水平位置的数字(以像素为单位)。 + * @param y 一个表示相对于父显示对象注册点的垂直位置的数字(以像素为单位)。 + */ + lineTo(x: number, y: number): void; + /** + * 使用当前线条样式和由 (controlX, controlY) 指定的控制点绘制一条从当前绘图位置开始到 (anchorX, anchorY) 结束的二次贝塞尔曲线。当前绘图位置随后设置为 (anchorX, anchorY)。 + * 如果在调用 moveTo() 方法之前调用了 curveTo() 方法,则当前绘图位置的默认值为 (0, 0)。如果缺少任何一个参数,则此方法将失败,并且当前绘图位置不改变。 + * 绘制的曲线是二次贝塞尔曲线。二次贝塞尔曲线包含两个锚点和一个控制点。该曲线内插这两个锚点,并向控制点弯曲。 + * @param controlX 一个数字,指定控制点相对于父显示对象注册点的水平位置。 + * @param controlY 一个数字,指定控制点相对于父显示对象注册点的垂直位置。 + * @param anchorX 一个数字,指定下一个锚点相对于父显示对象注册点的水平位置。 + * @param anchorY 一个数字,指定下一个锚点相对于父显示对象注册点的垂直位置。 + */ + curveTo(controlX: number, controlY: number, anchorX: number, anchorY: number): void; + /** + * 从当前绘图位置到指定的锚点绘制一条三次贝塞尔曲线。三次贝塞尔曲线由两个锚点和两个控制点组成。该曲线内插这两个锚点,并向两个控制点弯曲。 + * @param controlX1 指定首个控制点相对于父显示对象的注册点的水平位置。 + * @param controlY1 指定首个控制点相对于父显示对象的注册点的垂直位置。 + * @param controlX2 指定第二个控制点相对于父显示对象的注册点的水平位置。 + * @param controlY2 指定第二个控制点相对于父显示对象的注册点的垂直位置。 + * @param anchorX 指定锚点相对于父显示对象的注册点的水平位置。 + * @param anchorY 指定锚点相对于父显示对象的注册点的垂直位置。 + */ + cubicCurveTo(controlX1: number, controlY1: number, controlX2: number, controlY2: number, anchorX: number, anchorY: number): void; + /** + * 绘制一个矩形 + * @param x 圆心相对于父显示对象注册点的 x 位置(以像素为单位)。 + * @param y 相对于父显示对象注册点的圆心的 y 位置(以像素为单位)。 + * @param width 矩形的宽度(以像素为单位)。 + * @param height 矩形的高度(以像素为单位)。 + */ + drawRect(x: number, y: number, width: number, height: number): void; + /** + * 绘制一个圆角矩形。 + * @param x 圆心相对于父显示对象注册点的 x 位置(以像素为单位)。 + * @param y 相对于父显示对象注册点的圆心的 y 位置(以像素为单位)。 + * @param width 矩形的宽度(以像素为单位)。 + * @param height 矩形的高度(以像素为单位)。 + * @param ellipseWidth 用于绘制圆角的椭圆的宽度(以像素为单位)。 + * @param ellipseHeight 用于绘制圆角的椭圆的高度(以像素为单位)。 (可选)如果未指定值,则默认值与为 ellipseWidth 参数提供的值相匹配。 + */ + drawRoundRect(x: number, y: number, width: number, height: number, ellipseWidth: number, ellipseHeight?: number): void; + /** + * 绘制一个圆。 + * @param x 圆心相对于父显示对象注册点的 x 位置(以像素为单位)。 + * @param y 相对于父显示对象注册点的圆心的 y 位置(以像素为单位)。 + * @param radius 圆的半径(以像素为单位)。 + */ + drawCircle(x: number, y: number, radius: number): void; + /** + * 绘制一个椭圆。 + * @param x 一个表示相对于父显示对象注册点的水平位置的数字(以像素为单位)。 + * @param y 一个表示相对于父显示对象注册点的垂直位置的数字(以像素为单位)。 + * @param width 矩形的宽度(以像素为单位)。 + * @param height 矩形的高度(以像素为单位)。 + */ + drawEllipse(x: number, y: number, width: number, height: number): void; + /** + * 绘制一段圆弧路径。圆弧路径的圆心在 (x, y) 位置,半径为 r ,根据anticlockwise (默认为顺时针)指定的方向从 startAngle 开始绘制,到 endAngle 结束。 + * @param x 圆弧中心(圆心)的 x 轴坐标。 + * @param y 圆弧中心(圆心)的 y 轴坐标。 + * @param radius 圆弧的半径。 + * @param startAngle 圆弧的起始点, x轴方向开始计算,单位以弧度表示。 + * 注意,必须在0~2π之间。 + * @param endAngle 圆弧的终点, 单位以弧度表示。 + * 注意,必须在0~2π之间。 + * @param anticlockwise 如果为 true,逆时针绘制圆弧,反之,顺时针绘制。 + */ + drawArc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise: boolean): void; + /** + * 绘制一段圆弧路径 + * @param x 圆弧中心(圆心)的 x 轴坐标。 + * @param y 圆弧中心(圆心)的 y 轴坐标。 + * @param radiusX 圆弧的半径 x。 + * @param radiusY 圆弧的半径 y。 + * @param startAngle 圆弧的起始点, x轴方向开始计算,单位以弧度表示。 + * 注意:必须为正数。 + * @param endAngle 圆弧的终点, 单位以弧度表示。 + * 注意:与startAngle差值必须在0~2π之间。 + * @param anticlockwise 如果为 true,逆时针绘制圆弧,反之,顺时针绘制。 + * 注意:如果为true,endAngle必须小于startAngle,反之必须大于。 + */ + private arcToBezier(x, y, radiusX, radiusY, startAngle, endAngle, anticlockwise?); + } +} +declare namespace egret { + /** + * Writes an error message to the console if the assertion is false. If the assertion is true, nothing will happen. + * @param assertion Any boolean expression. If the assertion is false, the message will get written to the console. + * @param message the message written to the console + * @param optionalParams the extra messages written to the console + * @language en_US + */ + /** + * 判断参数assertion是否为true,若为false则抛出异常并且在console输出相应信息,反之什么也不做。 + * @param assertion 一个 boolean 表达式,若结果为false,则抛出错误并输出信息。 + * @param message 要输出到控制台的信息 + * @param optionalParams 要输出到控制台的额外可选信息 + * @language zh_CN + */ + function assert(assertion?: boolean, message?: string, ...optionalParams: any[]): void; + /** + * Writes a warning message to the console. + * @param message the message written to the console + * @param optionalParams the extra messages written to the console + * @language en_US + */ + /** + * 输出一个警告信息到控制台。 + * @param message 要输出到控制台的信息 + * @param optionalParams 要输出到控制台的额外信息 + * @language zh_CN + */ + function warn(message?: any, ...optionalParams: any[]): void; + /** + * Writes an error message to the console. + * @param message the message written to the console + * @param optionalParams the extra messages written to the console + * @language en_US + */ + /** + * 输出一个错误信息到控制台。 + * @param message 要输出到控制台的信息 + * @param optionalParams 要输出到控制台的额外信息 + * @language zh_CN + */ + function error(message?: any, ...optionalParams: any[]): void; + /** + * Writes an message to the console. + * @param message the message written to the console + * @param optionalParams the extra messages written to the console + * @language en_US + */ + /** + * 输出一个日志信息到控制台。 + * @param message 要输出到控制台的信息 + * @param optionalParams 要输出到控制台的额外信息 + * @language zh_CN + */ + function log(message?: any, ...optionalParams: any[]): void; +} +/** + * @private + */ +declare namespace egret { + /** + * @private + */ + let fontMapping: {}; +} +/** + * @private + */ +declare namespace egret_native { + function readUpdateFileSync(filePath: any): any; + function readResourceFileSync(filePath: any): any; + function sendInfoToPlugin(info: string): void; + function receivedPluginInfo(info: string): void; + function nrInit(): void; + function nrDownloadBuffers(callback: (displayCmdBuffer: Float32Array) => void): void; + function nrSetRenderMode(mode: number): void; + function nrRenderDisplayObject(id: number, scale: number, useClip: boolean, clipX: number, clipY: number, clipW: number, clipH: number): void; + function nrRenderDisplayObject2(id: number, offsetX: number, offsetY: number, forHitTest: boolean): void; + function nrLocalToGlobal(id: number, localX: number, localY: number): string; + function nrGlobalToLocal(id: number, globalX: number, globalY: number): string; + function nrGetTextFieldWidth(id: number): number; + function nrGetTextFieldHeight(id: number): number; + function nrGetTextWidth(id: number): number; + function nrGetTextHeight(id: number): number; + function nrResize(width: number, height: number): void; + function nrSetCanvasScaleFactor(factor: number, scalex: number, scaley: number): void; + function nrUpdate(): void; + function nrRender(): void; + function nrSendTextFieldData(textFieldId: number, strData: string): void; + function nrUpdateCallbackList(dt: number): void; + function nrActiveBuffer(id: number, width: number, height: number): void; + function nrGetPixels(x: number, y: number, width: number, height: number, pixels: Uint8Array): void; + function nrGetCustomImageId(type: number): number; + function nrSetCustomImageData(customImageId: number, pvrtcData: any, width: any, height: any, mipmapsCount: any, format: any): void; + class NrNode { + constructor(id: number, type: number); + } +} +/** + * @private + */ +declare namespace egret_native { + let rootWebGLBuffer: egret.sys.RenderBuffer; + let forHitTest: boolean; + let addModuleCallback: (callback: Function, thisObj: any) => void; + let initNativeRender: () => void; + let updateNativeRender: () => void; + let activateBuffer: (buffer: egret.sys.RenderBuffer) => void; + let getJsCustomFilterVertexSrc: (key: any) => any; + let getJsCustomFilterFragSrc: (key: any) => any; + let getJsCustomFilterUniforms: (key: any) => any; + let nrABIVersion: number; + let nrMinEgretVersion: string; +} +declare namespace egret_native { + /** + * @private + */ + class NativeRenderSurface { + width: number; + height: number; + constructor(currRenderBuffer: any, w?: number, h?: number, root?: boolean); + resize(w: number, h: number): void; + } + /** + * @private + */ + class NativeBitmapData { + $init(): any; + $id: any; + } + /** + * @private + */ + class NativeDisplayObject { + id: number; + constructor(type: number); + setChildrenSortMode(mode: string): void; + addChildAt(childId: number, index: number): void; + removeChild(childId: number): void; + swapChild(index1: number, index2: number): void; + setX(value: number): void; + setY(value: number): void; + setRotation(value: number): void; + setScaleX(value: number): void; + setScaleY(value: number): void; + setSkewX(value: number): void; + setSkewY(value: number): void; + setAlpha(value: number): void; + setAnchorOffsetX(value: number): void; + setAnchorOffsetY(value: number): void; + setVisible(value: boolean): void; + setBlendMode(value: number): void; + setMaskRect(x: number, y: number, w: number, h: number): void; + setScrollRect(x: number, y: number, w: number, h: number): void; + setFilters(filters: Array): void; + static createFilter(filter: egret.Filter): void; + static setFilterPadding(filterId: number, paddingTop: number, paddingBottom: number, paddingLeft: number, paddingRight: number): void; + setMask(value: number): void; + static setSourceToNativeBitmapData(nativeBitmapData: egret_native.NativeBitmapData, source: any): any; + setTexture(texture: egret.Texture): void; + setBitmapDataToMesh(texture: egret.Texture): void; + setBitmapDataToParticle(texture: egret.Texture): void; + setWidth(value: number): void; + setHeight(value: number): void; + setCacheAsBitmap(value: boolean): void; + setBitmapFillMode(fillMode: string): void; + setScale9Grid(x: number, y: number, w: number, h: number): void; + setMatrix(a: number, b: number, c: number, d: number, tx: number, ty: number): void; + setIsTyping(value: boolean): void; + setDataToBitmapNode(id: number, texture: egret.Texture, arr: number[]): void; + setDataToMesh(vertexArr: number[], indiceArr: number[], uvArr: number[]): void; + static setDataToFilter(currFilter: egret.Filter): void; + static disposeNativeBitmapData(nativeBitmapData: egret_native.NativeBitmapData): void; + static disposeTextData(node: egret.TextField): void; + static disposeGraphicData(graphic: egret.Graphics): void; + setFontSize(value: number): void; + setLineSpacing(value: number): void; + setTextColor(value: number): void; + setTextFieldWidth(value: number): void; + setTextFieldHeight(value: number): void; + setFontFamily(value: string): void; + setTextFlow(textArr: Array): void; + setTextAlign(value: string): void; + setVerticalAlign(value: string): void; + setText(value: string): void; + setBold(value: boolean): void; + setItalic(value: boolean): void; + setWordWrap(value: boolean): void; + setMaxChars(value: number): void; + setType(value: string): void; + setStrokeColor(value: number): void; + setStroke(value: number): void; + setScrollV(value: number): void; + setMultiline(value: boolean): void; + setBorder(value: boolean): void; + setBorderColor(value: number): void; + setBackground(value: boolean): void; + setBackgroundColor(value: number): void; + setInputType(value: string): void; + setBeginFill(color: number, alpha?: number): void; + setBeginGradientFill(type: string, colors: number[], alphas: number[], ratios: number[], matrix: egret.Matrix): void; + setEndFill(): void; + setLineStyle(thickness?: number, color?: number, alpha?: number, pixelHinting?: boolean, scaleMode?: string, caps?: string, joints?: string, miterLimit?: number, lineDash?: number[]): void; + setDrawRect(x: number, y: number, width: number, height: number): void; + setDrawRoundRect(x: number, y: number, width: number, height: number, ellipseWidth: number, ellipseHeight?: number): void; + setDrawCircle(x: number, y: number, radius: number): void; + setDrawEllipse(x: number, y: number, width: number, height: number): void; + setMoveTo(x: number, y: number): void; + setLineTo(x: number, y: number): void; + setCurveTo(controlX: number, controlY: number, anchorX: number, anchorY: number): void; + setCubicCurveTo(controlX1: number, controlY1: number, controlX2: number, controlY2: number, anchorX: number, anchorY: number): void; + setDrawArc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void; + setGraphicsClear(): void; + } +} +/** + * @private + */ +declare namespace egret_native { + /** + * @private + */ + const enum NativeObjectType { + /** + * 容器 + */ + CONTAINER = 0, + /** + * 位图 + */ + BITMAP = 1, + /** + * 位图数据 + */ + BITMAP_DATA = 2, + /** + * 滤镜 + */ + FILTER = 6, + /** + * 文本 + */ + TEXT = 7, + /** + * 矢量绘图 + */ + GRAPHICS = 8, + /** + * 含一个适量绘图的容器 + */ + SPRITE = 9, + /** + * 粒子系统 + */ + PARTICLE_SYSTEM = 10, + /** + * 位图文本 + */ + BITMAP_TEXT = 11, + /** + * 网格 + */ + MESH = 12, + /** + * 舞台(根容器) + */ + STAGE = 13, + } +} +declare namespace egret { + /** + * @private + */ + interface MapLike { + [key: string]: T; + [key: number]: T; + } + /** + * @private + */ + function createMap(): MapLike; +} +declare namespace egret { + /** + * @class egret.GlowFilter + * @classdesc + * 使用 GlowFilter 类可以对显示对象应用发光效果。在投影滤镜的 distance 和 angle 属性设置为 0 时,发光滤镜与投影滤镜极为相似。 + * @extends egret.Filter + * @version Egret 3.1.4 + * @platform Web,Native + */ + class GlowFilter extends Filter { + /** + * @private + */ + $red: number; + /** + * @private + */ + $green: number; + /** + * @private + */ + $blue: number; + /** + * Initializes a new GlowFilter instance. + * @method egret.GlowFilter#constructor + * @param color {number} The color of the glow. Valid values are in the hexadecimal format 0xRRGGBB. The default value is 0xFF0000. + * @param alpha {number} The alpha transparency value for the color. Valid values are 0 to 1. For example, .25 sets a transparency value of 25%. The default value is 1. + * @param blurX {number} The amount of horizontal blur. Valid values are 0 to 255 (floating point). + * @param blurY {number} The amount of vertical blur. Valid values are 0 to 255 (floating point). + * @param strength {number} The strength of the imprint or spread. The higher the value, the more color is imprinted and the stronger the contrast between the glow and the background. Valid values are 0 to 255. + * @param quality {number} The number of times to apply the filter. + * @param inner {boolean} Specifies whether the glow is an inner glow. The value true indicates an inner glow. The default is false, an outer glow (a glow around the outer edges of the object). + * @param knockout {number} Specifies whether the object has a knockout effect. A value of true makes the object's fill transparent and reveals the background color of the document. The default value is false (no knockout effect). + * @version Egret 3.1.4 + * @platform Web + * @language en_US + */ + /** + * 初始化 GlowFilter 对象 + * @method egret.GlowFilter#constructor + * @param color {number} 光晕颜色,采用十六进制格式 0xRRGGBB。默认值为 0xFF0000。 + * @param alpha {number} 颜色的 Alpha 透明度值。有效值为 0 到 1。例如,0.25 设置透明度值为 25%。 + * @param blurX {number} 水平模糊量。有效值为 0 到 255(浮点)。 + * @param blurY {number} 垂直模糊量。有效值为 0 到 255(浮点)。 + * @param strength {number} 印记或跨页的强度。该值越高,压印的颜色越深,而且发光与背景之间的对比度也越强。有效值为 0 到 255。 + * @param quality {number} 应用滤镜的次数。暂未实现。 + * @param inner {boolean} 指定发光是否为内侧发光。值 true 指定发光是内侧发光。值 false 指定发光是外侧发光(对象外缘周围的发光)。 + * @param knockout {number} 指定对象是否具有挖空效果。值为 true 将使对象的填充变为透明,并显示文档的背景颜色。 + * @version Egret 3.1.4 + * @platform Web + * @language zh_CN + */ + constructor(color?: number, alpha?: number, blurX?: number, blurY?: number, strength?: number, quality?: number, inner?: boolean, knockout?: boolean); + /** + * @private + */ + $color: number; + /** + * The color of the glow. + * @version Egret 3.1.4 + * @platform Web + * @language en_US + */ + /** + * 光晕颜色。 + * @version Egret 3.1.4 + * @platform Web + * @language zh_CN + */ + color: number; + /** + * @private + */ + $alpha: number; + /** + * The alpha transparency value for the color. + * @version Egret 3.1.4 + * @platform Web + * @language en_US + */ + /** + * 颜色的 Alpha 透明度值。 + * @version Egret 3.1.4 + * @platform Web + * @language zh_CN + */ + alpha: number; + /** + * @private + */ + $blurX: number; + /** + * The amount of horizontal blur. + * @version Egret 3.1.4 + * @platform Web + * @language en_US + */ + /** + * 水平模糊量。 + * @version Egret 3.1.4 + * @platform Web + * @language zh_CN + */ + blurX: number; + /** + * @private + */ + $blurY: number; + /** + * The amount of vertical blur. + * @version Egret 3.1.4 + * @platform Web + * @language en_US + */ + /** + * 垂直模糊量。 + * @version Egret 3.1.4 + * @platform Web + * @language zh_CN + */ + blurY: number; + /** + * @private + */ + $strength: number; + /** + * The strength of the imprint or spread. + * @version Egret 3.1.4 + * @platform Web + * @language en_US + */ + /** + * 印记或跨页的强度。 + * @version Egret 3.1.4 + * @platform Web + * @language zh_CN + */ + strength: number; + /** + * @private + */ + $quality: number; + /** + * The number of times to apply the filter. + * @version Egret 3.1.4 + * @platform Web + * @language en_US + */ + /** + * 应用滤镜的次数。 + * @version Egret 3.1.4 + * @platform Web + * @language zh_CN + */ + quality: number; + /** + * @private + */ + $inner: boolean; + /** + * Specifies whether the glow is an inner glow. + * @version Egret 3.1.4 + * @platform Web + * @language en_US + */ + /** + * 指定发光是否为内侧发光。 + * @version Egret 3.1.4 + * @platform Web + * @language zh_CN + */ + inner: boolean; + /** + * @private + */ + $knockout: boolean; + /** + * Specifies whether the object has a knockout effect. + * @version Egret 3.1.4 + * @platform Web + * @language en_US + */ + /** + * 指定对象是否具有挖空效果。 + * @version Egret 3.1.4 + * @platform Web + * @language zh_CN + */ + knockout: boolean; + /** + * @private + */ + $toJson(): string; + protected updatePadding(): void; + } +} +declare namespace egret { + /** + * The Stage class represents the main drawing area.The Stage object is not globally accessible. You need to access + * it through the stage property of a DisplayObject instance.
+ * The Stage class has several ancestor classes — Sprite, DisplayObject, and EventDispatcher — from which it inherits + * properties and methods. Many of these properties and methods are inapplicable to Stage objects. + * @event egret.Event.RESIZE Dispatched when the stageWidth or stageHeight property of the Stage object is changed. + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/Stage.ts + * @language en_US + */ + /** + * Stage 类代表主绘图区。 + * 可以利用 DisplayObject 实例的 stage 属性进行访问。
+ * Stage 类具有多个祖代类: Sprite、DisplayObject 和 EventDispatcher,属性和方法便是从这些类继承而来的。 + * 从这些继承的许多属性和方法不适用于 Stage 对象。 + * @event egret.Event.RESIZE 当stageWidth或stageHeight属性发生改变时调度 + * @event egret.Event.DEACTIVATE 当stage失去焦点后调度 + * @event egret.Event.ACTIVATE 当stage获得焦点后调度 + * + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/Stage.ts + * @language zh_CN + */ + class Stage extends DisplayObjectContainer { + /** + * @private + * Stage不许允许自行实例化 + * @version Egret 2.4 + * @platform Web,Native + */ + constructor(); + protected createNativeDisplayObject(): void; + /** + * Gets and sets the frame rate of the stage. The frame rate is defined as frames per second. Valid range for the + * frame rate is from 0.01 to 1000 frames per second.
+ * Note: setting the frameRate property of one Stage object changes the frame rate for all Stage objects + * @default 30 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 获取并设置舞台的帧速率。帧速率是指每秒显示的帧数。帧速率的有效范围为每秒 0.01 到 60 个帧。
+ * 注意: 修改任何一个Stage的frameRate属性都会同步修改其他Stage的帧率。 + * @default 30 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + frameRate: number; + /** + * @private + */ + $stageWidth: number; + /** + * Indicates the width of the stage, in pixels. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 舞台的当前宽度(以像素为单位)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly stageWidth: number; + /** + * @private + */ + $stageHeight: number; + /** + * Indicates the height of the stage, in pixels. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 舞台的当前高度(以像素为单位)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly stageHeight: number; + /** + * After you call the invalidate() method, when the display list is next rendered, the Egret runtime sends a render + * event to each display object that has registered to listen for the render event. You must call the invalidate() + * method each time you want the Egret runtime to send render events. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 调用 invalidate() 方法后,在显示列表下次呈现时,Egret 会向每个已注册侦听 Event.RENDER 事件的显示对象发送一个 Event.RENDER 事件。 + * 每次您希望 Egret 发送 Event.RENDER 事件时,都必须调用 invalidate() 方法。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + invalidate(): void; + /** + * @deprecated + */ + registerImplementation(interfaceName: string, instance: any): void; + /** + * @deprecated + */ + getImplementation(interfaceName: string): any; + /** + * @private + * 设备屏幕引用 + */ + $screen: egret.sys.Screen; + $scaleMode: string; + /** + * A StageScaleMode class that specifies which scale mode to use. The following are valid values:
+ *
    + *
  • StageScaleMode.EXACT_FIT -- The entire application be visible in the specified area without trying to preserve the original aspect ratio. Distortion can occur, the application may be stretched or compressed.
  • + *
  • StageScaleMode.SHOW_ALL -- The entire application is visible in the specified area without distortion while maintaining the application of the original aspect ratio. Applications may display border.
  • + *
  • StageScaleMode.NO_SCALE -- The size of the entire application is fixed, so that even if the size of the player window changes, it remains unchanged. If the player window is smaller than the content, it may do some trimming.
  • + *
  • StageScaleMode.NO_BORDER -- Keep the original aspect ratio scaling application content, after scaling a narrow direction of application content to fill the viewport players on both sides in the other direction may exceed the viewport and the player is cut.
  • + *
  • StageScaleMode.FIXED_WIDTH -- Keep the original aspect ratio scaling application content, after scaling application content in the horizontal and vertical directions to fill the viewport player, but only to keep the contents of the original application constant width, height may change.
  • + *
  • StageScaleMode.FIXED_HEIGHT -- Keep the original aspect ratio scaling application content, after scaling application content in the horizontal and vertical directions to fill the viewport player, but only to keep the contents of the original application constant height, width may change.
  • + *
+ * @default egret.StageScaleMode.SHOW_ALL + * @language en_US + */ + /** + * 一个 StageScaleMode 类中指定要使用哪种缩放模式的值。以下是有效值:
+ *
    + *
  • StageScaleMode.EXACT_FIT -- 整个应用程序在指定区域中可见,但不尝试保持原始高宽比。可能会发生扭曲,应用程序可能会拉伸或压缩显示。
  • + *
  • StageScaleMode.SHOW_ALL -- 整个应用程序在指定区域中可见,且不发生扭曲,同时保持应用程序的原始高宽比。应用程序的可能会显示边框。
  • + *
  • StageScaleMode.NO_SCALE -- 整个应用程序的大小固定,因此,即使播放器窗口的大小更改,它也会保持不变。如果播放器窗口比内容小,则可能进行一些裁切。
  • + *
  • StageScaleMode.NO_BORDER -- 保持原始宽高比缩放应用程序内容,缩放后应用程序内容的较窄方向填满播放器视口,另一个方向的两侧可能会超出播放器视口而被裁切。
  • + *
  • StageScaleMode.FIXED_WIDTH -- 保持原始宽高比缩放应用程序内容,缩放后应用程序内容在水平和垂直方向都填满播放器视口,但只保持应用程序内容的原始宽度不变,高度可能会改变。
  • + *
  • StageScaleMode.FIXED_HEIGHT -- 保持原始宽高比缩放应用程序内容,缩放后应用程序内容在水平和垂直方向都填满播放器视口,但只保持应用程序内容的原始高度不变,宽度可能会改变。
  • + *
+ * @default egret.StageScaleMode.SHOW_ALL + * @language zh_CN + */ + scaleMode: string; + $orientation: string; + /** + * Horizontal and vertical screen display screen, can only be set under the current Native in the configuration file. A egret.OrientationMode class that specifies which display mode to use. The following are valid values:
+ *
    + *
  • egret.OrientationMode.AUTO -- Always follow the direction of application display screen, always guaranteed by the look down.
  • + *
  • egret.OrientationMode.PORTRAIT -- Applications remain portrait mode, namely horizontal screen look, the screen from left to right.
  • + *
  • egret.OrientationMode.LANDSCAPE -- Applications remain horizontal screen mode, namely vertical screen, the screen from right to left.
  • + *
  • egret.OrientationMode.LANDSCAPE_FLIPPED -- Applications remain horizontal screen mode, namely vertical screen, the screen from left to right.
  • + *
+ * @platform Web + * @version 2.4 + * @language en_US + */ + /** + * 屏幕横竖屏显示方式,目前 Native 下只能在配置文件里设置。一个 egret.OrientationMode 类中指定要使用哪种显示方式。以下是有效值:
+ *
    + *
  • egret.OrientationMode.AUTO -- 应用始终跟随屏幕的方向显示,始终保证由上往下看。
  • + *
  • egret.OrientationMode.PORTRAIT -- 应用始终保持竖屏模式,即横屏看时,屏幕由左往右看。
  • + *
  • egret.OrientationMode.LANDSCAPE -- 应用始终保持横屏模式,即竖屏看时,屏幕显示由右往左。
  • + *
  • egret.OrientationMode.LANDSCAPE_FLIPPED -- 应用始终保持横屏模式,即竖屏看时,屏幕显示由左往右。
  • + *
+ * @platform Web + * @version 2.4 + * @language zh_CN + */ + orientation: string; + /** + * Draw texture zoom ratio + * @default 1 + * @language en_US + */ + /** + * 绘制纹理的缩放比率,默认值为1 + * @default 1 + * @language zh_CN + */ + textureScaleFactor: number; + $maxTouches: number; + /** + * Set the number of screens can simultaneously touch. Above this amount will not be triggered in response. + * @default 99 + * @language en_US + */ + /** + * 设置屏幕同时可以触摸的数量。高于这个数量将不会被触发响应。 + * @default 99 + * @language zh_CN + */ + maxTouches: number; + /** + * Set resolution size + * @param width width + * @param height height + * @version Egret 2.5.5 + * @platform Web,Native + * @language en_US + */ + /** + * 设置分辨率尺寸 + * @param width 宽度 + * @param height 高度 + * @version Egret 2.5.5 + * @platform Web,Native + * @language zh_CN + */ + setContentSize(width: number, height: number): void; + } +} +declare namespace egret { + /** + * A class that provides constant values for visual blend mode effects. These constants are used in the blendMode + * property of the DisplayObject class. + * @see egret.DisplayObject#blendMode + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/BlendMode.ts + * @see http://edn.egret.com/cn/docs/page/108 显示容器的概念与实现 + * @language en_US + */ + /** + * 提供混合模式可视效果的常量值的类,通常用于 DisplayObject 的 blendMode 属性上。 + * @see egret.DisplayObject#blendMode + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/BlendMode.ts + * @see http://edn.egret.com/cn/docs/page/108 显示容器的概念与实现 + * @language zh_CN + */ + class BlendMode { + /** + * The display object appears in front of the background. Pixel values of the display object override the pixel + * values of the background. Where the display object is transparent, the background is visible. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 该显示对象出现在背景前面。显示对象的像素值会覆盖背景的像素值。在显示对象为透明的区域,背景是可见的。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static NORMAL: string; + /** + * Adds the values of the constituent colors of the display object to the colors of its background, applying a + * ceiling of 0xFF. This setting is commonly used for animating a lightening dissolve between two objects.
+ * For example, if the display object has a pixel with an RGB value of 0xAAA633, and the background pixel has an + * RGB value of 0xDD2200, the resulting RGB value for the displayed pixel is 0xFFC833 (because 0xAA + 0xDD > 0xFF, + * 0xA6 + 0x22 = 0xC8, and 0x33 + 0x00 = 0x33). + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将显示对象的原色值添加到它的背景颜色中,上限值为 0xFF。此设置通常用于使两个对象间的加亮溶解产生动画效果。
+ * 例如,如果显示对象的某个像素的 RGB 值为 0xAAA633,背景像素的 RGB 值为 0xDD2200,则显示像素的结果 RGB 值为 0xFFC833 + * (因为 0xAA + 0xDD > 0xFF,0xA6 + 0x22 = 0xC8,且 0x33 + 0x00 = 0x33)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static ADD: string; + /** + * Erases the background based on the alpha value of the display object. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 根据显示对象的 Alpha 值擦除背景。Alpha 值不为0的区域将被擦除。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static ERASE: string; + } +} +declare namespace egret.sys { + /** + * @private + * 转换 blendMode 字符串为数字。 + */ + function blendModeToNumber(blendMode: string): number; + /** + * @private + * 转换数字为 blendMode 字符串。 + */ + function numberToBlendMode(blendMode: number): string; +} +declare namespace egret { + /** + * The ChildrenSortMode class defines a pattern enumeration for children sort mode of egret.DisplayObjectContainer. + * @version Egret 5.2.19 + * @platform Native + * @language en_US + */ + /** + * BitmapFillMode 类定义egret.DisplayObjectContainer的子项目排序方式。 + * @version Egret 5.2.19 + * @platform Native + * @language zh_CN + */ + const ChildrenSortMode: { + DEFAULT: string; + INCREASE_Y: string; + DECREASE_Y: string; + }; +} +declare namespace egret { + /** + * The CapsStyle class is an enumeration of constant values that specify the caps style to use in drawing lines. + * The constants are provided for use as values in the caps parameter of the egret.Graphics.lineStyle() method. + * @see egret.Graphics#lineStyle() + * @version Egret 2.5 + * @platform Web,Native + * @language en_US + */ + /** + * CapsStyle 类是可指定在绘制线条中使用的端点样式的常量值枚举。常量可用作 egret.Graphics.lineStyle() 方法的 caps 参数中的值。 + * @see egret.Graphics#lineStyle() + * @version Egret 2.5 + * @platform Web,Native + * @language zh_CN + */ + const CapsStyle: { + NONE: string; + ROUND: string; + SQUARE: string; + }; +} +declare namespace egret { + /** + * @private + */ + class WebGLUtils { + static compileProgram(gl: WebGLRenderingContext, vertexSrc: string, fragmentSrc: string): WebGLProgram; + static compileFragmentShader(gl: WebGLRenderingContext, shaderSrc: string): WebGLShader; + static compileVertexShader(gl: WebGLRenderingContext, shaderSrc: string): WebGLShader; + private static _compileShader(gl, shaderSrc, shaderType); + private static canUseWebGL; + static checkCanUseWebGL(): boolean; + static deleteWebGLTexture(webglTexture: WebGLTexture): void; + /** + * inspired by pixi.js + */ + static premultiplyTint(tint: number, alpha: number): number; + } +} +declare namespace egret { + /** + * The EventPhase class provides values for the eventPhase property of the Event class. + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/events/EventPhase.ts + * @language en_US + */ + /** + * EventPhase 可为 Event 类的 eventPhase 属性提供值。 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/events/EventPhase.ts + * @language zh_CN + */ + const enum EventPhase { + /** + * The capturing phase, which is the first phase of the event flow. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 捕获阶段。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + CAPTURING_PHASE = 1, + /** + * The target phase, which is the second phase of the event flow. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 目标阶段,是事件流的第二个阶段。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + AT_TARGET = 2, + /** + * The bubbling phase, which is the third phase of the event flow. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 冒泡阶段。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + BUBBLING_PHASE = 3, + } +} +declare namespace egret { + /** + * When the user changes the focus from one object in the display list to another object, the object dispatches a FocusEvent object. Currently only supports input text. + * Focus events: FocusEvent.FOCUS_IN FocusEvent.FOCUS_OUT + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 用户将焦点从显示列表中的一个对象更改到另一个对象时,对象将调度 FocusEvent 对象。目前只支持输入文本。 + * 焦点事件:FocusEvent.FOCUS_IN FocusEvent.FOCUS_OUT + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + class FocusEvent extends egret.Event { + /** + * Gets focus + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 获得焦点 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static FOCUS_IN: "focusIn"; + /** + * Loses focus + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 失去焦点 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static FOCUS_OUT: "focusOut"; + /** + * Create a egret.FocusEvent objects + * @param type The type of the event, accessible as Event.type. + * @param bubbles Determines whether the Event object participates in the bubbling stage of the event flow. The default value is false. + * @param cancelable Determines whether the Event object can be canceled. The default values is false. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个 egret.FocusEvent 对象 + * @param type 事件的类型,可以作为 Event.type 访问。 + * @param bubbles 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。 + * @param cancelable 确定是否可以取消 Event 对象。默认值为 false。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(type: string, bubbles?: boolean, cancelable?: boolean); + } +} +declare namespace egret { + interface Geolocation { + addEventListener(type: "ioError", listener: (this: Z, e: GeolocationEvent) => void, thisObject: Z, useCapture?: boolean, priority?: number): any; + addEventListener(type: string, listener: Function, thisObject: any, useCapture?: boolean, priority?: number): any; + } + /** + * The GeolocationEvent represents the position and altitude of the device on Earth, + * and show errors occurred while getting the location of the device. + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/sensor/Geolocation.ts + * @see http://edn.egret.com/cn/docs/page/662 获取位置信息 + * @language en_US + */ + /** + * GeolocationEvent 提供设备的地理位置信息和获取位置时发生的错误信息 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/sensor/Geolocation.ts + * @see http://edn.egret.com/cn/docs/page/662 获取位置信息 + * @language zh_CN + */ + class GeolocationEvent extends Event { + /** + * The acquisition of the location information failed because of app don't have permission. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 由于用户拒绝访问位置信息,获取位置信息失败 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static PERMISSION_DENIED: string; + /** + * The acquisition of the location failed because at least one internal source of position returned an internal error. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 设备位置服务不可用或者超时等原因没有得到位置信息 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static UNAVAILABLE: string; + /** + * The position's longitude in decimal degrees. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 当前位置的经度信息 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + longitude: number; + /** + * The position's latitude in decimal degrees. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 当前位置的纬度信息 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + latitude: number; + /** + * The velocity of the device in meters per second. This value can be null. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 当前设备的速度 单位是 米/秒,这个值可能为 null + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + speed: number; + /** + * The direction in which the device is traveling. This value, specified in degrees, + * indicates how far off from heading due north the device is. 0 degrees represents + * true true north, and the direction is determined clockwise (which means that east + * is 90 degrees and west is 270 degrees). If speed is 0, heading is NaN. If the + * device is unable to provide heading information, this value is null. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示设备正在前进的方向,单位是度。heading 表示从正北开始顺时针旋转到当前方向的角度, + * 比如正东是 90 度,正西是 270 度,如果 speed 是 0,heading 为 NaN。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + heading: number; + /** + * The position's altitude in metres, relative to sea level. + * This value can be null if the implementation cannot provide the data. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 该位置的海拔信息,如果设备没有实现这个属性时,这个值有可能为 null + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + altitude: number; + /** + * The accuracy of the latitude and longitude properties, expressed in meters. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 经纬度的准确性,单位是米 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + accuracy: number; + /** + * The accuracy of the altitude expressed in meters. This value can be null. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 该位置海拔信息的准确性,单位是米,这个值有可能为 null + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + altitudeAccuracy: number; + /** + * The type of error occurred while get the location of the device. The value could be: + * @see egret.GeolocationEvent.PERMISSION_DENIED + * @see egret.GeolocationEvent.UNAVAILABLE + * + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 获取位置信息错误时的错误类型。值可能为: + * @see egret.GeolocationEvent.PERMISSION_DENIED + * @see egret.GeolocationEvent.UNAVAILABLE + * + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + errorType: string; + /** + * The error message occurred while get the location of the device. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 获取位置信息错误的错误信息 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + errorMessage: string; + } +} +declare namespace egret { + /** + * When a network request returns an HTTP status code, the application dispatches HTTPStatusEvent objects. + * Before error or completion events will always send HTTPStatusEvent object. HTTPStatusEvent object does not necessarily indicate an error condition; it simply reflects the HTTP status code provided by the network stack (if any). + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 在网络请求返回 HTTP 状态代码时,应用程序将调度 HTTPStatusEvent 对象。 + * 在错误或完成事件之前,将始终发送 HTTPStatusEvent 对象。HTTPStatusEvent 对象不一定表示错误条件;它仅反映网络堆栈提供的 HTTP 状态代码(如果有的话)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + class HTTPStatusEvent extends Event { + /** + * HTTPStatusEvent.HTTP_STATUS constant defines the value of the type property httpStatus event object. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * HTTPStatusEvent.HTTP_STATUS 常量定义 httpStatus 事件对象的 type 属性值。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static HTTP_STATUS: "httpStatus"; + /** + * Create a egret.HTTPStatusEvent objects + * @param type The type of the event, accessible as Event.type. + * @param bubbles Determines whether the Event object participates in the bubbling stage of the event flow. The default value is false. + * @param cancelable Determines whether the Event object can be canceled. The default values is false. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个 egret.HTTPStatusEvent 对象 + * @param type 事件的类型,可以作为 Event.type 访问。 + * @param bubbles 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。 + * @param cancelable 确定是否可以取消 Event 对象。默认值为 false。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(type: string, bubbles?: boolean, cancelable?: boolean); + /** + * @private + */ + private _status; + /** + * he server returns the HTTP status code. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 由服务器返回的 HTTP 状态代码。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly status: number; + /** + * EventDispatcher object using the specified event object thrown Event. The objects will be thrown in the object cache pool for the next round robin. + * @param target {egret.IEventDispatcher} Distribute event target + * @param status {number} The server returns the HTTP status code + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 使用指定的EventDispatcher对象来抛出Event事件对象。抛出的对象将会缓存在对象池上,供下次循环复用。 + * @param target {egret.IEventDispatcher} 派发事件目标 + * @param status {number} 由服务器返回的 HTTP 状态代码 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static dispatchHTTPStatusEvent(target: IEventDispatcher, status: number): boolean; + } +} +declare namespace egret { + /** + * The IEventDispatcher interface defines methods for adding or removing event listeners, checks whether specific types + * of event listeners are registered, and dispatches events. Event targets are an important part of the Egret event model. + * The event target serves as the focal point for how events flow through the display list hierarchy. When an event + * such as a touch tap occurs, an event object is dispatched into the event flow from the root of the display list. + * The event object makes a round-trip journey to the event target, which is conceptually divided into three phases:
+ * the capture phase includes the journey from the root to the last node before the event target's node; the target + * phase includes only the event target node; and the bubbling phase includes any subsequent nodes encountered on the + * return trip to the root of the display list.In general, the easiest way for a user-defined class to gain event + * dispatching capabilities is to extend EventDispatcher. If this is impossible (that is, if the class is already + * extending another class), you can instead implement the IEventDispatcher interface, create an EventDispatcher member, + * and write simple hooks to route calls into the aggregated EventDispatcher. + * @see egret.EventDispatcher + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/events/IEventDispatcher.ts + * @language en_US + */ + /** + * IEventDispatcher 接口定义用于添加或删除事件侦听器的方法,检查是否已注册特定类型的事件侦听器,并调度事件。 + * 事件目标是 Egret 事件模型的重要组成部分。事件目标是事件如何通过显示列表层次结构这一问题的焦点。当发生触摸轻拍事件时, + * 会将事件对象调度到从显示列表根开始的事件流中。事件对象进行到事件目标的往返行程,在概念上,此往返行程被划分为三个阶段:
+ * 捕获阶段包括从根到事件目标节点之前的最后一个节点的行程,目标阶段仅包括事件目标节点,冒泡阶段包括到显示列表的根的回程上遇到的任何后续节点。 + * 通常,使用户定义的类能够调度事件的最简单方法是扩展 EventDispatcher。如果无法扩展(即,如果该类已经扩展了另一个类), + * 则可以实现 IEventDispatcher 接口,创建 EventDispatcher 成员,并编写一些简单的挂钩,将调用连接到聚合的 EventDispatcher 中。 + * @see egret.EventDispatcher + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/events/IEventDispatcher.ts + * @language zh_CN + */ + interface IEventDispatcher extends HashObject { + /** + * Registers an event listener object with an EventDispatcher object so that the listener receives notification of an + * event. You can register event listeners on all nodes in the display list for a specific type of event, phase, + * and priority.After you successfully register an event listener, you cannot change its priority through additional + * calls to on(). To change a listener's priority, you must first call removeEventListener(). Then you can register the + * listener again with the new priority level.After the listener is registered, subsequent calls to on() with a + * different value for either type or useCapture result in the creation of a separate listener registration.
+ * When you no longer need an event listener, remove it by calling EventDispatcher.removeEventListener(); otherwise, memory + * problems might result. Objects with registered event listeners are not automatically removed from memory because + * the garbage collector does not remove objects that still have references.Copying an EventDispatcher instance does + * not copy the event listeners attached to it. (If your newly created node needs an event listener, you must attach + * the listener after creating the node.) However, if you move an EventDispatcher instance, the event listeners attached + * to it move along with it.If the event listener is being registered on a node while an event is also being processed + * on this node, the event listener is not triggered during the current phase but may be triggered during a later phase + * in the event flow, such as the bubbling phase.If an event listener is removed from a node while an event is being + * processed on the node, it is still triggered by the current actions. After it is removed, the event listener is + * never invoked again (unless it is registered again for future processing). + * @param type The type of event. + * @param listener The listener function that processes the event. This function must accept an event object as + * its only parameter and must return nothing, as this example shows: function(evt:Event):void The function can + * have any name. + * @param thisObject the listener function's "this" + * @param useCapture Determines whether the listener works in the capture phase or the bubbling phases. If useCapture + * is set to true, the listener processes the event only during the capture phase and not in the bubbling phase. + * If useCapture is false, the listener processes the event only during the bubbling phase. To listen for the event + * in all three phases, call on() twice, once with useCapture set to true, then again with useCapture set to false. + * @param priority The priority level of the event listener. Priorities are designated by a integer. The higher + * the number, the higher the priority. All listeners with priority n are processed before listeners of priority n-1. + * If two or more listeners share the same priority, they are processed in the order in which they were added. + * The default priority is + * @see #once() + * @see #removeEventListener() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。可以为特定类型的事件、阶段和优先级在显示列表的所有节 + * 点上注册事件侦听器。成功注册一个事件侦听器后,无法通过额外调用 on() 来更改其优先级。要更改侦听器的优先级,必须 + * 先调用 removeEventListener()。然后,可以使用新的优先级再次注册该侦听器。注册该侦听器后,如果继续调用具有不同 type 或 useCapture + * 值的 on(),则会创建单独的侦听器注册。
+ * 如果不再需要某个事件侦听器,可调用 EventDispatcher.removeEventListener() + * 删除它;否则会产生内存问题。由于垃圾回收器不会删除仍包含引用的对象,因此不会从内存中自动删除使用已注册事件侦听器的对象。复制 + * EventDispatcher 实例时并不复制其中附加的事件侦听器。(如果新近创建的节点需要一个事件侦听器,必须在创建该节点后附加该侦听器。) + * 但是,如果移动 EventDispatcher 实例,则其中附加的事件侦听器也会随之移动。如果在正在处理事件的节点上注册事件侦听器,则不会在当 + * 前阶段触发事件侦听器,但会在事件流的稍后阶段触发,如冒泡阶段。如果从正在处理事件的节点中删除事件侦听器,则该事件侦听器仍由当前操 + * 作触发。删除事件侦听器后,决不会再次调用该事件侦听器(除非再次注册以备将来处理)。 + * @param type 事件的类型。 + * @param listener 处理事件的侦听器函数。此函数必须接受 Event 对象作为其唯一的参数,并且不能返回任何结果, + * 如下面的示例所示: function(evt:Event):void 函数可以有任何名称。 + * @param thisObject 侦听函数绑定的this对象 + * @param useCapture 确定侦听器是运行于捕获阶段还是运行于冒泡阶段。如果将 useCapture 设置为 true, + * 则侦听器只在捕获阶段处理事件,而不在冒泡阶段处理事件。如果 useCapture 为 false,则侦听器只在冒泡阶段处理事件。 + * 要在两个阶段都侦听事件,请调用 on() 两次:一次将 useCapture 设置为 true,一次将 useCapture 设置为 false。 + * @param priority 事件侦听器的优先级。优先级由一个带符号的整数指定。数字越大,优先级越高。优先级为 n 的所有侦听器会在 + * 优先级为 n -1 的侦听器之前得到处理。如果两个或更多个侦听器共享相同的优先级,则按照它们的添加顺序进行处理。默认优先级为 0。 + * @see #once() + * @see #removeEventListener() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + addEventListener(type: string, listener: Function, thisObject: any, useCapture?: boolean, priority?: number): void; + /** + * Registers an event listener object with an EventDispatcher object so that the listener receives notification of an + * event. Different from the on() method,the listener receives notification only once,and then it will be removed + * automatically. + * @param type The type of event. + * @param listener The listener function that processes the event. This function must accept an event object as + * its only parameter and must return nothing, as this example shows: function(evt:Event):void The function can + * have any name. + * @param thisObject the listener function's "this" + * @param useCapture Determines whether the listener works in the capture phase or the bubbling phases. If useCapture + * is set to true, the listener processes the event only during the capture phase and not in the bubbling phase. + * If useCapture is false, the listener processes the event only during the bubbling phase. To listen for the event + * in all three phases, call on() twice, once with useCapture set to true, then again with useCapture set to false. + * @param priority The priority level of the event listener. Priorities are designated by a integer. The higher + * the number, the higher the priority. All listeners with priority n are processed before listeners of priority n-1. + * If two or more listeners share the same priority, they are processed in the order in which they were added. + * The default priority is + * @see #on() + * @see #removeEventListener() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 添加仅回调一次的事件侦听器,此方法与on()方法不同,on()方法会持续产生回调,而此方法在第一次回调时就会自动移除监听。 + * @param type 事件的类型。 + * @param listener 处理事件的侦听器函数。此函数必须接受 Event 对象作为其唯一的参数,并且不能返回任何结果, + * 如下面的示例所示: function(evt:Event):void 函数可以有任何名称。 + * @param thisObject 侦听函数绑定的this对象 + * @param useCapture 确定侦听器是运行于捕获阶段还是运行于冒泡阶段。如果将 useCapture 设置为 true, + * 则侦听器只在捕获阶段处理事件,而不在冒泡阶段处理事件。如果 useCapture 为 false,则侦听器只在冒泡阶段处理事件。 + * 要在两个阶段都侦听事件,请调用 once() 两次:一次将 useCapture 设置为 true,一次将 useCapture 设置为 false。 + * @param priority 事件侦听器的优先级。优先级由一个带符号整数指定。数字越大,优先级越高。优先级为 n 的所有侦听器会在 + * 优先级为 n -1 的侦听器之前得到处理。如果两个或更多个侦听器共享相同的优先级,则按照它们的添加顺序进行处理。默认优先级为 0。 + * @see #on() + * @see #removeEventListener() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + once(type: string, listener: Function, thisObject: any, useCapture?: boolean, priority?: number): void; + /** + * Removes a listener from the EventDispatcher object. If there is no matching listener registered with the + * EventDispatcher object, a call to this method has no effect. + * @param type The type of event. + * @param listener The listener object to remove. + * @param thisObject the listener function's "this" + * @param useCapture Specifies whether the listener was registered for the capture phase or the bubbling phases. + * If the listener was registered for both the capture phase and the bubbling phases, two calls to removeEventListener() + * are required to remove both: one call with useCapture set to true, and another call with useCapture set to false. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从 EventDispatcher 对象中删除侦听器。如果没有向 EventDispatcher 对象注册任何匹配的侦听器,则对此方法的调用没有任何效果。 + * @param type 事件的类型。 + * @param listener 要删除的侦听器对象 + * @param thisObject 侦听函数绑定的this对象 + * @param useCapture 指出是为捕获阶段还是为冒泡阶段注册了侦听器。如果为捕获阶段以及冒泡阶段注册了侦听器,则需要对 + * removeEventListener() 进行两次调用才能将这两个侦听器删除:一次调用将 useCapture 设置为 true,另一次调用将 useCapture 设置为 false。。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + removeEventListener(type: string, listener: Function, thisObject: any, useCapture?: boolean): void; + /** + * Checks whether the EventDispatcher object has any listeners registered for a specific type of event. This allows + * you to determine where an EventDispatcher object has altered handling of an event type in the event flow hierarchy. + * To determine whether a specific event type will actually trigger an event listener, use IEventDispatcher.willTrigger(). + * The difference between hasEventListener() and willTrigger() is that hasEventListener() examines only the object to + * which it belongs, whereas willTrigger() examines the entire event flow for the event specified by the type parameter. + * @param type The type of event. + * @returns A value of true if a listener of the specified type is registered; false otherwise. + * @see #willTrigger() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。这样,您就可以确定 EventDispatcher 对象在事件流层次结构中的哪个 + * 位置改变了对事件类型的处理。要确定特定事件类型是否确实会触发事件侦听器,请使用 IEventDispatcher.willTrigger()。hasEventListener() + * 与 willTrigger() 的区别是:hasEventListener() 只检查它所属的对象,而 willTrigger() 检查整个事件流以查找由 type 参数指定的事件。 + * @param type 事件的类型。 + * @returns 如果指定类型的侦听器已注册,则值为 true;否则,值为 false。 + * @see #willTrigger() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + hasEventListener(type: string): boolean; + /** + * Dispatches an event into the event flow. The event target is the EventDispatcher object upon which dispatchEvent() is called. + * @param event The event object dispatched into the event flow. + * @returns A value of true unless preventDefault() is called on the event, in which case it returns false. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将事件分派到事件流中。事件目标是对其调用 dispatchEvent() 方法的 EventDispatcher 对象。 + * @param event 调度到事件流中的 Event 对象。 + * @returns 如果成功调度了事件,则值为 true。值 false 表示失败或对事件调用了 preventDefault()。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + dispatchEvent(event: Event): boolean; + /** + * Checks whether an event listener is registered with this EventDispatcher object or any of its ancestors for the + * specified event type. This method returns true if an event listener is triggered during any phase of the event + * flow when an event of the specified type is dispatched to this EventDispatcher object or any of its descendants. + * @param type The type of event. + * @returns A value of true if a listener of the specified type will be triggered; false otherwise. + * @see #hasEventListener() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。将指定类型的事件调度给此 + * EventDispatcher 对象或其任一后代时,如果在事件流的任何阶段触发了事件侦听器,则此方法返回 true。 + * hasEventListener() 与 willTrigger() 方法的区别是:hasEventListener() 只检查它所属的对象, + * 而 willTrigger() 方法检查整个事件流以查找由 type 参数指定的事件。 + * @param type 事件类型 + * @returns 是否注册过监听器,如果注册过返回true,反之返回false + * @see #hasEventListener() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + willTrigger(type: string): boolean; + } +} +declare namespace egret { + interface HttpRequest { + addEventListener(type: "ioError", listener: (this: Z, e: IOErrorEvent) => void, thisObject: Z, useCapture?: boolean, priority?: number): any; + addEventListener(type: string, listener: Function, thisObject: any, useCapture?: boolean, priority?: number): any; + } + /** + * @classdesc IO流事件,当错误导致输入或输出操作失败时调度 IOErrorEvent 对象。 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/events/IOErrorEvent.ts + * @language en_US + */ + /** + * @classdesc IO流事件,当错误导致输入或输出操作失败时调度 IOErrorEvent 对象。 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/events/IOErrorEvent.ts + * @language zh_CN + */ + class IOErrorEvent extends Event { + /** + * io error + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * io发生错误 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static IO_ERROR: "ioError"; + /** + * Create a egret.IOErrorEvent objects + * @param type {string} Type of event, accessible as Event.type. + * @param bubbles {boolean} Determines whether the Event object participates in the bubbling stage of the event flow. The default value is false. + * @param cancelable {boolean} Determine whether the Event object can be canceled. The default value is false. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个 egret.IOErrorEvent 对象 + * @param type {string} 事件的类型,可以作为 Event.type 访问。 + * @param bubbles {boolean} 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。 + * @param cancelable {boolean} 确定是否可以取消 Event 对象。默认值为 false。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(type: string, bubbles?: boolean, cancelable?: boolean); + /** + * EventDispatcher object using the specified event object thrown Event. The objects will be thrown in the object cache pool for the next round robin. + * @param target {egret.IEventDispatcher} Distribute event target + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 使用指定的EventDispatcher对象来抛出Event事件对象。抛出的对象将会缓存在对象池上,供下次循环复用。 + * @param target {egret.IEventDispatcher} 派发事件目标 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static dispatchIOErrorEvent(target: IEventDispatcher): boolean; + } +} +declare namespace egret { + /** + * MotionEvent represents the device's movement + * Acceleration and accelerationIncludingGravity to represents the device's acceleration + * RotationRate to represents the device's rotation + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/sensor/Motion.ts + * @language en_US + */ + /** + * MotionEvent 类呈现设备运动的具体信息 + * Acceleration 和 accelerationIncludingGravity 呈现设备三个维度的加速度信息 + * RotationRate 呈现设备的旋转状态信息 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/sensor/Motion.ts + * @language zh_CN + */ + class MotionEvent extends Event { + /** + * An object giving the acceleration of the device on the three axis X, Y and Z. Acceleration is expressed in m/s2. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * acceleration 表示设备在 X Y Z 轴方将的加速度信息,单位是 m/s2,不包含重力 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + acceleration: DeviceAcceleration; + /** + * An object giving the acceleration of the device on the three axis X, Y and Z with the effect of gravity. Acceleration is expressed in m/s2. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * acceleration 表示设备在 X Y Z 轴方将的加速度信息,单位是 m/s2,包含重力 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + accelerationIncludingGravity: DeviceAcceleration; + /** + * An object giving the rate of change of the device's orientation on the three orientation axis alpha, beta and gamma. Rotation rate is express in degrees per seconds. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * rotationRate 表示设备在 alpha、 beta 和 gamma 三个轴向的角速度信息,单位是 角度每秒 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + rotationRate: DeviceRotationRate; + } +} +declare namespace egret { + /** + * The OrientationEvent provides information from the physical orientation of the device. + * Note: Currently, Browsers on the iOS and Android does not handle the coordinates the same way. + * Take care about this while using them. + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/sensor/DeviceOrientation.ts + * @language en_US + */ + /** + * OrientationEvent 提供设备的方向信息 + * 注意: 目前各个浏览器和操作系统处理方向的方式不完全相同,请根据使用场景做相应的校正, + * 比如使用两次方向数据的变化而不是直接使用方向的值 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/sensor/DeviceOrientation.ts + * @language zh_CN + */ + class OrientationEvent extends Event { + /** + * A number representing the motion of the device around the z axis, + * express in degrees with values ranging from 0 to 360 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示设备绕 Z 轴的角度,单位是 角度 范围是 0 到 360 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + alpha: number; + /** + * A number representing the motion of the device around the x axis, + * express in degrees with values ranging from -180 to 180. + * This represents a front to back motion of the device. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示设备绕 X 轴的角度,单位是 角度 范围是 -180 到 180. + * 这个值表示设备从前向后的旋转状态 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + beta: number; + /** + * A number representing the motion of the device around the y axis, + * express in degrees with values ranging from -90 to 90. + * This represents a left to right motion of the device. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示设备绕 Y 轴的角度,单位是 角度 范围是 -90 到 90. + * 这个值表示设备从前向后的旋转状态 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + gamma: number; + } +} +declare namespace egret { + interface HttpRequest { + addEventListener(type: "progress", listener: (this: Z, e: ProgressEvent) => void, thisObject: Z, useCapture?: boolean, priority?: number): any; + addEventListener(type: string, listener: Function, thisObject: any, useCapture?: boolean, priority?: number): any; + } + /** + * When a load operation has begun or a socket has received data, ProgressEvent object is dispatched. + * There are two types of progress events: ProgressEvent.PROGRESS and ProgressEvent.SOCKET_DATA. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 当加载操作已开始或套接字已接收到数据时,将调度 ProgressEvent 对象。 + * 有两种类型的进程事件:ProgressEvent.PROGRESS 和 ProgressEvent.SOCKET_DATA。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + class ProgressEvent extends egret.Event { + /** + * Changes in the loading progress + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 加载进度发生变化 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static PROGRESS: "progress"; + /** + * Get the data + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 获取到数据 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static SOCKET_DATA: "socketData"; + /** + * Number of items or bytes when the listener processes the event。 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 在侦听器处理事件时加载的项数或字节数。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + bytesLoaded: number; + /** + * If the loading process succeeds, the total number or the total number of bytes that will be loaded term. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 如果加载过程成功,将加载的总项数或总字节数。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + bytesTotal: number; + /** + * 创建一个 egret.ProgressEvent 对象 + * @param type The type of the event, accessible as Event.type. + * @param bubbles Determines whether the Event object participates in the bubbling stage of the event flow. The default value is false. + * @param cancelable Determines whether the Event object can be canceled. The default values is false. + * @param bytesLoaded {number} Number of items or bytes loaded + * @param bytesTotal {number} The total number of items or bytes loaded + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个 egret.ProgressEvent 对象 + * @param type 事件的类型,可以作为 Event.type 访问。 + * @param bubbles 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。 + * @param cancelable 确定是否可以取消 Event 对象。默认值为 false。 + * @param bytesLoaded {number} 加载的项数或字节数 + * @param bytesTotal {number} 加载的总项数或总字节数 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(type: string, bubbles?: boolean, cancelable?: boolean, bytesLoaded?: number, bytesTotal?: number); + /** + * EventDispatcher object using the specified event object thrown Event. The objects will be thrown in the object cache pool for the next round robin. + * @param target {egret.IEventDispatcher} Distribute event target + * @param type The type of the event, accessible as Event.type. + * @param bytesLoaded {number} Number of items or bytes loaded + * @param bytesTotal {number} The total number of items or bytes loaded + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 使用指定的EventDispatcher对象来抛出Event事件对象。抛出的对象将会缓存在对象池上,供下次循环复用。 + * @param target {egret.IEventDispatcher} 派发事件目标 + * @param type {string} 事件类型 + * @param bytesLoaded {number} 加载的项数或字节数 + * @param bytesTotal {number} 加载的总项数或总字节数 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static dispatchProgressEvent(target: IEventDispatcher, type: string, bytesLoaded?: number, bytesTotal?: number): boolean; + } +} +declare namespace egret { + interface Stage { + addEventListener(type: "orientationChange", listener: (this: Z, e: StageOrientationEvent) => void, thisObject: Z, useCapture?: boolean, priority?: number): any; + addEventListener(type: string, listener: Function, thisObject: any, useCapture?: boolean, priority?: number): any; + } + /** + * When the direction of the stage of change, Stage object dispatches StageOrientationEvent object. + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/events/StageOrientationEvent.ts + * @language en_US + */ + /** + * 当舞台的方向更改时,Stage 对象将调度 StageOrientationEvent 对象。 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/events/StageOrientationEvent.ts + * @language zh_CN + */ + class StageOrientationEvent extends Event { + /** + * After screen rotation distribute events. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 屏幕旋转后派发的事件。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static ORIENTATION_CHANGE: "orientationChange"; + /** + * Creating contains specific information related to the event and the stage direction of StageOrientationEvent object. + * @param type Event types:StageOrientationEvent.ORIENTATION_CHANGE + * @param bubbles It indicates whether the Event object participates in the bubbling stage of the event flow. + * @param cancelable It indicates whether the Event object can be canceled. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建包含与舞台方向事件相关的特定信息的 StageOrientationEvent 对象。 + * @param type 事件的类型:StageOrientationEvent.ORIENTATION_CHANGE + * @param bubbles 表示 Event 对象是否参与事件流的冒泡阶段。 + * @param cancelable 表示是否可以取消 Event 对象。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(type: string, bubbles?: boolean, cancelable?: boolean); + /** + * 派发一个屏幕旋转的事件。 + * @param target {egret.IEventDispatcher} 派发事件目标 + * @param type {egret.IEventDispatcher} 派发事件类型 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 派发一个屏幕旋转的事件。 + * @param target {egret.IEventDispatcher} Distribute event target + * @param type {egret.IEventDispatcher} Distribute event type + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static dispatchStageOrientationEvent(target: IEventDispatcher, type: string): boolean; + } +} +declare namespace egret { + /** + * When a user clicks a hyperlink rich text object dispatches TextEvent object. Text Event Type: TextEvent.LINK. + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/events/TextEvent.ts + * @language en_US + */ + /** + * 用户在富文本中单击超链接时,对象将调度 TextEvent 对象。文本事件类型:TextEvent.LINK。 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/events/TextEvent.ts + * @language zh_CN + */ + class TextEvent extends Event { + /** + * TextEvent create an object that contains information about text events. + * @param type Type of event, you can access the TextEvent.type. + * @param bubbles Determines whether the Event object participates in the bubbling stage of the event flow. The default value is false. + * @param cancelable Determine whether the Event object can be canceled. The default value is false. + * @param text One or more characters of text entered by the user. Event listeners can access this information through the text property. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个 TextEvent 对象,其中包含有关文本事件的信息。 + * @param type 事件的类型,可以作为 TextEvent.type 访问。 + * @param bubbles 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。 + * @param cancelable 确定是否可以取消 Event 对象。默认值为 false。 + * @param text 用户输入的一个或多个文本字符。事件侦听器可以通过 text 属性访问此信息。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(type: string, bubbles?: boolean, cancelable?: boolean, text?: string); + /** + * It defines the value of the type property of a link event object. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 定义 link 事件对象的 type 属性值。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static LINK: "link"; + /** + * In TextEvent.LINK event, event corresponding string. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 在 TextEvent.LINK 事件中,event对应的字符串。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + text: string; + /** + * EventDispatcher object using the specified event object thrown TextEvent. The objects will be thrown in the object cache pool for the next round robin. + * @param type The type of the event, accessible as Event.type. + * @param bubbles Determines whether the Event object participates in the bubbling stage of the event flow. The default value is false. + * @param text Text TextEvent object assignment + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 使用指定的EventDispatcher对象来抛出TextEvent事件对象。抛出的对象将会缓存在对象池上,供下次循环复用。 + * @param target 派发事件目标 + * @param type 事件类型 + * @param text TextEvent对象的text赋值 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static dispatchTextEvent(target: IEventDispatcher, type: string, text: string): boolean; + } +} +declare namespace egret { + interface Timer { + addEventListener(type: "timer" | "timerComplete", listener: (this: Z, e: TimerEvent) => void, thisObject: Z, useCapture?: boolean, priority?: number): any; + addEventListener(type: string, listener: Function, thisObject: any, useCapture?: boolean, priority?: number): any; + } + /** + * A Timer object dispatches a TimerEvent objects whenever the Timer object reaches the interval specified by the Timer.delay property. + * @see egret.Timer + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/events/TimerEvent.ts + * @language en_US + */ + /** + * 每当 Timer 对象达到由 Timer.delay 属性指定的间隔时,Timer 对象即会调度 TimerEvent 对象。 + * @see egret.Timer + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/events/TimerEvent.ts + * @language zh_CN + */ + class TimerEvent extends Event { + /** + * Dispatched whenever a Timer object reaches an interval specified according to the Timer.delay property. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 每当 Timer 对象达到根据 Timer.delay 属性指定的间隔时调度。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static TIMER: "timer"; + /** + * Dispatched whenever it has completed the number of requests set by Timer.repeatCount. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 每当它完成 Timer.repeatCount 设置的请求数后调度。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static TIMER_COMPLETE: "timerComplete"; + /** + * Creates an Event object with specific information relevant to timer events. + * @param type The type of the event. Event listeners can access this information through the inherited type property. + * @param bubbles Determines whether the Event object bubbles. Event listeners can access this information through + * the inherited bubbles property. + * @param cancelable Determines whether the Event object can be canceled. Event listeners can access this information + * through the inherited cancelable property. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个 Event 对象,其中包含有关 timer 事件的特定信息。 + * @param type 事件的类型。事件侦听器可以通过继承的 type 属性访问此信息。 + * @param bubbles 确定 Event 对象是否冒泡。事件侦听器可以通过继承的 bubbles 属性访问此信息。 + * @param cancelable 确定是否可以取消 Event 对象。事件侦听器可以通过继承的 cancelable 属性访问此信息。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(type: string, bubbles?: boolean, cancelable?: boolean); + /** + * Instructs Egret runtime to render after processing of this event completes, if the display list has been modified. + * @example + *
+         *    function onTimer(event:TimerEvent):void {
+         *        if (40 < mySp.x && mySp.x < 375) {
+         *            mySp.x-= 50;
+         *        } else {
+         *            mySp.x=374;
+         *        }
+         *        event.updateAfterEvent();
+         *    }
+         *
+         *    let moveTimer:Timer=new Timer(50,250);
+         *    moveTimer.addEventListener(TimerEvent.TIMER,onTimer);
+         *    moveTimer.start();
+         * 
+ * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 如果已修改显示列表,调用此方法将会忽略帧频限制,在此事件处理完成后立即重绘屏幕。 + * @example + *
+         *    function onTimer(event:TimerEvent):void {
+         *        if (40 < mySp.x && mySp.x < 375) {
+         *            mySp.x-= 50;
+         *        } else {
+         *            mySp.x=374;
+         *        }
+         *        event.updateAfterEvent();
+         *    }
+         *
+         *    let moveTimer:Timer=new Timer(50,250);
+         *    moveTimer.addEventListener(TimerEvent.TIMER,onTimer);
+         *    moveTimer.start();
+         * 
+ * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + updateAfterEvent(): void; + /** + * uses a specified target to dispatchEvent an event. Using this method can reduce the number of + * reallocate event objects, which allows you to get better code execution performance. + * @param target the event target + * @param type The type of the event. Event listeners can access this information through the inherited type property. + * @param bubbles Determines whether the Event object bubbles. Event listeners can access this information through + * the inherited bubbles property. + * @param cancelable Determines whether the Event object can be canceled. Event listeners can access this information + * through the inherited cancelable property. + * @see egret.Event.create() + * @see egret.Event.release() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 使用指定的EventDispatcher对象来抛出事件对象。抛出的对象将会缓存在对象池上,供下次循环复用。 + * @param target 事件派发目标 + * @param type 事件的类型。事件侦听器可以通过继承的 type 属性访问此信息。 + * @param bubbles 确定 Event 对象是否冒泡。事件侦听器可以通过继承的 bubbles 属性访问此信息。 + * @param cancelable 确定是否可以取消 Event 对象。事件侦听器可以通过继承的 cancelable 属性访问此信息。 + * @see egret.Event.create() + * @see egret.Event.release() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static dispatchTimerEvent(target: IEventDispatcher, type: string, bubbles?: boolean, cancelable?: boolean): boolean; + } +} +declare namespace egret { + class CompressedTextureData { + glInternalFormat: number; + width: number; + height: number; + byteArray: Uint8Array; + face: number; + level: number; + } + const etc_alpha_mask = "etc_alpha_mask"; + const engine_default_empty_texture = "engine_default_empty_texture"; + const is_compressed_texture = "is_compressed_texture"; + const glContext = "glContext"; + const UNPACK_PREMULTIPLY_ALPHA_WEBGL = "UNPACK_PREMULTIPLY_ALPHA_WEBGL"; + /** + * A BitmapData object contains an array of pixel data. This data can represent either a fully opaque bitmap or a + * transparent bitmap that contains alpha channel data. Either type of BitmapData object is stored as a buffer of 32-bit + * integers. Each 32-bit integer determines the properties of a single pixel in the bitmap.
+ * Each 32-bit integer is a combination of four 8-bit channel values (from 0 to 255) that describe the alpha transparency + * and the red, green, and blue (ARGB) values of the pixel. (For ARGB values, the most significant byte represents the + * alpha channel value, followed by red, green, and blue.) + * @see egret.Bitmap + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * BitmapData 对象是一个包含像素数据的数组。此数据可以表示完全不透明的位图,或表示包含 Alpha 通道数据的透明位图。 + * 以上任一类型的 BitmapData 对象都作为 32 位整数的缓冲区进行存储。每个 32 位整数确定位图中单个像素的属性。
+ * 每个 32 位整数都是四个 8 位通道值(从 0 到 255)的组合,这些值描述像素的 Alpha 透明度以及红色、绿色、蓝色 (ARGB) 值。 + * (对于 ARGB 值,最高有效字节代表 Alpha 通道值,其后的有效字节分别代表红色、绿色和蓝色通道值。) + * @see egret.Bitmap + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + class BitmapData extends HashObject { + /** + * The width of the bitmap image in pixels. + * @readOnly + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 位图图像的宽度,以像素为单位。 + * @readOnly + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + width: number; + /** + * The height of the bitmap image in pixels. + * @readOnly + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 位图图像的高度,以像素为单位。 + * @readOnly + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + height: number; + /** + * Original bitmap image. + * HTMLImageElement|HTMLCanvasElement|HTMLVideoElement + * @version Egret 2.4 + * @platform Web,Native + * @private + * @language en_US + */ + /** + * 原始位图图像。 + * HTMLImageElement|HTMLCanvasElement|HTMLVideoElement + * @version Egret 2.4 + * @platform Web,Native + * @private + * @language zh_CN + */ + $source: any; + /** + * WebGL texture. + * @version Egret 2.4 + * @platform Web,Native + * @private + * @language en_US + */ + /** + * WebGL纹理。 + * @version Egret 2.4 + * @platform Web,Native + * @private + * @language zh_CN + */ + webGLTexture: any; + /** + * Texture format. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 纹理格式。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + format: string; + /** + * @private + * webgl纹理生成后,是否删掉原始图像数据 + */ + $deleteSource: boolean; + /** + * @private + * id + */ + $nativeBitmapData: egret_native.NativeBitmapData; + /** + * @private + * + */ + readonly compressedTextureData: Array>; + debugCompressedTextureURL: string; + etcAlphaMask: Nullable; + /** + * Initializes a BitmapData object to refer to the specified source object. + * @param source The source object being referenced. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个引用指定 source 实例的 BitmapData 对象 + * @param source 被引用的 source 实例 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(source: any); + source: any; + static create(type: "arraybuffer", data: ArrayBuffer, callback?: (bitmapData: BitmapData) => void): BitmapData; + static create(type: "base64", data: string, callback?: (bitmapData: BitmapData) => void): BitmapData; + $dispose(): void; + private static _displayList; + static $addDisplayObject(displayObject: DisplayObject, bitmapData: BitmapData): void; + static $removeDisplayObject(displayObject: DisplayObject, bitmapData: BitmapData): void; + static $invalidate(bitmapData: BitmapData): void; + static $dispose(bitmapData: BitmapData): void; + private _getCompressedTextureData(level, face); + getCompressed2dTextureData(): CompressedTextureData; + hasCompressed2d(): boolean; + clearCompressedTextureData(): void; + } +} +declare namespace egret { + interface DisplayObject { + addEventListener(type: "touchMove" | "touchBegin" | "touchEnd" | "touchCancel" | "touchTap" | "touchReleaseOutside" | "touchRollOut" | "touchRollOver", listener: (this: Z, e: TouchEvent) => void, thisObject: Z, useCapture?: boolean, priority?: number): any; + addEventListener(type: string, listener: Function, thisObject: any, useCapture?: boolean, priority?: number): any; + } + /** + * The TouchEvent class lets you handle events on devices that detect user contact with the device (such as a finger + * on a touch screen).When a user interacts with a device such as a mobile phone or tablet with a touch screen, the + * user typically touches the screen with his or her fingers or a pointing device. You can develop applications that + * respond to basic touch events (such as a single finger tap) with the TouchEvent class. Create event listeners using + * the event types defined in this class. + * Note: When objects are nested on the display list, touch events target the deepest possible nested object that is + * visible in the display list. This object is called the target node. To have a target node's ancestor (an object + * containing the target node in the display list) receive notification of a touch event, use EventDispatcher.addEventListener() + * on the ancestor node with the type parameter set to the specific touch event you want to detect. + * + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/events/TouchEvent.ts + * @language en_US + */ + /** + * 使用 TouchEvent 类,您可以处理设备上那些检测用户与设备之间的接触的事件。 + * 当用户与带有触摸屏的移动电话或平板电脑等设备交互时,用户通常使用手指或指针设备接触屏幕。可使用 TouchEvent + * 类开发响应基本触摸事件(如单个手指点击)的应用程序。使用此类中定义的事件类型创建事件侦听器。 + * 注意:当对象嵌套在显示列表中时,触摸事件的目标将是显示列表中可见的最深的可能嵌套对象。 + * 此对象称为目标节点。要使目标节点的祖代(祖代是一个包含显示列表中所有目标节点的对象,从舞台到目标节点的父节点均包括在内) + * 接收触摸事件的通知,请对祖代节点使用 EventDispatcher.on() 并将 type 参数设置为要检测的特定触摸事件。 + * + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/events/TouchEvent.ts + * @language zh_CN + */ + class TouchEvent extends Event { + /** + * Dispatched when the user touches the device, and is continuously dispatched until the point of contact is removed. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 当用户触碰设备时进行调度,而且会连续调度,直到接触点被删除。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static TOUCH_MOVE: "touchMove"; + /** + * Dispatched when the user first contacts a touch-enabled device (such as touches a finger to a mobile phone or tablet with a touch screen). + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 当用户第一次触摸启用触摸的设备时(例如,用手指触摸配有触摸屏的移动电话或平板电脑)调度。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static TOUCH_BEGIN: "touchBegin"; + /** + * Dispatched when the user removes contact with a touch-enabled device (such as lifts a finger off a mobile phone + * or tablet with a touch screen). + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 当用户移除与启用触摸的设备的接触时(例如,将手指从配有触摸屏的移动电话或平板电脑上抬起)调度。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static TOUCH_END: "touchEnd"; + /** + * Dispatched when an event of some kind occurred that canceled the touch. + * Such as the eui.Scroller will dispatch 'TOUCH_CANCEL' when it start move, the 'TOUCH_END' and 'TOUCH_TAP' will not be triggered. + * @version Egret 3.0.1 + * @platform Web,Native + * @language en_US + */ + /** + * 由于某个事件取消了触摸时触发。比如 eui.Scroller 在开始滚动后会触发 'TOUCH_CANCEL' 事件,不再触发后续的 'TOUCH_END' 和 'TOUCH_TAP' 事件 + * @version Egret 3.0.1 + * @platform Web,Native + * @language zh_CN + */ + static TOUCH_CANCEL: "touchCancel"; + /** + * Dispatched when the user lifts the point of contact over the same DisplayObject instance on which the contact + * was initiated on a touch-enabled device. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 当用户在触摸设备上与开始触摸的同一 DisplayObject 实例上抬起接触点时调度。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static TOUCH_TAP: "touchTap"; + /** + * Dispatched when the user lifts the point of contact over the different DisplayObject instance on which the contact + * was initiated on a touch-enabled device (such as presses and releases a finger from a single point over a display + * object on a mobile phone or tablet with a touch screen). + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 当用户在触摸设备上与开始触摸的不同 DisplayObject 实例上抬起接触点时调度。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static TOUCH_RELEASE_OUTSIDE: "touchReleaseOutside"; + /** + * Creates an Event object that contains information about touch events. + * @param type The type of the event, accessible as Event.type. + * @param bubbles Determines whether the Event object participates in the bubbling stage of the event flow. The default value is false. + * @param cancelable Determines whether the Event object can be canceled. The default values is false. + * @param stageX The horizontal coordinate at which the event occurred in global Stage coordinates. + * @param stageY The vertical coordinate at which the event occurred in global Stage coordinates. + * @param touchPointID A unique identification number assigned to the touch point. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个 TouchEvent 对象,其中包含有关Touch事件的信息 + * @param type 事件的类型,可以作为 Event.type 访问。 + * @param bubbles 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。 + * @param cancelable 确定是否可以取消 Event 对象。默认值为 false。 + * @param stageX 事件发生点在全局舞台坐标系中的水平坐标 + * @param stageY 事件发生点在全局舞台坐标系中的垂直坐标 + * @param touchPointID 分配给触摸点的唯一标识号 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(type: string, bubbles?: boolean, cancelable?: boolean, stageX?: number, stageY?: number, touchPointID?: number); + /** + * @private + */ + $initTo(stageX: number, stageY: number, touchPointID: number): void; + /** + * @private + */ + $stageX: number; + /** + * The horizontal coordinate at which the event occurred in global Stage coordinates. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 事件发生点在全局舞台坐标中的水平坐标。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly stageX: number; + /** + * @private + */ + $stageY: number; + /** + * The vertical coordinate at which the event occurred in global Stage coordinates. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 事件发生点在全局舞台坐标中的垂直坐标。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly stageY: number; + private _localX; + /** + * The horizontal coordinate at which the event occurred relative to the display object. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 事件发生点相对于所属显示对象的水平坐标。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly localX: number; + private _localY; + /** + * The vertical coordinate at which the event occurred relative to the display object. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 事件发生点相对于所属显示对象的垂直坐标。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly localY: number; + private targetChanged; + /** + * @private + */ + private getLocalXY(); + $setTarget(target: any): boolean; + /** + * A unique identification number assigned to the touch point. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 分配给触摸点的唯一标识号 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + touchPointID: number; + /** + * Instructs Egret runtime to render after processing of this event completes, if the display list has been modified. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 如果已修改显示列表,调用此方法将会忽略帧频限制,在此事件处理完成后立即重绘屏幕。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + updateAfterEvent(): void; + /** + * Whether the touch is pressed (true) or not pressed (false). + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示触摸已按下 (true) 还是未按下 (false)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + touchDown: boolean; + /** + * uses a specified target to dispatchEvent an event. Using this method can reduce the number of + * reallocate event objects, which allows you to get better code execution performance. + * @param target the event target + * @param type The type of the event, accessible as Event.type. + * @param bubbles Determines whether the Event object participates in the bubbling stage of the event flow. The default value is false. + * @param cancelable Determines whether the Event object can be canceled. The default values is false. + * @param stageX The horizontal coordinate at which the event occurred in global Stage coordinates. + * @param stageY The vertical coordinate at which the event occurred in global Stage coordinates. + * @param touchPointID A unique identification number (as an int) assigned to the touch point. + * + * @see egret.Event.create() + * @see egret.Event.release() + * + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 使用指定的EventDispatcher对象来抛出Event事件对象。抛出的对象将会缓存在对象池上,供下次循环复用。 + * @param target 派发事件目标 + * @param type 事件的类型,可以作为 Event.type 访问。 + * @param bubbles 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。 + * @param cancelable 确定是否可以取消 Event 对象。默认值为 false。 + * @param stageX 事件发生点在全局舞台坐标系中的水平坐标 + * @param stageY 事件发生点在全局舞台坐标系中的垂直坐标 + * @param touchPointID 分配给触摸点的唯一标识号 + * + * @see egret.Event.create() + * @see egret.Event.release() + * + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static dispatchTouchEvent(target: IEventDispatcher, type: string, bubbles?: boolean, cancelable?: boolean, stageX?: number, stageY?: number, touchPointID?: number, touchDown?: boolean): boolean; + } +} +declare namespace egret { + /** + * h5 and native interaction. + * @see http://edn.egret.com/cn/article/index/id/714 Egret basic skills to communicate with Native + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/external/ExternalInterface.ts + * @language en_US + */ + /** + * h5与native交互。 + * @see http://edn.egret.com/cn/article/index/id/714 Egret 与 Native 通信基本技巧 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/external/ExternalInterface.ts + * @language zh_CN + */ + interface ExternalInterface { + } + let ExternalInterface: { + /** + * Call functionName, and the value passed to the native. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 调用 functionName,并将value传入到native中。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + call(functionName: string, value: string): void; + /** + * FunctionName callback listener, you need to have to call functionName this field in native rather than such a call. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 监听 functionName 回调,需要在native中有调用 functionName 这个字段,而不是 此类的call。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + addCallback(functionName: string, listener: (value: string) => void): void; + }; +} +declare namespace egret { + /** + * @private + * @version Egret 2.4 + * @platform Web,Native + */ + const enum BitmapFilterQuality { + /** + * 定义低品质滤镜设置 + * @private + * @version Egret 2.4 + * @platform Web,Native + */ + LOW = 1, + /** + * 定义中等品质滤镜设置 + * @private + * @version Egret 2.4 + * @platform Web,Native + */ + MEDIUM = 2, + /** + * 定义高品质滤镜设置 + * @private + * @version Egret 2.4 + * @platform Web,Native + */ + HIGH = 3, + } +} +declare namespace egret { + /** + * The BlurFilter class lets you apply a blur visual effect to display objects. A blur effect softens the details of an image. + * You can produce blurs that range from a softly unfocused look to a Gaussian blur, a hazy appearance like viewing an image through semi-opaque glass. + * @version Egret 3.0.1 + * @platform Web + * @see http://edn.egret.com/cn/docs/page/947#模糊滤镜 模糊滤镜 + * @language en_US + */ + /** + * 可使用 BlurFilter 类将模糊视觉效果应用于显示对象。模糊效果可以柔化图像的细节。 + * 您可以生成一些模糊效果,范围从创建一个柔化的、未聚焦的外观到高斯模糊(就像通过半透明玻璃查看图像一样的朦胧的外观)。 + * @version Egret 3.1.0 + * @platform Web + * @see http://edn.egret.com/cn/docs/page/947#模糊滤镜 模糊滤镜 + * @language zh_CN + */ + class BlurFilter extends Filter { + /** + * Initializes a BlurFilter object. + * @param blurX {number} The amount of horizontal blur. Valid values are 0 to 255 (floating point). + * @param blurY {number} The amount of vertical blur. Valid values are 0 to 255 (floating point). + * @param quality {number} The number of times to apply the filter. + * @version Egret 3.1.0 + * @platform Web + * @language en_US + */ + /** + * 创建一个 BlurFilter 对象。 + * @param blurX {number} 水平模糊量。有效值为 0 到 255(浮点)。 + * @param blurY {number} 垂直模糊量。有效值为 0 到 255(浮点)。 + * @param quality {number} 应用滤镜的次数。暂未实现。 + * @version Egret 3.1.0 + * @platform Web + * @language zh_CN + */ + constructor(blurX?: number, blurY?: number, quality?: number); + /** + * @private + */ + blurXFilter: IBlurXFilter; + /** + * @private + */ + blurYFilter: IBlurYFilter; + /** + * @private + */ + $quality: number; + /** + * The amount of horizontal blur. + * @version Egret 3.1.0 + * @platform Web + * @language en_US + */ + /** + * 水平模糊量。 + * @version Egret 3.1.0 + * @platform Web + * @language zh_CN + */ + blurX: number; + /** + * @private + */ + $blurX: number; + /** + * The amount of vertical blur. + * @version Egret 3.1.0 + * @platform Web + * @language en_US + */ + /** + * 垂直模糊量。 + * @version Egret 3.1.0 + * @platform Web + * @language zh_CN + */ + blurY: number; + /** + * @private + */ + $blurY: number; + /** + * @private + */ + $toJson(): string; + protected updatePadding(): void; + onPropertyChange(): void; + } + /** + * @private + */ + interface IBlurXFilter extends Filter { + type: string; + $uniforms: any; + blurX: number; + } + /** + * @private + */ + interface IBlurYFilter extends Filter { + type: string; + $uniforms: any; + blurY: number; + } +} +declare namespace egret { + /** + * The ColorMatrixFilter class lets you apply a 4 x 5 matrix transformation on the RGBA color and alpha values of every pixel in the input image to produce a result with a new set of RGBA color and alpha values. + * It allows saturation changes, hue rotation, luminance to alpha, and various other effects. + * @version Egret 3.1.0 + * @platform Web + * @see http://edn.egret.com/cn/docs/page/947 颜色矩阵滤镜 + * @language en_US + */ + /** + * 使用 ColorMatrixFilter 类可以将 4 x 5 矩阵转换应用于输入图像上的每个像素的 RGBA 颜色和 Alpha 值,以生成具有一组新的 RGBA 颜色和 Alpha 值的结果。 + * 该类允许饱和度更改、色相旋转、亮度为 Alpha 以及各种其他效果。 + * @version Egret 3.1.0 + * @platform Web + * @see http://edn.egret.com/cn/docs/page/947 颜色矩阵滤镜 + * @language zh_CN + */ + class ColorMatrixFilter extends Filter { + /** + * @private + */ + $matrix: number[]; + /** + * @private + */ + private matrix2; + /** + * Initializes a ColorMatrixFilter object. + * @version Egret 3.1.0 + * @platform Web + * @language en_US + */ + /** + * 创建一个 ColorMatrixFilter 对象。 + * @version Egret 3.1.0 + * @platform Web + * @language zh_CN + */ + constructor(matrix?: number[]); + /** + * A comma delimited list of 20 doubles that comprise a 4x5 matrix applied to the rendered element. + * The matrix is in row major order -- that is, the first five elements are multipled by the vector [srcR,srcG,srcB,srcA,1] to determine the output red value, the second five determine the output green value, etc. + * The value must either be an array or comma delimited string of 20 numbers. + * @version Egret 3.1.0 + * @platform Web + * @language en_US + */ + /** + * 构成应用于所呈示的元素的一个 4x5 矩阵的、以逗号分隔的 20 个双精度数的列表。 + * 矩阵以行作为主要顺序,即用第一行五个元素乘以矢量 [srcR,srcG,srcB,srcA,1] 以确定输出的红色值,用第二行的五个元素确定输出的绿色值,等等。 + * 该值必须为 20 个数字组成的数组或以逗号分隔的字符串。 + * @version Egret 3.1.0 + * @platform Web + * @language zh_CN + */ + matrix: number[]; + /** + * @private + */ + private setMatrix(value); + /** + * @private + */ + $toJson(): string; + } +} +declare namespace egret { + /** + * custom filter, now support WebGL mode only. + * @version Egret 4.1.0 + * @platform Web + * @language en_US + */ + /** + * 自定义滤镜,目前仅支持WebGL模式 + * @version Egret 4.1.0 + * @platform Web + * @language zh_CN + */ + class CustomFilter extends Filter { + /** + * @private + */ + $vertexSrc: string; + /** + * @private + */ + $fragmentSrc: string; + /** + * @private + */ + $shaderKey: string; + /** + * @private + */ + type: string; + private $padding; + /** + * The inner margin of the filter. + * If the desired area of the custom filter is larger than the original area (stroke, etc.), you need to set it manually. + * @version Egret 4.1.0 + * @platform Web + * @language en_US + */ + /** + * 滤镜的内边距 + * 如果自定义滤镜所需区域比原区域大(描边等),需要手动设置 + * @version Egret 4.1.0 + * @platform Web + * @language zh_CN + */ + padding: number; + /** + * The initial value of the uniform in the shader (key, value one-to-one correspondence), currently only supports numbers and arrays. + * @version Egret 4.1.0 + * @platform Web + * @language en_US + */ + /** + * 着色器中uniform的初始值(key,value一一对应),目前仅支持数字和数组。 + * @version Egret 4.1.0 + * @platform Web + * @language zh_CN + */ + readonly uniforms: any; + /** + * Initialize the CustomFilter object. + * @param vertexSrc Custom vertex shader program. + * @param fragmentSrc Custom fragment shader program. + * @param uniforms The initial value of the uniform in the shader (key, value one-to-one correspondence), currently only supports numbers and arrays. + * @version Egret 4.1.0 + * @platform Web + * @language en_US + */ + /** + * 初始化 CustomFilter 对象 + * @param vertexSrc 自定义的顶点着色器程序。 + * @param fragmentSrc 自定义的片段着色器程序。 + * @param uniforms 着色器中uniform的初始值(key,value一一对应),目前仅支持数字和数组。 + * @version Egret 4.1.0 + * @platform Web + * @language zh_CN + */ + constructor(vertexSrc: string, fragmentSrc: string, uniforms?: any); + onPropertyChange(): void; + } +} +declare namespace egret { + /** + * @class egret.DropShadowFilter + * @classdesc + * 可使用 DropShadowFilter 类向显示对象添加投影。 + * @extends egret.GlowFilter + * @version Egret 3.1.4 + * @platform Web,Native + */ + class DropShadowFilter extends GlowFilter { + /** + * Initializes a new DropShadowFilter instance. + * @method egret.DropShadowFilter#constructor + * @param distance {number} The offset distance of the bevel. Valid values are in pixels (floating point). + * @param angle {number} The angle of the bevel. Valid values are from 0 to 360°. + * @param color {number} The color of the glow. Valid values are in the hexadecimal format 0xRRGGBB. The default value is 0xFF0000. + * @param alpha {number} The alpha transparency value for the color. Valid values are 0 to 1. For example, .25 sets a transparency value of 25%. The default value is 1. + * @param blurX {number} The amount of horizontal blur. Valid values are 0 to 255 (floating point). + * @param blurY {number} The amount of vertical blur. Valid values are 0 to 255 (floating point). + * @param strength {number} The strength of the imprint or spread. The higher the value, the more color is imprinted and the stronger the contrast between the glow and the background. Valid values are 0 to 255. + * @param quality {number} The number of times to apply the filter. + * @param inner {boolean} Specifies whether the glow is an inner glow. The value true indicates an inner glow. The default is false, an outer glow (a glow around the outer edges of the object). + * @param knockout {number} Specifies whether the object has a knockout effect. A value of true makes the object's fill transparent and reveals the background color of the document. The default value is false (no knockout effect). + * @param hideObject {number} Indicates whether or not the object is hidden. The value true indicates that the object itself is not drawn; only the shadow is visible. The default is false, meaning that the object is shown. + * @version Egret 3.1.4 + * @platform Web + * @language en_US + */ + /** + * 初始化 DropShadowFilter 对象 + * @method egret.DropShadowFilter#constructor + * @param distance {number} 阴影的偏移距离,以像素为单位。 + * @param angle {number} 阴影的角度,0 到 360 度(浮点)。 + * @param color {number} 光晕颜色,采用十六进制格式 0xRRGGBB。默认值为 0xFF0000。 + * @param alpha {number} 颜色的 Alpha 透明度值。有效值为 0 到 1。例如,0.25 设置透明度值为 25%。 + * @param blurX {number} 水平模糊量。有效值为 0 到 255(浮点)。 + * @param blurY {number} 垂直模糊量。有效值为 0 到 255(浮点)。 + * @param strength {number} 印记或跨页的强度。该值越高,压印的颜色越深,而且发光与背景之间的对比度也越强。有效值为 0 到 255。 + * @param quality {number} 应用滤镜的次数。暂未实现。 + * @param inner {boolean} 指定发光是否为内侧发光。值 true 指定发光是内侧发光。值 false 指定发光是外侧发光(对象外缘周围的发光)。 + * @param knockout {number} 指定对象是否具有挖空效果。值为 true 将使对象的填充变为透明,并显示文档的背景颜色。 + * @param hideObject {number} 表示是否隐藏对象。如果值为 true,则表示没有绘制对象本身,只有阴影是可见的。默认值为 false(显示对象)。 + * @version Egret 3.1.4 + * @platform Web + * @language zh_CN + */ + constructor(distance?: number, angle?: number, color?: number, alpha?: number, blurX?: number, blurY?: number, strength?: number, quality?: number, inner?: boolean, knockout?: boolean, hideObject?: boolean); + /** + * @private + */ + $distance: number; + /** + * The offset distance of the bevel. + * @version Egret 3.1.4 + * @platform Web + * @language en_US + */ + /** + * 阴影的偏移距离,以像素为单位。 + * @version Egret 3.1.4 + * @platform Web + * @language zh_CN + */ + distance: number; + /** + * @private + */ + $angle: number; + /** + * The angle of the bevel. + * @version Egret 3.1.4 + * @platform Web + * @language en_US + */ + /** + * 阴影的角度。 + * @version Egret 3.1.4 + * @platform Web + * @language zh_CN + */ + angle: number; + /** + * @private + */ + $hideObject: boolean; + /** + * Indicates whether or not the object is hidden. + * @version Egret 3.1.4 + * @platform Web + * @language en_US + */ + /** + * 表示是否隐藏对象。 + * @version Egret 3.1.4 + * @platform Web + * @language zh_CN + */ + hideObject: boolean; + /** + * @private + */ + $toJson(): string; + protected updatePadding(): void; + } +} +declare namespace egret { + /** + * The GradientType class provides values for the type parameter in the beginGradientFill() methods of the egret.Graphics class. + * + * @see egret.Graphics#beginGradientFill() + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * GradientType 类为 egret.Graphics 类的 beginGradientFill() 方法中的 type 参数提供值。 + * + * @see egret.Graphics#beginGradientFill() + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + class GradientType { + /** + * Value used to specify a linear gradient fill. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 用于指定线性渐变填充的值 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static LINEAR: string; + /** + * Value used to specify a radial gradient fill. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 用于指定放射状渐变填充的值 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static RADIAL: string; + } +} +declare namespace egret { + /** + * The Graphics class contains a set of methods for creating vector shape. Display objects that support drawing include Sprite and Shape objects. Each class in these classes includes the graphics attribute that is a Graphics object. + * The following auxiliary functions are provided for ease of use: drawRect(), drawRoundRect(), drawCircle(), and drawEllipse(). + * @see http://edn.egret.com/cn/docs/page/136 Draw Rectangle + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/Graphics.ts + * @language en_US + */ + /** + * Graphics 类包含一组可用来创建矢量形状的方法。支持绘制的显示对象包括 Sprite 和 Shape 对象。这些类中的每一个类都包括 graphics 属性,该属性是一个 Graphics 对象。 + * 以下是为便于使用而提供的一些辅助函数:drawRect()、drawRoundRect()、drawCircle() 和 drawEllipse()。 + * @see http://edn.egret.com/cn/docs/page/136 绘制矩形 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/Graphics.ts + * @language zh_CN + */ + class Graphics extends HashObject { + /** + * Initializes a Graphics object. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个 Graphics 对象。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(); + /** + * @private + */ + $renderNode: sys.GraphicsNode; + /** + * 绑定到的目标显示对象 + */ + $targetDisplay: DisplayObject; + $targetIsSprite: boolean; + /** + * @private + * 设置绑定到的目标显示对象 + */ + $setTarget(target: DisplayObject): void; + /** + * 当前移动到的坐标X + */ + private lastX; + /** + * 当前移动到的坐标Y + */ + private lastY; + /** + * 当前正在绘制的填充 + */ + private fillPath; + /** + * 当前正在绘制的线条 + */ + private strokePath; + /** + * 线条的左上方宽度 + */ + private topLeftStrokeWidth; + /** + * 线条的右下方宽度 + */ + private bottomRightStrokeWidth; + /** + * 对1像素和3像素特殊处理,向右下角偏移0.5像素,以显示清晰锐利的线条。 + */ + private setStrokeWidth(width); + /** + * Specify a simple single color fill that will be used for subsequent calls to other Graphics methods (for example, lineTo() and drawCircle()) when drawing. + * Calling the clear() method will clear the fill. + * @param color Filled color + * @param alpha Filled Alpha value + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 指定一种简单的单一颜色填充,在绘制时该填充将在随后对其他 Graphics 方法(如 lineTo() 或 drawCircle())的调用中使用。 + * 调用 clear() 方法会清除填充。 + * @param color 填充的颜色 + * @param alpha 填充的 Alpha 值 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + beginFill(color: number, alpha?: number): void; + /** + * Specifies a gradient fill used by subsequent calls to other Graphics methods (such as lineTo() or drawCircle()) for the object. + * Calling the clear() method clears the fill. + * @param type A value from the GradientType class that specifies which gradient type to use: GradientType.LINEAR or GradientType.RADIAL. + * @param colors An array of RGB hexadecimal color values used in the gradient; for example, red is 0xFF0000, blue is 0x0000FF, and so on. You can specify up to 15 colors. For each color, specify a corresponding value in the alphas and ratios parameters. + * @param alphas An array of alpha values for the corresponding colors in the colors array; + * @param ratios An array of color distribution ratios; valid values are 0-255. + * @param matrix A transformation matrix as defined by the egret.Matrix class. The egret.Matrix class includes a createGradientBox() method, which lets you conveniently set up the matrix for use with the beginGradientFill() method. + * @platform Web,Native + * @version Egret 2.4 + * @language en_US + */ + /** + * 指定一种渐变填充,用于随后调用对象的其他 Graphics 方法(如 lineTo() 或 drawCircle())。 + * 调用 clear() 方法会清除填充。 + * @param type 用于指定要使用哪种渐变类型的 GradientType 类的值:GradientType.LINEAR 或 GradientType.RADIAL。 + * @param colors 渐变中使用的 RGB 十六进制颜色值的数组(例如,红色为 0xFF0000,蓝色为 0x0000FF,等等)。对于每种颜色,请在 alphas 和 ratios 参数中指定对应值。 + * @param alphas colors 数组中对应颜色的 alpha 值数组。 + * @param ratios 颜色分布比率的数组。有效值为 0 到 255。 + * @param matrix 一个由 egret.Matrix 类定义的转换矩阵。egret.Matrix 类包括 createGradientBox() 方法,通过该方法可以方便地设置矩阵,以便与 beginGradientFill() 方法一起使用 + * @platform Web,Native + * @version Egret 2.4 + * @language zh_CN + */ + beginGradientFill(type: string, colors: number[], alphas: number[], ratios: number[], matrix?: egret.Matrix): void; + /** + * Apply fill to the lines and curves added after the previous calling to the beginFill() method. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 对从上一次调用 beginFill()方法之后添加的直线和曲线应用填充。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + endFill(): void; + /** + * Specify a line style that will be used for subsequent calls to Graphics methods such as lineTo() and drawCircle(). + * @param thickness An integer, indicating the thickness of the line in points. Valid values are 0 to 255. If a number is not specified, or if the parameter is undefined, a line is not drawn. If a value less than 0 is passed, the default value is 0. Value 0 indicates hairline thickness; the maximum thickness is 255. If a value greater than 255 is passed, the default value is 255. + * @param color A hexadecimal color value of the line (for example, red is 0xFF0000, and blue is 0x0000FF, etc.). If no value is specified, the default value is 0x000000 (black). Optional. + * @param alpha Indicates Alpha value of the line's color. Valid values are 0 to 1. If no value is specified, the default value is 1 (solid). If the value is less than 0, the default value is 0. If the value is greater than 1, the default value is 1. + * @param pixelHinting A boolean value that specifies whether to hint strokes to full pixels. This affects both the position of anchors of a curve and the line stroke size itself. With pixelHinting set to true, the line width is adjusted to full pixel width. With pixelHinting set to false, disjoints can appear for curves and straight lines. + * @param scaleMode Specifies the scale mode to be used + * @param caps Specifies the value of the CapsStyle class of the endpoint type at the end of the line. (default = CapsStyle.ROUND) + * @param joints Specifies the type of joint appearance of corner. (default = JointStyle.ROUND) + * @param miterLimit Indicates the limit number of cut miter. + * @param lineDash set the line dash. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 指定一种线条样式以用于随后对 lineTo() 或 drawCircle() 等 Graphics 方法的调用。 + * @param thickness 一个整数,以点为单位表示线条的粗细,有效值为 0 到 255。如果未指定数字,或者未定义该参数,则不绘制线条。如果传递的值小于 0,则默认值为 0。值 0 表示极细的粗细;最大粗细为 255。如果传递的值大于 255,则默认值为 255。 + * @param color 线条的十六进制颜色值(例如,红色为 0xFF0000,蓝色为 0x0000FF 等)。如果未指明值,则默认值为 0x000000(黑色)。可选。 + * @param alpha 表示线条颜色的 Alpha 值的数字;有效值为 0 到 1。如果未指明值,则默认值为 1(纯色)。如果值小于 0,则默认值为 0。如果值大于 1,则默认值为 1。 + * @param pixelHinting 布尔型值,指定是否提示笔触采用完整像素。它同时影响曲线锚点的位置以及线条笔触大小本身。在 pixelHinting 设置为 true 的情况下,线条宽度会调整到完整像素宽度。在 pixelHinting 设置为 false 的情况下,对于曲线和直线可能会出现脱节。 + * @param scaleMode 用于指定要使用的比例模式 + * @param caps 用于指定线条末端处端点类型的 CapsStyle 类的值。默认值:CapsStyle.ROUND + * @param joints 指定用于拐角的连接外观的类型。默认值:JointStyle.ROUND + * @param miterLimit 用于表示剪切斜接的极限值的数字。 + * @param lineDash 设置虚线样式。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + lineStyle(thickness?: number, color?: number, alpha?: number, pixelHinting?: boolean, scaleMode?: string, caps?: string, joints?: string, miterLimit?: number, lineDash?: number[]): void; + /** + * Draw a rectangle + * @param x x position of the center, relative to the registration point of the parent display object (in pixels). + * @param y y position of the center, relative to the registration point of the parent display object (in pixels). + * @param width Width of the rectangle (in pixels). + * @param height Height of the rectangle (in pixels). + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 绘制一个矩形 + * @param x 圆心相对于父显示对象注册点的 x 位置(以像素为单位)。 + * @param y 相对于父显示对象注册点的圆心的 y 位置(以像素为单位)。 + * @param width 矩形的宽度(以像素为单位)。 + * @param height 矩形的高度(以像素为单位)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + drawRect(x: number, y: number, width: number, height: number): void; + /** + * Draw a rectangle with rounded corners. + * @param x x position of the center, relative to the registration point of the parent display object (in pixels). + * @param y y position of the center, relative to the registration point of the parent display object (in pixels). + * @param width Width of the rectangle (in pixels). + * @param height Height of the rectangle (in pixels). + * @param ellipseWidth Width used to draw an ellipse with rounded corners (in pixels). + * @param ellipseHeight Height used to draw an ellipse with rounded corners (in pixels). (Optional) If no value is specified, the default value matches the value of the ellipseWidth parameter. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 绘制一个圆角矩形。 + * @param x 圆心相对于父显示对象注册点的 x 位置(以像素为单位)。 + * @param y 相对于父显示对象注册点的圆心的 y 位置(以像素为单位)。 + * @param width 矩形的宽度(以像素为单位)。 + * @param height 矩形的高度(以像素为单位)。 + * @param ellipseWidth 用于绘制圆角的椭圆的宽度(以像素为单位)。 + * @param ellipseHeight 用于绘制圆角的椭圆的高度(以像素为单位)。 (可选)如果未指定值,则默认值与为 ellipseWidth 参数提供的值相匹配。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + drawRoundRect(x: number, y: number, width: number, height: number, ellipseWidth: number, ellipseHeight?: number): void; + /** + * Draw a circle. + * @param x x position of the center, relative to the registration point of the parent display object (in pixels). + * @param y y position of the center, relative to the registration point of the parent display object (in pixels). + * @param r Radius of the circle (in pixels). + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 绘制一个圆。 + * @param x 圆心相对于父显示对象注册点的 x 位置(以像素为单位)。 + * @param y 相对于父显示对象注册点的圆心的 y 位置(以像素为单位)。 + * @param radius 圆的半径(以像素为单位)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + drawCircle(x: number, y: number, radius: number): void; + /** + * Draw an ellipse. + * @param x A number indicating the horizontal position, relative to the registration point of the parent display object (in pixels). + * @param y A number indicating the vertical position, relative to the registration point of the parent display object (in pixels). + * @param width Width of the rectangle (in pixels). + * @param height Height of the rectangle (in pixels). + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 绘制一个椭圆。 + * @param x 一个表示相对于父显示对象注册点的水平位置的数字(以像素为单位)。 + * @param y 一个表示相对于父显示对象注册点的垂直位置的数字(以像素为单位)。 + * @param width 矩形的宽度(以像素为单位)。 + * @param height 矩形的高度(以像素为单位)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + drawEllipse(x: number, y: number, width: number, height: number): void; + /** + * Move the current drawing position to (x, y). If any of these parameters is missed, calling this method will fail and the current drawing position keeps unchanged. + * @param x A number indicating the horizontal position, relative to the registration point of the parent display object (in pixels). + * @param y A number indicating the vertical position, relative to the registration point of the parent display object (in pixels). + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将当前绘图位置移动到 (x, y)。如果缺少任何一个参数,则此方法将失败,并且当前绘图位置不改变。 + * @param x 一个表示相对于父显示对象注册点的水平位置的数字(以像素为单位)。 + * @param y 一个表示相对于父显示对象注册点的垂直位置的数字(以像素为单位)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + moveTo(x: number, y: number): void; + /** + * Draw a straight line from the current drawing position to (x, y) using the current line style; the current drawing position is then set to (x, y). + * @param x A number indicating the horizontal position, relative to the registration point of the parent display object (in pixels). + * @param y A number indicating the vertical position, relative to the registration point of the parent display object (in pixels). + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 使用当前线条样式绘制一条从当前绘图位置开始到 (x, y) 结束的直线;当前绘图位置随后会设置为 (x, y)。 + * @param x 一个表示相对于父显示对象注册点的水平位置的数字(以像素为单位)。 + * @param y 一个表示相对于父显示对象注册点的垂直位置的数字(以像素为单位)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + lineTo(x: number, y: number): void; + /** + * Draw a quadratic Bezier curve from the current drawing position to (anchorX, anchorY) using the current line style according to the control points specified by (controlX, controlY). The current drawing position is then set to (anchorX, anchorY). + * If the curveTo() method is called before the moveTo() method, the default value of the current drawing position is (0, 0). If any of these parameters is missed, calling this method will fail and the current drawing position keeps unchanged. + * The drawn curve is a quadratic Bezier curve. A quadratic Bezier curve contains two anchor points and one control point. The curve interpolates the two anchor points and bends to the control point. + * @param controlX A number indicating the horizontal position of the control point, relative to the registration point of the parent display object. + * @param controlY A number indicating the vertical position of the control point, relative to the registration point of the parent display object. + * @param anchorX A number indicating the horizontal position of the next anchor point, relative to the registration point of the parent display object. + * @param anchorY A number indicating the vertical position of the next anchor point, relative to the registration point of the parent display object. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 使用当前线条样式和由 (controlX, controlY) 指定的控制点绘制一条从当前绘图位置开始到 (anchorX, anchorY) 结束的二次贝塞尔曲线。当前绘图位置随后设置为 (anchorX, anchorY)。 + * 如果在调用 moveTo() 方法之前调用了 curveTo() 方法,则当前绘图位置的默认值为 (0, 0)。如果缺少任何一个参数,则此方法将失败,并且当前绘图位置不改变。 + * 绘制的曲线是二次贝塞尔曲线。二次贝塞尔曲线包含两个锚点和一个控制点。该曲线内插这两个锚点,并向控制点弯曲。 + * @param controlX 一个数字,指定控制点相对于父显示对象注册点的水平位置。 + * @param controlY 一个数字,指定控制点相对于父显示对象注册点的垂直位置。 + * @param anchorX 一个数字,指定下一个锚点相对于父显示对象注册点的水平位置。 + * @param anchorY 一个数字,指定下一个锚点相对于父显示对象注册点的垂直位置。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + curveTo(controlX: number, controlY: number, anchorX: number, anchorY: number): void; + /** + * Draws a cubic Bezier curve from the current drawing position to the specified anchor. Cubic Bezier curves consist of two anchor points and two control points. The curve interpolates the two anchor points and two control points to the curve. + * @param controlX1 Specifies the first control point relative to the registration point of the parent display the horizontal position of the object. + * @param controlY1 Specifies the first control point relative to the registration point of the parent display the vertical position of the object. + * @param controlX2 Specify the second control point relative to the registration point of the parent display the horizontal position of the object. + * @param controlY2 Specify the second control point relative to the registration point of the parent display the vertical position of the object. + * @param anchorX Specifies the anchor point relative to the registration point of the parent display the horizontal position of the object. + * @param anchorY Specifies the anchor point relative to the registration point of the parent display the vertical position of the object. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从当前绘图位置到指定的锚点绘制一条三次贝塞尔曲线。三次贝塞尔曲线由两个锚点和两个控制点组成。该曲线内插这两个锚点,并向两个控制点弯曲。 + * @param controlX1 指定首个控制点相对于父显示对象的注册点的水平位置。 + * @param controlY1 指定首个控制点相对于父显示对象的注册点的垂直位置。 + * @param controlX2 指定第二个控制点相对于父显示对象的注册点的水平位置。 + * @param controlY2 指定第二个控制点相对于父显示对象的注册点的垂直位置。 + * @param anchorX 指定锚点相对于父显示对象的注册点的水平位置。 + * @param anchorY 指定锚点相对于父显示对象的注册点的垂直位置。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + cubicCurveTo(controlX1: number, controlY1: number, controlX2: number, controlY2: number, anchorX: number, anchorY: number): void; + /** + * adds an arc to the path which is centered at (x, y) position with radius r starting at startAngle and ending + * at endAngle going in the given direction by anticlockwise (defaulting to clockwise). + * @param x The x coordinate of the arc's center. + * @param y The y coordinate of the arc's center. + * @param radius The arc's radius. + * @param startAngle The angle at which the arc starts, measured clockwise from the positive x axis and expressed in radians. + * @param endAngle The angle at which the arc ends, measured clockwise from the positive x axis and expressed in radians. + * @param anticlockwise if true, causes the arc to be drawn counter-clockwise between the two angles. By default it is drawn clockwise. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 绘制一段圆弧路径。圆弧路径的圆心在 (x, y) 位置,半径为 r ,根据anticlockwise (默认为顺时针)指定的方向从 startAngle 开始绘制,到 endAngle 结束。 + * @param x 圆弧中心(圆心)的 x 轴坐标。 + * @param y 圆弧中心(圆心)的 y 轴坐标。 + * @param radius 圆弧的半径。 + * @param startAngle 圆弧的起始点, x轴方向开始计算,单位以弧度表示。 + * @param endAngle 圆弧的终点, 单位以弧度表示。 + * @param anticlockwise 如果为 true,逆时针绘制圆弧,反之,顺时针绘制。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + drawArc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void; + private dirty(); + /** + * @private + * 测量圆弧的矩形大小 + */ + private arcBounds(x, y, radius, startAngle, endAngle); + /** + * Clear graphics that are drawn to this Graphics object, and reset fill and line style settings. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 清除绘制到此 Graphics 对象的图形,并重置填充和线条样式设置。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + clear(): void; + /** + * @private + */ + private minX; + /** + * @private + */ + private minY; + /** + * @private + */ + private maxX; + /** + * @private + */ + private maxY; + /** + * @private + */ + private extendBoundsByPoint(x, y); + /** + * @private + */ + private extendBoundsByX(x); + /** + * @private + */ + private extendBoundsByY(y); + /** + * @private + */ + private updateNodeBounds(); + /** + * 是否已经包含上一次moveTo的坐标点 + */ + private includeLastPosition; + /** + * 更新当前的lineX和lineY值,并标记尺寸失效。 + * @private + */ + private updatePosition(x, y); + /** + * @private + */ + $measureContentBounds(bounds: Rectangle): void; + /** + * @private + * + */ + $hitTest(stageX: number, stageY: number): DisplayObject; + /** + * @private + */ + $onRemoveFromStage(): void; + } +} +declare namespace egret { + /** + * The Matrix class represents a transformation matrix that determines how to map points from one coordinate space to + * another. You can perform various graphical transformations on a display object by setting the properties of a Matrix + * object, applying that Matrix object to the matrix property of a display object, These transformation functions include + * translation (x and y repositioning), rotation, scaling, and skewing. + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/geom/Matrix.ts + * @language en_US + */ + /** + * Matrix 类表示一个转换矩阵,它确定如何将点从一个坐标空间映射到另一个坐标空间。 + * 您可以对一个显示对象执行不同的图形转换,方法是设置 Matrix 对象的属性,将该 Matrix + * 对象应用于显示对象的 matrix 属性。这些转换函数包括平移(x 和 y 重新定位)、旋转、缩放和倾斜。 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/geom/Matrix.ts + * @language zh_CN + */ + class Matrix extends HashObject { + /** + * Releases a matrix instance to the object pool + * @param matrix matrix that Needs to be recycled + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 释放一个Matrix实例到对象池 + * @param matrix 需要回收的 matrix + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static release(matrix: Matrix): void; + /** + * get a matrix instance from the object pool or create a new one. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从对象池中取出或创建一个新的Matrix对象。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static create(): Matrix; + /** + * Creates a new Matrix object with the specified parameters. + * @param a The value that affects the positioning of pixels along the x axis when scaling or rotating an image. + * @param b The value that affects the positioning of pixels along the y axis when rotating or skewing an image. + * @param c The value that affects the positioning of pixels along the x axis when rotating or skewing an image. + * @param d The value that affects the positioning of pixels along the y axis when scaling or rotating an image.. + * @param tx The distance by which to translate each point along the x axis. + * @param ty The distance by which to translate each point along the y axis. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 使用指定参数创建一个 Matrix 对象 + * @param a 缩放或旋转图像时影响像素沿 x 轴定位的值。 + * @param b 旋转或倾斜图像时影响像素沿 y 轴定位的值。 + * @param c 旋转或倾斜图像时影响像素沿 x 轴定位的值。 + * @param d 缩放或旋转图像时影响像素沿 y 轴定位的值。 + * @param tx 沿 x 轴平移每个点的距离。 + * @param ty 沿 y 轴平移每个点的距离。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(a?: number, b?: number, c?: number, d?: number, tx?: number, ty?: number); + /** + * The value that affects the positioning of pixels along the x axis when scaling or rotating an image. + * @default 1 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 缩放或旋转图像时影响像素沿 x 轴定位的值 + * @default 1 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + a: number; + /** + * The value that affects the positioning of pixels along the y axis when rotating or skewing an image. + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 旋转或倾斜图像时影响像素沿 y 轴定位的值 + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + b: number; + /** + * The value that affects the positioning of pixels along the x axis when rotating or skewing an image. + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 旋转或倾斜图像时影响像素沿 x 轴定位的值 + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + c: number; + /** + * The value that affects the positioning of pixels along the y axis when scaling or rotating an image. + * @default 1 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 缩放或旋转图像时影响像素沿 y 轴定位的值 + * @default 1 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + d: number; + /** + * The distance by which to translate each point along the x axis. + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 沿 x 轴平移每个点的距离 + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + tx: number; + /** + * The distance by which to translate each point along the y axis. + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 沿 y 轴平移每个点的距离 + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + ty: number; + /** + * Returns a new Matrix object that is a clone of this matrix, with an exact copy of the contained object. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 返回一个新的 Matrix 对象,它是此矩阵的克隆,带有与所含对象完全相同的副本。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + clone(): Matrix; + /** + * Concatenates a matrix with the current matrix, effectively combining the geometric effects of the two. In mathematical + * terms, concatenating two matrixes is the same as combining them using matrix multiplication. + * @param other The matrix to be concatenated to the source matrix. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将某个矩阵与当前矩阵连接,从而将这两个矩阵的几何效果有效地结合在一起。在数学术语中,将两个矩阵连接起来与使用矩阵乘法将它们结合起来是相同的。 + * @param other 要连接到源矩阵的矩阵。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + concat(other: Matrix): void; + /** + * Copies all of the matrix data from the source Point object into the calling Matrix object. + * @param other The Matrix object from which to copy the data. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将源 Matrix 对象中的所有矩阵数据复制到调用方 Matrix 对象中。 + * @param other 要拷贝的目标矩阵 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + copyFrom(other: Matrix): Matrix; + /** + * Sets each matrix property to a value that causes a null transformation. An object transformed by applying an + * identity matrix will be identical to the original. After calling the identity() method, the resulting matrix + * has the following properties: a=1, b=0, c=0, d=1, tx=0, ty=0. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 为每个矩阵属性设置一个值,该值将导致矩阵无转换。通过应用恒等矩阵转换的对象将与原始对象完全相同。 + * 调用 identity() 方法后,生成的矩阵具有以下属性:a=1、b=0、c=0、d=1、tx=0 和 ty=0。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + identity(): void; + /** + * Performs the opposite transformation of the original matrix. You can apply an inverted matrix to an object to + * undo the transformation performed when applying the original matrix. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 执行原始矩阵的逆转换。 + * 您可以将一个逆矩阵应用于对象来撤消在应用原始矩阵时执行的转换。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + invert(): void; + /** + * @private + */ + $invertInto(target: Matrix): void; + /** + * Applies a rotation transformation to the Matrix object. + * The rotate() method alters the a, b, c, and d properties of the Matrix object. + * @param angle The rotation angle in radians. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 对 Matrix 对象应用旋转转换。 + * rotate() 方法将更改 Matrix 对象的 a、b、c 和 d 属性。 + * @param angle 以弧度为单位的旋转角度。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + rotate(angle: number): void; + /** + * Applies a scaling transformation to the matrix. The x axis is multiplied by sx, and the y axis it is multiplied by sy. + * The scale() method alters the a and d properties of the Matrix object. + * @param sx A multiplier used to scale the object along the x axis. + * @param sy A multiplier used to scale the object along the y axis. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 对矩阵应用缩放转换。x 轴乘以 sx,y 轴乘以 sy。 + * scale() 方法将更改 Matrix 对象的 a 和 d 属性。 + * @param sx 用于沿 x 轴缩放对象的乘数。 + * @param sy 用于沿 y 轴缩放对象的乘数。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + scale(sx: number, sy: number): void; + /** + * Sets the members of Matrix to the specified values + * @param a The value that affects the positioning of pixels along the x axis when scaling or rotating an image. + * @param b The value that affects the positioning of pixels along the y axis when rotating or skewing an image. + * @param c The value that affects the positioning of pixels along the x axis when rotating or skewing an image. + * @param d The value that affects the positioning of pixels along the y axis when scaling or rotating an image.. + * @param tx The distance by which to translate each point along the x axis. + * @param ty The distance by which to translate each point along the y axis. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将 Matrix 的成员设置为指定值 + * @param a 缩放或旋转图像时影响像素沿 x 轴定位的值。 + * @param b 旋转或倾斜图像时影响像素沿 y 轴定位的值。 + * @param c 旋转或倾斜图像时影响像素沿 x 轴定位的值。 + * @param d 缩放或旋转图像时影响像素沿 y 轴定位的值。 + * @param tx 沿 x 轴平移每个点的距离。 + * @param ty 沿 y 轴平移每个点的距离。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + setTo(a: number, b: number, c: number, d: number, tx: number, ty: number): Matrix; + /** + * Returns the result of applying the geometric transformation represented by the Matrix object to the specified point. + * @param pointX The x coordinate for which you want to get the result of the Matrix transformation. + * @param pointY The y coordinate for which you want to get the result of the Matrix transformation. + * @param resultPoint A reusable instance of Point for saving the results. Passing this parameter can reduce the + * number of reallocate objects, which allows you to get better code execution performance. + * @returns The point resulting from applying the Matrix transformation. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 返回将 Matrix 对象表示的几何转换应用于指定点所产生的结果。 + * @param pointX 想要获得其矩阵转换结果的点的x坐标。 + * @param pointY 想要获得其矩阵转换结果的点的y坐标。 + * @param resultPoint 框架建议尽可能减少创建对象次数来优化性能,可以从外部传入一个复用的Point对象来存储结果,若不传入将创建一个新的Point对象返回。 + * @returns 由应用矩阵转换所产生的点。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + transformPoint(pointX: number, pointY: number, resultPoint?: Point): Point; + /** + * Translates the matrix along the x and y axes, as specified by the dx and dy parameters. + * @param dx The amount of movement along the x axis to the right, in pixels. + * @param dy The amount of movement down along the y axis, in pixels. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 沿 x 和 y 轴平移矩阵,由 dx 和 dy 参数指定。 + * @param dx 沿 x 轴向右移动的量(以像素为单位)。 + * @param dy 沿 y 轴向下移动的量(以像素为单位)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + translate(dx: number, dy: number): void; + /** + * Determines whether two matrixes are equal. + * @param other The matrix to be compared. + * @returns A value of true if the object is equal to this Matrix object; false if it is not equal. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 是否与另一个矩阵数据相等 + * @param other 要比较的另一个矩阵对象。 + * @returns 是否相等,ture表示相等。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + equals(other: Matrix): boolean; + /** + * prepend matrix + * @param a The value that affects the positioning of pixels along the x axis when scaling or rotating an image. + * @param b The value that affects the positioning of pixels along the y axis when rotating or skewing an image. + * @param c The value that affects the positioning of pixels along the x axis when rotating or skewing an image. + * @param d The value that affects the positioning of pixels along the y axis when scaling or rotating an image.. + * @param tx The distance by which to translate each point along the x axis. + * @param ty The distance by which to translate each point along the y axis. + * @returns matrix + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 前置矩阵 + * @param a 缩放或旋转图像时影响像素沿 x 轴定位的值 + * @param b 缩放或旋转图像时影响像素沿 y 轴定位的值 + * @param c 缩放或旋转图像时影响像素沿 x 轴定位的值 + * @param d 缩放或旋转图像时影响像素沿 y 轴定位的值 + * @param tx 沿 x 轴平移每个点的距离 + * @param ty 沿 y 轴平移每个点的距离 + * @returns 矩阵自身 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + prepend(a: number, b: number, c: number, d: number, tx: number, ty: number): Matrix; + /** + * append matrix + * @param a The value that affects the positioning of pixels along the x axis when scaling or rotating an image. + * @param b The value that affects the positioning of pixels along the y axis when rotating or skewing an image. + * @param c The value that affects the positioning of pixels along the x axis when rotating or skewing an image. + * @param d The value that affects the positioning of pixels along the y axis when scaling or rotating an image.. + * @param tx The distance by which to translate each point along the x axis. + * @param ty The distance by which to translate each point along the y axis. + * @returns matrix + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 后置矩阵 + * @param a 缩放或旋转图像时影响像素沿 x 轴定位的值 + * @param b 缩放或旋转图像时影响像素沿 y 轴定位的值 + * @param c 缩放或旋转图像时影响像素沿 x 轴定位的值 + * @param d 缩放或旋转图像时影响像素沿 y 轴定位的值 + * @param tx 沿 x 轴平移每个点的距离 + * @param ty 沿 y 轴平移每个点的距离 + * @returns 矩阵自身 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + append(a: number, b: number, c: number, d: number, tx: number, ty: number): Matrix; + /** + * Given a point in the pretransform coordinate space, returns the coordinates of that point after the transformation occurs. + * Unlike the standard transformation applied using the transformPoint() method, the deltaTransformPoint() method's transformation does not consider the translation parameters tx and ty. + * @param point The point for which you want to get the result of the matrix transformation. + * @returns The point resulting from applying the matrix transformation. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 如果给定预转换坐标空间中的点,则此方法返回发生转换后该点的坐标。 + * 与使用 transformPoint() 方法应用的标准转换不同,deltaTransformPoint() 方法的转换不考虑转换参数 tx 和 ty。 + * @param point 想要获得其矩阵转换结果的点 + * @returns 由应用矩阵转换所产生的点 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + deltaTransformPoint(point: Point): Point; + /** + * Returns a text value listing the properties of the Matrix object. + * @returns A string containing the values of the properties of the Matrix object: a, b, c, d, tx, and ty. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 返回将 Matrix 对象表示的几何转换应用于指定点所产生的结果。 + * @returns 一个字符串,它包含 Matrix 对象的属性值:a、b、c、d、tx 和 ty。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + toString(): string; + /** + * Includes parameters for scaling, rotation, and translation. When applied to a matrix it sets the matrix's values based on those parameters. + * @param scaleX The factor by which to scale horizontally. + * @param scaleY The factor by which scale vertically. + * @param rotation The amount to rotate, in radians. + * @param tx The number of pixels to translate (move) to the right along the x axis. + * @param ty The number of pixels to translate (move) down along the y axis. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 包括用于缩放、旋转和转换的参数。当应用于矩阵时,该方法会基于这些参数设置矩阵的值。 + * @param scaleX 水平缩放所用的系数 + * @param scaleY 垂直缩放所用的系数 + * @param rotation 旋转量(以弧度为单位) + * @param tx 沿 x 轴向右平移(移动)的像素数 + * @param ty 沿 y 轴向下平移(移动)的像素数 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + createBox(scaleX: number, scaleY: number, rotation?: number, tx?: number, ty?: number): void; + /** + * Creates the specific style of matrix expected by the beginGradientFill() and lineGradientStyle() methods of the Graphics class. + * Width and height are scaled to a scaleX/scaleY pair and the tx/ty values are offset by half the width and height. + * @param width The width of the gradient box. + * @param height The height of the gradient box. + * @param rotation The amount to rotate, in radians. + * @param tx The distance, in pixels, to translate to the right along the x axis. This value is offset by half of the width parameter. + * @param ty The distance, in pixels, to translate down along the y axis. This value is offset by half of the height parameter. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建 Graphics 类的 beginGradientFill() 和 lineGradientStyle() 方法所需的矩阵的特定样式。 + * 宽度和高度被缩放为 scaleX/scaleY 对,而 tx/ty 值偏移了宽度和高度的一半。 + * @param width 渐变框的宽度 + * @param height 渐变框的高度 + * @param rotation 旋转量(以弧度为单位) + * @param tx 沿 x 轴向右平移的距离(以像素为单位)。此值将偏移 width 参数的一半 + * @param ty 沿 y 轴向下平移的距离(以像素为单位)。此值将偏移 height 参数的一半 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + createGradientBox(width: number, height: number, rotation?: number, tx?: number, ty?: number): void; + /** + * @private + */ + $transformBounds(bounds: Rectangle): void; + /** + * @private + */ + private getDeterminant(); + /** + * @private + */ + $getScaleX(): number; + /** + * @private + */ + $getScaleY(): number; + /** + * @private + */ + $getSkewX(): number; + /** + * @private + */ + $getSkewY(): number; + /** + * @private + */ + $updateScaleAndRotation(scaleX: number, scaleY: number, skewX: number, skewY: number): void; + /** + * @private + * target = other * this + */ + $preMultiplyInto(other: Matrix, target: Matrix): void; + } + /** + * @private + * 仅供框架内复用,要防止暴露引用到外部。 + */ + let $TempMatrix: Matrix; +} +declare namespace egret { + /** + * A Rectangle object is an area defined by its position, as indicated by its top-left corner point (x, y) and by its + * width and its height.
+ * The x, y, width, and height properties of the Rectangle class are independent of each other; changing the value of + * one property has no effect on the others. However, the right and bottom properties are integrally related to those + * four properties. For example, if you change the value of the right property, the value of the width property changes; + * if you change the bottom property, the value of the height property changes. + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/geom/Rectangle.ts + * @language en_US + */ + /** + * Rectangle 对象是按其位置(由它左上角的点 (x, y) 确定)以及宽度和高度定义的区域。
+ * Rectangle 类的 x、y、width 和 height 属性相互独立;更改一个属性的值不会影响其他属性。 + * 但是,right 和 bottom 属性与这四个属性是整体相关的。例如,如果更改 right 属性的值,则 width + * 属性的值将发生变化;如果更改 bottom 属性,则 height 属性的值将发生变化。 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/geom/Rectangle.ts + * @language zh_CN + */ + class Rectangle extends HashObject { + /** + * Releases a rectangle instance to the object pool. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 释放一个Rectangle实例到对象池 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static release(rect: Rectangle): void; + /** + * get a rectangle instance from the object pool or create a new one. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从对象池中取出或创建一个新的Rectangle对象。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static create(): Rectangle; + /** + * Creates a new Rectangle object with the top-left corner specified by the x and y parameters and with the specified + * width and height parameters. + * @param x The x coordinate of the top-left corner of the rectangle. + * @param y The y coordinate of the top-left corner of the rectangle. + * @param width The width of the rectangle, in pixels. + * @param height The height of the rectangle, in pixels. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个新 Rectangle 对象,其左上角由 x 和 y 参数指定,并具有指定的 width 和 height 参数。 + * @param x 矩形左上角的 x 坐标。 + * @param y 矩形左上角的 y 坐标。 + * @param width 矩形的宽度(以像素为单位)。 + * @param height 矩形的高度(以像素为单位)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(x?: number, y?: number, width?: number, height?: number); + /** + * The x coordinate of the top-left corner of the rectangle. + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 矩形左上角的 x 坐标。 + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + x: number; + /** + * The y coordinate of the top-left corner of the rectangle. + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 矩形左上角的 y 坐标。 + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + y: number; + /** + * The width of the rectangle, in pixels. + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 矩形的宽度(以像素为单位)。 + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + width: number; + /** + * 矩形的高度(以像素为单位)。 + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * The height of the rectangle, in pixels. + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + height: number; + /** + * The sum of the x and width properties. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * x 和 width 属性的和。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + right: number; + /** + * The sum of the y and height properties. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * y 和 height 属性的和。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + bottom: number; + /** + * The x coordinate of the top-left corner of the rectangle. Changing the left property of a Rectangle object has + * no effect on the y and height properties. However it does affect the width property, whereas changing the x value + * does not affect the width property. + * The value of the left property is equal to the value of the x property. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 矩形左上角的 x 坐标。更改 Rectangle 对象的 left 属性对 y 和 height 属性没有影响。但是,它会影响 width 属性,而更改 x 值不会影响 width 属性。 + * left 属性的值等于 x 属性的值。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + left: number; + /** + * The y coordinate of the top-left corner of the rectangle. Changing the top property of a Rectangle object has + * no effect on the x and width properties. However it does affect the height property, whereas changing the y + * value does not affect the height property.
+ * The value of the top property is equal to the value of the y property. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 矩形左上角的 y 坐标。更改 Rectangle 对象的 top 属性对 x 和 width 属性没有影响。但是,它会影响 height 属性,而更改 y 值不会影响 height 属性。
+ * top 属性的值等于 y 属性的值。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + top: number; + /** + * The location of the Rectangle object's top-left corner, determined by the x and y coordinates of the point. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 由该点的 x 和 y 坐标确定的 Rectangle 对象左上角的位置。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + topLeft: Point; + /** + * The location of the Rectangle object's bottom-right corner, determined by the values of the right and bottom properties. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 由 right 和 bottom 属性的值确定的 Rectangle 对象的右下角的位置。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + bottomRight: Point; + /** + * Copies all of rectangle data from the source Rectangle object into the calling Rectangle object. + * @param sourceRect The Rectangle object from which to copy the data. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将源 Rectangle 对象中的所有矩形数据复制到调用方 Rectangle 对象中。 + * @param sourceRect 要从中复制数据的 Rectangle 对象。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + copyFrom(sourceRect: Rectangle): Rectangle; + /** + * Sets the members of Rectangle to the specified values + * @param x The x coordinate of the top-left corner of the rectangle. + * @param y The y coordinate of the top-left corner of the rectangle. + * @param width The width of the rectangle, in pixels. + * @param height The height of the rectangle, in pixels. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将 Rectangle 的成员设置为指定值 + * @param x 矩形左上角的 x 坐标。 + * @param y 矩形左上角的 y 坐标。 + * @param width 矩形的宽度(以像素为单位)。 + * @param height 矩形的高度(以像素为单位)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + setTo(x: number, y: number, width: number, height: number): Rectangle; + /** + * Determines whether the specified point is contained within the rectangular region defined by this Rectangle object. + * @param x The x coordinate (horizontal position) of the point. + * @param y The y coordinate (vertical position) of the point. + * @returns A value of true if the Rectangle object contains the specified point; otherwise false. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 确定由此 Rectangle 对象定义的矩形区域内是否包含指定的点。 + * @param x 检测点的x轴 + * @param y 检测点的y轴 + * @returns 如果检测点位于矩形内,返回true,否则,返回false + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + contains(x: number, y: number): boolean; + /** + * If the Rectangle object specified in the toIntersect parameter intersects with this Rectangle object, returns + * the area of intersection as a Rectangle object. If the rectangles do not intersect, this method returns an empty + * Rectangle object with its properties set to 0. + * @param toIntersect The Rectangle object to compare against to see if it intersects with this Rectangle object. + * @returns A Rectangle object that equals the area of intersection. If the rectangles do not intersect, this method + * returns an empty Rectangle object; that is, a rectangle with its x, y, width, and height properties set to 0. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 如果在 toIntersect 参数中指定的 Rectangle 对象与此 Rectangle 对象相交,则返回交集区域作为 Rectangle 对象。如果矩形不相交, + * 则此方法返回一个空的 Rectangle 对象,其属性设置为 0。 + * @param toIntersect 要对照比较以查看其是否与此 Rectangle 对象相交的 Rectangle 对象。 + * @returns 等于交集区域的 Rectangle 对象。如果该矩形不相交,则此方法返回一个空的 Rectangle 对象;即,其 x、y、width 和 + * height 属性均设置为 0 的矩形。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + intersection(toIntersect: Rectangle): Rectangle; + /** + * Increases the size of the Rectangle object by the specified amounts, in pixels. + * The center point of the Rectangle object stays the same, and its size increases to the left and right by the dx value, and to the top and the bottom by the dy value. + * @param dx The value to be added to the left and the right of the Rectangle object. + * @param dy The value to be added to the top and the bottom of the Rectangle. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 按指定量增加 Rectangle 对象的大小(以像素为单位) + * 保持 Rectangle 对象的中心点不变,使用 dx 值横向增加它的大小,使用 dy 值纵向增加它的大小。 + * @param dx Rectangle 对象横向增加的值。 + * @param dy Rectangle 对象纵向增加的值。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + inflate(dx: number, dy: number): void; + /** + * @private + */ + $intersectInPlace(clipRect: Rectangle): Rectangle; + /** + * Determines whether the object specified in the toIntersect parameter intersects with this Rectangle object. + * This method checks the x, y, width, and height properties of the specified Rectangle object to see if it + * intersects with this Rectangle object. + * @param toIntersect The Rectangle object to compare against this Rectangle object. + * @returns A value of true if the specified object intersects with this Rectangle object; otherwise false. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 确定在 toIntersect 参数中指定的对象是否与此 Rectangle 对象相交。此方法检查指定的 Rectangle + * 对象的 x、y、width 和 height 属性,以查看它是否与此 Rectangle 对象相交。 + * @param toIntersect 要与此 Rectangle 对象比较的 Rectangle 对象。 + * @returns 如果两个矩形相交,返回true,否则返回false + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + intersects(toIntersect: Rectangle): boolean; + /** + * Determines whether or not this Rectangle object is empty. + * @returns A value of true if the Rectangle object's width or height is less than or equal to 0; otherwise false. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 确定此 Rectangle 对象是否为空。 + * @returns 如果 Rectangle 对象的宽度或高度小于等于 0,则返回 true 值,否则返回 false。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + isEmpty(): boolean; + /** + * Sets all of the Rectangle object's properties to 0. A Rectangle object is empty if its width or height is less than or equal to 0. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将 Rectangle 对象的所有属性设置为 0。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + setEmpty(): void; + /** + * Returns a new Rectangle object with the same values for the x, y, width, and height properties as the original Rectangle object. + * @returns A new Rectangle object with the same values for the x, y, width, and height properties as the original Rectangle object. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 返回一个新的 Rectangle 对象,其 x、y、width 和 height 属性的值与原始 Rectangle 对象的对应值相同。 + * @returns 新的 Rectangle 对象,其 x、y、width 和 height 属性的值与原始 Rectangle 对象的对应值相同。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + clone(): Rectangle; + /** + * Determines whether the specified point is contained within the rectangular region defined by this Rectangle object. + * This method is similar to the Rectangle.contains() method, except that it takes a Point object as a parameter. + * @param point The point, as represented by its x and y coordinates. + * @returns A value of true if the Rectangle object contains the specified point; otherwise false. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 确定由此 Rectangle 对象定义的矩形区域内是否包含指定的点。 + * 此方法与 Rectangle.contains() 方法类似,只不过它采用 Point 对象作为参数。 + * @param point 包含点对象 + * @returns 如果包含,返回true,否则返回false + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + containsPoint(point: Point): boolean; + /** + * Determines whether the Rectangle object specified by the rect parameter is contained within this Rectangle object. + * A Rectangle object is said to contain another if the second Rectangle object falls entirely within the boundaries of the first. + * @param rect The Rectangle object being checked. + * @returns A value of true if the Rectangle object that you specify is contained by this Rectangle object; otherwise false. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 确定此 Rectangle 对象内是否包含由 rect 参数指定的 Rectangle 对象。 + * 如果一个 Rectangle 对象完全在另一个 Rectangle 的边界内,我们说第二个 Rectangle 包含第一个 Rectangle。 + * @param rect 所检查的 Rectangle 对象 + * @returns 如果此 Rectangle 对象包含您指定的 Rectangle 对象,则返回 true 值,否则返回 false。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + containsRect(rect: egret.Rectangle): boolean; + /** + * Determines whether the object specified in the toCompare parameter is equal to this Rectangle object. + * This method compares the x, y, width, and height properties of an object against the same properties of this Rectangle object. + * @param The rectangle to compare to this Rectangle object. + * @returns A value of true if the object has exactly the same values for the x, y, width, and height properties as this Rectangle object; otherwise false. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 确定在 toCompare 参数中指定的对象是否等于此 Rectangle 对象。 + * 此方法将某个对象的 x、y、width 和 height 属性与此 Rectangle 对象所对应的相同属性进行比较。 + * @param toCompare 要与此 Rectangle 对象进行比较的矩形。 + * @returns 如果对象具有与此 Rectangle 对象完全相同的 x、y、width 和 height 属性值,则返回 true 值,否则返回 false。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + equals(toCompare: Rectangle): boolean; + /** + * Increases the size of the Rectangle object. This method is similar to the Rectangle.inflate() method except it takes a Point object as a parameter. + * @param point 此 Point 对象的 x 属性用于增加 Rectangle 对象的水平尺寸。y 属性用于增加 Rectangle 对象的垂直尺寸。 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 增加 Rectangle 对象的大小。此方法与 Rectangle.inflate() 方法类似,只不过它采用 Point 对象作为参数。 + * @param point The x property of this Point object is used to increase the horizontal dimension of the Rectangle object. The y property is used to increase the vertical dimension of the Rectangle object. + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + inflatePoint(point: Point): void; + /** + * Adjusts the location of the Rectangle object, as determined by its top-left corner, by the specified amounts. + * @param dx Moves the x value of the Rectangle object by this amount. + * @param dy Moves the y value of the Rectangle object by this amount. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 按指定量调整 Rectangle 对象的位置(由其左上角确定)。 + * @param dx 将 Rectangle 对象的 x 值移动此数量。 + * @param dy 将 Rectangle 对象的 t 值移动此数量。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + offset(dx: number, dy: number): void; + /** + * Adjusts the location of the Rectangle object using a Point object as a parameter. This method is similar to the Rectangle.offset() method, except that it takes a Point object as a parameter. + * @param point A Point object to use to offset this Rectangle object. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将 Point 对象用作参数来调整 Rectangle 对象的位置。此方法与 Rectangle.offset() 方法类似,只不过它采用 Point 对象作为参数。 + * @param point 要用于偏移此 Rectangle 对象的 Point 对象。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + offsetPoint(point: Point): void; + /** + * Builds and returns a string that lists the horizontal and vertical positions and the width and height of the Rectangle object. + * @returns A string listing the value of each of the following properties of the Rectangle object: x, y, width, and height. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 生成并返回一个字符串,该字符串列出 Rectangle 对象的水平位置和垂直位置以及高度和宽度。 + * @returns 一个字符串,它列出了 Rectangle 对象的下列各个属性的值:x、y、width 和 height。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + toString(): string; + /** + * Adds two rectangles together to create a new Rectangle object, by filling in the horizontal and vertical space between the two rectangles. + * @param toUnion A Rectangle object to add to this Rectangle object. + * @returns A new Rectangle object that is the union of the two rectangles. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 通过填充两个矩形之间的水平和垂直空间,将这两个矩形组合在一起以创建一个新的 Rectangle 对象。 + * @param toUnion 要添加到此 Rectangle 对象的 Rectangle 对象。 + * @returns 充当两个矩形的联合的新 Rectangle 对象。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + union(toUnion: Rectangle): Rectangle; + /** + * @private + */ + $getBaseWidth(angle: number): number; + /** + * @private + */ + $getBaseHeight(angle: number): number; + } + /** + * @private + * 仅供框架内复用,要防止暴露引用到外部。 + */ + let $TempRectangle: Rectangle; +} +declare namespace egret { +} +declare namespace egret { + /** + * The JointStyle class is an enumeration of constant values that specify the joint style to use in drawing lines. + * These constants are provided for use as values in the joints parameter of the egret.Graphics.lineStyle() method. + * @see egret.Graphics#lineStyle() + * @version Egret 2.5 + * @platform Web,Native + * @language en_US + */ + /** + * JointStyle 类是指定要在绘制线条中使用的联接点样式的常量值枚举。提供的这些常量用作 egret.Graphics.lineStyle() 方法的 joints 参数中的值。 + * @see egret.Graphics#lineStyle() + * @version Egret 2.5 + * @platform Web,Native + * @language zh_CN + */ + const JointStyle: { + BEVEL: string; + MITER: string; + ROUND: string; + }; +} +declare namespace egret { +} +/** + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/localStorage/localStorage.ts + */ +declare namespace egret.localStorage { + /** + * Read data + * @param key {string} Name of the key to be read + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 读取数据 + * @param key {string} 要读取的键名称 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + let getItem: (key: string) => string; + /** + * Save data + * @param key {string} Name of the key to be saved + * @param value {string} Value to be saved + * @returns {boolean} Whether data is saved successfully + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 保存数据 + * @param key {string} 要保存的键名称 + * @param value {string} 要保存的值 + * @returns {boolean} 数据保存是否成功 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + let setItem: (key: string, value: string) => boolean; + /** + * Delete data + * @param key {string} Name of the key to be deleted + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 删除数据 + * @param key {string} 要删除的键名称 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + let removeItem: (key: string) => void; + /** + * Clear all data + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将所有数据清空 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + let clear: () => void; +} +declare namespace egret.sys { + /** + * @private + * @param channel + */ + function $pushSoundChannel(channel: SoundChannel): void; + /** + * @private + * @param channel + */ + function $popSoundChannel(channel: SoundChannel): boolean; +} +declare namespace egret { + /** + * The Sound class lets you work with sound in an application. + * The Sound class lets you create a Sound object, load and play an external audio file into that object. + * More detailed control of the sound is performed through the SoundChannel + * + * @event egret.Event.COMPLETE Dispatch when the audio resource is loaded and ready to play + * @event egret.IOErrorEvent.IO_ERROR Dispatch when the audio resource is failed to load + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/media/Sound.ts + * @language en_US + */ + /** + * Sound 允许您在应用程序中使用声音。使用 Sound 类可以创建 Sound 对象、将外部音频文件加载到该对象并播放该文件。 + * 可通过 SoundChannel 对声音执行更精细的控制,如控制音量和监控播放进度。 + * @see http://edn.egret.com/cn/docs/page/156 音频系统 + * + * @event egret.Event.COMPLETE 音频加载完成时抛出 + * @event egret.IOErrorEvent.IO_ERROR 音频加载失败时抛出 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/media/Sound.ts + * @language zh_CN + */ + interface Sound extends EventDispatcher { + /** + * Initiates loading of an external audio file from the specified URL. + * @param url Audio file URL + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 启动从指定 URL 加载外部音频文件的过程。 + * @param url 需要加载的音频文件URL + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + load(url: string): void; + /** + * Generates a new SoundChannel object to play back the sound. + * @param startTime The initial position in seconds at which playback should start, (default = 0) + * @param loops Plays, the default value is 0. Greater than 0 to the number of plays, such as 1 to play 1, less than or equal to 0, to loop. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 生成一个新的 SoundChannel 对象来播放该声音。此方法返回 SoundChannel 对象,访问该对象可停止声音调整音量。 + * @param startTime 应开始播放的初始位置(以秒为单位),默认值是 0 + * @param loops 播放次数,默认值是 0,循环播放。 大于 0 为播放次数,如 1 为播放 1 次;小于等于 0,为循环播放。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + play(startTime?: number, loops?: number): SoundChannel; + /** + * Closes the stream, causing any download of data to cease + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 关闭该流,从而停止所有数据的下载。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + close(): void; + /** + * Type, default is egret.Sound.EFFECT. + * In the native and runtime environment, while only play a background music, sound length so as not to be too long. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 类型,默认为 egret.Sound.EFFECT。 + * 在 native 和 runtime 环境下,背景音乐同时只能播放一个,音效长度尽量不要太长。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + type: string; + /** + * Length of the current sound (in seconds). + * @version Egret 2.4 + * @platform Web,Native + * @readOnly + * @language en_US + */ + /** + * 当前声音的长度(以秒为单位)。 + * @version Egret 2.4 + * @platform Web,Native + * @readOnly + * @language zh_CN + */ + length: number; + } + /** + * @copy egret.Sound + */ + let Sound: { + /** + * Create Sound object, load an external audio file and play + * @param url Audio file URL, Sound will start to load the media if url is not empty + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建 Sound 对象、将外部音频文件加载到该对象并播放该文件 + * @param url 需要加载的音频文件URL,如果指定了 url, Sound会立即开始加载指定的媒体文件 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + new (): Sound; + /** + * Background music + * @default "music" + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 背景音乐 + * @default "music" + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + MUSIC: string; + /** + * EFFECT + * @default "effect" + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 音效 + * @default "effect" + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + EFFECT: string; + }; +} +declare namespace egret { + /** + * The SoundChannel class controls a sound in an application. + * Every sound is assigned to a sound channel, and the application + * can have multiple sound channels that are mixed together. + * The SoundChannel class contains a stop() method, properties for + * set the volume of the channel + * + * @event egret.Event.SOUND_COMPLETE Dispatch when a sound has finished playing at last time + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/media/Sound.ts + * @language en_US + */ + /** + * SoundChannel 类控制应用程序中的声音。每个声音均分配给一个声道,而且应用程序可以具有混合在一起的多个声道。 + * SoundChannel 类包含 stop() 方法、用于设置音量和监视播放进度的属性。 + * + * @event egret.Event.SOUND_COMPLETE 音频最后一次播放完成时抛出 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/media/Sound.ts + * @language zh_CN + */ + interface SoundChannel extends IEventDispatcher { + /** + * The volume, ranging from 0 (silent) to 1 (full volume). + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 音量范围从 0(静音)至 1(最大音量)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + volume: number; + /** + * When the sound is playing, the position property indicates + * in seconds the current point that is being played in the sound file. + * @version Egret 2.4 + * @platform Web,Native + * @readOnly + * @language en_US + */ + /** + * 当播放声音时,position 属性表示声音文件中当前播放的位置(以秒为单位) + * @version Egret 2.4 + * @platform Web,Native + * @readOnly + * @language zh_CN + */ + position: number; + /** + * Stops the sound playing in the channel. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 停止在该声道中播放声音。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + stop(): void; + } +} +declare namespace egret { + /** + * The Video class lets you work with video in an application. + * The Video class lets you create a Video object, load and play an external video file into that object. + * Note: On most mobile device, the video is playback in the full screen mode.
+ * + * @param url URL of the media to play, Video will start to load if the url is not empty + * + * @event egret.Event.COMPLETE Dispatch when the video resource is loaded and ready to play + * @event egret.Event.ENDED Dispatch when the video playback ended + * @event egret.IOErrorEvent.IO_ERROR when the video is failed to load + * @version Egret 2.4 + * @platform Web + * @includeExample egret/media/Video.ts + * @language en_US + */ + /** + * Video 允许您在应用程序中使用视频。使用 Video 类可以创建 Video 对象、将外部视频文件加载到该对象并播放该文件。
+ * 注意: 在大多数移动设备中,视频是强制全屏播放的,所以你可以直接调用 play() 方法全屏播放视频,不用将它绘制在Stage中。 + * @see http://edn.egret.com/cn/docs/page/657 视频系统 + * + * @param url 要播放的视频的URL,如果url不为空,Video会立即加载这个视频 + * + * @event egret.Event.COMPLETE 视频加载完成时抛出 + * @event egret.Event.ENDED 视频播放完成时抛出 + * @event egret.IOErrorEvent.IO_ERROR 视频加载失败时触发 + * @version Egret 2.4 + * @platform Web + * @includeExample egret/media/Video.ts + * @language zh_CN + */ + interface Video extends DisplayObject { + /** + * Initiates loading of an external video file from the specified URL. + * @param url Audio file URL + * * @param cache Should cache the video,only used in Native + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 启动从指定 URL 加载外部视频文件的过程。 + * @param url 需要加载的视频文件URL + * @param cache 是否需要缓存到本地,只在 Native 上使用 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + load(url: string, cache?: boolean): void; + /** + * Play back the video. + * @param startTime The initial position in seconds at which playback should start, (default = 0) + * @param loop Defines should play the video again when the video is ended. (default = false) + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 播放该视频 + * @param startTime 应开始播放的初始位置(以秒为单位),默认值是视频上次结束的位置 + * @param loop 是否需要循环播放,默认值是 false + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + play(startTime?: number, loop?: boolean): any; + /** + * Closes the stream, causing any download of data to cease + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 关闭该流,从而停止所有数据的下载。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + close(): void; + /** + * The URL of the video you want to play. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 想要播放的视频的URL + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + src: string; + /** + * The URL of an image you want to display before the video is loaded or video cannot been draw on the canvas on some mobile device. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 视频加载前,或者在不支持将 video 画在 canvas 的设备上,想要显示的视频截图地址。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + poster: string; + /** + * Should play the video in fullscreen mode (default = true). + * Currently only supports full-screen mobile terminal web. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 是否全屏播放这个视频(默认值是 true)。 + * 目前移动端 web 只支持全屏。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + fullscreen: boolean; + /** + * The volume, ranging from 0 (silent) to 1 (full volume). + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 音量范围从 0(静音)至 1(最大音量)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + volume: number; + /** + * When the video is playing, the position property indicates + * in seconds the current point that is being played in the video file. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 当播放视频时,position 属性表示视频文件中当前播放的位置(以秒为单位) + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + position: number; + /** + * Pause the video playing. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 暂停播放。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + pause(): void; + /** + * Get bitmapData of the video file, you can use the video as bitmapData on the stage. + * Note: On most mobile device, the video is playback in the full screen mode. + * So you can just use the play() method instead of draw it on the Stage + * @version Egret 2.4 + * @platform Web + * @language en_US + */ + /** + * 获取视频的 bitmapData, 你可以将视频绘制到舞台上。 + * 注意: 在大多数移动设备中,视频是全屏播放的,所以你可以直接调用 play() 方法全屏播放视频,不用将它绘制在Stage中。 + * @version Egret 2.4 + * @platform Web + * @language zh_CN + */ + bitmapData?: BitmapData; + /** + * Whether current video is paused. + * @version Egret 2.4 + * @platform Web,Native + * @readOnly + * @language en_US + */ + /** + * 当前视频是否在暂停状态。 + * @version Egret 2.4 + * @platform Web,Native + * @readOnly + * @language zh_CN + */ + paused: boolean; + /** + * Length of the current video (in seconds). + * @version Egret 3.0.8 + * @platform Web,Native + * @readOnly + * @language en_US + */ + /** + * 当前视频的长度(以秒为单位)。 + * @version Egret 3.0.8 + * @platform Web,Native + * @readOnly + * @language zh_CN + */ + length: number; + } + /** + * @copy egret.Video + */ + let Video: { + new (url?: string, cache?: boolean): Video; + }; +} +declare namespace egret { + /** + * The HttpMethod class provides values that specify whether the HttpRequest object should use the POST method + * or the GET method when sending data to a server. + * @see egret.HttpRequest + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * HttpRequestMethod 类提供了一些值,这些值可指定在将数据发送到服务器时, + * HttpRequest 对象应使用 POST 方法还是 GET 方法。 + * @see egret.HttpRequest + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + namespace HttpMethod { + /** + * Specifies that the HttpRequest object is a GET. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示 HttpRequest 对象是一个 GET。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + const GET = "GET"; + /** + * Specifies that the HttpRequest object is a POST. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示 HttpRequest 对象是一个 POST。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + const POST = "POST"; + } +} +declare namespace egret { + /** + * The HttpRequest class downloads data from a URL as text or binary data. It is useful for downloading text files, + * XML, or other information to be used in a dynamic, data-driven application. A HttpRequest object downloads all + * of the data from a URL before making it available to code in the applications. It sends out notifications about + * the progress of the download, which you can monitor through the bytesLoaded and bytesTotal properties, + * as well as through dispatched events. + * @event egret.Event.COMPLETE Dispatched when the net request is complete. + * @event egret.Event.IO_ERROR Dispatched when the net request is failed. + * @event egret.ProgressEvent.PROGRESS Dispatched when data is received as the download operation progresses. + * @see egret.HttpMethod + * @see egret.HttpResponseType + * @includeExample egret/net/HttpRequestExample.ts + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * HttpRequest 类以文本或二进制数据的形式从 URL 下载数据。 + * HttpRequest 对象会先从 URL 中下载所有数据,然后才将数据用于应用程序中的代码。它会发出有关下载进度的通知, + * 通过 bytesLoaded 和 bytesTotal 属性以及已调度的事件,可以监视下载进度。 + * @event egret.Event.COMPLETE 加载完成 + * @event egret.Event.IO_ERROR 加载失败 + * @event egret.ProgressEvent.PROGRESS 加载进度,可通过event.bytesLoaded和event.bytesTotal统计进度信息。 + * @see egret.HttpMethod + * @see egret.HttpResponseType + * @includeExample egret/net/HttpRequestExample.ts + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + interface HttpRequest extends EventDispatcher { + /** + * The data received from the load operation. The format of the data depends on the setting of the responseType property. + * @readOnly + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 本次请求返回的数据,数据类型根据 responseType 设置的值确定。 + * @readOnly + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + response: any; + /** + * Controls whether the downloaded data is received as text (HttpResponseType.TEXT) or raw binary data (HttpResponseType.ArrayBuffer)
+ * Note:If you attempt to set this property to an invalid value, Egret runtime set the value to HttpResponseType.TEXT. + * @default egret.HttpResponseType.TEXT + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 设置返回的数据格式为文本(HttpResponseType.TEXT)还是二进制数据(HttpResponseType.ArrayBuffer)
+ * 注意:若尝试设置此属性为一个非法的值,运行时将使用HttpResponseType.TEXT。 + * @default egret.HttpResponseType.TEXT + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + responseType: string; + /** + * Can be set to a time in milliseconds.When set to a non-zero value will cause fetching to terminate after the given time has passed. + * @default egret.HttpResponseType.TEXT + * @version Egret 5.2.15 + * @platform Web,Native + * @language en_US + */ + /** + * 代表着一个请求在被自动终止前所消耗的毫秒数。默认值为 0,意味着没有超时。 + * @default egret.HttpResponseType.TEXT + * @version Egret 5.2.15 + * @platform Web,Native + * @language zh_CN + */ + timeout: number; + /** + * indicates whether or not cross-site Access-Control requests should be made using credentials such as cookies + * or authorization headers. (This never affects same-site requests.) + * @default false + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表明在进行跨站(cross-site)的访问控制(Access-Control)请求时,是否使用认证信息(例如cookie或授权的header)。(这个标志不会影响同站的请求) + * @default false + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + withCredentials: boolean; + /** + * Initializes a request.
+ * Note: Calling this method for an already active request (one for which open() or openRequest() has already been + * called) is the equivalent of calling abort(). + * @param url The URL to send the request to. + * @param method The HTTP method to use, please use the const value in the HttpMethod class. + * @see egret.HttpMethod + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 初始化一个请求.
+ * 注意: 若在已经发出请求的对象上调用此方法,相当于立即调用abort(). + * @param url 该请求所要访问的URL该请求所要访问的URL + * @param method 请求所使用的HTTP方法, 请使用 HttpMethod 定义的枚举值. + * @see egret.HttpMethod + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + open(url: string, method?: string): void; + /** + * Sends the request. + * @param data the data to send. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 发送请求. + * @param data 需要发送的数据 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + send(data?: any): void; + /** + * Aborts the request if it has already been sent. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 如果请求已经被发送,则立刻中止请求. + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + abort(): void; + /** + * Returns all the response headers as a string, or null if no response has been received. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 返回所有响应头信息(响应头名和值), 如果响应头还没接受,则返回"". + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + getAllResponseHeaders(): string; + /** + * Sets the value of an HTTP request header. You must call setRequestHeader() after open(). + * @param header The name of the header whose value is to be set. + * @param value The value to set as the body of the header. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 给指定的HTTP请求头赋值.在这之前,您必须确认已经调用 open() 方法打开了一个url. + * @param header 将要被赋值的请求头名称. + * @param value 给指定的请求头赋的值. + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + setRequestHeader(header: string, value: string): void; + /** + * Returns the string containing the text of the specified header, or null if either the response has not yet been + * received or the header doesn't exist in the response. + * @param header The name of the header whose value is to be get. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 返回指定的响应头的值, 如果响应头还没被接受,或该响应头不存在,则返回"". + * @param header 要返回的响应头名称 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + getResponseHeader(header: string): string; + } + /** + * Creates a HttpRequest object. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个 HttpRequest 实例。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + let HttpRequest: { + new (): HttpRequest; + }; +} +declare namespace egret { + /** + * The HttpResponseType class provides values that specify how downloaded data is received. + * @see egret.HttpRequest + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * URLLoaderDataFormat 类提供了一些用于指定如何接收已下载数据的值。 + * @see egret.HttpRequest + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + class HttpResponseType { + /** + * Specifies that downloaded data is received as text. This is the default value of HttpRequest.responseType + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 返回字符串。HttpRequest.responseType属性的默认值。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static TEXT: string; + /** + * Specifies that downloaded data is received as raw binary data. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 返回二进制的ArrayBuffer对象。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static ARRAY_BUFFER: string; + } +} +declare namespace egret { + /** + * The Loader class is used to load image (JPG, PNG, or GIF) files. Use the load() method to initiate loading. + * The loaded image data is in the data property of ImageLoader. + * @event egret.Event.COMPLETE Dispatched when the net request is complete. + * @event egret.IOErrorEvent.IO_ERROR Dispatched when the net request is failed. + * @see egret.HttpRequest + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/net/ImageLoaderExample.ts + * @see http://edn.egret.com/cn/docs/page/590 加载位图文件 + * @language en_US + */ + /** + * ImageLoader 类可用于加载图像(JPG、PNG 或 GIF)文件。使用 load() 方法来启动加载。被加载的图像对象数据将存储在 ImageLoader.data 属性上 。 + * @event egret.Event.COMPLETE 加载完成 + * @event egret.IOErrorEvent.IO_ERROR 加载失败 + * @see egret.HttpRequest + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/net/ImageLoaderExample.ts + * @see http://edn.egret.com/cn/docs/page/590 加载位图文件 + * @language zh_CN + */ + interface ImageLoader extends EventDispatcher { + /** + * The data received from the load operation. + * @default null + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 使用 load() 方法加载成功的 BitmapData 图像数据。 + * @default null + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + data: BitmapData; + /** + * Specifies whether or not cross-site Access-Control requests should be made when loading a image from foreign origins.
+ * possible values are:"anonymous","use-credentials" or null. + * @default null + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 当从其他站点加载一个图片时,指定是否启用跨域资源共享(CORS),默认值为null。
+ * 可以设置为"anonymous","use-credentials"或null,设置为其他值将等同于"anonymous"。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + crossOrigin: string; + /** + * start a load operation。
+ * Note: Calling this method for an already active request (one for which load() has already been + * called) will abort the last load operation immediately. + * @param url 要加载的图像文件的地址。 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 启动一次图像加载。
+ * 注意:若之前已经调用过加载请求,重新调用 load() 将终止先前的请求,并开始新的加载。 + * @param url 要加载的图像文件的地址。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + load(url: string): void; + } + /** + * Creates a ImageLoader object + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个 ImageLoader 实例 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + let ImageLoader: { + /** + * constructor + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 构造函数 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + new (): ImageLoader; + /** + * Specifies whether to enable cross-origin resource sharing, If ImageLoader instance has been set crossOrigin property will be used to set the property. + * @version Egret 2.5.7 + * @platform Web,Native + * @language en_US + */ + /** + * 指定是否启用跨域资源共享,如果ImageLoader实例有设置过crossOrigin属性将使用设置的属性 + * @version Egret 2.5.7 + * @platform Web,Native + * @language zh_CN + */ + crossOrigin: string; + }; +} +declare namespace egret.sys { + /** + * @private + * 显示列表 + */ + class DisplayList extends HashObject { + /** + * 创建一个DisplayList对象,若内存不足或无法创建RenderBuffer,将会返回null。 + */ + static create(target: DisplayObject): DisplayList; + /** + * @private + * 创建一个DisplayList对象 + */ + constructor(root: DisplayObject); + private isStage; + /** + * 位图渲染节点 + */ + $renderNode: RenderNode; + /** + * @private + * 获取渲染节点 + */ + $getRenderNode(): sys.RenderNode; + /** + * @private + */ + renderBuffer: RenderBuffer; + /** + * @private + */ + offsetX: number; + /** + * @private + */ + offsetY: number; + /** + * @private + */ + private offsetMatrix; + /** + * @private + * 显示列表根节点 + */ + root: DisplayObject; + /** + * @private + * 设置剪裁边界,不再绘制完整目标对象,画布尺寸由外部决定,超过边界的节点将跳过绘制。 + */ + setClipRect(width: number, height: number): void; + $canvasScaleX: number; + $canvasScaleY: number; + /** + * @private + * 绘制根节点显示对象到目标画布,返回draw的次数。 + */ + drawToSurface(): number; + private bitmapData; + /** + * @private + * 改变画布的尺寸,由于画布尺寸修改会清空原始画布。所以这里将原始画布绘制到一个新画布上,再与原始画布交换。 + */ + changeSurfaceSize(): void; + static $canvasScaleFactor: number; + /** + * @private + */ + static $canvasScaleX: number; + static $canvasScaleY: number; + /** + * @private + */ + static $setCanvasScale(x: number, y: number): void; + } +} +declare namespace egret { + type runEgretOptions = { + renderMode?: string; + audioType?: number; + screenAdapter?: sys.IScreenAdapter; + antialias?: boolean; + canvasScaleFactor?: number; + calculateCanvasScaleFactor?: (context: CanvasRenderingContext2D) => number; + /** + * 以下目前仅供小游戏使用 + * The following are for mini-games only + */ + entryClassName?: string; + scaleMode?: string; + frameRate?: number; + contentWidth?: number; + contentHeight?: number; + orientation?: string; + maxTouches?: number; + showFPS?: boolean; + showLog?: boolean; + fpsStyles?: string; + }; + /** + * egret project entry function + * @param options An object containing the initialization properties for egret engine. + * @language en_US + */ + /** + * egret工程入口函数 + * @param options 一个可选对象,包含初始化Egret引擎需要的参数。 + * @language zh_CN + */ + function runEgret(options?: runEgretOptions): void; + /** + * Refresh the screen display + * @language en_US + */ + /** + * 刷新屏幕显示 + * @language zh_CN + */ + function updateAllScreens(): void; +} +declare namespace egret { + /** + * @private + */ + interface FPSDisplay { + /** + * 更新FPS信息 + */ + update(datas: FPSData): void; + /** + * 插入一条log信息 + */ + updateInfo(info: string): void; + /** + * 插入一条warn信息 + */ + updateWarn(info: string): void; + /** + * 插入一条error信息 + */ + updateError(info: string): void; + } + /** + * @private + */ + let FPSDisplay: { + new (stage: Stage, showFPS: boolean, showLog: boolean, logFilter: string, styles: Object): FPSDisplay; + }; +} +/** + * @private + */ +interface FPSData extends Object { + fps: number; + draw: number; + costTicker: number; + costRender: number; +} +declare namespace egret.sys { + let $TempStage: egret.Stage; + /** + * @private + * Egret播放器 + */ + class Player extends HashObject { + /** + * @private + * 实例化一个播放器对象。 + */ + constructor(buffer: RenderBuffer, stage: Stage, entryClassName: string); + /** + * @private + */ + private createDisplayList(stage, buffer); + /** + * @private + */ + private screenDisplayList; + /** + * @private + * 入口类的完整类名 + */ + private entryClassName; + /** + * @private + * 舞台引用 + */ + stage: Stage; + /** + * @private + * 入口类实例 + */ + private root; + /** + * @private + */ + private isPlaying; + /** + * @private + * 启动播放器 + */ + start(): void; + /** + * @private + */ + private initialize(); + /** + * @private + * 停止播放器,停止后将不能重新启动。 + */ + stop(): void; + /** + * @private + * 暂停播放器,后续可以通过调用start()重新启动播放器。 + */ + pause(): void; + /** + * @private + * 渲染屏幕 + */ + $render(triggerByFrame: boolean, costTicker: number): void; + /** + * @private + * 更新舞台尺寸 + * @param stageWidth 舞台宽度(以像素为单位) + * @param stageHeight 舞台高度(以像素为单位) + */ + updateStageSize(stageWidth: number, stageHeight: number): void; + /** + * @private + * 显示FPS。 + */ + displayFPS(showFPS: boolean, showLog: boolean, logFilter: string, styles: Object): void; + /** + * @private + */ + private showFPS; + /** + * @private + */ + private showLog; + /** + * @private + */ + private stageDisplayList; + } + /** + * @private + */ + let $logToFPS: (info: string) => void; + /** + * @private + */ + let $warnToFPS: (info: string) => void; + /** + * @private + */ + let $errorToFPS: (info: string) => void; +} +/** + * @private + */ +declare module egret { + /** + * @private + */ + var nativeRender: boolean; +} +declare namespace egret { + /** !!!!!!!!inspired by Babylon.js!!!!!!!!!!!!! + * for description see https://www.khronos.org/opengles/sdk/tools/KTX/ + * for file layout see https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/ + * Current families are astc, dxt, pvrtc, etc2, & etc1. + * @returns The extension selected. + */ + class KTXContainer { + /** contents of the KTX container file */ arrayBuffer: any; + private static readonly HEADER_LEN; + private static readonly COMPRESSED_2D; + private static readonly COMPRESSED_3D; + private static readonly TEX_2D; + private static readonly TEX_3D; + /** + * Gets the openGL type + */ + glType: number; + /** + * Gets the openGL type size + */ + glTypeSize: number; + /** + * Gets the openGL format + */ + glFormat: number; + /** + * Gets the openGL internal format + */ + glInternalFormat: number; + /** + * Gets the base internal format + */ + glBaseInternalFormat: number; + /** + * Gets image width in pixel + */ + pixelWidth: number; + /** + * Gets image height in pixel + */ + pixelHeight: number; + /** + * Gets image depth in pixels + */ + pixelDepth: number; + /** + * Gets the number of array elements + */ + numberOfArrayElements: number; + /** + * Gets the number of faces + */ + numberOfFaces: number; + /** + * Gets the number of mipmap levels + */ + numberOfMipmapLevels: number; + /** + * Gets the bytes of key value data + */ + bytesOfKeyValueData: number; + /** + * Gets the load type + */ + loadType: number; + /** + * If the container has been made invalid (eg. constructor failed to correctly load array buffer) + */ + isInvalid: boolean; + /** + * Creates a new KhronosTextureContainer + * @param arrayBuffer contents of the KTX container file + * @param facesExpected should be either 1 or 6, based whether a cube texture or or + * @param threeDExpected provision for indicating that data should be a 3D texture, not implemented + * @param textureArrayExpected provision for indicating that data should be a texture array, not implemented + */ + constructor(/** contents of the KTX container file */ arrayBuffer: any, facesExpected: number, threeDExpected?: boolean, textureArrayExpected?: boolean); + /** + * Uploads KTX content to a Babylon Texture. + * It is assumed that the texture has already been created & is currently bound + * @hidden + */ + uploadLevels(bitmapData: egret.BitmapData, loadMipmaps: boolean): void; + private _upload2DCompressedLevels(bitmapData, loadMipmaps); + } +} +declare namespace egret.sys { + /** + * @private + * 共享的用于碰撞检测的渲染缓冲 + */ + let customHitTestBuffer: sys.RenderBuffer; + /** + * @private + * 共享的用于canvas碰撞检测的渲染缓冲 + */ + let canvasHitTestBuffer: sys.RenderBuffer; + /** + * @private + * 渲染缓冲 + */ + interface RenderBuffer { + /** + * 呈现最终绘图结果的画布。 + * @readOnly + */ + surface: any; + /** + * 渲染上下文。 + * @readOnly + */ + context: any; + /** + * 渲染缓冲的宽度,以像素为单位。 + * @readOnly + */ + width: number; + /** + * 渲染缓冲的高度,以像素为单位。 + * @readOnly + */ + height: number; + /** + * 改变渲染缓冲的大小并清空缓冲区 + * @param width 改变后的宽 + * @param height 改变后的高 + * @param useMaxSize 若传入true,则将改变后的尺寸与已有尺寸对比,保留较大的尺寸。 + */ + resize(width: number, height: number, useMaxSize?: boolean): void; + /** + * 获取指定区域的像素 + */ + getPixels(x: number, y: number, width?: number, height?: number): number[]; + /** + * 转换成base64字符串,如果图片(或者包含的图片)跨域,则返回null + * @param type 转换的类型,如: "image/png","image/jpeg" + */ + toDataURL(type?: string, ...args: any[]): string; + /** + * 清空缓冲区数据 + */ + clear(): void; + /** + * 销毁渲染缓冲 + */ + destroy(): void; + } + /** + * @private + */ + let RenderBuffer: { + /** + * 创建一个RenderTarget。 + * 注意:若内存不足或创建缓冲区失败,将会抛出错误异常。 + * @param width 渲染缓冲的初始宽 + * @param height 渲染缓冲的初始高 + * @param root 是否为舞台buffer + */ + new (width?: number, height?: number, root?: boolean): RenderBuffer; + }; + /** + * @private + */ + let CanvasRenderBuffer: { + /** + * 创建一个CanvasRenderBuffer。 + * 注意:若内存不足或创建缓冲区失败,将会抛出错误异常。 + * @param width 渲染缓冲的初始宽 + * @param height 渲染缓冲的初始高 + */ + new (width?: number, height?: number): RenderBuffer; + }; +} +declare namespace egret.sys { + /** + * @private + * 设备屏幕 + */ + interface Screen { + /** + * @private + * 更新屏幕视口尺寸 + */ + updateScreenSize(): any; + /** + * @private + * 更新触摸数量 + */ + updateMaxTouches(): any; + /** + * @private + * 设置分辨率尺寸 + */ + setContentSize(width: number, height: number): any; + } +} +declare namespace egret.sys { + /** + * @private + * 屏幕适配器接口,当播放器视口尺寸改变时,屏幕适配器将被用于计算当前对应的舞台显示尺寸。 + */ + interface IScreenAdapter { + /** + * @private + * 计算舞台显示尺寸 + * @param scaleMode 当前的缩放模式 + * @param screenWidth 播放器视口宽度 + * @param screenHeight 播放器视口高度 + * @param contentWidth 初始化内容宽度 + * @param contentHeight 初始化内容高度 + */ + calculateStageSize(scaleMode: string, screenWidth: number, screenHeight: number, contentWidth: number, contentHeight: number): StageDisplaySize; + } + /** + * @private + * 舞台显示尺寸数据 + */ + interface StageDisplaySize { + /** + * @private + * 舞台宽度 + */ + stageWidth: number; + /** + * @private + * 舞台高度 + */ + stageHeight: number; + /** + * @private + * 显示宽度,若跟舞台宽度不同,将会产生缩放。 + */ + displayWidth: number; + /** + * @private + * 显示高度,若跟舞台高度不同,将会产生缩放。 + */ + displayHeight: number; + } + /** + * @private + * 屏幕适配器实例,开发者可以通过给这个变量赋值实现了IScreenAdapter接口的实例,从而注入自定义的屏幕适配器。 + */ + let screenAdapter: IScreenAdapter; + /** + * @private + * 屏幕适配器默认实现,开发者可以实现自定义规则的屏幕适配器。并在初始化加载时将适配器的实例赋值给egret.sys.screenAdapter上,从而替换掉默认适配器。 + */ + class DefaultScreenAdapter extends HashObject implements IScreenAdapter { + /** + * @private + */ + constructor(); + /** + * @private + * 计算舞台显示尺寸 + * @param scaleMode 当前的缩放模式 + * @param screenWidth 播放器视口宽度 + * @param screenHeight 播放器视口高度 + * @param contentWidth 初始化内容宽度 + * @param contentHeight 初始化内容高度 + */ + calculateStageSize(scaleMode: string, screenWidth: number, screenHeight: number, contentWidth: number, contentHeight: number): StageDisplaySize; + } +} +declare namespace egret { + /** + * StageScaleMode class provides values for the stage zoom mode. + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/player/StageScaleMode.ts + * @language en_US + */ + /** + * StageScaleMode 类为舞台缩放模式提供值。 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/player/StageScaleMode.ts + * @language zh_CN + */ + class StageScaleMode { + /** + * Do not scale application content. Even when you change the player viewport size, it remains unchanged. If the player is smaller than the viewport content, possibly with some cropping.
+ * In this mode, the stage size (Stage.stageWidth, Stage.stageHeight) always with the player viewport size consistent. + * @language en_US + */ + /** + * 不缩放应用程序内容。即使在更改播放器视口大小时,它仍然保持不变。如果播放器视口比内容小,则可能进行一些裁切。
+ * 在此模式下,舞台尺寸(Stage.stageWidth,Stage.stageHeight)始终跟播放器视口大小保持一致。 + * @language zh_CN + */ + static NO_SCALE: string; + /** + * Keep the original aspect ratio scaling application content, after scaling a wide directions application content to fill the viewport players on both sides in the other direction may not be wide enough and left black bars.
+ * In this mode, the stage size (Stage.stageWidth, Stage.stageHeight) is always equal to the initialization incoming external application content size. + * @language en_US + */ + /** + * 保持原始宽高比缩放应用程序内容,缩放后应用程序内容的较宽方向填满播放器视口,另一个方向的两侧可能会不够宽而留有黑边。
+ * 在此模式下,舞台尺寸(Stage.stageWidth,Stage.stageHeight)始终等于初始化时外部传入的应用程序内容尺寸。 + * @language zh_CN + */ + static SHOW_ALL: string; + /** + * Keep the original aspect ratio scaling application content, after scaling a narrow direction of application content to fill the viewport players on both sides in the other direction may exceed the viewport and the player is cut.
+ * In this mode, the stage size (Stage.stageWidth, Stage.stageHeight) is always equal to the initialization incoming external application content size. + * @language en_US + */ + /** + * 保持原始宽高比缩放应用程序内容,缩放后应用程序内容的较窄方向填满播放器视口,另一个方向的两侧可能会超出播放器视口而被裁切。
+ * 在此模式下,舞台尺寸(Stage.stageWidth,Stage.stageHeight)始终等于初始化时外部传入的应用程序内容尺寸。 + * @language zh_CN + */ + static NO_BORDER: string; + /** + * Do not keep the original aspect ratio scaling application content, after scaling application content just fill the player viewport.
+ * In this mode, the stage size (Stage.stageWidth, Stage.stageHeight) is always equal to the initialization incoming external application content size. + * @language en_US + */ + /** + * 不保持原始宽高比缩放应用程序内容,缩放后应用程序内容正好填满播放器视口。
+ * 在此模式下,舞台尺寸(Stage.stageWidth,Stage.stageHeight)始终等于初始化时外部传入的应用程序内容尺寸。 + * @language zh_CN + */ + static EXACT_FIT: string; + /** + * Keep the original aspect ratio scaling application content, after scaling application content in the horizontal and vertical directions to fill the viewport player, but only to keep the contents of the original application constant width, height may change.
+ * In this mode, the stage width (Stage.stageWidth) is always equal to initialize external incoming application content width. Stage height (Stage.stageHeight) by the current scale with the player viewport height decision. + * @language en_US + */ + /** + * 保持原始宽高比缩放应用程序内容,缩放后应用程序内容在水平和垂直方向都填满播放器视口,但只保持应用程序内容的原始宽度不变,高度可能会改变。
+ * 在此模式下,舞台宽度(Stage.stageWidth)始终等于初始化时外部传入的应用程序内容宽度。舞台高度(Stage.stageHeight)由当前的缩放比例与播放器视口高度决定。 + * @language zh_CN + */ + static FIXED_WIDTH: string; + /** + * Keep the original aspect ratio scaling application content, after scaling application content in the horizontal and vertical directions to fill the viewport player, but only to keep the contents of the original application constant height, width may change.
+ * In this mode, the stage height (Stage.stageHeight) is always equal to initialize external incoming application content height. Stage width (Stage.stageWidth) by the current scale with the player viewport width decision. + * @language en_US + */ + /** + * 保持原始宽高比缩放应用程序内容,缩放后应用程序内容在水平和垂直方向都填满播放器视口,但只保持应用程序内容的原始高度不变,宽度可能会改变。
+ * 在此模式下,舞台高度(Stage.stageHeight)始终等于初始化时外部传入的应用程序内容高度。舞台宽度(Stage.stageWidth)由当前的缩放比例与播放器视口宽度决定。 + * @language zh_CN + */ + static FIXED_HEIGHT: string; + /** + * Keep the original aspect ratio scaling application content, after scaling application content in the horizontal and vertical directions to fill the viewport player,a narrow direction may not be wide enough and fill.
+ * In this mode, the stage height (Stage.stageHeight) and the stage width (Stage.stageWidth) by the current scale with the player viewport size. + * @language en_US + */ + /** + * 保持原始宽高比缩放应用程序内容,缩放后应用程序内容在水平和垂直方向都填满播放器视口,应用程序内容的较窄方向可能会不够宽而填充。
+ * 在此模式下,舞台高度(Stage.stageHeight)和舞台宽度(Stage.stageWidth)由当前的缩放比例与播放器视口宽高决定。 + * @language zh_CN + */ + static FIXED_NARROW: string; + /** + * Keep the original aspect ratio scaling application content, after scaling application content in the horizontal and vertical directions to fill the viewport player, a wide direction may exceed the viewport and the player is cut.
+ * In this mode, the stage height (Stage.stageHeight) and the stage width (Stage.stageWidth) by the current scale with the player viewport size. + * @language en_US + */ + /** + * 保持原始宽高比缩放应用程序内容,缩放后应用程序内容在水平和垂直方向都填满播放器视口,应用程序内容的较宽方向的两侧可能会超出播放器视口而被裁切。
+ * 在此模式下,舞台高度(Stage.stageHeight)和舞台宽度(Stage.stageWidth)由当前的缩放比例与播放器视口宽高决定。 + * @language zh_CN + */ + static FIXED_WIDE: string; + } +} +declare namespace egret.sys { + /** + * @private + */ + let systemRenderer: SystemRenderer; + /** + * @private + * 用于碰撞检测绘制 + */ + let canvasRenderer: SystemRenderer; + /** + * @private + * 显示渲染器接口 + */ + interface SystemRenderer { + /** + * 渲染一个显示对象 + * @param displayObject 要渲染的显示对象 + * @param buffer 渲染缓冲 + * @param matrix 要叠加的矩阵 + * @param forRenderTexture 绘制目标是RenderTexture的标志 + * @returns drawCall触发绘制的次数 + */ + render(displayObject: DisplayObject, buffer: RenderBuffer, matrix: Matrix, forRenderTexture?: boolean): number; + /** + * 将一个RenderNode对象绘制到渲染缓冲 + * @param node 要绘制的节点 + * @param buffer 渲染缓冲 + * @param matrix 要叠加的矩阵 + * @param forHitTest 绘制结果是用于碰撞检测。若为true,当渲染GraphicsNode时,会忽略透明度样式设置,全都绘制为不透明的。 + */ + drawNodeToBuffer(node: sys.RenderNode, buffer: RenderBuffer, matrix: Matrix, forHitTest?: boolean): void; + } + /** + * + */ + interface RenderContext { + } + /** + * 创建一个canvas。 + */ + function mainCanvas(width?: number, height?: number): HTMLCanvasElement; + function createCanvas(width?: number, height?: number): HTMLCanvasElement; + /** + * 重新设置主canvas的大小 + */ + function resizeContext(renderContext: RenderContext, width: number, height: number, useMaxSize?: boolean): void; + /** + * 获得系统的渲染运行时 + */ + function getContextWebGL(surface: HTMLCanvasElement): WebGLRenderingContext; + function getContext2d(surface: HTMLCanvasElement): CanvasRenderingContext2D; + /** + * 仅通过bitmapData创建纹理 + */ + function createTexture(renderContext: RenderContext, bitmapData: BitmapData | HTMLCanvasElement): WebGLTexture; + /** + * 通过 width, height, data创建纹理 + */ + function _createTexture(renderContext: RenderContext, width: number, height: number, data: any): WebGLTexture; + /** + * 画texture + **/ + function drawTextureElements(renderContext: RenderContext, data: any, offset: number): number; + /** + * 测量文本的宽度 + * @param context + * @param text + */ + function measureTextWith(context: CanvasRenderingContext2D, text: string): number; + /** + * 为CanvasRenderBuffer创建一个canvas + * @param defaultFunc + * @param width + * @param height + * @param root + */ + function createCanvasRenderBufferSurface(defaultFunc: (width?: number, height?: number) => HTMLCanvasElement, width?: number, height?: number, root?: boolean): HTMLCanvasElement; + /** + * 改变渲染缓冲的大小并清空缓冲区 + * @param renderContext + * @param width + * @param height + * @param useMaxSize + */ + function resizeCanvasRenderBuffer(renderContext: RenderContext, width: number, height: number, useMaxSize?: boolean): void; +} +declare namespace egret.sys { + /** + * @private + */ + let $START_TIME: number; + /** + * @private + * 是否要广播Event.RENDER事件的标志。 + */ + let $invalidateRenderFlag: boolean; + /** + * @private + * 需要立即刷新屏幕的标志 + */ + let $requestRenderingFlag: boolean; + /** + * Egret心跳计时器 + */ + class SystemTicker { + /** + * @private + */ + constructor(); + /** + * @private + */ + private playerList; + /** + * @private + * 注册一个播放器实例并运行 + */ + $addPlayer(player: Player): void; + /** + * @private + * 停止一个播放器实例的运行。 + */ + $removePlayer(player: Player): void; + /** + * @private + */ + private callBackList; + /** + * @private + */ + private thisObjectList; + /** + * @private + */ + $startTick(callBack: (timeStamp: number) => boolean, thisObject: any): void; + /** + * @private + */ + $stopTick(callBack: (timeStamp: number) => boolean, thisObject: any): void; + /** + * @private + */ + private getTickIndex(callBack, thisObject); + /** + * @private + * + */ + private concatTick(); + /** + * @private + * 全局帧率 + */ + $frameRate: number; + /** + * @private + */ + private frameInterval; + /** + * @private + */ + private frameDeltaTime; + /** + * @private + */ + private lastTimeStamp; + /** + * @private + * 设置全局帧率 + */ + $setFrameRate(value: number): boolean; + /** + * @private + */ + private lastCount; + /** + * @private + * ticker 花销的时间 + */ + private costEnterFrame; + /** + * @private + * 是否被暂停 + */ + private isPaused; + /** + * Pause the ticker. + * @version Egret 5.0.2 + * @platform Web,Native + * @language en_US + */ + /** + * 暂停心跳 + * @version Egret 5.0.2 + * @platform Web,Native + * @language zh_CN + */ + pause(): void; + /** + * Resume the ticker. + * @version Egret 5.0.2 + * @platform Web,Native + * @language en_US + */ + /** + * 恢复心跳 + * @version Egret 5.0.2 + * @platform Web,Native + * @language zh_CN + */ + resume(): void; + /** + * @private + * 执行一次刷新 + */ + update(forceUpdate?: boolean): void; + /** + * @private + * 执行一次屏幕渲染 + */ + private render(triggerByFrame, costTicker); + /** + * @private + * 广播EnterFrame事件。 + */ + private broadcastEnterFrame(); + /** + * @private + * 广播Render事件。 + */ + private broadcastRender(); + /** + * @private + */ + private callLaters(); + /** + * @private + */ + private callLaterAsyncs(); + } +} +declare module egret { + namespace lifecycle { + type LifecyclePlugin = (context: LifecycleContext) => void; + /** + * @private + */ + let stage: egret.Stage; + /** + * @private + */ + let contexts: LifecycleContext[]; + class LifecycleContext { + pause(): void; + resume(): void; + onUpdate?: () => void; + } + let onResume: () => void; + let onPause: () => void; + function addLifecycleListener(plugin: LifecyclePlugin): void; + } + /** + * 心跳计时器单例 + */ + let ticker: sys.SystemTicker; +} +/** + * @private + */ +declare let egret_stages: egret.Stage[]; +declare namespace egret.sys { + /** + * @private + * 用户交互操作管理器 + */ + class TouchHandler extends HashObject { + private maxTouches; + private useTouchesCount; + /** + * @private + */ + constructor(stage: Stage); + /** + * @private + * 设置同时触摸数量 + */ + $initMaxTouches(): void; + /** + * @private + */ + private stage; + /** + * @private + */ + private touchDownTarget; + /** + * @private + * 触摸开始(按下) + * @param x 事件发生处相对于舞台的坐标x + * @param y 事件发生处相对于舞台的坐标y + * @param touchPointID 分配给触摸点的唯一标识号 + */ + onTouchBegin(x: number, y: number, touchPointID: number): void; + /** + * @private + */ + private lastTouchX; + /** + * @private + */ + private lastTouchY; + /** + * @private + * 触摸移动 + * @param x 事件发生处相对于舞台的坐标x + * @param y 事件发生处相对于舞台的坐标y + * @param touchPointID 分配给触摸点的唯一标识号 + */ + onTouchMove(x: number, y: number, touchPointID: number): void; + /** + * @private + * 触摸结束(弹起) + * @param x 事件发生处相对于舞台的坐标x + * @param y 事件发生处相对于舞台的坐标y + * @param touchPointID 分配给触摸点的唯一标识号 + */ + onTouchEnd(x: number, y: number, touchPointID: number): void; + /** + * @private + * 获取舞台坐标下的触摸对象 + */ + private findTarget(stageX, stageY); + } +} +declare namespace egret.sys { + /** + * @private + * 位图渲染节点 + */ + class BitmapNode extends RenderNode { + constructor(); + /** + * 要绘制的位图 + */ + image: BitmapData; + /** + * 控制在缩放时是否对位图进行平滑处理。 + */ + smoothing: boolean; + /** + * 相对偏移矩阵。 + */ + matrix: egret.Matrix; + /** + * 图片宽度。WebGL渲染使用 + */ + imageWidth: number; + /** + * 图片高度。WebGL渲染使用 + */ + imageHeight: number; + /** + * 使用的混合模式 + */ + blendMode: number; + /** + * 相对透明度 + */ + alpha: number; + /** + * 颜色变换滤镜 + */ + filter: ColorMatrixFilter; + /** + * 翻转 + */ + rotated: boolean; + /** + * 绘制一次位图 + */ + drawImage(sourceX: number, sourceY: number, sourceW: number, sourceH: number, drawX: number, drawY: number, drawW: number, drawH: number): void; + /** + * 在显示对象的$updateRenderNode()方法被调用前,自动清空自身的drawData数据。 + */ + cleanBeforeRender(): void; + static $updateTextureData(node: sys.NormalBitmapNode, image: BitmapData, bitmapX: number, bitmapY: number, bitmapWidth: number, bitmapHeight: number, offsetX: number, offsetY: number, textureWidth: number, textureHeight: number, destW: number, destH: number, sourceWidth: number, sourceHeight: number, fillMode: string, smoothing: boolean): void; + /** + * @private + * 绘制九宫格位图 + */ + static $updateTextureDataWithScale9Grid(node: sys.NormalBitmapNode, image: BitmapData, scale9Grid: egret.Rectangle, bitmapX: number, bitmapY: number, bitmapWidth: number, bitmapHeight: number, offsetX: number, offsetY: number, textureWidth: number, textureHeight: number, destW: number, destH: number, sourceWidth: number, sourceHeight: number, smoothing: boolean): void; + /** + * @private + */ + private static drawClipImage(node, scale, bitmapX, bitmapY, scaledBitmapW, scaledBitmapH, offsetX, offsetY, destW, destH, startX?, startY?); + } +} +declare namespace egret.sys { + /** + * @private + * 矢量渲染节点 + */ + class GraphicsNode extends RenderNode { + constructor(); + /** + * 指定一种简单的单一颜色填充,在绘制时该填充将在随后对其他 Graphics 方法(如 lineTo() 或 drawCircle())的调用中使用。 + * @param color 填充的颜色 + * @param alpha 填充的 Alpha 值 + * @param beforePath 插入在指定的路径命令之前绘制,通常是插入到当前正在绘制的线条路径之前,以确保线条总在填充的上方。 + */ + beginFill(color: number, alpha?: number, beforePath?: Path2D): Path2D; + /** + * 指定一种简单的单一颜色填充,在绘制时该填充将在随后对其他 Graphics 方法(如 lineTo() 或 drawCircle())的调用中使用。 + * 调用 clear() 方法会清除填充。 + * @param type 用于指定要使用哪种渐变类型的 GradientType 类的值:GradientType.LINEAR 或 GradientType.RADIAL。 + * @param colors 渐变中使用的 RGB 十六进制颜色值的数组(例如,红色为 0xFF0000,蓝色为 0x0000FF,等等)。对于每种颜色,请在 alphas 和 ratios 参数中指定对应值。 + * @param alphas colors 数组中对应颜色的 alpha 值数组。 + * @param ratios 颜色分布比率的数组。有效值为 0 到 255。 + * @param matrix 一个由 egret.Matrix 类定义的转换矩阵。egret.Matrix 类包括 createGradientBox() 方法,通过该方法可以方便地设置矩阵,以便与 beginGradientFill() 方法一起使用 + * @param beforePath 插入在指定的路径命令之前绘制,通常是插入到当前正在绘制的线条路径之前,以确保线条总在填充的上方。 + */ + beginGradientFill(type: string, colors: number[], alphas: number[], ratios: number[], matrix?: egret.Matrix, beforePath?: Path2D): Path2D; + /** + * 指定一种线条样式以用于随后对 lineTo() 或 drawCircle() 等 Graphics 方法的调用。 + * @param thickness 一个整数,以点为单位表示线条的粗细,有效值为 0 到 255。如果未指定数字,或者未定义该参数,则不绘制线条。如果传递的值小于 0,则默认值为 0。值 0 表示极细的粗细;最大粗细为 255。如果传递的值大于 255,则默认值为 255。 + * @param color 线条的十六进制颜色值(例如,红色为 0xFF0000,蓝色为 0x0000FF 等)。如果未指明值,则默认值为 0x000000(黑色)。可选。 + * @param alpha 表示线条颜色的 Alpha 值的数字;有效值为 0 到 1。如果未指明值,则默认值为 1(纯色)。如果值小于 0,则默认值为 0。如果值大于 1,则默认值为 1。 + * @param caps 用于指定线条末端处端点类型的 CapsStyle 类的值。默认值:CapsStyle.ROUND + * @param joints 指定用于拐角的连接外观的类型。默认值:JointStyle.ROUND + * @param miterLimit 用于表示剪切斜接的极限值的数字。 + */ + lineStyle(thickness?: number, color?: number, alpha?: number, caps?: string, joints?: string, miterLimit?: number, lineDash?: number[]): StrokePath; + /** + * 清空所有缓存的绘制数据 + */ + clear(): void; + /** + * 覆盖父类方法,不自动清空缓存的绘图数据,改为手动调用clear()方法清空。 + */ + cleanBeforeRender(): void; + /** + * 绘制x偏移 + */ + x: number; + /** + * 绘制y偏移 + */ + y: number; + /** + * 绘制宽度 + */ + width: number; + /** + * 绘制高度 + */ + height: number; + /** + * 脏渲染标记 + * 暂时调用lineStyle,beginFill,beginGradientFill标记,实际应该draw时候标记在Path2D + */ + dirtyRender: boolean; + $texture: WebGLTexture; + $textureWidth: number; + $textureHeight: number; + $canvasScaleX: number; + $canvasScaleY: number; + /** + * 清除非绘制的缓存数据 + */ + clean(): void; + } +} +declare namespace egret.sys { + /** + * @private + * 组渲染节点,用于组合多个渲染节点 + */ + class GroupNode extends RenderNode { + /** + * 相对偏移矩阵。 + */ + matrix: egret.Matrix; + constructor(); + addNode(node: RenderNode): void; + /** + * 覆盖父类方法,不自动清空缓存的绘图数据,改为手动调用clear()方法清空。 + * 这里只是想清空绘制命令,因此不调用super + */ + cleanBeforeRender(): void; + $getRenderCount(): number; + } +} +declare namespace egret.sys { + /** + * @private + * Mesh 渲染节点 + */ + class MeshNode extends RenderNode { + constructor(); + /** + * 要绘制的位图 + */ + image: BitmapData; + /** + * 控制在缩放时是否对位图进行平滑处理。 + */ + smoothing: boolean; + /** + * 图片宽度。WebGL渲染使用 + */ + imageWidth: number; + /** + * 图片高度。WebGL渲染使用 + */ + imageHeight: number; + /** + * 相对偏移矩阵。 + */ + matrix: egret.Matrix; + /** + * UV 坐标。 + */ + uvs: number[]; + /** + * 顶点坐标。 + */ + vertices: number[]; + /** + * 顶点索引。 + */ + indices: number[]; + /** + * 顶点索引。 + */ + bounds: Rectangle; + /** + * 使用的混合模式 + */ + blendMode: number; + /** + * 相对透明度 + */ + alpha: number; + /** + * 颜色变换滤镜 + */ + filter: ColorMatrixFilter; + /** + * 翻转 + */ + rotated: boolean; + /** + * 绘制一次位图 + */ + drawMesh(sourceX: number, sourceY: number, sourceW: number, sourceH: number, drawX: number, drawY: number, drawW: number, drawH: number): void; + /** + * 在显示对象的$updateRenderNode()方法被调用前,自动清空自身的drawData数据。 + */ + cleanBeforeRender(): void; + } +} +declare namespace egret.sys { + /** + * @private + * 位图渲染节点 + */ + class NormalBitmapNode extends RenderNode { + constructor(); + /** + * 要绘制的位图 + */ + image: BitmapData; + /** + * 控制在缩放时是否对位图进行平滑处理。 + */ + smoothing: boolean; + /** + * 图片宽度。WebGL渲染使用 + */ + imageWidth: number; + /** + * 图片高度。WebGL渲染使用 + */ + imageHeight: number; + /** + * 翻转 + */ + rotated: boolean; + sourceX: number; + sourceY: number; + sourceW: number; + sourceH: number; + drawX: number; + drawY: number; + drawW: number; + drawH: number; + /** + * 绘制一次位图 + */ + drawImage(sourceX: number, sourceY: number, sourceW: number, sourceH: number, drawX: number, drawY: number, drawW: number, drawH: number): void; + /** + * 在显示对象的$updateRenderNode()方法被调用前,自动清空自身的drawData数据。 + */ + cleanBeforeRender(): void; + } +} +declare namespace egret { + /** + * @private + */ + class Mesh extends Bitmap { + constructor(value?: Texture); + protected createNativeDisplayObject(): void; + /** + * @private + */ + protected setBitmapDataToWasm(data?: Texture): void; + /** + * @private + */ + $updateRenderNode(): void; + /** + * @private + */ + private _verticesDirty; + private _bounds; + /** + * @private + */ + $updateVertices(): void; + /** + * @private + */ + $measureContentBounds(bounds: Rectangle): void; + } +} +declare namespace egret.sys { + /** + * @private + * 文本格式 + */ + interface TextFormat { + /** + * 颜色值 + */ + textColor?: number; + /** + * 描边颜色值 + */ + strokeColor?: number; + /** + * 字号 + */ + size?: number; + /** + * 描边大小 + */ + stroke?: number; + /** + * 是否加粗 + */ + bold?: boolean; + /** + * 是否倾斜 + */ + italic?: boolean; + /** + * 字体名称 + */ + fontFamily?: string; + } +} +declare namespace egret.sys { + /** + * @private + * 文本渲染节点 + */ + class TextNode extends RenderNode { + constructor(); + /** + * 颜色值 + */ + textColor: number; + /** + * 描边颜色值 + */ + strokeColor: number; + /** + * 字号 + */ + size: number; + /** + * 描边大小 + */ + stroke: number; + /** + * 是否加粗 + */ + bold: boolean; + /** + * 是否倾斜 + */ + italic: boolean; + /** + * 字体名称 + */ + fontFamily: string; + /** + * 绘制一行文本 + */ + drawText(x: number, y: number, text: string, format: TextFormat): void; + /** + * 绘制x偏移 + */ + x: number; + /** + * 绘制y偏移 + */ + y: number; + /** + * 绘制宽度 + */ + width: number; + /** + * 绘制高度 + */ + height: number; + /** + * 脏渲染标记 + */ + dirtyRender: boolean; + $texture: WebGLTexture; + $textureWidth: number; + $textureHeight: number; + $canvasScaleX: number; + $canvasScaleY: number; + /** + * 清除非绘制的缓存数据 + */ + clean(): void; + /** + * 在显示对象的$updateRenderNode()方法被调用前,自动清空自身的drawData数据。 + */ + cleanBeforeRender(): void; + } +} +declare namespace egret.sys { + /** + * @private + * 填充路径 + */ + class FillPath extends Path2D { + constructor(); + /** + * 填充颜色 + */ + fillColor: number; + /** + * 填充透明度 + */ + fillAlpha: number; + } +} +declare namespace egret.sys { + /** + * @private + * 渐变填充路径 + */ + class GradientFillPath extends Path2D { + constructor(); + gradientType: string; + colors: number[]; + alphas: number[]; + ratios: number[]; + matrix: Matrix; + } +} +declare namespace egret { + /** + * OrientationMode 类为舞台初始旋转模式提供值。 + */ + const OrientationMode: { + AUTO: string; + PORTRAIT: string; + LANDSCAPE: string; + LANDSCAPE_FLIPPED: string; + }; +} +declare namespace egret.sys { + /** + * @private + * 线条路径。 + * 注意:当线条宽度(lineWidth)为1或3像素时,需要特殊处理,往右下角偏移0.5像素,以显示清晰锐利的线条。 + */ + class StrokePath extends Path2D { + constructor(); + /** + * 线条宽度。 + * 注意:绘制时对1像素和3像素要特殊处理,整体向右下角偏移0.5像素,以显示清晰锐利的线条。 + */ + lineWidth: number; + /** + * 线条颜色 + */ + lineColor: number; + /** + * 线条透明度 + */ + lineAlpha: number; + /** + * 端点样式,"none":无端点,"round":圆头端点,"square":方头端点 + */ + caps: string; + /** + * 联接点样式,"bevel":斜角连接,"miter":尖角连接,"round":圆角连接 + */ + joints: string; + /** + * 用于表示剪切斜接的极限值的数字。 + */ + miterLimit: number; + /** + * 描述交替绘制线段和间距(坐标空间单位)长度的数字。 + */ + lineDash: number[]; + } +} +/** + * @private + */ +interface CanvasRenderingContext2D { + imageSmoothingEnabled: boolean; + $imageSmoothingEnabled: boolean; + $offsetX: number; + $offsetY: number; +} +declare namespace egret { + class CanvasRenderer { + private nestLevel; + render(displayObject: DisplayObject, buffer: sys.RenderBuffer, matrix: Matrix, forRenderTexture?: boolean): number; + /** + * @private + * 绘制一个显示对象 + */ + private drawDisplayObject(displayObject, context, offsetX, offsetY, isStage?); + private drawWithFilter(displayObject, context, offsetX, offsetY); + private drawWithClip(displayObject, context, offsetX, offsetY); + private drawWithScrollRect(displayObject, context, offsetX, offsetY); + drawNodeToBuffer(node: sys.RenderNode, buffer: sys.RenderBuffer, matrix: Matrix, forHitTest?: boolean): void; + /** + * 将一个DisplayObject绘制到渲染缓冲,用于RenderTexture绘制 + * @param displayObject 要绘制的显示对象 + * @param buffer 渲染缓冲 + * @param matrix 要叠加的矩阵 + */ + drawDisplayToBuffer(displayObject: DisplayObject, buffer: sys.RenderBuffer, matrix: Matrix): number; + private renderNode(node, context, forHitTest?); + private renderNormalBitmap(node, context); + private renderBitmap(node, context); + private renderMesh(node, context); + renderText(node: sys.TextNode, context: CanvasRenderingContext2D): void; + private renderingMask; + /** + * @private + */ + renderGraphics(node: sys.GraphicsNode, context: CanvasRenderingContext2D, forHitTest?: boolean): number; + private renderPath(path, context); + private renderGroup(groupNode, context); + private createRenderBuffer(width, height, useForFilters?); + } + /** + * @private + * 获取字体字符串 + */ + function getFontString(node: sys.TextNode, format: sys.TextFormat): string; + /** + * @private + * 获取RGBA字符串 + */ + function getRGBAString(color: number, alpha: number): string; +} +declare namespace egret { + /** + * Orientation monitor the orientation of the device, send CHANGE event when the orientation is changed + * + * @event egret.Event.CHANGE device's orientation is changed + * @version Egret 2.4 + * @platform Web + * @includeExample egret/sensor/DeviceOrientation.ts + * @see http://edn.egret.com/cn/docs/page/661 获取设备旋转角度 + * @language en_US + */ + /** + * Orientation 监听设备方向的变化,当方向变化时派发 CHANGE 事件 + * @event egret.Event.CHANGE 设备方向改变时派发 + * @version Egret 2.4 + * @platform Web + * @includeExample egret/sensor/DeviceOrientation.ts + * @see http://edn.egret.com/cn/docs/page/661 获取设备旋转角度 + * @language zh_CN + */ + interface DeviceOrientation extends EventDispatcher { + /** + * Start to monitor the device's orientation + * @version Egret 2.4 + * @platform Web + * @language en_US + */ + /** + * 开始监听设备方向变化 + * @version Egret 2.4 + * @platform Web + * @language zh_CN + */ + start(): void; + /** + * Stop monitor the device's orientation + * @version Egret 2.4 + * @platform Web + * @language en_US + */ + /** + * 停止监听设备方向变化 + * @version Egret 2.4 + * @platform Web + * @language zh_CN + */ + stop(): void; + } + /** + * @copy egret.Orientation + */ + let DeviceOrientation: { + new (): DeviceOrientation; + }; +} +declare namespace egret { + /** + * The Geolocation able to obtain the position of the device. + * Geolocation will emit CHANGE event when the device's location is changed. + * It will emit IO_ERROR event if the location request is denied + * or there is no location service on the device. + * + * @event egret.Event.CHANGE The device's location is changed + * @event egret.Event.IO_ERROR Error occurred while getting the location + * @version Egret 2.4 + * @platform Web + * @includeExample egret/sensor/Geolocation.ts + * @language en_US + */ + /** + * Geolocation 能够从设备的定位服务获取设备的当前位置。 + * 当设备的位置发生改变时 Geolocation 会派发 CHANGE 事件。 + * 当定位请求被拒绝或该设备没有定位服务时 Geolocation 会派发 IO_ERROR 事件。 + * + * @event egret.Event.CHANGE 设备位置发生改变 + * @event egret.Event.IO_ERROR 获取设备位置时发生错误 + * @version Egret 2.4 + * @platform Web + * @includeExample egret/sensor/Geolocation.ts + * @language zh_CN + */ + interface Geolocation extends EventDispatcher { + /** + * Start to monitor the device's location + * @returns + * @version Egret 2.4 + * @platform Web + * @language en_US + */ + /** + * 开始监听设备位置信息 + * @returns + * @version Egret 2.4 + * @platform Web + * @language zh_CN + */ + start(): void; + /** + * Stop monitor the device's location + * @returns + * @version Egret 2.4 + * @platform Web + * @language en_US + */ + /** + * 停止监听设备位置信息 + * @returns + * @version Egret 2.4 + * @platform Web + * @language zh_CN + */ + stop(): void; + } + /** + * @copy egret.Geolocation + */ + let Geolocation: { + /** + * constructor + * @version Egret 2.4 + * @platform Web + * @language en_US + */ + /** + * 构造函数 + * @version Egret 2.4 + * @platform Web + * @language zh_CN + */ + new (): Geolocation; + }; +} +declare namespace egret { + /** + * @copy egret.Motion + */ + let Motion: { + new (): Motion; + }; + /** + * The Motion class emits events based on activity detected by the device's motion sensor. + * This data represents the device's movement along a 3-dimensional axis. When the device moves, + * the sensor detects this movement and emit the CHANGE event. @see egret.MotionEvent + * + * @event egret.Event.CHANGE device is moved + * @version Egret 2.4 + * @platform Web + * @includeExample egret/sensor/Motion.ts + * @language en_US + */ + /** + * Motion 类从用户设备读取运动状态信息并派发 CHANGE 事件。 + * 当设备移动时,传感器会检测到此移动并返回设备加速度,重力和旋转数据。@see egret.MotionEvent + * Motion 类提供了 start 和 stop 方法,来启动和停止运动信息检查 + * + * @event egret.Event.CHANGE 运动状态发生改变 + * @version Egret 2.4 + * @platform Web + * @includeExample egret/sensor/Motion.ts + * @language zh_CN + */ + interface Motion extends EventDispatcher { + /** + * Start to monitor device movement + * @version Egret 2.4 + * @platform Web + * @language en_US + */ + /** + * 开始监听设备运动状态 + * @version Egret 2.4 + * @platform Web + * @language zh_CN + */ + start(): void; + /** + * Stop monitor device movement + * @version Egret 2.4 + * @platform Web + * @language en_US + */ + /** + * 停止监听设备运动状态 + * @version Egret 2.4 + * @platform Web + * @language zh_CN + */ + stop(): void; + } + /** + * A DeviceRotationRate object provides information about the rate at which + * the device is rotating around all three axes. + * @version Egret 2.4 + * @platform Web + * @language en_US + */ + /** + * DeviceRotationRate 提供设备围绕三个轴旋转的角速度信息,单位是 角度/秒 + * @version Egret 2.4 + * @platform Web + * @language zh_CN + */ + interface DeviceRotationRate { + /** + * The amount of rotation around the Z axis, in degrees per second. + * @version Egret 2.4 + * @platform Web + * @language en_US + */ + /** + * 设备绕 Z 轴旋转的角速度信息,单位是 度/秒 + * @version Egret 2.4 + * @platform Web + * @language zh_CN + */ + alpha: number; + /** + * The amount of rotation around the X axis, in degrees per second. + * @version Egret 2.4 + * @platform Web + * @language en_US + */ + /** + * 设备绕 X 轴旋转的角速度信息,单位是 度/秒 + * @version Egret 2.4 + * @platform Web + * @language zh_CN + */ + beta: number; + /** + * The amount of rotation around the Y axis, in degrees per second. + * @version Egret 2.4 + * @platform Web + * @language en_US + */ + /** + * 设备绕 Y 轴旋转的角速度信息,单位是 度/秒 + * @version Egret 2.4 + * @platform Web + * @language zh_CN + */ + gamma: number; + } + /** + * A DeviceAcceleration object provides information about the amount + * of acceleration the device is experiencing along all three axes. + * Acceleration is expressed in m/s2. + * @version Egret 2.4 + * @platform Web + * @language en_US + */ + /** + * DeviceAcceleration 提供设备在三个维度的加速度信息,加速度值的单位是 m/s2 + * @version Egret 2.4 + * @platform Web + * @language zh_CN + */ + interface DeviceAcceleration { + /** + * The amount of acceleration along the X axis + * @version Egret 2.4 + * @platform Web + * @language en_US + */ + /** + * X 轴方向的加速度值 + * @version Egret 2.4 + * @platform Web + * @language zh_CN + */ + x: number; + /** + * The amount of acceleration along the Y axis + * @version Egret 2.4 + * @platform Web + * @language en_US + */ + /** + * Y 轴方向的加速度值 + * @version Egret 2.4 + * @platform Web + * @language zh_CN + */ + y: number; + /** + * The amount of acceleration along the Z axis + * @version Egret 2.4 + * @platform Web + * @language en_US + */ + /** + * Z 轴方向的加速度值 + * @version Egret 2.4 + * @platform Web + * @language zh_CN + */ + z: number; + } +} +declare namespace egret { + /** + * Type of operation. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 运行类型的类型。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + namespace RuntimeType { + /** + * Running on Web + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 运行在Web上 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + const WEB = "web"; + /** + * Running on NATIVE + * @version Egret 2.4 + * @deprecated + * @platform Web,Native + * @language en_US + */ + /** + * 运行在NATIVE上 + * @version Egret 2.4 + * @deprecated + * @platform Web,Native + * @language zh_CN + */ + const NATIVE = "native"; + /** + * Running on Runtime2.0 + * @version Egret 5.1.5 + * @platform Web,Native + * @language en_US + */ + /** + * 运行在Runtime2.0上 + * @version Egret 5.1.5 + * @platform Web,Native + * @language zh_CN + */ + const RUNTIME2 = "runtime2"; + /** + * Running on Alipay + * @version Egret 5.2.23 + * @platform All + * @language en_US + */ + /** + * 运行在支付宝小游戏上 + * @version Egret 5.2.26 + * @platform All + * @language zh_CN + */ + const MYGAME = "mygame"; + /** + * Running on WeChat mini game + * @version Egret 5.1.5 + * @platform All + * @language en_US + */ + /** + * 运行在微信小游戏上 + * @version Egret 5.1.5 + * @platform All + * @language zh_CN + */ + const WXGAME = "wxgame"; + /** + * Running on Baidu mini game + * @version Egret 5.2.13 + * @platform All + * @language en_US + */ + /** + * 运行在百度小游戏上 + * @version Egret 5.2.13 + * @platform All + * @language zh_CN + */ + const BAIDUGAME = "baidugame"; + /** + * Running on Xiaomi quick game + * @version Egret 5.2.14 + * @platform All + * @language en_US + */ + /** + * 运行在小米快游戏上 + * @version Egret 5.2.14 + * @platform All + * @language zh_CN + */ + const QGAME = "qgame"; + /** + * Running on OPPO mini game + * @version Egret 5.2.14 + * @platform All + * @language en_US + */ + /** + * 运行在 Oppo 小游戏上 + * @version Egret 5.2.14 + * @platform All + * @language zh_CN + */ + const OPPOGAME = "oppogame"; + /** + * Running on QQ mini game + * @version Egret 5.2.25 + * @platform All + * @language en_US + */ + /** + * 运行在 QQ 小游戏上 + * @version Egret 5.2.25 + * @platform All + * @language zh_CN + */ + const QQGAME = "qqgame"; + /** + * Running on vivo mini game + * @version Egret 5.2.23 + * @platform All + * @language en_US + */ + /** + * 运行在 vivo 小游戏上 + * @version Egret 5.2.23 + * @platform All + * @language zh_CN + */ + const VIVOGAME = "vivogame"; + } + interface SupportedCompressedTexture { + pvrtc: boolean; + etc1: boolean; + } + /** + * The Capabilities class provides properties that describe the system and runtime that are hosting the application. + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/system/Capabilities.ts + * @language en_US + */ + /** + * Capabilities 类提供一些属性,这些属性描述了承载应用程序的系统和运行时。 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/system/Capabilities.ts + * @language zh_CN + */ + class Capabilities { + /** + * Specifies the language code of the system on which the content is running. The language is specified as a lowercase + * two-letter language code from ISO 639-1. For Chinese, an additional uppercase two-letter country code from ISO 3166 + * distinguishes between Simplified and Traditional Chinese.
+ * The following table lists the possible values,but not limited to them: + *
    + *
  • Simplified Chinese zh-CN
  • + *
  • Traditional Chinese zh-TW
  • + *
  • English en
  • + *
  • Japanese ja
  • + *
  • Korean ko
  • + *
+ * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示运行内容的系统的语言代码。语言指定为 ISO 639-1 中的小写双字母语言代码。 + * 对于中文,另外使用 ISO 3166 中的大写双字母国家/地区代码,以区分简体中文和繁体中文。
+ * 以下是可能但不限于的语言和值: + *
    + *
  • 简体中文 zh-CN
  • + *
  • 繁体中文 zh-TW
  • + *
  • 英语 en
  • + *
  • 日语 ja
  • + *
  • 韩语 ko
  • + *
+ * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static readonly language: string; + /** + * Specifies whether the system is running in a mobile device.(such as a mobile phone or tablet) + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示程序内容是否运行在移动设备中(例如移动电话或平板电脑)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static readonly isMobile: boolean; + /** + * Specifies the current operating system. The os property can return the following strings: + *
    + *
  • iPhone "iOS"
  • + *
  • Android Phone "Android"
  • + *
  • Windows Phone "Windows Phone"
  • + *
  • Windows Desktop "Windows PC"
  • + *
  • Mac Desktop "Mac OS"
  • + *
  • Unknown OS "Unknown"
  • + *
+ * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 指示当前的操作系统。os 属性返回下列字符串: + *
    + *
  • 苹果手机操作系统 "iOS"
  • + *
  • 安卓手机操作系统 "Android"
  • + *
  • 微软手机操作系统 "Windows Phone"
  • + *
  • 微软桌面操作系统 "Windows PC"
  • + *
  • 苹果桌面操作系统 "Mac OS"
  • + *
  • 未知操作系统 "Unknown"
  • + *
+ * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static readonly os: string; + /** + * It indicates the current type of operation. runtimeType property returns the following string: + *
    + *
  • Run on Web egret.RuntimeType.WEB
  • + *
  • Run on Runtime2.0 egret.RuntimeType.RUNTIME2
  • + *
  • Run on WeChat mini game egret.RuntimeType.WXGAME
  • + *
+ * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 指示当前的运行类型。runtimeType 属性返回下列字符串: + *
    + *
  • 运行在Web上 egret.RuntimeType.WEB
  • + *
  • 运行在Runtime2.0上 egret.RuntimeType.RUNTIME2
  • + *
  • 运行在微信小游戏上 egret.RuntimeType.WXGAME
  • + *
+ * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static readonly runtimeType: string; + /*** + * version of Egret. + * @type {string} + * @version Egret 3.2.0 + * @platform Web,Native + * @language en_US + */ + /*** + * Egret 的版本号。 + * @type {string} + * @version Egret 3.2.0 + * @platform Web,Native + * @language zh_CN + */ + static readonly engineVersion: string; + /*** + * current render mode. + * @type {string} + * @version Egret 3.0.7 + * @platform Web,Native + * @language en_US + */ + /*** + * 当前渲染模式。 + * @type {string} + * @version Egret 3.0.7 + * @platform Web,Native + * @language zh_CN + */ + static readonly renderMode: string; + /*** + * Clients border width. + * The value before the document class initialization is always 0. + * This value will change after the distribution Event.RESIZE and StageOrientationEvent.ORIENTATION_CHANGE. + * @version Egret 3.1.3 + * @platform Web,Native + * @language en_US + */ + /*** + * 客户端边界宽度。 + * 该值在文档类初始化之前始终是0。 + * 该值在派发 Event.RESIZE 以及 StageOrientationEvent.ORIENTATION_CHANGE 之后会发生改变。 + * @version Egret 3.1.3 + * @platform Web,Native + * @language zh_CN + */ + static readonly boundingClientWidth: number; + /*** + * Clients border height. + * The value before the document class initialization is always 0. + * This value will change after the distribution Event.RESIZE and StageOrientationEvent.ORIENTATION_CHANGE. + * @version Egret 3.1.3 + * @platform Web,Native + * @language en_US + */ + /*** + * 客户端边界高度。 + * 该值在文档类初始化之前始终是0。 + * 该值在派发 Event.RESIZE 以及 StageOrientationEvent.ORIENTATION_CHANGE 之后会发生改变。 + * @version Egret 3.1.3 + * @platform Web,Native + * @language zh_CN + */ + static readonly boundingClientHeight: number; + /*** + * supported compressed texture + * @version Egret 5.2.19 + * @platform Web,Native + * @language en_US + */ + /*** + * supported compressed texture + * @version Egret 5.2.19 + * @platform Web,Native + * @language zh_CN + */ + static supportedCompressedTexture: SupportedCompressedTexture; + } +} +declare namespace egret { + /** + * RenderTexture is a dynamic texture + * @extends egret.Texture + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/RenderTexture.ts + * @language en_US + */ + /** + * RenderTexture 是动态纹理类,他实现了将显示对象及其子对象绘制成为一个纹理的功能 + * @extends egret.Texture + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/RenderTexture.ts + * @language zh_CN + */ + class RenderTexture extends egret.Texture { + constructor(); + $renderBuffer: sys.RenderBuffer; + /** + * The specified display object is drawn as a texture + * @param displayObject {egret.DisplayObject} the display to draw + * @param clipBounds {egret.Rectangle} clip rect + * @param scale {number} scale factor + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将指定显示对象绘制为一个纹理 + * @param displayObject {egret.DisplayObject} 需要绘制的显示对象 + * @param clipBounds {egret.Rectangle} 绘制矩形区域 + * @param scale {number} 缩放比例 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + drawToTexture(displayObject: egret.DisplayObject, clipBounds?: Rectangle, scale?: number): boolean; + /** + * @inheritDoc + */ + getPixel32(x: number, y: number): number[]; + /** + * @inheritDoc + */ + dispose(): void; + } +} +declare namespace egret { + /** + * Adds an interface-name-to-implementation-class mapping to the registry. + * @param interfaceName the interface name to register. For example:"eui.IAssetAdapter","eui.Theme" + * @param instance the instance to register. + * @version Egret 3.2.1 + * @platform Web,Native + * @language en_US + */ + /** + * 注册一个接口实现。 + * @param interfaceName 注入的接口名称。例如:"eui.IAssetAdapter","eui.Theme" + * @param instance 实现此接口的实例。 + * @version Egret 3.2.1 + * @platform Web,Native + * @language zh_CN + */ + function registerImplementation(interfaceName: string, instance: any): void; + /** + * Returns the singleton instance of the implementation class that was registered for the specified interface. + * This method is usually called by egret framework. + * @param interfaceName The interface name to identify. For example:"eui.IAssetAdapter","eui.Theme" + * @returns the singleton instance of the implementation class + * @version Egret 3.2.1 + * @platform Web,Native + * @language en_US + */ + /** + * 获取一个接口实现。此方法通常由框架内部调用。获取项目注入的自定义实现实例。 + * @param interfaceName 要获取的接口名称。例如:"eui.IAssetAdapter","eui.Theme" + * @returns 返回实现此接口的实例。 + * @version Egret 3.2.1 + * @platform Web,Native + * @language zh_CN + */ + function getImplementation(interfaceName: string): any; +} +declare namespace egret { + /** + * This class is used to create lightweight shapes using the drawing application program interface (API). The Shape + * class includes a graphics property, which lets you access methods from the Graphics class. + * @see egret.Graphics + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/Shape.ts + * @language en_US + */ + /** + * 此类用于使用绘图应用程序编程接口 (API) 创建简单形状。Shape 类含有 graphics 属性,通过该属性您可以访问各种矢量绘图方法。 + * @see egret.Graphics + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/Shape.ts + * @language zh_CN + */ + class Shape extends DisplayObject { + /** + * Creates a new Shape object. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个 Shape 对象 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(); + protected createNativeDisplayObject(): void; + /** + * @private + */ + $graphics: Graphics; + /** + * Specifies the Graphics object belonging to this Shape object, where vector drawing commands can occur. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 获取 Shape 中的 Graphics 对象。可通过此对象执行矢量绘图命令。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly graphics: Graphics; + /** + * @private + */ + $measureContentBounds(bounds: Rectangle): void; + $hitTest(stageX: number, stageY: number): DisplayObject; + /** + * @private + */ + $onRemoveFromStage(): void; + } +} +declare namespace egret { + /** + * Bitmap font, texture set of a font. It is generally used as the value of the BitmapText.font attribute. + * @see http://bbs.egret-labs.org/thread-918-1-1.html TextureMerger + * @see http://bbs.egret-labs.org/forum.php?mod=viewthread&tid=251 Text(Containing the specific usage of the bitmap font ) + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/text/BitmapFont.ts + * @language en_US + */ + /** + * 位图字体,是一个字体的纹理集,通常作为BitmapText.font属性的值。 + * @see http://bbs.egret-labs.org/thread-918-1-1.html TextureMerger + * @see http://bbs.egret-labs.org/forum.php?mod=viewthread&tid=251 文本(含位图字体具体用法) + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/text/BitmapFont.ts + * @language zh_CN + */ + class BitmapFont extends SpriteSheet { + /** + * Create an egret.BitmapFont object + * @param texture {egret.Texture} Texture set that use TextureMerger create + * @param config {any} Configure data that use TextureMerger create + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个 egret.BitmapFont 对象 + * @param texture {egret.Texture} 使用TextureMerger生成的纹理集 + * @param config {any} 使用TextureMerger生成的配置数据 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(texture: Texture, config: any); + /** + * @private + */ + private charList; + /** + * Obtain corresponding texture through the name attribute + * @param name {string} name Attribute + * @returns {egret.Texture} + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 通过 name 属性获取对应纹理 + * @param name {string} name属性 + * @returns {egret.Texture} + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + getTexture(name: string): Texture; + /** + * @private + */ + getConfig(name: string, key: string): number; + /** + * @private + */ + private firstCharHeight; + /** + * @private + * + * @returns + */ + _getFirstCharHeight(): number; + /** + * @private + * + * @param fntText + * @returns + */ + private parseConfig(fntText); + /** + * @private + * + * @param configText + * @param key + * @returns + */ + private getConfigByKey(configText, key); + } +} +declare namespace egret { + /** + * Bitmap font adopts the Bitmap+SpriteSheet mode to render text. + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/text/BitmapText.ts + * @language en_US + */ + /** + * 位图字体采用了Bitmap+SpriteSheet的方式来渲染文字。 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/text/BitmapText.ts + * @language zh_CN + */ + class BitmapText extends DisplayObject { + /** + * Create an egret.BitmapText object + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 创建一个 egret.BitmapText 对象 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(); + protected createNativeDisplayObject(): void; + private $smoothing; + /** + * Whether or not is smoothed when scaled. + * @default true。 + * @version Egret 3.0 + * @platform Web + * @language en_US + */ + /** + * 控制在缩放时是否进行平滑处理。 + * @default true。 + * @version Egret 3.0 + * @platform Web + * @language zh_CN + */ + smoothing: boolean; + private $text; + /** + * A string to display in the text field. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 要显示的文本内容 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + text: string; + /** + * @private + */ + $setText(value: string): boolean; + protected $textFieldWidth: number; + /** + * @private + */ + $getWidth(): number; + /** + * @private + */ + $setWidth(value: number): boolean; + private $textLinesChanged; + /** + * @private + */ + $invalidateContentBounds(): void; + protected $textFieldHeight: number; + /** + * @private + */ + $getHeight(): number; + /** + * @private + */ + $setHeight(value: number): boolean; + protected $font: BitmapFont; + protected $fontStringChanged: boolean; + /** + * The name of the font to use, or a comma-separated list of font names, the type of value must be BitmapFont. + * @default null + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 要使用的字体的名称或用逗号分隔的字体名称列表,类型必须是 BitmapFont。 + * @default null + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + font: Object; + $setFont(value: any): boolean; + private $lineSpacing; + /** + /** + * An integer representing the amount of vertical space between lines. + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 一个整数,表示行与行之间的垂直间距量 + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + lineSpacing: number; + $setLineSpacing(value: number): boolean; + private $letterSpacing; + /** + * An integer representing the amount of distance between characters. + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 一个整数,表示字符之间的距离。 + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + letterSpacing: number; + $setLetterSpacing(value: number): boolean; + private $textAlign; + /** + * Horizontal alignment of text. + * @default:egret.HorizontalAlign.LEFT + * @version Egret 2.5.6 + * @platform Web,Native + * @language en_US + */ + /** + * 文本的水平对齐方式。 + * @default:egret.HorizontalAlign.LEFT + * @version Egret 2.5.6 + * @platform Web,Native + * @language zh_CN + */ + textAlign: string; + $setTextAlign(value: string): boolean; + private $verticalAlign; + /** + * Vertical alignment of text. + * @default:egret.VerticalAlign.TOP + * @version Egret 2.5.6 + * @platform Web,Native + * @language en_US + */ + /** + * 文字的垂直对齐方式。 + * @default:egret.VerticalAlign.TOP + * @version Egret 2.5.6 + * @platform Web,Native + * @language zh_CN + */ + verticalAlign: string; + $setVerticalAlign(value: string): boolean; + /** + * A ratio of the width of the space character. This value is multiplied by the height of the first character is the space character width. + * @default 0.33 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 一个空格字符的宽度比例。这个数值乘以第一个字符的高度即为空格字符的宽。 + * @default 0.33 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static EMPTY_FACTOR: number; + /** + * @private + */ + $updateRenderNode(): void; + /** + * @private + */ + $measureContentBounds(bounds: Rectangle): void; + private $textWidth; + /** + * Get the BitmapText measured width + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 获取位图文本测量宽度 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly textWidth: number; + private $textHeight; + /** + * Get Text BitmapText height + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 获取位图文本测量高度 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly textHeight: number; + /** + * @private + */ + private $textOffsetX; + /** + * @private + */ + private $textOffsetY; + /** + * @private + */ + private $textStartX; + /** + * @private + */ + private $textStartY; + /** + * @private + */ + private textLines; + /** + * @private 每一行文字的宽度 + */ + private $textLinesWidth; + /** + * @private + */ + $lineHeights: number[]; + /** + * @private + * + * @returns + */ + $getTextLines(): string[]; + } +} +declare namespace egret { + /** + * The HorizontalAlign class defines the possible values for the horizontal alignment. + * @see egret.TextField#textAlign + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * HorizontalAlign 类为水平对齐方式定义可能的值。 + * @see egret.TextField#textAlign + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + class HorizontalAlign { + /** + * Horizontally align content to the left of the container. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将内容与容器的左侧对齐。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static LEFT: string; + /** + * Horizontally align content to the right of the container. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将内容与容器的右侧对齐。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static RIGHT: string; + /** + * Horizontally align content in the center of the container. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 在容器的水平中心对齐内容。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static CENTER: string; + /** + * Horizontal alignment with both edges. + * Note: TextFiled does not support this alignment method. + * @constant egret.HorizontalAlign.JUSTIFY + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 水平两端对齐。 + * 注意:TextFiled不支持此对齐方式。 + * @constant egret.HorizontalAlign.JUSTIFY + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static JUSTIFY: string; + /** + * Align the content of the child items, relative to the container. This operation will adjust uniformly the size of all the child items to be the Content Width \" of the container \". + * The Content Width \" of the container \" is the size of the max. child item. If the size of all child items are less than the width of the container, they will be adjusted to the width of the container. + * Note: TextFiled does not support this alignment method. + * @constant egret.HorizontalAlign.CONTENT_JUSTIFY + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 相对于容器对子项进行内容对齐。这会将所有子项的大小统一调整为容器的"内容宽度"。 + * 容器的"内容宽度"是最大子项的大小,如果所有子项都小于容器的宽度,则会将所有子项的大小调整为容器的宽度。 + * 注意:TextFiled不支持此对齐方式。 + * @constant egret.HorizontalAlign.CONTENT_JUSTIFY + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static CONTENT_JUSTIFY: string; + } +} +declare namespace egret { + /** + * Convert the text in html format to the object that can be assigned to the egret.TextField#textFlow property + * @see http://edn.egret.com/cn/docs/page/146 Text mixed in a variety of style + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/text/HtmlTextParser.ts + * @language en_US + */ + /** + * 将html格式文本转换为可赋值给 egret.TextField#textFlow 属性的对象 + * @see http://edn.egret.com/cn/docs/page/146 多种样式文本混合 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/text/HtmlTextParser.ts + * @language zh_CN + */ + class HtmlTextParser { + /** + * @version Egret 2.4 + * @platform Web,Native + */ + constructor(); + private replaceArr; + private initReplaceArr(); + /** + * @private + * + * @param value + * @returns + */ + private replaceSpecial(value); + /** + * @private + */ + private resutlArr; + /** + * Convert the text in html format to the object that can be assigned to the egret.TextField#textFlow property + * @param htmltext {string} Text in html + * @returns {Array} 可赋值给 egret.TextField#textFlow Object that can be assigned to the egret.TextField#textFlow property + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将html格式文本转换为可赋值给 egret.TextField#textFlow 属性的对象 + * @param htmltext {string} html文本 + * @returns {Array} 可赋值给 egret.TextField#textFlow 属性的对象 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + parse(htmltext: string): egret.ITextElement[]; + parser(htmltext: string): Array; + /** + * @private + * + * @param value + */ + private addToResultArr(value); + private changeStringToObject(str); + /** + * @private + * + * @returns + */ + private getHeadReg(); + /** + * @private + * + * @param info + * @param head + * @param value + */ + private addProperty(info, head, value); + /** + * @private + */ + private stackArray; + /** + * @private + * + * @param infoStr + */ + private addToArray(infoStr); + } +} +declare namespace egret { + /** + * @private + * @version Egret 2.4 + * @platform Web,Native + */ + interface IHitTextElement { + /** + * @version Egret 2.4 + * @platform Web,Native + */ + lineIndex: number; + /** + * @version Egret 2.4 + * @platform Web,Native + */ + textElementIndex: number; + } + /** + * Text Style + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 文本样式 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + interface ITextStyle { + /** + * text color + * @version Egret 2.4 + * @platform Web,Native + * @see http://edn.egret.com/cn/docs/page/146 多种样式混合文本的基本结构 + * @language en_US + */ + /** + * 颜色值 + * @version Egret 2.4 + * @platform Web,Native + * @see http://edn.egret.com/cn/docs/page/146 多种样式混合文本的基本结构 + * @language zh_CN + */ + textColor?: number; + /** + * stroke color + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 描边颜色值 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + strokeColor?: number; + /** + * size + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 字号 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + size?: number; + /** + * stroke width + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 描边大小 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + stroke?: number; + /** + * whether bold + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 是否加粗 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + bold?: boolean; + /** + * whether italic + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 是否倾斜 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + italic?: boolean; + /** + * fontFamily + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 字体名称 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + fontFamily?: string; + /** + * Link events or address + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 链接事件或者地址 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + href?: string; + /** + * @private + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * @private + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + target?: string; + /** + * Is underlined + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 是否加下划线 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + underline?: boolean; + } + /** + * Used to build the basic structure of text with a variety of mixed styles, mainly for setting textFlow property + * @see http://edn.egret.com/cn/docs/page/146 Text mixed in a variety of style + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 用于建立多种样式混合文本的基本结构,主要用于设置 textFlow 属性 + * @see http://edn.egret.com/cn/docs/page/146 多种样式文本混合 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + interface ITextElement { + /** + * String Content + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 字符串内容 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + text: string; + /** + * Text Style + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 文本样式 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + style?: ITextStyle; + } + /** + * @private + * @version Egret 2.4 + * @platform Web,Native + */ + interface IWTextElement extends ITextElement { + /** + * @version Egret 2.4 + * @platform Web,Native + */ + width: number; + } + /** + * 文本最终解析的一行数据格式 + * @private + * @version Egret 2.4 + * @platform Web,Native + */ + interface ILineElement { + /** + * 文本占用宽度 + * @version Egret 2.4 + * @platform Web,Native + */ + width: number; + /** + * 文本占用高度 + * @version Egret 2.4 + * @platform Web,Native + */ + height: number; + /** + * 当前文本字符总数量(包括换行符) + * @version Egret 2.4 + * @platform Web,Native + */ + charNum: number; + /** + * 是否含有换行符 + * @version Egret 2.4 + * @platform Web,Native + */ + hasNextLine: boolean; + /** + * 本行文本内容 + * @version Egret 2.4 + * @platform Web,Native + */ + elements: Array; + } +} +declare namespace egret { + /** + * @private + * @version Egret 2.4 + * @platform Web,Native + */ + class InputController extends HashObject { + /** + * @private + */ + stageText: egret.StageText; + /** + * @private + */ + private stageTextAdded; + /** + * @private + */ + private _text; + /** + * @private + */ + private _isFocus; + /** + * @version Egret 2.4 + * @platform Web,Native + */ + constructor(); + /** + * + * @param text + * @version Egret 2.4 + * @platform Web,Native + */ + init(text: TextField): void; + /** + * @private + * + */ + _addStageText(): void; + /** + * @private + * + */ + _removeStageText(): void; + /** + * @private + * + * @returns + */ + _getText(): string; + /** + * @private + * + * @param value + */ + _setText(value: string): void; + /** + * @private + */ + _setColor(value: number): void; + /** + * @private + * + * @param event + */ + private focusHandler(event); + /** + * @private + * + * @param event + */ + private blurHandler(event); + private tempStage; + private onMouseDownHandler(event); + $onFocus(): void; + private onStageDownHandler(event); + /** + * @private + * + * @param event + */ + private updateTextHandler(event); + /** + * @private + * + */ + private resetText(); + /** + * @private + * + */ + _hideInput(): void; + /** + * @private + * + */ + private updateInput(); + /** + * @private + * + */ + _updateProperties(): void; + } +} +declare namespace egret { + /** + * @private + * @version Egret 2.4 + * @platform Web,Native + */ + interface StageText extends EventDispatcher { + /** + * @private + */ + $textfield: egret.TextField; + /** + * @private + * + * @param textfield + */ + $setTextField(textfield: egret.TextField): boolean; + /** + * @private + * + */ + $resetStageText(): void; + /** + * @private + * + * @returns + */ + $getText(): string; + /** + * @private + * + * @param value + */ + $setText(value: string): boolean; + /** + * @private + * + * @param value + */ + $setColor(value: number): boolean; + /** + * @private + * + */ + $show(): void; + /** + * @private + * + */ + $hide(): void; + /** + * @private + * + */ + $addToStage(): void; + /** + * @private + * + */ + $removeFromStage(): void; + /** + * @private + * + */ + $onBlur(): void; + } + /** + * @version Egret 2.4 + * @platform Web,Native + */ + let StageText: { + new (): StageText; + }; +} +declare namespace egret.sys { + /** + * @private + */ + const enum TextKeys { + /** + * @private + */ + fontSize = 0, + /** + * @private + */ + lineSpacing = 1, + /** + * @private + */ + textColor = 2, + /** + * @private + */ + textFieldWidth = 3, + /** + * @private + */ + textFieldHeight = 4, + /** + * @private + */ + textWidth = 5, + /** + * @private + */ + textHeight = 6, + /** + * @private + */ + textDrawWidth = 7, + /** + * @private + */ + fontFamily = 8, + /** + * @private + */ + textAlign = 9, + /** + * @private + */ + verticalAlign = 10, + /** + * @private + */ + textColorString = 11, + /** + * @private + */ + fontString = 12, + /** + * @private + */ + text = 13, + /** + * @private + */ + measuredWidths = 14, + /** + * @private + */ + bold = 15, + /** + * @private + */ + italic = 16, + /** + * @private + */ + fontStringChanged = 17, + /** + * @private + */ + textLinesChanged = 18, + /** + * @private + */ + wordWrap = 19, + /** + * @private + */ + displayAsPassword = 20, + /** + * @private + */ + maxChars = 21, + /** + * @private + */ + selectionActivePosition = 22, + /** + * @private + */ + selectionAnchorPosition = 23, + /** + * @private + */ + type = 24, + /** + * @private + */ + strokeColor = 25, + /** + * @private + */ + strokeColorString = 26, + /** + * @private + */ + stroke = 27, + /** + * @private + */ + scrollV = 28, + /** + * @private + */ + numLines = 29, + /** + * @private + */ + multiline = 30, + /** + * @private + */ + border = 31, + /** + * @private + */ + borderColor = 32, + /** + * @private + */ + background = 33, + /** + * @private + */ + backgroundColor = 34, + /** + * @private + */ + restrictAnd = 35, + /** + * @private + */ + restrictNot = 36, + /** + * @private + */ + inputType = 37, + /** + * @private + */ + textLinesChangedForNativeRender = 38, + } +} +declare namespace egret { + /** + * TextField is the text rendering class of egret. It conducts rendering by using the browser / device API. Due to different ways of font rendering in different browsers / devices, there may be differences in the rendering + * If developers expect no differences among all platforms, please use BitmapText + * @see http://edn.egret.com/cn/docs/page/141 Create Text + * + * @event egret.Event.CHANGE Dispatched when entering text user input。 + * @event egret.FocusEvent.FOCUS_IN Dispatched after the focus to enter text. + * @event egret.FocusEvent.FOCUS_OUT Enter the text loses focus after dispatch. + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/text/TextField.ts + * @language en_US + */ + /** + * TextField是egret的文本渲染类,采用浏览器/设备的API进行渲染,在不同的浏览器/设备中由于字体渲染方式不一,可能会有渲染差异 + * 如果开发者希望所有平台完全无差异,请使用BitmapText + * @see http://edn.egret.com/cn/docs/page/141 创建文本 + * + * @event egret.Event.CHANGE 输入文本有用户输入时调度。 + * @event egret.FocusEvent.FOCUS_IN 聚焦输入文本后调度。 + * @event egret.FocusEvent.FOCUS_OUT 输入文本失去焦点后调度。 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/text/TextField.ts + * @language zh_CN + */ + class TextField extends DisplayObject { + /** + * default fontFamily + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 默认文本字体 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static default_fontFamily: string; + /** + * default size in pixels of text + * @version Egret 3.2.1 + * @platform Web,Native + * @language en_US + */ + /** + * 默认文本字号大小 + * @version Egret 3.2.1 + * @platform Web,Native + * @language zh_CN + */ + static default_size: number; + /** + * default color of the text. + * @version Egret 3.2.1 + * @platform Web,Native + * @language en_US + */ + /** + * 默认文本颜色 + * @version Egret 3.2.1 + * @platform Web,Native + * @language zh_CN + */ + static default_textColor: number; + /** + * @version Egret 2.4 + * @platform Web,Native + */ + constructor(); + protected createNativeDisplayObject(): void; + /** + * @private + */ + $TextField: Object; + /** + * @private + */ + private isInput(); + $inputEnabled: boolean; + $setTouchEnabled(value: boolean): void; + /** + * The name of the font to use, or a comma-separated list of font names. + * @default "Arial" + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 要使用的字体的名称或用逗号分隔的字体名称列表。 + * @default "Arial" + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + fontFamily: string; + $setFontFamily(value: string): boolean; + /** + * The size in pixels of text + * @default 30 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 文本的字号大小。 + * @default 30 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + size: number; + $setSize(value: number): boolean; + /** + * Specifies whether the text is boldface. + * @default false + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 是否显示为粗体。 + * @default false + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + bold: boolean; + $setBold(value: boolean): boolean; + /** + * Determines whether the text is italic font. + * @default false + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 是否显示为斜体。 + * @default false + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + italic: boolean; + $setItalic(value: boolean): boolean; + /** + * @private + * + */ + private invalidateFontString(); + /** + * Horizontal alignment of text. + * @default:egret.HorizontalAlign.LEFT + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 文本的水平对齐方式。 + * @default:egret.HorizontalAlign.LEFT + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + textAlign: string; + $setTextAlign(value: string): boolean; + /** + * Vertical alignment of text. + * @default:egret.VerticalAlign.TOP + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 文字的垂直对齐方式。 + * @default:egret.VerticalAlign.TOP + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + verticalAlign: string; + $setVerticalAlign(value: string): boolean; + /** + * An integer representing the amount of vertical space between lines. + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 一个整数,表示行与行之间的垂直间距量 + * @default 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + lineSpacing: number; + $setLineSpacing(value: number): boolean; + /** + * Color of the text. + * @default 0x000000 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 文本颜色 + * @default 0x000000 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + textColor: number; + $setTextColor(value: number): boolean; + /** + * A Boolean value that indicates whether the text field word wrap. If the value is true, then the text field by word wrap; + * if the value is false, the text field by newline characters. + * @default false + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 一个布尔值,表示文本字段是否按单词换行。如果值为 true,则该文本字段按单词换行; + * 如果值为 false,则该文本字段按字符换行。 + * @default false + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + wordWrap: boolean; + $setWordWrap(value: boolean): void; + protected inputUtils: InputController; + /** + * @version Egret 2.4 + * @platform Web,Native + */ + /** + * Type of the text field. + * Any one of the following TextFieldType constants: TextFieldType.DYNAMIC (specifies the dynamic text field that users can not edit), or TextFieldType.INPUT (specifies the dynamic text field that users can edit). + * @default egret.TextFieldType.DYNAMIC + * @language en_US + */ + /** + * 文本字段的类型。 + * 以下 TextFieldType 常量中的任一个:TextFieldType.DYNAMIC(指定用户无法编辑的动态文本字段),或 TextFieldType.INPUT(指定用户可以编辑的输入文本字段)。 + * @default egret.TextFieldType.DYNAMIC + * @language zh_CN + */ + type: string; + /** + * @private + * + * @param value + */ + $setType(value: string): boolean; + /** + * @version Egret 3.1.2 + * @platform Web,Native + */ + /** + * Pop-up keyboard type. + * Any of a TextFieldInputType constants. + * @language en_US + */ + /** + * 弹出键盘的类型。 + * TextFieldInputType 常量中的任一个。 + * @language zh_CN + */ + inputType: string; + /** + * @version Egret 2.4 + * @platform Web,Native + */ + /** + * Serve as a string of the current text field in the text + * @language en_US + */ + /** + * 作为文本字段中当前文本的字符串 + * @language zh_CN + */ + text: string; + /** + * @private + * + * @returns + */ + $getText(): string; + /** + * @private + * + * @param value + */ + $setBaseText(value: string): boolean; + /** + * @private + * + * @param value + */ + $setText(value: string): boolean; + /** + * Specify whether the text field is a password text field. + * If the value of this property is true, the text field is treated as a password text field and hides the input characters using asterisks instead of the actual characters. If false, the text field is not treated as a password text field. + * @default false + * @language en_US + */ + /** + * 指定文本字段是否是密码文本字段。 + * 如果此属性的值为 true,则文本字段被视为密码文本字段,并使用星号而不是实际字符来隐藏输入的字符。如果为 false,则不会将文本字段视为密码文本字段。 + * @default false + * @language zh_CN + */ + displayAsPassword: boolean; + /** + * @private + * + * @param value + */ + $setDisplayAsPassword(value: boolean): boolean; + /** + * @version Egret 2.4 + * @platform Web,Native + */ + /** + * Represent the stroke color of the text. + * Contain three 8-bit numbers with RGB color components; for example, 0xFF0000 is red, 0x00FF00 is green. + * @default 0x000000 + * @language en_US + */ + /** + * 表示文本的描边颜色。 + * 包含三个 8 位 RGB 颜色成分的数字;例如,0xFF0000 为红色,0x00FF00 为绿色。 + * @default 0x000000 + * @language zh_CN + */ + strokeColor: number; + /** + * @private + * + * @param value + */ + $setStrokeColor(value: number): boolean; + /** + * @version Egret 2.4 + * @platform Web,Native + */ + /** + * Indicate the stroke width. + * 0 means no stroke. + * @default 0 + * @language en_US + */ + /** + * 表示描边宽度。 + * 0为没有描边。 + * @default 0 + * @language zh_CN + */ + stroke: number; + /** + * @private + * + * @param value + */ + $setStroke(value: number): boolean; + /** + * The maximum number of characters that the text field can contain, as entered by a user. \n A script can insert more text than maxChars allows; the maxChars property indicates only how much text a user can enter. If the value of this property is 0, a user can enter an unlimited amount of text. + * The default value is 0. + * @default 0 + * @language en_US + */ + /** + * 文本字段中最多可包含的字符数(即用户输入的字符数)。 + * 脚本可以插入比 maxChars 允许的字符数更多的文本;maxChars 属性仅表示用户可以输入多少文本。如果此属性的值为 0,则用户可以输入无限数量的文本。 + * @default 0 + * @language zh_CN + */ + maxChars: number; + /** + * @private + * + * @param value + */ + $setMaxChars(value: number): boolean; + /** + * @version Egret 2.4 + * @platform Web,Native + */ + /** + * Vertical position of text in a text field. scrollV property helps users locate specific passages in a long article, and create scrolling text fields. + * Vertically scrolling units are lines, and horizontal scrolling unit is pixels. + * If the first displayed line is the first line in the text field, scrollV is set to 1 (instead of 0). + * @language en_US + */ + /** + * 文本在文本字段中的垂直位置。scrollV 属性可帮助用户定位到长篇文章的特定段落,还可用于创建滚动文本字段。 + * 垂直滚动的单位是行,而水平滚动的单位是像素。 + * 如果显示的第一行是文本字段中的第一行,则 scrollV 设置为 1(而非 0)。 + * @language zh_CN + */ + scrollV: number; + /** + * The maximum value of scrollV + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * scrollV 的最大值 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly maxScrollV: number; + /** + * @private + * @version Egret 2.4 + * @platform Web,Native + */ + readonly selectionBeginIndex: number; + /** + * @private + * @version Egret 2.4 + * @platform Web,Native + */ + readonly selectionEndIndex: number; + /** + * @private + * @version Egret 2.4 + * @platform Web,Native + */ + readonly caretIndex: number; + /** + * @private + * + * @param beginIndex + * @param endIndex + */ + $setSelection(beginIndex: number, endIndex: number): boolean; + /** + * @private + * + * @returns + */ + $getLineHeight(): number; + /** + * Number of lines of text. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 文本行数。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly numLines: number; + /** + * Indicate whether field is a multiline text field. Note that this property is valid only when the type is TextFieldType.INPUT. + * If the value is true, the text field is multiline; if the value is false, the text field is a single-line text field. In a field of type TextFieldType.INPUT, the multiline value determines whether the Enter key creates a new line (a value of false, and the Enter key is ignored). + * @default false + * @language en_US + */ + /** + * 表示字段是否为多行文本字段。注意,此属性仅在type为TextFieldType.INPUT时才有效。 + * 如果值为 true,则文本字段为多行文本字段;如果值为 false,则文本字段为单行文本字段。在类型为 TextFieldType.INPUT 的字段中,multiline 值将确定 Enter 键是否创建新行(如果值为 false,则将忽略 Enter 键)。 + * @default false + * @language zh_CN + */ + multiline: boolean; + /** + * @private + * + * @param value + */ + $setMultiline(value: boolean): boolean; + /** + * Indicates a user can enter into the text field character set. If you restrict property is null, you can enter any character. If you restrict property is an empty string, you can not enter any character. If you restrict property is a string of characters, you can enter only characters in the string in the text field. The string is scanned from left to right. You can use a hyphen (-) to specify a range. Only restricts user interaction; a script may put any text into the text field.
+ * If the string of characters caret (^) at the beginning, all characters are initially accepted, then the string are excluded from receiving ^ character. If the string does not begin with a caret (^) to, any characters are initially accepted and then a string of characters included in the set of accepted characters.
+ * The following example allows only uppercase characters, spaces, and numbers in the text field:
+ * My_txt.restrict = "A-Z 0-9";
+ * The following example includes all characters except lowercase letters:
+ * My_txt.restrict = "^ a-z";
+ * If you need to enter characters \ ^, use two backslash "\\ -" "\\ ^":
+ * Can be used anywhere in the string ^ to rule out including characters and switch between characters, but can only be used to exclude a ^. The following code includes only uppercase letters except uppercase Q:
+ * My_txt.restrict = "A-Z ^ Q";
+ * @version Egret 2.4 + * @platform Web,Native + * @default null + * @language en_US + */ + /** + * 表示用户可输入到文本字段中的字符集。如果 restrict 属性的值为 null,则可以输入任何字符。如果 restrict 属性的值为空字符串,则不能输入任何字符。如果 restrict 属性的值为一串字符,则只能在文本字段中输入该字符串中的字符。从左向右扫描该字符串。可以使用连字符 (-) 指定一个范围。只限制用户交互;脚本可将任何文本放入文本字段中。
+ * 如果字符串以尖号 (^) 开头,则先接受所有字符,然后从接受字符集中排除字符串中 ^ 之后的字符。如果字符串不以尖号 (^) 开头,则最初不接受任何字符,然后将字符串中的字符包括在接受字符集中。
+ * 下例仅允许在文本字段中输入大写字符、空格和数字:
+ * my_txt.restrict = "A-Z 0-9";
+ * 下例包含除小写字母之外的所有字符:
+ * my_txt.restrict = "^a-z";
+ * 如果需要输入字符 \ ^,请使用2个反斜杠 "\\-" "\\^" :
+ * 可在字符串中的任何位置使用 ^,以在包含字符与排除字符之间进行切换,但是最多只能有一个 ^ 用来排除。下面的代码只包含除大写字母 Q 之外的大写字母:
+ * my_txt.restrict = "A-Z^Q";
+ * @version Egret 2.4 + * @platform Web,Native + * @default null + * @language zh_CN + */ + restrict: string; + /** + * @private + * + * @param value + */ + $setWidth(value: number): boolean; + /** + * @private + * + * @param value + */ + $setHeight(value: number): boolean; + /** + * @private + * 获取显示宽度 + */ + $getWidth(): number; + /** + * @private + * 获取显示宽度 + */ + $getHeight(): number; + /** + * @private + */ + private textNode; + /** + * @private + */ + $graphicsNode: sys.GraphicsNode; + /** + * @version Egret 2.4 + * @platform Web,Native + */ + /** + * Specifies whether the text field has a border. + * If true, the text field has a border. If false, the text field has no border. + * Use borderColor property to set the border color. + * @default false + * @language en_US + */ + /** + * 指定文本字段是否具有边框。 + * 如果为 true,则文本字段具有边框。如果为 false,则文本字段没有边框。 + * 使用 borderColor 属性来设置边框颜色。 + * @default false + * @language zh_CN + */ + border: boolean; + /** + * @private + */ + $setBorder(value: boolean): void; + /** + * @version Egret 2.4 + * @platform Web,Native + */ + /** + * The color of the text field border. + * Even currently is no border can be retrieved or set this property, but only if the text field has the border property is set to true, the color is visible. + * @default 0x000000 + * @language en_US + */ + /** + * 文本字段边框的颜色。 + * 即使当前没有边框,也可检索或设置此属性,但只有当文本字段已将 border 属性设置为 true 时,才可以看到颜色。 + * @default 0x000000 + * @language zh_CN + */ + borderColor: number; + /** + * @private + */ + $setBorderColor(value: number): void; + /** + * @version Egret 2.4 + * @platform Web,Native + */ + /** + * Specifies whether the text field has a background fill. + * If true, the text field has a background fill. If false, the text field has no background fill. + * Use the backgroundColor property to set the background color of the text field. + * @default false + * @language en_US + */ + /** + * 指定文本字段是否具有背景填充。 + * 如果为 true,则文本字段具有背景填充。如果为 false,则文本字段没有背景填充。 + * 使用 backgroundColor 属性来设置文本字段的背景颜色。 + * @default false + * @language zh_CN + */ + background: boolean; + /** + * @private + */ + $setBackground(value: boolean): void; + /** + * @version Egret 2.4 + * @platform Web,Native + */ + /** + * Color of the text field background. + * Even currently is no background, can be retrieved or set this property, but only if the text field has the background property set to true, the color is visible. + * @default 0xFFFFFF + * @language en_US + */ + /** + * 文本字段背景的颜色。 + * 即使当前没有背景,也可检索或设置此属性,但只有当文本字段已将 background 属性设置为 true 时,才可以看到颜色。 + * @default 0xFFFFFF + * @language zh_CN + */ + backgroundColor: number; + /** + * @private + */ + $setBackgroundColor(value: number): void; + /** + * @private + * + */ + private fillBackground(lines?); + /** + * Enter the text automatically entered into the input state, the input type is text only and may only be invoked in the user interaction. + * @version Egret 3.0.8 + * @platform Web,Native + * @language en_US + */ + /** + * 输入文本自动进入到输入状态,仅在类型是输入文本并且是在用户交互下才可以调用。 + * @version Egret 3.0.8 + * @platform Web,Native + * @language zh_CN + */ + setFocus(): void; + /** + * @private + * + */ + $onRemoveFromStage(): void; + /** + * @private + * + * @param stage + * @param nestLevel + */ + $onAddToStage(stage: Stage, nestLevel: number): void; + $invalidateTextField(): void; + $getRenderBounds(): Rectangle; + /** + * @private + */ + $measureContentBounds(bounds: Rectangle): void; + $updateRenderNode(): void; + /** + * @private + */ + private isFlow; + /** + * @version Egret 2.4 + * @platform Web,Native + */ + /** + * Set rich text + * @language en_US + */ + /** + * 设置富文本 + * @see http://edn.egret.com/cn/index.php/article/index/id/146 + * @language zh_CN + */ + textFlow: Array; + /** + * @private + * + * @param text + * @returns + */ + private changeToPassText(text); + /** + * @private + */ + private textArr; + /** + * @private + * + * @param textArr + */ + private setMiddleStyle(textArr); + /** + * Get the text measured width + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 获取文本测量宽度 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly textWidth: number; + /** + * Get Text measuring height + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 获取文本测量高度 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly textHeight: number; + /** + * @private + * @param text + * @version Egret 2.4 + * @platform Web,Native + */ + appendText(text: string): void; + /** + * @private + * @param element + * @version Egret 2.4 + * @platform Web,Native + */ + appendElement(element: egret.ITextElement): void; + /** + * @private + */ + private linesArr; + $getLinesArr(): Array; + /** + * @private + * + * @returns + */ + $getLinesArr2(): Array; + /** + * @private + */ + $isTyping: boolean; + /** + * @private + */ + $setIsTyping(value: boolean): void; + /** + * @private + * 返回要绘制的下划线列表 + */ + private drawText(); + private addEvent(); + private removeEvent(); + private onTapHandler(e); + } + interface TextField { + addEventListener(type: "link", listener: (this: Z, e: TextEvent) => void, thisObject: Z, useCapture?: boolean, priority?: number): any; + addEventListener(type: "focusIn" | "focusOut", listener: (this: Z, e: FocusEvent) => void, thisObject: Z, useCapture?: boolean, priority?: number): any; + addEventListener(type: string, listener: Function, thisObject: any, useCapture?: boolean, priority?: number): any; + } +} +declare namespace egret { + /** + * TextFieldInputType class is an enumeration of constant value used in setting the inputType property of the TextField class. + * @version Egret 3.1.2 + * @platform Web,Native + * @language en_US + */ + /** + * TextFieldInputType 类是在设置 TextField 类的 inputType 属性时使用的常数值的枚举。 + * @version Egret 3.1.2 + * @platform Web,Native + * @language zh_CN + */ + class TextFieldInputType { + /** + * The default + * @version Egret 3.1.2 + * @platform Web,Native + * @language en_US + */ + /** + * 默认 input 类型 + * @version Egret 3.1.2 + * @platform Web,Native + * @language zh_CN + */ + static TEXT: string; + /** + * Telephone Number Inputs + * @version Egret 3.1.2 + * @platform Web,Native + * @language en_US + */ + /** + * 电话号码 input 类型 + * @version Egret 3.1.2 + * @platform Web,Native + * @language zh_CN + */ + static TEL: string; + /** + * Password Inputs + * @version Egret 3.1.2 + * @platform Web,Native + * @language en_US + */ + /** + * password 类型 + * @version Egret 3.1.2 + * @platform Web,Native + * @language zh_CN + */ + static PASSWORD: string; + } +} +declare namespace egret { + /** + * TextFieldType class is an enumeration of constant value used in setting the type property of the TextField class. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * TextFieldType 类是在设置 TextField 类的 type 属性时使用的常数值的枚举。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + class TextFieldType { + /** + * Used to specify dynamic text + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 用于指定动态文本 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static DYNAMIC: string; + /** + * Used to specify the input text + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 用于指定输入文本 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static INPUT: string; + } +} +declare namespace egret { + /** + * @private + * @version Egret 2.4 + * @platform Web,Native + */ + class TextFieldUtils { + /** + * 获取第一个绘制的行数 + * @param textfield 文本 + * @returns {number} 行数,从0开始 + * @private + */ + static $getStartLine(textfield: egret.TextField): number; + /** + * 获取水平比例 + * @param textfield 文本 + * @returns {number} 水平比例 + * @private + */ + static $getHalign(textfield: egret.TextField): number; + /** + * @private + * + * @param textfield + * @returns + */ + static $getTextHeight(textfield: egret.TextField): number; + /** + * 获取垂直比例 + * @param textfield 文本 + * @returns {number} 垂直比例 + * @private + */ + static $getValign(textfield: egret.TextField): number; + /** + * 根据x、y获取文本项 + * @param textfield 文本 + * @param x x坐标值 + * @param y y坐标值 + * @returns 文本单项 + * @private + */ + static $getTextElement(textfield: egret.TextField, x: number, y: number): ITextElement; + /** + * 获取文本点击块 + * @param textfield 文本 + * @param x x坐标值 + * @param y y坐标值 + * @returns 文本点击块 + * @private + */ + static $getHit(textfield: egret.TextField, x: number, y: number): IHitTextElement; + /** + * 获取当前显示多少行 + * @param textfield 文本 + * @returns {number} 显示的行数 + * @private + */ + static $getScrollNum(textfield: egret.TextField): number; + } +} +/** + * @private + */ +declare namespace egret.sys { + /** + * 测量文本在指定样式下的宽度。 + * @param text 要测量的文本内容。 + * @param fontFamily 字体名称 + * @param fontSize 字体大小 + * @param bold 是否粗体 + * @param italic 是否斜体 + */ + let measureText: (text: string, fontFamily: string, fontSize: number, bold: boolean, italic: boolean) => number; +} +declare namespace egret { + /** + * The VerticalAlign class defines the possible values for the vertical alignment. + * @see egret.TextField#verticalAlign + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * VerticalAlign 类为垂直对齐方式定义可能的值。 + * @see egret.TextField#verticalAlign + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + class VerticalAlign { + /** + * Vertically align content to the top of the container. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将内容与容器的顶部对齐。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static TOP: string; + /** + * Vertically align content to the bottom of the container. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将内容与容器的底部对齐。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static BOTTOM: string; + /** + * Vertically align content in the middle of the container. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 在容器的垂直中心对齐内容。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static MIDDLE: string; + /** + * Vertical alignment with both edges + * Note: TextFiled does not support this alignment method." + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 垂直两端对齐 + * 注意:TextFiled不支持此对齐方式。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static JUSTIFY: string; + /** + * Align the content of the child items, relative to the container. This operation will adjust uniformly the size of all the child items to be the Content Height \" of the container \". + * The Content Height \" of the container \" is the size of the max. child item. If the size of all child items are less than the height of the container, they will be adjusted to the height of the container. + * Note: TextFiled does not support this alignment method. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 相对于容器对子项进行内容对齐。这会将所有子项的大小统一调整为容器的"内容高度"。 + * 容器的"内容高度"是最大子项的大小,如果所有子项都小于容器的高度,则会将所有子项的大小调整为容器的高度。 + * 注意:TextFiled不支持此对齐方式。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static CONTENT_JUSTIFY: string; + } +} +declare namespace egret { + /** + * @language en_US + * The Base64Util class provides methods for encoding and decoding base64. + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/utils/Base64Util.ts + */ + /** + * @language zh_CN + * Base64Util 类提供用于编解码base64的方法。 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/utils/Base64Util.ts + */ + class Base64Util { + /** + * @language en_US + * encode base64. + * @version Egret 2.4 + * @platform Web,Native + */ + /** + * @language zh_CN + * 编码base64。 + * @version Egret 2.4 + * @platform Web,Native + */ + static encode(arraybuffer: ArrayBuffer): string; + /** + * @language en_US + * decode base64. + * @version Egret 2.4 + * @platform Web,Native + */ + /** + * @language zh_CN + * 解码base64。 + * @version Egret 2.4 + * @platform Web,Native + */ + static decode(base64: string): ArrayBuffer; + } +} +/** + * @private + */ +declare let chars: string; +/** + * @private + */ +declare let lookup: Uint8Array; +declare namespace egret { + /** + * The Endian class contains values that denote the byte order used to represent multibyte numbers. + * The byte order is either bigEndian (most significant byte first) or littleEndian (least significant byte first). + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * Endian 类中包含一些值,它们表示用于表示多字节数字的字节顺序。 + * 字节顺序为 bigEndian(最高有效字节位于最前)或 littleEndian(最低有效字节位于最前)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + class Endian { + /** + * Indicates the least significant byte of the multibyte number appears first in the sequence of bytes. + * The hexadecimal number 0x12345678 has 4 bytes (2 hexadecimal digits per byte). The most significant byte is 0x12. The least significant byte is 0x78. (For the equivalent decimal number, 305419896, the most significant digit is 3, and the least significant digit is 6). + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示多字节数字的最低有效字节位于字节序列的最前面。 + * 十六进制数字 0x12345678 包含 4 个字节(每个字节包含 2 个十六进制数字)。最高有效字节为 0x12。最低有效字节为 0x78。(对于等效的十进制数字 305419896,最高有效数字是 3,最低有效数字是 6)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static LITTLE_ENDIAN: string; + /** + * Indicates the most significant byte of the multibyte number appears first in the sequence of bytes. + * The hexadecimal number 0x12345678 has 4 bytes (2 hexadecimal digits per byte). The most significant byte is 0x12. The least significant byte is 0x78. (For the equivalent decimal number, 305419896, the most significant digit is 3, and the least significant digit is 6). + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 表示多字节数字的最高有效字节位于字节序列的最前面。 + * 十六进制数字 0x12345678 包含 4 个字节(每个字节包含 2 个十六进制数字)。最高有效字节为 0x12。最低有效字节为 0x78。(对于等效的十进制数字 305419896,最高有效数字是 3,最低有效数字是 6)。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static BIG_ENDIAN: string; + } + const enum EndianConst { + LITTLE_ENDIAN = 0, + BIG_ENDIAN = 1, + } + /** + * The ByteArray class provides methods and attributes for optimized reading and writing as well as dealing with binary data. + * Note: The ByteArray class is applied to the advanced developers who need to access data at the byte layer. + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/utils/ByteArray.ts + * @language en_US + */ + /** + * ByteArray 类提供用于优化读取、写入以及处理二进制数据的方法和属性。 + * 注意:ByteArray 类适用于需要在字节层访问数据的高级开发人员。 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/utils/ByteArray.ts + * @language zh_CN + */ + class ByteArray { + /** + * @private + */ + protected bufferExtSize: number; + protected data: DataView; + protected _bytes: Uint8Array; + /** + * @private + */ + protected _position: number; + /** + * + * 已经使用的字节偏移量 + * @protected + * @type {number} + * @memberOf ByteArray + */ + protected write_position: number; + /** + * Changes or reads the byte order; egret.EndianConst.BIG_ENDIAN or egret.EndianConst.LITTLE_EndianConst. + * @default egret.EndianConst.BIG_ENDIAN + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 更改或读取数据的字节顺序;egret.EndianConst.BIG_ENDIAN 或 egret.EndianConst.LITTLE_ENDIAN。 + * @default egret.EndianConst.BIG_ENDIAN + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + endian: string; + protected $endian: EndianConst; + /** + * @version Egret 2.4 + * @platform Web,Native + */ + constructor(buffer?: ArrayBuffer | Uint8Array, bufferExtSize?: number); + /** + * @deprecated + * @version Egret 2.4 + * @platform Web,Native + */ + setArrayBuffer(buffer: ArrayBuffer): void; + /** + * 可读的剩余字节数 + * + * @returns + * + * @memberOf ByteArray + */ + readonly readAvailable: number; + /** + * @private + */ + buffer: ArrayBuffer; + readonly rawBuffer: ArrayBuffer; + readonly bytes: Uint8Array; + /** + * @private + * @version Egret 2.4 + * @platform Web,Native + */ + /** + * @private + */ + dataView: DataView; + /** + * @private + */ + readonly bufferOffset: number; + /** + * The current position of the file pointer (in bytes) to move or return to the ByteArray object. The next time you start reading reading method call in this position, or will start writing in this position next time call a write method. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将文件指针的当前位置(以字节为单位)移动或返回到 ByteArray 对象中。下一次调用读取方法时将在此位置开始读取,或者下一次调用写入方法时将在此位置开始写入。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + position: number; + /** + * The length of the ByteArray object (in bytes). + * If the length is set to be larger than the current length, the right-side zero padding byte array. + * If the length is set smaller than the current length, the byte array is truncated. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * ByteArray 对象的长度(以字节为单位)。 + * 如果将长度设置为大于当前长度的值,则用零填充字节数组的右侧。 + * 如果将长度设置为小于当前长度的值,将会截断该字节数组。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + length: number; + protected _validateBuffer(value: number): void; + /** + * The number of bytes that can be read from the current position of the byte array to the end of the array data. + * When you access a ByteArray object, the bytesAvailable property in conjunction with the read methods each use to make sure you are reading valid data. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 可从字节数组的当前位置到数组末尾读取的数据的字节数。 + * 每次访问 ByteArray 对象时,将 bytesAvailable 属性与读取方法结合使用,以确保读取有效的数据。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly bytesAvailable: number; + /** + * Clears the contents of the byte array and resets the length and position properties to 0. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 清除字节数组的内容,并将 length 和 position 属性重置为 0。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + clear(): void; + /** + * Read a Boolean value from the byte stream. Read a simple byte. If the byte is non-zero, it returns true; otherwise, it returns false. + * @return If the byte is non-zero, it returns true; otherwise, it returns false. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从字节流中读取布尔值。读取单个字节,如果字节非零,则返回 true,否则返回 false + * @return 如果字节不为零,则返回 true,否则返回 false + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readBoolean(): boolean; + /** + * Read signed bytes from the byte stream. + * @return An integer ranging from -128 to 127 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从字节流中读取带符号的字节 + * @return 介于 -128 和 127 之间的整数 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readByte(): number; + /** + * Read data byte number specified by the length parameter from the byte stream. Starting from the position specified by offset, read bytes into the ByteArray object specified by the bytes parameter, and write bytes into the target ByteArray + * @param bytes ByteArray object that data is read into + * @param offset Offset (position) in bytes. Read data should be written from this position + * @param length Byte number to be read Default value 0 indicates reading all available data + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从字节流中读取 length 参数指定的数据字节数。从 offset 指定的位置开始,将字节读入 bytes 参数指定的 ByteArray 对象中,并将字节写入目标 ByteArray 中 + * @param bytes 要将数据读入的 ByteArray 对象 + * @param offset bytes 中的偏移(位置),应从该位置写入读取的数据 + * @param length 要读取的字节数。默认值 0 导致读取所有可用的数据 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readBytes(bytes: ByteArray, offset?: number, length?: number): void; + /** + * Read an IEEE 754 double-precision (64 bit) floating point number from the byte stream + * @return Double-precision (64 bit) floating point number + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从字节流中读取一个 IEEE 754 双精度(64 位)浮点数 + * @return 双精度(64 位)浮点数 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readDouble(): number; + /** + * Read an IEEE 754 single-precision (32 bit) floating point number from the byte stream + * @return Single-precision (32 bit) floating point number + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从字节流中读取一个 IEEE 754 单精度(32 位)浮点数 + * @return 单精度(32 位)浮点数 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readFloat(): number; + /** + * Read a 32-bit signed integer from the byte stream. + * @return A 32-bit signed integer ranging from -2147483648 to 2147483647 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从字节流中读取一个带符号的 32 位整数 + * @return 介于 -2147483648 和 2147483647 之间的 32 位带符号整数 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readInt(): number; + /** + * Read a 16-bit signed integer from the byte stream. + * @return A 16-bit signed integer ranging from -32768 to 32767 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从字节流中读取一个带符号的 16 位整数 + * @return 介于 -32768 和 32767 之间的 16 位带符号整数 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readShort(): number; + /** + * Read unsigned bytes from the byte stream. + * @return A unsigned integer ranging from 0 to 255 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从字节流中读取无符号的字节 + * @return 介于 0 和 255 之间的无符号整数 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readUnsignedByte(): number; + /** + * Read a 32-bit unsigned integer from the byte stream. + * @return A 32-bit unsigned integer ranging from 0 to 4294967295 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从字节流中读取一个无符号的 32 位整数 + * @return 介于 0 和 4294967295 之间的 32 位无符号整数 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readUnsignedInt(): number; + /** + * Read a 16-bit unsigned integer from the byte stream. + * @return A 16-bit unsigned integer ranging from 0 to 65535 + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从字节流中读取一个无符号的 16 位整数 + * @return 介于 0 和 65535 之间的 16 位无符号整数 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readUnsignedShort(): number; + /** + * Read a UTF-8 character string from the byte stream Assume that the prefix of the character string is a short unsigned integer (use byte to express length) + * @return UTF-8 character string + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从字节流中读取一个 UTF-8 字符串。假定字符串的前缀是无符号的短整型(以字节表示长度) + * @return UTF-8 编码的字符串 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readUTF(): string; + /** + * Read a UTF-8 byte sequence specified by the length parameter from the byte stream, and then return a character string + * @param Specify a short unsigned integer of the UTF-8 byte length + * @return A character string consists of UTF-8 bytes of the specified length + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 从字节流中读取一个由 length 参数指定的 UTF-8 字节序列,并返回一个字符串 + * @param length 指明 UTF-8 字节长度的无符号短整型数 + * @return 由指定长度的 UTF-8 字节组成的字符串 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readUTFBytes(length: number): string; + /** + * Write a Boolean value. A single byte is written according to the value parameter. If the value is true, write 1; if the value is false, write 0. + * @param value A Boolean value determining which byte is written. If the value is true, write 1; if the value is false, write 0. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 写入布尔值。根据 value 参数写入单个字节。如果为 true,则写入 1,如果为 false,则写入 0 + * @param value 确定写入哪个字节的布尔值。如果该参数为 true,则该方法写入 1;如果该参数为 false,则该方法写入 0 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + writeBoolean(value: boolean): void; + /** + * Write a byte into the byte stream + * The low 8 bits of the parameter are used. The high 24 bits are ignored. + * @param value A 32-bit integer. The low 8 bits will be written into the byte stream + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 在字节流中写入一个字节 + * 使用参数的低 8 位。忽略高 24 位 + * @param value 一个 32 位整数。低 8 位将被写入字节流 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + writeByte(value: number): void; + /** + * Write the byte sequence that includes length bytes in the specified byte array, bytes, (starting at the byte specified by offset, using a zero-based index), into the byte stream + * If the length parameter is omitted, the default length value 0 is used and the entire buffer starting at offset is written. If the offset parameter is also omitted, the entire buffer is written + * If the offset or length parameter is out of range, they are clamped to the beginning and end of the bytes array. + * @param bytes ByteArray Object + * @param offset A zero-based index specifying the position into the array to begin writing + * @param length An unsigned integer specifying how far into the buffer to write + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将指定字节数组 bytes(起始偏移量为 offset,从零开始的索引)中包含 length 个字节的字节序列写入字节流 + * 如果省略 length 参数,则使用默认长度 0;该方法将从 offset 开始写入整个缓冲区。如果还省略了 offset 参数,则写入整个缓冲区 + * 如果 offset 或 length 超出范围,它们将被锁定到 bytes 数组的开头和结尾 + * @param bytes ByteArray 对象 + * @param offset 从 0 开始的索引,表示在数组中开始写入的位置 + * @param length 一个无符号整数,表示在缓冲区中的写入范围 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + writeBytes(bytes: ByteArray, offset?: number, length?: number): void; + /** + * Write an IEEE 754 double-precision (64 bit) floating point number into the byte stream + * @param value Double-precision (64 bit) floating point number + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 在字节流中写入一个 IEEE 754 双精度(64 位)浮点数 + * @param value 双精度(64 位)浮点数 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + writeDouble(value: number): void; + /** + * Write an IEEE 754 single-precision (32 bit) floating point number into the byte stream + * @param value Single-precision (32 bit) floating point number + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 在字节流中写入一个 IEEE 754 单精度(32 位)浮点数 + * @param value 单精度(32 位)浮点数 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + writeFloat(value: number): void; + /** + * Write a 32-bit signed integer into the byte stream + * @param value An integer to be written into the byte stream + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 在字节流中写入一个带符号的 32 位整数 + * @param value 要写入字节流的整数 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + writeInt(value: number): void; + /** + * Write a 16-bit integer into the byte stream. The low 16 bits of the parameter are used. The high 16 bits are ignored. + * @param value A 32-bit integer. Its low 16 bits will be written into the byte stream + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 在字节流中写入一个 16 位整数。使用参数的低 16 位。忽略高 16 位 + * @param value 32 位整数,该整数的低 16 位将被写入字节流 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + writeShort(value: number): void; + /** + * Write a 32-bit unsigned integer into the byte stream + * @param value An unsigned integer to be written into the byte stream + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 在字节流中写入一个无符号的 32 位整数 + * @param value 要写入字节流的无符号整数 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + writeUnsignedInt(value: number): void; + /** + * Write a 16-bit unsigned integer into the byte stream + * @param value An unsigned integer to be written into the byte stream + * @version Egret 2.5 + * @platform Web,Native + * @language en_US + */ + /** + * 在字节流中写入一个无符号的 16 位整数 + * @param value 要写入字节流的无符号整数 + * @version Egret 2.5 + * @platform Web,Native + * @language zh_CN + */ + writeUnsignedShort(value: number): void; + /** + * Write a UTF-8 string into the byte stream. The length of the UTF-8 string in bytes is written first, as a 16-bit integer, followed by the bytes representing the characters of the string + * @param value Character string value to be written + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将 UTF-8 字符串写入字节流。先写入以字节表示的 UTF-8 字符串长度(作为 16 位整数),然后写入表示字符串字符的字节 + * @param value 要写入的字符串值 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + writeUTF(value: string): void; + /** + * Write a UTF-8 string into the byte stream. Similar to the writeUTF() method, but the writeUTFBytes() method does not prefix the string with a 16-bit length word + * @param value Character string value to be written + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 将 UTF-8 字符串写入字节流。类似于 writeUTF() 方法,但 writeUTFBytes() 不使用 16 位长度的词为字符串添加前缀 + * @param value 要写入的字符串值 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + writeUTFBytes(value: string): void; + /** + * + * @returns + * @version Egret 2.4 + * @platform Web,Native + */ + toString(): string; + /** + * @private + * 将 Uint8Array 写入字节流 + * @param bytes 要写入的Uint8Array + * @param validateBuffer + */ + _writeUint8Array(bytes: Uint8Array | ArrayLike, validateBuffer?: boolean): void; + /** + * @param len + * @returns + * @version Egret 2.4 + * @platform Web,Native + * @private + */ + validate(len: number): boolean; + /**********************/ + /**********************/ + /** + * @private + * @param len + * @param needReplace + */ + protected validateBuffer(len: number): void; + /** + * @private + * UTF-8 Encoding/Decoding + */ + private encodeUTF8(str); + /** + * @private + * + * @param data + * @returns + */ + private decodeUTF8(data); + /** + * @private + * + * @param code_point + */ + private encoderError(code_point); + /** + * @private + * + * @param fatal + * @param opt_code_point + * @returns + */ + private decoderError(fatal, opt_code_point?); + /** + * @private + */ + private EOF_byte; + /** + * @private + */ + private EOF_code_point; + /** + * @private + * + * @param a + * @param min + * @param max + */ + private inRange(a, min, max); + /** + * @private + * + * @param n + * @param d + */ + private div(n, d); + /** + * @private + * + * @param string + */ + private stringToCodePoints(string); + } +} +declare namespace egret { + /** + * The Sprite class is a basic display list building block: a display list node that can contain children. + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/Sprite.ts + * @language en_US + */ + /** + * Sprite 类是基本显示列表构造块:一个可包含子项的显示列表节点。 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/Sprite.ts + * @language zh_CN + */ + class Sprite extends DisplayObjectContainer { + /** + * Creates a new Sprite instance. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 实例化一个容器 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + constructor(); + protected createNativeDisplayObject(): void; + /** + * @private + */ + $graphics: Graphics; + /** + * Specifies the Graphics object belonging to this Shape object, where vector drawing commands can occur. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 获取 Shape 中的 Graphics 对象。可通过此对象执行矢量绘图命令。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + readonly graphics: Graphics; + $hitTest(stageX: number, stageY: number): DisplayObject; + /** + * @private + */ + $measureContentBounds(bounds: Rectangle): void; + /** + * @private + */ + $onRemoveFromStage(): void; + } +} +declare namespace egret { + /** + * Registers the runtime class information for a class.This method adds some strings which represent the class name or + * some interface names to the class definition. After the registration,you can use egret.is() method to do the type checking + * for the instance of this class.
+ * Note:If you use the TypeScript programming language, the egret command line tool will automatically generate the registration code line. + * You don't need to manually call this method. + * + * @example the following code shows how to register the runtime class information for the EventDispatcher class and do the type checking: + *
+     *      egret.registerClass(egret.EventDispatcher,"egret.EventDispatcher",["egret.IEventDispatcher"]);
+     *      let dispatcher = new egret.EventDispatcher();
+     *      egret.log(egret.is(dispatcher, "egret.IEventDispatcher"));  //true。
+     *      egret.log(egret.is(dispatcher, "egret.EventDispatcher"));   //true。
+     *      egret.log(egret.is(dispatcher, "egret.Bitmap"));   //false。
+     * 
+ * @param classDefinition the class definition to be registered. + * @param className a unique identification string of the specific class + * @param interfaceNames a list of unique identification string of the specific interfaces. + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 为一个类定义注册运行时类信息,用此方法往类定义上注册它自身以及所有接口对应的字符串。 + * 在运行时,这个类的实例将可以使用 egret.is() 方法传入一个字符串来判断实例类型。 + * @example 以下代码演示了如何为EventDispatcher类注册运行时类信息并判断类型: + *
+     *      //为egret.EventDispatcher类注册运行时类信息,由于它实现了IEventDispatcher接口,这里应同时传入接口名对应的字符串。
+     *      egret.registerClass(egret.EventDispatcher,"egret.EventDispatcher",["egret.IEventDispatcher"]);
+     *      let dispatcher = new egret.EventDispatcher();
+     *      egret.log(egret.is(dispatcher, "egret.IEventDispatcher"));  //true。
+     *      egret.log(egret.is(dispatcher, "egret.EventDispatcher"));   //true。
+     *      egret.log(egret.is(dispatcher, "egret.Bitmap"));   //false。
+     * 
+ * 注意:若您使用 TypeScript 来编写程序,egret 命令行会自动帮您生成类信息注册代码行到最终的 Javascript 文件中。因此您不需要手动调用此方法。 + * + * @param classDefinition 要注册的类定义。 + * @param className 要注册的类名。 + * @param interfaceNames 要注册的类所实现的接口名列表。 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + function registerClass(classDefinition: any, className: string, interfaceNames?: string[]): void; +} +declare namespace egret { + /** + * The BitmapFillMode class defines the image fill mode of Bitmap. + * The BitmapFillMode class defines a pattern enumeration for adjusting size. These patterns determine how Bitmap fill the size designated by the layout system. + * @see http://edn.egret.com/cn/docs/page/134 Texture filling way + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/BitmapFillMode.ts + * @language en_US + */ + /** + * BitmapFillMode 类定义Bitmap的图像填充方式。 + * BitmapFillMode 类定义了调整大小模式的一个枚举,这些模式确定 Bitmap 如何填充由布局系统指定的尺寸。 + * @see http://edn.egret.com/cn/docs/page/134 纹理的填充方式 + * @version Egret 2.4 + * @platform Web,Native + * @includeExample egret/display/BitmapFillMode.ts + * @language zh_CN + */ + const BitmapFillMode: { + REPEAT: string; + SCALE: string; + CLIP: string; + }; +} +declare namespace egret { + /** + * Logger is an entrance for the log processing namespace of the engine + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * Logger是引擎的日志处理模块入口 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + class Logger { + /** + * open all + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 全开 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static ALL: string; + /** + * level: DEBUG + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 等级为 DEBUG + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static DEBUG: string; + /** + * level: INFO + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 等级为 INFO + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static INFO: string; + /** + * level: WARN + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 等级为 WARN + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static WARN: string; + /** + * level: ERROR + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 等级为 ERROR + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static ERROR: string; + /** + * close all + * @version Egret 2.4 + * @platform Web,Native + * @language en_US + */ + /** + * 全关 + * @version Egret 2.4 + * @platform Web,Native + * @language zh_CN + */ + static OFF: string; + /** + * Set the current need to open the log level. Grade level are: ALL + * This feature is only in DEBUG mode to take effect.
+ *

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 literal 0 HcmV?d00001 diff --git a/bin-release/web/191201225322/resource/assets/die.mp3 b/bin-release/web/191201225322/resource/assets/die.mp3 new file mode 100755 index 0000000000000000000000000000000000000000..428403ffc113fc76a9545ca655b62d4b25d552bf GIT binary patch literal 16762 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�kek-O(4aR(Or~ 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 literal 0 HcmV?d00001 diff --git a/bin-release/web/191201225322/resource/assets/launch.mp3 b/bin-release/web/191201225322/resource/assets/launch.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..b4024f1bb103af968a4b6b7691d984ee5172e2d0 GIT binary patch literal 10075 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 literal 0 HcmV?d00001 diff --git a/bin-release/web/191201225322/resource/assets/paddle2_2.png b/bin-release/web/191201225322/resource/assets/paddle2_2.png new file mode 100755 index 0000000000000000000000000000000000000000..b953fae501fb531a5ab3ea79f49a05441c172159 GIT binary patch literal 10704 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 literal 0 HcmV?d00001 diff --git a/bin-release/web/191201225322/resource/assets/point.mp3 b/bin-release/web/191201225322/resource/assets/point.mp3 new file mode 100755 index 0000000000000000000000000000000000000000..19e75c8bbd512f778047e68b0fbe757bd79b6085 GIT binary patch literal 16718 zcmeIZc{G%7{6BonYA_i4Sklqo;WJ_AiAX&@Of)-=VTGo^nV@XJb z##V_I5?Vz?=6-H{&iVfHd(L_Od!FZ<-|zlo?iuHJ-`DkiUGLZX^?qO14Xx+k!RB=c z`|rj_Vr||L<L$|xus7RdwN2B&kfiJ%6yvAj_P^8h|M}dZ^*sE;^WR{A{s98` zNdNAL^8bG7(&796PJsL`bN&AXLeT#~=zjs`fBxW6GJm4!w>Uizk7AG%=;au*cm>)) z85(PwlkRf_xh3lcfBpIA0!qA5(VkJHoXXw7g){G8<%Z%(_(+%iGyufDccN1Xl17rs zXJy0)1Ii)b(A-k+pK|n;Ki5J_b1yWubTW1J>9%sY*a%kC9J>}G#=6JfA1?Sqr+eaR z_RoWxG4%h05dVh`=d`HhFWpne%tYC5_6>;2^&C~&-#W3dYx0$Eahk=&eP`cG?2GWd z-tgSC8&8>wxwL)nk@oJGONRFsKNf$yew@>=`M2U&+W`8Ot$)tXfYc7nFnp8Fc^bhS z<%2b-Ndry=I_`xH*LPgk$jC|f5mzG**pV;I#Hi#V`Rd&31u8MGwXqo72vsgAb5Hjk zO4R&(fCyGQwLpQ9Z&7mdj`=$TzAKFmYL1RYSGp-Lvlm?-^hRU5kX@K=?e2Y6#TM}@ z&YJ0AYW`8j4&Ulty@sJ!S>s+mu{oc^-sdiyu5MnlX}GU=}^xp#q5t$&Yt&(jqM4i*^TXX$mp5mj#N>ACINo7 zyNl5%znx5v!Qp`dF|wJOThhzp75HQ22xLK9=9|dw+>n88!jrVf-;YN0Uv*>Md9Yi~ zVzqJDU3^$1GN^o3(JMZOM^}s=W37qpMH~_U2@=T|Mn>D z(d4Pek1jS%Tn$sd32j~*C){snk?Wu2ge8 zpqqfJ)$RurKsGuVVU~%=O(MO}qlkp*?Kx6hlG(n3cft>%xbVAq89jn$%*;yZPAT*O z5e $rt!N5q-p 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 )U$dyj7(u`-#63cxYM5X`&}S#sq#YU` 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 literal 0 HcmV?d00001 diff --git a/bin-release/web/191201225322/resource/assets/scoreboard.png b/bin-release/web/191201225322/resource/assets/scoreboard.png new file mode 100755 index 0000000000000000000000000000000000000000..f85c291a8a89965605d7efd8f1e74e9633fc4262 GIT binary patch literal 17986 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,Free,Multi-platform", + "Push Game Forward", + "HTML5 Game Engine" +] \ No newline at end of file diff --git a/bin-release/web/191201225322/resource/default.res.json b/bin-release/web/191201225322/resource/default.res.json new file mode 100644 index 0000000..cf4941e --- /dev/null +++ b/bin-release/web/191201225322/resource/default.res.json @@ -0,0 +1,80 @@ +{ + "groups": [ + { + "keys": "egret_icon_png,description_json,bg_png,ball_png,paddle_4_png,paddle_3_png,paddle_2_png,paddle_1_png,launch_mp3,die_mp3,point_mp3,scale_loop_mp3,scale_intro_mp3,scoreboard_png", + "name": "preload" + } + ], + "resources": [ + { + "url": "assets/egret_icon.png", + "type": "image", + "name": "egret_icon_png" + }, + { + "url": "config/description.json", + "type": "json", + "name": "description_json" + }, + { + "url": "assets/bg.png", + "type": "image", + "name": "bg_png" + }, + { + "url": "assets/ball.png", + "type": "image", + "name": "ball_png" + }, + { + "url": "assets/paddle_2.png", + "type": "image", + "name": "paddle_1_png" + }, + { + "url": "assets/paddle2_2.png", + "type": "image", + "name": "paddle_2_png" + }, + { + "url": "assets/paddle3_2.png", + "type": "image", + "name": "paddle_3_png" + }, + { + "url": "assets/paddle4_1.png", + "type": "image", + "name": "paddle_4_png" + }, + { + "url": "assets/die.mp3", + "type": "sound", + "name": "die_mp3" + }, + { + "url": "assets/launch.mp3", + "type": "sound", + "name": "launch_mp3" + }, + { + "url": "assets/point.mp3", + "type": "sound", + "name": "point_mp3" + }, + { + "url": "assets/scale_intro.mp3", + "type": "sound", + "name": "scale_intro_mp3" + }, + { + "url": "assets/scale_loop.mp3", + "type": "sound", + "name": "scale_loop_mp3" + }, + { + "url": "assets/scoreboard.png", + "type": "image", + "name": "scoreboard_png" + } + ] +} \ No newline at end of file diff --git a/egretProperties.json b/egretProperties.json new file mode 100644 index 0000000..3d4de8a --- /dev/null +++ b/egretProperties.json @@ -0,0 +1,25 @@ +{ + "engineVersion": "5.2.31", + "compilerVersion": "5.2.31", + "template": {}, + "target": { + "current": "web" + }, + "modules": [ + { + "name": "egret" + }, + { + "name": "game" + }, + { + "name": "tween" + }, + { + "name": "assetsmanager" + }, + { + "name": "promise" + } + ] +} \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e4ec42cb797707ba45b119ae96019d21414c0f3a GIT binary patch literal 4286 zcmcgwM@wZ(5WeppywzLJ^8E}&Q80iYqKG0cL|iC{x-()xR8-7jT!^TkqM+!)grb58 z^TM11=A6H|UqKyuT#eo{Q_{EUboZ&Rs=K)FXSBiO!!Uu`1rv4`#UZ#FR{PBkK^NGoSdBC@bD1#_xCc!@jpe1-{0SlzP>(e zY;0g@X$jTU)#&Z*6@1QN`xB(P-`?IZH#dj7yF0-e85zOa+M38ZNAdMpx%PjDs}6Fm z^Y->OUSD6ax3`DM$w>>})Xlk1PfvJwcyM`LOnl0ZkB?YcS;5Q83tC%SEqsnCQLd<{ zKzVsNE-o&#`&;}oKA+Fd&M-SWi-v{Du#xJWX|*Rvt{SEj4)nOtl{Bd zWMpJueSO`ELGBOR>gp8yg#w{7n3tn;R=Gzlv$jS6q!BJ~Q?@J3A!@vku(e z-U=4ig#FBu=6qA%S7pT~XI$yt`uO-r>}h;+oOP+az5N$#_J4;=T*}O2X=!N^XRL!A z9UUU`ym6fV(l*w_&+mQ}U*D%rHrC$6#6;BA)>`?F`yC%2FMXV|yu6H^ogK^fuVR|> z6`!2-J|ZFletv#ZcXe!WaS7VnAGfeM#}!fx*06+x1h~1mAuupd&XD8B`T4oE*SovBlHa)JtVgb5n(IYf#Alt) z&CQi{_V)HhV`HP0PdUyrP8-#4Q->?E;!jLWNDi&5tCL#7^)4$b18X1mpY|y>xm`qE zJj=emzKD#Blw8jG!j_kpC;NSUefEg&F3&ObTtI69`>E=*I8 z>LzC#@>|2*-Cc4G76v z^^JBg4i**`5E>ea=H_Okr>D!=*Ka?ymE0BL`}CK!g!iegt}gk;YANJ>hQnoB!% wUF^c9-KH-3&$>bzrl+S-Qc@!KEOTAV`IPM@>SUa;_M5nN;e7soz~6rU32Htf$^ZZW literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..7d47df3 --- /dev/null +++ b/index.html @@ -0,0 +1,97 @@ + + + + + + Egret + + + + + + + + + + +