@deriv-com/smartcharts-champion 1.8.0 → 1.9.1

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.
@@ -8,10 +8,20 @@ on:
8
8
  branches:
9
9
  - '**'
10
10
  types: [opened, synchronize, reopened]
11
-
12
- # Cancel outdated deployments per PR
11
+ workflow_dispatch:
12
+ inputs:
13
+ smartcharts_ref:
14
+ description: 'smartcharts-champion branch/tag/SHA to build'
15
+ required: true
16
+ default: 'master'
17
+ flutter_chart_ref:
18
+ description: 'flutter-chart branch/tag/SHA to use in chart_app'
19
+ required: true
20
+ default: 'master'
21
+
22
+ # Cancel outdated deployments per PR or per smartcharts ref for manual triggers
13
23
  concurrency:
14
- group: deploy-preview-${{ github.event.number }}
24
+ group: deploy-preview-${{ github.event.number || github.event.inputs.smartcharts_ref }}
15
25
  cancel-in-progress: true
16
26
 
17
27
  jobs:
@@ -23,12 +33,14 @@ jobs:
23
33
  pull-requests: write
24
34
  steps:
25
35
  - name: Verify user
36
+ if: github.event_name == 'pull_request'
26
37
  uses: 'deriv-com/shared-actions/.github/actions/verify_user_in_organization@v3'
27
38
  with:
28
39
  username: ${{ github.event.pull_request.user.login }}
29
40
  token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
30
41
 
31
42
  - name: Post preview build comment
43
+ if: github.event_name == 'pull_request'
32
44
  id: post_preview_build_comment
33
45
  uses: 'deriv-com/shared-actions/.github/actions/post_preview_build_comment@v1'
34
46
  with:
@@ -40,7 +52,7 @@ jobs:
40
52
  with:
41
53
  repository: deriv-com/smartcharts-champion
42
54
  path: smartcharts-champion
43
- ref: ${{ github.event.pull_request.head.sha }}
55
+ ref: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.smartcharts_ref || github.event.pull_request.head.sha }}
44
56
  persist-credentials: false
45
57
 
46
58
  - name: Checkout derivatives-trader
@@ -59,6 +71,29 @@ jobs:
59
71
  channel: 'stable'
60
72
  cache: true
61
73
 
74
+ - name: Update flutter-chart ref in pubspec.yaml
75
+ if: github.event_name == 'workflow_dispatch'
76
+ env:
77
+ FLUTTER_REF: ${{ github.event.inputs.flutter_chart_ref }}
78
+ run: |
79
+ cd smartcharts-champion/chart_app
80
+ # Validate input format (alphanumeric, slashes, hyphens, underscores, dots only)
81
+ if ! [[ "${FLUTTER_REF}" =~ ^[a-zA-Z0-9/_.-]+$ ]]; then
82
+ echo "Error: Invalid flutter_chart_ref format. Only alphanumeric characters, slashes, hyphens, underscores, and dots are allowed."
83
+ exit 1
84
+ fi
85
+ if ! grep -q "ref: master" pubspec.yaml; then
86
+ echo "Error: Expected 'ref: master' not found in pubspec.yaml"
87
+ exit 1
88
+ fi
89
+ sed -i "s/ref: master/ref: ${FLUTTER_REF}/" pubspec.yaml
90
+ echo "Updated pubspec.yaml to use flutter-chart ref: ${FLUTTER_REF}"
91
+ cat pubspec.yaml
92
+ if ! grep -q "ref: ${FLUTTER_REF}" pubspec.yaml; then
93
+ echo "Error: Failed to update flutter-chart ref"
94
+ exit 1
95
+ fi
96
+
62
97
  - name: Build Flutter chart component
63
98
  run: |
64
99
  cd smartcharts-champion/chart_app
@@ -84,7 +119,7 @@ jobs:
84
119
 
85
120
  - name: Build derivatives-trader
86
121
  env:
87
- NODE_ENV: 'staging'
122
+ NODE_ENV: 'test'
88
123
  run: cd derivatives-trader && npm run build:all
89
124
 
90
125
  - name: Setup Node for Cloudflare
@@ -99,14 +134,25 @@ jobs:
99
134
  CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_TEST_LINKS_API_TOKEN }}
100
135
  CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_TEST_LINKS_ACCOUNT_ID }}
101
136
  project_name: 'derivatives-trader'
102
- branch_name: ${{ github.head_ref }}
137
+ branch_name: ${{ github.head_ref || github.event.inputs.smartcharts_ref }}
103
138
  output_dir: derivatives-trader/packages/core/dist
104
139
 
105
140
  - name: Generate preview link comment
106
- if: always() && steps.post_preview_build_comment.outcome == 'success'
141
+ if: always() && github.event_name == 'pull_request' && steps.post_preview_build_comment.outcome == 'success'
107
142
  uses: 'deriv-com/shared-actions/.github/actions/post_preview_link_comment@v1'
108
143
  with:
109
144
  issue_number: ${{ github.event.number }}
110
145
  check_run_id: ${{ steps.post_preview_build_comment.outputs.check_run_id }}
111
146
  preview_url: ${{ steps.publish_to_pages_branch.outputs.cf_pages_url }}
112
- status: ${{ job.status }}
147
+ status: ${{ job.status }}
148
+
149
+ - name: Output preview URL for manual trigger
150
+ if: github.event_name == 'workflow_dispatch'
151
+ run: |
152
+ echo "## Preview Deployment Complete" >> $GITHUB_STEP_SUMMARY
153
+ echo "" >> $GITHUB_STEP_SUMMARY
154
+ echo "**Preview URL:** ${{ steps.publish_to_pages_branch.outputs.cf_pages_url }}" >> $GITHUB_STEP_SUMMARY
155
+ echo "" >> $GITHUB_STEP_SUMMARY
156
+ echo "**Configuration:**" >> $GITHUB_STEP_SUMMARY
157
+ echo "- smartcharts-champion ref: \`${{ github.event.inputs.smartcharts_ref }}\`" >> $GITHUB_STEP_SUMMARY
158
+ echo "- flutter-chart ref: \`${{ github.event.inputs.flutter_chart_ref }}\`" >> $GITHUB_STEP_SUMMARY
package/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
- # [1.8.0](https://github.com/deriv-com/smartcharts-champion/compare/v1.7.0...v1.8.0) (2026-01-20)
1
+ ## [1.9.1](https://github.com/deriv-com/smartcharts-champion/compare/v1.9.0...v1.9.1) (2026-01-30)
2
2
 
3
3
 
4
- ### Features
4
+ ### 🐛 Bug Fixes
5
5
 
6
- * add dtrader v2 as the test link for preview ([#167](https://github.com/deriv-com/smartcharts-champion/issues/167)) ([89d2cde](https://github.com/deriv-com/smartcharts-champion/commit/89d2cded9e4c1693d315c0915afdbaa2e8ab24ab))
6
+ * added fix for barrier glitch when multiple contract is opened ([#171](https://github.com/deriv-com/smartcharts-champion/issues/171)) ([e5dab83](https://github.com/deriv-com/smartcharts-champion/commit/e5dab83cd4adb98fe62644f3d2e8b9b21ce1b63f))
@@ -1 +1 @@
1
- (()=>{var e={hasImageCodecs:!(typeof ImageDecoder>"u"||"Google Inc."!==navigator.vendor&&"Edg/"!==navigator.agent),hasChromiumBreakIterators:typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",supportsWasmGC:WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,95,1,120,0])),crossOriginIsolated:window.crossOriginIsolated};function t(...e){return new URL(r(...e),document.baseURI).toString()}function r(...e){return e.filter(e=>!!e).map((e,t)=>0===t?i(e):function(e){let t=0;for(;t<e.length&&"/"===e.charAt(t);)t++;return e.substring(t)}(i(e))).filter(e=>e.length).join("/")}function i(e){let t=e.length;for(;t>0&&"/"===e.charAt(t-1);)t--;return e.substring(0,t)}var n=class{constructor(){this._scriptLoaded=!1}setTrustedTypesPolicy(e){this._ttPolicy=e}async loadEntrypoint(e){let{entrypointUrl:r=t("main.dart.js"),onEntrypointLoaded:i,nonce:n}=e||{};return this._loadJSEntrypoint(r,i,n)}async load(e,r,i,n,a){a??=e=>{e.initializeEngine(i).then(e=>e.runApp())};let{entryPointBaseUrl:o}=i;if("dart2wasm"===e.compileTarget)return this._loadWasmEntrypoint(e,r,o,a);{let r=t(o,e.mainJsPath??"main.dart.js");return this._loadJSEntrypoint(r,a,n)}}didCreateEngineInitializer(e){"function"==typeof this._didCreateEngineInitializerResolve&&(this._didCreateEngineInitializerResolve(e),this._didCreateEngineInitializerResolve=null,delete _flutter.loader.didCreateEngineInitializer),"function"==typeof this._onEntrypointLoaded&&this._onEntrypointLoaded(e)}_loadJSEntrypoint(e,t,r){let i="function"==typeof t;if(!this._scriptLoaded){this._scriptLoaded=!0;let n=this._createScriptTag(e,r);if(!i)return new Promise((e,t)=>{this._didCreateEngineInitializerResolve=e,n.addEventListener("error",t),document.head.append(n)});this._onEntrypointLoaded=t,document.head.append(n)}}async _loadWasmEntrypoint(e,r,i,n){if(!this._scriptLoaded){this._scriptLoaded=!0,this._onEntrypointLoaded=n;let{mainWasmPath:a,jsSupportRuntimePath:o}=e,s=t(i,a),l=t(i,o);null!=this._ttPolicy&&(l=this._ttPolicy.createScriptURL(l));let c,d=WebAssembly.compileStreaming(fetch(s)),u=await import(l);c="skwasm"===e.renderer?(async()=>{let e=await r.skwasm;return window._flutter_skwasmInstance=e,{skwasm:e.wasmExports,skwasmWrapper:e,ffi:{memory:e.wasmMemory}}})():{};let p=await u.instantiate(d,c);await u.invoke(p)}}_createScriptTag(e,t){let r=document.createElement("script");r.type="application/javascript",t&&(r.nonce=t);let i=e;return null!=this._ttPolicy&&(i=this._ttPolicy.createScriptURL(e)),r.src=i,r}};async function a(e,t,r){if(t<0)return e;let i,n=new Promise((e,n)=>{i=setTimeout(()=>{n(new Error(`${r} took more than ${t}ms to resolve. Moving on.`,{cause:a}))},t)});return Promise.race([e,n]).finally(()=>{clearTimeout(i)})}var o=class{setTrustedTypesPolicy(e){this._ttPolicy=e}loadServiceWorker(e){if(!e)return Promise.resolve();if(!("serviceWorker"in navigator)){let e="Service Worker API unavailable.";return window.isSecureContext||(e+="\nThe current context is NOT secure.",e+="\nRead more: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts"),Promise.reject(new Error(e))}let{serviceWorkerVersion:r,serviceWorkerUrl:i=t(`flutter_service_worker.js?v=${r}`),timeoutMillis:n=4e3}=e,o=i;return null!=this._ttPolicy&&(o=this._ttPolicy.createScriptURL(o)),a(navigator.serviceWorker.register(o).then(e=>this._getNewServiceWorker(e,r)).then(this._waitForServiceWorkerActivation),n,"prepareServiceWorker")}async _getNewServiceWorker(e,t){if(!e.active&&(e.installing||e.waiting))return e.installing||e.waiting;if(e.active.scriptURL.endsWith(t))return e.active;{let t=await e.update();return t.installing||t.waiting||t.active}}async _waitForServiceWorkerActivation(e){if(!e||"activated"===e.state){if(e)return;throw new Error("Cannot activate a null service worker!")}return new Promise((t,r)=>{e.addEventListener("statechange",()=>{"activated"===e.state&&t()})})}},s=class{constructor(e,t="flutter-js"){let r=e||[/\.js$/,/\.mjs$/];window.trustedTypes&&(this.policy=trustedTypes.createPolicy(t,{createScriptURL:function(e){if(e.startsWith("blob:"))return e;let i=new URL(e,window.location),n=i.pathname.split("/").pop();if(r.some(e=>e.test(n)))return i.toString();console.error("URL rejected by TrustedTypes policy",t,":",e,"(download prevented)")}}))}},l=e=>{let t=WebAssembly.compileStreaming(fetch(e));return(e,r)=>((async()=>{let i=await t,n=await WebAssembly.instantiate(i,e);r(n,i)})(),{})};window._flutter||(window._flutter={}),window._flutter.loader||(window._flutter.loader=new class{async loadEntrypoint(e){let{serviceWorker:t,...r}=e||{},i=new s,a=new o;a.setTrustedTypesPolicy(i.policy),await a.loadServiceWorker(t).catch(e=>{console.warn("Exception while loading service worker:",e)});let l=new n;return l.setTrustedTypesPolicy(i.policy),this.didCreateEngineInitializer=l.didCreateEngineInitializer.bind(l),l.loadEntrypoint(r)}async load({serviceWorkerSettings:i,onEntrypointLoaded:a,nonce:c,config:d}={}){d??={};let u=_flutter.buildConfig;if(!u)throw"FlutterLoader.load requires _flutter.buildConfig to be set";let p=u.builds.find(t=>!("dart2wasm"===t.compileTarget&&!e.supportsWasmGC||d.renderer&&!((e,t)=>"auto"===e.renderer?"canvaskit"==t||"html"==t:e.renderer==t)(t,d.renderer))&&(t=>"skwasm"!==t||e.crossOriginIsolated&&e.hasChromiumBreakIterators&&e.hasImageCodecs&&e.supportsWasmGC)(t.renderer));if(!p)throw"FlutterLoader could not find a build compatible with configuration and environment.";let w={};w.flutterTT=new s,i&&(w.serviceWorkerLoader=new o,w.serviceWorkerLoader.setTrustedTypesPolicy(w.flutterTT.policy),await w.serviceWorkerLoader.loadServiceWorker(i).catch(e=>{console.warn("Exception while loading service worker:",e)}));let m=function(e,t){return e.canvasKitBaseUrl?e.canvasKitBaseUrl:t.engineRevision&&!t.useLocalCanvasKit?r("https://www.gstatic.com/flutter-canvaskit",t.engineRevision):"canvaskit"}(d,u);"canvaskit"===p.renderer?w.canvasKit=((e,r,i,n)=>(window.flutterCanvasKitLoaded=(async()=>{if(window.flutterCanvasKit)return window.flutterCanvasKit;let a=i.hasChromiumBreakIterators&&i.hasImageCodecs;if(!a&&"chromium"==r.canvasKitVariant)throw"Chromium CanvasKit variant specifically requested, but unsupported in this browser";let o=a&&"full"!==r.canvasKitVariant,s=n;o&&(s=t(s,"chromium"));let c=t(s,"canvaskit.js");e.flutterTT.policy&&(c=e.flutterTT.policy.createScriptURL(c));let d=l(t(s,"canvaskit.wasm")),u=await import(c);return window.flutterCanvasKit=await u.default({instantiateWasm:d}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded))(w,d,e,m):"skwasm"===p.renderer&&(w.skwasm=(async(e,r,i,n)=>{let a=t(n,"skwasm.js"),o=a;e.flutterTT.policy&&(o=e.flutterTT.policy.createScriptURL(o));let s=l(t(n,"skwasm.wasm"));return await(await import(o)).default({instantiateWasm:s,locateFile:(e,t)=>{let r=t+e;return r.endsWith(".worker.js")?URL.createObjectURL(new Blob([`importScripts('${r}');`],{type:"application/javascript"})):r},mainScriptUrlOrBlob:a})})(w,0,0,m));let f=new n;return f.setTrustedTypesPolicy(w.flutterTT.policy),this.didCreateEngineInitializer=f.didCreateEngineInitializer.bind(f),f.load(p,w,d,c,a)}})})(),window._flutter||(window._flutter={}),_flutter.buildConfig={engineRevision:"c9b9d5780da342eb3f0f5e439a7db06f7d112575",builds:[{compileTarget:"dart2js",renderer:"html",mainJsPath:"main.dart.js"}]},_flutter.loader.load({serviceWorkerSettings:{serviceWorkerVersion:"727824561"}});
1
+ (()=>{var e={hasImageCodecs:!(typeof ImageDecoder>"u"||"Google Inc."!==navigator.vendor&&"Edg/"!==navigator.agent),hasChromiumBreakIterators:typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",supportsWasmGC:WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,95,1,120,0])),crossOriginIsolated:window.crossOriginIsolated};function t(...e){return new URL(r(...e),document.baseURI).toString()}function r(...e){return e.filter(e=>!!e).map((e,t)=>0===t?i(e):function(e){let t=0;for(;t<e.length&&"/"===e.charAt(t);)t++;return e.substring(t)}(i(e))).filter(e=>e.length).join("/")}function i(e){let t=e.length;for(;t>0&&"/"===e.charAt(t-1);)t--;return e.substring(0,t)}var n=class{constructor(){this._scriptLoaded=!1}setTrustedTypesPolicy(e){this._ttPolicy=e}async loadEntrypoint(e){let{entrypointUrl:r=t("main.dart.js"),onEntrypointLoaded:i,nonce:n}=e||{};return this._loadJSEntrypoint(r,i,n)}async load(e,r,i,n,a){a??=e=>{e.initializeEngine(i).then(e=>e.runApp())};let{entryPointBaseUrl:o}=i;if("dart2wasm"===e.compileTarget)return this._loadWasmEntrypoint(e,r,o,a);{let r=t(o,e.mainJsPath??"main.dart.js");return this._loadJSEntrypoint(r,a,n)}}didCreateEngineInitializer(e){"function"==typeof this._didCreateEngineInitializerResolve&&(this._didCreateEngineInitializerResolve(e),this._didCreateEngineInitializerResolve=null,delete _flutter.loader.didCreateEngineInitializer),"function"==typeof this._onEntrypointLoaded&&this._onEntrypointLoaded(e)}_loadJSEntrypoint(e,t,r){let i="function"==typeof t;if(!this._scriptLoaded){this._scriptLoaded=!0;let n=this._createScriptTag(e,r);if(!i)return new Promise((e,t)=>{this._didCreateEngineInitializerResolve=e,n.addEventListener("error",t),document.head.append(n)});this._onEntrypointLoaded=t,document.head.append(n)}}async _loadWasmEntrypoint(e,r,i,n){if(!this._scriptLoaded){this._scriptLoaded=!0,this._onEntrypointLoaded=n;let{mainWasmPath:a,jsSupportRuntimePath:o}=e,s=t(i,a),l=t(i,o);null!=this._ttPolicy&&(l=this._ttPolicy.createScriptURL(l));let c,d=WebAssembly.compileStreaming(fetch(s)),u=await import(l);c="skwasm"===e.renderer?(async()=>{let e=await r.skwasm;return window._flutter_skwasmInstance=e,{skwasm:e.wasmExports,skwasmWrapper:e,ffi:{memory:e.wasmMemory}}})():{};let p=await u.instantiate(d,c);await u.invoke(p)}}_createScriptTag(e,t){let r=document.createElement("script");r.type="application/javascript",t&&(r.nonce=t);let i=e;return null!=this._ttPolicy&&(i=this._ttPolicy.createScriptURL(e)),r.src=i,r}};async function a(e,t,r){if(t<0)return e;let i,n=new Promise((e,n)=>{i=setTimeout(()=>{n(new Error(`${r} took more than ${t}ms to resolve. Moving on.`,{cause:a}))},t)});return Promise.race([e,n]).finally(()=>{clearTimeout(i)})}var o=class{setTrustedTypesPolicy(e){this._ttPolicy=e}loadServiceWorker(e){if(!e)return Promise.resolve();if(!("serviceWorker"in navigator)){let e="Service Worker API unavailable.";return window.isSecureContext||(e+="\nThe current context is NOT secure.",e+="\nRead more: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts"),Promise.reject(new Error(e))}let{serviceWorkerVersion:r,serviceWorkerUrl:i=t(`flutter_service_worker.js?v=${r}`),timeoutMillis:n=4e3}=e,o=i;return null!=this._ttPolicy&&(o=this._ttPolicy.createScriptURL(o)),a(navigator.serviceWorker.register(o).then(e=>this._getNewServiceWorker(e,r)).then(this._waitForServiceWorkerActivation),n,"prepareServiceWorker")}async _getNewServiceWorker(e,t){if(!e.active&&(e.installing||e.waiting))return e.installing||e.waiting;if(e.active.scriptURL.endsWith(t))return e.active;{let t=await e.update();return t.installing||t.waiting||t.active}}async _waitForServiceWorkerActivation(e){if(!e||"activated"===e.state){if(e)return;throw new Error("Cannot activate a null service worker!")}return new Promise((t,r)=>{e.addEventListener("statechange",()=>{"activated"===e.state&&t()})})}},s=class{constructor(e,t="flutter-js"){let r=e||[/\.js$/,/\.mjs$/];window.trustedTypes&&(this.policy=trustedTypes.createPolicy(t,{createScriptURL:function(e){if(e.startsWith("blob:"))return e;let i=new URL(e,window.location),n=i.pathname.split("/").pop();if(r.some(e=>e.test(n)))return i.toString();console.error("URL rejected by TrustedTypes policy",t,":",e,"(download prevented)")}}))}},l=e=>{let t=WebAssembly.compileStreaming(fetch(e));return(e,r)=>((async()=>{let i=await t,n=await WebAssembly.instantiate(i,e);r(n,i)})(),{})};window._flutter||(window._flutter={}),window._flutter.loader||(window._flutter.loader=new class{async loadEntrypoint(e){let{serviceWorker:t,...r}=e||{},i=new s,a=new o;a.setTrustedTypesPolicy(i.policy),await a.loadServiceWorker(t).catch(e=>{console.warn("Exception while loading service worker:",e)});let l=new n;return l.setTrustedTypesPolicy(i.policy),this.didCreateEngineInitializer=l.didCreateEngineInitializer.bind(l),l.loadEntrypoint(r)}async load({serviceWorkerSettings:i,onEntrypointLoaded:a,nonce:c,config:d}={}){d??={};let u=_flutter.buildConfig;if(!u)throw"FlutterLoader.load requires _flutter.buildConfig to be set";let p=u.builds.find(t=>!("dart2wasm"===t.compileTarget&&!e.supportsWasmGC||d.renderer&&!((e,t)=>"auto"===e.renderer?"canvaskit"==t||"html"==t:e.renderer==t)(t,d.renderer))&&(t=>"skwasm"!==t||e.crossOriginIsolated&&e.hasChromiumBreakIterators&&e.hasImageCodecs&&e.supportsWasmGC)(t.renderer));if(!p)throw"FlutterLoader could not find a build compatible with configuration and environment.";let w={};w.flutterTT=new s,i&&(w.serviceWorkerLoader=new o,w.serviceWorkerLoader.setTrustedTypesPolicy(w.flutterTT.policy),await w.serviceWorkerLoader.loadServiceWorker(i).catch(e=>{console.warn("Exception while loading service worker:",e)}));let m=function(e,t){return e.canvasKitBaseUrl?e.canvasKitBaseUrl:t.engineRevision&&!t.useLocalCanvasKit?r("https://www.gstatic.com/flutter-canvaskit",t.engineRevision):"canvaskit"}(d,u);"canvaskit"===p.renderer?w.canvasKit=((e,r,i,n)=>(window.flutterCanvasKitLoaded=(async()=>{if(window.flutterCanvasKit)return window.flutterCanvasKit;let a=i.hasChromiumBreakIterators&&i.hasImageCodecs;if(!a&&"chromium"==r.canvasKitVariant)throw"Chromium CanvasKit variant specifically requested, but unsupported in this browser";let o=a&&"full"!==r.canvasKitVariant,s=n;o&&(s=t(s,"chromium"));let c=t(s,"canvaskit.js");e.flutterTT.policy&&(c=e.flutterTT.policy.createScriptURL(c));let d=l(t(s,"canvaskit.wasm")),u=await import(c);return window.flutterCanvasKit=await u.default({instantiateWasm:d}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded))(w,d,e,m):"skwasm"===p.renderer&&(w.skwasm=(async(e,r,i,n)=>{let a=t(n,"skwasm.js"),o=a;e.flutterTT.policy&&(o=e.flutterTT.policy.createScriptURL(o));let s=l(t(n,"skwasm.wasm"));return await(await import(o)).default({instantiateWasm:s,locateFile:(e,t)=>{let r=t+e;return r.endsWith(".worker.js")?URL.createObjectURL(new Blob([`importScripts('${r}');`],{type:"application/javascript"})):r},mainScriptUrlOrBlob:a})})(w,0,0,m));let f=new n;return f.setTrustedTypesPolicy(w.flutterTT.policy),this.didCreateEngineInitializer=f.didCreateEngineInitializer.bind(f),f.load(p,w,d,c,a)}})})(),window._flutter||(window._flutter={}),_flutter.buildConfig={engineRevision:"c9b9d5780da342eb3f0f5e439a7db06f7d112575",builds:[{compileTarget:"dart2js",renderer:"html",mainJsPath:"main.dart.js"}]},_flutter.loader.load({serviceWorkerSettings:{serviceWorkerVersion:"2277187056"}});
@@ -1 +1 @@
1
- "use strict";const MANIFEST="flutter-app-manifest",TEMP="flutter-temp-cache",CACHE_NAME="flutter-app-cache",RESOURCES={"flutter.js":"f393d3c16b631f36852323de8e583132","manifest.json":"a06b13fcde5dfd1e240278072e116d12","index.html":"c3fa8285cec53b9d7a44b46327217d32","/":"c3fa8285cec53b9d7a44b46327217d32","assets/shaders/ink_sparkle.frag":"ecc85a2e95f5e9f53123dcaf8cb9b6ce","assets/AssetManifest.bin.json":"be3eb7dfd4bfedb8054bd74919851a8b","assets/fonts/IBMPlexSans-Bold.woff2":"19210a59bf50a6ba73fa97433170b4cf","assets/fonts/IBMPlexSans-Regular.woff2":"4bb247144b2962b752857093491454e7","assets/fonts/MaterialIcons-Regular.otf":"d6db5dff634f0098a8fec881f24fa1e7","assets/NOTICES":"3addc03b78c4c9ab95afde0750197f90","assets/packages/deriv_chart/assets/fonts/quill_icons.ttf":"8e9f63f02fa78152f14dd9b5b5c4e92a","assets/FontManifest.json":"84fa087dba170bffc9f3713aeebe836c","assets/AssetManifest.bin":"f049e764000ff7f4834702ea3985a348","assets/AssetManifest.json":"0e2784379e19e2053abcff2635e3e6ae","canvaskit/chromium/canvaskit.wasm":"b1ac05b29c127d86df4bcfbf50dd902a","canvaskit/chromium/canvaskit.js":"671c6b4f8fcc199dcc551c7bb125f239","canvaskit/chromium/canvaskit.js.symbols":"a012ed99ccba193cf96bb2643003f6fc","canvaskit/skwasm.worker.js":"89990e8c92bcb123999aa81f7e203b1c","canvaskit/skwasm.js":"694fda5704053957c2594de355805228","canvaskit/canvaskit.wasm":"1f237a213d7370cf95f443d896176460","canvaskit/canvaskit.js":"66177750aff65a66cb07bb44b8c6422b","canvaskit/skwasm.wasm":"9f0c0c02b82a910d12ce0543ec130e60","canvaskit/canvaskit.js.symbols":"48c83a2ce573d9692e8d970e288d75f7","canvaskit/skwasm.js.symbols":"262f4827a1317abb59d71d6c587a93e2","favicon.png":"5dcef449791fa27946b3d35ad8803796","flutter_bootstrap.js":"0c85df790a0edf62d7809082d067973f","version.json":"1756499d77011c0be564a414e567db76","main.dart.js":"49d0d8fdf24a661097e462cdc4b5b732"},CORE=["main.dart.js","index.html","flutter_bootstrap.js","assets/AssetManifest.bin.json","assets/FontManifest.json"];async function downloadOffline(){var a=[],e=await caches.open(CACHE_NAME),s={};for(var t of await e.keys()){var c=t.url.substring(origin.length+1);""==c&&(c="/"),s[c]=!0}for(var n of Object.keys(RESOURCES))s[n]||a.push(n);return e.addAll(a)}function onlineFirst(a){return a.respondWith(fetch(a.request).then(e=>caches.open(CACHE_NAME).then(s=>(s.put(a.request,e.clone()),e))).catch(e=>caches.open(CACHE_NAME).then(s=>s.match(a.request).then(a=>{if(null!=a)return a;throw e}))))}self.addEventListener("install",a=>(self.skipWaiting(),a.waitUntil(caches.open(TEMP).then(a=>a.addAll(CORE.map(a=>new Request(a,{cache:"reload"}))))))),self.addEventListener("activate",function(a){return a.waitUntil(async function(){try{var a=await caches.open(CACHE_NAME),e=await caches.open(TEMP),s=await caches.open(MANIFEST),t=await s.match("manifest");if(!t){for(var c of(await caches.delete(CACHE_NAME),a=await caches.open(CACHE_NAME),await e.keys())){var n=await e.match(c);await a.put(c,n)}return await caches.delete(TEMP),await s.put("manifest",new Response(JSON.stringify(RESOURCES))),void self.clients.claim()}var i=await t.json(),f=self.location.origin;for(var c of await a.keys()){var r=c.url.substring(f.length+1);""==r&&(r="/"),RESOURCES[r]&&RESOURCES[r]==i[r]||await a.delete(c)}for(var c of await e.keys()){n=await e.match(c);await a.put(c,n)}return await caches.delete(TEMP),await s.put("manifest",new Response(JSON.stringify(RESOURCES))),void self.clients.claim()}catch(a){console.error("Failed to upgrade service worker: "+a),await caches.delete(CACHE_NAME),await caches.delete(TEMP),await caches.delete(MANIFEST)}}())}),self.addEventListener("fetch",a=>{if("GET"===a.request.method){var e=self.location.origin,s=a.request.url.substring(e.length+1);if(-1!=s.indexOf("?v=")&&(s=s.split("?v=")[0]),(a.request.url==e||a.request.url.startsWith(e+"/#")||""==s)&&(s="/"),RESOURCES[s])return"/"==s?onlineFirst(a):void a.respondWith(caches.open(CACHE_NAME).then(e=>e.match(a.request).then(s=>s||fetch(a.request).then(s=>(s&&Boolean(s.ok)&&e.put(a.request,s.clone()),s)))))}}),self.addEventListener("message",a=>{"skipWaiting"!==a.data?"downloadOffline"!==a.data||downloadOffline():self.skipWaiting()});
1
+ "use strict";const MANIFEST="flutter-app-manifest",TEMP="flutter-temp-cache",CACHE_NAME="flutter-app-cache",RESOURCES={"flutter.js":"f393d3c16b631f36852323de8e583132","manifest.json":"a06b13fcde5dfd1e240278072e116d12","index.html":"b7d2b838e209213c38c3ec5e9e5e6bd1","/":"b7d2b838e209213c38c3ec5e9e5e6bd1","assets/shaders/ink_sparkle.frag":"ecc85a2e95f5e9f53123dcaf8cb9b6ce","assets/AssetManifest.bin.json":"be3eb7dfd4bfedb8054bd74919851a8b","assets/fonts/IBMPlexSans-Bold.woff2":"19210a59bf50a6ba73fa97433170b4cf","assets/fonts/IBMPlexSans-Regular.woff2":"4bb247144b2962b752857093491454e7","assets/fonts/MaterialIcons-Regular.otf":"d6db5dff634f0098a8fec881f24fa1e7","assets/NOTICES":"3addc03b78c4c9ab95afde0750197f90","assets/packages/deriv_chart/assets/fonts/quill_icons.ttf":"8e9f63f02fa78152f14dd9b5b5c4e92a","assets/FontManifest.json":"84fa087dba170bffc9f3713aeebe836c","assets/AssetManifest.bin":"f049e764000ff7f4834702ea3985a348","assets/AssetManifest.json":"0e2784379e19e2053abcff2635e3e6ae","canvaskit/chromium/canvaskit.wasm":"b1ac05b29c127d86df4bcfbf50dd902a","canvaskit/chromium/canvaskit.js":"671c6b4f8fcc199dcc551c7bb125f239","canvaskit/chromium/canvaskit.js.symbols":"a012ed99ccba193cf96bb2643003f6fc","canvaskit/skwasm.worker.js":"89990e8c92bcb123999aa81f7e203b1c","canvaskit/skwasm.js":"694fda5704053957c2594de355805228","canvaskit/canvaskit.wasm":"1f237a213d7370cf95f443d896176460","canvaskit/canvaskit.js":"66177750aff65a66cb07bb44b8c6422b","canvaskit/skwasm.wasm":"9f0c0c02b82a910d12ce0543ec130e60","canvaskit/canvaskit.js.symbols":"48c83a2ce573d9692e8d970e288d75f7","canvaskit/skwasm.js.symbols":"262f4827a1317abb59d71d6c587a93e2","favicon.png":"5dcef449791fa27946b3d35ad8803796","flutter_bootstrap.js":"d62a05dac7861d000665adae027e49c1","version.json":"1756499d77011c0be564a414e567db76","main.dart.js":"0254d5f7422e2410e7bc71a259085100"},CORE=["main.dart.js","index.html","flutter_bootstrap.js","assets/AssetManifest.bin.json","assets/FontManifest.json"];async function downloadOffline(){var e=[],a=await caches.open(CACHE_NAME),s={};for(var t of await a.keys()){var c=t.url.substring(origin.length+1);""==c&&(c="/"),s[c]=!0}for(var n of Object.keys(RESOURCES))s[n]||e.push(n);return a.addAll(e)}function onlineFirst(e){return e.respondWith(fetch(e.request).then(a=>caches.open(CACHE_NAME).then(s=>(s.put(e.request,a.clone()),a))).catch(a=>caches.open(CACHE_NAME).then(s=>s.match(e.request).then(e=>{if(null!=e)return e;throw a}))))}self.addEventListener("install",e=>(self.skipWaiting(),e.waitUntil(caches.open(TEMP).then(e=>e.addAll(CORE.map(e=>new Request(e,{cache:"reload"}))))))),self.addEventListener("activate",function(e){return e.waitUntil(async function(){try{var e=await caches.open(CACHE_NAME),a=await caches.open(TEMP),s=await caches.open(MANIFEST),t=await s.match("manifest");if(!t){for(var c of(await caches.delete(CACHE_NAME),e=await caches.open(CACHE_NAME),await a.keys())){var n=await a.match(c);await e.put(c,n)}return await caches.delete(TEMP),await s.put("manifest",new Response(JSON.stringify(RESOURCES))),void self.clients.claim()}var i=await t.json(),f=self.location.origin;for(var c of await e.keys()){var r=c.url.substring(f.length+1);""==r&&(r="/"),RESOURCES[r]&&RESOURCES[r]==i[r]||await e.delete(c)}for(var c of await a.keys()){n=await a.match(c);await e.put(c,n)}return await caches.delete(TEMP),await s.put("manifest",new Response(JSON.stringify(RESOURCES))),void self.clients.claim()}catch(e){console.error("Failed to upgrade service worker: "+e),await caches.delete(CACHE_NAME),await caches.delete(TEMP),await caches.delete(MANIFEST)}}())}),self.addEventListener("fetch",e=>{if("GET"===e.request.method){var a=self.location.origin,s=e.request.url.substring(a.length+1);if(-1!=s.indexOf("?v=")&&(s=s.split("?v=")[0]),(e.request.url==a||e.request.url.startsWith(a+"/#")||""==s)&&(s="/"),RESOURCES[s])return"/"==s?onlineFirst(e):void e.respondWith(caches.open(CACHE_NAME).then(a=>a.match(e.request).then(s=>s||fetch(e.request).then(s=>(s&&Boolean(s.ok)&&a.put(e.request,s.clone()),s)))))}}),self.addEventListener("message",e=>{"skipWaiting"!==e.data?"downloadOffline"!==e.data||downloadOffline():self.skipWaiting()});