@cartanova/qgrid-cli 2.9.9 → 2.9.10
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/bundle/dist/utils/providers/common/model-cost.js +9 -1
- package/bundle/src/utils/providers/common/effort.test.ts +1 -0
- package/bundle/src/utils/providers/common/model-cost.test.ts +4 -0
- package/bundle/src/utils/providers/common/model-cost.ts +12 -0
- package/bundle/src/utils/providers/openai/openai-dispatcher.test.ts +1 -0
- package/bundle/web-dist/client/assets/{index-D8VwLsuq.js → index-DJpa8UaG.js} +3 -3
- package/bundle/web-dist/client/assets/{logs-_T8KV5ne.js → logs-COwHodGU.js} +1 -1
- package/bundle/web-dist/client/assets/{monit-DRCrtO2j.js → monit-C6ZRFTQr.js} +1 -1
- package/bundle/web-dist/client/assets/{routes-5A6mia6C.js → routes-CrMRMQvC.js} +1 -1
- package/bundle/web-dist/client/assets/{settings-BpP9WVFI.js → settings-BVhU4Oul.js} +1 -1
- package/bundle/web-dist/client/assets/{show-D5ifZXdy.js → show-DA-1k3Mt.js} +1 -1
- package/bundle/web-dist/client/assets/{tokens-Cfe6WvLK.js → tokens-DliSEDiF.js} +1 -1
- package/bundle/web-dist/client/assets/{use-oauth-login-flow-BTLUGhwh.js → use-oauth-login-flow-C0qa-nOp.js} +1 -1
- package/bundle/web-dist/client/index.html +1 -1
- package/bundle/web-dist/server/entry-server.generated.js +3 -3
- package/package.json +1 -1
- package/skills/qgrid/references/openai-codex-runtime.md +16 -2
- package/skills/qgrid/references/sonamu-api-web-flow.md +1 -1
|
@@ -14,6 +14,14 @@ const OPENAI_COSTS = {
|
|
|
14
14
|
cacheCreationInputTokens: 12.5,
|
|
15
15
|
longContext: LONG_CONTEXT_272K
|
|
16
16
|
},
|
|
17
|
+
"gpt-6.1-sol": {
|
|
18
|
+
maxEffort: "ultra",
|
|
19
|
+
inputTokens: 2,
|
|
20
|
+
outputTokens: 10,
|
|
21
|
+
cachedInputTokens: .1,
|
|
22
|
+
cacheCreationInputTokens: 2.5,
|
|
23
|
+
longContext: LONG_CONTEXT_272K
|
|
24
|
+
},
|
|
17
25
|
"gpt-6-sol": {
|
|
18
26
|
maxEffort: "ultra",
|
|
19
27
|
inputTokens: 2,
|
|
@@ -151,4 +159,4 @@ function calculateCostUsd(model, usage) {
|
|
|
151
159
|
//#endregion
|
|
152
160
|
export { calculateCostUsd, getModelCosts, openaiModelMaxEffort };
|
|
153
161
|
|
|
154
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtY29zdC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvcHJvdmlkZXJzL2NvbW1vbi9tb2RlbC1jb3N0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog66qo642467OEIO2GoO2BsCDqsIDqsqkg7YWM7J2067iUICsgY29zdCDqs4TsgrAuXG4gKlxuICogY2xhdWRlIGNvZGUg7JmAIOuPmeydvCDtjKjthLQ6IO2BtOudvOydtOyWuO2KuOyXkOyEnCDqsIDqsqkg7YWM7J2067iU66GcIOyngeygkSDqs4TsgrAuXG4gKiDqsIDqsqkg64uo7JyEOiBVU0QgcGVyIDFNIHRva2Vucy5cbiAqXG4gKiBPcGVuQUkg66qo6424IOuqqeuhneydgCBPcGVuQUkg66qo6424IOusuOyEnOyZgCDtmITsnqwg7KeA7JuQIOuqqeuhneydhCDquLDspIDsnLzroZwg6rSA66as7ZWc64ukLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9wbGF0Zm9ybS5vcGVuYWkuY29tL2RvY3MvcHJpY2luZ1xuICogQHNlZSBodHRwczovL3BsYXRmb3JtLmNsYXVkZS5jb20vZG9jcy9lbi9hYm91dC1jbGF1ZGUvcHJpY2luZ1xuICovXG5cbmltcG9ydCB7IHR5cGUgT3BlbkFJRWZmb3J0IH0gZnJvbSBcIi4vZWZmb3J0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxDb3N0cyB7XG4gIGlucHV0VG9rZW5zOiBudW1iZXI7XG4gIG91dHB1dFRva2VuczogbnVtYmVyO1xuICBjYWNoZWRJbnB1dFRva2VuczogbnVtYmVyO1xuICAvKiogVFRMIGJyZWFrZG93biDsnbQg7JeG64qUIHVzYWdlIOyXkCDsoIHsmqntlaAgY2FjaGUgd3JpdGUgZmFsbGJhY2sg64uo6rCALiAqL1xuICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM/OiBudW1iZXI7XG4gIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczVtPzogbnVtYmVyO1xuICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMxaD86IG51bWJlcjtcbiAgLyoqXG4gICAqIGxvbmctY29udGV4dCDtlaDspp0uIOyghOyytCDsnoXroKUg7Yag7YGwKGlucHV0X3Rva2VucywgY2FjaGVfcmVhZCDtj6ztlagp7J20IHRocmVzaG9sZCDstIjqs7wg7IucXG4gICAqIOy0iOqzvOu2hOunjOydtCDslYTri4jrnbwg7JqU7LKtIOyghOyytChmdWxsIHNlc3Npb24p7JeQIOuwsOycqCDsoIHsmqkuXG4gICAqL1xuICBsb25nQ29udGV4dD86IHtcbiAgICB0aHJlc2hvbGQ6IG51bWJlcjtcbiAgICBpbnB1dE11bHRpcGxpZXI6IG51bWJlcjtcbiAgICBjYWNoZWRJbnB1dE11bHRpcGxpZXI6IG51bWJlcjtcbiAgICBvdXRwdXRNdWx0aXBsaWVyOiBudW1iZXI7XG4gIH07XG59XG5cbi8vIOKUgOKUgCBPcGVuQUkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vL1xuLy8gU3RhbmRhcmQgcHJpY2luZyB2ZXJpZmllZCAyMDI2LTA5LTIzICjquLDsobQg66qo6424IOuLqOqwgCDrs4Drj5kg7JeG7J2MKTogaHR0cHM6Ly9kZXZlbG9wZXJzLm9wZW5haS5jb20vYXBpL2RvY3MvcHJpY2luZ1xuLy8g7Iug66qo6424IOy2nOyLnOuniOuLpCDri6jqsIDqsIAg67CU64CM66+A66GcKDUuMuKGkjUuNOKGkjUuNSkg66qo6424IOy2lOqwgCDsi5wg67CY65Oc7IucIOqzteyLnSDtjpjsnbTsp4Ag7J6s7ZmV7J247ZW07JW87ZWoXG5cbi8vIEdQVC01LjTsl5DshJwg7LKY7J2MIOuPhOyeheuQnCBsb25nLWNvbnRleHQg7ZWg7KadICg1LjIvNS4zLWNvZGV464qUIO2VtOuLuSDsl4bsnYwsIDUuNC1taW5pL25hbm/ripQg6rO17IudIO2RnOyXkOyEnCBsb25nLWNvbnRleHQg64uo6rCAIOyXhuydjClcbi8vIDI3Mksg7LSI6rO8IOyLnCBpbnB1dCAyeCAvIGNhY2hlZCAyeCAvIG91dHB1dCAxLjV4IOKAlCDstIjqs7zrtoTrp4zsnbQg7JWE64uMIOyEuOyFmCDsoITssrTsl5Ag7KCB7Jqp65CoXG4vLyBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5vcGVuYWkuY29tL2FwaS9kb2NzL21vZGVscy9ncHQtNS41IChcInByb21wdHMgd2l0aCA+MjcySyBpbnB1dCB0b2tlbnNcIilcbmNvbnN0IExPTkdfQ09OVEVYVF8yNzJLOiBOb25OdWxsYWJsZTxNb2RlbENvc3RzW1wibG9uZ0NvbnRleHRcIl0+ID0ge1xuICB0aHJlc2hvbGQ6IDI3Ml8wMDAsXG4gIGlucHV0TXVsdGlwbGllcjogMixcbiAgY2FjaGVkSW5wdXRNdWx0aXBsaWVyOiAyLFxuICBvdXRwdXRNdWx0aXBsaWVyOiAxLjUsXG59O1xuXG4vLyBPcGVuQUkg66qo6424IOy5tO2DiOuhnOq3uC4g64uo6rCA7JmAIO2VqOq7mCBDb2RleCDrsLHsl5Trk5zqsIAg66qo642467OE66GcIOuwm+uKlCDstZzrjIAgcmVhc29uaW5nIGVmZm9ydCDrpbwg7ZWcIOqzs+yXkCDrkZTri6QuXG4vLyBtYXhFZmZvcnQg7Lac7LKYOiB+Ly5jb2RleC9tb2RlbHNfY2FjaGUuanNvbiDsnZggc3VwcG9ydGVkX3JlYXNvbmluZ19sZXZlbHMgKDIwMjYtMDktMDcg7ZmV7J24KS5cbi8vIOuvuOq4sOyerCDrqqjrjbjsnYAgeGhpZ2gg6rmM7KeA66eMIOuwm+uKlOuLpC5cbnR5cGUgT3BlbkFJTW9kZWxTcGVjID0gTW9kZWxDb3N0cyAmIHsgbWF4RWZmb3J0PzogT3BlbkFJRWZmb3J0IH07XG5cbmNvbnN0IE9QRU5BSV9DT1NUUzogUmVjb3JkPHN0cmluZywgT3BlbkFJTW9kZWxTcGVjPiA9IHtcbiAgLy8gR1BULTYgQXN0cmE6IFN0YW5kYXJkIEFQSS1lcXVpdmFsZW50IHByaWNpbmcsIHZlcmlmaWVkIDIwMjYtMDktMDcuXG4gIC8vIENvZGV4IHN1YnNjcmlwdGlvbiBjYXRhbG9nIHN1cHBvcnRzIHVsdHJhOyB0aGUgcHVibGljIEFQSSBsaXN0cyBvbmx5IHRocm91Z2ggbWF4LlxuICAvLyBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5vcGVuYWkuY29tL2FwaS9kb2NzL21vZGVscy9ncHQtNi1hc3RyYVxuICAvLyBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5vcGVuYWkuY29tL2FwaS9kb2NzL3ByaWNpbmdcbiAgXCJncHQtNi1hc3RyYVwiOiB7XG4gICAgbWF4RWZmb3J0OiBcInVsdHJhXCIsXG4gICAgaW5wdXRUb2tlbnM6IDEwLFxuICAgIG91dHB1dFRva2VuczogNTAsXG4gICAgY2FjaGVkSW5wdXRUb2tlbnM6IDEsXG4gICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zOiAxMi41LFxuICAgIGxvbmdDb250ZXh0OiBMT05HX0NPTlRFWFRfMjcySyxcbiAgfSxcbiAgLy8gR1BULTYgU29sLCBMdW5hICgyMDI2LTA5LTIyIOy2nOyLnCk6IFN0YW5kYXJkIEFQSSBwcmljaW5nIHZlcmlmaWVkIDIwMjYtMDktMjMuIEdQVC01LjYgU29sL0x1bmEg7J2YIOygiOuwmCDri6jqsIAuXG4gIC8vIENvZGV4IOy5tO2DiOuhnOq3uCgyMDI2LTA5LTIzKeuKlCBTb2wg7JeQIHVsdHJhLCBMdW5hIOyXkCBtYXgg6rmM7KeAIO2XiOyaqe2VmOqzoCDquLDrs7ggZWZmb3J0IOuKlCDrkZgg64ukIG1lZGl1bSDsnbTri6QuXG4gIC8vIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLm9wZW5haS5jb20vYXBpL2RvY3MvbW9kZWxzL2dwdC02LXNvbFxuICAvLyBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5vcGVuYWkuY29tL2FwaS9kb2NzL21vZGVscy9ncHQtNi1sdW5hXG4gIFwiZ3B0LTYtc29sXCI6IHtcbiAgICBtYXhFZmZvcnQ6IFwidWx0cmFcIixcbiAgICBpbnB1dFRva2VuczogMixcbiAgICBvdXRwdXRUb2tlbnM6IDEwLFxuICAgIGNhY2hlZElucHV0VG9rZW5zOiAwLjIsXG4gICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zOiAyLjUsXG4gICAgbG9uZ0NvbnRleHQ6IExPTkdfQ09OVEVYVF8yNzJLLFxuICB9LFxuICBcImdwdC02LWx1bmFcIjoge1xuICAgIG1heEVmZm9ydDogXCJtYXhcIixcbiAgICBpbnB1dFRva2VuczogMC4xLFxuICAgIG91dHB1dFRva2VuczogMC41LFxuICAgIGNhY2hlZElucHV0VG9rZW5zOiAwLjAxLFxuICAgIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczogMC4xMjUsXG4gICAgbG9uZ0NvbnRleHQ6IExPTkdfQ09OVEVYVF8yNzJLLFxuICB9LFxuICAvLyBHUFQtNS42IFNvbCwgVGVycmEsIEx1bmEuIGNhY2hlIHdyaXRlIOuLqOqwgOuKlCDsmbjrtoAgbG9nZ2VyL21hbnVhbCB1c2FnZSDsnoXroKXsnYQg7JyE7ZW0XG4gIC8vIOycoOyngO2VnOuLpC4g7ZiE7J6sIE9wZW5BSSDsnZHri7UgdXNhZ2Ug7JeQIGNhY2hlIHdyaXRlIO2GoO2BsCDtlYTrk5zqsIAg7JeG7Jy866m0IOu5hOyaqeydgCAw7Jy866GcIOqzhOyCsOuQnOuLpC5cbiAgLy8gQHNlZSBodHRwczovL2RldmVsb3BlcnMub3BlbmFpLmNvbS9hcGkvZG9jcy9tb2RlbHMvZ3B0LTUuNi1zb2xcbiAgLy8gQHNlZSBodHRwczovL2RldmVsb3BlcnMub3BlbmFpLmNvbS9hcGkvZG9jcy9tb2RlbHMvZ3B0LTUuNi10ZXJyYVxuICAvLyBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5vcGVuYWkuY29tL2FwaS9kb2NzL21vZGVscy9ncHQtNS42LWx1bmFcbiAgLy8gU29sIHByb21vdGlvbmFsIHJhdGVzIGFyZSBhdmFpbGFibGUgYXQgbGVhc3QgdGhyb3VnaCAyMDI2LTExLTIxLlxuICAvLyBObyBjb25maXJtZWQgZW5kIGRhdGUvcmVwbGFjZW1lbnQgcmF0ZTogcmVjaGVjayBvZmZpY2lhbCBwcmljaW5nIGluc3RlYWQgb2YgYXV0by1yZXZlcnRpbmcuXG4gIFwiZ3B0LTUuNi1zb2xcIjoge1xuICAgIG1heEVmZm9ydDogXCJ1bHRyYVwiLFxuICAgIGlucHV0VG9rZW5zOiA0LFxuICAgIG91dHB1dFRva2VuczogMjAsXG4gICAgY2FjaGVkSW5wdXRUb2tlbnM6IDAuNCxcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM6IDUsXG4gICAgbG9uZ0NvbnRleHQ6IExPTkdfQ09OVEVYVF8yNzJLLFxuICB9LFxuICBcImdwdC01LjYtdGVycmFcIjoge1xuICAgIG1heEVmZm9ydDogXCJ1bHRyYVwiLFxuICAgIGlucHV0VG9rZW5zOiAyLFxuICAgIG91dHB1dFRva2VuczogMTIsXG4gICAgY2FjaGVkSW5wdXRUb2tlbnM6IDAuMixcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM6IDIuNSxcbiAgICBsb25nQ29udGV4dDogTE9OR19DT05URVhUXzI3MkssXG4gIH0sXG4gIFwiZ3B0LTUuNi1sdW5hXCI6IHtcbiAgICBtYXhFZmZvcnQ6IFwibWF4XCIsXG4gICAgaW5wdXRUb2tlbnM6IDAuMixcbiAgICBvdXRwdXRUb2tlbnM6IDEuMixcbiAgICBjYWNoZWRJbnB1dFRva2VuczogMC4wMixcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM6IDAuMjUsXG4gICAgbG9uZ0NvbnRleHQ6IExPTkdfQ09OVEVYVF8yNzJLLFxuICB9LFxuICAvLyBodHRwczovL29wZW5haS5jb20vaW5kZXgvaW50cm9kdWNpbmctZ3B0LTUtNS8gKDIwMjYtMDQg7Lac7IucKVxuICBcImdwdC01LjVcIjoge1xuICAgIGlucHV0VG9rZW5zOiA1LFxuICAgIG91dHB1dFRva2VuczogMzAsXG4gICAgY2FjaGVkSW5wdXRUb2tlbnM6IDAuNSxcbiAgICBsb25nQ29udGV4dDogTE9OR19DT05URVhUXzI3MkssXG4gIH0sXG4gIC8vIOyVhOuemCBncHQtNS40IC8gZ3B0LTUuNC1taW5pIC8gZ3B0LTUuMy1jb2RleCAvIGdwdC01LjIg64qUIHFncmlkIOqwgCDsk7DripQgQ2hhdEdQVCDqtazrj4UgQ29kZXgg6rK966Gc7JeQ7IScXG4gIC8vIOuNlCDsnbTsg4Eg7KCc6rO165CY7KeAIOyViuuKlOuLpCg1LjQg6rOE7Je07J2AIDIwMjYtMDgtMzEgcmV0aXJlZCwg64yA7LK0IGdwdC01LjYtdGVycmEgLyBncHQtNS42LWx1bmEpLlxuICAvLyDqs7zqsbAgcmVxdWVzdCBsb2cg7J6s7IKw7KCVKGNvc3Rfc291cmNlIOyXhuuKlCBsZWdhY3kg7ZaJKeyXkCDtlYTsmpTtlZjrr4DroZwg64uo6rCAIO2WieydgCDsnKDsp4DtlZzri6QuXG4gIC8vIGh0dHBzOi8vb3BlbmFpLmNvbS9pbmRleC9pbnRyb2R1Y2luZy1ncHQtNS00LyAoMjAyNi0wMyDstpzsi5wpXG4gIFwiZ3B0LTUuNFwiOiB7XG4gICAgaW5wdXRUb2tlbnM6IDIuNSxcbiAgICBvdXRwdXRUb2tlbnM6IDE1LFxuICAgIGNhY2hlZElucHV0VG9rZW5zOiAwLjI1LFxuICAgIGxvbmdDb250ZXh0OiBMT05HX0NPTlRFWFRfMjcySyxcbiAgfSxcbiAgXCJncHQtNS40LW1pbmlcIjogeyBpbnB1dFRva2VuczogMC43NSwgb3V0cHV0VG9rZW5zOiA0LjUsIGNhY2hlZElucHV0VG9rZW5zOiAwLjA3NSB9LFxuICAvLyBncHQtNS4y7JmAIOuPmeydvCDri6jqsIAgKGNhY2hlZCA9IGlucHV07J2YIDEwJSlcbiAgXCJncHQtNS4zLWNvZGV4XCI6IHsgaW5wdXRUb2tlbnM6IDEuNzUsIG91dHB1dFRva2VuczogMTQsIGNhY2hlZElucHV0VG9rZW5zOiAwLjE3NSB9LFxuICAvLyBodHRwczovL29wZW5haS5jb20vaW5kZXgvaW50cm9kdWNpbmctZ3B0LTUtMi8gKGNhY2hlZCBpbnB1dCA5MCUg7ZWg7J24IOuqheyLnClcbiAgXCJncHQtNS4yXCI6IHsgaW5wdXRUb2tlbnM6IDEuNzUsIG91dHB1dFRva2VuczogMTQsIGNhY2hlZElucHV0VG9rZW5zOiAwLjE3NSB9LFxufTtcblxuLy8g4pSA4pSAIEFudGhyb3BpYyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZnVuY3Rpb24gYW50aHJvcGljQ29zdHMoXG4gIGlucHV0VG9rZW5zOiBudW1iZXIsXG4gIG91dHB1dFRva2VuczogbnVtYmVyLFxuICBvdmVycmlkZXM6IFBpY2s8UGFydGlhbDxNb2RlbENvc3RzPiwgXCJjYWNoZWRJbnB1dFRva2Vuc1wiPiA9IHt9LFxuKTogTW9kZWxDb3N0cyB7XG4gIHJldHVybiB7XG4gICAgaW5wdXRUb2tlbnMsXG4gICAgb3V0cHV0VG9rZW5zLFxuICAgIC8vIO2RnOykgCBjYWNoZSByZWFkIOuKlCBiYXNlIGlucHV0IOydmCAwLjF4LiBGYWJsZSA1LjEg7LKY65+8IOqzteyLnSDtirnroYAg64uo6rCA6rCAIOyeiOycvOuptCBvdmVycmlkZSDtlZzri6QuXG4gICAgY2FjaGVkSW5wdXRUb2tlbnM6IG92ZXJyaWRlcy5jYWNoZWRJbnB1dFRva2VucyA/PyBpbnB1dFRva2VucyAvIDEwLFxuICAgIC8vIENsYXVkZSBDb2RlIHN1YnNjcmlwdGlvbiBPQXV0aCDripQgMWggVFRMIOydhCDsnpDrj5kg7ISg7YOd7ZWc64ukLiDqtazrsoTsoITsspjrn7wg7J2R64u17JeQXG4gICAgLy8gVFRMIGJyZWFrZG93biDsnbQg7JeG7J2EIOuVjOunjCDsnbQgMWgg64uo6rCA66W8IGZhbGxiYWNrIOycvOuhnCDsgqzsmqntlZzri6QuXG4gICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zOiBpbnB1dFRva2VucyAqIDIsXG4gICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zNW06IGlucHV0VG9rZW5zICogMS4yNSxcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMxaDogaW5wdXRUb2tlbnMgKiAyLFxuICB9O1xufVxuXG4vLyDqsIDqsqkg7Lac7LKYOiBodHRwczovL3BsYXRmb3JtLmNsYXVkZS5jb20vZG9jcy9lbi9hYm91dC1jbGF1ZGUvcHJpY2luZyAoMjAyNi0wOS0yMyDtmZXsnbgsIOq4sOyhtCDrqqjrjbgg64uo6rCAIOuzgOuPmSDsl4bsnYwpXG5jb25zdCBBTlRIUk9QSUNfQ09TVFM6IFJlY29yZDxzdHJpbmcsIE1vZGVsQ29zdHM+ID0ge1xuICAvLyBGYWJsZSA1LjEgKDIwMjYtMDktMDEg7Lac7IucKTogaW5wdXQvb3V0cHV0IOydgCBGYWJsZSA1IOyZgCDqsJnqs6AgY2FjaGUgcmVhZCDrp4wgMC4wMjV4KCQwLjI1KSDtirnroYAuXG4gIC8vIEBzZWUgaHR0cHM6Ly9wbGF0Zm9ybS5jbGF1ZGUuY29tL2RvY3MvZW4vbW9kZWxzL2ZhYmxlLTUtMS9vdmVydmlld1xuICBcImNsYXVkZS1mYWJsZS01LTFcIjogYW50aHJvcGljQ29zdHMoMTAsIDUwLCB7IGNhY2hlZElucHV0VG9rZW5zOiAwLjI1IH0pLFxuICBcImNsYXVkZS1mYWJsZS01XCI6IGFudGhyb3BpY0Nvc3RzKDEwLCA1MCksXG4gIHNvbm5ldDogYW50aHJvcGljQ29zdHMoMywgMTUpLFxuICBcImNsYXVkZS0zLTUtaGFpa3VcIjogYW50aHJvcGljQ29zdHMoMC44LCA0KSxcbiAgXCJjbGF1ZGUtaGFpa3UtNC01XCI6IGFudGhyb3BpY0Nvc3RzKDEsIDUpLFxuICBcImNsYXVkZS0zLTUtc29ubmV0XCI6IGFudGhyb3BpY0Nvc3RzKDMsIDE1KSxcbiAgXCJjbGF1ZGUtMy03LXNvbm5ldFwiOiBhbnRocm9waWNDb3N0cygzLCAxNSksXG4gIFwiY2xhdWRlLXNvbm5ldC00XCI6IGFudGhyb3BpY0Nvc3RzKDMsIDE1KSxcbiAgXCJjbGF1ZGUtc29ubmV0LTQtNVwiOiBhbnRocm9waWNDb3N0cygzLCAxNSksXG4gIFwiY2xhdWRlLXNvbm5ldC00LTZcIjogYW50aHJvcGljQ29zdHMoMywgMTUpLFxuICBcImNsYXVkZS1zb25uZXQtNC03XCI6IGFudGhyb3BpY0Nvc3RzKDMsIDE1KSxcbiAgXCJjbGF1ZGUtb3B1cy00XCI6IGFudGhyb3BpY0Nvc3RzKDE1LCA3NSksXG4gIFwiY2xhdWRlLW9wdXMtNC0xXCI6IGFudGhyb3BpY0Nvc3RzKDE1LCA3NSksXG4gIFwiY2xhdWRlLW9wdXMtNC01XCI6IGFudGhyb3BpY0Nvc3RzKDUsIDI1KSxcbiAgXCJjbGF1ZGUtb3B1cy00LTZcIjogYW50aHJvcGljQ29zdHMoNSwgMjUpLFxuICBcImNsYXVkZS1vcHVzLTQtN1wiOiBhbnRocm9waWNDb3N0cyg1LCAyNSksXG4gIFwiY2xhdWRlLW9wdXMtNC04XCI6IGFudGhyb3BpY0Nvc3RzKDUsIDI1KSxcbiAgXCJjbGF1ZGUtb3B1cy01XCI6IGFudGhyb3BpY0Nvc3RzKDUsIDI1KSxcbiAgLy8gT3B1cyA1LjUgKDIwMjYtMDktMjIg7Lac7IucKTogJDQvJDIwLiBjYWNoZSByZWFkIOuKlCAwLjA1eCgkMC4yMCkg7Yq566GALCBjYWNoZSB3cml0ZSDripQg7ZGc7KSAIOuwsOycqCgkNS8kOCkuXG4gIC8vIEBzZWUgaHR0cHM6Ly9wbGF0Zm9ybS5jbGF1ZGUuY29tL2RvY3MvZW4vbW9kZWxzL29wdXMtNS01L292ZXJ2aWV3XG4gIFwiY2xhdWRlLW9wdXMtNS01XCI6IGFudGhyb3BpY0Nvc3RzKDQsIDIwLCB7IGNhY2hlZElucHV0VG9rZW5zOiAwLjIgfSksXG4gIC8vIFNvbm5ldCA1IOydmCBpbnRyb2R1Y3RvcnkgJDIvJDEwIOydtCDsoJXsi50g64uo6rCA66GcIO2ZleygleuQkOuLpC4gMjAyNi0wOS0wMSDsl5Ag7JiI7KCV65CQ642YICQzLyQxNSDsnbjsg4HsnYBcbiAgLy8g7Leo7IaM65CQ7Jy866+A66GcIOuCoOynnCDrtoTquLAg7JeG7J20IOqzoOyglSDri6jqsIDroZwg6rOE7IKw7ZWc64ukLlxuICBcImNsYXVkZS1zb25uZXQtNVwiOiBhbnRocm9waWNDb3N0cygyLCAxMCksXG4gIC8vIFNvbm5ldCA1LjUgKDIwMjYtMDktMjkg7Lac7IucKTogU29ubmV0IDUg7JmAIOqwmeydgCAkMi8kMTAsIGNhY2hlIHJlYWQg64qUIO2RnOykgCAwLjF4KCQwLjIwKS5cbiAgLy8gQHNlZSBodHRwczovL3BsYXRmb3JtLmNsYXVkZS5jb20vZG9jcy9lbi9hYm91dC1jbGF1ZGUvcHJpY2luZ1xuICBcImNsYXVkZS1zb25uZXQtNS01XCI6IGFudGhyb3BpY0Nvc3RzKDIsIDEwKSxcbn07XG5cbi8vIGdwdC01LjMtY29kZXgtc3Bhcmsg64qUIHJlc2VhcmNoIHByZXZpZXcg66GcIOqzteyLnSB0b2tlbiDri6jqsIDqsIAg7JWE7KeBIGZpbmFsIOydtCDslYTri4jri6QuXG4vLyDsp4Dsm5Ag7YOA7J6F7J2AIOycoOyngO2VmOuQmCwg6rO17IudIOuLqOqwgOqwgCDqs7XqsJzrkKAg65WM6rmM7KeAIOyVhOuemCBnZW5lcmljIGVzdGltYXRlIOuhnCDqs4TsgrDtlZzri6QuXG4vLyBAc2VlIGh0dHBzOi8vaGVscC5vcGVuYWkuY29tL2VuL2FydGljbGVzLzIwMDAxMTA2LWNvZGV4LXJhdGUtY2FyZFxuY29uc3QgREVGQVVMVF9DT1NUUzogTW9kZWxDb3N0cyA9IHsgaW5wdXRUb2tlbnM6IDMsIG91dHB1dFRva2VuczogMTUsIGNhY2hlZElucHV0VG9rZW5zOiAwLjMgfTtcblxuLyoqIENvZGV4IOuwseyXlOuTnOqwgCDsnbQg66qo64247JeQIO2XiOyaqe2VmOuKlCDstZzrjIAgZWZmb3J0LiDsubTtg4jroZzqt7jsl5Ag7JeG64qUIOuqqOuNuOydgCB4aGlnaCDquYzsp4Dri6QuICovXG5leHBvcnQgZnVuY3Rpb24gb3BlbmFpTW9kZWxNYXhFZmZvcnQobW9kZWw6IHN0cmluZyk6IE9wZW5BSUVmZm9ydCB7XG4gIHJldHVybiBPUEVOQUlfQ09TVFNbbW9kZWxdPy5tYXhFZmZvcnQgPz8gXCJ4aGlnaFwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9kZWxDb3N0cyhtb2RlbDogc3RyaW5nKTogTW9kZWxDb3N0cyB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRNb2RlbCA9IChtb2RlbC5zcGxpdChcIi9cIikucG9wKCkgPz8gbW9kZWwpLnJlcGxhY2UoL1xcWzFtXFxdJC9pLCBcIlwiKTtcbiAgcmV0dXJuIE9QRU5BSV9DT1NUU1tub3JtYWxpemVkTW9kZWxdID8/IEFOVEhST1BJQ19DT1NUU1tub3JtYWxpemVkTW9kZWxdID8/IERFRkFVTFRfQ09TVFM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVDb3N0VXNkKFxuICBtb2RlbDogc3RyaW5nLFxuICB1c2FnZToge1xuICAgIGlucHV0VG9rZW5zOiBudW1iZXI7XG4gICAgb3V0cHV0VG9rZW5zOiBudW1iZXI7XG4gICAgY2FjaGVkSW5wdXRUb2tlbnM/OiBudW1iZXI7XG4gICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zPzogbnVtYmVyO1xuICAgIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczVtPzogbnVtYmVyO1xuICAgIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczFoPzogbnVtYmVyO1xuICB9LFxuKTogbnVtYmVyIHtcbiAgY29uc3QgY29zdHMgPSBnZXRNb2RlbENvc3RzKG1vZGVsKTtcbiAgY29uc3QgY2FjaGVkSW5wdXQgPSB1c2FnZS5jYWNoZWRJbnB1dFRva2VucyA/PyAwO1xuICBjb25zdCBjYWNoZUNyZWF0aW9uSW5wdXQ1bSA9IE1hdGgubWF4KHVzYWdlLmNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczVtID8/IDAsIDApO1xuICBjb25zdCBjYWNoZUNyZWF0aW9uSW5wdXQxaCA9IE1hdGgubWF4KHVzYWdlLmNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczFoID8/IDAsIDApO1xuICBjb25zdCBjYWNoZUNyZWF0aW9uSW5wdXQgPSBNYXRoLm1heChcbiAgICB1c2FnZS5jYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMgPz8gMCxcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXQ1bSArIGNhY2hlQ3JlYXRpb25JbnB1dDFoLFxuICApO1xuICBjb25zdCBjbGFzc2lmaWVkQ2FjaGVDcmVhdGlvbklucHV0NW0gPSBNYXRoLm1pbihjYWNoZUNyZWF0aW9uSW5wdXQ1bSwgY2FjaGVDcmVhdGlvbklucHV0KTtcbiAgY29uc3QgY2xhc3NpZmllZENhY2hlQ3JlYXRpb25JbnB1dDFoID0gTWF0aC5taW4oXG4gICAgY2FjaGVDcmVhdGlvbklucHV0MWgsXG4gICAgY2FjaGVDcmVhdGlvbklucHV0IC0gY2xhc3NpZmllZENhY2hlQ3JlYXRpb25JbnB1dDVtLFxuICApO1xuICBjb25zdCB1bmNsYXNzaWZpZWRDYWNoZUNyZWF0aW9uSW5wdXQgPVxuICAgIGNhY2hlQ3JlYXRpb25JbnB1dCAtIGNsYXNzaWZpZWRDYWNoZUNyZWF0aW9uSW5wdXQ1bSAtIGNsYXNzaWZpZWRDYWNoZUNyZWF0aW9uSW5wdXQxaDtcbiAgY29uc3Qgbm9uQ2FjaGVkSW5wdXQgPSBNYXRoLm1heCh1c2FnZS5pbnB1dFRva2VucyAtIGNhY2hlZElucHV0IC0gY2FjaGVDcmVhdGlvbklucHV0LCAwKTtcblxuICAvLyBsb25nLWNvbnRleHQg7ZWg7KadOiDsoITssrQg7J6F66ClKGlucHV0X3Rva2VucywgY2FjaGUg7Y+s7ZWoKeydtCB0aHJlc2hvbGQg7LSI6rO8IOyLnCDsmpTssq0g7KCE7LK07JeQIOuwsOycqCDsoIHsmqlcbiAgY29uc3QgbGMgPSBjb3N0cy5sb25nQ29udGV4dDtcbiAgY29uc3QgaXNMb25nQ29udGV4dCA9IGxjICE9PSB1bmRlZmluZWQgJiYgdXNhZ2UuaW5wdXRUb2tlbnMgPiBsYy50aHJlc2hvbGQ7XG4gIGNvbnN0IGlucHV0UmF0ZSA9IGNvc3RzLmlucHV0VG9rZW5zICogKGlzTG9uZ0NvbnRleHQgPyBsYy5pbnB1dE11bHRpcGxpZXIgOiAxKTtcbiAgY29uc3QgY2FjaGVkUmF0ZSA9IGNvc3RzLmNhY2hlZElucHV0VG9rZW5zICogKGlzTG9uZ0NvbnRleHQgPyBsYy5jYWNoZWRJbnB1dE11bHRpcGxpZXIgOiAxKTtcbiAgY29uc3QgY2FjaGVDcmVhdGlvbkZhbGxiYWNrUmF0ZSA9XG4gICAgKGNvc3RzLmNhY2hlQ3JlYXRpb25JbnB1dFRva2VucyA/PyBjb3N0cy5pbnB1dFRva2VucykgKlxuICAgIChpc0xvbmdDb250ZXh0ID8gbGMuaW5wdXRNdWx0aXBsaWVyIDogMSk7XG4gIGNvbnN0IGNhY2hlQ3JlYXRpb241bVJhdGUgPVxuICAgIChjb3N0cy5jYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM1bSA/PyBjb3N0cy5jYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMgPz8gY29zdHMuaW5wdXRUb2tlbnMpICpcbiAgICAoaXNMb25nQ29udGV4dCA/IGxjLmlucHV0TXVsdGlwbGllciA6IDEpO1xuICBjb25zdCBjYWNoZUNyZWF0aW9uMWhSYXRlID1cbiAgICAoY29zdHMuY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zMWggPz8gY29zdHMuY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zID8/IGNvc3RzLmlucHV0VG9rZW5zKSAqXG4gICAgKGlzTG9uZ0NvbnRleHQgPyBsYy5pbnB1dE11bHRpcGxpZXIgOiAxKTtcbiAgY29uc3Qgb3V0cHV0UmF0ZSA9IGNvc3RzLm91dHB1dFRva2VucyAqIChpc0xvbmdDb250ZXh0ID8gbGMub3V0cHV0TXVsdGlwbGllciA6IDEpO1xuXG4gIHJldHVybiAoXG4gICAgKG5vbkNhY2hlZElucHV0IC8gMV8wMDBfMDAwKSAqIGlucHV0UmF0ZSArXG4gICAgKHVzYWdlLm91dHB1dFRva2VucyAvIDFfMDAwXzAwMCkgKiBvdXRwdXRSYXRlICtcbiAgICAoY2FjaGVkSW5wdXQgLyAxXzAwMF8wMDApICogY2FjaGVkUmF0ZSArXG4gICAgKHVuY2xhc3NpZmllZENhY2hlQ3JlYXRpb25JbnB1dCAvIDFfMDAwXzAwMCkgKiBjYWNoZUNyZWF0aW9uRmFsbGJhY2tSYXRlICtcbiAgICAoY2xhc3NpZmllZENhY2hlQ3JlYXRpb25JbnB1dDVtIC8gMV8wMDBfMDAwKSAqIGNhY2hlQ3JlYXRpb241bVJhdGUgK1xuICAgIChjbGFzc2lmaWVkQ2FjaGVDcmVhdGlvbklucHV0MWggLyAxXzAwMF8wMDApICogY2FjaGVDcmVhdGlvbjFoUmF0ZVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBMENBLE1BQU0sb0JBQTREO0NBQ2hFLFdBQVc7Q0FDWCxpQkFBaUI7Q0FDakIsdUJBQXVCO0NBQ3ZCLGtCQUFrQjtBQUNwQjtBQU9BLE1BQU0sZUFBZ0Q7Q0FLcEQsZUFBZTtFQUNiLFdBQVc7RUFDWCxhQUFhO0VBQ2IsY0FBYztFQUNkLG1CQUFtQjtFQUNuQiwwQkFBMEI7RUFDMUIsYUFBYTtDQUNmO0NBS0EsYUFBYTtFQUNYLFdBQVc7RUFDWCxhQUFhO0VBQ2IsY0FBYztFQUNkLG1CQUFtQjtFQUNuQiwwQkFBMEI7RUFDMUIsYUFBYTtDQUNmO0NBQ0EsY0FBYztFQUNaLFdBQVc7RUFDWCxhQUFhO0VBQ2IsY0FBYztFQUNkLG1CQUFtQjtFQUNuQiwwQkFBMEI7RUFDMUIsYUFBYTtDQUNmO0NBUUEsZUFBZTtFQUNiLFdBQVc7RUFDWCxhQUFhO0VBQ2IsY0FBYztFQUNkLG1CQUFtQjtFQUNuQiwwQkFBMEI7RUFDMUIsYUFBYTtDQUNmO0NBQ0EsaUJBQWlCO0VBQ2YsV0FBVztFQUNYLGFBQWE7RUFDYixjQUFjO0VBQ2QsbUJBQW1CO0VBQ25CLDBCQUEwQjtFQUMxQixhQUFhO0NBQ2Y7Q0FDQSxnQkFBZ0I7RUFDZCxXQUFXO0VBQ1gsYUFBYTtFQUNiLGNBQWM7RUFDZCxtQkFBbUI7RUFDbkIsMEJBQTBCO0VBQzFCLGFBQWE7Q0FDZjtDQUVBLFdBQVc7RUFDVCxhQUFhO0VBQ2IsY0FBYztFQUNkLG1CQUFtQjtFQUNuQixhQUFhO0NBQ2Y7Q0FLQSxXQUFXO0VBQ1QsYUFBYTtFQUNiLGNBQWM7RUFDZCxtQkFBbUI7RUFDbkIsYUFBYTtDQUNmO0NBQ0EsZ0JBQWdCO0VBQUUsYUFBYTtFQUFNLGNBQWM7RUFBSyxtQkFBbUI7Q0FBTTtDQUVqRixpQkFBaUI7RUFBRSxhQUFhO0VBQU0sY0FBYztFQUFJLG1CQUFtQjtDQUFNO0NBRWpGLFdBQVc7RUFBRSxhQUFhO0VBQU0s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
|
|
162
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtY29zdC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvcHJvdmlkZXJzL2NvbW1vbi9tb2RlbC1jb3N0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog66qo642467OEIO2GoO2BsCDqsIDqsqkg7YWM7J2067iUICsgY29zdCDqs4TsgrAuXG4gKlxuICogY2xhdWRlIGNvZGUg7JmAIOuPmeydvCDtjKjthLQ6IO2BtOudvOydtOyWuO2KuOyXkOyEnCDqsIDqsqkg7YWM7J2067iU66GcIOyngeygkSDqs4TsgrAuXG4gKiDqsIDqsqkg64uo7JyEOiBVU0QgcGVyIDFNIHRva2Vucy5cbiAqXG4gKiBPcGVuQUkg66qo6424IOuqqeuhneydgCBPcGVuQUkg66qo6424IOusuOyEnOyZgCDtmITsnqwg7KeA7JuQIOuqqeuhneydhCDquLDspIDsnLzroZwg6rSA66as7ZWc64ukLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9wbGF0Zm9ybS5vcGVuYWkuY29tL2RvY3MvcHJpY2luZ1xuICogQHNlZSBodHRwczovL3BsYXRmb3JtLmNsYXVkZS5jb20vZG9jcy9lbi9hYm91dC1jbGF1ZGUvcHJpY2luZ1xuICovXG5cbmltcG9ydCB7IHR5cGUgT3BlbkFJRWZmb3J0IH0gZnJvbSBcIi4vZWZmb3J0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxDb3N0cyB7XG4gIGlucHV0VG9rZW5zOiBudW1iZXI7XG4gIG91dHB1dFRva2VuczogbnVtYmVyO1xuICBjYWNoZWRJbnB1dFRva2VuczogbnVtYmVyO1xuICAvKiogVFRMIGJyZWFrZG93biDsnbQg7JeG64qUIHVzYWdlIOyXkCDsoIHsmqntlaAgY2FjaGUgd3JpdGUgZmFsbGJhY2sg64uo6rCALiAqL1xuICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM/OiBudW1iZXI7XG4gIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczVtPzogbnVtYmVyO1xuICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMxaD86IG51bWJlcjtcbiAgLyoqXG4gICAqIGxvbmctY29udGV4dCDtlaDspp0uIOyghOyytCDsnoXroKUg7Yag7YGwKGlucHV0X3Rva2VucywgY2FjaGVfcmVhZCDtj6ztlagp7J20IHRocmVzaG9sZCDstIjqs7wg7IucXG4gICAqIOy0iOqzvOu2hOunjOydtCDslYTri4jrnbwg7JqU7LKtIOyghOyytChmdWxsIHNlc3Npb24p7JeQIOuwsOycqCDsoIHsmqkuXG4gICAqL1xuICBsb25nQ29udGV4dD86IHtcbiAgICB0aHJlc2hvbGQ6IG51bWJlcjtcbiAgICBpbnB1dE11bHRpcGxpZXI6IG51bWJlcjtcbiAgICBjYWNoZWRJbnB1dE11bHRpcGxpZXI6IG51bWJlcjtcbiAgICBvdXRwdXRNdWx0aXBsaWVyOiBudW1iZXI7XG4gIH07XG59XG5cbi8vIOKUgOKUgCBPcGVuQUkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vL1xuLy8gU3RhbmRhcmQgcHJpY2luZyB2ZXJpZmllZCAyMDI2LTA5LTIzICjquLDsobQg66qo6424IOuLqOqwgCDrs4Drj5kg7JeG7J2MKTogaHR0cHM6Ly9kZXZlbG9wZXJzLm9wZW5haS5jb20vYXBpL2RvY3MvcHJpY2luZ1xuLy8g7Iug66qo6424IOy2nOyLnOuniOuLpCDri6jqsIDqsIAg67CU64CM66+A66GcKDUuMuKGkjUuNOKGkjUuNSkg66qo6424IOy2lOqwgCDsi5wg67CY65Oc7IucIOqzteyLnSDtjpjsnbTsp4Ag7J6s7ZmV7J247ZW07JW87ZWoXG5cbi8vIEdQVC01LjTsl5DshJwg7LKY7J2MIOuPhOyeheuQnCBsb25nLWNvbnRleHQg7ZWg7KadICg1LjIvNS4zLWNvZGV464qUIO2VtOuLuSDsl4bsnYwsIDUuNC1taW5pL25hbm/ripQg6rO17IudIO2RnOyXkOyEnCBsb25nLWNvbnRleHQg64uo6rCAIOyXhuydjClcbi8vIDI3Mksg7LSI6rO8IOyLnCBpbnB1dCAyeCAvIGNhY2hlZCAyeCAvIG91dHB1dCAxLjV4IOKAlCDstIjqs7zrtoTrp4zsnbQg7JWE64uMIOyEuOyFmCDsoITssrTsl5Ag7KCB7Jqp65CoXG4vLyBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5vcGVuYWkuY29tL2FwaS9kb2NzL21vZGVscy9ncHQtNS41IChcInByb21wdHMgd2l0aCA+MjcySyBpbnB1dCB0b2tlbnNcIilcbmNvbnN0IExPTkdfQ09OVEVYVF8yNzJLOiBOb25OdWxsYWJsZTxNb2RlbENvc3RzW1wibG9uZ0NvbnRleHRcIl0+ID0ge1xuICB0aHJlc2hvbGQ6IDI3Ml8wMDAsXG4gIGlucHV0TXVsdGlwbGllcjogMixcbiAgY2FjaGVkSW5wdXRNdWx0aXBsaWVyOiAyLFxuICBvdXRwdXRNdWx0aXBsaWVyOiAxLjUsXG59O1xuXG4vLyBPcGVuQUkg66qo6424IOy5tO2DiOuhnOq3uC4g64uo6rCA7JmAIO2VqOq7mCBDb2RleCDrsLHsl5Trk5zqsIAg66qo642467OE66GcIOuwm+uKlCDstZzrjIAgcmVhc29uaW5nIGVmZm9ydCDrpbwg7ZWcIOqzs+yXkCDrkZTri6QuXG4vLyBtYXhFZmZvcnQg7Lac7LKYOiB+Ly5jb2RleC9tb2RlbHNfY2FjaGUuanNvbiDsnZggc3VwcG9ydGVkX3JlYXNvbmluZ19sZXZlbHMgKDIwMjYtMDktMDcg7ZmV7J24KS5cbi8vIOuvuOq4sOyerCDrqqjrjbjsnYAgeGhpZ2gg6rmM7KeA66eMIOuwm+uKlOuLpC5cbnR5cGUgT3BlbkFJTW9kZWxTcGVjID0gTW9kZWxDb3N0cyAmIHsgbWF4RWZmb3J0PzogT3BlbkFJRWZmb3J0IH07XG5cbmNvbnN0IE9QRU5BSV9DT1NUUzogUmVjb3JkPHN0cmluZywgT3BlbkFJTW9kZWxTcGVjPiA9IHtcbiAgLy8gR1BULTYgQXN0cmE6IFN0YW5kYXJkIEFQSS1lcXVpdmFsZW50IHByaWNpbmcsIHZlcmlmaWVkIDIwMjYtMDktMDcuXG4gIC8vIENvZGV4IHN1YnNjcmlwdGlvbiBjYXRhbG9nIHN1cHBvcnRzIHVsdHJhOyB0aGUgcHVibGljIEFQSSBsaXN0cyBvbmx5IHRocm91Z2ggbWF4LlxuICAvLyBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5vcGVuYWkuY29tL2FwaS9kb2NzL21vZGVscy9ncHQtNi1hc3RyYVxuICAvLyBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5vcGVuYWkuY29tL2FwaS9kb2NzL3ByaWNpbmdcbiAgXCJncHQtNi1hc3RyYVwiOiB7XG4gICAgbWF4RWZmb3J0OiBcInVsdHJhXCIsXG4gICAgaW5wdXRUb2tlbnM6IDEwLFxuICAgIG91dHB1dFRva2VuczogNTAsXG4gICAgY2FjaGVkSW5wdXRUb2tlbnM6IDEsXG4gICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zOiAxMi41LFxuICAgIGxvbmdDb250ZXh0OiBMT05HX0NPTlRFWFRfMjcySyxcbiAgfSxcbiAgLy8gR1BULTYuMSBTb2wgKDIwMjYtMDktMjkgRGV2RGF5IOy2nOyLnCk6IFN0YW5kYXJkIEFQSSBwcmljaW5nIHZlcmlmaWVkIDIwMjYtMDktMzAuIEdQVC02IFNvbCDqs7wg6rCZ6rOgIGNhY2hlZCBpbnB1dCDrp4wg7KCI67CYLlxuICAvLyBDb2RleCDsubTtg4jroZzqt7goMjAyNi0wOS0zMCnripQgdWx0cmEg6rmM7KeAIO2XiOyaqe2VmOqzoCDquLDrs7ggZWZmb3J0IOuKlCBsb3cg64ukKEdQVC02IFNvbCDsnYAgbWVkaXVtKS5cbiAgLy8gcWdyaWQg7J2YIOyalOyyrSDtmJXtg5wgKyBjb2RleF9jbGlfcnMvMC4xNDcuMCDtl6TrjZTroZwgMjAyNi0wOS0zMCDqtazrj4Ug6rK966GcIOudvOydtOu4jCDsg53shLEg7ISx6rO1LlxuICAvLyBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5vcGVuYWkuY29tL2FwaS9kb2NzL21vZGVscy9ncHQtNi4xLXNvbFxuICBcImdwdC02LjEtc29sXCI6IHtcbiAgICBtYXhFZmZvcnQ6IFwidWx0cmFcIixcbiAgICBpbnB1dFRva2VuczogMixcbiAgICBvdXRwdXRUb2tlbnM6IDEwLFxuICAgIGNhY2hlZElucHV0VG9rZW5zOiAwLjEsXG4gICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zOiAyLjUsXG4gICAgbG9uZ0NvbnRleHQ6IExPTkdfQ09OVEVYVF8yNzJLLFxuICB9LFxuICAvLyBHUFQtNiBTb2wsIEx1bmEgKDIwMjYtMDktMjIg7Lac7IucKTogU3RhbmRhcmQgQVBJIHByaWNpbmcgdmVyaWZpZWQgMjAyNi0wOS0yMy4gR1BULTUuNiBTb2wvTHVuYSDsnZgg7KCI67CYIOuLqOqwgC5cbiAgLy8gQ29kZXgg7Lm07YOI66Gc6re4KDIwMjYtMDktMjMp64qUIFNvbCDsl5AgdWx0cmEsIEx1bmEg7JeQIG1heCDquYzsp4Ag7ZeI7Jqp7ZWY6rOgIOq4sOuzuCBlZmZvcnQg64qUIOuRmCDri6QgbWVkaXVtIOydtOuLpC5cbiAgLy8gQHNlZSBodHRwczovL2RldmVsb3BlcnMub3BlbmFpLmNvbS9hcGkvZG9jcy9tb2RlbHMvZ3B0LTYtc29sXG4gIC8vIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLm9wZW5haS5jb20vYXBpL2RvY3MvbW9kZWxzL2dwdC02LWx1bmFcbiAgXCJncHQtNi1zb2xcIjoge1xuICAgIG1heEVmZm9ydDogXCJ1bHRyYVwiLFxuICAgIGlucHV0VG9rZW5zOiAyLFxuICAgIG91dHB1dFRva2VuczogMTAsXG4gICAgY2FjaGVkSW5wdXRUb2tlbnM6IDAuMixcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM6IDIuNSxcbiAgICBsb25nQ29udGV4dDogTE9OR19DT05URVhUXzI3MkssXG4gIH0sXG4gIFwiZ3B0LTYtbHVuYVwiOiB7XG4gICAgbWF4RWZmb3J0OiBcIm1heFwiLFxuICAgIGlucHV0VG9rZW5zOiAwLjEsXG4gICAgb3V0cHV0VG9rZW5zOiAwLjUsXG4gICAgY2FjaGVkSW5wdXRUb2tlbnM6IDAuMDEsXG4gICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zOiAwLjEyNSxcbiAgICBsb25nQ29udGV4dDogTE9OR19DT05URVhUXzI3MkssXG4gIH0sXG4gIC8vIEdQVC01LjYgU29sLCBUZXJyYSwgTHVuYS4gY2FjaGUgd3JpdGUg64uo6rCA64qUIOyZuOu2gCBsb2dnZXIvbWFudWFsIHVzYWdlIOyeheugpeydhCDsnITtlbRcbiAgLy8g7Jyg7KeA7ZWc64ukLiDtmITsnqwgT3BlbkFJIOydkeuLtSB1c2FnZSDsl5AgY2FjaGUgd3JpdGUg7Yag7YGwIO2VhOuTnOqwgCDsl4bsnLzrqbQg67mE7Jqp7J2AIDDsnLzroZwg6rOE7IKw65Cc64ukLlxuICAvLyBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5vcGVuYWkuY29tL2FwaS9kb2NzL21vZGVscy9ncHQtNS42LXNvbFxuICAvLyBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5vcGVuYWkuY29tL2FwaS9kb2NzL21vZGVscy9ncHQtNS42LXRlcnJhXG4gIC8vIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLm9wZW5haS5jb20vYXBpL2RvY3MvbW9kZWxzL2dwdC01LjYtbHVuYVxuICAvLyBTb2wgcHJvbW90aW9uYWwgcmF0ZXMgYXJlIGF2YWlsYWJsZSBhdCBsZWFzdCB0aHJvdWdoIDIwMjYtMTEtMjEuXG4gIC8vIE5vIGNvbmZpcm1lZCBlbmQgZGF0ZS9yZXBsYWNlbWVudCByYXRlOiByZWNoZWNrIG9mZmljaWFsIHByaWNpbmcgaW5zdGVhZCBvZiBhdXRvLXJldmVydGluZy5cbiAgXCJncHQtNS42LXNvbFwiOiB7XG4gICAgbWF4RWZmb3J0OiBcInVsdHJhXCIsXG4gICAgaW5wdXRUb2tlbnM6IDQsXG4gICAgb3V0cHV0VG9rZW5zOiAyMCxcbiAgICBjYWNoZWRJbnB1dFRva2VuczogMC40LFxuICAgIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczogNSxcbiAgICBsb25nQ29udGV4dDogTE9OR19DT05URVhUXzI3MkssXG4gIH0sXG4gIFwiZ3B0LTUuNi10ZXJyYVwiOiB7XG4gICAgbWF4RWZmb3J0OiBcInVsdHJhXCIsXG4gICAgaW5wdXRUb2tlbnM6IDIsXG4gICAgb3V0cHV0VG9rZW5zOiAxMixcbiAgICBjYWNoZWRJbnB1dFRva2VuczogMC4yLFxuICAgIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczogMi41LFxuICAgIGxvbmdDb250ZXh0OiBMT05HX0NPTlRFWFRfMjcySyxcbiAgfSxcbiAgXCJncHQtNS42LWx1bmFcIjoge1xuICAgIG1heEVmZm9ydDogXCJtYXhcIixcbiAgICBpbnB1dFRva2VuczogMC4yLFxuICAgIG91dHB1dFRva2VuczogMS4yLFxuICAgIGNhY2hlZElucHV0VG9rZW5zOiAwLjAyLFxuICAgIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczogMC4yNSxcbiAgICBsb25nQ29udGV4dDogTE9OR19DT05URVhUXzI3MkssXG4gIH0sXG4gIC8vIGh0dHBzOi8vb3BlbmFpLmNvbS9pbmRleC9pbnRyb2R1Y2luZy1ncHQtNS01LyAoMjAyNi0wNCDstpzsi5wpXG4gIFwiZ3B0LTUuNVwiOiB7XG4gICAgaW5wdXRUb2tlbnM6IDUsXG4gICAgb3V0cHV0VG9rZW5zOiAzMCxcbiAgICBjYWNoZWRJbnB1dFRva2VuczogMC41LFxuICAgIGxvbmdDb250ZXh0OiBMT05HX0NPTlRFWFRfMjcySyxcbiAgfSxcbiAgLy8g7JWE656YIGdwdC01LjQgLyBncHQtNS40LW1pbmkgLyBncHQtNS4zLWNvZGV4IC8gZ3B0LTUuMiDripQgcWdyaWQg6rCAIOyTsOuKlCBDaGF0R1BUIOq1rOuPhSBDb2RleCDqsr3roZzsl5DshJxcbiAgLy8g642UIOydtOyDgSDsoJzqs7XrkJjsp4Ag7JWK64qU64ukKDUuNCDqs4Tsl7TsnYAgMjAyNi0wOC0zMSByZXRpcmVkLCDrjIDssrQgZ3B0LTUuNi10ZXJyYSAvIGdwdC01LjYtbHVuYSkuXG4gIC8vIOqzvOqxsCByZXF1ZXN0IGxvZyDsnqzsgrDsoJUoY29zdF9zb3VyY2Ug7JeG64qUIGxlZ2FjeSDtlokp7JeQIO2VhOyalO2VmOuvgOuhnCDri6jqsIAg7ZaJ7J2AIOycoOyngO2VnOuLpC5cbiAgLy8gaHR0cHM6Ly9vcGVuYWkuY29tL2luZGV4L2ludHJvZHVjaW5nLWdwdC01LTQvICgyMDI2LTAzIOy2nOyLnClcbiAgXCJncHQtNS40XCI6IHtcbiAgICBpbnB1dFRva2VuczogMi41LFxuICAgIG91dHB1dFRva2VuczogMTUsXG4gICAgY2FjaGVkSW5wdXRUb2tlbnM6IDAuMjUsXG4gICAgbG9uZ0NvbnRleHQ6IExPTkdfQ09OVEVYVF8yNzJLLFxuICB9LFxuICBcImdwdC01LjQtbWluaVwiOiB7IGlucHV0VG9rZW5zOiAwLjc1LCBvdXRwdXRUb2tlbnM6IDQuNSwgY2FjaGVkSW5wdXRUb2tlbnM6IDAuMDc1IH0sXG4gIC8vIGdwdC01LjLsmYAg64+Z7J28IOuLqOqwgCAoY2FjaGVkID0gaW5wdXTsnZggMTAlKVxuICBcImdwdC01LjMtY29kZXhcIjogeyBpbnB1dFRva2VuczogMS43NSwgb3V0cHV0VG9rZW5zOiAxNCwgY2FjaGVkSW5wdXRUb2tlbnM6IDAuMTc1IH0sXG4gIC8vIGh0dHBzOi8vb3BlbmFpLmNvbS9pbmRleC9pbnRyb2R1Y2luZy1ncHQtNS0yLyAoY2FjaGVkIGlucHV0IDkwJSDtlaDsnbgg66qF7IucKVxuICBcImdwdC01LjJcIjogeyBpbnB1dFRva2VuczogMS43NSwgb3V0cHV0VG9rZW5zOiAxNCwgY2FjaGVkSW5wdXRUb2tlbnM6IDAuMTc1IH0sXG59O1xuXG4vLyDilIDilIAgQW50aHJvcGljIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5mdW5jdGlvbiBhbnRocm9waWNDb3N0cyhcbiAgaW5wdXRUb2tlbnM6IG51bWJlcixcbiAgb3V0cHV0VG9rZW5zOiBudW1iZXIsXG4gIG92ZXJyaWRlczogUGljazxQYXJ0aWFsPE1vZGVsQ29zdHM+LCBcImNhY2hlZElucHV0VG9rZW5zXCI+ID0ge30sXG4pOiBNb2RlbENvc3RzIHtcbiAgcmV0dXJuIHtcbiAgICBpbnB1dFRva2VucyxcbiAgICBvdXRwdXRUb2tlbnMsXG4gICAgLy8g7ZGc7KSAIGNhY2hlIHJlYWQg64qUIGJhc2UgaW5wdXQg7J2YIDAuMXguIEZhYmxlIDUuMSDsspjrn7wg6rO17IudIO2KueuhgCDri6jqsIDqsIAg7J6I7Jy866m0IG92ZXJyaWRlIO2VnOuLpC5cbiAgICBjYWNoZWRJbnB1dFRva2Vuczogb3ZlcnJpZGVzLmNhY2hlZElucHV0VG9rZW5zID8/IGlucHV0VG9rZW5zIC8gMTAsXG4gICAgLy8gQ2xhdWRlIENvZGUgc3Vic2NyaXB0aW9uIE9BdXRoIOuKlCAxaCBUVEwg7J2EIOyekOuPmSDshKDtg53tlZzri6QuIOq1rOuyhOyghOyymOufvCDsnZHri7Xsl5BcbiAgICAvLyBUVEwgYnJlYWtkb3duIOydtCDsl4bsnYQg65WM66eMIOydtCAxaCDri6jqsIDrpbwgZmFsbGJhY2sg7Jy866GcIOyCrOyaqe2VnOuLpC5cbiAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM6IGlucHV0VG9rZW5zICogMixcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM1bTogaW5wdXRUb2tlbnMgKiAxLjI1LFxuICAgIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczFoOiBpbnB1dFRva2VucyAqIDIsXG4gIH07XG59XG5cbi8vIOqwgOqyqSDstpzsspg6IGh0dHBzOi8vcGxhdGZvcm0uY2xhdWRlLmNvbS9kb2NzL2VuL2Fib3V0LWNsYXVkZS9wcmljaW5nICgyMDI2LTA5LTIzIO2ZleyduCwg6riw7KG0IOuqqOuNuCDri6jqsIAg67OA64+ZIOyXhuydjClcbmNvbnN0IEFOVEhST1BJQ19DT1NUUzogUmVjb3JkPHN0cmluZywgTW9kZWxDb3N0cz4gPSB7XG4gIC8vIEZhYmxlIDUuMSAoMjAyNi0wOS0wMSDstpzsi5wpOiBpbnB1dC9vdXRwdXQg7J2AIEZhYmxlIDUg7JmAIOqwmeqzoCBjYWNoZSByZWFkIOunjCAwLjAyNXgoJDAuMjUpIO2KueuhgC5cbiAgLy8gQHNlZSBodHRwczovL3BsYXRmb3JtLmNsYXVkZS5jb20vZG9jcy9lbi9tb2RlbHMvZmFibGUtNS0xL292ZXJ2aWV3XG4gIFwiY2xhdWRlLWZhYmxlLTUtMVwiOiBhbnRocm9waWNDb3N0cygxMCwgNTAsIHsgY2FjaGVkSW5wdXRUb2tlbnM6IDAuMjUgfSksXG4gIFwiY2xhdWRlLWZhYmxlLTVcIjogYW50aHJvcGljQ29zdHMoMTAsIDUwKSxcbiAgc29ubmV0OiBhbnRocm9waWNDb3N0cygzLCAxNSksXG4gIFwiY2xhdWRlLTMtNS1oYWlrdVwiOiBhbnRocm9waWNDb3N0cygwLjgsIDQpLFxuICBcImNsYXVkZS1oYWlrdS00LTVcIjogYW50aHJvcGljQ29zdHMoMSwgNSksXG4gIFwiY2xhdWRlLTMtNS1zb25uZXRcIjogYW50aHJvcGljQ29zdHMoMywgMTUpLFxuICBcImNsYXVkZS0zLTctc29ubmV0XCI6IGFudGhyb3BpY0Nvc3RzKDMsIDE1KSxcbiAgXCJjbGF1ZGUtc29ubmV0LTRcIjogYW50aHJvcGljQ29zdHMoMywgMTUpLFxuICBcImNsYXVkZS1zb25uZXQtNC01XCI6IGFudGhyb3BpY0Nvc3RzKDMsIDE1KSxcbiAgXCJjbGF1ZGUtc29ubmV0LTQtNlwiOiBhbnRocm9waWNDb3N0cygzLCAxNSksXG4gIFwiY2xhdWRlLXNvbm5ldC00LTdcIjogYW50aHJvcGljQ29zdHMoMywgMTUpLFxuICBcImNsYXVkZS1vcHVzLTRcIjogYW50aHJvcGljQ29zdHMoMTUsIDc1KSxcbiAgXCJjbGF1ZGUtb3B1cy00LTFcIjogYW50aHJvcGljQ29zdHMoMTUsIDc1KSxcbiAgXCJjbGF1ZGUtb3B1cy00LTVcIjogYW50aHJvcGljQ29zdHMoNSwgMjUpLFxuICBcImNsYXVkZS1vcHVzLTQtNlwiOiBhbnRocm9waWNDb3N0cyg1LCAyNSksXG4gIFwiY2xhdWRlLW9wdXMtNC03XCI6IGFudGhyb3BpY0Nvc3RzKDUsIDI1KSxcbiAgXCJjbGF1ZGUtb3B1cy00LThcIjogYW50aHJvcGljQ29zdHMoNSwgMjUpLFxuICBcImNsYXVkZS1vcHVzLTVcIjogYW50aHJvcGljQ29zdHMoNSwgMjUpLFxuICAvLyBPcHVzIDUuNSAoMjAyNi0wOS0yMiDstpzsi5wpOiAkNC8kMjAuIGNhY2hlIHJlYWQg64qUIDAuMDV4KCQwLjIwKSDtirnroYAsIGNhY2hlIHdyaXRlIOuKlCDtkZzspIAg67Cw7JyoKCQ1LyQ4KS5cbiAgLy8gQHNlZSBodHRwczovL3BsYXRmb3JtLmNsYXVkZS5jb20vZG9jcy9lbi9tb2RlbHMvb3B1cy01LTUvb3ZlcnZpZXdcbiAgXCJjbGF1ZGUtb3B1cy01LTVcIjogYW50aHJvcGljQ29zdHMoNCwgMjAsIHsgY2FjaGVkSW5wdXRUb2tlbnM6IDAuMiB9KSxcbiAgLy8gU29ubmV0IDUg7J2YIGludHJvZHVjdG9yeSAkMi8kMTAg7J20IOygleyLnSDri6jqsIDroZwg7ZmV7KCV65CQ64ukLiAyMDI2LTA5LTAxIOyXkCDsmIjsoJXrkJDrjZggJDMvJDE1IOyduOyDgeydgFxuICAvLyDst6jshozrkJDsnLzrr4DroZwg64Kg7KecIOu2hOq4sCDsl4bsnbQg6rOg7KCVIOuLqOqwgOuhnCDqs4TsgrDtlZzri6QuXG4gIFwiY2xhdWRlLXNvbm5ldC01XCI6IGFudGhyb3BpY0Nvc3RzKDIsIDEwKSxcbiAgLy8gU29ubmV0IDUuNSAoMjAyNi0wOS0yOSDstpzsi5wpOiBTb25uZXQgNSDsmYAg6rCZ7J2AICQyLyQxMCwgY2FjaGUgcmVhZCDripQg7ZGc7KSAIDAuMXgoJDAuMjApLlxuICAvLyBAc2VlIGh0dHBzOi8vcGxhdGZvcm0uY2xhdWRlLmNvbS9kb2NzL2VuL2Fib3V0LWNsYXVkZS9wcmljaW5nXG4gIFwiY2xhdWRlLXNvbm5ldC01LTVcIjogYW50aHJvcGljQ29zdHMoMiwgMTApLFxufTtcblxuLy8gZ3B0LTUuMy1jb2RleC1zcGFyayDripQgcmVzZWFyY2ggcHJldmlldyDroZwg6rO17IudIHRva2VuIOuLqOqwgOqwgCDslYTsp4EgZmluYWwg7J20IOyVhOuLiOuLpC5cbi8vIOyngOybkCDtg4DsnoXsnYAg7Jyg7KeA7ZWY65CYLCDqs7Xsi50g64uo6rCA6rCAIOqzteqwnOuQoCDrlYzquYzsp4Ag7JWE656YIGdlbmVyaWMgZXN0aW1hdGUg66GcIOqzhOyCsO2VnOuLpC5cbi8vIEBzZWUgaHR0cHM6Ly9oZWxwLm9wZW5haS5jb20vZW4vYXJ0aWNsZXMvMjAwMDExMDYtY29kZXgtcmF0ZS1jYXJkXG5jb25zdCBERUZBVUxUX0NPU1RTOiBNb2RlbENvc3RzID0geyBpbnB1dFRva2VuczogMywgb3V0cHV0VG9rZW5zOiAxNSwgY2FjaGVkSW5wdXRUb2tlbnM6IDAuMyB9O1xuXG4vKiogQ29kZXgg67Cx7JeU65Oc6rCAIOydtCDrqqjrjbjsl5Ag7ZeI7Jqp7ZWY64qUIOy1nOuMgCBlZmZvcnQuIOy5tO2DiOuhnOq3uOyXkCDsl4bripQg66qo64247J2AIHhoaWdoIOq5jOyngOuLpC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcGVuYWlNb2RlbE1heEVmZm9ydChtb2RlbDogc3RyaW5nKTogT3BlbkFJRWZmb3J0IHtcbiAgcmV0dXJuIE9QRU5BSV9DT1NUU1ttb2RlbF0/Lm1heEVmZm9ydCA/PyBcInhoaWdoXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNb2RlbENvc3RzKG1vZGVsOiBzdHJpbmcpOiBNb2RlbENvc3RzIHtcbiAgY29uc3Qgbm9ybWFsaXplZE1vZGVsID0gKG1vZGVsLnNwbGl0KFwiL1wiKS5wb3AoKSA/PyBtb2RlbCkucmVwbGFjZSgvXFxbMW1cXF0kL2ksIFwiXCIpO1xuICByZXR1cm4gT1BFTkFJX0NPU1RTW25vcm1hbGl6ZWRNb2RlbF0gPz8gQU5USFJPUElDX0NPU1RTW25vcm1hbGl6ZWRNb2RlbF0gPz8gREVGQVVMVF9DT1NUUztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUNvc3RVc2QoXG4gIG1vZGVsOiBzdHJpbmcsXG4gIHVzYWdlOiB7XG4gICAgaW5wdXRUb2tlbnM6IG51bWJlcjtcbiAgICBvdXRwdXRUb2tlbnM6IG51bWJlcjtcbiAgICBjYWNoZWRJbnB1dFRva2Vucz86IG51bWJlcjtcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM/OiBudW1iZXI7XG4gICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zNW0/OiBudW1iZXI7XG4gICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zMWg/OiBudW1iZXI7XG4gIH0sXG4pOiBudW1iZXIge1xuICBjb25zdCBjb3N0cyA9IGdldE1vZGVsQ29zdHMobW9kZWwpO1xuICBjb25zdCBjYWNoZWRJbnB1dCA9IHVzYWdlLmNhY2hlZElucHV0VG9rZW5zID8/IDA7XG4gIGNvbnN0IGNhY2hlQ3JlYXRpb25JbnB1dDVtID0gTWF0aC5tYXgodXNhZ2UuY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zNW0gPz8gMCwgMCk7XG4gIGNvbnN0IGNhY2hlQ3JlYXRpb25JbnB1dDFoID0gTWF0aC5tYXgodXNhZ2UuY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zMWggPz8gMCwgMCk7XG4gIGNvbnN0IGNhY2hlQ3JlYXRpb25JbnB1dCA9IE1hdGgubWF4KFxuICAgIHVzYWdlLmNhY2hlQ3JlYXRpb25JbnB1dFRva2VucyA/PyAwLFxuICAgIGNhY2hlQ3JlYXRpb25JbnB1dDVtICsgY2FjaGVDcmVhdGlvbklucHV0MWgsXG4gICk7XG4gIGNvbnN0IGNsYXNzaWZpZWRDYWNoZUNyZWF0aW9uSW5wdXQ1bSA9IE1hdGgubWluKGNhY2hlQ3JlYXRpb25JbnB1dDVtLCBjYWNoZUNyZWF0aW9uSW5wdXQpO1xuICBjb25zdCBjbGFzc2lmaWVkQ2FjaGVDcmVhdGlvbklucHV0MWggPSBNYXRoLm1pbihcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXQxaCxcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXQgLSBjbGFzc2lmaWVkQ2FjaGVDcmVhdGlvbklucHV0NW0sXG4gICk7XG4gIGNvbnN0IHVuY2xhc3NpZmllZENhY2hlQ3JlYXRpb25JbnB1dCA9XG4gICAgY2FjaGVDcmVhdGlvbklucHV0IC0gY2xhc3NpZmllZENhY2hlQ3JlYXRpb25JbnB1dDVtIC0gY2xhc3NpZmllZENhY2hlQ3JlYXRpb25JbnB1dDFoO1xuICBjb25zdCBub25DYWNoZWRJbnB1dCA9IE1hdGgubWF4KHVzYWdlLmlucHV0VG9rZW5zIC0gY2FjaGVkSW5wdXQgLSBjYWNoZUNyZWF0aW9uSW5wdXQsIDApO1xuXG4gIC8vIGxvbmctY29udGV4dCDtlaDspp06IOyghOyytCDsnoXroKUoaW5wdXRfdG9rZW5zLCBjYWNoZSDtj6ztlagp7J20IHRocmVzaG9sZCDstIjqs7wg7IucIOyalOyyrSDsoITssrTsl5Ag67Cw7JyoIOyggeyaqVxuICBjb25zdCBsYyA9IGNvc3RzLmxvbmdDb250ZXh0O1xuICBjb25zdCBpc0xvbmdDb250ZXh0ID0gbGMgIT09IHVuZGVmaW5lZCAmJiB1c2FnZS5pbnB1dFRva2VucyA+IGxjLnRocmVzaG9sZDtcbiAgY29uc3QgaW5wdXRSYXRlID0gY29zdHMuaW5wdXRUb2tlbnMgKiAoaXNMb25nQ29udGV4dCA/IGxjLmlucHV0TXVsdGlwbGllciA6IDEpO1xuICBjb25zdCBjYWNoZWRSYXRlID0gY29zdHMuY2FjaGVkSW5wdXRUb2tlbnMgKiAoaXNMb25nQ29udGV4dCA/IGxjLmNhY2hlZElucHV0TXVsdGlwbGllciA6IDEpO1xuICBjb25zdCBjYWNoZUNyZWF0aW9uRmFsbGJhY2tSYXRlID1cbiAgICAoY29zdHMuY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zID8/IGNvc3RzLmlucHV0VG9rZW5zKSAqXG4gICAgKGlzTG9uZ0NvbnRleHQgPyBsYy5pbnB1dE11bHRpcGxpZXIgOiAxKTtcbiAgY29uc3QgY2FjaGVDcmVhdGlvbjVtUmF0ZSA9XG4gICAgKGNvc3RzLmNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczVtID8/IGNvc3RzLmNhY2hlQ3JlYXRpb25JbnB1dFRva2VucyA/PyBjb3N0cy5pbnB1dFRva2VucykgKlxuICAgIChpc0xvbmdDb250ZXh0ID8gbGMuaW5wdXRNdWx0aXBsaWVyIDogMSk7XG4gIGNvbnN0IGNhY2hlQ3JlYXRpb24xaFJhdGUgPVxuICAgIChjb3N0cy5jYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMxaCA/PyBjb3N0cy5jYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMgPz8gY29zdHMuaW5wdXRUb2tlbnMpICpcbiAgICAoaXNMb25nQ29udGV4dCA/IGxjLmlucHV0TXVsdGlwbGllciA6IDEpO1xuICBjb25zdCBvdXRwdXRSYXRlID0gY29zdHMub3V0cHV0VG9rZW5zICogKGlzTG9uZ0NvbnRleHQgPyBsYy5vdXRwdXRNdWx0aXBsaWVyIDogMSk7XG5cbiAgcmV0dXJuIChcbiAgICAobm9uQ2FjaGVkSW5wdXQgLyAxXzAwMF8wMDApICogaW5wdXRSYXRlICtcbiAgICAodXNhZ2Uub3V0cHV0VG9rZW5zIC8gMV8wMDBfMDAwKSAqIG91dHB1dFJhdGUgK1xuICAgIChjYWNoZWRJbnB1dCAvIDFfMDAwXzAwMCkgKiBjYWNoZWRSYXRlICtcbiAgICAodW5jbGFzc2lmaWVkQ2FjaGVDcmVhdGlvbklucHV0IC8gMV8wMDBfMDAwKSAqIGNhY2hlQ3JlYXRpb25GYWxsYmFja1JhdGUgK1xuICAgIChjbGFzc2lmaWVkQ2FjaGVDcmVhdGlvbklucHV0NW0gLyAxXzAwMF8wMDApICogY2FjaGVDcmVhdGlvbjVtUmF0ZSArXG4gICAgKGNsYXNzaWZpZWRDYWNoZUNyZWF0aW9uSW5wdXQxaCAvIDFfMDAwXzAwMCkgKiBjYWNoZUNyZWF0aW9uMWhSYXRlXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7QUEwQ0EsTUFBTSxvQkFBNEQ7Q0FDaEUsV0FBVztDQUNYLGlCQUFpQjtDQUNqQix1QkFBdUI7Q0FDdkIsa0JBQWtCO0FBQ3BCO0FBT0EsTUFBTSxlQUFnRDtDQUtwRCxlQUFlO0VBQ2IsV0FBVztFQUNYLGFBQWE7RUFDYixjQUFjO0VBQ2QsbUJBQW1CO0VBQ25CLDBCQUEwQjtFQUMxQixhQUFhO0NBQ2Y7Q0FLQSxlQUFlO0VBQ2IsV0FB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
|
|
@@ -23,6 +23,7 @@ describe("resolveOpenAIEffort", () => {
|
|
|
23
23
|
expect(resolveOpenAIEffort("gpt-5.6-terra", "max")).toBe("max");
|
|
24
24
|
expect(resolveOpenAIEffort("gpt-5.6-terra", "ultra")).toBe("ultra");
|
|
25
25
|
expect(resolveOpenAIEffort("gpt-5.6-luna", "max")).toBe("max");
|
|
26
|
+
expect(resolveOpenAIEffort("gpt-6.1-sol", "ultra")).toBe("ultra");
|
|
26
27
|
expect(resolveOpenAIEffort("gpt-6-sol", "ultra")).toBe("ultra");
|
|
27
28
|
expect(resolveOpenAIEffort("gpt-6-luna", "max")).toBe("max");
|
|
28
29
|
});
|
|
@@ -13,6 +13,7 @@ describe("calculateCostUsd", () => {
|
|
|
13
13
|
});
|
|
14
14
|
it.each([
|
|
15
15
|
["gpt-6-astra", 10, 50, 1, 12.5],
|
|
16
|
+
["gpt-6.1-sol", 2, 10, 0.1, 2.5],
|
|
16
17
|
["gpt-6-sol", 2, 10, 0.2, 2.5],
|
|
17
18
|
["gpt-6-luna", 0.1, 0.5, 0.01, 0.125],
|
|
18
19
|
["gpt-5.6-sol", 4, 20, 0.4, 5],
|
|
@@ -97,6 +98,7 @@ describe("calculateCostUsd", () => {
|
|
|
97
98
|
|
|
98
99
|
it.each([
|
|
99
100
|
["gpt-6-astra", 10, 50, 1, 12.5, 5.6125],
|
|
101
|
+
["gpt-6.1-sol", 2, 10, 0.1, 2.5, 1.1175],
|
|
100
102
|
["gpt-6-sol", 2, 10, 0.2, 2.5, 1.1225],
|
|
101
103
|
["gpt-6-luna", 0.1, 0.5, 0.01, 0.125, 0.056125],
|
|
102
104
|
["gpt-5.6-sol", 4, 20, 0.4, 5, 2.245],
|
|
@@ -125,6 +127,7 @@ describe("calculateCostUsd", () => {
|
|
|
125
127
|
|
|
126
128
|
it.each([
|
|
127
129
|
["gpt-6-astra", 2.475],
|
|
130
|
+
["gpt-6.1-sol", 0.455],
|
|
128
131
|
["gpt-6-sol", 0.495],
|
|
129
132
|
["gpt-6-luna", 0.02475],
|
|
130
133
|
["gpt-5.6-sol", 0.99],
|
|
@@ -142,6 +145,7 @@ describe("calculateCostUsd", () => {
|
|
|
142
145
|
|
|
143
146
|
it.each([
|
|
144
147
|
["gpt-6-astra", 2.725],
|
|
148
|
+
["gpt-6.1-sol", 0.505],
|
|
145
149
|
["gpt-6-sol", 0.545],
|
|
146
150
|
["gpt-6-luna", 0.02725],
|
|
147
151
|
["gpt-5.6-sol", 1.09],
|
|
@@ -65,6 +65,18 @@ const OPENAI_COSTS: Record<string, OpenAIModelSpec> = {
|
|
|
65
65
|
cacheCreationInputTokens: 12.5,
|
|
66
66
|
longContext: LONG_CONTEXT_272K,
|
|
67
67
|
},
|
|
68
|
+
// GPT-6.1 Sol (2026-09-29 DevDay 출시): Standard API pricing verified 2026-09-30. GPT-6 Sol 과 같고 cached input 만 절반.
|
|
69
|
+
// Codex 카탈로그(2026-09-30)는 ultra 까지 허용하고 기본 effort 는 low 다(GPT-6 Sol 은 medium).
|
|
70
|
+
// qgrid 의 요청 형태 + codex_cli_rs/0.147.0 헤더로 2026-09-30 구독 경로 라이브 생성 성공.
|
|
71
|
+
// @see https://developers.openai.com/api/docs/models/gpt-6.1-sol
|
|
72
|
+
"gpt-6.1-sol": {
|
|
73
|
+
maxEffort: "ultra",
|
|
74
|
+
inputTokens: 2,
|
|
75
|
+
outputTokens: 10,
|
|
76
|
+
cachedInputTokens: 0.1,
|
|
77
|
+
cacheCreationInputTokens: 2.5,
|
|
78
|
+
longContext: LONG_CONTEXT_272K,
|
|
79
|
+
},
|
|
68
80
|
// GPT-6 Sol, Luna (2026-09-22 출시): Standard API pricing verified 2026-09-23. GPT-5.6 Sol/Luna 의 절반 단가.
|
|
69
81
|
// Codex 카탈로그(2026-09-23)는 Sol 에 ultra, Luna 에 max 까지 허용하고 기본 effort 는 둘 다 medium 이다.
|
|
70
82
|
// @see https://developers.openai.com/api/docs/models/gpt-6-sol
|
|
@@ -698,6 +698,7 @@ describe("effort 어휘 해석 (Codex 카탈로그 기준)", () => {
|
|
|
698
698
|
|
|
699
699
|
it("모델이 지원하는 값은 그대로 보내고, 상한 초과·공개 API 어휘는 reasoning 에서 빼 백엔드 기본값을 쓴다", async () => {
|
|
700
700
|
await expect(mappedEffortFor("gpt-6-astra", "ultra")).resolves.toBe("ultra");
|
|
701
|
+
await expect(mappedEffortFor("gpt-6.1-sol", "ultra")).resolves.toBe("ultra");
|
|
701
702
|
await expect(mappedEffortFor("gpt-6-sol", "ultra")).resolves.toBe("ultra");
|
|
702
703
|
await expect(mappedEffortFor("gpt-6-luna", "max")).resolves.toBe("max");
|
|
703
704
|
await expect(mappedEffortFor("gpt-6-luna", "ultra")).resolves.toBeUndefined();
|