@opentelemetry/configuration 0.216.0 → 0.217.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +122 -13
- package/build/src/ConfigFactory.js +3 -1
- package/build/src/ConfigFactory.js.map +1 -1
- package/build/src/EnvironmentConfigFactory.d.ts +1 -1
- package/build/src/EnvironmentConfigFactory.js +195 -307
- package/build/src/EnvironmentConfigFactory.js.map +1 -1
- package/build/src/FileConfigFactory.d.ts +2 -17
- package/build/src/FileConfigFactory.js +269 -1054
- package/build/src/FileConfigFactory.js.map +1 -1
- package/build/src/IConfigFactory.d.ts +2 -2
- package/build/src/IConfigFactory.js.map +1 -1
- package/build/src/generated/types.d.ts +1652 -0
- package/build/src/generated/types.js +13 -0
- package/build/src/generated/types.js.map +1 -0
- package/build/src/generated/validator.d.ts +17 -0
- package/build/src/generated/validator.js +8412 -0
- package/build/src/generated/validator.js.map +1 -0
- package/build/src/index.d.ts +1 -5
- package/build/src/index.js.map +1 -1
- package/build/src/utils.d.ts +6 -66
- package/build/src/utils.js +68 -151
- package/build/src/utils.js.map +1 -1
- package/build/src/version.d.ts +1 -1
- package/build/src/version.js +1 -1
- package/build/src/version.js.map +1 -1
- package/package.json +5 -2
- package/build/src/models/commonModel.d.ts +0 -183
- package/build/src/models/commonModel.js +0 -40
- package/build/src/models/commonModel.js.map +0 -1
- package/build/src/models/configModel.d.ts +0 -77
- package/build/src/models/configModel.js +0 -21
- package/build/src/models/configModel.js.map +0 -1
- package/build/src/models/loggerProviderModel.d.ts +0 -134
- package/build/src/models/loggerProviderModel.js +0 -18
- package/build/src/models/loggerProviderModel.js.map +0 -1
- package/build/src/models/meterProviderModel.d.ts +0 -459
- package/build/src/models/meterProviderModel.js +0 -50
- package/build/src/models/meterProviderModel.js.map +0 -1
- package/build/src/models/resourceModel.d.ts +0 -72
- package/build/src/models/resourceModel.js +0 -7
- package/build/src/models/resourceModel.js.map +0 -1
- package/build/src/models/tracerProviderModel.d.ts +0 -256
- package/build/src/models/tracerProviderModel.js +0 -30
- package/build/src/models/tracerProviderModel.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileConfigFactory.js","sourceRoot":"","sources":["../../src/FileConfigFactory.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,8CAA+E;AAM/E,sDAAsE;AAEtE,yBAAyB;AACzB,6BAA6B;AAC7B,mCASiB;AAEjB,sDAAwE;AAQxE,sEAA4F;AAO5F,sEAA4F;AAkB5F,oEAOqC;AACrC,4CAA0C;AAE1C,MAAa,iBAAiB;IACpB,OAAO,CAAqB;IAEpC;QACE,IAAI,CAAC,OAAO,GAAG,IAAA,4CAA8B,GAAE,CAAC;QAChD,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAXD,8CAWC;AAED,SAAgB,kBAAkB;IAChC,MAAM,UAAU,GAAG,IAAA,uBAAgB,EAAC,kBAAkB,CAAC,CAAC;IACxD,IAAI,UAAU,EAAE;QACd,IACE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC9D,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAC1B;YACA,UAAI,CAAC,IAAI,CACP,eAAe,UAAU,uCAAuC,CACjE,CAAC;YACF,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAfD,gDAeC;AAED,SAAgB,eAAe,CAAC,MAA0B;IACxD,MAAM,qBAAqB,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAA,uBAAgB,EAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;IAC9D,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEvC,IACE,aAAa,CAAC,aAAa,CAAC;QAC5B,qBAAqB,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,EAC5D;QACA,MAAM,QAAQ,GAAG,IAAA,gCAAwB,EAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;QACrE,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC5B;QAED,MAAM,QAAQ,GAAG,IAAA,+BAAuB,EACtC,IAAA,6BAAsB,EAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CACnD,CAAC;QACF,IAAI,QAAQ,EAAE;YACZ,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC;SAC7B;QAED,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE;YAC7B,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE;gBAC3B,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;aACtB;YACD,MAAM,SAAS,GAAG,IAAA,+BAAuB,EACvC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,CAC1C,CAAC;YACF,IAAI,SAAS,EAAE;gBACb,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC;aACxC;SACF;QAED,qBAAqB,CACnB,MAAM,EACN,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,EACzC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAC/C,CAAC;QAEF,MAAM,eAAe,GACnB,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC;QACvD,IAAI,eAAe,EAAE;YACnB,MAAM,CAAC,QAAS,CAAC,uBAAuB,CAAC;gBACvC,yBAAyB,CAAC,eAAe,CAAC,CAAC;SAC9C;QACD,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC9D,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;QACnD,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5D,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC1D,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;KAC7D;SAAM;QACL,UAAI,CAAC,IAAI,CACP,4BAA4B,aAAa,CAAC,aAAa,CAAC,sCAAsC,qBAAqB,EAAE,CACtH,CAAC;KACH;AACH,CAAC;AAxDD,0CAwDC;AAED,SAAgB,qBAAqB,CACnC,MAA0B,EAC1B,UAAgC,EAChC,aAAqB;IAErB,IAAI,UAAU,IAAI,aAAa,EAAE;QAC/B,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE;YAC3B,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;SACtB;QACD,IAAI,IAAA,+BAAuB,EAAC,aAAa,CAAC,EAAE;YAC1C,MAAM,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAA,+BAAuB,EAAC,aAAa,CAAC,CAAC;SAC1E;QAED,MAAM,IAAI,GAAG,IAAA,mCAA2B,EAAC,aAAa,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACtE,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,EAAE,CAAC;YAEhC,IAAI,UAAU,EAAE;gBACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC1C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;oBAC1B,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;oBACzB,QAAQ,GAAG,CAAC,MAAM,CAAC,EAAE;wBACnB,KAAK,MAAM;4BACT,KAAK,GAAG,IAAA,gCAAwB,EAAC,KAAK,CAAC,CAAC;4BACxC,MAAM;wBACR,KAAK,YAAY;4BACf,KAAK,GAAG,IAAA,oCAA4B,EAAC,KAAK,CAAC,CAAC;4BAC5C,MAAM;wBACR,KAAK,KAAK,CAAC;wBACX,KAAK,QAAQ;4BACX,KAAK,GAAG,IAAA,+BAAuB,EAAC,KAAK,CAAC,CAAC;4BACvC,MAAM;wBACR,KAAK,WAAW,CAAC;wBACjB,KAAK,cAAc;4BACjB,KAAK,GAAG,IAAA,mCAA2B,EAAC,KAAK,CAAC,CAAC;4BAC3C,MAAM;wBACR,KAAK,cAAc;4BACjB,KAAK,GAAG,IAAA,mCAA2B,EAAC,KAAK,CAAC,CAAC;4BAC3C,MAAM;wBACR;4BACE,KAAK,GAAG,IAAA,+BAAuB,EAAC,KAAK,CAAC,CAAC;4BACvC,MAAM;qBACT;oBAED,MAAM,GAAG,GAAG,IAAA,+BAAuB,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;oBACvD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;wBAC9B,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,KAAK;wBACZ,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,QAAQ;qBAC9B,CAAC,CAAC;oBACH,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACrB;aACF;YAED,IAAI,IAAI,EAAE;gBACR,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACpC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACnC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;wBACnC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;4BAC9B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;4BAChB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;4BACjB,IAAI,EAAE,QAAQ;yBACf,CAAC,CAAC;qBACJ;iBACF;aACF;SACF;KACF;AACH,CAAC;AArED,sDAqEC;AAED,SAAS,yBAAyB;AAChC,8DAA8D;AAC9D,SAAc;IAEd,MAAM,MAAM,GAAkC,EAAE,CAAC;IAEjD,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE;QAC3B,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC3B,MAAM,CAAC,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM;YAC1C,8DAA8D;YAC9D,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAClC,CAAC;SACH;QACD,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC3B,MAAM,CAAC,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM;YAC1C,8DAA8D;YAC9D,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAClC,CAAC;SACH;KACF;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE;QACzC,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtD,8DAA8D;YAC9D,MAAM,CAAC,GAAQ,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE;gBACvC,SAAS;aACV;YACD,MAAM,QAAQ,GAAiC,EAAE,CAAC;YAClD,IAAI,WAAW,IAAI,CAAC;gBAAE,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;YAC7D,IAAI,KAAK,IAAI,CAAC;gBAAE,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YAC3C,IAAI,MAAM,IAAI,CAAC;gBAAE,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YAC9C,IAAI,IAAI,IAAI,CAAC;gBAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YACxC,IAAI,SAAS,IAAI,CAAC;gBAAE,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;YACvD,IAAI,SAAS,IAAI,CAAC;gBAAE,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;YACvD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACjC;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,kBAAkB,CAChC,MAA0B,EAC1B,UAA2B;IAE3B,IAAI,UAAU,EAAE;QACd,IAAI,MAAM,CAAC,gBAAgB,IAAI,IAAI,EAAE;YACnC,MAAM,CAAC,gBAAgB,GAAG;gBACxB,qBAAqB,EAAE,GAAG;aAC3B,CAAC;SACH;QACD,MAAM,WAAW,GAAG,IAAA,+BAAuB,EACzC,UAAU,CAAC,8BAA8B,CAAC,CAC3C,CAAC;QACF,IAAI,WAAW,EAAE;YACf,MAAM,CAAC,gBAAgB,CAAC,4BAA4B,GAAG,WAAW,CAAC;SACpE;QACD,MAAM,UAAU,GAAG,IAAA,+BAAuB,EACxC,UAAU,CAAC,uBAAuB,CAAC,CACpC,CAAC;QACF,IAAI,UAAU,EAAE;YACd,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,GAAG,UAAU,CAAC;SAC5D;KACF;AACH,CAAC;AAvBD,gDAuBC;AAED,SAAgB,aAAa,CAC3B,MAA0B,EAC1B,UAAsB;IAEtB,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE;QACrE,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,IAAI,UAAU,CAAC,SAAS,EAAE;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;aACjC;SACF;QAED,MAAM,aAAa,GAAG,IAAA,mCAA2B,EAC/C,UAAU,CAAC,gBAAgB,CAAC,CAC7B,CAAC;QACF,IAAI,aAAa,EAAE;YACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC7C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;oBACvC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC9C;aACF;SACF;QACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE;gBAC7B,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;aACxB;YACD,MAAM,CAAC,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;SACzC;QAED,MAAM,mBAAmB,GAAG,IAAA,+BAAuB,EACjD,UAAU,CAAC,gBAAgB,CAAC,CAC7B,CAAC;QACF,IAAI,mBAAmB,EAAE;YACvB,MAAM,CAAC,UAAW,CAAC,cAAc,GAAG,mBAAmB,CAAC;SACzD;aAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,qDAAqD;YACrD,MAAM,CAAC,UAAW,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACvD;KACF;AACH,CAAC;AA1CD,sCA0CC;AAED,SAAS,sBAAsB,CAC7B,OAAsC;IAEtC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,aAAa,GAAkC,EAAE,CAAC;IAEtD,QAAQ,WAAW,EAAE;QACnB,KAAK,WAAW;YACd,aAAa,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,SAAS,EAAE,CAAC;YACjE,MAAM;QAER,KAAK,YAAY;YACf,aAAa,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,SAAS,EAAE,CAAC;YACnE,MAAM;QAER,KAAK,kBAAkB,CAAC,CAAC;YACvB,MAAM,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;YACtC,IAAI,CAAC,EAAE,IAAI,EAAE;gBACX,aAAa,GAAG;oBACd,gBAAgB,EAAE,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;iBAC3D,CAAC;aACH;YACD,MAAM;SACP;QAED,KAAK,aAAa,CAAC,CAAC;YAClB,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;YACjC,aAAa,GAAG;gBACd,WAAW,EAAE;oBACX,KAAK,EAAE,IAAA,+BAAuB,EAAC,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG;iBAChD;aACF,CAAC;YACF,MAAM;SACP;QAED,KAAK,YAAY,CAAC,CAAC;YACjB,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YACjC,IAAI,EAAE,EAAE;gBACN,aAAa,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;gBACnC,IAAI,EAAE,CAAC,KAAK,EAAE;oBACZ,aAAa,CAAC,UAAW,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACtD,GAAG,IAAI;wBACP,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;qBAClE,CAAC,CAAC,CAAC;iBACL;aACF;YACD,MAAM;SACP;KACF;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,YAAY,CAAC,OAAgB;IACpC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,aAAa,GAAY,EAAE,CAAC;IAEhC,QAAQ,WAAW,EAAE;QACnB,KAAK,WAAW;YACd,aAAa,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,SAAS,EAAE,CAAC;YACjE,MAAM;QAER,KAAK,YAAY;YACf,aAAa,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,SAAS,EAAE,CAAC;YACnE,MAAM;QAER,KAAK,sBAAsB,CAAC,CAAC;YAC3B,MAAM,CAAC,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;YAC1C,aAAa,GAAG;gBACd,oBAAoB,EAAE;oBACpB,KAAK,EAAE,IAAA,+BAAuB,EAAC,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG;iBAChD;aACF,CAAC;YACF,MAAM;SACP;QAED,KAAK,cAAc,CAAC,CAAC;YACnB,MAAM,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;YAClC,IAAI,CAAC,EAAE;gBACL,aAAa,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;gBACrC,IAAI,CAAC,CAAC,IAAI,EAAE;oBACV,aAAa,CAAC,YAAa,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBACzD;gBACD,IAAI,CAAC,CAAC,qBAAqB,EAAE;oBAC3B,aAAa,CAAC,YAAa,CAAC,qBAAqB,GAAG,YAAY,CAC9D,CAAC,CAAC,qBAAqB,CACxB,CAAC;iBACH;gBACD,IAAI,CAAC,CAAC,yBAAyB,EAAE;oBAC/B,aAAa,CAAC,YAAa,CAAC,yBAAyB,GAAG,YAAY,CAClE,CAAC,CAAC,yBAAyB,CAC5B,CAAC;iBACH;gBACD,IAAI,CAAC,CAAC,oBAAoB,EAAE;oBAC1B,aAAa,CAAC,YAAa,CAAC,oBAAoB,GAAG,YAAY,CAC7D,CAAC,CAAC,oBAAoB,CACvB,CAAC;iBACH;gBACD,IAAI,CAAC,CAAC,wBAAwB,EAAE;oBAC9B,aAAa,CAAC,YAAa,CAAC,wBAAwB,GAAG,YAAY,CACjE,CAAC,CAAC,wBAAwB,CAC3B,CAAC;iBACH;aACF;YACD,MAAM;SACP;QAED,KAAK,yBAAyB,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;YAC7C,aAAa,GAAG;gBACd,yBAAyB,EAAE;oBACzB,KAAK,EAAE,IAAA,+BAAuB,EAAC,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG;iBAChD;aACF,CAAC;YACF,MAAM;SACP;QAED,KAAK,uBAAuB,CAAC,CAAC;YAC5B,MAAM,CAAC,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;YAC3C,IAAI,CAAC,EAAE;gBACL,aAAa,GAAG;oBACd,uBAAuB,EAAE,sBAAsB,CAAC,CAAC,CAAC;iBACnD,CAAC;aACH;YACD,MAAM;SACP;KACF;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,gBAAgB,CACvB,CAAyB;IAEzB,IAAI,CAAC,EAAE;QACL,MAAM,OAAO,GAA0B,EAAE,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC;gBACrB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;aACxB,CAAC,CAAC;SACJ;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,OAAO,OAAO,CAAC;SAChB;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,IAAK,YAIJ;AAJD,WAAK,YAAY;IACf,mDAAU,CAAA;IACV,iDAAS,CAAA;IACT,mDAAU,CAAA;AACZ,CAAC,EAJI,YAAY,KAAZ,YAAY,QAIhB;AAED,SAAS,kCAAkC,CACzC,QAA0C,EAC1C,YAA0B;IAE1B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,cAAc,GAAqC,EAAE,CAAC;IAC1D,IAAI,CAAC,CAAC;IACN,IAAI,QAAQ,CAAC;IACb,IAAI,cAAc,CAAC;IACnB,IAAI,aAAa,CAAC;IAClB,IAAI,WAAW,CAAC;IAChB,IAAI,OAAO,CAAC;IACZ,IAAI,WAAW,CAAC;IAChB,IAAI,QAAQ,CAAC;IACb,IAAI,QAAQ,CAAC;IAEb,QAAQ,YAAY,EAAE;QACpB,KAAK,YAAY,CAAC,MAAM;YACtB,QAAQ,GAAG,iCAAiC,CAAC;YAC7C,cAAc,GAAG,cAA8B,CAAC;YAChD,MAAM;QACR,KAAK,YAAY,CAAC,MAAM;YACtB,QAAQ,GAAG,+BAA+B,CAAC;YAC3C,cAAc,GAAG,cAAmC,CAAC;YACrD,MAAM;KACT;IAED,QAAQ,YAAY,EAAE;QACpB,KAAK,WAAW;YACd,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC1B,IAAI,CAAC,EAAE;gBACL,cAAc,GAAG;oBACf,SAAS,EAAE;wBACT,QAAQ,EAAE,IAAA,+BAAuB,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,QAAQ;wBAC5D,OAAO,EAAE,IAAA,+BAAuB,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;wBACvD,QAAQ,EACN,IAAA,+BAAuB,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,MAAM;4BAC/C,CAAC,CAAC,8BAAgB,CAAC,IAAI;4BACvB,CAAC,CAAC,8BAAgB,CAAC,QAAQ;qBAChC;iBACF,CAAC;gBACF,WAAW,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;gBACxD,IAAI,WAAW,IAAI,cAAc,CAAC,SAAS,EAAE;oBAC3C,cAAc,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;iBACpD;gBACD,WAAW,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;gBACzD,IAAI,WAAW,IAAI,cAAc,CAAC,SAAS,EAAE;oBAC3C,cAAc,CAAC,SAAS,CAAC,YAAY,GAAG,WAAW,CAAC;iBACrD;gBACD,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzC,IAAI,OAAO,IAAI,cAAc,CAAC,SAAS,EAAE;oBACvC,cAAc,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;iBAC5C;gBAED,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;oBACZ,QAAQ,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;oBACxD,cAAc,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;oBAChE,aAAa,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;oBAE9D,MAAM,GAAG,GAAG,IAAA,wBAAgB,EAAC,QAAQ,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;oBACtE,IAAI,GAAG,EAAE;wBACP,cAAc,CAAC,SAAU,CAAC,GAAG,GAAG,GAAG,CAAC;qBACrC;iBACF;aACF;YACD,MAAM;QAER,KAAK,WAAW;YACd,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC1B,IAAI,CAAC,EAAE;gBACL,cAAc,GAAG;oBACf,SAAS,EAAE;wBACT,QAAQ,EACN,IAAA,+BAAuB,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,uBAAuB;wBACnE,OAAO,EAAE,IAAA,+BAAuB,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;qBACxD;iBACF,CAAC;gBAEF,WAAW,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;gBACxD,IAAI,WAAW,IAAI,cAAc,CAAC,SAAS,EAAE;oBAC3C,cAAc,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;iBACpD;gBACD,WAAW,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;gBACzD,IAAI,WAAW,IAAI,cAAc,CAAC,SAAS,EAAE;oBAC3C,cAAc,CAAC,SAAS,CAAC,YAAY,GAAG,WAAW,CAAC;iBACrD;gBACD,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzC,IAAI,OAAO,IAAI,cAAc,CAAC,SAAS,EAAE;oBACvC,cAAc,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;iBAC5C;gBAED,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;oBACZ,QAAQ,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;oBACxD,cAAc,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;oBAChE,aAAa,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;oBAC9D,QAAQ,GAAG,IAAA,gCAAwB,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;oBAE1D,MAAM,GAAG,GAAG,IAAA,wBAAgB,EAC1B,QAAQ,EACR,aAAa,EACb,cAAc,EACd,QAAQ,CACT,CAAC;oBACF,IAAI,GAAG,EAAE;wBACP,cAAc,CAAC,SAAU,CAAC,GAAG,GAAG,GAAG,CAAC;qBACrC;iBACF;aACF;YACD,MAAM;QAER,KAAK,uBAAuB;YAC1B,CAAC,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAAC;YACtC,IAAI,CAAC,EAAE;gBACL,cAAc,GAAG;oBACf,uBAAuB,EAAE;wBACvB,aAAa,EACX,IAAA,+BAAuB,EAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,QAAQ;qBAC1D;iBACF,CAAC;aACH;YACD,MAAM;QAER,KAAK,SAAS;YACZ,cAAc,GAAG;gBACf,OAAO,EAAE,EAAE;aACZ,CAAC;YACF,MAAM;KACT;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAgB,iBAAiB,CAC/B,MAA0B,EAC1B,cAA8B;IAE9B,IAAI,cAAc,IAAI,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE;QAC3D,MAAM,CAAC,eAAe,GAAG,IAAA,kEAA4C,GAAE,CAAC;QACxE,SAAS;QACT,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE;YAC5B,MAAM,yBAAyB,GAAG,IAAA,+BAAuB,EACvD,cAAc,CAAC,QAAQ,CAAC,CAAC,8BAA8B,CAAC,CACzD,CAAC;YAEF,IAAI,yBAAyB,EAAE;gBAC7B,MAAM,CAAC,eAAe,CAAC,MAAO,CAAC,4BAA4B;oBACzD,yBAAyB,CAAC;aAC7B;YAED,MAAM,mBAAmB,GAAG,IAAA,+BAAuB,EACjD,cAAc,CAAC,QAAQ,CAAC,CAAC,uBAAuB,CAAC,CAClD,CAAC;YACF,IAAI,mBAAmB,EAAE;gBACvB,MAAM,CAAC,eAAe,CAAC,MAAO,CAAC,qBAAqB;oBAClD,mBAAmB,CAAC;aACvB;YAED,MAAM,eAAe,GAAG,IAAA,+BAAuB,EAC7C,cAAc,CAAC,QAAQ,CAAC,CAAC,mBAAmB,CAAC,CAC9C,CAAC;YACF,IAAI,eAAe,EAAE;gBACnB,MAAM,CAAC,eAAe,CAAC,MAAO,CAAC,iBAAiB,GAAG,eAAe,CAAC;aACpE;YAED,MAAM,cAAc,GAAG,IAAA,+BAAuB,EAC5C,cAAc,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,CAC7C,CAAC;YACF,IAAI,cAAc,EAAE;gBAClB,MAAM,CAAC,eAAe,CAAC,MAAO,CAAC,gBAAgB,GAAG,cAAc,CAAC;aAClE;YAED,MAAM,wBAAwB,GAAG,IAAA,+BAAuB,EACtD,cAAc,CAAC,QAAQ,CAAC,CAAC,6BAA6B,CAAC,CACxD,CAAC;YACF,IAAI,wBAAwB,EAAE;gBAC5B,MAAM,CAAC,eAAe,CAAC,MAAO,CAAC,2BAA2B;oBACxD,wBAAwB,CAAC;aAC5B;YAED,MAAM,uBAAuB,GAAG,IAAA,+BAAuB,EACrD,cAAc,CAAC,QAAQ,CAAC,CAAC,4BAA4B,CAAC,CACvD,CAAC;YACF,IAAI,uBAAuB,EAAE;gBAC3B,MAAM,CAAC,eAAe,CAAC,MAAO,CAAC,0BAA0B;oBACvD,uBAAuB,CAAC;aAC3B;SACF;QAED,UAAU;QACV,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE;YAC7B,MAAM,CAAC,eAAe,CAAC,OAAO,GAAG,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;SAC1E;QAED,aAAa;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5D,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtE,IAAI,aAAa,KAAK,OAAO,EAAE;gBAC7B,MAAM,OAAO,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACzD,IAAI,OAAO,EAAE;oBACX,MAAM,cAAc,GAAG,kCAAkC,CACvD,OAAO,CAAC,UAAU,CAAC,EACnB,YAAY,CAAC,MAAM,CACpB,CAAC;oBACF,MAAM,WAAW,GAAkB;wBACjC,KAAK,EAAE;4BACL,cAAc,EACZ,IAAA,+BAAuB,EAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,IAAI,IAAI;4BAC5D,cAAc,EACZ,IAAA,+BAAuB,EAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,IAAI,KAAK;4BAC7D,cAAc,EACZ,IAAA,+BAAuB,EAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,IAAI,IAAI;4BAC5D,qBAAqB,EACnB,IAAA,+BAAuB,EAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;gCACzD,GAAG;4BACL,QAAQ,EAAE,cAA8B;yBACzC;qBACF,CAAC;oBAEF,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;iBACrD;aACF;iBAAM,IAAI,aAAa,KAAK,QAAQ,EAAE;gBACrC,MAAM,OAAO,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC1D,IAAI,OAAO,EAAE;oBACX,MAAM,cAAc,GAAG,kCAAkC,CACvD,OAAO,CAAC,UAAU,CAAC,EACnB,YAAY,CAAC,MAAM,CACpB,CAAC;oBACF,MAAM,YAAY,GAAkB;wBAClC,MAAM,EAAE;4BACN,QAAQ,EAAE,cAA8B;yBACzC;qBACF,CAAC;oBAEF,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBACtD;aACF;SACF;KACF;SAAM,IACL,cAAc;QACd,CAAC,cAAc,CAAC,UAAU,IAAI,IAAI;YAChC,cAAc,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,EACzC;QACA,UAAI,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;KACzE;AACH,CAAC;AAhHD,8CAgHC;AAED,SAAS,oBAAoB,CAAC,MAA0B;IACtD,IAAI,MAAM,IAAI,IAAI,EAAE;QAClB,MAAM,GAAG,EAAE,CAAC;KACb;IACD,MAAM,YAAY,GAAG,IAAA,+BAAuB,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC;IAExE,OAAO;QACL,OAAO,EAAE,YAAY;QACrB,OAAO,EAAE,IAAA,+BAAuB,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,YAAY;QACnE,KAAK,EAAE,IAAA,+BAAuB,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,YAAY;QAC/D,SAAS,EAAE,IAAA,+BAAuB,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,YAAY;QACvE,kBAAkB,EAChB,IAAA,+BAAuB,EAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,YAAY;QACvE,gBAAgB,EACd,IAAA,+BAAuB,EAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,YAAY;QACrE,0BAA0B,EACxB,IAAA,+BAAuB,EAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;YAC7D,YAAY;QACd,eAAe,EACb,IAAA,+BAAuB,EAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,YAAY;KACrE,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,SAA4B;IAChD,MAAM,eAAe,GAAqB,EAAE,CAAC;IAC7C,IAAI,SAAS,EAAE;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE;gBAC7C,eAAe,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;aAC1C;SACF;KACF;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,SAAgB,wBAAwB,CACtC,qBAAqD;IAErD,MAAM,yBAAyB,GAAG,IAAA,+BAAuB,EACvD,qBAAqB,CACtB,CAAC;IACF,QAAQ,yBAAyB,EAAE;QACjC,KAAK,YAAY;YACf,OAAO,kDAA6B,CAAC,UAAU,CAAC;QAClD,KAAK,OAAO;YACV,OAAO,kDAA6B,CAAC,KAAK,CAAC;QAC7C,KAAK,YAAY;YACf,OAAO,kDAA6B,CAAC,SAAS,CAAC;QACjD;YACE,OAAO,kDAA6B,CAAC,UAAU,CAAC;KACnD;AACH,CAAC;AAhBD,4DAgBC;AAED,SAAS,8BAA8B,CACrC,2BAAiE;IAEjE,MAAM,+BAA+B,GAAG,IAAA,+BAAuB,EAC7D,2BAA2B,CAC5B,CAAC;IACF,QAAQ,+BAA+B,EAAE;QACvC,KAAK,2BAA2B;YAC9B,OAAO,wDAAmC,CAAC,uBAAuB,CAAC;QACrE,KAAK,oCAAoC;YACvC,OAAO,wDAAmC,CAAC,+BAA+B,CAAC;QAC7E;YACE,OAAO,wDAAmC,CAAC,uBAAuB,CAAC;KACtE;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,QAA4B;IACvD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,cAAc,GAAuB,EAAE,CAAC;IAC5C,IAAI,CAAC,CAAC;IACN,IAAI,QAAQ,CAAC;IACb,IAAI,cAAc,CAAC;IACnB,IAAI,aAAa,CAAC;IAClB,IAAI,WAAW,CAAC;IAChB,IAAI,OAAO,CAAC;IACZ,IAAI,WAAW,CAAC;IAChB,IAAI,QAAQ,CAAC;IAEb,QAAQ,YAAY,EAAE;QACpB,KAAK,WAAW;YACd,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC1B,IAAI,CAAC,EAAE;gBACL,cAAc,GAAG;oBACf,SAAS,EAAE;wBACT,QAAQ,EACN,IAAA,+BAAuB,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC;4BACtC,kCAAkC;wBACpC,OAAO,EAAE,IAAA,+BAAuB,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;wBACvD,QAAQ,EACN,IAAA,+BAAuB,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,MAAM;4BAC/C,CAAC,CAAC,8BAAgB,CAAC,IAAI;4BACvB,CAAC,CAAC,8BAAgB,CAAC,QAAQ;wBAC/B,sBAAsB,EAAE,wBAAwB,CAC9C,CAAC,CAAC,wBAAwB,CAAC,CAC5B;wBACD,6BAA6B,EAAE,8BAA8B,CAC3D,CAAC,CAAC,+BAA+B,CAAC,CACnC;qBACF;iBACF,CAAC;gBAEF,WAAW,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;gBACxD,IAAI,WAAW,IAAI,cAAc,CAAC,SAAS,EAAE;oBAC3C,cAAc,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;iBACpD;gBACD,WAAW,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;gBACzD,IAAI,WAAW,IAAI,cAAc,CAAC,SAAS,EAAE;oBAC3C,cAAc,CAAC,SAAS,CAAC,YAAY,GAAG,WAAW,CAAC;iBACrD;gBACD,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzC,IAAI,OAAO,IAAI,cAAc,CAAC,SAAS,EAAE;oBACvC,cAAc,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;iBAC5C;gBAED,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;oBACZ,QAAQ,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;oBACxD,cAAc,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;oBAChE,aAAa,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;oBAE9D,MAAM,GAAG,GAAG,IAAA,wBAAgB,EAAC,QAAQ,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;oBACtE,IAAI,GAAG,EAAE;wBACP,cAAc,CAAC,SAAU,CAAC,GAAG,GAAG,GAAG,CAAC;qBACrC;iBACF;aACF;YACD,MAAM;QAER,KAAK,WAAW;YACd,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC1B,IAAI,CAAC,EAAE;gBACL,cAAc,GAAG;oBACf,SAAS,EAAE;wBACT,QAAQ,EACN,IAAA,+BAAuB,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,uBAAuB;wBACnE,OAAO,EAAE,IAAA,+BAAuB,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;wBACvD,sBAAsB,EAAE,wBAAwB,CAC9C,CAAC,CAAC,wBAAwB,CAAC,CAC5B;wBACD,6BAA6B,EAAE,8BAA8B,CAC3D,CAAC,CAAC,+BAA+B,CAAC,CACnC;qBACF;iBACF,CAAC;gBAEF,WAAW,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;gBACxD,IAAI,WAAW,IAAI,cAAc,CAAC,SAAS,EAAE;oBAC3C,cAAc,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;iBACpD;gBACD,WAAW,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;gBACzD,IAAI,WAAW,IAAI,cAAc,CAAC,SAAS,EAAE;oBAC3C,cAAc,CAAC,SAAS,CAAC,YAAY,GAAG,WAAW,CAAC;iBACrD;gBACD,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzC,IAAI,OAAO,IAAI,cAAc,CAAC,SAAS,EAAE;oBACvC,cAAc,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;iBAC5C;gBAED,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;oBACZ,QAAQ,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;oBACxD,cAAc,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;oBAChE,aAAa,GAAG,IAAA,+BAAuB,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;oBAC9D,QAAQ,GAAG,IAAA,gCAAwB,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;oBAE1D,MAAM,GAAG,GAAG,IAAA,wBAAgB,EAC1B,QAAQ,EACR,aAAa,EACb,cAAc,EACd,QAAQ,CACT,CAAC;oBACF,IAAI,GAAG,EAAE;wBACP,cAAc,CAAC,SAAU,CAAC,GAAG,GAAG,GAAG,CAAC;qBACrC;iBACF;aACF;YACD,MAAM;QAER,KAAK,uBAAuB;YAC1B,CAAC,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAAC;YACtC,IAAI,CAAC,EAAE;gBACL,cAAc,GAAG;oBACf,uBAAuB,EAAE;wBACvB,aAAa,EACX,IAAA,+BAAuB,EAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,QAAQ;wBACzD,sBAAsB,EAAE,wBAAwB,CAC9C,CAAC,CAAC,wBAAwB,CAAC,CAC5B;wBACD,6BAA6B,EAAE,8BAA8B,CAC3D,CAAC,CAAC,+BAA+B,CAAC,CACnC;qBACF;iBACF,CAAC;aACH;YACD,MAAM;QAER,KAAK,SAAS;YACZ,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YACxB,IAAI,CAAC,EAAE;gBACL,cAAc,GAAG;oBACf,OAAO,EAAE;wBACP,sBAAsB,EAAE,wBAAwB,CAC9C,CAAC,CAAC,wBAAwB,CAAC,CAC5B;wBACD,6BAA6B,EAAE,8BAA8B,CAC3D,CAAC,CAAC,+BAA+B,CAAC,CACnC;qBACF;iBACF,CAAC;aACH;YACD,MAAM;KACT;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAgB,gBAAgB,CAC9B,MAA0B,EAC1B,aAA4B;IAE5B,IAAI,aAAa,IAAI,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE;QACtD,MAAM,CAAC,cAAc,GAAG,IAAA,gEAA2C,GAAE,CAAC;QACtE,MAAM,cAAc,GAAG,IAAA,+BAAuB,EAC5C,aAAa,CAAC,iBAAiB,CAAC,CACjC,CAAC;QACF,IAAI,cAAc,EAAE;YAClB,QAAQ,cAAc,EAAE;gBACtB,KAAK,aAAa;oBAChB,MAAM,CAAC,cAAc,CAAC,eAAe,GAAG,mCAAc,CAAC,UAAU,CAAC;oBAClE,MAAM;gBACR,KAAK,WAAW;oBACd,MAAM,CAAC,cAAc,CAAC,eAAe,GAAG,mCAAc,CAAC,QAAQ,CAAC;oBAChE,MAAM;gBACR,KAAK,YAAY;oBACf,MAAM,CAAC,cAAc,CAAC,eAAe,GAAG,mCAAc,CAAC,SAAS,CAAC;oBACjE,MAAM;gBACR;oBACE,MAAM,CAAC,cAAc,CAAC,eAAe,GAAG,mCAAc,CAAC,UAAU,CAAC;oBAClE,MAAM;aACT;SACF;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,IAAI,UAAU,KAAK,MAAM,EAAE;gBACzB,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACpD,IAAI,OAAO,EAAE;oBACX,MAAM,QAAQ,GAAuB;wBACnC,wBAAwB,EAAE;4BACxB,IAAI,EACF,IAAA,+BAAuB,EACrB,OAAO,CAAC,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,CACtD,IAAI,WAAW;4BAClB,IAAI,EACF,IAAA,+BAAuB,EACrB,OAAO,CAAC,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,CACtD,IAAI,IAAI;4BACX,kBAAkB,EAChB,IAAA,gCAAwB,EACtB,OAAO,CAAC,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAC3C,oBAAoB,CACrB,CACF,IAAI,KAAK;4BACZ,mBAAmB,EACjB,IAAA,gCAAwB,EACtB,OAAO,CAAC,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAC3C,qBAAqB,CACtB,CACF,IAAI,KAAK;yBACb;qBACF,CAAC;oBACF,IACE,OAAO,CAAC,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAC3C,+BAA+B,CAChC,EACD;wBACA,QAAQ,CAAC,wBAAwB,CAAE,CAAC,6BAA6B;4BAC/D;gCACE,QAAQ,EACN,IAAA,mCAA2B,EACzB,OAAO,CAAC,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAC3C,+BAA+B,CAChC,EAAE,CAAC,UAAU,CAAC,CAChB,IAAI,EAAE;gCACT,QAAQ,EACN,IAAA,mCAA2B,EACzB,OAAO,CAAC,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAC3C,+BAA+B,CAChC,EAAE,CAAC,UAAU,CAAC,CAChB,IAAI,EAAE;6BACV,CAAC;qBACL;oBAED,IACE,OAAO,CAAC,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAC3C,sBAAsB,CACvB,EACD;wBACA,MAAM,EAAE,GAAG,IAAA,+BAAuB,EAChC,OAAO,CAAC,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAC3C,sBAAsB,CACvB,CACF,CAAC;wBACF,QAAQ,EAAE,EAAE;4BACV,KAAK,mCAAmC;gCACtC,QAAQ,CAAC,wBAAwB,CAAE,CAAC,oBAAoB;oCACtD,8DAAyC,CAAC,8BAA8B,CAAC;gCAC3E,MAAM;4BACR,KAAK,sCAAsC;gCACzC,QAAQ,CAAC,wBAAwB,CAAE,CAAC,oBAAoB;oCACtD,8DAAyC,CAAC,iCAAiC,CAAC;gCAC9E,MAAM;4BACR,KAAK,gCAAgC;gCACnC,QAAQ,CAAC,wBAAwB,CAAE,CAAC,oBAAoB;oCACtD,8DAAyC,CAAC,0BAA0B,CAAC;gCACvE,MAAM;4BACR,KAAK,gBAAgB;gCACnB,QAAQ,CAAC,wBAAwB,CAAE,CAAC,oBAAoB;oCACtD,8DAAyC,CAAC,aAAa,CAAC;gCAC1D,MAAM;yBACT;qBACF;oBACD,MAAM,UAAU,GAAiB;wBAC/B,IAAI,EAAE;4BACJ,QAAQ,EAAE,QAAQ;4BAClB,kBAAkB,EAAE,oBAAoB,CACtC,OAAO,CAAC,oBAAoB,CAAC,CAC9B;yBACF;qBACF,CAAC;oBACF,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;oBAC7C,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE;wBACnC,UAAU,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;qBAC/B;oBACD,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAChD;aACF;iBAAM,IAAI,UAAU,KAAK,UAAU,EAAE;gBACpC,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;gBACxD,IAAI,OAAO,EAAE;oBACX,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;oBAEhE,MAAM,cAAc,GAAiB;wBACnC,QAAQ,EAAE;4BACR,QAAQ,EAAE,cAAc;4BACxB,kBAAkB,EAAE,oBAAoB,CACtC,OAAO,CAAC,oBAAoB,CAAC,CAC9B;4BACD,QAAQ,EAAE,IAAA,+BAAuB,EAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK;4BAC/D,OAAO,EAAE,IAAA,+BAAuB,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;yBAC9D;qBACF,CAAC;oBACF,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;oBAC7C,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,QAAQ,EAAE;wBAC3C,cAAc,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;qBACvC;oBACD,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;iBACpD;aACF;SACF;QAED,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/D,MAAM,CAAC,cAAc,CAAC,KAAK,GAAG,EAAE,CAAC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACtD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1C,MAAM,IAAI,GAAS,EAAE,CAAC;gBACtB,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;oBACvB,MAAM,QAAQ,GAAiB,EAAE,CAAC;oBAClC,MAAM,cAAc,GAAG,IAAA,+BAAuB,EAC5C,OAAO,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC,CACvC,CAAC;oBACF,IAAI,cAAc,EAAE;wBAClB,QAAQ,CAAC,eAAe,GAAG,cAAc,CAAC;qBAC3C;oBAED,MAAM,IAAI,GAAG,IAAA,+BAAuB,EAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oBAClE,IAAI,IAAI,EAAE;wBACR,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;qBACtB;oBAED,MAAM,SAAS,GAAG,IAAA,+BAAuB,EACvC,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAClC,CAAC;oBACF,IAAI,SAAS,EAAE;wBACb,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC;qBACjC;oBAED,MAAM,YAAY,GAAG,IAAA,+BAAuB,EAC1C,OAAO,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CACrC,CAAC;oBACF,IAAI,YAAY,EAAE;wBAChB,QAAQ,CAAC,aAAa,GAAG,YAAY,CAAC;qBACvC;oBAED,MAAM,cAAc,GAAG,IAAA,+BAAuB,EAC5C,OAAO,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,CACxC,CAAC;oBACF,IAAI,cAAc,EAAE;wBAClB,QAAQ,CAAC,gBAAgB,GAAG,cAAc,CAAC;qBAC5C;oBAED,MAAM,cAAc,GAAG,IAAA,+BAAuB,EAC5C,OAAO,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC,CACvC,CAAC;oBACF,IAAI,cAAc,EAAE;wBAClB,QAAQ,cAAc,EAAE;4BACtB,KAAK,SAAS;gCACZ,QAAQ,CAAC,eAAe,GAAG,mCAAc,CAAC,OAAO,CAAC;gCAClD,MAAM;4BACR,KAAK,OAAO;gCACV,QAAQ,CAAC,eAAe,GAAG,mCAAc,CAAC,KAAK,CAAC;gCAChD,MAAM;4BACR,KAAK,WAAW;gCACd,QAAQ,CAAC,eAAe,GAAG,mCAAc,CAAC,SAAS,CAAC;gCACpD,MAAM;4BACR,KAAK,oBAAoB;gCACvB,QAAQ,CAAC,eAAe,GAAG,mCAAc,CAAC,iBAAiB,CAAC;gCAC5D,MAAM;4BACR,KAAK,kBAAkB;gCACrB,QAAQ,CAAC,eAAe,GAAG,mCAAc,CAAC,eAAe,CAAC;gCAC1D,MAAM;4BACR,KAAK,4BAA4B;gCAC/B,QAAQ,CAAC,eAAe;oCACtB,mCAAc,CAAC,uBAAuB,CAAC;gCACzC,MAAM;4BACR,KAAK,iBAAiB;gCACpB,QAAQ,CAAC,eAAe,GAAG,mCAAc,CAAC,aAAa,CAAC;gCACxD,MAAM;yBACT;qBACF;oBAED,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;wBACpC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;qBAC1B;iBACF;gBACD,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;oBACrB,MAAM,MAAM,GAAe,EAAE,CAAC;oBAC9B,MAAM,IAAI,GAAG,IAAA,+BAAuB,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oBAChE,IAAI,IAAI,EAAE;wBACR,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;qBACpB;oBAED,MAAM,WAAW,GAAG,IAAA,+BAAuB,EACzC,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CACjC,CAAC;oBACF,IAAI,WAAW,EAAE;wBACf,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;qBAClC;oBAED,MAAM,2BAA2B,GAAG,IAAA,+BAAuB,EACzD,OAAO,CAAC,QAAQ,CAAC,CAAC,+BAA+B,CAAC,CACnD,CAAC;oBACF,IAAI,2BAA2B,EAAE;wBAC/B,MAAM,CAAC,6BAA6B,GAAG,2BAA2B,CAAC;qBACpE;oBAED,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE;wBACvC,MAAM,CAAC,cAAc,GAAG;4BACtB,QAAQ,EACN,IAAA,mCAA2B,EACzB,OAAO,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,CAChD,IAAI,EAAE;4BACT,QAAQ,EACN,IAAA,mCAA2B,EACzB,OAAO,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,CAChD,IAAI,EAAE;yBACV,CAAC;qBACH;oBACD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC;oBAChD,IAAI,MAAM,EAAE;wBACV,MAAM,WAAW,GAAgB,EAAE,CAAC;wBACpC,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE;4BACrB,WAAW,CAAC,OAAO,GAAG,EAAE,CAAC;yBAC1B;wBACD,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;4BAClB,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC;yBACvB;wBACD,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE;4BACxB,WAAW,CAAC,UAAU,GAAG,EAAE,CAAC;yBAC7B;wBACD,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;4BACjB,WAAW,CAAC,GAAG,GAAG,EAAE,CAAC;yBACtB;wBACD,IAAI,MAAM,CAAC,2BAA2B,CAAC,EAAE;4BACvC,WAAW,CAAC,yBAAyB,GAAG;gCACtC,UAAU,EAAE,IAAA,mCAA2B,EACrC,MAAM,CAAC,2BAA2B,CAAC,CAAC,YAAY,CAAC,CAClD,IAAI;oCACH,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;oCAC1D,IAAI,EAAE,KAAK;iCACZ;gCACD,cAAc,EACZ,IAAA,gCAAwB,EACtB,MAAM,CAAC,2BAA2B,CAAC,CAAC,gBAAgB,CAAC,CACtD,KAAK,KAAK;oCACT,CAAC,CAAC,KAAK;oCACP,CAAC,CAAC,IAAI;6BACX,CAAC;yBACH;wBACD,IAAI,MAAM,CAAC,oCAAoC,CAAC,EAAE;4BAChD,WAAW,CAAC,kCAAkC,GAAG;gCAC/C,cAAc,EACZ,IAAA,gCAAwB,EACtB,MAAM,CAAC,oCAAoC,CAAC,CAC1C,gBAAgB,CACjB,CACF,KAAK,KAAK;oCACT,CAAC,CAAC,KAAK;oCACP,CAAC,CAAC,IAAI;6BACX,CAAC;4BACF,MAAM,QAAQ,GAAG,IAAA,+BAAuB,EACtC,MAAM,CAAC,oCAAoC,CAAC,CAAC,WAAW,CAAC,CAC1D,CAAC;4BACF,IAAI,QAAQ,EAAE;gCACZ,WAAW,CAAC,kCAAkC,CAAC,SAAS;oCACtD,QAAQ,CAAC;6BACZ;4BAED,MAAM,OAAO,GAAG,IAAA,+BAAuB,EACrC,MAAM,CAAC,oCAAoC,CAAC,CAAC,UAAU,CAAC,CACzD,CAAC;4BACF,IAAI,OAAO,EAAE;gCACX,WAAW,CAAC,kCAAkC,CAAC,QAAQ;oCACrD,OAAO,CAAC;6BACX;yBACF;wBACD,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;qBAClC;oBACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;wBAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;qBACtB;iBACF;gBACD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACxC;SACF;KACF;SAAM,IACL,aAAa;QACb,CAAC,aAAa,CAAC,OAAO,IAAI,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,EACrE;QACA,UAAI,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;KACrE;AACH,CAAC;AApUD,4CAoUC;AAED,SAAgB,WAAW,CACzB,QAAyB;IAEzB,MAAM,YAAY,GAAG,IAAA,+BAAuB,EAAC,QAAQ,CAAC,CAAC;IACvD,QAAQ,YAAY,EAAE;QACpB,KAAK,OAAO;YACV,OAAO,4BAAc,CAAC,KAAK,CAAC;QAC9B,KAAK,QAAQ;YACX,OAAO,4BAAc,CAAC,MAAM,CAAC;QAC/B,KAAK,QAAQ;YACX,OAAO,4BAAc,CAAC,MAAM,CAAC;QAC/B,KAAK,QAAQ;YACX,OAAO,4BAAc,CAAC,MAAM,CAAC;QAC/B,KAAK,MAAM;YACT,OAAO,4BAAc,CAAC,IAAI,CAAC;QAC7B,KAAK,OAAO;YACV,OAAO,4BAAc,CAAC,KAAK,CAAC;QAC9B,KAAK,OAAO;YACV,OAAO,4BAAc,CAAC,KAAK,CAAC;QAC9B,KAAK,OAAO;YACV,OAAO,4BAAc,CAAC,KAAK,CAAC;QAC9B,KAAK,MAAM;YACT,OAAO,4BAAc,CAAC,IAAI,CAAC;QAC7B,KAAK,OAAO;YACV,OAAO,4BAAc,CAAC,KAAK,CAAC;QAC9B,KAAK,OAAO;YACV,OAAO,4BAAc,CAAC,KAAK,CAAC;QAC9B,KAAK,OAAO;YACV,OAAO,4BAAc,CAAC,KAAK,CAAC;QAC9B,KAAK,OAAO;YACV,OAAO,4BAAc,CAAC,KAAK,CAAC;QAC9B,KAAK,QAAQ;YACX,OAAO,4BAAc,CAAC,MAAM,CAAC;QAC/B,KAAK,QAAQ;YACX,OAAO,4BAAc,CAAC,MAAM,CAAC;QAC/B,KAAK,QAAQ;YACX,OAAO,4BAAc,CAAC,MAAM,CAAC;QAC/B,KAAK,OAAO;YACV,OAAO,4BAAc,CAAC,KAAK,CAAC;QAC9B,KAAK,QAAQ;YACX,OAAO,4BAAc,CAAC,MAAM,CAAC;QAC/B,KAAK,QAAQ;YACX,OAAO,4BAAc,CAAC,MAAM,CAAC;QAC/B,KAAK,QAAQ;YACX,OAAO,4BAAc,CAAC,MAAM,CAAC;QAC/B,KAAK,OAAO;YACV,OAAO,4BAAc,CAAC,KAAK,CAAC;QAC9B,KAAK,QAAQ;YACX,OAAO,4BAAc,CAAC,MAAM,CAAC;QAC/B,KAAK,QAAQ;YACX,OAAO,4BAAc,CAAC,MAAM,CAAC;QAC/B,KAAK,QAAQ;YACX,OAAO,4BAAc,CAAC,MAAM,CAAC;QAC/B;YACE,OAAO,SAAS,CAAC;KACpB;AACH,CAAC;AAxDD,kCAwDC;AAED,SAAgB,iBAAiB,CAC/B,MAA0B,EAC1B,cAA8B;IAE9B,IAAI,cAAc,IAAI,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE;QAC3D,MAAM,CAAC,eAAe,GAAG,IAAA,kEAA4C,GAAE,CAAC;QACxE,SAAS;QACT,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE;YAC5B,MAAM,yBAAyB,GAAG,IAAA,+BAAuB,EACvD,cAAc,CAAC,QAAQ,CAAC,CAAC,8BAA8B,CAAC,CACzD,CAAC;YACF,MAAM,mBAAmB,GAAG,IAAA,+BAAuB,EACjD,cAAc,CAAC,QAAQ,CAAC,CAAC,uBAAuB,CAAC,CAClD,CAAC;YACF,IAAI,yBAAyB,IAAI,mBAAmB,EAAE;gBACpD,IAAI,yBAAyB,EAAE;oBAC7B,MAAM,CAAC,eAAe,CAAC,MAAO,CAAC,4BAA4B;wBACzD,yBAAyB,CAAC;iBAC7B;gBACD,IAAI,mBAAmB,EAAE;oBACvB,MAAM,CAAC,eAAe,CAAC,MAAO,CAAC,qBAAqB;wBAClD,mBAAmB,CAAC;iBACvB;aACF;SACF;QAED,aAAa;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5D,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtE,IAAI,aAAa,KAAK,OAAO,EAAE;gBAC7B,MAAM,OAAO,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACzD,IAAI,OAAO,EAAE;oBACX,MAAM,cAAc,GAAG,kCAAkC,CACvD,OAAO,CAAC,UAAU,CAAC,EACnB,YAAY,CAAC,MAAM,CACpB,CAAC;oBACF,MAAM,WAAW,GAAuB;wBACtC,KAAK,EAAE;4BACL,cAAc,EACZ,IAAA,+BAAuB,EAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,IAAI,IAAI;4BAC5D,cAAc,EACZ,IAAA,+BAAuB,EAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,IAAI,KAAK;4BAC7D,cAAc,EACZ,IAAA,+BAAuB,EAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,IAAI,IAAI;4BAC5D,qBAAqB,EACnB,IAAA,+BAAuB,EAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;gCACzD,GAAG;4BACL,QAAQ,EAAE,cAAmC;yBAC9C;qBACF,CAAC;oBAEF,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;iBACrD;aACF;iBAAM,IAAI,aAAa,KAAK,QAAQ,EAAE;gBACrC,MAAM,OAAO,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC1D,IAAI,OAAO,EAAE;oBACX,MAAM,cAAc,GAAG,kCAAkC,CACvD,OAAO,CAAC,UAAU,CAAC,EACnB,YAAY,CAAC,MAAM,CACpB,CAAC;oBACF,MAAM,YAAY,GAAuB;wBACvC,MAAM,EAAE;4BACN,QAAQ,EAAE,cAAc;yBACzB;qBACF,CAAC;oBAEF,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBACtD;aACF;SACF;QAED,kCAAkC;QAClC,IAAI,cAAc,CAAC,iCAAiC,CAAC,EAAE;YACrD,MAAM,qBAAqB,GAAG,IAAA,gCAAwB,EACpD,cAAc,CAAC,iCAAiC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CACnE,SAAS,CACV,CACF,CAAC;YACF,IAAI,qBAAqB,IAAI,qBAAqB,KAAK,KAAK,EAAE;gBAC5D,MAAM,CAAC,eAAe,CAAC,iCAAiC,CAAC,GAAG;oBAC1D,cAAc,EAAE;wBACd,OAAO,EAAE,qBAAqB;qBAC/B;iBACF,CAAC;aACH;YAED,IACE,cAAc,CAAC,iCAAiC,CAAC,CAAC,OAAO;gBACzD,cAAc,CAAC,iCAAiC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EACpE;gBACA,MAAM,OAAO,GAAG,EAAE,CAAC;gBACnB,KACE,IAAI,CAAC,GAAG,CAAC,EACT,CAAC,GAAG,cAAc,CAAC,iCAAiC,CAAC,CAAC,OAAO,CAAC,MAAM,EACpE,CAAC,EAAE,EACH;oBACA,MAAM,MAAM,GACV,cAAc,CAAC,iCAAiC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC/D,IAAI,OAAO,GAAG,KAAK,CAAC;oBACpB,IAAI,UAAU,CAAC;oBACf,IAAI,WAAW,CAAC;oBAChB,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE;wBACpB,OAAO;4BACL,IAAA,gCAAwB,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC;wBACjE,UAAU,GAAG,IAAA,gCAAwB,EACnC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAChC,CAAC;wBACF,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,EAAE;4BACxC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;yBACjE;qBACF;oBACD,MAAM,IAAI,GAAG,IAAA,+BAAuB,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;oBACrD,IAAI,IAAI,EAAE;wBACR,MAAM,SAAS,GAAuC;4BACpD,IAAI,EAAE,IAAI;4BACV,MAAM,EAAE;gCACN,OAAO,EAAE,OAAO;6BACjB;yBACF,CAAC;wBACF,IAAI,UAAU,KAAK,SAAS,EAAE;4BAC5B,SAAS,CAAC,MAAO,CAAC,WAAW,GAAG,UAAU,CAAC;yBAC5C;wBACD,IAAI,WAAW,KAAK,SAAS,EAAE;4BAC7B,SAAS,CAAC,MAAO,CAAC,gBAAgB,GAAG,WAAW,CAAC;yBAClD;wBAED,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBACzB;iBACF;gBACD,IAAI,MAAM,CAAC,eAAe,CAAC,iCAAiC,CAAC,IAAI,IAAI,EAAE;oBACrE,MAAM,CAAC,eAAe,CAAC,iCAAiC,CAAC,GAAG,EAAE,CAAC;iBAChE;gBACD,MAAM,CAAC,eAAe,CAAC,iCAAiC,CAAC,CAAC,OAAO;oBAC/D,OAAO,CAAC;aACX;SACF;KACF;SAAM,IACL,cAAc;QACd,CAAC,cAAc,CAAC,UAAU,IAAI,IAAI;YAChC,cAAc,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,EACzC;QACA,UAAI,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;KACzE;AACH,CAAC;AA/ID,8CA+IC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { diagLogLevelFromString, getStringFromEnv } from '@opentelemetry/core';\nimport type {\n AttributeLimits,\n Propagator,\n ConfigurationModel,\n} from './models/configModel';\nimport { initializeDefaultConfiguration } from './models/configModel';\nimport type { ConfigFactory } from './IConfigFactory';\nimport * as fs from 'fs';\nimport * as yaml from 'yaml';\nimport {\n getBooleanFromConfigFile,\n getBooleanListFromConfigFile,\n getGrpcTlsConfig,\n getHttpTlsConfig,\n getNumberFromConfigFile,\n getNumberListFromConfigFile,\n getStringFromConfigFile,\n getStringListFromConfigFile,\n} from './utils';\nimport type { NameStringValuePair } from './models/commonModel';\nimport { OtlpHttpEncoding, SeverityNumber } from './models/commonModel';\nimport type {\n ExperimentalComposableSampler,\n Sampler,\n SpanExporter,\n SpanProcessor,\n TracerProvider,\n} from './models/tracerProviderModel';\nimport { initializeDefaultTracerProviderConfiguration } from './models/tracerProviderModel';\nimport type {\n ExperimentalLoggerMatcherAndConfig,\n LoggerProvider,\n LogRecordExporter,\n LogRecordProcessor,\n} from './models/loggerProviderModel';\nimport { initializeDefaultLoggerProviderConfiguration } from './models/loggerProviderModel';\nimport type {\n AttributeNameValue,\n ExperimentalResourceDetection,\n ExperimentalResourceDetector,\n} from './models/resourceModel';\nimport type {\n Aggregation,\n CardinalityLimits,\n MeterProvider,\n MetricProducer,\n MetricReader,\n PullMetricExporter,\n PushMetricExporter,\n View,\n ViewSelector,\n ViewStream,\n} from './models/meterProviderModel';\nimport {\n ExemplarFilter,\n ExperimentalPrometheusTranslationStrategy,\n ExporterDefaultHistogramAggregation,\n ExporterTemporalityPreference,\n initializeDefaultMeterProviderConfiguration,\n InstrumentType,\n} from './models/meterProviderModel';\nimport { diag } from '@opentelemetry/api';\n\nexport class FileConfigFactory implements ConfigFactory {\n private _config: ConfigurationModel;\n\n constructor() {\n this._config = initializeDefaultConfiguration();\n parseConfigFile(this._config);\n }\n\n getConfigModel(): ConfigurationModel {\n return this._config;\n }\n}\n\nexport function hasValidConfigFile(): boolean {\n const configFile = getStringFromEnv('OTEL_CONFIG_FILE');\n if (configFile) {\n if (\n !(configFile.endsWith('.yaml') || configFile.endsWith('.yml')) ||\n !fs.existsSync(configFile)\n ) {\n diag.warn(\n `Config file ${configFile} set on OTEL_CONFIG_FILE is not valid`\n );\n return false;\n }\n return true;\n }\n return false;\n}\n\nexport function parseConfigFile(config: ConfigurationModel) {\n const supportedFileVersions = ['1.0-rc.3'];\n const configFile = getStringFromEnv('OTEL_CONFIG_FILE') || '';\n const file = fs.readFileSync(configFile, 'utf8');\n const parsedContent = yaml.parse(file);\n\n if (\n parsedContent['file_format'] &&\n supportedFileVersions.includes(parsedContent['file_format'])\n ) {\n const disabled = getBooleanFromConfigFile(parsedContent['disabled']);\n if (disabled !== undefined) {\n config.disabled = disabled;\n }\n\n const logLevel = getNumberFromConfigFile(\n diagLogLevelFromString(parsedContent['log_level'])\n );\n if (logLevel) {\n config.log_level = logLevel;\n }\n\n if (parsedContent['resource']) {\n if (config.resource == null) {\n config.resource = {};\n }\n const schemaUrl = getStringFromConfigFile(\n parsedContent['resource']?.['schema_url']\n );\n if (schemaUrl) {\n config.resource.schema_url = schemaUrl;\n }\n }\n\n setResourceAttributes(\n config,\n parsedContent['resource']?.['attributes'],\n parsedContent['resource']?.['attributes_list']\n );\n\n const detectionConfig =\n parsedContent['resource']?.['detection/development'];\n if (detectionConfig) {\n config.resource!['detection/development'] =\n parseDetectionDevelopment(detectionConfig);\n }\n setAttributeLimits(config, parsedContent['attribute_limits']);\n setPropagator(config, parsedContent['propagator']);\n setTracerProvider(config, parsedContent['tracer_provider']);\n setMeterProvider(config, parsedContent['meter_provider']);\n setLoggerProvider(config, parsedContent['logger_provider']);\n } else {\n diag.warn(\n `Unsupported File Format: ${parsedContent['file_format']}. It must be one of the following: ${supportedFileVersions}`\n );\n }\n}\n\nexport function setResourceAttributes(\n config: ConfigurationModel,\n attributes: AttributeNameValue[],\n attributeList: string\n) {\n if (attributes || attributeList) {\n const addedKeys = [];\n if (config.resource == null) {\n config.resource = {};\n }\n if (getStringFromConfigFile(attributeList)) {\n config.resource.attributes_list = getStringFromConfigFile(attributeList);\n }\n\n const list = getStringListFromConfigFile(attributeList);\n if ((list && list.length > 0) || (attributes && attributes.length > 0)) {\n config.resource.attributes = [];\n\n if (attributes) {\n for (let i = 0; i < attributes.length; i++) {\n const att = attributes[i];\n let value = att['value'];\n switch (att['type']) {\n case 'bool':\n value = getBooleanFromConfigFile(value);\n break;\n case 'bool_array':\n value = getBooleanListFromConfigFile(value);\n break;\n case 'int':\n case 'double':\n value = getNumberFromConfigFile(value);\n break;\n case 'int_array':\n case 'double_array':\n value = getNumberListFromConfigFile(value);\n break;\n case 'string_array':\n value = getStringListFromConfigFile(value);\n break;\n default:\n value = getStringFromConfigFile(value);\n break;\n }\n\n const key = getStringFromConfigFile(att['name']) ?? '';\n config.resource.attributes.push({\n name: key,\n value: value,\n type: att['type'] ?? 'string',\n });\n addedKeys.push(key);\n }\n }\n\n if (list) {\n for (let i = 0; i < list.length; i++) {\n const element = list[i].split('=');\n if (!addedKeys.includes(element[0])) {\n config.resource.attributes.push({\n name: element[0],\n value: element[1],\n type: 'string',\n });\n }\n }\n }\n }\n }\n}\n\nfunction parseDetectionDevelopment(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n detection: any\n): ExperimentalResourceDetection {\n const result: ExperimentalResourceDetection = {};\n\n if (detection['attributes']) {\n result.attributes = {};\n const included = detection['attributes']['included'];\n if (Array.isArray(included)) {\n result.attributes.included = included.filter(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (v: any) => typeof v === 'string'\n );\n }\n const excluded = detection['attributes']['excluded'];\n if (Array.isArray(excluded)) {\n result.attributes.excluded = excluded.filter(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (v: any) => typeof v === 'string'\n );\n }\n }\n\n if (Array.isArray(detection['detectors'])) {\n result.detectors = [];\n for (let i = 0; i < detection['detectors'].length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const d: any = detection['detectors'][i];\n if (typeof d !== 'object' || d === null) {\n continue;\n }\n const detector: ExperimentalResourceDetector = {};\n if ('container' in d) detector.container = d.container ?? {};\n if ('env' in d) detector.env = d.env ?? {};\n if ('host' in d) detector.host = d.host ?? {};\n if ('os' in d) detector.os = d.os ?? {};\n if ('process' in d) detector.process = d.process ?? {};\n if ('service' in d) detector.service = d.service ?? {};\n result.detectors.push(detector);\n }\n }\n\n return result;\n}\n\nexport function setAttributeLimits(\n config: ConfigurationModel,\n attrLimits: AttributeLimits\n) {\n if (attrLimits) {\n if (config.attribute_limits == null) {\n config.attribute_limits = {\n attribute_count_limit: 128,\n };\n }\n const lengthLimit = getNumberFromConfigFile(\n attrLimits['attribute_value_length_limit']\n );\n if (lengthLimit) {\n config.attribute_limits.attribute_value_length_limit = lengthLimit;\n }\n const countLimit = getNumberFromConfigFile(\n attrLimits['attribute_count_limit']\n );\n if (countLimit) {\n config.attribute_limits.attribute_count_limit = countLimit;\n }\n }\n}\n\nexport function setPropagator(\n config: ConfigurationModel,\n propagator: Propagator\n): void {\n if (propagator && (propagator.composite || propagator.composite_list)) {\n const auxList = [];\n const composite = [];\n if (propagator.composite) {\n for (let i = 0; i < propagator.composite.length; i++) {\n const key = Object.keys(propagator.composite[i])[0];\n auxList.push(key);\n composite.push({ [key]: null });\n }\n }\n\n const compositeList = getStringListFromConfigFile(\n propagator['composite_list']\n );\n if (compositeList) {\n for (let i = 0; i < compositeList.length; i++) {\n if (!auxList.includes(compositeList[i])) {\n composite.push({ [compositeList[i]]: null });\n }\n }\n }\n if (composite.length > 0) {\n if (config.propagator == null) {\n config.propagator = {};\n }\n config.propagator.composite = composite;\n }\n\n const compositeListString = getStringFromConfigFile(\n propagator['composite_list']\n );\n if (compositeListString) {\n config.propagator!.composite_list = compositeListString;\n } else if (auxList.length > 0) {\n // Generate composite_list from the composite entries\n config.propagator!.composite_list = auxList.join(',');\n }\n }\n}\n\nfunction parseComposableSampler(\n sampler: ExperimentalComposableSampler\n): ExperimentalComposableSampler {\n const samplerType = Object.keys(sampler)[0];\n let parsedSampler: ExperimentalComposableSampler = {};\n\n switch (samplerType) {\n case 'always_on':\n parsedSampler = { always_on: sampler['always_on'] ?? undefined };\n break;\n\n case 'always_off':\n parsedSampler = { always_off: sampler['always_off'] ?? undefined };\n break;\n\n case 'parent_threshold': {\n const s = sampler['parent_threshold'];\n if (s?.root) {\n parsedSampler = {\n parent_threshold: { root: parseComposableSampler(s.root) },\n };\n }\n break;\n }\n\n case 'probability': {\n const s = sampler['probability'];\n parsedSampler = {\n probability: {\n ratio: getNumberFromConfigFile(s?.ratio) ?? 1.0,\n },\n };\n break;\n }\n\n case 'rule_based': {\n const rb = sampler['rule_based'];\n if (rb) {\n parsedSampler = { rule_based: {} };\n if (rb.rules) {\n parsedSampler.rule_based!.rules = rb.rules.map(rule => ({\n ...rule,\n sampler: rule.sampler ? parseComposableSampler(rule.sampler) : {},\n }));\n }\n }\n break;\n }\n }\n\n return parsedSampler;\n}\n\nfunction parseSampler(sampler: Sampler): Sampler {\n const samplerType = Object.keys(sampler)[0];\n let parsedSampler: Sampler = {};\n\n switch (samplerType) {\n case 'always_on':\n parsedSampler = { always_on: sampler['always_on'] ?? undefined };\n break;\n\n case 'always_off':\n parsedSampler = { always_off: sampler['always_off'] ?? undefined };\n break;\n\n case 'trace_id_ratio_based': {\n const s = sampler['trace_id_ratio_based'];\n parsedSampler = {\n trace_id_ratio_based: {\n ratio: getNumberFromConfigFile(s?.ratio) ?? 1.0,\n },\n };\n break;\n }\n\n case 'parent_based': {\n const s = sampler['parent_based'];\n if (s) {\n parsedSampler = { parent_based: {} };\n if (s.root) {\n parsedSampler.parent_based!.root = parseSampler(s.root);\n }\n if (s.remote_parent_sampled) {\n parsedSampler.parent_based!.remote_parent_sampled = parseSampler(\n s.remote_parent_sampled\n );\n }\n if (s.remote_parent_not_sampled) {\n parsedSampler.parent_based!.remote_parent_not_sampled = parseSampler(\n s.remote_parent_not_sampled\n );\n }\n if (s.local_parent_sampled) {\n parsedSampler.parent_based!.local_parent_sampled = parseSampler(\n s.local_parent_sampled\n );\n }\n if (s.local_parent_not_sampled) {\n parsedSampler.parent_based!.local_parent_not_sampled = parseSampler(\n s.local_parent_not_sampled\n );\n }\n }\n break;\n }\n\n case 'probability/development': {\n const s = sampler['probability/development'];\n parsedSampler = {\n 'probability/development': {\n ratio: getNumberFromConfigFile(s?.ratio) ?? 1.0,\n },\n };\n break;\n }\n\n case 'composite/development': {\n const s = sampler['composite/development'];\n if (s) {\n parsedSampler = {\n 'composite/development': parseComposableSampler(s),\n };\n }\n break;\n }\n }\n\n return parsedSampler;\n}\n\nfunction getConfigHeaders(\n h?: NameStringValuePair[]\n): NameStringValuePair[] | null {\n if (h) {\n const headers: NameStringValuePair[] = [];\n for (let i = 0; i < h.length; i++) {\n const element = h[i];\n headers.push({\n name: element['name'],\n value: element['value'],\n });\n }\n if (headers.length > 0) {\n return headers;\n }\n }\n return null;\n}\n\nenum ProviderType {\n TRACER = 0,\n METER = 1,\n LOGGER = 2,\n}\n\nfunction parseConfigSpanOrLogRecordExporter(\n exporter: SpanExporter | LogRecordExporter,\n providerType: ProviderType\n): SpanExporter | LogRecordExporter {\n const exporterType = Object.keys(exporter)[0];\n let parsedExporter: SpanExporter | LogRecordExporter = {};\n let e;\n let certFile;\n let clientCertFile;\n let clientKeyFile;\n let compression;\n let headers;\n let headersList;\n let insecure;\n let endpoint;\n\n switch (providerType) {\n case ProviderType.TRACER:\n endpoint = 'http://localhost:4318/v1/traces';\n parsedExporter = parsedExporter as SpanExporter;\n break;\n case ProviderType.LOGGER:\n endpoint = 'http://localhost:4318/v1/logs';\n parsedExporter = parsedExporter as LogRecordExporter;\n break;\n }\n\n switch (exporterType) {\n case 'otlp_http':\n e = exporter['otlp_http'];\n if (e) {\n parsedExporter = {\n otlp_http: {\n endpoint: getStringFromConfigFile(e['endpoint']) ?? endpoint,\n timeout: getNumberFromConfigFile(e['timeout']) ?? 10000,\n encoding:\n getStringFromConfigFile(e['encoding']) === 'json'\n ? OtlpHttpEncoding.JSON\n : OtlpHttpEncoding.Protobuf,\n },\n };\n compression = getStringFromConfigFile(e['compression']);\n if (compression && parsedExporter.otlp_http) {\n parsedExporter.otlp_http.compression = compression;\n }\n headersList = getStringFromConfigFile(e['headers_list']);\n if (headersList && parsedExporter.otlp_http) {\n parsedExporter.otlp_http.headers_list = headersList;\n }\n headers = getConfigHeaders(e['headers']);\n if (headers && parsedExporter.otlp_http) {\n parsedExporter.otlp_http.headers = headers;\n }\n\n if (e['tls']) {\n certFile = getStringFromConfigFile(e['tls']['ca_file']);\n clientCertFile = getStringFromConfigFile(e['tls']['cert_file']);\n clientKeyFile = getStringFromConfigFile(e['tls']['key_file']);\n\n const tls = getHttpTlsConfig(certFile, clientKeyFile, clientCertFile);\n if (tls) {\n parsedExporter.otlp_http!.tls = tls;\n }\n }\n }\n break;\n\n case 'otlp_grpc':\n e = exporter['otlp_grpc'];\n if (e) {\n parsedExporter = {\n otlp_grpc: {\n endpoint:\n getStringFromConfigFile(e['endpoint']) ?? 'http://localhost:4317',\n timeout: getNumberFromConfigFile(e['timeout']) ?? 10000,\n },\n };\n\n compression = getStringFromConfigFile(e['compression']);\n if (compression && parsedExporter.otlp_grpc) {\n parsedExporter.otlp_grpc.compression = compression;\n }\n headersList = getStringFromConfigFile(e['headers_list']);\n if (headersList && parsedExporter.otlp_grpc) {\n parsedExporter.otlp_grpc.headers_list = headersList;\n }\n headers = getConfigHeaders(e['headers']);\n if (headers && parsedExporter.otlp_grpc) {\n parsedExporter.otlp_grpc.headers = headers;\n }\n\n if (e['tls']) {\n certFile = getStringFromConfigFile(e['tls']['ca_file']);\n clientCertFile = getStringFromConfigFile(e['tls']['cert_file']);\n clientKeyFile = getStringFromConfigFile(e['tls']['key_file']);\n insecure = getBooleanFromConfigFile(e['tls']['insecure']);\n\n const tls = getGrpcTlsConfig(\n certFile,\n clientKeyFile,\n clientCertFile,\n insecure\n );\n if (tls) {\n parsedExporter.otlp_grpc!.tls = tls;\n }\n }\n }\n break;\n\n case 'otlp_file/development':\n e = exporter['otlp_file/development'];\n if (e) {\n parsedExporter = {\n 'otlp_file/development': {\n output_stream:\n getStringFromConfigFile(e['output_stream']) ?? 'stdout',\n },\n };\n }\n break;\n\n case 'console':\n parsedExporter = {\n console: {},\n };\n break;\n }\n\n return parsedExporter;\n}\n\nexport function setTracerProvider(\n config: ConfigurationModel,\n tracerProvider: TracerProvider\n): void {\n if (tracerProvider && tracerProvider.processors?.length > 0) {\n config.tracer_provider = initializeDefaultTracerProviderConfiguration();\n // Limits\n if (tracerProvider['limits']) {\n const attributeValueLengthLimit = getNumberFromConfigFile(\n tracerProvider['limits']['attribute_value_length_limit']\n );\n\n if (attributeValueLengthLimit) {\n config.tracer_provider.limits!.attribute_value_length_limit =\n attributeValueLengthLimit;\n }\n\n const attributeCountLimit = getNumberFromConfigFile(\n tracerProvider['limits']['attribute_count_limit']\n );\n if (attributeCountLimit) {\n config.tracer_provider.limits!.attribute_count_limit =\n attributeCountLimit;\n }\n\n const eventCountLimit = getNumberFromConfigFile(\n tracerProvider['limits']['event_count_limit']\n );\n if (eventCountLimit) {\n config.tracer_provider.limits!.event_count_limit = eventCountLimit;\n }\n\n const linkCountLimit = getNumberFromConfigFile(\n tracerProvider['limits']['link_count_limit']\n );\n if (linkCountLimit) {\n config.tracer_provider.limits!.link_count_limit = linkCountLimit;\n }\n\n const eventAttributeCountLimit = getNumberFromConfigFile(\n tracerProvider['limits']['event_attribute_count_limit']\n );\n if (eventAttributeCountLimit) {\n config.tracer_provider.limits!.event_attribute_count_limit =\n eventAttributeCountLimit;\n }\n\n const linkAttributeCountLimit = getNumberFromConfigFile(\n tracerProvider['limits']['link_attribute_count_limit']\n );\n if (linkAttributeCountLimit) {\n config.tracer_provider.limits!.link_attribute_count_limit =\n linkAttributeCountLimit;\n }\n }\n\n // Sampler\n if (tracerProvider['sampler']) {\n config.tracer_provider.sampler = parseSampler(tracerProvider['sampler']);\n }\n\n // Processors\n for (let i = 0; i < tracerProvider['processors'].length; i++) {\n const processorType = Object.keys(tracerProvider['processors'][i])[0];\n if (processorType === 'batch') {\n const element = tracerProvider['processors'][i]['batch'];\n if (element) {\n const parsedExporter = parseConfigSpanOrLogRecordExporter(\n element['exporter'],\n ProviderType.TRACER\n );\n const batchConfig: SpanProcessor = {\n batch: {\n schedule_delay:\n getNumberFromConfigFile(element['schedule_delay']) ?? 5000,\n export_timeout:\n getNumberFromConfigFile(element['export_timeout']) ?? 30000,\n max_queue_size:\n getNumberFromConfigFile(element['max_queue_size']) ?? 2048,\n max_export_batch_size:\n getNumberFromConfigFile(element['max_export_batch_size']) ??\n 512,\n exporter: parsedExporter as SpanExporter,\n },\n };\n\n config.tracer_provider.processors.push(batchConfig);\n }\n } else if (processorType === 'simple') {\n const element = tracerProvider['processors'][i]['simple'];\n if (element) {\n const parsedExporter = parseConfigSpanOrLogRecordExporter(\n element['exporter'],\n ProviderType.TRACER\n );\n const simpleConfig: SpanProcessor = {\n simple: {\n exporter: parsedExporter as SpanExporter,\n },\n };\n\n config.tracer_provider.processors.push(simpleConfig);\n }\n }\n }\n } else if (\n tracerProvider &&\n (tracerProvider.processors == null ||\n tracerProvider.processors.length === 0)\n ) {\n diag.warn('TracerProvider must have at least one processor configured');\n }\n}\n\nfunction getCardinalityLimits(limits?: CardinalityLimits): CardinalityLimits {\n if (limits == null) {\n limits = {};\n }\n const defaultLimit = getNumberFromConfigFile(limits['default']) ?? 2000;\n\n return {\n default: defaultLimit,\n counter: getNumberFromConfigFile(limits['counter']) ?? defaultLimit,\n gauge: getNumberFromConfigFile(limits['gauge']) ?? defaultLimit,\n histogram: getNumberFromConfigFile(limits['histogram']) ?? defaultLimit,\n observable_counter:\n getNumberFromConfigFile(limits['observable_counter']) ?? defaultLimit,\n observable_gauge:\n getNumberFromConfigFile(limits['observable_gauge']) ?? defaultLimit,\n observable_up_down_counter:\n getNumberFromConfigFile(limits['observable_up_down_counter']) ??\n defaultLimit,\n up_down_counter:\n getNumberFromConfigFile(limits['up_down_counter']) ?? defaultLimit,\n };\n}\n\nfunction getProducers(producers?: MetricProducer[]): MetricProducer[] {\n const parsedProducers: MetricProducer[] = [];\n if (producers) {\n for (let j = 0; j < producers.length; j++) {\n const producer = producers[j];\n if (Object.keys(producer)[0] === 'opencensus') {\n parsedProducers.push({ opencensus: {} });\n }\n }\n }\n\n return parsedProducers;\n}\n\nexport function getTemporalityPreference(\n temporalityPreference?: ExporterTemporalityPreference\n): ExporterTemporalityPreference {\n const temporalityPreferenceType = getStringFromConfigFile(\n temporalityPreference\n );\n switch (temporalityPreferenceType) {\n case 'cumulative':\n return ExporterTemporalityPreference.Cumulative;\n case 'delta':\n return ExporterTemporalityPreference.Delta;\n case 'low_memory':\n return ExporterTemporalityPreference.LowMemory;\n default:\n return ExporterTemporalityPreference.Cumulative;\n }\n}\n\nfunction getDefaultHistogramAggregation(\n defaultHistogramAggregation?: ExporterDefaultHistogramAggregation\n): ExporterDefaultHistogramAggregation {\n const defaultHistogramAggregationType = getStringFromConfigFile(\n defaultHistogramAggregation\n );\n switch (defaultHistogramAggregationType) {\n case 'explicit_bucket_histogram':\n return ExporterDefaultHistogramAggregation.ExplicitBucketHistogram;\n case 'base2_exponential_bucket_histogram':\n return ExporterDefaultHistogramAggregation.Base2ExponentialBucketHistogram;\n default:\n return ExporterDefaultHistogramAggregation.ExplicitBucketHistogram;\n }\n}\n\nfunction parseMetricExporter(exporter: PushMetricExporter): PushMetricExporter {\n const exporterType = Object.keys(exporter)[0];\n let parsedExporter: PushMetricExporter = {};\n let e;\n let certFile;\n let clientCertFile;\n let clientKeyFile;\n let compression;\n let headers;\n let headersList;\n let insecure;\n\n switch (exporterType) {\n case 'otlp_http':\n e = exporter['otlp_http'];\n if (e) {\n parsedExporter = {\n otlp_http: {\n endpoint:\n getStringFromConfigFile(e['endpoint']) ??\n 'http://localhost:4318/v1/metrics',\n timeout: getNumberFromConfigFile(e['timeout']) ?? 10000,\n encoding:\n getStringFromConfigFile(e['encoding']) === 'json'\n ? OtlpHttpEncoding.JSON\n : OtlpHttpEncoding.Protobuf,\n temporality_preference: getTemporalityPreference(\n e['temporality_preference']\n ),\n default_histogram_aggregation: getDefaultHistogramAggregation(\n e['default_histogram_aggregation']\n ),\n },\n };\n\n compression = getStringFromConfigFile(e['compression']);\n if (compression && parsedExporter.otlp_http) {\n parsedExporter.otlp_http.compression = compression;\n }\n headersList = getStringFromConfigFile(e['headers_list']);\n if (headersList && parsedExporter.otlp_http) {\n parsedExporter.otlp_http.headers_list = headersList;\n }\n headers = getConfigHeaders(e['headers']);\n if (headers && parsedExporter.otlp_http) {\n parsedExporter.otlp_http.headers = headers;\n }\n\n if (e['tls']) {\n certFile = getStringFromConfigFile(e['tls']['ca_file']);\n clientCertFile = getStringFromConfigFile(e['tls']['cert_file']);\n clientKeyFile = getStringFromConfigFile(e['tls']['key_file']);\n\n const tls = getHttpTlsConfig(certFile, clientKeyFile, clientCertFile);\n if (tls) {\n parsedExporter.otlp_http!.tls = tls;\n }\n }\n }\n break;\n\n case 'otlp_grpc':\n e = exporter['otlp_grpc'];\n if (e) {\n parsedExporter = {\n otlp_grpc: {\n endpoint:\n getStringFromConfigFile(e['endpoint']) ?? 'http://localhost:4317',\n timeout: getNumberFromConfigFile(e['timeout']) ?? 10000,\n temporality_preference: getTemporalityPreference(\n e['temporality_preference']\n ),\n default_histogram_aggregation: getDefaultHistogramAggregation(\n e['default_histogram_aggregation']\n ),\n },\n };\n\n compression = getStringFromConfigFile(e['compression']);\n if (compression && parsedExporter.otlp_grpc) {\n parsedExporter.otlp_grpc.compression = compression;\n }\n headersList = getStringFromConfigFile(e['headers_list']);\n if (headersList && parsedExporter.otlp_grpc) {\n parsedExporter.otlp_grpc.headers_list = headersList;\n }\n headers = getConfigHeaders(e['headers']);\n if (headers && parsedExporter.otlp_grpc) {\n parsedExporter.otlp_grpc.headers = headers;\n }\n\n if (e['tls']) {\n certFile = getStringFromConfigFile(e['tls']['ca_file']);\n clientCertFile = getStringFromConfigFile(e['tls']['cert_file']);\n clientKeyFile = getStringFromConfigFile(e['tls']['key_file']);\n insecure = getBooleanFromConfigFile(e['tls']['insecure']);\n\n const tls = getGrpcTlsConfig(\n certFile,\n clientKeyFile,\n clientCertFile,\n insecure\n );\n if (tls) {\n parsedExporter.otlp_grpc!.tls = tls;\n }\n }\n }\n break;\n\n case 'otlp_file/development':\n e = exporter['otlp_file/development'];\n if (e) {\n parsedExporter = {\n 'otlp_file/development': {\n output_stream:\n getStringFromConfigFile(e['output_stream']) ?? 'stdout',\n temporality_preference: getTemporalityPreference(\n e['temporality_preference']\n ),\n default_histogram_aggregation: getDefaultHistogramAggregation(\n e['default_histogram_aggregation']\n ),\n },\n };\n }\n break;\n\n case 'console':\n e = exporter['console'];\n if (e) {\n parsedExporter = {\n console: {\n temporality_preference: getTemporalityPreference(\n e['temporality_preference']\n ),\n default_histogram_aggregation: getDefaultHistogramAggregation(\n e['default_histogram_aggregation']\n ),\n },\n };\n }\n break;\n }\n\n return parsedExporter;\n}\n\nexport function setMeterProvider(\n config: ConfigurationModel,\n meterProvider: MeterProvider\n): void {\n if (meterProvider && meterProvider.readers?.length > 0) {\n config.meter_provider = initializeDefaultMeterProviderConfiguration();\n const exemplarFilter = getStringFromConfigFile(\n meterProvider['exemplar_filter']\n );\n if (exemplarFilter) {\n switch (exemplarFilter) {\n case 'trace_based':\n config.meter_provider.exemplar_filter = ExemplarFilter.TraceBased;\n break;\n case 'always_on':\n config.meter_provider.exemplar_filter = ExemplarFilter.AlwaysOn;\n break;\n case 'always_off':\n config.meter_provider.exemplar_filter = ExemplarFilter.AlwaysOff;\n break;\n default:\n config.meter_provider.exemplar_filter = ExemplarFilter.TraceBased;\n break;\n }\n }\n\n for (let i = 0; i < meterProvider.readers.length; i++) {\n const readerType = Object.keys(meterProvider['readers'][i])[0];\n if (readerType === 'pull') {\n const element = meterProvider['readers'][i]['pull'];\n if (element) {\n const exporter: PullMetricExporter = {\n 'prometheus/development': {\n host:\n getStringFromConfigFile(\n element['exporter']['prometheus/development']['host']\n ) ?? 'localhost',\n port:\n getNumberFromConfigFile(\n element['exporter']['prometheus/development']['port']\n ) ?? 9464,\n without_scope_info:\n getBooleanFromConfigFile(\n element['exporter']['prometheus/development'][\n 'without_scope_info'\n ]\n ) ?? false,\n without_target_info:\n getBooleanFromConfigFile(\n element['exporter']['prometheus/development'][\n 'without_target_info'\n ]\n ) ?? false,\n },\n };\n if (\n element['exporter']['prometheus/development'][\n 'with_resource_constant_labels'\n ]\n ) {\n exporter['prometheus/development']!.with_resource_constant_labels =\n {\n included:\n getStringListFromConfigFile(\n element['exporter']['prometheus/development'][\n 'with_resource_constant_labels'\n ]?.['included']\n ) ?? [],\n excluded:\n getStringListFromConfigFile(\n element['exporter']['prometheus/development'][\n 'with_resource_constant_labels'\n ]?.['excluded']\n ) ?? [],\n };\n }\n\n if (\n element['exporter']['prometheus/development'][\n 'translation_strategy'\n ]\n ) {\n const ts = getStringFromConfigFile(\n element['exporter']['prometheus/development'][\n 'translation_strategy'\n ]\n );\n switch (ts) {\n case 'underscore_escaping_with_suffixes':\n exporter['prometheus/development']!.translation_strategy =\n ExperimentalPrometheusTranslationStrategy.UnderscoreEscapingWithSuffixes;\n break;\n case 'underscore_escaping_without_suffixes':\n exporter['prometheus/development']!.translation_strategy =\n ExperimentalPrometheusTranslationStrategy.UnderscoreEscapingWithoutSuffixes;\n break;\n case 'no_utf8_escaping_with_suffixes':\n exporter['prometheus/development']!.translation_strategy =\n ExperimentalPrometheusTranslationStrategy.NoUtf8EscapingWithSuffixes;\n break;\n case 'no_translation':\n exporter['prometheus/development']!.translation_strategy =\n ExperimentalPrometheusTranslationStrategy.NoTranslation;\n break;\n }\n }\n const pullReader: MetricReader = {\n pull: {\n exporter: exporter,\n cardinality_limits: getCardinalityLimits(\n element['cardinality_limits']\n ),\n },\n };\n const p = getProducers(element['producers']);\n if (p.length > 0 && pullReader.pull) {\n pullReader.pull.producers = p;\n }\n config.meter_provider.readers.push(pullReader);\n }\n } else if (readerType === 'periodic') {\n const element = meterProvider['readers'][i]['periodic'];\n if (element) {\n const parsedExporter = parseMetricExporter(element['exporter']);\n\n const periodicReader: MetricReader = {\n periodic: {\n exporter: parsedExporter,\n cardinality_limits: getCardinalityLimits(\n element['cardinality_limits']\n ),\n interval: getNumberFromConfigFile(element['interval']) ?? 60000,\n timeout: getNumberFromConfigFile(element['timeout']) ?? 30000,\n },\n };\n const p = getProducers(element['producers']);\n if (p.length > 0 && periodicReader.periodic) {\n periodicReader.periodic.producers = p;\n }\n config.meter_provider.readers.push(periodicReader);\n }\n }\n }\n\n if (meterProvider['views'] && meterProvider['views'].length > 0) {\n config.meter_provider.views = [];\n for (let j = 0; j < meterProvider['views'].length; j++) {\n const element = meterProvider['views'][j];\n const view: View = {};\n if (element['selector']) {\n const selector: ViewSelector = {};\n const instrumentName = getStringFromConfigFile(\n element['selector']['instrument_name']\n );\n if (instrumentName) {\n selector.instrument_name = instrumentName;\n }\n\n const unit = getStringFromConfigFile(element['selector']['unit']);\n if (unit) {\n selector.unit = unit;\n }\n\n const meterName = getStringFromConfigFile(\n element['selector']['meter_name']\n );\n if (meterName) {\n selector.meter_name = meterName;\n }\n\n const meterVersion = getStringFromConfigFile(\n element['selector']['meter_version']\n );\n if (meterVersion) {\n selector.meter_version = meterVersion;\n }\n\n const meterSchemaUrl = getStringFromConfigFile(\n element['selector']['meter_schema_url']\n );\n if (meterSchemaUrl) {\n selector.meter_schema_url = meterSchemaUrl;\n }\n\n const instrumentType = getStringFromConfigFile(\n element['selector']['instrument_type']\n );\n if (instrumentType) {\n switch (instrumentType) {\n case 'counter':\n selector.instrument_type = InstrumentType.Counter;\n break;\n case 'gauge':\n selector.instrument_type = InstrumentType.Gauge;\n break;\n case 'histogram':\n selector.instrument_type = InstrumentType.Histogram;\n break;\n case 'observable_counter':\n selector.instrument_type = InstrumentType.ObservableCounter;\n break;\n case 'observable_gauge':\n selector.instrument_type = InstrumentType.ObservableGauge;\n break;\n case 'observable_up_down_counter':\n selector.instrument_type =\n InstrumentType.ObservableUpDownCounter;\n break;\n case 'up_down_counter':\n selector.instrument_type = InstrumentType.UpDownCounter;\n break;\n }\n }\n\n if (Object.keys(selector).length > 0) {\n view.selector = selector;\n }\n }\n if (element['stream']) {\n const stream: ViewStream = {};\n const name = getStringFromConfigFile(element['stream']['name']);\n if (name) {\n stream.name = name;\n }\n\n const description = getStringFromConfigFile(\n element['stream']['description']\n );\n if (description) {\n stream.description = description;\n }\n\n const aggregationCardinalityLimit = getNumberFromConfigFile(\n element['stream']['aggregation_cardinality_limit']\n );\n if (aggregationCardinalityLimit) {\n stream.aggregation_cardinality_limit = aggregationCardinalityLimit;\n }\n\n if (element['stream']['attribute_keys']) {\n stream.attribute_keys = {\n included:\n getStringListFromConfigFile(\n element['stream']['attribute_keys']['included']\n ) ?? [],\n excluded:\n getStringListFromConfigFile(\n element['stream']['attribute_keys']['excluded']\n ) ?? [],\n };\n }\n const rawAgg = element['stream']['aggregation'];\n if (rawAgg) {\n const aggregation: Aggregation = {};\n if (rawAgg['default']) {\n aggregation.default = {};\n }\n if (rawAgg['drop']) {\n aggregation.drop = {};\n }\n if (rawAgg['last_value']) {\n aggregation.last_value = {};\n }\n if (rawAgg['sum']) {\n aggregation.sum = {};\n }\n if (rawAgg['explicit_bucket_histogram']) {\n aggregation.explicit_bucket_histogram = {\n boundaries: getNumberListFromConfigFile(\n rawAgg['explicit_bucket_histogram']['boundaries']\n ) ?? [\n 0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000,\n 7500, 10000,\n ],\n record_min_max:\n getBooleanFromConfigFile(\n rawAgg['explicit_bucket_histogram']['record_min_max']\n ) === false\n ? false\n : true,\n };\n }\n if (rawAgg['base2_exponential_bucket_histogram']) {\n aggregation.base2_exponential_bucket_histogram = {\n record_min_max:\n getBooleanFromConfigFile(\n rawAgg['base2_exponential_bucket_histogram'][\n 'record_min_max'\n ]\n ) === false\n ? false\n : true,\n };\n const maxScale = getNumberFromConfigFile(\n rawAgg['base2_exponential_bucket_histogram']['max_scale']\n );\n if (maxScale) {\n aggregation.base2_exponential_bucket_histogram.max_scale =\n maxScale;\n }\n\n const maxSize = getNumberFromConfigFile(\n rawAgg['base2_exponential_bucket_histogram']['max_size']\n );\n if (maxSize) {\n aggregation.base2_exponential_bucket_histogram.max_size =\n maxSize;\n }\n }\n stream.aggregation = aggregation;\n }\n if (Object.keys(stream).length > 0) {\n view.stream = stream;\n }\n }\n config.meter_provider.views.push(view);\n }\n }\n } else if (\n meterProvider &&\n (meterProvider.readers == null || meterProvider.readers.length === 0)\n ) {\n diag.warn('MeterProvider must have at least one reader configured');\n }\n}\n\nexport function getSeverity(\n severity?: SeverityNumber\n): SeverityNumber | undefined {\n const severityType = getStringFromConfigFile(severity);\n switch (severityType) {\n case 'debug':\n return SeverityNumber.DEBUG;\n case 'debug2':\n return SeverityNumber.DEBUG2;\n case 'debug3':\n return SeverityNumber.DEBUG3;\n case 'debug4':\n return SeverityNumber.DEBUG4;\n case 'info':\n return SeverityNumber.INFO;\n case 'info2':\n return SeverityNumber.INFO2;\n case 'info3':\n return SeverityNumber.INFO3;\n case 'info4':\n return SeverityNumber.INFO4;\n case 'warn':\n return SeverityNumber.WARN;\n case 'warn2':\n return SeverityNumber.WARN2;\n case 'warn3':\n return SeverityNumber.WARN3;\n case 'warn4':\n return SeverityNumber.WARN4;\n case 'error':\n return SeverityNumber.ERROR;\n case 'error2':\n return SeverityNumber.ERROR2;\n case 'error3':\n return SeverityNumber.ERROR3;\n case 'error4':\n return SeverityNumber.ERROR4;\n case 'fatal':\n return SeverityNumber.FATAL;\n case 'fatal2':\n return SeverityNumber.FATAL2;\n case 'fatal3':\n return SeverityNumber.FATAL3;\n case 'fatal4':\n return SeverityNumber.FATAL4;\n case 'trace':\n return SeverityNumber.TRACE;\n case 'trace2':\n return SeverityNumber.TRACE2;\n case 'trace3':\n return SeverityNumber.TRACE3;\n case 'trace4':\n return SeverityNumber.TRACE4;\n default:\n return undefined;\n }\n}\n\nexport function setLoggerProvider(\n config: ConfigurationModel,\n loggerProvider: LoggerProvider\n): void {\n if (loggerProvider && loggerProvider.processors?.length > 0) {\n config.logger_provider = initializeDefaultLoggerProviderConfiguration();\n // Limits\n if (loggerProvider['limits']) {\n const attributeValueLengthLimit = getNumberFromConfigFile(\n loggerProvider['limits']['attribute_value_length_limit']\n );\n const attributeCountLimit = getNumberFromConfigFile(\n loggerProvider['limits']['attribute_count_limit']\n );\n if (attributeValueLengthLimit || attributeCountLimit) {\n if (attributeValueLengthLimit) {\n config.logger_provider.limits!.attribute_value_length_limit =\n attributeValueLengthLimit;\n }\n if (attributeCountLimit) {\n config.logger_provider.limits!.attribute_count_limit =\n attributeCountLimit;\n }\n }\n }\n\n // Processors\n for (let i = 0; i < loggerProvider['processors'].length; i++) {\n const processorType = Object.keys(loggerProvider['processors'][i])[0];\n if (processorType === 'batch') {\n const element = loggerProvider['processors'][i]['batch'];\n if (element) {\n const parsedExporter = parseConfigSpanOrLogRecordExporter(\n element['exporter'],\n ProviderType.LOGGER\n );\n const batchConfig: LogRecordProcessor = {\n batch: {\n schedule_delay:\n getNumberFromConfigFile(element['schedule_delay']) ?? 1000,\n export_timeout:\n getNumberFromConfigFile(element['export_timeout']) ?? 30000,\n max_queue_size:\n getNumberFromConfigFile(element['max_queue_size']) ?? 2048,\n max_export_batch_size:\n getNumberFromConfigFile(element['max_export_batch_size']) ??\n 512,\n exporter: parsedExporter as LogRecordExporter,\n },\n };\n\n config.logger_provider.processors.push(batchConfig);\n }\n } else if (processorType === 'simple') {\n const element = loggerProvider['processors'][i]['simple'];\n if (element) {\n const parsedExporter = parseConfigSpanOrLogRecordExporter(\n element['exporter'],\n ProviderType.LOGGER\n );\n const simpleConfig: LogRecordProcessor = {\n simple: {\n exporter: parsedExporter,\n },\n };\n\n config.logger_provider.processors.push(simpleConfig);\n }\n }\n }\n\n // logger_configurator/development\n if (loggerProvider['logger_configurator/development']) {\n const defaultConfigDisabled = getBooleanFromConfigFile(\n loggerProvider['logger_configurator/development']['default_config']?.[\n 'enabled'\n ]\n );\n if (defaultConfigDisabled || defaultConfigDisabled === false) {\n config.logger_provider['logger_configurator/development'] = {\n default_config: {\n enabled: defaultConfigDisabled,\n },\n };\n }\n\n if (\n loggerProvider['logger_configurator/development'].loggers &&\n loggerProvider['logger_configurator/development'].loggers.length > 0\n ) {\n const loggers = [];\n for (\n let i = 0;\n i < loggerProvider['logger_configurator/development'].loggers.length;\n i++\n ) {\n const logger =\n loggerProvider['logger_configurator/development'].loggers[i];\n let enabled = false;\n let traceBased;\n let minSeverity;\n if (logger['config']) {\n enabled =\n getBooleanFromConfigFile(logger['config']['enabled']) ?? false;\n traceBased = getBooleanFromConfigFile(\n logger['config']['trace_based']\n );\n if (logger['config']['minimum_severity']) {\n minSeverity = getSeverity(logger['config']['minimum_severity']);\n }\n }\n const name = getStringFromConfigFile(logger['name']);\n if (name) {\n const loggerNew: ExperimentalLoggerMatcherAndConfig = {\n name: name,\n config: {\n enabled: enabled,\n },\n };\n if (traceBased !== undefined) {\n loggerNew.config!.trace_based = traceBased;\n }\n if (minSeverity !== undefined) {\n loggerNew.config!.minimum_severity = minSeverity;\n }\n\n loggers.push(loggerNew);\n }\n }\n if (config.logger_provider['logger_configurator/development'] == null) {\n config.logger_provider['logger_configurator/development'] = {};\n }\n config.logger_provider['logger_configurator/development'].loggers =\n loggers;\n }\n }\n } else if (\n loggerProvider &&\n (loggerProvider.processors == null ||\n loggerProvider.processors.length === 0)\n ) {\n diag.warn('LoggerProvider must have at least one processor configured');\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"FileConfigFactory.js","sourceRoot":"","sources":["../../src/FileConfigFactory.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { getStringFromEnv } from '@opentelemetry/core';\nimport type { ConfigFactory } from './IConfigFactory';\nimport * as fs from 'fs';\nimport * as yaml from 'yaml';\nimport { envVariableSubstitution } from './utils';\nimport type {\n BatchLogRecordProcessor,\n BatchSpanProcessor,\n CardinalityLimits,\n ConfigurationModel,\n PeriodicMetricReader,\n} from './generated/types';\n// Pre-compiled ajv validator — eliminates runtime schema compilation on cold start.\n// Generated by `npm run generate:config`; do not import ajv directly here.\nimport * as validateConfig from './generated/validator';\n\nexport class FileConfigFactory implements ConfigFactory {\n private _config: ConfigurationModel;\n\n constructor() {\n this._config = parseConfigFile();\n }\n\n getConfigModel(): ConfigurationModel {\n return this._config;\n }\n}\n\nexport function parseConfigFile(): ConfigurationModel {\n const supportedFileVersionPattern = /^1\\.0$/;\n const configFile = getStringFromEnv('OTEL_CONFIG_FILE') || '';\n const file = fs.readFileSync(configFile, 'utf8');\n\n // Apply env var substitution to all string values before schema parsing\n const rawParsed = yaml.parse(file) as Record<string, unknown>;\n const processed = substituteEnvVars(rawParsed) as Record<string, unknown>;\n\n const fileFormat = processed?.file_format;\n if (!fileFormat || !supportedFileVersionPattern.test(String(fileFormat))) {\n throw new Error(\n `${configFile}: Unsupported file_format: \"${fileFormat}\". Must match ${supportedFileVersionPattern}.`\n );\n }\n\n // Normalize YAML null type-tag values to {} before validation\n normalizeYamlNulls(processed);\n\n const valid = validateConfig(processed);\n if (!valid) {\n const firstError = validateConfig.errors?.[0];\n const detail = firstError\n ? `${firstError.instancePath} ${firstError.message}`\n : 'unknown error';\n throw new Error(`Invalid OpenTelemetry config file: ${detail.trim()}`);\n }\n\n const data = processed as unknown as ConfigurationModel;\n\n // Strip file_format from output — it's a meta-field, not a config value\n delete (data as Record<string, unknown>)['file_format'];\n\n // The generated TypeScript types omit `| null` from unions (see\n // generate-config.js) because consumers expect `T | undefined`, not\n // `T | null`. To match, we delete any properties still set to `null`\n // after YAML parsing so that accessing them returns `undefined`.\n // Runs after normalizeYamlNulls, which has already converted type-tag\n // nulls (e.g. `console:`) to `{}`.\n stripNulls(processed);\n\n applyConfigDefaults(data);\n mergeAttributesList(data);\n mergeCompositeList(data);\n applyBatchProcessorDefaults(data);\n applyPeriodicReaderDefaults(data);\n applyOtlpHttpEncodingDefaults(data);\n\n return data;\n}\n\n/**\n * Apply default encoding ('protobuf') to all otlp_http exporters in the config\n * where encoding was not explicitly specified. The spec defines protobuf as the\n * default encoding for OTLP HTTP exporters.\n */\nfunction applyOtlpHttpEncodingDefaults(data: ConfigurationModel): void {\n const applyEncoding = (\n exporter: { encoding?: string | null } | null | undefined\n ) => {\n if (exporter && exporter.encoding == null) {\n exporter.encoding = 'protobuf';\n }\n };\n\n for (const processor of data.tracer_provider?.processors ?? []) {\n applyEncoding(processor.batch?.exporter?.otlp_http);\n applyEncoding(processor.simple?.exporter?.otlp_http);\n }\n\n for (const reader of data.meter_provider?.readers ?? []) {\n applyEncoding(reader.periodic?.exporter?.otlp_http);\n }\n\n for (const processor of data.logger_provider?.processors ?? []) {\n applyEncoding(processor.batch?.exporter?.otlp_http);\n applyEncoding(processor.simple?.exporter?.otlp_http);\n }\n}\n\n/**\n * Merge resource.attributes_list (comma-separated key=value pairs) into\n * resource.attributes, with entries already in attributes taking precedence.\n */\nfunction mergeAttributesList(data: ConfigurationModel): void {\n const resource = data.resource;\n const list = resource?.attributes_list;\n if (typeof list !== 'string' || !list.trim()) return;\n\n if (resource!.attributes == null) {\n resource!.attributes = [];\n }\n\n const existingKeys = new Set(\n resource!.attributes.map((a: { name: string }) => a.name)\n );\n\n for (const pair of list.split(',')) {\n const eqIdx = pair.indexOf('=');\n if (eqIdx > 0) {\n const key = pair.slice(0, eqIdx).trim();\n const value = pair.slice(eqIdx + 1).trim();\n if (key && !existingKeys.has(key)) {\n resource!.attributes.push({ name: key, value, type: 'string' });\n }\n }\n }\n}\n\n/**\n * Merge propagator.composite_list (comma-separated propagator names) into\n * propagator.composite, with entries already in composite taking precedence.\n */\nfunction mergeCompositeList(data: ConfigurationModel): void {\n const propagator = data.propagator;\n const list = propagator?.composite_list;\n if (typeof list !== 'string' || !list.trim()) return;\n\n if (propagator!.composite == null) {\n propagator!.composite = [];\n }\n\n const existingNames = new Set(\n (propagator!.composite as Array<Record<string, unknown>>).map(\n entry => Object.keys(entry)[0]\n )\n );\n\n for (const name of list.split(',')) {\n const trimmed = name.trim();\n if (trimmed && !existingNames.has(trimmed)) {\n (propagator!.composite as Array<Record<string, unknown>>).push({\n [trimmed]: {},\n });\n }\n }\n}\n\n/**\n * Apply spec-defined defaults for batch span/log-record processor fields that\n * are not encoded in the JSON schema.\n */\nfunction applyBatchProcessorDefaults(data: ConfigurationModel): void {\n const applyDefaults = (\n batch: BatchSpanProcessor | BatchLogRecordProcessor\n ) => {\n if (batch.schedule_delay == null) batch.schedule_delay = 5000;\n if (batch.export_timeout == null) batch.export_timeout = 30000;\n if (batch.max_queue_size == null) batch.max_queue_size = 2048;\n if (batch.max_export_batch_size == null) batch.max_export_batch_size = 512;\n };\n\n for (const processor of data.tracer_provider?.processors ?? []) {\n if (processor.batch) applyDefaults(processor.batch);\n }\n for (const processor of data.logger_provider?.processors ?? []) {\n if (processor.batch) applyDefaults(processor.batch);\n }\n}\n\n/**\n * Apply spec-defined defaults for periodic metric reader fields.\n */\nfunction applyPeriodicReaderDefaults(data: ConfigurationModel): void {\n for (const reader of data.meter_provider?.readers ?? []) {\n const periodic = reader.periodic as PeriodicMetricReader | undefined;\n if (!periodic) continue;\n if (periodic.interval == null) periodic.interval = 60000;\n if (periodic.timeout == null) periodic.timeout = 30000;\n if (periodic.cardinality_limits == null) {\n periodic.cardinality_limits = { default: 2000 } as CardinalityLimits;\n }\n }\n}\n\n/**\n * Apply spec-defined defaults that are not encoded in the JSON schema.\n * Both FileConfigFactory and EnvironmentConfigFactory apply the same defaults\n * so consumers see consistent behaviour regardless of config source.\n */\nfunction applyConfigDefaults(data: ConfigurationModel): void {\n if (data.disabled == null) {\n data.disabled = false;\n }\n if (data.log_level == null) {\n data.log_level = 'info';\n }\n if (data.attribute_limits == null) {\n data.attribute_limits = { attribute_count_limit: 128 };\n } else if (data.attribute_limits.attribute_count_limit == null) {\n data.attribute_limits.attribute_count_limit = 128;\n }\n}\n\n/**\n * Recursively delete object properties whose value is `null`.\n *\n * YAML `key:` (no value) parses to `{ key: null }`. The generated TypeScript\n * types use `?: T` (not `T | null`) because downstream consumers like sdk-node\n * assign config values to interfaces that only accept `T | undefined`. The\n * codegen script (generate-config.js) strips `| null` from type unions; this\n * function makes the runtime data match by deleting null-valued keys so that\n * property access returns `undefined` instead of `null`.\n *\n * Must run AFTER normalizeYamlNulls, which converts type-tag nulls\n * (e.g. `console: null` → `console: {}`) — those are already `{}` by the\n * time this function runs and won't be affected.\n */\nfunction stripNulls(value: unknown): void {\n if (value == null || typeof value !== 'object') return;\n if (Array.isArray(value)) {\n for (const item of value) {\n stripNulls(item);\n }\n } else {\n for (const [key, val] of Object.entries(value as Record<string, unknown>)) {\n if (val === null) {\n delete (value as Record<string, unknown>)[key];\n } else {\n stripNulls(val);\n }\n }\n }\n}\n\n/**\n * Object type-tag keys that may appear as nested (non-array-element) properties.\n * YAML `console:` (no value) parses to `{ console: null }`, but the SDK checks\n * `if (exporter.console)` — truthy — so null must become {}.\n *\n * We exclude keys that are also used as nullable primitives in other contexts\n * (e.g. `host` is a string field in prometheus config; detectors use it as a\n * type-tag but only as array elements, which are already handled below).\n */\nconst NESTED_OBJECT_TYPE_TAGS = new Set([\n // Exporter type discriminators (nested inside simple/batch processor or reader)\n 'console',\n 'otlp_http',\n 'otlp_grpc',\n // Sampler type discriminators (nested inside tracer_provider.sampler)\n 'always_on',\n 'always_off',\n 'trace_id_ratio_based',\n 'parent_based',\n 'jaeger_remote',\n // Propagator type discriminators (array elements, but covered here for completeness)\n 'tracecontext',\n 'baggage',\n 'b3',\n 'b3multi',\n 'xray',\n // Telemetry producer type discriminators\n 'opencensus',\n]);\n\n/**\n * Normalizes YAML null values to empty objects for discriminated-union type-tag fields.\n *\n * YAML `key:` (no value) parses to `{ key: null }`, but the SDK checks `if (obj.key)`\n * to determine which type to instantiate — null fails that check. Two cases:\n *\n * 1. Array element properties: convert ALL null-valued keys to {} (handles detectors,\n * composite propagators, and most exporter/processor discriminators).\n * 2. Nested NESTED_OBJECT_TYPE_TAGS: convert known type-discriminator keys to {} when\n * encountered anywhere in the tree (handles sampler types, console exporter nested\n * inside simple/batch, etc.).\n *\n * Top-level nullable primitive fields (disabled, log_level, endpoint, ca_file, etc.)\n * are NOT in NESTED_OBJECT_TYPE_TAGS and are left as-is; applyConfigDefaults()\n * handles the boolean/string ones that need defaults.\n */\nfunction normalizeYamlNulls(value: unknown): void {\n if (value == null || typeof value !== 'object') return;\n if (Array.isArray(value)) {\n for (const item of value) {\n if (item != null && typeof item === 'object' && !Array.isArray(item)) {\n // All null-valued properties of array elements are type-tag discriminators.\n for (const key of Object.keys(item as object)) {\n if ((item as Record<string, unknown>)[key] === null) {\n (item as Record<string, unknown>)[key] = {};\n }\n }\n }\n normalizeYamlNulls(item);\n }\n } else {\n for (const [key, val] of Object.entries(value as Record<string, unknown>)) {\n if (\n val === null &&\n // Known type-tag keys, or slash-qualified experimental type-tags\n // (e.g. otlp_file/development, prometheus/development)\n (NESTED_OBJECT_TYPE_TAGS.has(key) || key.includes('/'))\n ) {\n (value as Record<string, unknown>)[key] = {};\n } else {\n normalizeYamlNulls(val);\n }\n }\n }\n}\n\nconst ENV_VAR_PATTERN = /\\$\\{[^}]+\\}/;\n\nfunction substituteEnvVars(obj: unknown): unknown {\n if (typeof obj === 'string') {\n // Only coerce if the string contained env var substitution syntax,\n // so that plain YAML strings (e.g. quoted \"1234\") are not type-coerced.\n const hasSubstitution = ENV_VAR_PATTERN.test(obj);\n const substituted = envVariableSubstitution(obj);\n return hasSubstitution ? yamlCoerce(substituted) : substituted;\n }\n if (Array.isArray(obj)) {\n return obj.map(substituteEnvVars);\n }\n if (typeof obj === 'object' && obj !== null) {\n return Object.fromEntries(\n Object.entries(obj).map(([k, v]) => [k, substituteEnvVars(v)])\n );\n }\n return obj;\n}\n\n/**\n * Re-coerce a string value to its YAML-equivalent primitive type.\n * Env var substitution always returns strings; this converts them back\n * to booleans/numbers/null where the schema expects those types.\n */\nfunction yamlCoerce(value: string): unknown {\n if (value === 'true') return true;\n if (value === 'false') return false;\n if (value === 'null' || value === '') return null;\n if (/^-?\\d+$/.test(value)) return parseInt(value, 10);\n if (/^-?\\d+\\.\\d+$/.test(value)) return parseFloat(value);\n return value;\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { ConfigurationModel } from './
|
|
1
|
+
import type { ConfigurationModel } from './generated/types';
|
|
2
2
|
export interface ConfigFactory {
|
|
3
3
|
/**
|
|
4
4
|
* Returns a ConfigurationModel.
|
|
5
5
|
*
|
|
6
|
-
* @returns ConfigurationModel a
|
|
6
|
+
* @returns ConfigurationModel a ConfigurationModel with all configuration attributes
|
|
7
7
|
*/
|
|
8
8
|
getConfigModel(): ConfigurationModel;
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IConfigFactory.js","sourceRoot":"","sources":["../../src/IConfigFactory.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ConfigurationModel } from './
|
|
1
|
+
{"version":3,"file":"IConfigFactory.js","sourceRoot":"","sources":["../../src/IConfigFactory.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ConfigurationModel } from './generated/types';\n\nexport interface ConfigFactory {\n /**\n * Returns a ConfigurationModel.\n *\n * @returns ConfigurationModel a ConfigurationModel with all configuration attributes\n */\n getConfigModel(): ConfigurationModel;\n}\n"]}
|