FguiLoadMgr.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. (function() {
  2. var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
  3. var __module = nodeEnv ? module : {exports:{}};
  4. var __filename = 'preview-scripts/assets/script/frameWork/fgui/FguiLoadMgr.js';
  5. var __require = nodeEnv ? function (request) {
  6. return cc.require(request);
  7. } : function (request) {
  8. return __quick_compile_project__.require(request, __filename);
  9. };
  10. function __define (exports, require, module) {
  11. if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
  12. cc._RF.push(module, '62eaaj5T01GCp8Avb2k/8xh', 'FguiLoadMgr');
  13. // script/frameWork/fgui/FguiLoadMgr.ts
  14. "use strict";
  15. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  16. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  17. return new (P || (P = Promise))(function (resolve, reject) {
  18. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  19. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  20. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  21. step((generator = generator.apply(thisArg, _arguments || [])).next());
  22. });
  23. };
  24. var __generator = (this && this.__generator) || function (thisArg, body) {
  25. var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
  26. return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
  27. function verb(n) { return function (v) { return step([n, v]); }; }
  28. function step(op) {
  29. if (f) throw new TypeError("Generator is already executing.");
  30. while (_) try {
  31. if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
  32. if (y = 0, t) op = [op[0] & 2, t.value];
  33. switch (op[0]) {
  34. case 0: case 1: t = op; break;
  35. case 4: _.label++; return { value: op[1], done: false };
  36. case 5: _.label++; y = op[1]; op = [0]; continue;
  37. case 7: op = _.ops.pop(); _.trys.pop(); continue;
  38. default:
  39. if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
  40. if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
  41. if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
  42. if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
  43. if (t[2]) _.ops.pop();
  44. _.trys.pop(); continue;
  45. }
  46. op = body.call(thisArg, _);
  47. } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
  48. if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
  49. }
  50. };
  51. var __spreadArrays = (this && this.__spreadArrays) || function () {
  52. for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
  53. for (var r = Array(s), k = 0, i = 0; i < il; i++)
  54. for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
  55. r[k] = a[j];
  56. return r;
  57. };
  58. Object.defineProperty(exports, "__esModule", { value: true });
  59. var AssetsBundleMgr_1 = require("../../utils/AssetsBundleMgr");
  60. var I18nUtil_1 = require("../../utils/I18nUtil");
  61. var ResGComponent_1 = require("../compment/ResGComponent");
  62. /**
  63. * 动态加载资源
  64. */
  65. var FguiLoadMgr = /** @class */ (function () {
  66. function FguiLoadMgr() {
  67. }
  68. //动态加载package包里的图片资源
  69. FguiLoadMgr.loadSpriteFormPackage = function (obj, bundleName, pkgName, url, callback, scale, xFlip, yFlip) {
  70. if (callback === void 0) { callback = function (success) { }; }
  71. if (xFlip === void 0) { xFlip = false; }
  72. if (yFlip === void 0) { yFlip = false; }
  73. this.loadPackage(bundleName, pkgName, function (error) {
  74. if (error || !(obj === null || obj === void 0 ? void 0 : obj.node) || !obj.node.isValid) {
  75. if (callback)
  76. callback(false);
  77. return;
  78. }
  79. if (obj instanceof fgui.GLoader) {
  80. obj.url = url;
  81. }
  82. else {
  83. obj.icon = url;
  84. }
  85. if (scale) {
  86. obj.setScale(scale, scale);
  87. }
  88. if (xFlip || yFlip) {
  89. obj.setScale(obj.scaleX * (xFlip ? -1 : 1), obj.scaleY * (yFlip ? -1 : 1));
  90. }
  91. if (callback) {
  92. callback(true);
  93. }
  94. });
  95. };
  96. FguiLoadMgr.loadFguiPkg = function (bundle, pkgName, callback) {
  97. var p = fgui.UIPackage.getByName(pkgName);
  98. if (p) {
  99. if (callback)
  100. callback(null, p);
  101. }
  102. else {
  103. fgui.UIPackage.loadPackage(bundle, pkgName, function (error, pkg) {
  104. if (error) {
  105. if (callback)
  106. callback(error, null);
  107. return;
  108. }
  109. if (callback) {
  110. callback(null, pkg);
  111. }
  112. });
  113. }
  114. };
  115. /** 同步加载package */
  116. FguiLoadMgr.loadPackageAsync = function (bundleName, pkgName) {
  117. return __awaiter(this, void 0, Promise, function () {
  118. return __generator(this, function (_a) {
  119. return [2 /*return*/, new Promise(function (resolve, reject) {
  120. AssetsBundleMgr_1.default.loadBundle(bundleName, function (error, bundle) {
  121. if (error) {
  122. reject(error);
  123. return;
  124. }
  125. FguiLoadMgr.loadFguiPkg(bundle, pkgName, function (error, pkg) {
  126. if (error) {
  127. reject(error);
  128. return;
  129. }
  130. resolve();
  131. });
  132. });
  133. })];
  134. });
  135. });
  136. };
  137. FguiLoadMgr.loadPackage = function (bundleName, pkgName, onComplete) {
  138. AssetsBundleMgr_1.default.loadBundle(bundleName, function (error, bundle) {
  139. if (error) {
  140. onComplete(error, null);
  141. return;
  142. }
  143. FguiLoadMgr.loadFguiPkg(bundle, pkgName, function (error, pkg) {
  144. onComplete(error, pkg);
  145. });
  146. });
  147. };
  148. /** 加载fgui里的图片 */
  149. FguiLoadMgr.loadPackageFrameAsset = function (node, packageName, iconUrl) {
  150. this.loadPackage(packageName, packageName, function (error, pkg) {
  151. if (error) {
  152. return;
  153. }
  154. var asset = pkg.getItemAssetByName(iconUrl);
  155. if (asset) {
  156. var frame = asset;
  157. node.getComponent(cc.Sprite).spriteFrame = frame;
  158. }
  159. });
  160. };
  161. /** 设置多语言文本 */
  162. FguiLoadMgr.setI18nTextLabel = function (gLabel, key) {
  163. var args = [];
  164. for (var _i = 2; _i < arguments.length; _i++) {
  165. args[_i - 2] = arguments[_i];
  166. }
  167. var str = I18nUtil_1.I18n.getI18nText.apply(I18nUtil_1.I18n, __spreadArrays([key], args));
  168. this.setLabel(gLabel, str);
  169. };
  170. FguiLoadMgr.setLabel = function (gLabel, str) {
  171. // gLabel.node.getComponent(cc.Label).cacheMode = cc.Label.CacheMode.CHAR;
  172. if (gLabel instanceof fgui.GTextField || gLabel instanceof fgui.GRichTextField) {
  173. gLabel.text = str;
  174. }
  175. else if (gLabel instanceof fgui.GLabel || gLabel instanceof fgui.GButton) {
  176. gLabel.title = str;
  177. }
  178. };
  179. /** 动态加载组件 */
  180. FguiLoadMgr.LoadComp = function (parent, bundleName, pkgName, resName, userClass, onComplete) {
  181. var resGComp = parent.node.getComponent(ResGComponent_1.default);
  182. if (!resGComp)
  183. resGComp = parent.node.addComponent(ResGComponent_1.default);
  184. resGComp.LoadComp(bundleName, pkgName, resName, userClass, function (comp) {
  185. onComplete(comp);
  186. });
  187. };
  188. return FguiLoadMgr;
  189. }());
  190. exports.default = FguiLoadMgr;
  191. cc._RF.pop();
  192. }
  193. if (nodeEnv) {
  194. __define(__module.exports, __require, __module);
  195. }
  196. else {
  197. __quick_compile_project__.registerModuleFunc(__filename, function () {
  198. __define(__module.exports, __require, __module);
  199. });
  200. }
  201. })();
  202. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvZnJhbWVXb3JrL2ZndWkvRmd1aUxvYWRNZ3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsK0RBQTBEO0FBQzFELGlEQUE0QztBQUM1QywyREFBc0Q7QUFFdEQ7O0dBRUc7QUFDSDtJQUFBO0lBb0hBLENBQUM7SUFqSEEsb0JBQW9CO0lBQ2IsaUNBQXFCLEdBQTVCLFVBQTZCLEdBQXNELEVBQUUsVUFBa0IsRUFBRSxPQUFlLEVBQUUsR0FBVyxFQUFFLFFBQThDLEVBQUUsS0FBYyxFQUFFLEtBQXNCLEVBQUUsS0FBc0I7UUFBOUcseUJBQUEsRUFBQSxxQkFBc0IsT0FBZ0IsSUFBTyxDQUFDO1FBQWtCLHNCQUFBLEVBQUEsYUFBc0I7UUFBRSxzQkFBQSxFQUFBLGFBQXNCO1FBQ3BQLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxVQUFDLEtBQUs7WUFDM0MsSUFBSSxLQUFLLElBQUksRUFBQyxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsSUFBSSxDQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDN0MsSUFBSSxRQUFRO29CQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUIsT0FBTzthQUNQO1lBQ0QsSUFBSSxHQUFHLFlBQVksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7YUFDZDtpQkFBTTtnQkFDTixHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQzthQUNmO1lBQ0QsSUFBSSxLQUFLLEVBQUU7Z0JBQ1YsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDM0I7WUFDRCxJQUFJLEtBQUssSUFBSSxLQUFLLEVBQUU7Z0JBQ25CLEdB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QUMsWUFBWSxDQUFDLHVCQUFhLENBQUMsQ0FBQztRQUNsRSxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFDLElBQXNCO1lBQ2pGLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRixrQkFBQztBQUFELENBcEhBLEFBb0hDLElBQUEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdEl0ZW0sIFVzZXJTZXggfSBmcm9tIFwiLi4vLi4vZGF0YS9jb25zdC9UeXBlQ29uc3RcIjtcclxuaW1wb3J0IEFzc2V0c0J1bmRsZU1nciBmcm9tIFwiLi4vLi4vdXRpbHMvQXNzZXRzQnVuZGxlTWdyXCI7XHJcbmltcG9ydCB7IEkxOG4gfSBmcm9tIFwiLi4vLi4vdXRpbHMvSTE4blV0aWxcIjtcclxuaW1wb3J0IFJlc0dDb21wb25lbnQgZnJvbSBcIi4uL2NvbXBtZW50L1Jlc0dDb21wb25lbnRcIjtcclxuXHJcbi8qKlxyXG4gKiDliqjmgIHliqDovb3otYTmupBcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZndWlMb2FkTWdyIHtcclxuXHJcblxyXG5cdC8v5Yqo5oCB5Yqg6L29cGFja2FnZeWMhemHjOeahOWbvueJh+i1hOa6kFxyXG5cdHN0YXRpYyBsb2FkU3ByaXRlRm9ybVBhY2thZ2Uob2JqOiBmZ3VpLkdMb2FkZXIgfCBmYWlyeWd1aS5HTGFiZWwgfCBmYWlyeWd1aS5HQnV0dG9uLCBidW5kbGVOYW1lOiBzdHJpbmcsIHBrZ05hbWU6IHN0cmluZywgdXJsOiBzdHJpbmcsIGNhbGxiYWNrOiBGdW5jdGlvbiA9IChzdWNjZXNzOiBib29sZWFuKSA9PiB7IH0sIHNjYWxlPzogbnVtYmVyLCB4RmxpcDogYm9vbGVhbiA9IGZhbHNlLCB5RmxpcDogYm9vbGVhbiA9IGZhbHNlKSB7XHJcblx0XHR0aGlzLmxvYWRQYWNrYWdlKGJ1bmRsZU5hbWUsIHBrZ05hbWUsIChlcnJvcikgPT4ge1xyXG5cdFx0XHRpZiAoZXJyb3IgfHwgIW9iaj8ubm9kZSB8fCAhb2JqLm5vZGUuaXNWYWxpZCkge1xyXG5cdFx0XHRcdGlmIChjYWxsYmFjaykgY2FsbGJhY2soZmFsc2UpO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAob2JqIGluc3RhbmNlb2YgZmd1aS5HTG9hZGVyKSB7XHJcblx0XHRcdFx0b2JqLnVybCA9IHVybDtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRvYmouaWNvbiA9IHVybDtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoc2NhbGUpIHtcclxuXHRcdFx0XHRvYmouc2V0U2NhbGUoc2NhbGUsIHNjYWxlKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoeEZsaXAgfHwgeUZsaXApIHtcclxuXHRcdFx0XHRvYmouc2V0U2NhbGUob2JqLnNjYWxlWCAqICh4RmxpcCA/IC0xIDogMSksIG9iai5zY2FsZVkgKiAoeUZsaXAgPyAtMSA6IDEpKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoY2FsbGJhY2spIHtcclxuXHRcdFx0XHRjYWxsYmFjayh0cnVlKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHJcblx0cHJpdmF0ZSBzdGF0aWMgbG9hZEZndWlQa2coYnVuZGxlLCBwa2dOYW1lLCBjYWxsYmFjaz86IEZ1bmN0aW9uKSB7XHJcblx0XHRsZXQgcCA9IGZndWkuVUlQYWNrYWdlLmdldEJ5TmFtZShwa2dOYW1lKTtcclxuXHRcdGlmIChwKSB7XHJcblx0XHRcdGlmIChjYWxsYmFjaykgY2FsbGJhY2sobnVsbCwgcCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRmZ3VpLlVJUGFja2FnZS5sb2FkUGFja2FnZShidW5kbGUsIHBrZ05hbWUsIChlcnJvciwgcGtnKSA9PiB7XHJcblx0XHRcdFx0aWYgKGVycm9yKSB7XHJcblx0XHRcdFx0XHRpZiAoY2FsbGJhY2spIGNhbGxiYWNrKGVycm9yLCBudWxsKTtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKGNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRjYWxsYmFjayhudWxsLCBwa2cpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHJcblx0LyoqIOWQjOatpeWKoOi9vXBhY2thZ2UgKi9cclxuXHRzdGF0aWMgYXN5bmMgbG9hZFBhY2thZ2VBc3luYyhidW5kbGVOYW1lOiBzdHJpbmcsIHBrZ05hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0QXNzZXRzQnVuZGxlTWdyLmxvYWRCdW5kbGUoYnVuZGxlTmFtZSwgKGVycm9yLCBidW5kbGU6IGNjLkFzc2V0TWFuYWdlci5CdW5kbGUpID0+IHtcclxuXHRcdFx0XHRpZiAoZXJyb3IpIHtcclxuXHRcdFx0XHRcdHJlamVjdChlcnJvcik7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdEZndWlMb2FkTWdyLmxvYWRGZ3VpUGtnKGJ1bmRsZSwgcGtnTmFtZSwgKGVycm9yLCBwa2cpID0+IHtcclxuXHRcdFx0XHRcdGlmIChlcnJvcikge1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyb3IpO1xyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgbG9hZFBhY2thZ2UoYnVuZGxlTmFtZTogc3RyaW5nLCBwa2dOYW1lOiBzdHJpbmcsIG9uQ29tcGxldGU6IChlcnJvcjogYW55LCBwa2c6IGZndWkuVUlQYWNrYWdlKSA9PiB2b2lkKTogdm9pZCB7XHJcblx0XHRBc3NldHNCdW5kbGVNZ3IubG9hZEJ1bmRsZShidW5kbGVOYW1lLCAoZXJyb3IsIGJ1bmRsZTogY2MuQXNzZXRNYW5hZ2VyLkJ1bmRsZSkgPT4ge1xyXG5cdFx0XHRpZiAoZXJyb3IpIHtcclxuXHRcdFx0XHRvbkNvbXBsZXRlKGVycm9yLCBudWxsKTtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHRcdFx0Rmd1aUxvYWRNZ3IubG9hZEZndWlQa2coYnVuZGxlLCBwa2dOYW1lLCAoZXJyb3IsIHBrZykgPT4ge1xyXG5cdFx0XHRcdG9uQ29tcGxldGUoZXJyb3IsIHBrZyk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHJcblx0LyoqIOWKoOi9vWZndWnph4znmoTlm77niYcgKi9cclxuXHRzdGF0aWMgbG9hZFBhY2thZ2VGcmFtZUFzc2V0KG5vZGU6IGNjLk5vZGUsIHBhY2thZ2VOYW1lOiBzdHJpbmcsIGljb25Vcmw6IHN0cmluZykge1xyXG5cdFx0dGhpcy5sb2FkUGFja2FnZShwYWNrYWdlTmFtZSwgcGFja2FnZU5hbWUsIChlcnJvciwgcGtnKSA9PiB7XHJcblx0XHRcdGlmIChlcnJvcikge1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cdFx0XHRsZXQgYXNzZXQgPSBwa2cuZ2V0SXRlbUFzc2V0QnlOYW1lKGljb25VcmwpO1xyXG5cdFx0XHRpZiAoYXNzZXQpIHtcclxuXHRcdFx0XHRsZXQgZnJhbWUgPSBhc3NldCBhcyBjYy5TcHJpdGVGcmFtZTtcclxuXHRcdFx0XHRub2RlLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gZnJhbWU7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqIOiuvue9ruWkmuivreiogOaWh+acrCAqL1xyXG5cdHN0YXRpYyBzZXRJMThuVGV4dExhYmVsKGdMYWJlbDogZmd1aS5HVGV4dEZpZWxkIHwgZmd1aS5HUmljaFRleHRGaWVsZCB8IGZndWkuR0xhYmVsIHwgZmd1aS5HQnV0dG9uLCBrZXk6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcclxuXHRcdGxldCBzdHIgPSBJMThuLmdldEkxOG5UZXh0KGtleSwgLi4uYXJncyk7XHJcblx0XHR0aGlzLnNldExhYmVsKGdMYWJlbCwgc3RyKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBzZXRMYWJlbChnTGFiZWw6IGZndWkuR1RleHRGaWVsZCB8IGZndWkuR1JpY2hUZXh0RmllbGQgfCBmZ3VpLkdMYWJlbCB8IGZndWkuR0J1dHRvbiwgc3RyOiBzdHJpbmcpIHtcclxuXHRcdC8vIGdMYWJlbC5ub2RlLmdldENvbXBvbmVudChjYy5MYWJlbCkuY2FjaGVNb2RlID0gY2MuTGFiZWwuQ2FjaGVNb2RlLkNIQVI7XHJcblx0XHRpZiAoZ0xhYmVsIGluc3RhbmNlb2YgZmd1aS5HVGV4dEZpZWxkIHx8IGdMYWJlbCBpbnN0YW5jZW9mIGZndWkuR1JpY2hUZXh0RmllbGQpIHtcclxuXHRcdFx0Z0xhYmVsLnRleHQgPSBzdHI7XHJcblx0XHR9IGVsc2UgaWYgKGdMYWJlbCBpbnN0YW5jZW9mIGZndWkuR0xhYmVsIHx8IGdMYWJlbCBpbnN0YW5jZW9mIGZndWkuR0J1dHRvbikge1xyXG5cdFx0XHRnTGFiZWwudGl0bGUgPSBzdHI7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiog5Yqo5oCB5Yqg6L2957uE5Lu2ICovXHJcblx0c3RhdGljIExvYWRDb21wKHBhcmVudDogZmFpcnlndWkuR0NvbXBvbmVudCwgYnVuZGxlTmFtZTogc3RyaW5nLCBwa2dOYW1lOiBzdHJpbmcsIHJlc05hbWU6IHN0cmluZywgdXNlckNsYXNzOiBuZXcgKCkgPT4gZmd1aS5HT2JqZWN0LCBvbkNvbXBsZXRlOiAoY29tcDogZmFpcnlndWkuR09iamVjdCkgPT4gdm9pZCkge1xyXG5cdFx0bGV0IHJlc0dDb21wID0gcGFyZW50Lm5vZGUuZ2V0Q29tcG9uZW50KFJlc0dDb21wb25lbnQpO1xyXG5cdFx0aWYgKCFyZXNHQ29tcCkgcmVzR0NvbXAgPSBwYXJlbnQubm9kZS5hZGRDb21wb25lbnQoUmVzR0NvbXBvbmVudCk7XHJcblx0XHRyZXNHQ29tcC5Mb2FkQ29tcChidW5kbGVOYW1lLCBwa2dOYW1lLCByZXNOYW1lLCB1c2VyQ2xhc3MsIChjb21wOiBmYWlyeWd1aS5HT2JqZWN0KSA9PiB7XHJcblx0XHRcdG9uQ29tcGxldGUoY29tcCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG59XHJcbiJdfQ==