{"version":3,"sources":["jsdelivr-header.js","/npm/fsm-shell@1.27.2/src/ShellEvents.ts","/npm/fsm-shell@1.27.2/src/ShellVersionInfo.ts","/npm/fsm-shell@1.27.2/src/MessageLogger.ts","/npm/fsm-shell@1.27.2/src/Debugger.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/authentication/auth-request.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/authentication/auth-response.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/require-context/require-context-request.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/cloud-storage/get-item-request.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/cloud-storage/get-item-request.v2.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/cloud-storage/get-item-response.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/cloud-storage/get-item-response.v2.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/cloud-storage/set-item-request.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/feature-flag/get-feature-flag-request.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/feature-flag/get-feature-flag-response.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/generic/set-title-request.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/modal/modal-open-request.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/modal/modal-open-request.v2.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/modal/modal-close-request.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/permissions/get-permissions-request.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/permissions/get-permissions-request.v2.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/permissions/get-permissions-request.v3.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/permissions/get-permissions-response.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/permissions/get-permissions-response.v2.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/permissions/get-permissions-response.v3.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/settings/get-settings-request.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/settings/get-settings-response.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/view-state/set-view-state-request.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/view-state/set-view-state-response.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/outlets/outlets-request-context-request.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/outlets/outlets-request-context-response.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/outlets/outlets-add-plugin-request.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/outlets/outlets-remove-plugin-request.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/outlets/outlets-request-dynamic-context-request.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/outlets/outlets-request-dynamic-context-response.v1.schema.ts","/npm/fsm-shell@1.27.2/src/validation/payload-validation-error.ts","/npm/fsm-shell@1.27.2/src/ShellSdk.ts","/npm/fsm-shell@1.27.2/src/models/org-data/org-data-filter-key.enum.ts","/npm/fsm-shell@1.27.2/src/validation/schemas/validation-configuration.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,yqBC0BO,IA8CK,EA9CC,EAAe,CAC1B,SAAU,CACR,gBAAiB,qBACjB,uBAAwB,4BACxB,MAAO,WACP,oBAAqB,yBACrB,gBAAiB,qBACjB,aAAc,kBACd,iBAAkB,sBAClB,iBAAkB,sBAClB,eAAgB,oBAChB,UAAW,eACX,cAAe,mBACf,OAAQ,YACR,iBAAkB,sBAClB,aAAc,kBACd,QAAS,CACP,qBAAsB,mCAExB,OAAQ,CACN,WAAY,uBACZ,cAAe,0BACf,gBAAiB,4BACjB,wBAAyB,oCACzB,gBAAiB,4BACjB,aAAc,0BAEhB,MAAO,CACL,KAAM,gBACN,MAAO,mBAGX,SAAU,CACR,iBAAkB,sBAClB,gBAAiB,qBACjB,MAAO,CACL,KAAM,iBAER,oBAAqB,0BAEvB,SAAU,CACR,gBAAiB,sBAEnB,MAAO,SAGG,gDAAS,KACnB,gCACA,EAAA,4CACA,EAAA,wCACA,EAAA,sCAGF,IAAM,EAAe,SAAC,EAAa,QAAA,IAAA,MAAA,IACjC,IAAI,EAAM,EAAO,GACjB,IAAK,IAAM,KAAO,EACW,iBAAhB,EAAO,GAChB,EAAO,KAAK,EAAO,IACa,iBAAhB,EAAO,KACvB,EAAS,EAAa,EAAO,GAAM,IAGvC,OAAO,CACT,EAEa,EAAmC,EAAa,GC9FhD,EACH,SADG,EAEH,2BCQV,EAAA,oBAAA,IAES,KAAA,SAA8B,EAyEvC,QAvES,EAAA,UAAA,KAAP,SAAY,EAAwB,GAClC,IAAI,EAGA,EAFoB,aAApB,EAAM,UACc,QAAlB,EAAM,QACC,uBAEA,uBAGF,UAEX,QAAQ,IAAO,EAAO,IAAI,EAAM,aAAc,GAC9C,KAAK,SAAS,KAAK,EACrB,EAEO,EAAA,UAAA,IAAP,WACE,OAAO,KAAK,QACd,EAEO,EAAA,UAAA,SAAP,WACE,QAAQ,MAAM,KAAK,MACrB,EAEO,EAAA,UAAA,OAAP,SAAc,GACZ,OAAO,KAAK,SAAS,OAAO,SAAA,GAE1B,GAAI,EAAQ,KAAM,CAChB,GAAI,MAAM,QAAQ,EAAQ,QAAU,EAAQ,KAAK,KAAK,SAAA,GAAQ,WAAI,OAAO,GAAM,KAAK,EAAQ,KAA9B,GAC5D,OAAO,EACF,GAA4B,iBAAjB,EAAQ,OAAsB,OAAO,EAAQ,MAAgB,KAAK,EAAQ,MAC1F,OAAO,CAEV,CAED,GAAI,EAAQ,UAAW,CACrB,GAAI,MAAM,QAAQ,EAAQ,aAAe,EAAQ,UAAU,KAAK,SAAA,GAAM,OAAA,IAAO,EAAQ,SAAf,GACpE,OAAO,EACF,GAAI,EAAQ,YAAc,EAAQ,UACvC,OAAO,CAEV,CAED,QAAI,EAAQ,WAAa,EAAQ,YAAc,EAAQ,eAKrD,EAAQ,WACc,aAAtB,EAAQ,gBACmB,IAApB,EAAQ,SACf,EAAQ,WAAiC,QAApB,EAAQ,cAK3B,EAAQ,MAAQ,EAAQ,KAAO,EAAQ,cAIvC,EAAQ,IAAM,EAAQ,GAAK,EAAQ,YAKzC,EACF,EAEO,EAAA,UAAA,YAAP,SAAmB,GACjB,QAAQ,MAAM,KAAK,OAAO,GAC5B,EAEF,CAAA,CA3EA,GCIA,EAAA,WAGE,SAAA,EAAoB,EAAwB,GAC1C,GADkB,KAAA,SAAwB,KAAA,UAFpC,KAAA,WAAqB,EAGvB,KAAK,QAAS,CAChB,IACM,EADM,KAAK,OACa,aAAa,QARrB,sBAUlB,GACF,EAAkB,MAAM,KAAK,KAAK,SAAC,GAAO,OAAA,IAAO,CAAP,KAE1C,KAAK,WAAY,EAEpB,CACH,CAgCF,OA9BS,EAAA,UAAA,WAAP,SACE,EACA,EACA,EACA,EACA,GAEA,GAAI,KAAK,WAAa,EAAuB,KAAK,SAAC,GAAO,OAAA,IAAO,CAAP,GAAc,CACtE,IAAM,EAA8B,CAClC,UAAW,IAAI,KACf,UAAW,KAAK,QAChB,UAAS,EACT,KAAI,EACJ,QAAuB,aAAd,EAA4B,EAAa,MAAQ,KAAQ,MAClE,GAAI,EAAQ,GACZ,KAAM,EAAQ,KACd,MAAO,EAAQ,MACf,QAAO,GAET,KAAK,SAAS,EACf,CACH,EAEQ,EAAA,UAAA,SAAR,SAAiB,GACf,IAAM,EAAM,KAAK,OACZ,EAAI,wBACP,EAAI,sBAAwB,IAAI,GAElC,EAAI,sBAAsB,KAAK,EAAY,KAAK,QAClD,EACF,CAAA,CA9CA,GCjBa,EAAwB,CACnC,KAAM,SACN,WAAY,CACV,cAAe,CACb,KAAM,SACN,KAAM,CAAC,QAAS,UAGpB,SAAU,CAAC,kBCRA,EAAyB,CACpC,KAAM,SACN,WAAY,CACV,aAAc,CACZ,KAAM,UAER,WAAY,CACV,KAAM,UAER,WAAY,CACV,KAAM,WAGV,SAAU,CAAC,eAAgB,aAAc,eCX9B,EAAkC,CAC7C,KAAM,SACN,WAAY,CACV,iBAAkB,CAChB,KAAM,UAER,aAAc,CACZ,KAAM,UAER,iBAAkB,CAChB,KAAM,QACN,MAAO,CACL,KAAM,SACN,WAAY,CACV,KAAM,CACJ,KAAM,UAER,YAAa,CACX,KAAM,UAER,iBAAkB,CAChB,KAAM,YAGV,SAAU,CAAC,OAAQ,cAAe,sBAGtC,KAAM,EACN,iBAAkB,CAChB,KAAM,UAER,4BAA6B,CAC3B,KAAM,WAGV,SAAU,CAAC,mBAAoB,iBCrCpB,EAA2B,CACtC,KAAM,UCDK,EAA2B,CACtC,MAAO,CACL,CACE,KAAM,UAER,CACE,KAAM,QACN,MAAO,CACL,KAAM,aCRD,EAA4B,GCA5B,EAA4B,CACvC,KAAM,SACN,WAAY,CACV,IAAK,CACH,KAAM,UAER,MAAO,IAET,SAAU,CAAC,MAAO,UCRP,EAA2B,CACtC,KAAM,SACN,WAAY,CACV,IAAK,CACH,KAAM,UAER,MAAO,IAET,SAAU,CAAC,MAAO,UCRP,EAAkC,CAC7C,MAAO,CACL,QAAS,CACP,KAAM,SACN,WAAY,CACV,IAAK,CACH,KAAM,UAER,aAAc,CACZ,KAAM,YAGV,SAAU,CAAC,MAAO,kBAGtB,MAAO,CACL,CACE,KAAM,mBAER,CACE,KAAM,QACN,MAAO,CACL,KAAM,sBCtBD,EAAmC,CAC9C,KAAM,SACN,WAAY,CACV,IAAK,CACH,KAAM,UAER,MAAO,CACL,KAAM,YAGV,SAAU,CAAC,MAAO,UCVP,EAA4B,CACvC,KAAM,SACN,WAAY,CACV,MAAO,CACL,KAAM,WAGV,SAAU,CAAC,UCPA,EAA6B,CACxC,KAAM,SACN,WAAY,CACV,IAAK,CACH,KAAM,UAER,cAAe,CACb,KAAM,SACN,WAAY,CACV,MAAO,CACL,KAAM,UAER,KAAM,CACJ,KAAM,SACN,KAAM,CAAC,IAAK,IAAK,MAEnB,uBAAwB,CACtB,KAAM,WAER,kBAAmB,CACjB,KAAM,aAIZ,KAAM,CACJ,KAAM,WAGV,SAAU,CAAC,QC5BA,EAA6B,CACxC,KAAM,SACN,WAAY,CACV,IAAK,CACH,KAAM,UAER,cAAe,CACb,KAAM,SACN,WAAY,CACV,MAAO,CACL,KAAM,UAER,gBAAiB,CACf,KAAM,WAGR,YAAa,CACX,KAAM,WAER,uBAAwB,CACtB,KAAM,WAER,gBAAiB,CACf,KAAM,WAER,aAAc,CACZ,KAAM,WAER,WAAY,CACV,KAAM,WAER,OAAQ,CACN,KAAM,WAER,mBAAoB,CAClB,KAAM,WAER,UAAW,CACT,KAAM,WAER,UAAW,CACT,KAAM,WAGR,MAAO,CACL,KAAM,UAER,OAAQ,CACN,KAAM,UAER,UAAW,CACT,KAAM,UAER,UAAW,CACT,KAAM,UAER,SAAU,CACR,KAAM,UAER,SAAU,CACR,KAAM,UAGR,kBAAmB,CACjB,KAAM,aAIZ,KAAM,CACJ,KAAM,UAER,gBAAiB,CACf,KAAM,QACN,MAAO,CACL,KAAM,YAIZ,SAAU,CAAC,QC9EA,EAA8B,CACzC,KAAM,UCDK,EAAkC,CAC7C,KAAM,SACN,WAAY,CACV,WAAY,CACV,KAAM,UAER,OAAQ,CACN,KAAM,QACN,MAAO,CACL,KAAM,YAIZ,SAAU,CAAC,eCbA,EAAkC,CAC7C,MAAO,CACL,QAAS,CACP,KAAM,SACN,WAAY,CACV,WAAY,CACV,KAAM,UAER,OAAQ,CACN,KAAM,QACN,MAAO,CACL,KAAM,YAIZ,SAAU,CAAC,gBAGf,MAAO,CACL,CACE,KAAM,mBAER,CACE,KAAM,QACN,MAAO,CACL,KAAM,sBCzBD,EAAkC,CAC7C,MAAO,CACL,QAAS,CACP,KAAM,SACN,WAAY,CACV,WAAY,CACV,KAAM,WAGV,SAAU,CAAC,gBAGf,MAAO,CACL,CACE,KAAM,mBAER,CACE,KAAM,QACN,MAAO,CACL,KAAM,sBCnBD,EAAmC,CAC9C,KAAM,SACN,WAAY,CACV,OAAQ,CACN,KAAM,WAER,KAAM,CACJ,KAAM,WAER,OAAQ,CACN,KAAM,WAER,OAAQ,CACN,KAAM,WAER,eAAgB,CACd,KAAM,QACN,MAAO,CACL,KAAM,YAIZ,SAAU,CAAC,SAAU,OAAQ,SAAU,SAAU,mBCpBtC,EAAmC,CAC9C,KAAM,SACN,WAAY,CACV,WAAY,CACV,KAAM,UAER,OAAQ,CACN,KAAM,QACN,MAAO,CACL,KAAM,WAGV,WAAY,GAEd,SAAU,CAAC,aAAc,eCdd,EAAmC,CAC9C,KAAM,SACN,WAAY,CACV,WAAY,CACV,KAAM,UAER,WAAY,GAEd,SAAU,CAAC,aAAc,eCVd,EAA+B,CAC1C,MAAO,CACL,CACG,KAAM,UAET,CACE,KAAM,QACN,MAAO,CACL,KAAM,CAAC,SAAU,SACjB,MAAO,CACL,CACE,KAAM,UAER,CACE,KAAM,QACN,MAAO,CACL,KAAM,gBChBP,EAAgC,CAC3C,KAAM,SACN,WAAY,CACV,IAAK,CACH,KAAM,UAER,MAAO,IAET,SAAU,CAAC,MAAO,UCRP,EAAgC,CAC3C,KAAM,SACN,WAAY,CACV,IAAK,CACH,KAAM,UAER,MAAO,IAET,SAAU,CAAC,MAAO,UCRP,EAAiC,CAC5C,KAAM,SACN,WAAY,CACV,IAAK,CACH,KAAM,UAER,MAAO,IAET,SAAU,CAAC,MAAO,UCRP,EAAyC,CACpD,KAAM,SACN,WAAY,CACV,OAAQ,CACN,KAAM,UAER,aAAc,CACZ,KAAM,UAER,UAAW,CACT,KAAM,WAER,eAAgB,IAElB,SAAU,CAAC,WCdA,EAA0C,CACrD,KAAM,SACN,WAAY,CACV,OAAQ,CACN,KAAM,UAER,gBAAiB,CACf,KAAM,WAER,oBAAqB,CACnB,KAAM,WAER,gBAAiB,CACf,KAAM,WAER,OAAQ,CACN,KAAM,SACN,WAAY,CACV,KAAM,CACJ,KAAM,UAER,IAAK,CACH,KAAM,UAER,cAAe,CACb,KAAM,UAER,YAAa,CACX,KAAM,WAER,SAAU,CACR,KAAM,WAER,gBAAiB,CACf,KAAM,QACN,MAAO,CACL,KAAM,WAGV,aAAc,CACZ,KAAM,WAGV,SAAU,CAAC,OAAQ,MAAO,cAG9B,SAAU,CAAC,wBC9CA,EAAoC,CAC/C,KAAM,SACN,WAAY,CACV,OAAQ,CACN,KAAM,WAGV,SAAU,CAAC,WCPA,EAAuC,CAClD,KAAM,SACN,WAAY,CACV,OAAQ,CACN,KAAM,WAGV,SAAU,CAAC,WCPA,EAAgD,CAC3D,KAAM,SACN,WAAY,CACV,OAAQ,CACN,KAAM,UAER,eAAgB,IAElB,SAAU,CAAC,WCRA,EAAiD,CAC5D,MAAO,CACL,OAAQ,CACN,KAAM,SACN,WAAY,CACV,KAAM,CACJ,KAAM,UAER,IAAK,CACH,KAAM,UAER,cAAe,CACb,KAAM,UAER,YAAa,CACX,KAAM,WAER,SAAU,CACR,KAAM,WAER,gBAAiB,CACf,KAAM,QACN,MAAO,CACL,KAAM,WAGV,aAAc,CACZ,KAAM,WAGV,SAAU,CAAC,OAAQ,MAAO,WAAY,kBAG1C,KAAM,SACN,WAAY,CACV,OAAQ,CACN,KAAM,UAER,gBAAiB,CACf,KAAM,WAER,oBAAqB,CACnB,KAAM,WAER,yBAA0B,CACxB,KAAM,WAER,gBAAiB,CACf,KAAM,WAER,QAAS,CACP,KAAM,QACN,MAAO,CACL,KAAM,oBAIZ,SAAU,ICzDZ,EAAA,SAAA,GAGE,SAAA,EAAY,EAAiB,GAA7B,IAAA,EACE,EAAA,KAAA,KAAM,IAAQ,K,OACd,EAAK,KAAO,yBACZ,EAAK,OAAS,E,CAChB,CACF,O,mPAR4C,CAAA,EAAA,GAQ5C,CAAA,CARA,CAA4C,OC8B5C,SAAS,EAAgB,GACvB,GAAK,EAGL,IACE,OAAO,EAAI,SAAS,IACrB,CAAC,MAAA,GACA,MACD,CACH,CAEA,ICzCY,EDyCZ,EAAA,WA2BE,SAAA,EACU,EACA,EACA,EACR,EACQ,GALV,I,EAAA,EAAA,KACU,KAAA,SACA,KAAA,SACA,KAAA,SAEA,KAAA,qBAzBF,KAAA,UAAqC,KACrC,KAAA,eAAiC,SAejC,KAAA,eAA2B,GAC3B,KAAA,eAA2B,GAC3B,KAAA,QAAkB,GAuKnB,KAAA,GAAK,SAAC,EAAiB,GAO5B,OANK,EAAK,eAAe,IAAI,IAC3B,EAAK,eAAe,IAAI,EAAM,IAGZ,EAAK,eAAe,IAAI,GAChC,KAAK,GACV,WACL,EAAK,iBAAiB,EAAM,EAC9B,CACF,EAGO,KAAA,YAAc,SAAC,EAAa,GAOjC,OANK,EAAK,wBAAwB,IAAI,IACpC,EAAK,wBAAwB,IAAI,EAAK,IAGpB,EAAK,wBAAwB,IAAI,GACzC,KAAK,GACV,WACL,EAAK,0BAA0B,EAAK,EACtC,CACF,EAGO,KAAA,IAAM,SAAC,EAAiB,GAC7B,EAAK,iBAAiB,EAAM,EAC9B,EAGO,KAAA,aAAe,SAAC,EAAa,GAClC,EAAK,0BAA0B,EAAK,EACtC,EAyGQ,KAAA,UAAY,SAAC,GACnB,GAAK,EAAM,MAAmC,iBAApB,EAAM,KAAK,OAKnC,EAAM,SAAW,OAAO,SACxB,EAAK,iBACL,MAAM,QAAQ,EAAK,iBACY,IAA/B,EAAK,eAAe,SAC0B,IAA9C,EAAK,eAAe,QAAQ,EAAM,SAKpC,GACE,EAAM,SAAW,OAAO,QACxB,EAAK,gBACL,MAAM,QAAQ,EAAK,iBACY,IAA/B,EAAK,eAAe,SAC0B,IAA9C,EAAK,eAAe,QAAQ,EAAM,QAElC,QAAQ,MAAS,EAAM,OAAM,4CAP/B,CAWA,IAAM,EAAU,EAAM,KAStB,GAAI,EAAQ,OAAS,EAAa,SAAS,OAAO,gBAAlD,CAKA,IAAK,EAAK,OAAQ,CAEhB,IAAM,EAAiB,EAAM,OAE7B,GAAI,EAAQ,CAEV,IAAM,EAAgB,MAAM,KAAK,EAAK,WAAW,QAAQ,KACvD,SAAC,GAAU,OAAA,EAAM,gBAAkB,CAAxB,GAEb,GAAI,GAAiB,EAAc,IAAK,CAEtC,GADqB,IAAI,IAAI,EAAc,KAAK,SAC3B,EAAM,OAUzB,YAPA,EAAK,SAAS,WACZ,UACA,EAAQ,KACR,EAAQ,MACR,CAAE,KAAM,EAAQ,OAChB,GAKJ,IAAI,EAAO,EAAQ,MAAQ,GAG3B,GAAI,EAAQ,OAAS,EAAa,SAAS,eAIzC,YAHA,QAAQ,KACN,8GAGG,IACJ,EAAQ,OAAS,EAAa,SAAS,MAAM,MAC5C,EAAQ,OAAS,EAAa,SAAS,MAAM,OAC/B,IAAhB,EAAK,SACJ,EAAK,eAAe,KAAK,SAAC,GAAM,OAAA,EAAQ,MAAM,IAAI,WAAW,EAA7B,GAKjC,YADA,QAAQ,KAAK,oDAKf,IACG,EAAQ,OAAS,EAAa,SAAS,OAAO,iBAC7C,EAAQ,OACN,EAAa,SAAS,OAAO,0BACjC,EAAK,QAAU,EAAK,mBAEpB,EAAO,YACL,CACE,KAAM,EAAa,SAAS,OAAO,aACnC,MAAO,CACL,OAAQ,EAAQ,MAAM,OACtB,MAAO,YAAU,sBAEnB,GAAI,GAEN,EAAK,YAEF,CACL,IAAM,EAAS,EAAK,WAAW,IAAI,GACnC,GAAI,GAAU,EAAO,KAAM,CACzB,GACE,EAAQ,OAAS,EAAa,SAAS,iBACvB,IAAhB,EAAK,aACW,IAAhB,EAAO,KACP,CACA,EAAQ,MAAM,iBAAmB,EAAO,KACxC,IAAM,EAAyB,EAC5B,sBACC,IACF,EAAQ,MAAM,4BACZ,EAEL,CACD,EAAI,EAAO,EAAI,CAAE,EAAO,OAQxB,IAAM,EAAgC,EAAQ,OAAS,GAEvD,GAA+B,IAA3B,EAAgB,OAElB,EAAgB,KAAK,CACnB,KAAM,EAAO,KACb,WAAY,EAAO,KACnB,sBAAwB,EACrB,sBACH,UAAW,EAAc,IACzB,aAAc,EAAgB,EAAc,qBAEzC,CAEL,IAAM,EAAY,EAAgB,EAAgB,OAAS,GACvD,IACG,EAAU,YACb,EAAU,UAAY,EAAc,KAEjC,EAAU,OACb,EAAU,KAAO,EAAO,OAErB,EAAU,YAAc,EAAO,OAClC,EAAU,WAAa,EAAO,MAE3B,EAAU,wBACb,EAAU,sBACR,EACA,uBAGP,CAGD,EAAgB,KAAK,CACnB,SAAU,EAAK,QACf,aAAc,EAAgB,QAC9B,QAAS,EAAK,gBAGhB,EAAK,SAAS,WACZ,WACA,EAAQ,KACR,EAAQ,MACR,CAAE,KAAI,EAAE,MAAO,IACf,GAEF,EAAK,OAAO,YACV,CACE,KAAM,EAAQ,KACd,MAAO,EAAQ,MACf,KAAI,EACJ,MAAO,GAET,EAAK,OAER,CACF,CACD,MACD,CAAM,GAAI,IAAW,EAAK,OAEzB,MAEH,CAGD,GAAI,EAAQ,OAAS,EAAa,SAAS,eAAgB,CACzD,EAAK,WAAW,QAAQ,SAAC,EAAO,GAC1B,EAAI,eACN,EAAI,cAAc,YAChB,CAAE,KAAM,EAAQ,KAAM,MAAO,EAAQ,OACrC,EAAK,OAGX,GAEA,IAAM,EAAkB,EAAK,wBAAwB,IACnD,EAAQ,MAAM,KAShB,GAPA,EAAK,SAAS,WACZ,WACA,EAAQ,KACR,EAAQ,MACR,KACE,GAEE,EACJ,IAAyB,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAiB,EAA/B,EAAU,EAAA,IACR,EAAQ,MAAM,MAC1B,CAEH,MACD,CA0BD,IArBG,EAAQ,OAAS,EAAa,SAAS,OAAO,iBAC7C,EAAQ,MAAM,eAAe,yBAC5B,EAAQ,MAAM,eAAe,YAC7B,EAAQ,MAAM,eAAe,WAC/B,EAAQ,OACP,EAAa,SAAS,OAAO,yBAC7B,EAAQ,MAAM,eAAe,8BAC5B,EAAQ,MAAM,eAAe,YAC7B,EAAQ,MAAM,eAAe,aAEhC,EAAK,WAAW,QAAQ,SAAC,EAAO,GAC1B,EAAI,eACN,EAAI,cAAc,YAChB,CAAE,KAAM,EAAQ,KAAM,MAAO,EAAQ,OACrC,EAAK,OAGX,GAKA,EAAQ,IACc,IAAtB,EAAQ,GAAG,QACX,EAAQ,OAAS,EAAa,SAAS,OAyBvC,OAvBA,EAAK,SAAS,WACZ,WACA,EAAQ,KACR,EAAQ,MACR,CAAE,GAAI,EAAQ,KACd,QAEF,EAAK,WAAW,QAAQ,SAAC,EAAO,GAE5B,EAAQ,KAC2B,IAAnC,EAAQ,GAAG,QAAQ,EAAM,OACzB,EAAI,eAEJ,EAAI,cAAc,YAChB,CACE,KAAM,EAAQ,KACd,MAAO,EAAQ,MACf,GAAI,EAAQ,GAAG,OAAO,SAAC,GAAO,OAAA,IAAO,EAAM,IAAb,IAEhC,EAAK,OAGX,EAGH,CAGD,IAAM,EAAc,EAAK,eAAe,IAAI,EAAQ,MAO9C,EAAsB,EAAQ,MAAO,EAAK,EAAQ,OAAS,GAEjE,GAAI,EAAK,OAAQ,CACf,IAAM,EAAiB,EAAM,OAEzB,GAA2B,IAAjB,EAAM,QAElB,EAAM,KAAK,CACT,aAAc,EAAgB,IAAW,EAAM,SAKnD,EAAM,KAAK,CACT,SAAU,EAAK,cAAW,EAC1B,aAAc,EAAgB,SAEjC,CAED,EAAK,SAAS,WACZ,WACA,EAAQ,KACR,EAAQ,MACR,CAAE,KAAM,EAAQ,KAAM,MAAK,KACzB,GAGJ,IAAI,EAAU,KAYd,GAVG,EAAK,QACN,EAAQ,OAAS,EAAa,SAAS,kBAEvC,EAC2B,iBAAlB,EAAQ,MACX,KAAK,MAAM,EAAQ,OACnB,EAAQ,MACd,EAAK,gBAAkB,EAAQ,oBAG3B,EACJ,IAAyB,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAa,EAA3B,EAAU,EAAA,IAEjB,EAAQ,MACR,EAAM,OACN,EAAQ,OAAS,EAAa,SAAS,eACnC,KACA,EAAQ,KACZ,EACA,EAEH,CAKH,IACG,EAAK,QACN,EAAQ,OAAS,EAAa,SAAS,gBACvC,CACA,IAAM,EAAY,EAAQ,UAC1B,GAAI,EACF,IAAkB,IAAA,EAAA,EAAA,EAAA,OAAO,KAAK,GAAZ,EAAA,EAAA,OAAA,IAAwB,CAArC,IAAM,EAAG,EAAA,GAEZ,GADM,EAAkB,EAAK,wBAAwB,IAAI,GAAG,GAE1D,IAAyB,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAiB,EAA/B,EAAU,EAAA,IACR,EAAU,GACtB,CAEJ,CAEH,EAAK,OAAO,YACV,CAAE,KAAM,EAAa,SAAS,OAAO,iBACrC,EAAK,OAER,CAjUA,CAbA,CA+UH,EA/oBE,KAAK,eAAiB,IAAI,IAC1B,KAAK,wBAA0B,IAAI,IACnC,KAAK,WAAa,IAAI,IACtB,KAAK,iBACL,KAAK,SAAW,IAAI,EAAS,EAAQ,GACrC,KAAK,OAAmB,MAAV,EACd,KAAK,+BEzB6B,EAAA,IACjC,EAAa,SAAS,wBAAyB,CAC9C,QAAS,CACP,OAAQ,EACR,mBAAoB,MAEtB,SAAU,CACR,OAAQ,EACR,mBAAoB,OAIxB,EAAC,EAAa,SAAS,iBAAkB,CACvC,QAAS,CACP,OAAQ,EACR,mBAAoB,OAIxB,EAAC,EAAa,SAAS,kBAAmB,CACxC,QAAS,CACP,OAAQ,EACR,mBAAoB,MAEtB,SAAU,CACR,OAAQ,EACR,mBAAoB,OAIxB,EAAC,EAAa,SAAS,kBAAmB,CACxC,QAAS,CACP,OAAQ,EACR,mBAAoB,MAEtB,SAAU,CACR,OAAQ,EACR,mBAAoB,OAIxB,EAAC,EAAa,SAAS,kBAAmB,CACxC,QAAS,CACP,OAAQ,EACR,mBAAoB,OAIxB,EAAC,EAAa,SAAS,kBAAmB,CACxC,QAAS,CACP,OAAQ,EACR,mBAAoB,MAEtB,SAAU,CACR,OAAQ,EACR,mBAAoB,OAIxB,EAAC,EAAa,SAAS,WAAY,CACjC,QAAS,CACP,OAAQ,EACR,mBAAoB,OAIxB,EAAC,EAAa,SAAS,MAAM,MAAO,CAClC,QAAS,CACP,OAAQ,EACR,mBAAoB,OAIxB,EAAC,EAAa,SAAS,MAAM,MAAO,CAClC,QAAS,CACP,OAAQ,EACR,mBAAoB,OAIxB,EAAC,EAAa,SAAS,MAAM,OAAQ,CACnC,QAAS,CACP,OAAQ,EACR,mBAAoB,OAIxB,EAAC,EAAa,SAAS,iBAAkB,CACvC,QAAS,CACP,OAAQ,EACR,mBAAoB,MAEtB,SAAU,CACR,OAAQ,EACR,mBAAoB,OAIxB,EAAC,EAAa,SAAS,iBAAkB,CACvC,QAAS,CACP,OAAQ,EACR,mBAAoB,MAEtB,SAAU,CACR,OAAQ,EACR,mBAAoB,OAIxB,EAAC,EAAa,SAAS,iBAAkB,CACvC,QAAS,CACP,OAAQ,EACR,mBAAoB,MAEtB,SAAU,CACR,OAAQ,EACR,mBAAoB,OAIxB,EAAC,EAAa,SAAS,cAAe,CACpC,QAAS,CACP,OAAQ,EACR,mBAAoB,MAEtB,SAAU,CACR,OAAQ,EACR,mBAAoB,OAIxB,EAAC,EAAa,SAAS,gBAAiB,CACtC,QAAS,CACP,OAAQ,EACR,mBAAoB,MAEtB,SAAU,CACR,OAAQ,EACR,mBAAoB,OAIxB,EAAC,EAAa,SAAS,OAAO,iBAAkB,CAC9C,QAAS,CACP,OAAQ,EACR,mBAAoB,MAEtB,SAAU,CACR,OAAQ,EACR,mBAAoB,OAIxB,EAAC,EAAa,SAAS,OAAO,yBAA0B,CACtD,QAAS,CACP,OAAQ,EACR,mBAAoB,MAEtB,SAAU,CACR,OAAQ,EACR,mBAAoB,OAIxB,EAAC,EAAa,SAAS,OAAO,YAAa,CACzC,QAAS,CACP,OAAQ,EACR,mBAAoB,OAIxB,EAAC,EAAa,SAAS,OAAO,eAAgB,CAC5C,QAAS,CACP,OAAQ,EACR,mBAAoB,OAGxB,GFrJA,IACE,KAAK,QAAU,OAAO,SAAS,IAChC,CAAC,MAAA,GAED,CACH,CAkoBF,OAhoBgB,EAAA,KAAd,SACE,EACA,EACA,EACA,EACA,GASA,YAXA,IAAA,MAAA,aACA,IAAA,MAAA,SACA,IAAA,MAxE0B,GA0E1B,EAAS,UAAY,IAAI,EACvB,EACA,EACA,EACA,EACA,GAEK,EAAS,SAClB,EAEA,OAAA,eAAkB,EAAA,WAAQ,CAA1B,IAAA,WACE,IAAK,EAAS,UACZ,MAAM,IAAI,MAAM,gCAElB,OAAO,EAAS,SAClB,E,gCAEc,EAAA,cAAd,WAME,IAAM,EAAS,OACf,OAAO,EAAO,OAAS,EAAO,GAChC,EAEO,EAAA,UAAA,mBAAP,WACE,QAAS,KAAK,aAChB,EAEO,EAAA,UAAA,kBAAP,SAAyB,QAAA,IAAA,MAAA,IACvB,KAAK,eAAoC,MAAnB,EAAyB,GAAK,CACtD,EAEO,EAAA,UAAA,iBAAP,SAAwB,GACtB,IAAI,EACJ,IACE,EAAS,IAAI,IAAI,EAClB,CAAC,MAAA,GACA,MACD,CACD,KAAK,eAAe,KAAK,EAAO,OAClC,EAEO,EAAA,UAAA,oBAAP,SAA2B,GACzB,IAAI,EACJ,IACE,EAAS,IAAI,IAAI,EAClB,CAAC,MAAA,GACA,MACD,CACD,IAAM,EAAc,KAAK,eAAe,UACtC,SAAC,GAAkB,OAAA,IAAkB,EAAO,MAAzB,GAErB,KAAK,eAAiB,KAAK,eAAe,OACxC,SAAC,EAAgB,GAAc,OAAA,IAAc,CAAd,EAEnC,EAEO,EAAA,UAAA,gBAAP,SAAuB,GACrB,IAAI,EACJ,IACE,EAAS,IAAI,IAAI,EAClB,CAAC,MAAA,GACA,OAAO,CACR,CACD,OAAO,KAAK,eAAe,KACzB,SAAC,GAAkB,OAAA,IAAkB,EAAO,MAAzB,EAEvB,EAEO,EAAA,UAAA,kBAAP,SAAyB,QAAA,IAAA,MAAA,IACvB,KAAK,eAAiB,CACxB,EAEO,EAAA,UAAA,iBAAP,SAAwB,GACtB,IAAI,EACJ,IACE,EAAS,IAAI,IAAI,EAClB,CAAC,MAAA,GACA,MACD,CACD,KAAK,eAAe,KAAK,EAAO,OAClC,EAEO,EAAA,UAAA,oBAAP,SAA2B,GACzB,IAAI,EACJ,IACE,EAAS,IAAI,IAAI,EAClB,CAAC,MAAA,GACA,MACD,CACD,IAAM,EAAc,KAAK,eAAe,UACtC,SAAC,GAAmB,OAAA,IAAmB,EAAO,MAA1B,GAEtB,KAAK,eAAiB,KAAK,eAAe,OACxC,SAAC,EAAiB,GAAc,OAAA,IAAc,CAAd,EAEpC,EAEO,EAAA,UAAA,aAAP,SACE,EACA,QAAA,IAAA,MAAA,UAEA,KAAK,UAAY,EACjB,KAAK,eAAiB,CACxB,EAIO,EAAA,UAAA,eAAP,SAAsB,EAA0B,GAC9C,KAAK,WAAW,IAAI,EAAO,CACzB,KAnMG,uCAAuC,QAAQ,QAAS,SAAC,GAC9D,IAAM,EAAqB,GAAhB,KAAK,SAAiB,EAEjC,OADe,KAAL,EAAW,EAAS,EAAJ,EAAW,GAC5B,SAAS,GACpB,GAgMI,KAAM,GAEV,EAEO,EAAA,UAAA,iBAAP,SAAwB,GACtB,KAAK,WAAW,OAAO,EACzB,EAEO,EAAA,UAAA,UAAP,WACE,OAAO,KAAK,MACd,EAEO,EAAA,UAAA,UAAP,SAAiB,EAAgB,IACT,KAAK,SAAW,GAAU,KAAK,SAAW,KAE9D,KAAK,OAAS,EACd,KAAK,OAAS,EAElB,EAsCO,EAAA,UAAA,KAAP,SAAe,EAAiB,EAAU,GACxC,IAAK,KAAK,mBACR,MAAM,IAAI,MAAM,yDAGlB,GAAM,KAAK,WAAe,KAAK,6BAA6B,GAAO,CACjE,IAAM,EACoB,WAAxB,KAAK,eACD,KAAK,6BAA6B,GAAM,QACxC,KAAK,6BAA6B,GAAM,SAE9C,GAAM,EAAkB,CACjB,EAAiB,qBACpB,EAAiB,mBACf,KAAK,UAAU,sBAAsB,EAAiB,SAE1D,IAAM,EAAmB,EAAiB,mBAAmB,GAC7D,IAAK,EAAiB,QACpB,MAAM,IAAI,EACR,4BACA,EAAiB,MAGtB,CACF,CAGD,KAAK,mBAAmB,EAAM,EAAO,KAAK,OAAS,OAAK,EAC1D,EAEO,EAAA,UAAA,aAAP,SAAoB,EAAa,GAC/B,IAAK,KAAK,mBACR,MAAM,IAAI,MAAM,yDAElB,KAAK,mBAAmB,EAAa,SAAS,eAAgB,CAC5D,IAAG,EACH,MAAK,GAET,EAGQ,EAAA,UAAA,iBAAR,SAAyB,EAAiB,GACxC,IAAM,EAAc,KAAK,eAAe,IAAI,GACtC,GACJ,KAAK,eAAe,IAClB,EACA,EAAY,OAAO,SAAC,GAAO,OAAA,IAAO,CAAP,GAGjC,EAGQ,EAAA,UAAA,0BAAR,SAAkC,EAAc,GAC9C,IAAM,EAAc,KAAK,wBAAwB,IAAI,GAC/C,GACJ,KAAK,wBAAwB,IAC3B,EACA,EAAY,OAAO,SAAC,GAAO,OAAA,IAAO,CAAP,GAGjC,EAEQ,EAAA,UAAA,eAAR,eAAA,EAAA,KACE,KAAK,mBAAqB,SAAI,EAAiB,EAAU,GACvD,IAAK,EAAK,OACR,MAAM,IAAI,MAAM,mDAElB,IAAK,EAAK,OACR,MAAM,IAAI,MAAM,mDAIlB,IAAM,EAAkC,EAAK,YACzC,EACA,CACE,CACE,SAAU,EAAK,QACf,aAAc,EAAgB,QAC9B,QAAS,EAAK,gBAItB,EAAK,SAAS,WAAW,WAAY,EAAM,EAAO,CAAE,GAAE,EAAE,MAAK,IAAI,GACjE,EAAK,OAAO,YAAY,CAAE,KAAI,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,GAAI,EAAK,OAC3D,EACA,KAAK,OAAO,iBAAiB,UAAW,KAAK,UAC/C,EAxTc,EAAA,QAAU,EACV,EAAA,SAAW,EAgrB3B,CAAC,CAlrBD,GCzCY,qEAAgB,KAC1B,4BACA,EAAA,U","file":"/npm/fsm-shell@1.27.2/release/fsm-shell-client.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.48.0.\n * Original file: /npm/fsm-shell@1.27.2/release/fsm-shell-client.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","export type EventType =\n  | 'V1.REQUIRE_CONTEXT'\n  | 'V1.REQUIRE_AUTHENTICATION'\n  | 'V1.CLOSE'\n  | 'V1.REQUIRE_PERMISSIONS'\n  | 'V2.REQUIRE_PERMISSIONS'\n  | 'V1.GET_PERMISSIONS'\n  | 'V2.GET_PERMISSIONS'\n  | 'V3.GET_PERMISSIONS'\n  | 'V1.GET_SETTINGS'\n  | 'V1.GET_STORAGE_ITEM'\n  | 'V2.GET_STORAGE_ITEM'\n  | 'V1.SET_STORAGE_ITEM'\n  | 'V1.SET_VIEW_STATE'\n  | 'V1.SET_TITLE'\n  | 'V1.RESTORE_TITLE'\n  | 'V1.TO_APP'\n  | 'V1.LOADING_SUCCESS'\n  | 'V1.GET_FEATURE_FLAG'\n  | 'V1.GET_ORG_DATA'\n  | 'V1.PRIVATE.GET_ACCOUNT_SETTINGS'\n  | 'V1.OUTLET.ADD_PLUGIN'\n  | 'V1.OUTLET.REMOVE_PLUGIN'\n  | 'V1.OUTLET.REQUEST_CONTEXT'\n  | 'V1.OUTLET.REQUEST_DYNAMIC_CONTEXT'\n  | 'V1.OUTLET.LOADING_SUCCESS'\n  | 'V1.OUTLET.LOADING_FAIL'\n  | 'V1.MODAL.OPEN'\n  | 'V1.MODAL.CLOSE'\n  | 'V2.MODAL.OPEN'\n  | string;\n\nexport const SHELL_EVENTS = {\n  Version1: {\n    REQUIRE_CONTEXT: 'V1.REQUIRE_CONTEXT',\n    REQUIRE_AUTHENTICATION: 'V1.REQUIRE_AUTHENTICATION',\n    CLOSE: 'V1.CLOSE',\n    REQUIRE_PERMISSIONS: 'V1.REQUIRE_PERMISSIONS',\n    GET_PERMISSIONS: 'V1.GET_PERMISSIONS',\n    GET_SETTINGS: 'V1.GET_SETTINGS',\n    GET_STORAGE_ITEM: 'V1.GET_STORAGE_ITEM',\n    SET_STORAGE_ITEM: 'V1.SET_STORAGE_ITEM',\n    SET_VIEW_STATE: 'V1.SET_VIEW_STATE',\n    SET_TITLE: 'V1.SET_TITLE',\n    RESTORE_TITLE: 'V1.RESTORE_TITLE',\n    TO_APP: 'V1.TO_APP',\n    GET_FEATURE_FLAG: 'V1.GET_FEATURE_FLAG',\n    GET_ORG_DATA: 'V1.GET_ORG_DATA',\n    PRIVATE: {\n      GET_ACCOUNT_SETTINGS: 'V1.PRIVATE.GET_ACCOUNT_SETTINGS',\n    },\n    OUTLET: {\n      ADD_PLUGIN: 'V1.OUTLET.ADD_PLUGIN',\n      REMOVE_PLUGIN: 'V1.OUTLET.REMOVE_PLUGIN',\n      REQUEST_CONTEXT: 'V1.OUTLET.REQUEST_CONTEXT',\n      REQUEST_DYNAMIC_CONTEXT: 'V1.OUTLET.REQUEST_DYNAMIC_CONTEXT',\n      LOADING_SUCCESS: 'V1.OUTLET.LOADING_SUCCESS',\n      LOADING_FAIL: 'V1.OUTLET.LOADING_FAIL',\n    },\n    MODAL: {\n      OPEN: 'V1.MODAL.OPEN',\n      CLOSE: 'V1.MODAL.CLOSE',\n    },\n  },\n  Version2: {\n    GET_STORAGE_ITEM: 'V2.GET_STORAGE_ITEM',\n    GET_PERMISSIONS: 'V2.GET_PERMISSIONS',\n    MODAL: {\n      OPEN: 'V2.MODAL.OPEN',\n    },\n    REQUIRE_PERMISSIONS: 'V2.REQUIRE_PERMISSIONS',\n  },\n  Version3: {\n    GET_PERMISSIONS: 'V3.GET_PERMISSIONS',\n  },\n  ERROR: 'ERROR',\n};\n\nexport enum ErrorType {\n  OUTLET_TIMEOUT = 'OUTLET_TIMEOUT',\n  OUTLET_MAXIMUM_DEPTH = 'OUTLET_MAXIMUM_DEPTH',\n  OUTLET_HTTPS_ERROR = 'OUTLET_HTTPS_ERROR',\n  INVALID_EXTENSION = 'INVALID_EXTENSION',\n}\n\nconst getKeyValues = (source: any, initial: string[] = []): string[] => {\n  let result = [...initial];\n  for (const key in source) {\n    if (typeof source[key] === 'string') {\n      result.push(source[key]);\n    } else if (typeof source[key] === 'object') {\n      result = getKeyValues(source[key], result);\n    }\n  }\n  return result;\n};\n\nexport const ALL_SHELL_EVENTS_ARRAY: string[] = getKeyValues(SHELL_EVENTS);\n","// THE FILE SHELLVERSIONINFO.TS IS AUTOMATICALLY GENERATED DURING BUILD PROCESS\r\n// MANUAL CHANGES TO THIS FILE WILL BE OVERWRITTEN !!!\r\n\r\nexport const SHELL_VERSION_INFO = {\r\nVERSION : '1.27.2',\r\nBUILD_TS: '2026-08-07T07:11:59.214Z'\r\n};\r\n\r\n","\nimport { DebugEvent, EventDirection } from './models/debug/debug-event';\nimport { EventType } from './ShellEvents';\n\ninterface FilterOptions {\n  type?: EventType[] | EventType,\n  direction?: EventDirection,\n  component: string | string[],\n  handled: boolean,\n  from: Date,\n  to: Date\n}\n\nexport class MessageLogger {\n\n  public messages: DebugEvent<any>[] = [];\n\n  public push(event: DebugEvent<any>, debugId: string) {\n    let action: string;\n    if (event.direction === 'incoming') {\n      if (event.handled === 'yes') {\n        action = 'received and handled';\n      } else {\n        action = 'received and skipped';\n      }\n    } else {\n      action = 'sending';\n    }\n    console.log(`${debugId} ${action} message: `, event);\n    this.messages.push(event);\n  }\n\n  public all() {\n    return this.messages;\n  }\n\n  public allTable() {\n    console.table(this.all());\n  }\n\n  public filter(options: FilterOptions) {\n    return this.messages.filter(message => {\n\n      if (options.type) {\n        if (Array.isArray(options.type) && !options.type.some(type => new RegExp(type).test(message.type))) {\n          return false;\n        } else if (typeof options.type === 'string' && !RegExp(options.type as string).test(message.type)) {\n          return false;\n        }\n      }\n\n      if (options.component) {\n        if (Array.isArray(options.component) && !options.component.some(it => it === message.component)) {\n          return false;\n        } else if (options.component !== message.component) {\n          return false;\n        }\n      }\n\n      if (options.direction && options.direction !== message.direction) {\n        return false;\n      }\n\n      if (\n        options.direction &&\n        options.direction === 'incoming' &&\n        typeof options.handled !== 'undefined' &&\n        options.handled !== (message.handled === 'yes')\n      ) {\n        return false;\n      }\n\n      if (options.from && options.from > message.timestamp) {\n        return false;\n      }\n\n      if (options.to && options.to < message.timestamp) {\n        return false;\n      }\n\n      return true;\n    });\n  }\n\n  public filterTable(options: FilterOptions) {\n    console.table(this.filter(options));\n  }\n\n}\n","import { EventType, ALL_SHELL_EVENTS_ARRAY } from './ShellEvents';\nimport { EventDirection, DebugEvent } from './models/debug/debug-event';\nimport { MessageLogger } from './MessageLogger';\nimport { TraceEntry } from './models/trace/trace-entry.model';\n\ninterface DebuggableWindow extends Window {\n  fsmShellMessageLogger: MessageLogger | undefined;\n}\n\ninterface Routing {\n  to?: string[];\n  from?: string[];\n  trace?: TraceEntry[];\n}\n\nconst FSM_SHELL_DEBUG_KEY = 'cs.fsm-shell.debug';\n\nexport class Debugger {\n  private debugMode: boolean = false;\n\n  constructor(private winRef: Window, private debugId: string) {\n    if (this.debugId) {\n      const win = this.winRef as DebuggableWindow;\n      const localStorageValue = win.localStorage.getItem(FSM_SHELL_DEBUG_KEY);\n      if (\n        !!localStorageValue &&\n        localStorageValue.split(',').some((it) => it === debugId)\n      ) {\n        this.debugMode = true;\n      }\n    }\n  }\n\n  public traceEvent(\n    direction: EventDirection,\n    type: EventType,\n    payload: any,\n    routing: Routing,\n    hasHandler: boolean\n  ) {\n    if (this.debugMode && ALL_SHELL_EVENTS_ARRAY.some((it) => it === type)) {\n      const debugEvent: DebugEvent<any> = {\n        timestamp: new Date(),\n        component: this.debugId,\n        direction,\n        type,\n        handled: direction === 'incoming' ? (hasHandler ? 'yes' : 'no') : 'n/a',\n        to: routing.to,\n        from: routing.from,\n        trace: routing.trace,\n        payload,\n      };\n      this.logEvent(debugEvent);\n    }\n  }\n\n  private logEvent(debugEvent: DebugEvent<any>) {\n    const win = this.winRef as DebuggableWindow;\n    if (!win.fsmShellMessageLogger) {\n      win.fsmShellMessageLogger = new MessageLogger();\n    }\n    win.fsmShellMessageLogger.push(debugEvent, this.debugId);\n  }\n}\n","export const authRequest_v1_schema = {\n  type: 'object',\n  properties: {\n    response_type: {\n      type: 'string',\n      enum: ['token', 'code'],\n    },\n  },\n  required: ['response_type'],\n};\n","export const authResponse_v1_schema = {\n  type: 'object',\n  properties: {\n    access_token: {\n      type: 'string',\n    },\n    expires_in: {\n      type: 'number',\n    },\n    token_type: {\n      type: 'string',\n    },\n  },\n  required: ['access_token', 'expires_in', 'token_type'],\n};\n","import { authRequest_v1_schema } from '../authentication/auth-request.v1.schema';\n\nexport const requireContextRequest_v1_schema = {\n  type: 'object',\n  properties: {\n    clientIdentifier: {\n      type: 'string',\n    },\n    clientSecret: {\n      type: 'string',\n    },\n    cloudStorageKeys: {\n      type: 'array',\n      items: {\n        type: 'object',\n        properties: {\n          name: {\n            type: 'string'\n          },\n          dataVersion: {\n            type: 'number'\n          },\n          companyDependent: {\n            type: 'boolean'\n          },\n        },\n        required: ['name', 'dataVersion', 'companyDependent'],\n      },\n    },\n    auth: authRequest_v1_schema,\n    targetOutletName: {\n      type: 'string',\n    },\n    targetExtensionAssignmentId: {\n      type: 'string',\n    },\n  },\n  required: ['clientIdentifier', 'clientSecret'],\n};\n","export const getItemRequest_v1_schema = {\n  type: 'string',\n};\n","export const getItemRequest_v2_schema = {\n  oneOf: [\n    {\n      type: 'string',\n    },\n    {\n      type: 'array',\n      items: {\n        type: 'string',\n      },\n    },\n  ],\n};\n","export const getItemResponse_v1_schema = {};\n","export const getItemResponse_v2_schema = {\n  type: 'object',\n  properties: {\n    key: {\n      type: 'string',\n    },\n    value: {},\n  },\n  required: ['key', 'value'],\n};\n","export const setItemRequest_v1_schema = {\n  type: 'object',\n  properties: {\n    key: {\n      type: 'string',\n    },\n    value: {},\n  },\n  required: ['key', 'value'],\n};\n","export const getFeatureFlagRequest_v1_schema = {\n  $defs: {\n    payload: {\n      type: 'object',\n      properties: {\n        key: {\n          type: 'string'\n        },\n        defaultValue: {\n          type: 'boolean'\n        }\n      },\n      required: ['key', 'defaultValue']\n    }\n  },\n  oneOf: [\n    {\n      $ref: '#/$defs/payload'\n    },\n    {\n      type: 'array',\n      items: {\n        $ref: '#/$defs/payload'\n      }\n    }\n  ]\n};\n","export const getFeatureFlagResponse_v1_schema = {\n  type: 'object',\n  properties: {\n    key: {\n      type: 'string',\n    },\n    value: {\n      type: 'boolean',\n    },\n  },\n  required: ['key', 'value'],\n};\n","export const setTitleRequest_v1_schema = {\n  type: 'object',\n  properties: {\n    title: {\n      type: 'string',\n    },\n  },\n  required: ['title'],\n};\n","export const modalOpenRequest_v1_schema = {\n  type: 'object',\n  properties: {\n    url: {\n      type: 'string',\n    },\n    modalSettings: {\n      type: 'object',\n      properties: {\n        title: {\n          type: 'string',\n        },\n        size: {\n          type: 'string',\n          enum: ['l', 'm', 's'],\n        },\n        backdropClickCloseable: {\n          type: 'boolean',\n        },\n        isScrollbarHidden: {\n          type: 'boolean',\n        },\n      },\n    },\n    data: {\n      type: 'object',\n    },\n  },\n  required: ['url'],\n};\n","export const modalOpenRequest_v2_schema = {\n  type: 'object',\n  properties: {\n    url: {\n      type: 'string',\n    },\n    modalSettings: {\n      type: 'object',\n      properties: {\n        title: {\n          type: 'string',\n        },\n        showTitleHeader: {\n          type: 'boolean',\n        },\n\n        hasBackdrop: {\n          type: 'boolean',\n        },\n        backdropClickCloseable: {\n          type: 'boolean',\n        },\n        escKeyCloseable: {\n          type: 'boolean',\n        },\n        focusTrapped: {\n          type: 'boolean',\n        },\n        fullScreen: {\n          type: 'boolean',\n        },\n        mobile: {\n          type: 'boolean',\n        },\n        mobileOuterSpacing: {\n          type: 'boolean',\n        },\n        draggable: {\n          type: 'boolean',\n        },\n        resizable: {\n          type: 'boolean',\n        },\n\n        width: {\n          type: 'string',\n        },\n        height: {\n          type: 'string',\n        },\n        minHeight: {\n          type: 'string',\n        },\n        maxHeight: {\n          type: 'string',\n        },\n        minWidth: {\n          type: 'string',\n        },\n        maxWidth: {\n          type: 'string',\n        },\n\n        isScrollbarHidden: {\n          type: 'boolean',\n        },\n      },\n    },\n    data: {\n      type: 'object',\n    },\n    sandboxPolicies: {\n      type: 'array',\n      items: {\n        type: 'string',\n      },\n    },\n  },\n  required: ['url'],\n};\n","export const modalCloseRequest_v1_schema = {\n  type: 'object',\n};\n","export const getPermissionsRequest_v1_schema = {\n  type: 'object',\n  properties: {\n    objectName: {\n      type: 'string',\n    },\n    owners: {\n      type: 'array',\n      items: {\n        type: 'string',\n      },\n    },\n  },\n  required: ['objectName'],\n};\n","export const getPermissionsRequest_v2_schema = {\n  $defs: {\n    payload: {\n      type: 'object',\n      properties: {\n        objectName: {\n          type: 'string',\n        },\n        owners: {\n          type: 'array',\n          items: {\n            type: 'string',\n          },\n        },\n      },\n      required: ['objectName'],\n    }\n  },\n  oneOf: [\n    {\n      $ref: '#/$defs/payload',\n    },\n    {\n      type: 'array',\n      items: {\n        $ref: '#/$defs/payload',\n      }\n    }\n  ],\n};\n","export const getPermissionsRequest_v3_schema = {\n  $defs: {\n    payload: {\n      type: 'object',\n      properties: {\n        objectName: {\n          type: 'string',\n        },\n      },\n      required: ['objectName'],\n    }\n  },\n  oneOf: [\n    {\n      $ref: '#/$defs/payload',\n    },\n    {\n      type: 'array',\n      items: {\n        $ref: '#/$defs/payload',\n      }\n    }\n  ],\n};\n","export const getPermissionsResponse_v1_schema = {\n  type: 'object',\n  properties: {\n    CREATE: {\n      type: 'boolean',\n    },\n    READ: {\n      type: 'boolean',\n    },\n    UPDATE: {\n      type: 'boolean',\n    },\n    DELETE: {\n      type: 'boolean',\n    },\n    UI_PERMISSIONS: {\n      type: 'array',\n      items: {\n        type: 'number',\n      },\n    },\n  },\n  required: ['CREATE', 'READ', 'UPDATE', 'DELETE', 'UI_PERMISSIONS'],\n};\n","import { getPermissionsResponse_v1_schema } from './get-permissions-response.v1.schema';\n\nexport const getPermissionsResponse_v2_schema = {\n  type: 'object',\n  properties: {\n    objectName: {\n      type: 'string',\n    },\n    owners: {\n      type: 'array',\n      items: {\n        type: 'string',\n      },\n    },\n    permission: getPermissionsResponse_v1_schema,\n  },\n  required: ['objectName', 'permission'],\n};\n","import { getPermissionsResponse_v1_schema } from './get-permissions-response.v1.schema';\n\nexport const getPermissionsResponse_v3_schema = {\n  type: 'object',\n  properties: {\n    objectName: {\n      type: 'string',\n    },\n    permission: getPermissionsResponse_v1_schema,\n  },\n  required: ['objectName', 'permission'],\n};\n","export const getSettingsRequest_v1_schema = {\n  oneOf: [\n    {\n       type: 'string'\n    },\n    {\n      type: 'array',\n      items: {\n        type: ['string', 'array'],\n        oneOf: [\n          {\n            type: 'string'\n          },\n          {\n            type: 'array',\n            items: {\n              type: 'string'\n            }\n          }\n        ]\n      }\n    }\n  ]\n};\n","export const getSettingsResponse_v1_schema = {\n  type: 'object',\n  properties: {\n    key: {\n      type: 'string',\n    },\n    value: {},\n  },\n  required: ['key', 'value'],\n};\n","export const setViewStateRequest_v1_schema = {\n  type: 'object',\n  properties: {\n    key: {\n      type: 'string',\n    },\n    value: {},\n  },\n  required: ['key', 'value'],\n};\n","export const setViewStateResponse_v1_schema = {\n  type: 'object',\n  properties: {\n    key: {\n      type: 'string',\n    },\n    value: {},\n  },\n  required: ['key', 'value'],\n};\n","export const outletsRequestContextRequest_v1_schema = {\n  type: 'object',\n  properties: {\n    target: {\n      type: 'string',\n    },\n    assignmentId: {\n      type: 'string',\n    },\n    showMocks: {\n      type: 'boolean',\n    },\n    outletSettings: {},\n  },\n  required: ['target'],\n};\n","export const outletsRequestContextResponse_v1_schema = {\n  type: 'object',\n  properties: {\n    target: {\n      type: 'string',\n    },\n    isRootNodeHttps: {\n      type: 'boolean',\n    },\n    isConfigurationMode: {\n      type: 'boolean',\n    },\n    isPreviewActive: {\n      type: 'boolean',\n    },\n    plugin: {\n      type: 'object',\n      properties: {\n        name: {\n          type: 'string'\n        },\n        url: {\n          type: 'string'\n        },\n        optimalHeight: {\n          type: 'string'\n        },\n        useShellSDK: {\n          type: 'boolean'\n        },\n        isActive: {\n          type: 'boolean'\n        },\n        sandboxPolicies: {\n          type: 'array',\n          items: {\n            type: 'string'\n          }\n        },\n        assignmentId: {\n          type: 'string'\n        }\n      },\n      required: ['name', 'url', 'isActive']\n    },\n  },\n  required: ['isConfigurationMode'],\n};\n","export const outletsAddPluginRequest_v1_schema = {\n  type: 'object',\n  properties: {\n    target: {\n      type: 'string',\n    },\n  },\n  required: ['target'],\n};\n","export const outletsRemovePluginRequest_v1_schema = {\n  type: 'object',\n  properties: {\n    target: {\n      type: 'string',\n    },\n  },\n  required: ['target'],\n};\n","export const outletsRequestDynamicContextRequest_v1_schema = {\n  type: 'object',\n  properties: {\n    target: {\n      type: 'string',\n    },\n    outletSettings: {},\n  },\n  required: ['target'],\n};\n","export const outletsRequestDynamicContextResponse_v1_schema = {\n  $defs: {\n    plugin: {\n      type: 'object',\n      properties: {\n        name: {\n          type: 'string'\n        },\n        url: {\n          type: 'string'\n        },\n        optimalHeight: {\n          type: 'string'\n        },\n        useShellSDK: {\n          type: 'boolean'\n        },\n        isActive: {\n          type: 'boolean'\n        },\n        sandboxPolicies: {\n          type: 'array',\n          items: {\n            type: 'string'\n          }\n        },\n        assignmentId: {\n          type: 'string'\n        }\n      },\n      required: ['name', 'url', 'isActive', 'assignmentId']\n    }\n  },\n  type: 'object',\n  properties: {\n    target: {\n      type: 'string'\n    },\n    isRootNodeHttps: {\n      type: 'boolean'\n    },\n    isConfigurationMode: {\n      type: 'boolean'\n    },\n    areDynamicOutletsEnabled: {\n      type: 'boolean'\n    },\n    isPreviewActive: {\n      type: 'boolean'\n    },\n    plugins: {\n      type: 'array',\n      items: {\n        $ref: '#/$defs/plugin'\n      }\n    }\n  },\n  required: []\n};\n","export class PayloadValidationError extends Error {\n  public detail: any;\n\n  constructor(message: string, detail: any) {\n    super(message);\n    this.name = 'PayloadValidationError';\n    this.detail = detail;\n  }\n}\n","import { EventType, ErrorType, SHELL_EVENTS } from './ShellEvents';\nimport { SHELL_VERSION_INFO } from './ShellVersionInfo';\nimport { Debugger } from './Debugger';\nimport { Outlet } from './models/outlets/outlet.model';\nimport { TraceEntry } from './models/trace/trace-entry.model';\nimport { PayloadValidator } from './validation/interfaces/payload-validator';\nimport {\n  getEventValidationConfiguration,\n  EventValidationConfiguration,\n} from './validation/schemas/validation-configuration';\nimport { PayloadValidationError } from './validation/payload-validation-error';\n\nexport type ValidationMode = 'host' | 'client';\n\n// tslint:disable\nfunction uuidv4() {\n  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n    const r = (Math.random() * 16) | 0;\n    const v = c == 'x' ? r : (r & 0x3) | 0x8;\n    return v.toString(16);\n  });\n}\n// tslint:enable\n\nconst DEFAULT_MAXIMUM_DEPTH = 1;\n\n/**\n * Safely get location.href from a window.\n * Returns undefined for cross-origin windows (security restriction).\n */\nfunction getLocationHref(win: Window | null | undefined): string | undefined {\n  if (!win) {\n    return undefined;\n  }\n  try {\n    return win.location.href;\n  } catch {\n    return undefined;\n  }\n}\n\nexport class ShellSdk {\n  public static VERSION = SHELL_VERSION_INFO.VERSION;\n  public static BUILD_TS = SHELL_VERSION_INFO.BUILD_TS;\n\n  private static _instance: ShellSdk;\n  private isRoot: boolean; // Is root if on `init`, target value is null.\n  private isInsideModal: boolean | undefined; // undefined until first REQUIRE_CONTEXT response, then true/false based on context\n  private validator: null | PayloadValidator = null;\n  private validationMode: ValidationMode = 'client';\n  private eventValidationConfiguration: EventValidationConfiguration;\n\n  private postMessageHandler:\n    | (<T>(type: EventType, value: T, to?: string[]) => void)\n    | undefined;\n\n  // tslint:disable-next-line\n  private subscribersMap: Map<EventType, Function[]>;\n  // tslint:disable-next-line\n  private subscribersViewStateMap: Map<string, Function[]>;\n\n  private debugger: Debugger;\n  private outletsMap: Map<HTMLIFrameElement, Outlet>;\n\n  private allowedOrigins: string[] = [];\n  private ignoredOrigins: string[] = [];\n  private selfUrl: string = ''; // Captured at init for trace\n\n  private constructor(\n    private target: Window,\n    private origin: string,\n    private winRef: Window,\n    debugId: string,\n    private outletMaximumDepth: number\n  ) {\n    this.subscribersMap = new Map();\n    this.subscribersViewStateMap = new Map();\n    this.outletsMap = new Map();\n    this.initMessageApi();\n    this.debugger = new Debugger(winRef, debugId);\n    this.isRoot = target == null;\n    this.eventValidationConfiguration = getEventValidationConfiguration();\n\n    // Capture self URL at init time for trace\n    try {\n      this.selfUrl = window.location.href;\n    } catch {\n      // May not be accessible in some environments\n    }\n  }\n\n  public static init(\n    target: Window,\n    origin: string,\n    winRef: Window = window,\n    debugId: string = '',\n    outletMaximumDepth: number = DEFAULT_MAXIMUM_DEPTH\n  ): ShellSdk {\n    ShellSdk._instance = new ShellSdk(\n      target,\n      origin,\n      winRef,\n      debugId,\n      outletMaximumDepth\n    );\n    return ShellSdk._instance;\n  }\n\n  public static get instance(): ShellSdk {\n    if (!ShellSdk._instance) {\n      throw new Error(\"ShellSdk wasn't initialized.\");\n    }\n    return ShellSdk._instance;\n  }\n\n  public static isInsideShell(): boolean {\n    // using local variable for window reference below needed to fix issue when running tests\n    // for applications which use fsm-shell in cypress\n    // cypress may replace `window.self !== window.top` with `window.self !== window.self`\n    // what makes isInsideShell method returning wrong value\n\n    const winRef = window;\n    return winRef.self !== winRef.top;\n  }\n\n  public isInsideShellModal(): boolean {\n    return !!this.isInsideModal;\n  }\n\n  public setAllowedOrigins(allowedOrigins: string[] | '*' = []) {\n    this.allowedOrigins = allowedOrigins === '*' ? [] : allowedOrigins;\n  }\n\n  public addAllowedOrigin(url: string) {\n    let urlObj: URL;\n    try {\n      urlObj = new URL(url);\n    } catch {\n      return;\n    }\n    this.allowedOrigins.push(urlObj.origin);\n  }\n\n  public removeAllowedOrigin(url: string) {\n    let urlObj: URL;\n    try {\n      urlObj = new URL(url);\n    } catch {\n      return;\n    }\n    const idxToRemove = this.allowedOrigins.findIndex(\n      (allowedOrigin) => allowedOrigin === urlObj.origin\n    );\n    this.allowedOrigins = this.allowedOrigins.filter(\n      (_allowedOrigin, originIdx) => originIdx !== idxToRemove\n    );\n  }\n\n  public isOriginAllowed(url: string): boolean {\n    let urlObj: URL;\n    try {\n      urlObj = new URL(url);\n    } catch {\n      return false;\n    }\n    return this.allowedOrigins.some(\n      (allowedOrigin) => allowedOrigin === urlObj.origin\n    );\n  }\n\n  public setIgnoredOrigins(ignoredOrigins: string[] = []) {\n    this.ignoredOrigins = ignoredOrigins;\n  }\n\n  public addIgnoredOrigin(url: string) {\n    let urlObj: URL;\n    try {\n      urlObj = new URL(url);\n    } catch {\n      return;\n    }\n    this.ignoredOrigins.push(urlObj.origin);\n  }\n\n  public removeIgnoredOrigin(url: string) {\n    let urlObj: URL;\n    try {\n      urlObj = new URL(url);\n    } catch {\n      return;\n    }\n    const idxToRemove = this.ignoredOrigins.findIndex(\n      (ignoredOrigins) => ignoredOrigins === urlObj.origin\n    );\n    this.ignoredOrigins = this.ignoredOrigins.filter(\n      (_ignoredOrigins, originIdx) => originIdx !== idxToRemove\n    );\n  }\n\n  public setValidator(\n    validator: PayloadValidator,\n    validationMode: ValidationMode = 'client'\n  ) {\n    this.validator = validator;\n    this.validationMode = validationMode;\n  }\n\n  // Called by outlet component to assign an generated uuid to an iframe. This is key\n  // to allow one to one communication between a pluging and shell-host\n  public registerOutlet(frame: HTMLIFrameElement, _name: string | undefined) {\n    this.outletsMap.set(frame, {\n      uuid: uuidv4(),\n      name: _name,\n    });\n  }\n\n  public unregisterOutlet(frame: HTMLIFrameElement) {\n    this.outletsMap.delete(frame);\n  }\n\n  public getTarget() {\n    return this.target;\n  }\n\n  public setTarget(target: Window, origin: string) {\n    const targetChanged = this.target !== target || this.origin !== origin;\n    if (targetChanged) {\n      this.target = target;\n      this.origin = origin;\n    }\n  }\n\n  // tslint:disable-next-line\n  public on = (type: EventType, subscriber: Function): Function => {\n    if (!this.subscribersMap.has(type)) {\n      this.subscribersMap.set(type, []);\n    }\n    // tslint:disable-next-line\n    const subscribers = this.subscribersMap.get(type) as Function[];\n    subscribers.push(subscriber);\n    return () => {\n      this.removeSubscriber(type, subscriber);\n    };\n  };\n\n  // tslint:disable-next-line\n  public onViewState = (key: string, subscriber: Function): Function => {\n    if (!this.subscribersViewStateMap.has(key)) {\n      this.subscribersViewStateMap.set(key, []);\n    }\n    // tslint:disable-next-line\n    const subscribers = this.subscribersViewStateMap.get(key) as Function[];\n    subscribers.push(subscriber);\n    return () => {\n      this.removeViewStateSubscriber(key, subscriber);\n    };\n  };\n\n  // tslint:disable-next-line\n  public off = (type: EventType, subscriber: Function): void => {\n    this.removeSubscriber(type, subscriber);\n  };\n\n  // tslint:disable-next-line\n  public offViewState = (key: string, subscriber: Function): void => {\n    this.removeViewStateSubscriber(key, subscriber);\n  };\n\n  public emit<T>(type: EventType, value: T, to?: string[]) {\n    if (!this.postMessageHandler) {\n      throw new Error(\"ShellSdk wasn't initialized, message handler not set.\");\n    }\n\n    if (!!this.validator && !!this.eventValidationConfiguration[type]) {\n      const validationConfig =\n        this.validationMode === 'client'\n          ? this.eventValidationConfiguration[type].request\n          : this.eventValidationConfiguration[type].response;\n\n      if (!!validationConfig) {\n        if (!validationConfig.validationFunction) {\n          validationConfig.validationFunction =\n            this.validator.getValidationFunction(validationConfig.schema);\n        }\n        const validationResult = validationConfig.validationFunction(value);\n        if (!validationResult.isValid) {\n          throw new PayloadValidationError(\n            'Payload validation failed',\n            validationResult.error\n          );\n        }\n      }\n    }\n\n    // Only root can send a message to a specific node\n    this.postMessageHandler(type, value, this.isRoot ? to : undefined);\n  }\n\n  public setViewState(key: string, value: any) {\n    if (!this.postMessageHandler) {\n      throw new Error(\"ShellSdk wasn't initialized, message handler not set.\");\n    }\n    this.postMessageHandler(SHELL_EVENTS.Version1.SET_VIEW_STATE, {\n      key,\n      value,\n    });\n  }\n\n  // tslint:disable-next-line\n  private removeSubscriber(type: EventType, subscriber: Function) {\n    const subscribers = this.subscribersMap.get(type);\n    if (!!subscribers) {\n      this.subscribersMap.set(\n        type,\n        subscribers.filter((it) => it !== subscriber)\n      );\n    }\n  }\n\n  // tslint:disable-next-line\n  private removeViewStateSubscriber(type: string, subscriber: Function) {\n    const subscribers = this.subscribersViewStateMap.get(type);\n    if (!!subscribers) {\n      this.subscribersViewStateMap.set(\n        type,\n        subscribers.filter((it) => it !== subscriber)\n      );\n    }\n  }\n\n  private initMessageApi() {\n    this.postMessageHandler = <T>(type: EventType, value: T, to?: string[]) => {\n      if (!this.target) {\n        throw new Error(\"ShellSdk wasn't initialized, target is missing.\");\n      }\n      if (!this.origin) {\n        throw new Error(\"ShellSdk wasn't initialized, origin is missing.\");\n      }\n\n      // Non-root: start trace chain with self-reported data\n      const trace: TraceEntry[] | undefined = this.isRoot\n        ? undefined\n        : [\n            {\n              initHref: this.selfUrl,\n              locationHref: getLocationHref(window),\n              isModal: this.isInsideModal,\n            },\n          ];\n\n      this.debugger.traceEvent('outgoing', type, value, { to, trace }, true);\n      this.target.postMessage({ type, value, to, trace }, this.origin);\n    };\n    this.winRef.addEventListener('message', this.onMessage);\n  }\n\n  /*\n    Message handler, generic for all ShellSDK instances but have different behaviours if root of not.\n\n    - If root, we handle all messages to subscribers\n    - If not root, and receive a message from an iframe registered as outlet, we send to parent node\n    and add node's id to allow return if needed.\n    - If not root and receive SET_VIEW_STATE, we set new value on local node and propagate to outlets\n    - If not root and receive TO_APP, we handle locally and do not propagate to outlets\n    - If not root and receive any message with `to` value, we remove our id and send to destination\n\n    Also define a new event for REQUIRE_CONTEXT which now contains ViewState. To use ViewState binding\n    and avoid duplicate key we first provide REQUIRE_CONTEXT to init currrent node, then propagate each\n    key of ViewState individualy to match potential subscriptions. To avoid UI glitch after this we\n    send an empty REQUIRE_CONTEXT_DONE to eventually adjust UI if needed.\n  */\n  private onMessage = (event: MessageEvent) => {\n    if (!event.data || typeof event.data.type !== 'string') {\n      return;\n    }\n\n    if (\n      event.source !== window.parent &&\n      this.ignoredOrigins &&\n      Array.isArray(this.ignoredOrigins) &&\n      this.ignoredOrigins.length !== 0 &&\n      this.ignoredOrigins.indexOf(event.origin) !== -1\n    ) {\n      return;\n    }\n\n    if (\n      event.source !== window.parent &&\n      this.allowedOrigins &&\n      Array.isArray(this.allowedOrigins) &&\n      this.allowedOrigins.length !== 0 &&\n      this.allowedOrigins.indexOf(event.origin) === -1\n    ) {\n      console.error(`${event.origin} is not in the list of known origins`);\n      return;\n    }\n\n    const payload = event.data as {\n      type: EventType;\n      value: any;\n      from?: string[];\n      to?: string[];\n      trace?: TraceEntry[];\n    };\n\n    // we ignore LOADING SUCCESS as it is handled by the outlet component itself\n    if (payload.type === SHELL_EVENTS.Version1.OUTLET.LOADING_SUCCESS) {\n      return;\n    }\n\n    // If current instance is not root, we act as middleman node to propagate\n    if (!this.isRoot) {\n      // Message come from a registered outlet, we send to parent (this.target) with a `from` value\n      const source: Window = event.source as Window;\n\n      if (source) {\n        // If has a source, we look if it come from one of our HTMLIFrameElement\n        const iFrameElement = Array.from(this.outletsMap.keys()).find(\n          (frame) => frame.contentWindow === source\n        );\n        if (iFrameElement && iFrameElement.src) {\n          const iFrameOrigin = new URL(iFrameElement.src).origin;\n          if (iFrameOrigin !== event.origin) {\n            // If it comes from unregistered iFrame we ignore it\n            // in order to prevent unauthorized access to the data\n            this.debugger.traceEvent(\n              'blocked',\n              payload.type,\n              payload.value,\n              { from: payload.from },\n              false\n            );\n            return;\n          }\n\n          let from = payload.from || [];\n\n          // If it come from an outlet\n          if (payload.type === SHELL_EVENTS.Version1.SET_VIEW_STATE) {\n            console.warn(\n              '[ShellSDk] A plugin tried to update viewState using SetViewState which is not allowed for security reason.'\n            );\n            return;\n          } else if (\n            (payload.type === SHELL_EVENTS.Version1.MODAL.OPEN ||\n              payload.type === SHELL_EVENTS.Version2.MODAL.OPEN) &&\n            from.length === 0 &&\n            !this.allowedOrigins.some((o) => payload.value.url.startsWith(o))\n          ) {\n            // If we are not root and first to receive OPEN, we block request opening a modal which has a different\n            // origin than the one allowed by the outlet\n            console.warn('[ShellSDk] MODAL OPEN url is not in allowedList.');\n            return;\n          }\n          // If ShellSdk receives from outlet REQUEST_CONTEXT or from dynamic outlet REQUEST_DYNAMIC_CONTEXT\n          // to fetch plugin(s) from target, return LOADING_FAIL if too many depth exchanges.\n          if (\n            (payload.type === SHELL_EVENTS.Version1.OUTLET.REQUEST_CONTEXT ||\n              payload.type ===\n                SHELL_EVENTS.Version1.OUTLET.REQUEST_DYNAMIC_CONTEXT) &&\n            from.length >= this.outletMaximumDepth\n          ) {\n            source.postMessage(\n              {\n                type: SHELL_EVENTS.Version1.OUTLET.LOADING_FAIL,\n                value: {\n                  target: payload.value.target,\n                  error: ErrorType.OUTLET_MAXIMUM_DEPTH,\n                },\n                to: from,\n              },\n              this.origin\n            );\n          } else {\n            const outlet = this.outletsMap.get(iFrameElement);\n            if (outlet && outlet.uuid) {\n              if (\n                payload.type === SHELL_EVENTS.Version1.REQUIRE_CONTEXT &&\n                from.length === 0 &&\n                outlet.name !== undefined\n              ) {\n                payload.value.targetOutletName = outlet.name;\n                const extensionAssignmentId = (iFrameElement as any)\n                  .extensionAssignmentId;\n                if (extensionAssignmentId) {\n                  payload.value.targetExtensionAssignmentId =\n                    extensionAssignmentId;\n                }\n              }\n              from = [...from, outlet.uuid];\n\n              /*\n               * trace accumulates at each hop (like `from` array).\n               * - Old SDK: create full entry with all data we can capture\n               * - New SDK: enrich child's last entry with parent-only data (iframeSrc, uuid, etc.)\n               * Then add this forwarder's own entry for the next parent to enrich.\n               */\n              const forwardingTrace: TraceEntry[] = payload.trace || [];\n\n              if (forwardingTrace.length === 0) {\n                // Old SDK: child didn't send trace, create entry with outlet data\n                forwardingTrace.push({\n                  uuid: outlet.uuid,\n                  outletName: outlet.name,\n                  extensionAssignmentId: (iFrameElement as any)\n                    .extensionAssignmentId,\n                  iframeSrc: iFrameElement.src,\n                  locationHref: getLocationHref(iFrameElement.contentWindow),\n                });\n              } else {\n                // New SDK: enrich child's entry with data only parent knows\n                const lastEntry = forwardingTrace[forwardingTrace.length - 1];\n                if (lastEntry) {\n                  if (!lastEntry.iframeSrc) {\n                    lastEntry.iframeSrc = iFrameElement.src;\n                  }\n                  if (!lastEntry.uuid) {\n                    lastEntry.uuid = outlet.uuid;\n                  }\n                  if (!lastEntry.outletName && outlet.name) {\n                    lastEntry.outletName = outlet.name;\n                  }\n                  if (!lastEntry.extensionAssignmentId) {\n                    lastEntry.extensionAssignmentId = (\n                      iFrameElement as any\n                    ).extensionAssignmentId;\n                  }\n                }\n              }\n\n              // Add this forwarder's entry (parent will enrich with iframeSrc, uuid, etc.)\n              forwardingTrace.push({\n                initHref: this.selfUrl,\n                locationHref: getLocationHref(window),\n                isModal: this.isInsideModal,\n              });\n\n              this.debugger.traceEvent(\n                'outgoing',\n                payload.type,\n                payload.value,\n                { from, trace: forwardingTrace },\n                true\n              );\n              this.target.postMessage(\n                {\n                  type: payload.type,\n                  value: payload.value,\n                  from,\n                  trace: forwardingTrace,\n                },\n                this.origin\n              );\n            }\n          }\n          return;\n        } else if (source !== this.target) {\n          // ShellSdk now ignore messages from outlets if it has no outlet registered\n          return;\n        }\n      }\n\n      // Propagate SET_VIEW_STATE to childrens's outlet andset value to current subscribers\n      if (payload.type === SHELL_EVENTS.Version1.SET_VIEW_STATE) {\n        this.outletsMap.forEach((value, key) => {\n          if (key.contentWindow) {\n            key.contentWindow.postMessage(\n              { type: payload.type, value: payload.value },\n              this.origin\n            );\n          }\n        });\n\n        const thisSubscribers = this.subscribersViewStateMap.get(\n          payload.value.key\n        );\n        this.debugger.traceEvent(\n          'incoming',\n          payload.type,\n          payload.value,\n          {},\n          !!thisSubscribers\n        );\n        if (!!thisSubscribers) {\n          for (const subscriber of thisSubscribers) {\n            subscriber(payload.value.value);\n          }\n        }\n        return;\n      }\n\n      // If ShellSdk receive OUTLET.REQUEST_CONTEXT with only `isConfigurationMode` we propagate to all outlets\n      // If ShellSdk receive OUTLET.REQUEST_DYNAMIC_CONTEXT with only `areDynamicOutletsEnabled` we propagate to all outlets\n      if (\n        (payload.type === SHELL_EVENTS.Version1.OUTLET.REQUEST_CONTEXT &&\n          payload.value.hasOwnProperty('isConfigurationMode') &&\n          !payload.value.hasOwnProperty('target') &&\n          !payload.value.hasOwnProperty('plugin')) ||\n        (payload.type ===\n          SHELL_EVENTS.Version1.OUTLET.REQUEST_DYNAMIC_CONTEXT &&\n          payload.value.hasOwnProperty('areDynamicOutletsEnabled') &&\n          !payload.value.hasOwnProperty('target') &&\n          !payload.value.hasOwnProperty('plugins'))\n      ) {\n        this.outletsMap.forEach((value, key) => {\n          if (key.contentWindow) {\n            key.contentWindow.postMessage(\n              { type: payload.type, value: payload.value },\n              this.origin\n            );\n          }\n        });\n      }\n\n      // Message has a `to` value, send to an outlet as one to one communication\n      if (\n        payload.to &&\n        payload.to.length !== 0 &&\n        payload.type !== SHELL_EVENTS.Version1.TO_APP\n      ) {\n        this.debugger.traceEvent(\n          'outgoing',\n          payload.type,\n          payload.value,\n          { to: payload.to },\n          true\n        );\n        this.outletsMap.forEach((value, key) => {\n          if (\n            payload.to &&\n            payload.to.indexOf(value.uuid) !== -1 &&\n            key.contentWindow\n          ) {\n            key.contentWindow.postMessage(\n              {\n                type: payload.type,\n                value: payload.value,\n                to: payload.to.filter((id) => id !== value.uuid),\n              },\n              this.origin\n            );\n          }\n        });\n        return;\n      }\n    }\n\n    // If isRoot or message is for me, we send to subscribers/handlers\n    const subscribers = this.subscribersMap.get(payload.type);\n\n    /*\n     * Root: finalize trace chain.\n     * - Old SDK: create fallback entry using event.origin (limited info)\n     * - Always: add root's own entry to complete the chain\n     */\n    const trace: TraceEntry[] = payload.trace ? [...payload.trace] : [];\n\n    if (this.isRoot) {\n      const source: Window = event.source as Window;\n\n      if (source && trace.length === 0) {\n        // Old SDK fallback: capture origin (full URL if same-origin, origin only if cross-origin)\n        trace.push({\n          locationHref: getLocationHref(source) || event.origin,\n        });\n      }\n\n      // Complete the chain with root's entry\n      trace.push({\n        initHref: this.selfUrl || undefined,\n        locationHref: getLocationHref(window),\n      });\n    }\n\n    this.debugger.traceEvent(\n      'incoming',\n      payload.type,\n      payload.value,\n      { from: payload.from, trace },\n      !!subscribers\n    );\n\n    let context = null;\n    if (\n      !this.isRoot &&\n      payload.type === SHELL_EVENTS.Version1.REQUIRE_CONTEXT\n    ) {\n      context =\n        typeof payload.value === 'string'\n          ? JSON.parse(payload.value)\n          : payload.value;\n      this.isInsideModal = !!context.isInsideShellModal;\n    }\n\n    if (!!subscribers) {\n      for (const subscriber of subscribers) {\n        subscriber(\n          payload.value,\n          event.origin,\n          payload.type === SHELL_EVENTS.Version1.SET_VIEW_STATE\n            ? null\n            : payload.from,\n          event,\n          trace\n        );\n      }\n    }\n\n    // On REQUIRE_CONTEXT, we split and propagate viewState\n    // Need to be done AFTER REQUIRE_CONTEXT event in case of plugin need auth or context.\n    if (\n      !this.isRoot &&\n      payload.type === SHELL_EVENTS.Version1.REQUIRE_CONTEXT\n    ) {\n      const viewState = context.viewState;\n      if (viewState) {\n        for (const key of Object.keys(viewState)) {\n          const thisSubscribers = this.subscribersViewStateMap.get(`${key}`);\n          if (!!thisSubscribers) {\n            for (const subscriber of thisSubscribers) {\n              subscriber(viewState[key]);\n            }\n          }\n        }\n      }\n      this.target.postMessage(\n        { type: SHELL_EVENTS.Version1.OUTLET.LOADING_SUCCESS },\n        this.origin\n      );\n    }\n  };\n}\n","export enum OrgDataFilterKey {\n  CURRENT_USER = 'current_user',\n  ALL = 'all',\n}\n","import { authRequest_v1_schema } from './authentication/auth-request.v1.schema';\nimport { authResponse_v1_schema } from './authentication/auth-response.v1.schema';\nimport { requireContextRequest_v1_schema } from './require-context/require-context-request.v1.schema';\n\nimport { getItemRequest_v1_schema } from './cloud-storage/get-item-request.v1.schema';\nimport { getItemRequest_v2_schema } from './cloud-storage/get-item-request.v2.schema';\nimport { getItemResponse_v1_schema } from './cloud-storage/get-item-response.v1.schema';\nimport { getItemResponse_v2_schema } from './cloud-storage/get-item-response.v2.schema';\nimport { setItemRequest_v1_schema } from './cloud-storage/set-item-request.v1.schema';\n\nimport { getFeatureFlagRequest_v1_schema } from './feature-flag/get-feature-flag-request.v1.schema';\nimport { getFeatureFlagResponse_v1_schema } from './feature-flag/get-feature-flag-response.v1.schema';\n\nimport { setTitleRequest_v1_schema } from './generic/set-title-request.v1.schema';\n\nimport { modalOpenRequest_v1_schema } from './modal/modal-open-request.v1.schema';\nimport { modalOpenRequest_v2_schema } from './modal/modal-open-request.v2.schema';\nimport { modalCloseRequest_v1_schema } from './modal/modal-close-request.v1.schema';\n\nimport { getPermissionsRequest_v1_schema } from './permissions/get-permissions-request.v1.schema';\nimport { getPermissionsRequest_v2_schema } from './permissions/get-permissions-request.v2.schema';\nimport { getPermissionsRequest_v3_schema } from './permissions/get-permissions-request.v3.schema';\nimport { getPermissionsResponse_v1_schema } from './permissions/get-permissions-response.v1.schema';\nimport { getPermissionsResponse_v2_schema } from './permissions/get-permissions-response.v2.schema';\nimport { getPermissionsResponse_v3_schema } from './permissions/get-permissions-response.v3.schema';\n\nimport { getSettingsRequest_v1_schema } from './settings/get-settings-request.v1.schema';\nimport { getSettingsResponse_v1_schema } from './settings/get-settings-response.v1.schema';\n\nimport { setViewStateRequest_v1_schema } from './view-state/set-view-state-request.v1.schema';\nimport { setViewStateResponse_v1_schema } from './view-state/set-view-state-response.v1.schema';\n\nimport { outletsRequestContextRequest_v1_schema } from './outlets/outlets-request-context-request.v1.schema';\nimport { outletsRequestContextResponse_v1_schema } from './outlets/outlets-request-context-response.v1.schema';\nimport { outletsAddPluginRequest_v1_schema } from './outlets/outlets-add-plugin-request.v1.schema';\nimport { outletsRemovePluginRequest_v1_schema } from './outlets/outlets-remove-plugin-request.v1.schema';\nimport { outletsRequestDynamicContextRequest_v1_schema } from './outlets/outlets-request-dynamic-context-request.v1.schema';\nimport { outletsRequestDynamicContextResponse_v1_schema } from './outlets/outlets-request-dynamic-context-response.v1.schema';\n\nimport { SHELL_EVENTS } from '../../ShellEvents';\n\nimport { PayloadValidationFunction } from '../interfaces/payload-validator';\n\nexport interface PayloadValidationConfiguration {\n  schema: object;\n  validationFunction: PayloadValidationFunction | null;\n}\n\nexport interface EventValidationConfiguration {\n  [eventType: string]: {\n    request?: PayloadValidationConfiguration;\n    response?: PayloadValidationConfiguration;\n  };\n}\n\nexport const getEventValidationConfiguration =\n  (): EventValidationConfiguration => ({\n    [SHELL_EVENTS.Version1.REQUIRE_AUTHENTICATION]: {\n      request: {\n        schema: authRequest_v1_schema,\n        validationFunction: null,\n      },\n      response: {\n        schema: authResponse_v1_schema,\n        validationFunction: null,\n      },\n    },\n\n    [SHELL_EVENTS.Version1.REQUIRE_CONTEXT]: {\n      request: {\n        schema: requireContextRequest_v1_schema,\n        validationFunction: null,\n      },\n    },\n\n    [SHELL_EVENTS.Version1.GET_STORAGE_ITEM]: {\n      request: {\n        schema: getItemRequest_v1_schema,\n        validationFunction: null,\n      },\n      response: {\n        schema: getItemResponse_v1_schema,\n        validationFunction: null,\n      },\n    },\n\n    [SHELL_EVENTS.Version2.GET_STORAGE_ITEM]: {\n      request: {\n        schema: getItemRequest_v2_schema,\n        validationFunction: null,\n      },\n      response: {\n        schema: getItemResponse_v2_schema,\n        validationFunction: null,\n      },\n    },\n\n    [SHELL_EVENTS.Version1.SET_STORAGE_ITEM]: {\n      request: {\n        schema: setItemRequest_v1_schema,\n        validationFunction: null,\n      },\n    },\n\n    [SHELL_EVENTS.Version1.GET_FEATURE_FLAG]: {\n      request: {\n        schema: getFeatureFlagRequest_v1_schema,\n        validationFunction: null,\n      },\n      response: {\n        schema: getFeatureFlagResponse_v1_schema,\n        validationFunction: null,\n      },\n    },\n\n    [SHELL_EVENTS.Version1.SET_TITLE]: {\n      request: {\n        schema: setTitleRequest_v1_schema,\n        validationFunction: null,\n      },\n    },\n\n    [SHELL_EVENTS.Version1.MODAL.OPEN]: {\n      request: {\n        schema: modalOpenRequest_v1_schema,\n        validationFunction: null,\n      },\n    },\n\n    [SHELL_EVENTS.Version2.MODAL.OPEN]: {\n      request: {\n        schema: modalOpenRequest_v2_schema,\n        validationFunction: null,\n      },\n    },\n\n    [SHELL_EVENTS.Version1.MODAL.CLOSE]: {\n      request: {\n        schema: modalCloseRequest_v1_schema,\n        validationFunction: null,\n      },\n    },\n\n    [SHELL_EVENTS.Version1.GET_PERMISSIONS]: {\n      request: {\n        schema: getPermissionsRequest_v1_schema,\n        validationFunction: null,\n      },\n      response: {\n        schema: getPermissionsResponse_v1_schema,\n        validationFunction: null,\n      },\n    },\n\n    [SHELL_EVENTS.Version2.GET_PERMISSIONS]: {\n      request: {\n        schema: getPermissionsRequest_v2_schema,\n        validationFunction: null,\n      },\n      response: {\n        schema: getPermissionsResponse_v2_schema,\n        validationFunction: null,\n      },\n    },\n\n    [SHELL_EVENTS.Version3.GET_PERMISSIONS]: {\n      request: {\n        schema: getPermissionsRequest_v3_schema,\n        validationFunction: null,\n      },\n      response: {\n        schema: getPermissionsResponse_v3_schema,\n        validationFunction: null,\n      },\n    },\n\n    [SHELL_EVENTS.Version1.GET_SETTINGS]: {\n      request: {\n        schema: getSettingsRequest_v1_schema,\n        validationFunction: null,\n      },\n      response: {\n        schema: getSettingsResponse_v1_schema,\n        validationFunction: null,\n      },\n    },\n\n    [SHELL_EVENTS.Version1.SET_VIEW_STATE]: {\n      request: {\n        schema: setViewStateRequest_v1_schema,\n        validationFunction: null,\n      },\n      response: {\n        schema: setViewStateResponse_v1_schema,\n        validationFunction: null,\n      },\n    },\n\n    [SHELL_EVENTS.Version1.OUTLET.REQUEST_CONTEXT]: {\n      request: {\n        schema: outletsRequestContextRequest_v1_schema,\n        validationFunction: null,\n      },\n      response: {\n        schema: outletsRequestContextResponse_v1_schema,\n        validationFunction: null,\n      },\n    },\n\n    [SHELL_EVENTS.Version1.OUTLET.REQUEST_DYNAMIC_CONTEXT]: {\n      request: {\n        schema: outletsRequestDynamicContextRequest_v1_schema,\n        validationFunction: null,\n      },\n      response: {\n        schema: outletsRequestDynamicContextResponse_v1_schema,\n        validationFunction: null,\n      },\n    },\n\n    [SHELL_EVENTS.Version1.OUTLET.ADD_PLUGIN]: {\n      request: {\n        schema: outletsAddPluginRequest_v1_schema,\n        validationFunction: null,\n      },\n    },\n\n    [SHELL_EVENTS.Version1.OUTLET.REMOVE_PLUGIN]: {\n      request: {\n        schema: outletsRemovePluginRequest_v1_schema,\n        validationFunction: null,\n      },\n    },\n  });\n"]}