@resolveio/server-lib 1.0.0-rc3 → 1.0.0-rc4

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.
Files changed (79) hide show
  1. package/collections/active-subscription.collection.js +2 -1
  2. package/collections/app-status.collection.js +2 -1
  3. package/collections/app-version.collection.js +2 -1
  4. package/collections/counter.collection.js +2 -1
  5. package/collections/cron-job-history.collection.js +2 -1
  6. package/collections/cron-job.collection.js +2 -1
  7. package/collections/file.collection.js +2 -1
  8. package/collections/flag.collection.js +2 -1
  9. package/collections/log.collection.js +2 -1
  10. package/collections/logged-in-users.collection.js +2 -1
  11. package/collections/method-call.collection.js +2 -1
  12. package/collections/method-response.collection.js +2 -1
  13. package/collections/queue-flag.collection.js +2 -1
  14. package/collections/queue-method.collection.js +2 -1
  15. package/collections/queue-response.collection.js +2 -1
  16. package/collections/support-ticket.collection.js +2 -1
  17. package/collections/user.collection.js +2 -1
  18. package/cron/cron.js +2 -1
  19. package/fixtures/cron-jobs.js +2 -1
  20. package/fixtures/init.js +2 -1
  21. package/http/auth.js +2 -1
  22. package/http/health.js +2 -1
  23. package/index.js +2 -1
  24. package/managers/cron.manager.js +2 -1
  25. package/managers/method.manager.js +2 -1
  26. package/managers/queue-method.manager.js +2 -1
  27. package/managers/subscription.manager.js +2 -1
  28. package/managers/support.manager.js +2 -1
  29. package/methods/accounts.js +2 -1
  30. package/methods/aws.js +2 -1
  31. package/methods/cloudconvert.js +2 -1
  32. package/methods/collections.js +2 -1
  33. package/methods/counters.js +2 -1
  34. package/methods/cron-jobs.js +2 -1
  35. package/methods/flags.js +2 -1
  36. package/methods/logs.js +2 -1
  37. package/methods/pdf.js +2 -1
  38. package/models/active-subscription.model.js +2 -1
  39. package/models/app-status.model.js +2 -1
  40. package/models/app-version.model.js +2 -1
  41. package/models/collection-document.model.js +2 -1
  42. package/models/counter.model.js +2 -1
  43. package/models/cron-job-history.model.js +2 -1
  44. package/models/cron-job.model.js +2 -1
  45. package/models/dialog.model.js +2 -1
  46. package/models/file.model.js +2 -1
  47. package/models/flag.model.js +2 -1
  48. package/models/log.model.js +2 -1
  49. package/models/logged-in-users.model.js +2 -1
  50. package/models/method-call.model.js +2 -1
  51. package/models/method-response.model.js +2 -1
  52. package/models/method.model.js +2 -1
  53. package/models/pagination.model.js +2 -1
  54. package/models/permission.model.js +2 -1
  55. package/models/queue-method.model.js +2 -1
  56. package/models/queue-response.model.js +2 -1
  57. package/models/select-data-label.model.js +2 -1
  58. package/models/server-response.model.js +2 -1
  59. package/models/subscription.model.js +2 -1
  60. package/models/support-method.model.js +2 -1
  61. package/models/support-ticket.model.js +2 -1
  62. package/models/user.model.js +2 -1
  63. package/package.json +2 -1
  64. package/publications/app-status.js +2 -1
  65. package/publications/app-version.js +2 -1
  66. package/publications/cron-jobs.js +2 -1
  67. package/publications/files.js +2 -1
  68. package/publications/flags.js +2 -1
  69. package/publications/logs.js +2 -1
  70. package/publications/method-calls.js +2 -1
  71. package/publications/method-responses.js +2 -1
  72. package/publications/super-admin.js +2 -1
  73. package/publications/support-tickets.js +2 -1
  74. package/server-app.js +2 -1
  75. package/support-methods/aws.js +2 -1
  76. package/support-methods/collections.js +2 -1
  77. package/support-methods/counters.js +2 -1
  78. package/support-methods/support.js +2 -1
  79. package/util/common.js +2 -1
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var mongoose_1=require("mongoose"),common_1=require("../util/common"),simpl_schema_1=require("simpl-schema"),log_collection_1=require("../collections/log.collection"),pagination_model_1=require("../models/pagination.model"),__1=require("..");function loadSupportCollectionMethods(p){p.supportMethods({findOne:{check:new simpl_schema_1.default({collection:{type:String},query:{type:Object,blackbox:!0}}),function:function(e,t){return __1.default.getSupportDB().model(e).findOne(t).exec()}},find:{check:new simpl_schema_1.default({collection:{type:String},query:{type:Object,blackbox:!0},sort:{type:Object,blackbox:!0,optional:!0}}),function:function(e,t,o){return void 0===o&&(o={}),__1.default.getSupportDB().model(e).find(t).sort(o).exec()}},findWithOptions:{check:new simpl_schema_1.default({collection:{type:String},query:{type:Object,blackbox:!0},options:{type:pagination_model_1.PaginationOptionsSchema}}),function:function(e,t,o){return __1.default.getSupportDB().model(e).find(t).sort(o.sort).limit(o.limit).skip(o.skip).select(o.fields).exec()}},insertDocument:{check:new simpl_schema_1.default({collection:{type:String},document:{type:Object,blackbox:!0}}),function:function(i,d){var l=this;return new Promise(function(e,t){var o=null;try{__1.default.getSupportDB().model(i).simplschema.validate(d)}catch(e){o=e,p.getMainServer().getMethodManager().callMethodInternal("insertErrorLog","Schema Failed on insert - "+i,[o,d])}if(o)console.log(o),t("Schema Errors");else{common_1.getBinarySize(JSON.stringify(d))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Insert Document",message:"User: "+l.user+", Collection Type: "+i,payload:d,method:"insertDocument",user:l.user,messageId:""}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Insert Document",message:"User: "+l.user+", Collection Type: "+i,payload:"Too Big",method:"insertDocument",user:l.user,messageId:""});var n=mongoose_1.Types.ObjectId().toHexString();d._id=n,d.__v=0,__1.default.getSupportDB().model(i).create(d).then(function(){return e(n)},function(e){return t(e)})}})}},updateDocument:{check:new simpl_schema_1.default({collection:{type:String},f_document:{type:Object,blackbox:!0}}),function:function(_,c){var i=this;return new Promise(function(l,r){__1.default.getSupportDB().model(_).findOne({_id:c._id}).lean().exec(function(e,d){if(d)if(d.__v===c.__v){var t=common_1.deepCopy(d);t._id={_id:d._id,__v:d.__v};var o=null;try{__1.default.getSupportDB().model(_).simplschema.validate(c)}catch(e){o=e,p.getMainServer().getMethodManager().callMethodInternal("insertErrorLog","Schema Failed on updateDocument - "+_,[o,c])}if(o)console.log(o),r("Schema Errors");else{__1.default.getSupportDB().model(__1.default.getSupportDB().model(_).versionCollection).create(t).then(function(e){__1.default.getSupportDB().model(__1.default.getSupportDB().model(_).versionCollection).deleteMany({$and:[{"_id._id":d._id},{"_id.__v":{$lte:d.__v-4}}]}).exec()},function(e){console.log(e)});var n=common_1.getMongoUpdates(d,c,!0);n?__1.default.getSupportDB().model(_).updateOne({_id:c._id},n,{strict:!1}).exec().then(function(e){l(e.nModified)},function(e){return r(e)}):l(1),common_1.getBinarySize(JSON.stringify(c))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document",message:"User: "+i.user+", Collection Type: "+_,payload:c,method:"updateDocument",user:i.user,messageId:""}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document",message:"User: "+i.user+", Collection Type: "+_,payload:"Too Big",method:"updateDocument",user:i.user,messageId:""})}}else console.log("invalid version - "+_,d.__v,c.__v),__1.default.getSupportDB().model(__1.default.getSupportDB().model(_).versionCollection).findOne({$and:[{"_id._id":d._id},{"_id.__v":c.__v}]}).lean().exec(function(e,t){var o=d._id;if(t){var n=common_1.deepCopy(d);n._id={_id:d._id,__v:d.__v};var i=common_1.getMongoMergeUpdatedDoc(c,d,t);i._id=o,i.__v++,__1.default.getSupportDB().model(_).replaceOne({_id:o},i).exec().then(function(t){__1.default.getSupportDB().model(__1.default.getSupportDB().model(_).versionCollection).create(n).then(function(e){__1.default.getSupportDB().model(__1.default.getSupportDB().model(_).versionCollection).deleteMany({$and:[{"_id._id":n._id._id},{"_id.__v":{$lte:n._id.__v-4}}]}).exec(),l(t.nModified)})},function(e){return r(e)})}else r("Invalid Version And Could Not Find History - DB: "+d.__v+", Trying to update with :"+c.__v)});else r(e)})})}},updateDocumentProps:{check:new simpl_schema_1.default({collection:{type:String},doc_id:{type:String},updateParams:{type:Array},"updateParams.$":{type:Object,blackbox:!0},doc__v:{type:Number}}),function:function(c,i,a,u){var s=this;return new Promise(function(r,_){__1.default.getSupportDB().model(c).findOne({_id:i}).lean().exec(function(e,d){if(d){var l=common_1.deepCopy(d);if(a.forEach(function(e){l[e.prop]=e.data}),l.__v===u){var t=common_1.deepCopy(d);t._id={_id:d._id,__v:d.__v};var o=null;try{__1.default.getSupportDB().model(c).simplschema.validate(l)}catch(e){o=e,p.getMainServer().getMethodManager().callMethodInternal("insertErrorLog","Schema Failed on updateDocumentProps - "+c,[o,l])}if(o)console.log(o),_("Schema Errors");else{__1.default.getSupportDB().model(__1.default.getSupportDB().model(c).versionCollection).create(t).then(function(e){__1.default.getSupportDB().model(__1.default.getSupportDB().model(c).versionCollection).deleteMany({$and:[{"_id._id":d._id},{"_id.__v":{$lte:d.__v-4}}]}).exec()},function(e){console.log(e)});var n=common_1.getMongoUpdates(d,l,!0);n?__1.default.getSupportDB().model(c).updateOne({_id:l._id},n,{strict:!1}).exec().then(function(e){r(e.ok)},function(e){return _(e)}):r(1),common_1.getBinarySize(JSON.stringify(a))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document Props",message:"User: "+s.user+", Collection Type: "+c+", Id: "+i+", Version: "+u,payload:a,method:"updateDocumentProps",user:s.user,messageId:""}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document Props",message:"User: "+s.user+", Collection Type: "+c+", Id: "+i+", Version: "+u,payload:"Too Big",method:"updateDocumentProps",user:s.user,messageId:""})}}else console.log("invalid version - "+c,d.__v,u),__1.default.getSupportDB().model(__1.default.getSupportDB().model(c).versionCollection).findOne({$and:[{"_id._id":d._id},{"_id.__v":u}]}).lean().exec(function(e,t){var o=d._id;if(t){var n=common_1.deepCopy(d);n._id={_id:d._id,__v:d.__v};var i=common_1.getMongoMergeUpdatedDoc(l,d,t);i._id=o,i.__v++,__1.default.getSupportDB().model(c).replaceOne({_id:o},i).exec().then(function(e){__1.default.getSupportDB().model(__1.default.getSupportDB().model(c).versionCollection).create(n).then(function(e){__1.default.getSupportDB().model(__1.default.getSupportDB().model(c).versionCollection).deleteMany({$and:[{"_id._id":n._id._id},{"_id.__v":{$lte:n._id.__v-4}}]}).exec()},function(e){console.log(e)}),r(e.nModified)},function(e){return _(e)})}else _("Invalid Version And Could Not Find History Props - DB: "+d.__v+", Trying to update with :"+l.__v)})}else _(e)})})}},removeDocument:{check:new simpl_schema_1.default({collection:{type:String},doc_id:{type:String}}),function:function(e,t){var i=this;return new Promise(function(o,n){log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Remove Document",message:"User: "+i.user+", Collection Type: "+e,payload:{_id:t},method:"removeDocument",user:i.user,messageId:""}),__1.default.getSupportDB().model(e).deleteOne({_id:t}).exec(function(e,t){e?n(e):o(t.ok)})})}},removeDocumentWithQuery:{check:new simpl_schema_1.default({collection:{type:String},query:{type:Object,blackbox:!0}}),function:function(e,t){var i=this;return new Promise(function(o,n){log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Remove Document (Query)",message:"User: "+i.user+", Collection Type: "+e,payload:{_id:t},method:"removeDocumentWithQuery",user:i.user,messageId:""}),__1.default.getSupportDB().model(e).deleteOne(t).exec(function(e,t){e?n(e):o(t.ok)})})}}})}exports.loadSupportCollectionMethods=loadSupportCollectionMethods;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var mongoose_1=require("mongoose"),common_1=require("../util/common"),simpl_schema_1=require("simpl-schema"),log_collection_1=require("../collections/log.collection"),pagination_model_1=require("../models/pagination.model"),__1=require("..");function loadSupportCollectionMethods(p){p.supportMethods({findOne:{check:new simpl_schema_1.default({collection:{type:String},query:{type:Object,blackbox:!0}}),function:function(e,t){return __1.default.getSupportDB().model(e).findOne(t).exec()}},find:{check:new simpl_schema_1.default({collection:{type:String},query:{type:Object,blackbox:!0},sort:{type:Object,blackbox:!0,optional:!0}}),function:function(e,t,o){return void 0===o&&(o={}),__1.default.getSupportDB().model(e).find(t).sort(o).exec()}},findWithOptions:{check:new simpl_schema_1.default({collection:{type:String},query:{type:Object,blackbox:!0},options:{type:pagination_model_1.PaginationOptionsSchema}}),function:function(e,t,o){return __1.default.getSupportDB().model(e).find(t).sort(o.sort).limit(o.limit).skip(o.skip).select(o.fields).exec()}},insertDocument:{check:new simpl_schema_1.default({collection:{type:String},document:{type:Object,blackbox:!0}}),function:function(i,d){var l=this;return new Promise(function(e,t){var o=null;try{__1.default.getSupportDB().model(i).simplschema.validate(d)}catch(e){o=e,p.getMainServer().getMethodManager().callMethodInternal("insertErrorLog","Schema Failed on insert - "+i,[o,d])}if(o)console.log(o),t("Schema Errors");else{common_1.getBinarySize(JSON.stringify(d))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Insert Document",message:"User: "+l.user+", Collection Type: "+i,payload:d,method:"insertDocument",user:l.user,messageId:""}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Insert Document",message:"User: "+l.user+", Collection Type: "+i,payload:"Too Big",method:"insertDocument",user:l.user,messageId:""});var n=mongoose_1.Types.ObjectId().toHexString();d._id=n,d.__v=0,__1.default.getSupportDB().model(i).create(d).then(function(){return e(n)},function(e){return t(e)})}})}},updateDocument:{check:new simpl_schema_1.default({collection:{type:String},f_document:{type:Object,blackbox:!0}}),function:function(_,c){var i=this;return new Promise(function(l,r){__1.default.getSupportDB().model(_).findOne({_id:c._id}).lean().exec(function(e,d){if(d)if(d.__v===c.__v){var t=common_1.deepCopy(d);t._id={_id:d._id,__v:d.__v};var o=null;try{__1.default.getSupportDB().model(_).simplschema.validate(c)}catch(e){o=e,p.getMainServer().getMethodManager().callMethodInternal("insertErrorLog","Schema Failed on updateDocument - "+_,[o,c])}if(o)console.log(o),r("Schema Errors");else{__1.default.getSupportDB().model(__1.default.getSupportDB().model(_).versionCollection).create(t).then(function(e){__1.default.getSupportDB().model(__1.default.getSupportDB().model(_).versionCollection).deleteMany({$and:[{"_id._id":d._id},{"_id.__v":{$lte:d.__v-4}}]}).exec()},function(e){console.log(e)});var n=common_1.getMongoUpdates(d,c,!0);n?__1.default.getSupportDB().model(_).updateOne({_id:c._id},n,{strict:!1}).exec().then(function(e){l(e.nModified)},function(e){return r(e)}):l(1),common_1.getBinarySize(JSON.stringify(c))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document",message:"User: "+i.user+", Collection Type: "+_,payload:c,method:"updateDocument",user:i.user,messageId:""}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document",message:"User: "+i.user+", Collection Type: "+_,payload:"Too Big",method:"updateDocument",user:i.user,messageId:""})}}else console.log("invalid version - "+_,d.__v,c.__v),__1.default.getSupportDB().model(__1.default.getSupportDB().model(_).versionCollection).findOne({$and:[{"_id._id":d._id},{"_id.__v":c.__v}]}).lean().exec(function(e,t){var o=d._id;if(t){var n=common_1.deepCopy(d);n._id={_id:d._id,__v:d.__v};var i=common_1.getMongoMergeUpdatedDoc(c,d,t);i._id=o,i.__v++,__1.default.getSupportDB().model(_).replaceOne({_id:o},i).exec().then(function(t){__1.default.getSupportDB().model(__1.default.getSupportDB().model(_).versionCollection).create(n).then(function(e){__1.default.getSupportDB().model(__1.default.getSupportDB().model(_).versionCollection).deleteMany({$and:[{"_id._id":n._id._id},{"_id.__v":{$lte:n._id.__v-4}}]}).exec(),l(t.nModified)})},function(e){return r(e)})}else r("Invalid Version And Could Not Find History - DB: "+d.__v+", Trying to update with :"+c.__v)});else r(e)})})}},updateDocumentProps:{check:new simpl_schema_1.default({collection:{type:String},doc_id:{type:String},updateParams:{type:Array},"updateParams.$":{type:Object,blackbox:!0},doc__v:{type:Number}}),function:function(c,i,a,u){var s=this;return new Promise(function(r,_){__1.default.getSupportDB().model(c).findOne({_id:i}).lean().exec(function(e,d){if(d){var l=common_1.deepCopy(d);if(a.forEach(function(e){l[e.prop]=e.data}),l.__v===u){var t=common_1.deepCopy(d);t._id={_id:d._id,__v:d.__v};var o=null;try{__1.default.getSupportDB().model(c).simplschema.validate(l)}catch(e){o=e,p.getMainServer().getMethodManager().callMethodInternal("insertErrorLog","Schema Failed on updateDocumentProps - "+c,[o,l])}if(o)console.log(o),_("Schema Errors");else{__1.default.getSupportDB().model(__1.default.getSupportDB().model(c).versionCollection).create(t).then(function(e){__1.default.getSupportDB().model(__1.default.getSupportDB().model(c).versionCollection).deleteMany({$and:[{"_id._id":d._id},{"_id.__v":{$lte:d.__v-4}}]}).exec()},function(e){console.log(e)});var n=common_1.getMongoUpdates(d,l,!0);n?__1.default.getSupportDB().model(c).updateOne({_id:l._id},n,{strict:!1}).exec().then(function(e){r(e.ok)},function(e){return _(e)}):r(1),common_1.getBinarySize(JSON.stringify(a))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document Props",message:"User: "+s.user+", Collection Type: "+c+", Id: "+i+", Version: "+u,payload:a,method:"updateDocumentProps",user:s.user,messageId:""}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Update Document Props",message:"User: "+s.user+", Collection Type: "+c+", Id: "+i+", Version: "+u,payload:"Too Big",method:"updateDocumentProps",user:s.user,messageId:""})}}else console.log("invalid version - "+c,d.__v,u),__1.default.getSupportDB().model(__1.default.getSupportDB().model(c).versionCollection).findOne({$and:[{"_id._id":d._id},{"_id.__v":u}]}).lean().exec(function(e,t){var o=d._id;if(t){var n=common_1.deepCopy(d);n._id={_id:d._id,__v:d.__v};var i=common_1.getMongoMergeUpdatedDoc(l,d,t);i._id=o,i.__v++,__1.default.getSupportDB().model(c).replaceOne({_id:o},i).exec().then(function(e){__1.default.getSupportDB().model(__1.default.getSupportDB().model(c).versionCollection).create(n).then(function(e){__1.default.getSupportDB().model(__1.default.getSupportDB().model(c).versionCollection).deleteMany({$and:[{"_id._id":n._id._id},{"_id.__v":{$lte:n._id.__v-4}}]}).exec()},function(e){console.log(e)}),r(e.nModified)},function(e){return _(e)})}else _("Invalid Version And Could Not Find History Props - DB: "+d.__v+", Trying to update with :"+l.__v)})}else _(e)})})}},removeDocument:{check:new simpl_schema_1.default({collection:{type:String},doc_id:{type:String}}),function:function(e,t){var i=this;return new Promise(function(o,n){log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Remove Document",message:"User: "+i.user+", Collection Type: "+e,payload:{_id:t},method:"removeDocument",user:i.user,messageId:""}),__1.default.getSupportDB().model(e).deleteOne({_id:t}).exec(function(e,t){e?n(e):o(t.ok)})})}},removeDocumentWithQuery:{check:new simpl_schema_1.default({collection:{type:String},query:{type:Object,blackbox:!0}}),function:function(e,t){var i=this;return new Promise(function(o,n){log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"info",title:"Remove Document (Query)",message:"User: "+i.user+", Collection Type: "+e,payload:{_id:t},method:"removeDocumentWithQuery",user:i.user,messageId:""}),__1.default.getSupportDB().model(e).deleteOne(t).exec(function(e,t){e?n(e):o(t.ok)})})}}})}exports.loadSupportCollectionMethods=loadSupportCollectionMethods;
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdXBwb3J0LW1ldGhvZHMvY29sbGVjdGlvbnMudHMiXSwibmFtZXMiOlsibW9uZ29vc2VfMSIsInJlcXVpcmUiLCJjb21tb25fMSIsInNpbXBsX3NjaGVtYV8xIiwibG9nX2NvbGxlY3Rpb25fMSIsInBhZ2luYXRpb25fbW9kZWxfMSIsIl9fMSIsImxvYWRTdXBwb3J0Q29sbGVjdGlvbk1ldGhvZHMiLCJzdXBwb3J0TWFuYWdlciIsInN1cHBvcnRNZXRob2RzIiwiZmluZE9uZSIsImNoZWNrIiwiZGVmYXVsdCIsImNvbGxlY3Rpb24iLCJ0eXBlIiwiU3RyaW5nIiwicXVlcnkiLCJPYmplY3QiLCJibGFja2JveCIsImZ1bmN0aW9uIiwiZ2V0U3VwcG9ydERCIiwibW9kZWwiLCJleGVjIiwiZmluZCIsInNvcnQiLCJvcHRpb25hbCIsInNvcnRRdWVyeSIsImZpbmRXaXRoT3B0aW9ucyIsIm9wdGlvbnMiLCJQYWdpbmF0aW9uT3B0aW9uc1NjaGVtYSIsImxpbWl0Iiwic2tpcCIsInNlbGVjdCIsImZpZWxkcyIsImluc2VydERvY3VtZW50IiwiZG9jdW1lbnQiLCJfdGhpcyIsInRoaXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInNjaGVtYUVycm9ycyIsInZhbGlkYXRlIiwiZXJyb3JzIiwiZ2V0TWFpblNlcnZlciIsImdldE1ldGhvZE1hbmFnZXIiLCJjYWxsTWV0aG9kSW50ZXJuYWwiLCJjb25zb2xlIiwibG9nIiwiZ2V0QmluYXJ5U2l6ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJMb2dzIiwiY3JlYXRlIiwiX2lkIiwiVHlwZXMiLCJPYmplY3RJZCIsInRvSGV4U3RyaW5nIiwiZGF0ZSIsIkRhdGUiLCJ0aXRsZSIsIm1lc3NhZ2UiLCJ1c2VyIiwicGF5bG9hZCIsIm1ldGhvZCIsIm1lc3NhZ2VJZCIsImlkXzEiLCJfX3YiLCJ0aGVuIiwiZXJyIiwidXBkYXRlRG9jdW1lbnQiLCJmX2RvY3VtZW50IiwibGVhbiIsImVyckRvYyIsImN1cnJEb2MiLCJ2ZXJzaW9uRG9jIiwiZGVlcENvcHkiLCJkb2MiLCJkZWxldGVNYW55IiwiJGFuZCIsIl9pZC5faWQiLCJfaWQuX192IiwiJGx0ZSIsInVwZGF0ZXMiLCJnZXRNb25nb1VwZGF0ZXMiLCJ1cGRhdGVPbmUiLCJzdHJpY3QiLCJyZXMiLCJuTW9kaWZpZWQiLCJlcnJPbGREb2MiLCJvbGREb2MiLCJuZXdDdXJyRG9jSWQiLCJ2ZXJzaW9uRG9jXzEiLCJ1cGRhdGVkRG9jIiwiZ2V0TW9uZ29NZXJnZVVwZGF0ZWREb2MiLCJyZXBsYWNlT25lIiwidXBkYXRlRG9jdW1lbnRQcm9wcyIsImRvY19pZCIsInVwZGF0ZVBhcmFtcyIsIkFycmF5IiwidXBkYXRlUGFyYW1zLiQiLCJkb2NfX3YiLCJOdW1iZXIiLCJtb2RpZmllZERvY18xIiwiZm9yRWFjaCIsImRhdGEiLCJwcm9wIiwib2siLCJ2ZXJzaW9uRG9jXzIiLCJyZW1vdmVEb2N1bWVudCIsImRlbGV0ZU9uZSIsInJlbW92ZURvY3VtZW50V2l0aFF1ZXJ5IiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Im9FQUFBLElBQUFBLFdBQUFDLFFBQUEsWUFDQUMsU0FBQUQsUUFBQSxrQkFDQUUsZUFBQUYsUUFBQSxnQkFDQUcsaUJBQUFILFFBQUEsaUNBQ0FJLG1CQUFBSixRQUFBLDhCQUVBSyxJQUFBTCxRQUFBLE1BRUEsU0FBZ0JNLDZCQUE2QkMsR0FDNUNBLEVBQWVDLGVBQWUsQ0FDN0JDLFFBQVMsQ0FDUkMsTUFBTyxJQUFJUixlQUFBUyxRQUFhLENBQ3ZCQyxXQUFZLENBQ1hDLEtBQU1DLFFBRVBDLE1BQU8sQ0FDTkYsS0FBTUcsT0FDTkMsVUFBVSxLQUdaQyxTQUFVLFNBQVNOLEVBQW9CRyxHQUN0QyxPQUFPVixJQUFBTSxRQUFnQlEsZUFBZUMsTUFBTVIsR0FBWUgsUUFBUU0sR0FBT00sU0FHekVDLEtBQU0sQ0FDTFosTUFBTyxJQUFJUixlQUFBUyxRQUFhLENBQ3ZCQyxXQUFZLENBQ1hDLEtBQU1DLFFBRVBDLE1BQU8sQ0FDTkYsS0FBTUcs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R0FDaEZsQixFQUNIN0IsRUFBTzZCLEdBR1A5QixFQUFRZ0QsRUFBSW9CLFVBTWpCSSx3QkFBeUIsQ0FDeEJwRyxNQUFPLElBQUlSLGVBQUFTLFFBQWEsQ0FDdkJDLFdBQVksQ0FDWEMsS0FBTUMsUUFFUEMsTUFBTyxDQUNORixLQUFNRyxPQUNOQyxVQUFVLEtBR1pDLFNBQVUsU0FBU04sRUFBb0JHLEdBQTdCLElBQUFvQixFQUFBQyxLQUNULE9BQU8sSUFBSUMsUUFBUSxTQUFDQyxFQUFTQyxHQUU1QnBDLGlCQUFBZ0QsS0FBS0MsT0FBTyxDQUNYQyxJQUFLdEQsV0FBQXVELE1BQU1DLFdBQVdDLGNBQ3RCQyxLQUFNLElBQUlDLEtBQ1Y3QyxLQUFNLE9BQ044QyxNQUFPLDBCQUNQQyxRQUFTLFNBQVd6QixFQUFLMEIsS0FBTyxzQkFBd0JqRCxFQUN4RGtELFFBQVMsQ0FBQ1QsSUFBS3RDLEdBQ2ZnRCxPQUFRLDBCQUNSRixLQUFNMUIsRUFBSzBCLEtBQ1hHLFVBQVcsS0FHWjNELElBQUFNLFFBQWdCUSxlQUFlQyxNQUFNUixHQUFZaUcsVUFBVTlGLEdBQU9NLEtBQUssU0FBQytDLEVBQUtrQixHQUN4RWxCLEVBQ0g3QixFQUFPNkIsR0FHUDlCLEVBQVFnRCxFQUFJb0IsWUFyZW5CSyxRQUFBekcsNkJBQUFBIiwiZmlsZSI6InN1cHBvcnQtbWV0aG9kcy9jb2xsZWN0aW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERvY3VtZW50LCBUeXBlc30gZnJvbSAnbW9uZ29vc2UnO1xuaW1wb3J0IHsgZ2V0TW9uZ29VcGRhdGVzLCBkZWVwQ29weSwgZ2V0TW9uZ29NZXJnZVVwZGF0ZWREb2MsIGdldEJpbmFyeVNpemUgfSBmcm9tICcuLi91dGlsL2NvbW1vbic7XG5pbXBvcnQgU2ltcGxlU2NoZW1hIGZyb20gJ3NpbXBsLXNjaGVtYSc7XG5pbXBvcnQgeyBMb2dzIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvbG9nLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgUGFnaW5hdGlvbk9wdGlvbnNTY2hlbWEsIFBhZ2luYXRpb25PcHRpb25zIH0gZnJvbSAnLi4vbW9kZWxzL3BhZ2luYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgU3VwcG9ydE1hbmFnZXIgfSBmcm9tICcuLi9tYW5hZ2Vycy9zdXBwb3J0Lm1hbmFnZXInO1xuaW1wb3J0IFJlc29sdmVJT1NlcnZlciBmcm9tICcuLic7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkU3VwcG9ydENvbGxlY3Rpb25NZXRob2RzKHN1cHBvcnRNYW5hZ2VyOiBTdXBwb3J0TWFuYWdlcikge1xuXHRzdXBwb3J0TWFuYWdlci5zdXBwb3J0TWV0aG9kcyh7XG5cdFx0ZmluZE9uZToge1xuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHRjb2xsZWN0aW9uOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHF1ZXJ5OiB7XG5cdFx0XHRcdFx0dHlwZTogT2JqZWN0LFxuXHRcdFx0XHRcdGJsYWNrYm94OiB0cnVlXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGNvbGxlY3Rpb246IHN0cmluZywgcXVlcnk6IE9iamVjdCkge1xuXHRcdFx0XHRyZXR1cm4gUmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb24pLmZpbmRPbmUocXVlcnkpLmV4ZWMoKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGZpbmQ6IHtcblx0XHRcdGNoZWNrOiBuZXcgU2ltcGxlU2NoZW1hKHtcblx0XHRcdFx0Y29sbGVjdGlvbjoge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRxdWVyeToge1xuXHRcdFx0XHRcdHR5cGU6IE9iamVjdCxcblx0XHRcdFx0XHRibGFja2JveDogdHJ1ZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzb3J0OiB7XG5cdFx0XHRcdFx0dHlwZTogT2JqZWN0LFxuXHRcdFx0XHRcdGJsYWNrYm94OiB0cnVlLFxuXHRcdFx0XHRcdG9wdGlvbmFsOiB0cnVlXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGNvbGxlY3Rpb246IHN0cmluZywgcXVlcnk6IE9iamVjdCwgc29ydFF1ZXJ5OiBPYmplY3QgPSB7fSkge1xuXHRcdFx0XHRyZXR1cm4gUmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb24pLmZpbmQocXVlcnkpLnNvcnQoc29ydFF1ZXJ5KS5leGVjKCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRmaW5kV2l0aE9wdGlvbnM6IHtcblx0XHRcdGNoZWNrOiBuZXcgU2ltcGxlU2NoZW1hKHtcblx0XHRcdFx0Y29sbGVjdGlvbjoge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRxdWVyeToge1xuXHRcdFx0XHRcdHR5cGU6IE9iamVjdCxcblx0XHRcdFx0XHRibGFja2JveDogdHJ1ZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRvcHRpb25zOiB7XG5cdFx0XHRcdFx0dHlwZTogUGFnaW5hdGlvbk9wdGlvbnNTY2hlbWFcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oY29sbGVjdGlvbjogc3RyaW5nLCBxdWVyeTogT2JqZWN0LCBvcHRpb25zOiBQYWdpbmF0aW9uT3B0aW9ucykge1xuXHRcdFx0XHRyZXR1cm4gUmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb24pLmZpbmQocXVlcnkpLnNvcnQob3B0aW9ucy5zb3J0KS5saW1pdChvcHRpb25zLmxpbWl0KS5za2lwKG9wdGlvbnMuc2tpcCkuc2VsZWN0KG9wdGlvbnMuZmllbGRzKS5leGVjKCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvLyBJbnNlcnQgMSBkb2N1bWVudFxuXHRcdC8vIEBJbnB1dHM6IGNvbGxlY3Rpb24sIGRvY3VtZW50XG5cdFx0Ly8gQE91dHB1dHM6IHJlcyA9IF9pZCBvZiBuZXcgZG9jdW1lbnQsIGVyciA9IG5vdCBpbnNlcnRlZFxuXHRcdGluc2VydERvY3VtZW50OiB7XG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGNvbGxlY3Rpb246IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fSxcblx0XHRcdFx0ZG9jdW1lbnQ6IHtcblx0XHRcdFx0XHR0eXBlOiBPYmplY3QsXG5cdFx0XHRcdFx0YmxhY2tib3g6IHRydWVcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oY29sbGVjdGlvbjogc3RyaW5nLCBkb2N1bWVudDogRG9jdW1lbnQpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuXHRcdFx0XHRcdGxldCBzY2hlbWFFcnJvcnMgPSBudWxsO1xuXG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKVsnc2ltcGxzY2hlbWEnXS52YWxpZGF0ZShkb2N1bWVudCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhdGNoIChlcnJvcnMpIHtcblx0XHRcdFx0XHRcdHNjaGVtYUVycm9ycyA9IGVycm9ycztcblx0XHRcdFx0XHRcdHN1cHBvcnRNYW5hZ2VyLmdldE1haW5TZXJ2ZXIoKS5nZXRNZXRob2RNYW5hZ2VyKCkuY2FsbE1ldGhvZEludGVybmFsKCdpbnNlcnRFcnJvckxvZycsICdTY2hlbWEgRmFpbGVkIG9uIGluc2VydCAtICcgKyBjb2xsZWN0aW9uLCBbc2NoZW1hRXJyb3JzLCBkb2N1bWVudF0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcblx0XHRcdFx0XHRpZiAoc2NoZW1hRXJyb3JzKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhzY2hlbWFFcnJvcnMpO1xuXHRcdFx0XHRcdFx0cmVqZWN0KCdTY2hlbWEgRXJyb3JzJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0aWYgKGdldEJpbmFyeVNpemUoSlNPTi5zdHJpbmdpZnkoZG9jdW1lbnQpKSA8IDIwMDAwMCkge1xuXHRcdFx0XHRcdFx0XHRMb2dzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKSxcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5mbycsXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICdJbnNlcnQgRG9jdW1lbnQnLFxuXHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdVc2VyOiAnICsgdGhpcy51c2VyICsgJywgQ29sbGVjdGlvbiBUeXBlOiAnICsgY29sbGVjdGlvbixcblx0XHRcdFx0XHRcdFx0XHRwYXlsb2FkOiBkb2N1bWVudCxcblx0XHRcdFx0XHRcdFx0XHRtZXRob2Q6ICdpbnNlcnREb2N1bWVudCcsXG5cdFx0XHRcdFx0XHRcdFx0dXNlcjogdGhpcy51c2VyLFxuXHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2VJZDogJydcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0TG9ncy5jcmVhdGUoe1xuXHRcdFx0XHRcdFx0XHRcdF9pZDogVHlwZXMuT2JqZWN0SWQoKS50b0hleFN0cmluZygpLFxuXHRcdFx0XHRcdFx0XHRcdGRhdGU6IG5ldyBEYXRlKCksXG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2luZm8nLFxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiAnSW5zZXJ0IERvY3VtZW50Jyxcblx0XHRcdFx0XHRcdFx0XHRtZXNzYWdlOiAnVXNlcjogJyArIHRoaXMudXNlciArICcsIENvbGxlY3Rpb24gVHlwZTogJyArIGNvbGxlY3Rpb24sXG5cdFx0XHRcdFx0XHRcdFx0cGF5bG9hZDogJ1RvbyBCaWcnLFxuXHRcdFx0XHRcdFx0XHRcdG1ldGhvZDogJ2luc2VydERvY3VtZW50Jyxcblx0XHRcdFx0XHRcdFx0XHR1c2VyOiB0aGlzLnVzZXIsXG5cdFx0XHRcdFx0XHRcdFx0bWVzc2FnZUlkOiAnJ1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0bGV0IGlkID0gVHlwZXMuT2JqZWN0SWQoKS50b0hleFN0cmluZygpO1xuXHRcdFx0XHRcdFx0ZG9jdW1lbnQuX2lkID0gaWQ7XG5cdFx0XHRcdFx0XHRkb2N1bWVudC5fX3YgPSAwO1xuXHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb24pLmNyZWF0ZShkb2N1bWVudCkudGhlbigoKSA9PiByZXNvbHZlKGlkKSwgZXJyID0+IHJlamVjdChlcnIpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Ly8gUmVwbGFjZXMgMSBkb2N1bWVudCB3aXRoIG5ldyBkb2N1bWVudCAoZnJvbSBfaWQpXG5cdFx0Ly8gQElucHV0czogY29sbGVjdGlvbiwgZG9jdW1lbnQgaWRcblx0XHQvLyBAT3V0cHV0czogcmVzID0gMSAodXBkYXRlZCAxKSwgcmVzID0gMCAobm90IHVwZGF0ZWQpLCBlcnIgPSBub3QgdXBkYXRlZC93cm9uZyB2ZXJzaW9uXG5cdFx0Ly8gU2VhcmNoIGZvciBkb2MsIGNoZWNrIHZlcnNpb24sIGlmIGZvdW5kIHRoZW4gdHJ5IGFuZCB1cGRhdGVcblx0XHR1cGRhdGVEb2N1bWVudDoge1xuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHRjb2xsZWN0aW9uOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGZfZG9jdW1lbnQ6IHtcblx0XHRcdFx0XHR0eXBlOiBPYmplY3QsXG5cdFx0XHRcdFx0YmxhY2tib3g6IHRydWVcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oY29sbGVjdGlvbjogc3RyaW5nLCBmX2RvY3VtZW50OiBEb2N1bWVudCkge1xuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKS5maW5kT25lKHtfaWQ6IGZfZG9jdW1lbnQuX2lkfSkubGVhbigpLmV4ZWMoKGVyckRvYywgY3VyckRvYykgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKGN1cnJEb2MpIHtcblx0XHRcdFx0XHRcdFx0aWYgKGN1cnJEb2MuX192ID09PSBmX2RvY3VtZW50Ll9fdikge1xuXHRcdFx0XHRcdFx0XHRcdGxldCB2ZXJzaW9uRG9jID0gZGVlcENvcHkoY3VyckRvYyk7XG5cblx0XHRcdFx0XHRcdFx0XHR2ZXJzaW9uRG9jLl9pZCA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdF9pZDogY3VyckRvYy5faWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRfX3Y6IGN1cnJEb2MuX192XG5cdFx0XHRcdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdFx0XHRcdGxldCBzY2hlbWFFcnJvcnMgPSBudWxsO1xuXG5cdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKVsnc2ltcGxzY2hlbWEnXS52YWxpZGF0ZShmX2RvY3VtZW50KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Y2F0Y2ggKGVycm9ycykge1xuXHRcdFx0XHRcdFx0XHRcdFx0c2NoZW1hRXJyb3JzID0gZXJyb3JzO1xuXHRcdFx0XHRcdFx0XHRcdFx0c3VwcG9ydE1hbmFnZXIuZ2V0TWFpblNlcnZlcigpLmdldE1ldGhvZE1hbmFnZXIoKS5jYWxsTWV0aG9kSW50ZXJuYWwoJ2luc2VydEVycm9yTG9nJywgJ1NjaGVtYSBGYWlsZWQgb24gdXBkYXRlRG9jdW1lbnQgLSAnICsgY29sbGVjdGlvbiwgW3NjaGVtYUVycm9ycywgZl9kb2N1bWVudF0pO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRpZiAoc2NoZW1hRXJyb3JzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhzY2hlbWFFcnJvcnMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmVqZWN0KCdTY2hlbWEgRXJyb3JzJyk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKVsndmVyc2lvbkNvbGxlY3Rpb24nXSkuY3JlYXRlKHZlcnNpb25Eb2MpLnRoZW4oZG9jID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKVsndmVyc2lvbkNvbGxlY3Rpb24nXSkuZGVsZXRlTWFueSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JGFuZDogW1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eydfaWQuX2lkJzogY3VyckRvYy5faWR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eydfaWQuX192JzogeyRsdGU6IGN1cnJEb2MuX192IC0gNH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KS5leGVjKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9LCBlcnIgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhlcnIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdGxldCB1cGRhdGVzID0gZ2V0TW9uZ29VcGRhdGVzKGN1cnJEb2MsIGZfZG9jdW1lbnQsIHRydWUpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAodXBkYXRlcykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoY29sbGVjdGlvbikudXBkYXRlT25lKHtfaWQ6IGZfZG9jdW1lbnQuX2lkfSwgdXBkYXRlcywge3N0cmljdDogZmFsc2V9KS5leGVjKCkudGhlbihyZXMgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzLm5Nb2RpZmllZCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sIGVyciA9PiByZWplY3QoZXJyKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSgxKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGdldEJpbmFyeVNpemUoSlNPTi5zdHJpbmdpZnkoZl9kb2N1bWVudCkpIDwgMjAwMDAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdExvZ3MuY3JlYXRlKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfaWQ6IFR5cGVzLk9iamVjdElkKCkudG9IZXhTdHJpbmcoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkYXRlOiBuZXcgRGF0ZSgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdpbmZvJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJ1VwZGF0ZSBEb2N1bWVudCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZTogJ1VzZXI6ICcgKyB0aGlzLnVzZXIgKyAnLCBDb2xsZWN0aW9uIFR5cGU6ICcgKyBjb2xsZWN0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBheWxvYWQ6IGZfZG9jdW1lbnQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWV0aG9kOiAndXBkYXRlRG9jdW1lbnQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVzZXI6IHRoaXMudXNlcixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXNzYWdlSWQ6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdExvZ3MuY3JlYXRlKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfaWQ6IFR5cGVzLk9iamVjdElkKCkudG9IZXhTdHJpbmcoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkYXRlOiBuZXcgRGF0ZSgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdpbmZvJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJ1VwZGF0ZSBEb2N1bWVudCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZTogJ1VzZXI6ICcgKyB0aGlzLnVzZXIgKyAnLCBDb2xsZWN0aW9uIFR5cGU6ICcgKyBjb2xsZWN0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBheWxvYWQ6ICdUb28gQmlnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXRob2Q6ICd1cGRhdGVEb2N1bWVudCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXNlcjogdGhpcy51c2VyLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2VJZDogJydcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdpbnZhbGlkIHZlcnNpb24gLSAnICsgY29sbGVjdGlvbiwgY3VyckRvYy5fX3YsIGZfZG9jdW1lbnQuX192KTtcblxuXHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoY29sbGVjdGlvbilbJ3ZlcnNpb25Db2xsZWN0aW9uJ10pLmZpbmRPbmUoe1xuXHRcdFx0XHRcdFx0XHRcdFx0JGFuZDogW1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR7J19pZC5faWQnOiBjdXJyRG9jLl9pZH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9fdic6IGZfZG9jdW1lbnQuX192fVxuXHRcdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHRcdH0pLmxlYW4oKS5leGVjKChlcnJPbGREb2MsIG9sZERvYykgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IG5ld0N1cnJEb2NJZCA9IGN1cnJEb2MuX2lkO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAob2xkRG9jKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxldCB2ZXJzaW9uRG9jID0gZGVlcENvcHkoY3VyckRvYyk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmVyc2lvbkRvYy5faWQgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBjdXJyRG9jLl9pZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfX3Y6IGN1cnJEb2MuX192XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHVwZGF0ZWREb2MgPSBnZXRNb25nb01lcmdlVXBkYXRlZERvYyhmX2RvY3VtZW50LCBjdXJyRG9jLCBvbGREb2MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR1cGRhdGVkRG9jLl9pZCA9IG5ld0N1cnJEb2NJZDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dXBkYXRlZERvYy5fX3YrKztcblx0XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb24pLnJlcGxhY2VPbmUoe19pZDogbmV3Q3VyckRvY0lkfSwgdXBkYXRlZERvYykuZXhlYygpLnRoZW4ocmVzID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoUmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb24pWyd2ZXJzaW9uQ29sbGVjdGlvbiddKS5jcmVhdGUodmVyc2lvbkRvYykudGhlbihkb2MgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKVsndmVyc2lvbkNvbGxlY3Rpb24nXSkuZGVsZXRlTWFueSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCRhbmQ6IFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7J19pZC5faWQnOiB2ZXJzaW9uRG9jLl9pZC5faWR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9fdic6IHskbHRlOiB2ZXJzaW9uRG9jLl9pZC5fX3YgLSA0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkuZXhlYygpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJlcy5uTW9kaWZpZWQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LCBlcnIgPT4gcmVqZWN0KGVycikpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlamVjdCgnSW52YWxpZCBWZXJzaW9uIEFuZCBDb3VsZCBOb3QgRmluZCBIaXN0b3J5IC0gREI6ICcgKyBjdXJyRG9jLl9fdiArICcsIFRyeWluZyB0byB1cGRhdGUgd2l0aCA6JyArIGZfZG9jdW1lbnQuX192KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChlcnJEb2MpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdC8vIFVwZGF0ZXMgMSBkb2N1bWVudCdzIHByb3BzIChmcm9tIF9pZClcblx0XHQvLyBASW5wdXRzOiBjb2xsZWN0aW9uLCBkb2N1bWVudCBpZCwgZG9jdW1lbnQgdmVyc2lvbiwgdXBkYXRlIHBhcmFtdGVycyAoe3Byb3A6ICd4eHgnLCBkYXRhOiAneXl5fSlcblx0XHQvLyBAT3V0cHV0czogcmVzID0gMSAodXBkYXRlZCAxKSwgcmVzID0gMCAobm90IHVwZGF0ZWQpLCBlcnIgPSBub3QgdXBkYXRlZC93cm9uZyB2ZXJzaW9uXG5cdFx0Ly8gU2VhcmNoIGZvciBkb2MsIGNoZWNrIHZlcnNpb24sIGlmIGZvdW5kIHRoZW4gdHJ5IGFuZCB1cGRhdGUgcHJvcHNcblx0XHR1cGRhdGVEb2N1bWVudFByb3BzOiB7XG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGNvbGxlY3Rpb246IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fSxcblx0XHRcdFx0ZG9jX2lkOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHVwZGF0ZVBhcmFtczoge1xuXHRcdFx0XHRcdHR5cGU6IEFycmF5XG5cdFx0XHRcdH0sXG5cdFx0XHRcdCd1cGRhdGVQYXJhbXMuJCc6IHtcblx0XHRcdFx0XHR0eXBlOiBPYmplY3QsXG5cdFx0XHRcdFx0YmxhY2tib3g6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0ZG9jX192OiB7XG5cdFx0XHRcdFx0dHlwZTogTnVtYmVyXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGNvbGxlY3Rpb246IHN0cmluZywgZG9jX2lkOiBzdHJpbmcsIHVwZGF0ZVBhcmFtczogYW55W10sIGRvY19fdjogbnVtYmVyKSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb24pLmZpbmRPbmUoe19pZDogZG9jX2lkfSkubGVhbigpLmV4ZWMoKGVyckRvYywgY3VyckRvYzogRG9jdW1lbnQpID0+IHtcblx0XHRcdFx0XHRcdGlmIChjdXJyRG9jKSB7XG5cdFx0XHRcdFx0XHRcdGxldCBtb2RpZmllZERvYyA9IGRlZXBDb3B5KGN1cnJEb2MpO1xuXG5cdFx0XHRcdFx0XHRcdHVwZGF0ZVBhcmFtcy5mb3JFYWNoKGRhdGEgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdG1vZGlmaWVkRG9jW2RhdGEucHJvcF0gPSBkYXRhLmRhdGE7XG5cdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdGlmIChtb2RpZmllZERvYy5fX3YgPT09IGRvY19fdikge1xuXHRcdFx0XHRcdFx0XHRcdGxldCB2ZXJzaW9uRG9jID0gZGVlcENvcHkoY3VyckRvYyk7XG5cdFxuXHRcdFx0XHRcdFx0XHRcdHZlcnNpb25Eb2MuX2lkID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBjdXJyRG9jLl9pZCxcblx0XHRcdFx0XHRcdFx0XHRcdF9fdjogY3VyckRvYy5fX3Zcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRsZXQgc2NoZW1hRXJyb3JzID0gbnVsbDtcblx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKVsnc2ltcGxzY2hlbWEnXS52YWxpZGF0ZShtb2RpZmllZERvYyk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGNhdGNoIChlcnJvcnMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHNjaGVtYUVycm9ycyA9IGVycm9ycztcblx0XHRcdFx0XHRcdFx0XHRcdHN1cHBvcnRNYW5hZ2VyLmdldE1haW5TZXJ2ZXIoKS5nZXRNZXRob2RNYW5hZ2VyKCkuY2FsbE1ldGhvZEludGVybmFsKCdpbnNlcnRFcnJvckxvZycsICdTY2hlbWEgRmFpbGVkIG9uIHVwZGF0ZURvY3VtZW50UHJvcHMgLSAnICsgY29sbGVjdGlvbiwgW3NjaGVtYUVycm9ycywgbW9kaWZpZWREb2NdKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHNjaGVtYUVycm9ycykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coc2NoZW1hRXJyb3JzKTtcblx0XHRcdFx0XHRcdFx0XHRcdHJlamVjdCgnU2NoZW1hIEVycm9ycycpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoY29sbGVjdGlvbilbJ3ZlcnNpb25Db2xsZWN0aW9uJ10pLmNyZWF0ZSh2ZXJzaW9uRG9jKS50aGVuKGRvYyA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoY29sbGVjdGlvbilbJ3ZlcnNpb25Db2xsZWN0aW9uJ10pLmRlbGV0ZU1hbnkoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCRhbmQ6IFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9pZCc6IGN1cnJEb2MuX2lkfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9fdic6IHskbHRlOiBjdXJyRG9jLl9fdiAtIDR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fSkuZXhlYygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSwgZXJyID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgdXBkYXRlcyA9IGdldE1vbmdvVXBkYXRlcyhjdXJyRG9jLCBtb2RpZmllZERvYywgdHJ1ZSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdGlmICh1cGRhdGVzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKS51cGRhdGVPbmUoe19pZDogbW9kaWZpZWREb2MuX2lkfSwgdXBkYXRlcywge3N0cmljdDogZmFsc2V9KS5leGVjKCkudGhlbihyZXMgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzLm9rKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSwgZXJyID0+IHJlamVjdChlcnIpKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoZ2V0QmluYXJ5U2l6ZShKU09OLnN0cmluZ2lmeSh1cGRhdGVQYXJhbXMpKSA8IDIwMDAwMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRMb2dzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5mbycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICdVcGRhdGUgRG9jdW1lbnQgUHJvcHMnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdVc2VyOiAnICsgdGhpcy51c2VyICsgJywgQ29sbGVjdGlvbiBUeXBlOiAnICsgY29sbGVjdGlvbiArICcsIElkOiAnICsgZG9jX2lkICsgJywgJyArICdWZXJzaW9uOiAnICsgZG9jX192LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBheWxvYWQ6IHVwZGF0ZVBhcmFtcyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXRob2Q6ICd1cGRhdGVEb2N1bWVudFByb3BzJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VyOiB0aGlzLnVzZXIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZUlkOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRMb2dzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5mbycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICdVcGRhdGUgRG9jdW1lbnQgUHJvcHMnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdVc2VyOiAnICsgdGhpcy51c2VyICsgJywgQ29sbGVjdGlvbiBUeXBlOiAnICsgY29sbGVjdGlvbiArICcsIElkOiAnICsgZG9jX2lkICsgJywgJyArICdWZXJzaW9uOiAnICsgZG9jX192LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBheWxvYWQ6ICdUb28gQmlnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXRob2Q6ICd1cGRhdGVEb2N1bWVudFByb3BzJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VyOiB0aGlzLnVzZXIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZUlkOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2ludmFsaWQgdmVyc2lvbiAtICcgKyBjb2xsZWN0aW9uLCBjdXJyRG9jLl9fdiwgZG9jX192KTtcblxuXHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoY29sbGVjdGlvbilbJ3ZlcnNpb25Db2xsZWN0aW9uJ10pLmZpbmRPbmUoe1xuXHRcdFx0XHRcdFx0XHRcdFx0JGFuZDogW1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR7J19pZC5faWQnOiBjdXJyRG9jLl9pZH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9fdic6IGRvY19fdn1cblx0XHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0XHR9KS5sZWFuKCkuZXhlYygoZXJyT2xkRG9jLCBvbGREb2MpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGxldCBuZXdDdXJyRG9jSWQgPSBjdXJyRG9jLl9pZDtcblxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKG9sZERvYykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsZXQgdmVyc2lvbkRvYyA9IGRlZXBDb3B5KGN1cnJEb2MpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZlcnNpb25Eb2MuX2lkID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdF9pZDogY3VyckRvYy5faWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X192OiBjdXJyRG9jLl9fdlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxldCB1cGRhdGVkRG9jID0gZ2V0TW9uZ29NZXJnZVVwZGF0ZWREb2MobW9kaWZpZWREb2MsIGN1cnJEb2MsIG9sZERvYyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHVwZGF0ZWREb2MuX2lkID0gbmV3Q3VyckRvY0lkO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR1cGRhdGVkRG9jLl9fdisrO1xuXHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb24pLnJlcGxhY2VPbmUoe19pZDogbmV3Q3VyckRvY0lkfSwgdXBkYXRlZERvYykuZXhlYygpLnRoZW4ocmVzID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoUmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb24pWyd2ZXJzaW9uQ29sbGVjdGlvbiddKS5jcmVhdGUodmVyc2lvbkRvYykudGhlbihkb2MgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKVsndmVyc2lvbkNvbGxlY3Rpb24nXSkuZGVsZXRlTWFueSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCRhbmQ6IFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7J19pZC5faWQnOiB2ZXJzaW9uRG9jLl9pZC5faWR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9fdic6IHskbHRlOiB2ZXJzaW9uRG9jLl9pZC5fX3YgLSA0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkuZXhlYygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sIGVyciA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhlcnIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzLm5Nb2RpZmllZCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sIGVyciA9PiByZWplY3QoZXJyKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVqZWN0KCdJbnZhbGlkIFZlcnNpb24gQW5kIENvdWxkIE5vdCBGaW5kIEhpc3RvcnkgUHJvcHMgLSBEQjogJyArIGN1cnJEb2MuX192ICsgJywgVHJ5aW5nIHRvIHVwZGF0ZSB3aXRoIDonICsgbW9kaWZpZWREb2MuX192KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChlcnJEb2MpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdC8vIFJlbW92ZXMgMSBkb2N1bWVudCAoZnJvbSBfaWQpXG5cdFx0Ly8gQElucHV0czogY29sbGVjdGlvbiwgZG9jdW1lbnQgaWRcblx0XHQvLyBAT3V0cHV0czogcmVzID0gMSAoZGVsZXRlZCksIHJlcyA9IDAgKG5vdCBkZWxldGVkKSwgZXJyID0gbm90IGRlbGV0ZWRcblx0XHQvLyBTZWFyY2ggZm9yIGRvYywgaWYgZm91bmQgdGhlbiB0cnkgYW5kIHJlbW92ZVxuXHRcdHJlbW92ZURvY3VtZW50OiB7XG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGNvbGxlY3Rpb246IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fSxcblx0XHRcdFx0ZG9jX2lkOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGNvbGxlY3Rpb246IHN0cmluZywgZG9jX2lkOiBzdHJpbmcpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuXHRcdFx0XHRcdExvZ3MuY3JlYXRlKHtcblx0XHRcdFx0XHRcdF9pZDogVHlwZXMuT2JqZWN0SWQoKS50b0hleFN0cmluZygpLFxuXHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKSxcblx0XHRcdFx0XHRcdHR5cGU6ICdpbmZvJyxcblx0XHRcdFx0XHRcdHRpdGxlOiAnUmVtb3ZlIERvY3VtZW50Jyxcblx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdVc2VyOiAnICsgdGhpcy51c2VyICsgJywgQ29sbGVjdGlvbiBUeXBlOiAnICsgY29sbGVjdGlvbixcblx0XHRcdFx0XHRcdHBheWxvYWQ6IHtfaWQ6IGRvY19pZH0sXG5cdFx0XHRcdFx0XHRtZXRob2Q6ICdyZW1vdmVEb2N1bWVudCcsXG5cdFx0XHRcdFx0XHR1c2VyOiB0aGlzLnVzZXIsXG5cdFx0XHRcdFx0XHRtZXNzYWdlSWQ6ICcnXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoY29sbGVjdGlvbikuZGVsZXRlT25lKHtfaWQ6IGRvY19pZH0pLmV4ZWMoKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoZXJyKSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1x0XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXMub2spO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHJlbW92ZURvY3VtZW50V2l0aFF1ZXJ5OiB7XG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGNvbGxlY3Rpb246IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fSxcblx0XHRcdFx0cXVlcnk6IHtcblx0XHRcdFx0XHR0eXBlOiBPYmplY3QsXG5cdFx0XHRcdFx0YmxhY2tib3g6IHRydWVcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oY29sbGVjdGlvbjogc3RyaW5nLCBxdWVyeTogT2JqZWN0KSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cblx0XHRcdFx0XHRMb2dzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRfaWQ6IFR5cGVzLk9iamVjdElkKCkudG9IZXhTdHJpbmcoKSxcblx0XHRcdFx0XHRcdGRhdGU6IG5ldyBEYXRlKCksXG5cdFx0XHRcdFx0XHR0eXBlOiAnaW5mbycsXG5cdFx0XHRcdFx0XHR0aXRsZTogJ1JlbW92ZSBEb2N1bWVudCAoUXVlcnkpJyxcblx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdVc2VyOiAnICsgdGhpcy51c2VyICsgJywgQ29sbGVjdGlvbiBUeXBlOiAnICsgY29sbGVjdGlvbixcblx0XHRcdFx0XHRcdHBheWxvYWQ6IHtfaWQ6IHF1ZXJ5fSxcblx0XHRcdFx0XHRcdG1ldGhvZDogJ3JlbW92ZURvY3VtZW50V2l0aFF1ZXJ5Jyxcblx0XHRcdFx0XHRcdHVzZXI6IHRoaXMudXNlcixcblx0XHRcdFx0XHRcdG1lc3NhZ2VJZDogJydcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKS5kZWxldGVPbmUocXVlcnkpLmV4ZWMoKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoZXJyKSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1x0XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXMub2spO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufSJdfQ==
@@ -1 +1,2 @@
1
- "use strict";var __awaiter=this&&this.__awaiter||function(c,u,i,a){return new(i||(i=Promise))(function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){t.done?e(t.value):new i(function(e){e(t.value)}).then(n,o)}r((a=a.apply(c,u||[])).next())})},__generator=this&&this.__generator||function(n,o){var r,c,u,e,i={label:0,sent:function(){if(1&u[0])throw u[1];return u[1]},trys:[],ops:[]};return e={next:t(0),throw:t(1),return:t(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(t){return function(e){return function(t){if(r)throw new TypeError("Generator is already executing.");for(;i;)try{if(r=1,c&&(u=2&t[0]?c.return:t[0]?c.throw||((u=c.return)&&u.call(c),0):c.next)&&!(u=u.call(c,t[1])).done)return u;switch(c=0,u&&(t=[2&t[0],u.value]),t[0]){case 0:case 1:u=t;break;case 4:return i.label++,{value:t[1],done:!1};case 5:i.label++,c=t[1],t=[0];continue;case 7:t=i.ops.pop(),i.trys.pop();continue;default:if(!(u=0<(u=i.trys).length&&u[u.length-1])&&(6===t[0]||2===t[0])){i=0;continue}if(3===t[0]&&(!u||t[1]>u[0]&&t[1]<u[3])){i.label=t[1];break}if(6===t[0]&&i.label<u[1]){i.label=u[1],u=t;break}if(u&&i.label<u[2]){i.label=u[2],i.ops.push(t);break}u[2]&&i.ops.pop(),i.trys.pop();continue}t=o.call(n,i)}catch(e){t=[6,e],c=0}finally{r=u=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}([t,e])}}};Object.defineProperty(exports,"__esModule",{value:!0});var mongoose_1=require("mongoose"),counter_collection_1=require("../collections/counter.collection"),simpl_schema_1=require("simpl-schema"),__1=require("..");function loadCounterMethods(e){e.supportMethods({incCounter:{check:new simpl_schema_1.default({counterType:{type:String}}),function:function(o){var t=this;return new Promise(function(n,e){return __awaiter(t,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return[4,counter_collection_1.SupportCounters.findOne({type:o})];case 1:return e.sent()?[3,2]:(counter_collection_1.SupportCounters.create({_id:mongoose_1.Types.ObjectId().toHexString(),count:2,type:o}),n(1),[3,4]);case 2:return[4,counter_collection_1.SupportCounters.findOneAndUpdate({type:o},{$inc:{count:1}}).exec()];case 3:t=e.sent(),n(t.count),e.label=4;case 4:return[2]}})})})}},countCollectionWithQuery:{check:new simpl_schema_1.default({collectionType:{type:String},query:{type:Object,blackbox:!0}}),function:function(e,t){return __1.default.getSupportDB().model(e).collection.countDocuments(t)}},countQuery:{check:new simpl_schema_1.default({collectionType:{type:String},search:{type:String,optional:!0},filters:simpl_schema_1.default.oneOf({type:Array,optional:!0},{type:Object,blackbox:!0,optional:!0}),"filters.$":{type:Object,optional:!0,blackbox:!0},subType:{type:String,optional:!0}}),function:function(e,t,n){void 0===t&&(t=""),void 0===n&&(n=[]);var o={};if(t||n&&n.length){if(n&&n.length&&(o.$and=[],n.forEach(function(e){var t;o.$and.push(((t={})[e.prop]=e.data,t))})),t&&"support-tickets"===e){var r={$regex:".*"+(t||"")+".*",$options:"i"};o.$and?o.$and.push({$or:[{support_ticket_number_string:r},{date_created_string:r},{status:r},{user_created:r}]}):o={$or:[{support_ticket_number_string:r},{date_created_string:r},{status:r},{user_created:r}]}}}else o={};return __1.default.getSupportDB().model(e).collection.countDocuments(o)}},countCollection:{check:new simpl_schema_1.default({collectionType:{type:String}}),function:function(e){return __1.default.getSupportDB().model(e).collection.countDocuments()}}})}exports.loadCounterMethods=loadCounterMethods;
1
+ "use strict";var __awaiter=this&&this.__awaiter||function(c,u,i,a){return new(i||(i=Promise))(function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){t.done?e(t.value):new i(function(e){e(t.value)}).then(n,o)}r((a=a.apply(c,u||[])).next())})},__generator=this&&this.__generator||function(n,o){var r,c,u,e,i={label:0,sent:function(){if(1&u[0])throw u[1];return u[1]},trys:[],ops:[]};return e={next:t(0),throw:t(1),return:t(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(t){return function(e){return function(t){if(r)throw new TypeError("Generator is already executing.");for(;i;)try{if(r=1,c&&(u=2&t[0]?c.return:t[0]?c.throw||((u=c.return)&&u.call(c),0):c.next)&&!(u=u.call(c,t[1])).done)return u;switch(c=0,u&&(t=[2&t[0],u.value]),t[0]){case 0:case 1:u=t;break;case 4:return i.label++,{value:t[1],done:!1};case 5:i.label++,c=t[1],t=[0];continue;case 7:t=i.ops.pop(),i.trys.pop();continue;default:if(!(u=0<(u=i.trys).length&&u[u.length-1])&&(6===t[0]||2===t[0])){i=0;continue}if(3===t[0]&&(!u||t[1]>u[0]&&t[1]<u[3])){i.label=t[1];break}if(6===t[0]&&i.label<u[1]){i.label=u[1],u=t;break}if(u&&i.label<u[2]){i.label=u[2],i.ops.push(t);break}u[2]&&i.ops.pop(),i.trys.pop();continue}t=o.call(n,i)}catch(e){t=[6,e],c=0}finally{r=u=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}([t,e])}}};Object.defineProperty(exports,"__esModule",{value:!0});var mongoose_1=require("mongoose"),counter_collection_1=require("../collections/counter.collection"),simpl_schema_1=require("simpl-schema"),__1=require("..");function loadCounterMethods(e){e.supportMethods({incCounter:{check:new simpl_schema_1.default({counterType:{type:String}}),function:function(o){var t=this;return new Promise(function(n,e){return __awaiter(t,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return[4,counter_collection_1.SupportCounters.findOne({type:o})];case 1:return e.sent()?[3,2]:(counter_collection_1.SupportCounters.create({_id:mongoose_1.Types.ObjectId().toHexString(),count:2,type:o}),n(1),[3,4]);case 2:return[4,counter_collection_1.SupportCounters.findOneAndUpdate({type:o},{$inc:{count:1}}).exec()];case 3:t=e.sent(),n(t.count),e.label=4;case 4:return[2]}})})})}},countCollectionWithQuery:{check:new simpl_schema_1.default({collectionType:{type:String},query:{type:Object,blackbox:!0}}),function:function(e,t){return __1.default.getSupportDB().model(e).collection.countDocuments(t)}},countQuery:{check:new simpl_schema_1.default({collectionType:{type:String},search:{type:String,optional:!0},filters:simpl_schema_1.default.oneOf({type:Array,optional:!0},{type:Object,blackbox:!0,optional:!0}),"filters.$":{type:Object,optional:!0,blackbox:!0},subType:{type:String,optional:!0}}),function:function(e,t,n){void 0===t&&(t=""),void 0===n&&(n=[]);var o={};if(t||n&&n.length){if(n&&n.length&&(o.$and=[],n.forEach(function(e){var t;o.$and.push(((t={})[e.prop]=e.data,t))})),t&&"support-tickets"===e){var r={$regex:".*"+(t||"")+".*",$options:"i"};o.$and?o.$and.push({$or:[{support_ticket_number_string:r},{date_created_string:r},{status:r},{user_created:r}]}):o={$or:[{support_ticket_number_string:r},{date_created_string:r},{status:r},{user_created:r}]}}}else o={};return __1.default.getSupportDB().model(e).collection.countDocuments(o)}},countCollection:{check:new simpl_schema_1.default({collectionType:{type:String}}),function:function(e){return __1.default.getSupportDB().model(e).collection.countDocuments()}}})}exports.loadCounterMethods=loadCounterMethods;
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdXBwb3J0LW1ldGhvZHMvY291bnRlcnMudHMiXSwibmFtZXMiOlsibW9uZ29vc2VfMSIsInJlcXVpcmUiLCJjb3VudGVyX2NvbGxlY3Rpb25fMSIsInNpbXBsX3NjaGVtYV8xIiwiX18xIiwibG9hZENvdW50ZXJNZXRob2RzIiwic3VwcG9ydE1hbmFnZXIiLCJzdXBwb3J0TWV0aG9kcyIsImluY0NvdW50ZXIiLCJjaGVjayIsImRlZmF1bHQiLCJjb3VudGVyVHlwZSIsInR5cGUiLCJTdHJpbmciLCJmdW5jdGlvbiIsIl90aGlzIiwidGhpcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiX19hd2FpdGVyIiwiU3VwcG9ydENvdW50ZXJzIiwiZmluZE9uZSIsIl9hIiwic2VudCIsImNyZWF0ZSIsIl9pZCIsIlR5cGVzIiwiT2JqZWN0SWQiLCJ0b0hleFN0cmluZyIsImNvdW50IiwiZmluZE9uZUFuZFVwZGF0ZSIsIiRpbmMiLCJleGVjIiwibmV3Q291bnQiLCJjb3VudENvbGxlY3Rpb25XaXRoUXVlcnkiLCJjb2xsZWN0aW9uVHlwZSIsInF1ZXJ5IiwiT2JqZWN0IiwiYmxhY2tib3giLCJnZXRTdXBwb3J0REIiLCJtb2RlbCIsImNvbGxlY3Rpb24iLCJjb3VudERvY3VtZW50cyIsImNvdW50UXVlcnkiLCJzZWFyY2giLCJvcHRpb25hbCIsImZpbHRlcnMiLCJvbmVPZiIsIkFycmF5IiwiZmlsdGVycy4kIiwic3ViVHlwZSIsImxlbmd0aCIsImZvckVhY2giLCJmaWx0ZXIiLCJwdXNoIiwic2VhcmNoUmVnRXgiLCIkcmVnZXgiLCIkb3B0aW9ucyIsIiRvciIsInN1cHBvcnRfdGlja2V0X251bWJlcl9zdHJpbmciLCJkYXRlX2NyZWF0ZWRfc3RyaW5nIiwic3RhdHVzIiwidXNlcl9jcmVhdGVkIiwiY291bnRDb2xsZWN0aW9uIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Im83Q0FBQSxJQUFBQSxXQUFBQyxRQUFBLFlBQ0FDLHFCQUFB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V0MscUJBNUkzRXNCLFFBQUE1RCxtQkFBQUEiLCJmaWxlIjoic3VwcG9ydC1tZXRob2RzL2NvdW50ZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZXMgfSBmcm9tICdtb25nb29zZSc7XG5pbXBvcnQgeyBTdXBwb3J0Q291bnRlcnMgfSBmcm9tICcuLi9jb2xsZWN0aW9ucy9jb3VudGVyLmNvbGxlY3Rpb24nO1xuaW1wb3J0IFNpbXBsZVNjaGVtYSBmcm9tICdzaW1wbC1zY2hlbWEnO1xuaW1wb3J0IHsgU3VwcG9ydE1hbmFnZXIgfSBmcm9tICcuLi9tYW5hZ2Vycy9zdXBwb3J0Lm1hbmFnZXInO1xuaW1wb3J0IFJlc29sdmVJT1NlcnZlciBmcm9tICcuLic7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQ291bnRlck1ldGhvZHMoc3VwcG9ydE1hbmFnZXI6IFN1cHBvcnRNYW5hZ2VyKSB7XG5cdHN1cHBvcnRNYW5hZ2VyLnN1cHBvcnRNZXRob2RzKHtcblx0XHRpbmNDb3VudGVyOiB7XG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGNvdW50ZXJUeXBlOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGNvdW50ZXJUeXBlOiBzdHJpbmcpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdFx0XHRsZXQgY291bnRlciA9IGF3YWl0IFN1cHBvcnRDb3VudGVycy5maW5kT25lKHt0eXBlOiBjb3VudGVyVHlwZX0pO1xuXG5cdFx0XHRcdFx0aWYgKCFjb3VudGVyKSB7XG5cdFx0XHRcdFx0XHRTdXBwb3J0Q291bnRlcnMuY3JlYXRlKHtcblx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdGNvdW50OiAyLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiBjb3VudGVyVHlwZVxuXHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdHJlc29sdmUoMSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0bGV0IG5ld0NvdW50ID0gYXdhaXQgU3VwcG9ydENvdW50ZXJzLmZpbmRPbmVBbmRVcGRhdGUoe3R5cGU6IGNvdW50ZXJUeXBlfSwgeyRpbmM6IHtjb3VudDogMX19KS5leGVjKCk7XG5cblx0XHRcdFx0XHRcdHJlc29sdmUobmV3Q291bnQuY291bnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRjb3VudENvbGxlY3Rpb25XaXRoUXVlcnk6IHtcblx0XHRcdGNoZWNrOiBuZXcgU2ltcGxlU2NoZW1hKHtcblx0XHRcdFx0Y29sbGVjdGlvblR5cGU6IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fSxcblx0XHRcdFx0cXVlcnk6IHtcblx0XHRcdFx0XHR0eXBlOiBPYmplY3QsXG5cdFx0XHRcdFx0YmxhY2tib3g6IHRydWVcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oY29sbGVjdGlvblR5cGU6IHN0cmluZywgcXVlcnk6IE9iamVjdCkge1x0XG5cdFx0XHRcdHJldHVybiBSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoY29sbGVjdGlvblR5cGUpLmNvbGxlY3Rpb24uY291bnREb2N1bWVudHMocXVlcnkpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Y291bnRRdWVyeToge1xuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHRjb2xsZWN0aW9uVHlwZToge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRzZWFyY2g6IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRcdFx0b3B0aW9uYWw6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0ZmlsdGVyczogU2ltcGxlU2NoZW1hLm9uZU9mKFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHR5cGU6IEFycmF5LFxuXHRcdFx0XHRcdFx0b3B0aW9uYWw6IHRydWVcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHR5cGU6IE9iamVjdCxcblx0XHRcdFx0XHRcdGJsYWNrYm94OiB0cnVlLFxuXHRcdFx0XHRcdFx0b3B0aW9uYWw6IHRydWVcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCksXG5cdFx0XHRcdCdmaWx0ZXJzLiQnOiB7XG5cdFx0XHRcdFx0dHlwZTogT2JqZWN0LFxuXHRcdFx0XHRcdG9wdGlvbmFsOiB0cnVlLFxuXHRcdFx0XHRcdGJsYWNrYm94OiB0cnVlXG5cdFx0XHRcdH0sIFxuXHRcdFx0XHRzdWJUeXBlOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdFx0XHRcdG9wdGlvbmFsOiB0cnVlXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGNvbGxlY3Rpb25UeXBlOiBzdHJpbmcsIHNlYXJjaCA9ICcnLCBmaWx0ZXJzID0gW10pIHtcblx0XHRcdFx0bGV0IHF1ZXJ5ID0ge307XG5cblx0XHRcdFx0aWYgKCFzZWFyY2ggJiYgKCFmaWx0ZXJzIHx8ICFmaWx0ZXJzLmxlbmd0aCkpIHtcblx0XHRcdFx0XHRxdWVyeSA9IHt9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdGlmIChmaWx0ZXJzICYmIGZpbHRlcnMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRxdWVyeVsnJGFuZCddID0gW107XG5cblx0XHRcdFx0XHRcdGZpbHRlcnMuZm9yRWFjaChmaWx0ZXIgPT4ge1xuXHRcdFx0XHRcdFx0XHRxdWVyeVsnJGFuZCddLnB1c2goe1tmaWx0ZXJbJ3Byb3AnXV06IGZpbHRlclsnZGF0YSddfSk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoc2VhcmNoICYmIGNvbGxlY3Rpb25UeXBlID09PSAnc3VwcG9ydC10aWNrZXRzJykge1xuXHRcdFx0XHRcdFx0Y29uc3Qgc2VhcmNoUmVnRXggPSB7ICckcmVnZXgnOiAnLionICsgKHNlYXJjaCB8fCAnJykgKyAnLionLCAnJG9wdGlvbnMnOiAnaScgfTtcblxuXHRcdFx0XHRcdFx0aWYgKHF1ZXJ5WyckYW5kJ10pIHtcblx0XHRcdFx0XHRcdFx0cXVlcnlbJyRhbmQnXS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHQkb3I6IFtcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0c3VwcG9ydF90aWNrZXRfbnVtYmVyX3N0cmluZzogc2VhcmNoUmVnRXhcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRhdGVfY3JlYXRlZF9zdHJpbmc6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRzdGF0dXM6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VyX2NyZWF0ZWQ6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRxdWVyeSA9IHtcblx0XHRcdFx0XHRcdFx0XHQkb3I6IFtcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0c3VwcG9ydF90aWNrZXRfbnVtYmVyX3N0cmluZzogc2VhcmNoUmVnRXhcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRhdGVfY3JlYXRlZF9zdHJpbmc6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRzdGF0dXM6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VyX2NyZWF0ZWQ6IHNlYXJjaFJlZ0V4XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFxuXHRcdFx0XHRyZXR1cm4gUmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb25UeXBlKS5jb2xsZWN0aW9uLmNvdW50RG9jdW1lbnRzKHF1ZXJ5KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGNvdW50Q29sbGVjdGlvbjoge1xuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHRjb2xsZWN0aW9uVHlwZToge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdGZ1bmN0aW9uOiBmdW5jdGlvbihjb2xsZWN0aW9uVHlwZTogc3RyaW5nKSB7XHRcblx0XHRcdFx0cmV0dXJuIFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uVHlwZSkuY29sbGVjdGlvbi5jb3VudERvY3VtZW50cygpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG59Il19
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var simpl_schema_1=require("simpl-schema"),support_ticket_collection_1=require("../collections/support-ticket.collection");function loadSupportMethods(t){t.supportMethods({testSupportMethods:{check:new simpl_schema_1.default({test:{type:String}}),function:function(t){return support_ticket_collection_1.SupportTickets.findOne({}).exec()}}})}exports.loadSupportMethods=loadSupportMethods;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var simpl_schema_1=require("simpl-schema"),support_ticket_collection_1=require("../collections/support-ticket.collection");function loadSupportMethods(t){t.supportMethods({testSupportMethods:{check:new simpl_schema_1.default({test:{type:String}}),function:function(t){return support_ticket_collection_1.SupportTickets.findOne({}).exec()}}})}exports.loadSupportMethods=loadSupportMethods;
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdXBwb3J0LW1ldGhvZHMvc3VwcG9ydC50cyJdLCJuYW1lcyI6WyJzaW1wbF9zY2hlbWFfMSIsInJlcXVpcmUiLCJzdXBwb3J0X3RpY2tldF9jb2xsZWN0aW9uXzEiLCJsb2FkU3VwcG9ydE1ldGhvZHMiLCJzdXBwb3J0TWFuYWdlciIsInN1cHBvcnRNZXRob2RzIiwidGVzdFN1cHBvcnRNZXRob2RzIiwiY2hlY2siLCJkZWZhdWx0IiwidGVzdCIsInR5cGUiLCJTdHJpbmciLCJmdW5jdGlvbiIsIlN1cHBvcnRUaWNrZXRzIiwiZmluZE9uZSIsImV4ZWMiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoib0VBQUEsSUFBQUEsZUFBQUMsUUFBQSxnQkFFQUMsNEJBQUFELFFBQUEsNENBR0EsU0FBZ0JFLG1CQUFtQkMsR0FDbENBLEVBQWVDLGVBQWUsQ0FDN0JDLG1CQUFvQixDQUNuQkMsTUFBTyxJQUFJUCxlQUFBUSxRQUFhLENBQ3ZCQyxLQUFNLENBQ0xDLEtBQU1DLFVBR1JDLFNBQVUsU0FBU0gsR0FDbEIsT0FBT1AsNEJBQUFXLGVBQWVDLFFBQVEsSUFBSUMsV0FUdENDLFFBQUFiLG1CQUFBQSIsImZpbGUiOiJzdXBwb3J0LW1ldGhvZHMvc3VwcG9ydC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTaW1wbGVTY2hlbWEgZnJvbSAnc2ltcGwtc2NoZW1hJztcbmltcG9ydCB7IFN1cHBvcnRNYW5hZ2VyIH0gZnJvbSAnLi4vbWFuYWdlcnMvc3VwcG9ydC5tYW5hZ2VyJztcbmltcG9ydCB7IFN1cHBvcnRUaWNrZXRzIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvc3VwcG9ydC10aWNrZXQuY29sbGVjdGlvbic7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRTdXBwb3J0TWV0aG9kcyhzdXBwb3J0TWFuYWdlcjogU3VwcG9ydE1hbmFnZXIpIHtcblx0c3VwcG9ydE1hbmFnZXIuc3VwcG9ydE1ldGhvZHMoe1xuXHRcdHRlc3RTdXBwb3J0TWV0aG9kczoge1xuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHR0ZXN0OiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKHRlc3QpIHtcblx0XHRcdFx0cmV0dXJuIFN1cHBvcnRUaWNrZXRzLmZpbmRPbmUoe30pLmV4ZWMoKTtcblx0XHRcdH1cblx0XHR9LFxuXHR9KTtcbn0iXX0=
package/util/common.js CHANGED
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var rusDiff=require("rus-diff"),deepDiff=require("deep-diff").diff;function deepCopy(e){return JSON.parse(JSON.stringify(e),dateReviver)}function dateReviver(e,t){if("string"==typeof t){var r=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(t);if(r)return new Date(Date.UTC(+r[1],+r[2]-1,+r[3],+r[4],+r[5],+r[6].split(".")[0],+r[6].split(".")[1]))}return t}function getMongoUpdates(e,t,r){e.createdAt&&(t.createdAt=e.createdAt),e.updatedAt&&(t.updatedAt=e.updatedAt);var n=rusDiff.diff(e,t);return n?(n.$set&&!Object.keys(n.$set).length&&delete n.$set,r&&(n.$inc={__v:1})):r&&(n={$inc:{__v:1}}),n}function getMongoMergeUpdatedDoc(e,t,r){var n=deepCopy(r);n.__v=t.__v;var i=getDeepDiff(r,t);return applyMongoUpdate(n,mergeUpdates(getDeepDiff(r,e),i)),n}function mergeUpdates(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n={$set:{},$unset:{},$inc:{},$push:{},$pull:{}};return e.filter(function(e){return e}).forEach(function(e){e.forEach(function(t){for(var e=t.path[0],r=1;r<t.path.length;r++)e+="."+t.path[r];"E"===t.kind?"number"==typeof t.rhs&&e.endsWith("quantity")?n.$inc[e]?n.$inc[e]+=t.rhs-t.lhs:n.$inc[e]=t.rhs-t.lhs:n.$set[e]=t.rhs:"A"===t.kind&&("N"===t.item.kind?n.$push[e]&&JSON.stringify(n.$push[e])===JSON.stringify(t.item.rhs)||(n.$push[e]||(n.$push[e]=[]),n.$push[e].filter(function(e){return JSON.stringify(e)===JSON.stringify(t.item.rhs)}).length||n.$push[e].push(t.item.rhs)):"D"===t.item.kind?n.$pull[e]&&JSON.stringify(n.$pull[e])===JSON.stringify(t.item.lhs)||(n.$pull[e]||(n.$pull[e]=[]),n.$pull[e].filter(function(e){return JSON.stringify(e)===JSON.stringify(t.item.lhs)}).length||n.$pull[e].push(t.item.lhs)):"E"===t.item.kind&&console.log("Condition E not satisfied."))})}),n}function getDeepDiff(e,t){return delete e._id,delete e.__v,e.updatedAt&&delete e.updatedAt,e.createdAt&&delete e.createdAt,delete t._id,delete t.__v,t.updatedAt&&delete t.updatedAt,t.createdAt&&delete t.createdAt,deepDiff(e,t)}function applyMongoUpdate(e,t){var r,n,i,o,l,f,u,s,d,p,a,c,g,h,v,$,y,D,m,w,A,S,_,U,M,O,N,E;if(r=deepCopy(e),null!=t){if(null!=t.$rename)for(n in c=t.$rename){if(E=c[n],p=(g=resolve(e,n))[0],f=g[1],a=(h=resolve(e,E))[0],u=h[1],null==p||1!==f.length)throw new Error(p+"/"+f+" - couldn't resolve second for "+e+" "+n);if(null==a||1!==u.length)throw new Error(a+"/"+u+" - couldn't resolve first for "+e+" "+E);a[u[0]]=p[f[0]],delete p[f[0]]}if(null!=t.$set)for(n in v=t.$set){if(E=v[n],d=($=resolve(e,n,{force:!0}))[0],l=$[1],null==d||1!==l.length)throw new Error(d+"/"+l+" - couldn't set for "+e+" "+n);d[l[0]]=E}if(null!=t.$inc)for(n in y=t.$inc){if(E=y[n],d=(D=resolve(e,n,{force:!0}))[0],l=D[1],null==d||1!==l.length)throw new Error(d+"/"+l+" - couldn't set for "+e+" "+n);null==d[s=l[0]]&&(d[s]=0),d[l[0]]+=E}if(null!=t.$unset)for(n in m=t.$unset){if(E=m[n],d=(w=resolve(e,n))[0],l=w[1],null==d||1!==l.length)throw new Error(d+"/"+l+" - couldn't unset for "+e+" "+n);delete d[l[0]]}if(null!=t.$pull)for(i in A=t.$pull)for(var J=(S=A[i]).length-1;0<=J;J--){if(o=S[J],d=(_=resolve(e,i))[0],l=_[1],a=(U=resolve(r,i))[0],u=U[1],null==d||1!==l.length)throw new Error(d+"/"+l+" - couldn't unset for "+e+" "+i);d[l[0]].splice(a[u[0]].findIndex(function(e){return JSON.stringify(e)===JSON.stringify(o)}),1)}if(null!=t.$push)for(i in M=t.$push)for(J=(O=M[i]).length-1;0<=J;J--){if(o=O[J],d=(N=resolve(e,i))[0],l=N[1],null==d||1!==l.length)throw new Error(d+"/"+l+" - couldn't unset for "+e+" "+i);d[l[0]].push(o)}}return e}function resolve(e,t,r){var n,i,o,l;if(null==r&&(r={}),o=[],0<(l=arrize(t)).length&&o.unshift(l.pop()),null!==(n=e))for(;void 0!==(i=l.shift());){if(void 0===n[i]){l.unshift(i);break}n=n[i]}if(r.force)for(;void 0!==(i=l.shift());)"number"==typeof l[0]||0===l.length&&"number"==typeof o[0]?n[i]=[]:n[i]={},n=n[i];else for(;void 0!==(i=l.pop());)o.unshift(i);return[n,o]}function arrize(e,t){return null==t&&(t="."),function(){if(Array.isArray(e))return e.slice(0);switch(e){case void 0:case null:case!1:case"":return[];default:return e.toString().split(t)}}().map(function(e){switch(e){case void 0:case null:case!1:case"":return null;default:return e.toString()}}).filter(function(e){return null!=e})}function getBinarySize(e){return e?Buffer.byteLength(e,"utf8"):0}exports.deepCopy=deepCopy,exports.dateReviver=dateReviver,exports.getMongoUpdates=getMongoUpdates,exports.getMongoMergeUpdatedDoc=getMongoMergeUpdatedDoc,exports.mergeUpdates=mergeUpdates,exports.getDeepDiff=getDeepDiff,exports.applyMongoUpdate=applyMongoUpdate,exports.getBinarySize=getBinarySize;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var rusDiff=require("rus-diff"),deepDiff=require("deep-diff").diff;function deepCopy(e){return JSON.parse(JSON.stringify(e),dateReviver)}function dateReviver(e,t){if("string"==typeof t){var r=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(t);if(r)return new Date(Date.UTC(+r[1],+r[2]-1,+r[3],+r[4],+r[5],+r[6].split(".")[0],+r[6].split(".")[1]))}return t}function getMongoUpdates(e,t,r){e.createdAt&&(t.createdAt=e.createdAt),e.updatedAt&&(t.updatedAt=e.updatedAt);var n=rusDiff.diff(e,t);return n?(n.$set&&!Object.keys(n.$set).length&&delete n.$set,r&&(n.$inc={__v:1})):r&&(n={$inc:{__v:1}}),n}function getMongoMergeUpdatedDoc(e,t,r){var n=deepCopy(r);n.__v=t.__v;var i=getDeepDiff(r,t);return applyMongoUpdate(n,mergeUpdates(getDeepDiff(r,e),i)),n}function mergeUpdates(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n={$set:{},$unset:{},$inc:{},$push:{},$pull:{}};return e.filter(function(e){return e}).forEach(function(e){e.forEach(function(t){for(var e=t.path[0],r=1;r<t.path.length;r++)e+="."+t.path[r];"E"===t.kind?"number"==typeof t.rhs&&e.endsWith("quantity")?n.$inc[e]?n.$inc[e]+=t.rhs-t.lhs:n.$inc[e]=t.rhs-t.lhs:n.$set[e]=t.rhs:"A"===t.kind&&("N"===t.item.kind?n.$push[e]&&JSON.stringify(n.$push[e])===JSON.stringify(t.item.rhs)||(n.$push[e]||(n.$push[e]=[]),n.$push[e].filter(function(e){return JSON.stringify(e)===JSON.stringify(t.item.rhs)}).length||n.$push[e].push(t.item.rhs)):"D"===t.item.kind?n.$pull[e]&&JSON.stringify(n.$pull[e])===JSON.stringify(t.item.lhs)||(n.$pull[e]||(n.$pull[e]=[]),n.$pull[e].filter(function(e){return JSON.stringify(e)===JSON.stringify(t.item.lhs)}).length||n.$pull[e].push(t.item.lhs)):"E"===t.item.kind&&console.log("Condition E not satisfied."))})}),n}function getDeepDiff(e,t){return delete e._id,delete e.__v,e.updatedAt&&delete e.updatedAt,e.createdAt&&delete e.createdAt,delete t._id,delete t.__v,t.updatedAt&&delete t.updatedAt,t.createdAt&&delete t.createdAt,deepDiff(e,t)}function applyMongoUpdate(e,t){var r,n,i,o,l,f,u,s,d,p,a,c,g,h,v,$,y,D,m,w,A,S,_,U,M,O,N,E;if(r=deepCopy(e),null!=t){if(null!=t.$rename)for(n in c=t.$rename){if(E=c[n],p=(g=resolve(e,n))[0],f=g[1],a=(h=resolve(e,E))[0],u=h[1],null==p||1!==f.length)throw new Error(p+"/"+f+" - couldn't resolve second for "+e+" "+n);if(null==a||1!==u.length)throw new Error(a+"/"+u+" - couldn't resolve first for "+e+" "+E);a[u[0]]=p[f[0]],delete p[f[0]]}if(null!=t.$set)for(n in v=t.$set){if(E=v[n],d=($=resolve(e,n,{force:!0}))[0],l=$[1],null==d||1!==l.length)throw new Error(d+"/"+l+" - couldn't set for "+e+" "+n);d[l[0]]=E}if(null!=t.$inc)for(n in y=t.$inc){if(E=y[n],d=(D=resolve(e,n,{force:!0}))[0],l=D[1],null==d||1!==l.length)throw new Error(d+"/"+l+" - couldn't set for "+e+" "+n);null==d[s=l[0]]&&(d[s]=0),d[l[0]]+=E}if(null!=t.$unset)for(n in m=t.$unset){if(E=m[n],d=(w=resolve(e,n))[0],l=w[1],null==d||1!==l.length)throw new Error(d+"/"+l+" - couldn't unset for "+e+" "+n);delete d[l[0]]}if(null!=t.$pull)for(i in A=t.$pull)for(var J=(S=A[i]).length-1;0<=J;J--){if(o=S[J],d=(_=resolve(e,i))[0],l=_[1],a=(U=resolve(r,i))[0],u=U[1],null==d||1!==l.length)throw new Error(d+"/"+l+" - couldn't unset for "+e+" "+i);d[l[0]].splice(a[u[0]].findIndex(function(e){return JSON.stringify(e)===JSON.stringify(o)}),1)}if(null!=t.$push)for(i in M=t.$push)for(J=(O=M[i]).length-1;0<=J;J--){if(o=O[J],d=(N=resolve(e,i))[0],l=N[1],null==d||1!==l.length)throw new Error(d+"/"+l+" - couldn't unset for "+e+" "+i);d[l[0]].push(o)}}return e}function resolve(e,t,r){var n,i,o,l;if(null==r&&(r={}),o=[],0<(l=arrize(t)).length&&o.unshift(l.pop()),null!==(n=e))for(;void 0!==(i=l.shift());){if(void 0===n[i]){l.unshift(i);break}n=n[i]}if(r.force)for(;void 0!==(i=l.shift());)"number"==typeof l[0]||0===l.length&&"number"==typeof o[0]?n[i]=[]:n[i]={},n=n[i];else for(;void 0!==(i=l.pop());)o.unshift(i);return[n,o]}function arrize(e,t){return null==t&&(t="."),function(){if(Array.isArray(e))return e.slice(0);switch(e){case void 0:case null:case!1:case"":return[];default:return e.toString().split(t)}}().map(function(e){switch(e){case void 0:case null:case!1:case"":return null;default:return e.toString()}}).filter(function(e){return null!=e})}function getBinarySize(e){return e?Buffer.byteLength(e,"utf8"):0}exports.deepCopy=deepCopy,exports.dateReviver=dateReviver,exports.getMongoUpdates=getMongoUpdates,exports.getMongoMergeUpdatedDoc=getMongoMergeUpdatedDoc,exports.mergeUpdates=mergeUpdates,exports.getDeepDiff=getDeepDiff,exports.applyMongoUpdate=applyMongoUpdate,exports.getBinarySize=getBinarySize;
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2NvbW1vbi50cyJdLCJuYW1lcyI6WyJydXNEaWZmIiwicmVxdWlyZSIsImRlZXBEaWZmIiwiZGlmZiIsImRlZXBDb3B5Iiwib2JqIiwiSlNPTiIsInBhcnNlIiwic3RyaW5naWZ5IiwiZGF0ZVJldml2ZXIiLCJrZXkiLCJ2YWx1ZSIsImEiLCJleGVjIiwiRGF0ZSIsIlVUQyIsInNwbGl0IiwiZ2V0TW9uZ29VcGRhdGVzIiwiY3VyckRvYyIsIm1vZGlmaWVkRG9jIiwiaW5jVmVyc2lvbiIsImNyZWF0ZWRBdCIsInVwZGF0ZWRBdCIsInVwZGF0ZXMiLCIkc2V0IiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsIiRpbmMiLCJfX3YiLCJnZXRNb25nb01lcmdlVXBkYXRlZERvYyIsImZfZG9jIiwiY3VycmVudERvYyIsIm9sZERvYyIsInVwRG9jIiwiZGlmZl8xIiwiZ2V0RGVlcERpZmYiLCJhcHBseU1vbmdvVXBkYXRlIiwibWVyZ2VVcGRhdGVzIiwidXBkYXRlc1RvTWVyZ2UiLCJfaSIsImFyZ3VtZW50cyIsIm1lcmdlZCIsIiR1bnNldCIsIiRwdXNoIiwiJHB1bGwiLCJmaWx0ZXIiLCJmb3JFYWNoIiwiYW5VcGRhdGUiLCJjaGFuZ2UiLCJwYXRoIiwiaSIsImtpbmQiLCJlbmRzV2l0aCIsInJocyIsImxocyIsIml0ZW0iLCJwdXNoIiwiY29uc29sZSIsImxvZyIsImRvYzEiLCJkb2MyIiwiX2lkIiwidURvYyIsImRlbHRhIiwib3JpZyIsImsiLCJwYXRoayIsInZrIiwibiIsIm4xIiwibjIiLCJuYW1lIiwibyIsIm8xIiwibzIiLCJyZWYiLCJyZWYxIiwicmVmMiIsInJlZjMiLCJyZWY0IiwicmVmNSIsInJlZjYiLCJyZWY3IiwicmVmOCIsInJlZjlhIiwicmVmOWIiLCJyZWYxMCIsInJlZjExIiwicmVmMTJhIiwicmVmMTJiIiwicmVmMTMiLCJ2IiwiJHJlbmFtZSIsInJlc29sdmUiLCJFcnJvciIsImZvcmNlIiwia2siLCJzcGxpY2UiLCJmaW5kSW5kZXgiLCJ6Iiwib3B0aW9ucyIsImUiLCJsYXN0Iiwic3RhY2siLCJhcnJpemUiLCJ1bnNoaWZ0IiwicG9wIiwic2hpZnQiLCJnbHVlIiwiQXJyYXkiLCJpc0FycmF5Iiwic2xpY2UiLCJ0b1N0cmluZyIsIm1hcCIsImdldEJpbmFyeVNpemUiLCJzdHJpbmciLCJCdWZmZXIiLCJieXRlTGVuZ3RoIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Im9FQUFBLElBQUlBLFFBQVVDLFFBQVEsWUFDbEJDLFNBQVdELFFBQVEsYUFBYUUsS0FFcEMsU0FBZ0JDLFNBQVNDLEdBQ3hCLE9BQU9DLEtBQUtDLE1BQU1ELEtBQUtFLFVBQVVILEdBQU1JLGFBR3hDLFNBQWdCQSxZQUFZQyxFQUFLQyxHQUNoQyxHQUFxQixpQkFBVkEsRUFBb0IsQ0FDOUIsSUFBSUMsRUFBSSwrREFBK0RDLEtBQUtGLEdBQzVFLEdBQUlDLEVBQ0gsT0FBTyxJQUFJRSxLQUFLQSxLQUFLQyxLQUFLSCxFQUFFLElBQUtBLEVBQUUsR0FBSyxHQUFJQSxFQUFFLElBQUtBLEVBQUUsSUFBS0EsRUFBRSxJQUFLQSxFQUFFLEdBQUdJLE1BQU0sS0FBSyxJQUFLSixFQUFFLEdBQUdJLE1BQU0sS0FBSyxLQUd4RyxPQUFPTCxFQUdSLFNBQWdCTSxnQkFBZ0JDLEVBQVNDLEVBQWFDLEdBQ2pERixFQUFRRyxZQUNYRixFQUFZRSxVQUFZSCxFQUFRRyxXQUc3QkgsRUFBUUksWUFDWEgsRUFBWUcsVUFBWUosRUFBUUksV0FHakMsSUFBSUMsRUFBVXZCLFFBQVFHLEtBQUtlLEVBQVNDLEdBbUJwQyxPQWpCSUksR0FDQ0EsRUFBUUMsT0FBU0MsT0FBT0MsS0FBS0gsRUFBUUMsTUFBTUcsZUFDdkNKLEVBQVFDLEtBR1pKLElBQ0hHLEVBQVFLLEtBQU8sQ0FBQ0MsSUFBSyxLQUlsQlQsSUFDSEcsRUFBVSxDQUNUSyxLQUFNLENBQUNDLElBQUssS0FLUk4sRUFHUixTQUFnQk8sd0JBQXdCQyxFQUFPQyxFQUFZQyxHQUMxRCxJQUFJQyxFQUFROUIs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QixPQUFPQSxFQUFLOEQsTUFBTSxHQUdsQixPQUFROUQsR0FDUixVQUFLLEVBQ0wsS0FBSyxLQUNMLEtBQUssRUFDTCxJQUFLLEdBQ0osTUFBTyxHQUNSLFFBQ0MsT0FBT0EsRUFBSytELFdBQVdqRyxNQUFNNkYsSUFaekIsR0FlREssSUFBSSxTQUFTWixHQUNsQixPQUFRQSxHQUNQLFVBQUssRUFDTCxLQUFLLEtBQ0wsS0FBSyxFQUNMLElBQUssR0FDTCxPQUFPLEtBQ1AsUUFDQSxPQUFPQSxFQUFFVyxjQUVSbkUsT0FBTyxTQUFTd0QsR0FDbEIsT0FBWSxNQUFMQSxJQUtULFNBQWdCYSxjQUFjQyxHQUM3QixPQUFJQSxFQUNJQyxPQUFPQyxXQUFXRixFQUFRLFFBRzFCLEVBelZURyxRQUFBbkgsU0FBQUEsU0FJQW1ILFFBQUE5RyxZQUFBQSxZQVVBOEcsUUFBQXRHLGdCQUFBQSxnQkErQkFzRyxRQUFBekYsd0JBQUFBLHdCQVVBeUYsUUFBQWpGLGFBQUFBLGFBbUVBaUYsUUFBQW5GLFlBQUFBLFlBMEJBbUYsUUFBQWxGLGlCQUFBQSxpQkFnTUFrRixRQUFBSixjQUFBQSIsImZpbGUiOiJ1dGlsL2NvbW1vbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImxldCBydXNEaWZmID0gcmVxdWlyZSgncnVzLWRpZmYnKTtcbmxldCBkZWVwRGlmZiA9IHJlcXVpcmUoJ2RlZXAtZGlmZicpLmRpZmY7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWVwQ29weShvYmopIHtcblx0cmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqKSwgZGF0ZVJldml2ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVJldml2ZXIoa2V5LCB2YWx1ZSkge1xuXHRpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuXHRcdGxldCBhID0gL14oXFxkezR9KS0oXFxkezJ9KS0oXFxkezJ9KVQoXFxkezJ9KTooXFxkezJ9KTooXFxkezJ9KD86XFwuXFxkKik/KVokLy5leGVjKHZhbHVlKTtcblx0XHRpZiAoYSkge1xuXHRcdFx0cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKCthWzFdLCArYVsyXSAtIDEsICthWzNdLCArYVs0XSwgK2FbNV0sICthWzZdLnNwbGl0KCcuJylbMF0sICthWzZdLnNwbGl0KCcuJylbMV0pKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9uZ29VcGRhdGVzKGN1cnJEb2MsIG1vZGlmaWVkRG9jLCBpbmNWZXJzaW9uKSB7XG5cdGlmIChjdXJyRG9jLmNyZWF0ZWRBdCkge1xuXHRcdG1vZGlmaWVkRG9jLmNyZWF0ZWRBdCA9IGN1cnJEb2MuY3JlYXRlZEF0O1xuXHR9XG5cblx0aWYgKGN1cnJEb2MudXBkYXRlZEF0KSB7XG5cdFx0bW9kaWZpZWREb2MudXBkYXRlZEF0ID0gY3VyckRvYy51cGRhdGVkQXQ7XG5cdH1cblxuXHRsZXQgdXBkYXRlcyA9IHJ1c0RpZmYuZGlmZihjdXJyRG9jLCBtb2RpZmllZERvYyk7XG5cblx0aWYgKHVwZGF0ZXMpIHtcblx0XHRpZiAodXBkYXRlcy4kc2V0ICYmICFPYmplY3Qua2V5cyh1cGRhdGVzLiRzZXQpLmxlbmd0aCkge1xuXHRcdFx0ZGVsZXRlIHVwZGF0ZXMuJHNldDtcblx0XHR9XG5cblx0XHRpZiAoaW5jVmVyc2lvbikge1xuXHRcdFx0dXBkYXRlcy4kaW5jID0ge19fdjogMX07XG5cdFx0fVxuXHR9XG5cdGVsc2Uge1xuXHRcdGlmIChpbmNWZXJzaW9uKSB7XG5cdFx0XHR1cGRhdGVzID0ge1xuXHRcdFx0XHQkaW5jOiB7X192OiAxfVxuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdXBkYXRlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbmdvTWVyZ2VVcGRhdGVkRG9jKGZfZG9jLCBjdXJyZW50RG9jLCBvbGREb2MpIHtcblx0bGV0IHVwRG9jID0gZGVlcENvcHkob2xkRG9jKTtcblx0dXBEb2MuX192ID0gY3VycmVudERvYy5fX3Y7XG5cdGxldCBkaWZmXzEgPSBnZXREZWVwRGlmZihvbGREb2MsIGN1cnJlbnREb2MpO1xuXHRsZXQgZGlmZl8yID0gZ2V0RGVlcERpZmYob2xkRG9jLCBmX2RvYyk7XG5cdGxldCB1cGRhdGVzID0gbWVyZ2VVcGRhdGVzKGRpZmZfMiwgZGlmZl8xKTtcblx0YXBwbHlNb25nb1VwZGF0ZSh1cERvYywgdXBkYXRlcyk7XG5cdHJldHVybiB1cERvYztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlVXBkYXRlcyguLi51cGRhdGVzVG9NZXJnZSkge1xuXHRsZXQgbWVyZ2VkID0ge1xuXHRcdCRzZXQ6IHt9LFxuXHRcdCR1bnNldDoge30sXG5cdFx0JGluYzoge30sXG5cdFx0JHB1c2g6IHt9LFxuXHRcdCRwdWxsOiB7fVxuXHR9O1xuXG5cdHVwZGF0ZXNUb01lcmdlLmZpbHRlcihhID0+IGEpLmZvckVhY2goYW5VcGRhdGUgPT4ge1xuXHRcdGFuVXBkYXRlLmZvckVhY2goY2hhbmdlID0+IHtcblx0XHRcdGxldCBwYXRoID0gY2hhbmdlLnBhdGhbMF07XG5cblx0XHRcdGZvciAobGV0IGkgPSAxOyBpIDwgY2hhbmdlLnBhdGgubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0cGF0aCArPSAnLicgKyBjaGFuZ2UucGF0aFtpXTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGNoYW5nZS5raW5kID09PSAnRScpIHtcblx0XHRcdFx0aWYgKHR5cGVvZihjaGFuZ2UucmhzKSA9PT0gJ251bWJlcicgJiYgcGF0aC5lbmRzV2l0aCgncXVhbnRpdHknKSkge1xuXHRcdFx0XHRcdGlmIChtZXJnZWQuJGluY1twYXRoXSkge1xuXHRcdFx0XHRcdFx0bWVyZ2VkLiRpbmNbcGF0aF0gKz0gY2hhbmdlLnJocyAtIGNoYW5nZS5saHM7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0bWVyZ2VkLiRpbmNbcGF0aF0gPSBjaGFuZ2UucmhzIC0gY2hhbmdlLmxocztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0bWVyZ2VkLiRzZXRbcGF0aF0gPSBjaGFuZ2UucmhzO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmIChjaGFuZ2Uua2luZCA9PT0gJ0EnKSB7XG5cdFx0XHRcdGlmIChjaGFuZ2UuaXRlbS5raW5kID09PSAnTicpIHtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRpZiAoIW1lcmdlZC4kcHVzaFtwYXRoXSB8fCBKU09OLnN0cmluZ2lmeShtZXJnZWQuJHB1c2hbcGF0aF0pICE9PSBKU09OLnN0cmluZ2lmeShjaGFuZ2UuaXRlbS5yaHMpKSB7XG5cdFx0XHRcdFx0XHRpZiAoIW1lcmdlZC4kcHVzaFtwYXRoXSkge1xuXHRcdFx0XHRcdFx0XHRtZXJnZWQuJHB1c2hbcGF0aF0gPSBbXTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0aWYgKCFtZXJnZWQuJHB1c2hbcGF0aF0uZmlsdGVyKGEgPT4gSlNPTi5zdHJpbmdpZnkoYSkgPT09IEpTT04uc3RyaW5naWZ5KGNoYW5nZS5pdGVtLnJocykpLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRtZXJnZWQuJHB1c2hbcGF0aF0ucHVzaChjaGFuZ2UuaXRlbS5yaHMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmIChjaGFuZ2UuaXRlbS5raW5kID09PSAnRCcpIHtcblx0XHRcdFx0XHRpZiAoIW1lcmdlZC4kcHVsbFtwYXRoXSB8fCBKU09OLnN0cmluZ2lmeShtZXJnZWQuJHB1bGxbcGF0aF0pICE9PSBKU09OLnN0cmluZ2lmeShjaGFuZ2UuaXRlbS5saHMpKSB7XG5cdFx0XHRcdFx0XHRpZiAoIW1lcmdlZC4kcHVsbFtwYXRoXSkge1xuXHRcdFx0XHRcdFx0XHRtZXJnZWQuJHB1bGxbcGF0aF0gPSBbXTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0aWYgKCFtZXJnZWQuJHB1bGxbcGF0aF0uZmlsdGVyKGEgPT4gSlNPTi5zdHJpbmdpZnkoYSkgPT09IEpTT04uc3RyaW5naWZ5KGNoYW5nZS5pdGVtLmxocykpLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRtZXJnZWQuJHB1bGxbcGF0aF0ucHVzaChjaGFuZ2UuaXRlbS5saHMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmIChjaGFuZ2UuaXRlbS5raW5kID09PSAnRScpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnQ29uZGl0aW9uIEUgbm90IHNhdGlzZmllZC4nKTtcblx0XHRcdFx0XHQvLyBpZiAoIW1lcmdlZC4kcHVsbFtwYXRoXSB8fCBKU09OLnN0cmluZ2lmeShtZXJnZWQuJHB1bGxbcGF0aF0pICE9PSBKU09OLnN0cmluZ2lmeShjaGFuZ2UuaXRlbS5saHMpKSB7XG5cdFx0XHRcdFx0Ly8gXHRtZXJnZWQuJHB1bGxbcGF0aF0gPSBjaGFuZ2UuaXRlbS5saHM7XG5cdFx0XHRcdFx0Ly8gfVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0pO1xuXG5cdHJldHVybiBtZXJnZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWVwRGlmZihkb2MxLCBkb2MyKSB7XG5cdGRlbGV0ZSBkb2MxLl9pZDtcblx0ZGVsZXRlIGRvYzEuX192O1xuXG5cdGlmIChkb2MxLnVwZGF0ZWRBdCkge1xuXHRcdGRlbGV0ZSBkb2MxLnVwZGF0ZWRBdDtcblx0fVxuXG5cdGlmIChkb2MxLmNyZWF0ZWRBdCkge1xuXHRcdGRlbGV0ZSBkb2MxLmNyZWF0ZWRBdDtcblx0fVxuXG5cdGRlbGV0ZSBkb2MyLl9pZDtcblx0ZGVsZXRlIGRvYzIuX192O1xuXG5cdGlmIChkb2MyLnVwZGF0ZWRBdCkge1xuXHRcdGRlbGV0ZSBkb2MyLnVwZGF0ZWRBdDtcblx0fVxuXG5cdGlmIChkb2MyLmNyZWF0ZWRBdCkge1xuXHRcdGRlbGV0ZSBkb2MyLmNyZWF0ZWRBdDtcblx0fVxuXG5cdHJldHVybiBkZWVwRGlmZihkb2MxLCBkb2MyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5TW9uZ29VcGRhdGUodURvYywgZGVsdGEpIHtcblx0bGV0IG9yaWcsIGssIHBhdGhrLCB2aywgbiwgbjEsIG4yLCBuYW1lLCBvLCBvMSwgbzIsIHJlZiwgcmVmMSwgcmVmMiwgcmVmMywgcmVmNCwgcmVmNSwgcmVmNiwgcmVmNywgcmVmOCwgcmVmOWEsIHJlZjliLCByZWYxMCwgcmVmMTEsIHJlZjEyYSwgcmVmMTJiLCByZWYxMywgdjtcblxuXHRvcmlnID0gZGVlcENvcHkodURvYyk7XG5cblx0aWYgKGRlbHRhICE9IG51bGwpIHtcblx0XHRpZiAoZGVsdGEuJHJlbmFtZSAhPSBudWxsKSB7XG5cdFx0XHRyZWYgPSBkZWx0YS4kcmVuYW1lO1xuXHRcdFx0Ly8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmZvcmluXG5cdFx0XHRmb3IgKGsgaW4gcmVmKSB7XG5cdFx0XHRcdHYgPSByZWZba107XG5cdFx0XHRcdHJlZjEgPSByZXNvbHZlKHVEb2MsIGspLCBvMSA9IHJlZjFbMF0sIG4xID0gcmVmMVsxXTtcblx0XHRcdFx0cmVmMiA9IHJlc29sdmUodURvYywgdiksIG8yID0gcmVmMlswXSwgbjIgPSByZWYyWzFdO1xuXHRcdFx0XHRpZiAoKG8xICE9IG51bGwpICYmIG4xLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRcdGlmICgobzIgIT0gbnVsbCkgJiYgbjIubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdFx0XHRvMltuMlswXV0gPSBvMVtuMVswXV07XG5cdFx0XHRcdFx0XHRkZWxldGUgbzFbbjFbMF1dO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihvMiArICcvJyArIG4yICsgJyAtIGNvdWxkblxcJ3QgcmVzb2x2ZSBmaXJzdCBmb3IgJyArIHVEb2MgKyAnICcgKyB2KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gXG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihvMSArICcvJyArIG4xICsgJyAtIGNvdWxkblxcJ3QgcmVzb2x2ZSBzZWNvbmQgZm9yICcgKyB1RG9jICsgJyAnICsgayk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKGRlbHRhLiRzZXQgIT0gbnVsbCkge1xuXHRcdFx0cmVmMyA9IGRlbHRhLiRzZXQ7XG5cdFx0XHQvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Zm9yaW5cblx0XHRcdGZvciAoayBpbiByZWYzKSB7XG5cdFx0XHRcdHYgPSByZWYzW2tdO1xuXHRcdFx0XHRyZWY0ID0gcmVzb2x2ZSh1RG9jLCBrLCB7XG5cdFx0XHRcdFx0Zm9yY2U6IHRydWVcblx0XHRcdFx0fSksIG8gPSByZWY0WzBdLCBuID0gcmVmNFsxXTtcblx0XHRcdFx0aWYgKChvICE9IG51bGwpICYmIG4ubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdFx0b1tuWzBdXSA9IHY7XG5cdFx0XHRcdH0gXG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihvICsgJy8nICsgbiArICcgLSBjb3VsZG5cXCd0IHNldCBmb3IgJyArIHVEb2MgKyAnICcgKyBrKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoZGVsdGEuJGluYyAhPSBudWxsKSB7XG5cdFx0XHRyZWY1ID0gZGVsdGEuJGluYztcblx0XHRcdC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpmb3JpblxuXHRcdFx0Zm9yIChrIGluIHJlZjUpIHtcblx0XHRcdFx0diA9IHJlZjVba107XG5cdFx0XHRcdHJlZjYgPSByZXNvbHZlKHVEb2MsIGssIHtcblx0XHRcdFx0Zm9yY2U6IHRydWVcblx0XHRcdFx0fSksIG8gPSByZWY2WzBdLCBuID0gcmVmNlsxXTtcblx0XHRcdFx0aWYgKChvICE9IG51bGwpICYmIG4ubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdFx0aWYgKG9bbmFtZSA9IG5bMF1dID09IG51bGwpIHtcblx0XHRcdFx0XHRcdG9bbmFtZV0gPSAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvW25bMF1dICs9IHY7XG5cdFx0XHRcdH0gXG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihvICsgJy8nICsgbiArICcgLSBjb3VsZG5cXCd0IHNldCBmb3IgJyArIHVEb2MgKyAnICcgKyBrKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoZGVsdGEuJHVuc2V0ICE9IG51bGwpIHtcblx0XHRcdHJlZjcgPSBkZWx0YS4kdW5zZXQ7XG5cdFx0XHQvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Zm9yaW5cblx0XHRcdGZvciAoayBpbiByZWY3KSB7XG5cdFx0XHRcdHYgPSByZWY3W2tdO1xuXHRcdFx0XHRyZWY4ID0gcmVzb2x2ZSh1RG9jLCBrKSwgbyA9IHJlZjhbMF0sIG4gPSByZWY4WzFdO1xuXHRcdFx0XHRpZiAoKG8gIT0gbnVsbCkgJiYgbi5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0XHRkZWxldGUgb1tuWzBdXTtcblx0XHRcdFx0fSBcblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKG8gKyAnLycgKyBuICsgJyAtIGNvdWxkblxcJ3QgdW5zZXQgZm9yICcgKyB1RG9jICsgJyAnICsgayk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKGRlbHRhLiRwdWxsICE9IG51bGwpIHtcblx0XHRcdHJlZjlhID0gZGVsdGEuJHB1bGw7XG5cdFx0XHQvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Zm9yaW5cblx0XHRcdGZvciAocGF0aGsgaW4gcmVmOWEpIHsgLy8gc2hvdWxkIG9ubHkgbG9vcCAxIHRpbWVcblx0XHRcdFx0cmVmOWIgPSByZWY5YVtwYXRoa107XG5cdFx0XHRcdGZvciAobGV0IGtrID0gKHJlZjliLmxlbmd0aCAtIDEpOyBrayA+PSAwOyBray0tKSB7XG5cdFx0XHRcdFx0dmsgPSByZWY5Yltra107XG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0cmVmMTAgPSByZXNvbHZlKHVEb2MsIHBhdGhrKSwgbyA9IHJlZjEwWzBdLCBuID0gcmVmMTBbMV07XG5cdFx0XHRcdFx0cmVmMTEgPSByZXNvbHZlKG9yaWcsIHBhdGhrKSwgbzIgPSByZWYxMVswXSwgbjIgPSByZWYxMVsxXTtcblx0XHRcdFx0XHRpZiAoKG8gIT0gbnVsbCkgJiYgbi5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0XHRcdG9bblswXV0uc3BsaWNlKCg8QXJyYXk8YW55Pj5vMltuMlswXV0pLmZpbmRJbmRleCh6ID0+IEpTT04uc3RyaW5naWZ5KHopID09PSBKU09OLnN0cmluZ2lmeSh2aykpLCAxKTtcblx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKG8gKyAnLycgKyBuICsgJyAtIGNvdWxkblxcJ3QgdW5zZXQgZm9yICcgKyB1RG9jICsgJyAnICsgcGF0aGspO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoZGVsdGEuJHB1c2ggIT0gbnVsbCkge1xuXHRcdFx0cmVmMTJhID0gZGVsdGEuJHB1c2g7XG5cdFx0XHQvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Zm9yaW5cblx0XHRcdGZvciAocGF0aGsgaW4gcmVmMTJhKSB7IC8vIHNob3VsZCBvbmx5IGxvb3AgMSB0aW1lXG5cdFx0XHRcdHJlZjEyYiA9IHJlZjEyYVtwYXRoa107XG5cdFx0XHRcdC8vIGZvciAobGV0IGtrID0gMDsga2sgPCByZWYxMmIubGVuZ3RoOyBraysrKSB7XG5cdFx0XHRcdGZvciAobGV0IGtrID0gKHJlZjEyYi5sZW5ndGggLSAxKTsga2sgPj0gMDsga2stLSkge1xuXHRcdFx0XHRcdFx0dmsgPSByZWYxMmJba2tdO1xuXG5cdFx0XHRcdFx0cmVmMTMgPSByZXNvbHZlKHVEb2MsIHBhdGhrKSwgbyA9IHJlZjEzWzBdLCBuID0gcmVmMTNbMV07XG5cdFx0XHRcdFx0aWYgKChvICE9IG51bGwpICYmIG4ubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdFx0XHRvW25bMF1dLnB1c2godmspO1xuXHRcdFx0XHRcdH0gXG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IobyArICcvJyArIG4gKyAnIC0gY291bGRuXFwndCB1bnNldCBmb3IgJyArIHVEb2MgKyAnICcgKyBwYXRoayk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiB1RG9jO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlKGEsIHBhdGgsIG9wdGlvbnM/KSB7XG5cdGxldCBlLCBrLCBsYXN0LCBzdGFjaztcblx0aWYgKG9wdGlvbnMgPT0gbnVsbCkge1xuXHRcdG9wdGlvbnMgPSB7fTtcblx0fVxuXHRzdGFjayA9IGFycml6ZShwYXRoKTtcblx0bGFzdCA9IFtdO1xuXHRpZiAoc3RhY2subGVuZ3RoID4gMCkge1xuXHRcdGxhc3QudW5zaGlmdChzdGFjay5wb3AoKSk7XG5cdH1cblx0ZSA9IGE7XG5cdGlmIChlICE9PSBudWxsKSB7XG5cdFx0d2hpbGUgKChrID0gc3RhY2suc2hpZnQoKSkgIT09IHZvaWQgMCkge1xuXHRcdFx0aWYgKGVba10gIT09IHZvaWQgMCkge1xuXHRcdFx0ZSA9IGVba107XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0c3RhY2sudW5zaGlmdChrKTtcblx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRpZiAob3B0aW9ucy5mb3JjZSkge1xuXHRcdHdoaWxlICgoayA9IHN0YWNrLnNoaWZ0KCkpICE9PSB2b2lkIDApIHtcblx0XHRcdGlmICgodHlwZW9mIHN0YWNrWzBdID09PSAnbnVtYmVyJykgfHwgKChzdGFjay5sZW5ndGggPT09IDApICYmICh0eXBlb2YgbGFzdFswXSA9PT0gJ251bWJlcicpKSkge1xuXHRcdFx0ZVtrXSA9IFtdO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdGVba10gPSB7fTtcblx0XHRcdH1cblx0XHRcdGUgPSBlW2tdO1xuXHRcdH1cblx0fSBcblx0ZWxzZSB7XG5cdFx0d2hpbGUgKChrID0gc3RhY2sucG9wKCkpICE9PSB2b2lkIDApIHtcblx0XHRcdGxhc3QudW5zaGlmdChrKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIFtlLCBsYXN0XTtcbn1cblxuZnVuY3Rpb24gYXJyaXplKHBhdGgsIGdsdWU/KSB7XG5cdGlmIChnbHVlID09IG51bGwpIHtcblx0XHRnbHVlID0gJy4nO1xuXHR9XG5cdHJldHVybiAoKGZ1bmN0aW9uKCkge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KHBhdGgpKSB7XG5cdFx0XHRyZXR1cm4gcGF0aC5zbGljZSgwKTtcblx0XHR9IFxuXHRcdGVsc2Uge1xuXHRcdFx0c3dpdGNoIChwYXRoKSB7XG5cdFx0XHRjYXNlIHZvaWQgMDpcblx0XHRcdGNhc2UgbnVsbDpcblx0XHRcdGNhc2UgZmFsc2U6XG5cdFx0XHRjYXNlICcnOlxuXHRcdFx0XHRyZXR1cm4gW107XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4gcGF0aC50b1N0cmluZygpLnNwbGl0KGdsdWUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSkoKSkubWFwKGZ1bmN0aW9uKGUpIHtcblx0XHRzd2l0Y2ggKGUpIHtcblx0XHRcdGNhc2Ugdm9pZCAwOlxuXHRcdFx0Y2FzZSBudWxsOlxuXHRcdFx0Y2FzZSBmYWxzZTpcblx0XHRcdGNhc2UgJyc6XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gZS50b1N0cmluZygpO1xuXHRcdH1cblx0fSkuZmlsdGVyKGZ1bmN0aW9uKGUpIHtcblx0XHRyZXR1cm4gZSAhPSBudWxsO1xuXHR9KTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmluYXJ5U2l6ZShzdHJpbmcpIHtcblx0aWYgKHN0cmluZykge1xuXHRcdHJldHVybiBCdWZmZXIuYnl0ZUxlbmd0aChzdHJpbmcsICd1dGY4Jyk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0cmV0dXJuIDA7XG5cdH1cbn0iXX0=