koa-ts-core 0.0.13 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
package/dist/index.cjs.js
CHANGED
|
@@ -36,4 +36,4 @@
|
|
|
36
36
|
* copy-to - index.js
|
|
37
37
|
* Copyright(c) 2014 dead_horse <dead_horse@qq.com>
|
|
38
38
|
* MIT Licensed
|
|
39
|
-
*/var Xs=function(){if(ns)return as;ns=1;const e=Zs(),a=function(){if(es)return Yt;es=1;var e=Array.prototype.slice;function a(e,n){if(!(this instanceof a))return new a(e,n);this.src=e,this._withAccess=n}function n(e,a){return void 0===e[a]&&void 0===e.__lookupGetter__(a)&&void 0===e.__lookupSetter__(a)}return Yt=a,a.prototype.withAccess=function(e){return this._withAccess=!1!==e,this},a.prototype.pick=function(a){return Array.isArray(a)||(a=e.call(arguments)),a.length&&(this.keys=a),this},a.prototype.to=function(e){if(e=e||{},!this.src)return e;var a=this.keys||Object.keys(this.src);if(!this._withAccess){for(var i=0;i<a.length;i++)void 0===e[o=a[i]]&&(e[o]=this.src[o]);return e}for(i=0;i<a.length;i++){var o=a[i];if(n(e,o)){var t=this.src.__lookupGetter__(o),s=this.src.__lookupSetter__(o);t&&e.__defineGetter__(o,t),s&&e.__defineSetter__(o,s),t||s||(e[o]=this.src[o])}}return e},a.prototype.toCover=function(e){for(var a=this.keys||Object.keys(this.src),n=0;n<a.length;n++){var i=a[n];delete e[i];var o=this.src.__lookupGetter__(i),t=this.src.__lookupSetter__(i);o&&e.__defineGetter__(i,o),t&&e.__defineSetter__(i,t),o||t||(e[i]=this.src[i])}},a.prototype.override=a.prototype.toCover,a.prototype.and=function(e){var a={};return this.to(a),this.src=e,this.to(a),this.src=a,this},Yt}(),n=zn();function i(e,n){const i={};return a(e).to(i),i.limit=e[n+"Limit"],i}function o(e,a){a&&(Array.isArray(a)||(a=[a]),a.forEach((function(a){e.push(a)})))}function t(e,a){return e.includes(a)}return as=function(a){a=a||{};const{detectJSON:s}=a,{onerror:r}=a,c=a.enableTypes||["json","form"],p=t(c,"form"),l=t(c,"json"),u=t(c,"text"),d=t(c,"xml");a.detectJSON=void 0,a.onerror=void 0,a.returnRawBody=!0;const m=["application/json","application/json-patch+json","application/vnd.api+json","application/csp-report","application/scim+json"],f=["application/x-www-form-urlencoded"],v=["text/plain"],x=["text/xml","application/xml"],h=i(a,"json"),b=i(a,"form"),g=i(a,"text"),y=i(a,"xml"),w=a.extendTypes||{};return o(m,w.json),o(f,w.form),o(v,w.text),o(x,w.xml),async function(a,i){if(void 0!==a.request.body||a.disableBodyParser)return await i();try{const i=await async function(a){if(l&&(s&&s(a)||function(e,a){"string"==typeof e&&(e=e.replace(/;$/,""));return n.is(e,a)}(a.request.get("content-type"),m)))return await e.json(a,h);if(p&&a.request.is(f))return await e.form(a,b);if(u&&a.request.is(v))return await e.text(a,g)||"";if(d&&a.request.is(x))return await e.text(a,y)||"";return{}}(a);a.request.body="parsed"in i?i.parsed:{},void 0===a.request.rawBody&&(a.request.rawBody=i.raw)}catch(e){if(!r)throw e;r(e,a)}await i()}}}(),Ys=F(Xs);const er=async(e,a)=>{e.extra={get:e.query,post:e.request.body??{}},await a()};global.isDev="development"===process.env.NODE_ENV,(()=>{const e=process.env.NODE_ENV||"production",a=n.resolve(bn,"env");switch(console.log("load env path: ",a),p.config({path:n.resolve(a,".common.env")}),e){case"development":p.config({path:n.resolve(a,".development.env")});break;case"test":p.config({path:n.resolve(a,".test.env")});break;case"production":p.config({path:n.resolve(a,".production.env")})}})();exports.AuthRouter=function(e,a){return g(e,a,!0)},exports.BaseException=S,exports.INDEX_ROUTE=x,exports.Router=function(e,a){return g(e,a)},exports.contextStore=y,exports.errorRsp=j,exports.getCurrentContext=w,exports.getSrcModulePaths=_,exports.initializeKoaApp=async e=>{const{koaInstance:a,authCheckCallback:n,catchErrorCallback:o,registerHighPriorityMiddleware:t}=e;try{(e=>{const{controllerModule:a,validateModule:n}=_();O(a,(a=>{if(!a.path.includes("controller"))return;const i=A(a.wholePath),o=i?.routesMap;o&&xn(n,a,o,((n,i)=>!n||e({filePath:a,ctx:i})))}))})(n)}catch(e){console.log("registerControllers error",e)}const s=a||new i;var r;return s.use(q),t?.(s),s.use((r=o,async(e,a)=>{try{await a()}catch(a){r?r(a,e):j(500,{message:a.message})}})),s.use(Ys()),s.use(er),(isDev||"true"===process.env.DOC)&&T.get("/doc",(async e=>{const a=await(async()=>{const e=[],a=new Map;return O(wn.DOCUMENTATION_DIR,(a=>{const{pathPrefix:n}=C(a,"doc");e.push(kn(a,n))})),e.forEach((e=>{a.has(e.pathPrefix)||a.set(e.pathPrefix,[]),a.get(e.pathPrefix)?.push(e)})),yn({apiData:Array.from(a.entries())})})();e.body=a})),T.get("/",(async e=>{e.body={code:200,message:"hello koa-ts-cli https://www.npmjs.com/package/koa-ts-core"}})),s.use(T.routes()),await(async e=>{const a=await mn.getPortPromise({port:8e3,stopPort:9999});e.listen=(...
|
|
39
|
+
*/var Xs=function(){if(ns)return as;ns=1;const e=Zs(),a=function(){if(es)return Yt;es=1;var e=Array.prototype.slice;function a(e,n){if(!(this instanceof a))return new a(e,n);this.src=e,this._withAccess=n}function n(e,a){return void 0===e[a]&&void 0===e.__lookupGetter__(a)&&void 0===e.__lookupSetter__(a)}return Yt=a,a.prototype.withAccess=function(e){return this._withAccess=!1!==e,this},a.prototype.pick=function(a){return Array.isArray(a)||(a=e.call(arguments)),a.length&&(this.keys=a),this},a.prototype.to=function(e){if(e=e||{},!this.src)return e;var a=this.keys||Object.keys(this.src);if(!this._withAccess){for(var i=0;i<a.length;i++)void 0===e[o=a[i]]&&(e[o]=this.src[o]);return e}for(i=0;i<a.length;i++){var o=a[i];if(n(e,o)){var t=this.src.__lookupGetter__(o),s=this.src.__lookupSetter__(o);t&&e.__defineGetter__(o,t),s&&e.__defineSetter__(o,s),t||s||(e[o]=this.src[o])}}return e},a.prototype.toCover=function(e){for(var a=this.keys||Object.keys(this.src),n=0;n<a.length;n++){var i=a[n];delete e[i];var o=this.src.__lookupGetter__(i),t=this.src.__lookupSetter__(i);o&&e.__defineGetter__(i,o),t&&e.__defineSetter__(i,t),o||t||(e[i]=this.src[i])}},a.prototype.override=a.prototype.toCover,a.prototype.and=function(e){var a={};return this.to(a),this.src=e,this.to(a),this.src=a,this},Yt}(),n=zn();function i(e,n){const i={};return a(e).to(i),i.limit=e[n+"Limit"],i}function o(e,a){a&&(Array.isArray(a)||(a=[a]),a.forEach((function(a){e.push(a)})))}function t(e,a){return e.includes(a)}return as=function(a){a=a||{};const{detectJSON:s}=a,{onerror:r}=a,c=a.enableTypes||["json","form"],p=t(c,"form"),l=t(c,"json"),u=t(c,"text"),d=t(c,"xml");a.detectJSON=void 0,a.onerror=void 0,a.returnRawBody=!0;const m=["application/json","application/json-patch+json","application/vnd.api+json","application/csp-report","application/scim+json"],f=["application/x-www-form-urlencoded"],v=["text/plain"],x=["text/xml","application/xml"],h=i(a,"json"),b=i(a,"form"),g=i(a,"text"),y=i(a,"xml"),w=a.extendTypes||{};return o(m,w.json),o(f,w.form),o(v,w.text),o(x,w.xml),async function(a,i){if(void 0!==a.request.body||a.disableBodyParser)return await i();try{const i=await async function(a){if(l&&(s&&s(a)||function(e,a){"string"==typeof e&&(e=e.replace(/;$/,""));return n.is(e,a)}(a.request.get("content-type"),m)))return await e.json(a,h);if(p&&a.request.is(f))return await e.form(a,b);if(u&&a.request.is(v))return await e.text(a,g)||"";if(d&&a.request.is(x))return await e.text(a,y)||"";return{}}(a);a.request.body="parsed"in i?i.parsed:{},void 0===a.request.rawBody&&(a.request.rawBody=i.raw)}catch(e){if(!r)throw e;r(e,a)}await i()}}}(),Ys=F(Xs);const er=async(e,a)=>{e.extra={get:e.query,post:e.request.body??{}},await a()};global.isDev="development"===process.env.NODE_ENV,(()=>{const e=process.env.NODE_ENV||"production",a=n.resolve(bn,"env");switch(console.log("load env path: ",a),p.config({path:n.resolve(a,".common.env")}),e){case"development":p.config({path:n.resolve(a,".development.env")});break;case"test":p.config({path:n.resolve(a,".test.env")});break;case"production":p.config({path:n.resolve(a,".production.env")})}})();exports.AuthRouter=function(e,a){return g(e,a,!0)},exports.BaseException=S,exports.INDEX_ROUTE=x,exports.Router=function(e,a){return g(e,a)},exports.contextStore=y,exports.errorRsp=j,exports.getCurrentContext=w,exports.getSrcModulePaths=_,exports.initializeKoaApp=async e=>{const{koaInstance:a,authCheckCallback:n,catchErrorCallback:o,registerHighPriorityMiddleware:t}=e;try{(e=>{const{controllerModule:a,validateModule:n}=_();O(a,(a=>{if(!a.path.includes("controller"))return;const i=A(a.wholePath),o=i?.routesMap;o&&xn(n,a,o,((n,i)=>!n||e({filePath:a,ctx:i})))}))})(n)}catch(e){console.log("registerControllers error",e)}const s=a||new i;var r;return s.use(q),t?.(s),s.use((r=o,async(e,a)=>{try{await a()}catch(a){r?r(a,e):j(500,{message:a.message})}})),s.use(Ys()),s.use(er),(isDev||"true"===process.env.DOC)&&T.get("/doc",(async e=>{const a=await(async()=>{const e=[],a=new Map;return O(wn.DOCUMENTATION_DIR,(a=>{const{pathPrefix:n}=C(a,"doc");e.push(kn(a,n))})),e.forEach((e=>{a.has(e.pathPrefix)||a.set(e.pathPrefix,[]),a.get(e.pathPrefix)?.push(e)})),yn({apiData:Array.from(a.entries())})})();e.body=a})),T.get("/",(async e=>{e.body={code:200,message:"hello koa-ts-cli https://www.npmjs.com/package/koa-ts-core"}})),s.use(T.routes()),await(async e=>{const a=process.env.APP_PORT;if(a){const n=e.listen(Number(a));return void n.on("listening",(()=>vn(n)))}const n=await mn.getPortPromise({port:8e3,stopPort:9999});e.listen=(...a)=>{const i=0===a.length?fn.apply(e,[n]):fn.apply(e,a);return i.on("listening",(()=>vn(i))),i}})(s),[s,T]},exports.successRsp=e=>{const a=Array.isArray(e?.data);k({success:!0,message:e?.message,data:a?{list:e?.data}:e?.data})},exports.unSuccessRsp=e=>{k({success:!1,errorCode:e?.code,errorMessage:e?.message,data:e?.data})};
|
package/dist/index.esm.js
CHANGED
|
@@ -36,4 +36,4 @@ import{AsyncLocalStorage as e}from"async_hooks";import a,{readdirSync as n,exist
|
|
|
36
36
|
* copy-to - index.js
|
|
37
37
|
* Copyright(c) 2014 dead_horse <dead_horse@qq.com>
|
|
38
38
|
* MIT Licensed
|
|
39
|
-
*/var sr=function(){if(ls)return ps;ls=1;const e=tr(),a=function(){if(cs)return rs;cs=1;var e=Array.prototype.slice;function a(e,n){if(!(this instanceof a))return new a(e,n);this.src=e,this._withAccess=n}function n(e,a){return void 0===e[a]&&void 0===e.__lookupGetter__(a)&&void 0===e.__lookupSetter__(a)}return rs=a,a.prototype.withAccess=function(e){return this._withAccess=!1!==e,this},a.prototype.pick=function(a){return Array.isArray(a)||(a=e.call(arguments)),a.length&&(this.keys=a),this},a.prototype.to=function(e){if(e=e||{},!this.src)return e;var a=this.keys||Object.keys(this.src);if(!this._withAccess){for(var i=0;i<a.length;i++)void 0===e[o=a[i]]&&(e[o]=this.src[o]);return e}for(i=0;i<a.length;i++){var o=a[i];if(n(e,o)){var t=this.src.__lookupGetter__(o),s=this.src.__lookupSetter__(o);t&&e.__defineGetter__(o,t),s&&e.__defineSetter__(o,s),t||s||(e[o]=this.src[o])}}return e},a.prototype.toCover=function(e){for(var a=this.keys||Object.keys(this.src),n=0;n<a.length;n++){var i=a[n];delete e[i];var o=this.src.__lookupGetter__(i),t=this.src.__lookupSetter__(i);o&&e.__defineGetter__(i,o),t&&e.__defineSetter__(i,t),o||t||(e[i]=this.src[i])}},a.prototype.override=a.prototype.toCover,a.prototype.and=function(e){var a={};return this.to(a),this.src=e,this.to(a),this.src=a,this},rs}(),n=$n();function i(e,n){const i={};return a(e).to(i),i.limit=e[n+"Limit"],i}function o(e,a){a&&(Array.isArray(a)||(a=[a]),a.forEach((function(a){e.push(a)})))}function t(e,a){return e.includes(a)}return ps=function(a){a=a||{};const{detectJSON:s}=a,{onerror:r}=a,c=a.enableTypes||["json","form"],p=t(c,"form"),l=t(c,"json"),u=t(c,"text"),d=t(c,"xml");a.detectJSON=void 0,a.onerror=void 0,a.returnRawBody=!0;const m=["application/json","application/json-patch+json","application/vnd.api+json","application/csp-report","application/scim+json"],f=["application/x-www-form-urlencoded"],v=["text/plain"],x=["text/xml","application/xml"],h=i(a,"json"),b=i(a,"form"),g=i(a,"text"),y=i(a,"xml"),w=a.extendTypes||{};return o(m,w.json),o(f,w.form),o(v,w.text),o(x,w.xml),async function(a,i){if(void 0!==a.request.body||a.disableBodyParser)return await i();try{const i=await async function(a){if(l&&(s&&s(a)||function(e,a){"string"==typeof e&&(e=e.replace(/;$/,""));return n.is(e,a)}(a.request.get("content-type"),m)))return await e.json(a,h);if(p&&a.request.is(f))return await e.form(a,b);if(u&&a.request.is(v))return await e.text(a,g)||"";if(d&&a.request.is(x))return await e.text(a,y)||"";return{}}(a);a.request.body="parsed"in i?i.parsed:{},void 0===a.request.rawBody&&(a.request.rawBody=i.raw)}catch(e){if(!r)throw e;r(e,a)}await i()}}}(),rr=U(sr);const cr=async(e,a)=>{e.extra={get:e.query,post:e.request.body??{}},await a()};global.isDev="development"===process.env.NODE_ENV,(()=>{const e=process.env.NODE_ENV||"production",a=t(_n,"env");switch(console.log("load env path: ",a),m.config({path:t(a,".common.env")}),e){case"development":m.config({path:t(a,".development.env")});break;case"test":m.config({path:t(a,".test.env")});break;case"production":m.config({path:t(a,".production.env")})}})();const pr=async e=>{const{koaInstance:a,authCheckCallback:n,catchErrorCallback:i,registerHighPriorityMiddleware:o}=e;try{(e=>{const{controllerModule:a,validateModule:n}=F();N(a,(a=>{if(!a.path.includes("controller"))return;const i=z(a.wholePath),o=i?.routesMap;o&&Sn(n,a,o,((n,i)=>!n||e({filePath:a,ctx:i})))}))})(n)}catch(e){console.log("registerControllers error",e)}const t=a||new r;var s;return t.use(L),o?.(t),t.use((s=i,async(e,a)=>{try{await a()}catch(a){s?s(a,e):q(500,{message:a.message})}})),t.use(rr()),t.use(cr),(isDev||"true"===process.env.DOC)&&M.get("/doc",(async e=>{const a=await(async()=>{const e=[],a=new Map;return N(Cn.DOCUMENTATION_DIR,(a=>{const{pathPrefix:n}=I(a,"doc");e.push(Pn(a,n))})),e.forEach((e=>{a.has(e.pathPrefix)||a.set(e.pathPrefix,[]),a.get(e.pathPrefix)?.push(e)})),On({apiData:Array.from(a.entries())})})();e.body=a})),M.get("/",(async e=>{e.body={code:200,message:"hello koa-ts-cli https://www.npmjs.com/package/koa-ts-core"}})),t.use(M.routes()),await(async e=>{const a=await wn.getPortPromise({port:8e3,stopPort:9999});e.listen=(...
|
|
39
|
+
*/var sr=function(){if(ls)return ps;ls=1;const e=tr(),a=function(){if(cs)return rs;cs=1;var e=Array.prototype.slice;function a(e,n){if(!(this instanceof a))return new a(e,n);this.src=e,this._withAccess=n}function n(e,a){return void 0===e[a]&&void 0===e.__lookupGetter__(a)&&void 0===e.__lookupSetter__(a)}return rs=a,a.prototype.withAccess=function(e){return this._withAccess=!1!==e,this},a.prototype.pick=function(a){return Array.isArray(a)||(a=e.call(arguments)),a.length&&(this.keys=a),this},a.prototype.to=function(e){if(e=e||{},!this.src)return e;var a=this.keys||Object.keys(this.src);if(!this._withAccess){for(var i=0;i<a.length;i++)void 0===e[o=a[i]]&&(e[o]=this.src[o]);return e}for(i=0;i<a.length;i++){var o=a[i];if(n(e,o)){var t=this.src.__lookupGetter__(o),s=this.src.__lookupSetter__(o);t&&e.__defineGetter__(o,t),s&&e.__defineSetter__(o,s),t||s||(e[o]=this.src[o])}}return e},a.prototype.toCover=function(e){for(var a=this.keys||Object.keys(this.src),n=0;n<a.length;n++){var i=a[n];delete e[i];var o=this.src.__lookupGetter__(i),t=this.src.__lookupSetter__(i);o&&e.__defineGetter__(i,o),t&&e.__defineSetter__(i,t),o||t||(e[i]=this.src[i])}},a.prototype.override=a.prototype.toCover,a.prototype.and=function(e){var a={};return this.to(a),this.src=e,this.to(a),this.src=a,this},rs}(),n=$n();function i(e,n){const i={};return a(e).to(i),i.limit=e[n+"Limit"],i}function o(e,a){a&&(Array.isArray(a)||(a=[a]),a.forEach((function(a){e.push(a)})))}function t(e,a){return e.includes(a)}return ps=function(a){a=a||{};const{detectJSON:s}=a,{onerror:r}=a,c=a.enableTypes||["json","form"],p=t(c,"form"),l=t(c,"json"),u=t(c,"text"),d=t(c,"xml");a.detectJSON=void 0,a.onerror=void 0,a.returnRawBody=!0;const m=["application/json","application/json-patch+json","application/vnd.api+json","application/csp-report","application/scim+json"],f=["application/x-www-form-urlencoded"],v=["text/plain"],x=["text/xml","application/xml"],h=i(a,"json"),b=i(a,"form"),g=i(a,"text"),y=i(a,"xml"),w=a.extendTypes||{};return o(m,w.json),o(f,w.form),o(v,w.text),o(x,w.xml),async function(a,i){if(void 0!==a.request.body||a.disableBodyParser)return await i();try{const i=await async function(a){if(l&&(s&&s(a)||function(e,a){"string"==typeof e&&(e=e.replace(/;$/,""));return n.is(e,a)}(a.request.get("content-type"),m)))return await e.json(a,h);if(p&&a.request.is(f))return await e.form(a,b);if(u&&a.request.is(v))return await e.text(a,g)||"";if(d&&a.request.is(x))return await e.text(a,y)||"";return{}}(a);a.request.body="parsed"in i?i.parsed:{},void 0===a.request.rawBody&&(a.request.rawBody=i.raw)}catch(e){if(!r)throw e;r(e,a)}await i()}}}(),rr=U(sr);const cr=async(e,a)=>{e.extra={get:e.query,post:e.request.body??{}},await a()};global.isDev="development"===process.env.NODE_ENV,(()=>{const e=process.env.NODE_ENV||"production",a=t(_n,"env");switch(console.log("load env path: ",a),m.config({path:t(a,".common.env")}),e){case"development":m.config({path:t(a,".development.env")});break;case"test":m.config({path:t(a,".test.env")});break;case"production":m.config({path:t(a,".production.env")})}})();const pr=async e=>{const{koaInstance:a,authCheckCallback:n,catchErrorCallback:i,registerHighPriorityMiddleware:o}=e;try{(e=>{const{controllerModule:a,validateModule:n}=F();N(a,(a=>{if(!a.path.includes("controller"))return;const i=z(a.wholePath),o=i?.routesMap;o&&Sn(n,a,o,((n,i)=>!n||e({filePath:a,ctx:i})))}))})(n)}catch(e){console.log("registerControllers error",e)}const t=a||new r;var s;return t.use(L),o?.(t),t.use((s=i,async(e,a)=>{try{await a()}catch(a){s?s(a,e):q(500,{message:a.message})}})),t.use(rr()),t.use(cr),(isDev||"true"===process.env.DOC)&&M.get("/doc",(async e=>{const a=await(async()=>{const e=[],a=new Map;return N(Cn.DOCUMENTATION_DIR,(a=>{const{pathPrefix:n}=I(a,"doc");e.push(Pn(a,n))})),e.forEach((e=>{a.has(e.pathPrefix)||a.set(e.pathPrefix,[]),a.get(e.pathPrefix)?.push(e)})),On({apiData:Array.from(a.entries())})})();e.body=a})),M.get("/",(async e=>{e.body={code:200,message:"hello koa-ts-cli https://www.npmjs.com/package/koa-ts-core"}})),t.use(M.routes()),await(async e=>{const a=process.env.APP_PORT;if(a){const n=e.listen(Number(a));return void n.on("listening",(()=>jn(n)))}const n=await wn.getPortPromise({port:8e3,stopPort:9999});e.listen=(...a)=>{const i=0===a.length?kn.apply(e,[n]):kn.apply(e,a);return i.on("listening",(()=>jn(i))),i}})(t),[t,M]};export{E as AuthRouter,T as BaseException,y as INDEX_ROUTE,S as Router,_ as contextStore,q as errorRsp,A as getCurrentContext,F as getSrcModulePaths,pr as initializeKoaApp,C as successRsp,P as unSuccessRsp};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "koa-ts-core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.14",
|
|
4
4
|
"description": "koa-ts-core",
|
|
5
5
|
"main": "dist/index.cjs.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
@@ -53,4 +53,4 @@
|
|
|
53
53
|
"node": ">=14.0.0"
|
|
54
54
|
},
|
|
55
55
|
"packageManager": "pnpm@10.13.1+sha512.37ebf1a5c7a30d5fabe0c5df44ee8da4c965ca0c5af3dbab28c3a1681b70a256218d05c81c9c0dcf767ef6b8551eb5b960042b9ed4300c59242336377e01cfad"
|
|
56
|
-
}
|
|
56
|
+
}
|