@sd-angular/core 1.3.232 → 1.3.234

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/comment/src/lib/comment.component.ts","../../../../projects/sd-core/comment/src/lib/comment.module.ts"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","Object","create","__classPrivateFieldGet","receiver","state","kind","has","get","SdComment","loadingService","_this","_items","set","BehaviorSubject","_send","_timerReload","isReloading","fullCommentStyles","min-height","onSend","message","_b","_a","commentOption","event","_c","textarea","focus","_load","items","results","_d","reload","start","_e","_f","stop","_scrollToBottom","autoReload","timerMs","clearInterval","__classPrivateFieldSet","setInterval","clearAllData","setTimeout","commentScroll","nativeElement","scrollTop","scrollHeight","err","defineProperty","prototype","option","ngOnInit","pipe","map","assign","picture","creator","count","ngOnDestroy","ngAfterViewInit","Component","args","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","SdLoadingService","ViewChild","SdTextarea","Input","NgModule","imports","CommonModule","MatButtonModule","MatIconModule","MatTooltipModule","SdTranslateModule","SdButtonModule","SdInputModule","SdTextareaModule","SdEditorModule","SdUtilityModule","SdModalModule","declarations","exports","providers"],"mappings":";;;;;;;;;;;;;;6FAqEgBA,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,IAAW,MAAOG,GAAKL,EAAOK,IACpF,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,IAAW,MAAOG,GAAKL,EAAOK,IACvF,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,OAITO,KAAKR,EAAWK,GAClGH,GAAMN,EAAYA,EAAUa,MAAMhB,EAASC,GAAc,KAAKS,oBAItDO,EAAYjB,EAASkB,GACjC,IAAsGC,EAAGC,EAAGC,EAAGC,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPJ,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOK,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEZ,KAAMkB,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAAwB,mBAAXG,SAA0BT,EAAES,OAAOC,UAAY,WAAa,OAAOC,OAAUX,EACvJ,SAASM,EAAKM,GAAK,OAAO,SAAUC,GAAK,OACzC,SAAcC,GACV,GAAIjB,EAAG,MAAM,IAAIkB,UAAU,mCAC3B,KAAOd,OACH,GAAIJ,EAAI,EAAGC,IAAMC,EAAY,EAARe,EAAG,GAAShB,EAAU,OAAIgB,EAAG,GAAKhB,EAAS,SAAOC,EAAID,EAAU,SAAMC,EAAEiB,KAAKlB,GAAI,GAAKA,EAAEV,SAAWW,EAAIA,EAAEiB,KAAKlB,EAAGgB,EAAG,KAAKtB,KAAM,OAAOO,EAE3J,OADID,EAAI,EAAGC,IAAGe,EAAK,CAAS,EAARA,EAAG,GAAQf,EAAEb,QACzB4B,EAAG,IACP,KAAK,EAAG,KAAK,EAAGf,EAAIe,EAAI,MACxB,KAAK,EAAc,OAAXb,EAAEC,QAAgB,CAAEhB,MAAO4B,EAAG,GAAItB,MAAM,GAChD,KAAK,EAAGS,EAAEC,QAASJ,EAAIgB,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKb,EAAEI,IAAIY,MAAOhB,EAAEG,KAAKa,MAAO,SACxC,QACI,KAAMlB,EAAIE,EAAEG,MAAML,EAAIA,EAAEmB,OAAS,GAAKnB,EAAEA,EAAEmB,OAAS,KAAkB,IAAVJ,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEb,EAAI,EAAG,SACjG,GAAc,IAAVa,EAAG,MAAcf,GAAMe,EAAG,GAAKf,EAAE,IAAMe,EAAG,GAAKf,EAAE,IAAM,CAAEE,EAAEC,MAAQY,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYb,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIA,EAAIe,EAAI,MAC7D,GAAIf,GAAKE,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIE,EAAEI,IAAIc,KAAKL,GAAK,MACvDf,EAAE,IAAIE,EAAEI,IAAIY,MAChBhB,EAAEG,KAAKa,MAAO,SAEtBH,EAAKlB,EAAKoB,KAAKtC,EAASuB,GAC1B,MAAOZ,GAAKyB,EAAK,CAAC,EAAGzB,GAAIS,EAAI,UAAeD,EAAIE,EAAI,EACtD,GAAY,EAARe,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE5B,MAAO4B,EAAG,GAAKA,EAAG,QAAK,EAAQtB,MAAM,GArB9BL,CAAK,CAACyB,EAAGC,MAyBhCO,OAAOC,OAsGpC,cAAyBD,OAAOC,gBAkBhBC,EAAuBC,EAAUC,EAAOC,EAAM5B,GAC1D,GAAa,MAAT4B,IAAiB5B,EAAG,MAAM,IAAIkB,UAAU,iDAC5C,GAAqB,mBAAVS,EAAuBD,IAAaC,IAAU3B,GAAK2B,EAAME,IAAIH,GAAW,MAAM,IAAIR,UAAU,4EACvG,MAAgB,MAATU,EAAe5B,EAAa,MAAT4B,EAAe5B,EAAEmB,KAAKO,GAAY1B,EAAIA,EAAEX,MAAQsC,EAAMG,IAAIJ,oBC5LtF,SAAAK,EACUC,GADV,IAAAC,EAAAnB,KACUA,KAAAkB,eAAAA,EAnBVE,EAAAC,IAAArB,KAAS,IAAIsB,EAAAA,gBAA2B,KACxCC,EAAAF,IAAArB,KAAQ,IAAIsB,EAAAA,gBAAwB,KAEpCE,EAAAH,IAAArB,UAAA,GACAA,KAAAyB,aAAc,EAOdzB,KAAA0B,kBAAoB,CAClBC,aAAc,SA8BhB3B,KAAA4B,OAAS,qBACHT,EAAKU,UACkB,QAAzBC,EAAkB,QAAlBC,EAAAZ,EAAKa,qBAAa,IAAAD,OAAA,EAAAA,EAAEE,aAAK,IAAAH,GAAAA,EAAEF,OAAOT,EAAKU,SACvCV,EAAKU,QAAU,KACF,QAAbK,EAAAf,EAAKgB,gBAAQ,IAAAD,GAAAA,EAAEE,UAInBC,EAAAhB,IAAArB,MAAQ,WAAA,OAAAlC,EAAAqD,OAAA,OAAA,GAAA,4EACCmB,EAAStC,KAAKgC,cAAaM,OAC5BC,EAAUD,eACOnE,QACd,CAAA,EAAMoE,GADX,CAAA,EAAA,UACF,MAAA,CAAA,EAAOC,EAAAhD,eAET,MAAA,CAAA,EAAO+C,aAGTvC,KAAAyC,OAAS,WAAA,OAAA3E,EAAAqD,OAAA,OAAA,GAAA,gFAEU,OADjBnB,KAAKkB,eAAewB,MAAM,sBAC1BC,GAAAH,EAAA7B,EAAAX,KAAAoB,IAAY3C,KAAK,CAAA,EAAMkC,EAAAX,KAAAqC,GAAAhC,KAAAL,qBAAvB2C,EAAA5D,MAAAyD,EAAA,CAAiBI,EAAApD,SACjBQ,KAAKkB,eAAe2B,KAAK,sBACzBlC,EAAAX,KAAA8C,GAAAzC,KAAAL,OAEkC,QAAlC8B,EAAsB,QAAtBC,EAAI/B,KAAKgC,qBAAa,IAAAD,OAAA,EAAAA,EAAEgB,kBAAU,IAAAjB,OAAA,EAAAA,EAAEkB,WAClCC,cAAatC,EAAAX,KAAAwB,aD+IoBZ,EAAUC,EAAOtC,EAAOuC,EAAM5B,GACjE,GAAa,MAAT4B,EAAc,MAAM,IAAIV,UAAU,kCACtC,GAAa,MAATU,IAAiB5B,EAAG,MAAM,IAAIkB,UAAU,iDAC5C,GAAqB,mBAAVS,EAAuBD,IAAaC,IAAU3B,GAAK2B,EAAME,IAAIH,GAAW,MAAM,IAAIR,UAAU,2EACtF,MAATU,EAAe5B,EAAEmB,KAAKO,EAAUrC,GAASW,EAAIA,EAAEX,MAAQA,EAAQsC,EAAMQ,IAAIT,EAAUrC,GClJzF2E,CAAAlD,KAAIwB,EAAgB2B,aAAY,WAAA,OAAArF,EAAAqD,OAAA,OAAA,GAAA,qEAEb,OADjBnB,KAAKkB,eAAewB,MAAM,sBAC1BC,GAAAH,EAAA7B,EAAAX,KAAAoB,IAAY3C,KAAK,CAAA,EAAMkC,EAAAX,KAAAqC,GAAAhC,KAAAL,qBAAvB2C,EAAA5D,MAAAyD,EAAA,CAAiBI,EAAApD,SACjBQ,KAAKkB,eAAe2B,KAAK,sBACzBlC,EAAAX,KAAA8C,GAAAzC,KAAAL,mBACCA,KAAKgC,cAAce,WAAWC,uBAIrChD,KAAAoD,aAAe,WACbjC,EAAKU,QAAU,IAGjBiB,EAAAzB,IAAArB,MAAkB,WAChB,IACEqD,YAAW,WACTlC,EAAKmC,cAAcC,cAAcC,UAAYrC,EAAKmC,cAAcC,cAAcE,eAC7E,KACH,MAAOC,eA/EXjD,OAAAkD,eAAa1C,EAAA2C,UAAA,SAAM,KAAnB,SAAoBC,GAClB7D,KAAKgC,cAAgB6B,EACrB7D,KAAKyC,0CAePxB,EAAA2C,UAAAE,SAAA,WACE9D,KAAKsC,MAAQ3B,EAAAX,KAAAoB,GAAY2C,KAAKC,EAAAA,KAAI,SAAA1B,GAChC,OAAOA,EAAM0B,KAAI,SAAAtF,SAAK,OAAA+B,OAAAwD,OAAAxD,OAAAwD,OAAA,GACjBvF,GAAC,CACJwF,QAAkB,QAAXnC,EAAErD,EAAEwF,eAAO,IAAAnC,EAAAA,EAAI,2EAA2ErD,EAAEyF,iBAGvGnE,KAAKoE,MAAQpE,KAAKsC,MAAMyB,KAAKC,EAAAA,KAAI,SAAA1B,GAAS,OAAAA,EAAM/B,YAGlDU,EAAA2C,UAAAS,YAAA,oBACoC,QAAlCvC,EAAsB,QAAtBC,EAAI/B,KAAKgC,qBAAa,IAAAD,OAAA,EAAAA,EAAEgB,kBAAU,IAAAjB,OAAA,EAAAA,EAAEkB,UAClCC,cAAatC,EAAAX,KAAAwB,KAIjBP,EAAA2C,UAAAU,gBAAA,4GAhDDC,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,aACVC,SAAA,8kKAEAC,gBAAiBC,EAAAA,wBAAwBC,uxDANnCC,EAAAA,2DASLC,EAAAA,UAASP,KAAA,CAAC,mCACVO,EAAAA,UAASP,KAAA,CAACQ,EAAAA,4BAOVC,EAAAA,eCOH,iCAvBCC,EAAAA,SAAQV,KAAA,CAAC,CACRW,QAAS,CACPC,EAAAA,aACAC,EAAAA,gBACAC,EAAAA,cACAC,EAAAA,iBACAC,EAAAA,kBACAC,EAAAA,eACAC,EAAAA,cACAC,EAAAA,iBACAC,EAAAA,eACAC,EAAAA,gBACAC,EAAAA,eAEFC,aAAc,CACZ9E,GAEF+E,QAAS,CACP/E,GAEFgF,UAAW","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {\r\n Component,\r\n AfterViewInit,\r\n OnInit,\r\n OnDestroy,\r\n Input,\r\n ChangeDetectionStrategy,\r\n ViewChild, ElementRef\r\n} from '@angular/core';\r\nimport {SdTextarea} from '@sd-angular/core/textarea';\r\nimport {BehaviorSubject, Observable} from 'rxjs';\r\nimport {map, switchMap} from 'rxjs/operators';\r\nimport {Comment, SdCommentOption} from './comment.model';\r\nimport {SdLoadingService} from '@sd-angular/core/loading';\r\n\r\n@Component({\r\n selector: 'sd-comment',\r\n templateUrl: './comment.component.html',\r\n styleUrls: ['./comment.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdComment implements OnInit, AfterViewInit, OnDestroy {\r\n @ViewChild('commentScroll') private commentScroll: ElementRef;\r\n @ViewChild(SdTextarea) textarea: SdTextarea;\r\n #items = new BehaviorSubject<Comment[]>([]);\r\n #send = new BehaviorSubject<string>('');\r\n commentOption: SdCommentOption;\r\n #timerReload: any;\r\n isReloading = false;\r\n\r\n @Input() set option(option: SdCommentOption) {\r\n this.commentOption = option;\r\n this.reload();\r\n };\r\n\r\n fullCommentStyles = {\r\n 'min-height': '150px'\r\n };\r\n items: Observable<Comment[]>;\r\n count: Observable<number>;\r\n message: string;\r\n\r\n constructor(\r\n private loadingService: SdLoadingService,\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.items = this.#items.pipe(map(items => {\r\n return items.map(e => ({\r\n ...e,\r\n picture: e.picture ?? `https://ui-avatars.com/api/?size=32&rounded=true&background=random&name=${e.creator}`\r\n }));\r\n }));\r\n this.count = this.items.pipe(map(items => items.length));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.commentOption?.autoReload?.timerMs) {\r\n clearInterval(this.#timerReload);\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n }\r\n\r\n onSend = () => {\r\n if (this.message) {\r\n this.commentOption?.event?.onSend(this.message);\r\n this.message = null;\r\n this.textarea?.focus();\r\n }\r\n }\r\n\r\n #load = async () => {\r\n const {items} = this.commentOption;\r\n const results = items();\r\n if (results instanceof Promise) {\r\n return await results;\r\n }\r\n return results;\r\n }\r\n\r\n reload = async () => {\r\n this.loadingService.start('.c-comment-loading');\r\n this.#items.next(await this.#load());\r\n this.loadingService.stop('.c-comment-loading');\r\n this.#scrollToBottom();\r\n\r\n if (this.commentOption?.autoReload?.timerMs) {\r\n clearInterval(this.#timerReload);\r\n this.#timerReload = setInterval(async () => {\r\n this.loadingService.start('.c-comment-loading');\r\n this.#items.next(await this.#load());\r\n this.loadingService.stop('.c-comment-loading');\r\n this.#scrollToBottom();\r\n }, this.commentOption.autoReload.timerMs);\r\n }\r\n }\r\n\r\n clearAllData = () => {\r\n this.message = '';\r\n }\r\n\r\n #scrollToBottom = () => {\r\n try {\r\n setTimeout(() => {\r\n this.commentScroll.nativeElement.scrollTop = this.commentScroll.nativeElement.scrollHeight;\r\n }, 500);\r\n } catch (err) {\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdComment } from './comment.component';\r\nimport { SdButtonModule } from '@sd-angular/core/button';\r\nimport { SdInputModule } from '@sd-angular/core/input';\r\nimport { SdTextareaModule } from '@sd-angular/core/textarea';\r\nimport { SdUtilityModule } from '@sd-angular/core/utility';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport {SdEditorModule} from '@sd-angular/core/editor';\r\nimport {SdModalModule} from '@sd-angular/core/modal';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n SdTranslateModule,\r\n SdButtonModule,\r\n SdInputModule,\r\n SdTextareaModule,\r\n SdEditorModule,\r\n SdUtilityModule,\r\n SdModalModule\r\n ],\r\n declarations: [\r\n SdComment\r\n ],\r\n exports: [\r\n SdComment\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdCommentModule { }\r\n"]}
1
+ {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/comment/src/lib/comment.component.ts","../../../../projects/sd-core/comment/src/lib/comment.module.ts"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","Object","create","__classPrivateFieldGet","receiver","state","kind","has","get","SdComment","loadingService","_this","_items","set","BehaviorSubject","_send","_timerReload","isReloading","fullCommentStyles","min-height","onSend","message","_b","_a","commentOption","event","_c","textarea","focus","_load","items","results","_d","reload","start","_e","_f","stop","_scrollToBottom","autoReload","timerMs","clearInterval","__classPrivateFieldSet","setInterval","clearAllData","setTimeout","commentScroll","nativeElement","scrollTop","scrollHeight","err","defineProperty","prototype","option","ngOnInit","pipe","map","assign","picture","creator","count","ngOnDestroy","ngAfterViewInit","Component","args","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","SdLoadingService","ViewChild","SdTextarea","Input","NgModule","imports","CommonModule","MatButtonModule","MatIconModule","MatTooltipModule","SdTranslateModule","SdButtonModule","SdInputModule","SdTextareaModule","SdEditorModule","SdUtilityModule","SdModalModule","declarations","exports","providers"],"mappings":";;;;;;;;;;;;;;6FAqEgBA,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,IAAW,MAAOG,GAAKL,EAAOK,IACpF,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,IAAW,MAAOG,GAAKL,EAAOK,IACvF,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,OAITO,KAAKR,EAAWK,GAClGH,GAAMN,EAAYA,EAAUa,MAAMhB,EAASC,GAAc,KAAKS,oBAItDO,EAAYjB,EAASkB,GACjC,IAAsGC,EAAGC,EAAGC,EAAGC,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPJ,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOK,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEZ,KAAMkB,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAAwB,mBAAXG,SAA0BT,EAAES,OAAOC,UAAY,WAAa,OAAOC,OAAUX,EACvJ,SAASM,EAAKM,GAAK,OAAO,SAAUC,GAAK,OACzC,SAAcC,GACV,GAAIjB,EAAG,MAAM,IAAIkB,UAAU,mCAC3B,KAAOd,OACH,GAAIJ,EAAI,EAAGC,IAAMC,EAAY,EAARe,EAAG,GAAShB,EAAU,OAAIgB,EAAG,GAAKhB,EAAS,SAAOC,EAAID,EAAU,SAAMC,EAAEiB,KAAKlB,GAAI,GAAKA,EAAEV,SAAWW,EAAIA,EAAEiB,KAAKlB,EAAGgB,EAAG,KAAKtB,KAAM,OAAOO,EAE3J,OADID,EAAI,EAAGC,IAAGe,EAAK,CAAS,EAARA,EAAG,GAAQf,EAAEb,QACzB4B,EAAG,IACP,KAAK,EAAG,KAAK,EAAGf,EAAIe,EAAI,MACxB,KAAK,EAAc,OAAXb,EAAEC,QAAgB,CAAEhB,MAAO4B,EAAG,GAAItB,MAAM,GAChD,KAAK,EAAGS,EAAEC,QAASJ,EAAIgB,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKb,EAAEI,IAAIY,MAAOhB,EAAEG,KAAKa,MAAO,SACxC,QACI,KAAMlB,EAAIE,EAAEG,MAAML,EAAIA,EAAEmB,OAAS,GAAKnB,EAAEA,EAAEmB,OAAS,KAAkB,IAAVJ,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEb,EAAI,EAAG,SACjG,GAAc,IAAVa,EAAG,MAAcf,GAAMe,EAAG,GAAKf,EAAE,IAAMe,EAAG,GAAKf,EAAE,IAAM,CAAEE,EAAEC,MAAQY,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYb,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIA,EAAIe,EAAI,MAC7D,GAAIf,GAAKE,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIE,EAAEI,IAAIc,KAAKL,GAAK,MACvDf,EAAE,IAAIE,EAAEI,IAAIY,MAChBhB,EAAEG,KAAKa,MAAO,SAEtBH,EAAKlB,EAAKoB,KAAKtC,EAASuB,GAC1B,MAAOZ,GAAKyB,EAAK,CAAC,EAAGzB,GAAIS,EAAI,UAAeD,EAAIE,EAAI,EACtD,GAAY,EAARe,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE5B,MAAO4B,EAAG,GAAKA,EAAG,QAAK,EAAQtB,MAAM,GArB9BL,CAAK,CAACyB,EAAGC,MAyBhCO,OAAOC,OAsGpC,cAAyBD,OAAOC,gBAkBhBC,EAAuBC,EAAUC,EAAOC,EAAM5B,GAC1D,GAAa,MAAT4B,IAAiB5B,EAAG,MAAM,IAAIkB,UAAU,iDAC5C,GAAqB,mBAAVS,EAAuBD,IAAaC,IAAU3B,GAAK2B,EAAME,IAAIH,GAAW,MAAM,IAAIR,UAAU,4EACvG,MAAgB,MAATU,EAAe5B,EAAa,MAAT4B,EAAe5B,EAAEmB,KAAKO,GAAY1B,EAAIA,EAAEX,MAAQsC,EAAMG,IAAIJ,oBC5LtF,SAAAK,EACUC,GADV,IAAAC,EAAAnB,KACUA,KAAAkB,eAAAA,EAnBVE,EAAAC,IAAArB,KAAS,IAAIsB,EAAAA,gBAA2B,KACxCC,EAAAF,IAAArB,KAAQ,IAAIsB,EAAAA,gBAAwB,KAEpCE,EAAAH,IAAArB,UAAA,GACAA,KAAAyB,aAAc,EAOdzB,KAAA0B,kBAAoB,CAClBC,aAAc,SA8BhB3B,KAAA4B,OAAS,qBACHT,EAAKU,UACkB,QAAzBC,EAAkB,QAAlBC,EAAAZ,EAAKa,qBAAa,IAAAD,OAAA,EAAAA,EAAEE,aAAK,IAAAH,GAAAA,EAAEF,OAAOT,EAAKU,SACvCV,EAAKU,QAAU,KACF,QAAbK,EAAAf,EAAKgB,gBAAQ,IAAAD,GAAAA,EAAEE,UAInBC,EAAAhB,IAAArB,MAAQ,WAAA,OAAAlC,EAAAqD,OAAA,OAAA,GAAA,4EACCmB,EAAStC,KAAKgC,cAAaM,OAC5BC,EAAUD,eACOnE,QACd,CAAA,EAAMoE,GADX,CAAA,EAAA,UACF,MAAA,CAAA,EAAOC,EAAAhD,eAET,MAAA,CAAA,EAAO+C,aAGTvC,KAAAyC,OAAS,WAAA,OAAA3E,EAAAqD,OAAA,OAAA,GAAA,gFAEU,OADjBnB,KAAKkB,eAAewB,MAAM,sBAC1BC,GAAAH,EAAA7B,EAAAX,KAAAoB,IAAY3C,KAAK,CAAA,EAAMkC,EAAAX,KAAAqC,GAAAhC,KAAAL,qBAAvB2C,EAAA5D,MAAAyD,EAAA,CAAiBI,EAAApD,SACjBQ,KAAKkB,eAAe2B,KAAK,sBACzBlC,EAAAX,KAAA8C,GAAAzC,KAAAL,OAEkC,QAAlC8B,EAAsB,QAAtBC,EAAI/B,KAAKgC,qBAAa,IAAAD,OAAA,EAAAA,EAAEgB,kBAAU,IAAAjB,OAAA,EAAAA,EAAEkB,WAClCC,cAAatC,EAAAX,KAAAwB,aD+IoBZ,EAAUC,EAAOtC,EAAOuC,EAAM5B,GACjE,GAAa,MAAT4B,EAAc,MAAM,IAAIV,UAAU,kCACtC,GAAa,MAATU,IAAiB5B,EAAG,MAAM,IAAIkB,UAAU,iDAC5C,GAAqB,mBAAVS,EAAuBD,IAAaC,IAAU3B,GAAK2B,EAAME,IAAIH,GAAW,MAAM,IAAIR,UAAU,2EACtF,MAATU,EAAe5B,EAAEmB,KAAKO,EAAUrC,GAASW,EAAIA,EAAEX,MAAQA,EAAQsC,EAAMQ,IAAIT,EAAUrC,GClJzF2E,CAAAlD,KAAIwB,EAAgB2B,aAAY,WAAA,OAAArF,EAAAqD,OAAA,OAAA,GAAA,qEAEb,OADjBnB,KAAKkB,eAAewB,MAAM,sBAC1BC,GAAAH,EAAA7B,EAAAX,KAAAoB,IAAY3C,KAAK,CAAA,EAAMkC,EAAAX,KAAAqC,GAAAhC,KAAAL,qBAAvB2C,EAAA5D,MAAAyD,EAAA,CAAiBI,EAAApD,SACjBQ,KAAKkB,eAAe2B,KAAK,sBACzBlC,EAAAX,KAAA8C,GAAAzC,KAAAL,mBACCA,KAAKgC,cAAce,WAAWC,uBAIrChD,KAAAoD,aAAe,WACbjC,EAAKU,QAAU,IAGjBiB,EAAAzB,IAAArB,MAAkB,WAChB,IACEqD,YAAW,WACTlC,EAAKmC,cAAcC,cAAcC,UAAYrC,EAAKmC,cAAcC,cAAcE,eAC7E,KACH,MAAOC,eA/EXjD,OAAAkD,eAAa1C,EAAA2C,UAAA,SAAM,KAAnB,SAAoBC,GAClB7D,KAAKgC,cAAgB6B,EACrB7D,KAAKyC,0CAePxB,EAAA2C,UAAAE,SAAA,WACE9D,KAAKsC,MAAQ3B,EAAAX,KAAAoB,GAAY2C,KAAKC,EAAAA,KAAI,SAAA1B,GAChC,OAAOA,EAAM0B,KAAI,SAAAtF,SAAK,OAAA+B,OAAAwD,OAAAxD,OAAAwD,OAAA,GACjBvF,GAAC,CACJwF,QAAkB,QAAXnC,EAAErD,EAAEwF,eAAO,IAAAnC,EAAAA,EAAI,2EAA2ErD,EAAEyF,iBAGvGnE,KAAKoE,MAAQpE,KAAKsC,MAAMyB,KAAKC,EAAAA,KAAI,SAAA1B,GAAS,OAAAA,EAAM/B,YAGlDU,EAAA2C,UAAAS,YAAA,oBACoC,QAAlCvC,EAAsB,QAAtBC,EAAI/B,KAAKgC,qBAAa,IAAAD,OAAA,EAAAA,EAAEgB,kBAAU,IAAAjB,OAAA,EAAAA,EAAEkB,UAClCC,cAAatC,EAAAX,KAAAwB,KAIjBP,EAAA2C,UAAAU,gBAAA,4GAhDDC,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,aACVC,SAAA,mnKAEAC,gBAAiBC,EAAAA,wBAAwBC,uxDANnCC,EAAAA,2DASLC,EAAAA,UAASP,KAAA,CAAC,mCACVO,EAAAA,UAASP,KAAA,CAACQ,EAAAA,4BAOVC,EAAAA,eCOH,iCAvBCC,EAAAA,SAAQV,KAAA,CAAC,CACRW,QAAS,CACPC,EAAAA,aACAC,EAAAA,gBACAC,EAAAA,cACAC,EAAAA,iBACAC,EAAAA,kBACAC,EAAAA,eACAC,EAAAA,cACAC,EAAAA,iBACAC,EAAAA,eACAC,EAAAA,gBACAC,EAAAA,eAEFC,aAAc,CACZ9E,GAEF+E,QAAS,CACP/E,GAEFgF,UAAW","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {\r\n Component,\r\n AfterViewInit,\r\n OnInit,\r\n OnDestroy,\r\n Input,\r\n ChangeDetectionStrategy,\r\n ViewChild, ElementRef\r\n} from '@angular/core';\r\nimport {SdTextarea} from '@sd-angular/core/textarea';\r\nimport {BehaviorSubject, Observable} from 'rxjs';\r\nimport {map, switchMap} from 'rxjs/operators';\r\nimport {Comment, SdCommentOption} from './comment.model';\r\nimport {SdLoadingService} from '@sd-angular/core/loading';\r\n\r\n@Component({\r\n selector: 'sd-comment',\r\n templateUrl: './comment.component.html',\r\n styleUrls: ['./comment.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdComment implements OnInit, AfterViewInit, OnDestroy {\r\n @ViewChild('commentScroll') private commentScroll: ElementRef;\r\n @ViewChild(SdTextarea) textarea: SdTextarea;\r\n #items = new BehaviorSubject<Comment[]>([]);\r\n #send = new BehaviorSubject<string>('');\r\n commentOption: SdCommentOption;\r\n #timerReload: any;\r\n isReloading = false;\r\n\r\n @Input() set option(option: SdCommentOption) {\r\n this.commentOption = option;\r\n this.reload();\r\n };\r\n\r\n fullCommentStyles = {\r\n 'min-height': '150px'\r\n };\r\n items: Observable<Comment[]>;\r\n count: Observable<number>;\r\n message: string;\r\n\r\n constructor(\r\n private loadingService: SdLoadingService,\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.items = this.#items.pipe(map(items => {\r\n return items.map(e => ({\r\n ...e,\r\n picture: e.picture ?? `https://ui-avatars.com/api/?size=32&rounded=true&background=random&name=${e.creator}`\r\n }));\r\n }));\r\n this.count = this.items.pipe(map(items => items.length));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.commentOption?.autoReload?.timerMs) {\r\n clearInterval(this.#timerReload);\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n }\r\n\r\n onSend = () => {\r\n if (this.message) {\r\n this.commentOption?.event?.onSend(this.message);\r\n this.message = null;\r\n this.textarea?.focus();\r\n }\r\n }\r\n\r\n #load = async () => {\r\n const {items} = this.commentOption;\r\n const results = items();\r\n if (results instanceof Promise) {\r\n return await results;\r\n }\r\n return results;\r\n }\r\n\r\n reload = async () => {\r\n this.loadingService.start('.c-comment-loading');\r\n this.#items.next(await this.#load());\r\n this.loadingService.stop('.c-comment-loading');\r\n this.#scrollToBottom();\r\n\r\n if (this.commentOption?.autoReload?.timerMs) {\r\n clearInterval(this.#timerReload);\r\n this.#timerReload = setInterval(async () => {\r\n this.loadingService.start('.c-comment-loading');\r\n this.#items.next(await this.#load());\r\n this.loadingService.stop('.c-comment-loading');\r\n this.#scrollToBottom();\r\n }, this.commentOption.autoReload.timerMs);\r\n }\r\n }\r\n\r\n clearAllData = () => {\r\n this.message = '';\r\n }\r\n\r\n #scrollToBottom = () => {\r\n try {\r\n setTimeout(() => {\r\n this.commentScroll.nativeElement.scrollTop = this.commentScroll.nativeElement.scrollHeight;\r\n }, 500);\r\n } catch (err) {\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdComment } from './comment.component';\r\nimport { SdButtonModule } from '@sd-angular/core/button';\r\nimport { SdInputModule } from '@sd-angular/core/input';\r\nimport { SdTextareaModule } from '@sd-angular/core/textarea';\r\nimport { SdUtilityModule } from '@sd-angular/core/utility';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport {SdEditorModule} from '@sd-angular/core/editor';\r\nimport {SdModalModule} from '@sd-angular/core/modal';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n SdTranslateModule,\r\n SdButtonModule,\r\n SdInputModule,\r\n SdTextareaModule,\r\n SdEditorModule,\r\n SdUtilityModule,\r\n SdModalModule\r\n ],\r\n declarations: [\r\n SdComment\r\n ],\r\n exports: [\r\n SdComment\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdCommentModule { }\r\n"]}
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"SdCommentModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":14,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/material/tooltip","name":"MatTooltipModule","line":19,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/translate","name":"SdTranslateModule","line":20,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/button","name":"SdButtonModule","line":21,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/input","name":"SdInputModule","line":22,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/textarea","name":"SdTextareaModule","line":23,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/editor","name":"SdEditorModule","line":24,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/utility","name":"SdUtilityModule","line":25,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/modal","name":"SdModalModule","line":26,"character":4}],"declarations":[{"__symbolic":"reference","name":"SdComment"}],"exports":[{"__symbolic":"reference","name":"SdComment"}],"providers":[]}]}],"members":{}},"SdCommentOption":{"__symbolic":"interface"},"Comment":{"__symbolic":"interface"},"SdComment":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":15,"character":1},"arguments":[{"selector":"sd-comment","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":19,"character":19},"member":"OnPush"},"template":"<div class=\"c-container\">\r\n <div class=\"c-header\">\r\n <div class=\"c-title\">{{'Comments' | sdTranslate}} <a href=\"javascript:;\">({{count | async}})</a></div>\r\n </div>\r\n <div class=\"c-body c-comment-loading\" *ngIf=\"commentOption?.style==='basic'\" #commentScroll>\r\n <ng-container *ngFor=\"let item of items | async\">\r\n <div class=\"d-flex my-8\">\r\n <div class=\"c-avatar mr-12\">\r\n <img height=\"32\" width=\"32px\" [src]=\"item.picture\">\r\n </div>\r\n <div class=\"c-comment\">\r\n <div class=\"c-info mb-4\">\r\n {{'By' | sdTranslate}}\r\n <span class=\"c-creator ml-2\">\r\n {{item.creator}}\r\n </span>\r\n <ng-container *ngIf=\"item.createdDate\">\r\n <span class=\"mx-4\">•</span>\r\n <span\r\n [matTooltip]=\"item.createdDate | date:'dd/MM/yyyy HH:mm'\">{{item.createdDate | sdTimeDifferent:'dd/MM/yyyy HH:mm':'hour' | async}}</span>\r\n </ng-container>\r\n </div>\r\n <div class=\"c-content\" [innerHtml]=\"item.content\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"c-body-style1 c-comment-loading\" *ngIf=\"commentOption?.style==='style1'\" sdScroll #commentScroll>\r\n <ng-container *ngFor=\"let item of items | async; let i = index\">\r\n <div class=\"d-flex my-8\">\r\n <div class=\"c-avatar mr-12\">\r\n <img height=\"32\" width=\"32px\" [src]=\"item.picture\">\r\n </div>\r\n <div class=\"c-comment {{i + 1 === (count | async) ? 'c-comment-border': ''}}\">\r\n <div class=\"c-info mb-4\">\r\n <div class=\"c-col-left\">\r\n <div class=\"c-creator\">\r\n {{item.creator}}\r\n </div>\r\n <div class=\"c-email\">\r\n {{item.email}}\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"item.createdDate\">\r\n <div class=\"c-col-right\"\r\n [matTooltip]=\"item.createdDate | date:'dd/MM/yyyy H:mm'\">{{item.createdDate | date:'dd/MM/yyyy H:mm'}}</div>\r\n </ng-container>\r\n </div>\r\n <div class=\"c-content\" [innerHtml]=\"item.content\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"c-footer p-16\">\r\n <div class=\"row\">\r\n <div class=\"col-12 c-position-relative\">\r\n <ng-container *ngIf=\"commentOption?.editor?.enabled else noUseEditor\">\r\n <div class=\"mb-8\">\r\n <sd-editor [(model)]=\"message\" [styles]=\"commentOption?.editor?.styles\"\r\n [toolbar]=\"commentOption?.editor?.toolbar\"\r\n [mentionValues]=\"commentOption?.editor?.mentionValues\"\r\n [hashTagValues]=\"commentOption?.editor?.hashTagValues\"></sd-editor>\r\n </div>\r\n <div *ngIf=\"commentOption?.fullComment?.enabled\" class=\"c-full-comment-backdrop\"\r\n (click)=\"modalFullComment.open()\"></div>\r\n </ng-container>\r\n <ng-template #noUseEditor>\r\n <sd-textarea [(model)]=\"message\" rows=\"1\" autoHeight></sd-textarea>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <sd-button class=\"float-right\" title=\"Gửi\" (action)=\"onSend()\" [disabled]=\"!message\" color=\"primary\" type=\"fill\"\r\n size=\"sm\">\r\n </sd-button>\r\n <sd-button class=\"float-right mr-8\" title=\"Tải lại\" (action)=\"reload()\" *ngIf=\"commentOption?.autoReload?.enabledButton\" color=\"warning\" type=\"fill\"\r\n size=\"sm\">\r\n </sd-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<sd-modal [title]=\"'Comments' | sdTranslate\" width=\"sm\" [closeClickOutSide]=\"commentOption?.fullComment?.closeClickOutSide\" #modalFullComment>\r\n <sd-modal-body>\r\n <sd-editor [(model)]=\"message\" [styles]=\"fullCommentStyles\"\r\n [toolbar]=\"commentOption?.editor?.toolbar\"\r\n [mentionValues]=\"commentOption?.editor?.mentionValues\"\r\n [hashTagValues]=\"commentOption?.editor?.hashTagValues\"\r\n [args]=\"commentOption?.editor?.args\"></sd-editor>\r\n </sd-modal-body>\r\n <sd-modal-footer>\r\n <sd-button class=\"ml-8\" title=\"Xóa toàn bộ\" size=\"sm\" type=\"link\"\r\n (action)=\"clearAllData()\">\r\n </sd-button>\r\n <sd-button *ngIf=\"!commentOption?.fullComment?.enableSendButton\" class=\"ml-8\" title=\"Đóng\" size=\"sm\" (action)=\"modalFullComment.close()\"\r\n color=\"primary\" type=\"fill\">\r\n </sd-button>\r\n <sd-button class=\"ml-8\" title=\"Tải lại\" (action)=\"reload()\" *ngIf=\"commentOption?.autoReload?.enabledButton\" color=\"warning\" type=\"fill\"\r\n size=\"sm\">\r\n </sd-button>\r\n <sd-button *ngIf=\"commentOption?.fullComment?.enableSendButton\" class=\"ml-8\" title=\"Gửi\" size=\"sm\" (action)=\"onSend();modalFullComment.close();\" [disabled]=\"!message\"\r\n color=\"primary\" type=\"fill\">\r\n </sd-button>\r\n </sd-modal-footer>\r\n</sd-modal>\r\n","styles":[".text-black400{color:#757575}.c-container{display:flex;flex-direction:column;height:100%}.c-container .c-header{align-items:center;background-color:#fff;display:flex;height:40px;padding:0 16px}.c-container .c-header .c-title{font-weight:500}.c-container .c-body{background:#f8f9fa;flex:1;overflow-y:hidden;padding:16px}.c-container .c-body:hover{overflow-y:auto}.c-container .c-body .c-comment{background:#fff;border:1px solid #f2f2f2;border-radius:4px;flex:1;overflow-wrap:break-word;padding:12px 16px;white-space:pre-wrap;word-break:break-word}.c-container .c-body .c-comment .c-info{color:#757575}.c-container .c-body .c-comment .c-info .c-creator{color:#000;font-weight:500}.c-container .c-body-style1{background:#fff;flex:1;overflow-y:hidden;padding:16px}.c-container .c-body-style1 .c-comment{background:#fff;border-bottom:3px solid #f2f2f2;border-radius:4px;flex:1;overflow-wrap:break-word;white-space:pre-wrap;word-break:break-word}.c-container .c-body-style1 .c-comment .c-info{color:#757575}.c-container .c-body-style1 .c-comment .c-info .c-creator{color:#000;font-weight:500;white-space:nowrap}.c-container .c-body-style1 .c-comment .c-info .c-email{color:#000;font-weight:400;white-space:nowrap}.c-container .c-body-style1 .c-comment .c-info .c-col-left{display:inline-block;overflow:hidden;vertical-align:top;width:calc(100% - 128px)}.c-container .c-body-style1 .c-comment .c-info .c-col-right{display:inline-block;margin-left:8px;width:120px}.c-container .c-body-style1 .c-comment-border{border-bottom:none}.c-container .c-footer{background:#fff;min-height:120px}.c-container .c-footer .c-position-relative{position:relative}.c-container .c-footer .c-full-comment-backdrop{height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}"]}]}],"members":{"commentScroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":22,"character":3},"arguments":["commentScroll"]}]}],"textarea":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":23,"character":3},"arguments":[{"__symbolic":"reference","module":"@sd-angular/core/textarea","name":"SdTextarea","line":23,"character":13}]}]}],"option":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@sd-angular/core/loading","name":"SdLoadingService","line":43,"character":28}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}]}}},"origins":{"SdCommentModule":"./src/lib/comment.module","SdCommentOption":"./src/lib/comment.model","Comment":"./src/lib/comment.model","SdComment":"./src/lib/comment.component"},"importAs":"@sd-angular/core/comment"}
1
+ {"__symbolic":"module","version":4,"metadata":{"SdCommentModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":14,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/material/tooltip","name":"MatTooltipModule","line":19,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/translate","name":"SdTranslateModule","line":20,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/button","name":"SdButtonModule","line":21,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/input","name":"SdInputModule","line":22,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/textarea","name":"SdTextareaModule","line":23,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/editor","name":"SdEditorModule","line":24,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/utility","name":"SdUtilityModule","line":25,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/modal","name":"SdModalModule","line":26,"character":4}],"declarations":[{"__symbolic":"reference","name":"SdComment"}],"exports":[{"__symbolic":"reference","name":"SdComment"}],"providers":[]}]}],"members":{}},"SdCommentOption":{"__symbolic":"interface"},"Comment":{"__symbolic":"interface"},"SdComment":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":15,"character":1},"arguments":[{"selector":"sd-comment","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":19,"character":19},"member":"OnPush"},"template":"<div class=\"c-container\">\r\n <div class=\"c-header\">\r\n <div class=\"c-title\">{{'Comments' | sdTranslate}} <a href=\"javascript:;\">({{count | async}})</a></div>\r\n </div>\r\n <div class=\"c-body c-comment-loading\" *ngIf=\"commentOption?.style==='basic'\" #commentScroll>\r\n <ng-container *ngFor=\"let item of items | async\">\r\n <div class=\"d-flex my-8\">\r\n <div class=\"c-avatar mr-12\">\r\n <img height=\"32\" width=\"32px\" [src]=\"item.picture\">\r\n </div>\r\n <div class=\"c-comment\">\r\n <div class=\"c-info mb-4\">\r\n {{'By' | sdTranslate}}\r\n <span class=\"c-creator ml-2\">\r\n {{item.creator}}\r\n </span>\r\n <ng-container *ngIf=\"item.createdDate\">\r\n <span class=\"mx-4\">•</span>\r\n <span\r\n [matTooltip]=\"item.createdDate | date:'dd/MM/yyyy HH:mm'\">{{item.createdDate | sdTimeDifferent:'dd/MM/yyyy HH:mm':'hour' | async}}</span>\r\n </ng-container>\r\n </div>\r\n <div class=\"c-content\" [innerHtml]=\"item.content\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"c-body-style1 c-comment-loading\" *ngIf=\"commentOption?.style==='style1'\" sdScroll #commentScroll>\r\n <ng-container *ngFor=\"let item of items | async; let i = index\">\r\n <div class=\"d-flex my-8\">\r\n <div class=\"c-avatar mr-12\">\r\n <img height=\"32\" width=\"32px\" [src]=\"item.picture\">\r\n </div>\r\n <div class=\"c-comment {{i + 1 === (count | async) ? 'c-comment-border': ''}}\">\r\n <div class=\"c-info mb-4\">\r\n <div class=\"c-col-left\">\r\n <div class=\"c-creator\">\r\n {{item.creator}}\r\n </div>\r\n <div class=\"c-email\">\r\n {{item.email}}\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"item.createdDate\">\r\n <div class=\"c-col-right\"\r\n [matTooltip]=\"item.createdDate | date:'dd/MM/yyyy H:mm'\">{{item.createdDate | date:'dd/MM/yyyy H:mm'}}</div>\r\n </ng-container>\r\n </div>\r\n <div class=\"c-content\" [innerHtml]=\"item.content\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"c-footer p-16\">\r\n <div class=\"row\">\r\n <div class=\"col-12 c-position-relative\">\r\n <ng-container *ngIf=\"commentOption?.editor?.enabled else noUseEditor\">\r\n <div class=\"mb-8\">\r\n <sd-editor [(model)]=\"message\" [styles]=\"commentOption?.editor?.styles\"\r\n [toolbar]=\"commentOption?.editor?.toolbar\"\r\n [mentionValues]=\"commentOption?.editor?.mentionValues\"\r\n [hashTagValues]=\"commentOption?.editor?.hashTagValues\" [args]=\"commentOption?.editor?.args\"></sd-editor>\r\n </div>\r\n <div *ngIf=\"commentOption?.fullComment?.enabled\" class=\"c-full-comment-backdrop\"\r\n (click)=\"modalFullComment.open()\"></div>\r\n </ng-container>\r\n <ng-template #noUseEditor>\r\n <sd-textarea [(model)]=\"message\" rows=\"1\" autoHeight></sd-textarea>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <sd-button class=\"float-right\" title=\"Gửi\" (action)=\"onSend()\" [disabled]=\"!message\" color=\"primary\" type=\"fill\"\r\n size=\"sm\">\r\n </sd-button>\r\n <sd-button class=\"float-right mr-8\" title=\"Tải lại\" (action)=\"reload()\" *ngIf=\"commentOption?.autoReload?.enabledButton\" color=\"warning\" type=\"fill\"\r\n size=\"sm\">\r\n </sd-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<sd-modal [title]=\"'Comments' | sdTranslate\" width=\"sm\" [closeClickOutSide]=\"commentOption?.fullComment?.closeClickOutSide\" #modalFullComment>\r\n <sd-modal-body>\r\n <sd-editor [(model)]=\"message\" [styles]=\"fullCommentStyles\"\r\n [toolbar]=\"commentOption?.editor?.toolbar\"\r\n [mentionValues]=\"commentOption?.editor?.mentionValues\"\r\n [hashTagValues]=\"commentOption?.editor?.hashTagValues\"\r\n [args]=\"commentOption?.editor?.args\"></sd-editor>\r\n </sd-modal-body>\r\n <sd-modal-footer>\r\n <sd-button class=\"ml-8\" title=\"Xóa toàn bộ\" size=\"sm\" type=\"link\"\r\n (action)=\"clearAllData()\">\r\n </sd-button>\r\n <sd-button *ngIf=\"!commentOption?.fullComment?.enableSendButton\" class=\"ml-8\" title=\"Đóng\" size=\"sm\" (action)=\"modalFullComment.close()\"\r\n color=\"primary\" type=\"fill\">\r\n </sd-button>\r\n <sd-button class=\"ml-8\" title=\"Tải lại\" (action)=\"reload()\" *ngIf=\"commentOption?.autoReload?.enabledButton\" color=\"warning\" type=\"fill\"\r\n size=\"sm\">\r\n </sd-button>\r\n <sd-button *ngIf=\"commentOption?.fullComment?.enableSendButton\" class=\"ml-8\" title=\"Gửi\" size=\"sm\" (action)=\"onSend();modalFullComment.close();\" [disabled]=\"!message\"\r\n color=\"primary\" type=\"fill\">\r\n </sd-button>\r\n </sd-modal-footer>\r\n</sd-modal>\r\n","styles":[".text-black400{color:#757575}.c-container{display:flex;flex-direction:column;height:100%}.c-container .c-header{align-items:center;background-color:#fff;display:flex;height:40px;padding:0 16px}.c-container .c-header .c-title{font-weight:500}.c-container .c-body{background:#f8f9fa;flex:1;overflow-y:hidden;padding:16px}.c-container .c-body:hover{overflow-y:auto}.c-container .c-body .c-comment{background:#fff;border:1px solid #f2f2f2;border-radius:4px;flex:1;overflow-wrap:break-word;padding:12px 16px;white-space:pre-wrap;word-break:break-word}.c-container .c-body .c-comment .c-info{color:#757575}.c-container .c-body .c-comment .c-info .c-creator{color:#000;font-weight:500}.c-container .c-body-style1{background:#fff;flex:1;overflow-y:hidden;padding:16px}.c-container .c-body-style1 .c-comment{background:#fff;border-bottom:3px solid #f2f2f2;border-radius:4px;flex:1;overflow-wrap:break-word;white-space:pre-wrap;word-break:break-word}.c-container .c-body-style1 .c-comment .c-info{color:#757575}.c-container .c-body-style1 .c-comment .c-info .c-creator{color:#000;font-weight:500;white-space:nowrap}.c-container .c-body-style1 .c-comment .c-info .c-email{color:#000;font-weight:400;white-space:nowrap}.c-container .c-body-style1 .c-comment .c-info .c-col-left{display:inline-block;overflow:hidden;vertical-align:top;width:calc(100% - 128px)}.c-container .c-body-style1 .c-comment .c-info .c-col-right{display:inline-block;margin-left:8px;width:120px}.c-container .c-body-style1 .c-comment-border{border-bottom:none}.c-container .c-footer{background:#fff;min-height:120px}.c-container .c-footer .c-position-relative{position:relative}.c-container .c-footer .c-full-comment-backdrop{height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}"]}]}],"members":{"commentScroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":22,"character":3},"arguments":["commentScroll"]}]}],"textarea":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":23,"character":3},"arguments":[{"__symbolic":"reference","module":"@sd-angular/core/textarea","name":"SdTextarea","line":23,"character":13}]}]}],"option":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@sd-angular/core/loading","name":"SdLoadingService","line":43,"character":28}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}]}}},"origins":{"SdCommentModule":"./src/lib/comment.module","SdCommentOption":"./src/lib/comment.model","Comment":"./src/lib/comment.model","SdComment":"./src/lib/comment.component"},"importAs":"@sd-angular/core/comment"}
@@ -43,6 +43,7 @@ export class SdApiService {
43
43
  body,
44
44
  });
45
45
  }
46
+ const apiTimeout = (options === null || options === void 0 ? void 0 : options.timeout) || __classPrivateFieldGet(this, _timeout);
46
47
  if (!__classPrivateFieldGet(this, _cache)[hashKey] || Date.addMiliseconds(__classPrivateFieldGet(this, _cache)[hashKey].createdDate, __classPrivateFieldGet(this, _cacheDuration)) < new Date()) {
47
48
  __classPrivateFieldGet(this, _cache)[hashKey] = {
48
49
  createdDate: new Date(),
@@ -55,7 +56,7 @@ export class SdApiService {
55
56
  headers,
56
57
  responseType: options === null || options === void 0 ? void 0 : options.responseType,
57
58
  })
58
- .pipe(timeout(__classPrivateFieldGet(this, _timeout)))
59
+ .pipe(timeout(apiTimeout))
59
60
  .subscribe(res => {
60
61
  __classPrivateFieldGet(this, _cache)[hashKey].response = {
61
62
  status: 'success',
@@ -76,7 +77,7 @@ export class SdApiService {
76
77
  observe: 'response',
77
78
  headers,
78
79
  })
79
- .pipe(timeout(__classPrivateFieldGet(this, _timeout)))
80
+ .pipe(timeout(apiTimeout))
80
81
  .subscribe(res => {
81
82
  if (res.ok) {
82
83
  __classPrivateFieldGet(this, _cache)[hashKey].response = {
@@ -123,7 +124,9 @@ export class SdApiService {
123
124
  hours: options === null || options === void 0 ? void 0 : options.cacheHours,
124
125
  });
125
126
  if (!has()) {
126
- const result = yield this.post(url, body, options === null || options === void 0 ? void 0 : options.headers);
127
+ const result = yield this.post(url, body, options === null || options === void 0 ? void 0 : options.headers, {
128
+ timeout: 5000,
129
+ });
127
130
  set(result);
128
131
  return result;
129
132
  }
@@ -187,6 +190,7 @@ export class SdApiService {
187
190
  encodedUrl,
188
191
  headers,
189
192
  });
193
+ const apiTimeout = (options === null || options === void 0 ? void 0 : options.timeout) || __classPrivateFieldGet(this, _timeout);
190
194
  if (!__classPrivateFieldGet(this, _cache)[hashKey] || Date.addMiliseconds(__classPrivateFieldGet(this, _cache)[hashKey].createdDate, __classPrivateFieldGet(this, _cacheDuration)) < new Date()) {
191
195
  __classPrivateFieldGet(this, _cache)[hashKey] = {
192
196
  createdDate: new Date(),
@@ -195,7 +199,7 @@ export class SdApiService {
195
199
  if ((options === null || options === void 0 ? void 0 : options.responseType) && options.responseType !== 'json') {
196
200
  this.httpClient
197
201
  .get(encodedUrl, { observe: 'body', headers, responseType: options === null || options === void 0 ? void 0 : options.responseType })
198
- .pipe(timeout(__classPrivateFieldGet(this, _timeout)))
202
+ .pipe(timeout(apiTimeout))
199
203
  .subscribe(res => {
200
204
  __classPrivateFieldGet(this, _cache)[hashKey].response = {
201
205
  status: 'success',
@@ -213,7 +217,7 @@ export class SdApiService {
213
217
  else {
214
218
  this.httpClient
215
219
  .get(encodedUrl, { observe: 'response', headers })
216
- .pipe(timeout(__classPrivateFieldGet(this, _timeout)))
220
+ .pipe(timeout(apiTimeout))
217
221
  .subscribe(res => {
218
222
  if (res.ok) {
219
223
  __classPrivateFieldGet(this, _cache)[hashKey].response = {
@@ -260,7 +264,7 @@ export class SdApiService {
260
264
  hours: options === null || options === void 0 ? void 0 : options.cacheHours,
261
265
  });
262
266
  if (!has() || (options === null || options === void 0 ? void 0 : options.reload)) {
263
- const result = yield this.get(encodedUrl, options === null || options === void 0 ? void 0 : options.headers, { encodeURI: false });
267
+ const result = yield this.get(encodedUrl, options === null || options === void 0 ? void 0 : options.headers, { encodeURI: false, timeout: 5000 });
264
268
  set(result);
265
269
  return result;
266
270
  }
@@ -321,4 +325,4 @@ SdApiService.ctorParameters = () => [
321
325
  { type: SdCacheService },
322
326
  { type: SdTokenService }
323
327
  ];
324
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2FwaS8iLCJzb3VyY2VzIjpbInNyYy9saWIvYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBa0MsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBcUIsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7Ozs7OztBQUs3QixNQUFNLE9BQU8sWUFBWTtJQXFCdkIsWUFDVSxVQUFzQixFQUNVLGFBQWdDLEVBQ2hFLFlBQTRCLEVBQzVCLFlBQTRCO1FBSDVCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDVSxrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFDaEUsaUJBQVksR0FBWixZQUFZLENBQWdCO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFnQjtRQXhCOUIsYUFBUSxHQUFHLHVDQUF1QyxDQUFDO1FBRTNELG1CQUFXLE1BQU0sRUFBQyxDQUFDLE9BQU87UUFFMUIseUJBQWlCLElBQUksRUFBQyxDQUFDLEtBQUs7UUFDNUIsaUJBU0ksRUFBRSxFQUFDO1FBRUMsY0FBUyxHQUFHLENB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QUFPLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQztnQkFDekQsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMxQjtZQUNELE1BQU0sUUFBUSxHQUFhLElBQUksUUFBUSxFQUFFLENBQUM7WUFDMUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QyxPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFBLENBQUM7SUFyV0MsQ0FBQztJQUVKLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDOzs7OztZQWpDRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVhRLFVBQVU7NENBbUNkLE1BQU0sU0FBQyxVQUFVLGNBQUcsUUFBUTtZQWhDeEIsY0FBYztZQUNkLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgdGFrZSwgdGltZW91dCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSUFwaUNvbmZpZ3VyYXRpb24sIEFQSV9DT05GSUcgfSBmcm9tICcuL2FwaS5tb2RlbCc7XHJcbmltcG9ydCB7IFNkQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9jYWNoZSc7XHJcbmltcG9ydCB7IFNkVG9rZW5TZXJ2aWNlIH0gZnJvbSAnLi90b2tlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgaGFzaCBmcm9tICdvYmplY3QtaGFzaCc7XHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RBcGlTZXJ2aWNlIHtcclxuICBwcml2YXRlIHVwbG9hZElkID0gJ1UxMThmZWZiMS0zMDg1LTQ2NDEtOGNiOC1mN2ZlNWMyOGY1MDknO1xyXG5cclxuICAjdGltZW91dCA9IDEyMDAwMDsgLy8gMTIwc1xyXG5cclxuICAjY2FjaGVEdXJhdGlvbiA9IDIwMDA7IC8vIDJzXHJcbiAgI2NhY2hlOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiB7XHJcbiAgICAgIGNyZWF0ZWREYXRlOiBEYXRlO1xyXG4gICAgICBzdWJqZWN0OiBTdWJqZWN0PGFueT47XHJcbiAgICAgIHJlc3BvbnNlPzoge1xyXG4gICAgICAgIHN0YXR1cz86ICdzdWNjZXNzJyB8ICdlcnJvcic7XHJcbiAgICAgICAgcmVzdWx0OiBhbnk7XHJcbiAgICAgIH07XHJcbiAgICB9O1xyXG4gIH0gPSB7fTtcclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGUgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uPy50cmFuc2xhdGUodmFsdWUpIHx8IHZhbHVlO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgQEluamVjdChBUElfQ09ORklHKSBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbmZpZ3VyYXRpb246IElBcGlDb25maWd1cmF0aW9uLFxyXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IFNkQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b2tlblNlcnZpY2U6IFNkVG9rZW5TZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBnZXQgaHR0cCgpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQ7XHJcbiAgfVxyXG5cclxuICBwb3N0ID0gYXN5bmMgPFQgPSBhbnk+KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBib2R5PzogYW55LFxyXG4gICAgaGVhZGVycz86IEh0dHBIZWFkZXJzLFxyXG4gICAgb3B0aW9ucz86IHtcclxuICAgICAgcmVzcG9uc2VUeXBlPzogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0JztcclxuICAgIH1cclxuICApOiBQcm9taXNlPFQ+ID0+IHtcclxuICAgIGhlYWRlcnMgPVxyXG4gICAgICBoZWFkZXJzIHx8XHJcbiAgICAgIHRoaXMudG9rZW5TZXJ2aWNlLmN1c3RvbUhlYWRlcnMoe1xyXG4gICAgICAgIHVybCxcclxuICAgICAgfSk7XHJcbiAgICBsZXQgaGFzaEtleSA9IHV1aWQudjQoKTtcclxuICAgIGlmICghKGJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSkpIHtcclxuICAgICAgaGFzaEtleSA9IGhhc2goe1xyXG4gICAgICAgIHVybCxcclxuICAgICAgICBoZWFkZXJzLFxyXG4gICAgICAgIGJvZHksXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLiNjYWNoZVtoYXNoS2V5XSB8fCBEYXRlLmFkZE1pbGlzZWNvbmRzKHRoaXMuI2NhY2hlW2hhc2hLZXldLmNyZWF0ZWREYXRlLCB0aGlzLiNjYWNoZUR1cmF0aW9uKSA8IG5ldyBEYXRlKCkpIHtcclxuICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0gPSB7XHJcbiAgICAgICAgY3JlYXRlZERhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgc3ViamVjdDogbmV3IFN1YmplY3QoKSxcclxuICAgICAgfTtcclxuICAgICAgaWYgKG9wdGlvbnM/LnJlc3BvbnNlVHlwZSAmJiBvcHRpb25zLnJlc3BvbnNlVHlwZSAhPT0gJ2pzb24nKSB7XHJcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgICAgICAucG9zdChlbmNvZGVVUkkodXJsKSwgYm9keSwge1xyXG4gICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXHJcbiAgICAgICAgICAgIGhlYWRlcnMsXHJcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogb3B0aW9ucz8ucmVzcG9uc2VUeXBlIGFzIGFueSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAucGlwZSh0aW1lb3V0KHRoaXMuI3RpbWVvdXQpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgICAgICAgcmVzdWx0OiByZXMsXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0Lm5leHQocmVzKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgIHJlc3VsdDogZXJyLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAgICAgLnBvc3QoZW5jb2RlVVJJKHVybCksIGJvZHksIHtcclxuICAgICAgICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcclxuICAgICAgICAgICAgaGVhZGVycyxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAucGlwZSh0aW1lb3V0KHRoaXMuI3RpbWVvdXQpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzLm9rKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXHJcbiAgICAgICAgICAgICAgICAgIHJlc3VsdDogcmVzLmJvZHksXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5uZXh0KHJlcy5ib2R5KTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgICAgcmVzdWx0OiByZXMuYm9keSxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0LmVycm9yKHJlcy5ib2R5KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICByZXN1bHQ6IGVycixcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlPy5zdGF0dXMpIHtcclxuICAgICAgaWYgKHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlPy5zdGF0dXMgPT09ICdzdWNjZXNzJykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgICAgdGhyb3cgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UucmVzdWx0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QucGlwZSh0YWtlKDEpKS50b1Byb21pc2UoKTtcclxuICB9O1xyXG5cclxuICBwb3N0Q2FjaGUgPSBhc3luYyA8VCA9IGFueT4oXHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIGJvZHk/OiBhbnksXHJcbiAgICBvcHRpb25zPzoge1xyXG4gICAgICBjYWNoZVR5cGU/OiAnZGVmYXVsdCcgfCAnc2Vzc2lvbicgfCAnbG9jYWwnO1xyXG4gICAgICBjYWNoZUhvdXJzPzogbnVtYmVyO1xyXG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XHJcbiAgICB9XHJcbiAgKTogUHJvbWlzZTxUPiA9PiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID1cclxuICAgICAgb3B0aW9ucz8uaGVhZGVycyB8fFxyXG4gICAgICB0aGlzLnRva2VuU2VydmljZS5jdXN0b21IZWFkZXJzKHtcclxuICAgICAgICB1cmwsXHJcbiAgICAgIH0pO1xyXG4gICAgY29uc3QgeyBnZXQsIHNldCwgaGFzIH0gPSB0aGlzLmNhY2hlU2VydmljZS5jcmVhdGUoXHJcbiAgICAgIHtcclxuICAgICAgICB1cmwsXHJcbiAgICAgICAgaGVhZGVycyxcclxuICAgICAgICBib2R5LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogb3B0aW9ucz8uY2FjaGVUeXBlLFxyXG4gICAgICAgIGhvdXJzOiBvcHRpb25zPy5jYWNoZUhvdXJzLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgaWYgKCFoYXMoKSkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnBvc3QodXJsLCBib2R5LCBvcHRpb25zPy5oZWFkZXJzKTtcclxuICAgICAgc2V0KHJlc3VsdCk7XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZ2V0KCk7XHJcbiAgfTtcclxuXHJcbiAgcHV0ID0gYXN5bmMgPFQgPSBhbnk+KHVybDogc3RyaW5nLCBib2R5PzogYW55LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMpOiBQcm9taXNlPFQ+ID0+IHtcclxuICAgIGhlYWRlcnMgPVxyXG4gICAgICBoZWFkZXJzIHx8XHJcbiAgICAgIHRoaXMudG9rZW5TZXJ2aWNlLmN1c3RvbUhlYWRlcnMoe1xyXG4gICAgICAgIHVybCxcclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAgIC5wdXQoZW5jb2RlVVJJKHVybCksIGJvZHksIHtcclxuICAgICAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXHJcbiAgICAgICAgICBoZWFkZXJzLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnBpcGUodGltZW91dCh0aGlzLiN0aW1lb3V0KSlcclxuICAgICAgICAudG9Qcm9taXNlKClcclxuICAgICAgICAudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC5vaykge1xyXG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5ib2R5KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlamVjdChyZXN1bHQuYm9keSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGh0dHBFcnJvclJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmVqZWN0KGh0dHBFcnJvclJlc3BvbnNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gICNkZWZpbmVQYXJhbXMgPSAocmVxdWVzdDogYW55KSA9PiB7XHJcbiAgICBjb25zdCBycSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocmVxdWVzdCkpIHtcclxuICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09ICcnICYmIHZhbHVlPy50b1N0cmluZygpICE9PSAnJykge1xyXG4gICAgICAgIHJxLnB1c2goYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSBhcyBzdHJpbmcpfT0ke2VuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSBhcyBzdHJpbmcpfWApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYD8ke3JxPy5qb2luKCcmJyl9YDtcclxuICB9O1xyXG5cclxuICBnZXRXaXRoUGFyYW1zID0gYXN5bmMgPFQgPSBhbnk+KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBwYXJhbXM6IGFueSxcclxuICAgIG9wdGlvbnM/OiB7XHJcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcclxuICAgICAgcmVzcG9uc2VUeXBlPzogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0JztcclxuICAgIH1cclxuICApOiBQcm9taXNlPFQ+ID0+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmdldChgJHt1cmx9JHt0aGlzLiNkZWZpbmVQYXJhbXMocGFyYW1zKX1gLCBvcHRpb25zPy5oZWFkZXJzLCB7IC4uLm9wdGlvbnMsIGVuY29kZVVSSTogZmFsc2UgfSk7XHJcbiAgfTtcclxuXHJcbiAgZ2V0Q2FjaGVXaXRoUGFyYW1zID0gYXN5bmMgPFQgPSBhbnk+KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBwYXJhbXM6IGFueSxcclxuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyxcclxuICAgIG9wdGlvbnM/OiB7XHJcbiAgICAgIHJlbG9hZD86IGJvb2xlYW47XHJcbiAgICAgIGNhY2hlVHlwZT86ICdkZWZhdWx0JyB8ICdzZXNzaW9uJyB8ICdsb2NhbCc7XHJcbiAgICAgIGNhY2hlSG91cnM/OiBudW1iZXI7XHJcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcclxuICAgIH1cclxuICApOiBQcm9taXNlPFQ+ID0+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmdldENhY2hlKGAke3VybH0ke3RoaXMuI2RlZmluZVBhcmFtcyhwYXJhbXMpfWAsIHsgLi4ub3B0aW9ucywgaGVhZGVycywgZW5jb2RlVVJJOiBmYWxzZSB9KTtcclxuICB9O1xyXG5cclxuICBnZXQgPSBhc3luYyA8VCA9IGFueT4oXHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyxcclxuICAgIG9wdGlvbnM/OiB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XHJcbiAgICAgIGVuY29kZVVSST86IGJvb2xlYW47XHJcbiAgICB9XHJcbiAgKTogUHJvbWlzZTxUPiA9PiB7XHJcbiAgICBoZWFkZXJzID1cclxuICAgICAgaGVhZGVycyB8fFxyXG4gICAgICB0aGlzLnRva2VuU2VydmljZS5jdXN0b21IZWFkZXJzKHtcclxuICAgICAgICB1cmwsXHJcbiAgICAgIH0pO1xyXG4gICAgY29uc3QgZW5jb2RlZFVybCA9IG9wdGlvbnM/LmVuY29kZVVSSSA9PT0gZmFsc2UgPyB1cmwgOiBlbmNvZGVVUkkodXJsKTtcclxuICAgIC8vIGNvbnN0IGhhc2hLZXkgPSBoYXNoKHtcclxuICAgIC8vICAgZW5jb2RlZFVybCxcclxuICAgIC8vICAgaGVhZGVyc1xyXG4gICAgLy8gfSk7XHJcbiAgICBjb25zdCBoYXNoS2V5ID0gaGFzaCh7XHJcbiAgICAgIGVuY29kZWRVcmwsXHJcbiAgICAgIGhlYWRlcnMsXHJcbiAgICB9KTtcclxuICAgIGlmICghdGhpcy4jY2FjaGVbaGFzaEtleV0gfHwgRGF0ZS5hZGRNaWxpc2Vjb25kcyh0aGlzLiNjYWNoZVtoYXNoS2V5XS5jcmVhdGVkRGF0ZSwgdGhpcy4jY2FjaGVEdXJhdGlvbikgPCBuZXcgRGF0ZSgpKSB7XHJcbiAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldID0ge1xyXG4gICAgICAgIGNyZWF0ZWREYXRlOiBuZXcgRGF0ZSgpLFxyXG4gICAgICAgIHN1YmplY3Q6IG5ldyBTdWJqZWN0KCksXHJcbiAgICAgIH07XHJcbiAgICAgIGlmIChvcHRpb25zPy5yZXNwb25zZVR5cGUgJiYgb3B0aW9ucy5yZXNwb25zZVR5cGUgIT09ICdqc29uJykge1xyXG4gICAgICAgIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAgICAgLmdldChlbmNvZGVkVXJsLCB7IG9ic2VydmU6ICdib2R5JywgaGVhZGVycywgcmVzcG9uc2VUeXBlOiBvcHRpb25zPy5yZXNwb25zZVR5cGUgYXMgYW55IH0pXHJcbiAgICAgICAgICAucGlwZSh0aW1lb3V0KHRoaXMuI3RpbWVvdXQpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgICAgICAgcmVzdWx0OiByZXMsXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0Lm5leHQocmVzKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgIHJlc3VsdDogZXJyLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAgICAgLmdldChlbmNvZGVkVXJsLCB7IG9ic2VydmU6ICdyZXNwb25zZScsIGhlYWRlcnMgfSlcclxuICAgICAgICAgIC5waXBlKHRpbWVvdXQodGhpcy4jdGltZW91dCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMub2spIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgICAgICAgICBzdGF0dXM6ICdzdWNjZXNzJyxcclxuICAgICAgICAgICAgICAgICAgcmVzdWx0OiByZXMuYm9keSxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0Lm5leHQocmVzLmJvZHkpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgICAgICByZXN1bHQ6IHJlcy5ib2R5LFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QuZXJyb3IocmVzLmJvZHkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgIHJlc3VsdDogZXJyLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2U/LnN0YXR1cykge1xyXG4gICAgICBpZiAodGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2U/LnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgICB0aHJvdyB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZS5yZXN1bHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xyXG4gIH07XHJcblxyXG4gIGdldENhY2hlID0gYXN5bmMgPFQgPSBhbnk+KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBvcHRpb25zPzoge1xyXG4gICAgICByZWxvYWQ/OiBib29sZWFuO1xyXG4gICAgICBjYWNoZVR5cGU/OiAnZGVmYXVsdCcgfCAnc2Vzc2lvbicgfCAnbG9jYWwnO1xyXG4gICAgICBjYWNoZUhvdXJzPzogbnVtYmVyO1xyXG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XHJcbiAgICAgIGVuY29kZVVSST86IGJvb2xlYW47XHJcbiAgICB9XHJcbiAgKTogUHJvbWlzZTxUPiA9PiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID1cclxuICAgICAgb3B0aW9ucz8uaGVhZGVycyB8fFxyXG4gICAgICB0aGlzLnRva2VuU2VydmljZS5jdXN0b21IZWFkZXJzKHtcclxuICAgICAgICB1cmwsXHJcbiAgICAgIH0pO1xyXG4gICAgY29uc3QgZW5jb2RlZFVybCA9IG9wdGlvbnM/LmVuY29kZVVSSSA9PT0gZmFsc2UgPyB1cmwgOiBlbmNvZGVVUkkodXJsKTtcclxuICAgIGNvbnN0IHsgZ2V0LCBzZXQsIGhhcyB9ID0gdGhpcy5jYWNoZVNlcnZpY2UuY3JlYXRlKFxyXG4gICAgICB7XHJcbiAgICAgICAgZW5jb2RlZFVybCxcclxuICAgICAgICBoZWFkZXJzLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogb3B0aW9ucz8uY2FjaGVUeXBlLFxyXG4gICAgICAgIGhvdXJzOiBvcHRpb25zPy5jYWNoZUhvdXJzLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgaWYgKCFoYXMoKSB8fCBvcHRpb25zPy5yZWxvYWQpIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXQoZW5jb2RlZFVybCwgb3B0aW9ucz8uaGVhZGVycywgeyBlbmNvZGVVUkk6IGZhbHNlIH0pO1xyXG4gICAgICBzZXQocmVzdWx0KTtcclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuICAgIHJldHVybiBnZXQoKTtcclxuICB9O1xyXG5cclxuICBkZWxldGUgPSBhc3luYyA8VCA9IGFueT4odXJsOiBzdHJpbmcsIGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IFByb21pc2U8VD4gPT4ge1xyXG4gICAgaGVhZGVycyA9XHJcbiAgICAgIGhlYWRlcnMgfHxcclxuICAgICAgdGhpcy50b2tlblNlcnZpY2UuY3VzdG9tSGVhZGVycyh7XHJcbiAgICAgICAgdXJsLFxyXG4gICAgICB9KTtcclxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgICAgLmRlbGV0ZShlbmNvZGVVUkkodXJsKSwgeyBvYnNlcnZlOiAncmVzcG9uc2UnLCBoZWFkZXJzIH0pXHJcbiAgICAgICAgLnBpcGUodGltZW91dCh0aGlzLiN0aW1lb3V0KSlcclxuICAgICAgICAudG9Qcm9taXNlKClcclxuICAgICAgICAudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC5vaykge1xyXG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5ib2R5KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlamVjdChyZXN1bHQuYm9keSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGh0dHBFcnJvclJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmVqZWN0KGh0dHBFcnJvclJlc3BvbnNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIHVwbG9hZFNpbmdsZSA9IChcclxuICAgIHVybDogc3RyaW5nLFxyXG4gICAgb3B0aW9uPzoge1xyXG4gICAgICBleHRlbnNpb25zPzogc3RyaW5nW107XHJcbiAgICAgIG1heFNpemVJbk1iPzogbnVtYmVyO1xyXG4gICAgICB2YWxpZGF0b3I/OiAoZmlsZU5hbWU6IHN0cmluZykgPT4gc3RyaW5nO1xyXG4gICAgfVxyXG4gICk6IFByb21pc2U8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gU2RVdGlsaXR5LnVwbG9hZChvcHRpb24pLnRoZW4oZmlsZSA9PiB0aGlzLnVwbG9hZCh1cmwsIGZpbGUpKTtcclxuICB9O1xyXG5cclxuICB1cGxvYWQgPSBhc3luYyAodXJsOiBzdHJpbmcsIGZpbGU6IEZpbGUpID0+IHtcclxuICAgIGNvbnN0IGxhc3REb3QgPSBmaWxlLm5hbWUubGFzdEluZGV4T2YoJy4nKTtcclxuICAgIGlmIChsYXN0RG90ID09PSAtMSkge1xyXG4gICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGUoYEludmFsaWQgZmlsZSBleHRlbnNpb25gKTtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlLCBmaWxlLm5hbWUpO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucG9zdCh1cmwsIGZvcm1EYXRhKTtcclxuICB9O1xyXG59XHJcbiJdfQ==
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2FwaS8iLCJzb3VyY2VzIjpbInNyYy9saWIvYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBa0MsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBcUIsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7Ozs7OztBQUs3QixNQUFNLE9BQU8sWUFBWTtJQXFCdkIsWUFDVSxVQUFzQixFQUNVLGFBQWdDLEVBQ2hFLFlBQTRCLEVBQzVCLFlBQTRCO1FBSDVCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDVSxrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFDaEUsaUJBQVksR0FBWixZQUFZLENBQWdCO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFnQjtRQXhCOUIsYUFBUSxHQUFHLHVDQUF1QyxDQUFDO1FBRTNELG1CQUFXLE1BQU0sRUFBQyxDQUFDLE9BQU87UUFFMUIseUJBQWlCLElBQUksRUFBQyxDQUFDLEtBQUs7UUFDNUIsaUJBU0ksRUFBRSxFQUFDO1FBRUMsY0FBUyxHQUFHLENB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QyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQztRQUVGLFdBQU0sR0FBRyxDQUFPLEdBQVcsRUFBRSxJQUFVLEVBQUUsRUFBRTtZQUN6QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQyxJQUFJLE9BQU8sS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDbEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2dCQUN6RCxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzFCO1lBQ0QsTUFBTSxRQUFRLEdBQWEsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMxQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUEsQ0FBQztJQTNXQyxDQUFDO0lBRUosSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7Ozs7O1lBakNGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBWFEsVUFBVTs0Q0FtQ2QsTUFBTSxTQUFDLFVBQVUsY0FBRyxRQUFRO1lBaEN4QixjQUFjO1lBQ2QsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyB0YWtlLCB0aW1lb3V0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBJQXBpQ29uZmlndXJhdGlvbiwgQVBJX0NPTkZJRyB9IGZyb20gJy4vYXBpLm1vZGVsJztcclxuaW1wb3J0IHsgU2RDYWNoZVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2NhY2hlJztcclxuaW1wb3J0IHsgU2RUb2tlblNlcnZpY2UgfSBmcm9tICcuL3Rva2VuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCBoYXNoIGZyb20gJ29iamVjdC1oYXNoJztcclxuaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZEFwaVNlcnZpY2Uge1xyXG4gIHByaXZhdGUgdXBsb2FkSWQgPSAnVTExOGZlZmIxLTMwODUtNDY0MS04Y2I4LWY3ZmU1YzI4ZjUwOSc7XHJcblxyXG4gICN0aW1lb3V0ID0gMTIwMDAwOyAvLyAxMjBzXHJcblxyXG4gICNjYWNoZUR1cmF0aW9uID0gMjAwMDsgLy8gMnNcclxuICAjY2FjaGU6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IHtcclxuICAgICAgY3JlYXRlZERhdGU6IERhdGU7XHJcbiAgICAgIHN1YmplY3Q6IFN1YmplY3Q8YW55PjtcclxuICAgICAgcmVzcG9uc2U/OiB7XHJcbiAgICAgICAgc3RhdHVzPzogJ3N1Y2Nlc3MnIHwgJ2Vycm9yJztcclxuICAgICAgICByZXN1bHQ6IGFueTtcclxuICAgICAgfTtcclxuICAgIH07XHJcbiAgfSA9IHt9O1xyXG5cclxuICBwcml2YXRlIHRyYW5zbGF0ZSA9ICh2YWx1ZTogc3RyaW5nKTogc3RyaW5nID0+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb24/LnRyYW5zbGF0ZSh2YWx1ZSkgfHwgdmFsdWU7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICBASW5qZWN0KEFQSV9DT05GSUcpIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlndXJhdGlvbjogSUFwaUNvbmZpZ3VyYXRpb24sXHJcbiAgICBwcml2YXRlIGNhY2hlU2VydmljZTogU2RDYWNoZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRva2VuU2VydmljZTogU2RUb2tlblNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIGdldCBodHRwKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudDtcclxuICB9XHJcblxyXG4gIHBvc3QgPSBhc3luYyA8VCA9IGFueT4oXHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIGJvZHk/OiBhbnksXHJcbiAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMsXHJcbiAgICBvcHRpb25zPzoge1xyXG4gICAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xyXG4gICAgICB0aW1lb3V0PzogbnVtYmVyO1xyXG4gICAgfVxyXG4gICk6IFByb21pc2U8VD4gPT4ge1xyXG4gICAgaGVhZGVycyA9XHJcbiAgICAgIGhlYWRlcnMgfHxcclxuICAgICAgdGhpcy50b2tlblNlcnZpY2UuY3VzdG9tSGVhZGVycyh7XHJcbiAgICAgICAgdXJsLFxyXG4gICAgICB9KTtcclxuICAgIGxldCBoYXNoS2V5ID0gdXVpZC52NCgpO1xyXG4gICAgaWYgKCEoYm9keSBpbnN0YW5jZW9mIEZvcm1EYXRhKSkge1xyXG4gICAgICBoYXNoS2V5ID0gaGFzaCh7XHJcbiAgICAgICAgdXJsLFxyXG4gICAgICAgIGhlYWRlcnMsXHJcbiAgICAgICAgYm9keSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBhcGlUaW1lb3V0ID0gb3B0aW9ucz8udGltZW91dCB8fCB0aGlzLiN0aW1lb3V0O1xyXG4gICAgaWYgKCF0aGlzLiNjYWNoZVtoYXNoS2V5XSB8fCBEYXRlLmFkZE1pbGlzZWNvbmRzKHRoaXMuI2NhY2hlW2hhc2hLZXldLmNyZWF0ZWREYXRlLCB0aGlzLiNjYWNoZUR1cmF0aW9uKSA8IG5ldyBEYXRlKCkpIHtcclxuICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0gPSB7XHJcbiAgICAgICAgY3JlYXRlZERhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgc3ViamVjdDogbmV3IFN1YmplY3QoKSxcclxuICAgICAgfTtcclxuICAgICAgaWYgKG9wdGlvbnM/LnJlc3BvbnNlVHlwZSAmJiBvcHRpb25zLnJlc3BvbnNlVHlwZSAhPT0gJ2pzb24nKSB7XHJcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgICAgICAucG9zdChlbmNvZGVVUkkodXJsKSwgYm9keSwge1xyXG4gICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXHJcbiAgICAgICAgICAgIGhlYWRlcnMsXHJcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogb3B0aW9ucz8ucmVzcG9uc2VUeXBlIGFzIGFueSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAucGlwZSh0aW1lb3V0KGFwaVRpbWVvdXQpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgICAgICAgcmVzdWx0OiByZXMsXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0Lm5leHQocmVzKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgIHJlc3VsdDogZXJyLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAgICAgLnBvc3QoZW5jb2RlVVJJKHVybCksIGJvZHksIHtcclxuICAgICAgICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcclxuICAgICAgICAgICAgaGVhZGVycyxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAucGlwZSh0aW1lb3V0KGFwaVRpbWVvdXQpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzLm9rKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXHJcbiAgICAgICAgICAgICAgICAgIHJlc3VsdDogcmVzLmJvZHksXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5uZXh0KHJlcy5ib2R5KTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgICAgcmVzdWx0OiByZXMuYm9keSxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0LmVycm9yKHJlcy5ib2R5KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICByZXN1bHQ6IGVycixcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlPy5zdGF0dXMpIHtcclxuICAgICAgaWYgKHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlPy5zdGF0dXMgPT09ICdzdWNjZXNzJykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgICAgdGhyb3cgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UucmVzdWx0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QucGlwZSh0YWtlKDEpKS50b1Byb21pc2UoKTtcclxuICB9O1xyXG5cclxuICBwb3N0Q2FjaGUgPSBhc3luYyA8VCA9IGFueT4oXHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIGJvZHk/OiBhbnksXHJcbiAgICBvcHRpb25zPzoge1xyXG4gICAgICBjYWNoZVR5cGU/OiAnZGVmYXVsdCcgfCAnc2Vzc2lvbicgfCAnbG9jYWwnO1xyXG4gICAgICBjYWNoZUhvdXJzPzogbnVtYmVyO1xyXG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XHJcbiAgICB9XHJcbiAgKTogUHJvbWlzZTxUPiA9PiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID1cclxuICAgICAgb3B0aW9ucz8uaGVhZGVycyB8fFxyXG4gICAgICB0aGlzLnRva2VuU2VydmljZS5jdXN0b21IZWFkZXJzKHtcclxuICAgICAgICB1cmwsXHJcbiAgICAgIH0pO1xyXG4gICAgY29uc3QgeyBnZXQsIHNldCwgaGFzIH0gPSB0aGlzLmNhY2hlU2VydmljZS5jcmVhdGUoXHJcbiAgICAgIHtcclxuICAgICAgICB1cmwsXHJcbiAgICAgICAgaGVhZGVycyxcclxuICAgICAgICBib2R5LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogb3B0aW9ucz8uY2FjaGVUeXBlLFxyXG4gICAgICAgIGhvdXJzOiBvcHRpb25zPy5jYWNoZUhvdXJzLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgaWYgKCFoYXMoKSkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnBvc3QodXJsLCBib2R5LCBvcHRpb25zPy5oZWFkZXJzLCB7XHJcbiAgICAgICAgdGltZW91dDogNTAwMCwgLy8gNXNcclxuICAgICAgfSk7XHJcbiAgICAgIHNldChyZXN1bHQpO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdldCgpO1xyXG4gIH07XHJcblxyXG4gIHB1dCA9IGFzeW5jIDxUID0gYW55Pih1cmw6IHN0cmluZywgYm9keT86IGFueSwgaGVhZGVycz86IEh0dHBIZWFkZXJzKTogUHJvbWlzZTxUPiA9PiB7XHJcbiAgICBoZWFkZXJzID1cclxuICAgICAgaGVhZGVycyB8fFxyXG4gICAgICB0aGlzLnRva2VuU2VydmljZS5jdXN0b21IZWFkZXJzKHtcclxuICAgICAgICB1cmwsXHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICB0aGlzLmh0dHBDbGllbnRcclxuICAgICAgICAucHV0KGVuY29kZVVSSSh1cmwpLCBib2R5LCB7XHJcbiAgICAgICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxyXG4gICAgICAgICAgaGVhZGVycyxcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5waXBlKHRpbWVvdXQodGhpcy4jdGltZW91dCkpXHJcbiAgICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICAgIGlmIChyZXN1bHQub2spIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQuYm9keSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZWplY3QocmVzdWx0LmJvZHkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChodHRwRXJyb3JSZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJlamVjdChodHRwRXJyb3JSZXNwb25zZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICAjZGVmaW5lUGFyYW1zID0gKHJlcXVlc3Q6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgcnEgPSBbXTtcclxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJlcXVlc3QpKSB7XHJcbiAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSAnJyAmJiB2YWx1ZT8udG9TdHJpbmcoKSAhPT0gJycpIHtcclxuICAgICAgICBycS5wdXNoKGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkgYXMgc3RyaW5nKX09JHtlbmNvZGVVUklDb21wb25lbnQodmFsdWUgYXMgc3RyaW5nKX1gKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGA/JHtycT8uam9pbignJicpfWA7XHJcbiAgfTtcclxuXHJcbiAgZ2V0V2l0aFBhcmFtcyA9IGFzeW5jIDxUID0gYW55PihcclxuICAgIHVybDogc3RyaW5nLFxyXG4gICAgcGFyYW1zOiBhbnksXHJcbiAgICBvcHRpb25zPzoge1xyXG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XHJcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XHJcbiAgICB9XHJcbiAgKTogUHJvbWlzZTxUPiA9PiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXQoYCR7dXJsfSR7dGhpcy4jZGVmaW5lUGFyYW1zKHBhcmFtcyl9YCwgb3B0aW9ucz8uaGVhZGVycywgeyAuLi5vcHRpb25zLCBlbmNvZGVVUkk6IGZhbHNlIH0pO1xyXG4gIH07XHJcblxyXG4gIGdldENhY2hlV2l0aFBhcmFtcyA9IGFzeW5jIDxUID0gYW55PihcclxuICAgIHVybDogc3RyaW5nLFxyXG4gICAgcGFyYW1zOiBhbnksXHJcbiAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMsXHJcbiAgICBvcHRpb25zPzoge1xyXG4gICAgICByZWxvYWQ/OiBib29sZWFuO1xyXG4gICAgICBjYWNoZVR5cGU/OiAnZGVmYXVsdCcgfCAnc2Vzc2lvbicgfCAnbG9jYWwnO1xyXG4gICAgICBjYWNoZUhvdXJzPzogbnVtYmVyO1xyXG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XHJcbiAgICB9XHJcbiAgKTogUHJvbWlzZTxUPiA9PiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRDYWNoZShgJHt1cmx9JHt0aGlzLiNkZWZpbmVQYXJhbXMocGFyYW1zKX1gLCB7IC4uLm9wdGlvbnMsIGhlYWRlcnMsIGVuY29kZVVSSTogZmFsc2UgfSk7XHJcbiAgfTtcclxuXHJcbiAgZ2V0ID0gYXN5bmMgPFQgPSBhbnk+KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMsXHJcbiAgICBvcHRpb25zPzoge1xyXG4gICAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xyXG4gICAgICBlbmNvZGVVUkk/OiBib29sZWFuO1xyXG4gICAgICB0aW1lb3V0PzogbnVtYmVyO1xyXG4gICAgfVxyXG4gICk6IFByb21pc2U8VD4gPT4ge1xyXG4gICAgaGVhZGVycyA9XHJcbiAgICAgIGhlYWRlcnMgfHxcclxuICAgICAgdGhpcy50b2tlblNlcnZpY2UuY3VzdG9tSGVhZGVycyh7XHJcbiAgICAgICAgdXJsLFxyXG4gICAgICB9KTtcclxuICAgIGNvbnN0IGVuY29kZWRVcmwgPSBvcHRpb25zPy5lbmNvZGVVUkkgPT09IGZhbHNlID8gdXJsIDogZW5jb2RlVVJJKHVybCk7XHJcbiAgICAvLyBjb25zdCBoYXNoS2V5ID0gaGFzaCh7XHJcbiAgICAvLyAgIGVuY29kZWRVcmwsXHJcbiAgICAvLyAgIGhlYWRlcnNcclxuICAgIC8vIH0pO1xyXG4gICAgY29uc3QgaGFzaEtleSA9IGhhc2goe1xyXG4gICAgICBlbmNvZGVkVXJsLFxyXG4gICAgICBoZWFkZXJzLFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBhcGlUaW1lb3V0ID0gb3B0aW9ucz8udGltZW91dCB8fCB0aGlzLiN0aW1lb3V0O1xyXG4gICAgaWYgKCF0aGlzLiNjYWNoZVtoYXNoS2V5XSB8fCBEYXRlLmFkZE1pbGlzZWNvbmRzKHRoaXMuI2NhY2hlW2hhc2hLZXldLmNyZWF0ZWREYXRlLCB0aGlzLiNjYWNoZUR1cmF0aW9uKSA8IG5ldyBEYXRlKCkpIHtcclxuICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0gPSB7XHJcbiAgICAgICAgY3JlYXRlZERhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgc3ViamVjdDogbmV3IFN1YmplY3QoKSxcclxuICAgICAgfTtcclxuICAgICAgaWYgKG9wdGlvbnM/LnJlc3BvbnNlVHlwZSAmJiBvcHRpb25zLnJlc3BvbnNlVHlwZSAhPT0gJ2pzb24nKSB7XHJcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgICAgICAuZ2V0KGVuY29kZWRVcmwsIHsgb2JzZXJ2ZTogJ2JvZHknLCBoZWFkZXJzLCByZXNwb25zZVR5cGU6IG9wdGlvbnM/LnJlc3BvbnNlVHlwZSBhcyBhbnkgfSlcclxuICAgICAgICAgIC5waXBlKHRpbWVvdXQoYXBpVGltZW91dCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXHJcbiAgICAgICAgICAgICAgICByZXN1bHQ6IHJlcyxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QubmV4dChyZXMpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgICAgcmVzdWx0OiBlcnIsXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0LmVycm9yKGVycik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgICAgICAuZ2V0KGVuY29kZWRVcmwsIHsgb2JzZXJ2ZTogJ3Jlc3BvbnNlJywgaGVhZGVycyB9KVxyXG4gICAgICAgICAgLnBpcGUodGltZW91dChhcGlUaW1lb3V0KSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5vaykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgICAgICAgICByZXN1bHQ6IHJlcy5ib2R5LFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QubmV4dChyZXMuYm9keSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICAgIHJlc3VsdDogcmVzLmJvZHksXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5lcnJvcihyZXMuYm9keSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgICAgcmVzdWx0OiBlcnIsXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0LmVycm9yKGVycik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgIGlmICh0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZT8uc3RhdHVzID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIHRocm93IHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlLnJlc3VsdDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0LnBpcGUodGFrZSgxKSkudG9Qcm9taXNlKCk7XHJcbiAgfTtcclxuXHJcbiAgZ2V0Q2FjaGUgPSBhc3luYyA8VCA9IGFueT4oXHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIG9wdGlvbnM/OiB7XHJcbiAgICAgIHJlbG9hZD86IGJvb2xlYW47XHJcbiAgICAgIGNhY2hlVHlwZT86ICdkZWZhdWx0JyB8ICdzZXNzaW9uJyB8ICdsb2NhbCc7XHJcbiAgICAgIGNhY2hlSG91cnM/OiBudW1iZXI7XHJcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcclxuICAgICAgZW5jb2RlVVJJPzogYm9vbGVhbjtcclxuICAgIH1cclxuICApOiBQcm9taXNlPFQ+ID0+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPVxyXG4gICAgICBvcHRpb25zPy5oZWFkZXJzIHx8XHJcbiAgICAgIHRoaXMudG9rZW5TZXJ2aWNlLmN1c3RvbUhlYWRlcnMoe1xyXG4gICAgICAgIHVybCxcclxuICAgICAgfSk7XHJcbiAgICBjb25zdCBlbmNvZGVkVXJsID0gb3B0aW9ucz8uZW5jb2RlVVJJID09PSBmYWxzZSA/IHVybCA6IGVuY29kZVVSSSh1cmwpO1xyXG4gICAgY29uc3QgeyBnZXQsIHNldCwgaGFzIH0gPSB0aGlzLmNhY2hlU2VydmljZS5jcmVhdGUoXHJcbiAgICAgIHtcclxuICAgICAgICBlbmNvZGVkVXJsLFxyXG4gICAgICAgIGhlYWRlcnMsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBvcHRpb25zPy5jYWNoZVR5cGUsXHJcbiAgICAgICAgaG91cnM6IG9wdGlvbnM/LmNhY2hlSG91cnMsXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICBpZiAoIWhhcygpIHx8IG9wdGlvbnM/LnJlbG9hZCkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmdldChlbmNvZGVkVXJsLCBvcHRpb25zPy5oZWFkZXJzLCB7IGVuY29kZVVSSTogZmFsc2UsIHRpbWVvdXQ6IDUwMDAgfSk7XHJcbiAgICAgIHNldChyZXN1bHQpO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdldCgpO1xyXG4gIH07XHJcblxyXG4gIGRlbGV0ZSA9IGFzeW5jIDxUID0gYW55Pih1cmw6IHN0cmluZywgaGVhZGVycz86IEh0dHBIZWFkZXJzKTogUHJvbWlzZTxUPiA9PiB7XHJcbiAgICBoZWFkZXJzID1cclxuICAgICAgaGVhZGVycyB8fFxyXG4gICAgICB0aGlzLnRva2VuU2VydmljZS5jdXN0b21IZWFkZXJzKHtcclxuICAgICAgICB1cmwsXHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICB0aGlzLmh0dHBDbGllbnRcclxuICAgICAgICAuZGVsZXRlKGVuY29kZVVSSSh1cmwpLCB7IG9ic2VydmU6ICdyZXNwb25zZScsIGhlYWRlcnMgfSlcclxuICAgICAgICAucGlwZSh0aW1lb3V0KHRoaXMuI3RpbWVvdXQpKVxyXG4gICAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAgIC50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0Lm9rKSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0LmJvZHkpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVqZWN0KHJlc3VsdC5ib2R5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoaHR0cEVycm9yUmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZWplY3QoaHR0cEVycm9yUmVzcG9uc2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgdXBsb2FkU2luZ2xlID0gKFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBvcHRpb24/OiB7XHJcbiAgICAgIGV4dGVuc2lvbnM/OiBzdHJpbmdbXTtcclxuICAgICAgbWF4U2l6ZUluTWI/OiBudW1iZXI7XHJcbiAgICAgIHZhbGlkYXRvcj86IChmaWxlTmFtZTogc3RyaW5nKSA9PiBzdHJpbmc7XHJcbiAgICB9XHJcbiAgKTogUHJvbWlzZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiBTZFV0aWxpdHkudXBsb2FkKG9wdGlvbikudGhlbihmaWxlID0+IHRoaXMudXBsb2FkKHVybCwgZmlsZSkpO1xyXG4gIH07XHJcblxyXG4gIHVwbG9hZCA9IGFzeW5jICh1cmw6IHN0cmluZywgZmlsZTogRmlsZSkgPT4ge1xyXG4gICAgY29uc3QgbGFzdERvdCA9IGZpbGUubmFtZS5sYXN0SW5kZXhPZignLicpO1xyXG4gICAgaWYgKGxhc3REb3QgPT09IC0xKSB7XHJcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZShgSW52YWxpZCBmaWxlIGV4dGVuc2lvbmApO1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUsIGZpbGUubmFtZSk7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wb3N0KHVybCwgZm9ybURhdGEpO1xyXG4gIH07XHJcbn1cclxuIl19
@@ -87,7 +87,7 @@ _items = new WeakMap(), _send = new WeakMap(), _timerReload = new WeakMap(), _lo
87
87
  SdComment.decorators = [
88
88
  { type: Component, args: [{
89
89
  selector: 'sd-comment',
90
- template: "<div class=\"c-container\">\r\n <div class=\"c-header\">\r\n <div class=\"c-title\">{{'Comments' | sdTranslate}} <a href=\"javascript:;\">({{count | async}})</a></div>\r\n </div>\r\n <div class=\"c-body c-comment-loading\" *ngIf=\"commentOption?.style==='basic'\" #commentScroll>\r\n <ng-container *ngFor=\"let item of items | async\">\r\n <div class=\"d-flex my-8\">\r\n <div class=\"c-avatar mr-12\">\r\n <img height=\"32\" width=\"32px\" [src]=\"item.picture\">\r\n </div>\r\n <div class=\"c-comment\">\r\n <div class=\"c-info mb-4\">\r\n {{'By' | sdTranslate}}\r\n <span class=\"c-creator ml-2\">\r\n {{item.creator}}\r\n </span>\r\n <ng-container *ngIf=\"item.createdDate\">\r\n <span class=\"mx-4\">\u2022</span>\r\n <span\r\n [matTooltip]=\"item.createdDate | date:'dd/MM/yyyy HH:mm'\">{{item.createdDate | sdTimeDifferent:'dd/MM/yyyy HH:mm':'hour' | async}}</span>\r\n </ng-container>\r\n </div>\r\n <div class=\"c-content\" [innerHtml]=\"item.content\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"c-body-style1 c-comment-loading\" *ngIf=\"commentOption?.style==='style1'\" sdScroll #commentScroll>\r\n <ng-container *ngFor=\"let item of items | async; let i = index\">\r\n <div class=\"d-flex my-8\">\r\n <div class=\"c-avatar mr-12\">\r\n <img height=\"32\" width=\"32px\" [src]=\"item.picture\">\r\n </div>\r\n <div class=\"c-comment {{i + 1 === (count | async) ? 'c-comment-border': ''}}\">\r\n <div class=\"c-info mb-4\">\r\n <div class=\"c-col-left\">\r\n <div class=\"c-creator\">\r\n {{item.creator}}\r\n </div>\r\n <div class=\"c-email\">\r\n {{item.email}}\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"item.createdDate\">\r\n <div class=\"c-col-right\"\r\n [matTooltip]=\"item.createdDate | date:'dd/MM/yyyy H:mm'\">{{item.createdDate | date:'dd/MM/yyyy H:mm'}}</div>\r\n </ng-container>\r\n </div>\r\n <div class=\"c-content\" [innerHtml]=\"item.content\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"c-footer p-16\">\r\n <div class=\"row\">\r\n <div class=\"col-12 c-position-relative\">\r\n <ng-container *ngIf=\"commentOption?.editor?.enabled else noUseEditor\">\r\n <div class=\"mb-8\">\r\n <sd-editor [(model)]=\"message\" [styles]=\"commentOption?.editor?.styles\"\r\n [toolbar]=\"commentOption?.editor?.toolbar\"\r\n [mentionValues]=\"commentOption?.editor?.mentionValues\"\r\n [hashTagValues]=\"commentOption?.editor?.hashTagValues\"></sd-editor>\r\n </div>\r\n <div *ngIf=\"commentOption?.fullComment?.enabled\" class=\"c-full-comment-backdrop\"\r\n (click)=\"modalFullComment.open()\"></div>\r\n </ng-container>\r\n <ng-template #noUseEditor>\r\n <sd-textarea [(model)]=\"message\" rows=\"1\" autoHeight></sd-textarea>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <sd-button class=\"float-right\" title=\"G\u1EEDi\" (action)=\"onSend()\" [disabled]=\"!message\" color=\"primary\" type=\"fill\"\r\n size=\"sm\">\r\n </sd-button>\r\n <sd-button class=\"float-right mr-8\" title=\"T\u1EA3i l\u1EA1i\" (action)=\"reload()\" *ngIf=\"commentOption?.autoReload?.enabledButton\" color=\"warning\" type=\"fill\"\r\n size=\"sm\">\r\n </sd-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<sd-modal [title]=\"'Comments' | sdTranslate\" width=\"sm\" [closeClickOutSide]=\"commentOption?.fullComment?.closeClickOutSide\" #modalFullComment>\r\n <sd-modal-body>\r\n <sd-editor [(model)]=\"message\" [styles]=\"fullCommentStyles\"\r\n [toolbar]=\"commentOption?.editor?.toolbar\"\r\n [mentionValues]=\"commentOption?.editor?.mentionValues\"\r\n [hashTagValues]=\"commentOption?.editor?.hashTagValues\"\r\n [args]=\"commentOption?.editor?.args\"></sd-editor>\r\n </sd-modal-body>\r\n <sd-modal-footer>\r\n <sd-button class=\"ml-8\" title=\"X\u00F3a to\u00E0n b\u1ED9\" size=\"sm\" type=\"link\"\r\n (action)=\"clearAllData()\">\r\n </sd-button>\r\n <sd-button *ngIf=\"!commentOption?.fullComment?.enableSendButton\" class=\"ml-8\" title=\"\u0110\u00F3ng\" size=\"sm\" (action)=\"modalFullComment.close()\"\r\n color=\"primary\" type=\"fill\">\r\n </sd-button>\r\n <sd-button class=\"ml-8\" title=\"T\u1EA3i l\u1EA1i\" (action)=\"reload()\" *ngIf=\"commentOption?.autoReload?.enabledButton\" color=\"warning\" type=\"fill\"\r\n size=\"sm\">\r\n </sd-button>\r\n <sd-button *ngIf=\"commentOption?.fullComment?.enableSendButton\" class=\"ml-8\" title=\"G\u1EEDi\" size=\"sm\" (action)=\"onSend();modalFullComment.close();\" [disabled]=\"!message\"\r\n color=\"primary\" type=\"fill\">\r\n </sd-button>\r\n </sd-modal-footer>\r\n</sd-modal>\r\n",
90
+ template: "<div class=\"c-container\">\r\n <div class=\"c-header\">\r\n <div class=\"c-title\">{{'Comments' | sdTranslate}} <a href=\"javascript:;\">({{count | async}})</a></div>\r\n </div>\r\n <div class=\"c-body c-comment-loading\" *ngIf=\"commentOption?.style==='basic'\" #commentScroll>\r\n <ng-container *ngFor=\"let item of items | async\">\r\n <div class=\"d-flex my-8\">\r\n <div class=\"c-avatar mr-12\">\r\n <img height=\"32\" width=\"32px\" [src]=\"item.picture\">\r\n </div>\r\n <div class=\"c-comment\">\r\n <div class=\"c-info mb-4\">\r\n {{'By' | sdTranslate}}\r\n <span class=\"c-creator ml-2\">\r\n {{item.creator}}\r\n </span>\r\n <ng-container *ngIf=\"item.createdDate\">\r\n <span class=\"mx-4\">\u2022</span>\r\n <span\r\n [matTooltip]=\"item.createdDate | date:'dd/MM/yyyy HH:mm'\">{{item.createdDate | sdTimeDifferent:'dd/MM/yyyy HH:mm':'hour' | async}}</span>\r\n </ng-container>\r\n </div>\r\n <div class=\"c-content\" [innerHtml]=\"item.content\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"c-body-style1 c-comment-loading\" *ngIf=\"commentOption?.style==='style1'\" sdScroll #commentScroll>\r\n <ng-container *ngFor=\"let item of items | async; let i = index\">\r\n <div class=\"d-flex my-8\">\r\n <div class=\"c-avatar mr-12\">\r\n <img height=\"32\" width=\"32px\" [src]=\"item.picture\">\r\n </div>\r\n <div class=\"c-comment {{i + 1 === (count | async) ? 'c-comment-border': ''}}\">\r\n <div class=\"c-info mb-4\">\r\n <div class=\"c-col-left\">\r\n <div class=\"c-creator\">\r\n {{item.creator}}\r\n </div>\r\n <div class=\"c-email\">\r\n {{item.email}}\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"item.createdDate\">\r\n <div class=\"c-col-right\"\r\n [matTooltip]=\"item.createdDate | date:'dd/MM/yyyy H:mm'\">{{item.createdDate | date:'dd/MM/yyyy H:mm'}}</div>\r\n </ng-container>\r\n </div>\r\n <div class=\"c-content\" [innerHtml]=\"item.content\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"c-footer p-16\">\r\n <div class=\"row\">\r\n <div class=\"col-12 c-position-relative\">\r\n <ng-container *ngIf=\"commentOption?.editor?.enabled else noUseEditor\">\r\n <div class=\"mb-8\">\r\n <sd-editor [(model)]=\"message\" [styles]=\"commentOption?.editor?.styles\"\r\n [toolbar]=\"commentOption?.editor?.toolbar\"\r\n [mentionValues]=\"commentOption?.editor?.mentionValues\"\r\n [hashTagValues]=\"commentOption?.editor?.hashTagValues\" [args]=\"commentOption?.editor?.args\"></sd-editor>\r\n </div>\r\n <div *ngIf=\"commentOption?.fullComment?.enabled\" class=\"c-full-comment-backdrop\"\r\n (click)=\"modalFullComment.open()\"></div>\r\n </ng-container>\r\n <ng-template #noUseEditor>\r\n <sd-textarea [(model)]=\"message\" rows=\"1\" autoHeight></sd-textarea>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <sd-button class=\"float-right\" title=\"G\u1EEDi\" (action)=\"onSend()\" [disabled]=\"!message\" color=\"primary\" type=\"fill\"\r\n size=\"sm\">\r\n </sd-button>\r\n <sd-button class=\"float-right mr-8\" title=\"T\u1EA3i l\u1EA1i\" (action)=\"reload()\" *ngIf=\"commentOption?.autoReload?.enabledButton\" color=\"warning\" type=\"fill\"\r\n size=\"sm\">\r\n </sd-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<sd-modal [title]=\"'Comments' | sdTranslate\" width=\"sm\" [closeClickOutSide]=\"commentOption?.fullComment?.closeClickOutSide\" #modalFullComment>\r\n <sd-modal-body>\r\n <sd-editor [(model)]=\"message\" [styles]=\"fullCommentStyles\"\r\n [toolbar]=\"commentOption?.editor?.toolbar\"\r\n [mentionValues]=\"commentOption?.editor?.mentionValues\"\r\n [hashTagValues]=\"commentOption?.editor?.hashTagValues\"\r\n [args]=\"commentOption?.editor?.args\"></sd-editor>\r\n </sd-modal-body>\r\n <sd-modal-footer>\r\n <sd-button class=\"ml-8\" title=\"X\u00F3a to\u00E0n b\u1ED9\" size=\"sm\" type=\"link\"\r\n (action)=\"clearAllData()\">\r\n </sd-button>\r\n <sd-button *ngIf=\"!commentOption?.fullComment?.enableSendButton\" class=\"ml-8\" title=\"\u0110\u00F3ng\" size=\"sm\" (action)=\"modalFullComment.close()\"\r\n color=\"primary\" type=\"fill\">\r\n </sd-button>\r\n <sd-button class=\"ml-8\" title=\"T\u1EA3i l\u1EA1i\" (action)=\"reload()\" *ngIf=\"commentOption?.autoReload?.enabledButton\" color=\"warning\" type=\"fill\"\r\n size=\"sm\">\r\n </sd-button>\r\n <sd-button *ngIf=\"commentOption?.fullComment?.enableSendButton\" class=\"ml-8\" title=\"G\u1EEDi\" size=\"sm\" (action)=\"onSend();modalFullComment.close();\" [disabled]=\"!message\"\r\n color=\"primary\" type=\"fill\">\r\n </sd-button>\r\n </sd-modal-footer>\r\n</sd-modal>\r\n",
91
91
  changeDetection: ChangeDetectionStrategy.OnPush,
92
92
  styles: [".text-black400{color:#757575}.c-container{display:flex;flex-direction:column;height:100%}.c-container .c-header{align-items:center;background-color:#fff;display:flex;height:40px;padding:0 16px}.c-container .c-header .c-title{font-weight:500}.c-container .c-body{background:#f8f9fa;flex:1;overflow-y:hidden;padding:16px}.c-container .c-body:hover{overflow-y:auto}.c-container .c-body .c-comment{background:#fff;border:1px solid #f2f2f2;border-radius:4px;flex:1;overflow-wrap:break-word;padding:12px 16px;white-space:pre-wrap;word-break:break-word}.c-container .c-body .c-comment .c-info{color:#757575}.c-container .c-body .c-comment .c-info .c-creator{color:#000;font-weight:500}.c-container .c-body-style1{background:#fff;flex:1;overflow-y:hidden;padding:16px}.c-container .c-body-style1 .c-comment{background:#fff;border-bottom:3px solid #f2f2f2;border-radius:4px;flex:1;overflow-wrap:break-word;white-space:pre-wrap;word-break:break-word}.c-container .c-body-style1 .c-comment .c-info{color:#757575}.c-container .c-body-style1 .c-comment .c-info .c-creator{color:#000;font-weight:500;white-space:nowrap}.c-container .c-body-style1 .c-comment .c-info .c-email{color:#000;font-weight:400;white-space:nowrap}.c-container .c-body-style1 .c-comment .c-info .c-col-left{display:inline-block;overflow:hidden;vertical-align:top;width:calc(100% - 128px)}.c-container .c-body-style1 .c-comment .c-info .c-col-right{display:inline-block;margin-left:8px;width:120px}.c-container .c-body-style1 .c-comment-border{border-bottom:none}.c-container .c-footer{background:#fff;min-height:120px}.c-container .c-footer .c-position-relative{position:relative}.c-container .c-footer .c-full-comment-backdrop{height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}"]
93
93
  },] }
@@ -100,4 +100,4 @@ SdComment.propDecorators = {
100
100
  textarea: [{ type: ViewChild, args: [SdTextarea,] }],
101
101
  option: [{ type: Input }]
102
102
  };
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2NvbW1lbnQvIiwic291cmNlcyI6WyJzcmMvbGliL2NvbW1lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUMsR0FBRyxFQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFRMUQsTUFBTSxPQUFPLFNBQVM7SUFxQnBCLFlBQ1UsY0FBZ0M7UUFBaEMsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBbkIxQyxpQkFBUyxJQUFJLGVBQWUsQ0FBWSxFQUFFLENBQUMsRUFBQztRQUM1QyxnQkFBUSxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsRUFBQztRQUV4QywrQkFBa0I7UUFDbEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFPcEIsc0JBQWlCLEdBQUc7WUFDbEIsWUFBWSxFQUFFLE9BQU87U0FDdEIsQ0FBQztRQTZCRixXQUFNLEdBQUcsR0FBRyxFQUFFOztZQUNaLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsWUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxLQUFLLDBDQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNoRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDcEIsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxLQUFLLEdBQUc7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UyxTQUFDO2dCQUNULFFBQVEsRUFBRSxZQUFZO2dCQUN0Qiw2MEtBQXVDO2dCQUV2QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQVBPLGdCQUFnQjs7OzRCQVNyQixTQUFTLFNBQUMsZUFBZTt1QkFDekIsU0FBUyxTQUFDLFVBQVU7cUJBT3BCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgSW5wdXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgVmlld0NoaWxkLCBFbGVtZW50UmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7U2RUZXh0YXJlYX0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS90ZXh0YXJlYSc7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHttYXAsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0NvbW1lbnQsIFNkQ29tbWVudE9wdGlvbn0gZnJvbSAnLi9jb21tZW50Lm1vZGVsJztcclxuaW1wb3J0IHtTZExvYWRpbmdTZXJ2aWNlfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2xvYWRpbmcnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1jb21tZW50JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29tbWVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29tbWVudC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZENvbW1lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgnY29tbWVudFNjcm9sbCcpIHByaXZhdGUgY29tbWVudFNjcm9sbDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFNkVGV4dGFyZWEpIHRleHRhcmVhOiBTZFRleHRhcmVhO1xyXG4gICNpdGVtcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29tbWVudFtdPihbXSk7XHJcbiAgI3NlbmQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xyXG4gIGNvbW1lbnRPcHRpb246IFNkQ29tbWVudE9wdGlvbjtcclxuICAjdGltZXJSZWxvYWQ6IGFueTtcclxuICBpc1JlbG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBzZXQgb3B0aW9uKG9wdGlvbjogU2RDb21tZW50T3B0aW9uKSB7XHJcbiAgICB0aGlzLmNvbW1lbnRPcHRpb24gPSBvcHRpb247XHJcbiAgICB0aGlzLnJlbG9hZCgpO1xyXG4gIH07XHJcblxyXG4gIGZ1bGxDb21tZW50U3R5bGVzID0ge1xyXG4gICAgJ21pbi1oZWlnaHQnOiAnMTUwcHgnXHJcbiAgfTtcclxuICBpdGVtczogT2JzZXJ2YWJsZTxDb21tZW50W10+O1xyXG4gIGNvdW50OiBPYnNlcnZhYmxlPG51bWJlcj47XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbG9hZGluZ1NlcnZpY2U6IFNkTG9hZGluZ1NlcnZpY2UsXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXRlbXMgPSB0aGlzLiNpdGVtcy5waXBlKG1hcChpdGVtcyA9PiB7XHJcbiAgICAgIHJldHVybiBpdGVtcy5tYXAoZSA9PiAoe1xyXG4gICAgICAgIC4uLmUsXHJcbiAgICAgICAgcGljdHVyZTogZS5waWN0dXJlID8/IGBodHRwczovL3VpLWF2YXRhcnMuY29tL2FwaS8/c2l6ZT0zMiZyb3VuZGVkPXRydWUmYmFja2dyb3VuZD1yYW5kb20mbmFtZT0ke2UuY3JlYXRvcn1gXHJcbiAgICAgIH0pKTtcclxuICAgIH0pKTtcclxuICAgIHRoaXMuY291bnQgPSB0aGlzLml0ZW1zLnBpcGUobWFwKGl0ZW1zID0+IGl0ZW1zLmxlbmd0aCkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb21tZW50T3B0aW9uPy5hdXRvUmVsb2FkPy50aW1lck1zKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy4jdGltZXJSZWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgb25TZW5kID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMubWVzc2FnZSkge1xyXG4gICAgICB0aGlzLmNvbW1lbnRPcHRpb24/LmV2ZW50Py5vblNlbmQodGhpcy5tZXNzYWdlKTtcclxuICAgICAgdGhpcy5tZXNzYWdlID0gbnVsbDtcclxuICAgICAgdGhpcy50ZXh0YXJlYT8uZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICNsb2FkID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3Qge2l0ZW1zfSA9IHRoaXMuY29tbWVudE9wdGlvbjtcclxuICAgIGNvbnN0IHJlc3VsdHMgPSBpdGVtcygpO1xyXG4gICAgaWYgKHJlc3VsdHMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgIHJldHVybiBhd2FpdCByZXN1bHRzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgfVxyXG5cclxuICByZWxvYWQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0YXJ0KCcuYy1jb21tZW50LWxvYWRpbmcnKTtcclxuICAgIHRoaXMuI2l0ZW1zLm5leHQoYXdhaXQgdGhpcy4jbG9hZCgpKTtcclxuICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RvcCgnLmMtY29tbWVudC1sb2FkaW5nJyk7XHJcbiAgICB0aGlzLiNzY3JvbGxUb0JvdHRvbSgpO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbW1lbnRPcHRpb24/LmF1dG9SZWxvYWQ/LnRpbWVyTXMpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLiN0aW1lclJlbG9hZCk7XHJcbiAgICAgIHRoaXMuI3RpbWVyUmVsb2FkID0gc2V0SW50ZXJ2YWwoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQoJy5jLWNvbW1lbnQtbG9hZGluZycpO1xyXG4gICAgICAgIHRoaXMuI2l0ZW1zLm5leHQoYXdhaXQgdGhpcy4jbG9hZCgpKTtcclxuICAgICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0b3AoJy5jLWNvbW1lbnQtbG9hZGluZycpO1xyXG4gICAgICAgIHRoaXMuI3Njcm9sbFRvQm90dG9tKCk7XHJcbiAgICAgIH0sIHRoaXMuY29tbWVudE9wdGlvbi5hdXRvUmVsb2FkLnRpbWVyTXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJBbGxEYXRhID0gKCkgPT4ge1xyXG4gICAgdGhpcy5tZXNzYWdlID0gJyc7XHJcbiAgfVxyXG5cclxuICAjc2Nyb2xsVG9Cb3R0b20gPSAoKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1lbnRTY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSB0aGlzLmNvbW1lbnRTY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgIH0sIDUwMCk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2NvbW1lbnQvIiwic291cmNlcyI6WyJzcmMvbGliL2NvbW1lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUMsR0FBRyxFQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFRMUQsTUFBTSxPQUFPLFNBQVM7SUFxQnBCLFlBQ1UsY0FBZ0M7UUFBaEMsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBbkIxQyxpQkFBUyxJQUFJLGVBQWUsQ0FBWSxFQUFFLENBQUMsRUFBQztRQUM1QyxnQkFBUSxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsRUFBQztRQUV4QywrQkFBa0I7UUFDbEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFPcEIsc0JBQWlCLEdBQUc7WUFDbEIsWUFBWSxFQUFFLE9BQU87U0FDdEIsQ0FBQztRQTZCRixXQUFNLEdBQUcsR0FBRyxFQUFFOztZQUNaLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsWUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxLQUFLLDBDQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNoRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDcEIsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxLQUFLLEdBQUc7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UyxTQUFDO2dCQUNULFFBQVEsRUFBRSxZQUFZO2dCQUN0QixvM0tBQXVDO2dCQUV2QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQVBPLGdCQUFnQjs7OzRCQVNyQixTQUFTLFNBQUMsZUFBZTt1QkFDekIsU0FBUyxTQUFDLFVBQVU7cUJBT3BCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgSW5wdXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgVmlld0NoaWxkLCBFbGVtZW50UmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7U2RUZXh0YXJlYX0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS90ZXh0YXJlYSc7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHttYXAsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0NvbW1lbnQsIFNkQ29tbWVudE9wdGlvbn0gZnJvbSAnLi9jb21tZW50Lm1vZGVsJztcclxuaW1wb3J0IHtTZExvYWRpbmdTZXJ2aWNlfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2xvYWRpbmcnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1jb21tZW50JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29tbWVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29tbWVudC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZENvbW1lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgnY29tbWVudFNjcm9sbCcpIHByaXZhdGUgY29tbWVudFNjcm9sbDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFNkVGV4dGFyZWEpIHRleHRhcmVhOiBTZFRleHRhcmVhO1xyXG4gICNpdGVtcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29tbWVudFtdPihbXSk7XHJcbiAgI3NlbmQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xyXG4gIGNvbW1lbnRPcHRpb246IFNkQ29tbWVudE9wdGlvbjtcclxuICAjdGltZXJSZWxvYWQ6IGFueTtcclxuICBpc1JlbG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBzZXQgb3B0aW9uKG9wdGlvbjogU2RDb21tZW50T3B0aW9uKSB7XHJcbiAgICB0aGlzLmNvbW1lbnRPcHRpb24gPSBvcHRpb247XHJcbiAgICB0aGlzLnJlbG9hZCgpO1xyXG4gIH07XHJcblxyXG4gIGZ1bGxDb21tZW50U3R5bGVzID0ge1xyXG4gICAgJ21pbi1oZWlnaHQnOiAnMTUwcHgnXHJcbiAgfTtcclxuICBpdGVtczogT2JzZXJ2YWJsZTxDb21tZW50W10+O1xyXG4gIGNvdW50OiBPYnNlcnZhYmxlPG51bWJlcj47XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbG9hZGluZ1NlcnZpY2U6IFNkTG9hZGluZ1NlcnZpY2UsXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXRlbXMgPSB0aGlzLiNpdGVtcy5waXBlKG1hcChpdGVtcyA9PiB7XHJcbiAgICAgIHJldHVybiBpdGVtcy5tYXAoZSA9PiAoe1xyXG4gICAgICAgIC4uLmUsXHJcbiAgICAgICAgcGljdHVyZTogZS5waWN0dXJlID8/IGBodHRwczovL3VpLWF2YXRhcnMuY29tL2FwaS8/c2l6ZT0zMiZyb3VuZGVkPXRydWUmYmFja2dyb3VuZD1yYW5kb20mbmFtZT0ke2UuY3JlYXRvcn1gXHJcbiAgICAgIH0pKTtcclxuICAgIH0pKTtcclxuICAgIHRoaXMuY291bnQgPSB0aGlzLml0ZW1zLnBpcGUobWFwKGl0ZW1zID0+IGl0ZW1zLmxlbmd0aCkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb21tZW50T3B0aW9uPy5hdXRvUmVsb2FkPy50aW1lck1zKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy4jdGltZXJSZWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgb25TZW5kID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMubWVzc2FnZSkge1xyXG4gICAgICB0aGlzLmNvbW1lbnRPcHRpb24/LmV2ZW50Py5vblNlbmQodGhpcy5tZXNzYWdlKTtcclxuICAgICAgdGhpcy5tZXNzYWdlID0gbnVsbDtcclxuICAgICAgdGhpcy50ZXh0YXJlYT8uZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICNsb2FkID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3Qge2l0ZW1zfSA9IHRoaXMuY29tbWVudE9wdGlvbjtcclxuICAgIGNvbnN0IHJlc3VsdHMgPSBpdGVtcygpO1xyXG4gICAgaWYgKHJlc3VsdHMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgIHJldHVybiBhd2FpdCByZXN1bHRzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgfVxyXG5cclxuICByZWxvYWQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0YXJ0KCcuYy1jb21tZW50LWxvYWRpbmcnKTtcclxuICAgIHRoaXMuI2l0ZW1zLm5leHQoYXdhaXQgdGhpcy4jbG9hZCgpKTtcclxuICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RvcCgnLmMtY29tbWVudC1sb2FkaW5nJyk7XHJcbiAgICB0aGlzLiNzY3JvbGxUb0JvdHRvbSgpO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbW1lbnRPcHRpb24/LmF1dG9SZWxvYWQ/LnRpbWVyTXMpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLiN0aW1lclJlbG9hZCk7XHJcbiAgICAgIHRoaXMuI3RpbWVyUmVsb2FkID0gc2V0SW50ZXJ2YWwoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQoJy5jLWNvbW1lbnQtbG9hZGluZycpO1xyXG4gICAgICAgIHRoaXMuI2l0ZW1zLm5leHQoYXdhaXQgdGhpcy4jbG9hZCgpKTtcclxuICAgICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0b3AoJy5jLWNvbW1lbnQtbG9hZGluZycpO1xyXG4gICAgICAgIHRoaXMuI3Njcm9sbFRvQm90dG9tKCk7XHJcbiAgICAgIH0sIHRoaXMuY29tbWVudE9wdGlvbi5hdXRvUmVsb2FkLnRpbWVyTXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJBbGxEYXRhID0gKCkgPT4ge1xyXG4gICAgdGhpcy5tZXNzYWdlID0gJyc7XHJcbiAgfVxyXG5cclxuICAjc2Nyb2xsVG9Cb3R0b20gPSAoKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1lbnRTY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSB0aGlzLmNvbW1lbnRTY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgIH0sIDUwMCk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -156,6 +156,7 @@ class SdApiService {
156
156
  body,
157
157
  });
158
158
  }
159
+ const apiTimeout = (options === null || options === void 0 ? void 0 : options.timeout) || __classPrivateFieldGet(this, _timeout);
159
160
  if (!__classPrivateFieldGet(this, _cache)[hashKey] || Date.addMiliseconds(__classPrivateFieldGet(this, _cache)[hashKey].createdDate, __classPrivateFieldGet(this, _cacheDuration)) < new Date()) {
160
161
  __classPrivateFieldGet(this, _cache)[hashKey] = {
161
162
  createdDate: new Date(),
@@ -168,7 +169,7 @@ class SdApiService {
168
169
  headers,
169
170
  responseType: options === null || options === void 0 ? void 0 : options.responseType,
170
171
  })
171
- .pipe(timeout(__classPrivateFieldGet(this, _timeout)))
172
+ .pipe(timeout(apiTimeout))
172
173
  .subscribe(res => {
173
174
  __classPrivateFieldGet(this, _cache)[hashKey].response = {
174
175
  status: 'success',
@@ -189,7 +190,7 @@ class SdApiService {
189
190
  observe: 'response',
190
191
  headers,
191
192
  })
192
- .pipe(timeout(__classPrivateFieldGet(this, _timeout)))
193
+ .pipe(timeout(apiTimeout))
193
194
  .subscribe(res => {
194
195
  if (res.ok) {
195
196
  __classPrivateFieldGet(this, _cache)[hashKey].response = {
@@ -236,7 +237,9 @@ class SdApiService {
236
237
  hours: options === null || options === void 0 ? void 0 : options.cacheHours,
237
238
  });
238
239
  if (!has()) {
239
- const result = yield this.post(url, body, options === null || options === void 0 ? void 0 : options.headers);
240
+ const result = yield this.post(url, body, options === null || options === void 0 ? void 0 : options.headers, {
241
+ timeout: 5000,
242
+ });
240
243
  set(result);
241
244
  return result;
242
245
  }
@@ -300,6 +303,7 @@ class SdApiService {
300
303
  encodedUrl,
301
304
  headers,
302
305
  });
306
+ const apiTimeout = (options === null || options === void 0 ? void 0 : options.timeout) || __classPrivateFieldGet(this, _timeout);
303
307
  if (!__classPrivateFieldGet(this, _cache)[hashKey] || Date.addMiliseconds(__classPrivateFieldGet(this, _cache)[hashKey].createdDate, __classPrivateFieldGet(this, _cacheDuration)) < new Date()) {
304
308
  __classPrivateFieldGet(this, _cache)[hashKey] = {
305
309
  createdDate: new Date(),
@@ -308,7 +312,7 @@ class SdApiService {
308
312
  if ((options === null || options === void 0 ? void 0 : options.responseType) && options.responseType !== 'json') {
309
313
  this.httpClient
310
314
  .get(encodedUrl, { observe: 'body', headers, responseType: options === null || options === void 0 ? void 0 : options.responseType })
311
- .pipe(timeout(__classPrivateFieldGet(this, _timeout)))
315
+ .pipe(timeout(apiTimeout))
312
316
  .subscribe(res => {
313
317
  __classPrivateFieldGet(this, _cache)[hashKey].response = {
314
318
  status: 'success',
@@ -326,7 +330,7 @@ class SdApiService {
326
330
  else {
327
331
  this.httpClient
328
332
  .get(encodedUrl, { observe: 'response', headers })
329
- .pipe(timeout(__classPrivateFieldGet(this, _timeout)))
333
+ .pipe(timeout(apiTimeout))
330
334
  .subscribe(res => {
331
335
  if (res.ok) {
332
336
  __classPrivateFieldGet(this, _cache)[hashKey].response = {
@@ -373,7 +377,7 @@ class SdApiService {
373
377
  hours: options === null || options === void 0 ? void 0 : options.cacheHours,
374
378
  });
375
379
  if (!has() || (options === null || options === void 0 ? void 0 : options.reload)) {
376
- const result = yield this.get(encodedUrl, options === null || options === void 0 ? void 0 : options.headers, { encodeURI: false });
380
+ const result = yield this.get(encodedUrl, options === null || options === void 0 ? void 0 : options.headers, { encodeURI: false, timeout: 5000 });
377
381
  set(result);
378
382
  return result;
379
383
  }