NativeManager.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. (function() {
  2. var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
  3. var __module = nodeEnv ? module : {exports:{}};
  4. var __filename = 'preview-scripts/assets/script/utils/NativeManager.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, '0ec53FAebpH7rnGQGjzlUhv', 'NativeManager');
  13. // script/utils/NativeManager.ts
  14. "use strict";
  15. Object.defineProperty(exports, "__esModule", { value: true });
  16. var NativeManager = /** @class */ (function () {
  17. function NativeManager() {
  18. }
  19. NativeManager.Init = function () {
  20. this.OCClassName = "RootViewController";
  21. this.JavaClassName = "org/cocos2dx/javascript/NativeMgr";
  22. this.JavaArgTypeDict = { "Number": "I", "String": "Ljava/lang/String;", "Boolean": "Z", "Float": "F" };
  23. };
  24. //调用native平台接口
  25. //funName:函数名
  26. //参数顺序列表argList=[{"Name":"Title", "Value":"xx"},{"Name":"Description", "Value":"xx"},{"Name":"URL", "Value":"xx"}]
  27. //returnType 返回值类型
  28. NativeManager.CallToNative = function (funName, argList, returnType) {
  29. if (!cc.sys.isNative) {
  30. return;
  31. }
  32. if (cc.sys.platform == cc.sys.ANDROID) {
  33. this.CallToJava(funName, argList, returnType);
  34. }
  35. else if (cc.sys.platform == cc.sys.IPHONE || cc.sys.platform == cc.sys.IPAD) {
  36. this.CallToOC(funName, argList);
  37. }
  38. };
  39. /**
  40. * 调用java接口
  41. * javaFunName MyAPIManager.java 对应函数名
  42. * argList argList 函数接受的参数列表
  43. * returnType returnType 函数返回值类型
  44. */
  45. NativeManager.CallToJava = function (javaFunName, argList, returnType) {
  46. //jsb.reflection.callStaticMethod('org/cocos2dx/javascript/SDKManager',
  47. //'OnWeChatShare','(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V',"当当猫","当当猫分享","www.ddmh5.com","0");
  48. var javaFunArgList = [];
  49. var javaFunSign = "(";
  50. var count = argList.length;
  51. for (var index = 0; index < count; index++) {
  52. var argInfo = argList[index];
  53. if (!argInfo.hasOwnProperty("Value")) {
  54. console.error("CallToJava argInfo error", argInfo);
  55. return;
  56. }
  57. var value = argInfo["Value"];
  58. var argType = Object.prototype.toString.call(value).slice("[object ".length, -1);
  59. var javaType = this.JavaArgTypeDict[argType];
  60. // console.log("javaType === >",value,javaType)
  61. if (!javaType) {
  62. console.error("CallToJava(%s, %j) error", javaFunName, argList);
  63. return;
  64. }
  65. javaFunSign += javaType;
  66. // console.log("javaFunSign == >"+javaFunSign)
  67. javaFunArgList.push(value);
  68. }
  69. var returnValueType = this.JavaArgTypeDict[returnType];
  70. //如果有返回值
  71. if (returnValueType) {
  72. javaFunSign += ")" + returnValueType;
  73. }
  74. else {
  75. javaFunSign += ")V";
  76. }
  77. javaFunArgList.unshift(this.JavaClassName, javaFunName, javaFunSign);
  78. try {
  79. return jsb.reflection.callStaticMethod.apply(this, javaFunArgList);
  80. }
  81. catch (error) {
  82. console.error("CallToJava(%s,%s,%s) error:%s", javaFunName, JSON.stringify(argList), returnType, error.stack);
  83. }
  84. };
  85. /**
  86. * 调用oc接口
  87. * javaFunName MyAPIManager.java 对应函数名
  88. * argList argList 函数接受的参数列表
  89. * returnType returnType 函数返回值类型
  90. */
  91. NativeManager.CallToOC = function (ocFunName, argList) {
  92. //jsb.reflection.callStaticMethod(this.OCClassName,''OnWeChatShareWithTitle: Description: URL:Type:','红中麻将','红中麻将分享','www.ddmh5.com',"0");
  93. var ocFunArgList = [];
  94. ocFunArgList.push(this.OCClassName);
  95. var funString = ocFunName;
  96. var count = argList.length;
  97. for (var index = 0; index < count; index++) {
  98. var argInfo = argList[index];
  99. var name = argInfo["Name"];
  100. var value = argInfo["Value"];
  101. if (!name) {
  102. console.error("CallToOC(%s) argInfo error", ocFunName, argInfo);
  103. return;
  104. }
  105. if (index) {
  106. funString += name + ":";
  107. }
  108. else {
  109. funString += "With" + name + ":";
  110. }
  111. ocFunArgList.push(value);
  112. }
  113. //插入函数签名
  114. ocFunArgList.splice(1, 0, funString);
  115. try {
  116. console.log("javaFunArgList CallToOC(%s)", JSON.stringify(ocFunArgList));
  117. return jsb.reflection.callStaticMethod.apply(this, ocFunArgList);
  118. }
  119. catch (error) {
  120. console.error("CallToOC(%s,%s) error:%s", ocFunName, JSON.stringify(argList), error.stack);
  121. }
  122. };
  123. return NativeManager;
  124. }());
  125. exports.default = NativeManager;
  126. cc._RF.pop();
  127. }
  128. if (nodeEnv) {
  129. __define(__module.exports, __require, __module);
  130. }
  131. else {
  132. __quick_compile_project__.registerModuleFunc(__filename, function () {
  133. __define(__module.exports, __require, __module);
  134. });
  135. }
  136. })();
  137. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvdXRpbHMvTmF0aXZlTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0lBQUE7SUE0SEEsQ0FBQztJQXZIVSxrQkFBSSxHQUFYO1FBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxvQkFBb0IsQ0FBQztRQUN4QyxJQUFJLENBQUMsYUFBYSxHQUFHLG1DQUFtQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBQyxRQUFRLEVBQUMsR0FBRyxFQUFFLFFBQVEsRUFBQyxvQkFBb0IsRUFBRSxTQUFTLEVBQUMsR0FBRyxFQUFFLE9BQU8sRUFBQyxHQUFHLEVBQUMsQ0FBQztJQUMvRixDQUFDO0lBQ0QsY0FBYztJQUNqQixhQUFhO0lBQ2Isa0hBQWtIO0lBQ2xILGtCQUFrQjtJQUNYLDBCQUFZLEdBQW5CLFVBQW9CLE9BQWUsRUFBRSxPQUFZLEVBQUUsVUFBa0I7UUFDcEUsSUFBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFDO1lBQ25CLE9BQU07U0FDTjtRQUNELElBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUM7WUFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQzlDO2FBQ0ksSUFBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBQztZQUMxRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNoQztJQUNGLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLHdCQUFVLEdBQWpCLFVBQWtCLFdBQW1CLEVBQUUsT0FBWSxFQUFFLFVBQWtC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Q2hFLE9BQU07YUFDTjtZQUNELElBQUcsS0FBSyxFQUFDO2dCQUNSLFNBQVMsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDO2FBQ3hCO2lCQUNHO2dCQUNILFNBQVMsSUFBSSxNQUFNLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQzthQUNqQztZQUVELFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7UUFDRCxRQUFRO1FBQ1IsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXJDLElBQUc7WUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUN6RSxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztTQUNqRTtRQUNELE9BQU8sS0FBSyxFQUFDO1lBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0Y7SUFFRixDQUFDO0lBQ0Ysb0JBQUM7QUFBRCxDQTVIQSxBQTRIQyxJQUFBIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmF0aXZlTWFuYWdlciB7XHJcbiAgICBzdGF0aWMgSmF2YUNsYXNzTmFtZTogc3RyaW5nO1xyXG4gICAgc3RhdGljIEphdmFBcmdUeXBlRGljdDogeyBOdW1iZXI6IHN0cmluZzsgU3RyaW5nOiBzdHJpbmc7IEJvb2xlYW46IHN0cmluZzsgRmxvYXQ6IHN0cmluZzsgfTtcclxuICAgIHN0YXRpYyBPQ0NsYXNzTmFtZTogc3RyaW5nO1xyXG5cclxuICAgIHN0YXRpYyBJbml0KCl7XHJcblx0XHR0aGlzLk9DQ2xhc3NOYW1lID0gXCJSb290Vmlld0NvbnRyb2xsZXJcIjtcclxuXHRcdHRoaXMuSmF2YUNsYXNzTmFtZSA9IFwib3JnL2NvY29zMmR4L2phdmFzY3JpcHQvTmF0aXZlTWdyXCI7XHJcblx0XHR0aGlzLkphdmFBcmdUeXBlRGljdCA9IHtcIk51bWJlclwiOlwiSVwiLCBcIlN0cmluZ1wiOlwiTGphdmEvbGFuZy9TdHJpbmc7XCIsIFwiQm9vbGVhblwiOlwiWlwiLCBcIkZsb2F0XCI6XCJGXCJ9O1xyXG4gICAgfVxyXG4gICAgLy/osIPnlKhuYXRpdmXlubPlj7DmjqXlj6NcclxuXHQvL2Z1bk5hbWU65Ye95pWw5ZCNXHJcblx0Ly/lj4LmlbDpobrluo/liJfooahhcmdMaXN0PVt7XCJOYW1lXCI6XCJUaXRsZVwiLCBcIlZhbHVlXCI6XCJ4eFwifSx7XCJOYW1lXCI6XCJEZXNjcmlwdGlvblwiLCBcIlZhbHVlXCI6XCJ4eFwifSx7XCJOYW1lXCI6XCJVUkxcIiwgXCJWYWx1ZVwiOlwieHhcIn1dXHJcblx0Ly9yZXR1cm5UeXBlIOi/lOWbnuWAvOexu+Wei1xyXG5cdHN0YXRpYyBDYWxsVG9OYXRpdmUoZnVuTmFtZTogc3RyaW5nLCBhcmdMaXN0OiBhbnksIHJldHVyblR5cGU6IHN0cmluZyl7XHJcblx0XHRpZighY2Muc3lzLmlzTmF0aXZlKXtcclxuXHRcdFx0cmV0dXJuXHJcblx0XHR9XHJcblx0XHRpZihjYy5zeXMucGxhdGZvcm0gPT0gY2Muc3lzLkFORFJPSUQpe1xyXG5cdFx0XHR0aGlzLkNhbGxUb0phdmEoZnVuTmFtZSwgYXJnTGlzdCwgcmV0dXJuVHlwZSk7XHJcblx0XHR9XHJcblx0XHRlbHNlIGlmKGNjLnN5cy5wbGF0Zm9ybSA9PSBjYy5zeXMuSVBIT05FIHx8IGNjLnN5cy5wbGF0Zm9ybSA9PSBjYy5zeXMuSVBBRCl7XHJcblx0XHRcdHRoaXMuQ2FsbFRvT0MoZnVuTmFtZSwgYXJnTGlzdCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiDosIPnlKhqYXZh5o6l5Y+jXHJcblx0ICogamF2YUZ1bk5hbWUgTXlBUElNYW5hZ2VyLmphdmEg5a+55bqU5Ye95pWw5ZCNXHJcblx0ICogYXJnTGlzdCBhcmdMaXN0IOWHveaVsOaOpeWPl+eahOWPguaVsOWIl+ihqFxyXG5cdCAqIHJldHVyblR5cGUgcmV0dXJuVHlwZSDlh73mlbDov5Tlm57lgLznsbvlnotcclxuXHQgKi9cclxuXHRzdGF0aWMgQ2FsbFRvSmF2YShqYXZhRnVuTmFtZTogc3RyaW5nLCBhcmdMaXN0OiBhbnksIHJldHVyblR5cGU6IHN0cmluZyl7XHJcblx0XHQvL2pzYi5yZWZsZWN0aW9uLmNhbGxTdGF0aWNNZXRob2QoJ29yZy9jb2NvczJkeC9qYXZhc2NyaXB0L1NES01hbmFnZXInLFxyXG5cdFx0Ly8nT25XZUNoYXRTaGFyZScsJyhMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZzspVicsXCLlvZPlvZPnjKtcIixcIuW9k+W9k+eMq+WIhuS6q1wiLFwid3d3LmRkbWg1LmNvbVwiLFwiMFwiKTtcclxuXHJcblx0XHRsZXQgamF2YUZ1bkFyZ0xpc3QgPSBbXTtcclxuXHJcblx0XHRsZXQgamF2YUZ1blNpZ24gPSBcIihcIjtcclxuXHJcblx0XHRsZXQgY291bnQgPSBhcmdMaXN0Lmxlbmd0aDtcclxuXHRcdGZvcihsZXQgaW5kZXg9MDsgaW5kZXg8Y291bnQ7IGluZGV4Kyspe1xyXG5cdFx0XHRsZXQgYXJnSW5mbyA9IGFyZ0xpc3RbaW5kZXhdO1xyXG5cdFx0XHRpZighYXJnSW5mby5oYXNPd25Qcm9wZXJ0eShcIlZhbHVlXCIpKXtcclxuXHRcdFx0XHRjb25zb2xlLmVycm9yKFwiQ2FsbFRvSmF2YSBhcmdJbmZvIGVycm9yXCIsIGFyZ0luZm8pO1xyXG5cdFx0XHRcdHJldHVyblxyXG5cdFx0XHR9XHJcblx0XHRcdGxldCB2YWx1ZSA9IGFyZ0luZm9bXCJWYWx1ZVwiXTtcclxuXHRcdFx0bGV0IGFyZ1R5cGUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLnNsaWNlKFwiW29iamVjdCBcIi5sZW5ndGgsIC0xKTtcclxuXHRcdFx0bGV0IGphdmFUeXBlID0gdGhpcy5KYXZhQXJnVHlwZURpY3RbYXJnVHlwZV07XHJcblx0XHRcdFxyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhcImphdmFUeXBlID09PSA+XCIsdmFsdWUsamF2YVR5cGUpXHJcblx0XHRcdGlmKCFqYXZhVHlwZSl7XHJcblx0XHRcdFx0Y29uc29sZS5lcnJvcihcIkNhbGxUb0phdmEoJXMsICVqKSBlcnJvclwiLCBqYXZhRnVuTmFtZSwgYXJnTGlzdCk7XHJcblx0XHRcdFx0cmV0dXJuXHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGphdmFGdW5TaWduICs9IGphdmFUeXBlO1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhcImphdmFGdW5TaWduID09ID5cIitqYXZhRnVuU2lnbilcclxuXHRcdFx0amF2YUZ1bkFyZ0xpc3QucHVzaCh2YWx1ZSk7XHJcblx0XHR9XHJcblx0XHRsZXQgcmV0dXJuVmFsdWVUeXBlID0gdGhpcy5KYXZhQXJnVHlwZURpY3RbcmV0dXJuVHlwZV07XHJcblx0XHQvL+WmguaenOaciei/lOWbnuWAvFxyXG5cdFx0aWYocmV0dXJuVmFsdWVUeXBlKXtcclxuXHRcdFx0amF2YUZ1blNpZ24gKz0gXCIpXCIgKyByZXR1cm5WYWx1ZVR5cGU7XHJcblx0XHR9XHJcblx0XHRlbHNle1xyXG5cdFx0XHRqYXZhRnVuU2lnbiArPSBcIilWXCI7XHJcblx0XHR9XHJcblx0XHRqYXZhRnVuQXJnTGlzdC51bnNoaWZ0KHRoaXMuSmF2YUNsYXNzTmFtZSwgamF2YUZ1bk5hbWUsIGphdmFGdW5TaWduKTtcclxuXHJcblx0XHR0cnl7XHJcblx0XHRcdHJldHVybiBqc2IucmVmbGVjdGlvbi5jYWxsU3RhdGljTWV0aG9kLmFwcGx5KHRoaXMsIGphdmFGdW5BcmdMaXN0KTtcclxuXHRcdH1cclxuXHRcdGNhdGNoIChlcnJvcil7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoXCJDYWxsVG9KYXZhKCVzLCVzLCVzKSBlcnJvcjolc1wiLCBqYXZhRnVuTmFtZSwgSlNPTi5zdHJpbmdpZnkoYXJnTGlzdCksIHJldHVyblR5cGUsIGVycm9yLnN0YWNrKTtcclxuXHRcdH1cclxuXHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiDosIPnlKhvY+aOpeWPo1xyXG5cdCAqIGphdmFGdW5OYW1lIE15QVBJTWFuYWdlci5qYXZhIOWvueW6lOWHveaVsOWQjVxyXG5cdCAqIGFyZ0xpc3QgYXJnTGlzdCDlh73mlbDmjqXlj5fnmoTlj4LmlbDliJfooahcclxuXHQgKiByZXR1cm5UeXBlIHJldHVyblR5cGUg5Ye95pWw6L+U5Zue5YC857G75Z6LXHJcblx0ICovXHJcblx0c3RhdGljIENhbGxUb09DKG9jRnVuTmFtZSwgYXJnTGlzdCl7XHJcblx0XHQvL2pzYi5yZWZsZWN0aW9uLmNhbGxTdGF0aWNNZXRob2QodGhpcy5PQ0NsYXNzTmFtZSwnJ09uV2VDaGF0U2hhcmVXaXRoVGl0bGU6IERlc2NyaXB0aW9uOiBVUkw6VHlwZTonLCfnuqLkuK3purvlsIYnLCfnuqLkuK3purvlsIbliIbkuqsnLCd3d3cuZGRtaDUuY29tJyxcIjBcIik7XHJcblxyXG5cdFx0bGV0IG9jRnVuQXJnTGlzdCA9IFtdO1xyXG5cdFx0b2NGdW5BcmdMaXN0LnB1c2godGhpcy5PQ0NsYXNzTmFtZSk7XHJcblxyXG5cdFx0bGV0IGZ1blN0cmluZyA9IG9jRnVuTmFtZTtcclxuXHRcdGxldCBjb3VudCA9IGFyZ0xpc3QubGVuZ3RoO1xyXG5cdFx0Zm9yKGxldCBpbmRleD0wOyBpbmRleCA8IGNvdW50OyBpbmRleCsrKXtcclxuXHRcdFx0bGV0IGFyZ0luZm8gPSBhcmdMaXN0W2luZGV4XTtcclxuXHRcdFx0bGV0IG5hbWUgPSBhcmdJbmZvW1wiTmFtZVwiXTtcclxuXHRcdFx0bGV0IHZhbHVlID0gYXJnSW5mb1tcIlZhbHVlXCJdO1xyXG5cclxuXHRcdFx0aWYoIW5hbWUpe1xyXG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCJDYWxsVG9PQyglcykgYXJnSW5mbyBlcnJvclwiLCBvY0Z1bk5hbWUsIGFyZ0luZm8pO1xyXG5cdFx0XHRcdHJldHVyblxyXG5cdFx0XHR9XHJcblx0XHRcdGlmKGluZGV4KXtcclxuXHRcdFx0XHRmdW5TdHJpbmcgKz0gbmFtZSArIFwiOlwiO1xyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2V7XHJcblx0XHRcdFx0ZnVuU3RyaW5nICs9IFwiV2l0aFwiICsgbmFtZSArIFwiOlwiO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRvY0Z1bkFyZ0xpc3QucHVzaCh2YWx1ZSk7XHJcblx0XHR9XHJcblx0XHQvL+aPkuWFpeWHveaVsOetvuWQjVxyXG5cdFx0b2NGdW5BcmdMaXN0LnNwbGljZSgxLCAwLCBmdW5TdHJpbmcpO1xyXG5cclxuXHRcdHRyeXtcclxuXHRcdFx0Y29uc29sZS5sb2coXCJqYXZhRnVuQXJnTGlzdCBDYWxsVG9PQyglcylcIiwgSlNPTi5zdHJpbmdpZnkob2NGdW5BcmdMaXN0KSk7XHJcblx0XHRcdHJldHVybiBqc2IucmVmbGVjdGlvbi5jYWxsU3RhdGljTWV0aG9kLmFwcGx5KHRoaXMsIG9jRnVuQXJnTGlzdCk7XHJcblx0XHR9XHJcblx0XHRjYXRjaCAoZXJyb3Ipe1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKFwiQ2FsbFRvT0MoJXMsJXMpIGVycm9yOiVzXCIsIG9jRnVuTmFtZSwgSlNPTi5zdHJpbmdpZnkoYXJnTGlzdCksIGVycm9yLnN0YWNrKTtcclxuXHRcdH1cclxuXHJcblx0fVxyXG59XHJcbiJdfQ==