From a3c0c298018a63faa6ab2cea84c5787bb8b41ab5 Mon Sep 17 00:00:00 2001 From: Juan Cisneros Date: Wed, 18 Sep 2024 16:53:12 -0500 Subject: [PATCH] New Features: 1. Better design for the load test New Pages: Bugs Corrected: To Be Corrected: 0. On product delete, delete trace results 1. On product delete, delete flamegraph result --- www/2836.865f9dad4b6cae1c.js | 1 - www/2836.a8fdd86686595eb3.js | 1 + www/index.html | 2 +- ...{runtime.89edb3a0285b1f49.js => runtime.21fb6cfa2df75546.js} | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 www/2836.865f9dad4b6cae1c.js create mode 100644 www/2836.a8fdd86686595eb3.js rename www/{runtime.89edb3a0285b1f49.js => runtime.21fb6cfa2df75546.js} (98%) diff --git a/www/2836.865f9dad4b6cae1c.js b/www/2836.865f9dad4b6cae1c.js deleted file mode 100644 index e0701cc..0000000 --- a/www/2836.865f9dad4b6cae1c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkapp=self.webpackChunkapp||[]).push([[2836],{5553:(H,L,h)=>{h.d(L,{h:()=>v});var T=h(177),M=h(7863),g=h(4438);let v=(()=>{var j;class o{}return(j=o).\u0275fac=function(R){return new(R||j)},j.\u0275mod=g.$C({type:j}),j.\u0275inj=g.G2t({imports:[T.MD,M.bv]}),o})()},3241:(H,L,h)=>{h.d(L,{p:()=>v});var T=h(4438),M=h(177),g=h(7863);let v=(()=>{var j;class o{constructor(R){this.location=R,this.title="Header Title"}ngOnInit(){}goBack(){this.location.back()}}return(j=o).\u0275fac=function(R){return new(R||j)(T.rXU(M.aZ))},j.\u0275cmp=T.VBU({type:j,selectors:[["app-header-return"]],inputs:{title:"title"},decls:6,vars:2,consts:[[3,"translucent"],["slot","start","menu","menu-id"],["name","arrow-back","slot","start",1,"p-4","bigger-icon",3,"click"]],template:function(R,O){1&R&&(T.j41(0,"ion-header",0)(1,"ion-toolbar"),T.nrm(2,"ion-menu-button",1),T.j41(3,"ion-icon",2),T.bIt("click",function(){return O.goBack()}),T.k0s(),T.j41(4,"ion-title"),T.EFF(5),T.k0s()()()),2&R&&(T.Y8G("translucent",!0),T.R7$(5),T.JRh(O.title))},dependencies:[g.eU,g.iq,g.MC,g.BC,g.ai],styles:[".bigger-icon[_ngcontent-%COMP%]{font-size:1.5em}"]}),o})()},2836:(H,L,h)=>{h.r(L),h.d(L,{LoadTestPageModule:()=>q});var T=h(177),M=h(4341),g=h(7863),v=h(7650),j=h(467),o=h(4438),P=h(4262);class R{static toArtilleryData(n){return function F(e,n){return E(e,n,k)}(JSON.parse(n),b("ArtilleryData"))}static artilleryDataToJson(n){return JSON.stringify(function $(e,n){return E(e,n,I)}(n,b("ArtilleryData")),null,2)}}function O(e,n,f,t=""){const r=_(e);throw Error(`Invalid value${f?` for key "${f}"`:""}${t?` on ${t}`:""}. Expected ${r} but got ${JSON.stringify(n)}`)}function _(e){return Array.isArray(e)?2===e.length&&void 0===e[0]?`an optional ${_(e[1])}`:`one of [${e.map(n=>_(n)).join(", ")}]`:"object"==typeof e&&void 0!==e.literal?e.literal:typeof e}function k(e){if(void 0===e.jsonToJS){const n={};e.props.forEach(f=>n[f.json]={key:f.js,typ:f.typ}),e.jsonToJS=n}return e.jsonToJS}function I(e){if(void 0===e.jsToJSON){const n={};e.props.forEach(f=>n[f.js]={key:f.json,typ:f.typ}),e.jsToJSON=n}return e.jsToJSON}function E(e,n,f,t="",r=""){if("any"===n)return e;if(null===n)return null===e?e:O(n,e,t,r);if(!1===n)return O(n,e,t,r);let a;for(;"object"==typeof n&&void 0!==n.ref;)a=n.ref,n=G[n.ref];return Array.isArray(n)?function i(s,p){return-1!==s.indexOf(p)?p:O(s.map(d=>w(d)),p,t,r)}(n,e):"object"==typeof n?n.hasOwnProperty("unionMembers")?function l(s,p){const d=s.length;for(let C=0;CE(d,s,f)):O(w("array"),p,t,r)}(n.arrayItems,e):n.hasOwnProperty("props")?function y(s,p,d){if(null===d||"object"!=typeof d||Array.isArray(d))return O(w(a||"object"),d,t,r);const C={};return Object.getOwnPropertyNames(s).forEach(A=>{const x=s[A],N=Object.prototype.hasOwnProperty.call(d,A)?d[A]:void 0;C[x.key]=void 0!==N?E(N,x.typ,f,A,a):void 0}),Object.getOwnPropertyNames(d).forEach(A=>{Object.prototype.hasOwnProperty.call(s,A)||(C[A]=E(d[A],p,f,A,a))}),C}(f(n),n.additional,e):O(n,e,t,r):n===Date&&"number"!=typeof e?function c(s){if(null===s)return null;const p=new Date(s);return isNaN(p.valueOf())?O(w("Date"),s,t,r):p}(e):function u(s,p){return typeof s==typeof p?p:O(s,p,t,r)}(n,e)}function w(e){return{literal:e}}function S(e,n){return{props:e,additional:n}}function D(e){return{props:[],additional:e}}function b(e){return{ref:e}}const G={ArtilleryData:S([{json:"aggregate",js:"aggregate",typ:b("Aggregate")},{json:"intermediate",js:"intermediate",typ:function U(e){return{arrayItems:e}}(b("Intermediate"))},{json:"date",js:"date",typ:""}],!1),Aggregate:S([{json:"counters",js:"counters",typ:D(0)},{json:"rates",js:"rates",typ:b("Rates")},{json:"firstCounterAt",js:"firstCounterAt",typ:0},{json:"firstHistogramAt",js:"firstHistogramAt",typ:0},{json:"lastCounterAt",js:"lastCounterAt",typ:0},{json:"lastHistogramAt",js:"lastHistogramAt",typ:0},{json:"firstMetricAt",js:"firstMetricAt",typ:0},{json:"lastMetricAt",js:"lastMetricAt",typ:0},{json:"period",js:"period",typ:0},{json:"summaries",js:"summaries",typ:b("Histograms")},{json:"histograms",js:"histograms",typ:b("Histograms")}],!1),Histograms:S([{json:"http.response_time",js:"http.response_time",typ:D(3.14)},{json:"plugins.metrics-by-endpoint.response_time./",js:"plugins.metrics-by-endpoint.response_time./",typ:D(3.14)},{json:"vusers.session_length",js:"vusers.session_length",typ:function W(...e){return{unionMembers:e}}(void 0,D(3.14))}],!1),Rates:S([{json:"http.request_rate",js:"http.request_rate",typ:0}],!1),Intermediate:S([{json:"counters",js:"counters",typ:D(0)},{json:"rates",js:"rates",typ:b("Rates")},{json:"http.request_rate",js:"http.request_rate",typ:null},{json:"firstCounterAt",js:"firstCounterAt",typ:0},{json:"firstHistogramAt",js:"firstHistogramAt",typ:0},{json:"lastCounterAt",js:"lastCounterAt",typ:0},{json:"lastHistogramAt",js:"lastHistogramAt",typ:0},{json:"firstMetricAt",js:"firstMetricAt",typ:0},{json:"lastMetricAt",js:"lastMetricAt",typ:0},{json:"period",js:"period",typ:""},{json:"summaries",js:"summaries",typ:b("Histograms")},{json:"histograms",js:"histograms",typ:b("Histograms")}],!1)};var B=h(1626);let J=(()=>{var e;class n{constructor(t,r){this.firestore=t,this.http=r,this.url="https://devprobeapi.onrender.com/create_load_test"}getLoadTestHistory(t,r,u){var l=this;return(0,j.A)(function*(){const i=(0,P.H9)(l.firestore,"teams",t,"products",r,"load_test",u),m=yield(0,P.x7)(i);if(m.exists()){let c=m.data();console.log(c);let y=Object.keys(c);console.log(y);for(let a of y)c[a]=R.toArtilleryData(c[a]);return c}return{}})()}sendLoadTest(t,r,u,l){var i=this;return(0,j.A)(function*(){try{const m={team:t,product:r,service:u,target:`https://${l}`};return yield i.http.post(i.url,m).toPromise()}catch{return{}}})()}}return(e=n).\u0275fac=function(t){return new(t||e)(o.KVO(P._7),o.KVO(B.Qq))},e.\u0275prov=o.jDH({token:e,factory:e.\u0275fac,providedIn:"root"}),n})();var z=h(8453),K=h(3241),X=h(2820);const Y=[{path:"",component:(()=>{var e;class n{constructor(t,r,u,l,i){this.router=t,this.activatedRoute=r,this.loadTestService=u,this.loadingCtrl=l,this.alertCtrl=i,this.productStep="",this.productObjective="",this.orgName="",this.target="",this.description="",this.loadTestResults={},this.totalNumberOfRequests=0,this.statusCodesOptions={tooltip:{trigger:"axis"},xAxis:{type:"category",boundaryGap:!1,data:[]},yAxis:{type:"value"},series:[]},this.responseTimeOptions={tooltip:{trigger:"axis"},xAxis:{type:"category",boundaryGap:!1,data:[]},yAxis:{type:"value"},series:[]}}ngOnInit(){}ionViewWillEnter(){var t=this;return(0,j.A)(function*(){yield t.showLoading(),t.getParams(),yield t.getHistoryResults().then(()=>{t.plotCodes(),t.totalRequests(),t.responseTime()}),yield t.hideLoading()})()}getParams(){this.activatedRoute.params.subscribe(r=>{this.productObjective=r.productObjective,this.productStep=r.step});const t=JSON.parse(localStorage.getItem("user"));this.orgName=t.orgName,console.log(this.orgName),console.log(this.productObjective),console.log(this.productStep)}sendRequest(){var t=this;return(0,j.A)(function*(){if(yield t.showLoading(),t.target.startsWith("http://")||t.target.startsWith("https://")||t.target.endsWith("/"))return yield t.hideLoading(),void(yield t.showAlert("No http or https is needed, check for slashes at the end of the domain","Please enter a valid host"));yield t.loadTestService.sendLoadTest(t.orgName,t.productObjective,t.productStep,t.target).then(function(){var r=(0,j.A)(function*(u){yield t.hideLoading(),console.log("data",u),u&&(yield t.showAlert("Test sent, please wait a few seconds to GET RESULTS","Success"))});return function(u){return r.apply(this,arguments)}}()),yield t.hideLoading()})()}getHistoryResults(){var t=this;return(0,j.A)(function*(){t.loadTestResults=yield t.loadTestService.getLoadTestHistory(t.orgName,t.productObjective,t.productStep)})()}totalRequests(){let t=Object.keys(this.loadTestResults),r={},u=0;for(let l of t){let i=this.loadTestResults[l].aggregate.counters,m=this.loadTestResults[l].date,c=Object.keys(i).filter(y=>y.startsWith("http.requests"));for(let y of c)r[m]||(r[m]={}),r[m][y]=(r[m][y]||0)+i[y]}for(let l of Object.keys(r))u+=r[l]["http.requests"];this.totalNumberOfRequests=u}byCodes(){let t=Object.keys(this.loadTestResults),r={};for(let u of t){let l=this.loadTestResults[u].aggregate.counters,i=this.loadTestResults[u].date.split("-").slice(0,3).join("-"),m=Object.keys(l).filter(c=>c.startsWith("http.codes."));r[i]||(r[i]={});for(let c of m)r[i][c]=(r[i][c]||0)+l[c]}return r=this.ordenarDiccionarioPorFechas(r),r}normalizarFecha(t){const[r,u,l]=t.split("-").map(c=>parseInt(c,10));return`${r}-${u<10?`0${u}`:u.toString()}-${l<10?`0${l}`:l.toString()}`}ordenarDiccionarioPorFechas(t){const u=Object.keys(t).sort((i,m)=>{const c=new Date(this.normalizarFecha(i)),y=new Date(this.normalizarFecha(m));return c.getTime()-y.getTime()}),l={};return u.forEach(i=>{l[i]=t[i]}),l}plotCodes(){var t=this;return(0,j.A)(function*(){let r=t.byCodes();console.log(r);let u=Object.keys(r),l=new Set;for(let y of u){let s=Object.keys(r[y]);for(let p of s)l.add(p)}let i={};for(let y in r){let a=r[y];for(let s of l)i[s]||(i[s]=[]),i[s].push(a[s]||0)}let m=["#36b311","#306fc6","#ed3b3b","#f4ba20"];for(let y in i){let s,a=y.split(".").pop();null!=a&&a.startsWith("2")&&(s=m[0]),null!=a&&a.startsWith("3")&&(s=m[1]),null!=a&&a.startsWith("4")&&(s=m[2]),null!=a&&a.startsWith("5")&&(s=m[3]),s||(s="#000000"),t.statusCodesOptions.series.push({name:y,type:"line",data:i[y],lineStyle:{color:s},itemStyle:{color:s}})}t.statusCodesOptions.xAxis={type:"category",boundaryGap:!1,data:u},t.statusCodesOptions={...t.statusCodesOptions};let c=document.getElementById("httpCodesChart");console.log(c),c.style.width="100%",c.style.height="25em"})()}responseTime(){let t=Object.keys(this.loadTestResults),r={};for(let a of t){let s=this.loadTestResults[a].aggregate.histograms,p=this.loadTestResults[a].date,d=Object.keys(s).filter(C=>C.startsWith("http.response_time"));for(let C of d)r[p]=s[C]}let u=Object.entries(r).reduce((a,[s,p])=>{const d=s.split("-").slice(0,3).join("-");return a[d]=a[d]||[],a[d].push(p),a},{}),l=Object.keys(u).sort((a,s)=>new Date(a).getTime()-new Date(s).getTime()),i={count:0,max:0,min:0,mean:0,median:0,p50:0,p90:0,p95:0,p99:0,p999:0},m={};l.forEach(a=>{let s={count:0,max:0,min:0,mean:0,median:0,p50:0,p90:0,p95:0,p99:0,p999:0},p=0;u[a].forEach(d=>{s.count+=d.count,s.max+=d.max,s.min+=d.min,s.mean+=d.mean,s.median+=d.median,s.p50+=d.p50,s.p90+=d.p90,s.p95+=d.p95,s.p99+=d.p99,s.p999+=d.p999,p++});for(let d in s)"count"!==d&&p>0&&(s[d]=s[d]/p);m[a]=s,i.count+=s.count,i.max+=s.max,i.min+=s.min,i.mean+=s.mean,i.median+=s.median,i.p50+=s.p50,i.p90+=s.p90,i.p95+=s.p95,i.p99+=s.p99,i.p999+=s.p999});let c=l.length;c>0&&(i.mean/=c,i.median/=c,i.p50/=c,i.p90/=c,i.p95/=c,i.p99/=c,i.p999/=c,i.max/=c,i.min/=c);for(let a in i)"count"===a||"p90"===a||"p50"===a||"p999"===a||this.responseTimeOptions.series.push({name:a,type:"bar",data:[i[a]],label:{show:!0,formatter:s=>`${s.value.toFixed(2)} ms`}});this.responseTimeOptions.xAxis={type:"category",boundaryGap:!1,data:["Category"]},this.responseTimeOptions={...this.responseTimeOptions};let y=document.getElementById("httpResponseTimeChart");console.log(y),y.style.width="100%",y.style.height="25em"}showLoading(){var t=this;return(0,j.A)(function*(){yield(yield t.loadingCtrl.create({})).present()})()}hideLoading(){var t=this;return(0,j.A)(function*(){yield t.loadingCtrl.dismiss()})()}showAlert(t,r){var u=this;return(0,j.A)(function*(){const l=yield u.alertCtrl.create({header:r,message:t,buttons:["OK"]});return yield l.present(),yield l.onDidDismiss(),!0})()}}return(e=n).\u0275fac=function(t){return new(t||e)(o.rXU(v.Ix),o.rXU(v.nX),o.rXU(J),o.rXU(g.Xi),o.rXU(g.hG))},e.\u0275cmp=o.VBU({type:e,selectors:[["app-load-test"]],decls:36,vars:11,consts:[[3,"title"],[3,"fullscreen"],[1,"lg:m-10","md:m-10"],["size","12","size-md","8","size-lg","8",1,""],["label","Target","placeholder","Enter a target","type","text","labelPlacement","stacked",1,"",3,"ngModelChange","ngModel"],["size","12","size-md","12","size-lg","12",1,"flex","flex-row","justify-end"],["color","primary","size","small",1,"",3,"click"],["name","add"],[1,"w-full","p-6","flex","flex-col","justify-center","items-center"],[1,"text-3xl"],[1,"text-2xl","text-white"],[1,"h-[25em]","w-full"],["id","httpCodesChart","echarts","",1,"demo-chart","h-full","w-full",3,"options"],["id","httpResponseTimeChart","echarts","",1,"demo-chart","h-full","w-full",3,"options"]],template:function(t,r){1&t&&(o.nrm(0,"app-header-return",0),o.j41(1,"ion-content",1)(2,"ion-grid"),o.nrm(3,"app-title",0),o.j41(4,"ion-row",2)(5,"ion-col",3)(6,"ion-input",4),o.mxI("ngModelChange",function(l){return o.DH7(r.target,l)||(r.target=l),l}),o.k0s()()(),o.j41(7,"ion-row",2)(8,"ion-col",5)(9,"ion-button",6),o.bIt("click",function(){return r.sendRequest()}),o.EFF(10,"Load Target "),o.nrm(11,"ion-icon",7),o.k0s()()(),o.nrm(12,"app-title",0),o.j41(13,"ion-row",2)(14,"ion-card",8)(15,"ion-card-header")(16,"ion-card-title",9),o.EFF(17,"Total Number of Requests"),o.k0s()(),o.j41(18,"ion-card-content")(19,"h1",10),o.EFF(20),o.nI1(21,"number"),o.k0s()()()(),o.j41(22,"ion-row",2)(23,"ion-card",8)(24,"ion-card-header")(25,"ion-card-title",9),o.EFF(26,"HTTP Status Codes"),o.k0s()(),o.j41(27,"ion-card-content",11),o.nrm(28,"div",12),o.k0s()()(),o.j41(29,"ion-row",2)(30,"ion-card",8)(31,"ion-card-header")(32,"ion-card-title",9),o.EFF(33,"HTTP Response Time"),o.k0s()(),o.j41(34,"ion-card-content",11),o.nrm(35,"div",13),o.k0s()()()()()),2&t&&(o.Y8G("title","Load Test For "+r.productStep),o.R7$(),o.Y8G("fullscreen",!0),o.R7$(2),o.Y8G("title","New Load Test"),o.R7$(3),o.R50("ngModel",r.target),o.R7$(6),o.Y8G("title","Analytics For "+r.productStep),o.R7$(8),o.JRh(o.i5U(21,8,r.totalNumberOfRequests,"1.0-0")),o.R7$(8),o.Y8G("options",r.statusCodesOptions),o.R7$(7),o.Y8G("options",r.responseTimeOptions))},dependencies:[M.BC,M.vS,g.Jm,g.b_,g.I9,g.ME,g.tN,g.hU,g.W9,g.lO,g.iq,g.$w,g.ln,g.Gw,z.W,K.p,X.$P,T.QX]}),n})()}];let V=(()=>{var e;class n{}return(e=n).\u0275fac=function(t){return new(t||e)},e.\u0275mod=o.$C({type:e}),e.\u0275inj=o.G2t({imports:[v.iI.forChild(Y),v.iI]}),n})();var Q=h(5553);let q=(()=>{var e;class n{}return(e=n).\u0275fac=function(t){return new(t||e)},e.\u0275mod=o.$C({type:e}),e.\u0275inj=o.G2t({imports:[T.MD,M.YN,g.bv,V,Q.h]}),n})()}}]); \ No newline at end of file diff --git a/www/2836.a8fdd86686595eb3.js b/www/2836.a8fdd86686595eb3.js new file mode 100644 index 0000000..025d015 --- /dev/null +++ b/www/2836.a8fdd86686595eb3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkapp=self.webpackChunkapp||[]).push([[2836],{5553:(F,M,g)=>{g.d(M,{h:()=>_});var T=g(177),P=g(7863),m=g(4438);let _=(()=>{var j;class t{}return(j=t).\u0275fac=function(R){return new(R||j)},j.\u0275mod=m.$C({type:j}),j.\u0275inj=m.G2t({imports:[T.MD,P.bv]}),t})()},3241:(F,M,g)=>{g.d(M,{p:()=>_});var T=g(4438),P=g(177),m=g(7863);let _=(()=>{var j;class t{constructor(R){this.location=R,this.title="Header Title"}ngOnInit(){}goBack(){this.location.back()}}return(j=t).\u0275fac=function(R){return new(R||j)(T.rXU(P.aZ))},j.\u0275cmp=T.VBU({type:j,selectors:[["app-header-return"]],inputs:{title:"title"},decls:6,vars:2,consts:[[3,"translucent"],["slot","start","menu","menu-id"],["name","arrow-back","slot","start",1,"p-4","bigger-icon",3,"click"]],template:function(R,O){1&R&&(T.j41(0,"ion-header",0)(1,"ion-toolbar"),T.nrm(2,"ion-menu-button",1),T.j41(3,"ion-icon",2),T.bIt("click",function(){return O.goBack()}),T.k0s(),T.j41(4,"ion-title"),T.EFF(5),T.k0s()()()),2&R&&(T.Y8G("translucent",!0),T.R7$(5),T.JRh(O.title))},dependencies:[m.eU,m.iq,m.MC,m.BC,m.ai],styles:[".bigger-icon[_ngcontent-%COMP%]{font-size:1.5em}"]}),t})()},2836:(F,M,g)=>{g.r(M),g.d(M,{LoadTestPageModule:()=>Z});var T=g(177),P=g(4341),m=g(7863),_=g(7650),j=g(467),t=g(4438),v=g(4262);class R{static toArtilleryData(n){return function x(s,n){return L(s,n,N)}(JSON.parse(n),b("ArtilleryData"))}static artilleryDataToJson(n){return JSON.stringify(function I(s,n){return L(s,n,$)}(n,b("ArtilleryData")),null,2)}}function O(s,n,p,e=""){const r=D(s);throw Error(`Invalid value${p?` for key "${p}"`:""}${e?` on ${e}`:""}. Expected ${r} but got ${JSON.stringify(n)}`)}function D(s){return Array.isArray(s)?2===s.length&&void 0===s[0]?`an optional ${D(s[1])}`:`one of [${s.map(n=>D(n)).join(", ")}]`:"object"==typeof s&&void 0!==s.literal?s.literal:typeof s}function N(s){if(void 0===s.jsonToJS){const n={};s.props.forEach(p=>n[p.json]={key:p.js,typ:p.typ}),s.jsonToJS=n}return s.jsonToJS}function $(s){if(void 0===s.jsToJSON){const n={};s.props.forEach(p=>n[p.js]={key:p.json,typ:p.typ}),s.jsToJSON=n}return s.jsToJSON}function L(s,n,p,e="",r=""){if("any"===n)return s;if(null===n)return null===s?s:O(n,s,e,r);if(!1===n)return O(n,s,e,r);let a;for(;"object"==typeof n&&void 0!==n.ref;)a=n.ref,n=W[n.ref];return Array.isArray(n)?function i(o,f){return-1!==o.indexOf(f)?f:O(o.map(d=>S(d)),f,e,r)}(n,s):"object"==typeof n?n.hasOwnProperty("unionMembers")?function u(o,f){const d=o.length;for(let C=0;CL(d,o,p)):O(S("array"),f,e,r)}(n.arrayItems,s):n.hasOwnProperty("props")?function y(o,f,d){if(null===d||"object"!=typeof d||Array.isArray(d))return O(S(a||"object"),d,e,r);const C={};return Object.getOwnPropertyNames(o).forEach(A=>{const k=o[A],H=Object.prototype.hasOwnProperty.call(d,A)?d[A]:void 0;C[k.key]=void 0!==H?L(H,k.typ,p,A,a):void 0}),Object.getOwnPropertyNames(d).forEach(A=>{Object.prototype.hasOwnProperty.call(o,A)||(C[A]=L(d[A],f,p,A,a))}),C}(p(n),n.additional,s):O(n,s,e,r):n===Date&&"number"!=typeof s?function c(o){if(null===o)return null;const f=new Date(o);return isNaN(f.valueOf())?O(S("Date"),o,e,r):f}(s):function l(o,f){return typeof o==typeof f?f:O(o,f,e,r)}(n,s)}function S(s){return{literal:s}}function E(s,n){return{props:s,additional:n}}function w(s){return{props:[],additional:s}}function b(s){return{ref:s}}const W={ArtilleryData:E([{json:"aggregate",js:"aggregate",typ:b("Aggregate")},{json:"intermediate",js:"intermediate",typ:function G(s){return{arrayItems:s}}(b("Intermediate"))},{json:"date",js:"date",typ:""}],!1),Aggregate:E([{json:"counters",js:"counters",typ:w(0)},{json:"rates",js:"rates",typ:b("Rates")},{json:"firstCounterAt",js:"firstCounterAt",typ:0},{json:"firstHistogramAt",js:"firstHistogramAt",typ:0},{json:"lastCounterAt",js:"lastCounterAt",typ:0},{json:"lastHistogramAt",js:"lastHistogramAt",typ:0},{json:"firstMetricAt",js:"firstMetricAt",typ:0},{json:"lastMetricAt",js:"lastMetricAt",typ:0},{json:"period",js:"period",typ:0},{json:"summaries",js:"summaries",typ:b("Histograms")},{json:"histograms",js:"histograms",typ:b("Histograms")}],!1),Histograms:E([{json:"http.response_time",js:"http.response_time",typ:w(3.14)},{json:"plugins.metrics-by-endpoint.response_time./",js:"plugins.metrics-by-endpoint.response_time./",typ:w(3.14)},{json:"vusers.session_length",js:"vusers.session_length",typ:function U(...s){return{unionMembers:s}}(void 0,w(3.14))}],!1),Rates:E([{json:"http.request_rate",js:"http.request_rate",typ:0}],!1),Intermediate:E([{json:"counters",js:"counters",typ:w(0)},{json:"rates",js:"rates",typ:b("Rates")},{json:"http.request_rate",js:"http.request_rate",typ:null},{json:"firstCounterAt",js:"firstCounterAt",typ:0},{json:"firstHistogramAt",js:"firstHistogramAt",typ:0},{json:"lastCounterAt",js:"lastCounterAt",typ:0},{json:"lastHistogramAt",js:"lastHistogramAt",typ:0},{json:"firstMetricAt",js:"firstMetricAt",typ:0},{json:"lastMetricAt",js:"lastMetricAt",typ:0},{json:"period",js:"period",typ:""},{json:"summaries",js:"summaries",typ:b("Histograms")},{json:"histograms",js:"histograms",typ:b("Histograms")}],!1)};var B=g(1626);let J=(()=>{var s;class n{constructor(e,r){this.firestore=e,this.http=r,this.url="https://devprobeapi.onrender.com/create_load_test"}getLoadTestHistory(e,r,l){var u=this;return(0,j.A)(function*(){const i=(0,v.H9)(u.firestore,"teams",e,"products",r,"load_test",l),h=yield(0,v.x7)(i);if(h.exists()){let c=h.data();console.log(c);let y=Object.keys(c);console.log(y);for(let a of y)c[a]=R.toArtilleryData(c[a]);return c}return{}})()}sendLoadTest(e,r,l,u){var i=this;return(0,j.A)(function*(){try{const h={team:e,product:r,service:l,target:`https://${u}`};return yield i.http.post(i.url,h).toPromise()}catch{return{}}})()}}return(s=n).\u0275fac=function(e){return new(e||s)(t.KVO(v._7),t.KVO(B.Qq))},s.\u0275prov=t.jDH({token:s,factory:s.\u0275fac,providedIn:"root"}),n})();var z=g(8453),K=g(3241),X=g(2820);function Y(s,n){if(1&s){const p=t.RV6();t.j41(0,"ion-item",17),t.bIt("click",function(){const r=t.eBV(p).$implicit,l=t.XpG();return t.Njj(l.viewHistory(r))}),t.j41(1,"ion-label"),t.EFF(2),t.k0s(),t.nrm(3,"ion-icon",18),t.k0s()}if(2&s){const p=n.$implicit;t.R7$(2),t.JRh(p)}}const V=[{path:"",component:(()=>{var s;class n{constructor(e,r,l,u,i){this.router=e,this.activatedRoute=r,this.loadTestService=l,this.loadingCtrl=u,this.alertCtrl=i,this.productStep="",this.productObjective="",this.orgName="",this.target="",this.description="",this.loadTestResults={},this.totalNumberOfRequests=0,this.statusCodesOptions={tooltip:{trigger:"axis"},xAxis:{type:"category",boundaryGap:!1,data:[]},yAxis:{type:"value"},series:[]},this.responseTimeOptions={tooltip:{trigger:"axis"},xAxis:{type:"category",boundaryGap:!1,data:[]},yAxis:{type:"value"},series:[]},this.listOfDates=[]}ngOnInit(){}ionViewWillEnter(){var e=this;return(0,j.A)(function*(){yield e.showLoading(),e.getParams(),yield e.getHistoryResults().then(()=>{e.plotCodes(),e.totalRequests(),e.responseTime()}),yield e.hideLoading()})()}getParams(){this.activatedRoute.params.subscribe(r=>{this.productObjective=r.productObjective,this.productStep=r.step});const e=JSON.parse(localStorage.getItem("user"));this.orgName=e.orgName,console.log(this.orgName),console.log(this.productObjective),console.log(this.productStep)}sendRequest(){var e=this;return(0,j.A)(function*(){if(yield e.showLoading(),e.target.startsWith("http://")||e.target.startsWith("https://")||e.target.endsWith("/"))return yield e.hideLoading(),void(yield e.showAlert("No http or https is needed, check for slashes at the end of the domain","Please enter a valid host"));yield e.loadTestService.sendLoadTest(e.orgName,e.productObjective,e.productStep,e.target).then(function(){var r=(0,j.A)(function*(l){yield e.hideLoading(),console.log("data",l),l&&(yield e.showAlert("Test sent, please wait a few seconds to GET RESULTS","Success"))});return function(l){return r.apply(this,arguments)}}()),yield e.hideLoading()})()}getHistoryResults(){var e=this;return(0,j.A)(function*(){e.loadTestResults=yield e.loadTestService.getLoadTestHistory(e.orgName,e.productObjective,e.productStep)})()}totalRequests(){let e=Object.keys(this.loadTestResults),r={},l=0;for(let u of e){let i=this.loadTestResults[u].aggregate.counters,h=this.loadTestResults[u].date,c=Object.keys(i).filter(y=>y.startsWith("http.requests"));for(let y of c)r[h]||(r[h]={}),r[h][y]=(r[h][y]||0)+i[y]}for(let u of Object.keys(r))l+=r[u]["http.requests"];this.totalNumberOfRequests=l}byCodes(){let e=Object.keys(this.loadTestResults),r={};for(let l of e){let u=this.loadTestResults[l].aggregate.counters,i=this.loadTestResults[l].date.split("-").slice(0,3).join("-"),h=Object.keys(u).filter(c=>c.startsWith("http.codes."));r[i]||(r[i]={});for(let c of h)r[i][c]=(r[i][c]||0)+u[c]}return r=this.ordenarDiccionarioPorFechas(r),r}normalizarFecha(e){const[r,l,u]=e.split("-").map(c=>parseInt(c,10));return`${r}-${l<10?`0${l}`:l.toString()}-${u<10?`0${u}`:u.toString()}`}ordenarDiccionarioPorFechas(e){const l=Object.keys(e).sort((i,h)=>{const c=new Date(this.normalizarFecha(i)),y=new Date(this.normalizarFecha(h));return c.getTime()-y.getTime()}),u={};return l.forEach(i=>{u[i]=e[i]}),u}plotCodes(){var e=this;return(0,j.A)(function*(){let r=e.byCodes();console.log(r);let l=Object.keys(r);e.listOfDates=l;let u=new Set;for(let y of l){let o=Object.keys(r[y]);for(let f of o)u.add(f)}let i={};for(let y in r){let a=r[y];for(let o of u)i[o]||(i[o]=[]),i[o].push(a[o]||0)}let h=["#36b311","#306fc6","#ed3b3b","#f4ba20"];for(let y in i){let o,a=y.split(".").pop();null!=a&&a.startsWith("2")&&(o=h[0]),null!=a&&a.startsWith("3")&&(o=h[1]),null!=a&&a.startsWith("4")&&(o=h[2]),null!=a&&a.startsWith("5")&&(o=h[3]),o||(o="#000000"),e.statusCodesOptions.series.push({name:y,type:"line",data:i[y],lineStyle:{color:o},itemStyle:{color:o}})}e.statusCodesOptions.xAxis={type:"category",boundaryGap:!1,data:l},e.statusCodesOptions={...e.statusCodesOptions};let c=document.getElementById("httpCodesChart");console.log(c),c.style.width="100%",c.style.height="25em"})()}responseTime(){let e=Object.keys(this.loadTestResults),r={};for(let a of e){let o=this.loadTestResults[a].aggregate.histograms,f=this.loadTestResults[a].date,d=Object.keys(o).filter(C=>C.startsWith("http.response_time"));for(let C of d)r[f]=o[C]}let l=Object.entries(r).reduce((a,[o,f])=>{const d=o.split("-").slice(0,3).join("-");return a[d]=a[d]||[],a[d].push(f),a},{}),u=Object.keys(l).sort((a,o)=>new Date(a).getTime()-new Date(o).getTime()),i={count:0,max:0,min:0,mean:0,median:0,p50:0,p90:0,p95:0,p99:0,p999:0},h={};u.forEach(a=>{let o={count:0,max:0,min:0,mean:0,median:0,p50:0,p90:0,p95:0,p99:0,p999:0},f=0;l[a].forEach(d=>{o.count+=d.count,o.max+=d.max,o.min+=d.min,o.mean+=d.mean,o.median+=d.median,o.p50+=d.p50,o.p90+=d.p90,o.p95+=d.p95,o.p99+=d.p99,o.p999+=d.p999,f++});for(let d in o)"count"!==d&&f>0&&(o[d]=o[d]/f);h[a]=o,i.count+=o.count,i.max+=o.max,i.min+=o.min,i.mean+=o.mean,i.median+=o.median,i.p50+=o.p50,i.p90+=o.p90,i.p95+=o.p95,i.p99+=o.p99,i.p999+=o.p999});let c=u.length;c>0&&(i.mean/=c,i.median/=c,i.p50/=c,i.p90/=c,i.p95/=c,i.p99/=c,i.p999/=c,i.max/=c,i.min/=c);for(let a in i)"count"===a||"p90"===a||"p50"===a||"p999"===a||this.responseTimeOptions.series.push({name:a,type:"bar",data:[i[a]],label:{show:!0,formatter:o=>`${o.value.toFixed(2)} ms`}});this.responseTimeOptions.xAxis={type:"category",boundaryGap:!1,data:["Category"]},this.responseTimeOptions={...this.responseTimeOptions};let y=document.getElementById("httpResponseTimeChart");console.log(y),y.style.width="100%",y.style.height="25em"}showLoading(){var e=this;return(0,j.A)(function*(){yield(yield e.loadingCtrl.create({})).present()})()}hideLoading(){var e=this;return(0,j.A)(function*(){yield e.loadingCtrl.dismiss()})()}showAlert(e,r){var l=this;return(0,j.A)(function*(){const u=yield l.alertCtrl.create({header:r,message:e,buttons:["OK"]});return yield u.present(),yield u.onDidDismiss(),!0})()}viewHistory(e){}}return(s=n).\u0275fac=function(e){return new(e||s)(t.rXU(_.Ix),t.rXU(_.nX),t.rXU(J),t.rXU(m.Xi),t.rXU(m.hG))},s.\u0275cmp=t.VBU({type:s,selectors:[["app-load-test"]],decls:43,vars:13,consts:[[3,"title"],[3,"fullscreen"],[1,"lg:m-10","md:m-10"],["size","12"],["label","Target","placeholder","Enter a target","type","text","labelPlacement","stacked",1,"",3,"ngModelChange","ngModel"],["size","12","size-md","12","size-lg","12",1,"flex","flex-row","justify-end"],["color","primary","size","small",1,"",3,"click"],["name","add"],[1,"w-full","p-6","flex","flex-col","justify-center","items-center"],[1,"text-3xl"],[1,"text-2xl","text-white"],[1,"h-[25em]","w-full"],["id","httpCodesChart","echarts","",1,"demo-chart","h-full","w-full",3,"options"],["id","httpResponseTimeChart","echarts","",1,"demo-chart","h-full","w-full",3,"options"],["size","12",1,"w-full"],[1,"w-full"],["class","w-full",3,"click",4,"ngFor","ngForOf"],[1,"w-full",3,"click"],["name","arrow-forward","color","primary"]],template:function(e,r){1&e&&(t.nrm(0,"app-header-return",0),t.j41(1,"ion-content",1)(2,"ion-grid"),t.nrm(3,"app-title",0),t.j41(4,"ion-row",2)(5,"ion-col",3)(6,"ion-card")(7,"ion-card-content")(8,"ion-input",4),t.mxI("ngModelChange",function(u){return t.DH7(r.target,u)||(r.target=u),u}),t.k0s()()()()(),t.j41(9,"ion-row",2)(10,"ion-col",5)(11,"ion-button",6),t.bIt("click",function(){return r.sendRequest()}),t.EFF(12,"Load Target "),t.nrm(13,"ion-icon",7),t.k0s()()(),t.nrm(14,"app-title",0),t.j41(15,"ion-row",2)(16,"ion-card",8)(17,"ion-card-header")(18,"ion-card-title",9),t.EFF(19,"Total Number of Requests"),t.k0s()(),t.j41(20,"ion-card-content")(21,"h1",10),t.EFF(22),t.nI1(23,"number"),t.k0s()()()(),t.j41(24,"ion-row",2)(25,"ion-card",8)(26,"ion-card-header")(27,"ion-card-title",9),t.EFF(28,"HTTP Status Codes"),t.k0s()(),t.j41(29,"ion-card-content",11),t.nrm(30,"div",12),t.k0s()()(),t.j41(31,"ion-row",2)(32,"ion-card",8)(33,"ion-card-header")(34,"ion-card-title",9),t.EFF(35,"HTTP Response Time"),t.k0s()(),t.j41(36,"ion-card-content",11),t.nrm(37,"div",13),t.k0s()()(),t.nrm(38,"app-title",0),t.j41(39,"ion-row",2)(40,"ion-col",14)(41,"ion-list",15),t.DNE(42,Y,4,1,"ion-item",16),t.k0s()()()()()),2&e&&(t.Y8G("title","Load Test For "+r.productStep),t.R7$(),t.Y8G("fullscreen",!0),t.R7$(2),t.Y8G("title","New Load Test"),t.R7$(5),t.R50("ngModel",r.target),t.R7$(6),t.Y8G("title","Analytics For "+r.productStep),t.R7$(8),t.JRh(t.i5U(23,10,r.totalNumberOfRequests,"1.0-0")),t.R7$(8),t.Y8G("options",r.statusCodesOptions),t.R7$(7),t.Y8G("options",r.responseTimeOptions),t.R7$(),t.Y8G("title","Results for date: "),t.R7$(4),t.Y8G("ngForOf",r.listOfDates))},dependencies:[T.Sq,P.BC,P.vS,m.Jm,m.b_,m.I9,m.ME,m.tN,m.hU,m.W9,m.lO,m.iq,m.$w,m.uz,m.he,m.nf,m.ln,m.Gw,z.W,K.p,X.$P,T.QX]}),n})()}];let q=(()=>{var s;class n{}return(s=n).\u0275fac=function(e){return new(e||s)},s.\u0275mod=t.$C({type:s}),s.\u0275inj=t.G2t({imports:[_.iI.forChild(V),_.iI]}),n})();var Q=g(5553);let Z=(()=>{var s;class n{}return(s=n).\u0275fac=function(e){return new(e||s)},s.\u0275mod=t.$C({type:s}),s.\u0275inj=t.G2t({imports:[T.MD,P.YN,m.bv,q,Q.h]}),n})()}}]); \ No newline at end of file diff --git a/www/index.html b/www/index.html index d46525b..f044867 100644 --- a/www/index.html +++ b/www/index.html @@ -21,6 +21,6 @@ - + diff --git a/www/runtime.89edb3a0285b1f49.js b/www/runtime.21fb6cfa2df75546.js similarity index 98% rename from www/runtime.89edb3a0285b1f49.js rename to www/runtime.21fb6cfa2df75546.js index 359ec3b..5c9143e 100644 --- a/www/runtime.89edb3a0285b1f49.js +++ b/www/runtime.21fb6cfa2df75546.js @@ -1 +1 @@ -(()=>{"use strict";var e,v={},g={};function f(e){var t=g[e];if(void 0!==t)return t.exports;var a=g[e]={exports:{}};return v[e].call(a.exports,a,a.exports,f),a.exports}f.m=v,e=[],f.O=(t,a,c,b)=>{if(!a){var d=1/0;for(r=0;r=b)&&Object.keys(f.O).every(p=>f.O[p](a[n]))?a.splice(n--,1):(l=!1,b0&&e[r-1][2]>b;r--)e[r]=e[r-1];e[r]=[a,c,b]},f.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return f.d(t,{a:t}),t},(()=>{var t,e=Object.getPrototypeOf?a=>Object.getPrototypeOf(a):a=>a.__proto__;f.t=function(a,c){if(1&c&&(a=this(a)),8&c||"object"==typeof a&&a&&(4&c&&a.__esModule||16&c&&"function"==typeof a.then))return a;var b=Object.create(null);f.r(b);var r={};t=t||[null,e({}),e([]),e(e)];for(var d=2&c&&a;"object"==typeof d&&!~t.indexOf(d);d=e(d))Object.getOwnPropertyNames(d).forEach(l=>r[l]=()=>a[l]);return r.default=()=>a,f.d(b,r),b}})(),f.d=(e,t)=>{for(var a in t)f.o(t,a)&&!f.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce((t,a)=>(f.f[a](e,t),t),[])),f.u=e=>(({2076:"common",7278:"polyfills-dom",9329:"polyfills-core-js"}[e]||e)+"."+{441:"c8d135e5d56e5723",839:"283ada25cfa51ac0",964:"466b88054b5c618c",1010:"1b7d4731c58dd6ba",1015:"3d449385ac057e7f",1049:"7ef232095c56e4df",1081:"724852e553670d61",1102:"010dfe13f6ca7e15",1143:"b164be066fa92bd6",1293:"ee80f2d33790618d",1313:"46ae0a0d0e94f2f8",1459:"32c41a59c0fd4cf1",1577:"f6f558490ff910b3",2075:"1971ba880d06cc30",2076:"fb3193443a34d3e5",2144:"5d46fa3641b801f2",2348:"12b471577685ffbe",2375:"efb0d99d1467ed67",2415:"dddee43f1c9b92e7",2494:"167cdb5e4cc4b3b7",2560:"f34ba2c5e85b55c8",2757:"83b4060f3177be94",2836:"865f9dad4b6cae1c",2885:"d64fa10bd441cbc8",3100:"be59eccfa5c9316f",3162:"825364e1635b086f",3451:"5cb648a56743fe4c",3506:"899dcc5e5d913023",3511:"16739e7034875331",3646:"554cb7eb2d8d0ce0",3814:"4f667f072e44b4e7",4163:"dd6bee594e4d801a",4171:"f5bc55c1acb0f5c1",4183:"0d54a4cc8cbc3a61",4348:"16e6409072fc8e11",4406:"03b087c2d77cb960",4443:"74ec71e1102d5a82",4463:"ce74c63a27a7a872",4591:"7a48c0cf9464e62b",4699:"01733b3942afbe92",4839:"1358f2425ffb5332",4867:"17817bc208c2836c",4914:"52404a177d9d7dd4",5054:"a36f0725f93c0766",5100:"659224ed1f94442c",5197:"cfc60de4c5213fec",5222:"9cbea5f62b0fb679",5371:"f8138eed060f579e",5399:"0706ad352f9b7c14",5712:"a9a2db8da6f1a8cd",5887:"708ea3877f30ffcd",5949:"2ed93c457aa1e9fb",5995:"2de4ee42f61961e5",6024:"3c02ab7fe82fedfe",6303:"4ea7e81fd1aa1e01",6433:"26eeba8bb230b119",6480:"2d3c5432c242ecc0",6521:"3c5b756783b6739a",6536:"a4f178f939f2d134",6695:"8ae905fc907dc6ca",6840:"fd32dada9c8ec44e",6975:"6d2e5de0574c6402",7030:"f2a9bf080bedfc5b",7056:"876606fe67c74125",7076:"2b7ea8b1f54f4458",7179:"80391eb100990080",7240:"680a87741a5535b1",7278:"bf542500b6fca113",7356:"911eacb1ce959b5e",7372:"4ea07cfe7eb821be",7428:"cb325b96b92ea4c2",7720:"78509b154c08b472",7762:"6371eca429bb8376",8066:"67e76a5c3f71f306",8193:"476b12959c4b189d",8314:"52348a57ed623e38",8361:"3d466d853997fbb0",8477:"15dacf21c512c8d4",8566:"52fa7b8c5c22d53f",8584:"94ca33677cedf961",8711:"158e69ebbe7b5f91",8805:"7a687270c4acd743",8814:"4175e28b98837400",8886:"87f743bcbe3c6802",8970:"402b7daea47854b9",8984:"d28cf89bc8592645",9013:"b8cefd92ba4e66d6",9070:"29b18cc91c088f3f",9273:"16673f4c5278d1b8",9329:"c76198334f717402",9344:"2d668603b6130b28",9456:"0b4cbaf1cbe8b46a",9546:"dd2455bcd410532c",9697:"57e559625e67bb53",9977:"948bf38bed890db4"}[e]+".js"),f.miniCssF=e=>{},f.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={},t="app:";f.l=(a,c,b,r)=>{if(e[a])e[a].push(c);else{var d,l;if(void 0!==b)for(var n=document.getElementsByTagName("script"),i=0;i{d.onerror=d.onload=null,clearTimeout(u);var y=e[a];if(delete e[a],d.parentNode&&d.parentNode.removeChild(d),y&&y.forEach(_=>_(p)),m)return m(p)},u=setTimeout(s.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=s.bind(null,d.onerror),d.onload=s.bind(null,d.onload),l&&document.head.appendChild(d)}}})(),f.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;f.tt=()=>(void 0===e&&(e={createScriptURL:t=>t},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),f.tu=e=>f.tt().createScriptURL(e),f.p="",(()=>{var e={9121:0};f.f.j=(c,b)=>{var r=f.o(e,c)?e[c]:void 0;if(0!==r)if(r)b.push(r[2]);else if(9121!=c){var d=new Promise((o,s)=>r=e[c]=[o,s]);b.push(r[2]=d);var l=f.p+f.u(c),n=new Error;f.l(l,o=>{if(f.o(e,c)&&(0!==(r=e[c])&&(e[c]=void 0),r)){var s=o&&("load"===o.type?"missing":o.type),u=o&&o.target&&o.target.src;n.message="Loading chunk "+c+" failed.\n("+s+": "+u+")",n.name="ChunkLoadError",n.type=s,n.request=u,r[1](n)}},"chunk-"+c,c)}else e[c]=0},f.O.j=c=>0===e[c];var t=(c,b)=>{var n,i,[r,d,l]=b,o=0;if(r.some(u=>0!==e[u])){for(n in d)f.o(d,n)&&(f.m[n]=d[n]);if(l)var s=l(f)}for(c&&c(b);o{"use strict";var e,v={},g={};function f(e){var t=g[e];if(void 0!==t)return t.exports;var a=g[e]={exports:{}};return v[e].call(a.exports,a,a.exports,f),a.exports}f.m=v,e=[],f.O=(t,a,c,b)=>{if(!a){var d=1/0;for(r=0;r=b)&&Object.keys(f.O).every(p=>f.O[p](a[n]))?a.splice(n--,1):(l=!1,b0&&e[r-1][2]>b;r--)e[r]=e[r-1];e[r]=[a,c,b]},f.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return f.d(t,{a:t}),t},(()=>{var t,e=Object.getPrototypeOf?a=>Object.getPrototypeOf(a):a=>a.__proto__;f.t=function(a,c){if(1&c&&(a=this(a)),8&c||"object"==typeof a&&a&&(4&c&&a.__esModule||16&c&&"function"==typeof a.then))return a;var b=Object.create(null);f.r(b);var r={};t=t||[null,e({}),e([]),e(e)];for(var d=2&c&&a;"object"==typeof d&&!~t.indexOf(d);d=e(d))Object.getOwnPropertyNames(d).forEach(l=>r[l]=()=>a[l]);return r.default=()=>a,f.d(b,r),b}})(),f.d=(e,t)=>{for(var a in t)f.o(t,a)&&!f.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce((t,a)=>(f.f[a](e,t),t),[])),f.u=e=>(({2076:"common",7278:"polyfills-dom",9329:"polyfills-core-js"}[e]||e)+"."+{441:"c8d135e5d56e5723",839:"283ada25cfa51ac0",964:"466b88054b5c618c",1010:"1b7d4731c58dd6ba",1015:"3d449385ac057e7f",1049:"7ef232095c56e4df",1081:"724852e553670d61",1102:"010dfe13f6ca7e15",1143:"b164be066fa92bd6",1293:"ee80f2d33790618d",1313:"46ae0a0d0e94f2f8",1459:"32c41a59c0fd4cf1",1577:"f6f558490ff910b3",2075:"1971ba880d06cc30",2076:"fb3193443a34d3e5",2144:"5d46fa3641b801f2",2348:"12b471577685ffbe",2375:"efb0d99d1467ed67",2415:"dddee43f1c9b92e7",2494:"167cdb5e4cc4b3b7",2560:"f34ba2c5e85b55c8",2757:"83b4060f3177be94",2836:"a8fdd86686595eb3",2885:"d64fa10bd441cbc8",3100:"be59eccfa5c9316f",3162:"825364e1635b086f",3451:"5cb648a56743fe4c",3506:"899dcc5e5d913023",3511:"16739e7034875331",3646:"554cb7eb2d8d0ce0",3814:"4f667f072e44b4e7",4163:"dd6bee594e4d801a",4171:"f5bc55c1acb0f5c1",4183:"0d54a4cc8cbc3a61",4348:"16e6409072fc8e11",4406:"03b087c2d77cb960",4443:"74ec71e1102d5a82",4463:"ce74c63a27a7a872",4591:"7a48c0cf9464e62b",4699:"01733b3942afbe92",4839:"1358f2425ffb5332",4867:"17817bc208c2836c",4914:"52404a177d9d7dd4",5054:"a36f0725f93c0766",5100:"659224ed1f94442c",5197:"cfc60de4c5213fec",5222:"9cbea5f62b0fb679",5371:"f8138eed060f579e",5399:"0706ad352f9b7c14",5712:"a9a2db8da6f1a8cd",5887:"708ea3877f30ffcd",5949:"2ed93c457aa1e9fb",5995:"2de4ee42f61961e5",6024:"3c02ab7fe82fedfe",6303:"4ea7e81fd1aa1e01",6433:"26eeba8bb230b119",6480:"2d3c5432c242ecc0",6521:"3c5b756783b6739a",6536:"a4f178f939f2d134",6695:"8ae905fc907dc6ca",6840:"fd32dada9c8ec44e",6975:"6d2e5de0574c6402",7030:"f2a9bf080bedfc5b",7056:"876606fe67c74125",7076:"2b7ea8b1f54f4458",7179:"80391eb100990080",7240:"680a87741a5535b1",7278:"bf542500b6fca113",7356:"911eacb1ce959b5e",7372:"4ea07cfe7eb821be",7428:"cb325b96b92ea4c2",7720:"78509b154c08b472",7762:"6371eca429bb8376",8066:"67e76a5c3f71f306",8193:"476b12959c4b189d",8314:"52348a57ed623e38",8361:"3d466d853997fbb0",8477:"15dacf21c512c8d4",8566:"52fa7b8c5c22d53f",8584:"94ca33677cedf961",8711:"158e69ebbe7b5f91",8805:"7a687270c4acd743",8814:"4175e28b98837400",8886:"87f743bcbe3c6802",8970:"402b7daea47854b9",8984:"d28cf89bc8592645",9013:"b8cefd92ba4e66d6",9070:"29b18cc91c088f3f",9273:"16673f4c5278d1b8",9329:"c76198334f717402",9344:"2d668603b6130b28",9456:"0b4cbaf1cbe8b46a",9546:"dd2455bcd410532c",9697:"57e559625e67bb53",9977:"948bf38bed890db4"}[e]+".js"),f.miniCssF=e=>{},f.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={},t="app:";f.l=(a,c,b,r)=>{if(e[a])e[a].push(c);else{var d,l;if(void 0!==b)for(var n=document.getElementsByTagName("script"),i=0;i{d.onerror=d.onload=null,clearTimeout(u);var y=e[a];if(delete e[a],d.parentNode&&d.parentNode.removeChild(d),y&&y.forEach(_=>_(p)),m)return m(p)},u=setTimeout(s.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=s.bind(null,d.onerror),d.onload=s.bind(null,d.onload),l&&document.head.appendChild(d)}}})(),f.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;f.tt=()=>(void 0===e&&(e={createScriptURL:t=>t},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),f.tu=e=>f.tt().createScriptURL(e),f.p="",(()=>{var e={9121:0};f.f.j=(c,b)=>{var r=f.o(e,c)?e[c]:void 0;if(0!==r)if(r)b.push(r[2]);else if(9121!=c){var d=new Promise((o,s)=>r=e[c]=[o,s]);b.push(r[2]=d);var l=f.p+f.u(c),n=new Error;f.l(l,o=>{if(f.o(e,c)&&(0!==(r=e[c])&&(e[c]=void 0),r)){var s=o&&("load"===o.type?"missing":o.type),u=o&&o.target&&o.target.src;n.message="Loading chunk "+c+" failed.\n("+s+": "+u+")",n.name="ChunkLoadError",n.type=s,n.request=u,r[1](n)}},"chunk-"+c,c)}else e[c]=0},f.O.j=c=>0===e[c];var t=(c,b)=>{var n,i,[r,d,l]=b,o=0;if(r.some(u=>0!==e[u])){for(n in d)f.o(d,n)&&(f.m[n]=d[n]);if(l)var s=l(f)}for(c&&c(b);o