All Downloads are FREE. Search and download functionalities are using the official Maven repository.

web-interface.assets.6e61897c-6.472622149827c1587209.js.map Maven / Gradle / Ivy

There is a newer version: 6.0.1
Show newest version
{"version":3,"sources":["webpack:///./src/components/event-definitions/event-definition-types/FilterAggregationSummary.css","webpack:///./src/components/event-definitions/common/commonStyles.css","webpack:///./src/components/event-definitions/common/HelpPanel.css","webpack:///./src/components/lookup-table-parameters/LookupTableParameterEdit.tsx","webpack:///./src/components/event-definitions/event-definition-form/EditQueryParameterModal.tsx","webpack:///./src/components/event-definitions/event-definition-types/FilterForm.jsx","webpack:///./src/components/event-definitions/event-definition-types/FilterPreview.css?7baf","webpack:///./src/components/event-definitions/event-definition-types/FilterPreview.jsx","webpack:///./src/components/event-definitions/event-definition-types/FilterPreviewContainer.jsx","webpack:///./src/logic/alerts/AggregationExpressionConfig.js","webpack:///./src/logic/alerts/AggregationExpressionValidation.js","webpack:///./src/logic/alerts/AggregationExpressionTypes.js","webpack:///./src/components/event-definitions/event-definition-types/AggregationConditionExpressions/NumberExpression.jsx","webpack:///./src/components/event-definitions/event-definition-types/AggregationConditionExpressions/NumberRefExpression.jsx","webpack:///./src/components/event-definitions/event-definition-types/AggregationConditionExpressions/BooleanOperatorSelector.jsx","webpack:///./src/components/event-definitions/event-definition-types/AggregationConditionExpressions/BooleanExpression.jsx","webpack:///./src/components/event-definitions/event-definition-types/AggregationConditionExpressions/ComparisonExpression.jsx","webpack:///./src/components/event-definitions/event-definition-types/AggregationConditionExpressions/GroupExpression.jsx","webpack:///./src/components/event-definitions/event-definition-types/AggregationConditionExpression.css?1d09","webpack:///./src/components/event-definitions/event-definition-types/AggregationConditionExpression.jsx","webpack:///./src/components/event-definitions/event-definition-types/AggregationConditionSummary.jsx","webpack:///./src/components/event-definitions/event-definition-types/AggregationConditionsFormSummary.jsx","webpack:///./src/components/event-definitions/event-definition-types/AggregationConditionsForm.jsx","webpack:///./src/components/event-definitions/event-definition-types/AggregationForm.jsx","webpack:///./src/components/event-definitions/event-definition-types/FilterAggregationForm.jsx","webpack:///./src/components/event-definitions/event-definition-types/withStreams.jsx","webpack:///./src/components/event-definitions/event-definition-types/FilterAggregationFormContainer.jsx","webpack:///./src/components/event-definitions/event-definition-types/FilterAggregationSummary.css?c478","webpack:///./src/components/event-definitions/event-definition-types/FilterAggregationSummary.jsx","webpack:///./src/components/event-definitions/event-definition-types/index.js","webpack:///./src/components/event-definitions/event-definition-types/FilterPreview.css","webpack:///./src/components/event-definitions/common/HelpPanel.css?84fd","webpack:///./src/components/event-definitions/common/HelpPanel.jsx","webpack:///./src/components/event-definitions/common/commonStyles.css?5223","webpack:///./src/util/SortUtils.js","webpack:///./src/components/event-definitions/event-definition-types/AggregationConditionExpression.css"],"names":["___CSS_LOADER_EXPORT___","push","module","i","locals","StyledInlineCode","styled","LookupTableParameterEdit","validationState","onChange","lookupTables","identifier","parameter","defaultExpandHelp","lookupTable","tableKey","key","defaultValue","name","parameterSyntax","_handleChange","fieldName","value","_handleInputChange","attributeName","target","Spinner","text","lookupTableOptions","sort","lt1","lt2","naturalSortIgnoreCase","title","map","table","label","id","bsStyle","error","help","Select","placeholder","inputProps","options","autoFocus","clearable","required","type","undefined","spellCheck","defaultExpanded","Heading","Title","toggle","Collapse","Body","defaultProps","EditQueryParameterModal","props","React","createRef","modal","open","queryParameter","state","_validate","propagateChanges","close","setState","queryParameters","prevQueryParameter","newQueryParameters","index","findIndex","p","Error","toJSON","nextQueryParameter","toBuilder","build","newValidation","validation","lodash","isEmpty","this","embryonic","bsSize","onClick","openModal","ref","onSubmitForm","_saved","onModalClose","_cleanState","submitButtonText","handleParameterChange","Component","PropTypes","array","isRequired","object","func","bool","CombinedProvider","get","LookupTablesStore","LookupTablesActions","TIME_UNITS","LOOKUP_PERMISSIONS","FilterForm","memoize","streamIds","streams","streamId","find","s","streamOrId","stream","s1","s2","join","debounce","queryString","_userCanViewLookupTables","queryId","searchTypeId","query","Query","builder","query_string","timerange","range","searchTypes","limit","offset","search","Search","create","queries","SearchMetadataActions","parseSearch","then","res","_syncParamsWithQuery","undeclared","eventDefinition","config","cloneDeep","paramsInQuery","query_parameters","keptParameters","staleParameters","forEach","has","queryParameterStash","newParameters","np","_buildNewParameter","merge","concat","currentUser","isPermitted","permissions","data_type","event","_parseQuery","handleConfigChange","propagateChange","FormsUtils","nextValue","nextUnit","durationInMs","moment","duration","max","asMilliseconds","stateFieldName","camelCase","onChangeQueryParameters","newConfig","parameterButtons","queryParam","LookupTableParameter","fromJSON","tables","hasEmbryonicParameters","filter","param","errors","executeEveryMs","execute_every_ms","searchWithinMs","search_within_ms","searchWithin","extractDurationAndUnit","executeEvery","searchWithinMsDuration","searchWithinMsUnit","unit","executeEveryMsDuration","executeEveryMsUnit","uuid","searchPaginated","allStreamIds","union","defaultTo","formattedStreams","formatStreamIds","className","commonStyles","handleQueryChange","renderQueryParameters","controlId","matchProp","selected","handleStreamsChange","split","update","handleTimeRangeChange","units","checked","_is_scheduled","connect","FilterPreview","messages","message","_id","timestamp","searchResult","length","striped","condensed","bordered","renderMessages","isFetchingData","displayPreview","renderedResults","renderSearchResult","HelpPanel","collapsible","styles","filterPreview","description","FilterPreviewStore","FilterPreviewActions","CurrentUserStore","FilterPreviewContainer","isPermittedToSeePreview","filters","parameters","some","PermissionsMixin","fetchSearch","prevProps","prevQuery","prevQueryParameters","prevStreams","prevSearchWithin","isEqual","isLoading","result","forId","emptyBooleanExpressionConfig","operator","left","expr","right","emptyGroupExpressionConfig","child","replaceBooleanExpressionOperatorInGroup","nextOperator","expression","nextExpression","flattenValidationTree","validationTree","validateExpressionTree","series","Number","isFinite","selectedSeries","validateExpression","validationResults","isValid","internalNodePropType","shape","string","numberExpressionNodePropType","oneOfType","number","numberRefNodePropType","NumberExpression","renderLabel","md","conditions","propTypes","NumberRefExpression","functions","aggregationFunctions","formattedFields","getSeries","seriesId","getOrCreateSeries","handleFieldChange","currentSeries","field","nextFunction","nextField","nextSeries","nextSeriesId","seriesIndex","naturalSort","fn","toLowerCase","ignoreAccents","allowCreate","OperatorSelector","div","theme","css","fonts","size","body","BooleanOperatorSelect","isFirstElement","BooleanOperatorSelector","initialText","onOperatorChange","Static","BooleanExpression","level","onChildChange","parent","ComparisonExpression","Group","GroupExpression","AggregationConditionExpression","globalGroupOperator","defaultOperator","getEffectiveGlobalGroupOperator","prevOperator","getBooleanOperator","groupExpression","branch","changes","Object","keys","includes","nextUpdate","expressionComponent","handleChildChange","formControlNoLabel","handleDeleteExpression","fixedWidth","handleAddExpression","handleAddGroup","handleOperatorChange","AggregationConditionSummary","renderExpression","StyledPanel","Panel","StyledButton","Button","AggregationConditionsFormSummary","expressionValidation","showInlineValidation","toggleShowValidation","header","initialEmptyConditionConfig","extractSeriesReferences","acc","StyledAlert","Alert","AggregationConditionsForm","nextConditions","seriesReferences","handleChange","toggleShowInlineValidation","AggregationForm","fieldTypes","ftA","ftB","defaultCompare","fieldType","ft","propagateConfigChange","group_by","allFieldTypes","formatFields","lg","handleGroupByChange","conditionTypes","initialAggregationConfig","FilterAggregationForm","stateChange","nextConditionType","existingAggregationConfig","nextConfig","defaultConditionType","conditionType","entityTypes","is_editable","handleTypeChange","lgOffset","aggregation_functions","StreamsStore","withStreams","WrappedComponent","hiddenStreams","wrappedComponentName","displayName","WithStreams","load","filteredStreams","FilterAggregationFormContainer","otherProps","all","toJS","action","oneOf","FieldTypesStore","FilterAggregationSummary","groupBy","to","Routes","stream_search","streamIdsWithMissingPermission","warning","renderedStreams","formatStreamOrId","undeclaredParameters","isScheduled","getConditionType","effectiveStreamIds","upperFirst","streamList","renderStreams","PluginStore","register","PluginManifest","eventDefinitionTypes","sortOrder","formComponent","summaryComponent","defaultConfig","IconHeader","Icon","ConditionalCollapse","condition","wrapper","children","defaultHeader","helpPanel","wrapChild","node","sortByDate","d1","d2","effectiveSortOrder","d1Time","d2Time","isBefore"],"mappings":"4GAAA,6CAGIA,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,EAAI,mFAAoF,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,oGAAoG,MAAQ,GAAG,SAAW,uBAAuB,eAAiB,CAAC,+EAA+E,WAAa,MAEvZH,EAAwBI,OAAS,CAChC,WAAc,2BAEA,O,wCCVf,6CAGIJ,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,EAAI,uZAAwZ,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wEAAwE,MAAQ,GAAG,SAAW,0KAA0K,eAAiB,CAAC,+YAA+Y,WAAa,MAElpCH,EAAwBI,OAAS,CAChC,MAAS,0BACT,WAAc,0BACd,kBAAqB,2BAEP,O,wCCZf,6CAGIJ,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,EAAI,yTAA0T,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,qEAAqE,MAAQ,GAAG,SAAW,+GAA+G,eAAiB,CAAC,kSAAkS,WAAa,MAEz4BH,EAAwBI,OAAS,CAChC,UAAa,2BAEC,O,ucCgBTC,EAAmBC,kBAAO,QAAV,iGAAGA,CAAH,yCAsBhBC,EAA2B,SAAC,GAOrB,cANXC,EAMW,EANXA,gBACAC,EAKW,EALXA,SACAC,EAIW,EAJXA,aACAC,EAGW,EAHXA,WACAC,EAEW,EAFXA,UACAC,EACW,EADXA,kBAEQC,EAAmDF,EAAnDE,YAAkBC,EAAiCH,EAAtCI,IAAeC,EAAuBL,EAAvBK,aAAcC,EAASN,EAATM,KAC5CC,EAAkB,IAAH,OAAOD,EAAP,KAEfE,EAAgB,SAACC,GAAD,OAAuB,SAACC,GAC5Cb,EAASY,EAAWC,KAGhBC,EAAqB,SAACC,GAAD,OAA2B,gBAAaF,EAAb,EAAGG,OAAUH,MAAb,OAAgEF,EAAcI,EAAdJ,CAA6BE,KAEnJ,IAAKZ,EACH,OAAO,gBAACgB,EAAA,EAAD,CAASC,KAAK,0BAGvB,IAAMC,EAAqBlB,EAAamB,MAAK,SAACC,EAAKC,GAAN,OAAcC,YAAsBF,EAAIG,MAAOF,EAAIE,UAC7FC,KAAI,SAACC,GAAD,MAAY,CAAEC,MAAOD,EAAMF,MAAOX,MAAOa,EAAMjB,SAEtD,OACE,gCACE,gBAAC,IAAD,CAAOmB,GAAE,uCAAkC1B,GACpCO,KAAK,yBACLkB,MAAM,eACNE,QAAS9B,SAAF,UAAEA,EAAiBM,mBAAnB,aAAE,EAA+B,GACxCyB,MAAO/B,SAAF,UAAEA,EAAiBM,mBAAnB,aAAE,EAA+B,GACtC0B,KAAK,iEACV,gBAACC,EAAA,EAAD,CAAQC,YAAY,sBACZC,WAAY,CAAE,aAAc,uBAC5BlC,SAAUW,EAAc,eACxBwB,QAAShB,EACTN,MAAOR,EACP+B,WAAS,EACTC,WAAW,EACXC,UAAQ,KAElB,gBAAC,IAAD,CAAOC,KAAK,OACLX,GAAE,qCAAgC1B,GAClCyB,MAAM,mBACNlB,KAAK,MACLD,aAAcF,EACdN,SAAUc,EAAmB,OAC7Be,QAAS9B,SAAF,UAAEA,EAAiBQ,WAAnB,aAAE,EAAuB,GAChCwB,KAAK,8BACLD,MAAqC,WAA9B/B,SAAA,UAAAA,EAAiBQ,WAAjB,eAAuB,IAAiBR,SAAxC,UAAwCA,EAAiBQ,WAAzD,aAAwC,EAAuB,QAAKiC,EAC3EC,YAAY,EACZH,UAAQ,IACf,gBAAC,IAAD,CAAOV,GAAE,+CAA0C1B,GAC5CqC,KAAK,OACL9B,KAAK,eACLkB,MAAM,gBACNI,KAAK,4DACLvB,aAAcA,EACdiC,YAAY,EACZzC,SAAUc,EAAmB,kBAEpC,gBAAC,IAAD,CAAOc,GAAG,8BAA8Bc,gBAAiBtC,GACvD,gBAAC,IAAMuC,QAAP,KACE,gBAAC,IAAMC,MAAP,CAAaC,QAAM,GAAnB,uCAIF,gBAAC,IAAMC,SAAP,KACE,gBAAC,IAAMC,KAAP,KACE,2CACA,6DAEE,gBAACnD,EAAD,KAAmBc,GAFrB,oKAKE,gBAACd,EAAD,mCAEF,mEACA,oMAEqF,yCAFrF,oDAG4C,0CAH5C,wHAKE,gBAACA,EAAD,UALF,sCAQA,yCACA,oKAWZE,EAAyBkD,aAAe,CACtC7C,UAAW,GACXJ,gBAAiB,GACjBK,mBAAmB,GAGNN,Q,ujEC9GTmD,E,sQAWJ,WAAYC,GAAO,O,4FAAA,aACjB,cAAMA,IADW,QAFSC,IAAMC,aAEf,oBAWP,WACV,EAAKC,MAAMC,UAZM,iBAeV,WAAM,IACLC,EAAmB,EAAKC,MAAxBD,eAEH,EAAKE,UAAUF,KAIpB,EAAKG,mBACL,EAAKL,MAAMM,YAvBM,sBA0BL,WAAM,IACVJ,EAAmB,EAAKL,MAAxBK,eAER,EAAKK,SAAS,CAAEL,sBA7BC,2BAgCA,WAAM,MACmD,EAAKL,MAAvEW,EADe,EACfA,gBAAiB7D,EADF,EACEA,SAA0B8D,EAD5B,EACYP,eAC3BA,EAAmB,EAAKC,MAAxBD,eACFQ,EAAqB,EAAIF,GACzBG,EAAQH,EAAgBI,WAAU,SAACC,GAAD,OAAOA,EAAEzD,OAASqD,EAAmBrD,QAE7E,GAAIuD,EAAQ,EACV,MAAM,IAAIG,MAAJ,2BAA8BZ,EAAe9C,KAA7C,gBAGRsD,EAAmBC,GAAST,EAAea,SAC3CpE,EAAS+D,MA3CQ,gCA8CK,SAACxD,EAAKM,GAAU,IAEhCwD,EADqB,EAAKb,MAAxBD,eACkCe,YAAY/D,GAAKM,GAAO0D,QAElE,EAAKX,SAAS,CAAEL,eAAgBc,OAlDf,oBAqDP,SAACd,GACX,IAAMiB,EAAqC,GAY3C,OAVKjB,EAAelD,cAClBmE,EAAcnE,YAAc,mBAGzBkD,EAAehD,MAClBiE,EAAcjE,IAAM,mBAGtB,EAAKqD,SAAS,CAAEa,WAAYD,IAErBE,IAAOC,QAAQH,MAlEL,IAGTjB,EAAmB,EAAKL,MAAxBK,eAHS,OAKjB,EAAKC,MAAQ,CACXD,iBACAkB,WAAY,IAPG,E,mCAqEnB,WAAS,aAC6BG,KAAK1B,MAAjCjD,EADD,EACCA,aAAc4E,EADf,EACeA,UADf,EAEgCD,KAAKpB,MAApCD,EAFD,EAECA,eAAgBkB,EAFjB,EAEiBA,WAElB1E,EAGF,CACFM,YAAaoE,EAAWpE,YAAc,CAAC,QAASoE,EAAWpE,kBAAemC,EAC1EjC,IAAKkE,EAAWlE,IAAM,CAAC,QAASkE,EAAWlE,UAAOiC,GAGpD,OACE,oCACE,kBAAC,IAAD,CAAQsC,OAAO,QACPjD,QAASgD,EAAY,UAAY,OACjCE,QAAS,kBAAM,EAAKC,cACzBzB,EAAe9C,KAAMoE,GAAa,gBAGrC,kBAAC,IAAD,CAAoBI,IAAK,SAACA,GAAU,EAAK5B,MAAQ4B,GAC7BzD,MAAK,mCAA8B+B,EAAe9C,KAA7C,uBACLyE,aAAcN,KAAKO,OACnBC,aAAcR,KAAKS,YACnBC,iBAAiB,QACnC,kBAAC,EAAD,CAA0BvF,gBAAiBA,EACjBG,WAAYqD,EAAe9C,KAC3BN,UAAWoD,EACXvD,SAAU4E,KAAKW,sBACftF,aAAcA,W,8BA7GZkD,IAAMqC,W,EAAtCvC,E,YACe,CACjBY,gBAAiB4B,IAAUC,MAAMC,WACjCpC,eAAgBkC,IAAUG,OAAOD,WACjC1F,aAAcwF,IAAUC,MAAMC,WAC9B3F,SAAUyF,IAAUI,KAAKF,WACzBd,UAAWY,IAAUK,KAAKH,aA8Gf1C,Q,y6DCvHoC8C,IAAiBC,IAAI,gBAAhEC,G,GAAAA,kBAAmBC,G,GAAAA,oBAEdC,GAAa,CAAC,QAAS,UAAW,WAEzCC,GAAqB,CACzB,qBAGIC,G,sQA0DJ,WAAYnD,GAAO,O,4FAAA,eACjB,cAAMA,IADW,kBAzDDwB,IAAO4B,SACvB,SAACC,GAAc,IACLC,EAAY,EAAKtD,MAAjBsD,QAER,OAAOD,EACJ9E,KAAI,SAACgF,GAAD,OAAcD,EAAQE,MAAK,SAACC,GAAD,OAAOA,EAAE/E,KAAO6E,MAAaA,KAC5DhF,KAAI,SAACmF,GACJ,IAAMC,EAAgC,WAAtB,EAAOD,GAA0BA,EAAa,CAAEpF,MAAOoF,EAAYhF,GAAIgF,GAEvF,MAAO,CACLjF,MAAOkF,EAAOrF,MACdX,MAAOgG,EAAOjF,OAGjBR,MAAK,SAAC0F,EAAIC,GAAL,OAAYxF,YAAsBuF,EAAGnF,MAAOoF,EAAGpF,aAEzD,SAAC4E,GAAD,OAAeA,EAAUS,KAAK,SAyCb,uBAtCLtC,IAAOuC,UAAS,SAACC,GAC7B,GAAK,EAAKC,2BAAV,CAD6C,MAKX,EAAK3D,MAA/B4D,EALqC,EAKrCA,QAASC,EAL4B,EAK5BA,aAaXC,EAXeC,IAAMC,UACxB5F,GAAGwF,GACHE,MAAM,CAAE/E,KAAM,gBAAiBkF,aAAcP,IAC7CQ,UAAU,CAAEnF,KAAM,WAAYoF,MAAO,MACrCC,YAAY,CAAC,CACZhG,GAAIyF,EACJ9E,KAAM,WACNsF,MAAO,GACPC,OAAQ,KAGevD,QAErBwD,EAASC,IAAOC,SAAS3D,YAC5B4D,QAAQ,CAACZ,IACT/C,QAEH4D,IAAsBC,YAAYL,GAAQM,MAAK,SAACC,GAC9C,EAAKC,qBAAqBD,EAAIE,kBAE/B,MAWgB,4BAwBD,SAACjI,EAAKM,GAAU,MACM,EAAKqC,MAAnCuF,EADwB,EACxBA,gBAAiBzI,EADO,EACPA,SACnB0I,EAAShE,IAAOiE,UAAUF,EAAgBC,QAEhDA,EAAOnI,GAAOM,EACdb,EAAS,SAAU0I,MA7BF,iCAgCI,SAACE,GAAkB,MACF,EAAK1F,MAAnCuF,EADgC,EAChCA,gBAAiBzI,EADe,EACfA,SACnB0I,EAAShE,IAAOiE,UAAUF,EAAgBC,QAC1C7E,EAAkB6E,EAAOG,iBACzBC,EAAiB,GACjBC,EAAkB,GAExBlF,EAAgBmF,SAAQ,SAAC9E,GACnB0E,EAAcK,IAAI/E,EAAEzD,MACtBqI,EAAetJ,KAAK0E,GAEpB6E,EAAgB7E,EAAEzD,MAAQyD,KAXU,IAehCgF,EAAwB,EAAK1F,MAA7B0F,oBACFC,EAAgB,GAEtBP,EAAcI,SAAQ,SAACI,GAChBN,EAAepC,MAAK,SAACxC,GAAD,OAAOA,EAAEzD,OAAS2I,OACrCF,EAAoBE,GACtBD,EAAc3J,KAAK0J,EAAoBE,IAEvCD,EAAc3J,KAAK,EAAK6J,mBAAmBD,QAKjD,EAAKxF,SAAS,CAAEsF,oBAAqBxE,IAAO4E,MAAMJ,EAAqBH,KAEvEL,EAAOG,iBAAmBC,EAAeS,OAAOJ,GAChDnJ,EAAS,SAAU0I,MA/DF,qCAkEQ,WAAM,IACvBc,EAAgB,EAAKtG,MAArBsG,YAER,OAAOC,YAAYD,EAAYE,YAAatD,OArE3B,+BAwEE,SAAC3F,GACpB,MAAQ,CACNA,KAAMA,EACNoE,WAAW,EACXtC,KAAM,mBACNoH,UAAW,MACXnI,MAAO,gBA9EQ,8BAmFC,SAACoI,GACnB,EAAKC,YAAYD,EAAM5I,OAAOH,OAC9B,EAAKiJ,mBAAmBF,MArFP,+BAwFE,SAACA,GAAU,IACtBnJ,EAASmJ,EAAM5I,OAAfP,KAER,EAAKsJ,gBAAgBtJ,EAAMuJ,IAA6BJ,EAAM5I,YA3F7C,gCA8FG,SAACiJ,GACrB,EAAKF,gBAAgB,UAAWE,MA/Ff,kCAkGK,SAACrJ,GACvB,OAAO,SAACqJ,EAAWC,GAAa,MACxBC,EAAeC,IAAOC,SAAS3F,IAAO4F,IAAI,CAACL,EAAW,IAAKC,GAAUK,iBAE3E,EAAKR,gBAAgBnJ,EAAWuJ,GAEhC,IAAMK,EAAiB9F,IAAO+F,UAAU7J,GAExC,EAAKgD,UAAL,kBACM4G,EADN,YACiCP,GADjC,eAEMO,EAFN,QAE6BN,GAF7B,QA1Ge,kCAiHK,WAAM,MACoC,EAAKhH,MAA7DuF,EADoB,EACpBA,gBAAiBzI,EADG,EACHA,SAAUC,EADP,EACOA,aAAcwE,EADrB,EACqBA,WACvBZ,EAAoB4E,EAAgBC,OAAtDG,iBAEF6B,EAA0B,SAAC3G,GAC/B,IAAM4G,EAAY,EAAH,KAAQlC,EAAgBC,QAAxB,IAAgCG,iBAAkB9E,IAEjE,OAAO/D,EAAS,SAAU2K,IAG5B,IAAK,EAAKxD,2BACR,OACE,kBAAC,IAAD,CAAOtF,QAAQ,QAAf,iFAMJ,IAAM+I,EAAmB/G,EAAgBpC,KAAI,SAACoJ,GAC5C,OACE,kBAAC,EAAD,CAAyBtK,IAAKsK,EAAWpK,KAChB8C,eAAgBuH,IAAqBC,SAASF,GAC9ChG,YAAagG,EAAWhG,UACxBhB,gBAAiBA,EACjB5D,aAAcA,EAAa+K,OAC3BvG,WAAYA,EACZzE,SAAU0K,OAIvC,GAAIhG,IAAOC,QAAQiG,GACjB,OAAO,KAGT,IAAMK,GAA0BvG,IAAOC,QAAQd,EAAgBqH,QAAO,SAACC,GAAD,OAAYA,EAAMtG,cAExF,OACE,kBAAC,IAAD,CAAW9E,gBAAiB0E,EAAW2G,OAAOvC,iBAAmB,QAAU,MACzE,kBAAC,IAAD,yBACA,kBAAC,IAAD,CAAOhH,QAASoJ,EAAyB,SAAW,QAClD,kBAAC,IAAD,KACGL,IAGJK,GACC,kBAAC,IAAD,KACGxG,EAAW2G,OAAOvC,iBACfnE,IAAOsB,IAAIvB,EAAY,8BACvB,iFAjKK,MAG8DvB,EAAMuF,gBAAgBC,OAA3E2C,EAHT,EAGTC,iBAAoDC,EAH3C,EAGyBC,iBACpCC,EAAeC,YAAuBH,EAAgBpF,IACtDwF,EAAeD,YAAuBL,EAAgBlF,IAL3C,OAOjB,EAAK3C,MAAQ,CACXoI,uBAAwBH,EAAapB,SACrCwB,mBAAoBJ,EAAaK,KACjCC,uBAAwBJ,EAAatB,SACrC2B,mBAAoBL,EAAaG,KACjC1E,QAAS6E,MACT5E,aAAc4E,MACd/C,oBAAqB,IAdN,E,8CAkBnB,WACMtE,KAAKuC,4BACPjB,GAAoBgG,gBAAgB,EAAG,OAAG1J,GAAW,K,oBAoJzD,WAAS,aAC0CoC,KAAK1B,MAA9CuF,EADD,EACCA,gBAAiBjC,EADlB,EACkBA,QAAS/B,EAD3B,EAC2BA,WAD3B,EAE4FG,KAAKpB,MAAhGoI,EAFD,EAECA,uBAAwBC,EAFzB,EAEyBA,mBAAoBE,EAF7C,EAE6CA,uBAAwBC,EAFrE,EAEqEA,mBAGtEG,EAAezH,IAAO0H,MAAM5F,EAAQ/E,KAAI,SAACkF,GAAD,OAAOA,EAAE/E,MAAK8C,IAAO2H,UAAU5D,EAAgBC,OAAOlC,QAAS,KACvG8F,EAAmB1H,KAAK2H,gBAAgBJ,GAE9C,OACE,kCACE,wBAAIK,UAAWC,IAAajL,OAA5B,UACA,sHACA,kBAAC,IAAD,CAAOI,GAAG,eACHnB,KAAK,QACLkB,MAAM,eACNY,KAAK,OACLR,KACE,kMAEuE,gDAFvE,YAKFlB,MAAO6D,IAAO2H,UAAU5D,EAAgBC,OAAOpB,MAAO,IACtDtH,SAAU4E,KAAK8H,oBAErB9H,KAAK+H,wBAEN,kBAAC,IAAD,CAAWC,UAAU,kBACnB,kBAAC,IAAD,gBAAsB,2BAAOJ,UAAU,cAAjB,eACtB,kBAAC,IAAD,CAAa5K,GAAG,iBACHiL,UAAU,QACV7M,SAAU,SAAC8M,GAAD,OAAc,EAAKC,oBAAiC,KAAbD,EAAkB,GAAKA,EAASE,MAAM,OACvF7K,QAASmK,EACTzL,MAAO6D,IAAO2H,UAAU5D,EAAgBC,OAAOlC,QAAS,IAAIQ,KAAK,OAC9E,kBAAC,IAAD,qFAGF,kBAAC,IAAD,CAAW4F,UAAU,gBAAgB7M,gBAAiB0E,EAAW2G,OAAOI,iBAAmB,QAAU,MACnG,kBAAC,KAAD,CAAe7J,MAAM,yBACNsL,OAAQrI,KAAKsI,sBAAsB,oBACnCrM,MAAO+K,EACPE,KAAMD,EACNsB,MAAOhH,GACP9D,WAAS,EACTC,UAAQ,IACtBmC,EAAW2G,OAAOI,kBACjB,kBAAC,IAAD,KAAY9G,IAAOsB,IAAIvB,EAAY,gCAIvC,kBAAC,IAAD,CAAWmI,UAAU,gBAAgB7M,gBAAiB0E,EAAW2G,OAAOE,iBAAmB,QAAU,MACnG,kBAAC,KAAD,CAAe3J,MAAM,uBACNsL,OAAQrI,KAAKsI,sBAAsB,oBACnCrM,MAAOkL,EACPD,KAAME,EACNmB,MAAOhH,GACP9D,WAAS,EACTC,UAAQ,IACtBmC,EAAW2G,OAAOE,kBACjB,kBAAC,IAAD,KAAY5G,IAAOsB,IAAIvB,EAAY,gCAGvC,kBAAC,IAAD,CAAO7C,GAAG,oBACHW,KAAK,WACL9B,KAAK,gBACLkB,MAAM,SACNI,KAAK,0DACLqL,QAAS1I,IAAO2H,UAAU5D,EAAgBC,OAAO2E,eAAe,GAChErN,SAAU4E,KAAKkF,2B,8BAtSL3G,IAAMqC,W,GAAzBa,G,YAiDe,CACjBoC,gBAAiBhD,IAAUG,OAAOD,WAClC1F,aAAcwF,IAAUG,OAAOD,WAC/BlB,WAAYgB,IAAUG,OAAOD,WAC7Ba,QAASf,IAAUC,MAAMC,WACzB3F,SAAUyF,IAAUI,KAAKF,WACzB6D,YAAa/D,IAAUG,OAAOD,aAqPnB2H,mBAAQjH,GAAY,CACjCpG,aAAcgG,K,8DCzVZ9D,GAAU,CAEd,OAAiB,OACjB,WAAoB,GAML,IAJF,KAAI,KAASA,IAIX,KAAQxC,QAAU,I,47CCa3B4N,G,ibAea,SAACC,GAChB,OAAOA,EAAS/L,KAAI,YAAwB,IAArBuC,EAAqB,EAArBA,MAAOyJ,EAAc,EAAdA,QAC5B,OACE,wBAAIlN,IAAG,UAAKyD,EAAL,YAAcyJ,EAAQC,MAC3B,4BAAKD,EAAQE,WACb,4BAAKF,EAAQA,gB,+BAMA,WAAuB,IAAtBG,EAAsB,uDAAP,GACnC,OAAKA,EAAaJ,UAA6C,IAAjCI,EAAaJ,SAASK,OAKlD,kBAAC,IAAD,CAAOC,SAAO,EAACC,WAAS,EAACC,UAAQ,GAC/B,+BACE,4BACE,yCACA,yCAGJ,+BACG,EAAKC,eAAeL,EAAaJ,YAZ/B,+F,qCAkBX,WAAS,MAC0D5I,KAAK1B,MAA9DgL,EADD,EACCA,eAAgBN,EADjB,EACiBA,aAAcxC,EAD/B,EAC+BA,OAAQ+C,EADvC,EACuCA,eAExCC,EAAkBF,EAAiB,kBAAC,KAAD,CAAShN,KAAK,8BAAiC0D,KAAKyJ,mBAAmBT,GAEhH,OACE,oCACE,kBAACU,GAAA,EAAD,CAAWC,aAAW,EACX7L,iBAAkByL,EAClB3M,MAAM,qDACf,8IAIA,4BACE,4BAAI,sCAAJ,8CACA,4BACE,0DADF,wEAIA,4BACE,uDADF,2EAOH2M,GACC,kBAAC,IAAD,CAAO3B,UAAWgC,GAAOC,cAAe5M,QAAQ,WAC9C,kBAAC,IAAMc,QAAP,KACE,kBAAC,IAAMC,MAAP,wBAEF,kBAAC,IAAMG,KAAP,KACGqI,EAAOyC,OAAS,EAAI,uBAAGrB,UAAU,eAAepB,EAAO,GAAGsD,aAAmBN,U,gCA/EhEjL,IAAMqC,W,GAA5B+H,G,YACe,CACjBK,aAAcnI,IAAUG,OACxBwF,OAAQ3F,IAAUC,MAClBwI,eAAgBzI,IAAUK,KAC1BqI,eAAgB1I,IAAUK,O,GALxByH,G,eAQkB,CACpBK,aAAc,GACdxC,OAAQ,GACR8C,gBAAgB,EAChBC,gBAAgB,IA4ELZ,U,w3ECpFsCxH,IAAiBC,IAAI,iBAAlE2I,G,GAAAA,mBAAoBC,G,GAAAA,qBACpBC,GAAqB9I,IAAiBC,IAAI,eAA1C6I,iBAEFC,G,uaACI,CACN1H,QAAS6E,MACT5E,aAAc4E,Q,uBAGFvH,IAAOuC,UAAS,SAACyB,GAAW,IAChCc,EAAgB,EAAKtG,MAArBsG,YAER,GAAK,EAAKuF,wBAAwBvF,EAAad,GAA/C,CAHwC,MAON,EAAKlF,MAA/B4D,EAPgC,EAOhCA,QAASC,EAPuB,EAOvBA,aAEXiF,EAAmB5D,EAAOlC,QAAQ/E,KAAI,SAACoF,GAAD,MAAa,CAAEtE,KAAM,SAAUX,GAAIiF,MAczES,EAZeC,IAAMC,UACxB5F,GAAGwF,GACHE,MAAM,CAAE/E,KAAM,gBAAiBkF,aAAciB,EAAOpB,OAAS,MAC7DI,UAAU,CAAEnF,KAAM,WAAYoF,MAAOe,EAAO8C,iBAAmB,MAC/DN,OAAmC,IAA5BoB,EAAiBuB,OAAe,KAAO,CAAEtL,KAAM,KAAMyM,QAAS1C,IACrE1E,YAAY,CAAC,CACZhG,GAAIyF,EACJ9E,KAAM,WACNsF,MAAO,GACPC,OAAQ,KAGevD,QAErBwD,EAASC,IAAOC,SAAS3D,YAC5B2K,WAAWvG,EAAOG,iBAAiBqC,QAAO,SAACC,GAAD,OAAaA,EAAMtG,cAC7DqD,QAAQ,CAACZ,IACT/C,QAEHqK,GAAqB7G,OAAOA,MAC3B,M,oCAyBuB,SAACyB,EAAad,GAKtC,OAJ2BA,EAAOlC,QAAQ0I,MAAK,SAACrI,GAC9C,OAAQsI,IAAiB1F,YAAYD,EAAYE,YAAzC,uBAAsE7C,U,gDAnBlF,WAAoB,IACV4B,EAAoB7D,KAAK1B,MAAzBuF,gBAER7D,KAAKwK,YAAY3G,EAAgBC,U,gCAGnC,SAAmB2G,GAAW,IACpB5G,EAAoB7D,KAAK1B,MAAzBuF,gBADoB,EAGkG4G,EAAU5G,gBAAgBC,OAAzI4G,EAHa,EAGpBhI,MAAoCiI,EAHhB,EAGF1G,iBAAgD2G,EAH9C,EAGqChJ,QAAwCiJ,EAH7E,EAG2DjE,iBAH3D,EAIkE/C,EAAgBC,OAAtGpB,EAJoB,EAIpBA,MAAyBzD,EAJL,EAIbgF,iBAAmCrC,EAJtB,EAIsBA,QAA2BiF,EAJjD,EAI+BD,iBAEvDlE,IAAUgI,GAAazL,IAAoB0L,GAAwB7K,IAAOgL,QAAQlJ,EAASgJ,IAAgB/D,IAAiBgE,GAC9H7K,KAAKwK,YAAY3G,EAAgBC,U,oBAYrC,WAAS,IAIHkF,EACAxC,EALG,EACiDxG,KAAK1B,MAArDuF,EADD,EACCA,gBAAiBgG,EADlB,EACkBA,cAAejF,EADjC,EACiCA,YADjC,EAE2B5E,KAAKpB,MAA/B4D,EAFD,EAECA,QAASC,EAFV,EAEUA,aACXsI,GAAalB,EAAcmB,SAAWnB,EAAcmB,OAAOC,MAAMzI,GAUvE,OANKuI,IACH/B,EAAea,EAAcmB,OAAOC,MAAMzI,GAASQ,YAAYP,GAE/D+D,EAASqD,EAAcmB,OAAOxE,QAI9B,kBAAC,GAAD,CAAe3C,gBAAiBA,EACjByF,eAAgByB,EAChBxB,eAAgBvJ,KAAKmK,wBAAwBvF,EAAaf,EAAgBC,QAC1EkF,aAAcA,EACdxC,OAAQA,S,gCAxFQjI,IAAMqC,W,GAArCsJ,G,YAuCe,CACjBrG,gBAAiBhD,IAAUG,OAAOD,WAClC8I,cAAehJ,IAAUG,OAAOD,WAChC6D,YAAa/D,IAAUG,OAAOD,aAmDnB2H,mBAAQwB,GAAwB,CAC7CL,cAAeE,GACfnF,YAAaqF,KAEf,gBAAGrF,EAAH,EAAGA,YAAH,UAAC,MAAD,2BAEEA,YAAaA,EAAYA,iB,yWCnHpB,IAcMsG,GAA+B,SAAC,GAA6G,QAA3GC,gBAA2G,MAAhG,KAAgG,MAA1FC,YAA0F,MAbjJ,CACLC,UAAMzN,EACNwN,KAAM,CACJC,KAAM,aACNhL,SAAKzC,GAEP0N,MAAO,CACLD,KAAM,SACNpP,MAAO,IAK6I,MAAhDqP,MACxG,MAAO,CACLD,KAAMF,EACNC,KAAMA,EACNE,WAJsJ,MAbjJ,CACLD,UAAMzN,EACNwN,KAAM,CACJC,KAAM,aACNhL,SAAKzC,GAEP0N,MAAO,CACLD,KAAM,SACNpP,MAAO,IAK6I,IAQ7IsP,GAA6B,SAAC,GAAmE,QAAjEJ,gBAAiE,MAAtD,KAAsD,MAAhDK,MAC5D,MAAO,CACLH,KAAM,QACNF,SAAUA,EACVK,WAJ0G,MArBrG,CACLH,UAAMzN,EACNwN,KAAM,CACJC,KAAM,aACNhL,SAAKzC,GAEP0N,MAAO,CACLD,KAAM,SACNpP,MAAO,IAaiG,IAWjGwP,GAA0C,SAA1CA,EAA2CC,EAAcC,GACpE,IAAMC,E,kWAAiB,IAAKD,GAQ5B,MANwB,OAApBA,EAAWN,MAAqC,OAApBM,EAAWN,OACzCO,EAAeP,KAAOK,EACtBE,EAAeR,KAAOK,EAAwCC,EAAcE,EAAeR,MAC3FQ,EAAeN,MAAQG,EAAwCC,EAAcE,EAAeN,QAGvFM,GCxCHC,GAAwB,SAAxBA,EAAyBC,GAAgC,IAAhBtF,EAAgB,uDAAP,GACtD,OAAIsF,EAAejD,QACVrB,gBAAMhB,EAAQ,CAACsF,EAAejD,UAGnCiD,EAAeV,KACV5D,gBAAMhB,EAAQqF,EAAsBC,EAAeV,MAAOS,EAAsBC,EAAeR,QAGpGQ,EAAeN,MACVhE,gBAAMhB,EAAQqF,EAAsBC,EAAeN,QAGrDhF,GAGHuF,GAAyB,SAAzBA,EAA0BJ,EAAYK,GAAgC,IAAxBF,EAAwB,uDAAP,GACnE,OAAQH,EAAWN,MACjB,IAAK,SACH,OAAQY,OAAOC,SAASP,EAAW1P,OAAS,GAAK,CAAE4M,QAAS,oCAC9D,IAAK,aAEH,IAAM3L,EAAQ,CAAE2L,QAAS,wBAEzB,IAAK8C,EAAWtL,IACd,OAAOnD,EAGT,IAAMiP,EAAiBH,EAAOlK,MAAK,SAACC,GAAD,OAAOA,EAAE/E,KAAO2O,EAAWtL,OAE9D,OAAQ8L,GAAkBA,EAAc,SAAY,GAAKjP,EAE3D,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACH,MAAO,CACLkO,KAAMW,EAAuBJ,EAAWP,KAAMY,EAAQF,GACtDR,MAAOS,EAAuBJ,EAAWL,MAAOU,EAAQF,IAE5D,IAAK,QACH,MAAO,CAAEN,MAAOO,EAAuBJ,EAAWH,MAAOQ,EAAQF,IACnE,QACE,MAAO,CAAEjD,QAAS,2BAoBTuD,GAhBY,SAACT,EAAYK,GACtC,IAAMK,EAAoB,GAE1B,OAAKV,GAMLU,EAAkBP,eAAiBC,GAAuBJ,EAAYK,GACtEK,EAAkB7F,OAASqF,GAAsBQ,EAAkBP,gBACnEO,EAAkBC,QAA8C,IAApCD,EAAkB7F,OAAOyC,OAE9CoD,IATLA,EAAkBC,SAAU,EAErBD,ICxDEE,GAAuB1L,IAAU2L,MAAM,CAClDnB,KAAMxK,IAAU4L,OAChBrB,KAAMvK,IAAUG,OAChBsK,MAAOzK,IAAUG,SAGN0L,GAA+B7L,IAAU2L,MAAM,CAC1DnB,KAAMxK,IAAU4L,OAChBxQ,MAAO4E,IAAU8L,UAAU,CAAC9L,IAAU+L,OAAQ/L,IAAU4L,WAG7CI,GAAwBhM,IAAU2L,MAAM,CACnDnB,KAAMxK,IAAU4L,OAChBpM,IAAKQ,IAAU4L,SCNXK,GAAmB,SAAC,GAAsD,IAApDnB,EAAoD,EAApDA,WAAYvQ,EAAwC,EAAxCA,SAAU2R,EAA8B,EAA9BA,YAAalN,EAAiB,EAAjBA,WAQ7D,OACE,kBAAC,IAAD,CAAKmN,GAAI,GACP,kBAAC,IAAD,CAAOhQ,GAAG,wBACHnB,KAAK,YACLkB,MAAOgQ,EAAc,YAAc,GACnCpP,KAAK,SACL1B,MAAO6D,IAAOsB,IAAIuK,EAAY,SAC9B1O,QAAS4C,EAAWgJ,QAAU,QAAU,KACxC1L,KAAM0C,EAAWgJ,QACjBzN,SAhBU,SAAC4J,GACpB,IAAM4G,EAAiB9L,IAAOiE,UAAU4H,GAExCC,EAAe3P,MAA+B,KAAvB+I,EAAM5I,OAAOH,MAAe,GAAKmJ,IAA6BJ,EAAM5I,QAC3FhB,EAAS,CAAE6R,WAAYrB,SAiB3BkB,GAAiBI,UAAY,CAC3BvB,WAAYe,GAA6B3L,WACzC3F,SAAUyF,IAAUI,KAAKF,WACzBgM,YAAalM,IAAUK,KAAKH,WAC5BlB,WAAYgB,IAAUG,QAGxB8L,GAAiB1O,aAAe,CAC9ByB,WAAY,IAGCiN,U,4BC3BTK,GAAsB,SAAC,GAQvB,IAdmBC,EAOvBC,EAOI,EAPJA,qBACAC,EAMI,EANJA,gBACAzJ,EAKI,EALJA,gBACA8H,EAII,EAJJA,WACAvQ,EAGI,EAHJA,SACA2R,EAEI,EAFJA,YACAlN,EACI,EADJA,WAEM0N,EAAY,SAACC,GACjB,OAAO3J,EAAgBC,OAAOkI,OAAOlK,MAAK,SAACkK,GAAD,OAAYA,EAAOhP,KAAOwQ,MAOhEC,EAAoB,SAACD,GACzB,OAAOD,EAAUC,IAJV,CAAExQ,GAAI2O,EAAWtL,MAWpBqN,EAAoB,SAAC,GAAgC,IAJtCC,EAAe1M,EAAM2M,EAIbC,EAA8B,EAA9BA,aAAcC,EAAgB,EAAhBA,UACnC9B,EAASlM,IAAOiE,UAAUF,EAAgBC,OAAOkI,QACjD+B,EAAajO,IAAOiE,UAAU0J,EAAkB9B,EAAWtL,MAC3D2N,GAPaL,EAOcI,EAPC9M,EAOW4M,EAPLD,EAOmBE,EAN3D,UAAUhO,IAAO2H,UAAUxG,EAAM0M,EAAa,UAA9C,YAA4D7N,IAAO2H,UAAUmG,EAAOD,EAAcC,OAAS,WAQtFhQ,IAAjBiQ,IACFE,EAAU,SAAYF,QAGNjQ,IAAdkQ,IACFC,EAAWH,MAAQE,GAGrBC,EAAW/Q,GAAKgR,EAEhB,IAAMC,EAAcjC,EAAO3M,WAAU,SAAC0C,GAAD,OAAOA,EAAE/E,KAAO+Q,EAAW/Q,MAE5DiR,GAAe,EACjBjC,EAAOiC,GAAeF,EAEtB/B,EAAOpR,KAAKmT,GAGd,IAAMnC,EAAiB9L,IAAOiE,UAAU4H,GAExCC,EAAevL,IAAM2N,EAErB5S,EAAS,CACP4Q,OAAQA,EACRiB,WAAYrB,KAYVI,EAASuB,EAAU5B,EAAWtL,MAAQ,GAE5C,OACE,kBAAC,IAAD,CAAK2M,GAAI,GACP,kBAAC,IAAD,CAAWhF,UAAU,uBAAuB7M,gBAAiB0E,EAAWgJ,QAAU,QAAU,MACzFkE,GAAe,kBAAC,IAAD,WAChB,kBAAC,IAAD,CAAKnF,UAAU,UACb,kBAAC,IAAD,CAAKoF,GAAI,GACP,kBAAC,IAAD,CAAQpF,UAAU,uBACVK,UAAU,QACV5K,YAAY,kBACZjC,SAnBsB,SAACyS,GACvCH,EAAkB,CAAEG,kBAmBJtQ,SApFK6P,EAoFoBC,EAnFpCD,EACJ5Q,KAAK0R,MACLrR,KAAI,SAACsR,GAAD,MAAS,CAAEpR,MAAO,GAAF,OAAKoR,EAAGC,cAAR,MAA2BnS,MAAOkS,OAkFvC1Q,WAAW,EACXxB,MAAO+P,EAAM,YAEvB,kBAAC,IAAD,CAAKgB,GAAI,GACP,kBAAC,IAAD,CAAQpF,UAAU,6BACVyG,eAAe,EACfpG,UAAU,QACV5K,YAAY,0BACZjC,SAzBmB,SAAC0S,GACpCJ,EAAkB,CAAEI,eAyBJvQ,QAAS+P,EACTrR,MAAO+P,EAAO4B,MACdU,aAAW,MAGtBzO,EAAWgJ,SAAW,kBAAC,IAAD,KAAYhJ,EAAWgJ,YAMtDsE,GAAoBD,UAAY,CAC9BG,qBAAsBxM,IAAUC,MAAMC,WACtC8C,gBAAiBhD,IAAUG,OAAOD,WAClC4K,WAAYkB,GAAsB9L,WAClCuM,gBAAiBzM,IAAUC,MAAMC,WACjC3F,SAAUyF,IAAUI,KAAKF,WACzBgM,YAAalM,IAAUK,KAAKH,WAC5BlB,WAAYgB,IAAUG,QAGxBmM,GAAoB/O,aAAe,CACjCyB,WAAY,IAGCsN,U,qXCzHf,IAAMoB,GAAmBtT,UAAOuT,IAAV,4FAAGvT,EAAW,gBAAGwT,EAAH,EAAGA,MAAH,OAAeC,cAAd,CAAD,qCAErBD,EAAME,MAAMC,KAAKC,SAG1BC,GAAwB7T,mBAAO,cAAG8T,eAAH,IAAsBzQ,EAAtB,gCAAkC,kBAAC,IAAcA,MAA3D,iGAAGrD,CAAH,mDAEV,SAACqD,GAAD,OAAYA,EAAMyQ,eAAiB,GAAK,SAInDC,GAA0B,SAAC,GAAgD,IAA9CC,EAA8C,EAA9CA,YAAa9D,EAAiC,EAAjCA,SAAU+D,EAAuB,EAAvBA,iBACxD,OACE,kBAAC,IAAD,CAAKlC,GAAI,IACP,kBAACuB,GAAD,CAAkB3G,UAAU,eACzBqH,GACC,kBAAC,IAAD,KACE,kBAAC,IAAYE,OAAb,KAAqBF,EAArB,MAGJ,kBAACH,GAAD,CAAuBC,gBAAiBE,GACtC,kBAAC,IAAD,CAAQrH,UAAU,mBACVK,UAAU,QACV2G,KAAK,QACLxT,SAAU8T,EACV3R,QAAS,CACP,CAAER,MAAO,MAAOd,MAAO,MACvB,CAAEc,MAAO,MAAOd,MAAO,OAEzBA,MAAOkP,EACP1N,WAAW,KAErB,kBAAC,IAAD,KACE,kBAAC,IAAY0R,OAAb,qCAOVH,GAAwB9B,UAAY,CAClC+B,YAAapO,IAAU4L,OACvBtB,SAAUtK,IAAU4L,OAAO1L,WAC3BmO,iBAAkBrO,IAAUI,KAAKF,YAGnCiO,GAAwB5Q,aAAe,CACrC6Q,YAAa,IAGAD,U,iNChDf,IAAMI,GAAoB,SAAC9Q,GAAU,IAC3BqN,EAAiDrN,EAAjDqN,WAAY0D,EAAqC/Q,EAArC+Q,MAAOC,EAA8BhR,EAA9BgR,cAAezP,EAAevB,EAAfuB,WAE1C,OACE,oCACE,kBAAC,GAAD,MAAoCvB,EAApC,CACgCqN,WAAYA,EAAWP,KACvBvL,WAAYA,EAAWuL,KACvBmE,OAAQ5D,EACRvQ,SAAUkU,EAAc,QACxBD,MAAOA,EAAQ,KAC/C,kBAAC,IAAD,MACA,kBAAC,GAAD,MAAoC/Q,EAApC,CACgCqN,WAAYA,EAAWL,MACvBzL,WAAYA,EAAWyL,MACvBiE,OAAQ5D,EACRvQ,SAAUkU,EAAc,SACxBD,MAAOA,EAAQ,EACftC,aAAa,OAKnDqC,GAAkBlC,UAAY,CAC5BvB,WAAYY,GAAqBxL,WACjCwO,OAAQhD,GACR8C,MAAOxO,IAAU+L,OAAO7L,WACxB3F,SAAUyF,IAAUI,KAAKF,WACzBuO,cAAezO,IAAUI,KAAKF,WAC9BlB,WAAYgB,IAAUG,QAGxBoO,GAAkBhR,aAAe,CAC/BmR,YAAQ3R,EACRiC,WAAY,IAGCuP,U,iNCnCf,IAAMI,GAAuB,SAAClR,GAAU,IAC9BqN,EAAwErN,EAAxEqN,WAAY0D,EAA4D/Q,EAA5D+Q,MAAOC,EAAqDhR,EAArDgR,cAAelU,EAAsCkD,EAAtClD,SAAU2R,EAA4BzO,EAA5ByO,YAAalN,EAAevB,EAAfuB,WASjE,OACE,kBAAC,IAAD,CAAKmN,GAAI,IACP,kBAAC,IAAD,CAAKpF,UAAU,UACb,kBAAC,GAAD,MAAoCtJ,EAApC,CACgCqN,WAAYA,EAAWP,KACvBvL,WAAYA,EAAWuL,KACvBmE,OAAQ5D,EACRvQ,SAAUkU,EAAc,QACxBD,MAAOA,EAAQ,KAE/C,kBAAC,IAAD,CAAKrC,GAAI,GACP,kBAAC,IAAD,CAAWhF,UAAU,wBAAwB7M,gBAAiB0E,EAAWgJ,QAAU,QAAU,MAC1FkE,GAAe,kBAAC,IAAD,WAChB,kBAAC,IAAD,CAAQ/P,GAAG,wBACHiL,UAAU,QACV5K,YAAY,mBACZjC,SAvBqB,SAACsQ,GACtC,IAAME,EAAiB9L,IAAOiE,UAAU4H,GAExCC,EAAeP,KAAOK,EACtBtQ,EAAS,CAAE6R,WAAYrB,KAoBPrO,QAAS,CACP,CAAER,MAAO,IAAKd,MAAO,KACrB,CAAEc,MAAO,KAAMd,MAAO,MACtB,CAAEc,MAAO,IAAKd,MAAO,KACrB,CAAEc,MAAO,KAAMd,MAAO,MACtB,CAAEc,MAAO,IAAKd,MAAO,OAEvBA,MAAO0P,EAAWN,KAClB5N,WAAW,IAClBoC,EAAWgJ,SAAW,kBAAC,IAAD,KAAYhJ,EAAWgJ,WAGlD,kBAAC,GAAD,MAAoCvK,EAApC,CACgCqN,WAAYA,EAAWL,MACvBzL,WAAYA,EAAWyL,MACvBiE,OAAQ5D,EACRvQ,SAAUkU,EAAc,SACxBD,MAAOA,EAAQ,QAMvDG,GAAqBtC,UAAY,CAC/BvB,WAAYY,GAAqBxL,WACjCsO,MAAOxO,IAAU+L,OAAO7L,WACxB3F,SAAUyF,IAAUI,KAAKF,WACzBuO,cAAezO,IAAUI,KAAKF,WAC9BgM,YAAalM,IAAUK,KAAKH,WAC5BlB,WAAYgB,IAAUG,QAGxBwO,GAAqBpR,aAAe,CAClCyB,WAAY,IAGC2P,U,iNC5Df,IAAMC,GAAQxU,UAAOuT,IAAV,6EAAGvT,CAAH,wBAILyU,GAAkB,SAACpR,GAAU,IACzBqN,EAA2DrN,EAA3DqN,WAAY0D,EAA+C/Q,EAA/C+Q,MAAOjU,EAAwCkD,EAAxClD,SAAUkU,EAA8BhR,EAA9BgR,cAAezP,EAAevB,EAAfuB,WAUpD,OACE,oCACE,kBAAC,GAAD,CAAyBsL,SAAUQ,EAAWR,SAAU+D,iBAV/B,SAACxD,GAC5B,IAAME,EAAiB7H,oBAAU4H,GAEjCC,EAAeT,SAAWO,EAC1BE,EAAeJ,MAAQC,GAAwCC,EAAcE,EAAeJ,OAC5FpQ,EAAS,CAAE6R,WAAYrB,OAMrB,kBAAC,IAAD,MACA,kBAAC6D,GAAD,KACE,kBAAC,GAAD,MAAoCnR,EAApC,CACgCqN,WAAYA,EAAWH,MACvB3L,WAAYA,EAAW2L,MACvB+D,OAAQ5D,EACRvQ,SAAUkU,EAAc,SACxBD,MAAOA,EAAQ,QAMvDK,GAAgBxC,UAAY,CAC1BvB,WAAYY,GAAqBxL,WACjCsO,MAAOxO,IAAU+L,OAAO7L,WACxB3F,SAAUyF,IAAUI,KAAKF,WACzBuO,cAAezO,IAAUI,KAAKF,WAC9BlB,WAAYgB,IAAUG,QAGxB0O,GAAgBtR,aAAe,CAC7ByB,WAAY,IAGC6P,U,iBCtEX,GAAU,CAEd,OAAiB,OACjB,WAAoB,GAML,IAJF,KAAI,KAAS,IAIX,KAAQ3U,QAAU,I,itECyB3B4U,G,uaAoBI,CACNC,yBAAqBhS,I,4CAGW,WAAM,IAC9BgS,EAAwB,EAAKhR,MAA7BgR,oBAER,GAAIA,EACF,OAAOA,EAJ6B,IAO9BjE,EAAe,EAAKrN,MAApBqN,WAER,MAA4B,OAApBA,EAAWN,MAAqC,OAApBM,EAAWN,KAAgBM,EAAWN,KAAO,Q,+BAG9D,SAACM,EAAYkE,GAChC,IAAKlE,EACH,OAAOkE,EAGT,IAAMlU,EAA0B,UAApBgQ,EAAWN,KAAmB,WAAa,OAEvD,MAAwD,OAAjDvL,IAAOsB,IAAIuK,EAAYhQ,EAAKkU,GAA4B,KAAO,Q,gCAGlD,WAAM,MACe,EAAKvR,MAAtCqN,EADkB,EAClBA,WAAYvQ,EADM,EACNA,SAAUmU,EADJ,EACIA,OACxBM,EAAkB,EAAKC,kCACvBC,EAAe,EAAKC,mBAAmBT,EAAQM,GAGrDzU,EAAS,CAAE6R,WAFY/B,GAA6B,CAAEC,SAAU4E,EAAc3E,KAAMO,S,2BAKrE,WAAM,MACoB,EAAKrN,MAAtCqN,EADa,EACbA,WAAYvQ,EADC,EACDA,SAAUmU,EADT,EACSA,OACxBM,EAAkB,EAAKC,kCACvBC,EAAe,EAAKC,mBAAmBT,EAAQM,GAE/CI,EAAkB1E,GAA2B,CAAEJ,SADd,OAAjB4E,EAAwB,KAAO,OAIrD3U,EAAS,CAAE6R,WAFY/B,GAA6B,CAAEC,SAAU4E,EAAc3E,KAAMO,EAAYL,MAAO2E,S,mCAKhF,YAGvB7U,EAFqB,EAAKkD,MAAlBlD,UAEC,CAAE6R,WAAY,U,8BAGL,SAACiD,GACnB,OAAO,SAACC,GAAY,MACe,EAAK7R,MAA9BqN,EADU,EACVA,WAAYvQ,EADF,EACEA,SAEpB,GAAKgV,OAAOC,KAAKF,GAASG,SAAS,cAAnC,CAMA,IACIC,EADElI,EAAS8H,EAAQlD,WAIvB,GAAe,OAAX5E,EAGAkI,EAFa,UAAXL,EAEW,KAGAvE,EAAuB,SAAXuE,EAAoB,QAAU,aAEpD,GAAe,UAAXA,GAAsC,UAAhB7H,EAAOgD,KAEtCkF,EAAalI,MACR,CAEL,IAAMuD,EAAiB9L,IAAOiE,UAAU4H,GAExCC,EAAesE,GAAU7H,EACzBkI,EAAa3E,EAGfxQ,EAAS,SAAK+U,GAAN,IAAelD,WAAYsD,UA5BjCnV,EAAS+U,O,iCAgCQ,SAACzE,GAAiB,MACN,EAAKpN,MAA9BqN,EAD+B,EAC/BA,WAAYvQ,EADmB,EACnBA,SAEpB,EAAK4D,SAAS,CAAE4Q,oBAAqBlE,IAGrCtQ,EAAS,CAAE6R,WAFYxB,GAAwCC,EAAcC,Q,qCAK/E,WAAS,IAEH6E,EAFG,EACqCxQ,KAAK1B,MAAzCqN,EADD,EACCA,WAAY4D,EADb,EACaA,OAAQxC,EADrB,EACqBA,YAG5B,OAAQpB,EAAWN,MACjB,IAAK,aACHmF,EAAsB,kBAAC,GAAD,MAAyBxQ,KAAK1B,MAA9B,CAAqCiR,OAAQA,KACnE,MACF,IAAK,SACHiB,EAAsB,kBAAC,GAAD,MAAsBxQ,KAAK1B,MAA3B,CAAkCiR,OAAQA,KAChE,MACF,IAAK,QACHiB,EAAsB,kBAAC,GAAD,MAAqBxQ,KAAK1B,MAA1B,CAAiCgR,cAAetP,KAAKyQ,kBAAmBlB,OAAQA,KACtG,MACF,IAAK,KACL,IAAK,KACHiB,EACE,kBAAC,GAAD,MAAuBxQ,KAAK1B,MAA5B,CACmBgR,cAAetP,KAAKyQ,kBACpBlB,OAAQA,KAG7B,MACF,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,QACEiB,EACE,oCACE,kBAAC,GAAD,MAA0BxQ,KAAK1B,MAA/B,CAAsCgR,cAAetP,KAAKyQ,kBAAmBlB,OAAQA,KACrF,kBAAC,IAAD,CAAKvC,GAAI,GACP,kBAAC,IAAD,KACE,yBAAKpF,UAAWmF,EAAcnD,GAAO8G,wBAAqB9S,GACxD,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAQsC,OAAO,KAAKC,QAASH,KAAK2Q,wBAAwB,kBAAC,IAAD,CAAM9U,KAAK,QAAQ+U,YAAU,KACvF,kBAAC,IAAD,CAAQ1Q,OAAO,KAAKC,QAASH,KAAK6Q,qBAAqB,kBAAC,IAAD,CAAMhV,KAAK,OAAO+U,YAAU,KACnF,kBAAC,IAAD,CAAQ1Q,OAAO,KAAKC,QAASH,KAAK8Q,gBAAlC,kBAShB,OAAKvB,GAA8B,UAApB5D,EAAWN,KAYnBmF,EAVH,oCACE,kBAAC,GAAD,CAAyBvB,YAAY,qBACZ9D,SAAUnL,KAAK8P,kCACfZ,iBAAkBlP,KAAK+Q,uBAChD,kBAAC,IAAD,MACCP,Q,gCA5KkCjS,IAAMqC,W,GAA7C+O,G,YACe,CACjB9L,gBAAiBhD,IAAUG,OAAOD,WAClClB,WAAYgB,IAAUG,OACtBsM,gBAAiBzM,IAAUC,MAAMC,WACjCsM,qBAAsBxM,IAAUC,MAAMC,WACtC3F,SAAUyF,IAAUI,KAAKF,WACzB4K,WAAYY,GAAqBxL,WACjCwO,OAAQhD,GACR8C,MAAOxO,IAAU+L,OACjBG,YAAalM,IAAUK,O,GAVrByO,G,eAakB,CACpBN,MAAO,EACPE,YAAQ3R,EACRmP,aAAa,EACblN,WAAY,KAoKD8P,UCvMTqB,GAA8B,SAAC,GAA2B,IAAzB/D,EAAyB,EAAzBA,WAAYjB,EAAa,EAAbA,OA4CjD,OA3CyB,SAAnBiF,EAAoBtF,GACxB,IAAKA,EACH,MAAO,0BAGT,OAAQA,EAAWN,MACjB,IAAK,SACH,OAAOM,EAAW1P,MACpB,IAAK,aAEH,IAAMkQ,EAAiBH,EAAOlK,MAAK,SAACC,GAAD,OAAOA,EAAE/E,KAAO2O,EAAWtL,OAE9D,OAAQ8L,GAAkBA,EAAc,SACpC,6BAAMA,EAAc,SAApB,IAAgCA,EAAeyB,MAA/C,KACA,oDACN,IAAK,KACL,IAAK,KACH,OACE,oCACGqD,EAAiBtF,EAAWP,MAAO,IACpC,4BAAQxD,UAAU,aAAiC,OAApB+D,EAAWN,KAAgB,MAAQ,MAAe,IAChF4F,EAAiBtF,EAAWL,QAGnC,IAAK,QACH,OAAO,kCAAQ2F,EAAiBtF,EAAWH,OAApC,KACT,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACH,OACE,oCACGyF,EAAiBtF,EAAWP,MAAO,IACpC,4BAAQxD,UAAU,gBAAgB+D,EAAWN,KAAM,KAClD4F,EAAiBtF,EAAWL,QAGnC,QACE,MAAO,2BAIN2F,CAAiBhE,EAAWtB,aAGrCqF,GAA4B9D,UAAY,CACtCD,WAAYpM,IAAUG,OAAOD,WAC7BiL,OAAQnL,IAAUC,MAAMC,YAGXiQ,UC9CTE,GAAcjW,kBAAOkW,KAAV,oGAAGlW,CAAH,sBAIXmW,GAAenW,kBAAOoW,KAAV,qGAAGpW,CAAH,+CAKZqW,GAAmC,SAAChT,GAAU,IAC1C2O,EAAyF3O,EAAzF2O,WAAYjB,EAA6E1N,EAA7E0N,OAAQuF,EAAqEjT,EAArEiT,qBAAsBC,EAA+ClT,EAA/CkT,qBAAsBC,EAAyBnT,EAAzBmT,qBAExE,OACE,6BACE,kBAACP,GAAD,CAAaQ,OAAO,qBACjBH,EAAqBjF,QAClB,uBAAG1E,UAAU,gBAAe,kBAAC,IAAD,CAAM/L,KAAK,iBAAvC,uBAEA,uBAAG+L,UAAU,eACX,kBAAC,IAAD,CAAM/L,KAAK,yBADb,0BAEE,kBAACuV,GAAD,CAAclR,OAAO,SAASC,QAASsR,GACpCD,EAAuB,cAAgB,gBAIhD,uCAXF,IAWkB,kBAAC,GAAD,CAA6BxF,OAAQA,EAAQiB,WAAYA,OAMjFqE,GAAiCpE,UAAY,CAC3CD,WAAYpM,IAAUG,OAAOD,WAC7BiL,OAAQnL,IAAUC,MAAMC,WACxBwQ,qBAAsB1Q,IAAUG,OAChCwQ,qBAAsB3Q,IAAUK,KAChCuQ,qBAAsB5Q,IAAUI,KAAKF,YAGvCuQ,GAAiClT,aAAe,CAC9CmT,qBAAsB,CAAEjF,SAAS,GACjCkF,sBAAsB,GAGTF,U,6sECtCf,IAAMK,GbdG,CACLtG,UAAMzN,EACNwN,KAAM,CACJC,KAAM,aACNhL,SAAKzC,GAEP0N,MAAO,CACLD,KAAM,SACNpP,MAAO,IaQP2V,GAA0B,SAA1BA,EAA2BjG,GAAyB,IAAbkG,EAAa,uDAAP,GAKjD,MAJwB,eAApBlG,EAAWN,MACbwG,EAAIjX,KAAK+Q,EAAWtL,KAGlBsL,EAAWP,MAAQO,EAAWL,MACzBsG,EAAwBjG,EAAWP,MAAMzG,OAAOiN,EAAwBjG,EAAWL,QAGxFK,EAAWH,MACNoG,EAAwBjG,EAAWH,OAGrCqG,GAGHC,GAAc7W,kBAAO8W,KAAV,6FAAG9W,CAAH,oCAIX+W,G,uaASI,CACNR,sBAAsB,I,uCAGK,WAAM,IACzBA,EAAyB,EAAK5S,MAA9B4S,qBAER,EAAKxS,SAAS,CAAEwS,sBAAuBA,O,yBAG1B,SAACrB,GAAY,MACY,EAAK7R,MAAnCuF,EADkB,EAClBA,gBAAiBzI,EADC,EACDA,SAEzB,GAAKgV,OAAOC,KAAKF,GAASG,SAAS,cAAnC,CAMA,IAEIvC,EAFEkE,EAAiB9B,EAAQlD,WAI/B,GAAIgF,EAAgB,CAElB,IAAMC,EAAmBN,GAAwBK,GAEjDlE,GAAcoC,EAAQnE,QAAUnI,EAAgBC,OAAOkI,QAAQ1F,QAAO,SAACvE,GAAD,OAAOmQ,EAAiB5B,SAASvO,EAAE/E,YAEzG+Q,EAAa,GAGf3S,EAAS,SACJ+U,GADG,IAENlD,WAAY,CAAEtB,WAAYsG,GAC1BjG,OAAQ+B,UArBR3S,EAAS+U,M,qCAyBb,WAAS,IACCqB,EAAyBxR,KAAKpB,MAA9B4S,qBADD,EAEiCxR,KAAK1B,MAArCuF,EAFD,EAECA,gBAAiBhE,EAFlB,EAEkBA,WACnB8L,EAAa9H,EAAgBC,OAAOmJ,WAAWtB,YAAcgG,GAC7DJ,EAAuBnF,GAAmBT,EAAY9H,EAAgBC,OAAOkI,QAEnF,OACE,oCACE,wBAAIpE,UAAWC,IAAajL,OAA5B,gCACCiD,EAAW2G,OAAOyG,YACjB,kBAAC6E,GAAD,CAAa7U,QAAQ,UACnB,4BAAI,kBAAC,IAAD,CAAMpB,KAAK,yBAAf,iBACA,2BAAIuF,cAAIvB,EAAY,0BAIxB,kBAAC,IAAD,KACE,kBAAC,GAAD,IAAgC8L,WAAYA,GACR3L,KAAK1B,MADzC,CAEgCuB,WAAY2R,EAAuBD,EAAqBzF,eAAiB,GACzE1Q,SAAU4E,KAAKmS,iBAGjD,kBAAC,GAAD,CAAkClF,WAAYpJ,EAAgBC,OAAOmJ,WACnCjB,OAAQnI,EAAgBC,OAAOkI,OAC/BuF,qBAAsBA,EACtBC,qBAAsBA,EACtBC,qBAAsBzR,KAAKoS,mC,gCA3E7B7T,IAAMqC,W,GAAxCoR,G,YACe,CACjBnO,gBAAiBhD,IAAUG,OAAOD,WAClClB,WAAYgB,IAAUG,OAAOD,WAC7BuM,gBAAiBzM,IAAUC,MAAMC,WACjCsM,qBAAsBxM,IAAUC,MAAMC,WACtC3F,SAAUyF,IAAUI,KAAKF,aA2EdiR,U,ggECxGTK,G,8aAEWvS,IAAO4B,SACpB,SAAC4Q,GACC,OAAOA,EACJ9V,MAAK,SAAC+V,EAAKC,GAAN,OAAcC,aAAeF,EAAI1W,KAAM2W,EAAI3W,SAChDgB,KAAI,SAAC6V,GACJ,MAAO,CACL3V,MAAO,GAAF,OAAK2V,EAAU7W,KAAf,cAAyB6W,EAAUzW,MAAM0B,KAAKA,MACnD1B,MAAOyW,EAAU7W,YAIzB,SAACyW,GAAD,OAAgBA,EAAWzV,KAAI,SAAC8V,GAAD,OAAQA,EAAG9W,QAAMuG,KAAK,S,kCAW/B,SAACiG,GAAW,MACI,EAAK/J,MAAnCuF,EAD0B,EAC1BA,iBAGRzI,EAJkC,EACTA,UAGhB,SAFU,SAAKyI,EAAgBC,QAAWuE,O,gCAK/B,SAAChD,GACrB,EAAKuN,sBAAsB,CAAEC,SAAUxN,O,qCAGzC,WAAS,aACsErF,KAAK1B,MAA1EwU,EADD,EACCA,cAAezF,EADhB,EACgBA,qBAAsBxJ,EADtC,EACsCA,gBAAiBhE,EADvD,EACuDA,WACxDyN,EAAkBtN,KAAK+S,aAAaD,GAE1C,OACE,kCACE,wBAAIlL,UAAWC,IAAajL,OAA5B,eACA,mLAIA,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAKoW,GAAI,GACP,kBAAC,IAAD,CAAWhL,UAAU,YACnB,kBAAC,IAAD,0BAAgC,2BAAOJ,UAAU,cAAjB,eAChC,kBAAC,IAAD,CAAa5K,GAAG,WACHiL,UAAU,QACV7M,SAAU,SAAC8M,GAAD,OAAc,EAAK+K,oBAAiC,KAAb/K,EAAkB,GAAKA,EAASE,MAAM,OACvF7K,QAAS+P,EACTe,eAAe,EACfpS,MAAO6D,IAAO2H,UAAU5D,EAAgBC,OAAO+O,SAAU,IAAIzQ,KAAK,KAClEkM,aAAW,IACxB,kBAAC,IAAD,sGAEG,IAAI,uCAAe,6BAFtB,8KAIsE,0CAJtE,iDAKmC,wCAAa,2CALhD,gDAYN,6BAEA,kBAAC,GAAD,CAA2BzK,gBAAiBA,EACjBhE,WAAYA,EACZyN,gBAAiBA,EACjBD,qBAAsBA,EACtBjS,SAAU4E,KAAK4S,8B,gCA3EpBrU,IAAMqC,W,GAA9ByR,G,YAgBe,CACjBxO,gBAAiBhD,IAAUG,OAAOD,WAClClB,WAAYgB,IAAUG,OAAOD,WAC7B+R,cAAejS,IAAUC,MAAMC,WAC/BsM,qBAAsBxM,IAAUC,MAAMC,WACtC3F,SAAUyF,IAAUI,KAAKF,aA4DdsR,U,65DCpFf,IAAMa,GACS,EADTA,GAEI,EAWJC,GAA2B,CAC/BN,SAAU,GACV7G,OAAQ,GACRiB,WAAY,IAGRmG,G,wQAgBJ,WAAY9U,GAAO,O,4FAAA,eACjB,cAAMA,IADW,mBAaD,SAAC3C,EAAKM,IAGtBb,EAFqB,EAAKkD,MAAlBlD,UAECO,EAAKM,MAhBG,6BAmBA,SAAC+I,GAClB,IAAMqO,EAAc,GACdC,EAAoBrH,OAAO7G,IAA6BJ,EAAM5I,SAIpE,GAFAiX,EAAYrO,EAAM5I,OAAOP,MAAQyX,EAE7BA,IAAsBJ,GAAuB,KACvCrP,EAAoB,EAAKvF,MAAzBuF,gBAGF0P,EAA4B,GAElCnD,OAAOC,KAAK8C,IAA0B/O,SAAQ,SAACzI,GAC7C4X,EAA0B5X,GAAOkI,EAAgBC,OAAOnI,MAG1D0X,EAAYE,0BAA4BA,EAExC,IAAMC,EAAa,SAAK3P,EAAgBC,QAAWqP,IAEnD,EAAKhO,gBAAgB,SAAUqO,OAC1B,KAEGD,EAA8B,EAAK3U,MAAnC2U,0BAER,GAAIA,EAA2B,KAEvBC,EAAa,SADS,EAAKlV,MAAzBuF,gBACgCC,QAAWyP,GAEnD,EAAKpO,gBAAgB,SAAUqO,GAC/BH,EAAYE,+BAA4B3V,GAI5C,EAAKoB,SAASqU,MArDG,yBAwDJ,SAACrO,GAAU,IAChBnJ,EAASmJ,EAAM5I,OAAfP,KAER,EAAKsJ,gBAAgBtJ,EAAMuJ,IAA6BJ,EAAM5I,YA3D7C,MAGwBkC,EAAMuF,gBAAgBC,OAAvD+O,EAHS,EAGTA,SAAU7G,EAHD,EAGCA,OAAQiB,EAHT,EAGSA,WACpBtB,EAAa7L,IAAOsB,IAAI6L,EAAY,aAAc,IAClDwG,EAAwB3T,IAAOC,QAAQ8S,IAAa/S,IAAOC,QAAQiM,IAAWlM,IAAOC,QAAQ4L,GAC/FuH,GAAwBA,GANX,OAQjB,EAAKtU,MAAQ,CACX8U,cAAeD,GATA,E,mCA8DnB,WAAS,IACCC,EAAkB1T,KAAKpB,MAAvB8U,cADD,EAEmF1T,KAAK1B,MAAvFwU,EAFD,EAECA,cAAea,EAFhB,EAEgBA,YAAa9P,EAF7B,EAE6BA,gBAAiBjC,EAF9C,EAE8CA,QAAS/B,EAFvD,EAEuDA,WAAY+E,EAFnE,EAEmEA,YAE1E,OACE,oCACE,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAKoI,GAAI,EAAGgG,GAAI,GACd,kBAAC,GAAD,CAAYnP,gBAAiBA,EACjBhE,WAAYA,EACZ+B,QAASA,EAAQ0E,QAAO,SAACvE,GAAD,OAAOA,EAAE6R,eACjChP,YAAaA,EACbxJ,SAAU4E,KAAKmF,kBAE3B,kBAAC,IAAD,KACE,kBAAC,IAAD,2CACA,kBAAC,IAAD,CAAOnI,GAAG,cACHnB,KAAK,gBACLI,MAAOiX,GACP1K,QAASkL,IAAkBR,GAC3B9X,SAAU4E,KAAK6T,kBAJtB,sBAOA,kBAAC,IAAD,CAAO7W,GAAG,mBACHnB,KAAK,gBACLI,MAAOiX,GACP1K,QAASkL,IAAkBR,GAC3B9X,SAAU4E,KAAK6T,kBAJtB,gDASJ,kBAAC,IAAD,CAAK7G,GAAI,EAAG8G,SAAU,GACpB,kBAAC,GAAD,CAAwBjQ,gBAAiBA,MAG5C6P,IAAkBR,IACjB,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAKlG,GAAI,IACP,kBAAC,GAAD,CAAiBnJ,gBAAiBA,EACjBhE,WAAYA,EACZiT,cAAeA,EACfzF,qBAAsBsG,EAAYI,sBAClC3Y,SAAU4E,KAAKmF,0B,gCAzHV5G,IAAMqC,W,GAApCwS,G,YACe,CACjBvP,gBAAiBhD,IAAUG,OAAOD,WAClClB,WAAYgB,IAAUG,OAAOD,WAC7B+R,cAAejS,IAAUC,MAAMC,WAC/B4S,YAAa9S,IAAUG,OAAOD,WAC9Ba,QAASf,IAAUC,MAAMC,WACzB3F,SAAUyF,IAAUI,KAAKF,WACzB6D,YAAa/D,IAAUG,OAAOD,a,GAR5BqS,G,yBAdsB,CAC1B1Q,MAAO,GACPuB,iBAAkB,GAClBrC,QAAS,GACTgF,iBAAkB,IAClBF,iBAAkB,MAsBbyM,KAqHQC,U,izDC3JPY,GAAiB7S,IAAiBC,IAAI,WAAtC4S,aAEO,SAASC,GAAYC,GAAsC,IAApBC,EAAoB,uDAAJ,GAC9DC,EAAuBF,EAAiBG,aAAeH,EAAiBrY,MAAQ,YAEhFyY,EAHkE,gCAItE,WAAYhW,GAAO,yBACjB,cAAMA,IAEDM,MAAQ,CACXgD,aAAShE,GAJM,EAJmD,4CAYtE,WAAoB,WAClBoW,GAAaO,MAAK,SAAC3S,GACjB,IAAI4S,EAAkB5S,EAAQ0E,QAAO,SAACvE,GAAD,OAAOA,EAAE6R,eAEjB,IAAzBO,EAAclL,SAChBuL,EAAkB5S,EAAQ0E,QAAO,SAACvE,GAAD,OAAQoS,EAAc7D,SAASvO,EAAE/E,QAGpE,EAAKgC,SAAS,CAAE4C,QAAS4S,SApByC,oBAwBtE,WAAS,IACC5S,EAAY5B,KAAKpB,MAAjBgD,QAER,OAAKA,EAIE,kBAACsS,EAAD,IAAkBtS,QAASA,GAAa5B,KAAK1B,QAH3C,kBAAC,KAAD,CAAShC,KAAK,uCA5B6C,GAG9CiC,IAAMqC,WAkChC,OAFA0T,EAAYD,YAAZ,sBAAyCD,EAAzC,KAEOE,E,64DCjCHG,G,kWAUJ,WAAS,MAC+BzU,KAAK1B,MAAnCgU,EADD,EACCA,WAAeoC,EADhB,qBAIP,MAF4C,WAA1B,GAAOpC,EAAWqC,KAG3B,kBAAC,KAAD,CAASrY,KAAK,gDAGhB,kBAAC,GAAD,IAAuBwW,cAAeR,EAAWqC,IAAIC,QAAYF,S,gCAlB/BnW,IAAMqC,W,GAA7C6T,G,kBACe,CACjBI,OAAQhU,IAAUiU,MAAM,CAAC,SAAU,SAAS/T,WAC5ClB,WAAYgB,IAAUG,OAAOD,WAC7B8C,gBAAiBhD,IAAUG,OAAOD,WAClCuR,WAAYzR,IAAUG,OAAOD,WAC7B3F,SAAUyF,IAAUI,KAAKF,WACzB6D,YAAa/D,IAAUG,OAAOD,Y,qGAenB2H,mBAAQuL,GAAYQ,IAAiC,CAClEnC,WAAYyC,M,mDC/CV,GAAU,CAEd,OAAiB,OACjB,WAAoB,GAML,IAJF,KAAI,KAAS,IAIX,KAAQha,QAAU,I,47CCsB3Bia,G,mbAOe,SAAClR,GAAW,IACXmR,EAAgCnR,EAA1C+O,SAAmB7G,EAAuBlI,EAAvBkI,OAAQiB,EAAenJ,EAAfmJ,WAEnC,OAAQnN,IAAOC,QAAQkV,MAClBhI,GAAcnN,IAAOC,QAAQkN,IAAyC,OAA1BA,EAAWtB,aACzD7L,IAAOC,QAAQiM,GACd,SAAW,iB,6BAGE,SAAChK,GAClB,MAA0B,iBAAfA,EACF,0BAAMrG,IAAKqG,GAAY,4BAAKA,IAInC,0BAAMrG,IAAKqG,EAAWhF,IACpB,kBAAC,KAAD,CAAMkY,GAAIC,KAAOC,cAAcpT,EAAWhF,KAAMgF,EAAWpF,W,0BAKjD,SAAC+E,EAAW0T,GAAmC,IACrDzT,EAAY,EAAKtD,MAAjBsD,QAER,KAAMD,GAAkC,IAArBA,EAAUsH,SAAiBoM,EAA+BpM,QAAU,EACrF,MAAO,+CAGT,IAAMqM,EAAUD,EAA+BpM,OAAS,EACpD,kBAAC,IAAD,CAAOhM,QAAQ,WAAf,kCAAwD,6BAAOoY,EAA+BjT,KAAK,OACnG,KAEEmT,EAAkB5T,EACrB9E,KAAI,SAACG,GAAD,OAAQ4E,EAAQE,MAAK,SAACC,GAAD,OAAOA,EAAE/E,KAAOA,MAAOA,KAChDR,MAAK,SAAC0F,EAAIC,GAAL,OAAYxF,YAAsBuF,EAAGtF,OAASsF,EAAIC,EAAGvF,OAASuF,MACnEtF,IAAI,EAAK2Y,kBAEZ,OACE,oCACGF,EACAC,M,kCAKiB,SAACtW,GACvB,GAAIA,EAAgBqL,MAAK,SAAChL,GAAD,OAAOA,EAAEW,aAAY,CAC5C,IAAMwV,EAAuBxW,EAAgBqH,QAAO,SAAChH,GAAD,OAAOA,EAAEW,aAC1DpD,KAAI,SAACyC,GAAD,OAAOA,EAAEzD,QACbuG,KAAK,MAER,OACE,kBAAC,IAAD,CAAOnF,QAAQ,UACb,kBAAC,IAAD,CAAMpB,KAAK,yBADb,2CACoF4Z,GAKxF,OAAO,4BAAKxW,EAAgBpC,KAAI,SAACyC,GAAD,OAAOA,EAAEzD,QAAMuG,KAAK,U,qCAGtD,WAAS,MACyBpC,KAAK1B,MAA7BwF,EADD,EACCA,OAAQc,EADT,EACSA,YAEdlC,EASEoB,EATFpB,MACkBzD,EAQhB6E,EARFG,iBACArC,EAOEkC,EAPFlC,QACkB+E,EAMhB7C,EANF8C,iBACkBH,EAKhB3C,EALF4C,iBACegP,EAIb5R,EAJF2E,cACUwM,EAGRnR,EAHF+O,SACA7G,EAEElI,EAFFkI,OACAiB,EACEnJ,EADFmJ,WAGIyG,EAAgB1T,KAAK2V,iBAAiB7R,GAEtC+C,EAAeC,YAAuBH,EAAgBpF,IACtDwF,EAAeD,YAAuBL,EAAgBlF,IAEtDqU,EAAqBhU,EAAQ0E,QAAO,SAACvE,GAAD,OAAO8C,YAAYD,EAAYE,YAAb,uBAA0C/C,OAChGsT,EAAiCzT,EAAQ0E,QAAO,SAACvE,GAAD,OAAQ6T,EAAmBtF,SAASvO,MAEpFsK,EAAoBD,GAAmBa,EAAWtB,WAAYK,GAEpE,OACE,4BACE,oCACA,4BAAKlM,IAAO+V,WAAWnC,IACvB,4CACA,4BAAKhR,GAAS,KACbzD,EAAgBgK,OAAS,GAAKjJ,KAAK+H,sBAAsB9I,GAC1D,uCACA,wBAAI2I,UAAWgC,GAAOkM,YAAa9V,KAAK+V,cAAcH,EAAoBP,IAC1E,6CACA,4BAAKxO,EAAapB,SAAlB,IAA6BoB,EAAaK,KAAKkH,eAC/C,oDACA,4BAAKrH,EAAatB,SAAlB,IAA6BsB,EAAaG,KAAKkH,eAC/C,iDACA,4BAAKsH,EAAc,MAAQ,MACR,gBAAlBhC,GACC,oCACE,iDACA,4BAAKuB,GAAWA,EAAQhM,OAAS,EAAIgM,EAAQ7S,KAAK,MAAQ,0BAC1D,gDACA,4BACGiK,EAAkBC,QACf,kBAAC,GAAD,CAA6BN,OAAQA,EAAQiB,WAAYA,IAEzD,kBAAC,IAAD,CAAO/M,OAAO,QAAQjD,QAAQ,UAAS,kBAAC,IAAD,CAAMpB,KAAK,yBAAlD,6BAC2BwQ,EAAkB7F,OAAOpE,KAAK,e,gCArHpC7D,IAAMqC,W,GAAvCoU,G,YACe,CACjBlR,OAAQjD,IAAUG,OAAOD,WACzB6D,YAAa/D,IAAUG,OAAOD,WAC9Ba,QAASf,IAAUC,MAAMC,aA4HdkT,UAAYe,IC5I3BgB,cAAYC,SAAS,IAAIC,iBAAe,GAAI,CAC1CC,qBAAsB,CACpB,CACExY,KAAM,iBACN0W,YAAa,uBACb+B,UAAW,EACXtM,YAAa,qLAEbuM,cAAe5B,GACf6B,iBAAkBtB,GAClBuB,cAAenD,GAAsBmD,oB,sCChC3C,6CAGI5b,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,EAAI,8JAA+J,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yFAAyF,MAAQ,GAAG,SAAW,8DAA8D,eAAiB,CAAC,iKAAiK,WAAa,MAEhlBH,EAAwBI,OAAS,CAChC,cAAiB,wBAEH,O,qLCPXwC,EAAU,CAEd,OAAiB,OACjB,WAAoB,GAML,GAJF,IAAI,IAASA,GAIX,IAAQxC,QAAU,ICa3Byb,EAAavb,kBAAOwb,KAAV,4EAAGxb,CAAH,uBAIVyb,EAAsB,SAAC,GAAD,IAAGC,EAAH,EAAGA,UAAWC,EAAd,EAAcA,QAASC,EAAvB,EAAuBA,SAAvB,OAAuCF,EAAYC,EAAQC,GAAYA,GAEtFnN,EAAY,SAAC,GAAkF,IAAhFzM,EAAgF,EAAhFA,QAAS4Z,EAAuE,EAAvEA,SAAUjP,EAA6D,EAA7DA,UAAW+B,EAAkD,EAAlDA,YAAa+H,EAAqC,EAArCA,OAAQ9U,EAA6B,EAA7BA,MAAOkB,EAAsB,EAAtBA,gBAC9EgZ,EAAgB,4BAAI,kBAACN,EAAD,CAAY3a,KAAK,gBAAiBe,GAE5D,OACE,kBAAC,IAAD,CAAOkB,gBAAiBA,EACjB8J,UAAS,UAAKgC,EAAOmN,UAAZ,YAAyBnP,GAClC3K,QAASA,GACd,kBAAC,IAAMc,QAAP,KACE,kBAAC,IAAMC,MAAP,CAAaC,OAAQ0L,GAClB+H,GAAUoF,IAGf,kBAACJ,EAAD,CAAqBC,UAAWhN,EAAaiN,QAAS,SAACI,GAAD,OAAe,kBAAC,IAAM9Y,SAAP,KAAiB8Y,KACpF,kBAAC,IAAM7Y,KAAP,KACG0Y,MAOXnN,EAAUwD,UAAY,CACpBjQ,QAAS4D,IAAUiU,MAAM,CAAC,UAAW,UAAW,SAAU,OAAQ,UAAW,YAC7E+B,SAAUhW,IAAUoW,KACpBrP,UAAW/G,IAAU4L,OACrB9C,YAAa9I,IAAUK,KACvBwQ,OAAQ7Q,IAAUoW,KAClBra,MAAOiE,IAAU4L,OACjB3O,gBAAiB+C,IAAUK,MAG7BwI,EAAUtL,aAAe,CACvBnB,QAAS,OACT4Z,cAAUjZ,EACVgK,UAAW,GACX+B,aAAa,EACb+H,YAAQ9T,EACRhB,MAAO,GACPkB,iBAAiB,GAGJ4L,O,wCCxEf,6CAGInM,EAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,IAASA,GAIX,QAAQxC,QAAU,I,sCCZjC,0HAoBO,SAASmc,EAAWC,EAAIC,EAAIhB,GACjC,IAAMiB,EAAqBjB,GAAa,MAClCkB,EAAS9R,IAAO2R,GAChBI,EAAS/R,IAAO4R,GAEtB,MAA2B,QAAvBC,EACMC,EAAOE,SAASD,IAAW,EAAIA,EAAOC,SAASF,GAAU,EAAI,EAG/DC,EAAOC,SAASF,IAAW,EAAIA,EAAOE,SAASD,GAAU,EAAI,EAGhE,SAAS5a,EAAsBuF,EAAIC,EAAIiU,GAG5C,MAA+B,SAFJA,GAAa,OAEDlI,IAAYhM,EAAGkM,cAAejM,EAAGiM,eAAiBF,IAAY/L,EAAGiM,cAAelM,EAAGkM,iB,wCCnC5H,6CAGIzT,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,EAAI,4EAA6E,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,0GAA0G,MAAQ,GAAG,SAAW,oCAAoC,eAAiB,CAAC,gFAAgF,WAAa,MAEpaH,EAAwBI,OAAS,CAChC,mBAAsB,2BAER","file":"6e61897c-6.472622149827c1587209.js","sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"._2nTyPNLkIpGBnQspdMsxAF span:not(:last-child)::after {\\n    content: ', ';\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/event-definitions/event-definition-types/FilterAggregationSummary.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,aAAa;AACjB\",\"sourcesContent\":[\":local(.streamList) span:not(:last-child)::after {\\n    content: ', ';\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"streamList\": \"_2nTyPNLkIpGBnQspdMsxAF\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"._1ujfQpxvf96gYBf5YcH2mw {\\n    margin-top: 10px;\\n    margin-bottom: 10px;\\n}\\n\\n._2RXP4xX672p4E6gXtKDG4K {\\n    table-layout: fixed;\\n}\\n\\n._3jVYd8pu4S11PnGRm3bAty.alert {\\n    margin-bottom: 10px;\\n}\\n\\n._3jVYd8pu4S11PnGRm3bAty h4 {\\n    font-size: 1.44rem; /* theme.fonts.size.body h4 */\\n    margin-bottom: 0.5em;\\n}\\n\\n._3jVYd8pu4S11PnGRm3bAty ul {\\n    list-style: disc;\\n    margin: 0.5em 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/event-definitions/common/commonStyles.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,gBAAgB;IAChB,mBAAmB;AACvB;;AAEA;IACI,mBAAmB;AACvB;;AAEA;IACI,mBAAmB;AACvB;;AAEA;IACI,kBAAkB,EAAE,6BAA6B;IACjD,oBAAoB;AACxB;;AAEA;IACI,gBAAgB;IAChB,eAAe;AACnB\",\"sourcesContent\":[\":local(.title) {\\n    margin-top: 10px;\\n    margin-bottom: 10px;\\n}\\n\\n:local(.fixedTable) {\\n    table-layout: fixed;\\n}\\n\\n:local(.validationSummary).alert {\\n    margin-bottom: 10px;\\n}\\n\\n:local(.validationSummary) h4 {\\n    font-size: 1.44rem; /* theme.fonts.size.body h4 */\\n    margin-bottom: 0.5em;\\n}\\n\\n:local(.validationSummary) ul {\\n    list-style: disc;\\n    margin: 0.5em 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"title\": \"_1ujfQpxvf96gYBf5YcH2mw\",\n\t\"fixedTable\": \"_2RXP4xX672p4E6gXtKDG4K\",\n\t\"validationSummary\": \"_3jVYd8pu4S11PnGRm3bAty\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"._1JIE4WKd5g7yzR4O6RaG1n .panel-title {\\n    font-size: 1rem; /* theme.fonts.size.body */\\n}\\n\\n._1JIE4WKd5g7yzR4O6RaG1n .panel-title > a {\\n    cursor: pointer;\\n    display: block;\\n}\\n\\n._1JIE4WKd5g7yzR4O6RaG1n .panel-body {\\n    padding: 10px;\\n}\\n\\n._1JIE4WKd5g7yzR4O6RaG1n ul {\\n    padding-left: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/event-definitions/common/HelpPanel.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,eAAe,EAAE,0BAA0B;AAC/C;;AAEA;IACI,eAAe;IACf,cAAc;AAClB;;AAEA;IACI,aAAa;AACjB;;AAEA;IACI,eAAe;AACnB\",\"sourcesContent\":[\":local(.helpPanel) .panel-title {\\n    font-size: 1rem; /* theme.fonts.size.body */\\n}\\n\\n:local(.helpPanel) .panel-title > a {\\n    cursor: pointer;\\n    display: block;\\n}\\n\\n:local(.helpPanel) .panel-body {\\n    padding: 10px;\\n}\\n\\n:local(.helpPanel) ul {\\n    padding-left: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"helpPanel\": \"_1JIE4WKd5g7yzR4O6RaG1n\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport styled from 'styled-components';\n\nimport { Panel } from 'components/graylog';\nimport { Input } from 'components/bootstrap';\nimport Select from 'components/common/Select';\nimport { naturalSortIgnoreCase } from 'util/SortUtils';\nimport Spinner from 'components/common/Spinner';\nimport type { LookupTable } from 'logic/lookup-tables/types';\n\nconst StyledInlineCode = styled('code')`\n  margin: 0 0.25em;\n  white-space: nowrap;\n`;\n\ntype Props = {\n  onChange: (fieldName: string, value: string) => void\n  lookupTables: Array\n  identifier: string | number,\n  defaultExpandHelp?: boolean,\n  parameter?: {\n    lookupTable?: string,\n    key?: string,\n    defaultValue?: string\n    name?: string,\n  },\n  validationState?: {\n    lookupTable?: [string, string],\n    key?: [string, string],\n  }\n};\n\nconst LookupTableParameterEdit = ({\n  validationState,\n  onChange,\n  lookupTables,\n  identifier,\n  parameter,\n  defaultExpandHelp,\n}: Props) => {\n  const { lookupTable, key: tableKey, defaultValue, name } = parameter;\n  const parameterSyntax = `$${name}$`;\n\n  const _handleChange = (fieldName: string) => (value) => {\n    onChange(fieldName, value);\n  };\n\n  const _handleInputChange = (attributeName: string) => ({ target: { value } }: React.ChangeEvent) => _handleChange(attributeName)(value);\n\n  if (!lookupTables) {\n    return ;\n  }\n\n  const lookupTableOptions = lookupTables.sort((lt1, lt2) => naturalSortIgnoreCase(lt1.title, lt2.title))\n    .map((table) => ({ label: table.title, value: table.name }));\n\n  return (\n    <>\n      \n        \n      \n\n      \n        \n          \n            How to use lookup table parameters\n          \n        \n        \n          \n            
General Usage
\n

\n After declaring it, the parameter\n {parameterSyntax}\n in your query, will be replaced with the list of results from the lookup table.\n The list of results will be presented in the form of a Lucene BooleanQuery. E.g.:\n ("foo" OR "bar" OR "baz")\n

\n
Behaviour on empty lookup result list
\n

\n The event definition query is only executed if a value for the parameter is present.\n If the lookup result is empty, the execution will be skipped and treated as if the Search Query found\n no messages. If an execution is desired a Default Value that yields the desired search result\n needs to be provided. For example, (depending on the use case) a wildcard like\n *\n can be a meaningful Default Value.\n

\n
Limitations
\n

\n Please note that maximum number of supported results is 1024. If the lookup table returns\n more results, the query is not executed.\n

\n
\n
\n
\n \n );\n};\n\nLookupTableParameterEdit.defaultProps = {\n parameter: {},\n validationState: {},\n defaultExpandHelp: true,\n};\n\nexport default LookupTableParameterEdit;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\nimport React from 'react';\n\nimport LookupTableParameterEdit from 'components/lookup-table-parameters/LookupTableParameterEdit';\nimport { Button } from 'components/graylog';\nimport { BootstrapModalForm } from 'components/bootstrap';\nimport type { LookupTable } from 'logic/lookup-tables/types';\nimport LookupTableParameter, { LookupTableParameterJson } from 'views/logic/parameters/LookupTableParameter';\n\ntype Props = {\n queryParameters: Array,\n lookupTables: Array,\n onChange: (newQueryParameters: Array) => void,\n queryParameter: LookupTableParameter,\n embryonic: boolean,\n}\n\ntype State = {\n queryParameter: LookupTableParameter,\n validation: {\n lookupTable?: string,\n key?: string,\n },\n}\n\nclass EditQueryParameterModal extends React.Component {\n static propTypes = {\n queryParameters: PropTypes.array.isRequired,\n queryParameter: PropTypes.object.isRequired,\n lookupTables: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n embryonic: PropTypes.bool.isRequired,\n };\n\n modal: BootstrapModalForm = React.createRef();\n\n constructor(props) {\n super(props);\n\n const { queryParameter } = this.props;\n\n this.state = {\n queryParameter,\n validation: {},\n };\n }\n\n openModal = () => {\n this.modal.open();\n };\n\n _saved = () => {\n const { queryParameter } = this.state;\n\n if (!this._validate(queryParameter)) {\n return;\n }\n\n this.propagateChanges();\n this.modal.close();\n };\n\n _cleanState = () => {\n const { queryParameter } = this.props;\n\n this.setState({ queryParameter });\n }\n\n propagateChanges = () => {\n const { queryParameters, onChange, queryParameter: prevQueryParameter } = this.props;\n const { queryParameter } = this.state;\n const newQueryParameters = [...queryParameters];\n const index = queryParameters.findIndex((p) => p.name === prevQueryParameter.name);\n\n if (index < 0) {\n throw new Error(`Query parameter \"${queryParameter.name}\" not found`);\n }\n\n newQueryParameters[index] = queryParameter.toJSON();\n onChange(newQueryParameters);\n };\n\n handleParameterChange = (key, value) => {\n const { queryParameter } = this.state;\n const nextQueryParameter = queryParameter.toBuilder()[key](value).build();\n\n this.setState({ queryParameter: nextQueryParameter });\n };\n\n _validate = (queryParameter) => {\n const newValidation: State['validation'] = {};\n\n if (!queryParameter.lookupTable) {\n newValidation.lookupTable = 'Cannot be empty';\n }\n\n if (!queryParameter.key) {\n newValidation.key = 'Cannot be empty';\n }\n\n this.setState({ validation: newValidation });\n\n return lodash.isEmpty(newValidation);\n };\n\n render() {\n const { lookupTables, embryonic } = this.props;\n const { queryParameter, validation } = this.state;\n\n const validationState: {\n lookupTable?: [string, string],\n key?: [string, string],\n } = {\n lookupTable: validation.lookupTable ? ['error', validation.lookupTable] : undefined,\n key: validation.key ? ['error', validation.key] : undefined,\n };\n\n return (\n <>\n \n\n { this.modal = ref; }}\n title={`Declare Query Parameter \"${queryParameter.name}\" from Lookup Table`}\n onSubmitForm={this._saved}\n onModalClose={this._cleanState}\n submitButtonText=\"Save\">\n \n \n \n );\n }\n}\n\nexport default EditQueryParameterModal;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\nimport uuid from 'uuid/v4';\nimport moment from 'moment';\n\nimport { Alert, ButtonToolbar, ControlLabel, FormGroup, HelpBlock } from 'components/graylog';\nimport connect from 'stores/connect';\nimport Query from 'views/logic/queries/Query';\nimport Search from 'views/logic/search/Search';\nimport { extractDurationAndUnit } from 'components/common/TimeUnitInput';\nimport { MultiSelect, TimeUnitInput } from 'components/common';\nimport { Input } from 'components/bootstrap';\nimport { naturalSortIgnoreCase } from 'util/SortUtils';\nimport * as FormsUtils from 'util/FormsUtils';\nimport CombinedProvider from 'injection/CombinedProvider';\nimport { SearchMetadataActions } from 'views/stores/SearchMetadataStore';\nimport { isPermitted } from 'util/PermissionsMixin';\nimport LookupTableParameter from 'views/logic/parameters/LookupTableParameter';\n\nimport EditQueryParameterModal from '../event-definition-form/EditQueryParameterModal';\nimport commonStyles from '../common/commonStyles.css';\n\nconst { LookupTablesStore, LookupTablesActions } = CombinedProvider.get('LookupTables');\n\nexport const TIME_UNITS = ['HOURS', 'MINUTES', 'SECONDS'];\n\nconst LOOKUP_PERMISSIONS = [\n 'lookuptables:read',\n];\n\nclass FilterForm extends React.Component {\n formatStreamIds = lodash.memoize(\n (streamIds) => {\n const { streams } = this.props;\n\n return streamIds\n .map((streamId) => streams.find((s) => s.id === streamId) || streamId)\n .map((streamOrId) => {\n const stream = (typeof streamOrId === 'object' ? streamOrId : { title: streamOrId, id: streamOrId });\n\n return {\n label: stream.title,\n value: stream.id,\n };\n })\n .sort((s1, s2) => naturalSortIgnoreCase(s1.label, s2.label));\n },\n (streamIds) => streamIds.join('-'),\n );\n\n _parseQuery = lodash.debounce((queryString) => {\n if (!this._userCanViewLookupTables()) {\n return;\n }\n\n const { queryId, searchTypeId } = this.state;\n\n const queryBuilder = Query.builder()\n .id(queryId)\n .query({ type: 'elasticsearch', query_string: queryString })\n .timerange({ type: 'relative', range: 1000 })\n .searchTypes([{\n id: searchTypeId,\n type: 'messages',\n limit: 10,\n offset: 0,\n }]);\n\n const query = queryBuilder.build();\n\n const search = Search.create().toBuilder()\n .queries([query])\n .build();\n\n SearchMetadataActions.parseSearch(search).then((res) => {\n this._syncParamsWithQuery(res.undeclared);\n });\n }, 250);\n\n static propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n lookupTables: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n streams: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n currentUser: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n const { execute_every_ms: executeEveryMs, search_within_ms: searchWithinMs } = props.eventDefinition.config;\n const searchWithin = extractDurationAndUnit(searchWithinMs, TIME_UNITS);\n const executeEvery = extractDurationAndUnit(executeEveryMs, TIME_UNITS);\n\n this.state = {\n searchWithinMsDuration: searchWithin.duration,\n searchWithinMsUnit: searchWithin.unit,\n executeEveryMsDuration: executeEvery.duration,\n executeEveryMsUnit: executeEvery.unit,\n queryId: uuid(),\n searchTypeId: uuid(),\n queryParameterStash: {}, // keep already defined parameters around to ease editing\n };\n }\n\n componentDidMount() {\n if (this._userCanViewLookupTables()) {\n LookupTablesActions.searchPaginated(1, 0, undefined, false);\n }\n }\n\n propagateChange = (key, value) => {\n const { eventDefinition, onChange } = this.props;\n const config = lodash.cloneDeep(eventDefinition.config);\n\n config[key] = value;\n onChange('config', config);\n };\n\n _syncParamsWithQuery = (paramsInQuery) => {\n const { eventDefinition, onChange } = this.props;\n const config = lodash.cloneDeep(eventDefinition.config);\n const queryParameters = config.query_parameters;\n const keptParameters = [];\n const staleParameters = {};\n\n queryParameters.forEach((p) => {\n if (paramsInQuery.has(p.name)) {\n keptParameters.push(p);\n } else {\n staleParameters[p.name] = p;\n }\n });\n\n const { queryParameterStash } = this.state;\n const newParameters = [];\n\n paramsInQuery.forEach((np) => {\n if (!keptParameters.find((p) => p.name === np)) {\n if (queryParameterStash[np]) {\n newParameters.push(queryParameterStash[np]);\n } else {\n newParameters.push(this._buildNewParameter(np));\n }\n }\n });\n\n this.setState({ queryParameterStash: lodash.merge(queryParameterStash, staleParameters) });\n\n config.query_parameters = keptParameters.concat(newParameters);\n onChange('config', config);\n };\n\n _userCanViewLookupTables = () => {\n const { currentUser } = this.props;\n\n return isPermitted(currentUser.permissions, LOOKUP_PERMISSIONS);\n };\n\n _buildNewParameter = (name) => {\n return ({\n name: name,\n embryonic: true,\n type: 'lut-parameter-v1',\n data_type: 'any',\n title: 'new title',\n // has no binding, no need to set binding property\n });\n };\n\n handleQueryChange = (event) => {\n this._parseQuery(event.target.value);\n this.handleConfigChange(event);\n };\n\n handleConfigChange = (event) => {\n const { name } = event.target;\n\n this.propagateChange(name, FormsUtils.getValueFromInput(event.target));\n };\n\n handleStreamsChange = (nextValue) => {\n this.propagateChange('streams', nextValue);\n };\n\n handleTimeRangeChange = (fieldName) => {\n return (nextValue, nextUnit) => {\n const durationInMs = moment.duration(lodash.max([nextValue, 1]), nextUnit).asMilliseconds();\n\n this.propagateChange(fieldName, durationInMs);\n\n const stateFieldName = lodash.camelCase(fieldName);\n\n this.setState({\n [`${stateFieldName}Duration`]: nextValue,\n [`${stateFieldName}Unit`]: nextUnit,\n });\n };\n };\n\n renderQueryParameters = () => {\n const { eventDefinition, onChange, lookupTables, validation } = this.props;\n const { query_parameters: queryParameters } = eventDefinition.config;\n\n const onChangeQueryParameters = (newQueryParameters) => {\n const newConfig = { ...eventDefinition.config, query_parameters: newQueryParameters };\n\n return onChange('config', newConfig);\n };\n\n if (!this._userCanViewLookupTables()) {\n return (\n \n This account lacks permission to declare Query Parameters from Lookup Tables.\n \n );\n }\n\n const parameterButtons = queryParameters.map((queryParam) => {\n return (\n \n );\n });\n\n if (lodash.isEmpty(parameterButtons)) {\n return null;\n }\n\n const hasEmbryonicParameters = !lodash.isEmpty(queryParameters.filter((param) => (param.embryonic)));\n\n return (\n \n Query Parameters\n \n \n {parameterButtons}\n \n \n {hasEmbryonicParameters && (\n \n {validation.errors.query_parameters\n ? lodash.get(validation, 'errors.query_parameters[0]')\n : 'Please declare missing query parameters by clicking on the buttons above.'}\n \n )}\n \n );\n };\n\n render() {\n const { eventDefinition, streams, validation } = this.props;\n const { searchWithinMsDuration, searchWithinMsUnit, executeEveryMsDuration, executeEveryMsUnit } = this.state;\n\n // Ensure deleted streams are still displayed in select\n const allStreamIds = lodash.union(streams.map((s) => s.id), lodash.defaultTo(eventDefinition.config.streams, []));\n const formattedStreams = this.formatStreamIds(allStreamIds);\n\n return (\n
\n

Filter

\n

Add information to filter the log messages that are relevant for this Event Definition.

\n \n Search query that Messages should match. You can use the same syntax as in the Search page,\n including declaring Query Parameters from Lookup Tables by using the $newParameter$ syntax.\n \n )}\n value={lodash.defaultTo(eventDefinition.config.query, '')}\n onChange={this.handleQueryChange} />\n\n {this.renderQueryParameters()}\n\n \n Streams (Optional)\n this.handleStreamsChange(selected === '' ? [] : selected.split(','))}\n options={formattedStreams}\n value={lodash.defaultTo(eventDefinition.config.streams, []).join(',')} />\n Select streams the search should include. Searches in all streams if empty.\n \n\n \n \n {validation.errors.search_within_ms && (\n {lodash.get(validation, 'errors.search_within_ms[0]')}\n )}\n \n\n \n \n {validation.errors.execute_every_ms && (\n {lodash.get(validation, 'errors.execute_every_ms[0]')}\n )}\n \n \n
\n );\n }\n}\n\nexport default connect(FilterForm, {\n lookupTables: LookupTablesStore,\n});\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-1!./FilterPreview.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Panel, Table } from 'components/graylog';\nimport { Spinner } from 'components/common';\nimport HelpPanel from 'components/event-definitions/common/HelpPanel';\n\nimport styles from './FilterPreview.css';\n\nclass FilterPreview extends React.Component {\n static propTypes = {\n searchResult: PropTypes.object,\n errors: PropTypes.array,\n isFetchingData: PropTypes.bool,\n displayPreview: PropTypes.bool,\n };\n\n static defaultProps = {\n searchResult: {},\n errors: [],\n isFetchingData: false,\n displayPreview: false,\n };\n\n renderMessages = (messages) => {\n return messages.map(({ index, message }) => {\n return (\n \n {message.timestamp}\n {message.message}\n \n );\n });\n };\n\n renderSearchResult = (searchResult = {}) => {\n if (!searchResult.messages || searchResult.messages.length === 0) {\n return

Could not find any messages with the current search criteria.

;\n }\n\n return (\n \n \n \n \n \n \n \n \n {this.renderMessages(searchResult.messages)}\n \n
TimestampMessage
\n );\n };\n\n render() {\n const { isFetchingData, searchResult, errors, displayPreview } = this.props;\n\n const renderedResults = isFetchingData ? : this.renderSearchResult(searchResult);\n\n return (\n <>\n \n

\n The Filter & Aggregation Condition will generate different number of Events, depending on how it is\n configured:\n

\n
    \n
  • Filter: One Event per message matching the filter
  • \n
  • \n Aggregation without groups: One Event every time the aggregation result satisfies\n the condition\n
  • \n
  • \n Aggregation with groups: One Event per group whose aggregation result satisfies\n the condition\n
  • \n
\n
\n\n {displayPreview && (\n \n \n Filter Preview\n \n \n {errors.length > 0 ?

{errors[0].description}

: renderedResults}\n
\n
\n )}\n \n );\n }\n}\n\nexport default FilterPreview;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\nimport uuid from 'uuid/v4';\n\nimport Query from 'views/logic/queries/Query';\nimport Search from 'views/logic/search/Search';\nimport CombinedProvider from 'injection/CombinedProvider';\nimport connect from 'stores/connect';\nimport PermissionsMixin from 'util/PermissionsMixin';\n\nimport FilterPreview from './FilterPreview';\n\nconst { FilterPreviewStore, FilterPreviewActions } = CombinedProvider.get('FilterPreview');\nconst { CurrentUserStore } = CombinedProvider.get('CurrentUser');\n\nclass FilterPreviewContainer extends React.Component {\n state = {\n queryId: uuid(),\n searchTypeId: uuid(),\n };\n\n fetchSearch = lodash.debounce((config) => {\n const { currentUser } = this.props;\n\n if (!this.isPermittedToSeePreview(currentUser, config)) {\n return;\n }\n\n const { queryId, searchTypeId } = this.state;\n\n const formattedStreams = config.streams.map((stream) => ({ type: 'stream', id: stream }));\n\n const queryBuilder = Query.builder()\n .id(queryId)\n .query({ type: 'elasticsearch', query_string: config.query || '*' })\n .timerange({ type: 'relative', range: config.search_within_ms / 1000 })\n .filter(formattedStreams.length === 0 ? null : { type: 'or', filters: formattedStreams })\n .searchTypes([{\n id: searchTypeId,\n type: 'messages',\n limit: 10,\n offset: 0,\n }]);\n\n const query = queryBuilder.build();\n\n const search = Search.create().toBuilder()\n .parameters(config.query_parameters.filter((param) => (!param.embryonic)))\n .queries([query])\n .build();\n\n FilterPreviewActions.search(search);\n }, 250);\n\n static propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n filterPreview: PropTypes.object.isRequired,\n currentUser: PropTypes.object.isRequired,\n };\n\n componentDidMount() {\n const { eventDefinition } = this.props;\n\n this.fetchSearch(eventDefinition.config);\n }\n\n componentDidUpdate(prevProps) {\n const { eventDefinition } = this.props;\n\n const { query: prevQuery, query_parameters: prevQueryParameters, streams: prevStreams, search_within_ms: prevSearchWithin } = prevProps.eventDefinition.config;\n const { query, query_parameters: queryParameters, streams, search_within_ms: searchWithin } = eventDefinition.config;\n\n if (query !== prevQuery || queryParameters !== prevQueryParameters || !lodash.isEqual(streams, prevStreams) || searchWithin !== prevSearchWithin) {\n this.fetchSearch(eventDefinition.config);\n }\n }\n\n isPermittedToSeePreview = (currentUser, config) => {\n const missingPermissions = config.streams.some((stream) => {\n return !PermissionsMixin.isPermitted(currentUser.permissions, `streams:read:${stream}`);\n });\n\n return !missingPermissions;\n };\n\n render() {\n const { eventDefinition, filterPreview, currentUser } = this.props;\n const { queryId, searchTypeId } = this.state;\n const isLoading = !filterPreview.result || !filterPreview.result.forId(queryId);\n let searchResult;\n let errors;\n\n if (!isLoading) {\n searchResult = filterPreview.result.forId(queryId).searchTypes[searchTypeId];\n // eslint-disable-next-line prefer-destructuring\n errors = filterPreview.result.errors; // result may not always be set, so I can't use destructuring\n }\n\n return (\n \n );\n }\n}\n\nexport default connect(FilterPreviewContainer, {\n filterPreview: FilterPreviewStore,\n currentUser: CurrentUserStore,\n},\n({ currentUser, ...otherProps }) => ({\n ...otherProps,\n currentUser: currentUser.currentUser,\n}));\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nexport const emptyComparisonExpressionConfig = () => {\n return {\n expr: undefined,\n left: {\n expr: 'number-ref',\n ref: undefined,\n },\n right: {\n expr: 'number',\n value: 0,\n },\n };\n};\n\nexport const emptyBooleanExpressionConfig = ({ operator = '&&', left = emptyComparisonExpressionConfig(), right = emptyComparisonExpressionConfig() }) => {\n return {\n expr: operator,\n left: left,\n right: right,\n };\n};\n\nexport const emptyGroupExpressionConfig = ({ operator = '&&', child = emptyComparisonExpressionConfig() }) => {\n return {\n expr: 'group',\n operator: operator,\n child: child,\n };\n};\n\n/**\n * Replaces all boolean expressions inside the current tree, without affecting any internal groups.\n */\nexport const replaceBooleanExpressionOperatorInGroup = (nextOperator, expression) => {\n const nextExpression = { ...expression };\n\n if (expression.expr === '&&' || expression.expr === '||') {\n nextExpression.expr = nextOperator;\n nextExpression.left = replaceBooleanExpressionOperatorInGroup(nextOperator, nextExpression.left);\n nextExpression.right = replaceBooleanExpressionOperatorInGroup(nextOperator, nextExpression.right);\n }\n\n return nextExpression;\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { union } from 'lodash';\n\nconst flattenValidationTree = (validationTree, errors = []) => {\n if (validationTree.message) {\n return union(errors, [validationTree.message]);\n }\n\n if (validationTree.left) {\n return union(errors, flattenValidationTree(validationTree.left), flattenValidationTree(validationTree.right));\n }\n\n if (validationTree.child) {\n return union(errors, flattenValidationTree(validationTree.child));\n }\n\n return errors;\n};\n\nconst validateExpressionTree = (expression, series, validationTree = {}) => {\n switch (expression.expr) {\n case 'number':\n return (Number.isFinite(expression.value) ? {} : { message: 'Threshold must be a valid number' });\n case 'number-ref':\n /* eslint-disable no-case-declarations */\n const error = { message: 'Function must be set' };\n\n if (!expression.ref) {\n return error;\n }\n\n const selectedSeries = series.find((s) => s.id === expression.ref);\n\n return (selectedSeries && selectedSeries.function ? {} : error);\n /* eslint-enable no-case-declarations */\n case '&&':\n case '||':\n case '<':\n case '<=':\n case '>':\n case '>=':\n case '==':\n return {\n left: validateExpressionTree(expression.left, series, validationTree),\n right: validateExpressionTree(expression.right, series, validationTree),\n };\n case 'group':\n return { child: validateExpressionTree(expression.child, series, validationTree) };\n default:\n return { message: 'Condition must be set' };\n }\n};\n\nconst validateExpression = (expression, series) => {\n const validationResults = {};\n\n if (!expression) {\n validationResults.isValid = true;\n\n return validationResults;\n }\n\n validationResults.validationTree = validateExpressionTree(expression, series);\n validationResults.errors = flattenValidationTree(validationResults.validationTree);\n validationResults.isValid = validationResults.errors.length === 0;\n\n return validationResults;\n};\n\nexport default validateExpression;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\n\nexport const internalNodePropType = PropTypes.shape({\n expr: PropTypes.string,\n left: PropTypes.object,\n right: PropTypes.object,\n});\n\nexport const numberExpressionNodePropType = PropTypes.shape({\n expr: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), // Accept string to allow clearing field\n});\n\nexport const numberRefNodePropType = PropTypes.shape({\n expr: PropTypes.string,\n ref: PropTypes.string,\n});\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\n\nimport { Input } from 'components/bootstrap';\nimport { Col } from 'components/graylog';\nimport * as FormsUtils from 'util/FormsUtils';\nimport { numberExpressionNodePropType } from 'logic/alerts/AggregationExpressionTypes';\n\nconst NumberExpression = ({ expression, onChange, renderLabel, validation }) => {\n const handleChange = (event) => {\n const nextExpression = lodash.cloneDeep(expression);\n\n nextExpression.value = event.target.value === '' ? '' : FormsUtils.getValueFromInput(event.target);\n onChange({ conditions: nextExpression });\n };\n\n return (\n \n \n \n );\n};\n\nNumberExpression.propTypes = {\n expression: numberExpressionNodePropType.isRequired,\n onChange: PropTypes.func.isRequired,\n renderLabel: PropTypes.bool.isRequired,\n validation: PropTypes.object,\n};\n\nNumberExpression.defaultProps = {\n validation: {},\n};\n\nexport default NumberExpression;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\nimport naturalSort from 'javascript-natural-sort';\n\nimport { Select } from 'components/common';\nimport { Col, ControlLabel, FormGroup, HelpBlock, Row } from 'components/graylog';\nimport { numberRefNodePropType } from 'logic/alerts/AggregationExpressionTypes';\n\nconst formatFunctions = (functions) => {\n return functions\n .sort(naturalSort)\n .map((fn) => ({ label: `${fn.toLowerCase()}()`, value: fn }));\n};\n\nconst NumberRefExpression = ({\n aggregationFunctions,\n formattedFields,\n eventDefinition,\n expression,\n onChange,\n renderLabel,\n validation,\n}) => {\n const getSeries = (seriesId) => {\n return eventDefinition.config.series.find((series) => series.id === seriesId);\n };\n\n const createSeries = () => {\n return { id: expression.ref };\n };\n\n const getOrCreateSeries = (seriesId) => {\n return getSeries(seriesId) || createSeries();\n };\n\n const getSeriesId = (currentSeries, func, field) => {\n return `${lodash.defaultTo(func, currentSeries.function)}-${lodash.defaultTo(field, currentSeries.field || '')}`;\n };\n\n const handleFieldChange = ({ nextFunction, nextField }) => {\n const series = lodash.cloneDeep(eventDefinition.config.series);\n const nextSeries = lodash.cloneDeep(getOrCreateSeries(expression.ref));\n const nextSeriesId = getSeriesId(nextSeries, nextFunction, nextField);\n\n if (nextFunction !== undefined) {\n nextSeries.function = nextFunction;\n }\n\n if (nextField !== undefined) {\n nextSeries.field = nextField;\n }\n\n nextSeries.id = nextSeriesId;\n\n const seriesIndex = series.findIndex((s) => s.id === nextSeries.id);\n\n if (seriesIndex >= 0) {\n series[seriesIndex] = nextSeries;\n } else {\n series.push(nextSeries);\n }\n\n const nextExpression = lodash.cloneDeep(expression);\n\n nextExpression.ref = nextSeriesId;\n\n onChange({\n series: series,\n conditions: nextExpression,\n });\n };\n\n const handleAggregationFunctionChange = (nextFunction) => {\n handleFieldChange({ nextFunction });\n };\n\n const handleAggregationFieldChange = (nextField) => {\n handleFieldChange({ nextField });\n };\n\n const series = getSeries(expression.ref) || {};\n\n return (\n \n \n {renderLabel && If}\n \n \n \n \n \n {validation.message && {validation.message}}\n \n \n );\n};\n\nNumberRefExpression.propTypes = {\n aggregationFunctions: PropTypes.array.isRequired,\n eventDefinition: PropTypes.object.isRequired,\n expression: numberRefNodePropType.isRequired,\n formattedFields: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n renderLabel: PropTypes.bool.isRequired,\n validation: PropTypes.object,\n};\n\nNumberRefExpression.defaultProps = {\n validation: {},\n};\n\nexport default NumberRefExpression;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport styled, { css } from 'styled-components';\n\nimport { Col, FormControl, FormGroup } from 'components/graylog';\nimport { Select } from 'components/common';\n\nconst OperatorSelector = styled.div(({ theme }) => css`\n margin-bottom: 15px;\n font-size: ${theme.fonts.size.body};\n`);\n\nconst BooleanOperatorSelect = styled(({ isFirstElement, ...props }) => )`\n width: 100px;\n margin-left: ${(props) => (props.isFirstElement ? '' : '1em')};\n margin-right: 1em;\n`;\n\nconst BooleanOperatorSelector = ({ initialText, operator, onOperatorChange }) => {\n return (\n \n \n {initialText && (\n \n {initialText} \n \n )}\n \n ', value: '>' },\n { label: '>=', value: '>=' },\n { label: '=', value: '==' },\n ]}\n value={expression.expr}\n clearable={false} />\n {validation.message && {validation.message}}\n \n \n \n \n \n );\n};\n\nComparisonExpression.propTypes = {\n expression: internalNodePropType.isRequired,\n level: PropTypes.number.isRequired,\n onChange: PropTypes.func.isRequired,\n onChildChange: PropTypes.func.isRequired,\n renderLabel: PropTypes.bool.isRequired,\n validation: PropTypes.object,\n};\n\nComparisonExpression.defaultProps = {\n validation: {},\n};\n\nexport default ComparisonExpression;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { cloneDeep } from 'lodash';\nimport styled from 'styled-components';\n\nimport { Clearfix } from 'components/graylog';\nimport { internalNodePropType } from 'logic/alerts/AggregationExpressionTypes';\nimport { replaceBooleanExpressionOperatorInGroup } from 'logic/alerts/AggregationExpressionConfig';\n\n// eslint-disable-next-line import/no-cycle\nimport BooleanOperatorSelector from './BooleanOperatorSelector';\n\nimport AggregationConditionExpression from '../AggregationConditionExpression';\n\nconst Group = styled.div`\n padding-left: 40px;\n`;\n\nconst GroupExpression = (props) => {\n const { expression, level, onChange, onChildChange, validation } = props;\n\n const handleOperatorChange = (nextOperator) => {\n const nextExpression = cloneDeep(expression);\n\n nextExpression.operator = nextOperator;\n nextExpression.child = replaceBooleanExpressionOperatorInGroup(nextOperator, nextExpression.child);\n onChange({ conditions: nextExpression });\n };\n\n return (\n <>\n \n \n \n \n \n \n );\n};\n\nGroupExpression.propTypes = {\n expression: internalNodePropType.isRequired,\n level: PropTypes.number.isRequired,\n onChange: PropTypes.func.isRequired,\n onChildChange: PropTypes.func.isRequired,\n validation: PropTypes.object,\n};\n\nGroupExpression.defaultProps = {\n validation: {},\n};\n\nexport default GroupExpression;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-1!./AggregationConditionExpression.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\n\nimport { Button, ButtonToolbar, Clearfix, Col, FormGroup } from 'components/graylog';\nimport { Icon } from 'components/common';\nimport { emptyBooleanExpressionConfig, emptyGroupExpressionConfig, replaceBooleanExpressionOperatorInGroup } from 'logic/alerts/AggregationExpressionConfig';\nimport { internalNodePropType } from 'logic/alerts/AggregationExpressionTypes';\n\nimport NumberExpression from './AggregationConditionExpressions/NumberExpression';\nimport NumberRefExpression from './AggregationConditionExpressions/NumberRefExpression';\nimport BooleanOperatorSelector from './AggregationConditionExpressions/BooleanOperatorSelector';\n/* eslint-disable import/no-cycle */\n// We render the expression tree recursively, so complex expressions need to refer back to this component\nimport BooleanExpression from './AggregationConditionExpressions/BooleanExpression';\nimport ComparisonExpression from './AggregationConditionExpressions/ComparisonExpression';\nimport GroupExpression from './AggregationConditionExpressions/GroupExpression';\n/* eslint-enable import/no-cycle */\n\nimport styles from './AggregationConditionExpression.css';\n\nclass AggregationConditionExpression extends React.Component {\n static propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n validation: PropTypes.object,\n formattedFields: PropTypes.array.isRequired,\n aggregationFunctions: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n expression: internalNodePropType.isRequired,\n parent: internalNodePropType,\n level: PropTypes.number, // Internal use only\n renderLabel: PropTypes.bool,\n };\n\n static defaultProps = {\n level: 0,\n parent: undefined,\n renderLabel: true,\n validation: {},\n };\n\n state = {\n globalGroupOperator: undefined,\n };\n\n getEffectiveGlobalGroupOperator = () => {\n const { globalGroupOperator } = this.state;\n\n if (globalGroupOperator) {\n return globalGroupOperator;\n }\n\n const { expression } = this.props;\n\n return (expression.expr === '&&' || expression.expr === '||' ? expression.expr : '&&');\n };\n\n getBooleanOperator = (expression, defaultOperator) => {\n if (!expression) {\n return defaultOperator;\n }\n\n const key = expression.expr === 'group' ? 'operator' : 'expr';\n\n return lodash.get(expression, key, defaultOperator) === '&&' ? '&&' : '||';\n };\n\n handleAddExpression = () => {\n const { expression, onChange, parent } = this.props;\n const defaultOperator = this.getEffectiveGlobalGroupOperator();\n const prevOperator = this.getBooleanOperator(parent, defaultOperator);\n const nextExpression = emptyBooleanExpressionConfig({ operator: prevOperator, left: expression });\n\n onChange({ conditions: nextExpression });\n };\n\n handleAddGroup = () => {\n const { expression, onChange, parent } = this.props;\n const defaultOperator = this.getEffectiveGlobalGroupOperator();\n const prevOperator = this.getBooleanOperator(parent, defaultOperator);\n const groupOperator = prevOperator === '&&' ? '||' : '&&';\n const groupExpression = emptyGroupExpressionConfig({ operator: groupOperator });\n const nextExpression = emptyBooleanExpressionConfig({ operator: prevOperator, left: expression, right: groupExpression });\n\n onChange({ conditions: nextExpression });\n };\n\n handleDeleteExpression = () => {\n const { onChange } = this.props;\n\n onChange({ conditions: null });\n };\n\n handleChildChange = (branch) => {\n return (changes) => {\n const { expression, onChange } = this.props;\n\n if (!Object.keys(changes).includes('conditions')) {\n onChange(changes);\n\n return;\n }\n\n const update = changes.conditions;\n let nextUpdate;\n\n // A null update indicates that one of the branches got removed\n if (update === null) {\n if (branch === 'child') {\n // If this is the last branch of a group, remove the group altogether\n nextUpdate = null;\n } else {\n // Otherwise replace the current tree with the still existing branch\n nextUpdate = expression[(branch === 'left' ? 'right' : 'left')];\n }\n } else if (branch === 'child' && update.expr === 'group') {\n // Avoid that a group's child is another group. Groups should at least have one expression\n nextUpdate = update;\n } else {\n // Propagate the update in the expression tree.\n const nextExpression = lodash.cloneDeep(expression);\n\n nextExpression[branch] = update;\n nextUpdate = nextExpression;\n }\n\n onChange({ ...changes, conditions: nextUpdate });\n };\n };\n\n handleOperatorChange = (nextOperator) => {\n const { expression, onChange } = this.props;\n\n this.setState({ globalGroupOperator: nextOperator });\n const nextExpression = replaceBooleanExpressionOperatorInGroup(nextOperator, expression);\n\n onChange({ conditions: nextExpression });\n };\n\n render() {\n const { expression, parent, renderLabel } = this.props;\n let expressionComponent;\n\n switch (expression.expr) {\n case 'number-ref':\n expressionComponent = ;\n break;\n case 'number':\n expressionComponent = ;\n break;\n case 'group':\n expressionComponent = ;\n break;\n case '&&':\n case '||':\n expressionComponent = (\n \n );\n\n break;\n case '<':\n case '<=':\n case '>':\n case '>=':\n case '==':\n default:\n expressionComponent = (\n <>\n \n \n \n
\n \n \n \n \n \n
\n
\n \n \n );\n }\n\n if (!parent && expression.expr !== 'group') {\n return (\n <>\n \n \n {expressionComponent}\n \n );\n }\n\n return expressionComponent;\n }\n}\n\nexport default AggregationConditionExpression;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst AggregationConditionSummary = ({ conditions, series }) => {\n const renderExpression = (expression) => {\n if (!expression) {\n return 'No condition configured';\n }\n\n switch (expression.expr) {\n case 'number':\n return expression.value;\n case 'number-ref':\n // eslint-disable-next-line no-case-declarations\n const selectedSeries = series.find((s) => s.id === expression.ref);\n\n return (selectedSeries && selectedSeries.function\n ? {selectedSeries.function}({selectedSeries.field})\n : No series selected);\n case '&&':\n case '||':\n return (\n <>\n {renderExpression(expression.left)}{' '}\n {expression.expr === '&&' ? 'AND' : 'OR'}{' '}\n {renderExpression(expression.right)}\n \n );\n case 'group':\n return [{renderExpression(expression.child)}];\n case '<':\n case '<=':\n case '>':\n case '>=':\n case '==':\n return (\n <>\n {renderExpression(expression.left)}{' '}\n {expression.expr}{' '}\n {renderExpression(expression.right)}\n \n );\n default:\n return 'No condition configured';\n }\n };\n\n return renderExpression(conditions.expression);\n};\n\nAggregationConditionSummary.propTypes = {\n conditions: PropTypes.object.isRequired,\n series: PropTypes.array.isRequired,\n};\n\nexport default AggregationConditionSummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport { Button, Panel } from 'components/graylog';\nimport { Icon } from 'components/common';\n\nimport AggregationConditionSummary from './AggregationConditionSummary';\n\nconst StyledPanel = styled(Panel)`\n margin-top: 10px;\n`;\n\nconst StyledButton = styled(Button)`\n margin-left: 15px;\n vertical-align: baseline;\n`;\n\nconst AggregationConditionsFormSummary = (props) => {\n const { conditions, series, expressionValidation, showInlineValidation, toggleShowValidation } = props;\n\n return (\n
\n \n {expressionValidation.isValid\n ?

 Condition is valid

\n : (\n

\n  Condition is not valid\n \n {showInlineValidation ? 'Hide errors' : 'Show errors'}\n \n

\n )}\n Preview: \n
\n
\n );\n};\n\nAggregationConditionsFormSummary.propTypes = {\n conditions: PropTypes.object.isRequired,\n series: PropTypes.array.isRequired,\n expressionValidation: PropTypes.object,\n showInlineValidation: PropTypes.bool,\n toggleShowValidation: PropTypes.func.isRequired,\n};\n\nAggregationConditionsFormSummary.defaultProps = {\n expressionValidation: { isValid: true },\n showInlineValidation: false,\n};\n\nexport default AggregationConditionsFormSummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport { get } from 'lodash';\n\nimport { Alert, Row } from 'components/graylog';\nimport { Icon } from 'components/common';\nimport { emptyComparisonExpressionConfig } from 'logic/alerts/AggregationExpressionConfig';\nimport validateExpression from 'logic/alerts/AggregationExpressionValidation';\n\nimport AggregationConditionExpression from './AggregationConditionExpression';\nimport AggregationConditionsFormSummary from './AggregationConditionsFormSummary';\n\nimport commonStyles from '../common/commonStyles.css';\n\nconst initialEmptyConditionConfig = emptyComparisonExpressionConfig();\n\nconst extractSeriesReferences = (expression, acc = []) => {\n if (expression.expr === 'number-ref') {\n acc.push(expression.ref);\n }\n\n if (expression.left && expression.right) {\n return extractSeriesReferences(expression.left).concat(extractSeriesReferences(expression.right));\n }\n\n if (expression.child) {\n return extractSeriesReferences(expression.child);\n }\n\n return acc;\n};\n\nconst StyledAlert = styled(Alert)`\n margin-bottom: 10px !important;\n`;\n\nclass AggregationConditionsForm extends React.Component {\n static propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n formattedFields: PropTypes.array.isRequired,\n aggregationFunctions: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n state = {\n showInlineValidation: false,\n };\n\n toggleShowInlineValidation = () => {\n const { showInlineValidation } = this.state;\n\n this.setState({ showInlineValidation: !showInlineValidation });\n };\n\n handleChange = (changes) => {\n const { eventDefinition, onChange } = this.props;\n\n if (!Object.keys(changes).includes('conditions')) {\n onChange(changes);\n\n return;\n }\n\n const nextConditions = changes.conditions;\n\n let nextSeries;\n\n if (nextConditions) {\n // Keep series up-to-date with changes in conditions\n const seriesReferences = extractSeriesReferences(nextConditions);\n\n nextSeries = (changes.series || eventDefinition.config.series).filter((s) => seriesReferences.includes(s.id));\n } else {\n nextSeries = [];\n }\n\n onChange({\n ...changes,\n conditions: { expression: nextConditions },\n series: nextSeries,\n });\n };\n\n render() {\n const { showInlineValidation } = this.state;\n const { eventDefinition, validation } = this.props;\n const expression = eventDefinition.config.conditions.expression || initialEmptyConditionConfig;\n const expressionValidation = validateExpression(expression, eventDefinition.config.series);\n\n return (\n <>\n

Create Events for Definition

\n {validation.errors.conditions && (\n \n

 Errors found

\n

{get(validation, 'errors.conditions[0]')}

\n
\n )}\n\n \n \n \n\n \n \n );\n }\n}\n\nexport default AggregationConditionsForm;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\n\nimport { Col, ControlLabel, FormGroup, HelpBlock, Row } from 'components/graylog';\n\n// TODO: This should be moved to a general place outside of `views`\nimport { defaultCompare } from 'views/logic/DefaultCompare';\nimport { MultiSelect } from 'components/common';\n\nimport AggregationConditionsForm from './AggregationConditionsForm';\n\nimport commonStyles from '../common/commonStyles.css';\n\nclass AggregationForm extends React.Component {\n // Memoize function to only format fields when they change. Use joined fieldNames as cache key.\n formatFields = lodash.memoize(\n (fieldTypes) => {\n return fieldTypes\n .sort((ftA, ftB) => defaultCompare(ftA.name, ftB.name))\n .map((fieldType) => {\n return {\n label: `${fieldType.name} – ${fieldType.value.type.type}`,\n value: fieldType.name,\n };\n });\n },\n (fieldTypes) => fieldTypes.map((ft) => ft.name).join('-'),\n );\n\n static propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n allFieldTypes: PropTypes.array.isRequired,\n aggregationFunctions: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n propagateConfigChange = (update) => {\n const { eventDefinition, onChange } = this.props;\n const nextConfig = { ...eventDefinition.config, ...update };\n\n onChange('config', nextConfig);\n };\n\n handleGroupByChange = (nextValue) => {\n this.propagateConfigChange({ group_by: nextValue });\n };\n\n render() {\n const { allFieldTypes, aggregationFunctions, eventDefinition, validation } = this.props;\n const formattedFields = this.formatFields(allFieldTypes);\n\n return (\n
\n

Aggregation

\n

\n Summarize log messages matching the Filter defined above by using a function. You can optionally group the\n Filter results by identical field values.\n

\n \n \n \n Group by Field(s) (Optional)\n this.handleGroupByChange(selected === '' ? [] : selected.split(','))}\n options={formattedFields}\n ignoreAccents={false}\n value={lodash.defaultTo(eventDefinition.config.group_by, []).join(',')}\n allowCreate />\n \n Select Fields that Graylog should use to group Filter results when they have identical values.\n {' '}Example:
\n Assuming you created a Filter with all failed log-in attempts in your network, Graylog could alert you\n when there are more than 5 failed log-in attempts overall. Now, add username as Group by\n Field and Graylog will alert you for each username with more than 5 failed\n log-in attempts.\n
\n
\n \n
\n\n
\n\n \n
\n );\n }\n}\n\nexport default AggregationForm;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\n\nimport { Col, ControlLabel, FormGroup, Radio, Row } from 'components/graylog';\nimport * as FormsUtils from 'util/FormsUtils';\n\nimport FilterForm from './FilterForm';\nimport FilterPreviewContainer from './FilterPreviewContainer';\nimport AggregationForm from './AggregationForm';\n\nconst conditionTypes = {\n AGGREGATION: 0,\n FILTER: 1,\n};\n\nconst initialFilterConfig = {\n query: '',\n query_parameters: [],\n streams: [],\n search_within_ms: 60 * 1000,\n execute_every_ms: 60 * 1000,\n};\n\nconst initialAggregationConfig = {\n group_by: [],\n series: [],\n conditions: {},\n};\n\nclass FilterAggregationForm extends React.Component {\n static propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n allFieldTypes: PropTypes.array.isRequired,\n entityTypes: PropTypes.object.isRequired,\n streams: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n currentUser: PropTypes.object.isRequired,\n };\n\n static defaultConfig = {\n ...initialFilterConfig,\n ...initialAggregationConfig,\n };\n\n constructor(props) {\n super(props);\n\n const { group_by, series, conditions } = props.eventDefinition.config;\n const expression = lodash.get(conditions, 'expression', {});\n const defaultConditionType = (lodash.isEmpty(group_by) && lodash.isEmpty(series) && lodash.isEmpty(expression)\n ? conditionTypes.FILTER : conditionTypes.AGGREGATION);\n\n this.state = {\n conditionType: defaultConditionType,\n };\n }\n\n propagateChange = (key, value) => {\n const { onChange } = this.props;\n\n onChange(key, value);\n };\n\n handleTypeChange = (event) => {\n const stateChange = {};\n const nextConditionType = Number(FormsUtils.getValueFromInput(event.target));\n\n stateChange[event.target.name] = nextConditionType;\n\n if (nextConditionType === conditionTypes.FILTER) {\n const { eventDefinition } = this.props;\n\n // Store existing data temporarily in state, to restore it in case the type change was accidental\n const existingAggregationConfig = {};\n\n Object.keys(initialAggregationConfig).forEach((key) => {\n existingAggregationConfig[key] = eventDefinition.config[key];\n });\n\n stateChange.existingAggregationConfig = existingAggregationConfig;\n\n const nextConfig = { ...eventDefinition.config, ...initialAggregationConfig };\n\n this.propagateChange('config', nextConfig);\n } else {\n // Reset aggregation data from state if it exists\n const { existingAggregationConfig } = this.state;\n\n if (existingAggregationConfig) {\n const { eventDefinition } = this.props;\n const nextConfig = { ...eventDefinition.config, ...existingAggregationConfig };\n\n this.propagateChange('config', nextConfig);\n stateChange.existingAggregationConfig = undefined;\n }\n }\n\n this.setState(stateChange);\n };\n\n handleChange = (event) => {\n const { name } = event.target;\n\n this.propagateChange(name, FormsUtils.getValueFromInput(event.target));\n };\n\n render() {\n const { conditionType } = this.state;\n const { allFieldTypes, entityTypes, eventDefinition, streams, validation, currentUser } = this.props;\n\n return (\n <>\n \n \n s.is_editable)}\n currentUser={currentUser}\n onChange={this.propagateChange} />\n\n \n Create Events for Definition if...\n \n Filter has results\n \n \n Aggregation of results reaches a threshold\n \n \n \n \n \n \n \n {conditionType === conditionTypes.AGGREGATION && (\n \n \n \n \n \n )}\n \n );\n }\n}\n\nexport default FilterAggregationForm;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\n\nimport { Spinner } from 'components/common';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { StreamsStore } = CombinedProvider.get('Streams');\n\nexport default function withStreams(WrappedComponent, hiddenStreams = []) {\n const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\n class WithStreams extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n streams: undefined,\n };\n }\n\n componentDidMount() {\n StreamsStore.load((streams) => {\n let filteredStreams = streams.filter((s) => s.is_editable);\n\n if (hiddenStreams.length !== 0) {\n filteredStreams = streams.filter((s) => !hiddenStreams.includes(s.id));\n }\n\n this.setState({ streams: filteredStreams });\n });\n }\n\n render() {\n const { streams } = this.state;\n\n if (!streams) {\n return ;\n }\n\n return ;\n }\n }\n\n WithStreams.displayName = `withStreams(${wrappedComponentName})`;\n\n return WithStreams;\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Spinner } from 'components/common';\nimport connect from 'stores/connect';\nimport { FieldTypesStore } from 'views/stores/FieldTypesStore';\n\nimport FilterAggregationForm from './FilterAggregationForm';\nimport withStreams from './withStreams';\n\n// eslint-disable-next-line react/prefer-stateless-function\nclass FilterAggregationFormContainer extends React.Component {\n static propTypes = {\n action: PropTypes.oneOf(['create', 'edit']).isRequired,\n validation: PropTypes.object.isRequired,\n eventDefinition: PropTypes.object.isRequired,\n fieldTypes: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n currentUser: PropTypes.object.isRequired, // Prop is passed down to pluggable entities\n };\n\n render() {\n const { fieldTypes, ...otherProps } = this.props;\n const isLoading = typeof fieldTypes.all !== 'object';\n\n if (isLoading) {\n return ;\n }\n\n return ;\n }\n}\n\nexport default connect(withStreams(FilterAggregationFormContainer), {\n fieldTypes: FieldTypesStore,\n});\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-1!./FilterAggregationSummary.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\n\nimport { Link } from 'components/graylog/router';\nimport { Alert } from 'components/graylog';\nimport { extractDurationAndUnit } from 'components/common/TimeUnitInput';\nimport { Icon } from 'components/common';\nimport { isPermitted } from 'util/PermissionsMixin';\nimport { naturalSortIgnoreCase } from 'util/SortUtils';\nimport Routes from 'routing/Routes';\nimport validateExpression from 'logic/alerts/AggregationExpressionValidation';\n\nimport AggregationConditionSummary from './AggregationConditionSummary';\nimport withStreams from './withStreams';\nimport { TIME_UNITS } from './FilterForm';\nimport styles from './FilterAggregationSummary.css';\n\nclass FilterAggregationSummary extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n currentUser: PropTypes.object.isRequired,\n streams: PropTypes.array.isRequired,\n };\n\n getConditionType = (config) => {\n const { group_by: groupBy, series, conditions } = config;\n\n return (lodash.isEmpty(groupBy)\n && (!conditions || lodash.isEmpty(conditions) || conditions.expression === null)\n && lodash.isEmpty(series)\n ? 'filter' : 'aggregation');\n };\n\n formatStreamOrId = (streamOrId) => {\n if (typeof streamOrId === 'string') {\n return {streamOrId};\n }\n\n return (\n \n {streamOrId.title}\n \n );\n };\n\n renderStreams = (streamIds, streamIdsWithMissingPermission) => {\n const { streams } = this.props;\n\n if ((!streamIds || streamIds.length === 0) && streamIdsWithMissingPermission.length <= 0) {\n return 'No Streams selected, searches in all Streams';\n }\n\n const warning = streamIdsWithMissingPermission.length > 0\n ? Missing Stream Permissions for:
{streamIdsWithMissingPermission.join(', ')}
\n : null;\n\n const renderedStreams = streamIds\n .map((id) => streams.find((s) => s.id === id) || id)\n .sort((s1, s2) => naturalSortIgnoreCase(s1.title || s1, s2.title || s2))\n .map(this.formatStreamOrId);\n\n return (\n <>\n {warning}\n {renderedStreams}\n \n );\n };\n\n renderQueryParameters = (queryParameters) => {\n if (queryParameters.some((p) => p.embryonic)) {\n const undeclaredParameters = queryParameters.filter((p) => p.embryonic)\n .map((p) => p.name)\n .join(', ');\n\n return (\n \n  There are undeclared query parameters: {undeclaredParameters}\n \n );\n }\n\n return
{queryParameters.map((p) => p.name).join(', ')}
;\n }\n\n render() {\n const { config, currentUser } = this.props;\n const {\n query,\n query_parameters: queryParameters,\n streams,\n search_within_ms: searchWithinMs,\n execute_every_ms: executeEveryMs,\n _is_scheduled: isScheduled,\n group_by: groupBy,\n series,\n conditions,\n } = config;\n\n const conditionType = this.getConditionType(config);\n\n const searchWithin = extractDurationAndUnit(searchWithinMs, TIME_UNITS);\n const executeEvery = extractDurationAndUnit(executeEveryMs, TIME_UNITS);\n\n const effectiveStreamIds = streams.filter((s) => isPermitted(currentUser.permissions, `streams:read:${s}`));\n const streamIdsWithMissingPermission = streams.filter((s) => !effectiveStreamIds.includes(s));\n\n const validationResults = validateExpression(conditions.expression, series);\n\n return (\n
\n
Type
\n
{lodash.upperFirst(conditionType)}
\n
Search Query
\n
{query || '*'}
\n {queryParameters.length > 0 && this.renderQueryParameters(queryParameters)}\n
Streams
\n
{this.renderStreams(effectiveStreamIds, streamIdsWithMissingPermission)}
\n
Search within
\n
{searchWithin.duration} {searchWithin.unit.toLowerCase()}
\n
Execute search every
\n
{executeEvery.duration} {executeEvery.unit.toLowerCase()}
\n
Enable scheduling
\n
{isScheduled ? 'yes' : 'no'}
\n {conditionType === 'aggregation' && (\n <>\n
Group by Field(s)
\n
{groupBy && groupBy.length > 0 ? groupBy.join(', ') : 'No Group by configured'}
\n
Create Events if
\n
\n {validationResults.isValid\n ? \n : (\n  \n Condition is not valid: {validationResults.errors.join(', ')}\n \n )}\n
\n \n )}\n
\n );\n }\n}\n\nexport default withStreams(FilterAggregationSummary);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { PluginManifest, PluginStore } from 'graylog-web-plugin/plugin';\n\nimport FilterAggregationFormContainer from './FilterAggregationFormContainer';\nimport FilterAggregationForm from './FilterAggregationForm';\nimport FilterAggregationSummary from './FilterAggregationSummary';\n\nPluginStore.register(new PluginManifest({}, {\n eventDefinitionTypes: [\n {\n type: 'aggregation-v1',\n displayName: 'Filter & Aggregation',\n sortOrder: 0, // Sort before conditions working on events\n description: 'Create Events from log messages by filtering them and (optionally) '\n + 'aggregating their results to match a given condition. These Events can be used as input for a Correlation Rule.',\n formComponent: FilterAggregationFormContainer,\n summaryComponent: FilterAggregationSummary,\n defaultConfig: FilterAggregationForm.defaultConfig,\n },\n ],\n}));\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".zRa3-jZxCc8S0p6HOe1T .panel-body {\\n padding: 20px 10px;\\n}\\n\\n.zRa3-jZxCc8S0p6HOe1T table {\\n table-layout: fixed;\\n word-wrap: break-word;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/event-definitions/event-definition-types/FilterPreview.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,kBAAkB;AACtB;;AAEA;IACI,mBAAmB;IACnB,qBAAqB;AACzB\",\"sourcesContent\":[\":local(.filterPreview) .panel-body {\\n padding: 20px 10px;\\n}\\n\\n:local(.filterPreview) table {\\n table-layout: fixed;\\n word-wrap: break-word;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"filterPreview\": \"zRa3-jZxCc8S0p6HOe1T\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-1!./HelpPanel.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport { Panel } from 'components/graylog';\nimport { Icon } from 'components/common';\n\nimport styles from './HelpPanel.css';\n\nconst IconHeader = styled(Icon)`\n margin-right: 9px;\n`;\n\nconst ConditionalCollapse = ({ condition, wrapper, children }) => (condition ? wrapper(children) : children);\n\nexport const HelpPanel = ({ bsStyle, children, className, collapsible, header, title, defaultExpanded }) => {\n const defaultHeader =

{title}

;\n\n return (\n \n \n \n {header || defaultHeader}\n \n \n {wrapChild}}>\n \n {children}\n \n \n \n );\n};\n\nHelpPanel.propTypes = {\n bsStyle: PropTypes.oneOf(['success', 'warning', 'danger', 'info', 'default', 'primary']),\n children: PropTypes.node,\n className: PropTypes.string,\n collapsible: PropTypes.bool,\n header: PropTypes.node,\n title: PropTypes.string,\n defaultExpanded: PropTypes.bool,\n};\n\nHelpPanel.defaultProps = {\n bsStyle: 'info',\n children: undefined,\n className: '',\n collapsible: false,\n header: undefined,\n title: '',\n defaultExpanded: false,\n};\n\nexport default HelpPanel;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-1!./commonStyles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport moment from 'moment';\nimport naturalSort from 'javascript-natural-sort';\n\n// sortOrder: \"asc\"|\"desc\"\nexport function sortByDate(d1, d2, sortOrder) {\n const effectiveSortOrder = sortOrder || 'asc';\n const d1Time = moment(d1);\n const d2Time = moment(d2);\n\n if (effectiveSortOrder === 'asc') {\n return (d1Time.isBefore(d2Time) ? -1 : d2Time.isBefore(d1Time) ? 1 : 0);\n }\n\n return (d2Time.isBefore(d1Time) ? -1 : d1Time.isBefore(d2Time) ? 1 : 0);\n}\n\nexport function naturalSortIgnoreCase(s1, s2, sortOrder) {\n const effectiveSortOrder = sortOrder || 'asc';\n\n return (effectiveSortOrder === 'asc' ? naturalSort(s1.toLowerCase(), s2.toLowerCase()) : naturalSort(s2.toLowerCase(), s1.toLowerCase()));\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"._3HS_d2Yh-oJgJZnlo_MquM {\\n margin-top: 25px;\\n height: 34px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/event-definitions/event-definition-types/AggregationConditionExpression.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,gBAAgB;IAChB,YAAY;AAChB\",\"sourcesContent\":[\":local(.formControlNoLabel) {\\n margin-top: 25px;\\n height: 34px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"formControlNoLabel\": \"_3HS_d2Yh-oJgJZnlo_MquM\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n"],"sourceRoot":""}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy