@atlaskit/media-file-preview 0.15.2 → 0.15.3

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/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @atlaskit/media-file-preview
2
2
 
3
+ ## 0.15.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [`71b895a2fd401`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/71b895a2fd401) -
8
+ Fix SSR preview generation to only be attempted in SSR and not in client if the ssr="client" prop
9
+ is sent
10
+ - Updated dependencies
11
+
3
12
  ## 0.15.2
4
13
 
5
14
  ### Patch Changes
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getKey = exports.generateScriptProps = exports.GLOBAL_MEDIA_NAMESPACE = exports.GLOBAL_MEDIA_COUNT_SSR = exports.GLOBAL_MEDIA_CARD_SSR = void 0;
6
+ exports.getKey = exports.generateScriptProps = exports.GLOBAL_MEDIA_PERFORMANCE_ENTRIES = exports.GLOBAL_MEDIA_NAMESPACE = exports.GLOBAL_MEDIA_COUNT_SSR = exports.GLOBAL_MEDIA_CARD_SSR = void 0;
7
7
  exports.getMediaCardSSR = getMediaCardSSR;
8
8
  exports.getMediaGlobalScope = getMediaGlobalScope;
9
9
  // ----- WARNING -----
@@ -14,6 +14,7 @@ exports.getMediaGlobalScope = getMediaGlobalScope;
14
14
 
15
15
  var GLOBAL_MEDIA_CARD_SSR = exports.GLOBAL_MEDIA_CARD_SSR = 'mediaCardSsr';
16
16
  var GLOBAL_MEDIA_COUNT_SSR = exports.GLOBAL_MEDIA_COUNT_SSR = 'mediaCountSsr';
17
+ var GLOBAL_MEDIA_PERFORMANCE_ENTRIES = exports.GLOBAL_MEDIA_PERFORMANCE_ENTRIES = 'performanceEntries';
17
18
  var GLOBAL_MEDIA_NAMESPACE = exports.GLOBAL_MEDIA_NAMESPACE = '__MEDIA_INTERNAL';
18
19
  var MAX_EAGER_LOAD_COUNT = 6;
19
20
  function getMediaGlobalScope() {
@@ -61,7 +62,7 @@ var generateScript = function generateScript(identifier, dataURI, mode, srcSet,
61
62
  };
62
63
 
63
64
  // Read originalScriptCode.ts before making changes
64
- return "!function(){function e(){const e=\"__MEDIA_INTERNAL\";return window[e]||(window[e]={}),window[e]}!function(n){var t;const i=document.currentScript,o=function(){const n=e(),t=\"mediaCardSsr\";return n[t]||(n[t]={}),n[t]}(),r=function(){const n=e(),t=\"mediaCountSsr\";return n[t]||(n[t]=0),n[t]}(),{key:d}=n,a=n.dataURI,s=n.mode,c=n.srcSet,{dimensions:m}=n,{error:u}=n,{featureFlags:l}=n;if(l[\"media-perf-uplift-mutation-fix\"]){const t=o[d],f=t&&t.mode===s&&t.dimensions&&t.dimensions.width&&m&&m.width&&t.dimensions.width>m.width,w=f?t.srcSet:c,g=f?t.dataURI:a,p={dataURI:g,dimensions:m,error:u,srcSet:w,loading:\"lazy\",loadPromise:void 0,mode:s},S=i&&i.parentElement&&i.parentElement.querySelector(\"img\");S&&l[\"media-perf-lazy-loading-optimisation\"]&&r<n.maxEagerLoadCount&&(!function(){const n=e(),t=\"mediaCountSsr\";n[t]||(n[t]=0),n[t]++}(),\"lazy\"===S.getAttribute(\"loading\")&&S.removeAttribute(\"loading\"),p.loading=\"\"),S&&g&&(S.src=g),S&&w&&(S.srcset=w),p.loadPromise=new Promise((function(e,n){S&&(S.addEventListener(\"load\",(function(){e(void 0)})),S.addEventListener(\"error\",(function(){n(new Error(\"Failed to load image\"))})))})),o[d]=f?t:p}else o[d]={dataURI:a,dimensions:m,error:u};null===(t=document.currentScript)||void 0===t||t.remove()}({replace:\"\"})}();".replace('{replace:""}', JSON.stringify(params));
65
+ return "!function(e){var r=document.currentScript,i=window.__MEDIA_INTERNAL=window.__MEDIA_INTERNAL||{},n=i.mediaCardSsr=i.mediaCardSsr||{},o=e.key,t=e.dataURI,d=e.mode,a=e.srcSet,s=e.dimensions,m=e.error,l=e.featureFlags;if(l[\"media-perf-uplift-mutation-fix\"]){var u,c,f=n[o],v=f&&f.mode===d&&(null===(u=f.dimensions)||void 0===u?void 0:u.width)&&(null==s?void 0:s.width)&&f.dimensions.width>s.width,E=v?f.srcSet:a,p=v?f.dataURI:t,w={dataURI:p,dimensions:s,error:m,srcSet:E,loading:\"lazy\",loadPromise:void 0,mode:d},S=null==r||null===(c=r.parentElement)||void 0===c?void 0:c.querySelector(\"img\");if(i.mediaCountSsr=i.mediaCountSsr||0,S){if(l[\"media-perf-lazy-loading-optimisation\"]&&i.mediaCountSsr<e.maxEagerLoadCount){i.mediaCountSsr++,S.removeAttribute(\"loading\"),w.loading=\"\";var g=new PerformanceObserver((function(e){e.getEntries().forEach((function(e){E.includes(e.name)&&(i.performanceEntries=i.performanceEntries||[],i.performanceEntries.push(e),g.disconnect())}))}));g.observe({type:\"resource\"})}p&&(S.src=p),E&&(S.srcset=E),w.loadPromise=new Promise((function(e,r){S.addEventListener(\"load\",(function(){return e()})),S.addEventListener(\"error\",(function(){return r(new Error(\"Failed to load image\"))}))}))}n[o]=v?f:w}else n[o]={dataURI:t,dimensions:s,error:m};null==r||r.remove()}({replace:\"\"});".replace('{replace:""}', JSON.stringify(params));
65
66
  };
66
67
  var generateScriptProps = exports.generateScriptProps = function generateScriptProps(identifier, dataURI, mode, srcSet, dimensions, error) {
67
68
  var featureFlags = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};
@@ -6,61 +6,29 @@
6
6
  * Do not change the code without testing it in product first.
7
7
  * Steps:
8
8
  * 1. Make changes in this code
9
- * 2. Manually minify the code via https://repl.parceljs.org/ (using typescript preset with minify option)
10
- * - eg: https://repl.parceljs.org/#JTdCJTIyZmlsZXMlMjIlM0ElNUIlNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiUyQyU3QiUyMnZhbHVlJTIyJTNBJTIyJTJGKiUyMGVzbGludC1kaXNhYmxlJTIwJTQwYXRsYXNraXQlMkZwbGF0Zm9ybSUyRm5vLWRpcmVjdC1kb2N1bWVudC11c2FnZSUyMColMkYlNUNuJTVDbiUyRioqJTIwSU1QT1JUQU5UJTNBJTIwVGhpcyUyMGlzJTIwdGhlJTIwb3JpZ2luYWwlMjBjb2RlJTIwZm9yJTIwdGhlJTIwc2NyaXB0LiU1Q24lMjAqJTIwRG8lMjBub3QlMjBjaGFuZ2UlMjB0aGUlMjBjb2RlJTIwd2l0aG91dCUyMHRlc3RpbmclMjBpdCUyMGluJTIwcHJvZHVjdCUyMGZpcnN0LiU1Q24lMjAqJTIwU3RlcHMlM0ElNUNuJTIwKiUyMDEuJTIwTWFrZSUyMGNoYW5nZXMlMjBpbiUyMHRoaXMlMjBjb2RlJTVDbiUyMColMjAyLiUyME1hbnVhbGx5JTIwbWluaWZ5JTIwdGhlJTIwY29kZSUyMHZpYSUyMGh0dHBzJTNBJTJGJTJGcmVwbC5wYXJjZWxqcy5vcmclMkYlNUNuJTIwKiUyMDMuJTIwQ29weSUyMHRoZSUyMG1pbmlmaWVkJTIwY29kZSUyMGludG8lMjBnbG9iYWxTY29wZS50c3glMjByZXBsYWNpbmclMjB0aGUlMjBleGlzdGluZyUyMHN0cmluZyUyMHdoZXJlJTIwaXQlMjBzYXlzJTIwUEFTVEUlMjBIRVJFJTVDbiUyMColMjA0LiUyMFJ1biUyMHRoZSUyMHRlc3RzJTIwYW5kJTIwbWFrZSUyMHN1cmUlMjB0aGV5JTIwcGFzcyU1Q24lMjAqJTIwNS4lMjBURVNUJTIwSU4lMjBQUk9EVUNUUyUyMEJFRk9SRSUyME1FUkdJTkclNUNuJTIwKiU1Q24lMjAqJTJGJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhR2xvYmFsU2NvcGUoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMG5hbWVzcGFjZSUyMCUzRCUyMCU1QyUyMl9fTUVESUFfSU5URVJOQUwlNUMlMjIlM0IlNUNuJTIwJTIwaWYlMjAoISh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMCh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQlMjAlM0QlMjAlN0IlN0QlM0IlNUNuJTIwJTIwJTdEJTVDbiUyMCUyMHJldHVybiUyMCh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhQ2FyZFNTUigpJTIwJTdCJTVDbiUyMCUyMGNvbnN0JTIwZ2xvYmFsTWVkaWElMjAlM0QlMjBnZXRNZWRpYUdsb2JhbFNjb3BlKCklM0IlNUNuJTIwJTIwY29uc3QlMjBrZXklMjAlM0QlMjAlNUMlMjJtZWRpYUNhcmRTc3IlNUMlMjIlM0IlNUNuJTIwJTIwaWYlMjAoIWdsb2JhbE1lZGlhJTVCa2V5JTVEKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjBnbG9iYWxNZWRpYSU1QmtleSU1RCUyMCUzRCUyMCU3QiU3RCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwcmV0dXJuJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhQ291bnRTU1IoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwZ2V0TWVkaWFHbG9iYWxTY29wZSgpJTNCJTVDbiUyMCUyMGNvbnN0JTIwa2V5JTIwJTNEJTIwJTVDJTIybWVkaWFDb3VudFNzciU1QyUyMiUzQiU1Q24lMjAlMjBpZiUyMCghZ2xvYmFsTWVkaWElNUJrZXklNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMGdsb2JhbE1lZGlhJTVCa2V5JTVEJTIwJTNEJTIwMCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwcmV0dXJuJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGluY3JlbWVudE1lZGlhQ291bnRTU1IoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwZ2V0TWVkaWFHbG9iYWxTY29wZSgpJTNCJTVDbiUyMCUyMGNvbnN0JTIwa2V5JTIwJTNEJTIwJTVDJTIybWVkaWFDb3VudFNzciU1QyUyMiUzQiU1Q24lMjAlMjBpZiUyMCghZ2xvYmFsTWVkaWElNUJrZXklNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMGdsb2JhbE1lZGlhJTVCa2V5JTVEJTIwJTNEJTIwMCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlMkIlMkIlM0IlNUNuJTdEJTVDbiU1Q24oZnVuY3Rpb24lMjAocGFyYW1zJTNBJTIwYW55KSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMHNjcmlwdCUyMCUzRCUyMGRvY3VtZW50LmN1cnJlbnRTY3JpcHQlM0IlNUNuJTVDbiUyMCUyMCUyRiUyRiUyMFN0b3JlJTIwdGhlJTIwZGF0YSU1Q24lMjAlMjBjb25zdCUyMG1lZGlhQ2FyZFNzciUyMCUzRCUyMGdldE1lZGlhQ2FyZFNTUigpJTNCJTVDbiUyMCUyMGNvbnN0JTIwbWVkaWFDb3VudFNzciUyMCUzRCUyMGdldE1lZGlhQ291bnRTU1IoKSUzQiU1Q24lMjAlMjBjb25zdCUyMCU3QiUyMGtleSUyMCU3RCUyMCUzRCUyMHBhcmFtcyUzQiU1Q24lMjAlMjBjb25zdCUyMHBhcmFtRGF0YVVSSSUyMCUzRCUyMHBhcmFtcy5kYXRhVVJJJTNCJTVDbiUyMCUyMGNvbnN0JTIwcGFyYW1Nb2RlJTIwJTNEJTIwcGFyYW1zLm1vZGUlM0IlNUNuJTIwJTIwY29uc3QlMjBwYXJhbVNyY1NldCUyMCUzRCUyMHBhcmFtcy5zcmNTZXQlM0IlNUNuJTIwJTIwY29uc3QlMjAlN0IlMjBkaW1lbnNpb25zJTIwJTdEJTIwJTNEJTIwcGFyYW1zJTNCJTVDbiUyMCUyMGNvbnN0JTIwJTdCJTIwZXJyb3IlMjAlN0QlMjAlM0QlMjBwYXJhbXMlM0IlNUNuJTIwJTIwY29uc3QlMjAlN0IlMjBmZWF0dXJlRmxhZ3MlMjAlN0QlMjAlM0QlMjBwYXJhbXMlM0IlNUNuJTVDbiUyMCUyMGlmJTIwKGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtdXBsaWZ0LW11dGF0aW9uLWZpeCU1QyUyMiU1RCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBwcmV2RGF0YSUyMCUzRCUyMG1lZGlhQ2FyZFNzciU1QmtleSU1RCUzQiU1Q24lMjAlMjAlMjAlMjBjb25zdCUyMGlzUHJldmlvdXNJbWFnZUxhcmdlciUyMCUzRCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBwcmV2RGF0YSUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBwcmV2RGF0YS5tb2RlJTIwJTNEJTNEJTNEJTIwcGFyYW1Nb2RlJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMHByZXZEYXRhLmRpbWVuc2lvbnMlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwcHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkaW1lbnNpb25zJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMud2lkdGglMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwcHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUzRSUyMGRpbWVuc2lvbnMud2lkdGglM0IlNUNuJTVDbiUyMCUyMCUyMCUyMGNvbnN0JTIwc3JjU2V0JTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGEuc3JjU2V0JTIwJTNBJTIwcGFyYW1TcmNTZXQlM0IlNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBkYXRhVVJJJTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGEuZGF0YVVSSSUyMCUzQSUyMHBhcmFtRGF0YVVSSSUzQiU1Q24lNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBjdXJyRGF0YSUzQSUyMGFueSUyMCUzRCUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkYXRhVVJJJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwZXJyb3IlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc3JjU2V0JTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGxvYWRpbmclM0ElMjAlNUMlMjJsYXp5JTVDJTIyJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGxvYWRQcm9taXNlJTNBJTIwdW5kZWZpbmVkJTJDJTVDbiU1Q3QlNUN0JTVDdG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlNUNuJTIwJTIwJTIwJTIwJTdEJTNCJTVDbiU1Q24lMjAlMjAlMjAlMjBjb25zdCUyMGltZyUyMCUzRCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBzY3JpcHQlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc2NyaXB0LnBhcmVudEVsZW1lbnQlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc2NyaXB0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvciglNUMlMjJpbWclNUMlMjIpJTNCJTVDbiU1Q24lMjAlMjAlMjAlMjBpZiUyMCglNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtbGF6eS1sb2FkaW5nLW9wdGltaXNhdGlvbiU1QyUyMiU1RCUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBtZWRpYUNvdW50U3NyJTIwJTNDJTIwcGFyYW1zLm1heEVhZ2VyTG9hZENvdW50JTVDbiUyMCUyMCUyMCUyMCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW5jcmVtZW50TWVkaWFDb3VudFNTUigpJTNCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwKGltZy5nZXRBdHRyaWJ1dGUoJTVDJTIybG9hZGluZyU1QyUyMiklMjAlM0QlM0QlM0QlMjAlNUMlMjJsYXp5JTVDJTIyKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcucmVtb3ZlQXR0cmlidXRlKCU1QyUyMmxvYWRpbmclNUMlMjIpJTNCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCU3RCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBjdXJyRGF0YS5sb2FkaW5nJTIwJTNEJTIwJTVDJTIyJTVDJTIyJTNCJTVDbiUyMCUyMCUyMCUyMCU3RCU1Q24lNUNuJTIwJTIwJTIwJTIwaWYlMjAoaW1nJTIwJTI2JTI2JTIwZGF0YVVSSSklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nLnNyYyUyMCUzRCUyMGRhdGFVUkklM0IlNUNuJTIwJTIwJTIwJTIwJTdEJTVDbiUyMCUyMCUyMCUyMGlmJTIwKGltZyUyMCUyNiUyNiUyMHNyY1NldCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nLnNyY3NldCUyMCUzRCUyMHNyY1NldCUzQiU1Q24lMjAlMjAlMjAlMjAlN0QlNUNuJTVDbiUyMCUyMCUyMCUyMGN1cnJEYXRhLmxvYWRQcm9taXNlJTIwJTNEJTIwbmV3JTIwUHJvbWlzZSUzQ3ZvaWQlM0UoZnVuY3Rpb24lMjAocmVzb2x2ZSUyQyUyMHJlamVjdCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjAoaW1nKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcuYWRkRXZlbnRMaXN0ZW5lciglNUMlMjJsb2FkJTVDJTIyJTJDJTIwZnVuY3Rpb24lMjAoKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXNvbHZlKHVuZGVmaW5lZCklM0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcuYWRkRXZlbnRMaXN0ZW5lciglNUMlMjJlcnJvciU1QyUyMiUyQyUyMGZ1bmN0aW9uJTIwKCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmVqZWN0KG5ldyUyMEVycm9yKCU1QyUyMkZhaWxlZCUyMHRvJTIwbG9hZCUyMGltYWdlJTVDJTIyKSklM0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlN0QlNUNuJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lNUNuJTIwJTIwJTIwJTIwbWVkaWFDYXJkU3NyJTVCa2V5JTVEJTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGElMjAlM0ElMjBjdXJyRGF0YSUzQiU1Q24lMjAlMjAlN0QlMjBlbHNlJTIwJTdCJTVDbiUyMCUyMCUyMCUyMG1lZGlhQ2FyZFNzciU1QmtleSU1RCUyMCUzRCUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkYXRhVVJJJTNBJTIwcGFyYW1EYXRhVVJJJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwZXJyb3IlMkMlNUNuJTIwJTIwJTIwJTIwJTdEJTNCJTVDbiUyMCUyMCU3RCU1Q24lNUNuJTIwJTIwJTJGJTJGJTIwUmVtb3ZlJTIwc2NyaXB0JTIwdG8lMjBwcmV2ZW50JTIwaHlkcmF0aW9uJTIwbWlzbWF0Y2glNUNuJTIwJTIwZG9jdW1lbnQuY3VycmVudFNjcmlwdCUzRi5yZW1vdmUoKSUzQiU1Q24lNUNuJTVDdCUyRiUyRiUyMHRoaXMlMjByZXBsYWNlJTIwd2lsbCUyMGJlJTIwdXNlZCUyMGFzJTIwYSUyMHBsYWNlaG9sZGVyJTIwZm9yJTIwdGhlJTIwc3RyaW5naWZpZWQlMjBwYXJhbXMlMjB0byUyMGJlJTIwaW5qZWN0ZWQlMjBpbnRvJTIwdGhlJTIwc2NyaXB0JTVDbiU3RCkoJTdCJTIwcmVwbGFjZSUzQSUyMCU1QyUyMiU1QyUyMiUyMCU3RCklM0IlNUNuJTIyJTJDJTIyaXNFbnRyeSUyMiUzQXRydWUlN0QlNUQlNUQlMkMlMjJvcHRpb25zJTIyJTNBJTdCJTIyZW50cmllcyUyMiUzQSU1QiU1RCUyQyUyMm1pbmlmeSUyMiUzQXRydWUlMkMlMjJzY29wZUhvaXN0JTIyJTNBdHJ1ZSUyQyUyMnNvdXJjZU1hcHMlMjIlM0FmYWxzZSUyQyUyMnB1YmxpY1VybCUyMiUzQSUyMiUyRl9fcmVwbF9kaXN0JTIyJTJDJTIydGFyZ2V0VHlwZSUyMiUzQSUyMmJyb3dzZXJzJTIyJTJDJTIydGFyZ2V0RW52JTIyJTNBbnVsbCUyQyUyMm91dHB1dEZvcm1hdCUyMiUzQW51bGwlMkMlMjJobXIlMjIlM0FmYWxzZSUyQyUyMm1vZGUlMjIlM0ElMjJwcm9kdWN0aW9uJTIyJTJDJTIycmVuZGVyR3JhcGhzJTIyJTNBZmFsc2UlMkMlMjJ2aWV3U291cmNlbWFwcyUyMiUzQWZhbHNlJTJDJTIyZGVwZW5kZW5jaWVzJTIyJTNBJTVCJTVEJTJDJTIybnVtV29ya2VycyUyMiUzQTAlN0QlMkMlMjJ1c2VUYWJzJTIyJTNBdHJ1ZSUyQyUyMmJyb3dzZXJDb2xsYXBzZWQlMjIlM0ElNUIlNUQlMkMlMjJ2aWV3cyUyMiUzQSU1QiUyMiUyRnNyYyUyRmluZGV4LnRzJTIyJTVEJTJDJTIyY3VycmVudFZpZXclMjIlM0EwJTdE
9
+ * 2. Manually minify the code into: https://repl.parceljs.org/#JTdCJTIyZmlsZXMlMjIlM0ElNUIlNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiUyQyU3QiUyMnZhbHVlJTIyJTNBJTIyJTJGKiUyMGVzbGludC1kaXNhYmxlJTIwJTQwYXRsYXNraXQlMkZwbGF0Zm9ybSUyRm5vLWRpcmVjdC1kb2N1bWVudC11c2FnZSUyMColMkYlNUNuJTVDbiUyRioqJTIwSU1QT1JUQU5UJTNBJTIwVGhpcyUyMGlzJTIwdGhlJTIwb3JpZ2luYWwlMjBjb2RlJTIwZm9yJTIwdGhlJTIwc2NyaXB0LiU1Q24lMjAqJTIwRG8lMjBub3QlMjBjaGFuZ2UlMjB0aGUlMjBjb2RlJTIwd2l0aG91dCUyMHRlc3RpbmclMjBpdCUyMGluJTIwcHJvZHVjdCUyMGZpcnN0LiU1Q24lMjAqJTIwU3RlcHMlM0ElNUNuJTIwKiUyMDEuJTIwTWFrZSUyMGNoYW5nZXMlMjBpbiUyMHRoaXMlMjBjb2RlJTVDbiUyMColMjAyLiUyME1hbnVhbGx5JTIwbWluaWZ5JTIwdGhlJTIwY29kZSUyMGludG8lM0ElMjBodHRwcyUzQSUyRiUyRnJlcGwucGFyY2VsanMub3JnJTJGJTIzSlRkQ0pUSXlabWxzWlhNbE1qSWxNMEVsTlVJbE5VSWxNaklsTWtaemNtTWxNa1pwYm1SbGVDNTBjeVV5TWlVeVF5VTNRaVV5TW5aaGJIVmxKVEl5SlROQkpUSXlKVEpHS2lVeU1HVnpiR2x1ZEMxa2FYTmhZbXhsSlRJd0pUUXdZWFJzWVhOcmFYUWxNa1p3YkdGMFptOXliU1V5Um01dkxXUnBjbVZqZEMxa2IyTjFiV1Z1ZEMxMWMyRm5aU1V5TUNvbE1rWWxOVU51SlRWRGJpVXlSaW9xSlRJd1NVMVFUMUpVUVU1VUpUTkJKVEl3VkdocGN5VXlNR2x6SlRJd2RHaGxKVEl3YjNKcFoybHVZV3dsTWpCamIyUmxKVEl3Wm05eUpUSXdkR2hsSlRJd2MyTnlhWEIwTGlVMVEyNGxNakFxSlRJd1JHOGxNakJ1YjNRbE1qQmphR0Z1WjJVbE1qQjBhR1VsTWpCamIyUmxKVEl3ZDJsMGFHOTFkQ1V5TUhSbGMzUnBibWNsTWpCcGRDVXlNR2x1SlRJd2NISnZaSFZqZENVeU1HWnBjbk4wTGlVMVEyNGxNakFxSlRJd1UzUmxjSE1sTTBFbE5VTnVKVEl3S2lVeU1ERXVKVEl3VFdGclpTVXlNR05vWVc1blpYTWxNakJwYmlVeU1IUm9hWE1sTWpCamIyUmxKVFZEYmlVeU1Db2xNakF5TGlVeU1FMWhiblZoYkd4NUpUSXdiV2x1YVdaNUpUSXdkR2hsSlRJd1kyOWtaU1V5TUhacFlTVXlNR2gwZEhCekpUTkJKVEpHSlRKR2NtVndiQzV3WVhKalpXeHFjeTV2Y21jbE1rWWxOVU51SlRJd0tpVXlNRE11SlRJd1EyOXdlU1V5TUhSb1pTVXlNRzFwYm1sbWFXVmtKVEl3WTI5a1pTVXlNR2x1ZEc4bE1qQm5iRzlpWVd4VFkyOXdaUzUwYzNnbE1qQnlaWEJzWVdOcGJtY2xNakIwYUdVbE1qQmxlR2x6ZEdsdVp5VXlNSE4wY21sdVp5VXlNSGRvWlhKbEpUSXdhWFFsTWpCellYbHpKVEl3VUVGVFZFVWxNakJJUlZKRkpUVkRiaVV5TUNvbE1qQTBMaVV5TUZKMWJpVXlNSFJvWlNVeU1IUmxjM1J6SlRJd1lXNWtKVEl3YldGclpTVXlNSE4xY21VbE1qQjBhR1Y1SlRJd2NHRnpjeVUxUTI0bE1qQXFKVEl3TlM0bE1qQlVSVk5VSlRJd1NVNGxNakJRVWs5RVZVTlVVeVV5TUVKRlJrOVNSU1V5TUUxRlVrZEpUa2NsTlVOdUpUSXdLaVUxUTI0bE1qQXFKVEpHSlRWRGJpVTFRMjVtZFc1amRHbHZiaVV5TUdkbGRFMWxaR2xoUjJ4dlltRnNVMk52Y0dVb0tTVXlNQ1UzUWlVMVEyNGxNakFsTWpCamIyNXpkQ1V5TUc1aGJXVnpjR0ZqWlNVeU1DVXpSQ1V5TUNVMVF5VXlNbDlmVFVWRVNVRmZTVTVVUlZKT1FVd2xOVU1sTWpJbE0wSWxOVU51SlRJd0pUSXdhV1lsTWpBb0lTaDNhVzVrYjNjbE1qQmhjeVV5TUdGdWVTa2xOVUp1WVcxbGMzQmhZMlVsTlVRcEpUSXdKVGRDSlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ2gzYVc1a2IzY2xNakJoY3lVeU1HRnVlU2tsTlVKdVlXMWxjM0JoWTJVbE5VUWxNakFsTTBRbE1qQWxOMElsTjBRbE0wSWxOVU51SlRJd0pUSXdKVGRFSlRWRGJpVXlNQ1V5TUhKbGRIVnliaVV5TUNoM2FXNWtiM2NsTWpCaGN5VXlNR0Z1ZVNrbE5VSnVZVzFsYzNCaFkyVWxOVVFsTTBJbE5VTnVKVGRFSlRWRGJpVTFRMjVtZFc1amRHbHZiaVV5TUdkbGRFMWxaR2xoUTJGeVpGTlRVaWdwSlRJd0pUZENKVFZEYmlVeU1DVXlNR052Ym5OMEpUSXdaMnh2WW1Gc1RXVmthV0VsTWpBbE0wUWxNakJuWlhSTlpXUnBZVWRzYjJKaGJGTmpiM0JsS0NrbE0wSWxOVU51SlRJd0pUSXdZMjl1YzNRbE1qQnJaWGtsTWpBbE0wUWxNakFsTlVNbE1qSnRaV1JwWVVOaGNtUlRjM0lsTlVNbE1qSWxNMElsTlVOdUpUSXdKVEl3YVdZbE1qQW9JV2RzYjJKaGJFMWxaR2xoSlRWQ2EyVjVKVFZFS1NVeU1DVTNRaVUxUTI0bE1qQWxNakFsTWpBbE1qQm5iRzlpWVd4TlpXUnBZU1UxUW10bGVTVTFSQ1V5TUNVelJDVXlNQ1UzUWlVM1JDVXpRaVUxUTI0bE1qQWxNakFsTjBRbE5VTnVKVEl3SlRJd2NtVjBkWEp1SlRJd1oyeHZZbUZzVFdWa2FXRWxOVUpyWlhrbE5VUWxNMElsTlVOdUpUZEVKVFZEYmlVMVEyNW1kVzVqZEdsdmJpVXlNR2RsZEUxbFpHbGhRMjkxYm5SVFUxSW9LU1V5TUNVM1FpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1HZHNiMkpoYkUxbFpHbGhKVEl3SlRORUpUSXdaMlYwVFdWa2FXRkhiRzlpWVd4VFkyOXdaU2dwSlROQ0pUVkRiaVV5TUNVeU1HTnZibk4wSlRJd2EyVjVKVEl3SlRORUpUSXdKVFZESlRJeWJXVmthV0ZEYjNWdWRGTnpjaVUxUXlVeU1pVXpRaVUxUTI0bE1qQWxNakJwWmlVeU1DZ2haMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFwSlRJd0pUZENKVFZEYmlVeU1DVXlNQ1V5TUNVeU1HZHNiMkpoYkUxbFpHbGhKVFZDYTJWNUpUVkVKVEl3SlRORUpUSXdNQ1V6UWlVMVEyNGxNakFsTWpBbE4wUWxOVU51SlRJd0pUSXdjbVYwZFhKdUpUSXdaMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFsTTBJbE5VTnVKVGRFSlRWRGJpVTFRMjVtZFc1amRHbHZiaVV5TUdsdVkzSmxiV1Z1ZEUxbFpHbGhRMjkxYm5SVFUxSW9LU1V5TUNVM1FpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1HZHNiMkpoYkUxbFpHbGhKVEl3SlRORUpUSXdaMlYwVFdWa2FXRkhiRzlpWVd4VFkyOXdaU2dwSlROQ0pUVkRiaVV5TUNVeU1HTnZibk4wSlRJd2EyVjVKVEl3SlRORUpUSXdKVFZESlRJeWJXVmthV0ZEYjNWdWRGTnpjaVUxUXlVeU1pVXpRaVUxUTI0bE1qQWxNakJwWmlVeU1DZ2haMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFwSlRJd0pUZENKVFZEYmlVeU1DVXlNQ1V5TUNVeU1HZHNiMkpoYkUxbFpHbGhKVFZDYTJWNUpUVkVKVEl3SlRORUpUSXdNQ1V6UWlVMVEyNGxNakFsTWpBbE4wUWxOVU51SlRJd0pUSXdaMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFsTWtJbE1rSWxNMElsTlVOdUpUZEVKVFZEYmlVMVEyNG9ablZ1WTNScGIyNGxNakFvY0dGeVlXMXpKVE5CSlRJd1lXNTVLU1V5TUNVM1FpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1ITmpjbWx3ZENVeU1DVXpSQ1V5TUdSdlkzVnRaVzUwTG1OMWNuSmxiblJUWTNKcGNIUWxNMElsTlVOdUpUVkRiaVV5TUNVeU1DVXlSaVV5UmlVeU1GTjBiM0psSlRJd2RHaGxKVEl3WkdGMFlTVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1HMWxaR2xoUTJGeVpGTnpjaVV5TUNVelJDVXlNR2RsZEUxbFpHbGhRMkZ5WkZOVFVpZ3BKVE5DSlRWRGJpVXlNQ1V5TUdOdmJuTjBKVEl3YldWa2FXRkRiM1Z1ZEZOemNpVXlNQ1V6UkNVeU1HZGxkRTFsWkdsaFEyOTFiblJUVTFJb0tTVXpRaVUxUTI0bE1qQWxNakJqYjI1emRDVXlNQ1UzUWlVeU1HdGxlU1V5TUNVM1JDVXlNQ1V6UkNVeU1IQmhjbUZ0Y3lVelFpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1IQmhjbUZ0UkdGMFlWVlNTU1V5TUNVelJDVXlNSEJoY21GdGN5NWtZWFJoVlZKSkpUTkNKVFZEYmlVeU1DVXlNR052Ym5OMEpUSXdjR0Z5WVcxTmIyUmxKVEl3SlRORUpUSXdjR0Z5WVcxekxtMXZaR1VsTTBJbE5VTnVKVEl3SlRJd1kyOXVjM1FsTWpCd1lYSmhiVk55WTFObGRDVXlNQ1V6UkNVeU1IQmhjbUZ0Y3k1emNtTlRaWFFsTTBJbE5VTnVKVEl3SlRJd1kyOXVjM1FsTWpBbE4wSWxNakJrYVcxbGJuTnBiMjV6SlRJd0pUZEVKVEl3SlRORUpUSXdjR0Z5WVcxekpUTkNKVFZEYmlVeU1DVXlNR052Ym5OMEpUSXdKVGRDSlRJd1pYSnliM0lsTWpBbE4wUWxNakFsTTBRbE1qQndZWEpoYlhNbE0wSWxOVU51SlRJd0pUSXdZMjl1YzNRbE1qQWxOMElsTWpCbVpXRjBkWEpsUm14aFozTWxNakFsTjBRbE1qQWxNMFFsTWpCd1lYSmhiWE1sTTBJbE5VTnVKVFZEYmlVeU1DVXlNR2xtSlRJd0tHWmxZWFIxY21WR2JHRm5jeVUxUWlVMVF5VXlNbTFsWkdsaExYQmxjbVl0ZFhCc2FXWjBMVzExZEdGMGFXOXVMV1pwZUNVMVF5VXlNaVUxUkNrbE1qQWxOMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdZMjl1YzNRbE1qQndjbVYyUkdGMFlTVXlNQ1V6UkNVeU1HMWxaR2xoUTJGeVpGTnpjaVUxUW10bGVTVTFSQ1V6UWlVMVEyNGxNakFsTWpBbE1qQWxNakJqYjI1emRDVXlNR2x6VUhKbGRtbHZkWE5KYldGblpVeGhjbWRsY2lVeU1DVXpSQ1UxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpCd2NtVjJSR0YwWVNVeU1DVXlOaVV5TmlVMVEyNGxNakFsTWpBbE1qQWxNakFsTWpBbE1qQndjbVYyUkdGMFlTNXRiMlJsSlRJd0pUTkVKVE5FSlRORUpUSXdjR0Z5WVcxTmIyUmxKVEl3SlRJMkpUSTJKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUhCeVpYWkVZWFJoTG1ScGJXVnVjMmx2Ym5NbE1qQWxNallsTWpZbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjSEpsZGtSaGRHRXVaR2x0Wlc1emFXOXVjeTUzYVdSMGFDVXlNQ1V5TmlVeU5pVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJrYVcxbGJuTnBiMjV6SlRJd0pUSTJKVEkySlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HUnBiV1Z1YzJsdmJuTXVkMmxrZEdnbE1qQWxNallsTWpZbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjSEpsZGtSaGRHRXVaR2x0Wlc1emFXOXVjeTUzYVdSMGFDVXlNQ1V6UlNVeU1HUnBiV1Z1YzJsdmJuTXVkMmxrZEdnbE0wSWxOVU51SlRWRGJpVXlNQ1V5TUNVeU1DVXlNR052Ym5OMEpUSXdjM0pqVTJWMEpUSXdKVE5FSlRJd2FYTlFjbVYyYVc5MWMwbHRZV2RsVEdGeVoyVnlKVEl3SlROR0pUSXdjSEpsZGtSaGRHRXVjM0pqVTJWMEpUSXdKVE5CSlRJd2NHRnlZVzFUY21OVFpYUWxNMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdZMjl1YzNRbE1qQmtZWFJoVlZKSkpUSXdKVE5FSlRJd2FYTlFjbVYyYVc5MWMwbHRZV2RsVEdGeVoyVnlKVEl3SlROR0pUSXdjSEpsZGtSaGRHRXVaR0YwWVZWU1NTVXlNQ1V6UVNVeU1IQmhjbUZ0UkdGMFlWVlNTU1V6UWlVMVEyNGxOVU51SlRJd0pUSXdKVEl3SlRJd1kyOXVjM1FsTWpCamRYSnlSR0YwWVNVelFTVXlNR0Z1ZVNVeU1DVXpSQ1V5TUNVM1FpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJrWVhSaFZWSkpKVEpESlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HUnBiV1Z1YzJsdmJuTWxNa01sTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd1pYSnliM0lsTWtNbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjM0pqVTJWMEpUSkRKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUd4dllXUnBibWNsTTBFbE1qQWxOVU1sTWpKc1lYcDVKVFZESlRJeUpUSkRKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUd4dllXUlFjbTl0YVhObEpUTkJKVEl3ZFc1a1pXWnBibVZrSlRKREpUVkRiaVUxUTNRbE5VTjBKVFZEZEcxdlpHVWxNMEVsTWpCd1lYSmhiVTF2WkdVbE1rTWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUZEVKVE5DSlRWRGJpVTFRMjRsTWpBbE1qQWxNakFsTWpCamIyNXpkQ1V5TUdsdFp5VXlNQ1V6UkNVMVEyNGxNakFsTWpBbE1qQWxNakFsTWpBbE1qQnpZM0pwY0hRbE1qQWxNallsTWpZbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjMk55YVhCMExuQmhjbVZ1ZEVWc1pXMWxiblFsTWpBbE1qWWxNallsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd2MyTnlhWEIwTG5CaGNtVnVkRVZzWlcxbGJuUXVjWFZsY25sVFpXeGxZM1J2Y2lnbE5VTWxNakpwYldjbE5VTWxNaklwSlROQ0pUVkRiaVUxUTI0bE1qQWxNakFsTWpBbE1qQnBaaVV5TUNnbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdhVzFuSlRJd0pUSTJKVEkySlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HWmxZWFIxY21WR2JHRm5jeVUxUWlVMVF5VXlNbTFsWkdsaExYQmxjbVl0YkdGNmVTMXNiMkZrYVc1bkxXOXdkR2x0YVhOaGRHbHZiaVUxUXlVeU1pVTFSQ1V5TUNVeU5pVXlOaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpCdFpXUnBZVU52ZFc1MFUzTnlKVEl3SlROREpUSXdjR0Z5WVcxekxtMWhlRVZoWjJWeVRHOWhaRU52ZFc1MEpUVkRiaVV5TUNVeU1DVXlNQ1V5TUNrbE1qQWxOMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd2FXNWpjbVZ0Wlc1MFRXVmthV0ZEYjNWdWRGTlRVaWdwSlROQ0pUVkRiaVV5TUNVeU1DVXlNQ1V5TUNVeU1DVXlNR2xtSlRJd0tHbHRaeTVuWlhSQmRIUnlhV0oxZEdVb0pUVkRKVEl5Ykc5aFpHbHVaeVUxUXlVeU1pa2xNakFsTTBRbE0wUWxNMFFsTWpBbE5VTWxNakpzWVhwNUpUVkRKVEl5S1NVeU1DVTNRaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJwYldjdWNtVnRiM1psUVhSMGNtbGlkWFJsS0NVMVF5VXlNbXh2WVdScGJtY2xOVU1sTWpJcEpUTkNKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVM1JDVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJqZFhKeVJHRjBZUzVzYjJGa2FXNW5KVEl3SlRORUpUSXdKVFZESlRJeUpUVkRKVEl5SlROQ0pUVkRiaVV5TUNVeU1DVXlNQ1V5TUNVM1JDVTFRMjRsTlVOdUpUSXdKVEl3SlRJd0pUSXdhV1lsTWpBb2FXMW5KVEl3SlRJMkpUSTJKVEl3WkdGMFlWVlNTU2tsTWpBbE4wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3YVcxbkxuTnlZeVV5TUNVelJDVXlNR1JoZEdGVlVra2xNMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVGRFSlRWRGJpVXlNQ1V5TUNVeU1DVXlNR2xtSlRJd0tHbHRaeVV5TUNVeU5pVXlOaVV5TUhOeVkxTmxkQ2tsTWpBbE4wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3YVcxbkxuTnlZM05sZENVeU1DVXpSQ1V5TUhOeVkxTmxkQ1V6UWlVMVEyNGxNakFsTWpBbE1qQWxNakFsTjBRbE5VTnVKVFZEYmlVeU1DVXlNQ1V5TUNVeU1HTjFjbkpFWVhSaExteHZZV1JRY205dGFYTmxKVEl3SlRORUpUSXdibVYzSlRJd1VISnZiV2x6WlNVelEzWnZhV1FsTTBVb1puVnVZM1JwYjI0bE1qQW9jbVZ6YjJ4MlpTVXlReVV5TUhKbGFtVmpkQ2tsTWpBbE4wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3YVdZbE1qQW9hVzFuS1NVeU1DVTNRaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWtZbE1rWWxNakJsYzJ4cGJuUXRaR2x6WVdKc1pTMXVaWGgwTFd4cGJtVWxNakFsTkRCeVpYQnZKVEpHYVc1MFpYSnVZV3dsTWtaa2IyMHRaWFpsYm5SekpUSkdibTh0ZFc1ellXWmxMV1YyWlc1MExXeHBjM1JsYm1WeWN5VTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQnBiV2N1WVdSa1JYWmxiblJNYVhOMFpXNWxjaWdsTlVNbE1qSnNiMkZrSlRWREpUSXlKVEpESlRJd1puVnVZM1JwYjI0bE1qQW9LU1V5TUNVM1FpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpCeVpYTnZiSFpsS0hWdVpHVm1hVzVsWkNrbE0wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVGRFS1NVelFpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNa1lsTWtZbE1qQmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VbE1qQWxOREJ5WlhCdkpUSkdhVzUwWlhKdVlXd2xNa1prYjIwdFpYWmxiblJ6SlRKR2JtOHRkVzV6WVdabExXVjJaVzUwTFd4cGMzUmxibVZ5Y3lVMVEyNGxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpCcGJXY3VZV1JrUlhabGJuUk1hWE4wWlc1bGNpZ2xOVU1sTWpKbGNuSnZjaVUxUXlVeU1pVXlReVV5TUdaMWJtTjBhVzl1SlRJd0tDa2xNakFsTjBJbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3Y21WcVpXTjBLRzVsZHlVeU1FVnljbTl5S0NVMVF5VXlNa1poYVd4bFpDVXlNSFJ2SlRJd2JHOWhaQ1V5TUdsdFlXZGxKVFZESlRJeUtTa2xNMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3SlRkRUtTVXpRaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE4wUWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUZEVLU1V6UWlVMVEyNGxOVU51SlRJd0pUSXdKVEl3SlRJd2JXVmthV0ZEWVhKa1UzTnlKVFZDYTJWNUpUVkVKVEl3SlRORUpUSXdhWE5RY21WMmFXOTFjMGx0WVdkbFRHRnlaMlZ5SlRJd0pUTkdKVEl3Y0hKbGRrUmhkR0VsTWpBbE0wRWxNakJqZFhKeVJHRjBZU1V6UWlVMVEyNGxNakFsTWpBbE4wUWxNakJsYkhObEpUSXdKVGRDSlRWRGJpVXlNQ1V5TUNVeU1DVXlNRzFsWkdsaFEyRnlaRk56Y2lVMVFtdGxlU1UxUkNVeU1DVXpSQ1V5TUNVM1FpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJrWVhSaFZWSkpKVE5CSlRJd2NHRnlZVzFFWVhSaFZWSkpKVEpESlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HUnBiV1Z1YzJsdmJuTWxNa01sTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd1pYSnliM0lsTWtNbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRkRUpUTkNKVFZEYmlVeU1DVXlNQ1UzUkNVMVEyNGxOVU51SlRJd0pUSXdKVEpHSlRKR0pUSXdVbVZ0YjNabEpUSXdjMk55YVhCMEpUSXdkRzhsTWpCd2NtVjJaVzUwSlRJd2FIbGtjbUYwYVc5dUpUSXdiV2x6YldGMFkyZ2xOVU51SlRJd0pUSXdaRzlqZFcxbGJuUXVZM1Z5Y21WdWRGTmpjbWx3ZENVelJpNXlaVzF2ZG1Vb0tTVXpRaVUxUTI0bE5VTnVKVFZEZENVeVJpVXlSaVV5TUhSb2FYTWxNakJ5WlhCc1lXTmxKVEl3ZDJsc2JDVXlNR0psSlRJd2RYTmxaQ1V5TUdGekpUSXdZU1V5TUhCc1lXTmxhRzlzWkdWeUpUSXdabTl5SlRJd2RHaGxKVEl3YzNSeWFXNW5hV1pwWldRbE1qQndZWEpoYlhNbE1qQjBieVV5TUdKbEpUSXdhVzVxWldOMFpXUWxNakJwYm5SdkpUSXdkR2hsSlRJd2MyTnlhWEIwSlRWRGJpVTNSQ2tvSlRkQ0pUSXdjbVZ3YkdGalpTVXpRU1V5TUNVMVF5VXlNaVUxUXlVeU1pVXlNQ1UzUkNrbE0wSWxOVU51SlRJeUpUSkRKVEl5YVhORmJuUnllU1V5TWlVelFYUnlkV1VsTjBRbE5VUWxOVVFsTWtNbE1qSnZjSFJwYjI1ekpUSXlKVE5CSlRkQ0pUSXlaVzUwY21sbGN5VXlNaVV6UVNVMVFpVTFSQ1V5UXlVeU1tMXBibWxtZVNVeU1pVXpRWFJ5ZFdVbE1rTWxNakp6WTI5d1pVaHZhWE4wSlRJeUpUTkJkSEoxWlNVeVF5VXlNbk52ZFhKalpVMWhjSE1sTWpJbE0wRm1ZV3h6WlNVeVF5VXlNbkIxWW14cFkxVnliQ1V5TWlVelFTVXlNaVV5Umw5ZmNtVndiRjlrYVhOMEpUSXlKVEpESlRJeWRHRnlaMlYwVkhsd1pTVXlNaVV6UVNVeU1tSnliM2R6WlhKekpUSXlKVEpESlRJeWRHRnlaMlYwUlc1MkpUSXlKVE5CYm5Wc2JDVXlReVV5TW05MWRIQjFkRVp2Y20xaGRDVXlNaVV6UVc1MWJHd2xNa01sTWpKb2JYSWxNaklsTTBGbVlXeHpaU1V5UXlVeU1tMXZaR1VsTWpJbE0wRWxNakp3Y205a2RXTjBhVzl1SlRJeUpUSkRKVEl5Y21WdVpHVnlSM0poY0doekpUSXlKVE5CWm1Gc2MyVWxNa01sTWpKMmFXVjNVMjkxY21ObGJXRndjeVV5TWlVelFXWmhiSE5sSlRKREpUSXlaR1Z3Wlc1a1pXNWphV1Z6SlRJeUpUTkJKVFZDSlRWRUpUSkRKVEl5Ym5WdFYyOXlhMlZ5Y3lVeU1pVXpRVEFsTjBRbE1rTWxNakoxYzJWVVlXSnpKVEl5SlROQmRISjFaU1V5UXlVeU1tSnliM2R6WlhKRGIyeHNZWEJ6WldRbE1qSWxNMEVsTlVJbE5VUWxNa01sTWpKMmFXVjNjeVV5TWlVelFTVTFRaVV5TWlVeVJuTnlZeVV5Um1sdVpHVjRMblJ6SlRJeUpUVkVKVEpESlRJeVkzVnljbVZ1ZEZacFpYY2xNaklsTTBFd0pUZEUlNUNuJTIwKiUyMDMuJTIwQ29weSUyMHRoZSUyMG1pbmlmaWVkJTIwY29kZSUyMGludG8lMjBnbG9iYWxTY29wZS50c3glMjByZXBsYWNpbmclMjB0aGUlMjBleGlzdGluZyUyMHN0cmluZyUyMHdoZXJlJTIwaXQlMjBzYXlzJTIwUEFTVEUlMjBIRVJFJTVDbiUyMColMjA0LiUyMFJ1biUyMHRoZSUyMHRlc3RzJTIwYW5kJTIwbWFrZSUyMHN1cmUlMjB0aGV5JTIwcGFzcyU1Q24lMjAqJTIwNS4lMjBURVNUJTIwSU4lMjBQUk9EVUNUUyUyMEJFRk9SRSUyME1FUkdJTkclNUNuJTIwKiU1Q24lMjAqJTJGJTVDbiU1Q24oZnVuY3Rpb24lMjAocGFyYW1zJTNBJTIwYW55KSUyMCU3QiU1Q24lNUN0Y29uc3QlMjBzY3JpcHQlMjAlM0QlMjBkb2N1bWVudC5jdXJyZW50U2NyaXB0JTNCJTVDbiU1Q3Rjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwKCh3aW5kb3clMjBhcyUyMGFueSkuX19NRURJQV9JTlRFUk5BTCUyMCUzRCUyMCh3aW5kb3clMjBhcyUyMGFueSkuX19NRURJQV9JTlRFUk5BTCUyMCU3QyU3QyUyMCU3QiU3RCklM0IlNUNuJTVDdGNvbnN0JTIwbWVkaWFDYXJkU3NyJTIwJTNEJTIwKGdsb2JhbE1lZGlhLm1lZGlhQ2FyZFNzciUyMCUzRCUyMGdsb2JhbE1lZGlhLm1lZGlhQ2FyZFNzciUyMCU3QyU3QyUyMCU3QiU3RCklM0IlNUNuJTVDdGNvbnN0JTIwJTdCJTIwa2V5JTJDJTIwZGF0YVVSSSUzQSUyMHBhcmFtRGF0YVVSSSUyQyUyMG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlMjBzcmNTZXQlM0ElMjBwYXJhbVNyY1NldCUyQyUyMGRpbWVuc2lvbnMlMkMlMjBlcnJvciUyQyUyMGZlYXR1cmVGbGFncyUyMCU3RCUyMCUzRCUyMHBhcmFtcyUzQiU1Q24lNUNuJTVDdGlmJTIwKGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtdXBsaWZ0LW11dGF0aW9uLWZpeCU1QyUyMiU1RCklMjAlN0IlNUNuJTVDdCU1Q3Rjb25zdCUyMHByZXZEYXRhJTIwJTNEJTIwbWVkaWFDYXJkU3NyJTVCa2V5JTVEJTNCJTVDbiU1Q3QlNUN0Y29uc3QlMjBpc1ByZXZpb3VzSW1hZ2VMYXJnZXIlMjAlM0QlNUNuJTVDdCU1Q3QlNUN0cHJldkRhdGElMjAlMjYlMjYlNUNuJTVDdCU1Q3QlNUN0cHJldkRhdGEubW9kZSUyMCUzRCUzRCUzRCUyMHBhcmFtTW9kZSUyMCUyNiUyNiU1Q24lNUN0JTVDdCU1Q3RwcmV2RGF0YS5kaW1lbnNpb25zJTNGLndpZHRoJTIwJTI2JTI2JTVDbiU1Q3QlNUN0JTVDdGRpbWVuc2lvbnMlM0Yud2lkdGglMjAlMjYlMjYlNUNuJTVDdCU1Q3QlNUN0cHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUzRSUyMGRpbWVuc2lvbnMud2lkdGglM0IlNUNuJTVDbiU1Q3QlNUN0Y29uc3QlMjBzcmNTZXQlMjAlM0QlMjBpc1ByZXZpb3VzSW1hZ2VMYXJnZXIlMjAlM0YlMjBwcmV2RGF0YS5zcmNTZXQlMjAlM0ElMjBwYXJhbVNyY1NldCUzQiU1Q24lNUN0JTVDdGNvbnN0JTIwZGF0YVVSSSUyMCUzRCUyMGlzUHJldmlvdXNJbWFnZUxhcmdlciUyMCUzRiUyMHByZXZEYXRhLmRhdGFVUkklMjAlM0ElMjBwYXJhbURhdGFVUkklM0IlNUNuJTVDbiU1Q3QlNUN0Y29uc3QlMjBjdXJyRGF0YSUzQSUyMGFueSUyMCUzRCUyMCU3QiU1Q24lNUN0JTVDdCU1Q3RkYXRhVVJJJTJDJTVDbiU1Q3QlNUN0JTVDdGRpbWVuc2lvbnMlMkMlNUNuJTVDdCU1Q3QlNUN0ZXJyb3IlMkMlNUNuJTVDdCU1Q3QlNUN0c3JjU2V0JTJDJTVDbiU1Q3QlNUN0JTVDdGxvYWRpbmclM0ElMjAlNUMlMjJsYXp5JTVDJTIyJTJDJTVDbiU1Q3QlNUN0JTVDdGxvYWRQcm9taXNlJTNBJTIwdW5kZWZpbmVkJTJDJTVDbiU1Q3QlNUN0JTVDdG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlNUNuJTVDdCU1Q3QlN0QlM0IlNUNuJTVDbiU1Q3QlNUN0Y29uc3QlMjBpbWclMjAlM0QlMjBzY3JpcHQlM0YucGFyZW50RWxlbWVudCUzRi5xdWVyeVNlbGVjdG9yKCU1QyUyMmltZyU1QyUyMiklM0IlNUNuJTVDbiU1Q3QlNUN0Z2xvYmFsTWVkaWEubWVkaWFDb3VudFNzciUyMCUzRCUyMGdsb2JhbE1lZGlhLm1lZGlhQ291bnRTc3IlMjAlN0MlN0MlMjAwJTNCJTVDbiU1Q24lNUN0JTVDdGlmJTIwKGltZyklMjAlN0IlNUNuJTVDdCU1Q3QlNUN0aWYlMjAoJTVDbiU1Q3QlNUN0JTVDdCU1Q3RmZWF0dXJlRmxhZ3MlNUIlNUMlMjJtZWRpYS1wZXJmLWxhenktbG9hZGluZy1vcHRpbWlzYXRpb24lNUMlMjIlNUQlMjAlMjYlMjYlNUNuJTVDdCU1Q3QlNUN0JTVDdGdsb2JhbE1lZGlhLm1lZGlhQ291bnRTc3IlMjAlM0MlMjBwYXJhbXMubWF4RWFnZXJMb2FkQ291bnQlNUNuJTVDdCU1Q3QlNUN0KSUyMCU3QiU1Q24lNUN0JTVDdCU1Q3QlNUN0Z2xvYmFsTWVkaWEubWVkaWFDb3VudFNzciUyQiUyQiUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0aW1nLnJlbW92ZUF0dHJpYnV0ZSglNUMlMjJsb2FkaW5nJTVDJTIyKSUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0Y3VyckRhdGEubG9hZGluZyUyMCUzRCUyMCU1QyUyMiU1QyUyMiUzQiU1Q24lNUNuJTVDdCU1Q3QlNUN0JTVDdGNvbnN0JTIwb2JzZXJ2ZXIlMjAlM0QlMjBuZXclMjBQZXJmb3JtYW5jZU9ic2VydmVyKChlbnRyaWVzKSUyMCUzRCUzRSUyMCU3QiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdGVudHJpZXMuZ2V0RW50cmllcygpLmZvckVhY2goKGVudHJ5KSUyMCUzRCUzRSUyMCU3QiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdCU1Q3RpZiUyMChzcmNTZXQuaW5jbHVkZXMoZW50cnkubmFtZSkpJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdCU1Q3QlNUN0JTVDdCU1Q3RnbG9iYWxNZWRpYS5wZXJmb3JtYW5jZUVudHJpZXMlMjAlM0QlMjBnbG9iYWxNZWRpYS5wZXJmb3JtYW5jZUVudHJpZXMlMjAlN0MlN0MlMjAlNUIlNUQlM0IlNUNuJTVDdCU1Q3QlNUN0JTVDdCU1Q3QlNUN0JTVDdGdsb2JhbE1lZGlhLnBlcmZvcm1hbmNlRW50cmllcy5wdXNoKGVudHJ5KSUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdCU1Q3QlNUN0b2JzZXJ2ZXIuZGlzY29ubmVjdCgpJTNCJTVDbiU1Q3QlNUN0JTVDdCU1Q3QlNUN0JTVDdCU3RCU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdCU3RCklM0IlNUNuJTVDdCU1Q3QlNUN0JTVDdCU3RCklM0IlNUNuJTVDdCU1Q3QlNUN0JTVDdG9ic2VydmVyLm9ic2VydmUoJTdCJTIwdHlwZSUzQSUyMCdyZXNvdXJjZSclMjAlN0QpJTNCJTVDbiU1Q3QlNUN0JTVDdCU3RCU1Q24lNUNuJTVDdCU1Q3QlNUN0aWYlMjAoZGF0YVVSSSklMjAlN0IlNUNuJTVDdCU1Q3QlNUN0JTVDdGltZy5zcmMlMjAlM0QlMjBkYXRhVVJJJTNCJTVDbiU1Q3QlNUN0JTVDdCU3RCU1Q24lNUN0JTVDdCU1Q3RpZiUyMChzcmNTZXQpJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdCU1Q3RpbWcuc3Jjc2V0JTIwJTNEJTIwc3JjU2V0JTNCJTVDbiU1Q3QlNUN0JTVDdCU3RCU1Q24lNUN0JTVDdCU1Q3RjdXJyRGF0YS5sb2FkUHJvbWlzZSUyMCUzRCUyMG5ldyUyMFByb21pc2UlM0N2b2lkJTNFKGZ1bmN0aW9uJTIwKHJlc29sdmUlMkMlMjByZWplY3QpJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdCU1Q3QlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lNUN0JTVDdCU1Q3QlNUN0aW1nLmFkZEV2ZW50TGlzdGVuZXIoJTVDJTIybG9hZCU1QyUyMiUyQyUyMCgpJTIwJTNEJTNFJTIwcmVzb2x2ZSgpKSUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTJGJTJGJTIwZXNsaW50LWRpc2FibGUtbmV4dC1saW5lJTIwJTQwcmVwbyUyRmludGVybmFsJTJGZG9tLWV2ZW50cyUyRm5vLXVuc2FmZS1ldmVudC1saXN0ZW5lcnMlNUNuJTVDdCU1Q3QlNUN0JTVDdGltZy5hZGRFdmVudExpc3RlbmVyKCU1QyUyMmVycm9yJTVDJTIyJTJDJTIwKCklMjAlM0QlM0UlMjByZWplY3QobmV3JTIwRXJyb3IoJTVDJTIyRmFpbGVkJTIwdG8lMjBsb2FkJTIwaW1hZ2UlNUMlMjIpKSklM0IlNUNuJTVDdCU1Q3QlNUN0JTdEKSUzQiU1Q24lNUN0JTVDdCU3RCU1Q24lNUNuJTVDdCU1Q3RtZWRpYUNhcmRTc3IlNUJrZXklNUQlMjAlM0QlMjBpc1ByZXZpb3VzSW1hZ2VMYXJnZXIlMjAlM0YlMjBwcmV2RGF0YSUyMCUzQSUyMGN1cnJEYXRhJTNCJTVDbiU1Q3QlN0QlMjBlbHNlJTIwJTdCJTVDbiU1Q3QlNUN0bWVkaWFDYXJkU3NyJTVCa2V5JTVEJTIwJTNEJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdGRhdGFVUkklM0ElMjBwYXJhbURhdGFVUkklMkMlNUNuJTVDdCU1Q3QlNUN0ZGltZW5zaW9ucyUyQyU1Q24lNUN0JTVDdCU1Q3RlcnJvciUyQyU1Q24lNUN0JTVDdCU3RCUzQiU1Q24lNUN0JTdEJTVDbiU1Q24lNUN0c2NyaXB0JTNGLnJlbW92ZSgpJTNCJTVDbiU1Q24lNUN0JTJGJTJGJTIwdGhpcyUyMHJlcGxhY2UlMjB3aWxsJTIwYmUlMjB1c2VkJTIwYXMlMjBhJTIwcGxhY2Vob2xkZXIlMjBmb3IlMjB0aGUlMjBzdHJpbmdpZmllZCUyMHBhcmFtcyUyMHRvJTIwYmUlMjBpbmplY3RlZCUyMGludG8lMjB0aGUlMjBzY3JpcHQlNUNuJTdEKSglN0IlMjByZXBsYWNlJTNBJTIwJTVDJTIyJTVDJTIyJTIwJTdEKSUzQiU1Q24lMjIlMkMlMjJpc0VudHJ5JTIyJTNBdHJ1ZSU3RCU1RCU1RCUyQyUyMm9wdGlvbnMlMjIlM0ElN0IlMjJlbnRyaWVzJTIyJTNBJTVCJTVEJTJDJTIybWluaWZ5JTIyJTNBdHJ1ZSUyQyUyMnNjb3BlSG9pc3QlMjIlM0F0cnVlJTJDJTIyc291cmNlTWFwcyUyMiUzQWZhbHNlJTJDJTIycHVibGljVXJsJTIyJTNBJTIyJTJGX19yZXBsX2Rpc3QlMjIlMkMlMjJ0YXJnZXRUeXBlJTIyJTNBJTIyYnJvd3NlcnMlMjIlMkMlMjJ0YXJnZXRFbnYlMjIlM0ElMjJzaW5jZSUyMDIwMTUlMjIlMkMlMjJvdXRwdXRGb3JtYXQlMjIlM0FudWxsJTJDJTIyaG1yJTIyJTNBZmFsc2UlMkMlMjJtb2RlJTIyJTNBJTIycHJvZHVjdGlvbiUyMiUyQyUyMnJlbmRlckdyYXBocyUyMiUzQWZhbHNlJTJDJTIydmlld1NvdXJjZW1hcHMlMjIlM0FmYWxzZSUyQyUyMmRlcGVuZGVuY2llcyUyMiUzQSU1QiU1RCUyQyUyMm51bVdvcmtlcnMlMjIlM0EwJTdEJTJDJTIydXNlVGFicyUyMiUzQXRydWUlMkMlMjJicm93c2VyQ29sbGFwc2VkJTIyJTNBJTVCJTVEJTJDJTIydmlld3MlMjIlM0ElNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiU1RCUyQyUyMmN1cnJlbnRWaWV3JTIyJTNBMCU3RA==
10
+ * Ensure the settings have: Minification on and
11
11
  * 3. Copy the minified code into globalScope.tsx replacing the existing string where it says PASTE HERE
12
12
  * 4. Run the tests and make sure they pass
13
13
  * 5. TEST IN PRODUCTS BEFORE MERGING
14
14
  *
15
15
  */
16
16
 
17
- function getMediaGlobalScope() {
18
- var namespace = "__MEDIA_INTERNAL";
19
- if (!window[namespace]) {
20
- window[namespace] = {};
21
- }
22
- return window[namespace];
23
- }
24
- function getMediaCardSSR() {
25
- var globalMedia = getMediaGlobalScope();
26
- var key = "mediaCardSsr";
27
- if (!globalMedia[key]) {
28
- globalMedia[key] = {};
29
- }
30
- return globalMedia[key];
31
- }
32
- function getMediaCountSSR() {
33
- var globalMedia = getMediaGlobalScope();
34
- var key = "mediaCountSsr";
35
- if (!globalMedia[key]) {
36
- globalMedia[key] = 0;
37
- }
38
- return globalMedia[key];
39
- }
40
- function incrementMediaCountSSR() {
41
- var globalMedia = getMediaGlobalScope();
42
- var key = "mediaCountSsr";
43
- if (!globalMedia[key]) {
44
- globalMedia[key] = 0;
45
- }
46
- globalMedia[key]++;
47
- }
48
- (function (params, _document$currentScri) {
17
+ (function (params) {
49
18
  var script = document.currentScript;
50
-
51
- // Store the data
52
- var mediaCardSsr = getMediaCardSSR();
53
- var mediaCountSsr = getMediaCountSSR();
54
- var key = params.key;
55
- var paramDataURI = params.dataURI;
56
- var paramMode = params.mode;
57
- var paramSrcSet = params.srcSet;
58
- var dimensions = params.dimensions;
59
- var error = params.error;
60
- var featureFlags = params.featureFlags;
19
+ var globalMedia = window.__MEDIA_INTERNAL = window.__MEDIA_INTERNAL || {};
20
+ var mediaCardSsr = globalMedia.mediaCardSsr = globalMedia.mediaCardSsr || {};
21
+ var key = params.key,
22
+ paramDataURI = params.dataURI,
23
+ paramMode = params.mode,
24
+ paramSrcSet = params.srcSet,
25
+ dimensions = params.dimensions,
26
+ error = params.error,
27
+ featureFlags = params.featureFlags;
61
28
  if (featureFlags["media-perf-uplift-mutation-fix"]) {
29
+ var _prevData$dimensions, _script$parentElement;
62
30
  var prevData = mediaCardSsr[key];
63
- var isPreviousImageLarger = prevData && prevData.mode === paramMode && prevData.dimensions && prevData.dimensions.width && dimensions && dimensions.width && prevData.dimensions.width > dimensions.width;
31
+ var isPreviousImageLarger = prevData && prevData.mode === paramMode && ((_prevData$dimensions = prevData.dimensions) === null || _prevData$dimensions === void 0 ? void 0 : _prevData$dimensions.width) && (dimensions === null || dimensions === void 0 ? void 0 : dimensions.width) && prevData.dimensions.width > dimensions.width;
64
32
  var srcSet = isPreviousImageLarger ? prevData.srcSet : paramSrcSet;
65
33
  var dataURI = isPreviousImageLarger ? prevData.dataURI : paramDataURI;
66
34
  var currData = {
@@ -72,32 +40,43 @@ function incrementMediaCountSSR() {
72
40
  loadPromise: undefined,
73
41
  mode: paramMode
74
42
  };
75
- var img = script && script.parentElement && script.parentElement.querySelector("img");
76
- if (img && featureFlags["media-perf-lazy-loading-optimisation"] && mediaCountSsr < params.maxEagerLoadCount) {
77
- incrementMediaCountSSR();
78
- if (img.getAttribute("loading") === "lazy") {
43
+ var img = script === null || script === void 0 || (_script$parentElement = script.parentElement) === null || _script$parentElement === void 0 ? void 0 : _script$parentElement.querySelector("img");
44
+ globalMedia.mediaCountSsr = globalMedia.mediaCountSsr || 0;
45
+ if (img) {
46
+ if (featureFlags["media-perf-lazy-loading-optimisation"] && globalMedia.mediaCountSsr < params.maxEagerLoadCount) {
47
+ globalMedia.mediaCountSsr++;
79
48
  img.removeAttribute("loading");
49
+ currData.loading = "";
50
+ var observer = new PerformanceObserver(function (entries) {
51
+ entries.getEntries().forEach(function (entry) {
52
+ if (srcSet.includes(entry.name)) {
53
+ globalMedia.performanceEntries = globalMedia.performanceEntries || [];
54
+ globalMedia.performanceEntries.push(entry);
55
+ observer.disconnect();
56
+ }
57
+ });
58
+ });
59
+ observer.observe({
60
+ type: 'resource'
61
+ });
80
62
  }
81
- currData.loading = "";
82
- }
83
- if (img && dataURI) {
84
- img.src = dataURI;
85
- }
86
- if (img && srcSet) {
87
- img.srcset = srcSet;
88
- }
89
- currData.loadPromise = new Promise(function (resolve, reject) {
90
- if (img) {
63
+ if (dataURI) {
64
+ img.src = dataURI;
65
+ }
66
+ if (srcSet) {
67
+ img.srcset = srcSet;
68
+ }
69
+ currData.loadPromise = new Promise(function (resolve, reject) {
91
70
  // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
92
71
  img.addEventListener("load", function () {
93
- resolve(undefined);
72
+ return resolve();
94
73
  });
95
74
  // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
96
75
  img.addEventListener("error", function () {
97
- reject(new Error("Failed to load image"));
76
+ return reject(new Error("Failed to load image"));
98
77
  });
99
- }
100
- });
78
+ });
79
+ }
101
80
  mediaCardSsr[key] = isPreviousImageLarger ? prevData : currData;
102
81
  } else {
103
82
  mediaCardSsr[key] = {
@@ -106,9 +85,7 @@ function incrementMediaCountSSR() {
106
85
  error: error
107
86
  };
108
87
  }
109
-
110
- // Remove script to prevent hydration mismatch
111
- (_document$currentScri = document.currentScript) === null || _document$currentScri === void 0 || _document$currentScri.remove();
88
+ script === null || script === void 0 || script.remove();
112
89
 
113
90
  // this replace will be used as a placeholder for the stringified params to be injected into the script
114
91
  })({
@@ -115,12 +115,19 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
115
115
  });
116
116
  }
117
117
  if (!(ssrData !== null && ssrData !== void 0 && ssrData.dataURI)) {
118
- try {
119
- return (0, _getPreview.getSSRPreview)(ssr, mediaClient, identifier.id, imageURLParams, mediaBlobUrlAttrs);
120
- } catch (e) {
121
- ssrReliabilityRef.current = _objectSpread(_objectSpread({}, ssrReliabilityRef.current), {}, (0, _defineProperty2.default)({}, ssr, _objectSpread({
122
- status: 'fail'
123
- }, (0, _analytics.extractErrorInfo)(e, traceContext))));
118
+ // Only attempt SSR preview generation if:
119
+ // 1. We're on the server (ssr='server'), OR
120
+ // 2. We're on the client AND there is SSR data (meaning SSR actually happened)
121
+ // If ssr='client' but there's no SSR data, it means this is a client-side navigation
122
+ // where no SSR occurred, so we should skip SSR preview generation entirely.
123
+ if (ssr === 'server' || ssrData) {
124
+ try {
125
+ return (0, _getPreview.getSSRPreview)(ssr, mediaClient, identifier.id, imageURLParams, mediaBlobUrlAttrs);
126
+ } catch (e) {
127
+ ssrReliabilityRef.current = _objectSpread(_objectSpread({}, ssrReliabilityRef.current), {}, (0, _defineProperty2.default)({}, ssr, _objectSpread({
128
+ status: 'fail'
129
+ }, (0, _analytics.extractErrorInfo)(e, traceContext))));
130
+ }
124
131
  }
125
132
  } else {
126
133
  var _dimensions = ssrData.dimensions,
@@ -306,7 +313,7 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
306
313
  client: (0, _analytics.createFailedSSRObject)(failedPreview, traceContext)
307
314
  });
308
315
  }
309
- var isSSR = (0, _getPreview.isSSRDataPreview)(failedPreview) || ((0, _platformFeatureFlags.fg)('jfp-magma-fix-failed-ssr-preview-load') ? (0, _getPreview.isSSRClientPreview)(failedPreview) : false);
316
+ var isSSR = (0, _getPreview.isSSRDataPreview)(failedPreview) || (0, _getPreview.isSSRClientPreview)(failedPreview);
310
317
 
311
318
  // If the preview failed and it comes from server (global scope / ssrData), it means that we have reused it in client and the error counts for both: server & client.
312
319
  if (isSSR) {
@@ -6,6 +6,7 @@
6
6
 
7
7
  export const GLOBAL_MEDIA_CARD_SSR = 'mediaCardSsr';
8
8
  export const GLOBAL_MEDIA_COUNT_SSR = 'mediaCountSsr';
9
+ export const GLOBAL_MEDIA_PERFORMANCE_ENTRIES = 'performanceEntries';
9
10
  export const GLOBAL_MEDIA_NAMESPACE = '__MEDIA_INTERNAL';
10
11
  const MAX_EAGER_LOAD_COUNT = 6;
11
12
  export function getMediaGlobalScope(globalScope = window) {
@@ -47,7 +48,7 @@ const generateScript = (identifier, dataURI, mode, srcSet, dimensions, error, fe
47
48
  };
48
49
 
49
50
  // Read originalScriptCode.ts before making changes
50
- return `!function(){function e(){const e="__MEDIA_INTERNAL";return window[e]||(window[e]={}),window[e]}!function(n){var t;const i=document.currentScript,o=function(){const n=e(),t="mediaCardSsr";return n[t]||(n[t]={}),n[t]}(),r=function(){const n=e(),t="mediaCountSsr";return n[t]||(n[t]=0),n[t]}(),{key:d}=n,a=n.dataURI,s=n.mode,c=n.srcSet,{dimensions:m}=n,{error:u}=n,{featureFlags:l}=n;if(l["media-perf-uplift-mutation-fix"]){const t=o[d],f=t&&t.mode===s&&t.dimensions&&t.dimensions.width&&m&&m.width&&t.dimensions.width>m.width,w=f?t.srcSet:c,g=f?t.dataURI:a,p={dataURI:g,dimensions:m,error:u,srcSet:w,loading:"lazy",loadPromise:void 0,mode:s},S=i&&i.parentElement&&i.parentElement.querySelector("img");S&&l["media-perf-lazy-loading-optimisation"]&&r<n.maxEagerLoadCount&&(!function(){const n=e(),t="mediaCountSsr";n[t]||(n[t]=0),n[t]++}(),"lazy"===S.getAttribute("loading")&&S.removeAttribute("loading"),p.loading=""),S&&g&&(S.src=g),S&&w&&(S.srcset=w),p.loadPromise=new Promise((function(e,n){S&&(S.addEventListener("load",(function(){e(void 0)})),S.addEventListener("error",(function(){n(new Error("Failed to load image"))})))})),o[d]=f?t:p}else o[d]={dataURI:a,dimensions:m,error:u};null===(t=document.currentScript)||void 0===t||t.remove()}({replace:""})}();`.replace('{replace:""}', JSON.stringify(params));
51
+ return `!function(e){var r=document.currentScript,i=window.__MEDIA_INTERNAL=window.__MEDIA_INTERNAL||{},n=i.mediaCardSsr=i.mediaCardSsr||{},o=e.key,t=e.dataURI,d=e.mode,a=e.srcSet,s=e.dimensions,m=e.error,l=e.featureFlags;if(l["media-perf-uplift-mutation-fix"]){var u,c,f=n[o],v=f&&f.mode===d&&(null===(u=f.dimensions)||void 0===u?void 0:u.width)&&(null==s?void 0:s.width)&&f.dimensions.width>s.width,E=v?f.srcSet:a,p=v?f.dataURI:t,w={dataURI:p,dimensions:s,error:m,srcSet:E,loading:"lazy",loadPromise:void 0,mode:d},S=null==r||null===(c=r.parentElement)||void 0===c?void 0:c.querySelector("img");if(i.mediaCountSsr=i.mediaCountSsr||0,S){if(l["media-perf-lazy-loading-optimisation"]&&i.mediaCountSsr<e.maxEagerLoadCount){i.mediaCountSsr++,S.removeAttribute("loading"),w.loading="";var g=new PerformanceObserver((function(e){e.getEntries().forEach((function(e){E.includes(e.name)&&(i.performanceEntries=i.performanceEntries||[],i.performanceEntries.push(e),g.disconnect())}))}));g.observe({type:"resource"})}p&&(S.src=p),E&&(S.srcset=E),w.loadPromise=new Promise((function(e,r){S.addEventListener("load",(function(){return e()})),S.addEventListener("error",(function(){return r(new Error("Failed to load image"))}))}))}n[o]=v?f:w}else n[o]={dataURI:t,dimensions:s,error:m};null==r||r.remove()}({replace:""});`.replace('{replace:""}', JSON.stringify(params));
51
52
  };
52
53
  export const generateScriptProps = (identifier, dataURI, mode, srcSet, dimensions, error, featureFlags = {}) => ({
53
54
  dangerouslySetInnerHTML: {
@@ -4,69 +4,31 @@
4
4
  * Do not change the code without testing it in product first.
5
5
  * Steps:
6
6
  * 1. Make changes in this code
7
- * 2. Manually minify the code via https://repl.parceljs.org/ (using typescript preset with minify option)
8
- * - eg: https://repl.parceljs.org/#JTdCJTIyZmlsZXMlMjIlM0ElNUIlNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiUyQyU3QiUyMnZhbHVlJTIyJTNBJTIyJTJGKiUyMGVzbGludC1kaXNhYmxlJTIwJTQwYXRsYXNraXQlMkZwbGF0Zm9ybSUyRm5vLWRpcmVjdC1kb2N1bWVudC11c2FnZSUyMColMkYlNUNuJTVDbiUyRioqJTIwSU1QT1JUQU5UJTNBJTIwVGhpcyUyMGlzJTIwdGhlJTIwb3JpZ2luYWwlMjBjb2RlJTIwZm9yJTIwdGhlJTIwc2NyaXB0LiU1Q24lMjAqJTIwRG8lMjBub3QlMjBjaGFuZ2UlMjB0aGUlMjBjb2RlJTIwd2l0aG91dCUyMHRlc3RpbmclMjBpdCUyMGluJTIwcHJvZHVjdCUyMGZpcnN0LiU1Q24lMjAqJTIwU3RlcHMlM0ElNUNuJTIwKiUyMDEuJTIwTWFrZSUyMGNoYW5nZXMlMjBpbiUyMHRoaXMlMjBjb2RlJTVDbiUyMColMjAyLiUyME1hbnVhbGx5JTIwbWluaWZ5JTIwdGhlJTIwY29kZSUyMHZpYSUyMGh0dHBzJTNBJTJGJTJGcmVwbC5wYXJjZWxqcy5vcmclMkYlNUNuJTIwKiUyMDMuJTIwQ29weSUyMHRoZSUyMG1pbmlmaWVkJTIwY29kZSUyMGludG8lMjBnbG9iYWxTY29wZS50c3glMjByZXBsYWNpbmclMjB0aGUlMjBleGlzdGluZyUyMHN0cmluZyUyMHdoZXJlJTIwaXQlMjBzYXlzJTIwUEFTVEUlMjBIRVJFJTVDbiUyMColMjA0LiUyMFJ1biUyMHRoZSUyMHRlc3RzJTIwYW5kJTIwbWFrZSUyMHN1cmUlMjB0aGV5JTIwcGFzcyU1Q24lMjAqJTIwNS4lMjBURVNUJTIwSU4lMjBQUk9EVUNUUyUyMEJFRk9SRSUyME1FUkdJTkclNUNuJTIwKiU1Q24lMjAqJTJGJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhR2xvYmFsU2NvcGUoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMG5hbWVzcGFjZSUyMCUzRCUyMCU1QyUyMl9fTUVESUFfSU5URVJOQUwlNUMlMjIlM0IlNUNuJTIwJTIwaWYlMjAoISh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMCh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQlMjAlM0QlMjAlN0IlN0QlM0IlNUNuJTIwJTIwJTdEJTVDbiUyMCUyMHJldHVybiUyMCh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhQ2FyZFNTUigpJTIwJTdCJTVDbiUyMCUyMGNvbnN0JTIwZ2xvYmFsTWVkaWElMjAlM0QlMjBnZXRNZWRpYUdsb2JhbFNjb3BlKCklM0IlNUNuJTIwJTIwY29uc3QlMjBrZXklMjAlM0QlMjAlNUMlMjJtZWRpYUNhcmRTc3IlNUMlMjIlM0IlNUNuJTIwJTIwaWYlMjAoIWdsb2JhbE1lZGlhJTVCa2V5JTVEKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjBnbG9iYWxNZWRpYSU1QmtleSU1RCUyMCUzRCUyMCU3QiU3RCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwcmV0dXJuJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhQ291bnRTU1IoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwZ2V0TWVkaWFHbG9iYWxTY29wZSgpJTNCJTVDbiUyMCUyMGNvbnN0JTIwa2V5JTIwJTNEJTIwJTVDJTIybWVkaWFDb3VudFNzciU1QyUyMiUzQiU1Q24lMjAlMjBpZiUyMCghZ2xvYmFsTWVkaWElNUJrZXklNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMGdsb2JhbE1lZGlhJTVCa2V5JTVEJTIwJTNEJTIwMCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwcmV0dXJuJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGluY3JlbWVudE1lZGlhQ291bnRTU1IoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwZ2V0TWVkaWFHbG9iYWxTY29wZSgpJTNCJTVDbiUyMCUyMGNvbnN0JTIwa2V5JTIwJTNEJTIwJTVDJTIybWVkaWFDb3VudFNzciU1QyUyMiUzQiU1Q24lMjAlMjBpZiUyMCghZ2xvYmFsTWVkaWElNUJrZXklNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMGdsb2JhbE1lZGlhJTVCa2V5JTVEJTIwJTNEJTIwMCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlMkIlMkIlM0IlNUNuJTdEJTVDbiU1Q24oZnVuY3Rpb24lMjAocGFyYW1zJTNBJTIwYW55KSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMHNjcmlwdCUyMCUzRCUyMGRvY3VtZW50LmN1cnJlbnRTY3JpcHQlM0IlNUNuJTVDbiUyMCUyMCUyRiUyRiUyMFN0b3JlJTIwdGhlJTIwZGF0YSU1Q24lMjAlMjBjb25zdCUyMG1lZGlhQ2FyZFNzciUyMCUzRCUyMGdldE1lZGlhQ2FyZFNTUigpJTNCJTVDbiUyMCUyMGNvbnN0JTIwbWVkaWFDb3VudFNzciUyMCUzRCUyMGdldE1lZGlhQ291bnRTU1IoKSUzQiU1Q24lMjAlMjBjb25zdCUyMCU3QiUyMGtleSUyMCU3RCUyMCUzRCUyMHBhcmFtcyUzQiU1Q24lMjAlMjBjb25zdCUyMHBhcmFtRGF0YVVSSSUyMCUzRCUyMHBhcmFtcy5kYXRhVVJJJTNCJTVDbiUyMCUyMGNvbnN0JTIwcGFyYW1Nb2RlJTIwJTNEJTIwcGFyYW1zLm1vZGUlM0IlNUNuJTIwJTIwY29uc3QlMjBwYXJhbVNyY1NldCUyMCUzRCUyMHBhcmFtcy5zcmNTZXQlM0IlNUNuJTIwJTIwY29uc3QlMjAlN0IlMjBkaW1lbnNpb25zJTIwJTdEJTIwJTNEJTIwcGFyYW1zJTNCJTVDbiUyMCUyMGNvbnN0JTIwJTdCJTIwZXJyb3IlMjAlN0QlMjAlM0QlMjBwYXJhbXMlM0IlNUNuJTIwJTIwY29uc3QlMjAlN0IlMjBmZWF0dXJlRmxhZ3MlMjAlN0QlMjAlM0QlMjBwYXJhbXMlM0IlNUNuJTVDbiUyMCUyMGlmJTIwKGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtdXBsaWZ0LW11dGF0aW9uLWZpeCU1QyUyMiU1RCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBwcmV2RGF0YSUyMCUzRCUyMG1lZGlhQ2FyZFNzciU1QmtleSU1RCUzQiU1Q24lMjAlMjAlMjAlMjBjb25zdCUyMGlzUHJldmlvdXNJbWFnZUxhcmdlciUyMCUzRCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBwcmV2RGF0YSUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBwcmV2RGF0YS5tb2RlJTIwJTNEJTNEJTNEJTIwcGFyYW1Nb2RlJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMHByZXZEYXRhLmRpbWVuc2lvbnMlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwcHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkaW1lbnNpb25zJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMud2lkdGglMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwcHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUzRSUyMGRpbWVuc2lvbnMud2lkdGglM0IlNUNuJTVDbiUyMCUyMCUyMCUyMGNvbnN0JTIwc3JjU2V0JTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGEuc3JjU2V0JTIwJTNBJTIwcGFyYW1TcmNTZXQlM0IlNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBkYXRhVVJJJTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGEuZGF0YVVSSSUyMCUzQSUyMHBhcmFtRGF0YVVSSSUzQiU1Q24lNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBjdXJyRGF0YSUzQSUyMGFueSUyMCUzRCUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkYXRhVVJJJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwZXJyb3IlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc3JjU2V0JTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGxvYWRpbmclM0ElMjAlNUMlMjJsYXp5JTVDJTIyJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGxvYWRQcm9taXNlJTNBJTIwdW5kZWZpbmVkJTJDJTVDbiU1Q3QlNUN0JTVDdG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlNUNuJTIwJTIwJTIwJTIwJTdEJTNCJTVDbiU1Q24lMjAlMjAlMjAlMjBjb25zdCUyMGltZyUyMCUzRCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBzY3JpcHQlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc2NyaXB0LnBhcmVudEVsZW1lbnQlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc2NyaXB0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvciglNUMlMjJpbWclNUMlMjIpJTNCJTVDbiU1Q24lMjAlMjAlMjAlMjBpZiUyMCglNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtbGF6eS1sb2FkaW5nLW9wdGltaXNhdGlvbiU1QyUyMiU1RCUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBtZWRpYUNvdW50U3NyJTIwJTNDJTIwcGFyYW1zLm1heEVhZ2VyTG9hZENvdW50JTVDbiUyMCUyMCUyMCUyMCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW5jcmVtZW50TWVkaWFDb3VudFNTUigpJTNCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwKGltZy5nZXRBdHRyaWJ1dGUoJTVDJTIybG9hZGluZyU1QyUyMiklMjAlM0QlM0QlM0QlMjAlNUMlMjJsYXp5JTVDJTIyKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcucmVtb3ZlQXR0cmlidXRlKCU1QyUyMmxvYWRpbmclNUMlMjIpJTNCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCU3RCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBjdXJyRGF0YS5sb2FkaW5nJTIwJTNEJTIwJTVDJTIyJTVDJTIyJTNCJTVDbiUyMCUyMCUyMCUyMCU3RCU1Q24lNUNuJTIwJTIwJTIwJTIwaWYlMjAoaW1nJTIwJTI2JTI2JTIwZGF0YVVSSSklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nLnNyYyUyMCUzRCUyMGRhdGFVUkklM0IlNUNuJTIwJTIwJTIwJTIwJTdEJTVDbiUyMCUyMCUyMCUyMGlmJTIwKGltZyUyMCUyNiUyNiUyMHNyY1NldCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nLnNyY3NldCUyMCUzRCUyMHNyY1NldCUzQiU1Q24lMjAlMjAlMjAlMjAlN0QlNUNuJTVDbiUyMCUyMCUyMCUyMGN1cnJEYXRhLmxvYWRQcm9taXNlJTIwJTNEJTIwbmV3JTIwUHJvbWlzZSUzQ3ZvaWQlM0UoZnVuY3Rpb24lMjAocmVzb2x2ZSUyQyUyMHJlamVjdCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjAoaW1nKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcuYWRkRXZlbnRMaXN0ZW5lciglNUMlMjJsb2FkJTVDJTIyJTJDJTIwZnVuY3Rpb24lMjAoKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXNvbHZlKHVuZGVmaW5lZCklM0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcuYWRkRXZlbnRMaXN0ZW5lciglNUMlMjJlcnJvciU1QyUyMiUyQyUyMGZ1bmN0aW9uJTIwKCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmVqZWN0KG5ldyUyMEVycm9yKCU1QyUyMkZhaWxlZCUyMHRvJTIwbG9hZCUyMGltYWdlJTVDJTIyKSklM0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlN0QlNUNuJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lNUNuJTIwJTIwJTIwJTIwbWVkaWFDYXJkU3NyJTVCa2V5JTVEJTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGElMjAlM0ElMjBjdXJyRGF0YSUzQiU1Q24lMjAlMjAlN0QlMjBlbHNlJTIwJTdCJTVDbiUyMCUyMCUyMCUyMG1lZGlhQ2FyZFNzciU1QmtleSU1RCUyMCUzRCUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkYXRhVVJJJTNBJTIwcGFyYW1EYXRhVVJJJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwZXJyb3IlMkMlNUNuJTIwJTIwJTIwJTIwJTdEJTNCJTVDbiUyMCUyMCU3RCU1Q24lNUNuJTIwJTIwJTJGJTJGJTIwUmVtb3ZlJTIwc2NyaXB0JTIwdG8lMjBwcmV2ZW50JTIwaHlkcmF0aW9uJTIwbWlzbWF0Y2glNUNuJTIwJTIwZG9jdW1lbnQuY3VycmVudFNjcmlwdCUzRi5yZW1vdmUoKSUzQiU1Q24lNUNuJTVDdCUyRiUyRiUyMHRoaXMlMjByZXBsYWNlJTIwd2lsbCUyMGJlJTIwdXNlZCUyMGFzJTIwYSUyMHBsYWNlaG9sZGVyJTIwZm9yJTIwdGhlJTIwc3RyaW5naWZpZWQlMjBwYXJhbXMlMjB0byUyMGJlJTIwaW5qZWN0ZWQlMjBpbnRvJTIwdGhlJTIwc2NyaXB0JTVDbiU3RCkoJTdCJTIwcmVwbGFjZSUzQSUyMCU1QyUyMiU1QyUyMiUyMCU3RCklM0IlNUNuJTIyJTJDJTIyaXNFbnRyeSUyMiUzQXRydWUlN0QlNUQlNUQlMkMlMjJvcHRpb25zJTIyJTNBJTdCJTIyZW50cmllcyUyMiUzQSU1QiU1RCUyQyUyMm1pbmlmeSUyMiUzQXRydWUlMkMlMjJzY29wZUhvaXN0JTIyJTNBdHJ1ZSUyQyUyMnNvdXJjZU1hcHMlMjIlM0FmYWxzZSUyQyUyMnB1YmxpY1VybCUyMiUzQSUyMiUyRl9fcmVwbF9kaXN0JTIyJTJDJTIydGFyZ2V0VHlwZSUyMiUzQSUyMmJyb3dzZXJzJTIyJTJDJTIydGFyZ2V0RW52JTIyJTNBbnVsbCUyQyUyMm91dHB1dEZvcm1hdCUyMiUzQW51bGwlMkMlMjJobXIlMjIlM0FmYWxzZSUyQyUyMm1vZGUlMjIlM0ElMjJwcm9kdWN0aW9uJTIyJTJDJTIycmVuZGVyR3JhcGhzJTIyJTNBZmFsc2UlMkMlMjJ2aWV3U291cmNlbWFwcyUyMiUzQWZhbHNlJTJDJTIyZGVwZW5kZW5jaWVzJTIyJTNBJTVCJTVEJTJDJTIybnVtV29ya2VycyUyMiUzQTAlN0QlMkMlMjJ1c2VUYWJzJTIyJTNBdHJ1ZSUyQyUyMmJyb3dzZXJDb2xsYXBzZWQlMjIlM0ElNUIlNUQlMkMlMjJ2aWV3cyUyMiUzQSU1QiUyMiUyRnNyYyUyRmluZGV4LnRzJTIyJTVEJTJDJTIyY3VycmVudFZpZXclMjIlM0EwJTdE
7
+ * 2. Manually minify the code into: https://repl.parceljs.org/#JTdCJTIyZmlsZXMlMjIlM0ElNUIlNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiUyQyU3QiUyMnZhbHVlJTIyJTNBJTIyJTJGKiUyMGVzbGludC1kaXNhYmxlJTIwJTQwYXRsYXNraXQlMkZwbGF0Zm9ybSUyRm5vLWRpcmVjdC1kb2N1bWVudC11c2FnZSUyMColMkYlNUNuJTVDbiUyRioqJTIwSU1QT1JUQU5UJTNBJTIwVGhpcyUyMGlzJTIwdGhlJTIwb3JpZ2luYWwlMjBjb2RlJTIwZm9yJTIwdGhlJTIwc2NyaXB0LiU1Q24lMjAqJTIwRG8lMjBub3QlMjBjaGFuZ2UlMjB0aGUlMjBjb2RlJTIwd2l0aG91dCUyMHRlc3RpbmclMjBpdCUyMGluJTIwcHJvZHVjdCUyMGZpcnN0LiU1Q24lMjAqJTIwU3RlcHMlM0ElNUNuJTIwKiUyMDEuJTIwTWFrZSUyMGNoYW5nZXMlMjBpbiUyMHRoaXMlMjBjb2RlJTVDbiUyMColMjAyLiUyME1hbnVhbGx5JTIwbWluaWZ5JTIwdGhlJTIwY29kZSUyMGludG8lM0ElMjBodHRwcyUzQSUyRiUyRnJlcGwucGFyY2VsanMub3JnJTJGJTIzSlRkQ0pUSXlabWxzWlhNbE1qSWxNMEVsTlVJbE5VSWxNaklsTWtaemNtTWxNa1pwYm1SbGVDNTBjeVV5TWlVeVF5VTNRaVV5TW5aaGJIVmxKVEl5SlROQkpUSXlKVEpHS2lVeU1HVnpiR2x1ZEMxa2FYTmhZbXhsSlRJd0pUUXdZWFJzWVhOcmFYUWxNa1p3YkdGMFptOXliU1V5Um01dkxXUnBjbVZqZEMxa2IyTjFiV1Z1ZEMxMWMyRm5aU1V5TUNvbE1rWWxOVU51SlRWRGJpVXlSaW9xSlRJd1NVMVFUMUpVUVU1VUpUTkJKVEl3VkdocGN5VXlNR2x6SlRJd2RHaGxKVEl3YjNKcFoybHVZV3dsTWpCamIyUmxKVEl3Wm05eUpUSXdkR2hsSlRJd2MyTnlhWEIwTGlVMVEyNGxNakFxSlRJd1JHOGxNakJ1YjNRbE1qQmphR0Z1WjJVbE1qQjBhR1VsTWpCamIyUmxKVEl3ZDJsMGFHOTFkQ1V5TUhSbGMzUnBibWNsTWpCcGRDVXlNR2x1SlRJd2NISnZaSFZqZENVeU1HWnBjbk4wTGlVMVEyNGxNakFxSlRJd1UzUmxjSE1sTTBFbE5VTnVKVEl3S2lVeU1ERXVKVEl3VFdGclpTVXlNR05vWVc1blpYTWxNakJwYmlVeU1IUm9hWE1sTWpCamIyUmxKVFZEYmlVeU1Db2xNakF5TGlVeU1FMWhiblZoYkd4NUpUSXdiV2x1YVdaNUpUSXdkR2hsSlRJd1kyOWtaU1V5TUhacFlTVXlNR2gwZEhCekpUTkJKVEpHSlRKR2NtVndiQzV3WVhKalpXeHFjeTV2Y21jbE1rWWxOVU51SlRJd0tpVXlNRE11SlRJd1EyOXdlU1V5TUhSb1pTVXlNRzFwYm1sbWFXVmtKVEl3WTI5a1pTVXlNR2x1ZEc4bE1qQm5iRzlpWVd4VFkyOXdaUzUwYzNnbE1qQnlaWEJzWVdOcGJtY2xNakIwYUdVbE1qQmxlR2x6ZEdsdVp5VXlNSE4wY21sdVp5VXlNSGRvWlhKbEpUSXdhWFFsTWpCellYbHpKVEl3VUVGVFZFVWxNakJJUlZKRkpUVkRiaVV5TUNvbE1qQTBMaVV5TUZKMWJpVXlNSFJvWlNVeU1IUmxjM1J6SlRJd1lXNWtKVEl3YldGclpTVXlNSE4xY21VbE1qQjBhR1Y1SlRJd2NHRnpjeVUxUTI0bE1qQXFKVEl3TlM0bE1qQlVSVk5VSlRJd1NVNGxNakJRVWs5RVZVTlVVeVV5TUVKRlJrOVNSU1V5TUUxRlVrZEpUa2NsTlVOdUpUSXdLaVUxUTI0bE1qQXFKVEpHSlRWRGJpVTFRMjVtZFc1amRHbHZiaVV5TUdkbGRFMWxaR2xoUjJ4dlltRnNVMk52Y0dVb0tTVXlNQ1UzUWlVMVEyNGxNakFsTWpCamIyNXpkQ1V5TUc1aGJXVnpjR0ZqWlNVeU1DVXpSQ1V5TUNVMVF5VXlNbDlmVFVWRVNVRmZTVTVVUlZKT1FVd2xOVU1sTWpJbE0wSWxOVU51SlRJd0pUSXdhV1lsTWpBb0lTaDNhVzVrYjNjbE1qQmhjeVV5TUdGdWVTa2xOVUp1WVcxbGMzQmhZMlVsTlVRcEpUSXdKVGRDSlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ2gzYVc1a2IzY2xNakJoY3lVeU1HRnVlU2tsTlVKdVlXMWxjM0JoWTJVbE5VUWxNakFsTTBRbE1qQWxOMElsTjBRbE0wSWxOVU51SlRJd0pUSXdKVGRFSlRWRGJpVXlNQ1V5TUhKbGRIVnliaVV5TUNoM2FXNWtiM2NsTWpCaGN5VXlNR0Z1ZVNrbE5VSnVZVzFsYzNCaFkyVWxOVVFsTTBJbE5VTnVKVGRFSlRWRGJpVTFRMjVtZFc1amRHbHZiaVV5TUdkbGRFMWxaR2xoUTJGeVpGTlRVaWdwSlRJd0pUZENKVFZEYmlVeU1DVXlNR052Ym5OMEpUSXdaMnh2WW1Gc1RXVmthV0VsTWpBbE0wUWxNakJuWlhSTlpXUnBZVWRzYjJKaGJGTmpiM0JsS0NrbE0wSWxOVU51SlRJd0pUSXdZMjl1YzNRbE1qQnJaWGtsTWpBbE0wUWxNakFsTlVNbE1qSnRaV1JwWVVOaGNtUlRjM0lsTlVNbE1qSWxNMElsTlVOdUpUSXdKVEl3YVdZbE1qQW9JV2RzYjJKaGJFMWxaR2xoSlRWQ2EyVjVKVFZFS1NVeU1DVTNRaVUxUTI0bE1qQWxNakFsTWpBbE1qQm5iRzlpWVd4TlpXUnBZU1UxUW10bGVTVTFSQ1V5TUNVelJDVXlNQ1UzUWlVM1JDVXpRaVUxUTI0bE1qQWxNakFsTjBRbE5VTnVKVEl3SlRJd2NtVjBkWEp1SlRJd1oyeHZZbUZzVFdWa2FXRWxOVUpyWlhrbE5VUWxNMElsTlVOdUpUZEVKVFZEYmlVMVEyNW1kVzVqZEdsdmJpVXlNR2RsZEUxbFpHbGhRMjkxYm5SVFUxSW9LU1V5TUNVM1FpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1HZHNiMkpoYkUxbFpHbGhKVEl3SlRORUpUSXdaMlYwVFdWa2FXRkhiRzlpWVd4VFkyOXdaU2dwSlROQ0pUVkRiaVV5TUNVeU1HTnZibk4wSlRJd2EyVjVKVEl3SlRORUpUSXdKVFZESlRJeWJXVmthV0ZEYjNWdWRGTnpjaVUxUXlVeU1pVXpRaVUxUTI0bE1qQWxNakJwWmlVeU1DZ2haMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFwSlRJd0pUZENKVFZEYmlVeU1DVXlNQ1V5TUNVeU1HZHNiMkpoYkUxbFpHbGhKVFZDYTJWNUpUVkVKVEl3SlRORUpUSXdNQ1V6UWlVMVEyNGxNakFsTWpBbE4wUWxOVU51SlRJd0pUSXdjbVYwZFhKdUpUSXdaMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFsTTBJbE5VTnVKVGRFSlRWRGJpVTFRMjVtZFc1amRHbHZiaVV5TUdsdVkzSmxiV1Z1ZEUxbFpHbGhRMjkxYm5SVFUxSW9LU1V5TUNVM1FpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1HZHNiMkpoYkUxbFpHbGhKVEl3SlRORUpUSXdaMlYwVFdWa2FXRkhiRzlpWVd4VFkyOXdaU2dwSlROQ0pUVkRiaVV5TUNVeU1HTnZibk4wSlRJd2EyVjVKVEl3SlRORUpUSXdKVFZESlRJeWJXVmthV0ZEYjNWdWRGTnpjaVUxUXlVeU1pVXpRaVUxUTI0bE1qQWxNakJwWmlVeU1DZ2haMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFwSlRJd0pUZENKVFZEYmlVeU1DVXlNQ1V5TUNVeU1HZHNiMkpoYkUxbFpHbGhKVFZDYTJWNUpUVkVKVEl3SlRORUpUSXdNQ1V6UWlVMVEyNGxNakFsTWpBbE4wUWxOVU51SlRJd0pUSXdaMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFsTWtJbE1rSWxNMElsTlVOdUpUZEVKVFZEYmlVMVEyNG9ablZ1WTNScGIyNGxNakFvY0dGeVlXMXpKVE5CSlRJd1lXNTVLU1V5TUNVM1FpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1ITmpjbWx3ZENVeU1DVXpSQ1V5TUdSdlkzVnRaVzUwTG1OMWNuSmxiblJUWTNKcGNIUWxNMElsTlVOdUpUVkRiaVV5TUNVeU1DVXlSaVV5UmlVeU1GTjBiM0psSlRJd2RHaGxKVEl3WkdGMFlTVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1HMWxaR2xoUTJGeVpGTnpjaVV5TUNVelJDVXlNR2RsZEUxbFpHbGhRMkZ5WkZOVFVpZ3BKVE5DSlRWRGJpVXlNQ1V5TUdOdmJuTjBKVEl3YldWa2FXRkRiM1Z1ZEZOemNpVXlNQ1V6UkNVeU1HZGxkRTFsWkdsaFEyOTFiblJUVTFJb0tTVXpRaVUxUTI0bE1qQWxNakJqYjI1emRDVXlNQ1UzUWlVeU1HdGxlU1V5TUNVM1JDVXlNQ1V6UkNVeU1IQmhjbUZ0Y3lVelFpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1IQmhjbUZ0UkdGMFlWVlNTU1V5TUNVelJDVXlNSEJoY21GdGN5NWtZWFJoVlZKSkpUTkNKVFZEYmlVeU1DVXlNR052Ym5OMEpUSXdjR0Z5WVcxTmIyUmxKVEl3SlRORUpUSXdjR0Z5WVcxekxtMXZaR1VsTTBJbE5VTnVKVEl3SlRJd1kyOXVjM1FsTWpCd1lYSmhiVk55WTFObGRDVXlNQ1V6UkNVeU1IQmhjbUZ0Y3k1emNtTlRaWFFsTTBJbE5VTnVKVEl3SlRJd1kyOXVjM1FsTWpBbE4wSWxNakJrYVcxbGJuTnBiMjV6SlRJd0pUZEVKVEl3SlRORUpUSXdjR0Z5WVcxekpUTkNKVFZEYmlVeU1DVXlNR052Ym5OMEpUSXdKVGRDSlRJd1pYSnliM0lsTWpBbE4wUWxNakFsTTBRbE1qQndZWEpoYlhNbE0wSWxOVU51SlRJd0pUSXdZMjl1YzNRbE1qQWxOMElsTWpCbVpXRjBkWEpsUm14aFozTWxNakFsTjBRbE1qQWxNMFFsTWpCd1lYSmhiWE1sTTBJbE5VTnVKVFZEYmlVeU1DVXlNR2xtSlRJd0tHWmxZWFIxY21WR2JHRm5jeVUxUWlVMVF5VXlNbTFsWkdsaExYQmxjbVl0ZFhCc2FXWjBMVzExZEdGMGFXOXVMV1pwZUNVMVF5VXlNaVUxUkNrbE1qQWxOMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdZMjl1YzNRbE1qQndjbVYyUkdGMFlTVXlNQ1V6UkNVeU1HMWxaR2xoUTJGeVpGTnpjaVUxUW10bGVTVTFSQ1V6UWlVMVEyNGxNakFsTWpBbE1qQWxNakJqYjI1emRDVXlNR2x6VUhKbGRtbHZkWE5KYldGblpVeGhjbWRsY2lVeU1DVXpSQ1UxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpCd2NtVjJSR0YwWVNVeU1DVXlOaVV5TmlVMVEyNGxNakFsTWpBbE1qQWxNakFsTWpBbE1qQndjbVYyUkdGMFlTNXRiMlJsSlRJd0pUTkVKVE5FSlRORUpUSXdjR0Z5WVcxTmIyUmxKVEl3SlRJMkpUSTJKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUhCeVpYWkVZWFJoTG1ScGJXVnVjMmx2Ym5NbE1qQWxNallsTWpZbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjSEpsZGtSaGRHRXVaR2x0Wlc1emFXOXVjeTUzYVdSMGFDVXlNQ1V5TmlVeU5pVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJrYVcxbGJuTnBiMjV6SlRJd0pUSTJKVEkySlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HUnBiV1Z1YzJsdmJuTXVkMmxrZEdnbE1qQWxNallsTWpZbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjSEpsZGtSaGRHRXVaR2x0Wlc1emFXOXVjeTUzYVdSMGFDVXlNQ1V6UlNVeU1HUnBiV1Z1YzJsdmJuTXVkMmxrZEdnbE0wSWxOVU51SlRWRGJpVXlNQ1V5TUNVeU1DVXlNR052Ym5OMEpUSXdjM0pqVTJWMEpUSXdKVE5FSlRJd2FYTlFjbVYyYVc5MWMwbHRZV2RsVEdGeVoyVnlKVEl3SlROR0pUSXdjSEpsZGtSaGRHRXVjM0pqVTJWMEpUSXdKVE5CSlRJd2NHRnlZVzFUY21OVFpYUWxNMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdZMjl1YzNRbE1qQmtZWFJoVlZKSkpUSXdKVE5FSlRJd2FYTlFjbVYyYVc5MWMwbHRZV2RsVEdGeVoyVnlKVEl3SlROR0pUSXdjSEpsZGtSaGRHRXVaR0YwWVZWU1NTVXlNQ1V6UVNVeU1IQmhjbUZ0UkdGMFlWVlNTU1V6UWlVMVEyNGxOVU51SlRJd0pUSXdKVEl3SlRJd1kyOXVjM1FsTWpCamRYSnlSR0YwWVNVelFTVXlNR0Z1ZVNVeU1DVXpSQ1V5TUNVM1FpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJrWVhSaFZWSkpKVEpESlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HUnBiV1Z1YzJsdmJuTWxNa01sTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd1pYSnliM0lsTWtNbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjM0pqVTJWMEpUSkRKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUd4dllXUnBibWNsTTBFbE1qQWxOVU1sTWpKc1lYcDVKVFZESlRJeUpUSkRKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUd4dllXUlFjbTl0YVhObEpUTkJKVEl3ZFc1a1pXWnBibVZrSlRKREpUVkRiaVUxUTNRbE5VTjBKVFZEZEcxdlpHVWxNMEVsTWpCd1lYSmhiVTF2WkdVbE1rTWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUZEVKVE5DSlRWRGJpVTFRMjRsTWpBbE1qQWxNakFsTWpCamIyNXpkQ1V5TUdsdFp5VXlNQ1V6UkNVMVEyNGxNakFsTWpBbE1qQWxNakFsTWpBbE1qQnpZM0pwY0hRbE1qQWxNallsTWpZbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjMk55YVhCMExuQmhjbVZ1ZEVWc1pXMWxiblFsTWpBbE1qWWxNallsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd2MyTnlhWEIwTG5CaGNtVnVkRVZzWlcxbGJuUXVjWFZsY25sVFpXeGxZM1J2Y2lnbE5VTWxNakpwYldjbE5VTWxNaklwSlROQ0pUVkRiaVUxUTI0bE1qQWxNakFsTWpBbE1qQnBaaVV5TUNnbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdhVzFuSlRJd0pUSTJKVEkySlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HWmxZWFIxY21WR2JHRm5jeVUxUWlVMVF5VXlNbTFsWkdsaExYQmxjbVl0YkdGNmVTMXNiMkZrYVc1bkxXOXdkR2x0YVhOaGRHbHZiaVUxUXlVeU1pVTFSQ1V5TUNVeU5pVXlOaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpCdFpXUnBZVU52ZFc1MFUzTnlKVEl3SlROREpUSXdjR0Z5WVcxekxtMWhlRVZoWjJWeVRHOWhaRU52ZFc1MEpUVkRiaVV5TUNVeU1DVXlNQ1V5TUNrbE1qQWxOMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd2FXNWpjbVZ0Wlc1MFRXVmthV0ZEYjNWdWRGTlRVaWdwSlROQ0pUVkRiaVV5TUNVeU1DVXlNQ1V5TUNVeU1DVXlNR2xtSlRJd0tHbHRaeTVuWlhSQmRIUnlhV0oxZEdVb0pUVkRKVEl5Ykc5aFpHbHVaeVUxUXlVeU1pa2xNakFsTTBRbE0wUWxNMFFsTWpBbE5VTWxNakpzWVhwNUpUVkRKVEl5S1NVeU1DVTNRaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJwYldjdWNtVnRiM1psUVhSMGNtbGlkWFJsS0NVMVF5VXlNbXh2WVdScGJtY2xOVU1sTWpJcEpUTkNKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVM1JDVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJqZFhKeVJHRjBZUzVzYjJGa2FXNW5KVEl3SlRORUpUSXdKVFZESlRJeUpUVkRKVEl5SlROQ0pUVkRiaVV5TUNVeU1DVXlNQ1V5TUNVM1JDVTFRMjRsTlVOdUpUSXdKVEl3SlRJd0pUSXdhV1lsTWpBb2FXMW5KVEl3SlRJMkpUSTJKVEl3WkdGMFlWVlNTU2tsTWpBbE4wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3YVcxbkxuTnlZeVV5TUNVelJDVXlNR1JoZEdGVlVra2xNMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVGRFSlRWRGJpVXlNQ1V5TUNVeU1DVXlNR2xtSlRJd0tHbHRaeVV5TUNVeU5pVXlOaVV5TUhOeVkxTmxkQ2tsTWpBbE4wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3YVcxbkxuTnlZM05sZENVeU1DVXpSQ1V5TUhOeVkxTmxkQ1V6UWlVMVEyNGxNakFsTWpBbE1qQWxNakFsTjBRbE5VTnVKVFZEYmlVeU1DVXlNQ1V5TUNVeU1HTjFjbkpFWVhSaExteHZZV1JRY205dGFYTmxKVEl3SlRORUpUSXdibVYzSlRJd1VISnZiV2x6WlNVelEzWnZhV1FsTTBVb1puVnVZM1JwYjI0bE1qQW9jbVZ6YjJ4MlpTVXlReVV5TUhKbGFtVmpkQ2tsTWpBbE4wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3YVdZbE1qQW9hVzFuS1NVeU1DVTNRaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWtZbE1rWWxNakJsYzJ4cGJuUXRaR2x6WVdKc1pTMXVaWGgwTFd4cGJtVWxNakFsTkRCeVpYQnZKVEpHYVc1MFpYSnVZV3dsTWtaa2IyMHRaWFpsYm5SekpUSkdibTh0ZFc1ellXWmxMV1YyWlc1MExXeHBjM1JsYm1WeWN5VTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQnBiV2N1WVdSa1JYWmxiblJNYVhOMFpXNWxjaWdsTlVNbE1qSnNiMkZrSlRWREpUSXlKVEpESlRJd1puVnVZM1JwYjI0bE1qQW9LU1V5TUNVM1FpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpCeVpYTnZiSFpsS0hWdVpHVm1hVzVsWkNrbE0wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVGRFS1NVelFpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNa1lsTWtZbE1qQmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VbE1qQWxOREJ5WlhCdkpUSkdhVzUwWlhKdVlXd2xNa1prYjIwdFpYWmxiblJ6SlRKR2JtOHRkVzV6WVdabExXVjJaVzUwTFd4cGMzUmxibVZ5Y3lVMVEyNGxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpCcGJXY3VZV1JrUlhabGJuUk1hWE4wWlc1bGNpZ2xOVU1sTWpKbGNuSnZjaVUxUXlVeU1pVXlReVV5TUdaMWJtTjBhVzl1SlRJd0tDa2xNakFsTjBJbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3Y21WcVpXTjBLRzVsZHlVeU1FVnljbTl5S0NVMVF5VXlNa1poYVd4bFpDVXlNSFJ2SlRJd2JHOWhaQ1V5TUdsdFlXZGxKVFZESlRJeUtTa2xNMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3SlRkRUtTVXpRaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE4wUWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUZEVLU1V6UWlVMVEyNGxOVU51SlRJd0pUSXdKVEl3SlRJd2JXVmthV0ZEWVhKa1UzTnlKVFZDYTJWNUpUVkVKVEl3SlRORUpUSXdhWE5RY21WMmFXOTFjMGx0WVdkbFRHRnlaMlZ5SlRJd0pUTkdKVEl3Y0hKbGRrUmhkR0VsTWpBbE0wRWxNakJqZFhKeVJHRjBZU1V6UWlVMVEyNGxNakFsTWpBbE4wUWxNakJsYkhObEpUSXdKVGRDSlRWRGJpVXlNQ1V5TUNVeU1DVXlNRzFsWkdsaFEyRnlaRk56Y2lVMVFtdGxlU1UxUkNVeU1DVXpSQ1V5TUNVM1FpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJrWVhSaFZWSkpKVE5CSlRJd2NHRnlZVzFFWVhSaFZWSkpKVEpESlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HUnBiV1Z1YzJsdmJuTWxNa01sTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd1pYSnliM0lsTWtNbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRkRUpUTkNKVFZEYmlVeU1DVXlNQ1UzUkNVMVEyNGxOVU51SlRJd0pUSXdKVEpHSlRKR0pUSXdVbVZ0YjNabEpUSXdjMk55YVhCMEpUSXdkRzhsTWpCd2NtVjJaVzUwSlRJd2FIbGtjbUYwYVc5dUpUSXdiV2x6YldGMFkyZ2xOVU51SlRJd0pUSXdaRzlqZFcxbGJuUXVZM1Z5Y21WdWRGTmpjbWx3ZENVelJpNXlaVzF2ZG1Vb0tTVXpRaVUxUTI0bE5VTnVKVFZEZENVeVJpVXlSaVV5TUhSb2FYTWxNakJ5WlhCc1lXTmxKVEl3ZDJsc2JDVXlNR0psSlRJd2RYTmxaQ1V5TUdGekpUSXdZU1V5TUhCc1lXTmxhRzlzWkdWeUpUSXdabTl5SlRJd2RHaGxKVEl3YzNSeWFXNW5hV1pwWldRbE1qQndZWEpoYlhNbE1qQjBieVV5TUdKbEpUSXdhVzVxWldOMFpXUWxNakJwYm5SdkpUSXdkR2hsSlRJd2MyTnlhWEIwSlRWRGJpVTNSQ2tvSlRkQ0pUSXdjbVZ3YkdGalpTVXpRU1V5TUNVMVF5VXlNaVUxUXlVeU1pVXlNQ1UzUkNrbE0wSWxOVU51SlRJeUpUSkRKVEl5YVhORmJuUnllU1V5TWlVelFYUnlkV1VsTjBRbE5VUWxOVVFsTWtNbE1qSnZjSFJwYjI1ekpUSXlKVE5CSlRkQ0pUSXlaVzUwY21sbGN5VXlNaVV6UVNVMVFpVTFSQ1V5UXlVeU1tMXBibWxtZVNVeU1pVXpRWFJ5ZFdVbE1rTWxNakp6WTI5d1pVaHZhWE4wSlRJeUpUTkJkSEoxWlNVeVF5VXlNbk52ZFhKalpVMWhjSE1sTWpJbE0wRm1ZV3h6WlNVeVF5VXlNbkIxWW14cFkxVnliQ1V5TWlVelFTVXlNaVV5Umw5ZmNtVndiRjlrYVhOMEpUSXlKVEpESlRJeWRHRnlaMlYwVkhsd1pTVXlNaVV6UVNVeU1tSnliM2R6WlhKekpUSXlKVEpESlRJeWRHRnlaMlYwUlc1MkpUSXlKVE5CYm5Wc2JDVXlReVV5TW05MWRIQjFkRVp2Y20xaGRDVXlNaVV6UVc1MWJHd2xNa01sTWpKb2JYSWxNaklsTTBGbVlXeHpaU1V5UXlVeU1tMXZaR1VsTWpJbE0wRWxNakp3Y205a2RXTjBhVzl1SlRJeUpUSkRKVEl5Y21WdVpHVnlSM0poY0doekpUSXlKVE5CWm1Gc2MyVWxNa01sTWpKMmFXVjNVMjkxY21ObGJXRndjeVV5TWlVelFXWmhiSE5sSlRKREpUSXlaR1Z3Wlc1a1pXNWphV1Z6SlRJeUpUTkJKVFZDSlRWRUpUSkRKVEl5Ym5WdFYyOXlhMlZ5Y3lVeU1pVXpRVEFsTjBRbE1rTWxNakoxYzJWVVlXSnpKVEl5SlROQmRISjFaU1V5UXlVeU1tSnliM2R6WlhKRGIyeHNZWEJ6WldRbE1qSWxNMEVsTlVJbE5VUWxNa01sTWpKMmFXVjNjeVV5TWlVelFTVTFRaVV5TWlVeVJuTnlZeVV5Um1sdVpHVjRMblJ6SlRJeUpUVkVKVEpESlRJeVkzVnljbVZ1ZEZacFpYY2xNaklsTTBFd0pUZEUlNUNuJTIwKiUyMDMuJTIwQ29weSUyMHRoZSUyMG1pbmlmaWVkJTIwY29kZSUyMGludG8lMjBnbG9iYWxTY29wZS50c3glMjByZXBsYWNpbmclMjB0aGUlMjBleGlzdGluZyUyMHN0cmluZyUyMHdoZXJlJTIwaXQlMjBzYXlzJTIwUEFTVEUlMjBIRVJFJTVDbiUyMColMjA0LiUyMFJ1biUyMHRoZSUyMHRlc3RzJTIwYW5kJTIwbWFrZSUyMHN1cmUlMjB0aGV5JTIwcGFzcyU1Q24lMjAqJTIwNS4lMjBURVNUJTIwSU4lMjBQUk9EVUNUUyUyMEJFRk9SRSUyME1FUkdJTkclNUNuJTIwKiU1Q24lMjAqJTJGJTVDbiU1Q24oZnVuY3Rpb24lMjAocGFyYW1zJTNBJTIwYW55KSUyMCU3QiU1Q24lNUN0Y29uc3QlMjBzY3JpcHQlMjAlM0QlMjBkb2N1bWVudC5jdXJyZW50U2NyaXB0JTNCJTVDbiU1Q3Rjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwKCh3aW5kb3clMjBhcyUyMGFueSkuX19NRURJQV9JTlRFUk5BTCUyMCUzRCUyMCh3aW5kb3clMjBhcyUyMGFueSkuX19NRURJQV9JTlRFUk5BTCUyMCU3QyU3QyUyMCU3QiU3RCklM0IlNUNuJTVDdGNvbnN0JTIwbWVkaWFDYXJkU3NyJTIwJTNEJTIwKGdsb2JhbE1lZGlhLm1lZGlhQ2FyZFNzciUyMCUzRCUyMGdsb2JhbE1lZGlhLm1lZGlhQ2FyZFNzciUyMCU3QyU3QyUyMCU3QiU3RCklM0IlNUNuJTVDdGNvbnN0JTIwJTdCJTIwa2V5JTJDJTIwZGF0YVVSSSUzQSUyMHBhcmFtRGF0YVVSSSUyQyUyMG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlMjBzcmNTZXQlM0ElMjBwYXJhbVNyY1NldCUyQyUyMGRpbWVuc2lvbnMlMkMlMjBlcnJvciUyQyUyMGZlYXR1cmVGbGFncyUyMCU3RCUyMCUzRCUyMHBhcmFtcyUzQiU1Q24lNUNuJTVDdGlmJTIwKGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtdXBsaWZ0LW11dGF0aW9uLWZpeCU1QyUyMiU1RCklMjAlN0IlNUNuJTVDdCU1Q3Rjb25zdCUyMHByZXZEYXRhJTIwJTNEJTIwbWVkaWFDYXJkU3NyJTVCa2V5JTVEJTNCJTVDbiU1Q3QlNUN0Y29uc3QlMjBpc1ByZXZpb3VzSW1hZ2VMYXJnZXIlMjAlM0QlNUNuJTVDdCU1Q3QlNUN0cHJldkRhdGElMjAlMjYlMjYlNUNuJTVDdCU1Q3QlNUN0cHJldkRhdGEubW9kZSUyMCUzRCUzRCUzRCUyMHBhcmFtTW9kZSUyMCUyNiUyNiU1Q24lNUN0JTVDdCU1Q3RwcmV2RGF0YS5kaW1lbnNpb25zJTNGLndpZHRoJTIwJTI2JTI2JTVDbiU1Q3QlNUN0JTVDdGRpbWVuc2lvbnMlM0Yud2lkdGglMjAlMjYlMjYlNUNuJTVDdCU1Q3QlNUN0cHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUzRSUyMGRpbWVuc2lvbnMud2lkdGglM0IlNUNuJTVDbiU1Q3QlNUN0Y29uc3QlMjBzcmNTZXQlMjAlM0QlMjBpc1ByZXZpb3VzSW1hZ2VMYXJnZXIlMjAlM0YlMjBwcmV2RGF0YS5zcmNTZXQlMjAlM0ElMjBwYXJhbVNyY1NldCUzQiU1Q24lNUN0JTVDdGNvbnN0JTIwZGF0YVVSSSUyMCUzRCUyMGlzUHJldmlvdXNJbWFnZUxhcmdlciUyMCUzRiUyMHByZXZEYXRhLmRhdGFVUkklMjAlM0ElMjBwYXJhbURhdGFVUkklM0IlNUNuJTVDbiU1Q3QlNUN0Y29uc3QlMjBjdXJyRGF0YSUzQSUyMGFueSUyMCUzRCUyMCU3QiU1Q24lNUN0JTVDdCU1Q3RkYXRhVVJJJTJDJTVDbiU1Q3QlNUN0JTVDdGRpbWVuc2lvbnMlMkMlNUNuJTVDdCU1Q3QlNUN0ZXJyb3IlMkMlNUNuJTVDdCU1Q3QlNUN0c3JjU2V0JTJDJTVDbiU1Q3QlNUN0JTVDdGxvYWRpbmclM0ElMjAlNUMlMjJsYXp5JTVDJTIyJTJDJTVDbiU1Q3QlNUN0JTVDdGxvYWRQcm9taXNlJTNBJTIwdW5kZWZpbmVkJTJDJTVDbiU1Q3QlNUN0JTVDdG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlNUNuJTVDdCU1Q3QlN0QlM0IlNUNuJTVDbiU1Q3QlNUN0Y29uc3QlMjBpbWclMjAlM0QlMjBzY3JpcHQlM0YucGFyZW50RWxlbWVudCUzRi5xdWVyeVNlbGVjdG9yKCU1QyUyMmltZyU1QyUyMiklM0IlNUNuJTVDbiU1Q3QlNUN0Z2xvYmFsTWVkaWEubWVkaWFDb3VudFNzciUyMCUzRCUyMGdsb2JhbE1lZGlhLm1lZGlhQ291bnRTc3IlMjAlN0MlN0MlMjAwJTNCJTVDbiU1Q24lNUN0JTVDdGlmJTIwKGltZyklMjAlN0IlNUNuJTVDdCU1Q3QlNUN0aWYlMjAoJTVDbiU1Q3QlNUN0JTVDdCU1Q3RmZWF0dXJlRmxhZ3MlNUIlNUMlMjJtZWRpYS1wZXJmLWxhenktbG9hZGluZy1vcHRpbWlzYXRpb24lNUMlMjIlNUQlMjAlMjYlMjYlNUNuJTVDdCU1Q3QlNUN0JTVDdGdsb2JhbE1lZGlhLm1lZGlhQ291bnRTc3IlMjAlM0MlMjBwYXJhbXMubWF4RWFnZXJMb2FkQ291bnQlNUNuJTVDdCU1Q3QlNUN0KSUyMCU3QiU1Q24lNUN0JTVDdCU1Q3QlNUN0Z2xvYmFsTWVkaWEubWVkaWFDb3VudFNzciUyQiUyQiUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0aW1nLnJlbW92ZUF0dHJpYnV0ZSglNUMlMjJsb2FkaW5nJTVDJTIyKSUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0Y3VyckRhdGEubG9hZGluZyUyMCUzRCUyMCU1QyUyMiU1QyUyMiUzQiU1Q24lNUNuJTVDdCU1Q3QlNUN0JTVDdGNvbnN0JTIwb2JzZXJ2ZXIlMjAlM0QlMjBuZXclMjBQZXJmb3JtYW5jZU9ic2VydmVyKChlbnRyaWVzKSUyMCUzRCUzRSUyMCU3QiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdGVudHJpZXMuZ2V0RW50cmllcygpLmZvckVhY2goKGVudHJ5KSUyMCUzRCUzRSUyMCU3QiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdCU1Q3RpZiUyMChzcmNTZXQuaW5jbHVkZXMoZW50cnkubmFtZSkpJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdCU1Q3QlNUN0JTVDdCU1Q3RnbG9iYWxNZWRpYS5wZXJmb3JtYW5jZUVudHJpZXMlMjAlM0QlMjBnbG9iYWxNZWRpYS5wZXJmb3JtYW5jZUVudHJpZXMlMjAlN0MlN0MlMjAlNUIlNUQlM0IlNUNuJTVDdCU1Q3QlNUN0JTVDdCU1Q3QlNUN0JTVDdGdsb2JhbE1lZGlhLnBlcmZvcm1hbmNlRW50cmllcy5wdXNoKGVudHJ5KSUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdCU1Q3QlNUN0b2JzZXJ2ZXIuZGlzY29ubmVjdCgpJTNCJTVDbiU1Q3QlNUN0JTVDdCU1Q3QlNUN0JTVDdCU3RCU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdCU3RCklM0IlNUNuJTVDdCU1Q3QlNUN0JTVDdCU3RCklM0IlNUNuJTVDdCU1Q3QlNUN0JTVDdG9ic2VydmVyLm9ic2VydmUoJTdCJTIwdHlwZSUzQSUyMCdyZXNvdXJjZSclMjAlN0QpJTNCJTVDbiU1Q3QlNUN0JTVDdCU3RCU1Q24lNUNuJTVDdCU1Q3QlNUN0aWYlMjAoZGF0YVVSSSklMjAlN0IlNUNuJTVDdCU1Q3QlNUN0JTVDdGltZy5zcmMlMjAlM0QlMjBkYXRhVVJJJTNCJTVDbiU1Q3QlNUN0JTVDdCU3RCU1Q24lNUN0JTVDdCU1Q3RpZiUyMChzcmNTZXQpJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdCU1Q3RpbWcuc3Jjc2V0JTIwJTNEJTIwc3JjU2V0JTNCJTVDbiU1Q3QlNUN0JTVDdCU3RCU1Q24lNUN0JTVDdCU1Q3RjdXJyRGF0YS5sb2FkUHJvbWlzZSUyMCUzRCUyMG5ldyUyMFByb21pc2UlM0N2b2lkJTNFKGZ1bmN0aW9uJTIwKHJlc29sdmUlMkMlMjByZWplY3QpJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdCU1Q3QlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lNUN0JTVDdCU1Q3QlNUN0aW1nLmFkZEV2ZW50TGlzdGVuZXIoJTVDJTIybG9hZCU1QyUyMiUyQyUyMCgpJTIwJTNEJTNFJTIwcmVzb2x2ZSgpKSUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTJGJTJGJTIwZXNsaW50LWRpc2FibGUtbmV4dC1saW5lJTIwJTQwcmVwbyUyRmludGVybmFsJTJGZG9tLWV2ZW50cyUyRm5vLXVuc2FmZS1ldmVudC1saXN0ZW5lcnMlNUNuJTVDdCU1Q3QlNUN0JTVDdGltZy5hZGRFdmVudExpc3RlbmVyKCU1QyUyMmVycm9yJTVDJTIyJTJDJTIwKCklMjAlM0QlM0UlMjByZWplY3QobmV3JTIwRXJyb3IoJTVDJTIyRmFpbGVkJTIwdG8lMjBsb2FkJTIwaW1hZ2UlNUMlMjIpKSklM0IlNUNuJTVDdCU1Q3QlNUN0JTdEKSUzQiU1Q24lNUN0JTVDdCU3RCU1Q24lNUNuJTVDdCU1Q3RtZWRpYUNhcmRTc3IlNUJrZXklNUQlMjAlM0QlMjBpc1ByZXZpb3VzSW1hZ2VMYXJnZXIlMjAlM0YlMjBwcmV2RGF0YSUyMCUzQSUyMGN1cnJEYXRhJTNCJTVDbiU1Q3QlN0QlMjBlbHNlJTIwJTdCJTVDbiU1Q3QlNUN0bWVkaWFDYXJkU3NyJTVCa2V5JTVEJTIwJTNEJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdGRhdGFVUkklM0ElMjBwYXJhbURhdGFVUkklMkMlNUNuJTVDdCU1Q3QlNUN0ZGltZW5zaW9ucyUyQyU1Q24lNUN0JTVDdCU1Q3RlcnJvciUyQyU1Q24lNUN0JTVDdCU3RCUzQiU1Q24lNUN0JTdEJTVDbiU1Q24lNUN0c2NyaXB0JTNGLnJlbW92ZSgpJTNCJTVDbiU1Q24lNUN0JTJGJTJGJTIwdGhpcyUyMHJlcGxhY2UlMjB3aWxsJTIwYmUlMjB1c2VkJTIwYXMlMjBhJTIwcGxhY2Vob2xkZXIlMjBmb3IlMjB0aGUlMjBzdHJpbmdpZmllZCUyMHBhcmFtcyUyMHRvJTIwYmUlMjBpbmplY3RlZCUyMGludG8lMjB0aGUlMjBzY3JpcHQlNUNuJTdEKSglN0IlMjByZXBsYWNlJTNBJTIwJTVDJTIyJTVDJTIyJTIwJTdEKSUzQiU1Q24lMjIlMkMlMjJpc0VudHJ5JTIyJTNBdHJ1ZSU3RCU1RCU1RCUyQyUyMm9wdGlvbnMlMjIlM0ElN0IlMjJlbnRyaWVzJTIyJTNBJTVCJTVEJTJDJTIybWluaWZ5JTIyJTNBdHJ1ZSUyQyUyMnNjb3BlSG9pc3QlMjIlM0F0cnVlJTJDJTIyc291cmNlTWFwcyUyMiUzQWZhbHNlJTJDJTIycHVibGljVXJsJTIyJTNBJTIyJTJGX19yZXBsX2Rpc3QlMjIlMkMlMjJ0YXJnZXRUeXBlJTIyJTNBJTIyYnJvd3NlcnMlMjIlMkMlMjJ0YXJnZXRFbnYlMjIlM0ElMjJzaW5jZSUyMDIwMTUlMjIlMkMlMjJvdXRwdXRGb3JtYXQlMjIlM0FudWxsJTJDJTIyaG1yJTIyJTNBZmFsc2UlMkMlMjJtb2RlJTIyJTNBJTIycHJvZHVjdGlvbiUyMiUyQyUyMnJlbmRlckdyYXBocyUyMiUzQWZhbHNlJTJDJTIydmlld1NvdXJjZW1hcHMlMjIlM0FmYWxzZSUyQyUyMmRlcGVuZGVuY2llcyUyMiUzQSU1QiU1RCUyQyUyMm51bVdvcmtlcnMlMjIlM0EwJTdEJTJDJTIydXNlVGFicyUyMiUzQXRydWUlMkMlMjJicm93c2VyQ29sbGFwc2VkJTIyJTNBJTVCJTVEJTJDJTIydmlld3MlMjIlM0ElNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiU1RCUyQyUyMmN1cnJlbnRWaWV3JTIyJTNBMCU3RA==
8
+ * Ensure the settings have: Minification on and
9
9
  * 3. Copy the minified code into globalScope.tsx replacing the existing string where it says PASTE HERE
10
10
  * 4. Run the tests and make sure they pass
11
11
  * 5. TEST IN PRODUCTS BEFORE MERGING
12
12
  *
13
13
  */
14
14
 
15
- function getMediaGlobalScope() {
16
- const namespace = "__MEDIA_INTERNAL";
17
- if (!window[namespace]) {
18
- window[namespace] = {};
19
- }
20
- return window[namespace];
21
- }
22
- function getMediaCardSSR() {
23
- const globalMedia = getMediaGlobalScope();
24
- const key = "mediaCardSsr";
25
- if (!globalMedia[key]) {
26
- globalMedia[key] = {};
27
- }
28
- return globalMedia[key];
29
- }
30
- function getMediaCountSSR() {
31
- const globalMedia = getMediaGlobalScope();
32
- const key = "mediaCountSsr";
33
- if (!globalMedia[key]) {
34
- globalMedia[key] = 0;
35
- }
36
- return globalMedia[key];
37
- }
38
- function incrementMediaCountSSR() {
39
- const globalMedia = getMediaGlobalScope();
40
- const key = "mediaCountSsr";
41
- if (!globalMedia[key]) {
42
- globalMedia[key] = 0;
43
- }
44
- globalMedia[key]++;
45
- }
46
- (function (params, _document$currentScri) {
15
+ (function (params) {
47
16
  const script = document.currentScript;
48
-
49
- // Store the data
50
- const mediaCardSsr = getMediaCardSSR();
51
- const mediaCountSsr = getMediaCountSSR();
52
- const {
53
- key
54
- } = params;
55
- const paramDataURI = params.dataURI;
56
- const paramMode = params.mode;
57
- const paramSrcSet = params.srcSet;
58
- const {
59
- dimensions
60
- } = params;
61
- const {
62
- error
63
- } = params;
17
+ const globalMedia = window.__MEDIA_INTERNAL = window.__MEDIA_INTERNAL || {};
18
+ const mediaCardSsr = globalMedia.mediaCardSsr = globalMedia.mediaCardSsr || {};
64
19
  const {
20
+ key,
21
+ dataURI: paramDataURI,
22
+ mode: paramMode,
23
+ srcSet: paramSrcSet,
24
+ dimensions,
25
+ error,
65
26
  featureFlags
66
27
  } = params;
67
28
  if (featureFlags["media-perf-uplift-mutation-fix"]) {
29
+ var _prevData$dimensions, _script$parentElement;
68
30
  const prevData = mediaCardSsr[key];
69
- const isPreviousImageLarger = prevData && prevData.mode === paramMode && prevData.dimensions && prevData.dimensions.width && dimensions && dimensions.width && prevData.dimensions.width > dimensions.width;
31
+ const isPreviousImageLarger = prevData && prevData.mode === paramMode && ((_prevData$dimensions = prevData.dimensions) === null || _prevData$dimensions === void 0 ? void 0 : _prevData$dimensions.width) && (dimensions === null || dimensions === void 0 ? void 0 : dimensions.width) && prevData.dimensions.width > dimensions.width;
70
32
  const srcSet = isPreviousImageLarger ? prevData.srcSet : paramSrcSet;
71
33
  const dataURI = isPreviousImageLarger ? prevData.dataURI : paramDataURI;
72
34
  const currData = {
@@ -78,32 +40,39 @@ function incrementMediaCountSSR() {
78
40
  loadPromise: undefined,
79
41
  mode: paramMode
80
42
  };
81
- const img = script && script.parentElement && script.parentElement.querySelector("img");
82
- if (img && featureFlags["media-perf-lazy-loading-optimisation"] && mediaCountSsr < params.maxEagerLoadCount) {
83
- incrementMediaCountSSR();
84
- if (img.getAttribute("loading") === "lazy") {
43
+ const img = script === null || script === void 0 ? void 0 : (_script$parentElement = script.parentElement) === null || _script$parentElement === void 0 ? void 0 : _script$parentElement.querySelector("img");
44
+ globalMedia.mediaCountSsr = globalMedia.mediaCountSsr || 0;
45
+ if (img) {
46
+ if (featureFlags["media-perf-lazy-loading-optimisation"] && globalMedia.mediaCountSsr < params.maxEagerLoadCount) {
47
+ globalMedia.mediaCountSsr++;
85
48
  img.removeAttribute("loading");
86
- }
87
- currData.loading = "";
88
- }
89
- if (img && dataURI) {
90
- img.src = dataURI;
91
- }
92
- if (img && srcSet) {
93
- img.srcset = srcSet;
94
- }
95
- currData.loadPromise = new Promise(function (resolve, reject) {
96
- if (img) {
97
- // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
98
- img.addEventListener("load", function () {
99
- resolve(undefined);
49
+ currData.loading = "";
50
+ const observer = new PerformanceObserver(entries => {
51
+ entries.getEntries().forEach(entry => {
52
+ if (srcSet.includes(entry.name)) {
53
+ globalMedia.performanceEntries = globalMedia.performanceEntries || [];
54
+ globalMedia.performanceEntries.push(entry);
55
+ observer.disconnect();
56
+ }
57
+ });
100
58
  });
101
- // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
102
- img.addEventListener("error", function () {
103
- reject(new Error("Failed to load image"));
59
+ observer.observe({
60
+ type: 'resource'
104
61
  });
105
62
  }
106
- });
63
+ if (dataURI) {
64
+ img.src = dataURI;
65
+ }
66
+ if (srcSet) {
67
+ img.srcset = srcSet;
68
+ }
69
+ currData.loadPromise = new Promise(function (resolve, reject) {
70
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
71
+ img.addEventListener("load", () => resolve());
72
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
73
+ img.addEventListener("error", () => reject(new Error("Failed to load image")));
74
+ });
75
+ }
107
76
  mediaCardSsr[key] = isPreviousImageLarger ? prevData : currData;
108
77
  } else {
109
78
  mediaCardSsr[key] = {
@@ -112,9 +81,7 @@ function incrementMediaCountSSR() {
112
81
  error
113
82
  };
114
83
  }
115
-
116
- // Remove script to prevent hydration mismatch
117
- (_document$currentScri = document.currentScript) === null || _document$currentScri === void 0 ? void 0 : _document$currentScri.remove();
84
+ script === null || script === void 0 ? void 0 : script.remove();
118
85
 
119
86
  // this replace will be used as a placeholder for the stringified params to be injected into the script
120
87
  })({
@@ -86,16 +86,23 @@ export const useFilePreview = ({
86
86
  };
87
87
  }
88
88
  if (!(ssrData !== null && ssrData !== void 0 && ssrData.dataURI)) {
89
- try {
90
- return getSSRPreview(ssr, mediaClient, identifier.id, imageURLParams, mediaBlobUrlAttrs);
91
- } catch (e) {
92
- ssrReliabilityRef.current = {
93
- ...ssrReliabilityRef.current,
94
- [ssr]: {
95
- status: 'fail',
96
- ...extractErrorInfo(e, traceContext)
97
- }
98
- };
89
+ // Only attempt SSR preview generation if:
90
+ // 1. We're on the server (ssr='server'), OR
91
+ // 2. We're on the client AND there is SSR data (meaning SSR actually happened)
92
+ // If ssr='client' but there's no SSR data, it means this is a client-side navigation
93
+ // where no SSR occurred, so we should skip SSR preview generation entirely.
94
+ if (ssr === 'server' || ssrData) {
95
+ try {
96
+ return getSSRPreview(ssr, mediaClient, identifier.id, imageURLParams, mediaBlobUrlAttrs);
97
+ } catch (e) {
98
+ ssrReliabilityRef.current = {
99
+ ...ssrReliabilityRef.current,
100
+ [ssr]: {
101
+ status: 'fail',
102
+ ...extractErrorInfo(e, traceContext)
103
+ }
104
+ };
105
+ }
99
106
  }
100
107
  } else {
101
108
  const {
@@ -282,7 +289,7 @@ export const useFilePreview = ({
282
289
  client: createFailedSSRObject(failedPreview, traceContext)
283
290
  };
284
291
  }
285
- const isSSR = isSSRDataPreview(failedPreview) || (fg('jfp-magma-fix-failed-ssr-preview-load') ? isSSRClientPreview(failedPreview) : false);
292
+ const isSSR = isSSRDataPreview(failedPreview) || isSSRClientPreview(failedPreview);
286
293
 
287
294
  // If the preview failed and it comes from server (global scope / ssrData), it means that we have reused it in client and the error counts for both: server & client.
288
295
  if (isSSR) {
@@ -6,6 +6,7 @@
6
6
 
7
7
  export var GLOBAL_MEDIA_CARD_SSR = 'mediaCardSsr';
8
8
  export var GLOBAL_MEDIA_COUNT_SSR = 'mediaCountSsr';
9
+ export var GLOBAL_MEDIA_PERFORMANCE_ENTRIES = 'performanceEntries';
9
10
  export var GLOBAL_MEDIA_NAMESPACE = '__MEDIA_INTERNAL';
10
11
  var MAX_EAGER_LOAD_COUNT = 6;
11
12
  export function getMediaGlobalScope() {
@@ -53,7 +54,7 @@ var generateScript = function generateScript(identifier, dataURI, mode, srcSet,
53
54
  };
54
55
 
55
56
  // Read originalScriptCode.ts before making changes
56
- return "!function(){function e(){const e=\"__MEDIA_INTERNAL\";return window[e]||(window[e]={}),window[e]}!function(n){var t;const i=document.currentScript,o=function(){const n=e(),t=\"mediaCardSsr\";return n[t]||(n[t]={}),n[t]}(),r=function(){const n=e(),t=\"mediaCountSsr\";return n[t]||(n[t]=0),n[t]}(),{key:d}=n,a=n.dataURI,s=n.mode,c=n.srcSet,{dimensions:m}=n,{error:u}=n,{featureFlags:l}=n;if(l[\"media-perf-uplift-mutation-fix\"]){const t=o[d],f=t&&t.mode===s&&t.dimensions&&t.dimensions.width&&m&&m.width&&t.dimensions.width>m.width,w=f?t.srcSet:c,g=f?t.dataURI:a,p={dataURI:g,dimensions:m,error:u,srcSet:w,loading:\"lazy\",loadPromise:void 0,mode:s},S=i&&i.parentElement&&i.parentElement.querySelector(\"img\");S&&l[\"media-perf-lazy-loading-optimisation\"]&&r<n.maxEagerLoadCount&&(!function(){const n=e(),t=\"mediaCountSsr\";n[t]||(n[t]=0),n[t]++}(),\"lazy\"===S.getAttribute(\"loading\")&&S.removeAttribute(\"loading\"),p.loading=\"\"),S&&g&&(S.src=g),S&&w&&(S.srcset=w),p.loadPromise=new Promise((function(e,n){S&&(S.addEventListener(\"load\",(function(){e(void 0)})),S.addEventListener(\"error\",(function(){n(new Error(\"Failed to load image\"))})))})),o[d]=f?t:p}else o[d]={dataURI:a,dimensions:m,error:u};null===(t=document.currentScript)||void 0===t||t.remove()}({replace:\"\"})}();".replace('{replace:""}', JSON.stringify(params));
57
+ return "!function(e){var r=document.currentScript,i=window.__MEDIA_INTERNAL=window.__MEDIA_INTERNAL||{},n=i.mediaCardSsr=i.mediaCardSsr||{},o=e.key,t=e.dataURI,d=e.mode,a=e.srcSet,s=e.dimensions,m=e.error,l=e.featureFlags;if(l[\"media-perf-uplift-mutation-fix\"]){var u,c,f=n[o],v=f&&f.mode===d&&(null===(u=f.dimensions)||void 0===u?void 0:u.width)&&(null==s?void 0:s.width)&&f.dimensions.width>s.width,E=v?f.srcSet:a,p=v?f.dataURI:t,w={dataURI:p,dimensions:s,error:m,srcSet:E,loading:\"lazy\",loadPromise:void 0,mode:d},S=null==r||null===(c=r.parentElement)||void 0===c?void 0:c.querySelector(\"img\");if(i.mediaCountSsr=i.mediaCountSsr||0,S){if(l[\"media-perf-lazy-loading-optimisation\"]&&i.mediaCountSsr<e.maxEagerLoadCount){i.mediaCountSsr++,S.removeAttribute(\"loading\"),w.loading=\"\";var g=new PerformanceObserver((function(e){e.getEntries().forEach((function(e){E.includes(e.name)&&(i.performanceEntries=i.performanceEntries||[],i.performanceEntries.push(e),g.disconnect())}))}));g.observe({type:\"resource\"})}p&&(S.src=p),E&&(S.srcset=E),w.loadPromise=new Promise((function(e,r){S.addEventListener(\"load\",(function(){return e()})),S.addEventListener(\"error\",(function(){return r(new Error(\"Failed to load image\"))}))}))}n[o]=v?f:w}else n[o]={dataURI:t,dimensions:s,error:m};null==r||r.remove()}({replace:\"\"});".replace('{replace:""}', JSON.stringify(params));
57
58
  };
58
59
  export var generateScriptProps = function generateScriptProps(identifier, dataURI, mode, srcSet, dimensions, error) {
59
60
  var featureFlags = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};
@@ -4,61 +4,29 @@
4
4
  * Do not change the code without testing it in product first.
5
5
  * Steps:
6
6
  * 1. Make changes in this code
7
- * 2. Manually minify the code via https://repl.parceljs.org/ (using typescript preset with minify option)
8
- * - eg: https://repl.parceljs.org/#JTdCJTIyZmlsZXMlMjIlM0ElNUIlNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiUyQyU3QiUyMnZhbHVlJTIyJTNBJTIyJTJGKiUyMGVzbGludC1kaXNhYmxlJTIwJTQwYXRsYXNraXQlMkZwbGF0Zm9ybSUyRm5vLWRpcmVjdC1kb2N1bWVudC11c2FnZSUyMColMkYlNUNuJTVDbiUyRioqJTIwSU1QT1JUQU5UJTNBJTIwVGhpcyUyMGlzJTIwdGhlJTIwb3JpZ2luYWwlMjBjb2RlJTIwZm9yJTIwdGhlJTIwc2NyaXB0LiU1Q24lMjAqJTIwRG8lMjBub3QlMjBjaGFuZ2UlMjB0aGUlMjBjb2RlJTIwd2l0aG91dCUyMHRlc3RpbmclMjBpdCUyMGluJTIwcHJvZHVjdCUyMGZpcnN0LiU1Q24lMjAqJTIwU3RlcHMlM0ElNUNuJTIwKiUyMDEuJTIwTWFrZSUyMGNoYW5nZXMlMjBpbiUyMHRoaXMlMjBjb2RlJTVDbiUyMColMjAyLiUyME1hbnVhbGx5JTIwbWluaWZ5JTIwdGhlJTIwY29kZSUyMHZpYSUyMGh0dHBzJTNBJTJGJTJGcmVwbC5wYXJjZWxqcy5vcmclMkYlNUNuJTIwKiUyMDMuJTIwQ29weSUyMHRoZSUyMG1pbmlmaWVkJTIwY29kZSUyMGludG8lMjBnbG9iYWxTY29wZS50c3glMjByZXBsYWNpbmclMjB0aGUlMjBleGlzdGluZyUyMHN0cmluZyUyMHdoZXJlJTIwaXQlMjBzYXlzJTIwUEFTVEUlMjBIRVJFJTVDbiUyMColMjA0LiUyMFJ1biUyMHRoZSUyMHRlc3RzJTIwYW5kJTIwbWFrZSUyMHN1cmUlMjB0aGV5JTIwcGFzcyU1Q24lMjAqJTIwNS4lMjBURVNUJTIwSU4lMjBQUk9EVUNUUyUyMEJFRk9SRSUyME1FUkdJTkclNUNuJTIwKiU1Q24lMjAqJTJGJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhR2xvYmFsU2NvcGUoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMG5hbWVzcGFjZSUyMCUzRCUyMCU1QyUyMl9fTUVESUFfSU5URVJOQUwlNUMlMjIlM0IlNUNuJTIwJTIwaWYlMjAoISh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMCh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQlMjAlM0QlMjAlN0IlN0QlM0IlNUNuJTIwJTIwJTdEJTVDbiUyMCUyMHJldHVybiUyMCh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhQ2FyZFNTUigpJTIwJTdCJTVDbiUyMCUyMGNvbnN0JTIwZ2xvYmFsTWVkaWElMjAlM0QlMjBnZXRNZWRpYUdsb2JhbFNjb3BlKCklM0IlNUNuJTIwJTIwY29uc3QlMjBrZXklMjAlM0QlMjAlNUMlMjJtZWRpYUNhcmRTc3IlNUMlMjIlM0IlNUNuJTIwJTIwaWYlMjAoIWdsb2JhbE1lZGlhJTVCa2V5JTVEKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjBnbG9iYWxNZWRpYSU1QmtleSU1RCUyMCUzRCUyMCU3QiU3RCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwcmV0dXJuJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhQ291bnRTU1IoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwZ2V0TWVkaWFHbG9iYWxTY29wZSgpJTNCJTVDbiUyMCUyMGNvbnN0JTIwa2V5JTIwJTNEJTIwJTVDJTIybWVkaWFDb3VudFNzciU1QyUyMiUzQiU1Q24lMjAlMjBpZiUyMCghZ2xvYmFsTWVkaWElNUJrZXklNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMGdsb2JhbE1lZGlhJTVCa2V5JTVEJTIwJTNEJTIwMCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwcmV0dXJuJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGluY3JlbWVudE1lZGlhQ291bnRTU1IoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwZ2V0TWVkaWFHbG9iYWxTY29wZSgpJTNCJTVDbiUyMCUyMGNvbnN0JTIwa2V5JTIwJTNEJTIwJTVDJTIybWVkaWFDb3VudFNzciU1QyUyMiUzQiU1Q24lMjAlMjBpZiUyMCghZ2xvYmFsTWVkaWElNUJrZXklNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMGdsb2JhbE1lZGlhJTVCa2V5JTVEJTIwJTNEJTIwMCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlMkIlMkIlM0IlNUNuJTdEJTVDbiU1Q24oZnVuY3Rpb24lMjAocGFyYW1zJTNBJTIwYW55KSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMHNjcmlwdCUyMCUzRCUyMGRvY3VtZW50LmN1cnJlbnRTY3JpcHQlM0IlNUNuJTVDbiUyMCUyMCUyRiUyRiUyMFN0b3JlJTIwdGhlJTIwZGF0YSU1Q24lMjAlMjBjb25zdCUyMG1lZGlhQ2FyZFNzciUyMCUzRCUyMGdldE1lZGlhQ2FyZFNTUigpJTNCJTVDbiUyMCUyMGNvbnN0JTIwbWVkaWFDb3VudFNzciUyMCUzRCUyMGdldE1lZGlhQ291bnRTU1IoKSUzQiU1Q24lMjAlMjBjb25zdCUyMCU3QiUyMGtleSUyMCU3RCUyMCUzRCUyMHBhcmFtcyUzQiU1Q24lMjAlMjBjb25zdCUyMHBhcmFtRGF0YVVSSSUyMCUzRCUyMHBhcmFtcy5kYXRhVVJJJTNCJTVDbiUyMCUyMGNvbnN0JTIwcGFyYW1Nb2RlJTIwJTNEJTIwcGFyYW1zLm1vZGUlM0IlNUNuJTIwJTIwY29uc3QlMjBwYXJhbVNyY1NldCUyMCUzRCUyMHBhcmFtcy5zcmNTZXQlM0IlNUNuJTIwJTIwY29uc3QlMjAlN0IlMjBkaW1lbnNpb25zJTIwJTdEJTIwJTNEJTIwcGFyYW1zJTNCJTVDbiUyMCUyMGNvbnN0JTIwJTdCJTIwZXJyb3IlMjAlN0QlMjAlM0QlMjBwYXJhbXMlM0IlNUNuJTIwJTIwY29uc3QlMjAlN0IlMjBmZWF0dXJlRmxhZ3MlMjAlN0QlMjAlM0QlMjBwYXJhbXMlM0IlNUNuJTVDbiUyMCUyMGlmJTIwKGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtdXBsaWZ0LW11dGF0aW9uLWZpeCU1QyUyMiU1RCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBwcmV2RGF0YSUyMCUzRCUyMG1lZGlhQ2FyZFNzciU1QmtleSU1RCUzQiU1Q24lMjAlMjAlMjAlMjBjb25zdCUyMGlzUHJldmlvdXNJbWFnZUxhcmdlciUyMCUzRCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBwcmV2RGF0YSUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBwcmV2RGF0YS5tb2RlJTIwJTNEJTNEJTNEJTIwcGFyYW1Nb2RlJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMHByZXZEYXRhLmRpbWVuc2lvbnMlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwcHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkaW1lbnNpb25zJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMud2lkdGglMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwcHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUzRSUyMGRpbWVuc2lvbnMud2lkdGglM0IlNUNuJTVDbiUyMCUyMCUyMCUyMGNvbnN0JTIwc3JjU2V0JTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGEuc3JjU2V0JTIwJTNBJTIwcGFyYW1TcmNTZXQlM0IlNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBkYXRhVVJJJTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGEuZGF0YVVSSSUyMCUzQSUyMHBhcmFtRGF0YVVSSSUzQiU1Q24lNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBjdXJyRGF0YSUzQSUyMGFueSUyMCUzRCUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkYXRhVVJJJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwZXJyb3IlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc3JjU2V0JTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGxvYWRpbmclM0ElMjAlNUMlMjJsYXp5JTVDJTIyJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGxvYWRQcm9taXNlJTNBJTIwdW5kZWZpbmVkJTJDJTVDbiU1Q3QlNUN0JTVDdG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlNUNuJTIwJTIwJTIwJTIwJTdEJTNCJTVDbiU1Q24lMjAlMjAlMjAlMjBjb25zdCUyMGltZyUyMCUzRCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBzY3JpcHQlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc2NyaXB0LnBhcmVudEVsZW1lbnQlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc2NyaXB0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvciglNUMlMjJpbWclNUMlMjIpJTNCJTVDbiU1Q24lMjAlMjAlMjAlMjBpZiUyMCglNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtbGF6eS1sb2FkaW5nLW9wdGltaXNhdGlvbiU1QyUyMiU1RCUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBtZWRpYUNvdW50U3NyJTIwJTNDJTIwcGFyYW1zLm1heEVhZ2VyTG9hZENvdW50JTVDbiUyMCUyMCUyMCUyMCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW5jcmVtZW50TWVkaWFDb3VudFNTUigpJTNCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwKGltZy5nZXRBdHRyaWJ1dGUoJTVDJTIybG9hZGluZyU1QyUyMiklMjAlM0QlM0QlM0QlMjAlNUMlMjJsYXp5JTVDJTIyKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcucmVtb3ZlQXR0cmlidXRlKCU1QyUyMmxvYWRpbmclNUMlMjIpJTNCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCU3RCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBjdXJyRGF0YS5sb2FkaW5nJTIwJTNEJTIwJTVDJTIyJTVDJTIyJTNCJTVDbiUyMCUyMCUyMCUyMCU3RCU1Q24lNUNuJTIwJTIwJTIwJTIwaWYlMjAoaW1nJTIwJTI2JTI2JTIwZGF0YVVSSSklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nLnNyYyUyMCUzRCUyMGRhdGFVUkklM0IlNUNuJTIwJTIwJTIwJTIwJTdEJTVDbiUyMCUyMCUyMCUyMGlmJTIwKGltZyUyMCUyNiUyNiUyMHNyY1NldCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nLnNyY3NldCUyMCUzRCUyMHNyY1NldCUzQiU1Q24lMjAlMjAlMjAlMjAlN0QlNUNuJTVDbiUyMCUyMCUyMCUyMGN1cnJEYXRhLmxvYWRQcm9taXNlJTIwJTNEJTIwbmV3JTIwUHJvbWlzZSUzQ3ZvaWQlM0UoZnVuY3Rpb24lMjAocmVzb2x2ZSUyQyUyMHJlamVjdCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjAoaW1nKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcuYWRkRXZlbnRMaXN0ZW5lciglNUMlMjJsb2FkJTVDJTIyJTJDJTIwZnVuY3Rpb24lMjAoKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXNvbHZlKHVuZGVmaW5lZCklM0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcuYWRkRXZlbnRMaXN0ZW5lciglNUMlMjJlcnJvciU1QyUyMiUyQyUyMGZ1bmN0aW9uJTIwKCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmVqZWN0KG5ldyUyMEVycm9yKCU1QyUyMkZhaWxlZCUyMHRvJTIwbG9hZCUyMGltYWdlJTVDJTIyKSklM0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlN0QlNUNuJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lNUNuJTIwJTIwJTIwJTIwbWVkaWFDYXJkU3NyJTVCa2V5JTVEJTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGElMjAlM0ElMjBjdXJyRGF0YSUzQiU1Q24lMjAlMjAlN0QlMjBlbHNlJTIwJTdCJTVDbiUyMCUyMCUyMCUyMG1lZGlhQ2FyZFNzciU1QmtleSU1RCUyMCUzRCUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkYXRhVVJJJTNBJTIwcGFyYW1EYXRhVVJJJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwZXJyb3IlMkMlNUNuJTIwJTIwJTIwJTIwJTdEJTNCJTVDbiUyMCUyMCU3RCU1Q24lNUNuJTIwJTIwJTJGJTJGJTIwUmVtb3ZlJTIwc2NyaXB0JTIwdG8lMjBwcmV2ZW50JTIwaHlkcmF0aW9uJTIwbWlzbWF0Y2glNUNuJTIwJTIwZG9jdW1lbnQuY3VycmVudFNjcmlwdCUzRi5yZW1vdmUoKSUzQiU1Q24lNUNuJTVDdCUyRiUyRiUyMHRoaXMlMjByZXBsYWNlJTIwd2lsbCUyMGJlJTIwdXNlZCUyMGFzJTIwYSUyMHBsYWNlaG9sZGVyJTIwZm9yJTIwdGhlJTIwc3RyaW5naWZpZWQlMjBwYXJhbXMlMjB0byUyMGJlJTIwaW5qZWN0ZWQlMjBpbnRvJTIwdGhlJTIwc2NyaXB0JTVDbiU3RCkoJTdCJTIwcmVwbGFjZSUzQSUyMCU1QyUyMiU1QyUyMiUyMCU3RCklM0IlNUNuJTIyJTJDJTIyaXNFbnRyeSUyMiUzQXRydWUlN0QlNUQlNUQlMkMlMjJvcHRpb25zJTIyJTNBJTdCJTIyZW50cmllcyUyMiUzQSU1QiU1RCUyQyUyMm1pbmlmeSUyMiUzQXRydWUlMkMlMjJzY29wZUhvaXN0JTIyJTNBdHJ1ZSUyQyUyMnNvdXJjZU1hcHMlMjIlM0FmYWxzZSUyQyUyMnB1YmxpY1VybCUyMiUzQSUyMiUyRl9fcmVwbF9kaXN0JTIyJTJDJTIydGFyZ2V0VHlwZSUyMiUzQSUyMmJyb3dzZXJzJTIyJTJDJTIydGFyZ2V0RW52JTIyJTNBbnVsbCUyQyUyMm91dHB1dEZvcm1hdCUyMiUzQW51bGwlMkMlMjJobXIlMjIlM0FmYWxzZSUyQyUyMm1vZGUlMjIlM0ElMjJwcm9kdWN0aW9uJTIyJTJDJTIycmVuZGVyR3JhcGhzJTIyJTNBZmFsc2UlMkMlMjJ2aWV3U291cmNlbWFwcyUyMiUzQWZhbHNlJTJDJTIyZGVwZW5kZW5jaWVzJTIyJTNBJTVCJTVEJTJDJTIybnVtV29ya2VycyUyMiUzQTAlN0QlMkMlMjJ1c2VUYWJzJTIyJTNBdHJ1ZSUyQyUyMmJyb3dzZXJDb2xsYXBzZWQlMjIlM0ElNUIlNUQlMkMlMjJ2aWV3cyUyMiUzQSU1QiUyMiUyRnNyYyUyRmluZGV4LnRzJTIyJTVEJTJDJTIyY3VycmVudFZpZXclMjIlM0EwJTdE
7
+ * 2. Manually minify the code into: https://repl.parceljs.org/#JTdCJTIyZmlsZXMlMjIlM0ElNUIlNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiUyQyU3QiUyMnZhbHVlJTIyJTNBJTIyJTJGKiUyMGVzbGludC1kaXNhYmxlJTIwJTQwYXRsYXNraXQlMkZwbGF0Zm9ybSUyRm5vLWRpcmVjdC1kb2N1bWVudC11c2FnZSUyMColMkYlNUNuJTVDbiUyRioqJTIwSU1QT1JUQU5UJTNBJTIwVGhpcyUyMGlzJTIwdGhlJTIwb3JpZ2luYWwlMjBjb2RlJTIwZm9yJTIwdGhlJTIwc2NyaXB0LiU1Q24lMjAqJTIwRG8lMjBub3QlMjBjaGFuZ2UlMjB0aGUlMjBjb2RlJTIwd2l0aG91dCUyMHRlc3RpbmclMjBpdCUyMGluJTIwcHJvZHVjdCUyMGZpcnN0LiU1Q24lMjAqJTIwU3RlcHMlM0ElNUNuJTIwKiUyMDEuJTIwTWFrZSUyMGNoYW5nZXMlMjBpbiUyMHRoaXMlMjBjb2RlJTVDbiUyMColMjAyLiUyME1hbnVhbGx5JTIwbWluaWZ5JTIwdGhlJTIwY29kZSUyMGludG8lM0ElMjBodHRwcyUzQSUyRiUyRnJlcGwucGFyY2VsanMub3JnJTJGJTIzSlRkQ0pUSXlabWxzWlhNbE1qSWxNMEVsTlVJbE5VSWxNaklsTWtaemNtTWxNa1pwYm1SbGVDNTBjeVV5TWlVeVF5VTNRaVV5TW5aaGJIVmxKVEl5SlROQkpUSXlKVEpHS2lVeU1HVnpiR2x1ZEMxa2FYTmhZbXhsSlRJd0pUUXdZWFJzWVhOcmFYUWxNa1p3YkdGMFptOXliU1V5Um01dkxXUnBjbVZqZEMxa2IyTjFiV1Z1ZEMxMWMyRm5aU1V5TUNvbE1rWWxOVU51SlRWRGJpVXlSaW9xSlRJd1NVMVFUMUpVUVU1VUpUTkJKVEl3VkdocGN5VXlNR2x6SlRJd2RHaGxKVEl3YjNKcFoybHVZV3dsTWpCamIyUmxKVEl3Wm05eUpUSXdkR2hsSlRJd2MyTnlhWEIwTGlVMVEyNGxNakFxSlRJd1JHOGxNakJ1YjNRbE1qQmphR0Z1WjJVbE1qQjBhR1VsTWpCamIyUmxKVEl3ZDJsMGFHOTFkQ1V5TUhSbGMzUnBibWNsTWpCcGRDVXlNR2x1SlRJd2NISnZaSFZqZENVeU1HWnBjbk4wTGlVMVEyNGxNakFxSlRJd1UzUmxjSE1sTTBFbE5VTnVKVEl3S2lVeU1ERXVKVEl3VFdGclpTVXlNR05vWVc1blpYTWxNakJwYmlVeU1IUm9hWE1sTWpCamIyUmxKVFZEYmlVeU1Db2xNakF5TGlVeU1FMWhiblZoYkd4NUpUSXdiV2x1YVdaNUpUSXdkR2hsSlRJd1kyOWtaU1V5TUhacFlTVXlNR2gwZEhCekpUTkJKVEpHSlRKR2NtVndiQzV3WVhKalpXeHFjeTV2Y21jbE1rWWxOVU51SlRJd0tpVXlNRE11SlRJd1EyOXdlU1V5TUhSb1pTVXlNRzFwYm1sbWFXVmtKVEl3WTI5a1pTVXlNR2x1ZEc4bE1qQm5iRzlpWVd4VFkyOXdaUzUwYzNnbE1qQnlaWEJzWVdOcGJtY2xNakIwYUdVbE1qQmxlR2x6ZEdsdVp5VXlNSE4wY21sdVp5VXlNSGRvWlhKbEpUSXdhWFFsTWpCellYbHpKVEl3VUVGVFZFVWxNakJJUlZKRkpUVkRiaVV5TUNvbE1qQTBMaVV5TUZKMWJpVXlNSFJvWlNVeU1IUmxjM1J6SlRJd1lXNWtKVEl3YldGclpTVXlNSE4xY21VbE1qQjBhR1Y1SlRJd2NHRnpjeVUxUTI0bE1qQXFKVEl3TlM0bE1qQlVSVk5VSlRJd1NVNGxNakJRVWs5RVZVTlVVeVV5TUVKRlJrOVNSU1V5TUUxRlVrZEpUa2NsTlVOdUpUSXdLaVUxUTI0bE1qQXFKVEpHSlRWRGJpVTFRMjVtZFc1amRHbHZiaVV5TUdkbGRFMWxaR2xoUjJ4dlltRnNVMk52Y0dVb0tTVXlNQ1UzUWlVMVEyNGxNakFsTWpCamIyNXpkQ1V5TUc1aGJXVnpjR0ZqWlNVeU1DVXpSQ1V5TUNVMVF5VXlNbDlmVFVWRVNVRmZTVTVVUlZKT1FVd2xOVU1sTWpJbE0wSWxOVU51SlRJd0pUSXdhV1lsTWpBb0lTaDNhVzVrYjNjbE1qQmhjeVV5TUdGdWVTa2xOVUp1WVcxbGMzQmhZMlVsTlVRcEpUSXdKVGRDSlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ2gzYVc1a2IzY2xNakJoY3lVeU1HRnVlU2tsTlVKdVlXMWxjM0JoWTJVbE5VUWxNakFsTTBRbE1qQWxOMElsTjBRbE0wSWxOVU51SlRJd0pUSXdKVGRFSlRWRGJpVXlNQ1V5TUhKbGRIVnliaVV5TUNoM2FXNWtiM2NsTWpCaGN5VXlNR0Z1ZVNrbE5VSnVZVzFsYzNCaFkyVWxOVVFsTTBJbE5VTnVKVGRFSlRWRGJpVTFRMjVtZFc1amRHbHZiaVV5TUdkbGRFMWxaR2xoUTJGeVpGTlRVaWdwSlRJd0pUZENKVFZEYmlVeU1DVXlNR052Ym5OMEpUSXdaMnh2WW1Gc1RXVmthV0VsTWpBbE0wUWxNakJuWlhSTlpXUnBZVWRzYjJKaGJGTmpiM0JsS0NrbE0wSWxOVU51SlRJd0pUSXdZMjl1YzNRbE1qQnJaWGtsTWpBbE0wUWxNakFsTlVNbE1qSnRaV1JwWVVOaGNtUlRjM0lsTlVNbE1qSWxNMElsTlVOdUpUSXdKVEl3YVdZbE1qQW9JV2RzYjJKaGJFMWxaR2xoSlRWQ2EyVjVKVFZFS1NVeU1DVTNRaVUxUTI0bE1qQWxNakFsTWpBbE1qQm5iRzlpWVd4TlpXUnBZU1UxUW10bGVTVTFSQ1V5TUNVelJDVXlNQ1UzUWlVM1JDVXpRaVUxUTI0bE1qQWxNakFsTjBRbE5VTnVKVEl3SlRJd2NtVjBkWEp1SlRJd1oyeHZZbUZzVFdWa2FXRWxOVUpyWlhrbE5VUWxNMElsTlVOdUpUZEVKVFZEYmlVMVEyNW1kVzVqZEdsdmJpVXlNR2RsZEUxbFpHbGhRMjkxYm5SVFUxSW9LU1V5TUNVM1FpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1HZHNiMkpoYkUxbFpHbGhKVEl3SlRORUpUSXdaMlYwVFdWa2FXRkhiRzlpWVd4VFkyOXdaU2dwSlROQ0pUVkRiaVV5TUNVeU1HTnZibk4wSlRJd2EyVjVKVEl3SlRORUpUSXdKVFZESlRJeWJXVmthV0ZEYjNWdWRGTnpjaVUxUXlVeU1pVXpRaVUxUTI0bE1qQWxNakJwWmlVeU1DZ2haMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFwSlRJd0pUZENKVFZEYmlVeU1DVXlNQ1V5TUNVeU1HZHNiMkpoYkUxbFpHbGhKVFZDYTJWNUpUVkVKVEl3SlRORUpUSXdNQ1V6UWlVMVEyNGxNakFsTWpBbE4wUWxOVU51SlRJd0pUSXdjbVYwZFhKdUpUSXdaMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFsTTBJbE5VTnVKVGRFSlRWRGJpVTFRMjVtZFc1amRHbHZiaVV5TUdsdVkzSmxiV1Z1ZEUxbFpHbGhRMjkxYm5SVFUxSW9LU1V5TUNVM1FpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1HZHNiMkpoYkUxbFpHbGhKVEl3SlRORUpUSXdaMlYwVFdWa2FXRkhiRzlpWVd4VFkyOXdaU2dwSlROQ0pUVkRiaVV5TUNVeU1HTnZibk4wSlRJd2EyVjVKVEl3SlRORUpUSXdKVFZESlRJeWJXVmthV0ZEYjNWdWRGTnpjaVUxUXlVeU1pVXpRaVUxUTI0bE1qQWxNakJwWmlVeU1DZ2haMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFwSlRJd0pUZENKVFZEYmlVeU1DVXlNQ1V5TUNVeU1HZHNiMkpoYkUxbFpHbGhKVFZDYTJWNUpUVkVKVEl3SlRORUpUSXdNQ1V6UWlVMVEyNGxNakFsTWpBbE4wUWxOVU51SlRJd0pUSXdaMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFsTWtJbE1rSWxNMElsTlVOdUpUZEVKVFZEYmlVMVEyNG9ablZ1WTNScGIyNGxNakFvY0dGeVlXMXpKVE5CSlRJd1lXNTVLU1V5TUNVM1FpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1ITmpjbWx3ZENVeU1DVXpSQ1V5TUdSdlkzVnRaVzUwTG1OMWNuSmxiblJUWTNKcGNIUWxNMElsTlVOdUpUVkRiaVV5TUNVeU1DVXlSaVV5UmlVeU1GTjBiM0psSlRJd2RHaGxKVEl3WkdGMFlTVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1HMWxaR2xoUTJGeVpGTnpjaVV5TUNVelJDVXlNR2RsZEUxbFpHbGhRMkZ5WkZOVFVpZ3BKVE5DSlRWRGJpVXlNQ1V5TUdOdmJuTjBKVEl3YldWa2FXRkRiM1Z1ZEZOemNpVXlNQ1V6UkNVeU1HZGxkRTFsWkdsaFEyOTFiblJUVTFJb0tTVXpRaVUxUTI0bE1qQWxNakJqYjI1emRDVXlNQ1UzUWlVeU1HdGxlU1V5TUNVM1JDVXlNQ1V6UkNVeU1IQmhjbUZ0Y3lVelFpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1IQmhjbUZ0UkdGMFlWVlNTU1V5TUNVelJDVXlNSEJoY21GdGN5NWtZWFJoVlZKSkpUTkNKVFZEYmlVeU1DVXlNR052Ym5OMEpUSXdjR0Z5WVcxTmIyUmxKVEl3SlRORUpUSXdjR0Z5WVcxekxtMXZaR1VsTTBJbE5VTnVKVEl3SlRJd1kyOXVjM1FsTWpCd1lYSmhiVk55WTFObGRDVXlNQ1V6UkNVeU1IQmhjbUZ0Y3k1emNtTlRaWFFsTTBJbE5VTnVKVEl3SlRJd1kyOXVjM1FsTWpBbE4wSWxNakJrYVcxbGJuTnBiMjV6SlRJd0pUZEVKVEl3SlRORUpUSXdjR0Z5WVcxekpUTkNKVFZEYmlVeU1DVXlNR052Ym5OMEpUSXdKVGRDSlRJd1pYSnliM0lsTWpBbE4wUWxNakFsTTBRbE1qQndZWEpoYlhNbE0wSWxOVU51SlRJd0pUSXdZMjl1YzNRbE1qQWxOMElsTWpCbVpXRjBkWEpsUm14aFozTWxNakFsTjBRbE1qQWxNMFFsTWpCd1lYSmhiWE1sTTBJbE5VTnVKVFZEYmlVeU1DVXlNR2xtSlRJd0tHWmxZWFIxY21WR2JHRm5jeVUxUWlVMVF5VXlNbTFsWkdsaExYQmxjbVl0ZFhCc2FXWjBMVzExZEdGMGFXOXVMV1pwZUNVMVF5VXlNaVUxUkNrbE1qQWxOMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdZMjl1YzNRbE1qQndjbVYyUkdGMFlTVXlNQ1V6UkNVeU1HMWxaR2xoUTJGeVpGTnpjaVUxUW10bGVTVTFSQ1V6UWlVMVEyNGxNakFsTWpBbE1qQWxNakJqYjI1emRDVXlNR2x6VUhKbGRtbHZkWE5KYldGblpVeGhjbWRsY2lVeU1DVXpSQ1UxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpCd2NtVjJSR0YwWVNVeU1DVXlOaVV5TmlVMVEyNGxNakFsTWpBbE1qQWxNakFsTWpBbE1qQndjbVYyUkdGMFlTNXRiMlJsSlRJd0pUTkVKVE5FSlRORUpUSXdjR0Z5WVcxTmIyUmxKVEl3SlRJMkpUSTJKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUhCeVpYWkVZWFJoTG1ScGJXVnVjMmx2Ym5NbE1qQWxNallsTWpZbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjSEpsZGtSaGRHRXVaR2x0Wlc1emFXOXVjeTUzYVdSMGFDVXlNQ1V5TmlVeU5pVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJrYVcxbGJuTnBiMjV6SlRJd0pUSTJKVEkySlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HUnBiV1Z1YzJsdmJuTXVkMmxrZEdnbE1qQWxNallsTWpZbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjSEpsZGtSaGRHRXVaR2x0Wlc1emFXOXVjeTUzYVdSMGFDVXlNQ1V6UlNVeU1HUnBiV1Z1YzJsdmJuTXVkMmxrZEdnbE0wSWxOVU51SlRWRGJpVXlNQ1V5TUNVeU1DVXlNR052Ym5OMEpUSXdjM0pqVTJWMEpUSXdKVE5FSlRJd2FYTlFjbVYyYVc5MWMwbHRZV2RsVEdGeVoyVnlKVEl3SlROR0pUSXdjSEpsZGtSaGRHRXVjM0pqVTJWMEpUSXdKVE5CSlRJd2NHRnlZVzFUY21OVFpYUWxNMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdZMjl1YzNRbE1qQmtZWFJoVlZKSkpUSXdKVE5FSlRJd2FYTlFjbVYyYVc5MWMwbHRZV2RsVEdGeVoyVnlKVEl3SlROR0pUSXdjSEpsZGtSaGRHRXVaR0YwWVZWU1NTVXlNQ1V6UVNVeU1IQmhjbUZ0UkdGMFlWVlNTU1V6UWlVMVEyNGxOVU51SlRJd0pUSXdKVEl3SlRJd1kyOXVjM1FsTWpCamRYSnlSR0YwWVNVelFTVXlNR0Z1ZVNVeU1DVXpSQ1V5TUNVM1FpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJrWVhSaFZWSkpKVEpESlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HUnBiV1Z1YzJsdmJuTWxNa01sTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd1pYSnliM0lsTWtNbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjM0pqVTJWMEpUSkRKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUd4dllXUnBibWNsTTBFbE1qQWxOVU1sTWpKc1lYcDVKVFZESlRJeUpUSkRKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUd4dllXUlFjbTl0YVhObEpUTkJKVEl3ZFc1a1pXWnBibVZrSlRKREpUVkRiaVUxUTNRbE5VTjBKVFZEZEcxdlpHVWxNMEVsTWpCd1lYSmhiVTF2WkdVbE1rTWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUZEVKVE5DSlRWRGJpVTFRMjRsTWpBbE1qQWxNakFsTWpCamIyNXpkQ1V5TUdsdFp5VXlNQ1V6UkNVMVEyNGxNakFsTWpBbE1qQWxNakFsTWpBbE1qQnpZM0pwY0hRbE1qQWxNallsTWpZbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjMk55YVhCMExuQmhjbVZ1ZEVWc1pXMWxiblFsTWpBbE1qWWxNallsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd2MyTnlhWEIwTG5CaGNtVnVkRVZzWlcxbGJuUXVjWFZsY25sVFpXeGxZM1J2Y2lnbE5VTWxNakpwYldjbE5VTWxNaklwSlROQ0pUVkRiaVUxUTI0bE1qQWxNakFsTWpBbE1qQnBaaVV5TUNnbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdhVzFuSlRJd0pUSTJKVEkySlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HWmxZWFIxY21WR2JHRm5jeVUxUWlVMVF5VXlNbTFsWkdsaExYQmxjbVl0YkdGNmVTMXNiMkZrYVc1bkxXOXdkR2x0YVhOaGRHbHZiaVUxUXlVeU1pVTFSQ1V5TUNVeU5pVXlOaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpCdFpXUnBZVU52ZFc1MFUzTnlKVEl3SlROREpUSXdjR0Z5WVcxekxtMWhlRVZoWjJWeVRHOWhaRU52ZFc1MEpUVkRiaVV5TUNVeU1DVXlNQ1V5TUNrbE1qQWxOMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd2FXNWpjbVZ0Wlc1MFRXVmthV0ZEYjNWdWRGTlRVaWdwSlROQ0pUVkRiaVV5TUNVeU1DVXlNQ1V5TUNVeU1DVXlNR2xtSlRJd0tHbHRaeTVuWlhSQmRIUnlhV0oxZEdVb0pUVkRKVEl5Ykc5aFpHbHVaeVUxUXlVeU1pa2xNakFsTTBRbE0wUWxNMFFsTWpBbE5VTWxNakpzWVhwNUpUVkRKVEl5S1NVeU1DVTNRaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJwYldjdWNtVnRiM1psUVhSMGNtbGlkWFJsS0NVMVF5VXlNbXh2WVdScGJtY2xOVU1sTWpJcEpUTkNKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVM1JDVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJqZFhKeVJHRjBZUzVzYjJGa2FXNW5KVEl3SlRORUpUSXdKVFZESlRJeUpUVkRKVEl5SlROQ0pUVkRiaVV5TUNVeU1DVXlNQ1V5TUNVM1JDVTFRMjRsTlVOdUpUSXdKVEl3SlRJd0pUSXdhV1lsTWpBb2FXMW5KVEl3SlRJMkpUSTJKVEl3WkdGMFlWVlNTU2tsTWpBbE4wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3YVcxbkxuTnlZeVV5TUNVelJDVXlNR1JoZEdGVlVra2xNMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVGRFSlRWRGJpVXlNQ1V5TUNVeU1DVXlNR2xtSlRJd0tHbHRaeVV5TUNVeU5pVXlOaVV5TUhOeVkxTmxkQ2tsTWpBbE4wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3YVcxbkxuTnlZM05sZENVeU1DVXpSQ1V5TUhOeVkxTmxkQ1V6UWlVMVEyNGxNakFsTWpBbE1qQWxNakFsTjBRbE5VTnVKVFZEYmlVeU1DVXlNQ1V5TUNVeU1HTjFjbkpFWVhSaExteHZZV1JRY205dGFYTmxKVEl3SlRORUpUSXdibVYzSlRJd1VISnZiV2x6WlNVelEzWnZhV1FsTTBVb1puVnVZM1JwYjI0bE1qQW9jbVZ6YjJ4MlpTVXlReVV5TUhKbGFtVmpkQ2tsTWpBbE4wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3YVdZbE1qQW9hVzFuS1NVeU1DVTNRaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWtZbE1rWWxNakJsYzJ4cGJuUXRaR2x6WVdKc1pTMXVaWGgwTFd4cGJtVWxNakFsTkRCeVpYQnZKVEpHYVc1MFpYSnVZV3dsTWtaa2IyMHRaWFpsYm5SekpUSkdibTh0ZFc1ellXWmxMV1YyWlc1MExXeHBjM1JsYm1WeWN5VTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQnBiV2N1WVdSa1JYWmxiblJNYVhOMFpXNWxjaWdsTlVNbE1qSnNiMkZrSlRWREpUSXlKVEpESlRJd1puVnVZM1JwYjI0bE1qQW9LU1V5TUNVM1FpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpCeVpYTnZiSFpsS0hWdVpHVm1hVzVsWkNrbE0wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVGRFS1NVelFpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNa1lsTWtZbE1qQmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VbE1qQWxOREJ5WlhCdkpUSkdhVzUwWlhKdVlXd2xNa1prYjIwdFpYWmxiblJ6SlRKR2JtOHRkVzV6WVdabExXVjJaVzUwTFd4cGMzUmxibVZ5Y3lVMVEyNGxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpCcGJXY3VZV1JrUlhabGJuUk1hWE4wWlc1bGNpZ2xOVU1sTWpKbGNuSnZjaVUxUXlVeU1pVXlReVV5TUdaMWJtTjBhVzl1SlRJd0tDa2xNakFsTjBJbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3Y21WcVpXTjBLRzVsZHlVeU1FVnljbTl5S0NVMVF5VXlNa1poYVd4bFpDVXlNSFJ2SlRJd2JHOWhaQ1V5TUdsdFlXZGxKVFZESlRJeUtTa2xNMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3SlRkRUtTVXpRaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE4wUWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUZEVLU1V6UWlVMVEyNGxOVU51SlRJd0pUSXdKVEl3SlRJd2JXVmthV0ZEWVhKa1UzTnlKVFZDYTJWNUpUVkVKVEl3SlRORUpUSXdhWE5RY21WMmFXOTFjMGx0WVdkbFRHRnlaMlZ5SlRJd0pUTkdKVEl3Y0hKbGRrUmhkR0VsTWpBbE0wRWxNakJqZFhKeVJHRjBZU1V6UWlVMVEyNGxNakFsTWpBbE4wUWxNakJsYkhObEpUSXdKVGRDSlRWRGJpVXlNQ1V5TUNVeU1DVXlNRzFsWkdsaFEyRnlaRk56Y2lVMVFtdGxlU1UxUkNVeU1DVXpSQ1V5TUNVM1FpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJrWVhSaFZWSkpKVE5CSlRJd2NHRnlZVzFFWVhSaFZWSkpKVEpESlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HUnBiV1Z1YzJsdmJuTWxNa01sTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd1pYSnliM0lsTWtNbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRkRUpUTkNKVFZEYmlVeU1DVXlNQ1UzUkNVMVEyNGxOVU51SlRJd0pUSXdKVEpHSlRKR0pUSXdVbVZ0YjNabEpUSXdjMk55YVhCMEpUSXdkRzhsTWpCd2NtVjJaVzUwSlRJd2FIbGtjbUYwYVc5dUpUSXdiV2x6YldGMFkyZ2xOVU51SlRJd0pUSXdaRzlqZFcxbGJuUXVZM1Z5Y21WdWRGTmpjbWx3ZENVelJpNXlaVzF2ZG1Vb0tTVXpRaVUxUTI0bE5VTnVKVFZEZENVeVJpVXlSaVV5TUhSb2FYTWxNakJ5WlhCc1lXTmxKVEl3ZDJsc2JDVXlNR0psSlRJd2RYTmxaQ1V5TUdGekpUSXdZU1V5TUhCc1lXTmxhRzlzWkdWeUpUSXdabTl5SlRJd2RHaGxKVEl3YzNSeWFXNW5hV1pwWldRbE1qQndZWEpoYlhNbE1qQjBieVV5TUdKbEpUSXdhVzVxWldOMFpXUWxNakJwYm5SdkpUSXdkR2hsSlRJd2MyTnlhWEIwSlRWRGJpVTNSQ2tvSlRkQ0pUSXdjbVZ3YkdGalpTVXpRU1V5TUNVMVF5VXlNaVUxUXlVeU1pVXlNQ1UzUkNrbE0wSWxOVU51SlRJeUpUSkRKVEl5YVhORmJuUnllU1V5TWlVelFYUnlkV1VsTjBRbE5VUWxOVVFsTWtNbE1qSnZjSFJwYjI1ekpUSXlKVE5CSlRkQ0pUSXlaVzUwY21sbGN5VXlNaVV6UVNVMVFpVTFSQ1V5UXlVeU1tMXBibWxtZVNVeU1pVXpRWFJ5ZFdVbE1rTWxNakp6WTI5d1pVaHZhWE4wSlRJeUpUTkJkSEoxWlNVeVF5VXlNbk52ZFhKalpVMWhjSE1sTWpJbE0wRm1ZV3h6WlNVeVF5VXlNbkIxWW14cFkxVnliQ1V5TWlVelFTVXlNaVV5Umw5ZmNtVndiRjlrYVhOMEpUSXlKVEpESlRJeWRHRnlaMlYwVkhsd1pTVXlNaVV6UVNVeU1tSnliM2R6WlhKekpUSXlKVEpESlRJeWRHRnlaMlYwUlc1MkpUSXlKVE5CYm5Wc2JDVXlReVV5TW05MWRIQjFkRVp2Y20xaGRDVXlNaVV6UVc1MWJHd2xNa01sTWpKb2JYSWxNaklsTTBGbVlXeHpaU1V5UXlVeU1tMXZaR1VsTWpJbE0wRWxNakp3Y205a2RXTjBhVzl1SlRJeUpUSkRKVEl5Y21WdVpHVnlSM0poY0doekpUSXlKVE5CWm1Gc2MyVWxNa01sTWpKMmFXVjNVMjkxY21ObGJXRndjeVV5TWlVelFXWmhiSE5sSlRKREpUSXlaR1Z3Wlc1a1pXNWphV1Z6SlRJeUpUTkJKVFZDSlRWRUpUSkRKVEl5Ym5WdFYyOXlhMlZ5Y3lVeU1pVXpRVEFsTjBRbE1rTWxNakoxYzJWVVlXSnpKVEl5SlROQmRISjFaU1V5UXlVeU1tSnliM2R6WlhKRGIyeHNZWEJ6WldRbE1qSWxNMEVsTlVJbE5VUWxNa01sTWpKMmFXVjNjeVV5TWlVelFTVTFRaVV5TWlVeVJuTnlZeVV5Um1sdVpHVjRMblJ6SlRJeUpUVkVKVEpESlRJeVkzVnljbVZ1ZEZacFpYY2xNaklsTTBFd0pUZEUlNUNuJTIwKiUyMDMuJTIwQ29weSUyMHRoZSUyMG1pbmlmaWVkJTIwY29kZSUyMGludG8lMjBnbG9iYWxTY29wZS50c3glMjByZXBsYWNpbmclMjB0aGUlMjBleGlzdGluZyUyMHN0cmluZyUyMHdoZXJlJTIwaXQlMjBzYXlzJTIwUEFTVEUlMjBIRVJFJTVDbiUyMColMjA0LiUyMFJ1biUyMHRoZSUyMHRlc3RzJTIwYW5kJTIwbWFrZSUyMHN1cmUlMjB0aGV5JTIwcGFzcyU1Q24lMjAqJTIwNS4lMjBURVNUJTIwSU4lMjBQUk9EVUNUUyUyMEJFRk9SRSUyME1FUkdJTkclNUNuJTIwKiU1Q24lMjAqJTJGJTVDbiU1Q24oZnVuY3Rpb24lMjAocGFyYW1zJTNBJTIwYW55KSUyMCU3QiU1Q24lNUN0Y29uc3QlMjBzY3JpcHQlMjAlM0QlMjBkb2N1bWVudC5jdXJyZW50U2NyaXB0JTNCJTVDbiU1Q3Rjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwKCh3aW5kb3clMjBhcyUyMGFueSkuX19NRURJQV9JTlRFUk5BTCUyMCUzRCUyMCh3aW5kb3clMjBhcyUyMGFueSkuX19NRURJQV9JTlRFUk5BTCUyMCU3QyU3QyUyMCU3QiU3RCklM0IlNUNuJTVDdGNvbnN0JTIwbWVkaWFDYXJkU3NyJTIwJTNEJTIwKGdsb2JhbE1lZGlhLm1lZGlhQ2FyZFNzciUyMCUzRCUyMGdsb2JhbE1lZGlhLm1lZGlhQ2FyZFNzciUyMCU3QyU3QyUyMCU3QiU3RCklM0IlNUNuJTVDdGNvbnN0JTIwJTdCJTIwa2V5JTJDJTIwZGF0YVVSSSUzQSUyMHBhcmFtRGF0YVVSSSUyQyUyMG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlMjBzcmNTZXQlM0ElMjBwYXJhbVNyY1NldCUyQyUyMGRpbWVuc2lvbnMlMkMlMjBlcnJvciUyQyUyMGZlYXR1cmVGbGFncyUyMCU3RCUyMCUzRCUyMHBhcmFtcyUzQiU1Q24lNUNuJTVDdGlmJTIwKGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtdXBsaWZ0LW11dGF0aW9uLWZpeCU1QyUyMiU1RCklMjAlN0IlNUNuJTVDdCU1Q3Rjb25zdCUyMHByZXZEYXRhJTIwJTNEJTIwbWVkaWFDYXJkU3NyJTVCa2V5JTVEJTNCJTVDbiU1Q3QlNUN0Y29uc3QlMjBpc1ByZXZpb3VzSW1hZ2VMYXJnZXIlMjAlM0QlNUNuJTVDdCU1Q3QlNUN0cHJldkRhdGElMjAlMjYlMjYlNUNuJTVDdCU1Q3QlNUN0cHJldkRhdGEubW9kZSUyMCUzRCUzRCUzRCUyMHBhcmFtTW9kZSUyMCUyNiUyNiU1Q24lNUN0JTVDdCU1Q3RwcmV2RGF0YS5kaW1lbnNpb25zJTNGLndpZHRoJTIwJTI2JTI2JTVDbiU1Q3QlNUN0JTVDdGRpbWVuc2lvbnMlM0Yud2lkdGglMjAlMjYlMjYlNUNuJTVDdCU1Q3QlNUN0cHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUzRSUyMGRpbWVuc2lvbnMud2lkdGglM0IlNUNuJTVDbiU1Q3QlNUN0Y29uc3QlMjBzcmNTZXQlMjAlM0QlMjBpc1ByZXZpb3VzSW1hZ2VMYXJnZXIlMjAlM0YlMjBwcmV2RGF0YS5zcmNTZXQlMjAlM0ElMjBwYXJhbVNyY1NldCUzQiU1Q24lNUN0JTVDdGNvbnN0JTIwZGF0YVVSSSUyMCUzRCUyMGlzUHJldmlvdXNJbWFnZUxhcmdlciUyMCUzRiUyMHByZXZEYXRhLmRhdGFVUkklMjAlM0ElMjBwYXJhbURhdGFVUkklM0IlNUNuJTVDbiU1Q3QlNUN0Y29uc3QlMjBjdXJyRGF0YSUzQSUyMGFueSUyMCUzRCUyMCU3QiU1Q24lNUN0JTVDdCU1Q3RkYXRhVVJJJTJDJTVDbiU1Q3QlNUN0JTVDdGRpbWVuc2lvbnMlMkMlNUNuJTVDdCU1Q3QlNUN0ZXJyb3IlMkMlNUNuJTVDdCU1Q3QlNUN0c3JjU2V0JTJDJTVDbiU1Q3QlNUN0JTVDdGxvYWRpbmclM0ElMjAlNUMlMjJsYXp5JTVDJTIyJTJDJTVDbiU1Q3QlNUN0JTVDdGxvYWRQcm9taXNlJTNBJTIwdW5kZWZpbmVkJTJDJTVDbiU1Q3QlNUN0JTVDdG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlNUNuJTVDdCU1Q3QlN0QlM0IlNUNuJTVDbiU1Q3QlNUN0Y29uc3QlMjBpbWclMjAlM0QlMjBzY3JpcHQlM0YucGFyZW50RWxlbWVudCUzRi5xdWVyeVNlbGVjdG9yKCU1QyUyMmltZyU1QyUyMiklM0IlNUNuJTVDbiU1Q3QlNUN0Z2xvYmFsTWVkaWEubWVkaWFDb3VudFNzciUyMCUzRCUyMGdsb2JhbE1lZGlhLm1lZGlhQ291bnRTc3IlMjAlN0MlN0MlMjAwJTNCJTVDbiU1Q24lNUN0JTVDdGlmJTIwKGltZyklMjAlN0IlNUNuJTVDdCU1Q3QlNUN0aWYlMjAoJTVDbiU1Q3QlNUN0JTVDdCU1Q3RmZWF0dXJlRmxhZ3MlNUIlNUMlMjJtZWRpYS1wZXJmLWxhenktbG9hZGluZy1vcHRpbWlzYXRpb24lNUMlMjIlNUQlMjAlMjYlMjYlNUNuJTVDdCU1Q3QlNUN0JTVDdGdsb2JhbE1lZGlhLm1lZGlhQ291bnRTc3IlMjAlM0MlMjBwYXJhbXMubWF4RWFnZXJMb2FkQ291bnQlNUNuJTVDdCU1Q3QlNUN0KSUyMCU3QiU1Q24lNUN0JTVDdCU1Q3QlNUN0Z2xvYmFsTWVkaWEubWVkaWFDb3VudFNzciUyQiUyQiUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0aW1nLnJlbW92ZUF0dHJpYnV0ZSglNUMlMjJsb2FkaW5nJTVDJTIyKSUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0Y3VyckRhdGEubG9hZGluZyUyMCUzRCUyMCU1QyUyMiU1QyUyMiUzQiU1Q24lNUNuJTVDdCU1Q3QlNUN0JTVDdGNvbnN0JTIwb2JzZXJ2ZXIlMjAlM0QlMjBuZXclMjBQZXJmb3JtYW5jZU9ic2VydmVyKChlbnRyaWVzKSUyMCUzRCUzRSUyMCU3QiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdGVudHJpZXMuZ2V0RW50cmllcygpLmZvckVhY2goKGVudHJ5KSUyMCUzRCUzRSUyMCU3QiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdCU1Q3RpZiUyMChzcmNTZXQuaW5jbHVkZXMoZW50cnkubmFtZSkpJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdCU1Q3QlNUN0JTVDdCU1Q3RnbG9iYWxNZWRpYS5wZXJmb3JtYW5jZUVudHJpZXMlMjAlM0QlMjBnbG9iYWxNZWRpYS5wZXJmb3JtYW5jZUVudHJpZXMlMjAlN0MlN0MlMjAlNUIlNUQlM0IlNUNuJTVDdCU1Q3QlNUN0JTVDdCU1Q3QlNUN0JTVDdGdsb2JhbE1lZGlhLnBlcmZvcm1hbmNlRW50cmllcy5wdXNoKGVudHJ5KSUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdCU1Q3QlNUN0b2JzZXJ2ZXIuZGlzY29ubmVjdCgpJTNCJTVDbiU1Q3QlNUN0JTVDdCU1Q3QlNUN0JTVDdCU3RCU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdCU3RCklM0IlNUNuJTVDdCU1Q3QlNUN0JTVDdCU3RCklM0IlNUNuJTVDdCU1Q3QlNUN0JTVDdG9ic2VydmVyLm9ic2VydmUoJTdCJTIwdHlwZSUzQSUyMCdyZXNvdXJjZSclMjAlN0QpJTNCJTVDbiU1Q3QlNUN0JTVDdCU3RCU1Q24lNUNuJTVDdCU1Q3QlNUN0aWYlMjAoZGF0YVVSSSklMjAlN0IlNUNuJTVDdCU1Q3QlNUN0JTVDdGltZy5zcmMlMjAlM0QlMjBkYXRhVVJJJTNCJTVDbiU1Q3QlNUN0JTVDdCU3RCU1Q24lNUN0JTVDdCU1Q3RpZiUyMChzcmNTZXQpJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdCU1Q3RpbWcuc3Jjc2V0JTIwJTNEJTIwc3JjU2V0JTNCJTVDbiU1Q3QlNUN0JTVDdCU3RCU1Q24lNUN0JTVDdCU1Q3RjdXJyRGF0YS5sb2FkUHJvbWlzZSUyMCUzRCUyMG5ldyUyMFByb21pc2UlM0N2b2lkJTNFKGZ1bmN0aW9uJTIwKHJlc29sdmUlMkMlMjByZWplY3QpJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdCU1Q3QlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lNUN0JTVDdCU1Q3QlNUN0aW1nLmFkZEV2ZW50TGlzdGVuZXIoJTVDJTIybG9hZCU1QyUyMiUyQyUyMCgpJTIwJTNEJTNFJTIwcmVzb2x2ZSgpKSUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTJGJTJGJTIwZXNsaW50LWRpc2FibGUtbmV4dC1saW5lJTIwJTQwcmVwbyUyRmludGVybmFsJTJGZG9tLWV2ZW50cyUyRm5vLXVuc2FmZS1ldmVudC1saXN0ZW5lcnMlNUNuJTVDdCU1Q3QlNUN0JTVDdGltZy5hZGRFdmVudExpc3RlbmVyKCU1QyUyMmVycm9yJTVDJTIyJTJDJTIwKCklMjAlM0QlM0UlMjByZWplY3QobmV3JTIwRXJyb3IoJTVDJTIyRmFpbGVkJTIwdG8lMjBsb2FkJTIwaW1hZ2UlNUMlMjIpKSklM0IlNUNuJTVDdCU1Q3QlNUN0JTdEKSUzQiU1Q24lNUN0JTVDdCU3RCU1Q24lNUNuJTVDdCU1Q3RtZWRpYUNhcmRTc3IlNUJrZXklNUQlMjAlM0QlMjBpc1ByZXZpb3VzSW1hZ2VMYXJnZXIlMjAlM0YlMjBwcmV2RGF0YSUyMCUzQSUyMGN1cnJEYXRhJTNCJTVDbiU1Q3QlN0QlMjBlbHNlJTIwJTdCJTVDbiU1Q3QlNUN0bWVkaWFDYXJkU3NyJTVCa2V5JTVEJTIwJTNEJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdGRhdGFVUkklM0ElMjBwYXJhbURhdGFVUkklMkMlNUNuJTVDdCU1Q3QlNUN0ZGltZW5zaW9ucyUyQyU1Q24lNUN0JTVDdCU1Q3RlcnJvciUyQyU1Q24lNUN0JTVDdCU3RCUzQiU1Q24lNUN0JTdEJTVDbiU1Q24lNUN0c2NyaXB0JTNGLnJlbW92ZSgpJTNCJTVDbiU1Q24lNUN0JTJGJTJGJTIwdGhpcyUyMHJlcGxhY2UlMjB3aWxsJTIwYmUlMjB1c2VkJTIwYXMlMjBhJTIwcGxhY2Vob2xkZXIlMjBmb3IlMjB0aGUlMjBzdHJpbmdpZmllZCUyMHBhcmFtcyUyMHRvJTIwYmUlMjBpbmplY3RlZCUyMGludG8lMjB0aGUlMjBzY3JpcHQlNUNuJTdEKSglN0IlMjByZXBsYWNlJTNBJTIwJTVDJTIyJTVDJTIyJTIwJTdEKSUzQiU1Q24lMjIlMkMlMjJpc0VudHJ5JTIyJTNBdHJ1ZSU3RCU1RCU1RCUyQyUyMm9wdGlvbnMlMjIlM0ElN0IlMjJlbnRyaWVzJTIyJTNBJTVCJTVEJTJDJTIybWluaWZ5JTIyJTNBdHJ1ZSUyQyUyMnNjb3BlSG9pc3QlMjIlM0F0cnVlJTJDJTIyc291cmNlTWFwcyUyMiUzQWZhbHNlJTJDJTIycHVibGljVXJsJTIyJTNBJTIyJTJGX19yZXBsX2Rpc3QlMjIlMkMlMjJ0YXJnZXRUeXBlJTIyJTNBJTIyYnJvd3NlcnMlMjIlMkMlMjJ0YXJnZXRFbnYlMjIlM0ElMjJzaW5jZSUyMDIwMTUlMjIlMkMlMjJvdXRwdXRGb3JtYXQlMjIlM0FudWxsJTJDJTIyaG1yJTIyJTNBZmFsc2UlMkMlMjJtb2RlJTIyJTNBJTIycHJvZHVjdGlvbiUyMiUyQyUyMnJlbmRlckdyYXBocyUyMiUzQWZhbHNlJTJDJTIydmlld1NvdXJjZW1hcHMlMjIlM0FmYWxzZSUyQyUyMmRlcGVuZGVuY2llcyUyMiUzQSU1QiU1RCUyQyUyMm51bVdvcmtlcnMlMjIlM0EwJTdEJTJDJTIydXNlVGFicyUyMiUzQXRydWUlMkMlMjJicm93c2VyQ29sbGFwc2VkJTIyJTNBJTVCJTVEJTJDJTIydmlld3MlMjIlM0ElNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiU1RCUyQyUyMmN1cnJlbnRWaWV3JTIyJTNBMCU3RA==
8
+ * Ensure the settings have: Minification on and
9
9
  * 3. Copy the minified code into globalScope.tsx replacing the existing string where it says PASTE HERE
10
10
  * 4. Run the tests and make sure they pass
11
11
  * 5. TEST IN PRODUCTS BEFORE MERGING
12
12
  *
13
13
  */
14
14
 
15
- function getMediaGlobalScope() {
16
- var namespace = "__MEDIA_INTERNAL";
17
- if (!window[namespace]) {
18
- window[namespace] = {};
19
- }
20
- return window[namespace];
21
- }
22
- function getMediaCardSSR() {
23
- var globalMedia = getMediaGlobalScope();
24
- var key = "mediaCardSsr";
25
- if (!globalMedia[key]) {
26
- globalMedia[key] = {};
27
- }
28
- return globalMedia[key];
29
- }
30
- function getMediaCountSSR() {
31
- var globalMedia = getMediaGlobalScope();
32
- var key = "mediaCountSsr";
33
- if (!globalMedia[key]) {
34
- globalMedia[key] = 0;
35
- }
36
- return globalMedia[key];
37
- }
38
- function incrementMediaCountSSR() {
39
- var globalMedia = getMediaGlobalScope();
40
- var key = "mediaCountSsr";
41
- if (!globalMedia[key]) {
42
- globalMedia[key] = 0;
43
- }
44
- globalMedia[key]++;
45
- }
46
- (function (params, _document$currentScri) {
15
+ (function (params) {
47
16
  var script = document.currentScript;
48
-
49
- // Store the data
50
- var mediaCardSsr = getMediaCardSSR();
51
- var mediaCountSsr = getMediaCountSSR();
52
- var key = params.key;
53
- var paramDataURI = params.dataURI;
54
- var paramMode = params.mode;
55
- var paramSrcSet = params.srcSet;
56
- var dimensions = params.dimensions;
57
- var error = params.error;
58
- var featureFlags = params.featureFlags;
17
+ var globalMedia = window.__MEDIA_INTERNAL = window.__MEDIA_INTERNAL || {};
18
+ var mediaCardSsr = globalMedia.mediaCardSsr = globalMedia.mediaCardSsr || {};
19
+ var key = params.key,
20
+ paramDataURI = params.dataURI,
21
+ paramMode = params.mode,
22
+ paramSrcSet = params.srcSet,
23
+ dimensions = params.dimensions,
24
+ error = params.error,
25
+ featureFlags = params.featureFlags;
59
26
  if (featureFlags["media-perf-uplift-mutation-fix"]) {
27
+ var _prevData$dimensions, _script$parentElement;
60
28
  var prevData = mediaCardSsr[key];
61
- var isPreviousImageLarger = prevData && prevData.mode === paramMode && prevData.dimensions && prevData.dimensions.width && dimensions && dimensions.width && prevData.dimensions.width > dimensions.width;
29
+ var isPreviousImageLarger = prevData && prevData.mode === paramMode && ((_prevData$dimensions = prevData.dimensions) === null || _prevData$dimensions === void 0 ? void 0 : _prevData$dimensions.width) && (dimensions === null || dimensions === void 0 ? void 0 : dimensions.width) && prevData.dimensions.width > dimensions.width;
62
30
  var srcSet = isPreviousImageLarger ? prevData.srcSet : paramSrcSet;
63
31
  var dataURI = isPreviousImageLarger ? prevData.dataURI : paramDataURI;
64
32
  var currData = {
@@ -70,32 +38,43 @@ function incrementMediaCountSSR() {
70
38
  loadPromise: undefined,
71
39
  mode: paramMode
72
40
  };
73
- var img = script && script.parentElement && script.parentElement.querySelector("img");
74
- if (img && featureFlags["media-perf-lazy-loading-optimisation"] && mediaCountSsr < params.maxEagerLoadCount) {
75
- incrementMediaCountSSR();
76
- if (img.getAttribute("loading") === "lazy") {
41
+ var img = script === null || script === void 0 || (_script$parentElement = script.parentElement) === null || _script$parentElement === void 0 ? void 0 : _script$parentElement.querySelector("img");
42
+ globalMedia.mediaCountSsr = globalMedia.mediaCountSsr || 0;
43
+ if (img) {
44
+ if (featureFlags["media-perf-lazy-loading-optimisation"] && globalMedia.mediaCountSsr < params.maxEagerLoadCount) {
45
+ globalMedia.mediaCountSsr++;
77
46
  img.removeAttribute("loading");
47
+ currData.loading = "";
48
+ var observer = new PerformanceObserver(function (entries) {
49
+ entries.getEntries().forEach(function (entry) {
50
+ if (srcSet.includes(entry.name)) {
51
+ globalMedia.performanceEntries = globalMedia.performanceEntries || [];
52
+ globalMedia.performanceEntries.push(entry);
53
+ observer.disconnect();
54
+ }
55
+ });
56
+ });
57
+ observer.observe({
58
+ type: 'resource'
59
+ });
78
60
  }
79
- currData.loading = "";
80
- }
81
- if (img && dataURI) {
82
- img.src = dataURI;
83
- }
84
- if (img && srcSet) {
85
- img.srcset = srcSet;
86
- }
87
- currData.loadPromise = new Promise(function (resolve, reject) {
88
- if (img) {
61
+ if (dataURI) {
62
+ img.src = dataURI;
63
+ }
64
+ if (srcSet) {
65
+ img.srcset = srcSet;
66
+ }
67
+ currData.loadPromise = new Promise(function (resolve, reject) {
89
68
  // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
90
69
  img.addEventListener("load", function () {
91
- resolve(undefined);
70
+ return resolve();
92
71
  });
93
72
  // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
94
73
  img.addEventListener("error", function () {
95
- reject(new Error("Failed to load image"));
74
+ return reject(new Error("Failed to load image"));
96
75
  });
97
- }
98
- });
76
+ });
77
+ }
99
78
  mediaCardSsr[key] = isPreviousImageLarger ? prevData : currData;
100
79
  } else {
101
80
  mediaCardSsr[key] = {
@@ -104,9 +83,7 @@ function incrementMediaCountSSR() {
104
83
  error: error
105
84
  };
106
85
  }
107
-
108
- // Remove script to prevent hydration mismatch
109
- (_document$currentScri = document.currentScript) === null || _document$currentScri === void 0 || _document$currentScri.remove();
86
+ script === null || script === void 0 || script.remove();
110
87
 
111
88
  // this replace will be used as a placeholder for the stringified params to be injected into the script
112
89
  })({
@@ -108,12 +108,19 @@ export var useFilePreview = function useFilePreview(_ref) {
108
108
  });
109
109
  }
110
110
  if (!(ssrData !== null && ssrData !== void 0 && ssrData.dataURI)) {
111
- try {
112
- return getSSRPreview(ssr, mediaClient, identifier.id, imageURLParams, mediaBlobUrlAttrs);
113
- } catch (e) {
114
- ssrReliabilityRef.current = _objectSpread(_objectSpread({}, ssrReliabilityRef.current), {}, _defineProperty({}, ssr, _objectSpread({
115
- status: 'fail'
116
- }, extractErrorInfo(e, traceContext))));
111
+ // Only attempt SSR preview generation if:
112
+ // 1. We're on the server (ssr='server'), OR
113
+ // 2. We're on the client AND there is SSR data (meaning SSR actually happened)
114
+ // If ssr='client' but there's no SSR data, it means this is a client-side navigation
115
+ // where no SSR occurred, so we should skip SSR preview generation entirely.
116
+ if (ssr === 'server' || ssrData) {
117
+ try {
118
+ return getSSRPreview(ssr, mediaClient, identifier.id, imageURLParams, mediaBlobUrlAttrs);
119
+ } catch (e) {
120
+ ssrReliabilityRef.current = _objectSpread(_objectSpread({}, ssrReliabilityRef.current), {}, _defineProperty({}, ssr, _objectSpread({
121
+ status: 'fail'
122
+ }, extractErrorInfo(e, traceContext))));
123
+ }
117
124
  }
118
125
  } else {
119
126
  var _dimensions = ssrData.dimensions,
@@ -299,7 +306,7 @@ export var useFilePreview = function useFilePreview(_ref) {
299
306
  client: createFailedSSRObject(failedPreview, traceContext)
300
307
  });
301
308
  }
302
- var isSSR = isSSRDataPreview(failedPreview) || (fg('jfp-magma-fix-failed-ssr-preview-load') ? isSSRClientPreview(failedPreview) : false);
309
+ var isSSR = isSSRDataPreview(failedPreview) || isSSRClientPreview(failedPreview);
303
310
 
304
311
  // If the preview failed and it comes from server (global scope / ssrData), it means that we have reused it in client and the error counts for both: server & client.
305
312
  if (isSSR) {
@@ -5,10 +5,12 @@ import { type MediaFilePreviewErrorInfo } from '../analytics';
5
5
  import { type MediaCardSsr } from './types';
6
6
  export declare const GLOBAL_MEDIA_CARD_SSR = "mediaCardSsr";
7
7
  export declare const GLOBAL_MEDIA_COUNT_SSR = "mediaCountSsr";
8
+ export declare const GLOBAL_MEDIA_PERFORMANCE_ENTRIES = "performanceEntries";
8
9
  export declare const GLOBAL_MEDIA_NAMESPACE = "__MEDIA_INTERNAL";
9
10
  export type MediaGlobalScope = {
10
11
  [GLOBAL_MEDIA_CARD_SSR]?: MediaCardSsr;
11
12
  [GLOBAL_MEDIA_COUNT_SSR]?: number;
13
+ [GLOBAL_MEDIA_PERFORMANCE_ENTRIES]?: PerformanceEntry[];
12
14
  };
13
15
  type MediaFeatureFlags = {
14
16
  'media-perf-uplift-mutation-fix'?: boolean;
@@ -1,15 +0,0 @@
1
- /** IMPORTANT: This is the original code for the script.
2
- * Do not change the code without testing it in product first.
3
- * Steps:
4
- * 1. Make changes in this code
5
- * 2. Manually minify the code via https://repl.parceljs.org/ (using typescript preset with minify option)
6
- * - eg: https://repl.parceljs.org/#JTdCJTIyZmlsZXMlMjIlM0ElNUIlNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiUyQyU3QiUyMnZhbHVlJTIyJTNBJTIyJTJGKiUyMGVzbGludC1kaXNhYmxlJTIwJTQwYXRsYXNraXQlMkZwbGF0Zm9ybSUyRm5vLWRpcmVjdC1kb2N1bWVudC11c2FnZSUyMColMkYlNUNuJTVDbiUyRioqJTIwSU1QT1JUQU5UJTNBJTIwVGhpcyUyMGlzJTIwdGhlJTIwb3JpZ2luYWwlMjBjb2RlJTIwZm9yJTIwdGhlJTIwc2NyaXB0LiU1Q24lMjAqJTIwRG8lMjBub3QlMjBjaGFuZ2UlMjB0aGUlMjBjb2RlJTIwd2l0aG91dCUyMHRlc3RpbmclMjBpdCUyMGluJTIwcHJvZHVjdCUyMGZpcnN0LiU1Q24lMjAqJTIwU3RlcHMlM0ElNUNuJTIwKiUyMDEuJTIwTWFrZSUyMGNoYW5nZXMlMjBpbiUyMHRoaXMlMjBjb2RlJTVDbiUyMColMjAyLiUyME1hbnVhbGx5JTIwbWluaWZ5JTIwdGhlJTIwY29kZSUyMHZpYSUyMGh0dHBzJTNBJTJGJTJGcmVwbC5wYXJjZWxqcy5vcmclMkYlNUNuJTIwKiUyMDMuJTIwQ29weSUyMHRoZSUyMG1pbmlmaWVkJTIwY29kZSUyMGludG8lMjBnbG9iYWxTY29wZS50c3glMjByZXBsYWNpbmclMjB0aGUlMjBleGlzdGluZyUyMHN0cmluZyUyMHdoZXJlJTIwaXQlMjBzYXlzJTIwUEFTVEUlMjBIRVJFJTVDbiUyMColMjA0LiUyMFJ1biUyMHRoZSUyMHRlc3RzJTIwYW5kJTIwbWFrZSUyMHN1cmUlMjB0aGV5JTIwcGFzcyU1Q24lMjAqJTIwNS4lMjBURVNUJTIwSU4lMjBQUk9EVUNUUyUyMEJFRk9SRSUyME1FUkdJTkclNUNuJTIwKiU1Q24lMjAqJTJGJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhR2xvYmFsU2NvcGUoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMG5hbWVzcGFjZSUyMCUzRCUyMCU1QyUyMl9fTUVESUFfSU5URVJOQUwlNUMlMjIlM0IlNUNuJTIwJTIwaWYlMjAoISh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMCh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQlMjAlM0QlMjAlN0IlN0QlM0IlNUNuJTIwJTIwJTdEJTVDbiUyMCUyMHJldHVybiUyMCh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhQ2FyZFNTUigpJTIwJTdCJTVDbiUyMCUyMGNvbnN0JTIwZ2xvYmFsTWVkaWElMjAlM0QlMjBnZXRNZWRpYUdsb2JhbFNjb3BlKCklM0IlNUNuJTIwJTIwY29uc3QlMjBrZXklMjAlM0QlMjAlNUMlMjJtZWRpYUNhcmRTc3IlNUMlMjIlM0IlNUNuJTIwJTIwaWYlMjAoIWdsb2JhbE1lZGlhJTVCa2V5JTVEKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjBnbG9iYWxNZWRpYSU1QmtleSU1RCUyMCUzRCUyMCU3QiU3RCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwcmV0dXJuJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhQ291bnRTU1IoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwZ2V0TWVkaWFHbG9iYWxTY29wZSgpJTNCJTVDbiUyMCUyMGNvbnN0JTIwa2V5JTIwJTNEJTIwJTVDJTIybWVkaWFDb3VudFNzciU1QyUyMiUzQiU1Q24lMjAlMjBpZiUyMCghZ2xvYmFsTWVkaWElNUJrZXklNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMGdsb2JhbE1lZGlhJTVCa2V5JTVEJTIwJTNEJTIwMCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwcmV0dXJuJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGluY3JlbWVudE1lZGlhQ291bnRTU1IoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwZ2V0TWVkaWFHbG9iYWxTY29wZSgpJTNCJTVDbiUyMCUyMGNvbnN0JTIwa2V5JTIwJTNEJTIwJTVDJTIybWVkaWFDb3VudFNzciU1QyUyMiUzQiU1Q24lMjAlMjBpZiUyMCghZ2xvYmFsTWVkaWElNUJrZXklNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMGdsb2JhbE1lZGlhJTVCa2V5JTVEJTIwJTNEJTIwMCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlMkIlMkIlM0IlNUNuJTdEJTVDbiU1Q24oZnVuY3Rpb24lMjAocGFyYW1zJTNBJTIwYW55KSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMHNjcmlwdCUyMCUzRCUyMGRvY3VtZW50LmN1cnJlbnRTY3JpcHQlM0IlNUNuJTVDbiUyMCUyMCUyRiUyRiUyMFN0b3JlJTIwdGhlJTIwZGF0YSU1Q24lMjAlMjBjb25zdCUyMG1lZGlhQ2FyZFNzciUyMCUzRCUyMGdldE1lZGlhQ2FyZFNTUigpJTNCJTVDbiUyMCUyMGNvbnN0JTIwbWVkaWFDb3VudFNzciUyMCUzRCUyMGdldE1lZGlhQ291bnRTU1IoKSUzQiU1Q24lMjAlMjBjb25zdCUyMCU3QiUyMGtleSUyMCU3RCUyMCUzRCUyMHBhcmFtcyUzQiU1Q24lMjAlMjBjb25zdCUyMHBhcmFtRGF0YVVSSSUyMCUzRCUyMHBhcmFtcy5kYXRhVVJJJTNCJTVDbiUyMCUyMGNvbnN0JTIwcGFyYW1Nb2RlJTIwJTNEJTIwcGFyYW1zLm1vZGUlM0IlNUNuJTIwJTIwY29uc3QlMjBwYXJhbVNyY1NldCUyMCUzRCUyMHBhcmFtcy5zcmNTZXQlM0IlNUNuJTIwJTIwY29uc3QlMjAlN0IlMjBkaW1lbnNpb25zJTIwJTdEJTIwJTNEJTIwcGFyYW1zJTNCJTVDbiUyMCUyMGNvbnN0JTIwJTdCJTIwZXJyb3IlMjAlN0QlMjAlM0QlMjBwYXJhbXMlM0IlNUNuJTIwJTIwY29uc3QlMjAlN0IlMjBmZWF0dXJlRmxhZ3MlMjAlN0QlMjAlM0QlMjBwYXJhbXMlM0IlNUNuJTVDbiUyMCUyMGlmJTIwKGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtdXBsaWZ0LW11dGF0aW9uLWZpeCU1QyUyMiU1RCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBwcmV2RGF0YSUyMCUzRCUyMG1lZGlhQ2FyZFNzciU1QmtleSU1RCUzQiU1Q24lMjAlMjAlMjAlMjBjb25zdCUyMGlzUHJldmlvdXNJbWFnZUxhcmdlciUyMCUzRCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBwcmV2RGF0YSUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBwcmV2RGF0YS5tb2RlJTIwJTNEJTNEJTNEJTIwcGFyYW1Nb2RlJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMHByZXZEYXRhLmRpbWVuc2lvbnMlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwcHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkaW1lbnNpb25zJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMud2lkdGglMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwcHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUzRSUyMGRpbWVuc2lvbnMud2lkdGglM0IlNUNuJTVDbiUyMCUyMCUyMCUyMGNvbnN0JTIwc3JjU2V0JTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGEuc3JjU2V0JTIwJTNBJTIwcGFyYW1TcmNTZXQlM0IlNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBkYXRhVVJJJTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGEuZGF0YVVSSSUyMCUzQSUyMHBhcmFtRGF0YVVSSSUzQiU1Q24lNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBjdXJyRGF0YSUzQSUyMGFueSUyMCUzRCUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkYXRhVVJJJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwZXJyb3IlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc3JjU2V0JTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGxvYWRpbmclM0ElMjAlNUMlMjJsYXp5JTVDJTIyJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGxvYWRQcm9taXNlJTNBJTIwdW5kZWZpbmVkJTJDJTVDbiU1Q3QlNUN0JTVDdG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlNUNuJTIwJTIwJTIwJTIwJTdEJTNCJTVDbiU1Q24lMjAlMjAlMjAlMjBjb25zdCUyMGltZyUyMCUzRCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBzY3JpcHQlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc2NyaXB0LnBhcmVudEVsZW1lbnQlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc2NyaXB0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvciglNUMlMjJpbWclNUMlMjIpJTNCJTVDbiU1Q24lMjAlMjAlMjAlMjBpZiUyMCglNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtbGF6eS1sb2FkaW5nLW9wdGltaXNhdGlvbiU1QyUyMiU1RCUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBtZWRpYUNvdW50U3NyJTIwJTNDJTIwcGFyYW1zLm1heEVhZ2VyTG9hZENvdW50JTVDbiUyMCUyMCUyMCUyMCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW5jcmVtZW50TWVkaWFDb3VudFNTUigpJTNCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwKGltZy5nZXRBdHRyaWJ1dGUoJTVDJTIybG9hZGluZyU1QyUyMiklMjAlM0QlM0QlM0QlMjAlNUMlMjJsYXp5JTVDJTIyKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcucmVtb3ZlQXR0cmlidXRlKCU1QyUyMmxvYWRpbmclNUMlMjIpJTNCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCU3RCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBjdXJyRGF0YS5sb2FkaW5nJTIwJTNEJTIwJTVDJTIyJTVDJTIyJTNCJTVDbiUyMCUyMCUyMCUyMCU3RCU1Q24lNUNuJTIwJTIwJTIwJTIwaWYlMjAoaW1nJTIwJTI2JTI2JTIwZGF0YVVSSSklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nLnNyYyUyMCUzRCUyMGRhdGFVUkklM0IlNUNuJTIwJTIwJTIwJTIwJTdEJTVDbiUyMCUyMCUyMCUyMGlmJTIwKGltZyUyMCUyNiUyNiUyMHNyY1NldCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nLnNyY3NldCUyMCUzRCUyMHNyY1NldCUzQiU1Q24lMjAlMjAlMjAlMjAlN0QlNUNuJTVDbiUyMCUyMCUyMCUyMGN1cnJEYXRhLmxvYWRQcm9taXNlJTIwJTNEJTIwbmV3JTIwUHJvbWlzZSUzQ3ZvaWQlM0UoZnVuY3Rpb24lMjAocmVzb2x2ZSUyQyUyMHJlamVjdCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjAoaW1nKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcuYWRkRXZlbnRMaXN0ZW5lciglNUMlMjJsb2FkJTVDJTIyJTJDJTIwZnVuY3Rpb24lMjAoKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXNvbHZlKHVuZGVmaW5lZCklM0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcuYWRkRXZlbnRMaXN0ZW5lciglNUMlMjJlcnJvciU1QyUyMiUyQyUyMGZ1bmN0aW9uJTIwKCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmVqZWN0KG5ldyUyMEVycm9yKCU1QyUyMkZhaWxlZCUyMHRvJTIwbG9hZCUyMGltYWdlJTVDJTIyKSklM0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlN0QlNUNuJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lNUNuJTIwJTIwJTIwJTIwbWVkaWFDYXJkU3NyJTVCa2V5JTVEJTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGElMjAlM0ElMjBjdXJyRGF0YSUzQiU1Q24lMjAlMjAlN0QlMjBlbHNlJTIwJTdCJTVDbiUyMCUyMCUyMCUyMG1lZGlhQ2FyZFNzciU1QmtleSU1RCUyMCUzRCUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkYXRhVVJJJTNBJTIwcGFyYW1EYXRhVVJJJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwZXJyb3IlMkMlNUNuJTIwJTIwJTIwJTIwJTdEJTNCJTVDbiUyMCUyMCU3RCU1Q24lNUNuJTIwJTIwJTJGJTJGJTIwUmVtb3ZlJTIwc2NyaXB0JTIwdG8lMjBwcmV2ZW50JTIwaHlkcmF0aW9uJTIwbWlzbWF0Y2glNUNuJTIwJTIwZG9jdW1lbnQuY3VycmVudFNjcmlwdCUzRi5yZW1vdmUoKSUzQiU1Q24lNUNuJTVDdCUyRiUyRiUyMHRoaXMlMjByZXBsYWNlJTIwd2lsbCUyMGJlJTIwdXNlZCUyMGFzJTIwYSUyMHBsYWNlaG9sZGVyJTIwZm9yJTIwdGhlJTIwc3RyaW5naWZpZWQlMjBwYXJhbXMlMjB0byUyMGJlJTIwaW5qZWN0ZWQlMjBpbnRvJTIwdGhlJTIwc2NyaXB0JTVDbiU3RCkoJTdCJTIwcmVwbGFjZSUzQSUyMCU1QyUyMiU1QyUyMiUyMCU3RCklM0IlNUNuJTIyJTJDJTIyaXNFbnRyeSUyMiUzQXRydWUlN0QlNUQlNUQlMkMlMjJvcHRpb25zJTIyJTNBJTdCJTIyZW50cmllcyUyMiUzQSU1QiU1RCUyQyUyMm1pbmlmeSUyMiUzQXRydWUlMkMlMjJzY29wZUhvaXN0JTIyJTNBdHJ1ZSUyQyUyMnNvdXJjZU1hcHMlMjIlM0FmYWxzZSUyQyUyMnB1YmxpY1VybCUyMiUzQSUyMiUyRl9fcmVwbF9kaXN0JTIyJTJDJTIydGFyZ2V0VHlwZSUyMiUzQSUyMmJyb3dzZXJzJTIyJTJDJTIydGFyZ2V0RW52JTIyJTNBbnVsbCUyQyUyMm91dHB1dEZvcm1hdCUyMiUzQW51bGwlMkMlMjJobXIlMjIlM0FmYWxzZSUyQyUyMm1vZGUlMjIlM0ElMjJwcm9kdWN0aW9uJTIyJTJDJTIycmVuZGVyR3JhcGhzJTIyJTNBZmFsc2UlMkMlMjJ2aWV3U291cmNlbWFwcyUyMiUzQWZhbHNlJTJDJTIyZGVwZW5kZW5jaWVzJTIyJTNBJTVCJTVEJTJDJTIybnVtV29ya2VycyUyMiUzQTAlN0QlMkMlMjJ1c2VUYWJzJTIyJTNBdHJ1ZSUyQyUyMmJyb3dzZXJDb2xsYXBzZWQlMjIlM0ElNUIlNUQlMkMlMjJ2aWV3cyUyMiUzQSU1QiUyMiUyRnNyYyUyRmluZGV4LnRzJTIyJTVEJTJDJTIyY3VycmVudFZpZXclMjIlM0EwJTdE
7
- * 3. Copy the minified code into globalScope.tsx replacing the existing string where it says PASTE HERE
8
- * 4. Run the tests and make sure they pass
9
- * 5. TEST IN PRODUCTS BEFORE MERGING
10
- *
11
- */
12
- declare function getMediaGlobalScope(): any;
13
- declare function getMediaCardSSR(): any;
14
- declare function getMediaCountSSR(): any;
15
- declare function incrementMediaCountSSR(): void;
@@ -39,5 +39,5 @@ export declare const useFilePreview: ({ resizeMode, identifier, ssr, dimensions,
39
39
  onImageError: (failedPreview?: MediaFilePreview) => void;
40
40
  onImageLoad: (newPreview?: MediaFilePreview) => void;
41
41
  getSsrScriptProps: (() => import("react").ScriptHTMLAttributes<HTMLScriptElement>) | undefined;
42
- copyNodeRef: (instance: HTMLDivElement | HTMLImageElement | null) => void;
42
+ copyNodeRef: (instance: HTMLDivElement | HTMLImageElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES];
43
43
  };
@@ -5,10 +5,12 @@ import { type MediaFilePreviewErrorInfo } from '../analytics';
5
5
  import { type MediaCardSsr } from './types';
6
6
  export declare const GLOBAL_MEDIA_CARD_SSR = "mediaCardSsr";
7
7
  export declare const GLOBAL_MEDIA_COUNT_SSR = "mediaCountSsr";
8
+ export declare const GLOBAL_MEDIA_PERFORMANCE_ENTRIES = "performanceEntries";
8
9
  export declare const GLOBAL_MEDIA_NAMESPACE = "__MEDIA_INTERNAL";
9
10
  export type MediaGlobalScope = {
10
11
  [GLOBAL_MEDIA_CARD_SSR]?: MediaCardSsr;
11
12
  [GLOBAL_MEDIA_COUNT_SSR]?: number;
13
+ [GLOBAL_MEDIA_PERFORMANCE_ENTRIES]?: PerformanceEntry[];
12
14
  };
13
15
  type MediaFeatureFlags = {
14
16
  'media-perf-uplift-mutation-fix'?: boolean;
@@ -1,15 +0,0 @@
1
- /** IMPORTANT: This is the original code for the script.
2
- * Do not change the code without testing it in product first.
3
- * Steps:
4
- * 1. Make changes in this code
5
- * 2. Manually minify the code via https://repl.parceljs.org/ (using typescript preset with minify option)
6
- * - eg: https://repl.parceljs.org/#JTdCJTIyZmlsZXMlMjIlM0ElNUIlNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiUyQyU3QiUyMnZhbHVlJTIyJTNBJTIyJTJGKiUyMGVzbGludC1kaXNhYmxlJTIwJTQwYXRsYXNraXQlMkZwbGF0Zm9ybSUyRm5vLWRpcmVjdC1kb2N1bWVudC11c2FnZSUyMColMkYlNUNuJTVDbiUyRioqJTIwSU1QT1JUQU5UJTNBJTIwVGhpcyUyMGlzJTIwdGhlJTIwb3JpZ2luYWwlMjBjb2RlJTIwZm9yJTIwdGhlJTIwc2NyaXB0LiU1Q24lMjAqJTIwRG8lMjBub3QlMjBjaGFuZ2UlMjB0aGUlMjBjb2RlJTIwd2l0aG91dCUyMHRlc3RpbmclMjBpdCUyMGluJTIwcHJvZHVjdCUyMGZpcnN0LiU1Q24lMjAqJTIwU3RlcHMlM0ElNUNuJTIwKiUyMDEuJTIwTWFrZSUyMGNoYW5nZXMlMjBpbiUyMHRoaXMlMjBjb2RlJTVDbiUyMColMjAyLiUyME1hbnVhbGx5JTIwbWluaWZ5JTIwdGhlJTIwY29kZSUyMHZpYSUyMGh0dHBzJTNBJTJGJTJGcmVwbC5wYXJjZWxqcy5vcmclMkYlNUNuJTIwKiUyMDMuJTIwQ29weSUyMHRoZSUyMG1pbmlmaWVkJTIwY29kZSUyMGludG8lMjBnbG9iYWxTY29wZS50c3glMjByZXBsYWNpbmclMjB0aGUlMjBleGlzdGluZyUyMHN0cmluZyUyMHdoZXJlJTIwaXQlMjBzYXlzJTIwUEFTVEUlMjBIRVJFJTVDbiUyMColMjA0LiUyMFJ1biUyMHRoZSUyMHRlc3RzJTIwYW5kJTIwbWFrZSUyMHN1cmUlMjB0aGV5JTIwcGFzcyU1Q24lMjAqJTIwNS4lMjBURVNUJTIwSU4lMjBQUk9EVUNUUyUyMEJFRk9SRSUyME1FUkdJTkclNUNuJTIwKiU1Q24lMjAqJTJGJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhR2xvYmFsU2NvcGUoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMG5hbWVzcGFjZSUyMCUzRCUyMCU1QyUyMl9fTUVESUFfSU5URVJOQUwlNUMlMjIlM0IlNUNuJTIwJTIwaWYlMjAoISh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMCh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQlMjAlM0QlMjAlN0IlN0QlM0IlNUNuJTIwJTIwJTdEJTVDbiUyMCUyMHJldHVybiUyMCh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhQ2FyZFNTUigpJTIwJTdCJTVDbiUyMCUyMGNvbnN0JTIwZ2xvYmFsTWVkaWElMjAlM0QlMjBnZXRNZWRpYUdsb2JhbFNjb3BlKCklM0IlNUNuJTIwJTIwY29uc3QlMjBrZXklMjAlM0QlMjAlNUMlMjJtZWRpYUNhcmRTc3IlNUMlMjIlM0IlNUNuJTIwJTIwaWYlMjAoIWdsb2JhbE1lZGlhJTVCa2V5JTVEKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjBnbG9iYWxNZWRpYSU1QmtleSU1RCUyMCUzRCUyMCU3QiU3RCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwcmV0dXJuJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhQ291bnRTU1IoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwZ2V0TWVkaWFHbG9iYWxTY29wZSgpJTNCJTVDbiUyMCUyMGNvbnN0JTIwa2V5JTIwJTNEJTIwJTVDJTIybWVkaWFDb3VudFNzciU1QyUyMiUzQiU1Q24lMjAlMjBpZiUyMCghZ2xvYmFsTWVkaWElNUJrZXklNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMGdsb2JhbE1lZGlhJTVCa2V5JTVEJTIwJTNEJTIwMCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwcmV0dXJuJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGluY3JlbWVudE1lZGlhQ291bnRTU1IoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwZ2V0TWVkaWFHbG9iYWxTY29wZSgpJTNCJTVDbiUyMCUyMGNvbnN0JTIwa2V5JTIwJTNEJTIwJTVDJTIybWVkaWFDb3VudFNzciU1QyUyMiUzQiU1Q24lMjAlMjBpZiUyMCghZ2xvYmFsTWVkaWElNUJrZXklNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMGdsb2JhbE1lZGlhJTVCa2V5JTVEJTIwJTNEJTIwMCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlMkIlMkIlM0IlNUNuJTdEJTVDbiU1Q24oZnVuY3Rpb24lMjAocGFyYW1zJTNBJTIwYW55KSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMHNjcmlwdCUyMCUzRCUyMGRvY3VtZW50LmN1cnJlbnRTY3JpcHQlM0IlNUNuJTVDbiUyMCUyMCUyRiUyRiUyMFN0b3JlJTIwdGhlJTIwZGF0YSU1Q24lMjAlMjBjb25zdCUyMG1lZGlhQ2FyZFNzciUyMCUzRCUyMGdldE1lZGlhQ2FyZFNTUigpJTNCJTVDbiUyMCUyMGNvbnN0JTIwbWVkaWFDb3VudFNzciUyMCUzRCUyMGdldE1lZGlhQ291bnRTU1IoKSUzQiU1Q24lMjAlMjBjb25zdCUyMCU3QiUyMGtleSUyMCU3RCUyMCUzRCUyMHBhcmFtcyUzQiU1Q24lMjAlMjBjb25zdCUyMHBhcmFtRGF0YVVSSSUyMCUzRCUyMHBhcmFtcy5kYXRhVVJJJTNCJTVDbiUyMCUyMGNvbnN0JTIwcGFyYW1Nb2RlJTIwJTNEJTIwcGFyYW1zLm1vZGUlM0IlNUNuJTIwJTIwY29uc3QlMjBwYXJhbVNyY1NldCUyMCUzRCUyMHBhcmFtcy5zcmNTZXQlM0IlNUNuJTIwJTIwY29uc3QlMjAlN0IlMjBkaW1lbnNpb25zJTIwJTdEJTIwJTNEJTIwcGFyYW1zJTNCJTVDbiUyMCUyMGNvbnN0JTIwJTdCJTIwZXJyb3IlMjAlN0QlMjAlM0QlMjBwYXJhbXMlM0IlNUNuJTIwJTIwY29uc3QlMjAlN0IlMjBmZWF0dXJlRmxhZ3MlMjAlN0QlMjAlM0QlMjBwYXJhbXMlM0IlNUNuJTVDbiUyMCUyMGlmJTIwKGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtdXBsaWZ0LW11dGF0aW9uLWZpeCU1QyUyMiU1RCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBwcmV2RGF0YSUyMCUzRCUyMG1lZGlhQ2FyZFNzciU1QmtleSU1RCUzQiU1Q24lMjAlMjAlMjAlMjBjb25zdCUyMGlzUHJldmlvdXNJbWFnZUxhcmdlciUyMCUzRCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBwcmV2RGF0YSUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBwcmV2RGF0YS5tb2RlJTIwJTNEJTNEJTNEJTIwcGFyYW1Nb2RlJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMHByZXZEYXRhLmRpbWVuc2lvbnMlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwcHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkaW1lbnNpb25zJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMud2lkdGglMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwcHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUzRSUyMGRpbWVuc2lvbnMud2lkdGglM0IlNUNuJTVDbiUyMCUyMCUyMCUyMGNvbnN0JTIwc3JjU2V0JTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGEuc3JjU2V0JTIwJTNBJTIwcGFyYW1TcmNTZXQlM0IlNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBkYXRhVVJJJTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGEuZGF0YVVSSSUyMCUzQSUyMHBhcmFtRGF0YVVSSSUzQiU1Q24lNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBjdXJyRGF0YSUzQSUyMGFueSUyMCUzRCUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkYXRhVVJJJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwZXJyb3IlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc3JjU2V0JTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGxvYWRpbmclM0ElMjAlNUMlMjJsYXp5JTVDJTIyJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGxvYWRQcm9taXNlJTNBJTIwdW5kZWZpbmVkJTJDJTVDbiU1Q3QlNUN0JTVDdG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlNUNuJTIwJTIwJTIwJTIwJTdEJTNCJTVDbiU1Q24lMjAlMjAlMjAlMjBjb25zdCUyMGltZyUyMCUzRCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBzY3JpcHQlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc2NyaXB0LnBhcmVudEVsZW1lbnQlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc2NyaXB0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvciglNUMlMjJpbWclNUMlMjIpJTNCJTVDbiU1Q24lMjAlMjAlMjAlMjBpZiUyMCglNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtbGF6eS1sb2FkaW5nLW9wdGltaXNhdGlvbiU1QyUyMiU1RCUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBtZWRpYUNvdW50U3NyJTIwJTNDJTIwcGFyYW1zLm1heEVhZ2VyTG9hZENvdW50JTVDbiUyMCUyMCUyMCUyMCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW5jcmVtZW50TWVkaWFDb3VudFNTUigpJTNCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwKGltZy5nZXRBdHRyaWJ1dGUoJTVDJTIybG9hZGluZyU1QyUyMiklMjAlM0QlM0QlM0QlMjAlNUMlMjJsYXp5JTVDJTIyKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcucmVtb3ZlQXR0cmlidXRlKCU1QyUyMmxvYWRpbmclNUMlMjIpJTNCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCU3RCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBjdXJyRGF0YS5sb2FkaW5nJTIwJTNEJTIwJTVDJTIyJTVDJTIyJTNCJTVDbiUyMCUyMCUyMCUyMCU3RCU1Q24lNUNuJTIwJTIwJTIwJTIwaWYlMjAoaW1nJTIwJTI2JTI2JTIwZGF0YVVSSSklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nLnNyYyUyMCUzRCUyMGRhdGFVUkklM0IlNUNuJTIwJTIwJTIwJTIwJTdEJTVDbiUyMCUyMCUyMCUyMGlmJTIwKGltZyUyMCUyNiUyNiUyMHNyY1NldCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nLnNyY3NldCUyMCUzRCUyMHNyY1NldCUzQiU1Q24lMjAlMjAlMjAlMjAlN0QlNUNuJTVDbiUyMCUyMCUyMCUyMGN1cnJEYXRhLmxvYWRQcm9taXNlJTIwJTNEJTIwbmV3JTIwUHJvbWlzZSUzQ3ZvaWQlM0UoZnVuY3Rpb24lMjAocmVzb2x2ZSUyQyUyMHJlamVjdCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjAoaW1nKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcuYWRkRXZlbnRMaXN0ZW5lciglNUMlMjJsb2FkJTVDJTIyJTJDJTIwZnVuY3Rpb24lMjAoKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXNvbHZlKHVuZGVmaW5lZCklM0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcuYWRkRXZlbnRMaXN0ZW5lciglNUMlMjJlcnJvciU1QyUyMiUyQyUyMGZ1bmN0aW9uJTIwKCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmVqZWN0KG5ldyUyMEVycm9yKCU1QyUyMkZhaWxlZCUyMHRvJTIwbG9hZCUyMGltYWdlJTVDJTIyKSklM0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlN0QlNUNuJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lNUNuJTIwJTIwJTIwJTIwbWVkaWFDYXJkU3NyJTVCa2V5JTVEJTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGElMjAlM0ElMjBjdXJyRGF0YSUzQiU1Q24lMjAlMjAlN0QlMjBlbHNlJTIwJTdCJTVDbiUyMCUyMCUyMCUyMG1lZGlhQ2FyZFNzciU1QmtleSU1RCUyMCUzRCUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkYXRhVVJJJTNBJTIwcGFyYW1EYXRhVVJJJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwZXJyb3IlMkMlNUNuJTIwJTIwJTIwJTIwJTdEJTNCJTVDbiUyMCUyMCU3RCU1Q24lNUNuJTIwJTIwJTJGJTJGJTIwUmVtb3ZlJTIwc2NyaXB0JTIwdG8lMjBwcmV2ZW50JTIwaHlkcmF0aW9uJTIwbWlzbWF0Y2glNUNuJTIwJTIwZG9jdW1lbnQuY3VycmVudFNjcmlwdCUzRi5yZW1vdmUoKSUzQiU1Q24lNUNuJTVDdCUyRiUyRiUyMHRoaXMlMjByZXBsYWNlJTIwd2lsbCUyMGJlJTIwdXNlZCUyMGFzJTIwYSUyMHBsYWNlaG9sZGVyJTIwZm9yJTIwdGhlJTIwc3RyaW5naWZpZWQlMjBwYXJhbXMlMjB0byUyMGJlJTIwaW5qZWN0ZWQlMjBpbnRvJTIwdGhlJTIwc2NyaXB0JTVDbiU3RCkoJTdCJTIwcmVwbGFjZSUzQSUyMCU1QyUyMiU1QyUyMiUyMCU3RCklM0IlNUNuJTIyJTJDJTIyaXNFbnRyeSUyMiUzQXRydWUlN0QlNUQlNUQlMkMlMjJvcHRpb25zJTIyJTNBJTdCJTIyZW50cmllcyUyMiUzQSU1QiU1RCUyQyUyMm1pbmlmeSUyMiUzQXRydWUlMkMlMjJzY29wZUhvaXN0JTIyJTNBdHJ1ZSUyQyUyMnNvdXJjZU1hcHMlMjIlM0FmYWxzZSUyQyUyMnB1YmxpY1VybCUyMiUzQSUyMiUyRl9fcmVwbF9kaXN0JTIyJTJDJTIydGFyZ2V0VHlwZSUyMiUzQSUyMmJyb3dzZXJzJTIyJTJDJTIydGFyZ2V0RW52JTIyJTNBbnVsbCUyQyUyMm91dHB1dEZvcm1hdCUyMiUzQW51bGwlMkMlMjJobXIlMjIlM0FmYWxzZSUyQyUyMm1vZGUlMjIlM0ElMjJwcm9kdWN0aW9uJTIyJTJDJTIycmVuZGVyR3JhcGhzJTIyJTNBZmFsc2UlMkMlMjJ2aWV3U291cmNlbWFwcyUyMiUzQWZhbHNlJTJDJTIyZGVwZW5kZW5jaWVzJTIyJTNBJTVCJTVEJTJDJTIybnVtV29ya2VycyUyMiUzQTAlN0QlMkMlMjJ1c2VUYWJzJTIyJTNBdHJ1ZSUyQyUyMmJyb3dzZXJDb2xsYXBzZWQlMjIlM0ElNUIlNUQlMkMlMjJ2aWV3cyUyMiUzQSU1QiUyMiUyRnNyYyUyRmluZGV4LnRzJTIyJTVEJTJDJTIyY3VycmVudFZpZXclMjIlM0EwJTdE
7
- * 3. Copy the minified code into globalScope.tsx replacing the existing string where it says PASTE HERE
8
- * 4. Run the tests and make sure they pass
9
- * 5. TEST IN PRODUCTS BEFORE MERGING
10
- *
11
- */
12
- declare function getMediaGlobalScope(): any;
13
- declare function getMediaCardSSR(): any;
14
- declare function getMediaCountSSR(): any;
15
- declare function incrementMediaCountSSR(): void;
@@ -39,5 +39,5 @@ export declare const useFilePreview: ({ resizeMode, identifier, ssr, dimensions,
39
39
  onImageError: (failedPreview?: MediaFilePreview) => void;
40
40
  onImageLoad: (newPreview?: MediaFilePreview) => void;
41
41
  getSsrScriptProps: (() => import("react").ScriptHTMLAttributes<HTMLScriptElement>) | undefined;
42
- copyNodeRef: (instance: HTMLDivElement | HTMLImageElement | null) => void;
42
+ copyNodeRef: (instance: HTMLDivElement | HTMLImageElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES];
43
43
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/media-file-preview",
3
- "version": "0.15.2",
3
+ "version": "0.15.3",
4
4
  "description": "A React Hook to fetch and render file previews. It's overloaded with fancy features like SSR, lazy loading, memory cache and local preview.",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -30,12 +30,12 @@
30
30
  "sideEffects": false,
31
31
  "atlaskit:src": "src/index.ts",
32
32
  "dependencies": {
33
- "@atlaskit/media-client": "^35.6.0",
33
+ "@atlaskit/media-client": "^35.7.0",
34
34
  "@atlaskit/media-client-react": "^4.1.0",
35
35
  "@atlaskit/media-common": "^12.3.0",
36
36
  "@atlaskit/media-ui": "^28.7.0",
37
37
  "@atlaskit/platform-feature-flags": "^1.1.0",
38
- "@atlaskit/react-ufo": "^4.15.0",
38
+ "@atlaskit/react-ufo": "^4.17.0",
39
39
  "@babel/runtime": "^7.0.0",
40
40
  "eventemitter2": "^4.1.0",
41
41
  "lru_map": "^0.4.1"
@@ -49,7 +49,7 @@
49
49
  "@af/visual-regression": "workspace:^",
50
50
  "@atlaskit/media-state": "^1.8.0",
51
51
  "@atlaskit/media-test-data": "^3.2.0",
52
- "@atlaskit/section-message": "^8.9.0",
52
+ "@atlaskit/section-message": "^8.12.0",
53
53
  "@atlaskit/ssr": "workspace:^",
54
54
  "@atlassian/feature-flags-test-utils": "^1.0.0",
55
55
  "@testing-library/react": "^13.4.0",
@@ -99,9 +99,6 @@
99
99
  "media-perf-uplift-mutation-fix": {
100
100
  "type": "boolean"
101
101
  },
102
- "jfp-magma-fix-failed-ssr-preview-load": {
103
- "type": "boolean"
104
- },
105
102
  "media-perf-lazy-loading-optimisation": {
106
103
  "type": "boolean"
107
104
  }